pax_global_header00006660000000000000000000000064145631470710014522gustar00rootroot0000000000000052 comment=5dcbab5f41636a678a9ec715a058fbe6501aba77 xtensor-blas-0.21.0/000077500000000000000000000000001456314707100142235ustar00rootroot00000000000000xtensor-blas-0.21.0/.clang-format000066400000000000000000000047551456314707100166110ustar00rootroot00000000000000BasedOnStyle: Mozilla AccessModifierOffset: '-4' AlignAfterOpenBracket: BlockIndent AlignEscapedNewlines: Left AllowAllArgumentsOnNextLine: false AllowAllParametersOfDeclarationOnNextLine: false AllowShortBlocksOnASingleLine: false AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: false AllowShortIfStatementsOnASingleLine: false # Forbid one line lambdas because clang-format makes a weird split when # single instructions lambdas are too long. AllowShortLambdasOnASingleLine: Empty AllowShortLoopsOnASingleLine: false AlwaysBreakAfterReturnType: None AlwaysBreakAfterDefinitionReturnType: None AlwaysBreakTemplateDeclarations: Yes SpaceAfterTemplateKeyword: true BinPackArguments: false BinPackParameters: false BreakBeforeBinaryOperators: NonAssignment BreakBeforeBraces: Allman BreakBeforeTernaryOperators: true BreakConstructorInitializers: BeforeComma BreakInheritanceList: AfterComma BreakStringLiterals: false ColumnLimit: '110' ConstructorInitializerIndentWidth: '4' ContinuationIndentWidth: '4' Cpp11BracedListStyle: true DerivePointerAlignment: false DisableFormat: false ExperimentalAutoDetectBinPacking: true EmptyLineAfterAccessModifier: Always EmptyLineBeforeAccessModifier: Always IncludeBlocks: Regroup IncludeCategories: - Regex: <[^.]+> Priority: 1 - Regex: Priority: 3 - Regex: <.+> Priority: 2 - Regex: '"xtensor/.+"' Priority: 4 - Regex: '".+"' Priority: 5 IndentCaseLabels: true IndentWidth: '4' IndentWrappedFunctionNames: false InsertTrailingCommas: Wrapped KeepEmptyLinesAtTheStartOfBlocks: false LambdaBodyIndentation: Signature Language: Cpp MaxEmptyLinesToKeep: '2' NamespaceIndentation: All ObjCBlockIndentWidth: '4' ObjCSpaceAfterProperty: false ObjCSpaceBeforeProtocolList: false PointerAlignment: Left PackConstructorInitializers: Never PenaltyBreakAssignment: 100000 PenaltyBreakBeforeFirstCallParameter: 0 PenaltyBreakComment: 10 PenaltyBreakOpenParenthesis: 0 PenaltyBreakTemplateDeclaration: 0 PenaltyExcessCharacter: 10 PenaltyIndentedWhitespace: 0 PenaltyReturnTypeOnItsOwnLine: 10 ReflowComments: true SeparateDefinitionBlocks: Always SortIncludes: CaseInsensitive SortUsingDeclarations: true SpaceAfterCStyleCast: true SpaceBeforeAssignmentOperators: true SpaceBeforeParens: ControlStatements SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: '2' SpacesInAngles: false SpacesInCStyleCastParentheses: false SpacesInContainerLiterals: false SpacesInParentheses: false SpacesInSquareBrackets: false Standard: c++14 TabWidth: '4' UseTab: Never xtensor-blas-0.21.0/.dir-locals.el000066400000000000000000000001611456314707100166520ustar00rootroot00000000000000((c++-mode . ((eval . (c-set-offset 'innamespace 4)) (flycheck-gcc-language-standard . "c++14")))) xtensor-blas-0.21.0/.github/000077500000000000000000000000001456314707100155635ustar00rootroot00000000000000xtensor-blas-0.21.0/.github/workflows/000077500000000000000000000000001456314707100176205ustar00rootroot00000000000000xtensor-blas-0.21.0/.github/workflows/linux.yml000066400000000000000000000061701456314707100215060ustar00rootroot00000000000000name: Linux on: workflow_dispatch: pull_request: push: branches: [master] concurrency: group: ${{ github.workflow }}-${{ github.job }}-${{ github.ref }} cancel-in-progress: true defaults: run: shell: bash -e -l {0} jobs: build: runs-on: ubuntu-20.04 name: ${{ matrix.sys.compiler }} ${{ matrix.sys.version }} - ${{ matrix.sys.blas }} strategy: fail-fast: false matrix: sys: - {compiler: gcc, version: '8', blas: OpenBLAS} - {compiler: gcc, version: '8', blas: mkl} - {compiler: gcc, version: '9', blas: OpenBLAS} - {compiler: gcc, version: '9', blas: mkl} - {compiler: gcc, version: '10', blas: OpenBLAS} - {compiler: gcc, version: '10', blas: mkl} - {compiler: gcc, version: '11', blas: OpenBLAS} - {compiler: gcc, version: '11', blas: mkl} - {compiler: clang, version: '15', blas: OpenBLAS} - {compiler: clang, version: '15', blas: mkl} - {compiler: clang, version: '16', blas: OpenBLAS} - {compiler: clang, version: '16', blas: mkl} steps: - name: Setup GCC if: ${{ matrix.sys.compiler == 'gcc' }} run: | GCC_VERSION=${{ matrix.sys.version }} sudo apt-get update sudo apt-get --no-install-suggests --no-install-recommends install g++-$GCC_VERSION CC=gcc-$GCC_VERSION echo "CC=$CC" >> $GITHUB_ENV CXX=g++-$GCC_VERSION echo "CXX=$CXX" >> $GITHUB_ENV - name: Setup clang if: ${{ matrix.sys.compiler == 'clang' }} run: | LLVM_VERSION=${{ matrix.sys.version }} wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - || exit 1 sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-$LLVM_VERSION main" || exit 1 sudo apt-get update || exit 1 sudo apt-get --no-install-suggests --no-install-recommends install clang-$LLVM_VERSION || exit 1 sudo apt-get --no-install-suggests --no-install-recommends install g++-9 g++-9-multilib || exit 1 sudo ln -s /usr/include/asm-generic /usr/include/asm CC=clang-$LLVM_VERSION echo "CC=$CC" >> $GITHUB_ENV CXX=clang++-$LLVM_VERSION echo "CXX=$CXX" >> $GITHUB_ENV - name: Checkout code uses: actions/checkout@v3 - name: Set conda environment uses: mamba-org/setup-micromamba@main with: environment-name: myenv environment-file: environment-dev.yml init-shell: bash cache-downloads: true - name: Install mkl if: ${{ matrix.sys.blas == 'mkl' }} run: micromamba install mkl - name: Install OpenBLAS if: ${{ matrix.sys.blas == 'OpenBLAS' }} run: micromamba install openblas==0.3 blas-devel - name: Configure using CMake run: cmake -Bbuild -DDOWNLOAD_GTEST=ON -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_SYSTEM_IGNORE_PATH=/usr/lib - name: Build working-directory: build run: cmake --build . --target test_xtensor_blas --parallel 8 - name: Run tests working-directory: build/test run: ./test_xtensor_blas xtensor-blas-0.21.0/.github/workflows/osx.yml000066400000000000000000000021431456314707100211540ustar00rootroot00000000000000name: OSX on: workflow_dispatch: pull_request: push: branches: [master] concurrency: group: ${{ github.workflow }}-${{ github.job }}-${{ github.ref }} cancel-in-progress: true defaults: run: shell: bash -e -l {0} jobs: build: runs-on: macos-${{ matrix.os }} name: macos-${{ matrix.os }} - mkl strategy: fail-fast: false matrix: os: - 11 - 12 steps: - name: Checkout code uses: actions/checkout@v3 - name: Set conda environment uses: mamba-org/setup-micromamba@main with: environment-name: myenv environment-file: environment-dev.yml init-shell: bash cache-downloads: true - name: Install mkl run: micromamba install mkl - name: Configure using CMake run: cmake -Bbuild -DDOWNLOAD_GTEST=ON -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DCMAKE_SYSTEM_IGNORE_PATH=/usr/lib - name: Build working-directory: build run: cmake --build . --target test_xtensor_blas --parallel 8 - name: Run tests working-directory: build/test run: ./test_xtensor_blas xtensor-blas-0.21.0/.github/workflows/static-analysis.yml000066400000000000000000000003411456314707100234510ustar00rootroot00000000000000name: Static Analysis on: push: branches: [master] pull_request: branches: [master] jobs: pre-commit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: pre-commit/action@v3.0.0 xtensor-blas-0.21.0/.github/workflows/windows.yml000066400000000000000000000027471456314707100220470ustar00rootroot00000000000000name: Windows on: workflow_dispatch: pull_request: push: branches: [master] concurrency: group: ${{ github.workflow }}-${{ github.job }}-${{ github.ref }} cancel-in-progress: true defaults: run: shell: bash -e -l {0} jobs: build: runs-on: ${{ matrix.runs-on }} name: ${{ matrix.sys.compiler }} strategy: fail-fast: false matrix: runs-on: [windows-latest] sys: - {compiler: default} #- {compiler: clang} steps: - name: Setup MSVC if: matrix.sys.compiler == 'default' uses: ilammy/msvc-dev-cmd@v1 - name: Setup clang if: matrix.sys.compiler == 'clang' run: | echo "CC=clang" >> $GITHUB_ENV echo "CXX=clang++" >> $GITHUB_ENV - name: Checkout code uses: actions/checkout@v3 - name: Set conda environment uses: mamba-org/setup-micromamba@main with: environment-name: myenv environment-file: environment-dev.yml init-shell: bash cache-downloads: true create-args: | ninja - name: Install mkl run: micromamba install mkl-devel - name: Configure using CMake run: cmake -Bbuild -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DDOWNLOAD_GTEST=ON -G Ninja - name: Build working-directory: build run: cmake --build . --target test_xtensor_blas --parallel 8 - name: Run tests working-directory: build/test run: ./test_xtensor_blas xtensor-blas-0.21.0/.gitignore000066400000000000000000000011041456314707100162070ustar00rootroot00000000000000# Prerequisites *.d # Compiled Object files *.slo *.lo *.o *.obj # Precompiled Headers *.gch *.pch # Compiled Dynamic libraries *.so *.dylib *.dll # Compiled Static libraries *.lai *.la *.a *.lib # Executables *.exe *.out *.app # Vim tmp files *.swp # Build directory build/ # Test build artefacts test/test_xtensor test/CMakeCache.txt test/Makefile test/CMakeFiles/ test/cmake_install.cmake # Documentation build artefacts docs/CMakeCache.txt docs/xml/ docs/build/ # Jupyter artefacts .ipynb_checkpoints/ # Generated header include/xtensor-blas/xblas_config_cling.hpp xtensor-blas-0.21.0/.gitmodules000066400000000000000000000000001456314707100163660ustar00rootroot00000000000000xtensor-blas-0.21.0/.pre-commit-config.yaml000066400000000000000000000022341456314707100205050ustar00rootroot00000000000000repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.3.0 hooks: - id: check-added-large-files - id: check-case-conflict - id: end-of-file-fixer - id: trailing-whitespace - id: mixed-line-ending args: [--fix=lf] exclude: \.bat$ - id: check-json - id: pretty-format-json args: [--autofix, --top-keys=version] - id: check-yaml - id: detect-private-key - id: check-merge-conflict - repo: https://github.com/Lucas-C/pre-commit-hooks rev: v1.3.1 hooks: - id: forbid-tabs - id: remove-tabs args: [--whitespaces-count, '4'] - repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks rev: v2.5.0 hooks: - id: pretty-format-yaml args: [--autofix, --indent, '2'] - repo: https://github.com/tdegeus/cpp_comment_format rev: v0.2.0 hooks: - id: cpp_comment_format - repo: https://github.com/tdegeus/conda_envfile rev: v0.4.1 hooks: - id: conda_envfile_parse files: environment.yaml # Externally provided executables (so we can use them with editors as well). - repo: https://github.com/pre-commit/mirrors-clang-format rev: v15.0.6 hooks: - id: clang-format files: .*\.[hc]pp$ xtensor-blas-0.21.0/CMakeLists.txt000066400000000000000000000145161456314707100167720ustar00rootroot00000000000000############################################################################ # Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht # # Copyright (c) QuantStack # # # # Distributed under the terms of the BSD 3-Clause License. # # # # The full license is in the file LICENSE, distributed with this software. # ############################################################################ cmake_minimum_required(VERSION 3.8) project(xtensor-blas) set(INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) set(XTENSOR_BLAS_INCLUDE_DIR ${INCLUDE_DIR}) # Configuration # ============= # TODO: use the library directory of the found BLAS implementation instead of # CMAKE_INSTALL_LIBDIR set(XTENSOR_BLAS_CLING_LIBRARY_DIR_64 "\"${CMAKE_INSTALL_PREFIX}/lib64\"") set(XTENSOR_BLAS_CLING_LIBRARY_DIR_32 "\"${CMAKE_INSTALL_PREFIX}/lib32\"") set(XTENSOR_BLAS_CLING_LIBRARY_DIR "\"${CMAKE_INSTALL_PREFIX}/lib\"") configure_file ( "${INCLUDE_DIR}/xtensor-blas/xblas_config_cling.hpp.in" "${INCLUDE_DIR}/xtensor-blas/xblas_config_cling.hpp" ) # Versionning # =========== file(STRINGS "${INCLUDE_DIR}/xtensor-blas/xblas_config.hpp" xtensor_blas_version_defines REGEX "#define XTENSOR_BLAS_VERSION_(MAJOR|MINOR|PATCH)") foreach(ver ${xtensor_blas_version_defines}) if(ver MATCHES "#define XTENSOR_BLAS_VERSION_(MAJOR|MINOR|PATCH) +([^ ]+)$") set(XTENSOR_BLAS_VERSION_${CMAKE_MATCH_1} "${CMAKE_MATCH_2}" CACHE INTERNAL "") endif() endforeach() set(${PROJECT_NAME}_VERSION ${XTENSOR_BLAS_VERSION_MAJOR}.${XTENSOR_BLAS_VERSION_MINOR}.${XTENSOR_BLAS_VERSION_PATCH}) message(STATUS "xtensor-blas v${${PROJECT_NAME}_VERSION}") # Dependencies # ============ set(xtensor_REQUIRED_VERSION 0.25.0) if(TARGET xtensor) set(xtensor_VERSION ${XTENSOR_VERSION_MAJOR}.${XTENSOR_VERSION_MINOR}.${XTENSOR_VERSION_PATCH}) # Note: This is not SEMVER compatible comparison if( NOT ${xtensor_VERSION} VERSION_GREATER_EQUAL ${xtensor_REQUIRED_VERSION}) message(ERROR "Mismatch xtensor versions. Found '${xtensor_VERSION}' but requires: '${xtensor_REQUIRED_VERSION}'") else() message(STATUS "Found xtensor v${xtensor_VERSION}") endif() else() find_package(xtensor ${xtensor_REQUIRED_VERSION} REQUIRED) message(STATUS "Found xtensor: ${xtensor_INCLUDE_DIRS}/xtensor") endif() # Build # ===== set(XTENSOR_BLAS_HEADERS ${INCLUDE_DIR}/xtensor-blas/xblas.hpp ${INCLUDE_DIR}/xtensor-blas/xblas_utils.hpp ${INCLUDE_DIR}/xtensor-blas/xblas_config.hpp ${INCLUDE_DIR}/xtensor-blas/xblas_config_cling.hpp ${INCLUDE_DIR}/xtensor-blas/xlapack.hpp ${INCLUDE_DIR}/xtensor-blas/xlinalg.hpp ) add_library(xtensor-blas INTERFACE) target_include_directories(xtensor-blas INTERFACE $ $) OPTION(CXXBLAS_DEBUG "print cxxblas debug information" OFF) OPTION(XTENSOR_USE_FLENS_BLAS "use FLENS generic implementation instead of cblas" OFF) # Decide whether to use OpenBLAS or not. # The user might have the folder containing OpenBLASConfig.cmake file # in the paths inspected by CMake already and just setting this to ON # would be enough to detect OpenBLAS. # If that is not the case, one can pass OpenBLAS_DIR without the boolean # toggle. OPTION(USE_OPENBLAS "use OpenBLAS (requires suitable OpenBLASConfig.cmake)" OFF) if(OpenBLAS_DIR) set(USE_OPENBLAS ON) endif() if(XTENSOR_USE_FLENS_BLAS) add_definitions(-DXTENSOR_USE_FLENS_BLAS=1) endif() if (CXXBLAS_DEBUG) add_definitions(-DCXXBLAS_DEBUG=1) endif() OPTION(BUILD_TESTS "xtensor-blas test suite" OFF) OPTION(BUILD_BENCHMARK "xtensor-blas test suite" OFF) OPTION(DOWNLOAD_GTEST "download gtest and build from source" OFF) OPTION(DOWNLOAD_GBENCHMARK "download google benchmark and build from source" OFF) if(DOWNLOAD_GTEST OR GTEST_SRC_DIR) set(BUILD_TESTS ON) endif() if(BUILD_TESTS) enable_testing() include_directories(${XTENSOR_BLAS_INCLUDE_DIR}) include_directories(${xtensor_INCLUDE_DIRS}) add_subdirectory(test) endif() if(BUILD_BENCHMARKS) include_directories(${XTENSOR_BLAS_INCLUDE_DIR}) include_directories(${xtensor_INCLUDE_DIRS}) add_subdirectory(benchmark) endif() # Installation # ============ include(GNUInstallDirs) include(CMakePackageConfigHelpers) install(TARGETS xtensor-blas EXPORT ${PROJECT_NAME}-targets) # Makes the project importable from the build directory export(EXPORT ${PROJECT_NAME}-targets FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake") install(FILES ${XTENSOR_BLAS_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/xtensor-blas) install(DIRECTORY ${INCLUDE_DIR}/xflens DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} PATTERN *.tgz EXCLUDE PATTERN Makefile EXCLUDE PATTERN dummy.in.cc EXCLUDE PATTERN filter.pm EXCLUDE PATTERN CMakeLists.txt EXCLUDE) set(XTENSOR_BLAS_CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" CACHE STRING "install path for xtensor-blasConfig.cmake") configure_package_config_file(${PROJECT_NAME}Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" INSTALL_DESTINATION ${XTENSOR_BLAS_CMAKECONFIG_INSTALL_DIR}) # xtensor is header-only and does not depend on the architecture. # Remove CMAKE_SIZEOF_VOID_P from xblasConfigVersion.cmake so that an xblasConfig.cmake # generated for a 64 bit target can be used for 32 bit targets and vice versa. set(_XTENSOR_BLAS_CMAKE_SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P}) unset(CMAKE_SIZEOF_VOID_P) write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake VERSION ${${PROJECT_NAME}_VERSION} COMPATIBILITY AnyNewerVersion) set(CMAKE_SIZEOF_VOID_P ${_XTENSOR_CMAKE_SIZEOF_VOID_P}) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake DESTINATION ${XTENSOR_BLAS_CMAKECONFIG_INSTALL_DIR}) install(EXPORT ${PROJECT_NAME}-targets FILE ${PROJECT_NAME}Targets.cmake DESTINATION ${XTENSOR_BLAS_CMAKECONFIG_INSTALL_DIR}) xtensor-blas-0.21.0/LICENSE000066400000000000000000000030261456314707100152310ustar00rootroot00000000000000Copyright (c) 2017, Wolf Vollprecht, Johan Mabille and Sylvain Corlay Copyright (c) 2017, QuantStack All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. xtensor-blas-0.21.0/README.md000066400000000000000000000074351456314707100155130ustar00rootroot00000000000000# ![xtensor](docs/source/xtensor-blas.svg) [![GHA Linux](https://github.com/xtensor-stack/xtensor-blas/actions/workflows/linux.yml/badge.svg)](https://github.com/xtensor-stack/xtensor-blas/actions/workflows/linux.yml) [![GHA OSX](https://github.com/xtensor-stack/xtensor-blas/actions/workflows/osx.yml/badge.svg)](https://github.com/xtensor-stack/xtensor-blas/actions/workflows/osx.yml) [![GHA Windows](https://github.com/xtensor-stack/xtensor-blas/actions/workflows/windows.yml/badge.svg)](https://github.com/xtensor-stack/xtensor-blas/actions/workflows/windows.yml) [![Documentation](http://readthedocs.org/projects/xtensor-blas/badge/?version=latest)](https://xtensor-blas.readthedocs.io/en/latest/?badge=latest) [![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/xtensor-stack/xtensor/stable?filepath=notebooks%2Fxtensor.ipynb) [![Join the Gitter Chat](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/QuantStack/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) ## Introduction `xtensor-blas` is an extension to the xtensor library, offering bindings to BLAS and LAPACK libraries through cxxblas and cxxlapack from the [FLENS](https://github.com/michael-lehn/FLENS) project. `xtensor-blas` currently provides non-broadcasting `dot`, `norm` (1- and 2-norm for vectors), `inverse`, `solve`, `eig`, `cross`, `det`, `slogdet`, `matrix_rank`, `inv`, `cholesky`, `qr`, `svd` in the `xt::linalg` namespace (check the corresponding `xlinalg.hpp` header for the function signatures). The functions, and signatures, are trying to be 1-to-1 equivalent to NumPy. Low-level functions to interface with BLAS or LAPACK with xtensor containers are also offered in the `blas` and `lapack` namespace. `xtensor` and `xtensor-blas` require a modern C++ compiler supporting C++14. The following C++ compilers are supported: - On Windows platforms, Visual C++ 2015 Update 2, or more recent - On Unix platforms, gcc 4.9 or a recent version of Clang ## Installation xtensor-blas is a header-only library. We provide a package for the mamba (or conda) package manager. ``` mamba install -c conda-forge xtensor-blas ``` which will also install the core `xtensor` package. Or you can directly install it from the sources: ``` cmake -D CMAKE_INSTALL_PREFIX=your_install_prefix make install ``` To build the tests or actually use `xtensor-blas`, you will need binaries for - `openblas` - `lapack` which are also available on conda-forge. ## Trying it online You can play with `xtensor` interactively in a Jupyter notebook right now! Just click on the binder link below: [![Binder](binder-logo.svg)](https://mybinder.org/v2/gh/xtensor-stack/xtensor/stable?filepath=notebooks%2Fxtensor.ipynb) The C++ support in Jupyter is powered by the [xeus-cling](https://github.com/xtensor-stack/xeus-cling) C++ kernel. Together with xeus-cling, xtensor enables a similar workflow to that of NumPy with the IPython Jupyter kernel. ## Documentation For more information on using `xtensor`, check out the reference documentation http://xtensor-blas.readthedocs.io/ ## Dependency on `xtensor` `xtensor-blas` depends on the `xtensor` package | `xtensor-blas` | `xtensor` | |-----------------|-----------| | master | ^0.25.0 | | 0.21.0 | ^0.25.0 | | 0.20.0 | ^0.24.0 | | 0.19.2 | ^0.23.3 | | 0.19.1 | ^0.23.3 | | 0.19.0 | ^0.23.0 | | 0.18.0 | ^0.22.0 | | 0.17.2 | ^0.21.4 | | 0.17.1 | ^0.21.2 | | 0.17.0 | ^0.21.1 | | 0.16.1 | ^0.20.4 | | 0.16.0 | ^0.20.0 | ## License We use a shared copyright model that enables all contributors to maintain the copyright on their contributions. This software is licensed under the BSD-3-Clause license. See the [LICENSE](LICENSE) file for details. xtensor-blas-0.21.0/benchmark/000077500000000000000000000000001456314707100161555ustar00rootroot00000000000000xtensor-blas-0.21.0/benchmark/CMakeLists.txt000066400000000000000000000127101456314707100207160ustar00rootroot00000000000000############################################################################ # Copyright (c) 2016, Johan Mabille, Sylvain Corlay and Wolf Vollprecht # # # # Distributed under the terms of the BSD 3-Clause License. # # # # The full license is in the file LICENSE, distributed with this software. # ############################################################################ cmake_minimum_required(VERSION 3.1) if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) project(xtensor-benchmark) find_package(xtensor REQUIRED CONFIG) set(XTENSOR_INCLUDE_DIR ${xtensor_INCLUDE_DIRS}) endif () message(STATUS "Forcing tests build type to Release") set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) include(CheckCXXCompilerFlag) string(TOUPPER "${CMAKE_BUILD_TYPE}" U_CMAKE_BUILD_TYPE) if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Intel") CHECK_CXX_COMPILER_FLAG(-march=native arch_native_supported) if(arch_native_supported AND NOT CMAKE_CXX_FLAGS MATCHES "-march") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-parameter -Wextra -Wreorder") CHECK_CXX_COMPILER_FLAG("-std=c++14" HAS_CPP14_FLAG) if (HAS_CPP14_FLAG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") else() message(FATAL_ERROR "Unsupported compiler -- xtensor requires C++14 support!") endif() # Enable link time optimization and set the default symbol # visibility to hidden (very important to obtain small binaries) if (NOT ${U_CMAKE_BUILD_TYPE} MATCHES DEBUG) # Default symbol visibility set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") # Check for Link Time Optimization support # (GCC/Clang) # LTO had to be removed as google benchmark doesn't build with it # CHECK_CXX_COMPILER_FLAG("-flto" HAS_LTO_FLAG) # if (HAS_LTO_FLAG) # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") # endif() # Intel equivalent to LTO is called IPO if (CMAKE_CXX_COMPILER_ID MATCHES "Intel") CHECK_CXX_COMPILER_FLAG("-ipo" HAS_IPO_FLAG) if (HAS_IPO_FLAG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ipo") endif() endif() endif() endif() if(MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /MP /bigobj") set(CMAKE_EXE_LINKER_FLAGS /MANIFEST:NO) foreach(flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) string(REPLACE "/MD" "-MT" ${flag_var} "${${flag_var}}") endforeach() endif() if(DOWNLOAD_GBENCHMARK OR GBENCHMARK_SRC_DIR) if(DOWNLOAD_GBENCHMARK) # Download and unpack googlebenchmark at configure time configure_file(downloadGBenchmark.cmake.in googlebenchmark-download/CMakeLists.txt) else() # Copy local source of googlebenchmark at configure time configure_file(copyGBenchmark.cmake.in googlebenchmark-download/CMakeLists.txt) endif() execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . RESULT_VARIABLE result WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-download ) if(result) message(FATAL_ERROR "CMake step for googlebenchmark failed: ${result}") endif() execute_process(COMMAND ${CMAKE_COMMAND} --build . RESULT_VARIABLE result WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-download ) if(result) message(FATAL_ERROR "Build step for googlebenchmark failed: ${result}") endif() # Add googlebenchmark directly to our build. This defines # the gtest and gtest_main targets. add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-src ${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-build) set(GBENCHMARK_INCLUDE_DIRS "${googlebenchmark_SOURCE_DIR}/include") set(GBENCHMARK_LIBRARIES benchmark) else() find_package(benchmark REQUIRED) endif() message(STATUS "BLAS VENDOR: " ${BLA_VENDOR}) message(STATUS "BLAS LIBRARIES: " ${BLAS_LIBRARIES}) if (HAVE_CBLAS) if (WIN32) find_package(OpenBLAS REQUIRED) set(BLAS_LIBRARIES ${CMAKE_INSTALL_PREFIX}${OpenBLAS_LIBRARIES}) else() find_package(BLAS REQUIRED) find_package(LAPACK REQUIRED) endif() add_definitions(-DHAVE_CBLAS=1 -DWITH_OPENBLAS=1) endif() include_directories(${XTENSOR_INCLUDE_DIR} ${GBENCHMARK_INCLUDE_DIRS}) set(XTENSOR_BENCHMARK main.cpp benchmark_blas.hpp ) set(XTENSOR_BENCHMARK_TARGET benchmark_xtensor) add_executable(${XTENSOR_BENCHMARK_TARGET} EXCLUDE_FROM_ALL ${XTENSOR_BENCHMARK} ${XTENSOR_HEADERS}) target_link_libraries(${XTENSOR_BENCHMARK_TARGET} ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${GBENCHMARK_LIBRARIES}) add_custom_target(xbenchmark COMMAND benchmark_xtensor DEPENDS ${XTENSOR_BENCHMARK_TARGET}) add_custom_target(xpowerbench COMMAND echo "sudo needed to set cpu power governor to performance" COMMAND sudo cpupower frequency-set --governor performance COMMAND benchmark_xtensor COMMAND sudo cpupower frequency-set --governor powersave DEPENDS ${XTENSOR_BENCHMARK_TARGET}) xtensor-blas-0.21.0/benchmark/benchmark_blas.hpp000066400000000000000000000066261456314707100216330ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) 2016, Johan Mabille, Sylvain Corlay and Wolf Vollprecht * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #ifndef BENCHMARK_BLAS_HPP #define BENCHMARK_BLAS_HPP #include #include "xtensor/xarray.hpp" #include "xtensor/xnoalias.hpp" #include "xtensor/xtensor.hpp" #include "xtensor-blas/xlinalg.hpp" namespace xt { namespace benchmark_dot { /**************************** * Benchmark initialization * ****************************/ template inline void init_benchmark_data(V& lhs, V& rhs, std::size_t size0, std::size_t size1) { using T = typename V::value_type; for (std::size_t i = 0; i < size0; ++i) { for (std::size_t j = 0; j < size1; ++j) { lhs(i, j) = T(0.5) * T(j) / T(j + 1) + std::sqrt(T(i)) * T(9.) / T(size1); rhs(i, j) = T(10.2) / T(i + 2) + T(0.25) * T(j); } } } template inline void init_xtensor_benchmark(V& lhs, V& rhs, std::size_t size0, size_t size1) { lhs.reshape({size0, size1}); rhs.reshape({size0, size1}); init_benchmark_data(lhs, rhs, size0, size1); } template inline auto benchmark_dot(benchmark::State& state) { using size_type = typename E::size_type; E x, y; init_xtensor_benchmark(x, y, state.range(0), state.range(0)); while (state.KeepRunning()) { auto res = xt::linalg::dot(x, y); benchmark::DoNotOptimize(res.data()); } } template inline auto benchmark_transpose_dot(benchmark::State& state) { using size_type = typename E::size_type; E x, y; init_xtensor_benchmark(x, y, state.range(0), state.range(0)); while (state.KeepRunning()) { auto res = xt::linalg::dot(xt::transpose(x), y); benchmark::DoNotOptimize(res.data()); } } template inline auto benchmark_transpose_with_assign_dot(benchmark::State& state) { using size_type = typename E::size_type; E x, y; init_xtensor_benchmark(x, y, state.range(0), state.range(0)); while (state.KeepRunning()) { xtensor t = xt::transpose(x); auto res = xt::linalg::dot(t, y); benchmark::DoNotOptimize(res.data()); } } BENCHMARK_TEMPLATE(benchmark_dot, xt::xtensor)->Range(32, 32 << 3); BENCHMARK_TEMPLATE(benchmark_transpose_dot, xt::xtensor)->Range(32, 32 << 3); BENCHMARK_TEMPLATE(benchmark_transpose_with_assign_dot, xt::xtensor)->Range(32, 32 << 3); } // namespace benchmark_dot } // namespace xt #endif xtensor-blas-0.21.0/benchmark/copyGBenchmark.cmake.in000066400000000000000000000017151456314707100224640ustar00rootroot00000000000000############################################################################ # Copyright (c) 2016, Johan Mabille, Sylvain Corlay and Wolf Vollprecht # # # # Distributed under the terms of the BSD 3-Clause License. # # # # The full license is in the file LICENSE, distributed with this software. # ############################################################################ cmake_minimum_required(VERSION 2.8.2) project(googlebenchmark-download NONE) include(ExternalProject) ExternalProject_Add(benchmark URL "${googlebenchmark_SRC_DIR}" SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-src" BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-build" CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" TEST_COMMAND "" ) xtensor-blas-0.21.0/benchmark/downloadGBenchmark.cmake.in000066400000000000000000000017731456314707100233250ustar00rootroot00000000000000############################################################################ # Copyright (c) 2016, Johan Mabille, Sylvain Corlay and Wolf Vollprecht # # # # Distributed under the terms of the BSD 3-Clause License. # # # # The full license is in the file LICENSE, distributed with this software. # ############################################################################ cmake_minimum_required(VERSION 2.8.2) project(googlebenchmark-download NONE) include(ExternalProject) ExternalProject_Add(googlebenchmark GIT_REPOSITORY https://github.com/google/benchmark.git GIT_TAG v1.2.0 SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-src" BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-build" CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" TEST_COMMAND "" ) xtensor-blas-0.21.0/benchmark/main.cpp000066400000000000000000000034621456314707100176120ustar00rootroot00000000000000// /*************************************************************************** // * Copyright (c) 2016, Johan Mabille, Sylvain Corlay and Wolf Vollprecht * // * * // * Distributed under the terms of the BSD 3-Clause License. * // * * // * The full license is in the file LICENSE, distributed with this software. * // ****************************************************************************/ #include #include #include "benchmark_blas.hpp" #ifdef WITH_OPENBLAS void blas_stats() { std::cout << "\nSTATS FOR " "OPENBLAS\n-----------------------------------------------------" "----------\n\n"; openblas_set_num_threads(4); std::cout << "NUMBER OF THREADS: " << openblas_get_num_threads() << std::endl; // Get the number of physical processors (cores) std::cout << "NUMBER OF PROCESSORS: " << openblas_get_num_procs() << std::endl; // Get the build configure on runtime. std::cout << "CONFIG: " << openblas_get_config() << std::endl; /*Get the CPU corename on runtime.*/ std::cout << "CORE NAME: " << openblas_get_corename() << std::endl; // Get the parallelization type which is used by OpenBLAS std::cout << "PARALLEL: " << openblas_get_parallel() << std::endl; std::cout << "\n\n"; } #else void blas_stats(){}; #endif // Custom main function to print BLAS config int main(int argc, char** argv) { blas_stats(); benchmark::Initialize(&argc, argv); if (benchmark::ReportUnrecognizedArguments(argc, argv)) return 1; benchmark::RunSpecifiedBenchmarks(); } xtensor-blas-0.21.0/binder-logo.svg000066400000000000000000000062401456314707100171470ustar00rootroot00000000000000 xtensor-blas-0.21.0/docs/000077500000000000000000000000001456314707100151535ustar00rootroot00000000000000xtensor-blas-0.21.0/docs/Doxyfile000066400000000000000000000005231456314707100166610ustar00rootroot00000000000000PROJECT_NAME = "xtensor-blas" XML_OUTPUT = xml INPUT = ../include EXCLUDE = ../include/xflens GENERATE_LATEX = NO GENERATE_MAN = NO GENERATE_RTF = NO CASE_SENSE_NAMES = NO GENERATE_HTML = NO GENERATE_XML = YES RECURSIVE = YES QUIET = YES JAVADOC_AUTOBRIEF = YES xtensor-blas-0.21.0/docs/Makefile000066400000000000000000000147421456314707100166230ustar00rootroot00000000000000# You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = build # User-friendly check for sphinx-build ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) endif # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext api default: html help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " applehelp to make an Apple Help Book" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" @echo " xml to make Docutils-native XML files" @echo " pseudoxml to make pseudoxml-XML files for display purposes" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" @echo " coverage to run coverage check of the documentation (if enabled)" clean: rm -rf $(BUILDDIR)/* rm -rf xml html: doxygen $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: doxygen $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: doxygen $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: doxygen $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: doxygen $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: doxygen $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." epub: doxygen $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: doxygen $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: doxygen $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." latexpdfja: doxygen $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through platex and dvipdfmx..." $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: doxygen $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: doxygen $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." texinfo: doxygen $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." info: doxygen $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." gettext: doxygen $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." changes: doxygen $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: doxygen $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: doxygen $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." coverage: doxygen $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage @echo "Testing of coverage in the sources finished, look at the " \ "results in $(BUILDDIR)/coverage/python.txt." xml: doxygen $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml @echo @echo "Build finished. The XML files are in $(BUILDDIR)/xml." pseudoxml: doxygen $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml @echo @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." xtensor-blas-0.21.0/docs/environment.yml000066400000000000000000000001351456314707100202410ustar00rootroot00000000000000name: xtensor-blas-docs channels: - conda-forge dependencies: - breathe - sphinx_rtd_theme xtensor-blas-0.21.0/docs/make.bat000066400000000000000000000171061456314707100165650ustar00rootroot00000000000000@ECHO OFF REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set BUILDDIR=build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source set I18NSPHINXOPTS=%SPHINXOPTS% source if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages echo. texinfo to make Texinfo files echo. gettext to make PO message catalogs echo. changes to make an overview over all changed/added/deprecated items echo. xml to make Docutils-native XML files echo. pseudoxml to make pseudoxml-XML files for display purposes echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled echo. coverage to run coverage check of the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) REM Check if sphinx-build is available and fallback to Python version if any %SPHINXBUILD% 1>NUL 2>NUL if errorlevel 9009 goto sphinx_python goto sphinx_ok :sphinx_python set SPHINXBUILD=python -m sphinx.__init__ %SPHINXBUILD% 2> nul if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Make sure you have Sphinx echo.installed, then set the SPHINXBUILD environment variable to point echo.to the full path of the 'sphinx-build' executable. Alternatively you echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.http://sphinx-doc.org/ exit /b 1 ) :sphinx_ok if "%1" == "html" ( doxygen %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "singlehtml" ( %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\packagename.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\packagename.ghc goto end ) if "%1" == "devhelp" ( %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp if errorlevel 1 exit /b 1 echo. echo.Build finished. goto end ) if "%1" == "epub" ( %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub if errorlevel 1 exit /b 1 echo. echo.Build finished. The epub file is in %BUILDDIR%/epub. goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex if errorlevel 1 exit /b 1 echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "latexpdf" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex cd %BUILDDIR%/latex make all-pdf cd %~dp0 echo. echo.Build finished; the PDF files are in %BUILDDIR%/latex. goto end ) if "%1" == "latexpdfja" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex cd %BUILDDIR%/latex make all-pdf-ja cd %~dp0 echo. echo.Build finished; the PDF files are in %BUILDDIR%/latex. goto end ) if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text if errorlevel 1 exit /b 1 echo. echo.Build finished. The text files are in %BUILDDIR%/text. goto end ) if "%1" == "man" ( %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man if errorlevel 1 exit /b 1 echo. echo.Build finished. The manual pages are in %BUILDDIR%/man. goto end ) if "%1" == "texinfo" ( %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo if errorlevel 1 exit /b 1 echo. echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. goto end ) if "%1" == "gettext" ( %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale if errorlevel 1 exit /b 1 echo. echo.Build finished. The message catalogs are in %BUILDDIR%/locale. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes if errorlevel 1 exit /b 1 echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck if errorlevel 1 exit /b 1 echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest if errorlevel 1 exit /b 1 echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) if "%1" == "coverage" ( %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage if errorlevel 1 exit /b 1 echo. echo.Testing of coverage in the sources finished, look at the ^ results in %BUILDDIR%/coverage/python.txt. goto end ) if "%1" == "xml" ( %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml if errorlevel 1 exit /b 1 echo. echo.Build finished. The XML files are in %BUILDDIR%/xml. goto end ) if "%1" == "pseudoxml" ( %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml if errorlevel 1 exit /b 1 echo. echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. goto end ) :end xtensor-blas-0.21.0/docs/source/000077500000000000000000000000001456314707100164535ustar00rootroot00000000000000xtensor-blas-0.21.0/docs/source/_static/000077500000000000000000000000001456314707100201015ustar00rootroot00000000000000xtensor-blas-0.21.0/docs/source/_static/main_stylesheet.css000066400000000000000000000000741456314707100240110ustar00rootroot00000000000000.wy-nav-content{ max-width: 1000px; margin: auto; } xtensor-blas-0.21.0/docs/source/build-options.rst000066400000000000000000000005721456314707100220010ustar00rootroot00000000000000.. Copyright (c) 2017, Wolf Vollprecht, Johan Mabille and Sylvain Corlay Distributed under the terms of the BSD 3-Clause License. The full license is in the file LICENSE, distributed with this software. Build and configuration ======================= Build ----- ``xtensor-blas`` build supports the following options: - ``BLA_VENDOR``: selects the BLAS installation xtensor-blas-0.21.0/docs/source/cmake.svg000066400000000000000000000425311456314707100202610ustar00rootroot00000000000000 image/svg+xml xtensor-blas-0.21.0/docs/source/conda.svg000066400000000000000000000034161456314707100202640ustar00rootroot00000000000000 xtensor-blas-0.21.0/docs/source/conf.py000066400000000000000000000016131456314707100177530ustar00rootroot00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- import os import subprocess on_rtd = os.environ.get('READTHEDOCS', None) == 'True' if on_rtd: subprocess.call('cd ..; doxygen', shell=True) import sphinx_rtd_theme html_theme = "sphinx_rtd_theme" html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] def setup(app): app.add_css_file("main_stylesheet.css") extensions = ['breathe', 'sphinx_rtd_theme'] breathe_projects = { 'xtensor-blas': '../xml' } templates_path = ['_templates'] html_static_path = ['_static'] source_suffix = '.rst' master_doc = 'index' project = 'xtensor-blas' copyright = '2017, Wolf Vollprecht, Johan Mabille and Sylvain Corlay' author = 'Wolf Vollprecht, Johan Mabille and Sylvain Corlay' html_logo = 'quantstack-white.svg' exclude_patterns = [] highlight_language = 'c++' pygments_style = 'sphinx' todo_include_todos = False htmlhelp_basename = 'xtensor-blasdoc' xtensor-blas-0.21.0/docs/source/index.rst000066400000000000000000000033671456314707100203250ustar00rootroot00000000000000.. Copyright (c) 2017, Wolf Vollprecht, Johan Mabille and Sylvain Corlay Distributed under the terms of the BSD 3-Clause License. The full license is in the file LICENSE, distributed with this software. .. image:: xtensor-blas.svg :alt: xtensor-blas xtensor bindings for BLAS and LAPACK Introduction ------------ ``xtensor-blas`` is an extension to the xtensor library, offering bindings to BLAS and LAPACK libraries through cxxblas and cxxlapack from the FLENS_ project. ``xtensor-blas`` currently provides non-broadcasting ``dot``, ``norm`` (1- and 2-norm for vectors), ``inverse``, ``solve``, ``eig``, ``cross``, ``det``, ``slogdet``, ``matrix_rank``, ``inv``, ``cholesky``, ``qr``, ``svd`` in the ``xt::linalg`` namespace (check the corresponding ``xlinalg.hpp`` header for the function signatures). The functions, and signatures, are trying to be 1-to-1 equivalent to NumPy. Low-level functions to interface with BLAS or LAPACK with xtensor containers are also offered in the blas and lapack namespace. ``xtensor`` and ``xtensor-blas`` require a modern C++ compiler supporting C++14. The following C++ compilers are supported: - On Windows platforms, Visual C++ 2015 Update 2, or more recent - On Unix platforms, gcc 4.9 or a recent version of Clang Licensing --------- We use a shared copyright model that enables all contributors to maintain the copyright on their contributions. This software is licensed under the BSD-3-Clause license. See the LICENSE file for details. .. toctree:: :caption: INSTALLATION :maxdepth: 2 installation performance .. toctree:: :caption: USAGE :maxdepth: 2 usage reference .. toctree:: :caption: DEVELOPER ZONE build-options releasing .. _FLENS: https://github.com/michael-lehn/FLENS xtensor-blas-0.21.0/docs/source/installation.rst000066400000000000000000000032461456314707100217130ustar00rootroot00000000000000.. Copyright (c) 2017, Wolf Vollprecht, Johan Mabille and Sylvain Corlay Distributed under the terms of the BSD 3-Clause License. The full license is in the file LICENSE, distributed with this software. .. raw:: html Installation ============ Although ``xtensor-blas`` is a header-only library, we provide standardized means to install it, with package managers or with cmake. Besides the xtensor headers, all these methods place the `cmake` project configuration file in the right location so that third-party projects can use cmake's find_package to locate xtensor headers. .. seealso:: Read the :ref:`Performance and Linking ` chapter on how to link against BLAS and improve performance .. image:: conda.svg Using the conda-forge package ----------------------------- A package for xtensor-blas is available for the mamba (or conda) package manager. .. code:: mamba install -c conda-forge xtensor-blas .. image:: cmake.svg From source with cmake ---------------------- You can install ``xtensor-blas`` from source with cmake. Note that you need to have a BLAS installation available (e.g. OpenBLAS, MKL ...). On Unix platforms, from the source directory: .. code:: mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/path/to/prefix .. make install On Windows platforms, from the source directory: .. code:: mkdir build cd build cmake -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=/path/to/prefix .. nmake nmake install xtensor-blas-0.21.0/docs/source/performance.rst000066400000000000000000000031461456314707100215120ustar00rootroot00000000000000.. Copyright (c) 2017, Wolf Vollprecht, Johan Mabille and Sylvain Corlay Distributed under the terms of the BSD 3-Clause License. The full license is in the file LICENSE, distributed with this software. .. _perf-and-link: Performance and Linking ======================= For optimal performance, the target program **has** to be linked against a `BLAS `_ implementation. The BLAS implementation that we install by default with conda is ``OpenBLAS``, but other options, such as ``MKL`` are available on conda, too. If xtensor-blas was not installed from conda, the user has to manually verify that a BLAS and `LAPACK `_ implementation is available. If you want to fallback to a slower, more generic BLAS implementation, you can use the compile time define ``-DXTENSOR_USE_FLENS_BLAS``. In order to link against ``OpenBLAS`` from CMake, the following lines have to be added to the ``CMakeLists.txt`` file. .. code:: cmake add_definitions(-DHAVE_CBLAS=1) if (WIN32) find_package(OpenBLAS REQUIRED) set(BLAS_LIBRARIES ${CMAKE_INSTALL_PREFIX}${OpenBLAS_LIBRARIES}) else() find_package(BLAS REQUIRED) find_package(LAPACK REQUIRED) endif() message(STATUS "BLAS VENDOR: " ${BLA_VENDOR}) message(STATUS "BLAS LIBRARIES: " ${BLAS_LIBRARIES}) target_link_libraries(your_target_name ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES}) If CMake is not used, the flags can be passed manually to e.g. ``g++``: .. code:: bash g++ test.cpp -o test -lblas -llapack -DHAVE_CBLAS=1 xtensor-blas-0.21.0/docs/source/quantstack-white.svg000066400000000000000000000116371456314707100225000ustar00rootroot00000000000000 image/svg+xml xtensor-blas-0.21.0/docs/source/reference.rst000066400000000000000000000056221456314707100211500ustar00rootroot00000000000000.. Copyright (c) 2017, Wolf Vollprecht, Johan Mabille and Sylvain Corlay Distributed under the terms of the BSD 3-Clause License. The full license is in the file LICENSE, distributed with this software. Reference ========= Defined in ``xtensor-blas/xlinalg.hpp`` The functions here are closely modeled after NumPy's linalg package. Matrix, vector and tensor products -------------------------- .. doxygenfunction:: xt::linalg::dot :project: xtensor-blas .. doxygenfunction:: xt::linalg::vdot :project: xtensor-blas .. doxygenfunction:: xt::linalg::outer :project: xtensor-blas .. doxygenfunction:: xt::linalg::matrix_power :project: xtensor-blas .. doxygenfunction:: xt::linalg::kron :project: xtensor-blas .. doxygenfunction:: xt::linalg::tensordot(const xexpression&, const xexpression&, std::size_t) :project: xtensor-blas .. doxygenfunction:: xt::linalg::tensordot(const xexpression&, const xexpression&, const std::vector&, const std::vector&) :project: xtensor-blas Decompositions -------------- .. doxygenfunction:: xt::linalg::cholesky :project: xtensor-blas .. doxygenenum:: xt::linalg::qrmode :project: xtensor-blas .. doxygenfunction:: xt::linalg::qr :project: xtensor-blas .. doxygenfunction:: xt::linalg::svd :project: xtensor-blas Matrix eigenvalues ------------------ .. doxygenfunction:: xt::linalg::eig :project: xtensor-blas .. doxygenfunction:: xt::linalg::eigvals :project: xtensor-blas .. doxygenfunction:: xt::linalg::eigh(const xexpression&, char) :project: xtensor-blas .. doxygenfunction:: xt::linalg::eigh(const xexpression&, const xexpression&, const char) :project: xtensor-blas .. doxygenfunction:: xt::linalg::eigvalsh :project: xtensor-blas Norms and other numbers ----------------------- .. doxygenenum:: xt::linalg::normorder :project: xtensor-blas .. doxygenfunction:: xt::linalg::norm(const xexpression&, int) :project: xtensor-blas .. doxygenfunction:: xt::linalg::norm(const xexpression&, normorder) :project: xtensor-blas .. doxygenfunction:: xt::linalg::norm(const xexpression&) :project: xtensor-blas .. doxygenfunction:: xt::linalg::det(const xexpression&) :project: xtensor-blas .. doxygenfunction:: xt::linalg::slogdet(const xexpression&) :project: xtensor-blas .. doxygenfunction:: xt::linalg::matrix_rank :project: xtensor-blas .. doxygenfunction:: xt::linalg::trace :project: xtensor-blas Solving equations and inverting matrices ---------------------------------------- .. doxygenfunction:: xt::linalg::solve :project: xtensor-blas .. doxygenfunction:: xt::linalg::lstsq :project: xtensor-blas .. doxygenfunction:: xt::linalg::inv :project: xtensor-blas .. doxygenfunction:: xt::linalg::pinv :project: xtensor-blas Other ----- .. doxygenfunction:: xt::linalg::cross :project: xtensor-blas xtensor-blas-0.21.0/docs/source/releasing.rst000066400000000000000000000025711456314707100211630ustar00rootroot00000000000000.. Copyright (c) 2017, Wolf Vollprecht, Johan Mabille and Sylvain Corlay Distributed under the terms of the BSD 3-Clause License. The full license is in the file LICENSE, distributed with this software. Releasing xtensor-blas ====================== Releasing a new version ----------------------- From the master branch of xtensor-blas - Make sure that you are in sync with the master branch of the upstream remote. - In file ``xblas_config.hpp.in``, set the macros for ``XTENSOR_BLAS_VERSION_MAJOR``, ``XTENSOR_BLAS_VERSION_MINOR`` and ``XTENSOR_BLAS_VERSION_PATCH`` to the desired values. - Add dependency information in the README.md - Stage the changes (``git add``), commit the changes (``git commit``) and add a tag of the form ``Major.minor.patch``. It is important to not add any other content to the tag name. - Push the new commit and tag to the main repository. (``git push``, and ``git push --tags``) Updating the conda-forge recipe ------------------------------- xtensor-blas has been packaged for the conda package manager. Once the new tag has been pushed on GitHub, edit the conda-forge recipe for xtensor-blas in the following fashion: - Update the version number to the new ``Major.minor.patch``. - Set the build number to ``0``. - Update the hash of the source tarball. - Check for the versions of the dependencies. - Optionally, rerender the conda-forge feedstock. xtensor-blas-0.21.0/docs/source/usage.rst000066400000000000000000000041521456314707100203130ustar00rootroot00000000000000.. Copyright (c) 2017, Wolf Vollprecht, Johan Mabille and Sylvain Corlay Distributed under the terms of the BSD 3-Clause License. The full license is in the file LICENSE, distributed with this software. .. raw:: html Usage ===== To use xtensor-blas functions, the ``xlinalg.hpp`` header has to be included. In the ``xt::linalg`` namespace, many of NumPy's ``np.linalg`` functions are implemented. We make an effort to keep the interfaces very similar. For example, calculating a determinant: .. highlight cpp .. code-block:: cpp #include "xtensor-blas/xlinalg.hpp" int main() { xt::xarray a = {{3, 2, 1}, {0, 4, 2}, {1, 3, 5}}; auto d = xt::linalg::det(a); std::cout << d << std::endl; // 42.0 } We can also try to compute the same determinant using the ``slogdet`` function, which is more robust against under- or overflows by summing up the logarithm. The slogdet function in NumPy returns a tuple of (sign, val). In C++, we emulate the behaviour by returning a ``std::tuple``, which can be unpacked using ``std::get(tuple)``. .. code-block:: cpp xt::xarray a = {{3, 2, 1}, {0, 4, 2}, {1, 3, 5}}; auto d = xt::linalg::slogdet(a); std::cout << std::get<0>(d) << ", " << std::get<1>(d) << std::endl; // +1, 3.7376696 Returning tuples is used throughout the xlinalg package. Using xblas and xlapack directly -------------------------------- It is not necessarily recommended to use ``xblas`` or ``xlapack`` directly, but it's possible and can improve performance in certain cases. Some things have to be taken into consideration: For one thing, the result container needs to be allocated and passed into the function beforehand. And for the LAPACK functions, all arguments have to be in column_major order. Furthermore it's required that the xexpressions are evaluated and are stored in contiguous memory. All of this is taken care of when using ``xlinalg``. xtensor-blas-0.21.0/docs/source/xtensor-blas.svg000066400000000000000000000124121456314707100216150ustar00rootroot00000000000000 xtensor-blas-0.21.0/environment-dev.yml000066400000000000000000000001231456314707100200620ustar00rootroot00000000000000name: xtensor-blas channels: - conda-forge dependencies: - cmake - xtensor>=0.25.0 xtensor-blas-0.21.0/include/000077500000000000000000000000001456314707100156465ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/000077500000000000000000000000001456314707100171455ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxblas/000077500000000000000000000000001456314707100206115ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxblas/CMakeLists.txt000066400000000000000000000002761456314707100233560ustar00rootroot00000000000000install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/flens FILES_MATCHING PATTERN "*.h" PATTERN "*.tcc" PATTERN "*.cxx" PATTERN "netlib" EXCLUDE ) xtensor-blas-0.21.0/include/xflens/cxxblas/LICENSE000066400000000000000000000027441456314707100216250ustar00rootroot00000000000000Copyright (c) 2007-2014, Michael Lehn All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the FLENS development group nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. xtensor-blas-0.21.0/include/xflens/cxxblas/README.md000066400000000000000000000003471456314707100220740ustar00rootroot00000000000000# FLENS: Flexible Library for Efficient Numerical Solutions This folder contains slightly modified code from the [FLENS Library](https://github.com/michael-lehn/FLENS). The FLENS library is published under a BSD-3-Clause license. xtensor-blas-0.21.0/include/xflens/cxxblas/auxiliary/000077500000000000000000000000001456314707100226205ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxblas/auxiliary/auxiliary.h000066400000000000000000000042201456314707100247760ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_AUXILIARY_AUXILIARY_H #define CXXBLAS_AUXILIARY_AUXILIARY_H 1 #include "xflens/cxxblas/auxiliary/complex.h" #include "xflens/cxxblas/auxiliary/complextrait.h" #include "xflens/cxxblas/auxiliary/debugmacro.h" #include "xflens/cxxblas/auxiliary/fakeuse.h" #include "xflens/cxxblas/auxiliary/iscomplex.h" #include "xflens/cxxblas/auxiliary/ismpfrreal.h" #include "xflens/cxxblas/auxiliary/issame.h" #include "xflens/cxxblas/auxiliary/pow.h" #include "xflens/cxxblas/auxiliary/restrictto.h" #endif // CXXBLAS_AUXILIARY_AUXILIARY_H xtensor-blas-0.21.0/include/xflens/cxxblas/auxiliary/auxiliary.tcc000066400000000000000000000035111456314707100253220ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_AUXILIARY_AUXILIARY_TCC #define CXXBLAS_AUXILIARY_AUXILIARY_TCC 1 #include "xflens/cxxblas/auxiliary/complex.tcc" #include "xflens/cxxblas/auxiliary/pow.tcc" #endif // CXXBLAS_AUXILIARY_AUXILIARY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/auxiliary/complex.h000066400000000000000000000054701456314707100244460ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_AUXILIARY_COMPLEX_H #define CXXBLAS_AUXILIARY_COMPLEX_H 1 #include "xflens/cxxblas/typedefs.h" #include "xflens/cxxblas/auxiliary/restrictto.h" namespace cxxblas { template typename cxxblas::RestrictTo::value, const T &>::Type conjugate(const T &x); template typename cxxblas::RestrictTo::value, std::complex >::Type conjugate(const std::complex &x); template typename cxxblas::RestrictTo::value, const T & >::Type real(const T &x); template typename cxxblas::RestrictTo::value, const T >::Type real(const std::complex &x); template typename cxxblas::RestrictTo::value, const T >::Type imag(const T &x); template typename cxxblas::RestrictTo::value, const T >::Type imag(const std::complex &x); template T abs1(const std::complex &x); } // namespace cxxblas #endif // CXXBLAS_AUXILIARY_COMPLEX_H xtensor-blas-0.21.0/include/xflens/cxxblas/auxiliary/complex.tcc000066400000000000000000000056141456314707100247700ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_AUXILIARY_COMPLEX_TCC #define CXXBLAS_AUXILIARY_COMPLEX_TCC 1 #include #include "xflens/cxxblas/auxiliary/complex.h" namespace cxxblas { template typename cxxblas::RestrictTo::value, const T &>::Type conjugate(const T &x) { return x; } template typename cxxblas::RestrictTo::value, std::complex >::Type conjugate(const std::complex &x) { return std::conj(x); } template typename cxxblas::RestrictTo::value, const T & >::Type real(const T &x) { return x; } template typename cxxblas::RestrictTo::value, const T >::Type real(const std::complex &x) { return std::real(x); } template typename cxxblas::RestrictTo::value, const T >::Type imag(const T &) { return T(0); } template typename cxxblas::RestrictTo::value, const T >::Type imag(const std::complex &x) { return std::imag(x); } template T abs1(const std::complex &x) { using std::abs; return abs(x.real()) + abs(x.imag()); } } // namespace cxxblas #endif // CXXBLAS_AUXILIARY_COMPLEX_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/auxiliary/complextrait.h000066400000000000000000000037361456314707100255150ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_AUXILIARY_COMPLEXTRAIT_H #define CXXBLAS_AUXILIARY_COMPLEXTRAIT_H 1 #include namespace cxxblas { template struct ComplexTrait { typedef T PrimitiveType; }; template struct ComplexTrait > { typedef T PrimitiveType; }; } // namespace cxxblas #endif // CXXBLAS_AUXILIARY_COMPLEXTRAIT_H xtensor-blas-0.21.0/include/xflens/cxxblas/auxiliary/debugmacro.h000066400000000000000000000072601456314707100251060ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_AUXILIARY_DEBUGMACRO_H #define CXXBLAS_AUXILIARY_DEBUGMACRO_H 1 #include //-- CXXBLAS_DEBUG_OUT --------------------------------------------------------- #ifdef CXXBLAS_DEBUG # ifndef CXXBLAS_DEBUG_OUT # define CXXBLAS_DEBUG_OUT(msg) std::cerr << "CXXBLAS: " << msg << std::endl # endif // CXXBLAS_DEBUG_OUT #else # ifndef CXXBLAS_DEBUG_OUT # define CXXBLAS_DEBUG_OUT(msg) # endif // CXXBLAS_DEBUG_OUT #endif // CXXBLAS_DEBUG #include //-- ASSERT ------------------------------------------------------------------- // ASSERT which prints out a trace back of the call #if defined(TRACEBACK_ASSERT) && !defined(NDEBUG) # include # ifndef ASSERT # define ASSERT(x) if(!(x)) { \ void* callstack[128]; \ int frames = backtrace(callstack, 128); \ char** strs = backtrace_symbols(callstack, \ frames); \ for (int i=0; i namespace cxxblas { template struct IsNotComplex { static const bool value = true; }; template struct IsNotComplex > { static const bool value = false; }; template struct IsComplex { static const bool value = !IsNotComplex::value; }; } // namespace cxxblas #endif // CXXBLAS_AUXILIARY_ISCOMPLEX_H xtensor-blas-0.21.0/include/xflens/cxxblas/auxiliary/ismpfrreal.h000066400000000000000000000041151456314707100251360ustar00rootroot00000000000000/* * Copyright (c) 2014, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_AUXILIARY_ISMPFRREAL_H #define CXXBLAS_AUXILIARY_ISMPFRREAL_H 1 #ifdef WITH_MPFR #include #include namespace cxxblas { template struct IsMpfrReal { static const bool value = false; }; template struct IsMpfrReal > { static const bool value = true; }; } // namespace cxxblas #endif // WITH_MPFR #endif // CXXBLAS_AUXILIARY_ISMPFRREAL_H xtensor-blas-0.21.0/include/xflens/cxxblas/auxiliary/issame.h000066400000000000000000000042151456314707100242540ustar00rootroot00000000000000/* * Copyright (c) 2004, Alexander Stippler * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_AUXILIARY_ISSAME_H #define CXXBLAS_AUXILIARY_ISSAME_H 1 namespace cxxblas { template struct IsSame { static const bool value = false; }; template struct IsSame { static const bool value = true; }; template struct IsSame { static const bool value = true; }; template struct IsSame { static const bool value = IsSame::value; }; } // namespace cxxblas #endif // CXXBLAS_AUXILIARY_ISSAME_H xtensor-blas-0.21.0/include/xflens/cxxblas/auxiliary/pow.h000066400000000000000000000052051456314707100236000ustar00rootroot00000000000000/* * Copyright (c) 2014, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_AUXILIARY_POW_H #define CXXBLAS_AUXILIARY_POW_H 1 #include "xflens/cxxblas/auxiliary/iscomplex.h" #include "xflens/cxxblas/auxiliary/ismpfrreal.h" #include "xflens/cxxblas/auxiliary/issame.h" #include "xflens/cxxblas/auxiliary/restrictto.h" #ifdef WITH_MPFR #include #endif namespace cxxblas { template typename RestrictTo::value, T>::Type pow(const T &base, const T &exponent); #ifdef WITH_MPFR template typename RestrictTo::value && !IsComplex::value && !IsMpfrReal::value, T>::Type pow(const T &base, int exponent); #else template typename RestrictTo::value && !IsComplex::value, T>::Type pow(const T &base, int exponent); #endif template std::complex pow(const std::complex &base, int exponent); } // namespace cxxblas #endif // CXXBLAS_AUXILIARY_POW_H xtensor-blas-0.21.0/include/xflens/cxxblas/auxiliary/pow.tcc000066400000000000000000000070761456314707100241320ustar00rootroot00000000000000/* * Copyright (c) 2014, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_AUXILIARY_POW_TCC #define CXXBLAS_AUXILIARY_POW_TCC 1 #include #include "xflens/cxxblas/auxiliary/complextrait.h" #include "xflens/cxxblas/auxiliary/pow.h" #ifdef WITH_MPFR #include #endif namespace cxxblas { template typename RestrictTo::value, T>::Type pow(const T &base, const T &exponent) { ASSERT( exponent>=0 ); if ( exponent==0 ) { return 1; } else if ( exponent==1 ) { return base; } int value = cxxblas::pow(base, exponent/2 ); if ( exponent%2==0 ) { return value*value; } return base*value*value; } #ifdef WITH_MPFR template typename RestrictTo::value && !IsComplex::value && !IsMpfrReal::value, T>::Type pow(const T &base, int exponent) { // // TODO: Make this more general and call an external Fortran routine // that computes 'pow(base, exponent)' for comparison // # ifdef CHECK_CXXLAPACK if (exponent==2) { return base*base; } # endif return std::pow(base, T(exponent)); } #else template typename RestrictTo::value && !IsComplex::value, T>::Type pow(const T &base, int exponent) { // // TODO: Make this more general and call an external Fortran routine // that computes 'pow(base, exponent)' for comparison // # ifdef CHECK_CXXLAPACK if (exponent==2) { return base*base; } # endif return std::pow(base, T(exponent)); } #endif template std::complex pow(const std::complex &base, int exponent) { // // TODO: Make this more general and call an external Fortran routine // that computes 'pow(base, exponent)' for comparison // # ifdef CHECK_CXXLAPACK if (exponent==2) { return base*base; } # endif return std::pow(base, T(exponent)); } } // namespace cxxblas #endif // CXXBLAS_AUXILIARY_POW_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/auxiliary/restrictto.h000066400000000000000000000040001456314707100251650ustar00rootroot00000000000000/* * Copyright (c) 2004, Alexander Stippler * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_AUXILIARY_RESTRICTTO_H #define CXXBLAS_AUXILIARY_RESTRICTTO_H 1 #ifdef INCLUDE_TYPE_TRAITS # include #endif namespace cxxblas { template struct RestrictTo { }; template struct RestrictTo { typedef typename std::remove_reference::type Type; }; } // namespace cxxblas #endif // CXXBLAS_AUXILIARY_RESTRICTTO_H xtensor-blas-0.21.0/include/xflens/cxxblas/cxxblas.cxx000066400000000000000000000034231456314707100230030ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_CXXBLAS_CXX #define CXXBLAS_CXXBLAS_CXX 1 #include "xflens/cxxblas/cxxblas.h" #include "xflens/cxxblas/cxxblas.tcc" #endif // CXXBLAS_CXXBLAS_CXX xtensor-blas-0.21.0/include/xflens/cxxblas/cxxblas.doc000066400000000000000000000040631456314707100227470ustar00rootroot00000000000000=========================== CXXBLAS: C++ BLAS Interface [TOC] =========================== CXXBLAS is a low-level C++ BLAS interface. It is similar to CBLAS but uses overloaded functions. Level 1 BLAS ============ +------------+-----------------------------------------------+ | CXXBLAS | DESCRIPTION | +============+===============================================+ | __asum__ | Takes the sum of the absolute values, i.e. | | | computes $\sum\limits_{i} |x_i|$. | +------------+-----------------------------------------------+ | __axpy__ | Constant times a vector plus a vector, i.e. | | | computes $y \leftarrow \alpha x + y$. | +------------+-----------------------------------------------+ | __copy__ | Copies a vector $x$ to a vector $y$ or | | | a matrix $A$ to a matrix $B$. | +------------+-----------------------------------------------+ | __dot__, | Forms the dot product of two vectors, i.e. | | dotu | computes $\sum\limits_{i} \bar{x}_i y_i$ | | | or $\sum\limits_{i} x_i y_i$. | +------------+-----------------------------------------------+ | __nrm2__ | Computes the euclidean norm of a vector, i.e. | | | $\sqrt{\sum\limits_{i} |x_i|^2}$. | +------------+-----------------------------------------------+ | __rot__ | Applies a plane rotation. | +------------+-----------------------------------------------+ | __rotm__ | Applies a modified Givens rotation. | +------------+-----------------------------------------------+ | __scal__ | Scales a vector by a constant, i.e. computes | | | $x \leftarrow \alpha x$. | +------------+-----------------------------------------------+ | __swap__ | Interchanges two vectors. | +------------+-----------------------------------------------+ :links: __(.*)__ -> doc:cxxblas/level1/$1 xtensor-blas-0.21.0/include/xflens/cxxblas/cxxblas.h000066400000000000000000000045171456314707100224350ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_CXXBLAS_H #define CXXBLAS_CXXBLAS_H 1 #include "xflens/cxxblas/auxiliary/auxiliary.h" #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #include "xflens/cxxblas/level1/level1.h" #include "xflens/cxxblas/level1extensions/level1extensions.h" #include "xflens/cxxblas/level2/level2.h" #include "xflens/cxxblas/level2extensions/level2extensions.h" #include "xflens/cxxblas/level3/level3.h" #include "xflens/cxxblas/level3extensions/level3extensions.h" #include "xflens/cxxblas/sparselevel2/sparselevel2.h" #include "xflens/cxxblas/sparselevel3/sparselevel3.h" #include "xflens/cxxblas/tinylevel1/tinylevel1.h" #include "xflens/cxxblas/tinylevel2/tinylevel2.h" #endif // CXXBLAS_CXXBLAS_H xtensor-blas-0.21.0/include/xflens/cxxblas/cxxblas.tcc000066400000000000000000000045101456314707100227500ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_CXXBLAS_TCC #define CXXBLAS_CXXBLAS_TCC 1 #include "xflens/cxxblas/auxiliary/auxiliary.tcc" #include "xflens/cxxblas/drivers/drivers.tcc" #include "xflens/cxxblas/level1/level1.tcc" #include "xflens/cxxblas/level1extensions/level1extensions.tcc" #include "xflens/cxxblas/level2/level2.tcc" #include "xflens/cxxblas/level2extensions/level2extensions.tcc" #include "xflens/cxxblas/level3/level3.tcc" #include "xflens/cxxblas/level3extensions/level3extensions.tcc" #include "xflens/cxxblas/sparselevel2/sparselevel2.tcc" #include "xflens/cxxblas/sparselevel3/sparselevel3.tcc" #include "xflens/cxxblas/tinylevel1/tinylevel1.tcc" #include "xflens/cxxblas/tinylevel2/tinylevel2.tcc" #endif // CXXBLAS_CXXBLAS_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/drivers/000077500000000000000000000000001456314707100222675ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxblas/drivers/atlas.h000066400000000000000000000037711456314707100235540ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_DRIVERS_ATLAS_H #define CXXBLAS_DRIVERS_ATLAS_H 1 # define HAVE_CBLAS 1 # define CBLAS_INT int # define BLAS_IMPL "ATLAS" #ifndef CBLAS_INDEX # define CBLAS_INDEX int #endif // CBLAS_INDEX // BLAS extensions #ifndef HAVE_CBLAS_AXPBY # define HAVE_CBLAS_AXPBY # define BLAS_EXT(x) catlas_##x #endif #endif // CXXBLAS_DRIVERS_ATLAS_H xtensor-blas-0.21.0/include/xflens/cxxblas/drivers/cblas.h000066400000000000000000000764011456314707100235340ustar00rootroot00000000000000/* * File taken (with minor modifications) from cblas: * http://www.netlib.org/blas/ */ #ifndef CXXBLAS_DRIVERS_CBLAS_H #define CXXBLAS_DRIVERS_CBLAS_H 1 #ifndef CBLAS_INT # define CBLAS_INT int #endif // CBLAS_INT #ifndef CBLAS_INDEX # define CBLAS_INDEX int #endif // CBLAS_INT #ifdef __cplusplus extern "C" { #endif enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102}; enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113, CblasConjNoTrans=114}; enum CBLAS_UPLO {CblasUpper=121, CblasLower=122}; enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132}; enum CBLAS_SIDE {CblasLeft=141, CblasRight=142}; //-- LEVEL 1 ------------------------------------------------------------------- // asum float cblas_sasum(CBLAS_INT n, const float *x, CBLAS_INT incX); double cblas_dasum (CBLAS_INT n, const double *x, CBLAS_INT incX); float cblas_scasum(CBLAS_INT n, const float *x, CBLAS_INT incX); double cblas_dzasum(CBLAS_INT n, const double *x, CBLAS_INT incX); // axpy void cblas_saxpy(CBLAS_INT n, float alpha, const float *x, CBLAS_INT incX, float *y, CBLAS_INT incY); void cblas_daxpy(CBLAS_INT n, double alpha, const double *x, CBLAS_INT incX, double *y, CBLAS_INT incY); void cblas_caxpy(CBLAS_INT n, const float *alpha, const float *x, CBLAS_INT incX, float *y, CBLAS_INT incY); void cblas_zaxpy(CBLAS_INT n, const double *alpha, const double *x, CBLAS_INT incX, double *y, CBLAS_INT incY); // axpby #ifdef HAVE_CBLAS_AXPBY void BLAS_EXT(saxpby) (CBLAS_INT n, float alpha, const float *x, CBLAS_INT incX, float beta, float *y, CBLAS_INT incY); void BLAS_EXT(daxpby) (CBLAS_INT n, double alpha, const double *x, CBLAS_INT incX, double beta, double *y, CBLAS_INT incY); void BLAS_EXT(caxpby) (CBLAS_INT n, const float *alpha, const float *x, CBLAS_INT incX, const float *beta, float *y, CBLAS_INT incY); void BLAS_EXT(zaxpby) (CBLAS_INT n, const double *alpha, const double *x, CBLAS_INT incX, const double *beta, double *y, CBLAS_INT incY); #endif //HAVE_CBLAS_AXPBY // copy void cblas_scopy(CBLAS_INT n, const float *x, CBLAS_INT incX, float *y, CBLAS_INT incY); void cblas_dcopy(CBLAS_INT n, const double *x, CBLAS_INT incX, double *y, CBLAS_INT incY); void cblas_ccopy(CBLAS_INT n, const float *x, CBLAS_INT incX, float *y, CBLAS_INT incY); void cblas_zcopy(CBLAS_INT n, const double *x, CBLAS_INT incX, double *y, CBLAS_INT incY); // dot float cblas_sdsdot(CBLAS_INT n, float alpha, const float *x, CBLAS_INT incX, const float *y, CBLAS_INT incY); double cblas_dsdot(CBLAS_INT n, const float *x, CBLAS_INT incX, const float *y, CBLAS_INT incY); float cblas_sdot(CBLAS_INT n, const float *x, CBLAS_INT incX, const float *y, CBLAS_INT incY); double cblas_ddot(CBLAS_INT n, const double *x, CBLAS_INT incX, const double *y, CBLAS_INT incY); void cblas_cdotu_sub(CBLAS_INT n, const float *x, CBLAS_INT incX, const float *y, CBLAS_INT incY, float *result); void cblas_cdotc_sub(CBLAS_INT n, const float *x, CBLAS_INT incX, const float *y, CBLAS_INT incY, float *result); void cblas_zdotu_sub(CBLAS_INT n, const double *x, CBLAS_INT incX, const double *y, CBLAS_INT incY, double *result); void cblas_zdotc_sub(CBLAS_INT n, const double *x, CBLAS_INT incX, const double *y, CBLAS_INT incY, double *result); // iamax CBLAS_INDEX cblas_isamax(CBLAS_INT n, const float *x, CBLAS_INT incX); CBLAS_INDEX cblas_idamax(CBLAS_INT n, const double *x, CBLAS_INT incX); CBLAS_INDEX cblas_icamax(CBLAS_INT n, const float *x, CBLAS_INT incX); CBLAS_INDEX cblas_izamax(CBLAS_INT n, const double *x, CBLAS_INT incX); // nrm2 float cblas_snrm2(CBLAS_INT n, const float *X, CBLAS_INT incX); double cblas_dnrm2(CBLAS_INT n, const double *X, CBLAS_INT incX); float cblas_scnrm2(CBLAS_INT n, const float *X, CBLAS_INT incX); double cblas_dznrm2(CBLAS_INT n, const double *X, CBLAS_INT incX); // rot void cblas_srot(CBLAS_INT n, float *X, CBLAS_INT incX, float *Y, CBLAS_INT incY, float c, float s); void cblas_drot(CBLAS_INT n, double *X, CBLAS_INT incX, double *Y, CBLAS_INT incY, double c, double s); void cblas_srotg(float *a, float *b, float *c, float *s); void cblas_drotg(double *a, double *b, double *c, double *s); // rotm void cblas_srotm(CBLAS_INT n, float *X, CBLAS_INT incX, float *Y, CBLAS_INT incY, const float *P); void cblas_drotm(CBLAS_INT n, double *X, CBLAS_INT incX, double *Y, CBLAS_INT incY, const double *P); void cblas_srotmg(float *d1, float *d2, float *b1, float *b2, float *P); void cblas_drotmg(double *d1, double *d2, double *b1, double *b2, double *P); // scal void cblas_sscal(CBLAS_INT n, float alpha, float *x, CBLAS_INT incX); void cblas_dscal(CBLAS_INT n, double alpha, double *x, CBLAS_INT incX); void cblas_cscal(CBLAS_INT n, const float *alpha, float *x, CBLAS_INT incX); void cblas_zscal(CBLAS_INT n, const double *alpha, double *x, CBLAS_INT incX); void cblas_csscal(CBLAS_INT n, float alpha, float *x, CBLAS_INT incX); void cblas_zdscal(CBLAS_INT n, double alpha, double *x, CBLAS_INT incX); // swap void cblas_sswap(CBLAS_INT n, float *x, CBLAS_INT incX, float *y, CBLAS_INT incY); void cblas_dswap(CBLAS_INT n, double *x, CBLAS_INT incX, double *y, CBLAS_INT incY); void cblas_cswap(CBLAS_INT n, float *x, CBLAS_INT incX, float *y, CBLAS_INT incY); void cblas_zswap(CBLAS_INT n, double *x, CBLAS_INT incX, double *y, CBLAS_INT incY); //-- LEVEL 2 ------------------------------------------------------------------- // gbmv void cblas_sgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, CBLAS_INT m, CBLAS_INT n, CBLAS_INT kl, CBLAS_INT ku, float alpha, const float *A, CBLAS_INT ldA, const float *x, CBLAS_INT incX, float beta, float *y, CBLAS_INT incY); void cblas_dgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, CBLAS_INT m, CBLAS_INT n, CBLAS_INT kl, CBLAS_INT ku, double alpha, const double *A, CBLAS_INT ldA, const double *x, CBLAS_INT incX, double beta, double *y, CBLAS_INT incY); void cblas_cgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, CBLAS_INT m, CBLAS_INT n, CBLAS_INT kl, CBLAS_INT ku, const float *alpha, const float *A, CBLAS_INT ldA, const float *x, CBLAS_INT incX, const float *beta, float *y, CBLAS_INT incY); void cblas_zgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, CBLAS_INT m, CBLAS_INT n, CBLAS_INT kl, CBLAS_INT ku, const double *alpha, const double *A, CBLAS_INT ldA, const double *x, CBLAS_INT incX, const double *beta, double *y, CBLAS_INT incY); // gemv void cblas_sgemv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, CBLAS_INT m, CBLAS_INT n, float alpha, const float *A, CBLAS_INT ldA, const float *x, CBLAS_INT incX, float beta, float *y, CBLAS_INT incY); void cblas_dgemv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, CBLAS_INT m, CBLAS_INT n, double alpha, const double *A, CBLAS_INT ldA, const double *x, CBLAS_INT incX, double beta, double *y, CBLAS_INT incY); void cblas_cgemv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, CBLAS_INT m, CBLAS_INT n, const float *alpha, const float *A, CBLAS_INT ldA, const float *x, CBLAS_INT incX, const float *beta, float *y, CBLAS_INT incY); void cblas_zgemv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, CBLAS_INT m, CBLAS_INT n, const double *alpha, const double *A, CBLAS_INT ldA, const double *x, CBLAS_INT incX, const double *beta, double *y, CBLAS_INT incY); // sbmv void cblas_ssbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, CBLAS_INT k, float alpha, const float *A, CBLAS_INT ldA, const float *x, CBLAS_INT incX, float beta, float *y, CBLAS_INT incY); void cblas_dsbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n,CBLAS_INT k, double alpha, const double *A, CBLAS_INT ldA, const double *x, CBLAS_INT incX, double beta, double *y, CBLAS_INT incY); // symv void cblas_ssymv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, float alpha, const float *A, CBLAS_INT ldA, const float *x, CBLAS_INT incX, float beta, float *y, CBLAS_INT incY); void cblas_dsymv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, double alpha, const double *A, CBLAS_INT ldA, const double *x, CBLAS_INT incX, double beta, double *y, CBLAS_INT incY); // spmv void cblas_sspmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, float alpha, const float *Ap, const float *x, CBLAS_INT incX, float beta, float *y, CBLAS_INT incY); void cblas_dspmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, double alpha, const double *Ap, const double *x, CBLAS_INT incX, double beta, double *y, CBLAS_INT incY); // hbmv void cblas_chbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, CBLAS_INDEX k, const float *alpha, const float *A, CBLAS_INT ldA, const float *x, CBLAS_INT incX, const float *beta, float *y, CBLAS_INT incY); void cblas_zhbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, CBLAS_INDEX k, const double *alpha, const double *A, CBLAS_INT ldA, const double *x, CBLAS_INT incX, const double *beta, double *y, CBLAS_INT incY); // hemv void cblas_chemv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, const float *alpha, const float *A, CBLAS_INT ldA, const float *x, CBLAS_INT incX, const float *beta, float *y, CBLAS_INT incY); void cblas_zhemv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, const double *alpha, const double *A, CBLAS_INT ldA, const double *x, CBLAS_INT incX, const double *beta, double *y, CBLAS_INT incY); // hpmv void cblas_chpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, const float *alpha, const float *Ap, const float *x, CBLAS_INT incX, const float *beta, float *y, CBLAS_INT incY); void cblas_zhpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, const double *alpha, const double *Ap, const double *x, CBLAS_INT incX, const double *beta, double *y, CBLAS_INT incY); // tbsv void cblas_stbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, CBLAS_INT k, const float *A, CBLAS_INT lda, float *X, CBLAS_INT incX); void cblas_dtbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, CBLAS_INT k, const double *A, CBLAS_INT lda, double *X, CBLAS_INT incX); void cblas_ctbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, CBLAS_INT k, const float *A, CBLAS_INT lda, float *X, CBLAS_INT incX); void cblas_ztbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, CBLAS_INT k, const double *A, CBLAS_INT lda, double *X, CBLAS_INT incX); // trsv void cblas_strsv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, const float *A, CBLAS_INT lda, float *X, CBLAS_INT incX); void cblas_dtrsv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, const double *A, CBLAS_INT lda, double *X, CBLAS_INT incX); void cblas_ctrsv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, const float *A, CBLAS_INT lda, float *X, CBLAS_INT incX); void cblas_ztrsv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, const double *A, CBLAS_INT lda, double *X, CBLAS_INT incX); // tpsv void cblas_stpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, const float *A, float *X, CBLAS_INT incX); void cblas_dtpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, const double *A, double *X, CBLAS_INT incX); void cblas_ctpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, const float *A, float *X, CBLAS_INT incX); void cblas_ztpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, const double *A, double *X, CBLAS_INT incX); // tbmv void cblas_stbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, CBLAS_INDEX k, const float *A, CBLAS_INT lda, float *x, CBLAS_INT incX); void cblas_dtbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, CBLAS_INDEX k, const double *A, CBLAS_INT lda, double *x, CBLAS_INT incX); void cblas_ctbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, CBLAS_INDEX k, const float *A, CBLAS_INT lda, float *x, CBLAS_INT incX); void cblas_ztbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT N, CBLAS_INDEX k, const double *A, CBLAS_INT lda, double *x, CBLAS_INT incX); // trmv void cblas_strmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, const float *A, CBLAS_INT lda, float *x, CBLAS_INT incX); void cblas_dtrmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, const double *A, CBLAS_INT lda, double *x, CBLAS_INT incX); void cblas_ctrmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, const float *A, CBLAS_INT lda, float *x, CBLAS_INT incX); void cblas_ztrmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT N, const double *A, CBLAS_INT lda, double *x, CBLAS_INT incX); // tpmv void cblas_stpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, const float *Ap, float *x, CBLAS_INT incX); void cblas_dtpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, const double *Ap, double *x, CBLAS_INT incX); void cblas_ctpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT n, const float *Ap, float *x, CBLAS_INT incX); void cblas_ztpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT N, const double *Ap, double *x, CBLAS_INT incX); // ger void cblas_sger(enum CBLAS_ORDER order, CBLAS_INT m, CBLAS_INT n, float alpha, const float *X, CBLAS_INT incX, const float *Y, CBLAS_INT incY, float *A, CBLAS_INT lda); void cblas_dger(enum CBLAS_ORDER order, CBLAS_INT m, CBLAS_INT n, double alpha, const double *X, CBLAS_INT incX, const double *Y, CBLAS_INT incY, double *A, CBLAS_INT lda); void cblas_cgeru(enum CBLAS_ORDER order, CBLAS_INT m, CBLAS_INT n, const float *alpha, const float *X, CBLAS_INT incX, const float *Y, CBLAS_INT incY, float *A, CBLAS_INT lda); void cblas_cgerc(enum CBLAS_ORDER order, CBLAS_INT m, CBLAS_INT n, const float *alpha, const float *X, CBLAS_INT incX, const float *Y, CBLAS_INT incY, float *A, CBLAS_INT lda); void cblas_zgeru(enum CBLAS_ORDER order, CBLAS_INT m, CBLAS_INT n, const double *alpha, const double *X, CBLAS_INT incX, const double *Y, CBLAS_INT incY, double *A, CBLAS_INT lda); void cblas_zgerc(enum CBLAS_ORDER order, CBLAS_INT m, CBLAS_INT n, const double *alpha, const double *X, CBLAS_INT incX, const double *Y, CBLAS_INT incY, double *A, CBLAS_INT lda); // syr void cblas_ssyr(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, float alpha, const float *X, CBLAS_INT incX, float *A, CBLAS_INT lda); void cblas_dsyr(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, double alpha, const double *X, CBLAS_INT incX, double *A, CBLAS_INT lda); // spr void cblas_sspr(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, float alpha, const float *X, CBLAS_INT incX, float *A); void cblas_dspr(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, double alpha, const double *X, CBLAS_INT incX, double *A); // her void cblas_cher(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, float alpha, const float *X, CBLAS_INT incX, float *A, CBLAS_INT lda); void cblas_zher(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, double alpha, const double *X, CBLAS_INT incX, double *A, CBLAS_INT lda); // hpr void cblas_chpr(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, float alpha, const float *X, CBLAS_INT incX, float *A); void cblas_zhpr(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, double alpha, const double *X, CBLAS_INT incX, double *A); // spr2 void cblas_sspr2(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, float alpha, const float *X, CBLAS_INT incX, const float *Y, CBLAS_INT incY, float *A); void cblas_dspr2(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, double alpha, const double *X, CBLAS_INT incX, const double *Y, CBLAS_INT incY, double *A); // syr2 void cblas_ssyr2(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, float alpha, const float *X, CBLAS_INT incX, const float *Y, CBLAS_INT incY, float *A, CBLAS_INT lda); void cblas_dsyr2(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, double alpha, const double *X, CBLAS_INT incX, const double *Y, CBLAS_INT incY, double *A, CBLAS_INT lda); // her2 void cblas_cher2(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, const float *alpha, const float *X, CBLAS_INT incX, const float *Y, CBLAS_INT incY, float *A, CBLAS_INT lda); void cblas_zher2(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, const double *alpha, const double *X, CBLAS_INT incX, const double *Y, CBLAS_INT incY, double *A, CBLAS_INT lda); // hpr2 void cblas_chpr2(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, const float *alpha, const float *X, CBLAS_INT incX, const float *Y, CBLAS_INT incY, float *A); void cblas_zhpr2(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, CBLAS_INT n, const double *alpha, const double *X, CBLAS_INT incX, const double *Y, CBLAS_INT incY, double *A); //-- LEVEL 3 ------------------------------------------------------------------- // gemm void cblas_sgemm(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE transA, enum CBLAS_TRANSPOSE transB, CBLAS_INT m, CBLAS_INT n, CBLAS_INT k, float alpha, const float *A, CBLAS_INT ldA, const float *B, CBLAS_INT ldB, float beta, float *C, CBLAS_INT ldC); void cblas_dgemm(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE transA, enum CBLAS_TRANSPOSE transB, CBLAS_INT m, CBLAS_INT n, CBLAS_INT k, double alpha, const double *A, CBLAS_INT ldA, const double *B, CBLAS_INT ldB, double beta, double *C, CBLAS_INT ldC); void cblas_cgemm(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE transA, enum CBLAS_TRANSPOSE transB, CBLAS_INT m, CBLAS_INT n, CBLAS_INT k, const float *alpha, const float *A, CBLAS_INT ldA, const float *B, CBLAS_INT ldB, const float *beta, float *C, CBLAS_INT ldC); void cblas_zgemm(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE transA, enum CBLAS_TRANSPOSE transB, CBLAS_INT m, CBLAS_INT n, CBLAS_INT k, const double *alpha, const double *A, CBLAS_INT ldA, const double *B, CBLAS_INT ldB, const double *beta, double *C, CBLAS_INT ldC); // hemm void cblas_chemm(enum CBLAS_ORDER order, enum CBLAS_SIDE side, enum CBLAS_UPLO upLo, CBLAS_INT m, CBLAS_INT n, const float *alpha, const float *A, CBLAS_INT ldA, const float *B, CBLAS_INT ldB, const float *beta, float *C, CBLAS_INT ldC); void cblas_zhemm(enum CBLAS_ORDER order, enum CBLAS_SIDE side, enum CBLAS_UPLO upLo, CBLAS_INT m, CBLAS_INT n, const double *alpha, const double *A, CBLAS_INT ldA, const double *B, CBLAS_INT ldB, const double *beta, double *C, CBLAS_INT ldC); // herk void cblas_cherk(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE trans, CBLAS_INT n, CBLAS_INT k, float alpha, const float *A, CBLAS_INT ldA, float beta, float *C, CBLAS_INT ldC); void cblas_zherk(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE trans, CBLAS_INT n, CBLAS_INT k, double alpha, const double *A, CBLAS_INT ldA, double beta, double *C, CBLAS_INT ldC); // her2k void cblas_cher2k(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE trans, CBLAS_INT n, CBLAS_INT k, const float *alpha, const float *A, CBLAS_INT ldA, const float *B, CBLAS_INT ldB, float beta, float *C, CBLAS_INT ldC); void cblas_zher2k(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE trans, CBLAS_INT n, CBLAS_INT k, const double *alpha, const double *A, CBLAS_INT ldA, const double *B, CBLAS_INT ldB, double beta, double *C, CBLAS_INT ldC); // symm void cblas_ssymm(enum CBLAS_ORDER order, enum CBLAS_SIDE side, enum CBLAS_UPLO upLo, CBLAS_INT m, CBLAS_INT n, float alpha, const float *A, CBLAS_INT ldA, const float *B, CBLAS_INT ldB, float beta, float *C, CBLAS_INT ldC); void cblas_dsymm(enum CBLAS_ORDER order, enum CBLAS_SIDE side, enum CBLAS_UPLO upLo, CBLAS_INT m, CBLAS_INT n, double alpha, const double *A, CBLAS_INT ldA, const double *B, CBLAS_INT ldB, double beta, double *C, CBLAS_INT ldC); void cblas_csymm(enum CBLAS_ORDER order, enum CBLAS_SIDE side, enum CBLAS_UPLO upLo, CBLAS_INT m, CBLAS_INT n, const float *alpha, const float *A, CBLAS_INT ldA, const float *B, CBLAS_INT ldB, const float *beta, float *C, CBLAS_INT ldC); void cblas_zsymm(enum CBLAS_ORDER order, enum CBLAS_SIDE side, enum CBLAS_UPLO upLo, CBLAS_INT m, CBLAS_INT n, const double *alpha, const double *A, CBLAS_INT ldA, const double *B, CBLAS_INT ldB, const double *beta, double *C, CBLAS_INT ldC); // syrk void cblas_ssyrk(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE trans, CBLAS_INT n, CBLAS_INT k, float alpha, const float *A, CBLAS_INT ldA, float beta, float *C, CBLAS_INT ldC); void cblas_dsyrk(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE trans, CBLAS_INT n, CBLAS_INT k, double alpha, const double *A, CBLAS_INT ldA, double beta, double *C, CBLAS_INT ldC); void cblas_csyrk(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE trans, CBLAS_INT n, CBLAS_INT k, const float *alpha, const float *A, CBLAS_INT ldA, const float *beta, float *C, CBLAS_INT ldC); void cblas_zsyrk(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE trans, CBLAS_INT n, CBLAS_INT k, const double *alpha, const double *A, CBLAS_INT ldA, const double *beta, double *C, CBLAS_INT ldC); // syr2k void cblas_ssyr2k(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE trans, CBLAS_INT n, CBLAS_INT k, float alpha, const float *A, CBLAS_INT ldA, const float *B, CBLAS_INT ldB, float beta, float *C, CBLAS_INT ldC); void cblas_dsyr2k(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE trans, CBLAS_INT n, CBLAS_INT k, double alpha, const double *A, CBLAS_INT ldA, const double *B, CBLAS_INT ldB, double beta, double *C, CBLAS_INT ldC); void cblas_csyr2k(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE trans, CBLAS_INT n, CBLAS_INT k, const float *alpha, const float *A, CBLAS_INT ldA, const float *B, CBLAS_INT ldB, const float *beta, float *C, CBLAS_INT ldC); void cblas_zsyr2k(enum CBLAS_ORDER order, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE trans, CBLAS_INT n, CBLAS_INT k, const double *alpha, const double *A, CBLAS_INT ldA, const double *B, CBLAS_INT ldB, const double *beta, double *C, CBLAS_INT ldC); // trmm void cblas_strmm(enum CBLAS_ORDER order, enum CBLAS_SIDE side, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT m, CBLAS_INT n, float alpha, const float *A, CBLAS_INT ldA, float *B, CBLAS_INT ldB); void cblas_dtrmm(enum CBLAS_ORDER order, enum CBLAS_SIDE side, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT m, CBLAS_INT n, double alpha, const double *A, CBLAS_INT ldA, double *B, CBLAS_INT ldB); void cblas_ctrmm(enum CBLAS_ORDER order, enum CBLAS_SIDE side, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT m, CBLAS_INT n, const float *alpha, const float *A, CBLAS_INT ldA, float *B, CBLAS_INT ldB); void cblas_ztrmm(enum CBLAS_ORDER order, enum CBLAS_SIDE side, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT m, CBLAS_INT n, const double *alpha, const double *A, CBLAS_INT ldA, double *B, CBLAS_INT ldB); // trsm void cblas_strsm(enum CBLAS_ORDER order, enum CBLAS_SIDE side, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT m, CBLAS_INT n, float alpha, const float *A, CBLAS_INT ldA, float *B, CBLAS_INT ldB); void cblas_dtrsm(enum CBLAS_ORDER order, enum CBLAS_SIDE side, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT m, CBLAS_INT n, double alpha, const double *A, CBLAS_INT ldA, double *B, CBLAS_INT ldB); void cblas_ctrsm(enum CBLAS_ORDER order, enum CBLAS_SIDE side, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT m, CBLAS_INT n, const float *alpha, const float *A, CBLAS_INT ldA, float *B, CBLAS_INT ldB); void cblas_ztrsm(enum CBLAS_ORDER order, enum CBLAS_SIDE side, enum CBLAS_UPLO upLo, enum CBLAS_TRANSPOSE transA, enum CBLAS_DIAG diag, CBLAS_INT m, CBLAS_INT n, const double *alpha, const double *A, CBLAS_INT ldA, double *B, CBLAS_INT ldB); #ifdef __cplusplus } // extern "C" #endif #endif // CXXBLAS_DRIVERS_CBLAS_H xtensor-blas-0.21.0/include/xflens/cxxblas/drivers/drivers.h000066400000000000000000000111101456314707100241100ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_DRIVERS_DRIVERS_H #define CXXBLAS_DRIVERS_DRIVERS_H 1 #include "xflens/cxxblas/auxiliary/issame.h" #include "xflens/cxxblas/auxiliary/restrictto.h" // define implementation specific constants, macros, etc. #if defined (WITH_ATLAS) # include "xflens/cxxblas/drivers/atlas.h" #elif defined (WITH_GOTOBLAS) # include "xflens/cxxblas/drivers/gotoblas.h" #elif defined (WITH_OPENBLAS) # include "xflens/cxxblas/drivers/openblas.h" #elif defined (WITH_VECLIB) # include "xflens/cxxblas/drivers/veclib.h" #elif defined (WITH_MKLBLAS) # include "xflens/cxxblas/drivers/mklblas.h" #elif defined (WITH_REFBLAS) # include "xflens/cxxblas/drivers/refblas.h" #endif #ifdef HAVE_CBLAS #include "xflens/cxxblas/drivers/cblas.h" #endif #ifdef HAVE_SPARSEBLAS #include "xflens/cxxblas/drivers/sparseblas.h" #endif #include "xflens/cxxblas/typedefs.h" namespace cxxblas { template const CHAR * blasImpl(); //------------------------------------------------------------------------------ template struct If { }; template <> struct If { typedef void isBlasCompatibleInteger; }; template <> struct If { typedef void isBlasCompatibleInteger; }; //------------------------------------------------------------------------------ template typename RestrictTo::value, char>::Type getF77BlasChar(ENUM trans); template typename RestrictTo::value, char>::Type getF77BlasChar(ENUM diag); template typename RestrictTo::value, char>::Type getF77BlasChar(ENUM upLo); //------------------------------------------------------------------------------ template typename RestrictTo::value, Transpose>::Type getCxxBlasEnum(char trans); template typename RestrictTo::value, Diag>::Type getCxxBlasEnum(char diag); template typename RestrictTo::value, StorageUpLo>::Type getCxxBlasEnum(char upLo); //------------------------------------------------------------------------------ #ifdef HAVE_CBLAS namespace CBLAS { //TODO: rename these to getCblasEnum template typename RestrictTo::value, CBLAS_ORDER>::Type getCblasType(ENUM order); template typename RestrictTo::value, CBLAS_TRANSPOSE>::Type getCblasType(ENUM trans); template typename RestrictTo::value, CBLAS_UPLO>::Type getCblasType(ENUM upLo); template typename RestrictTo::value, CBLAS_SIDE>::Type getCblasType(ENUM side); template typename RestrictTo::value, CBLAS_DIAG>::Type getCblasType(ENUM diag); } // namespace CBLAS #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_DRIVERS_DRIVERS_H xtensor-blas-0.21.0/include/xflens/cxxblas/drivers/drivers.tcc000066400000000000000000000120051456314707100244360ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_DRIVERS_DRIVERS_TCC #define CXXBLAS_DRIVERS_DRIVERS_TCC 1 #include "xflens/cxxblas/auxiliary/auxiliary.h" #include "xflens/cxxblas/drivers/drivers.h" #ifndef BLAS_IMPL # define BLAS_IMPL "CXXBLAS (generic)" #endif namespace cxxblas { template const CHAR * blasImpl() { return BLAS_IMPL; } //------------------------------------------------------------------------------ template typename RestrictTo::value, char>::Type getF77BlasChar(ENUM trans) { if (trans==NoTrans) { return 'N'; } else if (trans==Trans) { return 'T'; } else if (trans==Conj) { return 'R'; } else if (trans==ConjTrans) { return 'C'; } else { ASSERT(0); return '?'; } } template typename RestrictTo::value, char>::Type getF77BlasChar(ENUM diag) { if (diag==Unit) { return 'U'; } return 'N'; } template typename RestrictTo::value, char>::Type getF77BlasChar(ENUM upLo) { if (upLo==Upper) { return 'U'; } return 'L'; } //------------------------------------------------------------------------------ template typename RestrictTo::value, Transpose>::Type getCxxBlasEnum(char trans) { if ((trans=='N') || (trans=='n')) { return NoTrans; } else if ((trans=='T') || (trans=='t')) { return Trans; } else if ((trans=='C') || (trans=='c')) { return ConjTrans; } else if ((trans=='R') || (trans=='r')) { return Conj; } ASSERT(0); return NoTrans; } template typename RestrictTo::value, Diag>::Type getCxxBlasEnum(char diag) { if (diag=='U') { return Unit; } ASSERT(diag=='N'); return NonUnit; } template typename RestrictTo::value, StorageUpLo>::Type getCxxBlasEnum(char upLo) { if (upLo=='U') { return Upper; } ASSERT(upLo=='L'); return Lower; } //------------------------------------------------------------------------------ #ifdef HAVE_CBLAS namespace CBLAS { template typename RestrictTo::value, CBLAS_ORDER>::Type getCblasType(ENUM order) { if (order==RowMajor) { return CblasRowMajor; } return CblasColMajor; } template typename RestrictTo::value, CBLAS_TRANSPOSE>::Type getCblasType(ENUM trans) { if (trans==NoTrans) { return CblasNoTrans; } if (trans==Conj) { return CblasConjNoTrans; } if (trans==Trans) { return CblasTrans; } return CblasConjTrans; } template typename RestrictTo::value, CBLAS_UPLO>::Type getCblasType(ENUM upLo) { if (upLo==Upper) { return CblasUpper; } return CblasLower; } template typename RestrictTo::value, CBLAS_SIDE>::Type getCblasType(ENUM side) { if (side==Left) { return CblasLeft; } return CblasRight; } template typename RestrictTo::value, CBLAS_DIAG>::Type getCblasType(ENUM diag) { if (diag==Unit) { return CblasUnit; } return CblasNonUnit; } } // namespace CBLAS #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_DRIVERS_DRIVERS_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/drivers/gotoblas.h000066400000000000000000000037641456314707100242640ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_DRIVERS_GOTOBLAS_H #define CXXBLAS_DRIVERS_GOTOBLAS_H 1 # define HAVE_CBLAS 1 # ifdef BLASINT # define CBLAS_INT BLASINT # else # define CBLAS_INT int # endif # define BLAS_IMPL "GotoBLAS" # ifndef CBLAS_INDEX # define CBLAS_INDEX size_t # endif // CBLAS_INDEX #endif // CXXBLAS_DRIVERS_GOTOBLAS_H xtensor-blas-0.21.0/include/xflens/cxxblas/drivers/mklblas.h000066400000000000000000000047441456314707100240760ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_DRIVERS_MKLBLAS_H #define CXXBLAS_DRIVERS_MKLBLAS_H 1 # define HAVE_CBLAS 1 # define HAVE_SPARSEBLAS 1 # define WITH_MKLDSS 1 # ifdef MKL_ILP64 # define CBLAS_INT long # define CBLAS_INDEX long # else # define CBLAS_INT int # define CBLAS_INDEX int # endif # define BLAS_IMPL "MKLBLAS" // BLAS extensions #ifndef HAVE_CBLAS_AXPBY # define HAVE_CBLAS_AXPBY # define BLAS_EXT(x) cblas_##x #endif // MKL includes LAPACK #ifndef USE_CXXLAPACK # define USE_CXXLAPACK 1 #endif // MKL includes FFTW interface (float, double) #ifndef HAVE_FFTW # define HAVE_FFTW 1 #endif #ifndef HAVE_FFTW_FLOAT # define HAVE_FFTW_FLOAT 1 #endif #ifndef HAVE_FFTW_DOUBLE # define HAVE_FFTW_DOUBLE 1 #endif #endif // CXXBLAS_DRIVERS_MKLBLAS_H xtensor-blas-0.21.0/include/xflens/cxxblas/drivers/openblas.h000066400000000000000000000057541456314707100242560ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_DRIVERS_OPENBLAS_H #define CXXBLAS_DRIVERS_OPENBLAS_H 1 # define HAVE_CBLAS 1 # ifdef BLASINT # define CBLAS_INT BLASINT # else # define CBLAS_INT int # endif # define BLAS_IMPL "OpenBLAS" # ifndef CBLAS_INDEX # define CBLAS_INDEX size_t # endif // CBLAS_INDEX // BLAS extensions #ifndef HAVE_CBLAS_AXPBY # define HAVE_CBLAS_AXPBY # define BLAS_EXT(x) cblas_##x #endif extern "C" { /* Assume C declarations for C++ */ /*Set the number of threads on runtime.*/ void openblas_set_num_threads(int num_threads); void goto_set_num_threads(int num_threads); /*Get the number of threads on runtime.*/ int openblas_get_num_threads(void); /*Get the number of physical processors (cores).*/ int openblas_get_num_procs(void); /*Get the build configure on runtime.*/ char* openblas_get_config(void); /*Get the CPU corename on runtime.*/ char* openblas_get_corename(void); /* Get the parallelization type which is used by OpenBLAS */ int openblas_get_parallel(void); } /* OpenBLAS is compiled for sequential use */ #define OPENBLAS_SEQUENTIAL 0 /* OpenBLAS is compiled using normal threading model */ #define OPENBLAS_THREAD 1 /* OpenBLAS is compiled using OpenMP threading model */ #define OPENBLAS_OPENMP 2 #endif // CXXBLAS_DRIVERS_OPENBLAS_H xtensor-blas-0.21.0/include/xflens/cxxblas/drivers/refblas.h000066400000000000000000000037601456314707100240640ustar00rootroot00000000000000/* * Copyright (c) 2011, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_DRIVERS_REFBLAS_H #define CXXBLAS_DRIVERS_REFBLAS_H 1 # define HAVE_CBLAS 1 # ifdef BLASINT # define CBLAS_INT BLASINT # else # define CBLAS_INT int # endif # define BLAS_IMPL "RefBLAS" # ifndef CBLAS_INDEX # define CBLAS_INDEX size_t # endif // CBLAS_INDEX #endif // CXXBLAS_DRIVERS_REFBLAS_H xtensor-blas-0.21.0/include/xflens/cxxblas/drivers/sparseblas.h000066400000000000000000000353721456314707100246110ustar00rootroot00000000000000/* * Modification of mkl_spblas.h */ #ifndef CXXBLAS_DRIVERS_SPARSEBLAS_H #define CXXBLAS_DRIVERS_SPARSEBLAS_H 1 #include "xflens/cxxblas/drivers/mklblas.h" #ifndef SPARSEBLAS_INT # define SPARSEBLAS_INT int #endif // CBLAS_INT #ifndef SPARSEBLAS_INDEX # define SPARSEBLAS_INDEX int #endif // CBLAS_INT #ifdef __cplusplus extern "C" { #endif //-- LEVEL 2 ------------------------------------------------------------------- // mv void mkl_scscmv(const char *transa, const CBLAS_INT *m, const CBLAS_INT *k, const float *alpha, const char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *x, const float *beta, float *y); void mkl_scsrmv(const char *transa, const CBLAS_INT *m, const CBLAS_INT *k, const float *alpha, const char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *x, const float *beta, float *y); void mkl_dcscmv(const char *transa, const CBLAS_INT *m, const CBLAS_INT *k, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *x, const double *beta, double *y); void mkl_dcsrmv(const char *transa, const CBLAS_INT *m, const CBLAS_INT *k, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *x, const double *beta, double *y); void mkl_ccscmv(const char *transa, const CBLAS_INT *m, const CBLAS_INT *k, const float *alpha, const char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *x, const float *beta, float *y); void mkl_ccsrmv(const char *transa, const CBLAS_INT *m, const CBLAS_INT *k, const float *alpha, const char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *x, const float *beta, float *y); void mkl_zcscmv(const char *transa, const CBLAS_INT *m, const CBLAS_INT *k, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *x, const double *beta, double *y); void mkl_zcsrmv(const char *transa, const CBLAS_INT *m, const CBLAS_INT *k, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *x, const double *beta, double *y); // sv void mkl_scsrsv(const char *transa, const CBLAS_INT *m, const float *alpha, const char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *x, float *y); void mkl_scscsv(const char *transa, const CBLAS_INT *m, const float *alpha, const char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *x, float *y); void mkl_dcsrsv(const char *transa, const CBLAS_INT *m, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *x, double *y); void mkl_dcscsv(const char *transa, const CBLAS_INT *m, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *x, double *y); void mkl_ccsrsv(const char *transa, const CBLAS_INT *m, const float *alpha, const char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *x, float *y); void mkl_ccscsv(const char *transa, const CBLAS_INT *m, const float *alpha, const char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *x, float *y); void mkl_zcsrsv(const char *transa, const CBLAS_INT *m, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *x, double *y); void mkl_zcscsv(const char *transa, const CBLAS_INT *m, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *x, double *y); // Level 3 // mm void mkl_scscmm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const CBLAS_INT *k, const float *alpha, char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *b, CBLAS_INT *ldb, const float *beta, const float *c, CBLAS_INT *ldc); void mkl_scsrmm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const CBLAS_INT *k, const float *alpha, const char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *b, const CBLAS_INT *ldb, const float *beta, float *c, const CBLAS_INT *ldc); void mkl_dcscmm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const CBLAS_INT *k, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *b, const CBLAS_INT *ldb, const double *beta, double *c, const CBLAS_INT *ldc); void mkl_dcsrmm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const CBLAS_INT *k, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *b, const CBLAS_INT *ldb, const double *beta, double *c, const CBLAS_INT *ldc); void mkl_ccscmm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const CBLAS_INT *k, const float *alpha, const char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *b, const CBLAS_INT *ldb, const float *beta, float *c, const CBLAS_INT *ldc); void mkl_ccsrmm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const CBLAS_INT *k, const float *alpha, const char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *b, const CBLAS_INT *ldb, const float *beta, float *c, const CBLAS_INT *ldc); void mkl_zcscmm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const CBLAS_INT *k, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *b, const CBLAS_INT *ldb, const double *beta, double *c, const CBLAS_INT *ldc); void mkl_zcsrmm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const CBLAS_INT *k, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *b, const CBLAS_INT *ldb, const double *beta, double *c, const CBLAS_INT *ldc); // sm void mkl_scsrsm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const float *alpha, const char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *b, const CBLAS_INT *ldb, float *c, const CBLAS_INT *ldc); void mkl_scscsm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const float *alpha, const char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *b, const CBLAS_INT *ldb, float *c, const CBLAS_INT *ldc); void mkl_dcsrsm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *b, const CBLAS_INT *ldb, double *c, const CBLAS_INT *ldc); void mkl_dcscsm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *b, const CBLAS_INT *ldb, double *c, const CBLAS_INT *ldc); void mkl_ccsrsm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const float *alpha, const char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *b, const CBLAS_INT *ldb, float *c, const CBLAS_INT *ldc); void mkl_ccscsm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const float *alpha, const char *matdescra, const float *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const float *b, const CBLAS_INT *ldb, float *c, const CBLAS_INT *ldc); void mkl_zcsrsm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *b, const CBLAS_INT *ldb, double *c, const CBLAS_INT *ldc); void mkl_zcscsm(const char *transa, const CBLAS_INT *m, const CBLAS_INT *n, const double *alpha, const char *matdescra, const double *val, const CBLAS_INT *indx, const CBLAS_INT *pntrb, const CBLAS_INT *pntre, const double *b, const CBLAS_INT *ldb, double *c, const CBLAS_INT *ldc); #ifdef __cplusplus } // extern "C" #endif #endif // CXXBLAS_DRIVERS_SPARSEBLAS_H xtensor-blas-0.21.0/include/xflens/cxxblas/drivers/veclib.h000066400000000000000000000041571456314707100237130ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_DRIVERS_VECLIB_H #define CXXBLAS_DRIVERS_VECLIB_H 1 # define HAVE_CBLAS 1 # define CBLAS_INT int # define BLAS_IMPL "VecLib (ATLAS)" # ifndef CBLAS_INDEX # define CBLAS_INDEX int # endif // CBLAS_INDEX // BLAS extensions #ifndef HAVE_CBLAS_AXPBY # define HAVE_CBLAS_AXPBY # define BLAS_EXT(x) catlas_##x #endif // VECLIB includes LAPACK interface #ifndef USE_CXXLAPACK # define USE_CXXLAPACK 1 #endif #endif // CXXBLAS_DRIVERS_VECLIB_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1/000077500000000000000000000000001456314707100220015ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxblas/level1/asum.doc000066400000000000000000000127441456314707100234450ustar00rootroot00000000000000===================== CXXBLAS Level 1: asum [TOC] ===================== *asum* (defined in namespace `cxxblas`) computes the sum of the absolute values of elements in a vector, i.e. $\sum\limits_{i} |x_i|$. Generic Implementation ====================== *--[CODEREF]----------------------------------------------------------------* | | | template | | void | | asum(IndexType n, const X *x, IndexType incX, T &absSum); | | | *---------------------------------------------------------------------------* [c:@N@cxxblas@FT@>3#T#T#Tasum#t0.0#*1t0.1#S0_#&t0.2] [#templatetypenameIndexType,typenameX,typenameTvoid] n `(input)` + Specifies the number of elements in vector $x$. x `(input)` + Pointer to the first element of vector $x$. incX `(input)` + Specifies the increment for indexing vector $x$. absSum `(output)` + Contains the sum of magnitudes of real and imaginary parts of all elements of the vector. CBLAS Implementation ==================== If a __CBLAS__ implementations like __ATLAS__, __GotoBLAS__, ... is available then the following *optimized variants* are provided. Single Precision ---------------- *--[CODEREF]----------------------------------------------------------------* | | | template | | typename If::isBlasCompatibleInteger | | asum(IndexType n, const float *x, IndexType incX, | | float &absSum); | | | *---------------------------------------------------------------------------* [c:@N@cxxblas@FT@>1#Tasum#t0.0#*1f#S0_#&f#templatet] [ypenameIndexTypetypenameIfIndexTypeisBlasCompatibl] [eInteger ] Double Precision ---------------- *--[CODEREF]----------------------------------------------------------------* | | | template | | typename If::isBlasCompatibleInteger | | asum(IndexType n, const double *x, IndexType incX, | | double &absSum); | | | *---------------------------------------------------------------------------* [c:@N@cxxblas@FT@>1#Tasum#t0.0#*1d#S0_#&d#templatet] [ypenameIndexTypetypenameIfIndexTypeisBlasCompatibl] [eInteger ] Complex Single Precision ------------------------ *--[CODEREF]----------------------------------------------------------------* | | | template | | typename If::isBlasCompatibleInteger | | asum(IndexType n, const ComplexFloat *x, IndexType incX, | | float &absSum); | | | *---------------------------------------------------------------------------* [c:@N@cxxblas@FT@>1#Tasum#t0.0#*1$@N@std@N@__1@C@co] [mplex>#f#S0_#&f#templatetypenameIndexTypetypenameI] [fIndexTypeisBlasCompatibleInteger ] Complex Double Precision ------------------------ *--[CODEREF]----------------------------------------------------------------* | | | template | | typename If::isBlasCompatibleInteger | | asum(IndexType n, const ComplexDouble *x, IndexType incX, | | double &absSum); | | | *---------------------------------------------------------------------------* [c:@N@cxxblas@FT@>1#Tasum#t0.0#*1$@N@std@N@__1@C@co] [mplex>#d#S0_#&d#templatetypenameIndexTypetypenameI] [fIndexTypeisBlasCompatibleInteger ] :links: __CBLAS__ -> http://www.netlib.org/blas/ __ATLAS__ -> http://math-atlas.sourceforge.net __GotoBLAS__ -> http://www.tacc.utexas.edu/tacc-projects/gotoblas2 xtensor-blas-0.21.0/include/xflens/cxxblas/level1/asum.h000066400000000000000000000053201456314707100231170ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_ASUM_H #define CXXBLAS_LEVEL1_ASUM_H 1 #include "xflens/cxxblas/typedefs.h" #include "xflens/cxxblas/drivers/drivers.h" #define HAVE_CXXBLAS_ASUM 1 namespace cxxblas { template void asum(IndexType n, const X *x, IndexType incX, T &absSum); #ifdef HAVE_CBLAS // sasum template typename If::isBlasCompatibleInteger asum(IndexType n, const float *x, IndexType incX, float &absSum); // dasum template typename If::isBlasCompatibleInteger asum(IndexType n, const double *x, IndexType incX, double &absSum); // scasum template typename If::isBlasCompatibleInteger asum(IndexType n, const ComplexFloat *x, IndexType incX, float &absSum); // dzasum template typename If::isBlasCompatibleInteger asum(IndexType n, const ComplexDouble *x, IndexType incX, double &absSum); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_ASUM_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1/asum.tcc000066400000000000000000000066671456314707100234600ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_ASUM_TCC #define CXXBLAS_LEVEL1_ASUM_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void asum_generic(IndexType n, const X *x, IndexType incX, T &absSum) { CXXBLAS_DEBUG_OUT("asum_generic"); using std::abs; absSum = 0; for (IndexType i=0; i void asum(IndexType n, const X *x, IndexType incX, T &absSum) { if (incX<0) { x -= incX*(n-1); } asum_generic(n, x, incX, absSum); } #ifdef HAVE_CBLAS // sasum template typename If::isBlasCompatibleInteger asum(IndexType n, const float *x, IndexType incX, float &absSum) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_sasum"); absSum = cblas_sasum(n, x, incX); } // dasum template typename If::isBlasCompatibleInteger asum(IndexType n, const double *x, IndexType incX, double &absSum) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dasum"); absSum = cblas_dasum(n, x, incX); } // scasum template typename If::isBlasCompatibleInteger asum(IndexType n, const ComplexFloat *x, IndexType incX, float &absSum) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_scasum"); absSum = cblas_scasum(n, reinterpret_cast(x), incX); } // dzasum template typename If::isBlasCompatibleInteger asum(IndexType n, const ComplexDouble *x, IndexType incX, double &absSum) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dzasum"); absSum = cblas_dzasum(n, reinterpret_cast(x), incX); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_ASUM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1/axpy.doc000066400000000000000000000142341456314707100234550ustar00rootroot00000000000000===================== CXXBLAS Level 1: axpy [TOC] ===================== *axpy* (defined in namespace `cxxblas`) computes $y \leftarrow y +\alpha x$ where $x, y$ are vectors and $\alpha$ is a constant scalar. Generic Implementation ====================== *--[CODEREF]----------------------------------------------------------------* | | | template | | void | | axpy(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, | | Y *y, IndexType incY); | | | *---------------------------------------------------------------------------* [c:@N@cxxblas@FT@>4#T#T#T#Taxpy#t0.0#&1t0.1#*1t0.2#] [S0_#*t0.3#S0_#templatetypenameIndexType,typenameAL] [PHA,typenameX,typenameYvoid ] n `(input)` + Specifies the number of elements in vector $x$ and $y$. alpha `(input)` + Scaling factor for the values in $x$. x `(input)` + Pointer to the first element of vector $x$. incX `(input)` + Specifies the increment for indexing vector $x$. y `(input/output)` + Pointer to the first element of vector $y$. incY `(input)` + Specifies the increment for indexing vector $y$. CBLAS Implementation ==================== If a __CBLAS__ implementations like __ATLAS__, __GotoBLAS__, ... is available then the following *optimized variants* are provided. Single Precision ---------------- *--[CODEREF]----------------------------------------------------------------* | | | template | | typename If::isBlasCompatibleInteger | | axpy(IndexType n, const float &alpha, | | const float *x, IndexType incX, | | float *y, IndexType incY); | | | *---------------------------------------------------------------------------* [c:@N@cxxblas@FT@>1#Taxpy#t0.0#&1f#*1f#S0_#*f#S0_#t] [emplatetypenameIndexTypetypenameIfIndexTypeisBlasC] [ompatibleInteger ] Double Precision ---------------- *--[CODEREF]----------------------------------------------------------------* | | | template | | typename If::isBlasCompatibleInteger | | axpy(IndexType n, const double &alpha, | | const double *x, IndexType incX, | | double *y, IndexType incY); | | | *---------------------------------------------------------------------------* [c:@N@cxxblas@FT@>1#Taxpy#t0.0#&1d#*1d#S0_#*d#S0_#t] [emplatetypenameIndexTypetypenameIfIndexTypeisBlasC] [ompatibleInteger ] Complex Single Precision ------------------------ *--[CODEREF]----------------------------------------------------------------* | | | template | | typename If::isBlasCompatibleInteger | | axpy(IndexType n, const ComplexFloat &alpha, | | const ComplexFloat *x, IndexType incX, | | ComplexFloat *y, IndexType incY); | | | *---------------------------------------------------------------------------* [c:@N@cxxblas@FT@>1#Taxpy#t0.0#&1$@N@std@N@__1@C@co] [mplex>#f#*1S2_#S0_#*S2_#S0_#templatetypenameIndexT] [ypetypenameIfIndexTypeisBlasCompatibleInteger ] Complex Double Precision ------------------------ *--[CODEREF]----------------------------------------------------------------* | | | template | | typename If::isBlasCompatibleInteger | | axpy(IndexType n, const ComplexDouble &alpha, | | const ComplexDouble *x, IndexType incX, | | ComplexDouble *y, IndexType incY); | | | *---------------------------------------------------------------------------* [c:@N@cxxblas@FT@>1#Taxpy#t0.0#&1$@N@std@N@__1@C@co] [mplex>#d#*1S2_#S0_#*S2_#S0_#templatetypenameIndexT] [ypetypenameIfIndexTypeisBlasCompatibleInteger ] :links: __CBLAS__ -> http://www.netlib.org/blas/ __ATLAS__ -> http://math-atlas.sourceforge.net __GotoBLAS__ -> http://www.tacc.utexas.edu/tacc-projects/gotoblas2 xtensor-blas-0.21.0/include/xflens/cxxblas/level1/axpy.h000066400000000000000000000057041456314707100231410ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_AXPY_H #define CXXBLAS_LEVEL1_AXPY_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_AXPY 1 namespace cxxblas { template void axpy(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, Y *y, IndexType incY); #ifdef HAVE_CBLAS // saxpy template typename If::isBlasCompatibleInteger axpy(IndexType n, const float &alpha, const float *x, IndexType incX, float *y, IndexType incY); // daxpy template typename If::isBlasCompatibleInteger axpy(IndexType n, const double &alpha, const double *x, IndexType incX, double *y, IndexType incY); // caxpy template typename If::isBlasCompatibleInteger axpy(IndexType n, const ComplexFloat &alpha, const ComplexFloat *x, IndexType incX, ComplexFloat *y, IndexType incY); // zaxpy template typename If::isBlasCompatibleInteger axpy(IndexType n, const ComplexDouble &alpha, const ComplexDouble *x, IndexType incX, ComplexDouble *y, IndexType incY); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_AXPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1/axpy.tcc000066400000000000000000000077031456314707100234640ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_AXPY_TCC #define CXXBLAS_LEVEL1_AXPY_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void axpy_generic(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, Y *y, IndexType incY) { CXXBLAS_DEBUG_OUT("axpy_generic"); for (IndexType i=0, iX=0, iY=0; i void axpy(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, Y *y, IndexType incY) { if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } axpy_generic(n, alpha, x, incX, y, incY); } #ifdef HAVE_CBLAS // saxpy template typename If::isBlasCompatibleInteger axpy(IndexType n, const float &alpha, const float *x, IndexType incX, float *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_saxpy"); cblas_saxpy(n, alpha, x, incX, y, incY); } // daxpy template typename If::isBlasCompatibleInteger axpy(IndexType n, const double &alpha, const double *x, IndexType incX, double *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_daxpy"); cblas_daxpy(n, alpha, x, incX, y, incY); } // caxpy template typename If::isBlasCompatibleInteger axpy(IndexType n, const ComplexFloat &alpha, const ComplexFloat *x, IndexType incX, ComplexFloat *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_caxpy"); cblas_caxpy(n, reinterpret_cast(&alpha), reinterpret_cast(x), incX, reinterpret_cast(y), incY); } // zaxpy template typename If::isBlasCompatibleInteger axpy(IndexType n, const ComplexDouble &alpha, const ComplexDouble *x, IndexType incX, ComplexDouble *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zaxpy"); cblas_zaxpy(n, reinterpret_cast(&alpha), reinterpret_cast(x), incX, reinterpret_cast(y), incY); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_AXPY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1/copy.doc000066400000000000000000000137061456314707100234510ustar00rootroot00000000000000===================== CXXBLAS Level 1: axpy [TOC] ===================== *copy* (defined in namespace `cxxblas`) copies a vector $x$ to a vector $y$, i.e. performs the operation $y \leftarrow x$. Generic Implementation ====================== *--[CODEREF]-----------------------------------------------------------------* | | | template | | void | | copy(IndexType n, const X *x, IndexType incX, Y *y, IndexType incY); | | | *----------------------------------------------------------------------------* [c:@N@cxxblas@FT@>3#T#T#Tcopy#t0.0#*1t0.1#S0_#*t0.2] [#S0_#templatetypenameIndexType,typenameX,typenameY] [void ] n `(input)` + Specifies the number of elements in vector $x$ and $y$. x `(input)` + Pointer to the first element of vector $x$. incX `(input)` + Specifies the increment for indexing vector $x$. y `(output)` + Pointer to the first element of vector $y$. incY `(input)` + Specifies the increment for indexing vector $y$. CBLAS Implementation ==================== If a __CBLAS__ implementations like __ATLAS__, __GotoBLAS__, ... is available then the following *optimized variants* are provided. Single Precision ---------------- *--[CODEREF]----------------------------------------------------------------* | | | template | | typename If::isBlasCompatibleInteger | | copy(IndexType n, | | const float *x, IndexType incX, | | float *y, IndexType incY); | | | *---------------------------------------------------------------------------* [c:@N@cxxblas@FT@>1#Tcopy#t0.0#*1f#S0_#*f#S0_#templ] [atetypenameIndexTypetypenameIfIndexTypeisBlasCompa] [tibleInteger ] Double Precision ---------------- *--[CODEREF]----------------------------------------------------------------* | | | template | | typename If::isBlasCompatibleInteger | | copy(IndexType n, | | const double *x, IndexType incX, | | double *y, IndexType incY); | | | *---------------------------------------------------------------------------* [c:@N@cxxblas@FT@>1#Tcopy#t0.0#*1d#S0_#*d#S0_#templ] [atetypenameIndexTypetypenameIfIndexTypeisBlasCompa] [tibleInteger ] Complex Single Precision ------------------------ *--[CODEREF]----------------------------------------------------------------* | | | template | | typename If::isBlasCompatibleInteger | | copy(IndexType n, | | const ComplexFloat *x, IndexType incX, | | ComplexFloat *y, IndexType incY); | | | *---------------------------------------------------------------------------* [c:@N@cxxblas@FT@>1#Tcopy#t0.0#*1$@N@std@N@__1@C@co] [mplex>#f#S0_#*S2_#S0_#templatetypenameIndexTypetyp] [enameIfIndexTypeisBlasCompatibleInteger ] Complex Double Precision ------------------------ *--[CODEREF]----------------------------------------------------------------* | | | template | | typename If::isBlasCompatibleInteger | | copy(IndexType n, | | const ComplexDouble *x, IndexType incX, | | ComplexDouble *y, IndexType incY); | | | *---------------------------------------------------------------------------* [c:@N@cxxblas@FT@>1#Tcopy#t0.0#*1$@N@std@N@__1@C@co] [mplex>#d#S0_#*S2_#S0_#templatetypenameIndexTypetyp] [enameIfIndexTypeisBlasCompatibleInteger ] :links: __CBLAS__ -> http://www.netlib.org/blas/ __ATLAS__ -> http://math-atlas.sourceforge.net __GotoBLAS__ -> http://www.tacc.utexas.edu/tacc-projects/gotoblas2 xtensor-blas-0.21.0/include/xflens/cxxblas/level1/copy.h000066400000000000000000000054701456314707100231320ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_COPY_H #define CXXBLAS_LEVEL1_COPY_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_COPY 1 namespace cxxblas { template void copy(IndexType n, const X *x, IndexType incX, Y *y, IndexType incY); #ifdef HAVE_CBLAS // scopy template typename If::isBlasCompatibleInteger copy(IndexType n, const float *x, IndexType incX, float *y, IndexType incY); // dcopy template typename If::isBlasCompatibleInteger copy(IndexType n, const double *x, IndexType incX, double *y, IndexType incY); // ccopy template typename If::isBlasCompatibleInteger copy(IndexType n, const ComplexFloat *x, IndexType incX, ComplexFloat *y, IndexType incY); // zcopy template typename If::isBlasCompatibleInteger copy(IndexType n, const ComplexDouble *x, IndexType incX, ComplexDouble *y, IndexType incY); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_COPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1/copy.tcc000066400000000000000000000071201456314707100234460ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_COPY_TCC #define CXXBLAS_LEVEL1_COPY_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void copy_generic(IndexType n, const X *x, IndexType incX, Y *y, IndexType incY) { CXXBLAS_DEBUG_OUT("copy_generic"); for (IndexType i=0, iX=0, iY=0; i void copy(IndexType n, const X *x, IndexType incX, Y *y, IndexType incY) { if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } copy_generic(n, x, incX, y, incY); } #ifdef HAVE_CBLAS // scopy template typename If::isBlasCompatibleInteger copy(IndexType n, const float *x, IndexType incX, float *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_scopy"); cblas_scopy(n, x, incX, y, incY); } // dcopy template typename If::isBlasCompatibleInteger copy(IndexType n, const double *x, IndexType incX, double *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dcopy"); cblas_dcopy(n, x, incX, y, incY); } // ccopy template typename If::isBlasCompatibleInteger copy(IndexType n, const ComplexFloat *x, IndexType incX, ComplexFloat *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ccopy"); cblas_ccopy(n, reinterpret_cast(x), incX, reinterpret_cast(y), incY); } // zcopy template typename If::isBlasCompatibleInteger copy(IndexType n, const ComplexDouble *x, IndexType incX, ComplexDouble *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zcopy"); cblas_zcopy(n, reinterpret_cast(x), incX, reinterpret_cast(y), incY); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_COPY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1/dot.h000066400000000000000000000101011456314707100227310ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_DOT_H #define CXXBLAS_LEVEL1_DOT_H 1 #include "xflens/cxxblas/cxxblas.h" #define HAVE_CXXBLAS_DOT 1 #define HAVE_CXXBLAS_DOTU 1 namespace cxxblas { template void dotu(IndexType n, const X *x, IndexType incX, const Y *y, IndexType incY, Result &result); template void dot(IndexType n, const X *x, IndexType incX, const Y *y, IndexType incY, Result &result); #ifdef HAVE_CBLAS // sdsdot template typename If::isBlasCompatibleInteger sdot(IndexType n, float alpha, const float *x, IndexType incX, const float *y, IndexType incY, float &result); // dsdot template typename If::isBlasCompatibleInteger dot(IndexType n, const float *x, IndexType incX, const float *y, IndexType incY, double &result); // sdot template typename If::isBlasCompatibleInteger dot(IndexType n, const float *x, IndexType incX, const float *y, IndexType incY, float &result); // ddot template typename If::isBlasCompatibleInteger dot(IndexType n, const double *x, IndexType incX, const double *y, IndexType incY, double &result); // cdotu_sub template typename If::isBlasCompatibleInteger dotu(IndexType n, const ComplexFloat *x, IndexType incX, const ComplexFloat *y, IndexType incY, ComplexFloat &result); // cdotc_sub template typename If::isBlasCompatibleInteger dot(IndexType n, const ComplexFloat *x, IndexType incX, const ComplexFloat *y, IndexType incY, ComplexFloat &result); // zdotu_sub template typename If::isBlasCompatibleInteger dotu(IndexType n, const ComplexDouble *x, IndexType incX, const ComplexDouble *y, IndexType incY, ComplexDouble &result); // zdotc_sub template typename If::isBlasCompatibleInteger dot(IndexType n, const ComplexDouble *x, IndexType incX, const ComplexDouble *y, IndexType incY, ComplexDouble &result); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_DOT_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1/dot.tcc000066400000000000000000000146151456314707100232710ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_DOT_TCC #define CXXBLAS_LEVEL1_DOT_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void dotu_generic(IndexType n, const X *x, IndexType incX, const Y *y, IndexType incY, Result &result) { CXXBLAS_DEBUG_OUT("dotu_generic"); result = Result(0); for (IndexType i=0, iX=0, iY=0; i void dot_generic(IndexType n, const X *x, IndexType incX, const Y *y, IndexType incY, Result &result) { CXXBLAS_DEBUG_OUT("dot_generic"); result = Result(0); for (IndexType i=0, iX=0, iY=0; i void dotu(IndexType n, const X *x, IndexType incX, const Y *y, IndexType incY, Result &result) { if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } dotu_generic(n, x, incX, y, incY, result); } template void dot(IndexType n, const X *x, IndexType incX, const Y *y, IndexType incY, Result &result) { if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } dot_generic(n, x, incX, y, incY, result); } #ifdef HAVE_CBLAS // sdsdot template typename If::isBlasCompatibleInteger sdot(IndexType n, float alpha, const float *x, IndexType incX, const float *y, IndexType incY, float &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_sdsdot"); result = cblas_sdsdot(n, alpha, x, incX, y, incY); } // dsdot template typename If::isBlasCompatibleInteger dot(IndexType n, const float *x, IndexType incX, const float *y, IndexType incY, double &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dsdot"); result = cblas_dsdot(n, x, incX, y, incY); } // sdot template typename If::isBlasCompatibleInteger dot(IndexType n, const float *x, IndexType incX, const float *y, IndexType incY, float &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_sdot"); result = cblas_sdot(n, x, incX, y, incY); } // ddot template typename If::isBlasCompatibleInteger dot(IndexType n, const double *x, IndexType incX, const double *y, IndexType incY, double &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ddot"); result = cblas_ddot(n, x, incX, y, incY); } // cdotu_sub template typename If::isBlasCompatibleInteger dotu(IndexType n, const ComplexFloat *x, IndexType incX, const ComplexFloat *y, IndexType incY, ComplexFloat &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cdotu_sub"); cblas_cdotu_sub(n, reinterpret_cast(x), incX, reinterpret_cast(y), incY, reinterpret_cast(&result)); } // cdotc_sub template typename If::isBlasCompatibleInteger dot(IndexType n, const ComplexFloat *x, IndexType incX, const ComplexFloat *y, IndexType incY, ComplexFloat &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cdotc_sub"); cblas_cdotc_sub(n, reinterpret_cast(x), incX, reinterpret_cast(y), incY, reinterpret_cast(&result)); } // zdotu_sub template typename If::isBlasCompatibleInteger dotu(IndexType n, const ComplexDouble *x, IndexType incX, const ComplexDouble *y, IndexType incY, ComplexDouble &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zdotu_sub"); cblas_zdotu_sub(n, reinterpret_cast(x), incX, reinterpret_cast(y), incY, reinterpret_cast(&result)); } // zdotc_sub template typename If::isBlasCompatibleInteger dot(IndexType n, const ComplexDouble *x, IndexType incX, const ComplexDouble *y, IndexType incY, ComplexDouble &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zdotc_sub"); cblas_zdotc_sub(n, reinterpret_cast(x), incX, reinterpret_cast(y), incY, reinterpret_cast(&result)); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_DOT_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1/iamax.h000066400000000000000000000054261456314707100232600ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_IAMAX_H #define CXXBLAS_LEVEL1_IAMAX_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_IAMAX 1 namespace cxxblas { template void iamax(IndexType n, const X *x, IndexType incX, IndexType &i); template IndexType iamax(IndexType n, const X *x, IndexType incX); #ifdef HAVE_CBLAS // isamax template typename If::isBlasCompatibleInteger iamax(IndexType n, const float *x, IndexType incX, IndexType &i); // idamax template typename If::isBlasCompatibleInteger iamax(IndexType n, const double *x, IndexType incX, IndexType &i); // icamax template typename If::isBlasCompatibleInteger iamax(IndexType n, const ComplexFloat *x, IndexType incX, IndexType &i); // izamax template typename If::isBlasCompatibleInteger iamax(IndexType n, const ComplexDouble *x, IndexType incX, IndexType &i); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_IAMAX_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1/iamax.tcc000066400000000000000000000103051456314707100235720ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_IAMAX_TCC #define CXXBLAS_LEVEL1_IAMAX_TCC 1 #include #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void iamax_generic(IndexType n, const X *x, IndexType incX, IndexType &iAbsMaxX) { CXXBLAS_DEBUG_OUT("iamax_generic"); using std::abs; iAbsMaxX = 0; X absMaxX = abs(x[iAbsMaxX]); for (IndexType i=0, iX=0; iabsMaxX) { iAbsMaxX = i; absMaxX = abs(x[iX]); } } } template void iamax_generic(IndexType n, const std::complex *x, IndexType incX, IndexType &iAbsMaxX) { CXXBLAS_DEBUG_OUT("iamax_generic"); using std::abs; iAbsMaxX = 0; X absMaxX = abs1(x[iAbsMaxX]); for (IndexType i=0, iX=0; iabsMaxX) { iAbsMaxX = i; absMaxX = abs1(x[iX]); } } } template void iamax(IndexType n, const X *x, IndexType incX, IndexType &iAbsMaxX) { if (incX<0) { x -= incX*(n-1); } if (n<=0) { iAbsMaxX = -1; return; } iamax_generic(n, x, incX, iAbsMaxX); } template IndexType iamax(IndexType n, const X *x, IndexType incX) { IndexType iAbsMaxX = IndexType(0); iamax(n, x, incX, iAbsMaxX); return iAbsMaxX; } #ifdef HAVE_CBLAS // isamax template typename If::isBlasCompatibleInteger iamax(IndexType n, const float *x, IndexType incX, IndexType &i) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_isamax"); i = cblas_isamax(n, x, incX); } // idamax template typename If::isBlasCompatibleInteger iamax(IndexType n, const double *x, IndexType incX, IndexType &i) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_idamax"); i = cblas_idamax(n, x, incX); } // icamax template typename If::isBlasCompatibleInteger iamax(IndexType n, const ComplexFloat *x, IndexType incX, IndexType &i) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_icamax"); i = cblas_icamax(n, reinterpret_cast(x), incX); } // izamax template typename If::isBlasCompatibleInteger iamax(IndexType n, const ComplexDouble *x, IndexType incX, IndexType &i) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_izamax"); i = cblas_izamax(n, reinterpret_cast(x), incX); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_IAMAX_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1/level1.h000066400000000000000000000041441456314707100233450ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_LEVEL1_H #define CXXBLAS_LEVEL1_LEVEL1_H 1 #include "xflens/cxxblas/level1/asum.h" #include "xflens/cxxblas/level1/axpy.h" #include "xflens/cxxblas/level1/copy.h" #include "xflens/cxxblas/level1/dot.h" #include "xflens/cxxblas/level1/iamax.h" #include "xflens/cxxblas/level1/nrm2.h" #include "xflens/cxxblas/level1/rot.h" #include "xflens/cxxblas/level1/rotm.h" #include "xflens/cxxblas/level1/scal.h" #include "xflens/cxxblas/level1/swap.h" #endif // CXXBLAS_LEVEL1_LEVEL1_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1/level1.tcc000066400000000000000000000041761456314707100236740ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_LEVEL1_TCC #define CXXBLAS_LEVEL1_LEVEL1_TCC 1 #include "xflens/cxxblas/level1/asum.tcc" #include "xflens/cxxblas/level1/axpy.tcc" #include "xflens/cxxblas/level1/copy.tcc" #include "xflens/cxxblas/level1/dot.tcc" #include "xflens/cxxblas/level1/iamax.tcc" #include "xflens/cxxblas/level1/nrm2.tcc" #include "xflens/cxxblas/level1/rot.tcc" #include "xflens/cxxblas/level1/rotm.tcc" #include "xflens/cxxblas/level1/scal.tcc" #include "xflens/cxxblas/level1/swap.tcc" #endif // CXXBLAS_LEVEL1_LEVEL1_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1/nrm2.h000066400000000000000000000053061456314707100230340ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_NRM2_H #define CXXBLAS_LEVEL1_NRM2_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_NRM2 1 namespace cxxblas { template void nrm2(IndexType n, const X *x, IndexType incX, T &norm); #ifdef HAVE_CBLAS // snrm2 template typename If::isBlasCompatibleInteger nrm2(IndexType n, const float *x, IndexType incX, float &norm); // dnrm2 template typename If::isBlasCompatibleInteger nrm2(IndexType n, const double *x, IndexType incX, double &norm); // scnrm2 template typename If::isBlasCompatibleInteger nrm2(IndexType n, const ComplexFloat *x, IndexType incX, float &norm); // dznrm2 template typename If::isBlasCompatibleInteger nrm2(IndexType n, const ComplexDouble *x, IndexType incX, double &norm); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_NRM2_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1/nrm2.tcc000066400000000000000000000125731456314707100233620ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_NRM2_TCC #define CXXBLAS_LEVEL1_NRM2_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void nrm2_generic(IndexType n, const X *x, IndexType incX, T &norm) { CXXBLAS_DEBUG_OUT("nrm2_generic"); using std::abs; using cxxblas::pow; using std::sqrt; const T Zero(0), One(1); if (n<1) { norm = Zero; } else if (n==1) { norm = abs(*x); } else { T scale = 0; T ssq = 1; // The following loop is equivalent to this call to the LAPACK // auxiliary routine: // CALL DLASSQ( N, X, INCX, SCALE, SSQ ) // for (IndexType i=0, iX=0; i void nrm2_generic(IndexType n, const std::complex *x, IndexType incX, T &norm) { CXXBLAS_DEBUG_OUT("nrm2_generic"); using std::abs; using std::imag; using std::pow; using std::real; using std::sqrt; const T Zero(0), One(1); if (n<1) { norm = Zero; } else if (n==1) { norm = abs(*x); } else { T scale = 0; T ssq = 1; // The following loop is equivalent to this call to the LAPACK // auxiliary routine: // CALL DLASSQ( N, X, INCX, SCALE, SSQ ) // for (IndexType i=0, iX=0; i(pow(scale/absXi, 2)); scale = absXi; } else { ssq += static_cast(pow(absXi/scale, 2)); } } if (imag(x[iX]) != Zero) { T absXi = abs(imag(x[iX])); if (scale(ssq * pow(scale/absXi, 2)); scale = absXi; } else { ssq += static_cast(pow(absXi/scale, 2)); } } } norm = scale*sqrt(ssq); } } template void nrm2(IndexType n, const X *x, IndexType incX, T &norm) { if (incX<0) { x -= incX*(n-1); } nrm2_generic(n, x, incX, norm); } #ifdef HAVE_CBLAS // snrm2 template typename If::isBlasCompatibleInteger nrm2(IndexType n, const float *x, IndexType incX, float &norm) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_snrm2"); norm = cblas_snrm2(n, x, incX); } // dnrm2 template typename If::isBlasCompatibleInteger nrm2(IndexType n, const double *x, IndexType incX, double &norm) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dnrm2"); norm = cblas_dnrm2(n, x, incX); } // scnrm2 template typename If::isBlasCompatibleInteger nrm2(IndexType n, const ComplexFloat *x, IndexType incX, float &norm) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_scnrm2"); norm = cblas_scnrm2(n, reinterpret_cast(x), incX); } // dznrm2 template typename If::isBlasCompatibleInteger nrm2(IndexType n, const ComplexDouble *x, IndexType incX, double &norm) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dznrm2"); norm = cblas_dznrm2(n, reinterpret_cast(x), incX); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_NRM2_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1/rot.h000066400000000000000000000070031456314707100227560ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_ROT_H #define CXXBLAS_LEVEL1_ROT_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_ROT 1 #define HAVE_CXXBLAS_ROTG 1 namespace cxxblas { template void rot(IndexType n, X *x, IndexType incX, Y *y, IndexType incY, T c, T s); template void rotg(A &a, B &b, T &c, T &s); template void rotg(std::complex &a, std::complex &b, T &c, std::complex &s); /* * Note: The following variant of function rot is based on SUBROUTINE ZROT( N, CX, INCX, CY, INCY, C, S ) * * -- LAPACK auxiliary routine (version 3.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2006 */ template void rot(IndexType n, std::complex *x, IndexType incX, std::complex *y, IndexType incY, T c, const std::complex &s); #ifdef HAVE_CBLAS // srot template typename If::isBlasCompatibleInteger rot(IndexType n, float *x, IndexType incX, float *y, IndexType incY, float c, float s); // drot template typename If::isBlasCompatibleInteger rot(IndexType n, double *x, IndexType incX, double *y, IndexType incY, double c, double s); // srotg template typename RestrictTo::value, void>::Type rotg(T &a, T &b, T &c, T &s); // drotg template typename RestrictTo::value, void>::Type rotg(T &a, T &b, T &c, T &s); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_ROT_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1/rot.tcc000066400000000000000000000143671456314707100233130ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_ROT_TCC #define CXXBLAS_LEVEL1_ROT_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void rot_generic(IndexType n, X *x, IndexType incX, Y *y, IndexType incY, T c, T s) { CXXBLAS_DEBUG_OUT("rot_generic"); for (IndexType i=0, iX=0, iY=0; i void rot(IndexType n, X *x, IndexType incX, Y *y, IndexType incY, T c, T s) { if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } rot_generic(n, x, incX, y, incY, c, s); } template void rotg(A &a, B &b, T &c, T &s) { CXXBLAS_DEBUG_OUT("rotg (generic)"); using std::abs; using std::sqrt; A absA = abs(a); B absB = abs(b); T scale = absA + absB; T roe = (absA > absB) ? a : b; if (scale==0) { c = 1; s = 0; a = 0; b = 0; return; } A aScaled = absA / scale; B bScaled = absB / scale; T r = scale*sqrt(aScaled*aScaled + bScaled*bScaled); if (roe<0) { r = -r; } c = a / r; s = b / r; B z = 1; if (absA > absB) { z = s; } if ((absA < absB) && (c != 0)) { z = T(1)/c; } a = r; b = z; } template void rotg(std::complex &a, std::complex &b, T &c, std::complex &s) { using std::abs; using std::sqrt; using std::pow; std::complex alpha; T norm, scale; if (abs(a)==TA(0)) { c = 0; s = std::complex(1,0); a = b; } else { scale = abs(a) + abs(b); norm = scale*sqrt(pow(abs(a/scale),2) + pow(abs(b/scale),2)); alpha = a / abs(a); c = abs(a) / norm; s = alpha*conjugate(b)/norm; a = alpha*norm; } } /* * Note: The following variant of function rot is based on SUBROUTINE ZROT( N, CX, INCX, CY, INCY, C, S ) * * -- LAPACK auxiliary routine (version 3.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2006 */ template void rot_generic(IndexType n, std::complex *x, IndexType incX, std::complex *y, IndexType incY, T c, const std::complex &s) { using std::conj; typedef std::complex CT; if (incX != IndexType(1) || incY != IndexType(1)) { // // Code for unequal increments or equal increments not equal to 1 // for (IndexType i=0, iX=0, iY=0; i void rot(IndexType n, std::complex *x, IndexType incX, std::complex *y, IndexType incY, T c, const std::complex &s) { if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } rot_generic(n, x, incX, y, incY, c, s); } #ifdef HAVE_CBLAS // srot template typename If::isBlasCompatibleInteger rot(IndexType n, float *x, IndexType incX, float *y, IndexType incY, float c, float s) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_srot"); cblas_srot(n, x, incX, y, incY, c, s); } // drot template typename If::isBlasCompatibleInteger rot(IndexType n, double *x, IndexType incX, double *y, IndexType incY, double c, double s) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_drot"); cblas_drot(n, x, incX, y, incY, c, s); } // srotg template typename RestrictTo::value, void>::Type rotg(T &a, T &b, T &c, T &s) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_srotg"); cblas_srotg(&a, &b, &c, &s); } // drotg template typename RestrictTo::value, void>::Type rotg(T &a, T &b, T &c, T &s) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_drotg"); cblas_drotg(&a, &b, &c, &s); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_ROT_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1/rotm.h000066400000000000000000000052511456314707100231360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_ROTM_H #define CXXBLAS_LEVEL1_ROTM_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" namespace cxxblas { #ifdef HAVE_CBLAS // TODO: provide generic implementation of rotm, rotmg #define HAVE_CXXBLAS_ROTMG 1 #define HAVE_CXXBLAS_ROTM 1 // srotm template typename If::isBlasCompatibleInteger rotm(IndexType n, float *x, IndexType incX, float *y, IndexType incY, const float *p); // drotm template typename If::isBlasCompatibleInteger rotm(IndexType n, double *x, IndexType incX, double *y, IndexType incY, const double *p); // srotmg template typename RestrictTo::value, void>::Type rotmg(T &d1, T &d2, T &b1, T &b2, T *p); // drotmg template typename RestrictTo::value, void>::Type rotmg(T &d1, T &d2, T &b1, T &b2, T *p); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_ROTM_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1/rotm.tcc000066400000000000000000000055361456314707100234660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_ROTM_TCC #define CXXBLAS_LEVEL1_ROTM_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { #ifdef HAVE_CBLAS // srotm template typename If::isBlasCompatibleInteger rotm(IndexType n, float *x, IndexType incX, float *y, IndexType incY, const float *p) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_srotm"); cblas_srotm(n, x, incX, y, incY, p); } // drotm template typename If::isBlasCompatibleInteger rotm(IndexType n, double *x, IndexType incX, double *y, IndexType incY, const double *p) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_drotm"); cblas_drotm(n, x, incX, y, incY, p); } // srotmg template typename RestrictTo::value, void>::Type rotmg(T &d1, T &d2, T &b1, T &b2, T *p) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_srotmg"); cblas_srotmg(&d1, &d2, &b1, &b2, p); } // drotg template typename RestrictTo::value, void>::Type rotmg(T &d1, T &d2, T &b1, T &b2, T *p) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_drotmg"); cblas_drotmg(&d1, &d2, &b1, &b2, p); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_ROTM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1/scal.h000066400000000000000000000060061456314707100230760ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_SCAL_H #define CXXBLAS_LEVEL1_SCAL_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SCAL 1 namespace cxxblas { template void scal(IndexType n, const ALPHA &alpha, Y *y, IndexType incY); #ifdef HAVE_CBLAS // sscal template typename If::isBlasCompatibleInteger scal(IndexType n, float alpha, float *x, IndexType incX); // dscal template typename If::isBlasCompatibleInteger scal(IndexType n, double alpha, double *x, IndexType incX); // cscal template typename If::isBlasCompatibleInteger scal(IndexType n, const ComplexFloat &alpha, ComplexFloat *x, IndexType incX); // zscal template typename If::isBlasCompatibleInteger scal(IndexType n, const ComplexDouble &alpha, ComplexDouble *x, IndexType incX); // csscal template typename If::isBlasCompatibleInteger scal(IndexType n, float alpha, ComplexFloat *x, IndexType incX); // zdscal template typename If::isBlasCompatibleInteger scal(IndexType n, double alpha, ComplexDouble *x, IndexType incX); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_SCAL_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1/scal.tcc000066400000000000000000000110641456314707100234200ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_SCAL_TCC #define CXXBLAS_LEVEL1_SCAL_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void scal_generic(IndexType n, const ALPHA &alpha, Y *y, IndexType incY) { CXXBLAS_DEBUG_OUT("scal_generic"); for (IndexType i=0, iY=0; i void scal_init_generic(IndexType n, const ALPHA &alpha, Y *y, IndexType incY) { CXXBLAS_DEBUG_OUT("scal_init_generic"); if (alpha == ALPHA(0)) { for (IndexType i=0, iY=0; i void scal(IndexType n, const ALPHA &alpha, Y *y, IndexType incY) { if (incY<0) { y -= incY*(n-1); } scal_generic(n, alpha, y, incY); } template void scal_init(IndexType n, const ALPHA &alpha, Y *y, IndexType incY) { if (incY<0) { y -= incY*(n-1); } scal_init_generic(n, alpha, y, incY); } #ifdef HAVE_CBLAS // sscal template typename If::isBlasCompatibleInteger scal(IndexType n, float alpha, float *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_sscal"); cblas_sscal(n, alpha, x, incX); } // dscal template typename If::isBlasCompatibleInteger scal(IndexType n, double alpha, double *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dscal"); cblas_dscal(n, alpha, x, incX); } // cscal template typename If::isBlasCompatibleInteger scal(IndexType n, const ComplexFloat &alpha, ComplexFloat *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cscal"); cblas_cscal(n, reinterpret_cast(&alpha), reinterpret_cast(x), incX); } // zscal template typename If::isBlasCompatibleInteger scal(IndexType n, const ComplexDouble &alpha, ComplexDouble *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zscal"); cblas_zscal(n, reinterpret_cast(&alpha), reinterpret_cast(x), incX); } // csscal template typename If::isBlasCompatibleInteger scal(IndexType n, float alpha, ComplexFloat *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_csscal"); cblas_csscal(n, alpha, reinterpret_cast(x), incX); } // zdscal template typename If::isBlasCompatibleInteger scal(IndexType n, double alpha, ComplexDouble *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zdscal"); cblas_zdscal(n, alpha, reinterpret_cast(x), incX); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_SCAL_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1/swap.h000066400000000000000000000054311456314707100231270ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_SWAP_H #define CXXBLAS_LEVEL1_SWAP_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SWAP 1 namespace cxxblas { template void swap(IndexType n, X *x, IndexType incX, Y *y, IndexType incY); #ifdef HAVE_CBLAS // sswap template typename If::isBlasCompatibleInteger swap(IndexType n, float *x, IndexType incX, float *y, IndexType incY); // dswap template typename If::isBlasCompatibleInteger swap(IndexType n, double *x, IndexType incX, double *y, IndexType incY); // cswap template typename If::isBlasCompatibleInteger swap(IndexType n, ComplexFloat *x, IndexType incX, ComplexFloat *y, IndexType incY); // zswap template typename If::isBlasCompatibleInteger swap(IndexType n, ComplexDouble *x, IndexType incX, ComplexDouble *y, IndexType incY); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_SWAP_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1/swap.tcc000066400000000000000000000070631456314707100234540ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_SWAP_TCC #define CXXBLAS_LEVEL1_SWAP_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void swap_generic(IndexType n, X *x, IndexType incX, Y *y, IndexType incY) { CXXBLAS_DEBUG_OUT("swap_generic"); for (IndexType i=0; i void swap(IndexType n, X *x, IndexType incX, Y *y, IndexType incY) { if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } swap_generic(n, x, incX, y, incY); } #ifdef HAVE_CBLAS // sswap template typename If::isBlasCompatibleInteger swap(IndexType n, float *x, IndexType incX, float *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_sswap"); cblas_sswap(n, x, incX, y, incY); } // dswap template typename If::isBlasCompatibleInteger swap(IndexType n, double *x, IndexType incX, double *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dswap"); cblas_dswap(n, x, incX, y, incY); } // cswap template typename If::isBlasCompatibleInteger swap(IndexType n, ComplexFloat *x, IndexType incX, ComplexFloat *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cswap"); cblas_cswap(n, reinterpret_cast(x), incX, reinterpret_cast(y), incY); } // zswap template typename If::isBlasCompatibleInteger swap(IndexType n, ComplexDouble *x, IndexType incX, ComplexDouble *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zswap"); cblas_zswap(n, reinterpret_cast(x), incX, reinterpret_cast(y), incY); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1_SWAP_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/000077500000000000000000000000001456314707100241215ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/acxpby.h000066400000000000000000000041131456314707100255570ustar00rootroot00000000000000/* * Copyright (c) 2013, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_ACXPBY_H #define CXXBLAS_LEVEL1EXTENSIONS_ACXPBY_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_ACXPBY 1 namespace cxxblas { template void acxpby(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, const BETA &beta, Y *y, IndexType incY); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_ACXPBY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/acxpby.tcc000066400000000000000000000042541456314707100261070ustar00rootroot00000000000000/* * Copyright (c) 2013, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_ACXPBY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_ACXPBY_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void acxpby(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, const BETA &beta, Y *y, IndexType incY) { CXXBLAS_DEBUG_OUT("acxpby_generic"); scal_init(n, beta, y, incY); acxpy(n, alpha, x, incX, y, incY); } } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_ACXPBY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/acxpy.h000066400000000000000000000046541456314707100254270ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_ACXPY_H #define CXXBLAS_LEVEL1EXTENSIONS_ACXPY_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_ACXPY 1 namespace cxxblas { template void acxpy(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, Y *y, IndexType incY); #ifdef HAVE_CBLAS template void acxpy(IndexType n, const float &alpha, const std::complex *x, IndexType incX, std::complex *y, IndexType incY); template void acxpy(IndexType n, const double &alpha, const std::complex *x, IndexType incX, std::complex *y, IndexType incY); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_ACXPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/acxpy.tcc000066400000000000000000000070761456314707100257520ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_ACXPY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_ACXPY_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void acxpy_generic(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, Y *y, IndexType incY) { CXXBLAS_DEBUG_OUT("acxpy_generic"); for (IndexType i=0, iX=0, iY=0; i void acxpy(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, Y *y, IndexType incY) { if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } acxpy_generic(n, alpha, x, incX, y, incY); } #ifdef HAVE_CBLAS template void acxpy(IndexType n, const float &alpha, const std::complex *x, IndexType incX, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("acxpy_generic (complex float)"); cblas_saxpy(n, alpha, reinterpret_cast(x), 2*incX, reinterpret_cast(y), 2*incY); cblas_saxpy(n, -alpha, reinterpret_cast(x)+1, 2*incX, reinterpret_cast(y)+1, 2*incY); } template void acxpy(IndexType n, const double &alpha, const std::complex *x, IndexType incX, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("acxpy_generic (complex double)"); cblas_daxpy(n, alpha, reinterpret_cast(x), 2*incX, reinterpret_cast(y), 2*incY); cblas_daxpy(n, -alpha, reinterpret_cast(x)+1, 2*incX, reinterpret_cast(y)+1, 2*incY); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_ACXPY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/asum1.h000066400000000000000000000040101456314707100253130ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_ASUM_H #define CXXBLAS_LEVEL1EXTENSIONS_ASUM_H 1 #include "xflens/cxxblas/typedefs.h" #include "xflens/cxxblas/drivers/drivers.h" #define HAVE_CXXBLAS_ASUM1 1 namespace cxxblas { template void asum1(IndexType n, const X *x, IndexType incX, T &absSum); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_ASUM_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/asum1.tcc000066400000000000000000000045131456314707100256450ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_ASUM1_TCC #define CXXBLAS_LEVEL1EXTENSIONS_ASUM1_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void asum1_generic(IndexType n, const X *x, IndexType incX, T &absSum) { CXXBLAS_DEBUG_OUT("asum1_generic"); using std::abs; absSum = 0; for (IndexType i=0; i void asum1(IndexType n, const X *x, IndexType incX, T &absSum) { if (incX<0) { x -= incX*(n-1); } asum1_generic(n, x, incX, absSum); } } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_ASUM1_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/axpby.h000066400000000000000000000061641456314707100254240ustar00rootroot00000000000000/* * Copyright (c) 2013, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_AXPBY_H #define CXXBLAS_LEVEL1_AXPBY_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_AXPBY 1 namespace cxxblas { template void axpby(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, const BETA &beta, Y *y, IndexType incY); #ifdef HAVE_CBLAS_AXPBY // saxpy template typename If::isBlasCompatibleInteger axpby(IndexType n, const float &alpha, const float *x, IndexType incX, const float &beta, float *y, IndexType incY); // daxpy template typename If::isBlasCompatibleInteger axpby(IndexType n, const double &alpha, const double *x, IndexType incX, const double &beta, double *y, IndexType incY); // caxpy template typename If::isBlasCompatibleInteger axpby(IndexType n, const ComplexFloat &alpha, const ComplexFloat *x, IndexType incX, const ComplexFloat &beta, ComplexFloat *y, IndexType incY); // zaxpy template typename If::isBlasCompatibleInteger axpby(IndexType n, const ComplexDouble &alpha, const ComplexDouble *x, IndexType incX, const ComplexDouble &beta, ComplexDouble *y, IndexType incY); #endif // HAVE_CBLAS_AXPBY } // namespace cxxblas #endif // CXXBLAS_LEVEL1_AXPBY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/axpby.tcc000066400000000000000000000077051456314707100257500ustar00rootroot00000000000000/* * Copyright (c) 2013, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1_AXPBY_TCC #define CXXBLAS_LEVEL1_AXPBY_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void axpby(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, const BETA &beta, Y *y, IndexType incY) { CXXBLAS_DEBUG_OUT("axpby_generic"); scal_init(n, beta, y, incY); axpy(n, alpha, x, incX, y, incY); } #ifdef HAVE_CBLAS_AXPBY // saxpby template typename If::isBlasCompatibleInteger axpby(IndexType n, const float &alpha, const float *x, IndexType incX, const float &beta, float *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_saxpby"); BLAS_EXT(saxpby)(n, alpha, x, incX, beta, y, incY); } // daxpby template typename If::isBlasCompatibleInteger axpby(IndexType n, const double &alpha, const double *x, IndexType incX, const double &beta, double *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_daxpby"); BLAS_EXT(daxpby)(n, alpha, x, incX, beta, y, incY); } // caxpby template typename If::isBlasCompatibleInteger axpby(IndexType n, const ComplexFloat &alpha, const ComplexFloat *x, IndexType incX, const ComplexFloat &beta, ComplexFloat *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_caxpby"); BLAS_EXT(caxpby)(n, reinterpret_cast(&alpha), reinterpret_cast(x), incX, reinterpret_cast(&beta), reinterpret_cast(y), incY); } // zaxpby template typename If::isBlasCompatibleInteger axpby(IndexType n, const ComplexDouble &alpha, const ComplexDouble *x, IndexType incX, const ComplexDouble &beta, ComplexDouble *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zaxpby"); BLAS_EXT(zaxpby)(n, reinterpret_cast(&alpha), reinterpret_cast(x), incX, reinterpret_cast(&beta), reinterpret_cast(y), incY); } #endif // HAVE_CBLAS_AXPBY } // namespace cxxblas #endif // CXXBLAS_LEVEL1_AXPBY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/axpy.h000066400000000000000000000051351456314707100252570ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_AXPY_H #define CXXBLAS_LEVEL1EXTENSIONS_AXPY_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_AXPY 1 namespace cxxblas { #ifdef HAVE_CBLAS template void axpy(IndexType n, const float &alpha, const float *x, IndexType incX, std::complex *y, IndexType incY); template void axpy(IndexType n, const std::complex &alpha, const float *x, IndexType incX, std::complex *y, IndexType incY); template void axpy(IndexType n, const double &alpha, const double *x, IndexType incX, std::complex *y, IndexType incY); template void axpy(IndexType n, const std::complex &alpha, const double *x, IndexType incX, std::complex *y, IndexType incY); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_AXPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/axpy.tcc000066400000000000000000000064121456314707100256000ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_AXPY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_AXPY_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { #ifdef HAVE_CBLAS template void axpy(IndexType n, const float &alpha, const float *x, IndexType incX, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_caxpy [extension]"); cblas_saxpy(n, alpha, x, incX, reinterpret_cast(y), 2*incY); } template void axpy(IndexType n, const std::complex &alpha, const float *x, IndexType incX, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_caxpy [extension]"); float *y_ = reinterpret_cast(y); cblas_saxpy(n, std::real(alpha), x, incX, y_, 2*incY); cblas_saxpy(n, std::imag(alpha), x, incX, y_+1, 2*incY); } template void axpy(IndexType n, const double &alpha, const double *x, IndexType incX, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zaxpy [extension]"); cblas_daxpy(n, alpha, x, incX, reinterpret_cast(y), 2*incY); } template void axpy(IndexType n, const std::complex &alpha, const double *x, IndexType incX, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zaxpy [extension]"); double *y_ = reinterpret_cast(y); cblas_daxpy(n, std::real(alpha), x, incX, y_, 2*incY); cblas_daxpy(n, std::imag(alpha), x, incX, y_+1, 2*incY); } #endif } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_AXPY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/ccopy.h000066400000000000000000000037731456314707100254210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_CCOCPY_H #define CXXBLAS_LEVEL1EXTENSIONS_CCOPY_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_CCOPY 1 namespace cxxblas { template void ccopy(IndexType n, const X *x, IndexType incX, Y *y, IndexType incY); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_CCOPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/ccopy.tcc000066400000000000000000000046241456314707100257370ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_CCOPY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_CCOPY_TCC 1 #include "xflens/cxxblas/auxiliary/auxiliary.h" namespace cxxblas { template void ccopy_generic(IndexType n, const X *x, IndexType incX, Y *y, IndexType incY) { CXXBLAS_DEBUG_OUT("ccopy_generic"); for (IndexType i=0, iX=0, iY=0; i void ccopy(IndexType n, const X *x, IndexType incX, Y *y, IndexType incY) { if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } ccopy_generic(n, x, incX, y, incY); } } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_CCOPY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/dot.h000066400000000000000000000066321456314707100250670ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_DOT_H #define CXXBLAS_LEVEL1EXTENSIONS_DOT_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_AXPY 1 namespace cxxblas { #ifdef HAVE_CBLAS template void dotu(IndexType n, const float *x, IndexType incX, const std::complex *y, IndexType incY, std::complex &result); template void dotu(IndexType n, const std::complex *x, IndexType incX, const float *y, IndexType incY, std::complex &result); template void dotu(IndexType n, const double *x, IndexType incX, const std::complex *y, IndexType incY, std::complex &result); template void dotu(IndexType n, const std::complex *x, IndexType incX, const double *y, IndexType incY, std::complex &result); template void dot(IndexType n, const float *x, IndexType incX, const std::complex *y, IndexType incY, std::complex &result); template void dot(IndexType n, const std::complex *x, IndexType incX, const float *y, IndexType incY, std::complex &result); template void dot(IndexType n, const double *x, IndexType incX, const std::complex *y, IndexType incY, std::complex &result); template void dot(IndexType n, const std::complex *x, IndexType incX, const double *y, IndexType incY, std::complex &result); #endif } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_DOT_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/dot.tcc000066400000000000000000000125341456314707100254070ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_DOT_TCC #define CXXBLAS_LEVEL1EXTENSIONS_DOT_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { #ifdef HAVE_CBLAS template void dotu(IndexType n, const float *x, IndexType incX, const std::complex *y, IndexType incY, std::complex &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cdotu [extension] [real,complex]"); float real_result, imag_result; const float *yr = reinterpret_cast(y); const float *yi = reinterpret_cast(y) + 1; real_result = cblas_sdot(n, x, incX, yr, 2*incY); imag_result = cblas_sdot(n, x, incX, yi, 2*incY); result = std::complex(real_result, imag_result); } template void dotu(IndexType n, const std::complex *x, IndexType incX, const float *y, IndexType incY, std::complex &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cdotu [extension] [complex,real]"); dotu(n, y, incY, x, incX, result); } template void dotu(IndexType n, const double *x, IndexType incX, const std::complex *y, IndexType incY, std::complex &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zdotu [extension] [real,complex]"); double real_result, imag_result; const double *yr = reinterpret_cast(y); const double *yi = reinterpret_cast(y) + 1; real_result = cblas_ddot(n, x, incX, yr, 2*incY); imag_result = cblas_ddot(n, x, incX, yi, 2*incY); result = std::complex(real_result, imag_result); } template void dotu(IndexType n, const std::complex *x, IndexType incX, const double *y, IndexType incY, std::complex &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zdotu [extension] [complex,real]"); dotu(n, y, incY, x, incX, result); } template void dot(IndexType n, const float *x, IndexType incX, const std::complex *y, IndexType incY, std::complex &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cdot [extension] [real,complex]"); dotu(n, x, incX, y, incY, result); } template void dot(IndexType n, const std::complex *x, IndexType incX, const float *y, IndexType incY, std::complex &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cdot [extension] [complex,real]"); float real_result, imag_result; const float *xr = reinterpret_cast(x); const float *xi = reinterpret_cast(x) + 1; real_result = cblas_sdot(n, y, incY, xr, 2*incX); imag_result = cblas_sdot(n, y, incY, xi, 2*incX); result = std::complex(real_result, -imag_result); } template void dot(IndexType n, const double *x, IndexType incX, const std::complex *y, IndexType incY, std::complex &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zdot [extension] [real, complex]"); dotu(n, x, incX, y, incY, result); } template void dot(IndexType n, const std::complex *x, IndexType incX, const double *y, IndexType incY, std::complex &result) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zdot [extension] [complex, real]"); double real_result, imag_result; const double *xr = reinterpret_cast(x); const double *xi = reinterpret_cast(x) + 1; real_result = cblas_ddot(n, y, incY, xr, 2*incX); imag_result = cblas_ddot(n, y, incY, xi, 2*incX); result = std::complex(real_result, -imag_result); } #endif } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_DOT_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/gbaxpby.h000066400000000000000000000043231456314707100257300ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GBAXPBY_H #define CXXBLAS_LEVEL1EXTENSIONS_GBAXPBY_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GBAXPBY 1 namespace cxxblas { template void gbaxpby(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, const ALPHA &alpha, const MA *A, IndexType ldA, const BETA &beta, MB *B, IndexType ldB); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GBAXPBY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/gbaxpby.tcc000066400000000000000000000074231456314707100262560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GBAXPBY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_GBAXPBY_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gbaxpy(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, const ALPHA &alpha, const MA *A, IndexType ldA, const BETA &beta, MB *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("gbaxpby_generic"); if (order==ColMajor) { gbaxpy(RowMajor, trans, n, m, ku, kl, alpha, A, ldA, beta, B, ldB); return; } if (trans==NoTrans) { for (IndexType j=0, i=-kl; i<=ku; ++j, ++i) { IndexType length = (i<0) ? min(m+i,min(m,n)) : min(n-i,min(m,n)); axpby(length, alpha, A+j+max(-i,0)*ldA, ldA, beta, B+j+max(-i,0)*ldB, ldB); } return; } if (trans==Conj) { for (IndexType j=0, i=-kl; i<=ku; ++j, ++i) { IndexType length = (i<0) ? min(m+i,min(m,n)) : min(n-i,min(m,n)); acxpby(length, alpha, A+j+max(-i,0)*ldA, ldA, beta, B+j+max(-i,0)*ldB, ldB); } return; } if (trans==Trans) { for (IndexType j=0, J=kl+ku, i=-ku, I=ku; i<=kl; ++j, --J, ++i, --I) { IndexType length = (i<0) ? min(m+i,min(m,n)) : min(n-i,min(m,n)); axpby(length, alpha, A+j+max(-i,0)*ldA, ldA, beta, B+J+max(-I,0)*ldB, ldB); } return; } for (IndexType j=0, J=kl+ku, i=-ku, I=ku; i<=kl; ++j, --J, ++i, --I) { IndexType length = (i<0) ? min(m+i,min(m,n)) : min(n-i,min(m,n)); acxpby(length, alpha, A+j+max(-i,0)*ldA, ldA, beta, B+J+max(-I,0)*ldB, ldB); } return; } } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GBAXPBY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/gbaxpy.h000066400000000000000000000042371456314707100255720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GBAXPY_H #define CXXBLAS_LEVEL1EXTENSIONS_GBAXPY_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GBAXPY 1 namespace cxxblas { template void gbaxpy(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GBAXPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/gbaxpy.tcc000066400000000000000000000071641456314707100261160ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GBAXPY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_GBAXPY_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gbaxpy(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("gbaxpy_generic"); if (order==ColMajor) { gbaxpy(RowMajor, trans, n, m, ku, kl, alpha, A, ldA, B, ldB); return; } if (trans==NoTrans) { for (IndexType j=0, i=-kl; i<=ku; ++j, ++i) { IndexType length = (i<0) ? min(m+i,min(m,n)) : min(n-i,min(m,n)); axpy(length, alpha, A+j+max(-i,0)*ldA, ldA, B+j+max(-i,0)*ldB, ldB); } return; } if (trans==Conj) { for (IndexType j=0, i=-kl; i<=ku; ++j, ++i) { IndexType length = (i<0) ? min(m+i,min(m,n)) : min(n-i,min(m,n)); acxpy(length, alpha, A+j+max(-i,0)*ldA, ldA, B+j+max(-i,0)*ldB, ldB); } return; } if (trans==Trans) { for (IndexType j=0, J=kl+ku, i=-ku, I=ku; i<=kl; ++j, --J, ++i, --I) { IndexType length = (i<0) ? min(m+i,min(m,n)) : min(n-i,min(m,n)); axpy(length, alpha, A+j+max(-i,0)*ldA, ldA, B+J+max(-I,0)*ldB, ldB); } return; } for (IndexType j=0, J=kl+ku, i=-ku, I=ku; i<=kl; ++j, --J, ++i, --I) { IndexType length = (i<0) ? min(m+i,min(m,n)) : min(n-i,min(m,n)); acxpy(length, alpha, A+j+max(-i,0)*ldA, ldA, B+J+max(-I,0)*ldB, ldB); } return; } } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GBAXPY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/gbcopy.h000066400000000000000000000042271456314707100255620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GBCOPY_H #define CXXBLAS_LEVEL1EXTENSIONS_GBCOPY_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GBCOPY 1 namespace cxxblas { // // B = A or B = A^T // template void gbcopy(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, const MA *A, IndexType ldA, MB *B, IndexType ldB); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GBCOPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/gbcopy.tcc000066400000000000000000000071301456314707100261000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GBCOPY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_GBCOPY_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { // // B = A or B = A^T // template void gbcopy(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, const MA *A, IndexType ldA, MB *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("gbcopy_generic"); using std::max; using std::min; if (order==ColMajor) { gbcopy(RowMajor, trans, n, m, ku, kl, A, ldA, B, ldB); return; } if (trans == NoTrans) { for (IndexType j=0, i=-kl; i<=ku; ++j, ++i) { IndexType length = (i < 0) ? min(m+i,min(m,n)) : min(n-i,min(m,n)); copy(length, A+j+max(-i,0)*ldA, ldA, B+j+max(-i,0)*ldB, ldB); } return; } if (trans == Conj) { for (IndexType j=0, i=-kl; i<=ku; ++j, ++i) { IndexType length = (i < 0) ? min(m+i,min(m,n)) : min(n-i,min(m,n)); ccopy(length, A+j+max(-i,0)*ldA, ldA, B+j+max(-i,0)*ldB, ldB); } return; } if (trans == Trans) { for (IndexType j=0, J=kl+ku, i=-ku, I=ku; i<=kl; ++j, --J, ++i, --I) { IndexType length = (i < 0) ? min(m+i,min(m,n)) : min(n-i,min(m,n)); copy(length, A+j+max(-i,0)*ldA, ldA, B+J+max(-I,0)*ldB, ldB); } return; } for (IndexType j=0, J=kl+ku, i=-ku, I=ku; i<=kl; ++j, --J, ++i, --I) { IndexType length = (i < 0) ? min(m+i,min(m,n)) : min(n-i,min(m,n)); ccopy(length, A+j+max(-i,0)*ldA, ldA, B+J+max(-I,0)*ldB, ldB); } return; } } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GBCOPY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/gbcotr.h000066400000000000000000000040611456314707100255530ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GBCOTR_H #define CXXBLAS_LEVEL1EXTENSIONS_GBCOTR_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GBCOTR 1 namespace cxxblas { template void gbcotr(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, MA *A, IndexType ldA); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GBCOTR_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/gbcotr.tcc000066400000000000000000000073401456314707100261000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GBCOTR_TCC #define CXXBLAS_LEVEL1EXTENSIONS_GBCOTR_TCC 1 #include #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gbcotr(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("gbcotr_generic"); using std::max; using std::min; if (order==ColMajor) { gbcotr(RowMajor, trans, n, m, ku, kl, A, ldA); return; } if (trans == Conj) { for (IndexType j=0, i=-kl; i<=ku; ++j, ++i) { IndexType length = (i < 0) ? min(m+i,min(m,n)) : min(n-i,min(m,n)); for (IndexType k=0; k nothing has to be done return; } } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GBCOTR_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/gbscal.h000066400000000000000000000041321456314707100255250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GBSCAL_H #define CXXBLAS_LEVEL1EXTENSIONS_GBSCAL_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GBSCAL 1 namespace cxxblas { template void gbscal(StorageOrder order, IndexType m, IndexType n, IndexType kl, IndexType ku, const ALPHA &alpha, MA *A, IndexType ldA); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GBSCAL_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/gbscal.tcc000066400000000000000000000047141456314707100260550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GBSCAL_TCC #define CXXBLAS_LEVEL1EXTENSIONS_GBSCAL_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gbscal(StorageOrder order, IndexType m, IndexType n, IndexType kl, IndexType ku, const ALPHA &alpha, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("gbscal_generic"); if (order==ColMajor) { std::swap(m,n); std::swap(kl,ku); } using std::max; using std::min; for (IndexType j=0, i=-kl; i<=ku; ++j, ++i) { IndexType length = (i<0) ? min(m+i,min(m,n)) : min(n-i,min(m,n)); scal(length, alpha, A+j+max(-i,0)*ldA, ldA); } return; } } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GBSCAL_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/geaxpby.h000066400000000000000000000042331456314707100257330ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GEAXPBY_H #define CXXBLAS_LEVEL1EXTENSIONS_GEAXPBY_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GEAXPBY 1 namespace cxxblas { template void geaxpby(StorageOrder order, Transpose trans, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const BETA &beta, MB *B, IndexType ldB); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GEAXPBY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/geaxpby.tcc000066400000000000000000000064521456314707100262620ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GEAXPBY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_GEAXPBY_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void geaxpby(StorageOrder order, Transpose trans, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const BETA &beta, MB *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("geaxpby_generic"); if (order==ColMajor) { std::swap(m,n); } if (trans==NoTrans) { if ((ldA==n) && (ldB==n)) { axpby(m*n, alpha, A, IndexType(1), beta, B, IndexType(1)); return; } else { for (IndexType i=0; i void geaxpy(StorageOrder order, Transpose trans, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GEAXPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/geaxpy.tcc000066400000000000000000000062401456314707100261130ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GEAXPY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_GEAXPY_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void geaxpy(StorageOrder order, Transpose trans, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("geaxpy_generic"); if (order==ColMajor) { std::swap(m,n); } if (trans==NoTrans) { if ((ldA==n) && (ldB==n)) { axpy(m*n, alpha, A, IndexType(1), B, IndexType(1)); return; } else { for (IndexType i=0; i void gecopy(StorageOrder order, Transpose trans, IndexType m, IndexType n, const MA *A, IndexType ldA, MB *B, IndexType ldB); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GECOPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/gecopy.tcc000066400000000000000000000063141456314707100261060ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GECOPY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_GECOPY_TCC 1 #include #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { // // B = A, B = A^T or B = A^H // template void gecopy(StorageOrder order, Transpose trans, IndexType m, IndexType n, const MA *A, IndexType ldA, MB *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("gecopy_generic"); if (order==ColMajor) { gecopy(RowMajor, trans, n, m, A, ldA, B, ldB); return; } if (trans==NoTrans) { if ((ldA==n) && (ldB==n)) { copy(m*n, A, IndexType(1), B, IndexType(1)); return; } else { for (IndexType i=0; i void gecotr(StorageOrder order, Transpose trans, IndexType m, IndexType n, MA *A, IndexType ldA); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GECOTR_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/gecotr.tcc000066400000000000000000000051471456314707100261060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GECOTR_TCC #define CXXBLAS_LEVEL1EXTENSIONS_GECOTR_TCC 1 #include #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gecotr(StorageOrder order, Transpose trans, IndexType m, IndexType n, MA *A, IndexType ldA) { if (order==RowMajor) { std::swap(m,n); } CXXBLAS_DEBUG_OUT("gecotr_generic"); if (trans==NoTrans) { return; } if (trans==Trans || trans==ConjTrans) { ASSERT(m==n); for (IndexType i=0; i void geraxpy(StorageOrder order, Transpose trans, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GERAXPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/geraxpy.tcc000066400000000000000000000053631456314707100263020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GERAXPY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_GERAXPY_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void geraxpy(StorageOrder order, Transpose trans, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("geraxpy_generic"); if (order==ColMajor) { std::swap(m,n); } if (trans==NoTrans) { if ((ldA==n) && (ldB==n)) { raxpy(m*n, alpha, A, IndexType(1), B, IndexType(1)); return; } else { for (IndexType i=0; i void gerscal(StorageOrder order, IndexType m, IndexType n, const ALPHA &alpha, MA *A, IndexType ldA); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GERSCAL_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/gerscal.tcc000066400000000000000000000045161456314707100262420ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GERSCAL_TCC #define CXXBLAS_LEVEL1EXTENSIONS_GERSCAL_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gerscal(StorageOrder order, IndexType m, IndexType n, const ALPHA &alpha, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("gerscal_generic"); if (order==ColMajor) { std::swap(m,n); } if (ldA==n) { rscal(m*n, alpha, A, IndexType(1)); return; } else { for (IndexType i=0; i void gescal_init(StorageOrder order, IndexType m, IndexType n, const ALPHA &alpha, MA *A, IndexType ldA); template void gescal(StorageOrder order, IndexType m, IndexType n, const ALPHA &alpha, MA *A, IndexType ldA); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GESCAL_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/gescal.tcc000066400000000000000000000055011456314707100260530ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GESCAL_TCC #define CXXBLAS_LEVEL1EXTENSIONS_GESCAL_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gescal_init(StorageOrder order, IndexType m, IndexType n, const ALPHA &alpha, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("gescal_generic"); if (order==ColMajor) { std::swap(m,n); } if (ldA==n) { scal_init(m*n, alpha, A, IndexType(1)); return; } else { for (IndexType i=0; i void gescal(StorageOrder order, IndexType m, IndexType n, const ALPHA &alpha, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("gescal_generic"); if (order==ColMajor) { std::swap(m,n); } if (ldA==n) { scal(m*n, alpha, A, IndexType(1)); return; } else { for (IndexType i=0; i void geswap(StorageOrder orderA, StorageOrder orderB, IndexType m, IndexType n, MA *A, IndexType ldA, MB *B, IndexType ldB); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_GESWAP_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/geswap.tcc000066400000000000000000000062271456314707100261110ustar00rootroot00000000000000/* * Copyright (c) 2013, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_GESWAP_TCC #define CXXBLAS_LEVEL1EXTENSIONS_GESWAP_TCC 1 #include #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { // // swap A and B // template void geswap(StorageOrder orderA, StorageOrder orderB, IndexType m, IndexType n, MA *A, IndexType ldA, MB *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("geswap_generic"); if ( (orderA==ColMajor) && (orderB==ColMajor) ) { if ( (m==ldA) && (m==ldB) ) { cxxblas::swap(m*n, A, IndexType(1), B, IndexType(1)); } else { for (IndexType j=0; j void hescal(StorageOrder order, StorageUpLo upLoA, IndexType n, const ALPHA &alpha, MA *A, IndexType ldA); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_HESCAL_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/hescal.tcc000066400000000000000000000050301456314707100260510ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_HESCAL_TCC #define CXXBLAS_LEVEL1EXTENSIONS_HESCAL_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void hescal(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("hescal_generic"); if (alpha==ALPHA(1)) { return; } if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; } if (upLo==Upper) { for (IndexType i=0; i void imax1(IndexType n, const X *x, IndexType incX, IndexType &i); template IndexType imax1(IndexType n, const X *x, IndexType incX); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_IMAX_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/imax1.tcc000066400000000000000000000053621456314707100256410ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_IMAX1_TCC #define CXXBLAS_LEVEL1EXTENSIONS_IMAX1_TCC 1 #include #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void imax1_generic(IndexType n, const std::complex *x, IndexType incX, IndexType &iAbsMaxX) { CXXBLAS_DEBUG_OUT("imax1_generic"); using std::abs; iAbsMaxX = 0; X absMaxX = abs(x[iAbsMaxX]); for (IndexType i=0, iX=0; iabsMaxX) { iAbsMaxX = i; absMaxX = abs(x[iX]); } } } template void imax1(IndexType n, const X *x, IndexType incX, IndexType &iAbsMaxX) { if (incX<0) { x -= incX*(n-1); } if (n<=0) { iAbsMaxX = -1; return; } imax1_generic(n, x, incX, iAbsMaxX); } template IndexType imax1(IndexType n, const X *x, IndexType incX) { IndexType iAbsMaxX = IndexType(0); imax1(n, x, incX, iAbsMaxX); return iAbsMaxX; } } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_IMAX1_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/level1extensions.h000066400000000000000000000066771456314707100276220ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_LEVEL1EXTENSIONS_H #define CXXBLAS_LEVEL1EXTENSIONS_LEVEL1EXTENSIONS_H 1 #include "xflens/cxxblas/level1extensions/acxpby.h" #include "xflens/cxxblas/level1extensions/acxpy.h" #include "xflens/cxxblas/level1extensions/asum1.h" #include "xflens/cxxblas/level1extensions/axpby.h" #include "xflens/cxxblas/level1extensions/axpy.h" #include "xflens/cxxblas/level1extensions/ccopy.h" #include "xflens/cxxblas/level1extensions/dot.h" #include "xflens/cxxblas/level1extensions/gbaxpby.h" #include "xflens/cxxblas/level1extensions/gbaxpy.h" #include "xflens/cxxblas/level1extensions/gbcopy.h" #include "xflens/cxxblas/level1extensions/gbcotr.h" #include "xflens/cxxblas/level1extensions/gbscal.h" #include "xflens/cxxblas/level1extensions/geaxpby.h" #include "xflens/cxxblas/level1extensions/geaxpy.h" #include "xflens/cxxblas/level1extensions/gecopy.h" #include "xflens/cxxblas/level1extensions/gecotr.h" #include "xflens/cxxblas/level1extensions/geraxpy.h" #include "xflens/cxxblas/level1extensions/gerscal.h" #include "xflens/cxxblas/level1extensions/gescal.h" #include "xflens/cxxblas/level1extensions/geswap.h" #include "xflens/cxxblas/level1extensions/hescal.h" #include "xflens/cxxblas/level1extensions/imax1.h" #include "xflens/cxxblas/level1extensions/syscal.h" #include "xflens/cxxblas/level1extensions/racxpy.h" #include "xflens/cxxblas/level1extensions/raxpy.h" #include "xflens/cxxblas/level1extensions/rscal.h" #include "xflens/cxxblas/level1extensions/traxpby.h" #include "xflens/cxxblas/level1extensions/traxpy.h" #include "xflens/cxxblas/level1extensions/trcopy.h" #include "xflens/cxxblas/level1extensions/tpaxpby.h" #include "xflens/cxxblas/level1extensions/tpaxpy.h" #include "xflens/cxxblas/level1extensions/tpcopy.h" #include "xflens/cxxblas/level1extensions/tpscal.h" #endif // CXXBLAS_LEVEL1EXTENSIONS_LEVEL1EXTENSIONS_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/level1extensions.tcc000066400000000000000000000070071456314707100301300ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_LEVEL1EXTENSIONS_TCC #define CXXBLAS_LEVEL1EXTENSIONS_LEVEL1EXTENSIONS_TCC 1 #include "xflens/cxxblas/level1extensions/acxpby.tcc" #include "xflens/cxxblas/level1extensions/acxpy.tcc" #include "xflens/cxxblas/level1extensions/asum1.tcc" #include "xflens/cxxblas/level1extensions/axpby.tcc" #include "xflens/cxxblas/level1extensions/axpy.tcc" #include "xflens/cxxblas/level1extensions/ccopy.tcc" #include "xflens/cxxblas/level1extensions/dot.tcc" #include "xflens/cxxblas/level1extensions/gbaxpby.tcc" #include "xflens/cxxblas/level1extensions/gbaxpy.tcc" #include "xflens/cxxblas/level1extensions/gbcopy.tcc" #include "xflens/cxxblas/level1extensions/gbcotr.tcc" #include "xflens/cxxblas/level1extensions/gbscal.tcc" #include "xflens/cxxblas/level1extensions/geaxpy.tcc" #include "xflens/cxxblas/level1extensions/geaxpby.tcc" #include "xflens/cxxblas/level1extensions/gecopy.tcc" #include "xflens/cxxblas/level1extensions/gecotr.tcc" #include "xflens/cxxblas/level1extensions/geraxpy.tcc" #include "xflens/cxxblas/level1extensions/gescal.tcc" #include "xflens/cxxblas/level1extensions/geswap.tcc" #include "xflens/cxxblas/level1extensions/gerscal.tcc" #include "xflens/cxxblas/level1extensions/hescal.tcc" #include "xflens/cxxblas/level1extensions/imax1.tcc" #include "xflens/cxxblas/level1extensions/syscal.tcc" #include "xflens/cxxblas/level1extensions/racxpy.tcc" #include "xflens/cxxblas/level1extensions/raxpy.tcc" #include "xflens/cxxblas/level1extensions/rscal.tcc" #include "xflens/cxxblas/level1extensions/traxpby.tcc" #include "xflens/cxxblas/level1extensions/traxpy.tcc" #include "xflens/cxxblas/level1extensions/trcopy.tcc" #include "xflens/cxxblas/level1extensions/tpaxpby.tcc" #include "xflens/cxxblas/level1extensions/tpaxpy.tcc" #include "xflens/cxxblas/level1extensions/tpcopy.tcc" #include "xflens/cxxblas/level1extensions/tpscal.tcc" #endif // CXXBLAS_LEVEL1EXTENSIONS_LEVEL1EXTENSIONS_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/racxpy.h000066400000000000000000000040371456314707100256040ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_RACXPY_H #define CXXBLAS_LEVEL1EXTENSIONS_RACXPY_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_RACXPY 1 namespace cxxblas { template void racxpy(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, Y *y, IndexType incY); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_RACXPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/racxpy.tcc000066400000000000000000000047751456314707100261370ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_RACXPY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_RACXPY_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void racxpy_generic(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, Y *y, IndexType incY) { CXXBLAS_DEBUG_OUT("racxpy_generic"); for (IndexType i=0, iX=0, iY=0; i void racxpy(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, Y *y, IndexType incY) { if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } racxpy_generic(n, alpha, x, incX, y, incY); } } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_RACXPY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/raxpy.h000066400000000000000000000040301456314707100254320ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_RAXPY_H #define CXXBLAS_LEVEL1EXTENSIONS_RAXPY_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_RAXPY 1 namespace cxxblas { template void raxpy(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, Y *y, IndexType incY); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_RAXPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/raxpy.tcc000066400000000000000000000047511456314707100257660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_RAXPY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_RAXPY_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void raxpy_generic(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, Y *y, IndexType incY) { for (IndexType i=0, iX=0, iY=0; i void raxpy(IndexType n, const ALPHA &alpha, const X *x, IndexType incX, Y *y, IndexType incY) { CXXBLAS_DEBUG_OUT("raxpy_generic"); if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } raxpy_generic(n, alpha, x, incX, y, incY); } } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_RAXPY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/rscal.h000066400000000000000000000037461456314707100254100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_RSCAL_H #define CXXBLAS_LEVEL1EXTENSIONS_RSCAL_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_RSCAL 1 namespace cxxblas { template void rscal(IndexType n, const ALPHA &alpha, Y *y, IndexType incY); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_RSCAL_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/rscal.tcc000066400000000000000000000044651456314707100257310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_RSCAL_TCC #define CXXBLAS_LEVEL1EXTENSIONS_RSCAL_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void rscal_generic(IndexType n, const ALPHA &alpha, Y *y, IndexType incY) { for (IndexType i=0, iY=0; i void rscal(IndexType n, const ALPHA &alpha, Y *y, IndexType incY) { CXXBLAS_DEBUG_OUT("rscal_generic"); if (incY<0) { y -= incY*(n-1); } rscal_generic(n, alpha, y, incY); } } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_RSCAL_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/syscal.h000066400000000000000000000040511456314707100255700ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_SYSCAL_H #define CXXBLAS_LEVEL1EXTENSIONS_SYSCAL_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYSCAL 1 namespace cxxblas { template void syscal(StorageOrder order, StorageUpLo upLoA, IndexType n, const ALPHA &alpha, MA *A, IndexType ldA); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_SYSCAL_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/syscal.tcc000066400000000000000000000060461456314707100261200ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_SYSCAL_TCC #define CXXBLAS_LEVEL1EXTENSIONS_SYSCAL_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void syscal(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("syscal_generic"); if (alpha==ALPHA(1)) { return; } if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; } if (upLo==Upper) { for (IndexType i=0; i void syscal_init(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("syscal_generic"); if (alpha==ALPHA(1)) { return; } if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; } if (upLo==Upper) { for (IndexType i=0; i void tpaxpby(StorageOrder order, StorageUpLo upLo, Transpose trans, Diag diag, IndexType n, const ALPHA &alpha, const MA *A, const BETA &beta, MB *B); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_TPAXPBY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/tpaxpby.tcc000066400000000000000000000061731456314707100263120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_TPAXPBY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_TPAXPBY_TCC 1 #include #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { // // B = beta*B + alpha*op(A) // template void tpaxpby(StorageOrder order, StorageUpLo upLo, Transpose trans, Diag diag, IndexType n, const ALPHA &alpha, const MA *A, const BETA &beta, MB *B) { CXXBLAS_DEBUG_OUT("tpaxpby_generic"); FAKE_USE(order); FAKE_USE(upLo); const IndexType shift = (diag==Unit) ? 1 : 0; // TODO: Remove copy of diagonal if diag == Unit if (trans==NoTrans) { const IndexType length = n*(n+1)/2; axpby(length, alpha, A, 1, beta, B, 1); } else if (trans==Conj) { const IndexType length = n*(n+1)/2; acxpby(length, alpha, A, 1, beta, B, 1); } else if (trans == Trans) { for (IndexType i = 0; i < n; ++i) { for (IndexType j = i+shift; j < n; ++j) { B[i+j*(j+1)/2] = beta*B[i+j*(j+1)/2] + alpha*A[j+(2*n-i-1)*i/2]; } } } else if ( trans==ConjTrans) { for (IndexType i = 0; i < n; ++i) { for (IndexType j = i+shift; j < n; ++j) { B[i+j*(j+1)/2] = beta*B[i+j*(j+1)/2] + alpha*conjugate(A[j+(2*n-i-1)*i/ 2]); } } } return; } } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_TPAXPBY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/tpaxpy.h000066400000000000000000000043171456314707100256240ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_TPAXPY_H #define CXXBLAS_LEVEL1EXTENSIONS_TPAXPY_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_TPAXPY 1 namespace cxxblas { // // B += alpha*A or B += alpha*A^T // // where B is a nxn triangular packed matrix as specified by upLo // template void tpaxpy(StorageOrder order, StorageUpLo upLo, Transpose trans, Diag diag, IndexType n, const ALPHA &alpha, const MA *A, MB *B); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_TPAXPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/tpaxpy.tcc000066400000000000000000000061041456314707100261420ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_TPAXPY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_TPAXPY_TCC 1 #include #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { // // B += alpha*A or B = alpha*A^T // template void tpaxpy(StorageOrder order, StorageUpLo, Transpose trans, Diag diag, IndexType n, const ALPHA &alpha, const MA *A, MB *B) { CXXBLAS_DEBUG_OUT("tpaxpy_generic"); ASSERT(order==ColMajor); ASSERT(diag==NonUnit); // Dummy operation to avoid compiler warnings (void)(order); // TODO: Remove copy of diagonal if diag == Unit if (trans==NoTrans) { const IndexType length = n*(n+1)/2; axpy(length, alpha, A, 1, B, 1); return; } if (trans==Conj) { const IndexType length = n*(n+1)/2; acxpy(length, alpha, A, 1, B, 1); return; } const IndexType shift = (diag==Unit) ? 1 : 0; if (trans == Trans) { for (IndexType i = 0; i < n; ++i) { for (IndexType j = i+shift; j < n; ++j) { B[i+j*(j+1)/2] += alpha*A[j+(2*n-i-1)*i/2]; } } return; } for (IndexType i = 0; i < n; ++i) { for (IndexType j = i+shift; j < n; ++j) { B[i+j*(j+1)/2] += alpha*conjugate(A[j+(2*n-i-1)*i/2]); } } return; } } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_TPAXPY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/tpcopy.h000066400000000000000000000042111456314707100256060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_TPCOPY_H #define CXXBLAS_LEVEL1EXTENSIONS_TPCOPY_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_TPCOPY 1 namespace cxxblas { // // B = A or B = A^T // // where B is a nxn triangular packed matrix as specified by upLo // template void tpcopy(StorageUpLo upLo, Transpose trans, Diag diag, IndexType n, const MA *A, MB *B); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_TPCOPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/tpcopy.tcc000066400000000000000000000056501456314707100261400ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_TPCOPY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_TPCOPY_TCC 1 #include #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { // // B = A or B = A^T // template void tpcopy(StorageUpLo, Transpose trans, Diag diag, IndexType n, const MA *A, MB *B) { CXXBLAS_DEBUG_OUT("tpcopy_generic"); if (trans==NoTrans) { // TODO: Allow diag != Unit ASSERT(diag==NonUnit); const IndexType length = n*(n+1)/2; copy(length, A, 1, B, 1); return; } if (trans==Conj) { // TODO: Allow diag != Unit ASSERT(diag==NonUnit); const IndexType length = n*(n+1)/2; ccopy(length, A, 1, B, 1); return; } const IndexType shift = (diag==Unit) ? 1 : 0; if (trans == Trans) { for (IndexType i = 0; i < n; ++i) { for (IndexType j = i+shift; j < n; ++j) { B[i+j*(j+1)/2] = A[j+(2*n-i-1)*i/2]; } } return; } for (IndexType i = 0; i < n; ++i) { for (IndexType j = i+shift; j < n; ++j) { B[i+j*(j+1)/2] = conjugate(A[j+(2*n-i-1)*i/2]); } } return; } } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_TPCOPY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/tpscal.h000066400000000000000000000040161456314707100255610ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_TPSCAL_H #define CXXBLAS_LEVEL1EXTENSIONS_TPSCAL_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_TPSCAL 1 namespace cxxblas { // // B = alpha*B // template void tpscal(Diag diag, IndexType n, const ALPHA &alpha, MA *A); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_TPSCAL_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/tpscal.tcc000066400000000000000000000045441456314707100261110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_TPSCAL_TCC #define CXXBLAS_LEVEL1EXTENSIONS_TPSCAL_TCC 1 #include #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { // // B = alpha*B // template void tpscal(Diag diag, IndexType n, const ALPHA &alpha, MA *A) { CXXBLAS_DEBUG_OUT("tpscal_generic"); if(diag==Unit) { IndexType offset = 0; for (IndexType i=0; i void traxpby(StorageOrder order, StorageUpLo upLo, Transpose trans, Diag diag, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const BETA &beta, MB *B, IndexType ldB); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_TRAXPBY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/traxpby.tcc000066400000000000000000000110661456314707100263110ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_TRAXPBY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_TRAXPBY_TCC 1 #include #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { // // B = beta*B + alpha*op(A) // template void traxpby(StorageOrder order, StorageUpLo upLo, Transpose trans, Diag diag, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const BETA &beta, MB *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("traxpby_generic"); using std::min; if (order==RowMajor) { upLo = (upLo==Upper) ? Lower : Upper; traxpby(ColMajor, upLo, trans, diag, n, m, alpha, A, ldA, beta, B, ldB); return; } if (diag==NonUnit) { if (trans==NoTrans) { if (upLo==Upper) { for (IndexType j=0; j void traxpy(StorageOrder order, StorageUpLo upLo, Transpose trans, Diag diag, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_TRAXPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/traxpy.tcc000066400000000000000000000106671456314707100261550ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_TRAXPY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_TRAXPY_TCC 1 #include #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { // // B += alpha*op(A) // template void traxpy(StorageOrder order, StorageUpLo upLo, Transpose trans, Diag diag, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("traxpy_generic"); using std::min; if (order==RowMajor) { upLo = (upLo==Upper) ? Lower : Upper; traxpy(ColMajor, upLo, trans, diag, n, m, alpha, A, ldA, B, ldB); return; } if (diag==NonUnit) { if (trans==NoTrans) { if (upLo==Upper) { for (IndexType j=0; j void trcopy(StorageOrder order, StorageUpLo upLo, Transpose trans, Diag diag, IndexType m, IndexType n, const MA *A, IndexType ldA, MB *B, IndexType ldB); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_TRCOPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/trcopy.tcc000066400000000000000000000120441456314707100261350ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_TRCOPY_TCC #define CXXBLAS_LEVEL1EXTENSIONS_TRCOPY_TCC 1 #include #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { // // B = A or B = A^T // template void trcopy(StorageOrder order, StorageUpLo upLo, Transpose trans, Diag diag, IndexType m, IndexType n, const MA *A, IndexType ldA, MB *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("trcopy_generic"); using std::min; if (order==RowMajor) { upLo = (upLo==Upper) ? Lower : Upper; trcopy(ColMajor, upLo, trans, diag, n, m, A, ldA, B, ldB); return; } if (diag==NonUnit) { if (trans==NoTrans) { if (upLo==Upper) { for (IndexType j=0; j void trscal(StorageOrder order, StorageUpLo upLo, Diag diag, IndexType m, IndexType n, const ALPHA &alpha, MA *A, IndexType ldA); } // namespace cxxblas #endif // CXXBLAS_LEVEL1EXTENSIONS_TRSCAL_H xtensor-blas-0.21.0/include/xflens/cxxblas/level1extensions/trscal.tcc000066400000000000000000000050241456314707100261050ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL1EXTENSIONS_TRSCAL_TCC #define CXXBLAS_LEVEL1EXTENSIONS_TRSCAL_TCC 1 #include #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { // // B = alpha*A // template void trscal(StorageOrder order, StorageUpLo upLo, IndexType m, IndexType n, const ALPHA &alpha, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("trscal_generic"); using std::min; if (alpha==ALPHA(1)) { return; } if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; } if (upLo==Upper) { for (IndexType i=0; i void gbmv(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY); #ifdef HAVE_CBLAS // sgbmv template typename If::isBlasCompatibleInteger gbmv(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, float alpha, const float *A, IndexType ldA, const float *x, IndexType incX, float beta, float *y, IndexType incY); // dgbmv template typename If::isBlasCompatibleInteger gbmv(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, double alpha, const double *A, IndexType ldA, const double *x, IndexType incX, double beta, double *y, IndexType incY); // cgbmv template typename If::isBlasCompatibleInteger gbmv(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *x, IndexType incX, const ComplexFloat &beta, ComplexFloat *y, IndexType incY); // zgbmv template typename If::isBlasCompatibleInteger gbmv(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *x, IndexType incX, const ComplexDouble &beta, ComplexDouble *y, IndexType incY); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_GBMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/gbmv.tcc000066400000000000000000000270721456314707100234400ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_GBMV_TCC #define CXXBLAS_LEVEL2_GBMV_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gbmv_generic(StorageOrder order, Transpose trans, Transpose conjX, IndexType m, IndexType n, IndexType kl, IndexType ku, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { if (order==ColMajor) { trans = Transpose(trans^Trans); gbmv_generic(RowMajor, trans, conjX, n, m, ku, kl, alpha, A, ldA, x, incX, beta, y, incY); return; } if ((trans==NoTrans) || (trans==Conj)) { if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(m-1); } scal_init_generic(m, beta, y, incY); if (trans==NoTrans) { if (conjX==NoTrans) { for (IndexType i=0, iY=0; i void gbmv(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { CXXBLAS_DEBUG_OUT("gbmv_generic"); if ((m==0) || (n==0)) { return; } gbmv_generic(order, trans, NoTrans, m, n, kl, ku, alpha, A, ldA, x, incX, beta, y, incY); } #ifdef HAVE_CBLAS // sgbmv template typename If::isBlasCompatibleInteger gbmv(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, float alpha, const float *A, IndexType ldA, const float *x, IndexType incX, float beta, float *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_sgbmv"); cblas_sgbmv(CBLAS::getCblasType(order), CBLAS::getCblasType(trans), m, n, kl, ku, alpha, A, ldA, x, incX, beta, y, incY); } // dgbmv template typename If::isBlasCompatibleInteger gbmv(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, double alpha, const double *A, IndexType ldA, const double *x, IndexType incX, double beta, double *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dgbmv"); cblas_dgbmv(CBLAS::getCblasType(order), CBLAS::getCblasType(trans), m, n, kl, ku, alpha, A, ldA, x, incX, beta, y, incY); } // cgbmv template typename If::isBlasCompatibleInteger gbmv(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *x, IndexType incX, const ComplexFloat &beta, ComplexFloat *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cgbmv"); if (trans==Conj) { order = (order==RowMajor) ? ColMajor : RowMajor; gbmv(order, ConjTrans, n, m, ku, kl, alpha, A, ldA, x, incX, beta, y, incY); return; } # ifdef CXXBLAS_NO_TEMPORARY if (order==RowMajor && trans==ConjTrans) { CXXBLAS_DEBUG_OUT("gbmv_generic"); gbmv_generic(order, trans, NoTrans, m, n, kl, ku, alpha, A, ldA, x, incX, beta, y, incY); return; } # endif cblas_cgbmv(CBLAS::getCblasType(order), CBLAS::getCblasType(trans), m, n, kl, ku, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(x), incX, reinterpret_cast(&beta), reinterpret_cast(y), incY); } // zgbmv template typename If::isBlasCompatibleInteger gbmv(StorageOrder order, Transpose trans, IndexType m, IndexType n, IndexType kl, IndexType ku, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *x, IndexType incX, const ComplexDouble &beta, ComplexDouble *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zgbmv"); if (trans==Conj) { order = (order==RowMajor) ? ColMajor : RowMajor; gbmv(order, ConjTrans, n, m, ku, kl, alpha, A, ldA, x, incX, beta, y, incY); return; } # ifdef CXXBLAS_NO_TEMPORARY if (order==RowMajor && trans==ConjTrans) { CXXBLAS_DEBUG_OUT("gbmv_generic"); gbmv_generic(order, trans, NoTrans, m, n, kl, ku, alpha, A, ldA, x, incX, beta, y, incY); return; } # endif cblas_zgbmv(CBLAS::getCblasType(order), CBLAS::getCblasType(trans), m, n, kl, ku, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(x), incX, reinterpret_cast(&beta), reinterpret_cast(y), incY); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_GBMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/gemv.h000066400000000000000000000072401456314707100231140ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_GEMV_H #define CXXBLAS_LEVEL2_GEMV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GEMV 1 namespace cxxblas { template void gemv(StorageOrder order, Transpose trans, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY); #ifdef HAVE_CBLAS // sgemv template typename If::isBlasCompatibleInteger gemv(StorageOrder order, Transpose trans, IndexType m, IndexType n, float alpha, const float *A, IndexType ldA, const float *x, IndexType incX, float beta, float *y, IndexType incY); // dgemv template typename If::isBlasCompatibleInteger gemv(StorageOrder order, Transpose trans, IndexType m, IndexType n, double alpha, const double *A, IndexType ldA, const double *x, IndexType incX, double beta, double *y, IndexType incY); // cgemv template typename If::isBlasCompatibleInteger gemv(StorageOrder order, Transpose trans, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *x, IndexType incX, const ComplexFloat &beta, ComplexFloat *y, IndexType incY); // zgemv template typename If::isBlasCompatibleInteger gemv(StorageOrder order, Transpose trans, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *x, IndexType incX, const ComplexDouble &beta, ComplexDouble *y, IndexType incY); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_GEMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/gemv.tcc000066400000000000000000000223261456314707100234400ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_GEMV_TCC #define CXXBLAS_LEVEL2_GEMV_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gemv_generic(StorageOrder order, Transpose transA, Transpose conjX, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { if (order==ColMajor) { transA = Transpose(transA^Trans); gemv_generic(RowMajor, transA, conjX, n, m, alpha, A, ldA, x, incX, beta, y, incY); return; } if ((transA==NoTrans) || (transA==Conj)) { if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(m-1); } scal_init_generic(m, beta, y, incY); if (conjX==NoTrans) { if (transA==Conj) { for (IndexType i=0, iY=0; i void gemv(StorageOrder order, Transpose trans, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { CXXBLAS_DEBUG_OUT("gemv_generic"); if ((m==0) || (n==0)) { return; } gemv_generic(order, trans, NoTrans, m, n, alpha, A, ldA, x, incX, beta, y, incY); } #ifdef HAVE_CBLAS // sgemv template typename If::isBlasCompatibleInteger gemv(StorageOrder order, Transpose trans, IndexType m, IndexType n, float alpha, const float *A, IndexType ldA, const float *x, IndexType incX, float beta, float *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_sgemv"); cblas_sgemv(CBLAS::getCblasType(order), CBLAS::getCblasType(trans), m, n, alpha, A, ldA, x, incX, beta, y, incY); } // dgemv template typename If::isBlasCompatibleInteger gemv(StorageOrder order, Transpose trans, IndexType m, IndexType n, double alpha, const double *A, IndexType ldA, const double *x, IndexType incX, double beta, double *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dgemv"); cblas_dgemv(CBLAS::getCblasType(order), CBLAS::getCblasType(trans), m, n, alpha, A, ldA, x, incX, beta, y, incY); } // cgemv template typename If::isBlasCompatibleInteger gemv(StorageOrder order, Transpose trans, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *x, IndexType incX, const ComplexFloat &beta, ComplexFloat *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cgemv"); if (trans==Conj) { order = (order==RowMajor) ? ColMajor : RowMajor; gemv(order, ConjTrans, n, m, alpha, A, ldA, x, incX, beta, y, incY); return; } # ifdef CXXBLAS_NO_TEMPORARY if (order==RowMajor && trans==ConjTrans) { CXXBLAS_DEBUG_OUT("gemv_generic"); gemv_generic(order, trans, NoTrans, m, n, alpha, A, ldA, x, incX, beta, y, incY); return; } # endif cblas_cgemv(CBLAS::getCblasType(order), CBLAS::getCblasType(trans), m, n, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(x), incX, reinterpret_cast(&beta), reinterpret_cast(y), incY); } // zgemv template typename If::isBlasCompatibleInteger gemv(StorageOrder order, Transpose trans, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *x, IndexType incX, const ComplexDouble &beta, ComplexDouble *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zgemv"); if (trans==Conj) { order = (order==RowMajor) ? ColMajor : RowMajor; gemv(order, ConjTrans, n, m, alpha, A, ldA, x, incX, beta, y, incY); return; } # ifdef CXXBLAS_NO_TEMPORARY if (order==RowMajor && trans==ConjTrans) { CXXBLAS_DEBUG_OUT("gemv_generic"); gemv_generic(order, trans, NoTrans, m, n, alpha, A, ldA, x, incX, beta, y, incY); return; } # endif cblas_zgemv(CBLAS::getCblasType(order), CBLAS::getCblasType(trans), m, n, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(x), incX, reinterpret_cast(&beta), reinterpret_cast(y), incY); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_GEMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/ger.h000066400000000000000000000112131456314707100227260ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_GER_H #define CXXBLAS_LEVEL2_GER_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GER 1 namespace cxxblas { template void ger(StorageOrder order, IndexType m, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA); template void geru(StorageOrder order, IndexType m, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA); template void gerc(StorageOrder order, IndexType m, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA); #ifdef HAVE_CBLAS // sger template typename If::isBlasCompatibleInteger ger(StorageOrder order, IndexType m, IndexType n, const float &alpha, const float *x, IndexType incX, const float *y, IndexType incY, float *A, IndexType ldA); // dger template typename If::isBlasCompatibleInteger ger(StorageOrder order, IndexType m, IndexType n, const double &alpha, const double *x, IndexType incX, const double *y, IndexType incY, double *A, IndexType ldA); // cgeru template typename If::isBlasCompatibleInteger geru(StorageOrder order, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *x, IndexType incX, const ComplexFloat *y, IndexType incY, ComplexFloat *A, IndexType ldA); // zgeru template typename If::isBlasCompatibleInteger geru(StorageOrder order, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *x, IndexType incX, const ComplexDouble *y, IndexType incY, ComplexDouble *A, IndexType ldA); // cgerc template typename If::isBlasCompatibleInteger gerc(StorageOrder order, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *x, IndexType incX, const ComplexFloat *y, IndexType incY, ComplexFloat *A, IndexType ldA); // zgerc template typename If::isBlasCompatibleInteger gerc(StorageOrder order, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *x, IndexType incX, const ComplexDouble *y, IndexType incY, ComplexDouble *A, IndexType ldA); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_GER_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/ger.tcc000066400000000000000000000206331456314707100232560ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_GER_TCC #define CXXBLAS_LEVEL2_GER_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void geru_generic(StorageOrder order, IndexType m, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("geru_generic"); if (order==ColMajor) { geru_generic(RowMajor, n, m, alpha, y, incY, x, incX, A, ldA); return; } #ifdef CXXBLAS_USE_XERBLA // insert error check here #endif for (IndexType i=0, iX=0; i void gerc_generic(StorageOrder order, Transpose conjugateA, IndexType m, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA) { if (order==ColMajor) { conjugateA = Transpose(conjugateA^Conj); gerc_generic(RowMajor, conjugateA, n, m, alpha, y, incY, x, incX, A, ldA); return; } #ifdef CXXBLAS_USE_XERBLA // insert error check here #endif if (conjugateA==Conj) { for (IndexType i=0, iX=0; i void ger(StorageOrder order, IndexType m, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA) { geru(order, m, n, alpha, x, incX, y, incY, A, ldA); } template void geru(StorageOrder order, IndexType m, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA) { if (incX<0) { x -= incX*(m-1); } if (incY<0) { y -= incY*(n-1); } geru_generic(order, m, n, alpha, x, incX, y, incY, A, ldA); } template void gerc(StorageOrder order, IndexType m, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("gerc_generic"); if (incX<0) { x -= incX*(m-1); } if (incY<0) { y -= incY*(n-1); } gerc_generic(order, NoTrans, m, n, alpha, x, incX, y, incY, A, ldA); } #ifdef HAVE_CBLAS // sger template typename If::isBlasCompatibleInteger ger(StorageOrder order, IndexType m, IndexType n, const float &alpha, const float *x, IndexType incX, const float *y, IndexType incY, float *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_sger"); cblas_sger(CBLAS::getCblasType(order), m, n, alpha, x, incX, y, incY, A, ldA); } // dger template typename If::isBlasCompatibleInteger ger(StorageOrder order, IndexType m, IndexType n, const double &alpha, const double *x, IndexType incX, const double *y, IndexType incY, double *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dger"); cblas_dger(CBLAS::getCblasType(order), m, n, alpha, x, incX, y, incY, A, ldA); } // cgeru template typename If::isBlasCompatibleInteger geru(StorageOrder order, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *x, IndexType incX, const ComplexFloat *y, IndexType incY, ComplexFloat *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cgeru"); cblas_cgeru(CBLAS::getCblasType(order), m, n, reinterpret_cast(&alpha), reinterpret_cast(x), incX, reinterpret_cast(y), incY, reinterpret_cast(A), ldA); } // zgeru template typename If::isBlasCompatibleInteger geru(StorageOrder order, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *x, IndexType incX, const ComplexDouble *y, IndexType incY, ComplexDouble *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zgeru"); cblas_zgeru(CBLAS::getCblasType(order), m, n, reinterpret_cast(&alpha), reinterpret_cast(x), incX, reinterpret_cast(y), incY, reinterpret_cast(A), ldA); } // cgerc template typename If::isBlasCompatibleInteger gerc(StorageOrder order, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *x, IndexType incX, const ComplexFloat *y, IndexType incY, ComplexFloat *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cgerc"); cblas_cgerc(CBLAS::getCblasType(order), m, n, reinterpret_cast(&alpha), reinterpret_cast(x), incX, reinterpret_cast(y), incY, reinterpret_cast(A), ldA); } // zgerc template typename If::isBlasCompatibleInteger gerc(StorageOrder order, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *x, IndexType incX, const ComplexDouble *y, IndexType incY, ComplexDouble *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zgerc"); cblas_zgerc(CBLAS::getCblasType(order), m, n, reinterpret_cast(&alpha), reinterpret_cast(x), incX, reinterpret_cast(y), incY, reinterpret_cast(A), ldA); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_GER_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/hbmv.h000066400000000000000000000060031456314707100231060ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_HBMV_H #define CXXBLAS_LEVEL2_HBMV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HBMV 1 namespace cxxblas { template void hbmv(StorageOrder order, StorageUpLo upLo, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY); #ifdef HAVE_CBLAS // chbmv template typename If::isBlasCompatibleInteger hbmv(StorageOrder order, Transpose trans, IndexType n, IndexType k, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *x, IndexType incX, const ComplexFloat &beta, ComplexFloat *y, IndexType incY); // zhbmv template typename If::isBlasCompatibleInteger hbmv(StorageOrder order, Transpose trans, IndexType n, IndexType k, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *x, IndexType incX, const ComplexDouble &beta, ComplexDouble *y, IndexType incY); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_HBMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/hbmv.tcc000066400000000000000000000167201456314707100234370ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_HBMV_TCC #define CXXBLAS_LEVEL2_HBMV_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void hbmv_generic(StorageOrder order, StorageUpLo upLo, Transpose conjugateA, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { using std::max; using std::min; if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; conjugateA = Transpose(conjugateA^Conj); } scal_init_generic(n, beta, y, incY); if (upLo==Upper) { if (conjugateA==Conj) { for (IndexType i=0, iX=0, iY=0; i void hbmv(StorageOrder order, StorageUpLo upLo, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { CXXBLAS_DEBUG_OUT("hbmv_generic"); if (n==0) { return; } if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } hbmv_generic(order, upLo, NoTrans, n, k, alpha, A, ldA, x, incX, beta, y, incY); } #ifdef HAVE_CBLAS // chbmv template typename If::isBlasCompatibleInteger hbmv(StorageOrder order, Transpose trans, IndexType n, IndexType k, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *x, IndexType incX, const ComplexFloat &beta, ComplexFloat *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_chbmv"); cblas_chbmv(CBLAS::getCblasType(order), CBLAS::getCblasType(trans), n, k, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(x), incX, reinterpret_cast(&beta), reinterpret_cast(y), incY); } // zhbmv template typename If::isBlasCompatibleInteger hbmv(StorageOrder order, Transpose trans, IndexType n, IndexType k, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *x, IndexType incX, const ComplexDouble &beta, ComplexDouble *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zhbmv"); cblas_zhbmv(CBLAS::getCblasType(order), CBLAS::getCblasType(trans), n, k, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(x), incX, reinterpret_cast(&beta), reinterpret_cast(y), incY); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_HBMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/hemv.h000066400000000000000000000057351456314707100231240ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_HEMV_H #define CXXBLAS_LEVEL2_HEMV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HEMV 1 namespace cxxblas { template void hemv(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY); #ifdef HAVE_CBLAS // chemv template typename If::isBlasCompatibleInteger hemv(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *x, IndexType incX, const ComplexFloat &beta, ComplexFloat *y, IndexType incY); // zhemv template typename If::isBlasCompatibleInteger hemv(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *x, IndexType incX, const ComplexDouble &beta, ComplexDouble *y, IndexType incY); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_HEMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/hemv.tcc000066400000000000000000000145341456314707100234430ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_HEMV_TCC #define CXXBLAS_LEVEL2_HEMV_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void hemv_generic(StorageOrder order, StorageUpLo upLo, Transpose conjugateA, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; conjugateA = Transpose(conjugateA^Conj); } scal_init_generic(n, beta, y, incY); if (upLo==Upper) { if (conjugateA==Conj) { for (IndexType i=0, iX=0, iY=0; i void hemv(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { CXXBLAS_DEBUG_OUT("hemv_generic"); if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } hemv_generic(order, upLo, NoTrans, n, alpha, A, ldA, x, incX, beta, y, incY); } #ifdef HAVE_CBLAS // chemv template typename If::isBlasCompatibleInteger hemv(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *x, IndexType incX, const ComplexFloat &beta, ComplexFloat *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_chemv"); cblas_chemv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(x), incX, reinterpret_cast(&beta), reinterpret_cast(y), incY); } // zhemv template typename If::isBlasCompatibleInteger hemv(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *x, IndexType incX, const ComplexDouble &beta, ComplexDouble *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zhemv"); cblas_zhemv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(x), incX, reinterpret_cast(&beta), reinterpret_cast(y), incY); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_HEMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/her.h000066400000000000000000000052421456314707100227340ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_HER_H #define CXXBLAS_LEVEL2_HER_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HER 1 namespace cxxblas { template void her(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, MA *A, IndexType ldA); #ifdef HAVE_CBLAS // cher template typename If::isBlasCompatibleInteger her(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const ComplexFloat *x, IndexType incX, ComplexFloat *A, IndexType ldA); // zher template typename If::isBlasCompatibleInteger her(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const ComplexDouble *x, IndexType incX, ComplexDouble *A, IndexType ldA); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_HER_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/her.tcc000066400000000000000000000116711456314707100232610ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_HER_TCC #define CXXBLAS_LEVEL2_HER_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void her_generic(StorageOrder order, StorageUpLo upLo, Transpose conjugateA, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, MA *A, IndexType ldA) { if (alpha==ALPHA(0)) { return; } if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; conjugateA = Transpose(conjugateA^Conj); } #ifdef CXXBLAS_USE_XERBLA // insert error check here #endif if (upLo==Upper) { if (conjugateA==Conj) { for (IndexType i=0, iX=0; i void her(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("her_generic"); if (incX<0) { x -= incX*(n-1); } her_generic(order, upLo, NoTrans, n, alpha, x, incX, A, ldA); } #ifdef HAVE_CBLAS // cgerc template typename If::isBlasCompatibleInteger her(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const ComplexFloat *x, IndexType incX, ComplexFloat *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cher"); cblas_cher(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, reinterpret_cast(x), incX, reinterpret_cast(A), ldA); } // zgerc template typename If::isBlasCompatibleInteger her(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const ComplexDouble *x, IndexType incX, ComplexDouble *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zher"); cblas_zher(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, reinterpret_cast(x), incX, reinterpret_cast(A), ldA); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_HER_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/her2.h000066400000000000000000000055351456314707100230230ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_HER2_H #define CXXBLAS_LEVEL2_HER2_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HER2 1 namespace cxxblas { template void her2(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA); #ifdef HAVE_CBLAS // cher template typename If::isBlasCompatibleInteger her2(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *x, IndexType incX, const ComplexFloat *y, IndexType incY, ComplexFloat *A, IndexType ldA); // zher template typename If::isBlasCompatibleInteger her2(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *x, IndexType incX, const ComplexDouble *y, IndexType incY, ComplexDouble *A, IndexType ldA); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_HER2_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/her2.tcc000066400000000000000000000144321456314707100233410ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_HER2_TCC #define CXXBLAS_LEVEL2_HER2_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void her2_generic(StorageOrder order, StorageUpLo upLo, Transpose conjugateA, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA) { if (alpha==ALPHA(0)) { return; } if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; conjugateA = Transpose(conjugateA^Conj); her2_generic(RowMajor, upLo, conjugateA, n, alpha, x, incX, y, incY, A, ldA); return; } #ifdef CXXBLAS_USE_XERBLA // insert error check here #endif if (upLo==Upper) { if (conjugateA==Conj) { for (IndexType i=0, iX=0, iY=0; i void her2(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("her2_generic"); if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } her2_generic(order, upLo, NoTrans, n, alpha, x, incX, y, incY, A, ldA); } #ifdef HAVE_CBLAS // cgerc template typename If::isBlasCompatibleInteger her2(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *x, IndexType incX, const ComplexFloat *y, IndexType incY, ComplexFloat *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cher2"); cblas_cher2(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, reinterpret_cast(&alpha), reinterpret_cast(x), incX, reinterpret_cast(y), incY, reinterpret_cast(A), ldA); } // zgerc template typename If::isBlasCompatibleInteger her2(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *x, IndexType incX, const ComplexDouble *y, IndexType incY, ComplexDouble *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zher2"); cblas_zher2(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, reinterpret_cast(&alpha), reinterpret_cast(x), incX, reinterpret_cast(y), incY, reinterpret_cast(A), ldA); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_HER2_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/hpmv.h000066400000000000000000000056611456314707100231350ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_HPMV_H #define CXXBLAS_LEVEL2_HPMV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HPMV 1 namespace cxxblas { template void hpmv(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY); #ifdef HAVE_CBLAS // chpmv template typename If::isBlasCompatibleInteger hpmv(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const ComplexFloat *x, IndexType incX, const ComplexFloat &beta, ComplexFloat *y, IndexType incY); // zhpmv template typename If::isBlasCompatibleInteger hpmv(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const ComplexDouble *x, IndexType incX, const ComplexDouble &beta, ComplexDouble *y, IndexType incY); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_HPMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/hpmv.tcc000066400000000000000000000147551456314707100234630ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_HPMV_TCC #define CXXBLAS_LEVEL2_HPMV_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void hpmv_generic(StorageOrder order, StorageUpLo upLo, Transpose conjugateA, IndexType n, const ALPHA &alpha, const MA *A, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; conjugateA = Transpose(conjugateA^Conj); } scal_init_generic(n, beta, y, incY); if (upLo==Upper) { if (conjugateA==Conj) { for (IndexType i=0, iY=0, iX=0; i void hpmv(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { CXXBLAS_DEBUG_OUT("hpmv_generic"); if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } hpmv_generic(order, upLo, NoTrans, n, alpha, A, x, incX, beta, y, incY); } #ifdef HAVE_CBLAS // chpmv template typename If::isBlasCompatibleInteger hpmv(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const ComplexFloat *x, IndexType incX, const ComplexFloat &beta, ComplexFloat *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_chpmv"); cblas_chpmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, reinterpret_cast(&alpha), reinterpret_cast(A), reinterpret_cast(x), incX, reinterpret_cast(&beta), reinterpret_cast(y), incY); } // zhpmv template typename If::isBlasCompatibleInteger hpmv(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const ComplexDouble *x, IndexType incX, const ComplexDouble &beta, ComplexDouble *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zhpmv"); cblas_zhpmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, reinterpret_cast(&alpha), reinterpret_cast(A), reinterpret_cast(x), incX, reinterpret_cast(&beta), reinterpret_cast(y), incY); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_HPMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/hpr.h000066400000000000000000000051741456314707100227530ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_HPR_H #define CXXBLAS_LEVEL2_HPR_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SPR 1 namespace cxxblas { template void hpr(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, MA *A); #ifdef HAVE_CBLAS // chpr template typename If::isBlasCompatibleInteger hpr(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const ComplexFloat *x, IndexType incX, ComplexFloat *A); // zhpr template typename If::isBlasCompatibleInteger hpr(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const ComplexDouble *x, IndexType incX, ComplexDouble *A); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_HPR_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/hpr.tcc000066400000000000000000000120051456314707100232640ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_HPR_TCC #define CXXBLAS_LEVEL2_HPR_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void hpr_generic(StorageOrder order, StorageUpLo upLo, Transpose conjugateA, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, MA *A) { if (alpha==ALPHA(0)) { return; } if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; conjugateA = Transpose(conjugateA^Conj); } #ifdef CXXBLAS_USE_XERBLA // insert error check here #endif if (upLo==Upper) { if (conjugateA==Conj) { for (IndexType i=0, iX=0; i void hpr(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, MA *A) { CXXBLAS_DEBUG_OUT("hpr_generic"); if (incX<0) { x -= incX*(n-1); } hpr_generic(order, upLo, NoTrans, n, alpha, x, incX, A); } #ifdef HAVE_CBLAS // chpr template typename If::isBlasCompatibleInteger hpr(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const ComplexFloat *x, IndexType incX, ComplexFloat *A) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_chpr"); cblas_chpr(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, reinterpret_cast(x), incX, reinterpret_cast(A)); } // zhpr template typename If::isBlasCompatibleInteger hpr(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const ComplexDouble *x, IndexType incX, ComplexDouble *A) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zhpr"); cblas_zhpr(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, reinterpret_cast(x), incX, reinterpret_cast(A)); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_HPR_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/hpr2.h000066400000000000000000000053401456314707100230300ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_HPR2_H #define CXXBLAS_LEVEL2_HPR2_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" namespace cxxblas { template void hpr2(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A); #ifdef HAVE_CBLAS // cher template typename If::isBlasCompatibleInteger hpr2(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const ComplexFloat *x, IndexType incX, const ComplexFloat *y, IndexType incY, ComplexFloat *A); // zher template typename If::isBlasCompatibleInteger hpr2(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const ComplexDouble *x, IndexType incX, const ComplexDouble *y, IndexType incY, ComplexDouble *A); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_HPR2_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/hpr2.tcc000066400000000000000000000145011456314707100233510ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_HPR2_TCC #define CXXBLAS_LEVEL2_HPR2_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void hpr2_generic(StorageOrder order, StorageUpLo upLo, Transpose conjugateA, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A) { if (alpha==ALPHA(0)) { return; } if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; conjugateA = Transpose(conjugateA^Conj); hpr2_generic(RowMajor, upLo, conjugateA, n, alpha, x, incX, y, incY, A); return; } #ifdef CXXBLAS_USE_XERBLA // insert error check here #endif if (upLo==Upper) { if (conjugateA==Conj) { for (IndexType i=0, iX=0, iY=0; i void hpr2(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A) { CXXBLAS_DEBUG_OUT("hpr2_generic"); if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } hpr2_generic(order, upLo, NoTrans, n, alpha, x, incX, y, incY, A); } #ifdef HAVE_CBLAS // cgerc template typename If::isBlasCompatibleInteger hpr2(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const ComplexFloat *x, IndexType incX, const ComplexFloat *y, IndexType incY, ComplexFloat *A) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_chpr2"); cblas_che2r(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, reinterpret_cast(&alpha), reinterpret_cast(x), incX, reinterpret_cast(y), incY, reinterpret_cast(A)); } // zgerc template typename If::isBlasCompatibleInteger hpr2(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const ComplexDouble *x, IndexType incX, const ComplexDouble *y, IndexType incY, ComplexDouble *A) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zhpr2"); cblas_zhpr2(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, reinterpret_cast(&alpha), reinterpret_cast(x), incX, reinterpret_cast(y), incY, reinterpret_cast(A)); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_HPR2_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/level2.h000066400000000000000000000051501456314707100233450ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_LEVEL2_H #define CXXBLAS_LEVEL2_LEVEL2_H 1 #include "xflens/cxxblas/level2/gbmv.h" #include "xflens/cxxblas/level2/gemv.h" #include "xflens/cxxblas/level2/ger.h" #include "xflens/cxxblas/level2/hbmv.h" #include "xflens/cxxblas/level2/hemv.h" #include "xflens/cxxblas/level2/her.h" #include "xflens/cxxblas/level2/her2.h" #include "xflens/cxxblas/level2/hpmv.h" #include "xflens/cxxblas/level2/hpr.h" #include "xflens/cxxblas/level2/hpr2.h" #include "xflens/cxxblas/level2/sbmv.h" #include "xflens/cxxblas/level2/spmv.h" #include "xflens/cxxblas/level2/spr.h" #include "xflens/cxxblas/level2/spr2.h" #include "xflens/cxxblas/level2/symv.h" #include "xflens/cxxblas/level2/syr.h" #include "xflens/cxxblas/level2/syr2.h" #include "xflens/cxxblas/level2/tbmv.h" #include "xflens/cxxblas/level2/tbsv.h" #include "xflens/cxxblas/level2/tpmv.h" #include "xflens/cxxblas/level2/tpsv.h" #include "xflens/cxxblas/level2/trmv.h" #include "xflens/cxxblas/level2/trsv.h" #endif // CXXBLAS_LEVEL2_LEVEL2_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/level2.tcc000066400000000000000000000052341456314707100236720ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_LEVEL2_TCC #define CXXBLAS_LEVEL2_LEVEL2_TCC 1 #include "xflens/cxxblas/level2/gbmv.tcc" #include "xflens/cxxblas/level2/gemv.tcc" #include "xflens/cxxblas/level2/ger.tcc" #include "xflens/cxxblas/level2/hbmv.tcc" #include "xflens/cxxblas/level2/hemv.tcc" #include "xflens/cxxblas/level2/her.tcc" #include "xflens/cxxblas/level2/her2.tcc" #include "xflens/cxxblas/level2/hpmv.tcc" #include "xflens/cxxblas/level2/hpr.tcc" #include "xflens/cxxblas/level2/hpr2.tcc" #include "xflens/cxxblas/level2/sbmv.tcc" #include "xflens/cxxblas/level2/spmv.tcc" #include "xflens/cxxblas/level2/spr.tcc" #include "xflens/cxxblas/level2/spr2.tcc" #include "xflens/cxxblas/level2/syr2.tcc" #include "xflens/cxxblas/level2/symv.tcc" #include "xflens/cxxblas/level2/syr.tcc" #include "xflens/cxxblas/level2/tbmv.tcc" #include "xflens/cxxblas/level2/tbsv.tcc" #include "xflens/cxxblas/level2/tpmv.tcc" #include "xflens/cxxblas/level2/tpsv.tcc" #include "xflens/cxxblas/level2/trmv.tcc" #include "xflens/cxxblas/level2/trsv.tcc" #endif // CXXBLAS_LEVEL2_LEVEL2_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/sbmv.h000066400000000000000000000056441456314707100231330ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_SBMV_H #define CXXBLAS_LEVEL2_SBMV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SBMV 1 namespace cxxblas { template void sbmv(StorageOrder order, StorageUpLo upLo, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY); #ifdef HAVE_CBLAS // ssbmv template typename If::isBlasCompatibleInteger sbmv(StorageOrder order, StorageUpLo upLo, IndexType n, IndexType k, float alpha, const float *A, IndexType ldA, const float *x, IndexType incX, float beta, float *y, IndexType incY); // dsbmv template typename If::isBlasCompatibleInteger sbmv(StorageOrder order, StorageUpLo upLo, IndexType n, IndexType k, double alpha, const double *A, IndexType ldA, const double *x, IndexType incX, double &beta, double *y, IndexType incY); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_SBMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/sbmv.tcc000066400000000000000000000125361456314707100234530ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_SBMV_TCC #define CXXBLAS_LEVEL2_SBMV_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void sbmv_generic(StorageOrder order, StorageUpLo upLo, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { using std::min; using std::max; if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; sbmv_generic(RowMajor, upLo, n, k, alpha, A, ldA, x, incX, beta, y, incY); return; } scal_init_generic(n, beta, y, incY); if (upLo==Upper) { for (IndexType i=0, iX=0, iY=0; i void sbmv(StorageOrder order, StorageUpLo upLo, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { CXXBLAS_DEBUG_OUT("sbmv_generic"); if (n==0) { return; } if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } sbmv_generic(order, upLo, n, k, alpha, A, ldA, x, incX, beta, y, incY); } #ifdef HAVE_CBLAS // ssbmv template typename If::isBlasCompatibleInteger sbmv(StorageOrder order, StorageUpLo upLo, IndexType n, IndexType k, float alpha, const float *A, IndexType ldA, const float *x, IndexType incX, float beta, float *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ssbmv"); cblas_ssbmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, k, alpha, A, ldA, x, incX, beta, y, incY); } // dsbmv template typename If::isBlasCompatibleInteger sbmv(StorageOrder order, StorageUpLo upLo, IndexType n, IndexType k, double alpha, const double *A, IndexType ldA, const double *x, IndexType incX, double beta, double *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dsbmv"); cblas_dsbmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, k, alpha, A, ldA, x, incX, beta, y, incY); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_SBMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/spmv.h000066400000000000000000000055161456314707100231470ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_SPMV_H #define CXXBLAS_LEVEL2_SPMV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SPMV 1 namespace cxxblas { template void spmv(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY); #ifdef HAVE_CBLAS // sspmv template typename If::isBlasCompatibleInteger spmv(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *A, const float *x, IndexType incX, float beta, float *y, IndexType incY); // dspmv template typename If::isBlasCompatibleInteger spmv(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *A, const double *x, IndexType incX, double beta, double *y, IndexType incY); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_SPMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/spmv.tcc000066400000000000000000000113461456314707100234670ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_SPMV_TCC #define CXXBLAS_LEVEL2_SPMV_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void spmv_generic(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; } scal_init_generic(n, beta, y, incY); if (upLo==Upper) { for (IndexType i=0, iY=0, iX=0; i void spmv(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { CXXBLAS_DEBUG_OUT("spmv_generic"); if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } spmv_generic(order, upLo, n, alpha, A, x, incX, beta, y, incY); } #ifdef HAVE_CBLAS // sspmv template typename If::isBlasCompatibleInteger spmv(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *A, const float *x, IndexType incX, float beta, float *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_sspmv"); cblas_sspmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, A, x, incX, beta, y, incY); } // dspmv template typename If::isBlasCompatibleInteger spmv(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *A, const double *x, IndexType incX, double beta, double *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dspmv"); cblas_dspmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, A, x, incX, beta, y, incY); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_SPMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/spr.h000066400000000000000000000051401456314707100227570ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_SPR_H #define CXXBLAS_LEVEL2_SPR_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SPR 1 namespace cxxblas { template void spr(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, MA *A); #ifdef HAVE_CBLAS // sspr template typename If::isBlasCompatibleInteger spr(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *x, IndexType incX, float *A); // dspr template typename If::isBlasCompatibleInteger spr(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *x, IndexType incX, double *A); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_SPR_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/spr.tcc000066400000000000000000000076731456314707100233160ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_SPR_TCC #define CXXBLAS_LEVEL2_SPR_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void spr_generic(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, MA *A) { if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; spr_generic(RowMajor, upLo, n, alpha, x, incX, A); return; } #ifdef CXXBLAS_USE_XERBLA // insert error check here #endif if (upLo==Upper) { for (IndexType i=0, iX=0; i void spr(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, MA *A) { CXXBLAS_DEBUG_OUT("spr_generic"); if (incX<0) { x -= incX*(n-1); } spr_generic(order, upLo, n, alpha, x, incX, A); } #ifdef HAVE_CBLAS // sspr template typename If::isBlasCompatibleInteger spr(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *x, IndexType incX, float *A) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_sspr"); cblas_sspr(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, x, incX, A); } // dspr template typename If::isBlasCompatibleInteger spr(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *x, IndexType incX, double *A) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dspr"); cblas_dspr(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, x, incX, A); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_SPR_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/spr2.h000066400000000000000000000053031456314707100230420ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_SPR2_H #define CXXBLAS_LEVEL2_SPR2_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" namespace cxxblas { template void spr2(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A); #ifdef HAVE_CBLAS // sspr2 template typename If::isBlasCompatibleInteger spr2(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *x, IndexType incX, const float *y, IndexType incY, float *A); // dspr2 template typename If::isBlasCompatibleInteger spr2(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *x, IndexType incX, const double *y, IndexType incY, double *A); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_SPR2_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/spr2.tcc000066400000000000000000000112261456314707100233650ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_SPR2_TCC #define CXXBLAS_LEVEL2_SPR2_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void spr2_generic(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A) { if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; spr2_generic(RowMajor, upLo, n, alpha, x, incX, y, incY, A); return; } #ifdef CXXBLAS_USE_XERBLA // insert error check here #endif if (upLo==Upper) { for (IndexType i=0, iX=0, iY=0; i void spr2(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A) { CXXBLAS_DEBUG_OUT("spr2_generic"); if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } spr2_generic(order, upLo, n, alpha, x, incX, y, incY, A); } #ifdef HAVE_CBLAS // sspr2 template typename If::isBlasCompatibleInteger spr2(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *x, IndexType incX, const float *y, IndexType incY, float *A) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_sspr2"); cblas_sspr2(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, reinterpret_cast(x), incX, reinterpret_cast(y), incY, reinterpret_cast(A)); } // dspr2 template typename If::isBlasCompatibleInteger spr2(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *x, IndexType incX, const double *y, IndexType incY, double *A) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dspr2"); cblas_dspr2(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, reinterpret_cast(x), incX, reinterpret_cast(y), incY, reinterpret_cast(A)); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_SPR2_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/symv.h000066400000000000000000000072561456314707100231630ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_SYMV_H #define CXXBLAS_LEVEL2_SYMV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYMV 1 namespace cxxblas { template void symv(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY); #ifdef HAVE_CBLAS // ssymv template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *A, IndexType ldA, const float *x, IndexType incX, float beta, float *y, IndexType incY); // dsymv template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *A, IndexType ldA, const double *x, IndexType incX, double beta, double *y, IndexType incY); // Complex functions symv provided by lapack #ifdef USE_CXXLAPACK // csymv template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *x, IndexType incX, const ComplexFloat &beta, ComplexFloat *y, IndexType incY); // zsymv template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *x, IndexType incX, const ComplexDouble &beta, ComplexDouble *y, IndexType incY); #endif // USE_CXXLAPACK #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_SYMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/symv.tcc000066400000000000000000000142651456314707100235030ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_SYMV_TCC #define CXXBLAS_LEVEL2_SYMV_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" #ifdef USE_CXXLAPACK #include "xflens/cxxlapack/cxxlapack.h" #endif namespace cxxblas { template void symv_generic(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; } scal_init_generic(n, beta, y, incY); if (upLo==Upper) { for (IndexType i=0, iY=0; i void symv(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { CXXBLAS_DEBUG_OUT("symv_generic"); if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } symv_generic(order, upLo, n, alpha, A, ldA, x, incX, beta, y, incY); } #ifdef HAVE_CBLAS // ssymv template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *A, IndexType ldA, const float *x, IndexType incX, float beta, float *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ssymv"); cblas_ssymv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, A, ldA, x, incX, beta, y, incY); } // dsymv template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *A, IndexType ldA, const double *x, IndexType incX, double beta, double *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dsymv"); cblas_dsymv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, A, ldA, x, incX, beta, y, incY); } #ifdef USE_CXXLAPACK // csymv template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *x, IndexType incX, const ComplexFloat &beta, ComplexFloat *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_symv"); if (order==RowMajor) { upLo = (upLo==Upper) ? Lower : Upper; } cxxlapack::symv(getF77BlasChar(upLo), n, &alpha, A, ldA, x, incX, beta, y, incY);; } // zsymv template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *x, IndexType incX, const ComplexDouble &beta, ComplexDouble *y, IndexType incY) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_symv"); if (order==RowMajor) { upLo = (upLo==Upper) ? Lower : Upper; } cxxlapack::symv(getF77BlasChar(upLo), n, alpha, A, ldA, x, incX, beta, y, incY);; } #endif // USE_CXXLAPACK #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_SYMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/syr.h000066400000000000000000000052151456314707100227730ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_SYR_H #define CXXBLAS_LEVEL2_SYR_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYR 1 namespace cxxblas { template void syr(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, MA *A, IndexType ldA); #ifdef HAVE_CBLAS // ssyr template typename If::isBlasCompatibleInteger syr(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *x, IndexType incX, float *A, IndexType ldA); // dsyr template typename If::isBlasCompatibleInteger syr(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *x, IndexType incX, double *A, IndexType ldA); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_SYR_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/syr.tcc000066400000000000000000000077661456314707100233320ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_SYR_TCC #define CXXBLAS_LEVEL2_SYR_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void syr_generic(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, MA *A, IndexType ldA) { if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; syr_generic(RowMajor, upLo, n, alpha, x, incX, A, ldA); return; } #ifdef CXXBLAS_USE_XERBLA // insert error check here #endif if (upLo==Upper) { for (IndexType i=0, iX=0; i void syr(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("syr_generic"); if (incX<0) { x -= incX*(n-1); } syr_generic(order, upLo, n, alpha, x, incX, A, ldA); } #ifdef HAVE_CBLAS // ssyr template typename If::isBlasCompatibleInteger syr(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *x, IndexType incX, float *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ssyr"); cblas_ssyr(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, x, incX, A, ldA); } // dsyr template typename If::isBlasCompatibleInteger syr(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *x, IndexType incX, double *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dsyr"); cblas_dsyr(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, x, incX, A, ldA); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_SYR_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/syr2.h000066400000000000000000000054451456314707100230620ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_SYR2_H #define CXXBLAS_LEVEL2_SYR2_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYR2 1 namespace cxxblas { template void syr2(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA); #ifdef HAVE_CBLAS // ssyr2 template typename If::isBlasCompatibleInteger syr2(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *x, IndexType incX, const float *y, IndexType incY, float *A, IndexType ldA); // dsyr2 template typename If::isBlasCompatibleInteger syr2(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *x, IndexType incX, const double *y, IndexType incY, double *A, IndexType ldA); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_SYR2_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/syr2.tcc000066400000000000000000000111361456314707100233760ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_SYR2_TCC #define CXXBLAS_LEVEL2_SYR2_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void syr2_generic(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA) { if (order==ColMajor) { upLo = (upLo==Upper) ? Lower : Upper; syr2_generic(RowMajor, upLo, n, alpha, y, incY, x, incX, A, ldA); return; } #ifdef CXXBLAS_USE_XERBLA // insert error check here #endif if (upLo==Upper) { for (IndexType i=0, iX=0, iY=0; i void syr2(StorageOrder order, StorageUpLo upLo, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("syr2_generic"); if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } syr2_generic(order, upLo, n, alpha, x, incX, y, incY, A, ldA); } #ifdef HAVE_CBLAS // ssyr2 template typename If::isBlasCompatibleInteger syr2(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *x, IndexType incX, const float *y, IndexType incY, float *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ssyr2"); cblas_ssyr2(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, x, incX, y, incY, A, ldA); } // dsyr2 template typename If::isBlasCompatibleInteger syr2(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *x, IndexType incX, const double *y, IndexType incY, double *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dsyr2"); cblas_dsyr2(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), n, alpha, x, incX, y, incY, A, ldA); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_SYR2_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/tbmv.h000066400000000000000000000064631456314707100231340ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_TBMV_H #define CXXBLAS_LEVEL2_TBMV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_TBMV 1 namespace cxxblas { template void tbmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const MA *A, IndexType ldA, VX *x, IndexType incX); #ifdef HAVE_CBLAS // stbmv template typename If::isBlasCompatibleInteger tbmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const float *A, IndexType ldA, float *x, IndexType incX); // dtbmv template typename If::isBlasCompatibleInteger tbmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const double *A, IndexType ldA, double *x, IndexType incX); // ctbmv template typename If::isBlasCompatibleInteger tbmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const ComplexFloat *A, IndexType ldA, ComplexFloat *x, IndexType incX); // ztbmv template typename If::isBlasCompatibleInteger tbmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const ComplexDouble *A, IndexType ldA, ComplexDouble *x, IndexType incX); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_TBMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/tbmv.tcc000066400000000000000000000316241456314707100234530ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_TBMV_TCC #define CXXBLAS_LEVEL2_TBMV_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void tbmv_generic(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const MA *A, IndexType ldA, VX *x, IndexType incX) { using std::max; using std::min; if (order==ColMajor) { transA = Transpose(transA^Trans); upLo = (upLo==Upper) ? Lower : Upper; tbmv_generic(RowMajor, upLo, transA, diag, n, k, A, ldA, x, incX); return; } if (incX<0) { x -= incX*(n-1); } if (transA==NoTrans) { if (upLo==Upper) { if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { IndexType iA = max(k-i, IndexType(0)); IndexType len = min(k, i) + 1; IndexType i_ = max(i-k, IndexType(0)); VX x_; dotu_generic(len, A+ldA*i+iA, IndexType(1), x+i_*incX, IndexType(incX), x_); x[iX] = x_; } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { IndexType iA = max(k-i, IndexType(0)); IndexType len = min(k, i) + 1; IndexType i_ = max(i-k, IndexType(0)); VX x_; dotu_generic(len-1, A+ldA*i+iA, IndexType(1), x+i_*incX, IndexType(incX), x_); x[iX] += x_; } } } } if (transA==Conj) { if (upLo==Upper) { if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { IndexType iA = max(k-i, IndexType(0)); IndexType len = min(k, i) + 1; IndexType i_ = max(i-k, IndexType(0)); VX x_; dot_generic(len, A+ldA*i+iA, IndexType(1), x+i_*incX, IndexType(incX), x_); x[iX] = x_; } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { IndexType iA = max(k-i, IndexType(0)); IndexType len = min(k, i) + 1; IndexType i_ = max(i-k, IndexType(0)); VX x_; dot_generic(len-1, A+ldA*i+iA, IndexType(1), x+i_*incX, IndexType(incX), x_); x[iX] += x_; } } } } if (transA==Trans) { if (upLo==Upper) { if (diag==NonUnit) { for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { IndexType len = min(k+1, n-i); axpy_generic(len-1, x[iX], A+ldA*i+1, IndexType(1), x+iX+incX, incX); x[iX] *= *(A+ldA*i); } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { IndexType len = min(k+1, n-i); axpy_generic(len-1, x[iX], A+ldA*i+1, IndexType(1), x+iX+incX, incX); } } } else { /* upLo==Lower */ if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { IndexType len = min(k+1, n-i); acxpy_generic(len-1, x[iX], A+ldA*i+1, IndexType(1), x+iX+incX, incX); x[iX] *= conjugate(A[ldA*i]); } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { IndexType len = min(k+1, n-i); acxpy_generic(len-1, x[iX], A+ldA*i+1, IndexType(1), x+iX+incX, incX); } } } else { /* upLo==Lower */ if (diag==NonUnit) { for (IndexType i=0, iX=0; i void tbmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const MA *A, IndexType ldA, VX *x, IndexType incX) { CXXBLAS_DEBUG_OUT("tbmv_generic"); if (n==0) { return; } tbmv_generic(order, upLo, transA, diag, n, k, A, ldA, x, incX); } #ifdef HAVE_CBLAS // stbmv template typename If::isBlasCompatibleInteger tbmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const float *A, IndexType ldA, float *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_stbmv"); cblas_stbmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, k, A, ldA, x, incX); } // dtbmv template typename If::isBlasCompatibleInteger tbmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const double *A, IndexType ldA, double *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dtbmv"); cblas_dtbmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, k, A, ldA, x, incX); } // ctbmv template typename If::isBlasCompatibleInteger tbmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const ComplexFloat *A, IndexType ldA, ComplexFloat *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ctbmv"); if (transA==Conj) { CXXBLAS_DEBUG_OUT("tbmv_generic"); tbmv_generic(order, upLo, transA, diag, n, k, A, ldA, x, incX); return; } cblas_ctbmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, k, reinterpret_cast(A), ldA, reinterpret_cast(x), incX); } // ztbmv template typename If::isBlasCompatibleInteger tbmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const ComplexDouble *A, IndexType ldA, ComplexDouble *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ztbmv"); if (transA==Conj) { CXXBLAS_DEBUG_OUT("tbmv_generic"); tbmv_generic(order, upLo, transA, diag, n, k, A, ldA, x, incX); return; } cblas_ztbmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, k, reinterpret_cast(A), ldA, reinterpret_cast(x), incX); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_TBMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/tbsv.h000066400000000000000000000064631456314707100231420ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_TBSV_H #define CXXBLAS_LEVEL2_TBSV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_TBSV 1 namespace cxxblas { template void tbsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const MA *A, IndexType ldA, VX *x, IndexType incX); #ifdef HAVE_CBLAS // stbsv template typename If::isBlasCompatibleInteger tbsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const float *A, IndexType ldA, float *x, IndexType incX); // dtbsv template typename If::isBlasCompatibleInteger tbsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const double *A, IndexType ldA, double *x, IndexType incX); // ctbsv template typename If::isBlasCompatibleInteger tbsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const ComplexFloat *A, IndexType ldA, ComplexFloat *x, IndexType incX); // ztbsv template typename If::isBlasCompatibleInteger tbsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const ComplexDouble *A, IndexType ldA, ComplexDouble *x, IndexType incX); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_TBSV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/tbsv.tcc000066400000000000000000000320661456314707100234620ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_TBSV_TCC #define CXXBLAS_LEVEL2_TBSV_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void tbsv_generic(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const MA *A, IndexType ldA, VX *x, IndexType incX) { using std::max; using std::min; if (order==ColMajor) { transA = Transpose(transA^Trans); upLo = (upLo==Upper) ? Lower : Upper; } if (incX<0) { x -= incX*(n-1); } if (transA==NoTrans) { if (upLo==Upper) { if (diag==NonUnit) { for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { IndexType len = min(k+1, n-i); VX x_; dotu_generic(len-1, A+ldA*i+1, IndexType(1), x+iX+incX, IndexType(incX), x_); x[iX] -= x_; x[iX] /= *(A+ldA*i); } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { IndexType len = min(k+1, n-i); VX x_; dotu_generic(len-1, A+ldA*i+1, IndexType(1), x+iX+incX, IndexType(incX), x_); x[iX] -= x_; } } } else { /* upLo==Lower */ if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { IndexType len = min(k+1, n-i); VX x_; dot_generic(len-1, A+ldA*i+1, IndexType(1), x+iX+incX, IndexType(incX), x_); x[iX] -= x_; x[iX] /= conjugate(A[ldA*i]); } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { IndexType len = min(k+1, n-i); VX x_; dot_generic(len-1, A+ldA*i+1, IndexType(1), x+iX+incX, IndexType(incX), x_); x[iX] -= x_; } } } else { /* upLo==Lower */ if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { IndexType iA = max(k-i, IndexType(0)); IndexType len = min(k, i) + 1; IndexType iY = max(i-k, IndexType(0))*incX; x[iX] /= *(A+ldA*i+iA+len-1); axpy_generic(len-1, -x[iX], A+ldA*i+iA, IndexType(1), x+iY, incX); } } else { for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { IndexType iA = max(k-i, IndexType(0)); IndexType len = min(k, i) + 1; IndexType iY = max(i-k, IndexType(0))*incX; axpy_generic(len-1, -x[iX], A+ldA*i+iA, IndexType(1), x+iY, incX); } } } } if (transA==ConjTrans) { if (upLo==Upper) { if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { IndexType iA = max(k-i, IndexType(0)); IndexType len = min(k, i) + 1; IndexType iY = max(i-k, IndexType(0))*incX; x[iX] /= conjugate(A[ldA*i+iA+len-1]); acxpy_generic(len-1, -x[iX], A+ldA*i+iA, IndexType(1), x+iY, incX); } } else { for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { IndexType iA = max(k-i, IndexType(0)); IndexType len = min(k, i) + 1; IndexType iY = max(i-k, IndexType(0))*incX; acxpy_generic(len-1, -x[iX], A+ldA*i+iA, IndexType(1), x+iY, incX); } } } } } //------------------------------------------------------------------------------ template void tbsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const MA *A, IndexType ldA, VX *x, IndexType incX) { CXXBLAS_DEBUG_OUT("tbsv_generic"); if (n==0) { return; } tbsv_generic(order, upLo, transA, diag, n, k, A, ldA, x, incX); } #ifdef HAVE_CBLAS // stbsv template typename If::isBlasCompatibleInteger tbsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const float *A, IndexType ldA, float *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_stbsv"); cblas_stbsv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, k, A, ldA, x, incX); } // dtbsv template typename If::isBlasCompatibleInteger tbsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const double *A, IndexType ldA, double *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dtbsv"); cblas_dtbsv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, k, A, ldA, x, incX); } // ctbsv template typename If::isBlasCompatibleInteger tbsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const ComplexFloat *A, IndexType ldA, ComplexFloat *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ctbsv"); if (transA==Conj) { CXXBLAS_DEBUG_OUT("tbsv_generic"); tbsv_generic(order, upLo, transA, diag, n, k, A, ldA, x, incX); return; } cblas_ctbsv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, k, reinterpret_cast(A), ldA, reinterpret_cast(x), incX); } // ztbsv template typename If::isBlasCompatibleInteger tbsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, IndexType k, const ComplexDouble *A, IndexType ldA, ComplexDouble *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ztbsv"); if (transA==Conj) { CXXBLAS_DEBUG_OUT("tbsv_generic"); tbsv_generic(order, upLo, transA, diag, n, k, A, ldA, x, incX); return; } cblas_ztbsv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, k, reinterpret_cast(A), ldA, reinterpret_cast(x), incX); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_TBSV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/tpmv.h000066400000000000000000000062501456314707100231440ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_TPMV_H #define CXXBLAS_LEVEL2_TPMV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_TPMV 1 namespace cxxblas { template void tpmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const MA *A, VX *x, IndexType incX); #ifdef HAVE_CBLAS // stpmv template typename If::isBlasCompatibleInteger tpmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const float *A, float *x, IndexType incX); // dtpmv template typename If::isBlasCompatibleInteger tpmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const double *A, double *x, IndexType incX); // ctpmv template typename If::isBlasCompatibleInteger tpmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexFloat *A, ComplexFloat *x, IndexType incX); // ztpmv template typename If::isBlasCompatibleInteger tpmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexDouble *A, ComplexDouble *x, IndexType incX); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_TPMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/tpmv.tcc000066400000000000000000000241301456314707100234630ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_TPMV_TCC #define CXXBLAS_LEVEL2_TPMV_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void tpmv_generic(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const MA *A, VX *x, IndexType incX) { if (order==ColMajor) { transA = Transpose(transA^Trans); upLo = (upLo==Upper) ? Lower : Upper; tpmv_generic(RowMajor, upLo, transA, diag, n, A, x, incX); return; } if (incX<0) { x -= incX*(n-1); } if (transA==NoTrans) { if (upLo==Upper) { if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { VX x_; dotu_generic(i+1, A+i*(i+1)/2, IndexType(1), x, incX, x_); x[iX] = x_; } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>0; --i, iX-=incX) { VX x_; dotu_generic(i, A+i*(i+1)/2, IndexType(1), x, incX, x_); x[iX] += x_; } } } } if (transA==Conj) { if (upLo==Upper) { if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { VX x_; dot_generic(i+1, A+i*(i+1)/2, IndexType(1), x, incX, x_); x[iX] = x_; } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>0; --i, iX-=incX) { VX x_; dot_generic(i, A+i*(i+1)/2, IndexType(1), x, incX, x_); x[iX] += x_; } } } } if (transA==Trans) { if (upLo==Upper) { if (diag==NonUnit) { for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { axpy_generic(n-1-i, x[iX], A+i*(2*n-i+1)/2+1, IndexType(1), x+iX+incX, incX); x[iX] *= *(A+i*(2*n-i+1)/2); } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { axpy_generic(n-1-i, x[iX], A+i*(2*n-i+1)/2+1, IndexType(1), x+iX+incX, incX); } } } else { /* upLo==Lower */ if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { acxpy_generic(n-1-i, x[iX], A+i*(2*n-i+1)/2+1, IndexType(1), x+iX+incX, incX); x[iX] *= conjugate(A[i*(2*n-i+1)/2]); } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { acxpy_generic(n-1-i, x[iX], A+i*(2*n-i+1)/2+1, IndexType(1), x+iX+incX, incX); } } } else { /* upLo==Lower */ if (diag==NonUnit) { for (IndexType i=0, iX=0; i void tpmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const MA *A, VX *x, IndexType incX) { CXXBLAS_DEBUG_OUT("tpmv_generic"); tpmv_generic(order, upLo, transA, diag, n, A, x, incX); } #ifdef HAVE_CBLAS // stpmv template typename If::isBlasCompatibleInteger tpmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const float *A, float *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_stpmv"); cblas_stpmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, A, x, incX); } // dtpmv template typename If::isBlasCompatibleInteger tpmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const double *A, double *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dtpmv"); cblas_dtpmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, A, x, incX); } // ctpmv template typename If::isBlasCompatibleInteger tpmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexFloat *A, ComplexFloat *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ctpmv"); if (transA==Conj) { CXXBLAS_DEBUG_OUT("tpmv_generic"); tpmv_generic(order, upLo, transA, diag, n, A, x, incX); return; } cblas_ctpmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, reinterpret_cast(A), reinterpret_cast(x), incX); } // ztpmv template typename If::isBlasCompatibleInteger tpmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexDouble *A, ComplexDouble *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ztpmv"); if (transA==Conj) { CXXBLAS_DEBUG_OUT("tpmv_generic"); tpmv_generic(order, upLo, transA, diag, n, A, x, incX); return; } cblas_ztpmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, reinterpret_cast(A), reinterpret_cast(x), incX); } #endif // HAVE_CBLAS } // namespace flens #endif // CXXBLAS_LEVEL2_TPMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/tpsv.h000066400000000000000000000062471456314707100231600ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_TPSV_H #define CXXBLAS_LEVEL2_TPSV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_TPSV 1 namespace cxxblas { template void tpsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const MA *A, VX *x, IndexType incX); #ifdef HAVE_CBLAS // stpsv template typename If::isBlasCompatibleInteger tpsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const float *A, float *x, IndexType incX); // dtpsv template typename If::isBlasCompatibleInteger tpsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const double *A, double *x, IndexType incX); // ctpsv template typename If::isBlasCompatibleInteger tpsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexFloat *A, ComplexFloat *x, IndexType incX); // ztpsv template typename If::isBlasCompatibleInteger tpsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexDouble *A, ComplexDouble *x, IndexType incX); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_TPSV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/tpsv.tcc000066400000000000000000000245631456314707100235030ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_TPSV_TCC #define CXXBLAS_LEVEL2_TPSV_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void tpsv_generic(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const MA *A, VX *x, IndexType incX) { if (order==ColMajor) { transA = Transpose(transA^Trans); upLo = (upLo==Upper) ? Lower : Upper; tpsv_generic(RowMajor, upLo, transA, diag, n, A, x, incX); return; } if (incX<0) { x -= incX*(n-1); } if (transA==NoTrans) { if (upLo==Upper) { if (diag==NonUnit) { for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { VX x_; dotu_generic(n-1-i, A+i*(2*n-i+1)/2+1, IndexType(1), x+iX+incX, incX, x_); x[iX] -= x_; x[iX] /= *(A+i*(2*n-i+1)/2); } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { VX x_; dotu_generic(n-1-i, A+i*(2*n-i+1)/2+1, IndexType(1), x+iX+incX, incX, x_); x[iX] -= x_; } } } else { /* upLo==Lower */ if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { VX x_; dot_generic(n-1-i, A+i*(2*n-i+1)/2+1, IndexType(1), x+iX+incX, incX, x_); x[iX] -= x_; x[iX] /= conjugate(A[i*(2*n-i+1)/2]); } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { VX x_; dot_generic(n-1-i, A+i*(2*n-i+1)/2+1, IndexType(1), x+iX+incX, incX, x_); x[iX] -= x_; } } } else { /* upLo==Lower */ if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { x[iX] /= *(A+i*(i+3)/2); axpy_generic(i, -x[iX], A+i*(i+1)/2, IndexType(1), x, incX); } } else { for (IndexType i=n-1, iX=i*incX; i>0; --i, iX-=incX) { axpy_generic(i, -x[iX], A+i*(i+1)/2, IndexType(1), x, incX); } } } } if (transA==ConjTrans) { if (upLo==Upper) { if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { x[iX] /= conjugate(A[i*(i+3)/2]); acxpy_generic(i, -x[iX], A+i*(i+1)/2, IndexType(1), x, incX); } } else { for (IndexType i=n-1, iX=i*incX; i>0; --i, iX-=incX) { acxpy_generic(i, -x[iX], A+i*(i+1)/2, IndexType(1), x, incX); } } } } } template void tpsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const MA *A, VX *x, IndexType incX) { CXXBLAS_DEBUG_OUT("tpsv_generic"); tpsv_generic(order, upLo, transA, diag, n, A, x, incX); } #ifdef HAVE_CBLAS // stpsv template typename If::isBlasCompatibleInteger tpsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const float *A, float *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_stpsv"); cblas_stpsv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, A, x, incX); } // dtpsv template typename If::isBlasCompatibleInteger tpsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const double *A, double *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dtpsv"); cblas_dtpsv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, A, x, incX); } // ctpsv template typename If::isBlasCompatibleInteger tpsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexFloat *A, ComplexFloat *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ctpsv"); if (transA==Conj) { CXXBLAS_DEBUG_OUT("tpsv_generic"); tpsv_generic(order, upLo, transA, diag, n, A, x, incX); return; } cblas_ctpsv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, reinterpret_cast(A), reinterpret_cast(x), incX); } // ztpsv template typename If::isBlasCompatibleInteger tpsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexDouble *A, ComplexDouble *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ztpsv"); if (transA==Conj) { CXXBLAS_DEBUG_OUT("tpsv_generic"); tpsv_generic(order, upLo, transA, diag, n, A, x, incX); return; } cblas_ztpsv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, reinterpret_cast(A), reinterpret_cast(x), incX); } #endif // HAVE_CBLAS } // namespace flens #endif // CXXBLAS_LEVEL2_TPSV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/trmv.h000066400000000000000000000063621456314707100231520ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_TRMV_H #define CXXBLAS_LEVEL2_TRMV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_TRMV 1 namespace cxxblas { template void trmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const MA *A, IndexType ldA, VX *x, IndexType incX); #ifdef HAVE_CBLAS // strmv template typename If::isBlasCompatibleInteger trmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const float *A, IndexType ldA, float *x, IndexType incX); // dtrmv template typename If::isBlasCompatibleInteger trmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const double *A, IndexType ldA, double *x, IndexType incX); // ctrmv template typename If::isBlasCompatibleInteger trmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexFloat *A, IndexType ldA, ComplexFloat *x, IndexType incX); // ztrmv template typename If::isBlasCompatibleInteger trmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexDouble *A, IndexType ldA, ComplexDouble *x, IndexType incX); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_TRMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/trmv.tcc000066400000000000000000000242231456314707100234700ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_TRMV_TCC #define CXXBLAS_LEVEL2_TRMV_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void trmv_generic(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const MA *A, IndexType ldA, VX *x, IndexType incX) { if (order==ColMajor) { transA = Transpose(transA^Trans); upLo = (upLo==Upper) ? Lower : Upper; trmv_generic(RowMajor, upLo, transA, diag, n, A, ldA, x, incX); return; } if (incX<0) { x -= incX*(n-1); } if (transA==NoTrans) { if (upLo==Upper) { if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { VX x_; dotu_generic(i+1, A+i*ldA, IndexType(1), x, incX, x_); x[iX] = x_; } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>0; --i, iX-=incX) { VX x_; dotu_generic(i, A+i*ldA, IndexType(1), x, incX, x_); x[iX] += x_; } } } } if (transA==Conj) { if (upLo==Upper) { if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { VX x_; dot_generic(i+1, A+i*ldA, IndexType(1), x, incX, x_); x[iX] = x_; } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>0; --i, iX-=incX) { VX x_; dot_generic(i, A+i*ldA, IndexType(1), x, incX, x_); x[iX] += x_; } } } } if (transA==Trans) { if (upLo==Upper) { if (diag==NonUnit) { for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { VX x_; dotu_generic(i+1, A+i, IndexType(ldA), x, incX, x_); x[iX] = x_; } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>0; --i, iX-=incX) { VX x_; dotu_generic(i, A+i, IndexType(ldA), x, incX, x_); x[iX] += x_; } } } else { /* upLo==Lower */ if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { VX x_; dot_generic(i+1, A+i, IndexType(ldA), x, incX, x_); x[iX] = x_; } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>0; --i, iX-=incX) { VX x_; dot_generic(i, A+i, IndexType(ldA), x, incX, x_); x[iX] += x_; } } } else { /* upLo==Lower */ if (diag==NonUnit) { for (IndexType i=0, iX=0; i void trmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const MA *A, IndexType ldA, VX *x, IndexType incX) { CXXBLAS_DEBUG_OUT("trmv_generic"); trmv_generic(order, upLo, transA, diag, n, A, ldA, x, incX); } #ifdef HAVE_CBLAS // strmv template typename If::isBlasCompatibleInteger trmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const float *A, IndexType ldA, float *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_strmv"); cblas_strmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, A, ldA, x, incX); } // dtrmv template typename If::isBlasCompatibleInteger trmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const double *A, IndexType ldA, double *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dtrmv"); cblas_dtrmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, A, ldA, x, incX); } // ctrmv template typename If::isBlasCompatibleInteger trmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexFloat *A, IndexType ldA, ComplexFloat *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ctrmv"); cblas_ctrmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, reinterpret_cast(A), ldA, reinterpret_cast(x), incX); } // ztrmv template typename If::isBlasCompatibleInteger trmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexDouble *A, IndexType ldA, ComplexDouble *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ztrmv"); if (transA==Conj) { CXXBLAS_DEBUG_OUT("trmv_generic"); trmv_generic(order, upLo, transA, diag, n, A, ldA, x, incX); return; } cblas_ztrmv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, reinterpret_cast(A), ldA, reinterpret_cast(x), incX); } #endif // HAVE_CBLAS } // namespace flens #endif // CXXBLAS_LEVEL2_TRMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2/trsv.h000066400000000000000000000063621456314707100231600ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_TRSV_H #define CXXBLAS_LEVEL2_TRSV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_TRSV 1 namespace cxxblas { template void trsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const MA *A, IndexType ldA, VX *x, IndexType incX); #ifdef HAVE_CBLAS // strsv template typename If::isBlasCompatibleInteger trsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const float *A, IndexType ldA, float *x, IndexType incX); // dtrsv template typename If::isBlasCompatibleInteger trsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const double *A, IndexType ldA, double *x, IndexType incX); // ctrsv template typename If::isBlasCompatibleInteger trsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexFloat *A, IndexType ldA, ComplexFloat *x, IndexType incX); // ztrsv template typename If::isBlasCompatibleInteger trsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexDouble *A, IndexType ldA, ComplexDouble *x, IndexType incX); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_TRSV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2/trsv.tcc000066400000000000000000000252101456314707100234730ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2_TRSV_TCC #define CXXBLAS_LEVEL2_TRSV_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void trsv_generic(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const MA *A, IndexType ldA, VX *x, IndexType incX) { if (order==ColMajor) { transA = Transpose(transA^Trans); upLo = (upLo==Lower) ? Upper : Lower; } if (incX<0) { x -= incX*(n-1); } if (transA==NoTrans) { if (upLo==Upper) { if (diag==NonUnit) { for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { VX x_; dotu_generic(n-i-1, A+i*(ldA+1)+1, IndexType(1), x+iX+incX, incX, x_); x[iX] -= x_; x[iX] /= A[i*(ldA+1)]; } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { VX x_; dotu_generic(n-i-1, A+i*(ldA+1)+1, IndexType(1), x+iX+incX, incX, x_); x[iX] -= x_; } } } else { /* upLo==Lower */ if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { VX x_; dot_generic(n-i-1, A+i*(ldA+1)+1, IndexType(1), x+iX+incX, incX, x_); x[iX] -= x_; x[iX] /= conjugate(A[i*(ldA+1)]); } } else { /* diag==Unit */ for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { VX x_; dot_generic(n-i-1, A+i*(ldA+1)+1, IndexType(1), x+iX+incX, incX, x_); x[iX] -= x_; } } } else { /* upLo==Lower */ if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { VX x_; dotu_generic(n-i-1, A+i*(ldA+1)+ldA, IndexType(ldA), x+iX+incX, incX, x_); x[iX] -= x_; x[iX] /= A[i*(ldA+1)]; } } else { for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { VX x_; dotu_generic(n-i-1, A+i*(ldA+1)+ldA, IndexType(ldA), x+iX+incX, incX, x_); x[iX] -= x_; } } } } if (transA==ConjTrans) { if (upLo==Upper) { if (diag==NonUnit) { for (IndexType i=0, iX=0; i=0; --i, iX-=incX) { VX x_; dot_generic(n-i-1, A+i*(ldA+1)+ldA, IndexType(ldA), x+iX+incX, incX, x_); x[iX] -= x_; x[iX] /= conjugate(A[i*(ldA+1)]); } } else { for (IndexType i=n-1, iX=i*incX; i>=0; --i, iX-=incX) { VX x_; dot_generic(n-i-1, A+i*(ldA+1)+ldA, IndexType(ldA), x+iX+incX, incX, x_); x[iX] -= x_; } } } } } template void trsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const MA *A, IndexType ldA, VX *x, IndexType incX) { CXXBLAS_DEBUG_OUT("trsv_generic"); trsv_generic(order, upLo, transA, diag, n, A, ldA, x, incX); } #ifdef HAVE_CBLAS // strsv template typename If::isBlasCompatibleInteger trsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const float *A, IndexType ldA, float *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_strsv"); cblas_strsv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, A, ldA, x, incX); } // dtrsv template typename If::isBlasCompatibleInteger trsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const double *A, IndexType ldA, double *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dtrsv"); cblas_dtrsv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, A, ldA, x, incX); } // ctrsv template typename If::isBlasCompatibleInteger trsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexFloat *A, IndexType ldA, ComplexFloat *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ctrsv"); if (transA==Conj) { CXXBLAS_DEBUG_OUT("trsv_generic"); trsv_generic(order, upLo, transA, diag, n, A, ldA, x, incX); return; } cblas_ctrsv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, reinterpret_cast(A), ldA, reinterpret_cast(x), incX); } // ztrsv template typename If::isBlasCompatibleInteger trsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const ComplexDouble *A, IndexType ldA, ComplexDouble *x, IndexType incX) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ztrsv"); if (transA==Conj) { CXXBLAS_DEBUG_OUT("trsv_generic"); trsv_generic(order, upLo, transA, diag, n, A, ldA, x, incX); return; } cblas_ztrsv(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), n, reinterpret_cast(A), ldA, reinterpret_cast(x), incX); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2_TRSV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/000077500000000000000000000000001456314707100241225ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/gbmv.h000066400000000000000000000044011456314707100252250ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_GBMV_H #define CXXBLAS_LEVEL2EXTENSIONS_GBMV_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GBMV 1 namespace cxxblas { template void gbmv(StorageOrder order, Transpose trans, Transpose conjX, IndexType m, IndexType n, IndexType ku, IndexType kl, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY); } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_GEMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/gbmv.tcc000066400000000000000000000046601456314707100255560ustar00rootroot00000000000000/* * Copyright (c) 20012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_GBMV_TCC #define CXXBLAS_LEVEL2EXTENSIONS_GBMV_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gbmv(StorageOrder order, Transpose trans, Transpose conjX, IndexType m, IndexType n, IndexType kl, IndexType ku, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { CXXBLAS_DEBUG_OUT("gbmv_generic (extension)"); if ((m==0) || (n==0)) { return; } gbmv_generic(order, trans, conjX, m, n, kl, ku, alpha, A, ldA, x, incX, beta, y, incY); } } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_GBMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/gemv.h000066400000000000000000000114651456314707100252400ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_GEMV_H #define CXXBLAS_LEVEL2EXTENSIONS_GEMV_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GEMV 1 namespace cxxblas { template void gemv(StorageOrder order, Transpose transA, Transpose conjX, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY); #ifdef HAVE_CBLAS template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const float &alpha, const float *A, IndexType ldA, const float *x, IndexType incX, const float &beta, std::complex *y, IndexType incY); template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const float &alpha, const float *A, IndexType ldA, const float *x, IndexType incX, const std::complex &beta, std::complex *y, IndexType incY); template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const float &alpha, const float *A, IndexType ldA, const std::complex *x, IndexType incX, const float &beta, std::complex *y, IndexType incY); template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const float &alpha, const float *A, IndexType ldA, const std::complex *x, IndexType incX, const std::complex &beta, std::complex *y, IndexType incY); template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const double &alpha, const double *A, IndexType ldA, const double *x, IndexType incX, const double &beta, std::complex *y, IndexType incY); template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const double &alpha, const double *A, IndexType ldA, const double *x, IndexType incX, const std::complex &beta, std::complex *y, IndexType incY); template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const double &alpha, const double *A, IndexType ldA, const std::complex *x, IndexType incX, const double &beta, std::complex *y, IndexType incY); template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const double &alpha, const double *A, IndexType ldA, const std::complex *x, IndexType incX, const std::complex &beta, std::complex *y, IndexType incY); #endif } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_GEMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/gemv.tcc000066400000000000000000000160241456314707100255560ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_GEMV_TCC #define CXXBLAS_LEVEL2EXTENSIONS_GEMV_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gemv(StorageOrder order, Transpose transA, Transpose conjX, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { CXXBLAS_DEBUG_OUT("gemv_generic (extension)"); if ((m==0) || (n==0)) { return; } gemv_generic(order, transA, conjX, m, n, alpha, A, ldA, x, incX, beta, y, incY); } #ifdef HAVE_CBLAS template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const float &alpha, const float *A, IndexType ldA, const float *x, IndexType incX, const float &beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("gemv (extension)"); scal(n, beta, y, incY); gemv(order, transA, m, n, alpha, A, ldA, x, incX, float(1), reinterpret_cast(y), 2*incY); } template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const float &alpha, const float *A, IndexType ldA, const float *x, IndexType incX, const std::complex &beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("gemv (extension)"); scal(n, beta, y, incY); gemv(order, transA, m, n, alpha, A, ldA, x, incX, float(1), reinterpret_cast(y), 2*incY); } template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const float &alpha, const float *A, IndexType ldA, const std::complex *x, IndexType incX, const float &beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("gemv (extension)"); scal(n, beta, y, incY); gemv(order, transA, m, n, alpha, A, ldA, reinterpret_cast(x), 2*incX, float(1), reinterpret_cast(y), 2*incY); gemv(order, transA, m, n, alpha, A, ldA, reinterpret_cast(x)+1, 2*incX, float(1), reinterpret_cast(y)+1, 2*incY); } template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const float &alpha, const float *A, IndexType ldA, const std::complex *x, IndexType incX, const std::complex &beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("gemv (extension)"); scal(n, beta, y, incY); gemv(order, transA, m, n, alpha, A, ldA, reinterpret_cast(x), 2*incX, float(1), reinterpret_cast(y), 2*incY); gemv(order, transA, m, n, alpha, A, ldA, reinterpret_cast(x)+1, 2*incX, float(1), reinterpret_cast(y)+1, 2*incY); } template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const double &alpha, const double *A, IndexType ldA, const double *x, IndexType incX, const double &beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("gemv (extension)"); scal(n, beta, y, incY); gemv(order, transA, m, n, alpha, A, ldA, x, incX, double(1), reinterpret_cast(y), 2*incY); } template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const double &alpha, const double *A, IndexType ldA, const double *x, IndexType incX, const std::complex &beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("gemv (extension)"); scal(n, beta, y, incY); gemv(order, transA, m, n, alpha, A, ldA, x, incX, double(1), reinterpret_cast(y), 2*incY); } template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const double &alpha, const double *A, IndexType ldA, const std::complex *x, IndexType incX, const double &beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("gemv (extension)"); scal(n, beta, y, incY); gemv(order, transA, m, n, alpha, A, ldA, reinterpret_cast(x), 2*incX, double(1), reinterpret_cast(y), 2*incY); gemv(order, transA, m, n, alpha, A, ldA, reinterpret_cast(x)+1, 2*incX, double(1), reinterpret_cast(y)+1, 2*incY); } template void gemv(StorageOrder order, Transpose transA, IndexType m, IndexType n, const double &alpha, const double *A, IndexType ldA, const std::complex *x, IndexType incX, const std::complex &beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("gemv (extension)"); scal(n, beta, y, incY); gemv(order, transA, m, n, alpha, A, ldA, reinterpret_cast(x), 2*incX, double(1), reinterpret_cast(y), 2*incY); gemv(order, transA, m, n, alpha, A, ldA, reinterpret_cast(x)+1, 2*incX, double(1), reinterpret_cast(y)+1, 2*incY); } #endif } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_GEMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/hemv.h000066400000000000000000000042661456314707100252420ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_HEMV_H #define CXXBLAS_LEVEL2EXTENSIONS_HEMV_H 1 #include "xflens/cxxblas/typedefs.h" namespace cxxblas { template void hemv(StorageOrder order, StorageUpLo upLo, Transpose conjugateA, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY); } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_HEMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/hemv.tcc000066400000000000000000000046531456314707100255640ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_HEMV_TCC #define CXXBLAS_LEVEL2EXTENSIONS_HEMV_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void hemv(StorageOrder order, StorageUpLo upLo, Transpose conjugateA, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const VX *x, IndexType incX, const BETA &beta, VY *y, IndexType incY) { CXXBLAS_DEBUG_OUT("hemv_generic (extension)"); if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } hemv_generic(order, upLo, conjugateA, n, alpha, A, ldA, x, incX, beta, y, incY); } } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_HEMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/her.h000066400000000000000000000041101456314707100250450ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_HER_H #define CXXBLAS_LEVEL2EXTENSIONS_HER_H 1 #include "xflens/cxxblas/typedefs.h" namespace cxxblas { template void her(StorageOrder order, StorageUpLo upLo, Transpose conjugateA, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, MA *A, IndexType ldA); } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_HER_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/her.tcc000066400000000000000000000043631456314707100254010ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_HER_TCC #define CXXBLAS_LEVEL2EXTENSIONS_HER_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void her(StorageOrder order, StorageUpLo upLo, Transpose conjugateA, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("her_generic (extension)"); if (incX<0) { x -= incX*(n-1); } her_generic(order, upLo, conjugateA, n, alpha, x, incX, A, ldA); } } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_HER_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/her2.h000066400000000000000000000042421456314707100251350ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_HER_H #define CXXBLAS_LEVEL2EXTENSIONS_HER_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HER2 1 namespace cxxblas { template void her2(StorageOrder order, StorageUpLo upLo, Transpose conjugateA, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA); } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_HER_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/her2.tcc000066400000000000000000000045621456314707100254640ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_HER2_TCC #define CXXBLAS_LEVEL2EXTENSIONS_HER2_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void her2(StorageOrder order, StorageUpLo upLo, Transpose conjugateA, IndexType n, const ALPHA &alpha, const VX *x, IndexType incX, const VY *y, IndexType incY, MA *A, IndexType ldA) { CXXBLAS_DEBUG_OUT("her2_generic (extension)"); if (incX<0) { x -= incX*(n-1); } if (incY<0) { y -= incY*(n-1); } her2_generic(order, upLo, conjugateA, n, alpha, x, incX, y, incY, A, ldA); } } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_HER2_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/level2extensions.h000066400000000000000000000042401456314707100276040ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_LEVEL2EXTENSIONS_H #define CXXBLAS_LEVEL2EXTENSIONS_LEVEL2EXTENSIONS_H 1 #include "xflens/cxxblas/level2extensions/gbmv.h" #include "xflens/cxxblas/level2extensions/gemv.h" #include "xflens/cxxblas/level2extensions/hemv.h" #include "xflens/cxxblas/level2extensions/her.h" #include "xflens/cxxblas/level2extensions/her2.h" #include "xflens/cxxblas/level2extensions/symv.h" #include "xflens/cxxblas/level2extensions/trmv.h" #include "xflens/cxxblas/level2extensions/trsv.h" #endif // CXXBLAS_LEVEL2EXTENSIONS_LEVEL2EXTENSIONS_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/level2extensions.tcc000066400000000000000000000042661456314707100301360ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_LEVEL2EXTENSIONS_TCC #define CXXBLAS_LEVEL2EXTENSIONS_LEVEL2EXTENSIONS_TCC 1 #include "xflens/cxxblas/level2extensions/gbmv.tcc" #include "xflens/cxxblas/level2extensions/gemv.tcc" #include "xflens/cxxblas/level2extensions/hemv.tcc" #include "xflens/cxxblas/level2extensions/her.tcc" #include "xflens/cxxblas/level2extensions/her2.tcc" #include "xflens/cxxblas/level2extensions/symv.tcc" #include "xflens/cxxblas/level2extensions/trmv.tcc" #include "xflens/cxxblas/level2extensions/trsv.tcc" #endif // CXXBLAS_LEVEL2EXTENSIONS_LEVEL2EXTENSIONS_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/symv.h000066400000000000000000000110371456314707100252730ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_SYMV_H #define CXXBLAS_LEVEL2EXTENSIONS_SYMV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYMV 1 namespace cxxblas { #ifdef HAVE_CBLAS template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *A, IndexType ldA, const float *x, IndexType incX, float beta, std::complex *y, IndexType incY); template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *A, IndexType ldA, const float *x, IndexType incX, std::complex beta, std::complex *y, IndexType incY); template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *A, IndexType ldA, const std::complex *x, IndexType incX, float beta, std::complex *y, IndexType incY); template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *A, IndexType ldA, const std::complex *x, IndexType incX, std::complex beta, std::complex *y, IndexType incY); template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *A, IndexType ldA, const double *x, IndexType incX, double beta, std::complex *y, IndexType incY); template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *A, IndexType ldA, const double *x, IndexType incX, std::complex beta, std::complex *y, IndexType incY); template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *A, IndexType ldA, const std::complex *x, IndexType incX, double beta, std::complex *y, IndexType incY); template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *A, IndexType ldA, const std::complex *x, IndexType incX, std::complex beta, std::complex *y, IndexType incY); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_SYMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/symv.tcc000066400000000000000000000150671456314707100256240ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_SYMV_TCC #define CXXBLAS_LEVEL2EXTENSIONS_SYMV_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { #ifdef HAVE_CBLAS template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *A, IndexType ldA, const float *x, IndexType incX, float beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("symv (extension)"); scal(n, beta, y, incY); symv(order, upLo, n, alpha, A, ldA, x, incX, float(1), reinterpret_cast(y), 2*incY); } template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *A, IndexType ldA, const float *x, IndexType incX, std::complex beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("symv (extension)"); scal(n, beta, y, incY); symv(order, upLo, n, alpha, A, ldA, x, incX, float(1), reinterpret_cast(y), 2*incY); } template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *A, IndexType ldA, const std::complex *x, IndexType incX, float beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("symv (extension)"); scal(n, beta, y, incY); symv(order, upLo, n, alpha, A, ldA, reinterpret_cast(x), 2*incX, float(1), reinterpret_cast(y), 2*incY); symv(order, upLo, n, alpha, A, ldA, reinterpret_cast(x)+1, 2*incX, float(1), reinterpret_cast(y)+1, 2*incY); } template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, float alpha, const float *A, IndexType ldA, const std::complex *x, IndexType incX, std::complex beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("symv (extension)"); scal(n, beta, y, incY); symv(order, upLo, n, alpha, A, ldA, reinterpret_cast(x), 2*incX, float(1), reinterpret_cast(y), 2*incY); symv(order, upLo, n, alpha, A, ldA, reinterpret_cast(x)+1, 2*incX, float(1), reinterpret_cast(y)+1, 2*incY); } template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *A, IndexType ldA, const double *x, IndexType incX, double beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("symv (extension)"); scal(n, beta, y, incY); symv(order, upLo, n, alpha, A, ldA, x, incX, double(1), reinterpret_cast(y), 2*incY); } template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *A, IndexType ldA, const double *x, IndexType incX, std::complex beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("symv (extension)"); scal(n, beta, y, incY); symv(order, upLo, n, alpha, A, ldA, x, incX, double(1), reinterpret_cast(y), 2*incY); } template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *A, IndexType ldA, const std::complex *x, IndexType incX, double beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("symv (extension)"); scal(n, beta, y, incY); symv(order, upLo, n, alpha, A, ldA, reinterpret_cast(x), 2*incX, double(1), reinterpret_cast(y) , 2*incY); symv(order, upLo, n, alpha, A, ldA, reinterpret_cast(x)+1, 2*incX, double(1), reinterpret_cast(y)+1, 2*incY); } template typename If::isBlasCompatibleInteger symv(StorageOrder order, StorageUpLo upLo, IndexType n, double alpha, const double *A, IndexType ldA, const std::complex *x, IndexType incX, std::complex beta, std::complex *y, IndexType incY) { CXXBLAS_DEBUG_OUT("symv (extension)"); scal(n, beta, y, incY); symv(order, upLo, n, alpha, A, ldA, reinterpret_cast(x), 2*incX, double(1), reinterpret_cast(y) , 2*incY); symv(order, upLo, n, alpha, A, ldA, reinterpret_cast(x)+1, 2*incX, double(1), reinterpret_cast(y)+1, 2*incY); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_SYMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/trmv.h000066400000000000000000000047111456314707100252660ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_TRMV_H #define CXXBLAS_LEVEL2EXTENSIONS_TRMV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_TRMV 1 namespace cxxblas { #ifdef HAVE_CBLAS template typename If::isBlasCompatibleInteger trmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const float *A, IndexType ldA, ComplexFloat *x, IndexType incX); template typename If::isBlasCompatibleInteger trmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const double *A, IndexType ldA, ComplexDouble *x, IndexType incX); #endif } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_TRMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/trmv.tcc000066400000000000000000000055741456314707100256200ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_TRMV_TCC #define CXXBLAS_LEVEL2EXTENSIONS_TRMV_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { #ifdef HAVE_CBLAS template typename If::isBlasCompatibleInteger trmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const float *A, IndexType ldA, ComplexFloat *x, IndexType incX) { CXXBLAS_DEBUG_OUT("trmv (extension)"); float *xr = reinterpret_cast(x); float *xi = reinterpret_cast(x) + 1; trmv(order, upLo, transA, diag, n, A, ldA, xr, 2*incX); trmv(order, upLo, transA, diag, n, A, ldA, xi, 2*incX); } template typename If::isBlasCompatibleInteger trmv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const double *A, IndexType ldA, ComplexDouble *x, IndexType incX) { CXXBLAS_DEBUG_OUT("trmv (extension)"); double *xr = reinterpret_cast(x); double *xi = reinterpret_cast(x) + 1; trmv(order, upLo, transA, diag, n, A, ldA, xr, 2*incX); trmv(order, upLo, transA, diag, n, A, ldA, xi, 2*incX); } #endif } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_TRMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/trsv.h000066400000000000000000000047111456314707100252740ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_TRSV_H #define CXXBLAS_LEVEL2EXTENSIONS_TRSV_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_TRSV 1 namespace cxxblas { #ifdef HAVE_CBLAS template typename If::isBlasCompatibleInteger trsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const float *A, IndexType ldA, ComplexFloat *x, IndexType incX); template typename If::isBlasCompatibleInteger trsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const double *A, IndexType ldA, ComplexDouble *x, IndexType incX); #endif } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_TRSV_H xtensor-blas-0.21.0/include/xflens/cxxblas/level2extensions/trsv.tcc000066400000000000000000000054341456314707100256210ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL2EXTENSIONS_TRSV_TCC #define CXXBLAS_LEVEL2EXTENSIONS_TRSV_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { #ifdef HAVE_CBLAS template typename If::isBlasCompatibleInteger trsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const float *A, IndexType ldA, ComplexFloat *x, IndexType incX) { CXXBLAS_DEBUG_OUT("trsv (extension)"); float *x_ = reinterpret_cast(x); trsv(order, upLo, transA, diag, n, A, ldA, x_, 2*incX); trsv(order, upLo, transA, diag, n, A, ldA, x_+1, 2*incX); } template typename If::isBlasCompatibleInteger trsv(StorageOrder order, StorageUpLo upLo, Transpose transA, Diag diag, IndexType n, const double *A, IndexType ldA, ComplexDouble *x, IndexType incX) { CXXBLAS_DEBUG_OUT("trsv (extension)"); double *x_ = reinterpret_cast(x); trsv(order, upLo, transA, diag, n, A, ldA, x_, 2*incX); trsv(order, upLo, transA, diag, n, A, ldA, x_+1, 2*incX); } #endif } // namespace cxxblas #endif // CXXBLAS_LEVEL2EXTENSIONS_TRSV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level3/000077500000000000000000000000001456314707100220035ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxblas/level3/gemm.h000066400000000000000000000075431456314707100231120ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_GEMM_H #define CXXBLAS_LEVEL3_GEMM_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GEMM 1 namespace cxxblas { template void gemm(StorageOrder order, Transpose transA, Transpose transB, IndexType m, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC); #ifdef HAVE_CBLAS // sgemm template typename If::isBlasCompatibleInteger gemm(StorageOrder order, Transpose transA, Transpose transB, IndexType m, IndexType n, IndexType k, float alpha, const float *A, IndexType ldA, const float *B, IndexType ldB, float beta, float *C, IndexType ldC); // dgemm template typename If::isBlasCompatibleInteger gemm(StorageOrder order, Transpose transA, Transpose transB, IndexType m, IndexType n, IndexType k, double alpha, const double *A, IndexType ldA, const double *B, IndexType ldB, double beta, double *C, IndexType ldC); // cgemm template typename If::isBlasCompatibleInteger gemm(StorageOrder order, Transpose transA, Transpose transB, IndexType m, IndexType n, IndexType k, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC); // zgemm template typename If::isBlasCompatibleInteger gemm(StorageOrder order, Transpose transA, Transpose transB, IndexType m, IndexType n, IndexType k, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_GEMM_H xtensor-blas-0.21.0/include/xflens/cxxblas/level3/gemm.tcc000066400000000000000000000240421456314707100234250ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_GEMM_TCC #define CXXBLAS_LEVEL3_GEMM_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gemm_generic(StorageOrder order, Transpose transA, Transpose transB, IndexType m, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("gemm_generic"); if ((m==0) || (n==0)) { return; } if (order==ColMajor) { gemm_generic(RowMajor, transB, transA, n, m, k, alpha, B, ldB, A, ldA, beta, C, ldC); return; } gescal_init(order, m, n, beta, C, ldC); if (alpha==ALPHA(0)) { return; } if ((transA==NoTrans) && (transB==NoTrans)) { for (IndexType l=0; l void gemm(StorageOrder order, Transpose transA, Transpose transB, IndexType m, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC) { gemm_generic(order, transA, transB, m, n, k, alpha, A, ldA, B, ldB, beta, C, ldC); } #ifdef HAVE_CBLAS // sgemm template typename If::isBlasCompatibleInteger gemm(StorageOrder order, Transpose transA, Transpose transB, IndexType m, IndexType n, IndexType k, float alpha, const float *A, IndexType ldA, const float *B, IndexType ldB, float beta, float *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_sgemm"); cblas_sgemm(CBLAS::getCblasType(order), CBLAS::getCblasType(transA), CBLAS::getCblasType(transB), m, n, k, alpha, A, ldA, B, ldB, beta, C, ldC); } // dgemm template typename If::isBlasCompatibleInteger gemm(StorageOrder order, Transpose transA, Transpose transB, IndexType m, IndexType n, IndexType k, double alpha, const double *A, IndexType ldA, const double *B, IndexType ldB, double beta, double *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dgemm"); cblas_dgemm(CBLAS::getCblasType(order), CBLAS::getCblasType(transA), CBLAS::getCblasType(transB), m, n, k, alpha, A, ldA, B, ldB, beta, C, ldC); } // cgemm template typename If::isBlasCompatibleInteger gemm(StorageOrder order, Transpose transA, Transpose transB, IndexType m, IndexType n, IndexType k, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cgemm"); if (transA==Conj || transB==Conj) { CXXBLAS_DEBUG_OUT("gemm_generic"); gemm_generic(order, transA, transB, m, n, k, alpha, A, ldA, B, ldB, beta, C, ldC); return; } cblas_cgemm(CBLAS::getCblasType(order), CBLAS::getCblasType(transA), CBLAS::getCblasType(transB), m, n, k, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(B), ldB, reinterpret_cast(&beta), reinterpret_cast(C), ldC); } // zgemm template typename If::isBlasCompatibleInteger gemm(StorageOrder order, Transpose transA, Transpose transB, IndexType m, IndexType n, IndexType k, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zgemm"); if (transA==Conj || transB==Conj) { CXXBLAS_DEBUG_OUT("gemm_generic"); gemm_generic(order, transA, transB, m, n, k, alpha, A, ldA, B, ldB, beta, C, ldC); return; } cblas_zgemm(CBLAS::getCblasType(order), CBLAS::getCblasType(transA), CBLAS::getCblasType(transB), m, n, k, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(B), ldB, reinterpret_cast(&beta), reinterpret_cast(C), ldC); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_GEMM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level3/hemm.h000066400000000000000000000060501456314707100231030ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_HEMM_H #define CXXBLAS_LEVEL3_HEMM_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HEMM 1 namespace cxxblas { template void hemm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC); #ifdef HAVE_CBLAS template typename If::isBlasCompatibleInteger hemm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC); template typename If::isBlasCompatibleInteger hemm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_HEMM_H xtensor-blas-0.21.0/include/xflens/cxxblas/level3/hemm.tcc000066400000000000000000000120461456314707100234270ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_HEMM_TCC #define CXXBLAS_LEVEL3_HEMM_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void hemm_generic(StorageOrder order, Side sideA, StorageUpLo upLoA, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC) { if (order==ColMajor) { upLoA = (upLoA==Upper) ? Lower : Upper; sideA = (sideA==Left) ? Right : Left; hemm_generic(RowMajor, sideA, upLoA, n, m, alpha, A, ldA, B, ldB, beta, C, ldC); return; } gescal_init(order, m, n, beta, C, ldC); if (sideA==Right) { for (IndexType i=0; i void hemm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("hemm_generic"); hemm_generic(order, side, upLo, m, n, alpha, A, ldA, B, ldB, beta, C, ldC); } #ifdef HAVE_CBLAS template typename If::isBlasCompatibleInteger hemm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_chemm"); cblas_chemm(CBLAS::getCblasType(order), CBLAS::getCblasType(side), CBLAS::getCblasType(upLo), m, n, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(B), ldB, reinterpret_cast(&beta), reinterpret_cast(C), ldC); } template typename If::isBlasCompatibleInteger hemm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zhemm"); cblas_zhemm(CBLAS::getCblasType(order), CBLAS::getCblasType(side), CBLAS::getCblasType(upLo), m, n, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(B), ldB, reinterpret_cast(&beta), reinterpret_cast(C), ldC); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_HEMM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level3/her2k.h000066400000000000000000000061161456314707100231730ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_HER2K_H #define CXXBLAS_LEVEL3_HER2K_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HER2K 1 namespace cxxblas { template void her2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC); #ifdef HAVE_CBLAS // cher2k template typename If::isBlasCompatibleInteger her2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *B, IndexType ldB, float beta, ComplexFloat *C, IndexType ldC); // zher2k template typename If::isBlasCompatibleInteger her2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *B, IndexType ldB, double beta, ComplexDouble *C, IndexType ldC); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_HER2K_H xtensor-blas-0.21.0/include/xflens/cxxblas/level3/her2k.tcc000066400000000000000000000125611456314707100235160ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_HER2K_TCC #define CXXBLAS_LEVEL3_HER2K_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void her2k_generic(StorageOrder order, StorageUpLo upLoC, Transpose transAB, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC) { if (order==ColMajor) { upLoC = (upLoC==Upper) ? Lower : Upper; transAB = Transpose(transAB^ConjTrans); her2k_generic(RowMajor, upLoC, transAB, n, k, conjugate(alpha), A, ldA, B, ldB, beta, C, ldC); return; } if ((n==0) || (((alpha==ALPHA(0)) || (k==0)) && (beta==BETA(1)))) { return; } hescal(order, upLoC, n, beta, C, ldC); if (alpha==ALPHA(0)) { return; } if (transAB==NoTrans) { for (IndexType l=0; l void her2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("her2k_generic"); her2k_generic(order, upLo, trans, n, k, alpha, A, ldA, B, ldB, beta, C, ldC); } #ifdef HAVE_CBLAS // cher2k template typename If::isBlasCompatibleInteger her2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *B, IndexType ldB, float beta, ComplexFloat *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cher2k"); cblas_cher2k(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(trans), n, k, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(B), ldB, beta, reinterpret_cast(C), ldC); } // zher2k template typename If::isBlasCompatibleInteger her2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *B, IndexType ldB, double beta, ComplexDouble *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zher2k"); cblas_zher2k(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(trans), n, k, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(B), ldB, beta, reinterpret_cast(C), ldC); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_HER2K_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level3/herk.h000066400000000000000000000055501456314707100231120ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_HERK_H #define CXXBLAS_LEVEL3_HERK_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HERK 1 namespace cxxblas { template void herk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const BETA &beta, MC *C, IndexType ldC); #ifdef HAVE_CBLAS // cherk template typename If::isBlasCompatibleInteger herk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, float alpha, const ComplexFloat *A, IndexType ldA, float beta, ComplexFloat *C, IndexType ldC); // zherk template typename If::isBlasCompatibleInteger herk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, double alpha, const ComplexDouble *A, IndexType ldA, double beta, ComplexDouble *C, IndexType ldC); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_HERK_H xtensor-blas-0.21.0/include/xflens/cxxblas/level3/herk.tcc000066400000000000000000000111601456314707100234260ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_HERK_TCC #define CXXBLAS_LEVEL3_HERK_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void herk_generic(StorageOrder order, StorageUpLo upLoC, Transpose transA, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const BETA &beta, MC *C, IndexType ldC) { if (order==ColMajor) { upLoC = (upLoC==Upper) ? Lower : Upper; transA = Transpose(transA^ConjTrans); herk_generic(RowMajor, upLoC, transA, n, k, alpha, A, ldA, beta, C, ldC); return; } if ((n==0) || (((alpha==ALPHA(0)) || (k==0)) && (beta==BETA(1)))) { return; } hescal(order, upLoC, n, beta, C, ldC); if (alpha==ALPHA(0)) { return; } if (transA==NoTrans) { for (IndexType l=0; l void herk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const BETA &beta, MC *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("herk_generic"); herk_generic(order, upLo, trans, n, k, alpha, A, ldA, beta, C, ldC); } #ifdef HAVE_CBLAS // cherk template typename If::isBlasCompatibleInteger herk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, float alpha, const ComplexFloat *A, IndexType ldA, float beta, ComplexFloat *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_cherk"); cblas_cherk(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(trans), n, k, alpha, reinterpret_cast(A), ldA, beta, reinterpret_cast(C), ldC); } // zherk template typename If::isBlasCompatibleInteger herk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, double alpha, const ComplexDouble *A, IndexType ldA, double beta, ComplexDouble *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zherk"); cblas_zherk(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(trans), n, k, alpha, reinterpret_cast(A), ldA, beta, reinterpret_cast(C), ldC); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_HERK_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level3/level3.h000066400000000000000000000040771456314707100233560ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_LEVEL3_H #define CXXBLAS_LEVEL3_LEVEL3_H 1 #include "xflens/cxxblas/level3/gemm.h" #include "xflens/cxxblas/level3/hemm.h" #include "xflens/cxxblas/level3/herk.h" #include "xflens/cxxblas/level3/her2k.h" #include "xflens/cxxblas/level3/symm.h" #include "xflens/cxxblas/level3/syrk.h" #include "xflens/cxxblas/level3/syr2k.h" #include "xflens/cxxblas/level3/trmm.h" #include "xflens/cxxblas/level3/trsm.h" #endif // CXXBLAS_LEVEL3_LEVEL3_H xtensor-blas-0.21.0/include/xflens/cxxblas/level3/level3.tcc000066400000000000000000000041271456314707100236740ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_LEVEL3_TCC #define CXXBLAS_LEVEL3_LEVEL3_TCC 1 #include "xflens/cxxblas/level3/gemm.tcc" #include "xflens/cxxblas/level3/hemm.tcc" #include "xflens/cxxblas/level3/herk.tcc" #include "xflens/cxxblas/level3/her2k.tcc" #include "xflens/cxxblas/level3/symm.tcc" #include "xflens/cxxblas/level3/syrk.tcc" #include "xflens/cxxblas/level3/syr2k.tcc" #include "xflens/cxxblas/level3/trmm.tcc" #include "xflens/cxxblas/level3/trsm.tcc" #endif // CXXBLAS_LEVEL3_LEVEL3_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level3/symm.h000066400000000000000000000073221456314707100231450ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_SYMM_H #define CXXBLAS_LEVEL3_SYMM_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYMM 1 namespace cxxblas { template void symm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC); #ifdef HAVE_CBLAS // ssymm template typename If::isBlasCompatibleInteger symm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, float alpha, const float *A, IndexType ldA, const float *B, IndexType ldB, float beta, float *C, IndexType ldC); // dsymm template typename If::isBlasCompatibleInteger symm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, double alpha, const double *A, IndexType ldA, const double *B, IndexType ldB, double beta, double *C, IndexType ldC); // csymm template typename If::isBlasCompatibleInteger symm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC); // zsymm template typename If::isBlasCompatibleInteger symm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_SYMM_H xtensor-blas-0.21.0/include/xflens/cxxblas/level3/symm.tcc000066400000000000000000000143601456314707100234670ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_SYMM_TCC #define CXXBLAS_LEVEL3_SYMM_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void symm_generic(StorageOrder order, Side sideA, StorageUpLo upLoA, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC) { if (order==ColMajor) { upLoA = (upLoA==Upper) ? Lower : Upper; sideA = (sideA==Left) ? Right : Left; symm_generic(RowMajor, sideA, upLoA, n, m, alpha, A, ldA, B, ldB, beta, C, ldC); return; } gescal_init(order, m, n, beta, C, ldC); if (sideA==Right) { for (IndexType i=0; i void symm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("symm_generic"); symm_generic(order, side, upLo, m, n, alpha, A, ldA, B, ldB, beta, C, ldC); } #ifdef HAVE_CBLAS // ssymm template typename If::isBlasCompatibleInteger symm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, float alpha, const float *A, IndexType ldA, const float *B, IndexType ldB, float beta, float *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ssymm"); cblas_ssymm(CBLAS::getCblasType(order), CBLAS::getCblasType(side), CBLAS::getCblasType(upLo), m, n, alpha, A, ldA, B, ldB, beta, C, ldC); } // dsymm template typename If::isBlasCompatibleInteger symm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, double alpha, const double *A, IndexType ldA, const double *B, IndexType ldB, double beta, double *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dsymm"); cblas_dsymm(CBLAS::getCblasType(order), CBLAS::getCblasType(side), CBLAS::getCblasType(upLo), m, n, alpha, A, ldA, B, ldB, beta, C, ldC); } // csymm template typename If::isBlasCompatibleInteger symm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_csymm"); cblas_csymm(CBLAS::getCblasType(order), CBLAS::getCblasType(side), CBLAS::getCblasType(upLo), m, n, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(B), ldB, reinterpret_cast(&beta), reinterpret_cast(C), ldC); } // zsymm template typename If::isBlasCompatibleInteger symm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zsymm"); cblas_zsymm(CBLAS::getCblasType(order), CBLAS::getCblasType(side), CBLAS::getCblasType(upLo), m, n, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(B), ldB, reinterpret_cast(&beta), reinterpret_cast(C), ldC); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_SYMM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level3/syr2k.h000066400000000000000000000075151456314707100232360ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_SYR2K_H #define CXXBLAS_LEVEL3_SYR2K_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYR2K 1 namespace cxxblas { template void syr2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC); #ifdef HAVE_CBLAS // ssyr2k template typename If::isBlasCompatibleInteger syr2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, float alpha, const float *A, IndexType ldA, const float *B, IndexType ldB, float beta, float *C, IndexType ldC); // dsyr2k template typename If::isBlasCompatibleInteger syr2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, double alpha, const double *A, IndexType ldA, const double *B, IndexType ldB, double beta, double *C, IndexType ldC); // csyr2k template typename If::isBlasCompatibleInteger syr2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC); // zsyr2k template typename If::isBlasCompatibleInteger syr2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_SYR2K_H xtensor-blas-0.21.0/include/xflens/cxxblas/level3/syr2k.tcc000066400000000000000000000155571456314707100235650ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_SYR2K_TCC #define CXXBLAS_LEVEL3_SYR2K_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void syr2k_generic(StorageOrder order, StorageUpLo upLoC, Transpose transAB, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC) { if (order==ColMajor) { upLoC = (upLoC==Upper) ? Lower : Upper; transAB = Transpose(transAB^Trans); syr2k_generic(RowMajor, upLoC, transAB, n, k, alpha, A, ldA, B, ldB, beta, C, ldC); return; } syscal_init(order, upLoC, n, beta, C, ldC); if (k==0) { return; } if (transAB==NoTrans) { for (IndexType l=0; l void syr2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("syr2k_generic"); syr2k_generic(order, upLo, trans, n, k, alpha, A, ldA, B, ldB, beta, C, ldC); } #ifdef HAVE_CBLAS // ssyr2k template typename If::isBlasCompatibleInteger syr2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, float alpha, const float *A, IndexType ldA, const float *B, IndexType ldB, float beta, float *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ssyr2k"); cblas_ssyr2k(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(trans), n, k, alpha, A, ldA, B, ldB, beta, C, ldC); } // dsyr2k template typename If::isBlasCompatibleInteger syr2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, double alpha, const double *A, IndexType ldA, const double *B, IndexType ldB, double beta, double *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dsyr2k"); cblas_dsyr2k(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(trans), n, k, alpha, A, ldA, B, ldB, beta, C, ldC); } // csyr2k template typename If::isBlasCompatibleInteger syr2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_csyr2k"); cblas_csyr2k(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(trans), n, k, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(B), ldB, reinterpret_cast(&beta), reinterpret_cast(C), ldC); } // zsyr2k template typename If::isBlasCompatibleInteger syr2k(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zsyr2k"); cblas_zsyr2k(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(trans), n, k, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(B), ldB, reinterpret_cast(&beta), reinterpret_cast(C), ldC); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_SYR2K_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level3/syrk.h000066400000000000000000000070731456314707100231530ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_SYRK_H #define CXXBLAS_LEVEL3_SYRK_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYRK 1 namespace cxxblas { template void syrk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const BETA &beta, MC *C, IndexType ldC); #ifdef HAVE_CBLAS // ssyrk template typename If::isBlasCompatibleInteger syrk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, float alpha, const float *A, IndexType ldA, float beta, float *C, IndexType ldC); // dsyrk template typename If::isBlasCompatibleInteger syrk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, double alpha, const double *A, IndexType ldA, double beta, double *C, IndexType ldC); // csyrk template typename If::isBlasCompatibleInteger syrk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC); // zsyrk template typename If::isBlasCompatibleInteger syrk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_SYRK_H xtensor-blas-0.21.0/include/xflens/cxxblas/level3/syrk.tcc000066400000000000000000000141371456314707100234740ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_SYRK_TCC #define CXXBLAS_LEVEL3_SYRK_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void syrk_generic(StorageOrder order, StorageUpLo upLoC, Transpose transA, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const BETA &beta, MC *C, IndexType ldC) { if (order==ColMajor) { upLoC = (upLoC==Upper) ? Lower : Upper; transA = Transpose(transA^Trans); syrk_generic(RowMajor, upLoC, transA, n, k, alpha, A, ldA, beta, C, ldC); return; } syscal_init(order, upLoC, n, beta, C, ldC); if (k==0) { return; } if (transA==NoTrans) { for (IndexType l=0; l void syrk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, const BETA &beta, MC *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("syrk_generic"); syrk_generic(order, upLo, trans, n, k, alpha, A, ldA, beta, C, ldC); } #ifdef HAVE_CBLAS // ssyrk template typename If::isBlasCompatibleInteger syrk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, float alpha, const float *A, IndexType ldA, float beta, float *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ssyrk"); cblas_ssyrk(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(trans), n, k, alpha, A, ldA, beta, C, ldC); } // dsyrk template typename If::isBlasCompatibleInteger syrk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, double alpha, const double *A, IndexType ldA, double beta, double *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dsyrk"); cblas_dsyrk(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(trans), n, k, alpha, A, ldA, beta, C, ldC); } // csyrk template typename If::isBlasCompatibleInteger syrk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_csyrk"); cblas_csyrk(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(trans), n, k, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(&beta), reinterpret_cast(C), ldC); } // zsyrk template typename If::isBlasCompatibleInteger syrk(StorageOrder order, StorageUpLo upLo, Transpose trans, IndexType n, IndexType k, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_zsyrk"); cblas_zsyrk(CBLAS::getCblasType(order), CBLAS::getCblasType(upLo), CBLAS::getCblasType(trans), n, k, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(&beta), reinterpret_cast(C), ldC); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_SYRK_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level3/trmm.h000066400000000000000000000070101456314707100231310ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_TRMM_H #define CXXBLAS_LEVEL3_TRMM_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_TRMM 1 namespace cxxblas { template void trmm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB); #ifdef HAVE_CBLAS // strmm template typename If::isBlasCompatibleInteger trmm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, float alpha, const float *A, IndexType ldA, float *B, IndexType ldB); // dtrmm template typename If::isBlasCompatibleInteger trmm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, double alpha, const double *A, IndexType ldA, double *B, IndexType ldB); // ctrmm template typename If::isBlasCompatibleInteger trmm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, ComplexFloat *B, IndexType ldB); // ztrmm template typename If::isBlasCompatibleInteger trmm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, ComplexDouble *B, IndexType ldB); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_TRMM_H xtensor-blas-0.21.0/include/xflens/cxxblas/level3/trmm.tcc000066400000000000000000000145041456314707100234610ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_TRMM_TCC #define CXXBLAS_LEVEL3_TRMM_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void trmm_generic(StorageOrder order, Side sideA, StorageUpLo upLoA, Transpose transA, Diag diagA, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB) { if (order==ColMajor) { sideA = (sideA==Left) ? Right : Left; upLoA = (upLoA==Upper) ? Lower : Upper; trmm_generic(RowMajor, sideA, upLoA, transA, diagA, n, m, alpha, A, ldA, B, ldB); return; } if (sideA==Right) { transA = Transpose(transA^Trans); for (IndexType i=0; i void trmm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("trmm_generic"); trmm_generic(order, side, upLo, transA, diag, m, n, alpha, A, ldA, B, ldB); } #ifdef HAVE_CBLAS // strmm template typename If::isBlasCompatibleInteger trmm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, float alpha, const float *A, IndexType ldA, float *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_strmm"); cblas_strmm(CBLAS::getCblasType(order), CBLAS::getCblasType(side), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), m, n, alpha, A, ldA, B, ldB); } // dtrmm template typename If::isBlasCompatibleInteger trmm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, double alpha, const double *A, IndexType ldA, double *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dtrmm"); cblas_dtrmm(CBLAS::getCblasType(order), CBLAS::getCblasType(side), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), m, n, alpha, A, ldA, B, ldB); } // ctrmm template typename If::isBlasCompatibleInteger trmm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, ComplexFloat *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ctrmm"); if (transA==Conj) { CXXBLAS_DEBUG_OUT("trmm_generic"); trmm_generic(order, side, upLo, transA, diag, m, n, alpha, A, ldA, B, ldB); return; } cblas_ctrmm(CBLAS::getCblasType(order), CBLAS::getCblasType(side), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), m, n, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(B), ldB); } // ztrmm template typename If::isBlasCompatibleInteger trmm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, ComplexDouble *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ztrmm"); if (transA==Conj) { CXXBLAS_DEBUG_OUT("trmm_generic"); trmm_generic(order, side, upLo, transA, diag, m, n, alpha, A, ldA, B, ldB); return; } cblas_ztrmm(CBLAS::getCblasType(order), CBLAS::getCblasType(side), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), m, n, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(B), ldB); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_TRMM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level3/trsm.h000066400000000000000000000070101456314707100231370ustar00rootroot00000000000000/* * Copyright (c) 2010, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_TRSM_H #define CXXBLAS_LEVEL3_TRSM_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_TRSM 1 namespace cxxblas { template void trsm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB); #ifdef HAVE_CBLAS // strsm template typename If::isBlasCompatibleInteger trsm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, float alpha, const float *A, IndexType ldA, float *B, IndexType ldB); // dtrsm template typename If::isBlasCompatibleInteger trsm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, double alpha, const double *A, IndexType ldA, double *B, IndexType ldB); // ctrsm template typename If::isBlasCompatibleInteger trsm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, ComplexFloat *B, IndexType ldB); // ztrsm template typename If::isBlasCompatibleInteger trsm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, ComplexDouble *B, IndexType ldB); #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_TRSM_H xtensor-blas-0.21.0/include/xflens/cxxblas/level3/trsm.tcc000066400000000000000000000144251456314707100234710ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3_TRSM_TCC #define CXXBLAS_LEVEL3_TRSM_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void trsm_generic(StorageOrder order, Side sideA, StorageUpLo upLoA, Transpose transA, Diag diagA, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB) { if (order==ColMajor) { sideA = (sideA==Left) ? Right : Left; upLoA = (upLoA==Upper) ? Lower : Upper; trsm_generic(RowMajor, sideA, upLoA, transA, diagA, n, m, alpha, A, ldA, B, ldB); return; } if (sideA==Right) { transA = Transpose(transA^Trans); for (IndexType i=0; i void trsm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("trsm_generic"); trsm_generic(order, side, upLo, transA, diag, m, n, alpha, A, ldA, B, ldB); } #ifdef HAVE_CBLAS // strsm template typename If::isBlasCompatibleInteger trsm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, float alpha, const float *A, IndexType ldA, float *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_strsm"); cblas_strsm(CBLAS::getCblasType(order), CBLAS::getCblasType(side), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), m, n, alpha, A, ldA, B, ldB); } // dtrsm template typename If::isBlasCompatibleInteger trsm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, double alpha, const double *A, IndexType ldA, double *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_dtrsm"); cblas_dtrsm(CBLAS::getCblasType(order), CBLAS::getCblasType(side), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), m, n, alpha, A, ldA, B, ldB); } // ctrsm template typename If::isBlasCompatibleInteger trsm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, IndexType ldA, ComplexFloat *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ctrsm"); if (transA==Conj) { CXXBLAS_DEBUG_OUT("trsm_generic"); trsm_generic(order, side, upLo, transA, diag, m, n, alpha, A, ldA, B, ldB); return; } cblas_ctrsm(CBLAS::getCblasType(order), CBLAS::getCblasType(side), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), m, n, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(B), ldB); } // ztrsm template typename If::isBlasCompatibleInteger trsm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, IndexType ldA, ComplexDouble *B, IndexType ldB) { CXXBLAS_DEBUG_OUT("[" BLAS_IMPL "] cblas_ztrsm"); if (transA==Conj) { CXXBLAS_DEBUG_OUT("trsm_generic"); trsm_generic(order, side, upLo, transA, diag, m, n, alpha, A, ldA, B, ldB); return; } cblas_ztrsm(CBLAS::getCblasType(order), CBLAS::getCblasType(side), CBLAS::getCblasType(upLo), CBLAS::getCblasType(transA), CBLAS::getCblasType(diag), m, n, reinterpret_cast(&alpha), reinterpret_cast(A), ldA, reinterpret_cast(B), ldB); } #endif // HAVE_CBLAS } // namespace cxxblas #endif // CXXBLAS_LEVEL3_TRSM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level3extensions/000077500000000000000000000000001456314707100241235ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxblas/level3extensions/gbmm.h000066400000000000000000000045241456314707100252230ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3EXTENSION_GBMM_H #define CXXBLAS_LEVEL3EXTENSION_GBMM_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GBMM 1 namespace cxxblas { template void gbmm(StorageOrder order, Side side, Transpose transA, Transpose transB, IndexType m, IndexType n, IndexType kl, IndexType ku, IndexType l, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, VC *C, IndexType ldC); } // namespace cxxblas #endif // CXXBLAS_LEVEL3EXTENSION_GBMM_H xtensor-blas-0.21.0/include/xflens/cxxblas/level3extensions/gbmm.tcc000066400000000000000000000153431456314707100255460ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3EXTENSION_GBMM_TCC #define CXXBLAS_LEVEL3EXTENSION_GBMM_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gbmm(StorageOrder order, Side sideA, Transpose transA, Transpose transB, IndexType m, IndexType n, IndexType kl, IndexType ku, IndexType l, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, VC *C, IndexType ldC) { if (order==RowMajor) { if (sideA==Left) { if (transB==NoTrans) { for (IndexType i=0; i void hbmm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType k, IndexType l, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, VC *C, IndexType ldC); } // namespace cxxblas #endif // CXXBLAS_LEVEL3EXTENSION_HBMM_H xtensor-blas-0.21.0/include/xflens/cxxblas/level3extensions/hbmm.tcc000066400000000000000000000064141456314707100255460ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3EXTENSION_HBMM_TCC #define CXXBLAS_LEVEL3EXTENSION_HBMM_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void hbmm(StorageOrder order, Side sideA, StorageUpLo upLo, IndexType m, IndexType k, IndexType l, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, VC *C, IndexType ldC) { if (order==RowMajor) { if (sideA==Left) { for (IndexType i = 0; i < l; ++i) { hbmv(RowMajor, upLo, m, k, alpha, A, ldA, B+i, ldB, beta, C+i, ldC); } } else if (sideA==Right) { upLo = (upLo==Upper) ? Lower : Upper; for (IndexType i = 0; i < m; ++i) { hbmv(ColMajor, upLo, l, k, alpha, A, ldA, B+i*ldB, IndexType(1), beta, C+i*ldC, IndexType(1)); } } } else { if (sideA==Left) { for (IndexType i = 0; i < l; ++i) { hbmv(ColMajor, upLo, m, k, alpha, A, ldA, B+i*ldB, IndexType(1), beta, C+i*ldC, IndexType(1)); } } else if (sideA==Right) { upLo = (upLo==Upper) ? Lower : Upper; for (IndexType i = 0; i < m; ++i) { hbmv(RowMajor, upLo, l, k, alpha, A, ldA, B+i, ldB, beta, C+i, ldC); } } } return; } } // namespace cxxblas #endif // CXXBLAS_LEVEL3EXTENSION_HBMM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level3extensions/level3extensions.h000066400000000000000000000037331456314707100276140ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3EXTENSIONS_LEVEL3EXTENSIONS_H #define CXXBLAS_LEVEL3EXTENSIONS_LEVEL3EXTENSIONS_H 1 #include "xflens/cxxblas/level3extensions/hbmm.h" #include "xflens/cxxblas/level3extensions/gbmm.h" #include "xflens/cxxblas/level3extensions/sbmm.h" #include "xflens/cxxblas/level3extensions/tbmm.h" #endif // CXXBLAS_LEVEL3EXTENSIONS_LEVEL3EXTENSIONS_H xtensor-blas-0.21.0/include/xflens/cxxblas/level3extensions/level3extensions.tcc000066400000000000000000000037511456314707100301360ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3EXTENSIONS_LEVEL3EXTENSIONS_TCC #define CXXBLAS_LEVEL3EXTENSIONS_LEVEL3EXTENSIONS_TCC 1 #include "xflens/cxxblas/level3extensions/hbmm.tcc" #include "xflens/cxxblas/level3extensions/gbmm.tcc" #include "xflens/cxxblas/level3extensions/sbmm.tcc" #include "xflens/cxxblas/level3extensions/tbmm.tcc" #endif // CXXBLAS_LEVEL3EXTENSIONS_LEVEL3EXTENSIONS_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level3extensions/sbmm.h000066400000000000000000000044251456314707100252370ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3EXTENSION_SBMM_H #define CXXBLAS_LEVEL3EXTENSION_SBMM_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SBMM 1 namespace cxxblas { template void sbmm(StorageOrder order, Side side, StorageUpLo upLo, IndexType m, IndexType k, IndexType l, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, VC *C, IndexType ldC); } // namespace cxxblas #endif // CXXBLAS_LEVEL3EXTENSION_SBMM_H xtensor-blas-0.21.0/include/xflens/cxxblas/level3extensions/sbmm.tcc000066400000000000000000000064161456314707100255630ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3EXTENSION_SBMM_TCC #define CXXBLAS_LEVEL3EXTENSION_SBMM_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void sbmm(StorageOrder order, Side sideA, StorageUpLo upLo, IndexType m, IndexType k, IndexType l, const ALPHA &alpha, const MA *A, IndexType ldA, const MB *B, IndexType ldB, const BETA &beta, VC *C, IndexType ldC) { if (order==RowMajor) { if (sideA==Left) { for (IndexType i = 0; i < l; ++i) { sbmv(RowMajor, upLo, m, k, alpha, A, ldA, B+i, ldB, beta, C+i, ldC); } } else if (sideA==Right) { upLo = (upLo==Upper) ? Lower : Upper; for (IndexType i = 0; i < m; ++i) { sbmv(ColMajor, upLo, l, k, alpha, A, ldA, B+i*ldB, IndexType(1), beta, C+i*ldC, IndexType(1)); } } } else { if (sideA == Left) { for (IndexType i = 0; i < l; ++i) { sbmv(ColMajor, upLo, m, k, alpha, A, ldA, B+i*ldB, IndexType(1), beta, C+i*ldC, IndexType(1)); } } else if (sideA==Right) { upLo = (upLo==Upper) ? Lower : Upper; for (IndexType i = 0; i < m; ++i) { sbmv(RowMajor, upLo, l, k, alpha, A, ldA, B+i, ldB, beta, C+i, ldC); } } } return; } } // namespace cxxblas #endif // CXXBLAS_LEVEL3EXTENSION_SBMM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/level3extensions/tbmm.h000066400000000000000000000043241456314707100252360ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3EXTENSION_TBMM_H #define CXXBLAS_LEVEL3EXTENSION_TBMM_H 1 #include "xflens/cxxblas/drivers/drivers.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_TBMM 1 namespace cxxblas { template void tbmm(StorageOrder order, Side side, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB); } // namespace cxxblas #endif // CXXBLAS_LEVEL3EXTENSION_TBMM_H xtensor-blas-0.21.0/include/xflens/cxxblas/level3extensions/tbmm.tcc000066400000000000000000000063551456314707100255660ustar00rootroot00000000000000/* * Copyright (c) 2012, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_LEVEL3EXTENSION_TBMM_TCC #define CXXBLAS_LEVEL3EXTENSION_TBMM_TCC 1 #include #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void tbmm(StorageOrder order, Side sideA, StorageUpLo upLo, Transpose transA, Diag diag, IndexType m, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, IndexType ldA, MB *B, IndexType ldB) { if (order==RowMajor) { if (sideA==Left) { for (IndexType i=0; iE?|km ¡m†ä®•Û † älû¾cˆÆf{HÂýë?•¦ÖÜêÁ6Ö9›@·¤.I¥ÒP¿ªºõfþk¹iww÷p?@ÿVÑÿé¿üËSE‡{»»{ûÑa5Ø¢ÝêÞûK¦ §ÅlÞ›"RFƒã<õÐvðßHº…ñï÷~?¿ìÜ/ë¨?öö¬ã_­Õj0þµ¨íD»hü«µ¨ö_Áî²Ó>þN×ßWßoNÚÇA³Þ¹ìVÚa³6;áIýhváßîÆ¿6qæàºßõ¦A}ú°xŒç3ôì_¤¦æÅùåÙqUCœ´oŽ¿_¸&¨&lózâ ëÓiïÅY_§²¹(A?…âðëåbú<™ à×Ï$‘çPÚô'c4Æãy0> fA/ø9èÏ'Óày´ˆÿ¢•}YLç?Óàh0ï G3¡ÒÏjåÿéõƒ»Éø¡‡hƒÑpüŒž„AíC}8üÈ÷4¹ÞwATýPûð©ÿ¥mwƒ>êÅÞ|ˆ ú?zã”m>¡ ¡†ïgKœjÔ×g4zt…žæž êéø÷|0£²_ã>¡š—¾:®Ÿ×Ízã:¢OŽ;7ÇWíø)¯~îKPiïœïìn Â7߯Ú R¤Ò¬oìÿÏÎîÎîñ–)ðdˆ‚zûhx¬‹ÿÞn¾·y£QêOîÁ=õÛÉüG0÷§Âiƒ¨E¨×…ÿb¹ƒ£‹à$øDa;~ Õ­œl çäß-Ä`›ˆ1O6âLÇí#T˜uÁÙõ±‘ˆÅ˜|V =UŸÅƒ`<™[H=é¡Âß]åoÖQg7Ð×8{e»½mlÂcÔ =s—eîJ™»rfG'uY/u…nêlHù0%'@Ð!¿‚ïžtÉ«®­wÑ'_xWHÜÞýkÝ¢õM$²þ÷'ë\ÿw"mýß­–ëÿ*™.âúß¼ ë†Å­k=Ð$ìóP\ããõ”ýõR®òÖU>–ÿÖUy}Ëm¹ÆZר¥­«ärU}߉¬ÿw“y}ëÿ^mO]ÿ«ûåú¿ŠDÅ ]y¿|o7oN.ÚAóèâ¦ùwHð?Í´¸£5{7Çç—Þw'ãùt8ž û¦KTüê¤}}ÒD•·O¿ª›ü%X Ñ?Dÿ±e 3£áù+Û¬PêÉ¿[¤‰¼uÙØÄ;™rãÕ]Ú_Ý%nkK‰ÌýGnuøú¿Xßú_=ØÕÏÿ{åú¿ŠD§ƒiýÿþ×L·×. ¼ HµÀËBÛ´B{+4¬ÍåÒìÕOÕ¬ÉßË5yµ‰¬ÿ·O?×µþWkÕ}Mÿ_=ŒÊõ‰Ì,ñþÿkãüß•›«zû:<Ûaë,l}ëg—ßêa=<;ª‡tKÐ8¾©‡¤*(mÝ/o·ιhj~«_Õ‘h¸ 0mYvõ T‰6xg‘bcû$žS²³˜Œx76O=tÞý½M ”…,ï|Õx þûsÐ=ÿèmÖ7#qx‹v›/!z… (ï7o´,æŠ6¿‰Iž_h3 9‚Þø¿D[‹A0#+üÆÏ_ðCº ÂOêÁ~Jž‚Û—`ÜÂcÒ¶0ø5D‹îã(˜-n·ï†½‡É¸7"è!jsü˜ö$yCC^â ‚íxL7£q­ .Æ*¸¿ö‡ CC ç:SJµ‰_"¿QA-RņT™,ñTšò@?#æÅD†ñý¸Â%R °‡Â·éh¶¡tˆ…s}×ý¸«¹MQIÄ*¡Vƒ/=³ `ytŽGô(F{“uóüªñn‚`ýÉt:˜=OÆøà=é5VZXƒÊlÑÿVüb>yF|?‚P磟(b¹Ñ`Cåþätpæqp'“{]‚W(hôótò0í=³Á„Ær„ŽŠÓÞx†J=‘y›Nž€‡~¢BC<Ö÷ T’>Ck|ïa€JÜkäoÊàã`u7 Nñ‘0hr ÔBo‘VÙNÍyPEªΖçõNj;E¹Q14xç'íJpO¶@öm˜«@©^ACÇGÈ ªnÒ¤ } C熶zm´‹ý~¬¾­î ¯¼äð:Q¬B>Y66¿¢aœ £ùTÞ!·?Ê$¦Ì†ÄÙ‹4;6/ìàÊÕ…L*®ˆ?QHeŸŸ(´|6B¬ · ŸÝìÝÎ*xÿŽj6¢cÃKžˆU?«žÀeݯál$—ù% ì q«:š¸•ª`€!¿.ÄypÎ'³§ _$Á&…PÇKÕtvHyL7HÄþ»8aGÙF+.`\faºü Ê3 eÉV'`r ŠŽƒn0 g”îÙ`ô ÇÏ‹¹ý]òº.UY©[—ª ›—K»^\ú²ƒÇ uVˆJ ÃÛä'úàt8Ÿð†ê^<ßõ ^ ûFy·ëÉ»Ý̼Û%÷¹y×÷Vþlðs0B{‚ƱÞt²@ÛÒç°¶Ò† Ëxß èk3á‡6â´r¡bçðùÊövð7í[ØÖT·/PÅhë¼}úxÀt Ú#®@àÉx<Ú=º*ŸõnyVôɧ—àh4§“ÿC+mï!hB§£l°ëã|sVõà[ïé©7…åÁ•õjˆºrz‡rg´¼Fíö¤ï³Ãyá †ËZ­óI»pÑ>¦O.Ñaÿünp*èáç a\HáýJÁÿ=¾ºÐKÂS¢gŠê·A J³Î£ýå‚(>ÂÓð´žvÃVØú~…­NØê†gÇíü`×Ùg_Ošõ³ }Úk.‹ VøìµÝp3› òÐQáõâ–ò»P%/Þ9¾jœÕsÂ3B´w ÑnM¹$Céf€&5‘HœÃ1‡ÿ×k@WâDÿüTvÚ7;¸aôz Ý ªûÑßݰw¤†-L‚–«ù×ÕÅB…~šÛ¡œ]ãïŸSˆ9{UÍÞvf¯©ÙÑqÝ•OËÿÝ™_Ͷ‚P>´Õú¾YÛýQ-ÉôlÖoE»†"]wÞ~QƒCŠ~¹ØiŠ"fgœYù‹\©þ…§œ¨SR>ă°Ýÿ,†HÆNóÅí$îá8ÞŽ×!Ð8Êw.®v`ã¿VªT𵼑²AذÛx†ÔÆ×Y²êÉGÂÍ6½ޝ‚ãÁ ‹¦0¬6W…™io¥Ø40e‚„OôTY,,€j¢x}¶t“39Oü.RKødÕÿ“ЊM¦É¯ú}Wd. !X‹ÝR¿¦Ûj~mèŠýfHº:½–³s÷RÆzWQÿ»ÈÛË8âmúË2[^,`ŸÆï¦’e£p ô%žb¢öG˜iNAPµ:©æêæƒ]z¡f⨡S9ílÀvr$ ËÀ°‰‹Y2’;ºKrCg΂(Ûßå7tQxºÝú¾»½ÊyxºÕ:³U ‰N9j TmÖ+­­“ð—ÚßÕJXF’Æ,áþ>±%qņ œŽùq Ýo,ù ÎaŽÁéÒÑé‡Ç’ô|¸¬qT¿ŒFáuÔH²T·D2>ºG]’ \Ë0±©^ö…hßM WuÚkƒ)a×lÓ>Š\ŒGYÉ"ï8NðNÔÉ®ˆˆOY™ˆÒGñ_Œ{6™Þ§tœa^‚(Ñn1Dü8#•Ó Õ§¡ÕÆÅÝÊ)V§xZ) Ü"ˆ óÌ©ÀÄQ”AtE{ÙYèD[¬X*Œ¹¢jñÜe©¼M"Ø0ªɇµ¥ñaÊVÕ^ÇjdJBšp—@ó^ !mtÛÀ¤ö1: ¡c¹ˆ%q ý\R¢øÏÁÓÓºðŸµhw_·ÿ,ý?¬$‘é%á?ÏÏÉq©â*a@ègƒ@@›è×f1ЮjFUÚ±ŸŒ®\ÐF¾&øX ,(ê'”xt,h3ÞnNž+A=ØÀÿ6‚ ôkJXÎÞ‚â{Ⱦëbo>cm>F’ Ð6×øô­Þŀп4ñ;Ü¢þ`FF”v\ј F9X4`- zzŒqPLý7—M^†=÷†ŒÖS@F5PÐ8QÚ)rt×t JÀI=-FóáóhØ'hÓÞ, QZ—TÉ´3ê¸÷…‹=CŽ#•Ë qtãàQµØ7_À(™I):¶áèØÆÒ:¶aêØnmÃÖC SÇÒ2ŽŽm˜:–óîX_$.dŒ{Tfr4.“/&øu<¹ä|h®íàê±^ÂÂ.° øR+fWkt24ÃÆ1¾2d#Þ×·‰-ÛPy7±nl¢sMûc}Z)U”q$ßðö±HA²¢ß¼Ñc@À™ ý‹L´ÈøqÈ’f©JÄÒÒ…NªHøÒÖ@sm°^XVc’4ÙÈ?„WÍ'¯Úí8í·rüÛ6–G&UdÂCB›cŒé0 ï_5·T‘RòÑ:ÙHËÌ Tù­ÀÌ·*3%fÖÖ9ÆÌ©™Y«Jç±q37ÌÜðcæ1ÙúÔncæ†/37<™YÛÃèÌÜÈÏÌDfn8˜ùQcæ†'3kV …!Di ãŠ@A¢´HF/œh3'N´I^ûOÉf*ÃvV11pS_›M3}Ü<ÏéTLJ.˜ÖÐ !pÔ¯Ãþ¹¢ucß`"õ!Â`P‰8 0”·È°G©$Oq¿‘ÉÖ$½ž8ٚɓ­éšl„f6Ýè|‹'%…ïqa*»Â± jM… ê¸ÑÛ_·ÓEoú¸ÑO)p£“io>‰‡üøëhqr_ßzÓ_ƒÑÈŠ.E§jtzGUÕGDϧYðQúœÍ¹IŠŽ4M*¶$é›L‰D= ÏÂvó⬶¯.þ&?JgÀ‡ë!ül„í‹›:ü0]Œ½&ˆ®ˆ•š)¦ (@óéb¿€½BÏÁjk€Ͷߦ1wn0‡§Äf ®îîB,1I‘Û,è&ü å ´"ÓgÈ}†Pkp»˜Ô–ŒWï‘ñ ðàÑÆÁØÌ„L9úáì OÆŠö³¢Jl¬+Á]*aëø¿nȯâkÒ[jñ¦ô^/¿' Ä›º¦>Ä}¢@ I}Zl>Ê*:V¤e(Âq‹*FÚgüxÃý¡†Žṁw&€gÒ^ŠŸàÖÁÍ>ºŽ¡¥þøfþ½†þ½†þ½ÀøÑ†û£JÚ ªÖPÒnPµ’΄‘&*\Ì<þ(i´¿–Ë6ì=¯á¥Ñ$.|n/˜5 ʇu¢¦UØ4ÎÝ"¹“@Ô„žú˜ÚÚÐK¤Á?;ôK Gú€­‰øK‚µ(DHë¹á=îü (ñý­Õ 'ÂC&ˆšä/ÈꇦPÕCr±–+-£Q+K„|ŸN0[M˜ÕàÇšE;éSÄÏ ªK+ÛOêqÜo*[¤„<2±áo+t¤¢Kᆃb%Ny†ÉhYÈÀͪœ¡{a*!I¸JRÖ‘;ÆFºû7’õý…£!OB‚è1@q9{ç@Š;è£}š}J¸¯èfÀo"l~Kš Q¢ÈK”yn`«f7‰„ªdÔYqù@§DèAJ5©q}Œœ (H˜¥"Ô2eº™ªe,ÙWÈcIf‘EŒ²ŸÄ!{ÅpH-=‡ÞX#Ò[f »ÉD´Ÿm?…1™Óð^|‘ÔqËœên‘ p”n¥£L¥\â2¬À‘ײcY‚£‚Àô@Ç'¿5ø­qÙÖ`"¨I Kqô±¨µ8ú˜o-Ž>YgOu·ÁÚ ˜*š\¶ê”°içC5qÁÆÍRæC5Zú|¨VṡjJè¶c>T÷–=HY÷D¨&Õx3&BÕ°èárž¡j_FªY–q‡çM½ŽÀÞ5y)qškA†D!ìµ9óù¶¯ªŒ¬¦[€ ½á­JõÐÎc öZ~»ØoDÞºÄlÍia…/OŠá•ÄõV¨ÊrÔ¡ò£šÎp Òf’Ú®•Ij öPšQŸÜ!éÏ,xŒ¼”x—(Þ½x©VÍ|(RN-Ý é-ó’ýB³–p¡é}lN8‡IL’xtñc’ý'g*ijén$!½eî8°sÇa Iãg™*˜wc™Æí¿Öæÿ?:<¬Võø?»¥ý×*abÅþKôÿ¿ZÏÿ¯Éç?ê‡?ÉåJc¬Òé¿ÿ•úïC†.)€ÈOšOyÉ| Yñ)ÿ†ìC`§Æö–°KØZKØ+t€ML•poŽ'ãmb añ‰-ÏvÕ Éß'¶TÑ?vé»ôŽ]´MÃk‚Þ3šŠòŽý‡ºÅÖJ—Ø:Ø[‚cÛQÑj¹D‡Õ&× þªyÓs ¯KÕ¥¿ê?Ü_uéžZødéžZ&¤tOípOý‡º¢ö5©0ú”.=J³j¥}M",®¡_cè?ÏÕsj_ÎîVAK÷Úœ†Š*ý3»ü3§wÀœ%^«å\Ìó*/ÁMòqN7É ÿ1í¯ ÿ±»W­iþ÷£ÿ±ŠDøFÆ\5+1òƒb>܃à@Òƒ>ØØŠ÷`®ÙqÕ<øÂÙxÚ?¢7?BÇÖêñ¶á÷æ Á‘Ö è @SPm€.0¸"xbgnz}¢]y3fo á*¾ÎK¦Äd”À’Þ"pÀC+ÒÓ댋ÐOR%2[¿#±‡ÎÕs(ŒŠÑôC¡ÇV¼6*Cñâ=¯]Ëù¶à4±îYC8b3Kòý‚mrj«KsNó5ŧDGü޶n…©¦_u+L5ýj¢âSóx•¨øñû¿Åúîÿj‡‡ºýW­¼ÿ[E"l¯Üÿ}÷÷ß³ÞÿÝ”÷åý_yÿWÞÿ•÷åý_yÿç1Žåý_yÿ§Õº¢û¿òæo=7ßË›¿÷{󇋘/Ê+¿u]ùÙ¥¼ë“îú¾ÿÉw}¦Dîÿ~Ü®ÏÿSµV=Ðü?U«åýß*™ âýß·Æù¿+ß/Ï.ÂvØZ±û§þŽîþ ÈYí!ô‚rG(û}2ÜÚü>eñÕ4Vö3¦¬ÎoñùUú4D{ôglÊ’mÉ#8¦@§$t y€#;~8/¡«OçN8o|E-Ä'=rÂ}†[»i0šüL¥òˆBtN\·ˆ§o~ÒÈÛœOßR-vßP˜ªÏÁ_߉G‹xfºá$¾®Ø-I&hÇþå3òåû2îƒå}¹è+×ÉôŽÜ¸.éšÕ7ÞzËz¬ð5¥U¹§ tÓêÁ MÖÙýKì;èd´^õpá·_D$hsC¾« ™±×–R5΋2érLbr50ÁÅjbÙÅÄŸìä®}Y¹‡ƒ§Tº‰t3NP˜Q5üR®gi ¥¶„Â5šÌ[Ĥ¾¡]FËÆû°«ÒÏÔ(~‚†rÏûùä‘x?'ѶiÇŒdFUú >ÙõŠ<¤P-}@½¶CGÒ¼VüŽF$Tå½(‡“ÄoϼŒ÷ÓÉŒïO8îBoÈx>FsÎÐÕ{ Ñ2q'¿ Ò9 gÒž‚¶Y‚‡™ªíàÔœ8C|„K ¨ìånAälK‘Î4¨nt €Ìp´!-¨Ðj1r"åÇ å-:bƯ<§_Šzêó*¦¨Te€eÊÝ'\<É"T¡TT^Õ&Üíd>G,;>üÐ&i‘XÒ¤óÚó¼ÖIç7áNÃàü¤] ÚPå̹5O¸ödŽzâG^í>õ†ãš{ÐÝ\gÌ™Œ_ò‹6©Á]v~{öÙlÞI‰·Rÿ}ÎÛPèpÁS˜²:ïÄ"”ÕRïNE]´[âôâG½0½¸iÔ=|–~K?€ëWÒ¾b?€Q?™ÆÒíðòìûuļºÔ¾oÕñ_ˆ6=áÕq]l\.µ²à¿ß¹¢“¹Á yu–³_Jý³;кͳ*·½q¿~ø¢w)ÚjY?ÎlhšÒ³^^§víe{´³è²óéé…“1ÓÖþý}9¶³¹‚Y–W»„ï½~—vŽ¬ÑŸ]UoË™_´ì¾ìÈžQ¼&—1øÚî,ˆF#¦‹l#ØýŸ2±D¬ ¢ñ\ËäùorD7l¦ŽÇ{ ;Ï@¼.J6Üžèb?xuºÝÚá¶2rÏ2Á!^´Y¯œm9¼µ1É¿BÂ-Éå–êNÏá©[9¥ÞŽb"`÷ƒ*¥{=T¯ä ï,R»ÕÓâ§FQä‚ON£§¨„ñtøç²ºâóáô< 9ì+‚ ì~5ðŽ)S’C@7CIþ³¼YJIºï@5ƒ†R[dÉ)ldZN?k-Âîiž°,®¸8$òT¼ïO§™ÅfäŒì^„ÜtÌ–iæ˜aÔO"\JGpZ«´ÃÓ­–á—(eíñÈÝ 3~ä»\®-¥,¬ðPÖØÜÂÔ9é³ ó ™ý6é|jš‚ÔQg ÞÈ( i©r<òÛð:lÞ ‹‘±¢—ÈbüâÓy Ù\^¢øÏÁÓÓ:ñŸšýwõ°ôÿ¸’Dæ•„ÿ<>?¯\Ÿ‡øl§Æm Ÿ ‚m¢_›Å@@¡f¨UhŒÿÉéÉ…mTàè—f>” 1]Á@™U  T 3Ýà¦)(Tö)dllÖÕŒÉèQ U¡äš°Áð£M\J´/ï¼€¡0'0”fÖ¡¡¸ÏtùµI½ççè#èMÁPM¦×ÁÞBÑÞÌÅ´(¨L÷¨˜J_‘ÒS¥´a¨x²éí¼ ¶¼+iö¸/•Î$+ØÇ¹wB€'À·ê ðQÔ!b": &Éx›XèìløöbˆîžçTòãëŒ$.7ÊþëǰÿC®¨‡f§±o0‘úa®Dœ’ËZD¡¹Ï'@“ôlâh&O€fÎ Ð\ÂHñ­%;Oú¸ýep;] 5 p¹ŸRàr'ÓÞ|ë ðÐÑâþå>¾:¾õ¦¿£‘½‹6´£ªê£‡ ¢çÇÓ,øŠ(}Îæ|‘Õ‘¼IÅ–‚Ô}û0U¢ÊêÉ ÷= [aûêâïºÒß//¯ ß{MgS‰›³Ý|u¢xï!@'|m„à’Ú¬‘‰ÙkcbÜq ÐÌÁT9AÅ"ªX ›êýµ—Wmø‹IqL·©Æ©ì=v{ÖÒ°Çndóžš]òz…ÇÂJ™ÁcV#•Ǭ¸\Ó§\T5±D*ð2è%ÞLPrB@/ÉÅÚàŸzÒ¾¯€ ÛD4¨Ëó}Ÿè®ªÉüy€kt߯’Î’>š85Úä±\hÕ1!¹xÉÖö¨É¢ŽÑaLTû0¡7’zSF»4\‘q /ô‹û»A ñÄòƒÔ¬´È8Ò_bŒH+sÊ b¸,áòBëô—Ú™¡¡+\8Û¯†Åw…Ó°³+J7s9ãyƒtЋж4GsîP\¥Ë9›Ë9ÁÁ™¼8ÝœœwÕÍÛTMéÓ®ôiWú´“kOëӜٹ =ï#” qòJÜØÉ`ëgLÁÔÜžé4hH²g:Ö=yÀ¥gº·î™.k9¨Çl Âjä¯ÒY]鬮tVW´³:Á•ˆ4ÙwŽJz>éb—svµ0$³¤ ži–àeî´t0'vè9 FwCy†ô•ºŒ³ð‡’2x‹+ÌO›"Jd·m‰’µúi3¡w(]’/¶„ºhñSº_Ú—0lò)¯‹5Û/ß³ZnQ÷¾½ª—^ÕÊ„ÃÿL—ÿIÀÿDû»{*þ'ŠJüÏ*‘2þçJ†ÿPàFyA~`i!RÀD¨ÏQ>þŸ«@øÄúãioüqë4ˆO=†øüFÿÛü²ÞðŒN0@(;ÜEîa¸E¯÷dÔµ”¸ž×ó¦p=x¦ i¹¸ž ÷ê%Ä*?ÄJò‰‘¾MF€5,ì_bœó'á½ìãâÕ¦äqqVã—âÁgNçS$¼.ø8£T Æ/æP€po¾[4ZN\J &É &Y>&D=«p0F‚´:%äm`@±úÃ5Â1 ÙèØ¹@W†â;^¬5#8øÕ|EÞIÒr1Î\îê3Sð iœP¯é òºQqgxª˜ëÙTÌ‚Z(ƒ¯¨?Ð߉öñ [U(k»OQ.­$¤:³,­3ËRP×l2ñ¥6ü' T¡¢ÄÕ¸î”F¶ÆJMUpAÚ÷‹YK”ä†c'Ï8v¬iWISÚj¹†¹³%éj¡Zá ÑYG(I×ú¤pÃcV0[I’‚9Q8q)Ë$Ρƒº6Äоî‘|É)†ÒùÊ)”m ¶$AX–+H¼2AUÏ´i‡¾ãì¥g&»Öáú8BIº IƒTñÔ_¥vøI\ÿ[]—ÿ‡èðpO÷ÿ°[+õ¿«HdŽ+úߪQLœ>¤ÐK®Ôë•WèõáªêV W“”Â/D)ÜŸŒÿóP¡Úà ô4IY뉜@Ä  žRY\*‹ß²xµN Je±Ü«kT¿ókß¡xíæÕ¥Þ¾ÔÛ—zûRo_êíK½ý;ÑÛ—¾J=¾§OC€/Í?ð‘Có_]©æŸ(ýSxmèà5£«iÿc‡9·“9‹ÿe€ˆê|B  üÀæsÀâ’`CfÌcÂhc%|Ôâ"WØõø¨Õ]„ñ£ºzF¶üCÐ êÍLa–¯‰¨E[IX³+>Kí¸»ëÐB2ãBjTÈ-n— ž€Óq—ý%iaP ’ÛŸ@FZD[]ökõõ¡.|ðª^”sL7ËtÓòLV †Ýí‚B`”ãºΰœZ%l¢HËeâŽÀÅÝU±±’28+X–D½Ï^ï“7 ¶W"+i_jÑׇ·„qñA³¼±½"Ù„{Ä ¡±{p€´€—3H)×œ× ÌQ3äò1ã‹Ü©¦DîÄøÇ¥@ÜøZ´w°¯â?jû¥ýÿJáÿÑ"'½›«zû:l‡-)Hýl8 Môk33["‚´ðgà# ]dž²r#Dß~iBÀÖ0R¤%@Eà`­©7bäQ8Èóé*G»4bFè ~N"¬QàÈdj®cóš©Õž×Õ:øDE"#¡*=òü„ð9‚;4FFMÜE ¤B’û‘dèflOI4?*Âåi {5ël€Zu‡ó†laª –=Vgpx þ6½²Í™[ÁEAŒäðöD-#] BºØ•cAsEX»F¬0lz,¤«ìcOoñH/ZÌà }…d"¬ƒX†~ g™RôÆX‘ÎåA—a©"­ÕptZ¨a1Iò2(ÀIø*îQ»™i4èáúƒÞ¾d€ŠXˆ!  fbµ›Æß ¸—ãÜREÆ’¾pˆFZŽFrãñVàèÛ·ÄÑ G7rs´Z»£¾ÝðäèF2G7VÇÑTÝ(œ£Yl"__T ±‰¼>Ú$¯ý§Q3 FiÇQÊü˜ IÙÌ‚¤ä{ í¤—LÙ4ör¡)I•+S*$*È~h dHeÖ²vHÊòh—×½*\¥X™ Y‰Å…‡`o& öf.ÁŽIÁœ†/%PÇ­cYKÆX~Üþ2¸.ÐPÆòS Œåé'SŽ×?Ét´¸¿G¹¯Žƒo½é¯ÁhdEb¢ñFóUU=L=?žfÁWDésp6ç uTfR1ÚÂóÉŒíj_{òsûS ø¥I”è/¬}`o^°>üzãø.¨ÑÑã<›0Ë®³AoÚÿœŒûËy¾;Œ$«'/Äô4< ÛW×•Îø~yy|eøž -‹÷.Öxi$ZZAQÒè¯>ÐPû"îh¨«PqËwr£¬bc¯[쵨ÔÂ=„^*Ø26•€SqA70‚R½Q©bq±¸r’9ÖÍ27Ó0­nlMÍÞrfßS³ËhVèùd_VqÙ†oÙOzÙ¦Š6ªš˜ -Œ¶µŠˆhjH4ôT`4.8·_¨4$«é ™Ü< þÙa›ƒ˜%~‘/Ky>!>—àñËtʉš¤ybX¢%¦­·ÄóÂyÕ¶gä-W\ªD½ámœxĪÉcF¤G5xׄǠ#²¼2„K=ÒN ÍÃFN¤‡6Ò ¢ƒœ#íü‚\}nn©7®ÅÆ p“„6ƒähFˆ¸Ïš­þR¨¡Ê›¦´ )(µ$W Þ¦u~Ê$¥>¥F %†QTÛº›S ‰‡ò·w&Xgá=‚**³Jã¬à-gÙ§§¯™”}Ò–KY –ð_˜_9x[›aæJ €»lƒ%°=)ÊNiµ‘K;¥ÒNéÙ)•V¥UGiÕQZu”V¥UGiÕQZu­:ÐÝ ‹°í¯©®ìqÀ‹´òͦ±©Îð™o”¶¥í†TÖ`»ág±kÈ”ö­U¸1»öÎXª¥å…Jü›´¼HãÒæB¬´´¹ É€(ÔîŸcj 4¦H ï\šQ(5½"̳—E yÆÛbO8‰!ª÷JÌppXþ×2ì„0ãä+¯Ø,Ágn¾Nƒ„,KÁª-^…A '§Ï„X1‚2Á³Y¬à_ϺW{¹ïštØ‹BæStª†mÍ ¬÷_¸>²hs70ÑPj™²[4UëyVÓ•{$¨­†{XWÚœJáÈ›ªT}Ï¥é®+KÇûI¡Öã¾r³š%HOÕy„ò›ZQccšªé Žš ç¼–h/1HÜ‚ÄT5ÝfÒ[SûvtsBì”LèæVÊezG‰â¿ŸŸ~® ÿ½[E/Õø»eü•$2í%ü÷åù¿‰2¦Ípß—a'„¨6ûÝ…ß»é£~˜ð߸V¨Î€ÿÎŒü¾¬ln„øÑ­¤À}£v ¸ïU¶ýsПO¦ñÝ¢/âñá7;;¼Hèm¼-ÄÙ‚È&¸„1C2äsѾ#à>צÀn³ÅóóhH"¶=÷úè7hBaˆl dÀyc$cÇ¡=Qy‡g :oN Þ‘6( <æ—“H‡È¾Q"jQä} Ð"…õKO öŒEMPxêÓç§VG}j”I˜gmÐ;FýÄH~c$Šv¸Kù%$ØÂæ8‹IòoŒal'o úe‰©M¼]’À±c¸ô¶œÒ¶œvspæ‚S˜!NE•¤ðan¨™M”‰w”…‰2€=/W–¹çºwÂ;Ô$Þbºz²ø)£ô•th›{º©xõ¥È»È T,Dà%Ma#sœ k“’§) ðñ˜¯ˆ¨l#Qi³cÈ(¿ iIBWÅç•«“ˆ¿&Àû2’à„]’V•þgº<øOþ'Ú¯VUüOT«–øŸU$2ËdüÏ• ÿ¡ØŸúeJì¸'B}–òñø\A> ᣸tŒ Ÿz òùþ‡MöꈠtD¯ŒïaÈE„Õ¿ä%ÔR"{JdÏ{Aö¬Öñ]‰+{u¸‚5¬J”•ÊJr÷E:Gªu” ‰`ï!©o—k%¬+ð…ue5WyÚ2ü°9ݰeð–bRâBrâB–ïPO×AÑQÂ9Þœc_¾'ŠàÎ@¼€3¸¦SÞbDc(P Øêwà+ò¾Œzç\Œ‡s4€»ìÌÔpCêoÔk:¢@Æv¼*D%0£º¸Nu,²zŸDÑf[\F®üãL’à_ÌòI¢¯c.)d ~Çt¤ô®ã¬ÜT•ÍèYÑó¥6W7ë_’<¦QžéäašŽ•kì*gJ[Í_¹ ÉÀf;Gmæ¸áêúppþì²?\Êóå¢(H©-sYšd E´Õe¿Vß*èÂ^¡ª9‹vóñh7-“fÅiØÝÐ.( ÅAy¹›ÌÌÞÎD‡(VÇú÷»kfþÂ}¬ NR¼›•7°´XpIܘNCZ ¨%Û:öþ .>`–7°¤ääN_9‰{ĉ ±»m€´d|—H©ÖÄ7„ËI±„,¸S-;¯7üÏt2Xþg7ª¡‰UÆYO"ÓRÄÿ\]Ü|­4ëa³6ÃëTXRêšK„úYÐôâÀgƒ;¸}ÂW²½ ?yz ~_‡?c¸þŸã›eÝ—'\j‹8&ܲöÅÕyxݬŸ™n™}o‰ëë\_ÿÏÕM\͈öýØÀ‘;êî¢ —Ä;ñß×öÈ¢œB¦:ì â . €×ô3à—ÿÚ*€¦¢<8ï&Zad}ÀÏ6667«[ŒÖ†ðP¨„ 8àKØÇäv°§àsr“Äý¢LÉÛG²/¤ÅJ½ .!šˆü4ÍúäÿÁÞ¾†ÿ<(ýÿ¬$éò&o¥‚,'ÀÏ”K@,äD·?ºˆLDt6S8÷b@8Æ…áÕƒ"un_ðJ2F£T:uì¦þo£í;`¹ ÚÍ|Xífw)c–¨ÝL‹Ôî‹á¶šâmõ•€[)Æ,;¦»™ÔÝä½OIph*M…H$Ú†ãÀkg~»Nñ±kÕŠ ýôûÔª·½q:A K»J7¬9ØzW_¶Žú‹yïv4øÑ|À¯Þ…fÙDÓÝáÿ uÿLäÞ?SM+W´Ž 5€ÊD°Y¶:PöÕÔ$» [W”.‡®7aM= du}FòÒß·!oÇ·ÃóÊFõ~›õŘ4Bhzª=ã;y‘±Ô†Ÿ(0¸¡Æû’âè°²•`»½b Ø-CÙ®±lW)Û•ËzHG‘®iHºâ˜tÅAé˜F¥c–À©w³iÚ^Çé¦LI‰žÿ–z˜pþ«¢·êùoo¯<ÿ­$‘i(ÿèàuº @|Ž»^ãíŸ|ýÇ”Gâ5 vÎ]ü]à~È zê¼ê'çõ¯arG± 9_Ù¥"Z¹®“&øéš›¸ôï×y㘇ðrÁþC]ÿõž×vÿ[­îiñ?j»{åú¿ŠDfµ´þÿ]¿ýõúÒ$n_¼ö&ÿ.Y—~ôá4L6’«óÁ”,•³`þkÂn3—¿Ø¿öå›÷­Ù§2dÚb×Ê«^Gh+±Ïe„aq3|µˆm|µëjoh¨¸· E\2¤¿c`~~±Ý¹V€›ó¥EØÓÌ])³íÁÞ—½3;¬7»zwvËë÷–èúÿòô´6ÿoÕCýü_+ã­&‘y&­ÿÝóóÊõÉÑqˆMRϹ¸zxvTèg#„ ÓaýÚLï V– ¨êEÂY1îŽÓ“e?Q¯@õhKѨÀ7`oQù{‰ƒ>¼Ä}¯äk›ºÉŠÍŠã‹‰ØU\}³!ŽߤNá&SSÆÆf]ÍHtÏÔ}(fá-ñ®A–úz‰ `.5}æ» r ø‡è† Ðq#‡sôläT2Þ^âhfÝOî3Ä .UÔ{~Àî…c£ÁýàéðáÇ<`ââÞv;„ô(nÙÜ£b*}EJO•Ò†¡âɦÆòò·Ç»’fûRéLbĹïg2À·ê ðQC@ÄC°‡AM’*šîŽû ‰Më}ïbw ¤ÉÆçäu¢¿0È(+RÇ‹§[‚ᘢqQœ÷M¹"T:ˆ#«[Á˜Dâ¯I¥R!²‹È5ù¬³¾ññ¦VÁ«^ðØ¤‘ï=Õ#ä5Í5I1ì<Mj¿†³L¦äÀ‹:^Óê ©<ÀKÂSÀø_#Ü4QC`h“ Ÿ•ýØ •Ti‹Åùä»áøQ¢J ©"Ñw˜ƒ2£Ä‘*¢u˜—MòžÎ‘¸Ðd…‘"*DálK€Œ–Üüx´Îf]ÁGÅ,¦8õ¬ dÞÞàÝA—Rw=¼äŠl=bèq'XVFå /cTê÷0*¥¤dÔ‡xTÞ7£Ú?’äð:qQ„|ò"s?œ¢ÆÇ(:ìm±Èõ¡‚IclŒ&p=Tf‹Ûày:y˜öžv‚¿m+*$£ä€myEÝ÷{G|‚‰¯)jn©"R’«˜>[5Èkÿ…²a¨\ Êbslš|Àí¥’²PÃwÜžãÞH÷†kÜå§#=%…̤[˜hóÀÇFØs ÐYÝ8PÖ½))aÜIás¢•ð)ɨìw¸«kÔ°Ýì‹\àžRpI Tb¸a*@¤?»53±›‰ßš^ì wDpð<§²ŸïA4'›(û¯Ãþ¹¢šÆ¾ÁDêC$;%ÅýbIJ™€±Üé(™MÒ³‰@š&@3çh.a¤sUZKvUúqûËàvºèM_ÀUé§®J'ÓÞ|ë ðÐÑâþå>¾:¾õ¦¿£‘Õ¡éâi€VCTU}ô0Aôüxš_¥ÏÁÙœ/sºsÓ¤bKÑb½U·Ÿçu2&¯¿ÔÓ°¶¯.þ®+=ðýò’ãÏÅï¹\¿^´YŸ ž_ÑCl7.;~• fôËø É%Ü˜âæ‹ºìò’¸EÄ¿F¦¤¶Ï·÷–ý­°×ŠÿO:Ù¡ãÐKÅõbN­¢‹VnêK{yõ׆¿—VRÓmª1vûêíÈõÜé÷µ¦fw»‰ÝS³£-#@ó¡ÞµRv¨—mÄeÏ­å>éåš>墪‰%Òø›Åꀥø›=—üÍŠÞgI.ìÁ©¢8¢¥ìû)x†&³!mŸêÈ}ÖàŸæ;þ¾\¯É¯,ûˆ5œ[’óPÑùæ¹á=îíÊIx ºf&s·™¢k¢Â}GÇŠžBwl’¿ kÍNg '}\¼dtcë!;5¿-ˆîèÊóp&ôæARoÊ^Ѽ7-Y«cñЇì†' Þ]›•GúË¡e³Žþ<±Ñ ÒAþÝ ¸¼P.ƒ´­TN"¡1þ;CwâÏEö=MäÞÓ0H‡Ú}ÔfëP[wøw¨mH\ºŸ¿C÷íjöZÑPéc?œø¬bwÀÉðÓêãšìÿªûQ-ÒìÿJÿ«I„+düßUµE.n®êíë°¶V€l…"PGZÖ DÝbÆÆY0ö1¸¹yƒ$_ùÉŸÈ@ȉOj¬(úÓ+(ƒQ¥8¦,Wܪje¨#ëøŸ)Or?9ë$É}>ÑI’¸f¨ˆç¦™gƒþœËôfìŽ<€Ú%æDÍ5Q™„—ˆŠ z²"+#DΡ©nª™Rˆ8;$®0lÊ<É}1¦4³âˈcB t¾b…¢çøzQï´Iw<æ¯OßÐoómß¾!ßžëß6 €Üß΋öóŠ"ÜÜHIe€øµ¼(£`"}LC\ƒ $b¥„ »á€E. béG¥#…ÍL˜" &©"}h$(HN]ÿ*~|ê)Á’°àÐ+nãpS¸¤/^ÒÁ8”."Ÿ³€¾8ú=H²C¬í(µv3Óhq¼×gJÔêÿmPµ›ÆI ¦±Ô$Ud,ù¸LTÓã­ÀÑ·o‰£ŽnäæhµvG¿= V*Žn¤âèFáþ… WŒýZZ+°7X¥zœ±Æ©SB œ×v°° YùäaðU†^•ê±nΛ:˜wGF}¥m©RG‡ù×ã]\ Õ8Á5@ΰâÖržür µCRG»¼ÈY6@oÓç>.1}%¦oý˜¾³·ŽéóAÉq0 ¹¿E»;’Ã]ÌH¾{í‡äc½néå€ÒYÀyz;qå$s¬6d¾IƒÛsñ4Ü^kM¸=wY7v¯½TìÞUµµ‚XñHOÁðµHî•‚÷ìJÖ4'¼æ‰ãk[òàI€ùáB™‰ò¤&F—N3™z•^bG{ËŸMé–e6¥ +îšM‡ïj6øô*¤eͦƒœ³éÐ>›ÒÄœNBÑÚð1i—¾j”¯&®Œ)ˆp?Ðxô)‰•ÅϱØåõÊYx²˜ñÌZiˆã¸\•‹Ò­À²Æc\v´D¼¸ôŸ ‘.^ݵ2z5ʰlT“l•ªµ$ÑP#Vw(âçŠfÄjµdÄ4ŒhÇmWSØ¢ù‚Œ¯ª-;ȸL¯6qü÷òà߉þ_wuÿïÕýÿ½ŠD&¬‚ÿvÿ—ü^"è;ÖÛêŒôN í^:–[ÊùÈQ4T+Nô· ù{1B'®¨„p—îà-B¸íóÒˆmŸ­%œ: œ:vF,¸ †é…€©‘z60Jýˆ¶éä—TE¼`Š- ¨‰Ì\ìçð %22Úv ± ¯ÒÏ!^äg4 ;Á ªp>yF$ÞÏ (ñ‘vÏHÓ(=«zd\,ЉeÐDa-Álð€÷¿†£úJo¶Ù$·á³›½ÛYß5 NK Ý>÷§x4áP…?ØÑå¨,`”óúïGÛQ1±L(*“¾7¦ç8^é LµÇã|òó† y4U]ª¦³CÊãfÒpñþûötøÕªŠ_%"S¸êà“‡]ëÐi$äáÙÜD¾9ÇØ:¶Zݾ@£M9@aR@a­ ×ÞCЄNGÙ.`Mä6.:°Õšõjˆºrz‡rg´R^£v{Ò÷ÙeLáÀW‚3#“U…zÒ OÃÓNغ<û~…­NxF32™³'´ÓÁ«æÝ`Ö=ßh2yVuxxÎLÜêÐ=s¥½‘ºc‹F(²6w¾凄 z„‹öxW¤îjë°†Òzýþ`6CkèlðÏN¨­ô𠪎g´Eå‘È{øo§„ö&)œD¼Nx–WÁ¥’Q«NVv²W^ŠÓBï:–|°ÅPS§rš<e¹«@[G&{ÆÛL ê§Û­ khY1u*'˜Žet¶Å Ù`sð¼Åp·’6¢’…9{Y} œßê˜4sM´“eD;®!=±’ÅRšA¯eôõŽqØ Ó~lLàåÒó¥ ý›ŠK ý©H¤åë§;_ovZDL¶ÄŢ⽤ …Ä·]Áâ—(h<ØÂ9á^¦žnavƒxËVrYJ3¤'¤\bÆ‹wrÄL£­Ìbr ¢þc¾.YäÁ‡9ø"·$ÚæsÖ`9)§$Ê+„¶“„â4¡¿‹‚(.T„½‡¨+(Þ œDQ«ËT®n·E“"Y®y­£dàá‘8©D ¢km5:Á+t(,Ù‰³D¤âé± ÒJ Ç’Ààn䨭µø’¡"´9 ô¾[L«ÙwIÛyãM6/>wM\ºŽÐ+&ÕtdõkD´—j>XE¾.[ ɽ&¼º9†9EO*皉©VWÕ<ˆ¥W2kK›‚º*Ûq!iÂv„kJÚb¬Z?­bƒf7îc§ßª¶ôÉç1ï˜eÞçÅ¿\+™Éâ Òr§‘Ï :( µ¶,§-—))+˜ÝÚKª1Ã= ùrtâºä>­'®K¯aV|,xVxËWÞwÑÇ×:‡>-ge袌æ‚– N‡ÃŠÎùÝ –UX5³>Ë*fÿ3[£ýÏ!’³ªýOtPÚÿ¬"®“í®ÿ ûŸëÁl2ú9P<|Ïæƒ'¬Oü³P,꛿‘¤¸åF>ôŠFyô>Í~n1è…‚Å(Ñ ¿³˜þ@Üú'›éT¡Zÿ´'ÁP þœ IÃù ¶¤ô¦Ûâ3D×pÜ-îw$F¬ Ü\/ú?pm3Ž‹-Vn ôŠ¡Ê°SvkW"½ZC$>(hO—¼VHtù!ÅsÌ×)ž‚¥ Ri‚Tš •&H¥ Ri‚Tš •&H¥ ’Ðè×9ÉJ¤Ò©4AJ0A²dûžuÃ;nWsë0I’êáèX–ýqI¥QiETZ•VD¥Q +¢ëÒŠH°"úsŒˆÐ™evDØu8þYAßÞxÖDÅâü½­F,ˆù~;?s‚Ø)=æL4Ø.Ê"© ›¢"М>`N?¤fj³€m¬€ùÔ|äÄoÄ&N™I°-0°’#é¶K€-êë3:*дÑÇfÄ.„Š’?Ùð‰ Â'#>±s#;"û0úì–$RòH“ÂÉaVŽÈ-Eâ>Ïf¡”ÒÖqÉCd¡\6$Ã!öüÛº÷W‘3n¤ÕÅæ?)muEüãvQ¶?1ñ¤ÓcýNÀŠ F?¹ÚZ¬Å«ÉÞ+3ò²Êº^­`©Sÿgþf3Ó‰Ûº¤Ù’ÍŠ?q¶dè blù—2·RëmTZmþ×iT€­kS5³¿{µÊhß7À4ÿòM½ƒbZZ¬m«Á>+³ *â>„™åµn]™`çSäÉ`J™ÍÔ'nnñÓéÓÒ¦S†î)~o\ÄäKm©j#Ðé6b¥¶E×I¶EÔþçy}ñªûµ½ªfÿS-íV’gHö?—Æø?õË̦?Ë1ú¹¬¤µø¹|‡˜ÅGJ ÙD¿A3K¹–×gbSÆú) mäô~ mê—”.3 À²Œ7`I "6>T“ÍHlv$n{‰›¤€níV"¬c¨Tq¡bœáÒg Fk¦ž~q¶@ä j1E¿×â2´{‹þªâ¿È/Œï|øs€h`èÙLüºË&Ô×ß]U\„uW-Ô¬¼ºKvë’#´"´eb î f¿] sF¡ £P ó Ãú?»‡ø#ÀÏ%èY'ⵂžñÈÁœ|YF5xÿxäˬQ .3‘s5h í ¿ê`@t«åÈ£†£Ì± .+‰ˆ®–ˆ/ZB€DBkëqµ¥°SAÐ"½„ÈÚª?3Aý’žIg v¨&³ƒÁ—¸C¬(¤A.¾ðB7(ÌSœW\io¢ÿÀXèƒ:o!Äø¡¸‡vž°Þˆ ¸%Ä>NÛnoes[Ϙ/ͧ[„]Ë8 ‰ëP”X¸ó‚ t_jK… ’kÉ!rñ“—>ÛÈto*òAQ² à¼?]“%¯G\à‹41Râ@¶<8ÖÙ‘$‰ºŽx¸+R…BHÝñ—6R÷ÉòÃ$)à\û‘BÑI‹HáNˆàZïüÈr<—ÉÒâ¹9ÑG²Ì;Ü9k‰nà5¡jëèu’>z%a LI™† ²›é xÖ¼ÌÉá\_Ú•m‘#m]K¨¯9y½'²­p´C–FÁHgÀxßúÚÃ-¼Žuíã®0yÉ%O;ÁJ”’pÂ’sQ[Gœ¯ ôiå=c^Ñ^I”S2M»U"ž/×Máí%†ÿ^_ü‡êþ~¤Ç¨E%þ{‰ÌÿmŒÿððßï+âƒô» ôP¢ÐåÞ+=”øsW*ñçq*ñç%þ¼ÄŸï^úÐ.}h—òB^BÈÿhyéÒº„!/Ä£uQ¸¥¥8µ¶º‰MÒ0¥„& ÍU_Ö)a¡Û±N,ˆ)¯ŸkSý l¹Ç“Áï¬Ýc¬?o$ƒ>­jRÚ¸PÌNhK­Ä5µ!)üôZp%Å{´^²ƒXhÃRaLrÉ ­<ÐtOû–¢ÐåùÜb¿YÉs¸”€[ì¬Ä—µ!Yè û¼Î¢+À×µÓ2&“k?û=ÅbÜ2ü_'Úiy»¿ÎÒ ¹0pKsÍû¤—£ÆVH–koÛwvz·Øi--çu8Ä.`úd0þtO¢×ä ;÷T*A· Lx!†PÅxÆ.pq‹Òš‡æZà¶óà¼ãÆYf¨ÓœÏÛmvÆžÈeÉ´4—Ú¼[–¼Æm†;î·Ó»×ÎjK›wm\ªwífÞ§¢º&ó¹Û¹§bÁvSkB™'úÕ~+‰â¿§OOëÂ×¢Z´¯á¿£½ÿ½ŠD8XÂ_ŸW®OŽŽÃ^'(ðsÀŸ]~«‡õðì¨6Ðφœ£¶¡4}Æ0 Pªjg¹e 8&†Ò‘.Q•ÃͰQo¥@£îpz §x3ƒ×ðÜCõFÏ?z›“g¢ lpÔ¸ð²Á^‹ðqò. èàîØJQÐñÁŒ3 8*MršAä‰(ò€8#§tຠ¥mD[ÃÞ}†o‘6àÎôô›ö8ðDå’Ì:,—öi1š?C½u?<É]€ îç@*F€¹qºøc bÛ4¬d.+zEŠN•¢|Ð}A¶Åäë&D¾ž"_W@y `î3F£XÉ6–ИŒvãÆ>ññîìAúUÍ-L'.¾®Béå‰é,&âé37±c—€©FYªèÂÔŸ“׉èÑs…KÇ‹§[ªŸ¢n‚;(SŒ¢—gzJD}V¤L[3Âb|¿<ΰþ°³0‘­ )!ÓIZºøîcÈ5Y‰‡²- PEÆo>—ñrÚÆô;…åÎsj$%ã‘Ï6²Þ÷±g¨àUðl„tKñtÊË!Á”V9 åF[ %_Ψ~»îd[ *C¡]Ì£T‘¶T<ä‹n¹H3Q?ho\ÌfŠ#îqrn:ìÏG/ú’B?¦ çµáõo»`ÓÜv9 mÇÅR·ÝÖÑéÚîažàkŸ`r]>Âú€ê0*¤±T@³LžÑù”…8E=›1¤–¢»AõÛàNªˆŽ 3ƒ¬Ì·Áótò0í=!y÷·mÂ(‘*ÂôjÆOh<ck”'˜×¶¹©îFƸ6­2V×X5´°õaƒ¼ö@ Cå²Ý‘ÓIA5¾o¸Í€›Ã‹eáR>`Š(0£f¬Ò¦5À“gÉ<Ópñ Œk(Û|CHÁ#ˆ¡Á–F`Že€Ô’ @>nÜN½é €|Ja2AÇçI¼žÀÈ-îïQîã«ãà[oúk0YÍDT@‚ UU=L=?Ðaý+¢ô98›s™¥›Œ$[ŠIÈ›6 Ïë"mQNÃVؾºø»®u\ûH¶(á÷ËËã+ÃÇ]66mÖ‚‰ zø9¨DŠ…\0£qŽ¿Uɕۋ„› ¦"¬›0J =Ôô2¸·P¹s6¾²n‚½VìèKƒBÝ˼Æ#Àßrü”ËR†Y“à¦#ÑÀ„´ûê¯ R“bª16ºñ6xÑÌnêào4®1å¾I•»é N³š1šã˜äx›Øœ;-röÕìnž5;Úu@>󥕲OzÙF\öÜΑ‰ÍSÙÁ ï2l€Î± P°sqµhö@¤¢ú˜†ç¡'ÎÁ?;ôÈ+ÔƒªPÞˆ‚uÅ ýöŸ+ï 5*Žf²N€w‰ú3 F2¨Ô\½d´ÖQ jLòM1µ©[lm†nUëä*Vn%ÔG……Ô²Ÿ„>#-k_Š_kTZa ;$ªkÅc½IÊ'” Fdp“LeXâNa­Ñ_N‹HÊcHVßs¨M‰ wÒp·†R<Ù÷t‚EB÷ó 8|`ê1àû<ÉieœáÛ‹Œ(6\¼ùÅoȈ]Ç »:çFL`Z D<Ø0æ^,Ÿ›®ÀÑ£$Ú¼Ù„Ó£ªíÃNk²J©(1D EžŸø0$å,2 Œë‰г›$Úò{°Ó'&fO<¥šâMqíɆ0S,`H>ÌäFþ@Jð-‰›íÑn‰çi8û4_h¿ {)Õd²$>™‰„¢2GEŠ+_SñÍ©s”hL&àBÝRé•N¶>ñ«îy`NCz]ó`/_ÃmóÀ°U`i‰óÀç§…]²yTü.Çþ¹±Yϸ2¥A«Š( 5ÙgÍ©}vRPzòTçc„ëä3^ûBJ` ñ™lL„Oq9w~uÏ3 c“;‚%ËN¬Ávb6¬-¤4“Æ„HÊû‚7­ËAÕ×zh¼Wu²Y²ð^Õ½PÚ>I‡d“ãUò^µZ$ïU-6PÒð^Õ°ð‰¼—ÇÄ&Yž È8õÅ·¬²ö#<޽O•o’.‡œ¢NOÅ!)·C¦:M>]zì:´ŠÙúÕ'ÖŸ´ªC‚ÞôÚI²”ÈÙÛ!H©8ÛpNN(ŸV ú˜Ü{ó@ªû ¡7m2[ £îqçKh,| fÉE[¿·T°×®á qu œ’Ó–¿êyÅa]XkÔ Ö¹¯ÃW‘DÜ´<¤RÜXðͧBÅMÎFtÍp“PŠ›W$nj^QHqSËéܪæy­S„¨íÞ‡Ö·ÿZ_ü=ô§fÿUÝ-í¿V‘ÈäQ쿌ñ?°ÅWÖ Pv9a@˜]WªH ¨‰N›.êÉÙ`ÓEÃÑþæv\BÀZíÙ7ôL´éúÍ~Èá@bÑ$6り’ ¹ÊPr-¯/Ôg*ŠaŽ#¨ä‹¶Á8Ó7܆À¸¾ñ6”XÌ>½UÜÓ; ¸ÁèJa âć»j0Ø8‘˜iÍH2Z‘¬ÂˆÄÃÑhû‘Œæ#ë³É܂ێäŽqñ*,GLFì¿·1ÇÛ ÝÁmØCuððš¡]lÿ¸`hMÿ17œljó͵aáiÙ@7ÞŠžchw÷ÃÇÈãUÇýø£B~(+þeص„ý­¬ŸÑ¬ Ã…|”/ãQMa*P† y÷áB²F É,¤žÕGuÚ( úÞ÷s¡/š øø\½ã °pòlÚ Ö:C 7´'–EDä0K"n)½ü4Îì­~!)yµ”c'x¥×FÏ‘tç÷Åxù•Âø¶!éž{‹óË›6|F±|¼gqZ»Î‰\ŒïÜ 9W@‹"¼º~\JÐ"§üaúÎ9ëc_ŸÙÐ.¸®%Îú˜¾%³ !°ã(ñe»ÜÒB·,RENÞ)À™€¶”ÚO)C~©FÀ—ܵu6?¹ P‘$3hcâ–)W+cƒ‹ÓØwÆ)|kÂ#pYä¹Ì×3¶5œÏŠø9ª¦êTñÉlÜû$c‰°mu}¢Í•ŽËX*çdIíýºÀø©ã;ä‰\´ªÉ“*òšk)ÈÎasá {Íë@¶8 iÖ\±¼‚"ä´v¹ÿ1͸¦ŠçúÙ¢'¬€Ñ?­¨C,?ã^°è˜@«Œc×Ù%„öON ÿ;[_ü‡ÚîAUÇÿÖJüï*™ù2þ÷ºŒÿ b…¯Ïƒ`6ýÂÁàŸ…‚f1@®S[O îlÆ.ÖÙ; Ì{Ô‡mÝÍ¿ÅHR¾>#xøP¤ˆç<-¶ù÷Ïç.’­á¾ üc0¤¤Û5µ/ú×¾4øÄ/b®ó}ãÅ,o*ìç ü`˜ ùÜ,ÇXÞT8È×bÛTÈ? Òê§‚;ƒ []{  v‚Èêý¶ŒM[äí7ضk[ –†HXj¬ Š Ïî4™ˆÓ ÁmrA“2DxHá™NNÄ |`çþ!lñ*2 Ù¢1¤õákB›vòT÷òN5”DBy[“&ÏÁ’ƒ}äp`˜<ë q°ÄÉ“þP¬Lž¹óÏ«D8¤¹h ñ–q¬Õ< ,Ý7<ùÂ\ÃCu…x†‡”*€-~Är–óZôzƒËçaj97+Šßþ‚¶*&ÿÿÒ6õ=wªMHK^iIƒsîBjyw!µÄLºìª¥ÚN™‚Q,g7U;x½‘jÞˆìʹWT†¹ b-ÛN1µìJÒI•]97µB®B<-D¯Ë +ï9qûÏ5ÆkZÕþ³V-í?W‘ȼVì?ßü—ë›l:g/³ùà [¡èvõÍßH”ßr[Nê«Kyô>­:o1Îø7A²+NÌgø%ô‹lÏéú¥= æ)¬³!É1œ¿`kªAoº->C_Žû£Å¶VÃnQ¡ †Û ®ý¸¶‡‰ÇáJˆÕ ‡"cŸª2â·ŒBój£Ðpþ¦6x2ä AC§ˆošxù ‰'X¦Œ?SÆŸ)ãÏ”ñgÊø3+?#•a›2TåÖF¶¯¥±ib{²?.nV†ÑÌ¿Ê2¯Ô–Íßt« !S†QˆÊ2e™âCÈp‹¦E’)6 …%¬C2*'mo—ÒbüŠíbÑOÆÃQºŸôôÁ&¬¡ÒŒVrœ «ƒ^Ú¸¥ú—ƒZhã¿3;=ØÄúBÌ%jù;• pç¬Î輘à2>QcŠŒõJfñáÒœ>'Lá%X'êQ¢–/F´ªÃƈ&t«Š³¢hq¿˜dª…Pá_bŠMvA®`CnäŽ÷%KÛŠ úâj¢K÷U±°frp=g@,ŸP©87ªÁºN¡Ë[%ŠÉŒ^âÏè© &0z†)&¼`ÑÓ"u°€u†‡Y]¸0!ЋwT:—ÜÏë%¦ºøép«yEÆyqµ²hÑŸ+NLÑY8÷ yÅ‹ÄÇ‚XÝ[,ÆÑ¦²Å†‰ÛXüÄøTìÄÈÐ'ÅoW¹Tðv¬4®ÌuWæm$Œÿ½ëÍk‹ÿ²[Û4üoõ°Äÿ®$‘ztñ½qv\^7O06êË÷vó~9ª_?¯´Ã£¬ÈßvT¯FÇQ X/”jƒyï‘9n_Ññö½Þ‰ˆ)„¿»ÊßΈa­8{e»½Eï±åΧ™»,sWÊÜ5Ž”¬ó„îé²~ê Ý$݇Záø‹']ò¢ë³é,7˜o#‘ý_¿w;‹–¶LØÿíTuûÿ¨Üÿ­"1™a½ÿk¢ÃfTùß4›?n¢¢/ú®íùÇOÏ‹9lˤ;¸Çë¡mÒâv4ÀyFƒß,€ä’ö7ž¸­:BíNÎë_ù"@›ó9À§uôu"^ü'ä„¿×.-éüŸ¬õühó÷ œÿ«H„åÄó_ó‚œÿ2þ^Ç€$ÄóP8Ú…Áøß/åù.Iþ½ÎóÝšOp‡žàmpR;ÔOjdÇ~Isx;4Þ\'6÷!Í}.Sbìí»gx»ÏßîÞð·®CùíO;ꉇ=ðâ@З‡¼?0‘ýßÝd¾¼í_âþ¯z ÿ¢òü·šÄ‰õüwtqó¦wƒˆ~øO‚\šÜ-úÄ/ͯ óÃVn3n=‘!ËÚ+âNƒ y}[Êý%€C`;·‰7wÞÌ} 8uðg²XȾPŸ£Iô/Øqm))A<èÎtSP#Ý覠- ;ÐMº'-UbÿF Cºª»Ä]%Ñ%\e‰ìÿnŸÖçÿ?Tñ¿%þw%‰L)ñþïkãüßÔçÈ9É­³°õ=ÄÌ%Àaãø¦æA†:¡놑|>znpŒ‰Ìµ¥”¼‡)v–¸—æ Wr"L<nSHIì5†¯/qp˜ºÜ¢Mãæ ÷",½ÇRyÑ«0Î#ÂKìapFöfa@&¾à‡?ÃPÉq5| É!qJó8 f‹Ûmæó|\ ‡¨)ñc¿yÔòΣ>cßÃùüÔZFÀ×o­}€|ýØú×`s¿wN^'z€5iŸÑ°ìö¶r âx1#RTðs+UcõyK{sùüMA††0@Ï£¡â˜•Løù-Œˆ2ª¸‡Zy² e¿£hÊýŒtÑ1o(ø‹•¹Dª{€ƒöÀÜlˆ…sœÁAÝ ¹šÛ•D¬J`5ØñÒ3ƒ{ytŽ™«5Ú›¬›±'ß» >cõ'Óé`ö<ã«æœMª†––@pzÛÿráÅ|‚Níƒû9„:ý$þ†Gƒ e”Uß¿2¹7Ð%x…‚FSºÁlð€í°g¼ù´7ž¡ÒAO$G^㦓'࡟àCõý•¤„ÏÐß{à…÷ùÛ°"Ôð9¤®1‚¶!JÜ ‰€-ìVïÔœ{, ɾÞÁîÁ*†ïü¤] ÎCìÚɾ s(Õ+8Ó dµiR…>P‹w!ÜzUy[Ý^yÉ‹·á]Y;)=,ûˆÂô–‰Ól}‡%OČΪŸŒUOà:õ×p6H’Ë>nœ¥*WË]ø<1à Ê8Ê6Zqã2 {ÐàoVœi( L¶:“}Pttƒñ=£tÏs {Äõ£¿[—ª¬Ô-ŽKÕ ÐÍË¥]/.}\Šw—â°&‘ w=¨—áœÛõäÜnfÎí’Ëòõø'++m¶°ˆ÷øÉßà•sC´aßÂï–îȽ@&wäÚœ½h‡fßäèÍçhg÷hkgø¼‹Oáœ\û–ÓKùI—8*?톭°õý2 [°Õ ÏŽÛøÑ5|ø­ú(G›¯m·”Ë« å=‰§r"®y2?w:ûÖ|Ž»}ƒk®ÄÑy;•/qtÞuåßWóSßãð¡­Öwl´œàKÜÛûx´k(ÒuáíÏ豜\u.Ãc9gB9¶ÒçÌá/•*4B'z‰ýš6¬ÀþžAÔÎ Õ 8-`¦“¥~í²süøaþƒß*±ÛQzcJœ¶ ПãCgÀêíz9ìŽ; “ô9PŠì\Y½À¹^ mWÄE_M+;:—?{P‡OªNÔ ßèZ¾Ñu|£+|£K¿Ñ5³Ðj¯ó{v“Seè|Ì»Ç^WñÅm|SwfGKYqžš=ëñ“»Üï1ljx Ó³@¢ N¶çò°I<¾û~Z±É`ž^Î}œç´Ôo§é¶š_ºb¿’®ÎÎH|/a¬w»6¯a:yYD¼~ÑOð˜É¼×¥¥¶Züê(Y6jŽ5åŒ0Ó éþü’çW’gótÞ³Y°nÕÙå÷\¡]’ 4s–Ø9‰UrºÝú¾{¹ÊyxºÕ:s¹«£SŽ"b¨{ë֖Û¹ÃgÕßœîÔZð+i¨ÐÀéIÌ—Ôýf¡Á’ßàæœ.®qx,IŸÁGåÅŒ£úe4 §°¨£F’¥º%’ñÑ=êÉËMJOunk#–ì•–zͶså‹PO`ƒØÝx:ÝPnlÜmŽÇãÙ­œR>:Å|DØÞâø÷ß©0j¢ûoï¹U³w§ÝWjrGGQ±=m š;h¿¤|ã¡Q"Í9îÐÖà¶;qÎùxæ$g¹Ò3g™X¢ø¿ÁÓÚüVk»‡šýGõ°´ÿXI"r@ÂÿŸŸ“mz=Äÿ4PÂ6ÐÏ6ѯ͂€-üøªÛŽýcƒlTàƒè—f¾š ˆz̉dh ØŒ÷D“g¾ þm Ö”@¼ é}‡WÅÞ|Æj_Œ$¡ ­È…ÄÁ}~iâw˜öþ`FA'”J\ј€9~0`´½=ÆÐ!€3Ô8fÀC)Ü}2аžE¨ééaû‰F„ÒÎ0ÃÕ 3O‹Ñ|ø<ö ÑÜ~UÔ.ÒΨãÞ.“ e8´P.ƒFÌYŒã ‹ÙÔodò¤è؆£cKëØ†©c¸µ [5LKË8:¶aêX{±¼àLÈ÷¨ˆÕãM&ILˆ 6êxrÉùÐ\ÛÁÕcŬ\†2!‡V§Öèdä= ŠšÆaŸ²?Ô·‰-ÛPy7±nl¢†Kûc}Z)U”q$ßó±à1²Ü¡ßÊc@4ø™ ý‹–F´Èø`3È’f©J„WÒ…NªHÀ|ÒÖ@smHOXVc’4ÙÈ?„WÍ'¯ÚíÐÝ·ƒ{ûÛ6–Z$Ud‚ÈA›cØá0 ï_5·T‘RòÑM×HËÌ Tù­ÀÌ·*3%fÖÖ9ÆÌ©™Y«Jç±q37ÌÜðcæ1ÙúÔncæ†/37<™YÛÃèÌÜÈÏÌDfn8˜ùQcæ†'3k@öÂ@ƒ´„qE ¸AÚ$£t°™:Ø$¯ý§d3ÖŸUL ÜÔ×fÓLAD÷Ïs:Õñ¡ ¦5ôBõëǰÿC®¨‡FÝØ7˜H}ˆ0>P"΂ä-2ìQ* QÜod²5='[3y²5]“Ð̦oñ„£¤ð=.L%†SX#–K¬©¸DLøqûËàvºèM_Lø)˜p2íÍ'ñŸ-îïQîã«ãà[oúk0Y!‡èTN飯úèa‚èùñ4 ¾"JŸƒ³9·RÐá‡IÅ–/|Ã໥`Oó°Ý¼8«‡í«‹¿ÉφÒí‹ôââÆt¶t¸¦ˆµB(& È `Vóéb𯀽BÏÁ(g€:Íœ†Ï¥a#¸b»c(,Tnz€ûVÝ0ù Å?O8”±ïci—ˆOØ*a±†·ës €ê½¿nȯâk).q³\iãç ÅTVα"-CS@Ÿñã ÷‡:À,¤”`JI_PŸŠ­S¨Š%5e¼ùkÃNʿݰ~»aùv`$ á&@¨ºñ¬@ÕgÕñ©™à©DÉŠ™Ê Š6¢rÙ†}4¨*Z«ãÂçö‚ù«p¿NÀªŠXŹ[$·~µG¿{zY¿3øg‡^õÄ(,æ0G }vU¿ˆ6Ô\±®Ç±5ýÀ† êl#ÁÂ[Äõ%ˆÁsä/ÈêÀííù«Ý!¹Ëc•ÆÑ(¢•…C¾v&pš¦§ið]º ¨¡ô) }å…¢¤•í'õ8î7•-R¢Ñ˜ÐpájºRÑ¥pƒ!VrAºa2Z2p³*gèÃ^p7Hä”uäŽakî¾ÀdýAá@µ“ n è3\Îý6î öiö)Y$2þæÀû&Öwƒ™Ô‘½¯Üˆ'VÍnÒ¸ Uq°ÒYx²h´›Š !¥š¼¸>6àNऄà̆ŠP“”ieª–±†t• ø$“™Zr"r3Ða‘Â3J\¯p›éÕ–.=£½â3Ú+L|BÔzù‰NÇ™åçiè„î^‹nf‚ .ç)@£û,9,H€&Mª_+DiÏ+C×N¡*U†ÒA5…°Ç2Ô$®&@3€Gá\U‚GßUâøÏµùŒök†øïeü—•$2•ü§èÿqMž_¥ÏÇã÷áó1%ô²tàX:p|¥ß¬-ìàIs*(9LÂ(Nß,Ñ ZjM~é­ô€f µô€¶Bh˜ˆ{s<oÜ“Å)š<ÛUø¡¿S4©žÒAZé ­tætöž=£éˆ¥Ò+š:‘`!vtÆZ.Ñg™ÉËY‚Ë2ÞôÒeYé²ì]»,+=” Ÿ,=”É„”ÊÊþPod¾Ð-£[±Ò©«ÖéTÌzeñöz|ƒ½So_±;¯D¨Çü鎻Ò`ä´N{…>¸–àUëøÍzÕbúÿéÚâG»{ºþ?Ú-õÿ+I„ceýÿU%VüS•?Ñö@?¿\±©ûYÍ«Vì_‚bNhÓÞøûøA.¶Ìˆ×µß›/9W7(éAéN•  ›Ç:øà‰üè!>DË$y3fo áƶÎK¦TÝ—úe’Þ¢~ÙCkë[Ó«‹P(OR%2[¿#Õ¢‡jÎs(Œú³ôC¡Ç R\y(Cñâ=¯]ö¶P±ŠRS";b8Iòýb2r*5KMdQšH³rªÇS¢t|jA·ZNÓâ¹Õrš/Q½¦Ùw'ª×Õžª¿Oò™8î­Úf¯X+§Þëj·Õ+mÄž³é¤N:©S®“j›RÒ,—i.Ûo(‰ïV¯N¥kS\Är”tTç–0ÌŒ nܸާ~Èt¿©û`§÷?J%;B»Z’¤š4Ôç¡:Wô“Fz]öîŠó¾/ÑHÑ8\ —)”váç«—òÔ=ó zÞß!Áô6ïïò&rÿ7ž>U×eÿ³[‹÷4ûŸ¨¼ÿ[IbS^Ù½}ùÞnÞÀ/Gí«ój¥Mï½®þ¤Û½|Wz—x@(Ý)CÐ`Ñ ïp¹FýT÷Ø¡ø'Ú‡ãsÝ#Bc´Ù !Ú![`ÆbÀngõËz³WÒ[üކ½é ;Ÿÿwüïý _V‚vtÈ=^Hh 1M’>˜îñ–)Ä—flK¤aC„w‰"̼óP ã†U‡IƒÃ%œ€Þ¥ˆNôû&-ü”ÜܬÚÊÑÂù yãä“ðu .ÿ×fùšqã?ŒŒ&H”ÕpÝ›ÀçôMÎpòŽŠÈÇϸŒ{“ÿÌ=ÖkNdÿ7ÌצÿÝ­îíhúß½2þÏJ•,‚þ÷êâí÷ލâ÷ˆj~›áu6½/*hÚâJóm°ž÷(…¢jAÍ z؈ ´Ï£ÚI!öÇ?)/¨QúÜ1ßñ;f´ÛzFO ö!Š>~dízbº¨ú¡öáS-$ª´ŽÓ+yrï° s´Ü’ ›KÚ²ùÌ÷¸`=bÙýà{@ oÉ/¢¨Á„ŠŒñcýÉŽ,ÜNæ?båÞ›ôðN$w hÓpb¸/9¢— ÍÍ£2^o1Ôoœ‹b›ä]° ¹:Z®Éu$ßnÀJx$nßLXŒ ÙB;ÐSí(ÃðCAƒ¢¶ôD¹o:é*³n&Ì8{e»½E·PB8Þ@¸}¤™»R殜٫;q'wõ^îÆÝÜû¹£wtÇÐÓéöHî‡=È¢<>âfH½qþƒw"|ýXÛýOt¸·¯®ÿµh¿\ÿW‘ÈPÖÿ¯•£zxÔÈ³è“ ®Ó-Ì_A±>›Oýyð0ü9@+âòèµ.¯WáÕÅ1½£øßìGp#qt}òmÜLè# U™÷xþPýØýù|9ÓŒ ¨Ç«,3’±,¯P95ƒÎmg÷NÓ•4aå€ñ#0Cß•]éþWy$ŸŒ¯ø ·¸‚È‹OÃè||Ôˆÿ܋Ꭺ`š û76¯djQMW2±¨²+™0¥Eö…ÌצŒ ”ñx‡÷,Ù5±•t#ÿ̇¦i;Ç#pØþ¿–7.ÿ×ÿu÷ðpW‹ÿZ«–ò‰ò¸,ÿÏ À#|a›^PÄAº²{YŽ|õË˳.¥àüâèäËÉñQðõäßÇíkâãËÅÕytað- n.pÎjÐèí½¸‚‹bZSåâ¨nað÷7ˆ¾èß“öÑI³~sLk»¼¸>ÞÁUŸŸ·o®ƒ‹/hcÔQþ“6¯¨ Å‹_§rÖÙ:Áûôo¶w”övľuF4ÉH~àÍ<ÈðÐ@θ’3²áÇul¢Öüö¾¬»mù÷ùö§àÃÜÓ²L9&å%™ssÎÕ–Ä–,»%»cõËÙVÝØ’GK–ÿ§¿(lÄJ‚µ8!z&¶Il, @ÕUH xý³‹³N­‡¾}¦×x7ý³î{ý oñ€–þxvýQ:Ø{Û|ש½Gñ>ÔúXˉ¾¾êÝe§sùêºõô .ñ¶4…¿ÙŸü‰’¡¢¿…“S©ù‰ýîá¿IþèoòžŠï¡ÆÞ–¸¼õH¦‹= qOÂpÏþÆ-ã¿É·FïÉ·â÷ÜÓ¢3 ÓË«yÍV¿Ñ;»Â¶5`ŒÚuÍë__öjï=èÄâ»%ôt C•öØ”NLšãVÆÔ) µ‚•æ”›·B]¯¦Ë®ÒŒ²ôTaWhîaº¼{yϳÑý¿¤–6 ƒéò>H¸_{çç¨èðóÈ›£Í˜'îF‹ï£ÑD‚à4é¼l6ßûÁê½ÐÞãW{ïÐýcÍ;yÎÊOCôÍùa†ÊÃ#œ3”ãœá¶uPXÁwÀ?¡‡Bÿúã¥ÿÑÿG´+FJ*âÔ¤Û¿n]™6 ÿ†ä¿BýV.­ ªú•Ôª'BÃW¨™?ä nÍ ]¯à|e"eÄ,¸7аžXw'Fýûªy£¾¡£©¿ÁL‚þ-ËoT ;æ©(îé_¡m”0mä/’''§Îíü•Îôì•a:ñW¦IÅèd-f˜`ô:ÍH2]'`jÿNÄ2ˆmtu=’ߢ·ƒ@{˸jWcÔÆ0È ‰"þÐ9‡s•é‚)ežÊ<:÷¿)w\õ.­æMÍcŒ©4>´me."Ql¿]Ò¼„cZKDf·ˆÜgWÏááûÖy¦©\tI´2*†ñòø X^Æð´Íá+•*¶Ö‚Œ­}Oòå."Lª”Q>ó….D^¡,v2Â{ŽäM9lã/¹kåÄ®Ùs°®™rÈ‹µI*‡‡NÎÖ%t50:ÅÙÝ+øÝÆï&:Z¹žíì¬E5Ê臕«‰ØF?Rq5[¬]š¶r-oÚεäwMrÛT¡HÄ}sœq„´è4ÓÞT÷è§hoŽh™P{sLËhn[bùܽAO¨7ŧhÝ⤠OÕ¶ ±¦c‡IúwÛ:Ì"eODÿ?¿Û^ü×0<=Öü¿VƒÃBÿ¿‰D&µ¨ÿï×/þ.Ý\u.ý®ßÞVø×6nPÿ ýZÉ~ÝI,ÐEq+‡}58‹µ…}ÕÝÅ&Çt(žqtW¬^å.d±Ãùϧ§ê×½w…üò ”í+°Í*ãágðA7EÒ/š{ŽA`qÞÈ!úB|Qƒ¸8|<âÌ{œ~ͤò¨‡ÃÉç%ðè~Qè?ùÈ»Àé„|R-ö²¸Wo½?oHä»%Dp½æ]2´®¹l´$¹Cö–;¤åGÖ2¦ÁúZÎÛçîtö@°¤kò³ÛvìWÛê XákÚW©ÞoT îëMÖù§Ÿžwè<ŽÐãv œ»ûS"´¹!{E-!™±~k¥jb=¥JÞQÕ)&W\¬&’]LlñÉNœ=£–¥ÈS*ÝÄ~3NP˜õj6ý.UÁ¿Pú_ð£*ó‰¬m eG¨hÙãX×!mÆûJcsMÑPày¿˜>£.~Z 6 ¿RÂ<ÊŒªÐtûs °J óNË–†²[§›ºs9º-ÞL¤”­‡(ÇO³?)¨¶6‚Æø¾ Ch=b®í2ì§i‡] Á½ÒÀ»‡:6fJŠí"²)I®fЮ¨ýGã¶+íX·é ·ci&ûY’"šCœr"5Emy‚ÔÌ,“#—¯*ÍÒ$03t‡ëvõwQ tPæp+uýóý¶É×!ES[¾[æõô¡ÔSJÌä°ë+‹LÛ Ï0²gdªÛ¤ï¹i¾ !àÙ!£Ì3¤õÈé\¢Íç#IóGOÚn±(þï~ø¸5ÿáI¨áÿÂãÂÿïFá ÿרuÀÿc¹€ÌxéßîËÁã¿#^Êç`£ öõOUêw?ÑïØÏðp²`ÝXÎQ–åd6}|=àh8sl%ˆlÜûü”G¡]cœEª/Ô“¦tøâ¢ Dúë tÛ],uNpU _6£Âô¥âqx`JE ¤¹Û~øì:;Íú8N*ËgÌ,âöl/¨‡h ‰>kH¤X£–Tpf£]à¡j†¸ê%‰ˆ×Ç{–»¬BGñ¶äÂèê’,÷2®/ðd?^ï† ¡˜AõNϪbÕ;<;3ˆ¾•â¢1˜Æ•G\Ðâ,`îôt×z‘Ë!sD*;}v8]ÿÖ(aý?ÑCÿX-ÖÿM$ÆÚÖøý&ŽÔ§àÿ~ àÿŠ~ {-ð2‚qú}P¿vsýá²×—~tò~ÇäZŒ|¯t~ÕÙó¹]­ çð´ßíÔÐc =F"a8~ð=t„ïÁ»›ØC_~ ç(K{6ýüÅ÷Þx׬:û¾íß§OÏËňZ''hsð<›>@<°|Ÿrì>¶Œ~,F“‚Š|Ïïï—OËG¼xcËÓl4_>2tAF¸l\ Å‚7À‹¡•~<Áï},óú³‹«êã¨=xP‘¤š/ŸpâoÉÁnàyP=òGí•Q±Rg@þìùP¹»@R£í‰ä”zô8gïö#¿‡›×P„ûÃèÓxBú:ôæã§1pÑwÄ Ë9२oj<ÒòƒÜ¿•êÂü§ºs)uE|ô4?¯ÇNŽƒûÔíq°îήîä¸Ïœc~óJv7<Ñ"J²j™EN/˜ŽF›J·ïµÞµz­n£Å<Á`1€å—XNp©%˜‰±8ÀÒƒˆ‡ú6­•cú?îfCÀ°R¸9K¼›Î Å–sD:ß«=~žÎõŸ¼îôÀ;®¾ñ½k@éÞ}÷Å}Ô’÷öÙŸ~Z|“ë1:< A6z^Œ0ƒoNß yõü|àU_Wªa• ŒÖßD¦8¯ShTKƒÁÅE³Iévú&€Õ<Ø´¼½³ëkâ?ãõ›Ã×Õ@FK̾âÉâÕõ±Wß³óæp}ºú7µ%WB’z$AÑikúy9"ÐÖÙ‚œPXæ#´•Ëðp­Ôk¤•7áa47é ±Áb„@‚Ç!¡²/r².v>†/íHŸE$¨#Žðæ#Lz±Ôáéa¼ŽJA'IT4~"&-w¶vžb>®³¦šh&ª§)¶>–I„Ð$FwÃRƒxSœW“Fl+Ž7ß>tC³a2Eç)4”B\4IïÞ5ù»< väô;ÈÏ}ü­¥>ìÍ÷ÊäwPW;"j@7ô+ê0ë½­Ïöl ‹AÚ·EÚÅWIŒÍÆf©ÙáO‘ÄDÏÏÛ»ÿœžÚù¯ZøÝH"óPÒÿ^E÷¿éíï«M^ý^Ç¥ï«R¦ßW 7¾wí·vsk WÅî¿¢ßàvú²·xÏ[ì?¼#ß ÕB1ˆWpýf ¿ÅÖ®6yñ;¾å—vñ{[w©¯(9V¸7Sò&e¸7Cîï½ 3ßµæ¼ „”ªˆ»I{{Sª…Š›ëG—:ùEÎùU…>IKíÖ)í;øRmj!úh,±à÷*úu˜d •Z 'zâ7 Öz†ãÖ·ô'º·éHDåÖ¬­ÓoG‰úZ-”ˆUüƈ+\Œ.;nçÒ '_ò•WÄâú õú ÷@m8“²®îSpÿ èÄx“zFû=- Xù—ÛMÄŒ¬”ÛMÄxVJq'Qª¦¸ŸXÜO,î'ÆÝOôÛm¢§4´¹3wé¯/újaâ­?Ó=Áø[oL*¼T—þ®ŠK¿Ò¥¿+ZQê[ÂQµ¸öW\û+®ýÅ^ûk·…Éžá :óÓ¦ª<%)«~7ïúÚmóp³áN}µïªd½µ ]€¼eS0R±‡ A¹â¥?ÔV{ÿÉïÄ;mB”_ðø=o’ „>!â¹ Yn‘dá…»ççÎ8«_óSX/·ëwªÀ’¯ã½ìûw0>¦º8)MâK½€—°Y؈ËçFžÖ§Ú¿žäø/|kÏÆ+ÜÌ‹X‰ˆÂ®åòofWó2 Õº”§&#‹æqïÊùâ^N‰á?fëƒ$á?ª†ûÁQÿØH"Œ&ã?z2üƒb?jW+@>ØIF¾ H§Î:€îä“@‘p6œ|µΣá<~ ÿʦ«PÔðf#pb‹)ÞP ØH^B-¸£wàŽ,àŽÂª-Su‹Ví-ál  Ð&2xsâHµ BÙìàv I50'¾„V²'dOæQ‹£Pü¨å€(Lýy™úÍfþmûê^õ±EŸšó [þ–mùÌ7à –ytòÙ€e^6sðŠv¿·P¿¼U¡!9àŠ˜b+¼}­òFË»DiD/Ý,›ôwÊN;˜ÑJX3{ åîî¢ã‡ÀvÏ)ž”ˆiÛ®R…@«n8J4Nx¬.“Àf"¤=âÆ}›6ÖBBkøç¾Úð²)Ò¸Ú0S‹+zKH1ºKsh`O3®$¨]5àÄ6ž8.·Ù&Þf´éÑNUuëÍŽ É0H·‰£¤ëº«ù U¢FYË£U e5³ŸÊÕçl¬+s–šöÏ­6/H+ÏÙã¼ç,¶¹°Ús²É'Yß×9w–(Ú)Åògn‚”ÓÜ=ÝøÜ•Æ4±ÛÑ܃¶`5÷h‰Û­Ýÿ=AÿiþÓÂþ³‰D8O±ÿ„F¹÷›¿hçnýöÂxƒP˜dúI BäÏŸ‰ö¡È4”pù·°‘T؇ ûPaJúÎ`ún ºÅ®ß ,Lu…©®0Õ¦ºÂT÷‚LuÅ5Ümºs¾†{*«•¢ONaì wÄØg¹qKü4³_äNànºøBë1ØE;é ¦*~`»@j¹Ê IuÜhRÙÚ‹ÚX Z®÷â Z¯úÕÕÊò…ˆÂ¬™ñ.Q¢©S±›žˆÏuõÑ”ݚ®TlÙT ǰûÃv wcÇ §.&RÕÎÂtuD­µ!Íhdµ_ž¤› –Žþ yønñÎÇ݇´óOÚK[³íækûE ®ÕìÅÙ׎Y]ìÄ»+À¬–fû½Gúѹ١7"À6e¿N!ÀÖnà·là.Rl¢öÿïÃç­ÅªVN5ÿßÁQaÿßD"S²ÿDұ˂?úÍÍ|2Ç{D=Hõq=mkÿ†§G'zü—"þçF™"ÒþopqQêŸ5[>V¸_Da`üN³æ×Ñ¿u¦~m䚀PÍÐ4}¡ByÇVƒ†– ´·¬— 1ôK£-¦@‰"* (Q°gH@¹ ÅËEf”(”˜#¦ÎbÄ4(:t:3e¬—kjÆä`2.ªA*ˆgÛ: 'ÓÀ¥¼'(ÅYîGÌp‹…Áðñ¢4³ŽÅDÓûèդІÏÏ#ؘRë“÷8ú´€åt6þüeá1¬hDîxh(î‹ÐŒSé)=SJÆŠ'úÊ yËII³G´TˆI `йx.•àˆ¯Ê ðQÝ4b"Ø‘ O’*Ü»§Æá^NSâ“,IãÔYÔ×»‘Ð=G„.ï“3ú&Ç>ÙゼNDBF8¾¡qQ`¼^C®•^È›`u‘ ·Ô^*ì®ÔÉm…b´qÁU–ðúç}*ø¯CþD­E&)’¦ëÄ›‚<ø>žänJP> ÁÔêñ©<ÀKÂ“Çø_#ÜæŸ¨¡f ¼ùòþ æI‘o±À@Ñ ?@taÚUZ(àÀEÓ3£Ä‘*¢u˜×Mòž.¸Ðd…±GTˆÊ11|2ZòçGC ›‘‚ŠYLñÞ3ȼÔàä Ki|=œ rE6ŠXzDË*âΨ|áeŒJ/Ãì£ÒžŒú9•_›Qm‚Irx¸(B>y‘ù„ã#Dð!´Å"šaå.e´.\Ö+Í—w{;~à‘0P¦•’o6@?´å‘ïÆI?ÁŠÄ×5·T‘Rr¢^°†À"¯ÝWʺ¡rý’‡,7'¦ÙW÷â딇ê®_wøzòÀ×ãžp4z:öÂà“®©t3máîmCì8Pic•ÑÆ­ WF•dtŠXÖX1bY#-»52±›‰ßNìæ¡Q‡ïGÏ *|ñdPÁøþe|ÿE®hˆ¦§‘6¸“úÉ÷0]Ì—Ø™¢ I÷©'@#y4Vœ5L€t,ªÉ,^WÞîfËáì'\°x“â‚Åt6\L£a=j.?}B¹[½–÷a8û>z|´^ÃX>Ðrˆªª=~ž¢þ|yš{ïQOŸ½Î‚¯sú•Œ¤bk±PîÌ%VÞÕ¬Y3yKËíšÇ¹ßö»½Ë5…7WW­ž¡áµÇ“c\ƒ¤îL`³B¢&Cø Ìkx÷3Hmo=fHUppìµrŸNe z©@ÉW¼q"^9úM±˜ÚËÞŸ{î·NHqÜoSÑ5ç‹)±÷Xªjöøk/Gjv´#„ˆÛKaHkÏNõ²õ¨ì…µÜ½\Ã¥\šX"ÕýP÷¯åþÌ…tF¼MCríÃ?™ÂÛÕø¡¨«Fÿ= Ú2¡}%•ážLbT°¤ËâÕ Á¨]:óσ¬åŽîCš%vG#AÖ˜¨e)`áâxÉx-ÇAvjHs‹‘C‡–S¹cîÓjž$QSF×95-YcB¬Ð 8ðÏ®04Jm2Žô´ýi #öƒE.©ãòB¹tˆpHÎ1÷¢ÎS&d}F[€äà',aó´ŠîHCšä‘59ô„óý‰}êœf˜âñÁ¢pJ~àWl,’;c¾&Œy†Cóئþε1æë‚1Ó1¦=ÈURPªä«>;±,€›­2VfÑZé\gÑTÑOÝ×fBu>)£5Ù#va–U—Ô‘ŒÁQY7ŽØâa»ÿ¿ ²¤LÛ,;b8^Zc -ëÅø÷Œœ¸¹À¾§ â÷4¬'„ öÀuÙj#‡;AmCGÐãÕ j ˜oztThìxéÎ*®—n8þïÛÖü?žêø¿ãÃÿ·‰DxDÁÿý-û$À?z#ÿRÜ q‡þE·F ¹u8„d¨¿ô>!MŸæGý€` RÌ}¦&ë‘k¯]­>×ô¾e¤¾ÁÏmB iNY}µþ¤÷ij²—CÙu«KÉßã¡l"²x!L°õG>í6DHtŠà¢;cÀlû$s™9[±Û•ô–ÏIË’ùüœ˜«ÛxN¡ëÎ36ÉQ¡6FÏ ãa÷Šj÷ˆJ`MNc8 ƒ8XyãÝ"&9Lt0Ïô3ÎÉ,¡¤ Ó¸4',Cv™š“Àˆ‡å!1ìóÑÌš»d·¨“Jó/vLüçÈÌ“„™YYž±èÓ\JÜl±É£SS»CSŠ?ÊEƒ!å/Ê!A¤q™¤yKœ &œÁ™)œ]q/%1üÇl}ð$üGõ89ÆZ/ ˆ Ømã{DŒ”Q SZ;AÆ€rØ´„{mIöÚ¨[LFv­Æ. ñàfP*kŒÅÔ~Ìz{—ØŠJd²´ËQĤ&ímD[KÒuôk‹]˜[ðÁ”†µÄù’gpóÅ-`ü|ÉÚ/'»¹K(¿uÍk ¾È:ž´YæËÚBååã¶/Ö,Äí?áÖîÿžžjñߣãÂþ³‰D˜V±ÿ„F¹ô»;ЮÞúí…ñ¡0É"ô“X„ÈŸ? D‘m(áîotñê) D…¨0¢]7ýþ\‡b×/ô¶ºÂVWØê []a«+luÅåÝÂv'—0]Û¿„kpéídíã.½W°ö…;bí³\Ó½ÅKÛ@³ûEN *9­Ç` y¤/x4ðÛ%SËý_Hm%–´I3m·.jc%4j¹Œ+84j½llTמË7D~»¦ªëÈíT¢½S1àÖˆÏRx÷ØÍ:ìÎÉ&ì¥pº°?°ÜܘõÔÅNª~8ÍY‰n½N¬Q=£¥Õ~ã’~ôÊvX:fƒ½X÷μ§IW§x§ãîyCÊÇ¥fÐnN®ËÀ«ê(7sÝzWǪ†c]plÌŒìb0Þ]Áa59Û¯JÒ^Ù ½Á±6C¶ša¥+×®–îðåZº‹dJ‘ýÿëÚñöÿð¸ªûÿ> ÃÂþ¿‰D¦²jÿo“ãÈu¯Öíû]¿-9¯ûzûo _9»oãF  ¹©H§òƒÔ!úüÒ€pb~:x@[ÀÀ!PSn˜ÀWáÐÉŪ‹I ÔÑü' BÑÓ™¹hùGrbEÑŸ5µ(¨îÆeã Š(àa›U =T„ÝÕð:)O²¥!@Ñ ™k¡©êšD$%%¿r3ÏM3ÏG÷S”òæ\àágiöH±ÎÑ ¤£äü †‘xû…9puC°Ö‹8†œ€ 1ª‚2Ø ¹uÁfaÀ³Ý¡Â2+°6óhè|M4!õ"êt u&@äéëB’¢ @¶–¯IË ­eãìϳåiù~3-¯ jqBµ4(‹TQXKÛ©gÔ<®s’kDÓ‚‡J•*‚Év?}\>M摊d.•É>´S&ü<Ü®T‘¥àfc‡,=b\9mž@EzDù eF|z{>]f¿U÷Ù_©Æ<ü@,$!aÉ¢ô}<É=5à,Œ5YÍ“…YªÈ‹¼æéF|€}XÔ%yQ°tUwª]3¥›qfÛ÷©OhYü£e@U2M<£Ý]2¶û•£ÜREÆ’_]Íôõ´äÈ×;£ï^G×c8º¾2G«µÛ8ºîÊÑuGŽ®'st}s]OÅÑõÜ9:çÐN6ÒN£FfΚ“ù1l®‘6Ç÷@+#r®aBh­#Un;§ €žK ¬™a€’ñsYÈJ”äð]N”D× ó/QV6’eec%Y‰»‚Ÿú‘$Û<œ®ªÃét@ÝëÊ»ÑÝl9œý@Ý›€º):5Ogñ|Ú\~ú„r·z-ïÃpö}ôøh…Ý-ŸFˆ QUµÇÏSÔŸ/Osï=êë³×YðJ:/©ØZ v¿2Î ÖwîwünïòcM!ŽÜjhxíQGR`ï8®†¨‹ÑnF·oâoCbÃÄdÛ*{Ýf¯E‹¦z©€wâÀýGÃÞRkºõç û‹‹ß‰+'™£¨Ø†Ì×i27bz¦! ã‰U5{;6û‘š]ÆÂ0%{‰ÊÖ]˾ÑË6\0Ah☴ Æö&’¨IÐSиàÜn‘Jj³‰*[Fÿ= º¡JøzÑ:M´‡XôÍããÑ-4pÁ¼îò". DbÇ S¦Øé=É”5h„!dGŠáŠÅ Ñ1LsïžÞ.àërâøïõÁ¿“ðßax¨øïjXøÛH"sAÁÇÃ¿× üÞè;ÖÛ êŒôN í^;–[Êú•ãW¨=šXN1„ò#lLTQá. ÜÞ‹‡pKó2+»æTC¤Ú^CvFã¿0ÇsX ƱqÀhíÙ04ð´fHtˆÞ)ühˆþ Ñ~´ÀøÑ?¥?Z G ôhÜ Øhýa£nÐÏCÓ¨§„~¶7áϲ€~ÐO¥“ô³€~nú©éZ£Þ€ÏøTjP´5¡±2Á—ýQ .qç Äå–Ùy¤¤ÂÎ/ òXË*òs:æb¤°9¶m(¢m !_QEj“·!¦jwI˜#JÐ>Ò[Âúmk¤7 Õkžf7‘þoq÷ômkø¿ã“ÓªŽÿ;,ð›Hd‚‰ø¿ëúÅß"þ¯yV{O@€ŸG‚Á:Aÿ¤¯mK|W\}Þð¾ÛQ^á{ÍÐ>b<ªÐØ\ߨàÔÊ?^È3öíu~Hh½,Z«PbðØ[Œ€0>Ô7™N*ø¨Hޱ*Ú½î ÒWŸØKÞW$ÜoÏ{?ƒI†E§ÚD4X Äßĺoºc!àæ)v5©­BG©ÅÖ«uÀÜHÞ̀ܓºBÚvŰűQ ¦½+¯á¼:¯á² £ÓÄfõŽå*\·‘«æó%Ÿ Ô/Ôi «H$=N¨W悹´·÷ÒBÿ¦À,m¥»q§D/Ñ”©p‰ÿ9æ6|†k›w®-RàßÍñù§Ÿžwè<޼öú xñZµò…D†^Á*å¥Uàc¹X·Äj(ÝÐ_÷ÓÄ_ÃJåÃÀ>?ŽIȵ/ÕCžÒ¥Oì=¥~Ô·Ùô»TE´`Š_ä Ø™¹HŒ7hc(Ïd´ÅcÒf¼¯>^äçS4 Þ5Ä›>£.~Z”àW~GEŠ”Õ62pú‰eô‰âL¼ùè3Þk|?>¢V†“9*Í—K›¸¶Þ§Ùô ô„;Ãþi‰ê¢o!–Ð𳃜’ è;ƒÄõ¨ÆÆ§}¯k–…`CÇ£RñÎÍY°žÜÇú0ÌBeç(wðƒ–"„„Auï{gNÄäkJôZŒh1ø±Vy ¯çš%ïªsMݾìÐ\C_¥ÈMË»3ΰhV¨B©¨<ÔfØÝt±@Œ;þ¢Í2ÚA©–u̲x$Þ.M2· vî{gÝ’×…*÷aŽmy‚u§ $K¿ öÀÈ}#·Pb9 ³GáéÙl4žN0##ÚBF·j ì¨BBwÊÌÈùÆ÷î– œGßù9Æ£¹Ðrû¨[ò:nõÛÒ Üu.!¡XfËûy +§Åìv| ü¢¡WáP…¼Õå¨,`”óú!¸ø­ ReBQ™ôà =Çñ:1p¯F瓇˜’G3•Ñ¥jnHyü™8Öì(ž}ÅøÞDd ª>y˜.‡EÀîÜáÙÜV‚\`8\*܉º¡ÂU펄·¯:7ý‚„whF†í^ÞtÏ®ãð°/`ë£53usÁÃhP½âüiÆ~š¡Ÿ®ÈO¡4Ö›?޼2rmÑxD©G”jaÑ)¢•Û7Åâ¶`Iï¯ë´×"eRn·#¯ÈÔå¸f>LŽÌDGW㢳m8Ù,¡%„ßÄ[l¸/¶¡tý§‹èb:õæOhƒćÑü~D¶sÓ鳂XÃäh{.‰Ån,l&îfƒã‹Ç!ô(^CÔ g W ­(‰VB•$!„¸Mè÷-QE…ò¸PaFÂ*r¹S›Û\Á½€Ä9,Æœ–Mqœ¥ÃzÝÊÀ+¬/,¹±\®¡51k—AB©ô¸\*å¨NC½T±y „©†Ï*tÎ7¤x‰µ~`W>òâdñ, 8Ó5‘dn¹ØÅ”49s›DL¹î}‚Ĺ›È6ò ƒÎÐÝxM‹¹Ì³>H¸òhHʬwÜf8‰7SÌåøýwâ\^Ë`ç8˜NÓ—!å!H)¦oÔŒã¦6~Çà„ˆÇ½5 âþ{¾=ü÷ úSÃAÿÞD"ì$ã¿û¿þ»ÿ·çͧßFŠc×ùbô„±£ÿ.äw­üÉ‚;ü&{{üHÄ}ßa«'E (¶ä9~gÁ~Cþ û U¨ðïîÔ[€í ”äó1©c¼ø‰¡´£á¬">CýOî—£‚ jxfÝõúËû/¸¶9‡Då;b{g°¬æ– HôE¢sv§¨<7V…¡ÓãŠB&”+Ý^¢À ôƒ©À ï.¶À [Äå.Ác zA/0è½À tÖàv0èX–T¾àY7~àÀê»LºT˜è@·Ä²ì·C¤0òF^ÀÈ y#wƒ‘÷+ùïƒ"GÇ‘uÉ´Óxò­„ÚÞÛ 8y¾@Ogذ2ù*É OáÑÓ!e ‰XÑJ^ôœ@åy¦ŽFß •š#øÜŠ˜LÍG± Š㞉‘p©•b’.ÍsO‰Ýê<Ç»-. a»ÊKþ¤Çù@J>Ù€ê9áÍ]€äöatÃd­I¤¬"Mr$§Y9be)Ñ<D=åe—5CÆÉ&ª\¾Þò6ŠÇWÅŒ&®wö;ÅE+5XÉømA<:¬·yBưà+GsÀx Hí\F,%Î3=L{¥±MµõÀzn›ˆð®…$±J5Ëõ¥øùâmç÷©½.<—Û .—sIƒšé®âŠ" ²Ô;ëð§¾Þak<öÚFAåýµ€Ê‹ôbÅÿ?oÑÿ{VOtÿï'þ‰Ì| ÿeôÿ^»Ê ý_3èÿª”ñõÂ=¾3À?JŸuÿýŸT ìåZva_øz/pörúupöµ+Ú/”¸_Uò&eÀW<ôÞ«0Enƒ‘S´Ýþ$sg‰3ÂP©*ÚJ}Ä8ƒ¥Î§ˆÖ%Ü{Ú â2 Fä ú>r ý^ÊÐ"ì-ú+Ä)ˆ?ßÅøÛõM@¡fC»‘Ë&Ô·O®aäªú˜Ù‰\ ®S—¾ )wÖàà4\æË…0nt 7ºþ1ü£ßFÿcJ¦—ƒ}, ‹;]LDrbfTáÕïåœö×D^euN{•T¸’oÚ¶ðýbáöI n·c2DØ¿ ³ Ú«R".£-ÂÖà§u¡½ޏÚR8“Ñ&TBÝÃ&ªßÓ‘-ÁîJø„ˆÂdv0¸„t`ˆ y¦]‰/œLñ óä‡ Ä—ºeô€ô¿R‡â%xªu?ÔôÛ]Å;­³¢n .lÓ*ÝýlÞGá¥ù|Ÿ°káî6QbŠ Ï+ùRã3H®5{²]‰Ÿœ`F¦Ûe¶y Äœ|ØZÂÐY-2šÛÚU]צÀÀì{˜9jÑ’$I¸ªK[cü#aIÌÁ˜$Çrtm{FæNžƒNŽÑØqå°àéÂÆ’,|€¿rCžhMIa…ü‰«Çòp`»Êô×qÔbç$¶KiúÉOÚ_Ù³­±þ‰Ñª²ëp×4å…ñ&gªnÒÕ íXdI±ó}3®kMÉ8úD#^­ÇÅm‘bÃÿmÑÿoX= 4ü_µZàÿ6‘È\“ñFÿ¿¿þï{üuÃþŽ~ ¢L½ÂÑo@ŒK1J± DïW > І°ÀÂŽ!,<BöÅ›uL˜—%{-¾ ­Þ¾âìÒ`‚ †ªK”¸ JF\Ъî MõKÐ\À…Æpw,܇Ù¹óF2êÇj‰£WÍdJçÕ»˜Ó!™}‰1–Úˆ‡ACRø)g¼af‹zþŽ 7#†ì–xúaÇ®ÆxH+É ýU°‰Žç¼à…«y7|±’ç4½EŸ×íbÕ‡/v6â’ÐŒ,´)×…+î´¶ê³0ý’o_(Þ®Ò‚}òôa˜„ªOƒÊ "hÂõ;9”Ð}nW',c¹=Ï…#š3>hxÀ\ÀÁùx2Lšö äçtí!óÔ¯dÅùÅ2J,= :8/€àËq…(¡ÓÝYXEd¬ÅÓ¡'ä !Þ¤°ppŸ(þoöô´5üßIP 5ü_PøÿÛH"CÂÿõ..Jý³fË@€5‚¼`çêCͯùÝ·Žþ­;áuÔTC_2óT‰*„fè1ˆ{E;´:nÂ.ùå=¿^‚FSÀbݲ¸¦ºûÀ:œŒ†Ï_†åé3ÑB×9¢PxYg¯%l!yéèØÓÚ‡b‘öD… ášqN3Â0bèW…´#¸.øTlЦŸÃ޽š¡ñGÐÙσê9‚³HfÅ›}Z>.Æ€‹œ#º@PS§…ƒÅ~Z@WI`ÖX¸nLî™FÐÐbE{¤èL)ÊÇ×k•/N²ö{"%k)’Z@SÐl iÎBfæ3«1%ãÆ{âë1–‚´UÔ'L'<²¦"*SÐ\L„UÆÛ ´Ò?ú7‚V^׉ ¢ …K'˧;‚­œ!2ÁÏúÊ)噞X™ðõŠ`îXÇ"˜§<Î Ÿ°›0áѬ )!÷“,©t™=ð>bäYsÇ2$zE&o¾×ðÂY÷&#ô;EgÍG Š•—aiÐÇodÔwµ–ðfÊû QèÉæá+ôS^ ´Ð°ÊAÿQn´™Pòðå,ÜiGÃb"óhí4(ºT‘¶TèQçMaçq1"[ÜÍxÆl|¿xü©/)´1@™=îÛhkò·Ûº“ðí±!Þ­ßn#tºow@©ºÂTM. GcXPf¼ê‹‹dN%ŠaÂ(‘*ÂýÕ0ðh<`PòÌkÛÜTw#cu^×Ä5pz¼v@uCå2˜—îÈ餠ß×ãÑàŒÍá,E-¤ãžêZ0yÓÛLÒ¦}€#ÏÔ“y¦Ç3D80®¡l#ð é AÌøh j9Ö®&ã€_WÞîfËáì'à€ß¤ÀOÑIy­„g0²Íå§O(w«×ò> gßGV´0’ H°¡ªjŸ§¨?_йü=êé³×Yp™¥#‡“Š­¼30ZVÞ= ùZÐÈç~Ûïö.?Ö4€¶‡h¯ý›««VÏмÌú²ÛòÍPkôæm€‘Ö¾uíŽ5îPAL,Û¸ó fmÞè¡f¾ÂߎÊ]°“í$쵂j¥/m°T:ñjü-7¶ÇÁ£„÷” ‡ET1ù¬ÞŸ{îÀhRwÅTc„´vF9kXëE}Õ¦Üשr7b:§A¥lÓ‡G(lg\õEº°òñ¨í5;BOÂøa¶³öì^¶•½°3G`ââTÀoP¾®ø}ßÞÁeïÀÓ@ढڄºÕ¦'ÄÑèU¨,¡¼çMTôæy¡¼ƒT/A„4ôšÉ2B ÚШ]Þ`V‹£’­ ¬MâKÁ_×,lƒ-h¨N寄ú¨°°Ûù“p!EÛ¶ÒRl­^jû) ¨-u™”O(E×ü$ü4K|Àé/ÌÏú+Æ ÉÁ$«{ôM‰ÈGòáñVbHÑd?Š·`¯$pÁ.F(À‹$TúÆ8Ã•Š¬Sl¸x9ò‹Û°ïƒ–ÅΨƒ lx²FÜa€GŠå³Œ¢g”DåëÌ \‰l(¹3¾£ DhÀŸæ™‹öÕ á¹ß0Ñxæ ‰gUˆËÎöÎ6 !9 <ç+2Y,1“•ÊTÜ\j‘ì=NxÅOM  ì`¬Îœ¦küX©ˆ=–²U<6Í– 1ŽÞ­°Ý¨—kYg¸‹3]Qò[²ØáÜÎAB„Ýxàc„ëä\™6Mž2‘mÆ›ÞÊšã*8q!K–…«Î.ˆ&¦4 W¿pŽ —Ud…®0èµðÞ›Ux/=n¾—²“¯íl’÷ÂÜ=¼ ðpœWܘvÀ g„ o5œÙ·-Ç ¯ìâv'Ã&à®óé â}¹ž{¹Ÿ]»§^îWøÒÅö·óÕ‹Öô/#qÃɦ6ßQæž–]â­è†n]À½/ÂíïËóøËÊg‚*»Cx wÁ[q,O­Íh€ÕD7ïef4ª)Ц…›áïf8«—ᜠײú¼Kë=8GŸn®7E”r4’)â7LesÙ˾ÎÊ;ÎÉ<<ùšÇ%^¶Ý ÛÕ”cg³wã}‘œffs¹‹ë²ÇÙvlCÒýÝåç‹7­ÛÝ|€;Ïâã>ì ÅNälÖwö+Lä•ÌöyøžsnwÊŸ¦èg}ä.›Ç[\×g}Ô¿5;ÁÔæò‡åº`ŽnWtz™ ¸BÀ{ÌSÜæªÑì“XõIxÍ4¡²F¨ç·Éõ9:œÝXóI#™5”¼4­VŽÿ‹Æw„Ü;`3F}WæÐf¾oÒ÷j¯ç¾û‰á¿æ[óÿZ=<<2ø-ð_IdrÊø¯~áÿµ ë_˜ÂÇSÓš:ž9 aL¯NpÔØm9ò»ÈÞ‰è1æ~Nðøz‹ yul¹}¾Þæ>ƒ;mßçëuDÍL;xÌijn®a-žaY߆èËÁpFõÃàVªˆ{„Eƒy›Þ-¬aˆ½Â p kª¥p [8…-œÂNa §°…SØÂ)lá¶p [8…µ9…% oè+_°àF^¬£Xù8 œVˆÏX8ð-ñŽUr[ø‰5aP ~buèhá)ÖLúkÀ/YáÂSlá)Vª¬ð[xŠ]«§Ø~á)öñK‚I³X[òÇ:¹rŠpOÄÝÁ‡³ Å{^ä00(2ãD}ëtqã„ô•«Ò£U}áV"·§Ì ©ÁK©Ü&XâWu”—< /:ûï±òâ‚Ó‹®F×à…9F|½ª7\#¼±”Šãq®p·,®Ýˆ¼-—¯W¹™]=×®¸R*DËi4¹nu˜êé5P©™$óøƒU±Ž|Ì®ºV¯oŽUS­’†9V]Ï"Y=ÚhÇ9V]qAUˆ–ÓrZͶœ¦žcé]“«slÅ•²ºÉK;ýÂóï”øýŸ-ú«vÿ§zXÜÿÙD"ó\¹ÿóùîÿmºÊ3ÿ9_Œž0$Y¿ÎS+ÿ@2þŽ_á!—üñ#ñæÎF˜ý Fŋῳø~–ïì8ú~îN½ OÀoÓ|LrŒ?1Ž~4œUÄg¨Õñäþqù€ï)`çIPClyýåý\Ûœ#ůÌAhØó’¼pC½³n¨93S´,æüU}PÓùàê‚:š.®¨í% Ô…êÂuá€:÷ …êÂ5Klë&\'À· ¨W廇ÔòÍ*êœ:ºIðÒÜQG ÍÑ´ñ/¼Ck€þÂ;ôî]Op‡íÞ¡ ïÐ*¼ð]x‡NïšÃÙ7ä$:_³­É¨ƒ´¦\B]ÓVòñ1¯«h¯’Gkñ#kõ¢šf´’]ÐZÝïÑ«¦Pg¿”dµÚø¯áŽ…îGv{Þ£st¿þ‰íìTRì¬^ѤºÚ-‡Ðy:€ß‘Y|šfôœÝbBJ˜Âk@2éà×ì Z¼R±)Ыx­<;'ãœUDþŠní8üf_ƒ/h q#o¸:­µ:nÜ8g'~ò|ggÎY‡)½ÓÚ-:~^Ñ©ºàÆÙÉÿ~ÜLÊàÉ9™´’ûç<",. ù\æ\š+M»È§yz·ÏëžvQß6 ;+|Eo%ü×ÿ çËõ9€ŽÇ†ÁÉ©Šÿ:>,ð_IdÂiv‚w7ÝÆ5üÒü§Ö¿¹(uý²B¿º`]Ë‹«NëÖû'˜ JãÎz‹áWæ¼qùÄ ÑwØì6ò¾ —#fâqum…ÒÿÃÕ7\U_Á«Ó×죞¦`{@ÏßTÁØéxÇ“ûÞÁãèÀ;Ôrá+(à[d mIˆ‘–¢t˜ÕG2”÷Ödšr5 õ¤.^2ôqŽ3iU7µzŸëv™µ‡>åu{âH¿E$=|`™>]ÅgÔàÐb[½´¤§7m …ƒÜýô»ûô瀥z„‘ ÄÃÚFœ¬k}ý|UéØÚ k6¬–MfýS“†>€ßÜ<"°—Q¶\QÿðäÔöc™:*.ø|dDNQM"Åê¾+‰®ÿ“ÙS¸­õ¿zr|¢®ÿGÁq±þo"Yd±°þw{!Zÿ·±ü§rã~ÒU—‚]—÷㇬©Ÿö!CÜ| RŠ.Kr=|ùÞ|Š‘a–×ûï·Þü¿³EÉûQ.(ÿðöÒm*l`åFH!Bx,ÂdBF¥ ¶C@Y‚#! Ù]Œ'ãɈ#·àÑ?Z¿ÿW,"f¾*×î^‘5äºQé^ö.ü~£Öiùˆ,¾iÛbÚ±8bHТè7Qƒ~óì“üÕ»V·(êˆ;kƒÚ ºê½?Š6†œ?îÿE.;F{„k•àÈÌ.v~´E£m/ìSbg\Ô©]Õí¨’áòÇøq<œýdø®Gï0‚°ZÉëúÞ-£ù¤>îÓž¤Ý¦ö\l¸÷I¤o?Ù€²%¬KI¶‘°«Œõ¾X̤šq/a X¬Ý…õý^¦e_á‚årh+F‡Ê¢h±¨É¢á_D"¬ÑÁuYÚ27Œ1AK³PT(÷»“4°:K¤ó×]QPBM2r) 0ºž¼Å…â•b8纕bxÿ7¾> lMÿs||¨íÿªÕbÿ·‰Dx‹-‰|ÛwÖ¨à®ë76²ïc¾F:}é¥÷i€šÌË)ÿª3õÖú™²l«k\~ §3‘̉„°¡CÜt›'…nHÓ[»ìÅ(¼Èúÿ°Ýõ¿ªÙŽŽ‚býßD¢ ®­ÿMºþ77©÷l)7Íb#°©€>VΛGåJÉfm Ð̺hnz Ð$í5ñÚ}ÀòÓå¿i_Üš¶ÅMiy{‹ 2,ýüƒnó£Íï½ìóDÖÿùv×ÿCýütR¬ÿ›H”Óµõ¿O×ÿþFÖr"L¹æ÷‹5Sk~Êÿ»E[æûY—ùþ–Nú°žôÝWyš=ùŒßO8ÁFm÷€oúþ K<ûœä£½+aŠÞ%‘õÿ¶»þŸêøÓ°Xÿ7‘èDÐÖÿèúÿ`Ÿ¤³[Ú ¯‚ãW¯ñ À ‡þµa@é°gØ+ü³-•S:+DøeÂÑ÷Ÿ¤£¯ÊémC1`&DÕ@ôQÉÊú]vxýDçÿѶüÿ…Gêúžëÿ&áE殉¯ÿä:r£æ7ê{ÂHpb:<Ì+1\c¤d¥B…ÅÍdüí–áëÑdŽUF~ô¬1|#)2½úhö­Ô?±¿¿ní=Æ)²¤;ý6zºCK3â™q¥²ïC"Ãø7ø“9€ôàºwÓ:€e»ý âÛ$h–x£ZÏÀ^£Žr£]ÀÃ#ú6êfí~8wƒKÞ5¨ËÊö6µ'º)¥ê1"„êš5X`y©íuG°i˜ ï1$“8¼Ÿ>=ƒÿ?ÒÁÜ·ާþ3øw`g´©¼®¡­èuÝÿ§qÙl)ƒêQ^ÔË‘ðéàƒ¯M|Y"ýˆë:¢ž°Úã—Z<ßîô{ä^™£)ïGÐÞÝtñEmG¡¹-Æ÷~ wV øþÒŸÿ~›næ#=ðÐv88N¼?k20²Wë7ÎÎoM`F‹Ñý‚ ƒ¯fã'æ¼èixÿ<¦ùðâû—ñýÒgé!ÙñFwã…÷Ú›lh·jîñŠy•¼ŠíiIÕâ”àîƒå:Pw[õF 9­Gt¥v]ã¤hÔö¢Çõèq]?ŽFÓì ½ÊàåBß›š ®v+thÏ)Ma3쵓º2=I£0­a„t¿ ð%ï[oN©k4üm:q§ØwŠW õÂuµp],\'…ë¤0G2?YœaµªÒääN:v¢Ð ¹Q%ߨd©žâž’ÜU/pt¬8®Æ8 Õðå"á÷½“# á¥þÕãûW×úWï_]ë_]ì[Ü¿˜± ^+c&ó»o˜ÆÖ)Uóü¸DÓ<|m~çQCuq'ƒTº.––g¥—¸¿f’7e;dçT2ãl©7ÊÚ•o.áýÿÅðëèÓøq´¦6öÿÁIÀôUô*Äú¿ãÂþ·‘ô®æËg´­Y̆“?þx×xש½ïG3ÓÛëU>{•Oã§çÇñýxQ™L'#”ï?àƒ¢Ùêõ—hc÷mqQ¦É´²œ< ]Ðým?ÿñGÿò¦×hýçÝY§nýÿUú>~|¸ÿ»åƒO{üñÇeý¼Õ¸&´*Q Täy¸˜/ïÐæë|òÿ÷&˃©ÿ¯’X3:«Kõ|<»þ Õdªç»±ž?z­wäœóŸî *wpðêq|³ä?è 4>²|4dùYþ€ë5ÿFŠÕíI¼A­© H Iöþø_èÈs?[jŽ/†FuR-&wࣩ*-Í]ø¨wÁPÐÐ L2¨¨m42ü¯•Þ5 6Ê‹äWõ‹¼Ê½W™zÿú¿Þ¿þTð=±­?r÷pSðߨ“Oˆ‘“éiÊeúdšO&»á1&Äæç?–ÿóµºÿH¼ÿ{êñŸ‚âþÇF’GwF¢ò§O]~ì.ö£ŸÆÏ.±œ ŽËlúøˆŽ=Øa±Ms?ø›Ž'bt rá_\V!)®Û^\6U P?r228åâ„m„’Œ=¢‰Ö’Êòó™xL‚΢ï@sëD4{ f/ÌLJZôIÕUG "¤y)=↲³¡¤opáÁ“D±¨ Õ~$þ8>œªiFÌþ‰TŸýË„?öø“”û—ÜEž%”KT“KÉ%ŽwÛ;‹iÈíæ'Ó°î IªHLtÿ÷ãùçööhï§Çÿ,ü¿l$QÉÅÿì×n¯°ù«±ýŸßÀÏÓ>ìj¦]!Ô‘ukˆúrƒˆ¾b:¡Ñ¯ã§ÑïhOÛ¶%ïÉŽ¤¶œ:/ѾŒfƒßxFô‡ž5äYC1khÈZåY«bÖjêýÙrBFVjbÔ•ž‰VvwxÓÙ@ù›GÂÁpöR¥»OýßÈħ™,ó@Ê<0Ž”ìgÈ3`td’œ[=óãÏäÅÀeGYì_z"û¿ûáÝ<ØþûðøTÃU‹ûßIlKú? ƒtÚðqÌ¶ãæŒTޱHËlÊ$}ñÒ/G?¼É_kÚÕ¤P=Õ°“7 ’¦"_Cn@D5¦@À¥àï]–lþoÓÿwxZÕîœöß$Ëü'€vþDzéd¥ =',r£ÈÉçÙè~Œ­³Ñ|ù¸(ÌšÞƒ! VoÀ åþ‡›Wp¾ˆÏMòBBŸíº::kÿ%Eu£ÐTo(Ñõ»þ¿µõ¿zZè7’-¬ÿ›ôùÁÙ7é`þξi½/ÀÙwcçœ}cJtðÝ|·R9øÆõ¯ß©w´¹øÝœz7ÖìÔo Ò» ŠýϮetê]+œzçìÔ›®N½IΊtG÷Ó­Úÿuÿ_Õ Ðÿl$QìÿKbÿÏ`üßž¹:μÏcÁÌï{?|¬áÿÌbë Kÿ–-ý[¶æŸæhÍO4á{ÂóT·Ú“…ý"t4Ñ*+m¬}¬÷ñûx½j–goøÛ#ÃÛcþöØðö„¿=‰Ó€‘ß~7³¿hø×#[Íý…Á¿Htÿ÷0]¬oû—¸ÿ CMÿñ7’Ø´–ôÍËë·D}9ÿDÔˆ¡½çÙôay¿À6ÁïSº t¿TÀ=zëÚšLwx mÖ¼ÝÛ<çÏoÜÊx缕<¶\ôAÄ|«ßòYËŸcQÉiÿ$úl8†”””®ìÐ=hY’}gYÀˆ’½f™î>cö¿áŽÑ0·„Tƒ5îéì-캻’èþo­;À„ýßñqUÃú¿$6åýÛÖW¸Ľª­wKxÓ»ºì·´-aƒàK©;à Ú²™·ƒÄÚèÇb4ya@XþÞß/Ÿ–xF›ëQ“sÿàꀂÃH ↓—CÛµñÄk¢¼ØjÝdÒ|>Z V·°^t+¶Ü–:·ûgXìcyÜ¿{>Ôòm?G^¯'€ÃËøMò}oô8gïöKA¥K-rØI`gàñjõ0ú4ž®âíi ÃøQ ð7²A¢. o®?\ö"ÚÂoá÷ùtâ{ ´Q<ð½ÒùUgÏ÷> 'øiïÀ;‡§ýn§FúÛFKåpüà#2 ·èÕ u ùc8GÛ³éç/¾÷îÀ»fµÑ¶{ïo.ZÝë¾'mrÉË.á æ‘²˜°ä°àzŸ‹³Ó‘/ÍiCýºT—€+ƒ¤!ç„í‰GÅáÃÙ’K,Fë½Õê%;wß{£.áÚJݽ¸Æ(‚sX— ©| æ¨èðóÈ›£s ìÝhñ}4šDÁÜF;;X{g«wv@;K&Riº\8 ™87Kh¸Ñ¬ézp^ðSB;z­w­^«Ûhõ©”IÀ§f~>0¿3öÇ339ž„éëC8¶1Ôðñóèn†&äòõõóløDΣï¨k¦2Y…|¯öøy:CD~òºÓï¸úÆ÷®QŽùž­Ð_€#É'$¸îÁï%¢ØôÓâ;8¦”Éïƒ8âé¶¡mѯ“é$©ÏmåðÚŽ?¼’ì€Îà;ëÙ•T%æ˜ÈâDö­@‘ö@Á¶à^µÇX܉vºc¬¹^äA–œÿ>ß=}Ûþ# NÃPÇ÷ÿ6’(? ø÷õ‹¿K×½’E~×owüö_ë\}¨ù5¿Ó¬QT°_o]×ü´§BRµžIƒÐПø‘GwܱÔçÇZ êCGH|ŽLaYÀÔ@gÂьئ“»c„äÙøG…îz§( Ùšpiû€ÄØx¹Vþ¤ ÚÓËhGíÜUÞ—¯Å,¤rÔÃ9ðÚ/±{qr™ûÞüü'~È´ð»¬'›Æ'ïî§7ñîà1é²O¶è_a¯Yy?O'ÃGRðë=DŸ=ŽõfO©„Åó*¢›z66$]¢¢|¶NÊS…tUª…wjÁ}#–žú‰öñä_»ãØÛÇÞÞÄôVšÃ ý½±ô÷Æ­¿X¦C±¨’­ã¤€ÜwªVÁsűYÆxj³ô¸ˆ¾¹yvÑêâCJɃÉÁ=¹ò:­F¬cÐÄ[øhU¹qmP÷ˆ}Î&b’k„ŽèP¹¢³ À̘ËGŸÐéw 2Ô‡z~¤ZÈD€–ÈoTP‹½bCªL–ñDªMyè?ë:»Kô9ø*Ìx.q‰TlŠÐ šmäx·Wà„ u]ÊÕÜ¥¨$`•ІÞÑOÎÁÎ.NKÐÝñ/@dÆA1¦ØÞvçñùót‚Ïð‘ÖI¨†––@¯4_Þ .ðb1}Fþ´€!â£Qž!(‘ö”Qá&g£OhažÜãH*Â{ùžÕâ ƒýg|ýòû.g€¢æÄ»#¯q ¸ÀЉ  õ§%*I;Îôd°Pbª‘¿ +¢‡Pá¡ïãC”×5ä@© ‡ŸÌ*ïÜœ_÷ð‰1·v[‚ÚÎQnT ÞÅY·ä]À“}}{æ*Pª•PcèY¬F>©D¨Å4Ÿ#ó•·á¡ðÊI^ ¯Å*ä“eaóHŠæS x‡(¤”IL™ ®â`1‚fÇã…\¹ºIűã& ‰¦ÙQZšÅ‡p$â*Ðlyx7/ óúmD'†–<93ÆVýd¬z z×ïc5I(¤Ëe®›àúÀ[MÜJUÐù7Rmz"wà|2{D7¬Aµ‚/#FJk©š[¢J"ýI‚¸À}§&ã(ÛúŠ —Y؃xaXq¦±,0ÙêLýƒ¢oàMFèí÷|´€þa…¾[ÿ‰‰!.UYi—ª`°*—œ¸ôç7D,ß;7ý†¤GïHX¯åó6)ò"’iÅ…s™9w@€S9×Õ¼Ò}=¢Aý1½¦ˆ[€•5rÛÁÖÂ!?íë+3á†.W}`ì‚ßÏý(\É Å+¹'ìƒÎ½×äè=tüNÐÙ¿;¤krgxdz¢&Ÿ~zͥטMÿ‡\¾mÑQ¶KØóq®1ÞÓ5gí!¤Ø·&õÑw‡Rûìhž»æk×{ÍàÂî»KŠ0<÷ÏoýóßöÛ7Wµ1tZÝ[øg`h,.ö,‹yHâÿg<â, d¯°¿¼£ *Tɋ߶zõN-»ím²|´­R”T rG¦.˜²ŸùHE { —'Å=è^^ŽD±‡¤ãµmèï®Ù;Ri¥çjü¹§a iÓ<~/‹euAµýæì¡š½›½ªfGçê¸üGZþ›ØüÇj~´gƒÐÐ~û»7—|­–d¦$k[Á¡¡È ¾ÿ~Ñ Aо»4£Kñýn“¥?‰JóO<¯D‰Á0ÆÙî¯å‰ÃÈ9:ÍÍÇwbD?Ô4Τçøj<‰¨LÿX©TÂçx‰o,6,Á>ž!Ižc”ë³}´Ûð`¦“%~°óúäóâ ×1-(Ռңåˆ-öËg² ‚“)úŠ1=\z¬ÞüEêœÑ(‹»ôÖS=éBY½À…^ kWÙú•” sJCÔ WAšd—ócÚXÚÄ´1ÚÐ6fêc’KÚÞ9ÈCâ¹€ùÊPö pΚ± Óðþ‚ÈÂpþw ‡ctÄúIT$ –ÎaWƒ¤òç/ÑyŸilj‘ }‡s `¦ ÚH#³#šLÀŽÚLæ©îøAª1¹í=õ£€èx Ó³@¢WöØÚKo­³d¸½n,¡ÉнIøŠ2ƒš‡níªWî 9#&×ÈVuû†H7CÒ!ÌÕ‰{”¢cŒº“s÷Ž2Žø@›þ²D–—ØjqQ²l”1ï¢)&a„™éœæSÍ/Dæ“Cª×2ñÔp[:¿Mö‹‰ùÆ"”q1KF¢*»"Š2sÔ³ãC®( üóJûför¥ ÿ|¿Ý±U ‰N9z zU®•Úûgþ9.u|¨•°Œ>$£ã H˜Þç"â$ªØP¡ÓÑG¾ÞùÍBƒ%·Á9]apttÆá±$}Ÿ®kÕ–Ñ(œÃ¢Ž>Ò€qy?ê’¼P®È&65nªs[1“GE¹ÛxIŒã.Ê/¡žÀ¨ö7YX€6ÊÒq/³;ôoœ¤2¤AéœòÑ9æ#Âö78˜~ç¨eb1ÏÕ ÌNÎ3M:³”Lè È—ÒvÁ ^Q ÜvHV­'ÒœS!gA˜bÎÉ.†,î„ðYnwBÿ5zÚZüǰzhˆÿsø¯M$Â7þ«uqA¶u5ÿ¨˜„«£ëÖ@¿6r@€µqÅP-ªÏŽýbÊŽ«— ôK£-¥À‚!ÊÄbÁ˜µ_Ç‚5¢µrú\BÇÚ=ü³îí1DPC}yð,dc֝нy‹Í~I&j~iàw¸ïè€MA´—¸¢ ‘}åø1õÝzè1†F09Õn‡n¾ÜÓGÛXbh‰T‘ "ßüÃΞ€i8}ÕÜREJɯ®hªzZf®£Êïf¾S™y"1³¶Î1fþšš™µªt›$1s=†™ënÌÓ0¸”?K*¶xÙ eå†g;÷;~·qÙ©ùÝÞåGòo]¡A÷ò½¸¼6©ºÖѱ6Ð8ÅÄ@<˜½Þb¶üÇc¯ê< ¦>\üÉp˜´"|ÙTi …ƒ*ßëáo§Õç{ì.†|`bÈÈ'¾XûXjD%¢“´Ú±HCŽ¿ë­'¯kØz½®Ë¯ëâkŒNC5èÑ>à³\ùÆ·^›1¢lœaEÚ†"<¤ê¡ÆÆëñ Õu€ÑjB‚)$´ .#X£ AKhÊxýçž;œ·]·¶]·´í;Pï€PŒÇ3jÅx<£ŽOÌO$F6ÌTîE´á”ËÖí£ AÑš¾°\°z÷mUÄ"ÎÝ&¹Ýð‹58â}¢JùƒÑ¨JG茂Á1`ΡQÚe7õŠh3ÍÍ(#} Ì­n`³s¦Ñ}”ÐÁªs1xŠüYcp[GîfWHqŒe„1JãhÑÊÂ!«— œ¢!Â)ê|7.*(‘Þ$¡oœPt´²ã$Šcº©l‘Ä„F®Ré×Iª~)Üp’Ȇ :¸mK7ðg•:¨a'¸$ òDÊÆäŽ`Kñ´ÀÉèAá@¥3Ÿ . è#\ÎNH^Û§Ù›dqÈøåk÷M¬fP'vZÅ#^X5‡Iã.TÅÁ*ÿl/P­C1¥š¼¸>6à±ÀH11µ,¡OR¦•©ZÆ1 ›TÀ¹›©%'b¡x:ÍSx‰ëþfEzÕµKÏàhñå&>ƒ7ù‰NÄ™åç¹ Ý„^8-rø3h`Xøp9GœØgÉiN4i „±øJ ×›|dhâÚ)T¥ÊP:¨ÁëßJ†Ú¤aô3xÎU«€‹ôâÇnÍÿ_prt\ÄÜV"S_ÁŠþÿ6èùog|þµ~ Ÿ)¡—…¿Âߎ:ð{A°¶°ƒ'Í©œäH. s 8•{Ah°D/X©-ù…¬Â–¡¯…¬ zÀ"ÀDLÍÉtR!¸'‹S,y¶«ðCw§XR=…ƒ¬ÂAVá ;Èú•=c鈥Â+–:‘`!vtƉZ.Ñg•ÉËU‚Ë*þé+ @ —U…˪_ÚeUá¡Jh²ðP%w¤ðPã¡ê7õFå Ý2º•*œJ±jcJ¹B¯,Þ¡vÇ7Ô/êí)rç”Uàø‚ßÝqSŒœF´ôÁ´¯J­½*½œÄìÿ³õ™ÿ“ìÿ‡UÝþ„…ý#‰p¸lÿï•"Ã?5ùk?¤´ùsŒÍÜÏjÛ„a¿ç †}8¹Í†“¯è<ÈxÑh½ûQþIu5ƒ‘ŒîÔ¨¶ylƒ÷žØ‰î}´|’7<¢5Ô#hlk¼dJÓ}a_&é%Ú—¬–‘½5½i1ƒ¢÷$U"³õ/dZt0Í9…Ñ~–~(ô¸1Š+e(~:Å®Ã^ê"2QjFä˜>’|ÿE1+5 Kä*–H³r]¦Çsbtü%Ì‚ñf9ÍŠo–Ó¬x‰æ5í~w¢yíT-áhú{#Ÿ‰# ¸[åÐvzÃV9U¬›Ý6o´)g³IÇØ¤Î¹Mªk6HI X”iqw¿¡$Ö­$ªN%µ).bQ %éjü& »F7®Óq´™ô›ºnªÿQ*1Ü#´›%!I¦IC Qª Å>iìoÜ}÷œ%Vß—xIÑ8\·{qW¡4…Ÿ«]ÊmP̃꨿ëy¿‰þnÕDô“ÙS¸­û?‡Õ 8Võaõ°Ðÿm"±y„ö`ïnºk8Sõ»½‹°Ô¥º?'uŸ¤ÝK¯Ò»M¡ÄƒÎÑ9–÷ã‡(רŸê!;Cûp|N¢{G¨`‚6>D‡(âѶWûï·Þü¿³EÉûñgù÷ƒçzA§•kq“ñ]8º‹G—æbú‡9|r Ž„,oªp“f¸P×dcœpB0nØh Ôt íÓ÷ö„bB.üµº•}>zˆhį¥èóÓé3¨”ÑvümøZ›Å”ì+[ujWµF;ªd¸ü1~g?ÙAüßÑ;¼ù'üWòº¾wKv>é£û´'„éFï™|¬c\"Z ;"¼íHÜavàÄC%Œ;"TîŒ.‹à$EýD¿—iáW¤d¹ÚÊÑÂù yb®Œ“&á_D\þ®ÍÒšqç= Œ;&H”ÕpÝeàój“3œ¼¥"‚ð-.¿Ë‚ŒÅ&ë…'²ÿ›M[³ÿ†Õª¶ÿ N‚bÿ·‰D'½`ÿí]^£½_Ÿ~ûÔòÛðûîv_”Ù´/Ä¥ßö±·ŸÂЋÒßßÛìóãí¡‡c]PÊ-JÿÔË\½ŒöYÏè‰ïU_Á«Ó×ì3žØV._U_½©úĪ€Vvª'ª(éÊÑL2ÀW­e³·Ÿê›Õ¹p‰Ä²Âê@ vÉõQôÞ„ ”Œ`d÷ÓHÆ»›.¾D¶$¼CâýH îÐÖáÌ 6éS]H£Ü¿%xÆ~¹ÏÀ¿Q. ylw^rÝj¹nI®¾¬ä€õ°)nâL±œn ßžjÏÀö… õKϵÓÙ@ù›‘™è™qöR¥»O7RBTVOPBÒÌ)ó@ÎìDãÛˆÈʃˆÌƒˆÎ·:¡o ”öLJ$™gz¬=y|Ä-‘ªx.ö#ɉ¯ÿŸ·¦ÿ NŽO4ÿ/ÕãbýßD¢3T^ÿß—ú5¿_O½èû¸˜û"Û#û|1[Þ/¼Ïão#´D®ÅÞøzÛó{—-ªºøgE=ÅÙû®QYZËÜÈã[è|ܯíÍÿ îi6†ËޝPn$§P 9EƒN74`98ŒÀÝóCñAO}ðô@>÷äs*êRt$F‡ä~=úsO)…èRB=Jï•{rQ5=¹‹¨¦žÜ%é+lÔƒŒ}C¶:ÊÖ:`D$›¡6¢Éhõ¯¦e GDb}ÁeþÙÜ‚ÆåÿÖ⿞ž„UMþU ù¿‰D¹N–ÿ†`ëtÓ²úps¥ctðËrü«]]u ©¼‹ËæÙ»³VÓ{öw«Û'î1Þ]ö.j`ëð½¾w}‰s†^}àu=ô¢ºdZS©1U÷<ßûø"±ø¬ÛHðÖ@%¸’9 à:ÊèkÜA‚ðâ¬Së¡ïGŸ‰véÞMÿ¬ûžþ‹žB|F u|<»þÀèì½í¿ëÔÞ#ºxj}¬Eßßöî²Ó¹üuõúbÀ(ñ¶´…¿ÙŸü‰’¡¢¿…ÃU©ÿM~ýîá¿IþèoòžŠï¡ÆÞ–¸höH¦‹= qOÂpÏþÆ-ã¿É·FïÉ·â÷Ü4Ój‘ Î&˜Wóš­~£wv…Mlˆ¦ÍÚu ˆ.{µ÷À%t0U1 Òú– Õ%ŒkÚcóM8cFØirSO5Ô4VšSNìß u½š.¸J<±~Âà…]¡‰‡éòîqä=ÏF÷cü’šÜ0N¦ËÛ•ÀöÏQÑáç‘7G;50_ÜßG£‰„ÑéÓIÙl¦ÇƒÕ{< =ÆC«öØÒåcÆ@òŒ”Ÿ†è)š òÃ*< •‡G8g(?<Æ9Ãm(ž°t¾Ã?¡†Bÿúã¥ÿÑÿG4#Fš)âФۿn]™ÁšàȻߪ º*ÝËn·õ¾ÂQ(|…·ñͰ k:Œ©tÆ£%ÐpÉ/¸Ø|K2Io¥½±Ç6Î^ÔÝ^ëýM§Ö«@·%Ê_áÓH3€ÅYxü9†(ýGŽ“ÜÊ1Ûtÿ "3ð_¡~¥–UUüJjÓN‘á+ÔÈrD¶þ …Wp¾2#bLÞhߊgäÕ}¶@ÿ¾êߨoèXêo0‹ ËòŽ9G*Š{úWh›.$%Lù‹ä©ÃÉ©ó:¥³<{e˜Lü•iJ1:Y‹¦}£N2’LW؇ڿ± bý¼OÏÔ·èí ÐÞ2®ÚÇÕÕ) ègâˆ?tÎá\eºJ™g 2Î=äoÊW½ËF«ÓC³<*­F[1HÛo†4/a/ßiy%"±[Dâ³{ãðð}ë€<Ót.Ê údT ãåñA±¼ŒáiË-&Ul­[3:Žä‹]D: ˜T)£|æË*\ˆ¼BYìd„ö!ÉšrØ(Æ^r×ʉ]³ç`]3å0=2ªƒT8œ®J踩ó9ÙÝ+¸ÝÂí&*ZYžm}ì|EõÁ臕¥‰ÌF?R±4[©]š¶²,oÚβäwMlÛ™HÄ-sœiƒ£èÓÞT÷è§hoŽh™P{sLËhWbÙܽAO¨7ŧhÝ⤠OÕ«z¶½°¦!‡Iú7½þèçwÛ‹ÿ†'§züÏâþÿfåÕe§À–)wgœpÑ$ P…R=Py¨M¸»ébXv6þüE›t¦EbM“Îiϳ«“ÎmÂûÞÅY{:G|ÛÖgO›™p/;Ô5Ÿý¹¹Œ_%Ðu.ã¥*~9GñyÇ vj4¿ÀÑkóNou‡ÎEÐæ"hóo´9ðá_¦ŽÝ|Õ¹é,„³¡­ºÙ¿à×aó ߌµ•èdkˆÞL^uR„eNéн),3*·¼ð ÌXQº÷ï²Ã÷¬Á—SN^5fqwÝ‹-ÎáWs|/œ,i=°êübq‹m.?×´8¡½ÝXó[ WœÔ«—«˜/ZöPÅd»'ªV‰2«-àÌO,Q¿ÈÞéÏ”‰% B4šk™ã'DÙ5o|ì<ÓÞ’nƒöAÏ…9&MÎ+í=´}æ&=ÞqP®•:û1ÁxYÉOˆwJ²ó0±Çib™ÒP¦bëtSw.G7Å›‰Ô’õÕø©qö'UÖFÐß5aí¡'ìÁ•]†ý4í°k!˜Wx÷P·ÆLI±SÄÃuà"%é Õ ZÀ µÿHbœÃv¥ë5;á†$Íd¿'IR$BsˆSM¤¦¨Oš™…cräêU¥£Yšf†îp®þ. ” JÛb¥®¾ß¶1ù:¤hª`ÛÂw˼ž>”vJ‰™v{e‘i›áFöŒLu›ô=7Í7!¸#;d”y†´9K´ñ|$iþñÈñI{=®ö)þï~ø¸5ÿáñ‰†ÿ OO üß&á( ÿרuÀÿ_¹LqéÛîËèñݯ‡p/võN•éw?ÑïØ«ìp²`.ç(Ër2›>>Žpx”9¶DÖ‚Èùúă‡xh*R…¡~ü ð¤ÃçR>Òg_ø ëîbQ©º«¢ø²¦//\Ä+O‚Ozý`Íý·›FݦYGÃIeùŒYEÜ.‚ÍõMÑ ‰jÔš N4Ø=÷A_38¨W¡÷®Ž÷,—#…ŽâmÊ…Ñç;%ÿXª;¶/ðd?^ï† ¡˜AõXϪbÕ1<;3ˆþvâÜò›Æ•»Þ×îcîôtwk‘s€";}^°Kzºþ?oÿœŸþÿ¸ˆÿ²‘DY[\ÿ¯"ü?Eÿ_­úŸèÿª” ñ•€øß5À¿†ÜTðþ+ú >a§Áþ"Î_ì?¼#ß`Âé]üj À±‡µ«Mÿã[~iÀÿmaé¯(9VÀM•¼IpS;¾÷*ÌŒµç¼ „T0¶v$},zWª…ŠÑfëG ^䥡OAZj¨cÚ$v0¨:@5äC%ü^E¿³“l¡R äDoBüq`ão#èO„Û͆šv#¢uúí(C_«…±Šß¸qÐhvÝhÔ“AÞòŠXÀG­ðQï#;p&e]®ÏáþAщ7ð&#ôŒö{>Z@ÿ0î*7$jFVÊ ‰ÏJ)0©fHkO-ð©ëЭ½|ªßntê.cShi"êÓ„G}¾1)©R>¯ Ðç¯ú¼ÊŠúޤì³€}°ÏXØg»-Lö PtÞå§JUI JRVýnb=í¶y¸Ùp§†v^•¬¨ 6y˦€$b™ÅlEÐ'j«½Žäw"ƤMƒòa€Ïï‰%€OB Ÿq‚‰\,(¢,¼°s8OwÆYæ©°^nðKU`ÉpÌ—¿„ñ1ÕÅIi_*3a³°!—"Sk‚Sí_Ï RàFmÚøadfÄJDv-àOÞÌ:¡™™…ê2ÕddÑü›Wknæ”þc¶>øGþ£z|¤á?ƒ“ÿ±‘DSÆôdøÅ~Ô®RB>ØiGÆ‚Òé•ÐÃãу|È#²Ά“¯à±HÃyÔ"œÇô_ùD“å@ o6'F˜2€ð`à Å-€ä%ÔR€; pGîÈî(¬Ú2U·hÕÞΦÚ8m"ƒ7'ŽT "”Ín§TsâDhU {ò@ödµ8 ÅZ¨ÂÔ¿Š©ßlæ_Ѷ¯îùQ[ô©9¿°åoÙ–Ïîâ¬`™G'œ Xæe3—ѯXàa—{ õË[êzu9/[±p»Ëh•7ZÞ%J#zé†dÙ¤¿S†tÚÁŒVšÙS ww3¶3Ü”ó¤DLÛv•*ÔZõ˜ˆEQ¢¡Æbuñ˜6!í7îÛ´¡°ZÃ?÷=І—MÁÊÔ†™Z\Ñ[BŠÑ]šã yšq%A½èª'¶ñÄq¹Í60ñÖ0£Mvªª[ïlv\H†AºM%]×]Íg¨5ÊÊX­j(«™ý”¬>gc­ø[™³Ô´nµyAZyÎç=g±Í…Õž“M>Éú¾Î¹k´DÑN)–÷8s¤œæîéÆç®4¦iŒÝŽæžž·Ûæ-qûO¸µû¿'Á¡vÿ7¬þ?6’§*öŸÐh"÷~ó±íÄ­ß^o “ B?‰Aˆüù3Ñ>™†.ÿö!’ ûPa*ìCIßùìC¿À­AסØõ[…©®0Õ¦ºÂTW˜êvÐTW\Ã}Ѧ;çk¸§²Z)úäƾpGŒ}–··X>4³_ä6ànºøBë1ØE;é ¦*~`»@j¹Ê I²ý±Á2æ1µ±µ\ïŵ^õ56ª«•å …Y3ã]¢DS§b7!<9Ÿ%êê£ (»5…]©Ø²©Ž[ö‡íïÆŽN]L¤ª…è ëˆZ/ kCšÑÈj¿â»!i-柴— ·fÛÍÿÖö‹\«Ù‹³ ®³»Ø‰wW€Y-Íö{ô£s³CoD€mÊ~B€­ÝÀ¾0w‘bµÿ>o-þGµj÷?«aXØÿ7‘ÈD–ìÿ‘4í²à~?…»o“‰_×%9Äþ@­¦Š2ž,F3bï@GÐïSfLg­&ÿ˜o4úÇ®Çó a¾;€•8̇ahóðуîŠU_aÑœ‚å’yx¥0Q>Ä(Y£|P žVÃÂJ L/©;¾†­‹ RÍ#8HUªÛþ öþÛ;/Öf $°µ·þ6¾VSô‘ת¾ð·r­qQG8¯-'„»vCOµg<"‰`ÙQc“œ)jÊ3EƒÝŽÀ:Gœ½ôÿÙ{³î6räÑó½?E>Ü3MI)•Hj±ïœz iw•D‰ÖÈv—X/}(™¶ù—DªIÊË3ß}Ø;è.K"3‘H ÈDü"b°G·+åáä”ôà¡tðÐ8öêë†Ø§7z—Þ°ê:4’ãyÛ¤d‹ó«lz¡Ï?×õü×jœœèù_Úñùo…NWñùoxyÙxöæmŠ7è/³40éÅ›NÚEÿvI"˜úµWA¨*EµÁåè·Ê“ m@Ýèy²Û€  _z ¸JJõ†@‰‚Cåö)/—™Wø ÑsÄtYŽ˜¥CgsÓÝÝŽz ?™ ÅE5¤‚D¼í²t2=|VòH€R|Èݘμ( @ȋ҃ubwšÞƤ#U4zzó(µJ%ãÏKXMç“/_— cE³îv£¡¸-  éÓÙ×äì¹r¶a¬x±ÑWAä-ïJzxÖ—JgÃ4Îà¬W> °g„HÐ-I áÝss¸ï¦9ù$KÑä5µõv,4/Ðåm ¦o*l“M0.É×^r”ÁÁéóã-Áwçh\Œ7éÉ¡³K€¼E㬉„ÜR[©4rPª‘ëJ5Äú&„«là5/¹•FüýHeéɤÅ@³Ãt&3Ðß'‹±ÜL 壦VOJõ^&ÿ²á,Ü¢FÍ’ÅóÝW æI‘{±` h?M¦_XKTm¡ÀEèh™QãHÑ:Ìë&ù>]"u¡é c‹¨•sb¤d´äÛφ@ëlÖ|TÌjŠ·žu,;м;èRꮇ÷‚\‘­G¬ =ëË*.¨|áe‚Ja6@PiK¢ ~ÉFåe ªMñ#M_{E8N^d>ã¼ ™ãvBXd3Xñ…¢Â‚Ö%Àe“Æâùv'yšÏ¾ÌG IeZ)ÐI²g´C[^Q÷ýÀœô#¬H|MQ–*RΜªNÖXäëð•²k¨\wòõæÔ4ûº‰X§2Ô ønàÀwýßu <‘h6ôtì…Á'M!SéfÚ21ømC8Pys•Ñ3ŒR4]Tr`PƲ^ÉŒe½¼âÖ+$n&yë‰[‚.ˆ|7~ZRå‹_ñA7A/¤ ß¿Nî¾ÊÐô4ö n¤>D²î³S»#S4ÉÿuéYïèù'@¯äèÕ0ò9X´ý¯öÿ5¾?æ?ÁÁâu‹Ù|´œeÃz2ôæùógtôÛë·ÉŸ£ù÷ñÃƒÕ ãùqŒ–CTUçáË µçëã"ùµô)¹XòuNwÉðV‹QrcœØù¡VÍŽ)ŠZ)—ó´Ÿ®ßýÕQnÿãÕÕÛkÃÅjÉ!Ǥiܘ¨æ‡ŽŒðÌïÞý3Hm¿'Ì^ªppìkÅŸNYèô¥‚’—ô8]N„vSSûòúŸ;á^'ätÜnS™K°cÊ¥Ó¥­îv{9RGO~p’êF“¡µe§ú¹ÝìÜKëy¯õóz!ç5[&‘Èå?ÛúµøÏ\Jþ3¢7 9jþ)”Þ®Ã_ÎÈ¶Ôø¿tWL¸¾’„Êà'ãÍ æs†] 4Ôõvã,=L²V9Ý/¦4ó6g#Á¡Ž¬e9°p(.Y2ºåèN4·3t´œêópŸzzóÄ×›2IÜå½i9Ô‘b…^ñ˜pÀÍôÌãÂÐkôÉ8Ò_xÒô§5ŽØ–¹¤‹ÏÎËG„C ι—5ž !k3ZöýÉO XÒæi Ò-t ¹Œ ¬% %\îOìSç´Àw'wÊÒ)]¦Ítß&"• æ+"˜g85m:àû¬M0_EÁÌ'˜ö$W¾¤T~W‹=XVÀ ÍV+‹h§q®‹h®ì§ák3éu>)³5Ù3v6[EV]>üYC &GeÍ8b‹‡Íÿͽ ²¢L߬;¯­1‘–Õ1n&üIÆÐørMû3MÓýLÃÚpB:Ôž¸®X‡Úº#¼CmCâêÐãòjO Ú4{z5é¨ôq Ó ¼«ÔåtÃù¿ok‹ÿxzÔÔù¿˜ÿk5…È”Âÿý[ŽÿHÀ?ê‚É¿>!nô/óKT’QùcB¢{WbBRÌÆ3D„ü)¾‚ý`O?ƒé=o4HB—°lbÆhô‘F’0ÑQÉH¶U —uÔjL¥N’¬ªĵAXN[Ÿ;x ƒH•8#Ö±aFAB攕a؃l©wÅ#U(‚á]á gíŠ`õ’¯+œAa]±Ñü‡ ê0Ú>ƒ)=U¾5FOÍÍaàŒº”@˜ÁÀÃ’Æ ˆþšCkN–‚ÇRQÛôè°%CJ’ð×B¢[¦’ù“: þ&<b›Ö,±),)—Ø&£S† µØûYåU«Üô8•ìüB¨G)ä`C‚\ÊÖ~ëeL¡.ÝÁ156À³Éº§Œuÿß«ˆŽYÄŠï™ Ï\Øeo(_ÕÙRÎh'ï›:Råéýj‹b)E°T/`\YIʬ´†<‘'¡3LÏ%ò׿ðÓ÷glÅÁ{8dßFîz<–Hâ`,-AG‡öl\¹ì6‡Fÿû¬Ð` @…PìÆšVàõ°¥†…v(h˜1´ÂÊ0O‡µn`(ö˜¡xcæîÖ£ÐV±~µÆ\ÓÛvT°÷ q¾è%t`H‹½«õ'õ›éÈQåЭ:–R}ÄCÙDd‰Bè±õg1í6D(tŠà¢ÛË0Û>9x—ÅT±Û•ô+Ÿ“+Kæósb®Rl㥮;7ÎX_ Bm8Œ‘=ãaŠjˆJ°¦ 1ÒA–EwXD_Ao€A·@ÐÛ8úEB)æ -h', C™Z‘Âp£DUh û|4‹&e—ìuRiµêÅÎÁ¸oG3SZŸ4ôi% Å5[lúÇÔÔÐT@qÜ£\P5Jõª, "—»´jÓô`‚™Â[b]\ŶÆÌëÃ?|üGûèèXå?š§'‘ÿXE!²/óׯôŸ˜© õg] G8ãq¸ó~6}y?}‰>çãу퓡ŠU!,ÑgD;"ÚÑŽhV{uöèHÙ”§l$—üü÷d´A‡WSIȉüØÇ%èžüãâ¬Æ˜æñ…F1{åKË^©>ísc}St„l ?Ëe 2P>×%¼°mF®KÅjOò\ª.ÙªbHjIB·›nÙa­—Fˆ$Ätb›m|Ï:#gÈœ–EÁNP0ᣜ6Íã׿³Ћ†åddhæ€Æ“›ÁYEs,掳`Þ·É­¨d&ËÑw3#Š<@ÉúÖRô=úÚrV–|0§aÍ;_¼yë˜/a©Ýó¥hj¿Šìæ!©üêš/ÖD|™u¼@×™/µ¥Ê«>Çít«;±Öë-­vKzÓ¥í°t̆;Îðμ¥>×)Þh—Ÿ7”jìQêšçd]^u/r5îÖ›ª8ÊŽuű23rˆÁxs‡Õälw•¤7]Ú ½ÅQ›![= ”Ëu¨¥»õëXºc1•Ìþ_à¶ÿ·ŽÛzüï£v;ÚÿWQÈÔWíÿ}òúòáº3xŸÒ¾¼›BJV¼‡~íU¼+†j!ý¦†”ú• ~éAš±4Ðøx9Ô6· &p/¼Œru+çhA.úÿI’†PZ`67Ÿºûgxb§¢?;ê©4PÃËñÆ{”(ài›Õz¨‡!ëà]r>9üž¦EoÎ|šn]“Œ¤äÌ{nfàGÓƒã»:Ž­ \àégéáÙÆ:§HCÉ{5FÜö sâêž`­9†Š@G¢êÞŠP»Á£²&Ø, x†*ì`k`3¶Î×<  ©õ΀ôÎzÇ?}Cº†”,9íÊÈ•—Ú•³¿Ê+÷È•ïVså²PKÕÒ;P©¢XK?¨eÔ<®KRŠkTÓ’§P•*‚Év7{x~œ.2 ”é\ª“S¢hgLù%øºRE‘‚|˜ ²´ˆ%xå}+¶å*Ò3Êo<0T¸%;)]fïGjøì{º3c~è,¤!aÉÁ¢ô}²Ë-5pÆšˆ®f ÈÉÂ,UdÈEÞIt#>K@Žn,k’¼( ì]Õƒj×LéfÎlý1õI_:2‹ÿePµ›¦‰Ñî.ÛÓ¬—³£¥ŠŒgÞ‡šé»y%é‘û[A¢o·I¢»‰î––hµv›DwC%º(Ñ]¿DwW'ÑÝ\Ý­\¢+N}tÑù:|õ|Ìœš“å±6×+‚Íñg Ð*HÎõL„V)tŽT¹vN žóPkf ??Wt€¬’s€î+h€Š@t=2ÿ¼º²çו½Rº7~ëGšlõ8][Çét îÕþ¿Æ·óçÑü'u¯su3ôÖ<›sâù $ôÍóçÏèè·×o“?Góïã‡+v÷ü8FBˆªê<|™¡ö|}\$ ¶>%KžAIGð|§Õ‚ؽ b\ ñ;O/ÒÁõ»¿:Êíã,®†‹Õ’i${ǹ²ŒžZtû&¾¤¾9&&ÛVÙ×}öµh1Ã÷¾TàüGè?šö–ZÓÔ_0ö'ž.Þ'®œœeÅ6ü!ÏÁ=GË4ÂÐ $¶ÕÃûÎÃÔÃe¶†ÉM$;·zîkýÜ^ÓØl™$&/ÔØ_EB5# úT4.øè°L%)ÍÍD7UÆÿ= {:B”ôzÑž:O¶'½F ‚ÅxvgK" |Œ`^LyáJámx2eʇ{H¦¢I# );r —“¢Ç!:Úpy0œ“’Ãå$oè1A Šm¸<üÈ« r|@q©#:²Ôj(Z€i³§Shv@Þ»Ù§ ¤µ½.¤^çc|ØrâJ¤Þåa‰)/FàiŸA¢±ö/p;ú–vàU"ã_h¸YWþÔyÏPd挜í9<Ï:¾Ã…€ûî^…Â{¶Ç02àÉ.8G¦>?ÙJ7; çF0,&øröÑÂG¨i_mšíaÓ æ™LÍ£"»yTÿlÊ·”(³©(ØihÇ鋚M'!½ ¥®ÙtRr6ÙÓç4Kç¯ @sò.}­¦k¶â‡`Ÿ~cBáÈyæIB/Õ|íeñrŒ¾í4.Ò³$Œö”#bXÚ‘.9¯ÃÎkæ[¡äRf¸>NóL%MoÞ(–‡G­^AÍHõNˆ€†0)mZ½Õ,°l´œ/-p@Û§*Ä–÷ E¼\Õ‚ØjEAÌ#ˆöô‰­<~/Áøz?âëå ç¿ëÿ}üw«yÚTùïöÑqä¿WQÈÜQøo7þ]ø]ô]€õC½ý¤wN´»v–[:ôžó+ÔM,§á†ãG“Uîˆp'[pKó²(ŠÝ ªÁ…TÛkˆhtÿÂϱ̱u`4C{VŒFOkF¢#½Qüh$¢":ò£‘ühäG³ùÑHFz´`2·ˆFlô…`£aèç¡iÔs¢ŸýUijŒègD?•FFô3¢Ÿ«A?µ=Õ¬5øÜBàS%ÔP´•šp±]—ý#—¸q‘¸\³8— %qÞ&ä±STåW:V1R,#ÇÖ"Ú:ùÊ*¨M~ 1U»á$a…” }¤×Äú­k¤WŒêõc¤ÙM,„ÿ[Þ>~[ÿw|ÒÒò¿¶Û1ÿëJ ™"ÿ÷¡{ùo‘ÿ{sÖùƒ@€˜Õ#É`ƒÐ?)Ýkß’ëW_êw“#ã+Ü£ó#†¤}šÐÀøý€‡ Îî@M€Bc ç¡¹÷ƒenU“ R}‹ H“B}ÓÙtÿÉùVEØ-TBÚšÛc#¹G @3ÙI>MF_À<Ã2U­"3,ƒ ñ=±f»Íx,Ü"'mב®¢UÌ‘Zl­ªy#Ç®xcBŠ· 2ʳ9N±õLõPYÃÇ겆gÈ’ŒL›Ü)U¸n£T-ÏÐùd0 ~¡NCǰŠÄ®ç‰ õÊBøKûõ¶- p(жô•æúNMŽºxFSfŸk<÷혯)°¡×¼ ½"…hŽ/>ÿL’Ãäàa|ôëÃñr·zR·ò…Dư`• ÏØ*ȱ\ ¬[b5´ßÐ_w³1äbœÀJ•ÂÀ>=LP—à]_ª‡|J—>±õl`”úQÛæ³ïRÙ‚)ÞQ*p ²p‘yx@WMèl¾\ÚÔ¥ð8‘|žÏa@¿AJ4|㟟Q]ô[È74ú¢ ‘3RýΠqº«“ÒÍ€d`Ö…—`gÇ£²Ÿœ›Á{é)Þ3ã-TvŽŽîKh9%´1¨î½ä †·fr7 úzÙé௾ʷ­Cá«À¹fIÇ[v®©/4×Ð])zÓ2Çn3,›UMT¡TTÞÒfØíl¹D‚;Ÿ|ùªÍ2Ú@©–:f™›ÊÛ¤I6ÁÎÓäòlÐHPå̱5O°Ál‰téW$˜NÐä–J¾Gaö(2=ŸO³)dÔ·p —CµöªBÒ{ÊÂÈå&MnŸ—øýÉ/0ŸüvdæJ+ì¦nÈ×®§˜¬Ý– ‚?t)Å}¸ìîèvÑÀ› HÒO;)…ÃhzVx©Â¼Ñõ¨¬`”÷õB¢ñXeJQ™ô£)}ãuÎÀ­a|œ<ÄüF>š«‚.Uss@ÎÇ·‰óÑŽs<·—ÌõMT¦°ÕÁ'Û¿aYrÿ;<›ÊáMKŒÌÅ´á!TêjÓ†«;{<_8NÞ¿ºøø¾ Ã/茼û88ûàb`·ªMÑÚXŒJ]]"q#ªWœ fÔŒ†R ÂÙx·×|sä+ kÃEÝt©†‹ºéR-E:¥KÑy{¦¼Ü®Ô›Š½t‚t¼w]PÊxRnÃ#_‘©Ëg>LSfL•N2¥«9ÒÙã6y(BK÷ÄÒà#7é:OËål–,Ñà ^ø>wcòØö0›=)ôîþ S'ÚS ËcGò²O6wîj‘s»h=Ênˆ;‚LZÓ•'R!нœ+_Šb¯w+! /Ô$ç#u©€¡@ïÞzìf 1áÂÏ÷û;)ì.¨·¬HŒÛq& ={Ì_ŒQƒ‚ç%ž€;ø.éÍ¢ÚéZë7ô—ØϭÉÀCg: 7EFÔšfWìÌQ%Ï ·‹ú õã°;Šž€ØÀrCÉ/#´Mèg.)1oŽbvõóƒ?>ôwˆšì‹'T‹ iÊŸÒfºoÂM€¸Qv¶Véù7¤VíÍeÅ£f X%”Rj&HvJ‘÷™Ðh+³XœŠèUø˜¯KÈÅi ¹(­‰öùœ5¸)@)©‰Ê*¡}ŸBÒƒ&ôoEE”T…s…™ŠU ár£V÷p>Þ9àWcA˦8ÎS°Þdx…M…%×)幉E{4!œ•ŸÑ¥ZŽîi¨«×`ÍV®á³*$]ò Å­±êæþQ• øÕ³¨àL.#~i¹ÄÅT4=åð,K¥Ï>Mïy˜(6òžAg¤7^Ó²E®ð¬ozÜ E™õO§ÞŒš^/ÈsÙýüí˵ æq…ƒ4}y'äô‚’cúf— |¨u?1ÑñxGoMt<ã¿kä¿Obü×5"r2ÿýþà¿ßÿ;I³‡oc%Èëb9~Ä´ãÿ>+äwg÷Ò·ü&Ïüø#‘û¾ÅVOJ (¶äþÎÂ~Cÿ.Æ~C*þ=˜%K°IÁæùbBê˜,b”v<šï‹Ÿ¡vM¦wÏŸÆŸ%@¶ç™u7yÿ|÷×¶àˆ@†,ßÛ;à ðö·t(’èK¢sq§Ô že1t:cB)ôlB…Bèö3"ƒôÈ C‰ úFq±‘A·¨ËMÂc#ƒôÈ G=2è‘Ag\ƒŽuÉþW<ë&Ÿ8X}ë`Ò¥z¸ÂD/tÏX—ýrDzÄÈ#F1òˆ‘GŒ\ÆÈßÿRù¯C‘£×Ž:@rvšL¿5еw6'¯ô Ɔ-Èäo~JOšñèùH("+º_’^T^0u0úa0Tn.´BøÜJLæ–#'D‘1î…I€K ¢ä(:\Z sÏIˆ®:¯Ð·%¶+¡ªôO~ΊGùÕ+âÍC@rû0†1Y5©”2Ú¤2ErZT"Jk‘¬Ï‹!ê9]jFÆÉCÔîî‡5?F1p¼,3ê]ï2ö;‡£•H îW~[ˆÇ€õ¶Jd<ˆ/VÀx ¤v%#–“óÌi—ÛÜ„¨­Vo¸uḅøD¥]Ä}É=¿ ÞvŸÚ¥¸ðJ¼ABœ+Q¾A-ä«XRì—@½‹n÷ÛÅnh+…Ê߇@å”ÿ~ZcüïVó´¥óßG‘ÿ^E!Ò!ñßWÆøß«Âèw Ð÷U#/ñ}µå¿ðÍA™ ð9w÷è7¸¥HX˵lac}GÎZ./‡³î\Ñv…P¾¦‘Lw¯!<ìÎo-?ElÈ)mu…oIa®ì0ëªUEZj€A3,q1#DZ—pëée”a8}$×Ç¡û#Þ@è÷vv=…}‹þjá¿â Æw9ù6Fm(Äb$hXwÙ”úú»«…OaÝÕN5˜5¨»®OשГkpY—·½[ £èFþWÀ¿¥}ô¶É°=ì[D×6]óReœC+L•]ýZÁI_&UvU48éUA¨¬TlÒ¾pÿâÉ“Ýï;ÈØ¯fá¤W ¯]¾/škˆSŠšÐß;GRm9Ùi“ï“^BÍÃ&Š_3)a·HO¤¤38´üâ`  +ŠLZJ.‚L±ŠðTDŽኃ]ô Ý¿©C± ‘JCÔ5ý ÊD' Ö@TÁÕÂ$m°W,ú$"¼4ŸïqáN½ëTÔX¸ó’t_nÞ´€æª9’i)y 2#…n“˜V¥+Šaj jCg ¶ÇúÜv]5tib/ÁòË©5K‘4aÙ¦Æ ð›„%±‚ͧÇ* mzFæN•ƒN ·l쉺 Xðtec)9Àw¹¢H¤¦¢ˆBudZ¹×±*˜–™þ:G+6NŠ`°”æŸüäú¥#›/Ào1[U6=jMSþøPoòN5ð¡õÚk‘¥8çûjB—šŠqôWH£]­/Äi,ŽÂø¿5Æmµ›ÇÿwÜŒüß* ™2ÿgŒÿºõüßG| cÿb ×ˆ!ʽ½FÑU"€˜• F1ˆÉKc ½C/2„‘!Œ á–0„12]dÙ¯60]U–ìZbÓY£=¹ìPò0AÔP I—“ Ú/È• Wgª_²€VÃCÂqeü.~êÇj‰£7×.dJçÕ‡˜Ó¡˜cI1‘ZI„9CQä©bÞ°°E½úÀt«QCvK<½±ãPc<”R:h¯ ›8W…–‹n·µšç4¿EŸ×bÕ‡âV;+ Ig(FZU躒OZkYçD 3ØÏï}¡D;Ê ûTÃÎGÕç¡„*C-CX;‰î s°Œåú"׌hÅ|P<`%pp5‘ì|ÓžA~An…§þ~QÎÏ)(.,=\ ¸=¡ð$*0ŸÏB•QK¤»I¨!^Rà.g¡üßüñqmüßÉá±ÿ¯}ù¿U2y$þïúò²ñþìÍÛ4ƒ;„¼ðâêÏÍßEÿvƒx@BíÁ©ôf¶‚jP%P5ýF¡qKh#Ê%ˆï6àB9AÔÎ,—¥2° oI£‡§¯£ÝÙÙ‘îrŠPø²Ë¾–xBòeBp±îÓN£Ú#)zñ‘fªÐ‹&$ÍTc>¹[>üÔ—z1šô$ávÝ»€³úïÝÖϽ;Óz[ïÝÖÑùî=€L ESMa ÇXPfFuë²WSb˜p J¤Šp{5îç "?¼¶ÍMõidjL›Í뚆&Ëî’¯ÃP×P¹ ðÒ'r:)è ŒAî»nœ‰9¼K‘—ÒðD ' 0E]P&é¡Ý@ Ìtý2ÓuÉ QLj¨ØrCš‚G >CF-GìoÛÏþ¾Úÿ×øvþ<šÿö÷uöw†Þ”gÙJx#ûæùógtôÛë·ÉŸ£ù÷ñÕFZ)6TUçáË µç+z/ÿµô)¹Xr¥Ó¾Ój¡7©e燧¤®ŒF>OûéàúÝ_í¾aW‡ì^§¯®Þ^.iÅ©ß Þ¦f¤}ó{Õ©…®ç‹/¨Â%ÖlÜ`€†Ùb;7úP3YáûEç]²‘m#ìk…d¥_ÚPT:Á¡§ø·ÜÀîB¢6Œ[Jha‘$&·uýÏpšœŽ›bª1£«ƒÉf¯îPÒÓHQ›Žþë螣qmä®M7ž‘×Á,õe¾TânRûD=œf'©Û°ØY[öZ?·›{iަIŠsÁÞ°ÉZì}‰aïäàÝõA¢ß¤¢Î”†Ì¦o‚ãÿÐWQ¡ü çq(WQ1‚ç¥ò”n²b¡¯™.°ÑnFmñSš«—ŒØ¶BV›Ô—Â\w,Ðu€ a·³C¶H廄ú¨²°Ûö},!gûÖ¾¯ÖmôÓ8#j?Åc½KÎ÷œ‘eTn¦>fš>àôÛýåDW¡Ĭƒb ‰ƒîÉK;’w[†¡d“ýÈmµ>.„ðŠùwé#ÑW&¡½Èņ‹ŸG~ 2øž1œÌ97²zÄð¤”fÒa@"Åó‹BŠ —˜5Ñî‡ÂÊð-¯Øw"wT€H_{äÓ×"{¯ËÈ^~Vî—BØ~WUÊ^ë°JÙk–9VòÈ^ËÍŽ·Ê€Ù~}J¹² •Ú:aúű ·øZí{e"‚pŽú¶Œ œ=@·‚Xñ B¹—¸L<ïV†RJk8^6à$8 †âÝ@ß2P ôiÐ …tœ¨iH7–ô¶k•ò¢Ão÷D Ïp§ôY¢¨ÜV$Ó§•ʴŹ J.™~µÕ2´rB±Ét±w+Þ}í@o¬*àzØ–pýË/œÿ__üß&*‘ÿ_S!ó[áÿñ1ñ_40œ[C`†ö犌îωõÓàn¬Ÿ¥Zç(¿:E"øðx¿J\L­X¢gÐ>TäÃöc¤]¹–Í‹´ËˆrlYårÁv™†FÛUòûØNqÇ)1ÞnŒ·[ Rv2‚îxº $3/J\$^H슊ë¸é†¸ B¼>‚¸pl[Ηq»ô° â5òŸÁ@ïöFîåqví‘zyt^ ö¥‹í/«­é_Çâ'›Úü)Ú0‡ð´<ˆE/1FÃþ†€¾öwû"þ²ó áÉá8o ¼–pÁ2„j½Œ¯zà ¿’÷3³QÍAžÆ0Ã[f¸h”áA†;EcÞå\aÌΰЛ"±ìÃD ˜2~sxªXÈ^vwÆTÞ.´!ÓUDò5‹5[oÒívα3¤Ùö¡o¼-RÐÌb!wq]ö<Ûaƒm(z¼»êbñæ »[mðàY|œ#†çD.f‰g7Xb"—2áW{.\ï”?Í?Ð%g}®XÄ[\W³>k_ÍAp³íqùÆ*}`nK½, –HxeŠÃ,›ÍþÉUïc7ó¤^(š¡žÜ*SÔWpv3rÍûF²h*yiZ•ÎÿBó¿â÷2+Îw„P·­IºJ³*ÈÓ ÈoN&J®ˆ¬–ð´¶ ¬ÁA#Ë#o…ºýä<­ uŠmò¨‘c=÷ÈïÕ3yZG5Çö- UŸž—“\YmÑCëYý (éJb2‡F®-¹R*VÑ:i Ý0Õóï@å’LÍãVcÄ66‹1[v l{×7ÇÚ¹VIÃk׳H¶V#:p޵K.¨J§U´œ¶‹-§¹çXþÐäê+¹R¶Wé¨óÞÇ™û¬1þo«ÝÖý?šÑÿc…È…âÿñÂãÿ¾ÿ·É­cñs±?bLŒ–ôª“):@¿Ô°qKjÁ‡£ÃÈ•Ð%Ï>㎄¨Ð¬æðиL–“ocQ&´¡ÁÛäp.ý˜U@¯‹Úß!Í:½ÚLÿ=jïböpÌÝ|áOão“;øúS–„o£ÉÃèöa Íï½~ µÜþ„£á@’ñ4º»ÿQåøžikîfh²NaBs7›~ƒ îÙ‹÷èëTË@tÄóÀ‚ßf÷cv‡ß&£ÿM¥øÿå/¹`aøŒ†== [G¿4þó–ÿügçÿæIíã¤Éÿg¢“éç?üÿ£d>û6ù”‰8íj·˜Ža¯´ #P#Æó;¤àðl`á_¨’Àz×I0Ò±æsÒÀöÁyÆcùKŠÁ0íqpÙx¼(+Ãå÷¯“»¯LŶHM@ÕñPµ¥ÖNæ«_ é ñ8zð/À2}õ‘©@b?ú†ô§Ì@Êp’샇‰ŒoÐ3™èIl@Õ¦t¯œ[½­§`%oÒí»HùŽ,a{>C«Ë†´\æt¿íûíñÝóë‡÷ËÑr¬,P¤Ý€<ý“~‚ÞwÈþ´©!­~èö6Ù£=ù¬‘œýï3-ZZéPuìPxèó)=…¬°èxùµ€ŸŸþWSðóÿÿýxªãÁŸÏó«}¬ûÅü+)tZgÏÿwn®†Aúw'ý›x{¤áç0Èëãͻ݋·Iïz{ƒjSµ.Tµ¥& h}¼V«‡Ô®p·TðÁsqôIJDk5àùÈ{zxÎþÊI¾¡ò?¯}âðZû·fó·ÓWìÖgŸ€Ûû”4[¿µ{ÝNÉ<9@“ú ÀƒÇX|ÀîNMÀ™oqìl˜s‘¢£tuý¶w†Áë7½N÷}S]Âè§¼nzi½°—ì rJãïÎc?™ŽâûºR9÷y»ÌÝìÎëÜ¢ÇY`w‰€¦h¡ák¥¼YŒ$[(ÉÏ=$b»3«‡´Ò?ãoÄó”\VhúTýL|¤‚`sSÏD@þ*s63XøðÆþ`î;§vð<”Ê;:iÈzi(t“²Qê°âëž ÉWC[ï7ùwñ‰ÂTÈú^²×¸þžªû­v»×ÿU2=Äõ¿÷ެÿÿMXä¡ùtÓˆ/çiò#Åk*ÿûgé½É†Fš½´¥>ÓüÖåxÅ -_fãÚj][k[OÉq5}™…¬ÿŸfË»õ­ÿGÍmýoÆ÷ÿ•¦]¤•÷_½ðþö÷›wz[ú0€ÛŽS÷û’q0m|z¾ÃŽª¿ü«¾ÚÁfÇ0Ë.@àf÷›Þ»Áùê£ÅßZià÷ø”¼Í³ï𨙿ۤG’ì.þ¦I¿É½6ð3ÊÎ.~d‰*aýuC;lXã ,QÎãCM¶þ?¯qÿÿð(¾ÿ¯©°)k_ÿ?néúOçüGû#ÀòûŒÅfŠO9žd}n[Å?nå*Ž—ï¸zõÓÍjVíqÕ®¯Ðõ>[®mý?nµOuûÿa\ÿWQÈ,÷ÿß\¿ûÐHi‚–m²x'híÆ3ý–&ï“q]ñ?ˆ `@+EU ä(3'ø*¹à[²zí6Oø•z7dåö†ø—À‡†ÎÓÓ±<=Œ¦€ç-ñJÍicŒmFB9.&Ó¤qG~ÝÁqŸæãÑCoáHøñŽ„µºû‰º›=>=Œà³²Ç ;›ø»¡ÍÉñ…jÓ\aĶÞÒNaÔ4|ÒjPM¨^p(ŠˆÜýÂ>õÔ¸O,ðóÓ§ÑR ¸•U E} ³RÁŸzå¢?¡çƒš†mXp؆y‡í§8lÃÃö3¶a¾a¶!yú-:l¼÷iSU5kisOi0Rv“é8…Ÿa~_ðÂjØRrYôoÐeWõºdZÓÐ@âƞgM‹~zÕ4+²›Å•AÓ¿+1²ö%‰úÖDt ñ­)©îµ)‘ßzô} · +-ÀÀ{ÉûÝžÓ#ÉgäXúû>{c8ö†+û)Vù–½v‰’•ÿ Œö;¼T‰£ÃÎm$ðŠ•˜_Ȉ4ž;Tε½Ÿ¹äF‘¡iH†â˜ ÅA¹1ÊiX’Š_÷â«Ýª }ÿ[ EWÛ  —ÿjjü×ÑQŒÿ¿’B¦šôþ÷¾×¹h Ò7Ï~ ì¯ý.½œg÷î$ÑAoì2Ç(ðÚö}aÓÖ”,ÐZ€~$ãƒäpëv‰³­àÖòú„ÑP çÓïù–0ÉÂ.„´ï;m²§ì|{Á4ÞidM²q]ŒéÎa߿Ž ñ&”°Y™õ䦂–Æ•6µõÿËíãúòÿ´Û-ÿŽü×j QâúÿG÷òß4Œée:HûiÿcŠ3`I9€ÒîÛ´¸g©*1=&à-bri¸ä¥!ynb‰§ )yPš,ƒJXz)‡Éa°OŸ4² ´|ø™å´„*{É-zâØýÉó Ißã (ò!æŠvÿá#ð^.|‰·ŸdqO²ÇKö¤ )Š ’G’¥è>&÷–’°÷ÉâùvŸ¥K 'Þ?£Ñ=g‡ì_—ÍoÃ{™¦[ÈÒ•Kqc*W1å}$]5ˆ)pìCš¼å’|íM.p©téôGVAB=GæÎârYÆ&P4»LÖÀ»ÙÃóãÔÓÆRv‹þEXÑq¶FÊS…4Uª…7jÁm] ‘^|þ™$‡ä¡ØÚ­ýèh­4‡=íýhiïǰöâeÏ~eÛÔÖpr‚²WLHΘÓ¹ qLD‹ )r¤j¬érh/c)CªŠ èЬ”²­‚L¸ù-Í¢ì°Vñä6òd™ÈÖ4å¡ý¬ébNŸTH5#K‰TŽ<#ï,³è!-uß?ËÕÜæ¨¤É*¡ l…`gÉL±¼e†Ú›¬›q O3üVv7›ÏÇ‹§Ù¿[3SŒT =[X!_ÎÝWi9{Büy Bþ%©ŠÆ;Ê(«iƒäæB¨²BÁM³<‹ñü ‰C Aüž:;‰Í‘׸ùìQíƒÆúó3:“6|ÖøÑ?W@ÿ6¬ˆ ŸÒ@§ÉÀp*é©€=ÎÿÜ| G›âZHáµADStÚ =r™âÂH÷혫@¥ÓÀésÏàPxõ%·Ô ¨§‘X¦<^¡òmëPø*H_lGb&Eí„©Bžœ)DæOÎDòméOXòä@Âè¬úÑX5Ž˜õ}²ûôrH(“å÷GXnA'xÑ2޲­­øã2 Ï É_0¬ø ‰¬0ÙêBí#a܆ÉtŒ>£í^Œ—Ð>l!kÿ°2)UEiX”ª`XVJuÔÁ$¥"ßàÁ²S [¦!Dv‹Ã åX†’ ÈÈÚJo\XÆG|‹ÀÒËÃÉÂ!¤çEo9ö)æ2 ±!˜r™){/˜“|!$5Cþž4š‡oö02Ž~ìì˜ÏwdEÃ̹Tƒ¾EÆÂ;3¥ I²´óaÚOû¯šiÿ&íÓ‹·ƒø‡™»³jàîdd@¶3‡qßJÑ]Šžá”­³¤‚tjÓžåÊx¦¥]»tf&Ó¤¹™iyÏÐK|®Ägè%Úuü±z†çR{ý„Ký„}䑜ýa’i9¯›|¡,a\RÍg¸ÆÐr¡ãCáCz¡YÈV›gŽo?° ¤N¦eÿ…ß.?ã$3x¿8Û Î: ,šn °Ú\f²9¯MgÚj·V@µ°X.t o–I.AÜ…^îb—yvU˜Q$§¯^;O·µÃîa(ö›¡è¼]»dçåhëÝ¡5û†Ö¼¢9Ó é%è%P§Ë:[^,àAïXùu£–ÇI³ 3 ŠžÅÄ?¿|‰Üò% £(î„]W.²swEöí̇déÚHêÕóýþÇxÚk\¦ç{ý Wž:åh\DšÍ«¿çHÞæHzbÍã¥çð2–*4Hº/_[MÝoV¬„ Îi‰ÁÒчÇRôlÈËVÍ8ªWF£p‹:ºI²T÷Åf¼rº?A›ÉZû“ØäMfXuÚkƒéÏ2E3|Ù9Üšõ½GBHŠ xuŠk–â-¿‰éö&=“¾Y– ÚFÈåVE#iÈÖÖ,¯Öa5b͵\=¶ÁK,l À.häK­Ì®vÐÉ,Š÷E·Æ_Ù(Àû†Þbß6TÁ·Ø1Þ¢¹¦ýq€® w)UTp$·¼½)HAô»ÂÝ'Ö°è\è_´`¢E&Ä!Kš¥*‘¥¥ T‘øÒ»Ûµa½°¬fMÒt#¿^5ƒj·sÚÛ9þeKÌ‘I™xH¸ç˜1}¡áý«-U¤œyŠNvó sU~+ó­*ÌSI˜µuŽ ó}naÖªÒelêæ®C˜»aÂ<%‡!µÛ„¹*ÌÝ@aÖžataî–æ®W˜»a¾×„¹(Ìš×Be„(=ø"PH”v90ˆí•äDiÜ£ð)ÙËåØÁÞULÜÓ×fÓLAD †Lµtªã—.˜ÖÐ )HN+W4B£nìÜH}ˆ0 *5Άò;2<£4<¯§¸ßÈdë‘^÷N65¾”a²õ\“´™M7:ß² G›ÂŸqa*€]a¨Am«ªÎ¾Úÿ×øvþ<šÿnôunt6-gÙŸ|½yþüýöúmòçhþ}üð`¥KÑ[5z{‡,·_f¨=_ɨ¥O8½º•4õV Iºýld ðéyz‘zï.:éàúÝ_äß®Ò)pýN ÿvÓÁ»øÇ´O¶¹¨®ÈÊÁP¦ îg¤O–óç1~ û }¾\ã;ÈÛþð“AÝ´"¤‰ÿçù FàUO*ØÐû”b=J:ŒìqA§‘¤÷òhE¦Ë]¡Öäöy™P3~]ß#£—ࡤ7#™0Ç2å…Á^+áÓ„ ¨ý Rmlf)Á]*1Š ¾d_w寻âפ·ÔÓ{Ò÷úùÙ÷Ä~ø¡£YqŸ(H!é ß“>›¥²…ŽÒ7œÂ¹E•‚û3^¼ë¾PWgËñÎx&}AñRü îanÖøèFKÃùf~½®~½®~½ÄxÑ®û¢%톪5JÚ Uët!FšXp±ð„SÒè©[>·kïy—F&ÙÉ—öËSÓ`’X'5­bÓøè>9ÚQ“öt¦Ô‡n-ÿ{@w¶„æ( Ÿlõò—„µó"Òziøw~LøaDk«ááÒ9 =(¹f5®I‚“‚â€Ä,¡[S曩Z&3MûÒ XBü2òA£ˆûDä¨iç"‚hä#á l³hØ}&šÇù(hûkS:ÝàÕ©·ÒiV¹7ó-uT›9׸Kp3hݱ¬ÁÍŠhzhÇë°Eø-rÅaª©IžÅ¸ùªªÕ¸ùªÜjÜ|m>­Ã 4k—°V´¸TlË©bóNˆ–wÉÆ·¥LˆV³ö Ñj•˜­œì¶cB´Žêžä\÷Dhy_Öømz&B˰êáó'BË¾Ž´Š¬#â3jvlî…ž^ýk‰Óa ðjá §“ÖIéXMK¶ò­AP¶øi¥uj—2ÏV؃ìŸDãºmÛée…7Pª‘ï’+Te{Ý¡*¤•Ï{ ÊKIûÐ*%mO”æÙ'wH>ÝóAÖ=FaòîÆy5|0µ[…_Œ4•ÓηŠBÙfa²ok¶=ÛšÁïÎ^•sê“ïûK˜”—x}¦ª¦o_Ê6Klj]:Ns¨š0ï40Äl¸w÷ÿZ[üÿæéé©ÿ¿}ý¿VQˆh*þ_büÿµDþßÀ˜ÿo±˜ÿ9½±bÿÀCøo‘§KùQ */’÷aÈJPù-rñFÁÎ ÷ÆØ1¶¡­1ö #`_%Ü›ÓÙtŸ¸BX‚b˳]õH Š-Õc ÃcÇðØU;5l.sÏZXqxì_5.¶îÍcbë´·ÄcÛ±èõµ#>õ/‹:Ô§ÂT:†”fÕ:CJ‡úDXbCoNdè_/Ösî`ÎîVy€ÚÃ6çi'¢b€fW€æü˜‹ÉÄÄZ.'=ÛU¹†8Éomq’ÿ1¿[ÿqxtÒÒøÃȬ¤ùë^##?(óAp†>ØS®•÷`õ®–ì¸î d¼ÏGÓ{ôjÍß•3¿ôìùàÇîO‹v ðÀÔXÌf+’GörM÷IRô¸A¾™²o a'¾ÃÏ̉dDn€”mä¬Ñ™=¿É¸ Cqò(U"‹õ 2˜\‡ÂhÍ?z>`%j£2?ƒ‡bÓœÛEÓd¦g päf–ôû emJ«£…¹ óú-ÄçÄ6ü’ µnC©fWuJ5»ª×à©…ºò Õ4U^ì,!Y‡ï â÷WTéã=} ?3Oþ”<ˆÜC\ ô–„^C¾À+{ýpn$B'±ð±Ù«(ºCü¦GÞpŸ`×nž<̾çÒù¨…è=ñdG|ûÚOnòv ï§Bh ©{h(ܪߓ~$-ž!0ÓÞ$ÃÕµ7vK‘t`¿ò¹ò»2îƒú®\õ–ëlþ‰ì¸Ö´Íšo½oÝ Väš¶UÙ§ í¦Ô“š¬‹Ï?“ä09@ïI£÷„+ßý"*A›ò¦XéŒ=ض”ªqn”I›cê“« .V“é.¦¶ød'{ýèÊÊ>|Jµ›Øn& ŠÐ¢VÍgß•íYz‡Ò½¤Â6š,[Äw®¡$]FËÆ‡°kÑË$÷Ôû}††òÏûåì 5ñó’dÛ¾§ó ªÒ§HñÉ‘Wä!…j‰êƒ6Ñm;ôú¯ß'$)ågQûÔïȼŒ$Ÿç³Gßoð‚ ½!kàgt1zä-Q£/$/&îò·A;'ô-4¥o<ÉÀ¬!ÀLÕ~rn>¿b¦ø¥¶1 ²stt2g[NIà-Õ^!à`x™!wР¨§‘wPþ‚¡|‹^*³¯§_ªzê³SLª²MÀ2ån.›dMT¡TTÞÒ&Üíl¹D";Ÿ|ùªM:Ó"QÓ¤ zæÙÔI6áÎÓäòlÐHPå̹5O¸Ál‰zâëˆnæ>޾L¦#4÷ »¹Í˜ ßÖƒmR=B´6û žÙ‹gNJ‚•†?çl‡A‡+žÊŒÕeB'Va¬–ªxq&ꪣVe/8ê•ÙÅM£0†Œa7ÆH»5a›)üË —îh€Wß7YP@—õwÛâþ¡NI3Ÿ’=Ue^Â÷á}Yô¾nˆÿG¾ºÈØ/§ÚhÝØ·×Üò°~xû·«µl§Î¾ª;ôhš3°^Ù˜vƒºÚYlÚåìõÂû2³ÚÃÓüËŠkg SWP;Ïõ6?¢ãÖÎÎתíŠeÇ-{(;ò$)n“-¼;ÄΑµ‹ÀKÂcÂäßLíá[ÔØCN˜,žï¾bKªˆÜ‹‡B¦-qÂÄ:il™QãHÑ:ÌË&þfkä© 7cÉZD•¨ÌM¤d´äÛφ@ëlÖ|TÌjŠ·žu,;м;èRꮇ÷‚\‘­G¬ =ëË*.¨|áe‚J=_6@PiK¢ ~ÉFåe ª›2-„™b‘ú¹E ©4ý˶N¡“äa21©Rd‘4[ÑÔ£¥ŠÈ™ìDÍÿÅŠP’¯Ã—én®Ð2öØ2påè2ÝÐqïŽ{×?î]׸ËOG>zÚ2oaš/“*bÇäf]éÆç8šÄ›Ê)90(w¯dï^^që7“¼õ‚Ä-AD ¾?-©æÇÛ  IZntø÷¯“»¯rE#4;}ƒ©Æp¥ÆY\vGÍ5¨x>z çŸ½’ WÃȇø¶ýÁ“^íÿk|;Fkp¹¯sp¹³ùh9ˆõ dèÍóçÏèè·×o“?Góïã‡+½‹6´£ª:_f¨=_ɨ¥OÉÅ’/²:Éë;­R÷…©õ¾çi?\¿û«£tÊÇ««·×†Ën.ú,0•ø†@˜7T”(>tÂÛÓF—ÔfML̾6¦!ÆÝ˜°ü̦* ‹T±Ðnjõ×¾¼þçN8XLNÇí6Õ˜‘ÊÁì±;–Æ»Éæ#õp)ú kË ‘³º¹"geçõBÎk¶L"‘ ^kÅÖä$' èð—N²Ý6þï}ÿ®¯À‡ÀÖKƒº"`Ñï½a«z,R\ë±{H:óG†jâ ÄÔh§ruЪ9BqÉ’ÖÐÒd1ÒèÕ;æá>õô扯7eÔ¥ëJŒëá]è“>¾â™òƒÒkôÉ8Ò_2@¤Ÿž¹Ò\ªˆHŸ¿ËI8½@ e(ÁÌuvT%ºç ZàM 8r†JÕ ²®¢Dôb‚޲–€öð¹pbŸN§EòÆ:©º a»L›é¾Ml*ÖWDXϵVa}…U.y„ÕNúHB?{j±‡ËŠ$ܪ‹e±¥=qn sùÈ„¯ädøt $çì~þÌNQÈRÐ…†5ãˆ-56žÜ½|²"OOPáéW˜Ímô"i„<­y–ƒÒDó¾5t+¦:Õ¬Ïâlp? ±6œŽ%Ĩ©ÛŠt¬¿[B;Ø>D®Ž=.ß±v'’¦Ùý£yZ"†'~Ó‰h®ÂùÏõÅÿDßêüçIä?WQÈTQøOÿs-Ñ?7-öçÛm‹ýž'hmá=…P[*W.´§Ÿ.ì¨Õ˜J(aU ض@Ÿ[DáÄÎ £¤J\À«'ŠfÈœ²¢@Œ{‘a WZgü»ÜÁ ]áâl=Q «ï g(`gWÄ0s%óC:ÕeE«-М;W 9g 9G|P€3, ༀ¬nÁqì¤jbL»Ó.Æ´«!¦³sq>/*EœlH;ö°^Æ”TÍ™NCCü‘éX÷”;bdºmLW4“Ôcöa€ù+«‹Áêb°ºªƒÕ ”@¥É±ët*i3cÒe!çìFa(æHEÂÒÔeî<˜“v8¢Æ`C¥ÆtCCÆYD)¢ÅU§MQ&rØ¶Š”ÉZã´™èÚ.)›g®\ÅðkÂýyfMC• ±fóú#«•Wv/;ªÚÛUí…ÆÿÌëÃ<üOó¸Ù ÞQŒ;°-Fɨ%Â=îÙ*¸GüõÂ= {uX@ä¬ÊsVR`Œü÷dD«a¹ïøã˜_ ú²KÐ=ùÇÅYk\ª'М¨HŽ]:ññR-b/á毽ûb‘´’pJ$Jª!JVF„¨/0ÁHß`% ›H€xIýdF8Rç@o¡+À9¸)oïb{¨™ßPà б7pùÁ’.˜ÏÓÉR¡ pW_˜nÜmHã„zMGdd³Œ¬3 ÌbfÁ$T Ò ÔFèo¯o„¥fU4’Md´<Ó{; è 33i±[e®O$”¢«’<¤J mø:‰¶á­/ÜþÛZcü‡ÃcÕþÛŠñVSÈìUì¿-£˜}Èo–B?¨›(›õáºå¶·|öàŸÄ|7›þÏ—5ï O}vâÌDì ‘E€€z¢8Ú‰·ÈN¼Ú ÑN,÷êíÄ/Àý:t(6ݽ:šì£É>šì£É>šì£ÉþEšìc‡h Æ`Èìdôç™=Jý[+5ú{Žp 7x j†ÿ,~ÎílÉÒ(Ñ’OÚ‚G` 6`‰E²þ³!3c ´±.j‰ +\Ô'ÂxQÝ,#ûÿý"`ƒºQS™Ã«xPÌ”D4‡âgùÃuæGæSÈ| ¹«mÍà¼.ÙX—V†Q£í‰ dÊ¢¹7d¿¶6¸a+T‹(—™aI¡æ–𢔆=ví„J*sÃgF ÞÚû«7† ”zÅøFãáªY)âÔ’¨[Ü« |²ª{%ú’öVL‹¾Flá²l…ê^‘~Â}â$hìñðõêàk‚B9@ɹîl2—£P*ÄL(¸ÓŠàN,¤düÏ}m›ÿi7OôøG‡1þÃJ Q*ÿÓ'/ó®;ƒ÷é íK‰`ºèß.ÉÓC¿öʲ@Z¸Cv˜>¾2\]ÐÀ ‘–VE u!«/üÒƒ4½i>j¨/`C°«¢™º=t/ìâp-ç85òC]ô þœdÕ£Ñln®c÷Oœ*U«}ÞQë ’š—FLLCÍ»äsg‘Âåƒ$XV=؈B?º¤Brô=9àn¼`/Äzt7"‹Ï»'d“vèbŒîê>¶2ʉ™µØá™i‹£NøÚt¿ ¬¨nc'1 2 ÖEÔgÚ#BOQOvCiÒ[÷d·ŽVÖ›«‚@œ¬0PlbÒ6Ð震J#õ¢ÞÞ™Bï¦7/{!½B‹E#ä¨!ËÈikw´ûNo7V)Õ´›h¡Òí.ËÀAp½|“-èù)¸~P˨ºÕe)Å5Ê 3KÏ·Š"‚év7{x~œ.2Äõ(ÓÈiÂzY|]©"],M€+ÍÑ´ WT,öÊÅ ž:xÂdóJÝ#¹OéB{?RÓÜÓM6óˆCw!µKá V¢ï“ÅXn©Ä2ÖD4…~èJ,U¤1p·æCgF‚n,k’¼ t_Èj7ËF¢®?éKƯP€%#X’ÛÆ0 j7M#î"1.iÖËÙÑREÆ3ïCé˜n^‰FªãþVèÛm’è®C¢»¥%Z­Ý&ÑÝP‰îJt×/ÑÝÕIt7—Dw+—h–ªJ{ÇŠ­/=i«‚Ð#_—'Û¬êù [;e+‹g1ζW„³åOÚ»_AÔ¶gB:K±¶¤Ê•À¶Ê ¸­w€àTÃùÛ¢díœp_A´QÔ­»-ÆÝb ç{~=ß+¥çqS°¤ám Ôq«'pÛ~÷Õþ¿Æ·óg4”@à¾ÎAàÎÐKþlν9Î`2½yþüýöúmòçhþ}üð`åtÑx£ù‚ªê<|™¡ö|}\$ –>%Kž&Tgv}§Ñ;¼œ}‚±ý„îo0û¶ÿº ‚òÒ#6(ô6B±¿wȃ^³~Oø†ÇÛOIgŠ^f1܃Yv=^ŒGó»¯ÉÙô®.øå1³¬¢ŠÐãóô"\¿û«£tÊÇ««·×†Ë:˜êì‘ÆšZ$Ö«6¡ý5"æ€ Ù¤GOŒº™w\λÊFXöuŸ}-š=q§¡/ ÑE1ŒŸÈ¡#¾Ì/‹§‹÷‰+'gÖ{ÃÁ=ÇÅ4úÙ K·ÕÃûÎÃÔÃeîzÞð,;·zîkýÜ^oÝl™„ /pÝ_EÒ<5kúT4.øè°lzHÓwi²G5þï{nÈ ¤¸2ÕTæ=)Ü„°p޼dN¾–“á«–cðð0žÃ’ò #ÀÉÙ\©Ë¼ † yãqž³Ï)’ŸMì1¼ׄǠ—1&Es¢2Òåi'ŽGaš“ÒFÚ™”i'Fäêsó“O6ÑðI¯ Ž´úK¡ BÖl Ía³6Zzz:2jWR QÚ>Ð/‡lÓ:_ÒR¯sseÞL›ê½–ÔBbbª€6’šrÌ,ד`9G6Xަ½ºÀ÷ß·\/»@â]hdgWþÔÙ×PŒx'©Ä¦ ØiãÙñž&dÁò.>Â==ýxÁ©Gõ!ÓVºÙY8u™a­Å—sK i‘a„ÃÂJÖþ½nö‡•Xå¢Ò´?4ÛØá¦ίSšGEÄæQýJ%·)•|d8©iƒ”Êé‹V*'¡£ ¥.¥r²JÅžm´Y:Ñg*¯’§¤VÓ¥Ñð˛‰®#«´'¥$½Tóµo‰—c?O¸x‘ží ÞA?­ÉŶ( »ôü;¿™ï± Þ\íîïÖ ÞÙ»€g‡lÏBQ[x¤ŠCÏjmÒôv¸nXÙíØt>þÒ}¯¥†9£d·(ˆ¯Ðø²C¡/ÆRÑê:gãœ˾lZÕg«Yà™¬åÜ¥Ú¾¬Ê4XËû"^®n ÖjE FJÔ`¼D V^ƒµí,u°^ýnxÜÿ«>÷/_üçãfûDõÿj·¢ÿ×J ‘>ÅÿËíþUÈñKIœ:|¼ê÷ï*àÖæÕåwêÊ鼕ÇIKL0¼Ð=³ô *’]³¤Cïù·/ܲð #†¾ E¯¬è••l£W–}z†úGÙ'môT*â©„ÿÂòÊUìcB”ø)1ζnO%ð8©ÊA©‚=•¢§RôTÊá×}9¢/GP=Ñ—#úrD_ŽèË}9^¶/Z©oªré°íh]Û³Ã×å葚Ý62o|ÀïÔq#úmD¿ é\ƒßF˜ïÅ¡i sú^ôWì~{}/œ™v£×…Úø­ôºðqô·+þ¤HBm¿:kM…ŽÞäßÑ…B©iƒhç Š v&Ìôˆ)éûJ\p~x‚*ÿ£! =¹Ê»$„ÌÎÍtF(²¬Ú{a#œV:=C¦Ä ”)^Ì£`=p§è’Ür>ÜËÔ¾CoÒq¯ŠÊ§HªN´–eêƒ5®O§mƒîF ¡[SMÕÎj¹vuÔp«ãZ„s n7+Wçs}@úëÚÒó!ŠR¨uy¨îlIçÔr¾H N»²Á±³¥jÙÂÁQ t]Ð:¤©¾­JSµò=Ò@ÙfMul'š=9v Íý˜XdË å¿Ÿ¿­ÿ>lëù?Úívä¿WQÈ\•øï«ËKÊ€qßWéM ‹û=„߇…³~˜Ðo\9Ôj@¿ËBßWÝôþ6r ߨä;ƒÈö¿ï–³y¶ÇõàOñ-à{ø)Û ·-äÖHcaʨ…„\èìO„å#¤6eºU$MÏOO’žïitw~ƒ[¨ ƦÐ>6£‡årE]ä'Ydp•$Úß‘{Pp <ôW€D䃱?(©f¥–tTÊÑRÄv®ìJ¦Ä®\.a‹¬qPKèþšiØ+Ú!4,»-©æúßtý¶ÉN²ó[ËÉøa‚Ì@øe¸j“FHjОmö¨:@d± >§”´ B~CZcFx*¤-á–L AjãAMÀ;á8tÓXcÁïmô;k09¬¥Ô‚ýFÐIø›d>†a\N¾¡=ðjÁlÚ‰…Þ‰NÜl;±•jµÐNlãoÂ:±zVŽ´ÂÊ…ÍÀòµkfì›e‚ƒ*ÌÀ}è‰ÝÑí¢"`6Ú…(¥È M_®#ø‚7:…)“œòbœü»OÜ Å‹“Õo#,Þø!§»TÍÍ9ߤð¡à u¨ö€Ô„"Ç)K_»Ð¢ í#(ù š(\¨}˜I kÿ°6Q¥aNQúyq¶C33ËPX©~:µa ¨ ‹Úð€œ_LÔòÑ¢-•%Pô¶A1Fþ€Ÿ›%ˆ™@;€ÈRX0.1NfO[­ýw¨âÛñÀÓ“à©)}IzÐéè°wŸ?Oî¸ŒŽ‘Z½ž ®œBGO1ôùÝ÷d$]Q÷é Ù«•5àtÒh*£ç =ÍZXQ,î3ôæ9LÏÓó›ô|˜öÓ>úÿMÚºÐÕídaaG´ ª“˜uùñŸŒÈ4™¡<¦‘ÔˆJ–[ÞzƉጡó —º0â[«@Â1„d|VØç'ê"¿O³ èNp"¸¡–Cùª¸‹ÿ0 JÿFAí;´ 5ûÍ]!ݵ¡_ш˜/0t\`¨^`hî[#y…fú-·hµÅÏʺ'½VЊð#ïÝÝx±PÞÈ» DxBÄèT4•¿|•ÞÐÿ…=:>ck1Þ'"{CrO»° Qt›¥RNߨÌÃÆ™ƒ Ͷ¯‡Mð;È›† — +}5£|žkÜÀpÇmÉÒÓÛ‡ÙDmX«X¿m#½mEÁWƒÝˆ^Bg¤%•Øï “="ùêbã!R_dôúÏ_²Õ=Q“²êùÚÑä®Ù³N{²ëó¦a´ÏyŽA'ôMfÎŒøu³t&á¢iîv®}ÛÈ[‚ŽáSvÐMœÙNÄ-…0øÞngÔÛwNÚwžµÄ×BWìïï7wä P¦¸N}ÒMè8L›zL™úü9‡Õ©£~jT>ªYõ›Ã~flþÆØ(Ú°ÓC*0)é $¶0XLŸ•H†ñFùÝ °61Ý¿1IåØ-ýfÎéÍœKˆƒsG;±Dœ‹mTŠ"ˆ¥I2›2÷.+Sf@6׫ÍÜ“ÝÈ”ð5)¸Œ3wc%ëQ‚¯ *ÁP]‡žtÏ÷š*“^‹Æk:AÄJTžo¥ãŒÌX›ž<·èIÄ3Á"Êr€”¥ÍW¡ 3”ºÔ®Š¼çP–«Ó‰‚Àzè½´¼eGÚ¨laüϼ>üÇÃÿ4Ûè]CášÇÇ‘ÿYE!³Gæ®eü‡²?«ñÙkÈûÔˆú„S>×pœ„ù(!›Ò§“‘>?Ðÿ° ^ÇÀùª#FeƇá;ŠۀɗPKÄ{"ÞóRðžÐ]Õà=.{upÁšH«ˆZ¡VR|/Ò9R-¨£l8‚½‡¤‚c¬E¶+ e» 𫇂G­ŽÀkθk®•äL"R ²2¸C}µàTF:(ÏaŽ—sË;DÙ „£è}oh·s ™XŒ,†bÀ“ÿ \E~L£Ñ9Ÿ§“¥‚ à.»0ݸÀúõšÎÈdÇFñ´Åj_‘ÃøÅ={‹¯^‚ð ¢iF/|Q¹ 0 dÉ$¤¦  p²Óa²Ó–GZÁ;Ìpeüs/³‡Ëy•_œÙ?<ñÃ,—$Æ:nB6ßáàæq;rFÏqVnªÊæÍ¬ùr;¢›m/¾ˆhThnJIÍUlìgÚ¸v¸mŠAzn¼â£ÛYòÇo •¡›õ ‘×®¢HYž„SFS2Su²é¸Uçd`jUuÄ.( „™Æ¯(-–ezoÁÁ…J+ËÊ¢;¥˜zÃ&QÖÀŠ >S³š –4Ú›é½æ3,ó:}ÆeÖv»Jõ5TJ”CµI–‡– ´ _'Ñ&œ«pûok}ñ 6Žbÿmµcþ¿•2SûoËh&qrÚ¥ÐêVÍF}¸n¹ÍÁ-Ÿ9ø'1+¹ÝzÍÄ™…Ø"š‰I‰fâ—e&^mˆh&–{ufâàÃ:›î£-öÑb-öÑb-öÑbÃ1D ~}üàp f^H‡ì—ݼ^‚‚œµg>—ݯY4÷†ì×Ö¶!h…jtäB:,)¥ÃÜbZÒ°‡ PÂA¥yèç`ã¦7 ”Õ ÿ ýÃ5‹åa ÖÆ’Tce+– tà“Ç|ŠÊj–bkÙË\BP–­XVJÊg¨®Ä}âhìAðõêÅk‚â7@ɵ.n–“c©ÛiEng-…ð?óÙò˺øŸÃæñ‰Æÿ´Û'‘ÿYE!3Nä®ß}ø£Ñ뤽nÚKßa}ÈÉïå/³€½@ܘäì>âÍØQòiö|‹=ïfOãÉ“oã)X–xǦ®íó°ÍmrÒn{ðîú2}ßë\˜vžwŽ{o:Ý÷)ÉJwÓ7ïÿŸëY•ôô(‚F#¹ƒ·)?i;o=ØE†/²Þ'$zó'¼×NŽî ïz]ñE!; î ¾f×Dký½+T}€ŽÂGïâ†7x3£©Mñ—ôâ;;»»-ú\ò¿hì„®õá‚AíêüÆ›&ß?ÿø7hœÜÒ3ºåÜ!äá iýSw™7n]#úø™õéÿ“㦦ÿ£þ_I¡Â.è˜NAúw'ý›€ŸE–€¿-tÍJtþ#®*ø60†W JêÜþD¿ß!åºMóæ%@åÀ€ü‰Û¿5›¿¾b7ó8ûÄÎ'ôùë6˜¸3Òdz÷#9x u«Ýlý'¤ÄŒÐhî õîõ2±@$ ÔAõ‘ V¹ÆeöÙ~0¬4ì‚JÞuTIù™\‹„}¦»Ù§1†›2ÔiüßgÔtßMq_ ½šbÿ}C#Vwvÿ–ã5‚>~à Ûêö–á²`o3_ß?ºÆ@±weMbDóM¡¶­cá úÿûèimú¿YJµçÿVÔÿ«(DÀ$ýÿWç ô?¥þÿΑîÑö—Ôøèú9õþ_TMÑÑœ‹dù}ÆøùÚTþ¦+qµkÍ3½±ëw—B§»ûj†‚LÓrE (ƒˆ8ªÖ Pe=ʲEky¹†jß°L²o¦kQàM}ž’Æ ­EŸjŸñC@ÝÔ¥ãLa*ÎÜ!‹å€ |xc°GÙ y‡ŸÓôà¡tðP>8 /oôμa½9Ô»shèÏĹïjÛi]ÿò÷˺þÿ||\›ÿ_û°uª­ÿÇqý_I!3LZÿ‡——÷goÞ¦˜:ºÌÒ@§o:iýÛ%‰ {è×^¥y áP=ª.L¿Í¼y³J?Þ§Í9Åy3éÉ¡³K¸ou+ÍšHüuÔV*”jäº2³¾ ñ¦kàÅ/¹/Ñï÷#Õ#ø‘rX&-ŠÅ¡I úàûd1–›)9pQÇ;­ž”ê¼$<&Lþe5™g¸EÍWR›)ø,ß}ÅnHREä^,Îh?M¦_XKTm!U$úŽ9ZfÔ8RE´ó²I¾O—H]hºÂØ"ªDå¼´)-ùö³!Ð:›u³šâ­g] Ëôﺔºëá½ Wdë«BÏ:Á²Š„ *_x™ Ò ¨´%QP¿d£ò²Õ¦ø‘&‡¯½‹"'/2ŸqžÐÌ݇…@Xd7QñÉdbŒ&p=L‹çÛäi>û2=ÒT즕$û³C;´åußìû+_SÔ£¥ŠÈ™ìÄ©êùmÍBO¾_(»†ÊuÏ~YmNM“¯›¸½”©uCǽ8î]ÿ¸w]ã.<ùlèiSÈLº…‰¶L ÎúÂze7”õÙ”œa|’ÂïI¨­DNÉÊóu‚º÷°è¢.pO\’¡•Ø]2ì.zyÅ­WHÜLòÖ ·]5ønü´¤º¿ßƒj"NÖèðï_'w_åŠFhvû7R"Ù)÷‹ÙÝu47(Y>z çŸ½’ WÃÈçªÞö»ª¿Úÿ×øvþ<šÿWõ×9\ÕgóÑr– ëÈЛçÏŸÑÑo¯ß&ŽæßÇV‡öçÇ1Z QU‡/3Ôž¯‹äÔÒ§äbÉ—9ݹÝwZ-F­muô¾ì˜ÏWä(žöÓÁõ»¿:JG|¼ºz{m¸l@€wÖƒBô!A%ÿãù#0aCÊ ßÌ{ó6FGv|&αxSØèÕNjû=áhžLÛ³¯/pª Ñ—ŠnI?}ÑQ_h7õÒ¾¼þçN¸¯>9·ÛTcæüìÎéôþo«‡»ƒ©‡£çH8M’F“H²µe§ú¹ÝìÜKëy¯õóz!ç5[&‘ÈuÛj‰:p)Ec£°ÿNC G@Å¥»GsÚ Ã_õÈ&×ø¿,JKv}%…»!º»ˆ5˜¯Ï…\tÀ¾4|{»q–âºLç8ò¡Vî?L\kݱKþ‚CÛövæpÓ„â’%c0ƒÝ©y~ZL#º«'Õ;æá>õô扯7e¯¸.ïMË¡Ž´ÃôŠÇı¬™žy<ü{>Gú Oá‹þ´¦…ÛÁòøvñùÂyù$¡Í.¹ñTY›Ñ³ƒ?0‡cšT± ÝB×ËúÈZZÂåþÄ>uN Lqwúó,ÕøeÚL÷m"R¹`¾"‚y†mÓßgm‚ù* f>Á´'~÷%j÷»Þ[¬Ë²i¶êXYD;s]DƒÇæR\úH¯óI˜³Ü2Â4+}þU—ÖVXCLžµÐŒ#¶xØÂøDVÔé›u‡Câõ¡5¦•·ºÃÍ„?ɺ_®i¦iºŸiXNH‡ÚcëP[w„w¨mH\z\¾CíjŽZФ  ÒÇaî×ø]%º_ÿ’…ñŸóÖ}m¨‡ÿ¨mjÚ¤ŠŒgÞ×IµÝß }»MÝuHt·´D«µÛ$zû@½\ÝÍ%ÑÝÊ%:/þ‡O0® ˜ý[­—Ø“™ f©g®!Òžžç¶½XXHf>y¾Ìèe©ëÃyO‡¹dê/ï}‘*u:0¼žàìBÊ©Î)®r¦²?GaѲvHÎ ¸¯ rÖ£ Ð63Áôyd:#Ó¹1LçÅËb:C(I#‘½]ôd'99îd&9ûìë0’“Ó,RZàLý>qåäàŒG0ü!·é15n³¿&nÓ}®›ÝÔÊn^·ú+È¥Aš ÃÙ'G¯Þ´Ùó0"N¼““娱ƒƃyâc̨§ú•P섉û¤Ç´s5ܪ<*¦n(Ïp93nÐcX g m¸<Œ£ƒèo×:\Ît ô˜Ó\ W†ËÍÿUÁáªåÕVOËk4:æ{ýq'ÄÆ3à2§Jx;ãBÖ0´€:õ´ (¾ÂS^DCÚçB‹z»Àíè[ÚWŸ.´$]ùS/¢©’­p¶çð–Ä^9—@BW¯BÑ) 9/xõùÉVºÙYð òˆürnØ•#‘¸p Ù›]&Ïdô.¿ÆnÕ?›ò-%ÊlÊ™VÈ5›N_Ôl: éU(uͦ“’³éÔ>›òdœñQÔ6h&ïÒ×jzÜZÞUƒ …Ã# Ìi ùÚ'ÊâåXæ¢Nã"=ÛAÂxawZÛ9 àó:ì¼f¾Jq‡ŒËoÖè/ ]%dBäphZ½Õ,°l´|¾j­¶O5T&ˆ-ïŠx¹ª±ÕŠ‚˜GíÜ~+OÊÈ@ÈüºÕù¦ÎׇûøïV³}¬Çÿü÷J ™ ÿíÆ¿ë¿ë‡¾ °Þa¨·ŸôΉv×ÎrKGÞsІZʼný#Üpü(#t²Š"Âîdnû¼ ±í³5âÔEpê,µ‚¦?VVS3<¨nœÈØHQ“²ÉÌi¤¨Š:2§‘9ÌidN³™ÓÈœFæ4sªlµDØ4¦¿lŒš2'0Ú¯'ØgF³c"0jhdF#0º`TÛ#ÍZ1Ñ-ÄDU®-`[Þ Û%TÚ?"§‰9Í5‹s ¾Rçm%mgW…GVˆ>Rp,ãÍÖ 0Ú:Ë*N~ 1U»áüa…l¡}¤×D®k¤W øõcÙm+„ÿ[Þ>~[ÿ×><9iiüßÑaäÿVQÈdù¿ÝË‹üß›³ÎÄ„ÞMz6èÝ¡|¿¾OgûpõÕ~7p¸îÖ ÷ƒÔþ·ñÝr67‘}?àQ©³ Yc1{Æ>@OMúg¢ÏD†ïEï¦Éøa ÷•Ð Q2}KòîMÁ<‡¾œÎ¦ûø¨ˆ˜ùЧš}í*a)m±]³‘ÜClõd'ù4}ÓÏ¢2NÚâð±™1Ž!z“Aî‰5Ûm"d¹[óf—ïHWÑ* DçH-¶VÕ¿‘cWƒ¾1Á ݹvÒ#§Ü‰§ü©Ÿbë-P¡²†Õe Ï%=˜&6ëºSªpÝF©Z,ž¡óÉ`@ýB†Ža‰]ßax½²Ó~½²ˆaa¨€Nƒ2|\ÀÐÍô•ær°OªfñŒ¦Ì>×xîÛ1_Sà@B¯yzE .Ð_|þ™$‡ÉÁÃø éׇú¹%[g‹ü _HdÄËœ^¹ãÏl.Wë–X í7ô×Ýlüùóän+Ušå&ð(º¾Tù”.}bëÙÀ(õ£¶Ígߥ*²S¼£T`LdáJà1r ×PRb£ÇŽ Öá-z™ä>Å‹üb†ô ù€*\ΞP?/ xO»çA¦h”žÕIˆ…vbm¢?£ºè· ô3ú¢à–3RýΠqº”Òm„d`Ö…—`tÇ£²Ÿœ›Á»ð)IÛÕ¹ÁLäèé§h9•NÕ½—œÁÁð¾Mî¦A?PO#{$ü¥Yù¶u(|8×%Så\S_6h®¡»Rô¦eŽÝgX6«š¨B©¨¼¥Í°ÛÙr‰w>ùòU›e& ¼ŽYæ&þ6i’…M°ó4¹<4’AŠ7õõ™ÂËj&Ø`¶Dºôëˆ&M×ä@°èëÖB™=ŠLÏçãÅÓlŠy‰ÓÎgò¬ÖÀ^UÐÜF²" #—›4¹}^âcô'¿Ÿa þêr8‡!‘„ˆä@¤‰7/œa7uC¾v=Ådí¶\ü¯H)îÃewG·‹Þr@’æxÚI))v7Ç£ /Uø‚7º•Œò¾þã hoT–)EeÒ¦ô=Ž×A:·:`„ñqòóAúh® ºTÍÍ9ß&(74’áÏíùÀÕ– ®•)luðÉÃvwè4=ñðl5‡7A.1?g``[­ýw¨bôP ìIÖJ·Ž¾$=èttØ;X¹s‹N´Z½ž ®œBGO3´R¾G÷=I×g›1•¯ÌfAæ’]¡,…zv“ž§ç7iÿêâãûfÚ¿I/èŒG¼Cúþ<¼û88ûà‚p·Œê}·õGŠžSS´ŽÃYušT#G?þ“Q¥F¨4”)5"¥zÅAj¦MõC{öFh¬©p6Þ76ßùÊDöV”¹ÞͰ«‡S†·× §WAISúÓ µ(¶Š÷¾ëÀVµÊ-…ä+2‘9‰ ÿf8ÿžcF¶—èM•:¾À«ËÓl‚V<´Lß@cäu>º“,´ìp¿FüX¾èÑ•>3Ð…w9›%‹GôàƒÑOãÅݘ<>ÌfO C‡‡çÂÔÉýúÝì7IÝÆ±E#Ô´œlî|#؇´ úÝ,zìÀIêCn–TZÃèîn¼X %u1þï3¼\ {¥ï¢`ùxBϦè|¤ó¾|Å›UÂýú™AJˆ»Ë‚Ìò*¸V2ÒÉ2À^ô•/Åi¡w+!81ÔtÓ8ÏÍ Á9Ž£O woPö3œ™Ðéçûýk6a±Ü4Îvp;ΰèbÑÅH9(xÞâ ¸ƒï’Þ,äÀ%+³7(SŸƒä÷oÌêŬé€ÞÑמY›ÅJžAoô:ê7ÆawÜ~ôÏ^‘(‡’_Fh›ÐÏ\Rb(xìÏÅFZ®~~ðLJƒþQ“}ñ„jAø -C)øAÚL÷mCX£¢ 7JpÂ6Í =ßÃâ)¶­ÍeÅ£f p'”Rj&HvJñÿ™Ðh+³XœŠèUø˜¯KÈÅi ¹(­‰öùœ58K@)©‰Ê*¡}ŸBÒƒ&ôoEE”T…‹‡™Íìð„.Q¬ìr+W÷´ÕlL ¿^ ZGÉÀÃ{„wR‰2"P¡k½/êg‚WèTX²½³DcPñôØm ghc(>þÛ ‹Úî–ì24„›öî‡ÕÜ6¿0¹{~û&G—ÛwM]º’Ð]&Õ_dõ«Dó(׌°*}]»Š{UظYÞ8UO+窉[­®=ªO+›2 ÛõMÂUì•Á7eo„9k*Ú‚¬:=­â!¼mܯža+[íÓ/`æ1‡.ü¬—=ü•ZÍLŽ^PjžH!s褂۵®b%¸LEYÅìn^RvSÀ(T¦½k“ûÝ»6m¼xUñ¼Ö°¼ïš¯6v½®i褂Î-C¼:çu 8UaMNUÌÿg±>ÿŸæaó$úÿ¬©¹’ýÞÿRþ?ïÿ$‹Ù÷±Ú{±?bÚø¿ÏŠçOg÷R ·ÜɇîÉ(ýI?Ý~n1ôBa1%Zàï,®?P÷þ)æúU¨Þ?ƒY²Ìì‹ ©c²ü‰=)Æ£ù¾øj×dz÷ðüiü‰@bÄ¢ÊàžäýóÝW\Û‚b™ÇÊ-A¯U†-–r<»èˆ´±ŽH|PhO—²^Ht…:!es,Ô)›‚Ñ)º E¤è‚]¢ RtAŠ.HÑI¸éÍœdÑ)º E$ Ö%û_ñ¬›|â~5·—$©®0Ñ Ý3Öe¿œCRô"Š^DÑ‹(zE/¢â^DàEôë8¡W˜:üˆØu2ýÖ@×ÞÙo¢j9ÿ`¯ 1ÿ[pæN¹#åÎDWýª<’*ò)ª‚å A9Ã8ÍÜnúYùÜrää62§B‚$øDÉQtß‚EÝA`}NGº6†øŒØ•PUú§›èQ>ÙÄjÜBüˆìÆ×Õ¤RÊh“ÊÉiQ‰(­E²>/æ¡”Ó×±f!òÙ[v$Ç!öùŸë~¾j:S@Y½óPæþ“ÓWW÷«òýɯÁœë·‡|~JÝkÅ?®{÷§X™ÛP?P)àzµ~>‚§Ne3 ò[ÌM'»×šæK1?~ÿ|)ÐCÕ¸ó×3»r£Õ¶fZýþ×éT¿k…“µ°¯¿{Å*èߓ݀i–›|'ÕÜiÅ®=®;r¸X™oP»"Ì…¨¬‡ëÊ„?Ÿ*§HgÊb®>ÙíV?¡^×7¡ ôOõÈ•L¿ÜÞª¶:ÃG¬Ô·è}½¾E±l~¡þ_OëËÿÔ:>B2¯úGÿ¯•2÷%ÿ¯+cþ§ÎUaׯZ¾®y=¾®^`Æ'æñÅIÙ ºw÷è7¸Íèb%ײy.V1×St´’ËËq´ê\Ñv…¸ YÛF2ÝÀ–8ÄìüÖò»Ùüˆ(n}…oI®í^B¬c¨VÁ—Ôàjœù%,f Gkn=½ ’2ì‚>’k€ãÐýw`ô{;;‡žÂ¾Eµð_ ò 㻜|£¶ nÅ\Aº˦Ô×ß]-| ë®vªy³u—öëš#µúrc *ó·—ai4bÀWÀ§}ô¶ýôkÀïz×±©Ð»—Gç{aý*fµxù<úUѬWqôRI-úÂý‹'ot2 ht¿ï8 £Æ›…sW\5¼D__äËjHpšÐß;GRm9Ùiê“^BÍÃ6Ê_3¡¾IO¤¤38´üâ`ˆ% +JiQJ.‚ÈExªCYpÅÁ.úœÅ~S‡bR\„¨ʼ ʤµÖ@TÁÕû$m°W,m"¼4Ÿïqy2¼ëTÔX¸ó’t_nO•𫿥ä)ˆc0 ÝVe¾¨JCV”ü‚÷§k²”… r‘'çENh/Ás€³îŽ"iÔµäÃÀ}‘+FîÞ.µ“»WêO“al—Cx"©„ˆ÷-#¦Ë8#ªk½3õl6“Å%ðñD_Å2ópç¬'»EДj¯£w´™HziCÒZ˜Š2+~5(îªUA6 þÒ³æ¥NN‡áºŠp_Å:r¯ëI•4+OŠwEÁUŽvIíi4Œ-à"˜=½nzºÍXÛ^ Ó—lõ <¾Â¼ñgžÝVœ ÛZòdM¡×+ï˪¶!Y2LÅ4ñVI¼_ÕœMcû ã¿×—ÿ£u||¤çÿ8mFþ{…Ì™ÿ6æÿxAü÷ËÊø†~ÇD‘B—{/&úˆü¹«Dþ<+‘?üyäÏ“—ÈŸÇê1†zDÈ#BÎÏyDȯbHóˆWŽWѼ*n©– æÖ0Á>ÛR$ÔCš«±Ìsb¡û™5,ÄT6ι©~‰¨„-€qBXœq‡íƒÃeÃ}Z ¤ôæVDŸ˜ƒ3‘ZIhrCQäiS˜’ê#š¯F Ùzc¹ø’R:h¯ šèßR]^.,úÖjžÓànµ³’Xæ†b¡-Žy^ « Ö¹Ó3¦PŒó0ÿ=% f®Žøç^?­àðçEº¡þV_htÞ+„›5ކ件ݱÓó‡EÏëëh™:›½‚ TÀýÓ36*zéÉT1=W^‰3T5‘Ñ+\àšy]DK-rûe8ïìæ,sÔéÒ6½`O”sfª/¤:׹ýÊXñí ¿ž?¼zQÚ²ëc­ÑÕ+˜{¯«êšâëä*¬—žŒûN­‰2ߢ¸ê”ÿž?>®‹ÿn7Û§Mÿ>:Žü÷* ‘Q‰ÿ¾¾¼l¼?{ó6Í ð¡À/¿¸ú³“vÒ‹7´‹þíñà*µ •Я…¢êà"ô…Çm¢Í)KC6ítw'í6à’9àqÔ9Îàá;3ïÂþÓèáéëhwöDl€] _vÙ×"EN¾K$¼ÀÝœÂY”=~$è8CÁÑÙäH3Kî…É“œ¶×wŠ¡#z7ì»ßáZä„`ãÍôéŸ!8Œsç’ƒu:—_öñùa9.~zëó|ö(sº@Ž?/¡©sãºøb ¸mV ËN½&§Î•Sù ‡²¶Õrò_“”ïä å; › æ>4ŠL.°Ï„&d´Ë˜4Þ‘PïΤWU na:ÙðøŽJÔËÓyšˆÕg®·ck@ë…Q–*ú…ÐúKòµ"½T¤túüxKØú9ê&øÙ=@e0½<Ós‚õEÿ¬U„¹f Ë0yœ ÿð€aâ‘­ 9Cn'Yhéâ{ü…Ék²Od—hœ2dC½Œ—Ón2£ß)»/©¯”Œ%Csï‘õ~ˆ[C?_%÷ÉNJ)î¡òrHÐrÃ*íGG£G 徜9à~»7îd[ “¡¡§˜{©"m©xÔ‹>r‘ÛDý ¡Þø4›GŽøŒCˆ¹ùänùðS_RèÅ€^Þð{\ü÷nkŽçÞñi¹ïÝÖÑùî=ÀK!ÔMÁÁ|<õÕaöWÈã°€f™<ÕÇ) ÿdŽz<óf”–¢Oã;ÔoãOREtL˜7dcñ|»“<Íg_æ£G¤ïþ²M8P%RE¸½šÏÿ{çÖÕ¶Äñ¯¢·$±~èƒÝ¦åC¤-¯8…s4Zòí«½¯V{™½É6ì<%Ø’µÚ™ÑJšÿü°(åŠkSlª«‘[¼·ÎÎØ¾nU½…éNÉÇð4Õì¼-æ +rô¶Fã÷S»ˆ¹9ºÁ"·2äÀ+•,€~@XP5kkQÙ è3S·ÏLm>C’óê6’ßCÁ3ˆ¿™C¤FrŽ:Ú­ÙÛþm~yÿxqÿé@Æ:»æöùN\ ÐÌþúøõkóí÷§ï«ý‹ûÿæ77FµH“šÄÖìjró÷]sVÔ ôCaÒ#ñ|ðOy5•M7ô%x(DR"ËMȸOzWÌÍñ¡èö($8`ùKG„3¡åþZ©îÛŸ¼¾ý‹åà:­8G7p!Ï nfV}ήúu»œg¤~½Y‹  š4²1 !o<²qwÛ©ØvfvŽÎͽAè¹oEÐ +‚ª×'§¯«Ž:ˆìhrKÙ=ô>tþý5½–öƒo_ÑöÚšXE@îâ?S>C6Ý@0çæc–ë¤R/ù--LÒ¼X³%­vG‘×èò›"¼™”7« •žµNÈÚö(Ñþh²0—·ìº*ш|âÈx.å_›nmyÔ´#£¯\ñ\o’í[É™\—p†ŸpúÖߺùŸU¿€ ð™±]3&gÉ;¸ý=12ì;Ý–t7¦šR´.Ê¿g.9Rož=‹ì ØtñíÈ?`SFT¬òÕânh¨)BpCᚺxyûÐJu¥8½Òf¢ÍO›èžR}ˆ;Ú„f©CëÐ I=‹L‚ÃqµBâëº ÐÜÜiÌÒì0«)]%¯=x%EŠ¡&Ä™ì@È\=&ñ¸G%ã1#翇N€tL¥èȼÂÉ`<œIŽ¢YG­W~M­vöNͧ¸Lªµç¥ Vz}N¬öH0UQ#[±H؉¹14Ëf#AS4,GPsçL‰Ï"ÖÐÓÍIàÕɧrU.RÍ7‡æø¤%êî`çs„÷Éc^-üEæp ©úÓ-/Âwr‘«¿ ð¾UʺO3ÃjlÊVc¦º[d>A£+N•¶‡–q/C¨š(‡ï ­7ÚÌ ¾7´_*M?I/nrŸ¾7¦ô½¡A…ÌÇ÷†šKŸì{1‚w>•jæÔöCsíK<–ÕÏ/‘\ˆ‡6'ÝËC<Dȧ:tßaÖóÚ¿ó\—udèt‚“Ìœ®m!órmÍͲc{ß<QáƒÀë¡`îµëÌ#Ç´[§Üú!-ú-''Çݧ—ª!¿­Kç¯ÄU"õýCàƒ㥵¦ºXëÊ?$ çxI* ÇlÈqÆINäƒvеæqBI8«”pjÐb™!áÔ‘-¯jàÃ’,ôún]$Y½×-ÿ±óv·Ëÿ½-ú¯>Œ„¢ÿÒò?°â+‚¶ÍŠa‚./H3R«˜‹vrÖˆ¹(ö‰ ¸$BmçoûÍßd1×~´q ¤TÑ€ú-´#—‚« 6Ú{Y=Ôw*Z¼,*q´ æ™P܆ä¸PÞ†_†œ­ܨœöŒ€ì¸<”)ÖÂp;PƒÕ‹“Œé« ”ô¡±a1,ƒGu#Ë“Ã-¸h$šq±’rC[ôVq¬/ºƒƒ6̨Žçè(<èÅöÅÁ:škúÕ\^p²ÐæklM á°¬…¾,:ô\–»ãK…àä7ÂÞC°Ñi@öB‘'R9ôóâ¬RòïƒïÓÌÞØ’^í9wRWúÎìY¬Ûü>M‹ß:ÙëvíMדן‘äŽbßöºÖ@NÓ77 £€)ú¹îeî¤ ùwþõ¢ÇgXe ÞWƨÇ—fA‰Ø‚b!ž½·GštiÀH‘½¼=ê0‚ÊjéÑŽ=‘_ªù%ïjÖ ×Qâ”= A:×LQÔ‡¢‰w „£¯v:]6€°Ë ]±@Ÿž×‚(vŠO Zzîßó™X/Fœ=ñ‡ÑúpõqOgÄ”õׄ©¹@}r ÐcíR4û¼Õÿ.–Ǩu·þww§Ôÿöa$¶Ûõ¿g…ÿ`.>›UÕâîæß¹¦`¸šT …åqªèäõÁ盢Å:ûL®f¦%äÃ9.Ù˜â úðy¾Øb…­« }ø$ÎS§Lçî¶bÔ„dl‚ÛEs>PÁ}ׇ0­q$D3Åçþ\Íı·(TÝ^ ¢P! ¢P! ¢P! ¢P! ¢P!LTXxA¿}…ïâú˼²’"Ú·ÒÝ F ÛÀG¼bc;9/ ¡€"ÒH žU½=ÛGEPDEPDçëë Š8+ ˆgЏ¾ýWú¶ ê¿èl>-&Ä£o“OÛ&©Ï°h\¡€‰T‚ç$Xo  ‚Xƶ 0 AªfÑööÏqê´r4½/zõ,ÔúbdÓBÃq3BXR8â^, C㈉0늟å>ä¡õ'€&¸$ߢ׈MÊUßÅUÚ¯îGdçSd%œ‚تs̳5!­Å‡>lw›ü$sÈâ>oœÜ@óDZý3bcsÿ¸^ÑÈL#ó à„V3ioL ­6_ #Ö8JŒÉ »1ÜM0ÄõXƒÈ £¸ƒ!¡„l Á`g0¨%¬Ke°»ˆÐîuŽ…ÛÜ4Ø´rËQK YY´N<¼c2I ‡¯¤žÉ‰ÐI„†È4:y)A‡#L¼Š@‘‰Æàú€Šj}ƒg¸<*JÂ1F>VWðŒ2Ã>¢ùšàYá cðøß+ÁÓS3ÿ0V‰t£f¿M›Ê7jÀº`²7†'3Ÿ¬/<Ú]š¶ðȼ(&|Džëy=X]ºLzÌCÀC¹\Qºö'Z¬èºÿò­÷Ón¯eÈQûZK¹©c×!µ“Âôâ³Wíµ¢Ò±(ò,¨êÑê¢jÖ%{E®•yN´Z¬ÃV‹ÞÙËê¤f¯È…`äqP/zV +ëf\ÿ¹DþËð­†ÿRýgFbUѾþËÙŸ:1çâÇâaþ ËOº‚ÎÉæS“¥/¹ˆ“6çRþ´Oÿ$Ë9/qñ)aWš˜/ðgôK[È D¿ßU¨jµ`]\“o\?üÀ2ªùÅý¶ü·æW¯o?ß<~Á25Üí‚ìVgŸ¯ðÞ¼>\àJˆ\…× ã&ªíRßB¡YY ÷o*–ÀÁ‹ ¡!%Ј‚hD€þLáÏþLáÏþLáÏôΟ‘ÔdXLF¡*—M[XKÙ4BHöâh4]%XAÈtt_!³’6¸X« d BF• „LAȤGÈp SO$™´ ÖÁ]ƒãK¡÷“–ùÛi@4iy2€6é.éþ° #jÁg¶Üœ ck^:¸¬ ÂÛP‹ÎügÖuaËCÌ$¤Dål¯ößÖ¨lÿ.¡Æ¤¤D­H¿ËÖíÙÂôˆ]JTf^Œ¬£“±1²h®/zLO¤A€1ÉTEPü‹8bȲéHØ—±%e¾ØÆêæÞ74Æàœn¼ž‰Áxùî`˜Ây­i—JN” 1Àô®î…t¹zÀICLÞ €eâaúC†I 0™Î–ûY/â¨ÓÄ(jxI1/¶a&OÿQœ˜LF†“±ß'÷|¡ØKäìàÌ(xSal1Æô¡1N'%ýZ±×ËH¯\™³Â•)V¬X±bÅ–iÿSœxtensor-blas-0.21.0/include/xflens/cxxblas/netlib/cblas.tgz000066400000000000000000000752361456314707100237150ustar00rootroot00000000000000‹G1Sí½ùwÛ8–0Ú¿~þ+ÐÕ3)Û¥$–d[=•v¿c[©®¼Ø®/o’ÌôÉ‘EÙVŶtD¹b±¾üïl$H‘ àTÊ"‰õwÅÅEÿú¾ç¿þK¥igg§³·‡ðßþ/úÛ$“„š­vs·µÛnw:h§Ùlvvÿ‚öªíV˜žüio‚»r?¸{œ§žhÉß%I}:ÿôÿ¯î*jÃcwW7ÿN{¿‰ðŒ·›­fgÎkwÏÿNEýÒšÏÿ߆7Þà^|ùuãoøaø8`ÏÃÇþý“7@ÿð§þöê·7Ð6zûøô0˜ô¦õ=ä &Ã?ðïél<ðñ÷×R]ïκo?" ¾Lz½¦wC=ôfèÞd†®ÓoƒÁ#ß÷¦7£ÉƒOjØà6¢ò¿wßž£?ÉR=};íý>š4wš D_îãW­ïoø‚—ç‡g~»x>]Nzþ¦2QÙø¹•Ôõø{ü®-Vvõáä·¨ž«ñx€›kŵœŒ¾Ñg©ùî»Ã%-?^=§Ív\&z”Š\¼ëÆ=Üà »qþóáíy&ðÜÜ©ûò¥?¾òÉ¿Áót0yD?ÿ€þÜøÛàÑÞÄÓuP^"Õ}˜Œ¦#:×Oºü1¸GMDúnžûÓáèÑG›ýÑÃø~ðŒz“š ú=Šz>šŒž¦xeø[åwìõÆÍý¨‡W¥i_|Ï÷FSÜGÜòðqŠÎ(|³õîÇw=ñÕöÇÆ«ãÄG©Ì§†øýÓÖ› oôt}?ˆ:’Ñí¬ N)mJƒOkjhC,’=NM›Q¦^ûþ²R™icZ¡,ý¥ƒÑÒŸcå/@ÌV¾ í.ŠÀ‘f&29R [¢î ¦¦®e:xfÁK'wä±Ó©6†çŠzÈé—U–â¹ìÂG%0Y>ñ#ÃØØJà-¡¢Ÿmsª¡ ÀÒAÁ æYÿKÓõ/¤E Ñn Ë Ú= þ³F1ÛZñƒ‡c:¤t²‡ù~ŒXC8.¡Ø¡™n)eÙ—]ä(Ë'nD ›šþ—PÔÐͲ)‰PýÒAÀdÑ_óK“5/ìQ9ñ‚­‡,Ÿ '^”"^N¼œx!ÁcåÅ‹`íÅ‹À‰Òš_:p‰&®~ø-èìçϪ zGþžÙ´ ¯™%¦{1äò:ð+áY»„‹–J…éç÷é)qì·ƒ‰ÑÐMDɬ¡ Dȸ3jöå ™ Êl>sM§vLLÄ5ÃxÆ0V!ßZàn/¯”šÀ©Z…A+çfªç›é~†,"Ï¡c¡D¾}sÛÌs©`S=M‡ž‡Z@ùl4ý$—!#M9 Û>•g¶jVšóÄšLÜL‡Q57-kcþó–9{žc¡åaª^õLÕÚÀõ ìqxÖ&]íßeÚÓ禮)¦rCN£3•§Œóì ßYfÀK“ê¯ z®[ýÀ1Ã}*ãf4ï@´ÁHÒ¹Tåug(•©Ðl5¨âZs¸Ì†¢¨@Ÿƒ{šÈ§ó¬«R–Õ\òÁbŒp,ïœ;N‚Áqz&kÊéƒUäôÁ*rú rNil¥²ú rVŸ6„b¼>Xy^¬ ¯·{¡½±tsú›fNçƒü GkE{ÚG⢿γ­{,–í+ÛpùKã_ ½ TAì²íB  0µSN¾æ…à<Ž4"è„…W9ó­¬I«TÀ” ™2@SÂ3ætbMç$¦ÌµË2Úk&C,áà9'<åxKɤKÝ;7æÓàÎq: ðšS—&BGHÍ¢Dd‚qáÙu™À̹ĖeÏ žR›)D׊oÏ91ºQc28ÎRù˜ÿRrï²ÌñÆŒ[5J§€þBsíðr øTh©‚oá¹uY@̵¨–OϘù——$׊?Ï3!ðL¨1 4炦|:Þqå*¸rà¸ò<\9p\YÇ•ËàÊãÊ%råÀqå¹¹2¼“l_ÇÎù:Ÿ|ÇkŠk€wƒ…ç5Z§ÜB»«¦Pq¼&kkU IÙ“ÖágqYp ðSïIWl7Å.C3·QŒPôy0Á7ÉÇqœ³×› mrC§ø†Üß@¯^½Ú‚oDÿ_ƒýù‹K|¢ÍÝvøª_z;;;û»»ÿmáÿ¢¿Mò7Lý6j6;íf«¹»¿¿‡všíýöþ_ÐNé=Ò“?íMpWîwóÔ%—$…n§ÂüãäÝåÝ ¼£ÛIï }ÔÃB/FÈÁä¦× é…¹£Ìÿ=N§ƒGt=CïÃi]0…úwÃWµ^7›¯›ÿõ_3¿ÆhúØ¿òèÚð«»äW_n:òšè’ÉKñÐ(GÉH-éWInüÓ”_:/ïÎ.I…ÑOú÷ìwƒü õ„•EŸÈã§7˜ðÜûªîo¸"¬M„Ñ™üŠ”¦ý>|¢ý‰‰XÔ‰$/h}˜ßἈ«k O쉟øŽD (à?¹´üouüouþÛHþ‡óoŠÿ4·Eü§—Õêñ_‹ì+‚ëáðc\OGrs)GÀo4íñŸ®K¦øßÜÙÛ—ðww¯íðßFðŸÍ¿) % @ï°<Þ»¿÷ÑÁ2ù£?ú6éǃ Vð›Í0|¼e¥lQŽx\©ÔC¦ 5የzÂ÷¤µE'& "Ù…xNûùÈŠKK’dúÿTýßßQègÇÑI¦ÿáüßä ÿO0ýd0€'Ë à)“Àâ£,=r€§%àO¹8À“ã+˜úOnœ°®ÿ7±º¯êÿ;»ŽþÛHýç?“ðnÍJ2’ÙFhïukç5@³ÿáO½áèÕÝ?ÅW÷Ãká].Ҿз¤äÝåË»Í7×4iì¬\¾áØñ¯‡ç1ó ¿éš‡ð(™í\¢øBÉîK*+<=8mˆ<ý€ú¦3H©ž÷'x诫ƒ÷WšÎ¢S–Š[' ¿~‚§Yyy…g[Ç“ŸMx2™ÇƒÒÿáRtÀt„üÖ÷öóóÚŒ~oa€UĽ‰Ö™xĽ&ë€Ö¾8<ùðëáÿ´þÝ8z{Iþ¾‰»0 Ù=ùóÌåß~>Úœ±Gœ{ÛŸ’NoOŸvh¡Á3&´Â¿Ž±à÷Ëdôp,>};íý>š\L'·ôÿ×GÞJµàͰË7h“"9:8@Ç„ îiù-òùÏhå“l!b'ùÎFôÅ^渶Ï~|å¥P@È~™™ýxôø»PäX,ýþ“ᦰõÙjÄ$¸?¼»¿Üöî#…üÁOÒmý§÷¿?4¢×[oX}*Ìv¸¯*œ“O“Áôiò¿øýHA˜"tÇãnýB?mbÌO:ÂVx”5$Øa¡HÄz ¯œ„³ó)µ’•Ò hé| —ŽTå‚á¬~«3¿ s _g?ý„ËK £Í3 W0{dU…U«XƒB„bÙûL$ºªfè'ô¨|òFjC8mÏHÿ7·gêê%ƒæt S½9gš–{y ÷[+ÜOŠWϼ¼‚>HJ,h}§ +@Zþz&ñYÂVFK¹t“^”QƒqØçÇ` €,’ѤH·"¶_ [:¾oFna‘씎}ÜB7“Á`ó™_&"‹È•I õháHgìûÎ/@&íhÒ”Ñ%xB]4¡rRØŠ?TÌpæÂ…O¢ýoðð`ßÿgo¯åì5%jÿãM€t „&À¡Ÿ¾ùCó¦o᯻¯ÿ.lá5ô­Øáؼ§cç9 x\ –>,½AÄZ—ið Mp8{ºáOy„ß1{`nƒàûƒ÷€eC?\+†@òë‚sÆØÔ—ú©¹%”JÜ4tm‘i@r[̉cS_ê§&۪׿ƒW{‡²ÆKðïPêdâ§ï¢ÿÀj¸xˆNòÇ^²†è…!‚ òýý0àˆ!µ¼ª~ÊbËpÄ ]•ÑOöÎs€â*:Ì5—‡†Âƒ9Fä!ð` |Uâ/Ö<$¤7J9 9\Èël¥ý/•ù_ lû‘dÿ™ôíÛÚûMùüg{oßÅÿ°’$û™£ƒŸ4ë‚€Vâ¾ÜÌã¢uT2•Îä‘ q;ý(²©4Ð0´z̨YeÆŽðDt^²x̤ç錚AÞ”¿‘®µr c#GÄYñRÔiÕiÇkõ˜1Ž·#2ujêËÙ[ˆ÷ä¸#‘iÏdqw–¦É±lS’o&°iÞÑZb‘jÉÖt¡¨ÚQÝf‚êëmIÍ€ÒW-kl¡À®¨k3HWã„^̇G ¼ŽÅff‘n6›)ºÙ,VÌf’:1S®zQ„´?ñó“ânŸàµh}Qí#ð‰™8YXÐf‚[7sæiS'ƒÎÑÇa]€Ÿþz0ã¤D*K΢eû=K:›ôë“ΪO²ü÷d_þk5ý¿fÓÉ6’,ÿ=™ËOù忼‚Ý“ìjì>i»Êœµ2X!ì© f&ƒ%ýœ;ÙðS ÐÄ1yâ¬p«Æá\JKÿ¿«#þËÎ~§µ«òwþÃJøÿYüÂÿïÒã¿4ÿ^ˆýŠ„‹1ʈÿÂÂðóB„ÉUËàösu’íöCó@òÄÕ zÿ™ºýdœ×È)ÌÌu*#ü•%¾bÑýåòþ!˜•ä:}Ã’^”ÄÍàDuÁ2_‘ðqæ«¢Ndi’BA•=Q˜9Úz0Ø•=ç>£ µù Ý´cÙwñ±lF5ÌŽÁ2«Õ Z„´-œ¯,Â@PÐ"L>]Í! €0¾Š%yÃ$*^[êø.Í—dý¯Žýßý]ÀÿËÝÿk%½–”?ãýßôøðþoîÿweÄ5¿ê•½Ûò-y§·´mÝ¥¿V£‚]­Ö‰Šïì¦mÖæÚÎ%E¯ÎÎî0õ/bH·—ëörÝ^.ZÕ½\>N‚©·´«›Mê—gW"õÐÉÿçtR_ÒNî`IwrqÉrF‹»ku77’ôÿIêæþ/~”õÿÝVËéÿ6’¤ÿOŒÕÿÉbœþÇ1:#*û =n‡£É‰1¥¶†þD*OO7ÜnÍÐÒKTËU§êHó•pX ~–ž§ÏUûGU(Áu¸7&K­‹’ÑDuwïqrRr”»´{ëv³¦tdÝ’uù8åÒäS£jBê•y0ÈPP hdŒ˜Pýo>µ>yÖkõ¦J}ŠN/t ¾7µ•JMžS¨ JfÜLšÔ¡>…~¬ñráÕž…Õ6\Z´$ë­ö÷öÕøonÿ×N’õ¿–¹ØÒk€í×­¶E °U¢ é€õD A‹¦#Zßɺäï‰:É‚É=GBqå2LqוM €î™E¡ •Ò™ÓJÓT˜Ö*©¥-ÝÞlÆvlZR¢®´F›µÖX¥M‹®˜dJÑ€uaKT‰Ÿ«Ô‰Ÿ )ÅÊpá(“¿£üQ&gfa&“ªs…™¤“egramÏBàO{Q07Ù~› M¬žƒ¼A1e“ûb.S¶f ƒ šZ «1x ¤ÆÚ”ÉÉĈ›ÏÆÌ¬<;J«>C `G‘B‡ qCWľ¢èÿ_Ë7díÿîvöÿïΞÓÿm$õü/]¦€If‹'€qsy¯€OSõ3/l@Ö]@°œÃއ^ãnp˜þËs³ëÞÏ3Î_ž£øß¼g+¹å}ñ¯t½ÆC±OðJ'Nè¢zzL.8‚Wö!âD¹©åü¬¤%~­ý< CxU³|oÜ9J¹¾ú<ånhøjèó9®sWÖ Þ©´¸G* œùK—γl3_‘6&[&¡Ñ„#”/*=ol€a¸] c`Ð#p/c‚e—,ß… ‹„`XÁ¯œ'=TtÔa#äëlˆñœ¥ê‘_Ý‘f£$ë¨ÙñŸ:m5þ“Ûÿµ’ý/úgWû+Uù+U÷Ëð6>Ìév+¦ÉÙUÞ–#bSíº–SµæSµÖOÓÊV´^š`§Â©ZkbÕ‰` Ë«i-?~å U~Í©>9íi]’¨ÿk‰ÿ´·¯Æj»óŸV’èÿ;6Šÿ4ºA4ëbÄWvÿ®`Ê?Ü-?¥x çòäB<Þ݃B-5ÝXø£Gâñ Åx§Äxúà.ëÉïAËòðô†ÿââ;¹øNQZÕøN:â^DZ€l⎛ºg’÷ô[z>È'‘KŠé4^¸˜NB¿—öz’áûêxKúñŸv;;Šÿïî®Ûÿµ’$ýß8þÓ8%þ“ÕÓ¿ãúâ?¥Iy´ù[óaÞ1ž\0§µÝ æ46æ´‚^3'rÏ»ÎÂIà\'áÃ<Š{òX±Ú.ô ádJDž5D$‡šTcè¦ð3¯ßØW)dù¿Žø?í¦"ÿïµ:Nþ·‘dùß8þÏ8-þÕ°ãrãÿ„ô‚S²ceVBé“Y  ñÖF}ê‚­Ý»û°9rq}æ•kW(®ÏØ4®ªg¼’ ‹‹ÐS(BOŠ^Sg`ž48.FÓô eŒ¢ñÀ5 Æ#¼že qÁ´¹g¾£ Їƒ‹‡û¾XÁxbU4O乥Ɠ”h<¼ª;Î]g¼$ÑuR^ª­µ¥H‚þï÷{÷öõüQÿÛi:ýßFôÿpþ£¡™&šûæU”]ôB­×ͦp´˜ªOZÜÌ Ð›¥–Kz9Ù+¸“¦–LÑ…?r*/%ýá`RtŽ-$MÄÿj@6þ+þÿ=·ÿo%‰øŸ“Ðì6ñ_K„]zíþübá¿H }Q @Äÿo½q ü¿ÓRÏÿ¸ûßì$ÿéü£?Émûq{òk¯Q­ìF$àSÇóQõƒr¶%$tä1¥ÐÛ% Ð ÿguÄQïÿØo;þo%Éñ_Â%`ÿ…æµÿ…´–7þËÅ»î[t1ôùräáT £«&åH iè—(¿.ê§ÉùÀ´X1ÝÙMD±bHÖÔÅ‹.zÿÍ+æôà´!R×¢~ž¢S\gÔÏêâÉ•ÎöŸ†·wÓ-<ï?žA„¼'ƒ›) ó'Cð“@í‹äeÕádjˆªÓÖƒ¡–¨:cVP²,RH"9UO8f†„ƒVF‡0P|œ¯,ÂØ‰’ã†wlŒÇaÌðe#žÝæ< Å|An‹fÁ’¤ÿÕrÿC{OÑÿ:­]§ÿÙHªþ—ãþ‡0³E p™ïÈ}DA]ÐD\¦À¡«}DÙÊ`½z ݺ›æ /ªÐzüÃRdã\FC  Å1ù1¸Êa!´Éºõ(w±Ã¹‚ÓË„oáe@·¼jgŠÞé®j¨5Éú_ê_¡ûvÝýV ÿåQÿìj‹~ÿCY»€ÛÜ«£ÈÙÕÝœ’f¦¤9m>m U´r4´ÕWÇœ66—6¶~ÊX‰¦y¶í\ÿàT²EH‚þ7½®ãþ‡Îþàÿíöÿ¬$Áÿ;œ#çoš5wü—\ i¢ÌÀ.Y ß!P_÷Ýá¿PwØ»ÕÖ¨‡¹U?Ýݼ¦wyø†ÓúØïî»ì1$ 0ÏYhP<Ä*à!¬Êo»ïÐ ü/÷•¶^¢#Ri® BgpøK#¦´aÊ£“Üѽ |@YK¬î††P‰,&-ÆK®è1æJ$ÁӚ㆑…8,K¢Xp=$£DW©€Ð:¥ì‰l)|Ï™¿¨PÔ=¬†„Ò±¥ô8œnaú¢YIBÞ³Ñ#Ÿ=ŸB½«…mC†y¹x1h¢ t-p"ÿ¡œˆeè¾K¹-„r@rÇ”¼û¸S›ß Ñž~䯣^•FµR"cR”M[rR.FŠTPÉuD=DgÒ] Ë%¼Oã£rŸIÓ(Kù9IJ°.÷K5{|Ö5¹QC|ýL.äà_„±X¥K6GŠ‚ô¼ÜÜâæÄmˆ1wÚ¥ÅQ%¥…»8¸²ßs,éEb Ì–(B*‹;ØdzŠ–Fq”økHÆ¿ySŽˆ…̱SÀDÆ÷tv°p±eÙÁFKî™ ÙüZì?Muÿ¿íì?V’dÿñÍí?~ŠýGwHNûïì?$³³ÿÔcÿqæ3¥Ë¯[([róïÌ?0,ÖÞüã;óϲP"cR´æÄ©–—Ò| á; ȽÝÚÞœ&kR4§ˆ7°"z³v-v8Å”4Ÿ)h‘,A5ó Ç(„é«›QØäzâVŸ%È¢!È_]Chÿ×âÿÓÞÙWÏ´ýÇFí?csÿŸqõþ?ã¥óÿ‰M>ãÆzÙt XoœM¦J›Ì¸ö²å¶ÉŒKŽë(j³¬!SÊ”´ y£U3¶ÔIbŒiÌR[ÖØ×fŽí|T‰¥n²ïè¾0}uÓý¢„_¢ûhÁ,'}hÆëàC³ÌI²ÿÔâÿÓn©ñÿ]ü;I²ÿ˜ûÿŒ«÷ÿ/ÿ³ÿTmÿag²œý'M9s>9óÙœOŽë¨°¬!SröŸšIŒ1Y ûO}Î6¢5ÅùÚ, ýw @˜¾º@Q°è>46-A+ìD³ÄI´ÿLê¸ÿ±³ÛüÜù/+IŽÿ.³ø¯4¯µø¯¤5»÷?¦ÚŠ *dÆ#ËJj®QÇâªÈ%TÝwfd%‹S|U†å)% ¬ô>¼VR~Ú¤J¾R²º«#3âl¸.à+ïà{쪹$’ q}wÞ1(¨Ú3ï³¢K"e0ÔwWR†Q¨ ë#ï’+-“zWQÐá‡ycïîêa˜!´bm):"Z¼š -Ê.ÁBùž2r•î‡ÉHS³£Xé/FDE4¯ ps"¨€¥_=Êß^QvÐa-yµr¥h½äÕ„¾Ú ¾ìè«£¯Ùô5*ŭɶڴ:ýÖ[ˆV'Æ&½µibå:Û°6ÉöŸ:üv;{ŠýgÏÙ¬¤×’ñÇØÿg’vþ«ÿŸÉÒžÿš'äÏ*ú F˜ÎB.®O >Dw†l.¢‰;C¦Å:n!³¬!cËÞAvñ|ê¤@Æ$h)\ŒóˆYÑeÏÿÓü7éùûFù¸XGÊêæŽ Ó·lUÏ P ®FéxiÑÙhâŽ&Éþã×áÿ³ßî¨öŸ¦³ÿØHªÿŸÃÿÇ·êÿã[öÿY÷Ÿª|ä·°UÉùýظiZÝ™¶ê÷ã/êÆ´]¿q÷¥—e[ÚwÛÒX¸méìmi"…ÕVèRd@¹-¹-8å¶åQä(·£ÜŽr³ 6(w1Ò yå#Ý&5ŒdûOþ?{MÀÿÇÅÿ±’$ÿóø?“êãÿL–6þl£aî>iÕ¬lx çþ³Œî?.„Ð|î?.„ë»ï ²ÎýgÑ)1 Z ÷Ÿ¯ób (Mà ‰U¬Ex¡ºyƒcÂô­s@ë|hâ‚ioÿñzþS þ?ä0ÅþÓtö+‰·ÿDó9e™€ÂÜ$ç»)êcTñѹM¦˜œ o“=ö}=Ào4F6V*ÝoèB­×ͦà7dnEòFO×÷~T›µ&ÊÂB¡&Ê@*xS4²åÆ02yO»þźÞL(?Uÿ$¶8*õÕœ‰øÿ<žÕÿ¦‚ÿí}‡ÿ6’ˆÿtþñŸä®“9{0m/ o9†ÛáHBùFRâ“D >“l^äO?‘ÇO…húáíB$(\’¯ "¡øÄž>azñÅBÀÿþ¨üo·üo9þo% øο)þÓÜñŸ´—ÁÇ5¸¾2¨‚–d7ü÷FÓ Ð? ÿ›Xñ×Ýÿk' øOçßýIæÜÒTÈžð,‡fˆÅ@ÊÁ4Üj~…Á&!ÁLÓ+xZ‚âÜ‚’A‡÷?/£ÅÃ%> ôÿöºŽø?»í½]ÕþãÎYIÒù¯h ÿ óšœÿÚ/Aú#¥{©„ÜØã'ÇÉ,òõý Ÿ÷ý•6sŠfjt’K*¡ª¤:¯S¨–¤¼Žk%ÞFÙ^E¡ž =ƒ2ŽkéY¢TÏû“<ô×ÕÁû«*Îw½?ÁÓ­¼¼Â³>^D—£åòµaž”6,€¯Mê6¢~—PÙ i]¼÷'ŸFy®ÊøÇ3ùh"K›…‚ý˜R YuD%;’Ôæ@q늭«3i}Ñå”,°h]i–jðË*ߪÒìÔF¯d§v)·g+O¢ü?¨ãþ—½ý]Õÿ§ãäI‘ÿÆ÷¿„ymÅ ­åÿP$lƒT樨Ž`°;Et€´:(i•JÈQ²´†'ÅÅâ}QÀÌì(×]08{¾»_.ðû#¦'äVÞ¼O ð •Ç#Äïûs)ïÑ{C]!Ž¡¼îP/hˆˆpÍà|:©k1–òbÚ€Dû^wʆG R`xÃð(†G0 ò°Ã#†GµIÍô´Ä”EÈp$ Â4<ˆBÔ3b¦Ó¶˜,Ì6x€4~“wý’¯Ñ iÚÓ iÚÓ iî%¶Hh*‚PÅÒ4J§ÁÒ4J§ÁÒ²)U,iTQ]’A›z Eƒˆ_eU¯­–þš Yÿ«cÿë}ªþçî°’ýÏ|ÿg`sÿg°û?nK§ä-ò·lÜFLm1ƒ3˜Ò6b ëªÄýq݆˚¯^j…׺fÊÙY¸˜Ø.)I’ÿ'5øÿ¶š€ÿoÛÉÿV’*ÿOÌÅÿIé¿°ø?1Še"ÉòªXž^ ˆ7ôjAö1ƒ:¤i±ÁòwU%ˆÓžljÅ·4ÏçCí-Û1Ç.Yz“º›H ¨wWì Øy£îšŠ '-¬Aøÿãä¡UÇù¿–Âÿ÷ÿ·“„ó?áü›¢¹u'€t€âBöN‘ç:þO*¨çø?i9õø?É œÌ ûšƒ® ø?©åüßNg_±ÿïîï8ü·‘üŸä9ÿ7©þ(¯àæ6$Ö¢oƒÃ]H,°¿/=ûå0_¡ êC_B¡ÉT@ÂèØÛ +]â’ñÿ¶þßîo;ü·’dü¿ÍEn-S€ÛM†ÙÌ«qûšý쳟~´#Ííf¯qÝè70J•Èi$Éø_Gü¯½Žÿ«íÎÿ[I…QQ©¥gÇmL¡/OE -íœü¨:ZË,uÈdËPêBª¬¦8¹Ô3«È“Ŧ–Ì­¡xÙròåb$QþûÖ×ÿe_=ÿáîÿ±’Dùο±ÿÉmÓÿ·WäÐ)¼— Ÿ9]ô«ßÃÑ—yõ;M"þÏj¹ÿ«¹¯úÿ¹ûßí$Åþ?3¿ÿ‹æµvÿi-ïý_ïºoÑÅÐö ©'*¼rÉW>Ÿ‘´K¾.º ¢"ƒK¾HÖTUô¢‹^à Á‹=K _òeín¯•¼È‹®x¦N oï¦[xÞ~<®ªòž n¦(Ì[\š wÔÐúeÙž¼¬ø&.ëyJˆT…™óA¡­…‚]OùtÂ(Fl>ÃE7Õ0‹®éa4Ã,`¾F8³{¥–aÃaÎWa h&ŸuÌ!ŒŠ0Y7@—[™àÊÊòˆg õ2+TÜ,ãÎ ,R’õ¿:üÿ±²§è{îü§•èæþÿ3«ñ?f‹æýïB~”éÃ…õ¨è¼Àl…Î ÌÒÎ ¸pEÀòH[ð|WÆc¶'$ù¯ÿÿöŽÿÿuòŸ¤Êæþÿ3›þÿ3;þÿÅÁRo{B ãùIl%ø}a¿þ 9¯/ó.µ«¹d´2ö4grØ*ú{-÷œJî^Å&ÕÈÑkfã3(Αdù¯ÿÿ½=õþ/wþÓNä¿V°eU\¥óiµ-œÐ˜˜òÂÇ…HfÁCéÒ¥/u¢ÈR»žËòeÁCÃÏjË K=ñŠZôÌAæÔJªëy$A‘ÿ¾Z¿ÿe¯­ÞÿÞi;ûŸ•É_ó€_íJ€_󺧈€ÀþðåùáÙŇß.Þ¢KÜ?×-%í—ã læ L¨í幑3ðåa†3ðå9zÿÍë œq›D1gà¹.•XJgàDR©ÅV’S¾ÖíØGÀ@:}Ú‹üx BÌ}è ?‘Ø`‡)Q÷•. v˜7ìÞ®‚)ÁÁ*V¸6‘¢p!¢BÁK R¸¢ìù@±§…]}ËŽÂ…ÙŸá¢;ŸFFd ž}i³ÓŒ;æ¹ÐòeG.Ôi(r¡ŽHŸ/%‘6 ÒvÂ7:*•vT:Î`J³¬9ˆôG¬ ‰t¶YÎV–Yméo í?uø´:Àùwÿ›•Øþ0´ÿø·ƒð HNû*nZ^‡ùb@¬¢Ãˆ`“)à=â=ÌçT2q‡Jær*™¸C%X¬ã~/Ëò©ìí^à¡N dL‚Ùç¤nähPˆðïšÐ L½YpG9w”EN’þï×áÿÑi)÷¿ïﵜþo#©ú¿ŸÃÿ÷êÿá[öÿXM÷çÿ±îþáßÚ½@üú½@bHÌç 2·+ˆ¿›Œ1( å†| ·óì6æÞlŒÚ˜Cðc¯1†¥ºãˆrî9νåè»-Ç|Ž!~aÇ… ïAÎí,/¸š]Fj¤èÆ$ÝÌqdn¿GÒIw$}¹H:ìF"“õyÝJ„é«Ý«D¶ÿÔâÿ±×Ví?îþO+éµdü1Žÿ1©<þÇd‰ãÈÞ»#­*çîáÜ=*r÷p1Dæs÷p1D4°Xû­V£ÓýÎÝ£N dL‚ÚÝÃ…q4ÕFƒRTZ€dY“ ÿ=ÿ© ý§Ó–õÿݦóÿ°’ý?šÿH­Ï´„ÙIÖwSÔÇèì£).s3šL1Bß&="e ë~3 0AàŠ¥»Ž¼B¨õºÙ\GÌ- ‘¾ÍlRÙ©Å8rB<öÃÀÅß„©¸8†Â¤”öü‹ÿt½™q>±Tâ [©Œ:kH/Eüœ<´ÿÛ–‹ÿc%‰øο1þÓìùñ?.fÿI“sà?)^þ“¦SñŸdð?ìlü§ «`¥ãgg¯³‡š­vs·µÛn·÷ þ7[îþo+‰Ç:ÿ™þœ$ÃÕØëMÉðÿnnЯ£Éã`B¾œ&·¯õ“ç2|¹ô°2@Û¢î 7¯Bµ€¬ì_7bÜàßÅøw|~ø‰âOŒùÿˆê}u÷O¯¨-üËMßã?$JUo m¢/ýñt„sl"üÜ@M´úËñ¹/.qæù7ñK©Ýl¼™d'‡¤0îʶü½Å}RÛcZ _s]Aágoó°Ûý²µ®È“Áƒ{<dþCÒÏA(ÔAQøç‹ ?2šÞ†º,ý fx¸M2<À9«®}P2x¬ØõÁƒûà±>xP<Öìƒïë£N’Ÿj†þh<‹2Ÿj†Þs’üT2 ýÞCï™°'þĿԎ²~x`?<Öì‡ÇúáÁýðX?<]?ú¬}°}Ö>Ø>ëGîGŸõ£¯ëGÀú€ýX?°ëG÷#`ýtýð=¼ªH<»ø'8u,‹§ËÂUãéêñ},ýÅKÿjI2x`†>ËÐ3,C ©¯®ƒëF éáS8\ú\høCŸå郋€Õèê X=®?–1dÉO0O¬C4Æ?ÁidõxºzËЇ:ƒü„ºÀ¾`"…Z¬<…1Ë)`` @0 L¦€)Á00 ˜¦SÀÀ@` ˜LS‚)`` @0Ñ:aúÈÀèÊ-HWÈyÛ(ù d`5Láeš‚”‰lð$Mø`,Ã5˜aÌ2Œ ƒƒÂÁcpð@8x ÁÁáà18x <„ƒÇààpð<}‡>‡>ƒC„CŸÁ¡¡ÏàÐáÐgpèƒpè38ôA8ôú ú }ƒCÂ!`p@8 ‡€Á!á08 ‡„CÀà€p‚¼8ÒÖŠ#„óDªý ð¯I†ÉW˜ÂM2´Ôk#ÛXØFÀÚà6Í‹Õè[¨ "lÅÈOPªùšd:Ae¯I¨$Ò_Tù Ò?–Á”}6 †Ç†áÃðØ0FFŸ ££Ï†Ñ‡ÑgÃèÃÃè³aôÁaôÙ0úà06ŒFÀ†€ÃØ0pF#`ÃÀalA8Œ¿ î9[ØÕ‡ãË·y¬aèãÛsü]Y½ÌuqþÛå¿ ï‘!Š|?3 VXž}VOs–°.Ô>gë‚ísv°.Ð>gëBísV°‹‹ÿ>ü ª¢‰±åâø·ŸTå9±µ\~T¿s&°w‡§‡/®ŽTìMúÐ…úÀÀºP8ûWì3½ëjúÀY¿Ž¡>pƯc¨œíëì3}½;Öô³|}†úÀ¾>C}àì^ŸÁ>0³×»Ïš>pf€‹îo—Ðl±]M®’®¦ÎÚtqq|¨øÑs¦¦.ô3xCß9{×g¸<_X×…Ïp˜‘êò ZVÌFE²C³Îjù¬©…³t}ÖÔº.ÎÎO[Pfº8¼¸:…fŽÕÒÕÔÂY¹ºšZx#×ű®7œ WÓÎÄÕý¬ëgáê~ÖõÉVv¼*sÛ·..>þê÷köýú>fß?ß™]çâ_oÏæ“ÏŸ€ÏcöùXºÅJ· â-V\ùÎÙµºÐà9³VCÐáLXŸ!èp¬Ït8Ög:œýê3Î|õ‚g½ÂX a=£ÿ‚¨ÓÑ/.Ï¡ï¬ü%XžQKˆê0×ÕϾAßÇìûõ;gµêBãçŒV]hüœÍª Ÿ3Yu¡ñs«.4~Î`Õ…ÆÏÙ«ºÐø9sU?g­:†ÆÏ«Ž¡ñs¶ªchüœ©ê?g©:†ÆÏªŽ¡ñsvªchüœ™ê?g¥ú Ÿ3R}†ÆÏÙ¨>CãçLTŸ¡ñsªÏÐø9Õghüœ}ê34~Î<õ™Ž?·uаE#ãŒS„(¿‰ö×ä{KÉÀ™¦>C p–©ÏPœaê3Øg—"„ Ð) — ïqˆD¢ÖÏìTbQ30ó¡ŒjÌz@(›ªt³t¡p©.4ÎÕ…À™£ºà8kTgŒêBàlQÇÐ8SÔ14Îu €3DƒàìPÇÐ83Ô14Î õg„ú €³A}†À™ >ƒà,PŸ¡p¨Ït¢ýéì·ã_Ïþ•ÏþU«ä}ܱ  ˆU–gŸ”µ&ùbAßW,(b€åÙg¥}ÙKUE7,U­½°äï–а¢–ò]rÁR•bÑKéà€¥âœè¥|—ܯ”ï’÷•ÒÀùJEÑ÷Jù.¹^)ß%Ï+¥€ã•ª©Ë~W ´·+u>U¯+u݉NWj¢Ï•:_¢Ë• KÑãJ-/;\)5(þVJª»”Eò¶RÛQœ­ ,’¯•OÕÕJEUÅÓJºêh¥"›âg¥Ò ÀÍJÍxY)ANVj&ÀÇJ]׋UA+õ»è`¥~ý«‘Žw¯‚$2”4|œ«@yŽ•N³@ÑŸ8Æ{V©ßEÇ*õ»èWˆƒ¼[$Í¡¤yà³àTÊ‚¬tšʃ/{T©ßE‡*õ»èOˆ’‚;ô÷¦‚Ô”ôO¾äK*3¬tšŠþ„tÞ‘Jý.úQ©ßE7*@N¼¨ ï¼¤K¡¤Êð%*Pc¥Ó,PÙJý.ºOAzï=¥~§Ôï¢ï¤§ñ®S@ý‚çP¿à8éy¼ß”ú]t›‚Ô4ÞkJý.:M©ßEŸ)HÍã]¦€ú) ~Áa Ry)õ»è.iy¼·”ú]t–R¿‹¾R–È»Jõ žR@ý‚£¤eò~RêwÑM Ry/)õ»è$¥~}¤ %“w‘ê<¤€ú©‚þQQæÝ£@¢Í{GAT™wŽ‚èïÒ=Þ5 "l¼g$.ñŽQDÂûE ïQFÞ+ ¢l¼SD™xŸ(Häá]¢ ©‚÷ˆ¥Þ! "m¼?Dšxw(ˆ´ðÞPªv#:Cß_(è»à Ñ&Þ ¢-¼#Dx?(U}Ý €ï‚ô]p‚‚ˆ ïÞJ>žøåK|ÿä“Q̾Ž@ò·+ÐãÛ¤²(, =îØˆNuo½‘ŒW¿D'Ó?LFÓÑt6øá Ô×Ûèbøx{?À_ý¡?=Ò÷|Ä´´IN06ÐÍý¨7EÛ >†‡“—ÂcxN[¨óv3Ϊù»Eîå@J¹‡M¸ù´ÞÍ?èÛ—¢©ƒXQLº"—#Ö•Md¥‰íES:e‘Öº™Ò™´J•ê’ st0OÄP¢©;uœ,”@þ6Y’Üe™},ŒâÒôx0.KбÆ]У£ÇÐ1ŠÑôB~b³nËÏRg©…x3ɬÿ ¥Ç£e¾^½xHí†<(]EõÕuk^V]³qî¼5ë{l„N뿾'@mOåÕ¦®Ð¸Tʈ؞LZ'âå!¶—ÂæRZd–ñ´5\®£ƒ®,Ç©²—sPhIs,ç ´å\°ï¥.ç Ôå¤RÜTPÁ>Ž“¾§:"˜,Kò` ´[3—ÂD R±BÆZ™CÎ#ëkÔxJG*ê ÙÐ{REÚÕ@À øÉ.TžAÏÝ`táqÔ¢ø'SaÑTyQeáŠÃh½åö5£ÊÂóÁ5£²|OÇðÁd³œ…¾“üØ›ÅkÄZ§RYknê¾Ô·1+½2fÊ~:+ÉÒ+ÍÞ¦kYæü„ÕSawtL%/(Š5žÊYlÌ†Ž½èÛ.£UC“Ï8‘‹Ëä¬ÚŒÏäíoN“³j3^c<]fÜÆ˜Àü¦ØrÏÂnCÌi?ƒÙŽi¥2Wðtœ§@RÚÑpŸ9Û8¹M*¥©×ÙïÒ,Cæü'®¥‚NÜ)ƒ¯zØw©¬¦Âv5 nq¾¶ ÙŠ¹1KÉQ­y6²iÎ3ä\)Ïsõ3ú âï`Ò‡ØGÞ%œJ#“§2ÛÐÐíżÓÄý¥ š’ŽÍEû Ôd¢ å0Jæ³!×Ä~‚E`?uöÔÄ~‹ì'(›ýÕ°Ÿ <ö”Í~‚jØOPû ,°ŸÀû 4ìGVÌ{mÿþcÒi *#m(âjçÝóyØÔ#@ ˬ`Û%­'–ú0ùZn²šk•Ü^þNOO¹sõ(k+¥ÚÖŒíÓ¦ËÞŠyÔdíÛ鈔k¤5Cƒ/€ óYø Cîs[˃ô€У(u÷Á.K¢§k,6·0<1Tw'¬²á¾M6lf%Y v, ;ŒˆØ– #JTn“ #Šf$ÉFOl E¡8±ög£¦`üu†„jÕ}ùã_Äû?oïG×½{¿ô €³îÿÝÙSîÿv÷ZJä6ÆpU÷îŽvÞl×ç£o§½ßG“‹éä–¼«»«.UxükÔpÿ÷Þžrÿ÷žÃ+‰¿ÿ7žÃû¿£ìyïÿfŪ¼ÿ;¤iïκo? £Ëu xx8}$ek¹œ?A¥¹œv.”{¢+Àéôÿ„_6ÑÏhGs#¸€ÿ^]øßQðÇá¿$à¿—ÿ½bøïÕ„ÿžÿc~A)€W!ð߯ ÿ÷üïì;ü·‘ü÷óá¿_ ÿýšðß×âdm\Pô÷«ü…ÿïâÿm$ÿƒ|øÃÿ &ü–Sþ  ÿ&€ÿ[™üŸù)ý³ñ¿¥èÿû»Nþ·’xüæßýÃÜy±?)U%ò‡üœT>®B¼¿“âµ >rKƒ÷$ƒ€öa_A=_—DüÏìãsgoWÁÿ=‡ÿV’ˆÿtþñŸäÎÿQ©*ñŸòsnL)èß»ßõŠ@p J"¡HÜ>I$ä‘ò’ŒäñyüTˆ‚¨>Ñþ(¤…%&+/" ˆäå{úDdä6€V0 ô¿_˜)ÿµ›ªþçè¿•$Ðÿ~>°_Lì[ûZP§ù-ˆد\ñŸ)[üowšM‡ÿ6’ˆÿáüã?ÍžÿãböðŸ´XÿIéšðŸE Ôà?É àØÙ‚ø?ªCÿƒð·åðßFñ”Gÿ£¹-jra$Ô4CŽFm[­-Ldm­þ{£ièŸmÿéÈþŸíÝ=·ÿc% øOçßýIæÜ¼?*dóãöJ!B)p$Òn2¿°`“Œ$Ñë³) þ‰s òÞwüìÌA«Dú_ È¢ÿÍÝgÿ©)‰ô?'(Èìs >k`¥YƒÊ²7“Xâ$Ðå˾þ¿ÛÞWäÿý¶£ÿV¥ÿ —@Hþ1ÑO¥ÿ4o:'_w_ï D¼ úOCÐ…ÄuðøôZûí¼ûö&Þ`l%ûåùáÙŇß.Þ¢KÜCÿ'×§ Cèj#_ߟðyß_i3ëù‹Ðô½×˨0RŠ^¦Pqicêßõ&èòP`Kä\lÌÈoúƒæ!œGf&—‡èþ‡i}ÄLÒÜéÁiCätxðlOªçýÉžúëêàý•¦s§èÔ€QâÖÉȯߟà‰V^^áùž‹ÓFwY'/ßHŸù˜ôÿŸ^òVªhÒÜôI1 c‚EÇ£{Z~‹|þ3Z-$[ˆ I¾³}±…W®ídzßDy©è²_ff?=þ.9‹D¿ÿdë9$Ñ-Ÿ­FL'(Uø¡ñûûûÁmï>Âjä¦S,k6ÐzÿûøC#z½õ†Õ§Âl‡ûªÂ9ùJ8ñ‹ïÑ_{Âawëúi#KÒ¶(¢¬Ñ½5´P$b6˜,®ÊøÇ“Îk‘Oq½¤J0d»a<¤dâÄõÃEX?°šoŒ×UöBɹ •uuæÖ•n]Ië‹.§dEëJ³¬PcŽe%€¼)ƒ%0ÿ.=ätA†Uê` B9†o.ïÈÕO¢ü?x¨Áÿ{¯ÓQ÷ÿZÎþo%)ò?]†ò?Ék"ÿÿ½ùŸ/ÒÈÿ”T4 Äýü*ÂQQ!ÓÄDt€´(u ‰JÃu†ÒÒâ¸ð±X¸/j˜™‘+ P4ÇÙÓåý~Äô„ÜŠÂûƒ÷€Æ€Á€®¿ïÏ¥¼Gï uÜ2!êë>5'ý—®€Œ0V6#.*+HÒ´r×$¤!Ø…Â"ÇÙE"I@´HqA “…t‚ B5Jppà¥÷îQ p`àån» p`àU Ü‚òqœáHÌp$ ЂMƒç P§¡1ùYPÀŽ’‡ëDP>NÞõ#9™Mëoóè^:ŒN[tŒN[tŒÎ½è–£EتF-5F-5½šÔ2ü»ø¬hÆ Ÿ;Ÿ#ku_:/ð´d(Ä¿Qˆ-XÖÿêØÿÙé(ñ?öÛ»Nÿ³‘ýÏ|ÿgwÿÍáþI¯>Z€ýŸT}ÎíéäÚÓ)ÏÆ|'¦tE,][ƒ­˜M“yùòAÚÎ $Ï‹–oOÝ‹ÁrYZ‘Ódñ‚$¼€ÔESÎVÊÀm¥¸d’$ùRÃùV³­ÄÿÙÝuñ­$UþŸ˜‹ÿ‹Þ_ƒIºðŸCdpPWåòôJTQ¼¡U ²O™Õ!NÈÍÀXœŽØòdS+Ï¥y5³Ý¹˜c—,¾Iݤ±Cbg9‘S×A½|0qâK‘ø5áŠÄÿÛÛsñ¬$áüO¾ðÅ¢?Xþ ý`ÿ¯¾à•Ç~ IÀÿI-ç¿w:ùü_{·Óqøo# ø?ÉsúoRý!>^˜('øtøËxÐltʲº Ì÷¥g¿¼¸åâ 1:Êö§¡üع<ÿokàÿmÀÿs·íðßF’ñÿ6¸µLn7c¶¼86n_'¿úÉ/?Ú ‹äv³×¸nôxùüwºIœdü¯%þ÷^Kÿëöÿ­$ÿs„¤¹íâ¿Äq UØþ°ø<ÿÁ,€Ë‡­Ô“ø þW dáÿ®zÿçNËéÿV’‚ÿù€ÛÀ"õš š{-& 4õ(/:×°2cIZÀàÊq¥¸²8ß8ODµåJþûµÄhï·ùßŰ’äý??Gü¿Xü‡b¸ïg†P½ý®>œü†®Æ÷#aû0šØ’Îk¥œÔÊØ@ÔÑJ÷è»:Éöè£y ©ãê½ÀÿŒO_eºš_æ1?Zµ¼Á87-² “œWÄ2¾…'”8P]©>WBæ“Ñ7–ù¤¨·•/žg§-H~ô]]ŽVtxÌÑêê$ÅÑÊϲ_HŽVº“7 ú¹W•åš§Ÿó“3³ÛhòŒO^V| ‚õ½H5Dª"‰ÂÌùÀÓλîó)QL ø ÝT{Á,ºyQÈËvoPÑ"`#Ò"ÓùÚ!-2å³ 9dÊLYѧó “Þ~3³{q óﺘ.™'Yÿ«åüw[Õÿ:.þ³•èæþÿ³BþÿÅõ¿…:°@w½Ôr äóà+wø-ȑ٠˜¥®fqgŒÀòœH[ð|ŠwÕ—tˆ`¶*‡Á%ù¯ÿÿöŽÿgoÇùYIªügîÿ?+âÿ_Tø«ØýN߯´Ë>ÐÂxzE"[ ~^DZãoÿ@ÎË d½Kíf.Ù™Œ½Ì™ ¶Šþ]Ë=§’{W±I5rìšÙ8CàL€s&Yþ«ÃÿO‰ÿÚÞë8ÿ/+ ÿÌýÿgVýÿg+ãÿŸV× ‰-/|,Qˆd&<”.]:ñR'Š,µ«¹,_ûT9óò½ÀÿæuΈ9^Ìx®ÐãKé œ*µø»JbÊ×…õÑ#ð¡Hž š>ma¬@?^sß"?g–8Åù-qVÜ÷Ѱa{2dÃqVÚù¤Ã(™.Ãåy–Þð5Ãâ†Â-{×í/»ÈÈÀ£Çųܸ˜]BÆÅËÕÃÅðÇê¡bª"÷µ.gäÅTï2“¬ÿU þeêm(þ·Óÿ¬$@ÿË£þ™i%ÿœ”ªü•ªû•í.Ìß Užw^³gWus:š™Ž¶€RáJ¨h‹)Ö"” ×@'[@äcÐY^•l1q/ü± ¨—¦ƒÕ§‚-©Vgô¿i-÷ÿî·÷ÿ¯ýÝŽÓÿl$!þW8ÿ¶šé€S³;€Û¯Û±˜ç€ NK»8b à!P_÷Ýá¿PwØ»ÕÖ—u¯°‘*¨=3Êk~—‡o8-ýî¾Ëvc[zá_ZT ±Jx+„òÛî;ôÿ›ï$i¢3¸Ê ÈÂîô(]»õpZÿ²dd!>Ê’",ÉèÑR* dôF){"»ÆEދТü¢v@‘ó°bªÅ–Òãpº…)…f% yÏF|ö|*ñ®´ äåây­EèZàDïC9ËÐ}—r”•r3Ç4¹ûN•Ñá›åÄ_ŠVìs­”ȘeÓ–œ”K!E…-Rµ“¢¦EKt(•E‹j#F:ÓÁt5oX_ì$éÿ~-úÿ®ªÿïµþo#Iú¿ŸÊþM³F[Ç’¾ÐÞëÖÎëyü“œºïÔ}§î#›ú¾_·\´äú¾ïô}k¯ïûNß_J´ú~ͤÈÑ¢áߺiQmÄH¯ïûN߯;‰úÿ¸–ýÿ}ÀÿÛŶ’dÿïp îý Å.h/Ýîb7ÖLÅ/ Ì/¹ŠnOC×¾s±ÜúØíÈk`±ŽR1Ër˜L¡˜s>(Í*ªÞu’˜•P½ë¦1ŽÈD€ÿÖMdŠR™ü*õØm¡»”'Iú-ûÿ;{;îüwMIÜÿ›ïÿ+ßÿ/Ýþ¿SøÂ_Âï¶äçSøÝ–¼ë(‹³¬!‡q Í$f5~·×îˆ Ò(üæT†'2¦¿ÛDw©xõÿÉÃ}ý¿³·»§êÿîþ?+IÙÿ§KÀpÿŸäµý›´–7þÛÅ»î[t1ô…î†N5TȬœ àtΛ§ÍÏ(ÁÕ°q¸ª‹nƒXP®0àá_RÔÀðNNzÑE/.º°IÂ0ôÜéÁi#å´ABìï):5°[d„ _ÌxsẠù60Mex{‡¾‹îÁç@|&!ïÉàfŠÂ¼Åm‡9ÑÖ/Ë*äeÅq­j¹×Ö¡ÞÈz ò¤­(O$¾×aJl=EŸ |æ ®·«…`J¯Šµ­M¤h[ˆèOðR‚´­({>PìÉ @5i[vÔ-Ìø Ýùô1"GðüK«–f\2Ï­.;.¡ŽJCq uTú|)©´™¶œQÆ,G§ Òi£€‹kB¨k¢ÓN£Íid9"ëˆ1`{7¦Âg5N¨pTU*-Nlgzã™´>×ðjÙþS‡ÿG«ãü?êJ€ýÇüüÇÄæùÉòžÿ˜+Ä*º‹F™¾#«æÁžKÉÄ!™Ë¥dâÎh`±Ž»½,kÈ¥²7{]t‡:)1 Zd“ºI£A ¿ëFƒRTjç²DIÒÿý:ü?öñƒ¢ÿï8ýßFRõ?‡ÿ‡oÕÿ÷ìÿ±ˆî¹¬ ªÈê{€œ9Åöñ“ûºº€ø5î-2(,óÖ¢_ïÖ"bý;‹~. áß%óñˆº¤–ˆJÛòqTÚQiG¥Ñ‚SiÐCd~ß|CdûO-þ{ªý§ãÎÿXI¯%ãqüIåñ?&ËÿC6Ñpþi9‡çðQ‘Ç‹!2ŸÃ‡‹!¢Å ʱù6[N÷;‡:)1 Zh‡bÄÑ T JÑ“ÃÇò&^ÿ'·|@†þßÞSÏtö÷þo#%Šø?ü©7½ºûç†ðê~x-¿›`ÄVòõ&â»LUŸ×õ#ªªÀ7‰ÿUu·'£§©øæf4yh W¯^E-ÒT:Zbð0žÎþ§ùoLV~ø¾þ£÷å~ˆ+ÄÝO'¡ž‡ß‘µ0Ý _b¥·³ﯣM¾nEÃ#tp:Ù¤ýávðððÃú+¦b[*SÃÙiÚ$c%¬qm¡ð7B»Hxhœq—˸—–±Ùdÿ+-ã±›M™Å%¹…Áù³dpèÿþ_$|»³9ðônÒ³}šnRÛ®y7;\ëûiÝÜç2v̺‰—Ê9º²»…âÚi=i³|»†¹¶Öt,_êÊÞcùöM!<É1®v2ƒ­´n´¶ŒFÿ÷-¥³šÁGÙþ®“4ª»Á¤¥ÅÂqòm‹µ§/dœ´¾âì¤*Í9¨ï1=%_ãönƘ«Lo𱜈Iïz“ÞÃÓu,Aƒ3é+±úý§¾õ|bóM&ƒþ”J—!Ó YBó¹ºc„t}+fXŽÞä_%Çú+í\¬‘™8âQ”•`Iš~ƒ^o£_F“þÝ¿¢Ñ =MHv„›MÐ]ïÑ»ÇcØ~ò©átóesk‘ÄY^þ zÏã™ýýŸÎ¾zÿ»»ÿÍNâ÷¢ùvu²¶€ÂÜQf½ð+„Z¯›ÍùOÓö6¡mši[p– _iµ\iÏ¥åÿ$¾ýD̼ГÇOäñS´Ç¡¸º¦FDW?|¢ýá¶9Èû$±†A€VÜ@ŸØÓ'ByHzüïêÁÿVGÁÿ=§ÿYIþ‡óoŠÿ4·Eü'í¥à¿ÙW×ÃáǸžŽäæâ…€ÿÞhÚÿâ?]—L2𿉠€„ÿ»{;îü•$à?›S@JÐ#@令߻¿÷ÑÁâö£?ú6é‘&t=Ào4Ãðñ–•²E9âq¥R™N€Ô„/¢P˜´æš0dS”¢#rùL2ýª…þï*ô¿åâ?YI2ýÊMÿŸ Ñÿ'Ëôÿ©úoΞ–€<åâOެ^é¿QÔúþ/ý(ïÿvœüo%‰ô?œcâO³Û¤ã¤Aˆ{£§ëûAl£eÌÍE(u!Ò,Sàp8ò Cé²±j鬀ÿdкý¯¹ÓÜWã¶:ÿm$ÿÃùÏÄýÑ ¢YIÆ\ç? }LrÑÒ‘ôc"*0> ’#bùúþ„ÏûþJ›Y·caÝCȯʭB׃)TET´"îìIö“ŒÀ†çD2®mÑËÇR=ïOðÐ_WﯪˆòñþO³òò ϶Žî?›ˆädhx°Ó e"&“LwÄà¶ŸŸÐfü°…BVÿ*ZTdæÿž¬Z_ôæðäï‡ÿÓúwãèí%ùû&îÅ4øÉŸg¾ÀöóØðŒ{ƶý)éüöôY>g³0Çp–ëü óž§DnΟ¤ú<ë]šåhÇŽÊJ¤…ÍâWÉÆ&b òIrlæuXJþäÝTòÑŠÚŽ¨ë'DêP²ðFþÐÄ^âø÷ZƒK~O‹à÷b¹¯$NÑ?—£?… {ÄeNÑ?þÁ ¦güþ/ÑQóqÛƒÑMDX¶¶ÄœS’õù͆ð’öŸÄIj“|ÇeèwÒ2z#¦tNr÷ ¦gèù§Gñ}àCßÊöæËÖ–¶•—P3dPÀ‡gôÓÁæ£RÛwáÉ J¿¶I«˜k¨µ‡þ°/ŸŸÅ©emGV¿Ñô^}»b¶°ùL|Ðü©4€çƒ©<‡ªtÀ§„™ÈK'aï|Š@­då# D9Ã¥ó)\:R=”†³úI¬ h4Îü2Ì-|ýô./5Œ6Ï$dAÀì‘UV­¢ 1jˆð3u’誚¡ŸÐ£òÉ© á´=#ýßÜž©«— ˜sDÐNõæ œiZîåÜn­p?)^= 2 úH@)1¡õe&Ìi9ì™Äi cMX-å ƒÅé5}np,–p ˆÅ"OŠt+büº¥ãü†`ý_CBöq ÝLƒÍg~™@˜,bW&…Öã„t ¡Ðï;¿3qEhâŽq­[íƒ:îÞÛßUýÿÚÎþg%Iñ£%`ÿ7Ìkÿ÷ï%Äÿ¥­åÿ[$l¯T樨-0Ë;™ØúÒ* ,劌³ç‹ø{y„ß1{`nƒàûƒ÷iá|¥òx„ø}.à{ô^~•ùWyÝ' ^ô€À:sÄbFäEûz p=!B)0«"}q'‹´Æ!–žÞ8ÈÑsÀò¥àäוöª,ºW…dÿ™ôíÛÚûÍ=õüOÛÙl$ÉþCæßèìͺ  Iß螘Œ9FÇÄNˆËF¡ì3ˆuT2O•Ïä‘ q;ýˆÙTBcÆŒVfìOÌ d;ÆL~AB/nûÓ7åï¥kíÈØ¬ñ^¼uztÚ{½÷ȩã]‰L-…rö>¢Äd9&JÛ3Yæ¥êŠ,ß”dœ ìœ÷³–˜u¤¼A6],ª~H”Ù šaR3 ÆUË:a(¶+ á Ò9¡GÄáQA¯d±™(õËÙLÑþf±ê7“”Š™"¸pЋ,¤ý錟Ÿm/ÁmQSõ¼|b&NXÔ…™¨S0ùež6urêL@LQÑøé¯3Nœ¤Bç,Z·ß³Ä¸I±Å¸ÂI–ÿžìË­æžÿ­½¿ëâ?XI²ü÷d.ÿ=å—ÿò vON°«I°û¤ìjrfÌ%€=ÀÌä¯DéŸs#›÷}*÷™Ø(&O+ÊÜ\ÊLÿ¿«#þËÎ~§íüêJÿ¿3‹ÿBøÿ]zü—æß ±CC/%Ü•ÿ…ÝÌ üa޼Å"¹ý›ƒ³Ü~hHžïF¹oü…Ïkäfæ:•áâ¯,’u,×ÍÆ¹îLV­WºÍÈ;ñ,8t )}·x×Fª~;wñIê«i“ï½ÖoG#2Ú ˜;Éh=d@÷Õ7¦¨E3Ãû…3iÊÎ/iž/)^/°Ç‹êí…IñrÑx¸€¡E °"¼S‹Ö” º²èÝXt.,ªûŠjÆW"¯•3€ãÁØâá¢Û fdâdMµ\tÑ üO ñ[ ‡x°Ùa%Ã8ÐeÎXáðönº…çýàÇsàp²÷dp3EaÞ“Â’–t–6 ËäeÅ,rÈ2$…‚*q¢0s>0´õ`°+qÎ'rF0jó.ºiG³ïâ£ÙŒj˜"‚%U«A´è&Z„9_Y„  E˜|šCa }KòI9½öf'„rÀ‹˜dý¯Žýß}ÈÿËíÿZI¯%åÏxÿ7=þ¼ÿ[…ûÿ]ñ@ͯzeoŶ|KÞéuÛº•oëjuOT|_7m«6×&p.Yzuöu€™ã0¸\·“ëvrIZÑ\>b‚±·´§›Mì—gO"öpx€Tb_Ò>î`I÷qqÉzF‹»™ka/·H’ôÿIê–þ¿ÛÙQÎÿïî·œþo#IúÿÄXýŸ,ÆéÜ£3b ²¯ÐÑÌ›…Sµw¥º†þH*OQ7ÜoÍPÓKÔËUõ;Ò{e\§?Ë/¦ÏUûGU¨Àu¸6&K­‹RÑDutOðq2Rr’»´{ët³¦täܲ5ù8åÒãSj¢êUy0Ê|PyPvŒ9he 3˜cP`p>¥>yÖëô¦*}ŠF/t+5j]&=yN¡'(30EÑGgc—Óxzy¥Õ@–ÿ[uìÿayY’ÿ÷\ü;I–ÿ[æ @K¯´_·Ú5€V‰*¤Ô5-šŠ`}'oª¿'Ú &öupÆËÔ/¤=76‰@²g‡,ÔJfN-I“a[Yî]K¥˜´t{sÛqiI ·Ò:MæzXg­&5Ä^’+E ÒÅÞ+Q-z®R/z.¤)Ã…C þŽò‡œ™ÅLªÎkN–i°Á…ÕŸ…èöB!þn²ÿ2:ª©¬žƒ¼‘ ø‰ÄR`DRÔYÒ‹qQS&;ã.>s´teš BæÛ‘"¯°¶) åUt)ФBr¡võÌ“¢ÿ-ßuþs·£ìÿuZ»Nÿ·‘ÔóŸt ˜%™-žÅÍå½Ï8 zyŽ^àó­äšïÅ¿Ó[rå=Ñ3™ø!KnÈéñ˜àèMÙIͦ–3”’Žøµö3aá½òUaç(åŽ`øŠàó”+‚á‚Ïç¸Ó[`X/xéÎâ«#pæoå9ϲÌ|MdÙ˜r™„Ŏѽ¨ôÌ©†Uxèrq0ŒA`ÀU|–]BF°|w@.‚Ex`¿rúù«è¨ÃFÈÏ56¦*Ž_-i­]y+!Éú_ê_vüUÿÛowœþg#ú_õÏ®öWªòWªî—å+j|0”WîVL•³«½-GÌžÚ5-§hͧh­Ÿž•­f½ô,ÀP…SµúÖ"D·©Á–WÏZ~üʨ,üÒ£ÖF<i ”ÓŸÖ#‰ú߸–ø?{]EÿÛwûV’èÿ;6Šÿ3ºA4ëbÄÿWvÿ‹®`Ê/Ü-/¥x » ?•ßÝ‚B]5Ý•Xø¡_âñ Eù§Dùùà.k)àBË2ñó†ÿâ"ü¸?QZÙ?:ò^ÇÑ€lòŽ›¾gøô[Z>ȧQKŠê3^¸¨>B¿—öz’áû2ûþ’$éÿõÄÿi*÷¿ìvœþo%Iú¿qüŸqJü«§Ç5ÆÿI)Rðhó·æÓ¼bü¸`>õjº+ÌglÌg»fNä:v#„(»¹>‡y”öä±b•]è—&„)yÖ‘*Ò¤ ‰×oxÝÆ¦:!ËÿuÄÿiï*þŸ{ûM'ÿÛH²üoÿgœÿÇjÐq¹ñBJÁ)Ù1€2+¡”É,Ðxk£>mÁÖî6°OÙ¡|ØÌ¨‘|\ü#¶µJªˆaø)"Ïx%5“¬‰]gÕ$ož(p´Éx‘ÞŠZޑޣJֲʢTÿ ¨^ÿF©^ͦlýEÒªÕˆ5cÒ›B¡f¤ÞäŒ2Ì߆Cl_ÎH» ·0¡ÕÒ¢Ð(s(æ~Ù ¶JµíÈ1mÒÛù¤¶è„iÃ#ä@MÆjy¾a±vôõÏâúÙ`x–R<.OäÍ¥ ˓¦”°<¼â;.fGä‹e'¥á%Øh[Ð$èÿ~¿wo_ÿßÙoï+þ¿­=§ÿÛH‚þÎt 4Ó@sG™õ'@_!ÔzÝl '@‹)ú¤½ÍÌð¼YJ¹¤•“­¹‚ÛhÊAÉMø#§ðR"&E Ù²C¸DüÿÖ×€ÿ–êÿ¿×vøo#‰øOçßÿIn›øÛ“ð_ïTŸxÌ‘OEÈlËGÔŠw{H.èØcr¡7Vä¦"þÏêˆÿ°ßTÏÿ¸û¿­$9þC¸Ìâ?мÖâ?ÖòƸx×}‹.†Þ ð%à§óÝž÷Jp}Ô?“óAi‘".º ²›€ "E¬© ]ôÿ›7RÄéÁiC¤­%ý;E§¸Î ÕE“ +™¤‡·wÓ-<ï?žG¶…¼'ƒ›) ó&Að“?4LíäeÕÁ$jˆ©ÑÖƒ¡–˜O¬S²,RH9M½¿\#— À*¡C(:„aÎWaìÄÈpû4EˆcŒ0fø’„µV`y* ù€œ-v±’¤ÿÕÿ½½§ÜÿÖqö;IÕÿrÄ3[Ô—9þ{îðuAep™Â®vø²•Ázõ AºuQÜç .¨Ðzô³Rdã\áC  Å1ù1ã¾ÚdÝz” ê~®àô2á[øcЭDµÓ…j¯5Éú_êŸAüwåüÿ¾;ÿo'ú_õÏ®ö·èñßËÚÜæÂ¿¯Ž"gWwsJš™’æt´ùt´5TÑÊÑÐV_sÚØ\ÚØú)c%š>æÓÉœJ¶.IÐÿ¦×uÄïìïþßîü‡•$ø‡óoäüM³æŽÿKá#M”Ø!Ká;êë¾;üê{·Úúõ0·ê§scç5½ËÃ7œÖÇ~wßeGˆ aDyÎBË€*à!VaP~Û}‡^à¹CÆ Ûz‰ŽX F¹6ÂáƒÆOiÔ5ÆÇ6£€ìBt YO¬.6{¨F‹‘ø!WH s5’`jÍÁÈÈB,–eQ,º’Ñ«T@ÈèRöD:Ž‹¾çH‚_Ô(ìV CBëØRzN·0…Ѭ$!ïÙè‘ÏžO¥ÞÕ‚¶!C‚¼\¼ÀQº8¡ÿPÎ@Ä2tߥÜ@y @»cZÞ}ܨËoÑáIÃÄ1ŒG½*aMj¥DƤ(›¶ä¤\Œ© ’ëˆzˆÎ¤ ù Ë… Ó DQ˜F1%’ЯI‚")Ĺ_ªÙã8úPLÇ$”¾øú™Dâç_„¥+HŒ ¢ŒEñJ^nn Eâ6Ä$HüÒ‚(" úÇ÷ ñï²1‡æK¶•Ål²=EK£8JP&$ãß<È)GBæØ)`"ã{:CX¸Ø² a£¥6„Iö¿ûOS½ÿ}ßÙ¬$Éþã›ÛüûößÙHfgÿ©ÉþãÌ?†J—_·P¶äæß™`X¬½ùÇwæŸe¡DƤh)Ì?H¤Ík¾Ó(½Û­íÍi²&EsŠxõ"¢×zÐ[=ħ˜’æ3-’%¨f>á…0}u3 ›œBOÜê³Y4ù«jí?ãZüÚMåü¿³ÿXJ¢ýglîÿ3®Þÿg¼tþ?±Ég¬M¹’69n˜t6™jl2†·i;›ŒFÖ;— ,ÖQÔfYC¶”)i …óF«fl©“ÄÓ˜¥0¶¬±¯ÍÛù¨KÝdßÑ}aúê¦ûE ¿D÷Ñ‚YN,úÐŒW߇f™“dÿ©Åÿ§Ýj©ñ?\ü+I²ÿ˜ûÿŒ«÷ÿ/ÿ³ÿTnÿáÎd9ûOšræ|ræ³ÿ8Ÿ ,ÖQ`YC¶äì?5“c³öŸúœmDkŠóµYúï€0}u3€¢`Ñ}hlZ‚VÖ‰f‰“hÿ™Ôqÿcg¿©ÚöÝýV’ÿ5\fñ_i^kñ_IkvïLµTÈŒG–/”Ô\¢ŽÅU‘K¨ºïÌÈJ§øþª ËSJ@Yé}x­¤ü6´I•|¥duWG.fÄÙp]ÀWÞÁ÷ØUsI$Aâúî¼cPPug8ÞgE—DÊ`¨7 £PÖGÞäVZ&%ô®¢ž‡BóÆÞÝÕÃ0%BhÅÚ&R44Dt.x5AZ”=,öô°°«¡ÙQÑô—,¢":ܸ…TåÒ¯1åoÂ(;€±–T[¹ž´^RmB«írv´ÚÑjG«… K«ÓoÐ…hub¶ÒÛ­&VnÆ­Én%ÛêðÿÙâÿ8ÿ;éµdü1öÿ™Tþk²´ç¿æ ù³ŠþA‚¦€³‹ëS‹ÑÄ!›Ë‡hâÎi`±Ž[È,kÈÚ²w]<Ÿ:)1 Z #wÄŒW§gQÝ\Á±aúƒ- ê9Z_×£‰;„¦I’ýǯÅÿgWÿÓi9û¤úÿø9ü|«þ?¾eÿŸõqÿ©Ê÷G~ [•œß›¦ÕÝd«~?þ¢n&Ûõûñw/yY¶’}·•¬…ÛJÎÞJöçpûQXm…n@”Û’ЂSn[^@Žr;Êí(7Ë`ƒr#ÝP>ÒX”RLJþJxÉöŸzü:²ý§³ãü¬$ÉÿÇ<þϤúø?“¥ÿ#Ûh˜»OZ5+ȹÿ,§û !4Ÿû !¤Åúî󯢬sÿYt dL‚–Âý§Æë¼X¼}hx!±Šµ/T7opÌA˜¾õ`h=€\ð!0Eöo4íûOׯnªh#Ãþ³³·“øÿìí¶›ÄþÓlï:ûÔ§XÄæ£¿¾R,@7£ÉS ômÒ£g°ñsXîUTâ¿uN@¯j½n6C' ~„¸¸µÉèiJtù¸õÍÇÆsS«çÆŒü™5Èû­¤D¨„cä¥ù£—ýÑÃø~ð¾kpˆ¹êwó1¬‘Ô'yÞÜÞjÌðÿ’HñZ“Ü•˜ü…˜wèÑ[>„—Ãÿ§…Âÿ=gÿµ’þ?Äÿ§RðÿIƒÿOüðÿ©Á}(ˆÿOÿŸÖ ÿ½žÿôPþïvÚ þï;ÿ_+)DÝhþóâ?-÷jn/?†uä€ù4c‚¬Ô‚?ž úC8z ?6¸" Ð{æ))}@+Jú²²¨OS„ÿ˜æU†þÙü¿Ù”ð¿Õé8ùßJŠð?žÿœè‹ÍüaÛó‡(~­%웞ûƒøOÅÒ"/ úV]ˆðÿqòЪ‘ÿ·dþ¿ãÎÿØIþ'óŸ“róS€¨u†kä„üä½ûÉÇ—£û'¥hEkÂþcü÷«òó¬ÿwþÛHþû¿ ÀÏ'øi2ùØ0&\h8 •˜rþðDz’ƒÿƒ* Ùü_Æÿ¶Ã;)Â6ÿ9 -8?Œ-Aª Ècà ’ X@ŒÿU*ð¿ÕÙqøo#Åø_TÊÑc HÕ‚Ãÿ!y€0«„ÝÑÛ°Pæƒ(OK„U¬Îó)¯VüW÷ÿÚMgÿ·’æÅÏÿ[-=þ{æøïøï™áºù/"Þ‚ÿýZñ¯£à{Ïá¿á¿_ÿýrø¿oŽÿ>ˆÿ¾þ'F?çý5Ây>EøÔËÿû{×éÿVR„ÿAQüÊÁÿÀÿÿƒ\ü?M ÖŠ„øÚû:¸Þªi#ÿÉe¿Tÿßmîï·[;$þCk×Ýÿk%ý-Œó/Šø¯¦ýé!!©¿ñ·8hCœýÕðqcÃÜôžî§ègÔ»¿ßÀ¹þ†ÞNzþ€<¢Ñõïƒþõ=Ô›ôï† )H*ëßz?oüŸÉzyƒ¶_Pïn wa2ˆßþÇ&îû£­ ZéSœ;\Õýðñ6é¥C÷ƒ?÷¨…^ öÆÆ`2!¹ÐAtèö~tÝ»÷qüñ üÿ µÿv”vnhç“‘÷pý¸ºÿØ$?š[ÑVü£M~D­nàúØý ÐN6iúâ(l— ÅǃÃA%•DOÁÙ}Òt2&2šÞ&#"Oâ£ø ?¡ÿ•Oâùþ·Þ˜åóû½{’/zìÆ3ö±÷LŸÔ:<ÚTò=GÔ8Ìê [E@‘9"Ø©˜7ì6ç¥6r¡Ãä~ÜN?÷¡)TÛâ¶ÃƒÔvÈRI*'LþWž0yMí|õ½´êÓ¥€ÖR@‹aÈíàᆷ×ÂÓ`Â1÷ðSò8¦ ©“÷!ׄcßþŒ¯ÝŸ 9g“TßTèÑôÚçŸÆÂ·±ÏwÞ/UHâŽÐdÇ3Àyà<p8Oœ§œ'Îç €óÀyÀyà<pž8Oœ§œ— ¸ ÞÍ`×`×`׿¾Ý‰ß`Øõ£.ÇOBa¬ýp,§×7æsáÙ|žú|o¹¹ OÐ\à~ ¹èÜ—  È@dp'~ƒ€ @ È@d 2h€ "@¦0íV´[1ÇjÅŒ¤Ó÷ÖVqNÝú™¯?ÑàŒXµR$‹WK̺õ3?$ó¶Á"¹YxëgŽæ­ƒEr3ñÖÏÉäåj,bÆÚ[ k7iSæòÙfðûöü¾-ð{&¶Ž,†à àáâpa88œN6œˆt·ÒÝŽ‰V;¦í•ÛsîöÏ|ýùH·R$ŸšÕþ™Q>ÊmÔt*ånÿ̃1垯õ n=Èß:XÄŒr·ʳͰHZCÔlìSë´ØæÏQqSþ ieãÕÅÕ/¿¼ûøöâg„ÑêU½ºÁ/±àô3)p|L3Gu¾ì£ÿØ~Õßxu}þ…~þEø|SòÆÅèל=¿ÜêiÊØÿmí´ãýßV³¹·Cý¿[nÿ×JúÛË2¡wƒûû’«Ý¸øõí ‰Â÷úzøøÚ¿Û(»,¦ ¯'½ÉpRƒh£Ë/} ”2à¼zõSÓŸž¿ýåU¯‚!‡{y“ FAâÝöû¿Ð‘gÀÆÉo‡$8;áü˜vU0¢_î{·¡ÀTáØ(½%A k£—ÝÃn÷ËÆ/Ü» †uÉ=‘»E¸oÈXKáax½ÉFÂ͈l9Ù™þ'¯ÌUñop)=…ü߯7þÓ®rþ£ÙqþŸVRè¸å<þé—rúÓ7=üés;©^æ÷T>é!O]Îx¦¥ÿûµžÿÞSÏìºø/VR„ÿý¢ _è“€¾BúFD@Ø;¬`M AŒÿµžÿVñ¿µçü?­¤ÿ žÿŽüpæÇÓóßaNÿÎ|ë{‡¬7þ×ÿqw_9ÿµÓrò¿•á±ðO¥DÊü‰‹ýbþPOJœÇõ‰ö¤¦ÿ«¤Yø¿·ÈÿŽÿ[I1þ¦%Ñ€¼T@¥e~ó×(ò[˜"ü¯7þ+`ÿs÷ÿÚIþÿË‘þ…Eö7ýUû_(÷¯±ØŸ¤ÿ£ƒpå_ýMSþc¤ß—îÿní·ÿ·’’{¸ÿáO½áèÕÝ?ÙÕÜÿèOgãð*óïø‚ætI]L''˜&샯›¨³¡\dMoÊ&OÑ%n­Ö>&ƒè:íí?†7£­èi¹½){[S€Þ¹·ñ't‹6_îM’5þ@HÖÿü ?ìÿØøñÿ»ÇÿzøŸÿ}Áÿþw'ãßßl¤\œ½Múx@{ú†?ä®Ë&÷PËùèâB‡Óî´†FŽí—Öñ—‹ËóMâü¼m Í+¥ú… f1ŸØì¼ACr‹_~õÓO[!L‡?í°NG÷äæØÍ°Ùÿþ;¹óæâK‡@ã,áBŒæŸÂç§fƒ”küðƒt;®ÐÁñÃèf#À`2i >ô0Ó`à¡ÿôÈe÷1ŸúO}ëùÄ7d4™ úSrg ;Gmµ2ns‘¯ érøßJüϦ‹ÿo'…¢›ÿ|ò_PÊýqë¦÷ÿÜ5’ãt`~  ¸ 0XñÛþ×xÿŸŠÿ-ÿÏNbø_äþ¿ ”ûÿâÖMïÿ ¸kþü7¼ÐÿŸ(þ¯Ïm€.¹ä’K.¹ä’K.¹ä’K.¹ä’K.¹ä’K.¹ä’K.¹ä’K.-kúÿ£Û»™Ðxtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/000077500000000000000000000000001456314707100232205ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/gecrsmv.h000066400000000000000000000101731456314707100250410ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_GECRSMV_H #define CXXBLAS_SPARSELEVEL2_GECRSMV_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GECRSMV 1 namespace cxxblas { template void gecrsmv(Transpose trans, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const VX *x, const BETA &beta, VY *y); #ifdef HAVE_SPARSEBLAS template typename If::isBlasCompatibleInteger gecrsmv(Transpose trans, IndexType m, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *x, const float &beta, float *y); template typename If::isBlasCompatibleInteger gecrsmv(Transpose trans, IndexType m, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *x, const double &beta, double *y); template typename If::isBlasCompatibleInteger gecrsmv(Transpose trans, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *x, const ComplexFloat &beta, ComplexFloat *y); template typename If::isBlasCompatibleInteger gecrsmv(Transpose trans, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *x, const ComplexDouble &beta, ComplexDouble *y); #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL2_GECRSMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/gecrsmv.tcc000066400000000000000000000246411456314707100253700ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_GECRSMV_TCC #define CXXBLAS_SPARSELEVEL2_GECRSMV_TCC 1 #include "xflens/cxxblas/auxiliary/auxiliary.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GECRSMV 1 namespace cxxblas { template void gecrsmv(Transpose trans, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const VX *x, const BETA &beta, VY *y) { CXXBLAS_DEBUG_OUT("gecrsmv_generic"); using cxxblas::conjugate; const bool init = (beta==BETA(0)); const bool scale = (beta!=BETA(0) && beta!=BETA(1)); // // Index base of the CRS matrix is stored in first Element of ia // --ia; ja -= ia[1]; A -= ia[1]; if (trans==NoTrans) { // // Make y one-based; set correct index base for x // --y; x -= ia[1]; if (init) { for (int i=1; i<=m; ++i) { y[i] = VY(0); for (int k=ia[i]; k typename If::isBlasCompatibleInteger gecrsmv(Transpose trans, IndexType m, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *x, const float &beta, float *y) { CXXBLAS_DEBUG_OUT("gecrsmv -> [" BLAS_IMPL "] scsrmv"); char matdescra[5] = { "G***" }; matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { gecrsmv (trans, m, n, alpha, A, ia, ja, x, beta, y); return; } char transA = getF77BlasChar(trans); mkl_scsrmv(&transA, &m, &n, &alpha, &matdescra[0], A, ja, ia, ia+1, x, &beta, y); } template typename If::isBlasCompatibleInteger gecrsmv(Transpose trans, IndexType m, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *x, const double &beta, double *y) { CXXBLAS_DEBUG_OUT("gecrsmv -> [" BLAS_IMPL "] dcsrmv"); char matdescra[5] = { "G***" }; matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { gecrsmv (trans, m, n, alpha, A, ia, ja, x, beta, y); return; } char transA = getF77BlasChar(trans); mkl_dcsrmv(&transA, &m, &n, &alpha, &matdescra[0], A, ja, ia, ia+1, x, &beta, y); } template typename If::isBlasCompatibleInteger gecrsmv(Transpose trans, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *x, const ComplexFloat &beta, ComplexFloat *y) { CXXBLAS_DEBUG_OUT("gecrsmv -> [" BLAS_IMPL "] ccsrmv"); char matdescra[5] = { "G***" }; matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { gecrsmv (trans, m, n, alpha, A, ia, ja, x, beta, y); return; } char transA = getF77BlasChar(trans); if (trans==Conj) { transA = 'C'; mkl_ccscmv(&transA, &m, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(x), reinterpret_cast(&beta), reinterpret_cast(y)); } else { mkl_ccsrmv(&transA, &m, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(x), reinterpret_cast(&beta), reinterpret_cast(y)); } } template typename If::isBlasCompatibleInteger gecrsmv(Transpose trans, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *x, const ComplexDouble &beta, ComplexDouble *y) { CXXBLAS_DEBUG_OUT("gecrsmv -> [" BLAS_IMPL "] zcsrmv"); char matdescra[5] = { "G***" }; matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { gecrsmv (trans, m, n, alpha, A, ia, ja, x, beta, y); return; } char transA = getF77BlasChar(trans); if (trans==Conj) { transA = 'C'; mkl_zcscmv(&transA, &m, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(x), reinterpret_cast(&beta), reinterpret_cast(y)); } else { mkl_zcsrmv(&transA, &m, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(x), reinterpret_cast(&beta), reinterpret_cast(y)); } } #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL2_GECRSMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/heccsmv.h000066400000000000000000000063141456314707100250250ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_HECCSMV_H #define CXXBLAS_SPARSELEVEL2_HECCSMV_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HECCSMV 1 namespace cxxblas { template void heccsmv(StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const VX *x, const BETA &beta, VY *y); #ifdef HAVE_SPARSEBLAS template typename If::isBlasCompatibleInteger heccsmv(StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *x, const ComplexFloat &beta, ComplexFloat *y); template typename If::isBlasCompatibleInteger heccsmv(StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *x, const ComplexDouble &beta, ComplexDouble *y); #endif // HAVE_SPARSEBLAS } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL2_HECCSMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/heccsmv.tcc000066400000000000000000000146641456314707100253560ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_HECCSMV_TCC #define CXXBLAS_SPARSELEVEL2_HECCSMV_TCC 1 #include "xflens/cxxblas/auxiliary/auxiliary.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HECRSMV 1 namespace cxxblas { template void heccsmv(StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const VX *x, const BETA &beta, VY *y) { CXXBLAS_DEBUG_OUT("heccsmv_generic"); using cxxblas::conjugate; // // The correct index base of the CCS matrix is stored in first Element of ja // --ja; ia -= ja[1]; A -= ja[1]; // // Let x, y be one-based; x_, y_ get correct index base ja[1] // const VX *x_ = x - ja[1]; VY *y_ = y - ja[1]; --x; --y; if (beta==BETA(0)) { for (int i=1; i<=n; ++i) { y[i] = 0; } } else if (beta!=BETA(1)) { for (int i=1; i<=n; ++i) { y[i] *= beta; } } if (upLo==Lower) { for (int j=1, J=ja[1]; j<=n; ++j, ++J) { if (ja[j] typename If::isBlasCompatibleInteger heccsmv(StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *x, const ComplexFloat &beta, ComplexFloat *y) { CXXBLAS_DEBUG_OUT("heccsmv -> [" BLAS_IMPL "] ccscmv"); char matdescra[5] = { "H*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { heccsmv (upLo, n, alpha, A, ia, ja, x, beta, y); return; } char transA = 'N'; mkl_ccscmv(&transA, &n, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(x), reinterpret_cast(&beta), reinterpret_cast(y)); } template typename If::isBlasCompatibleInteger heccsmv(StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *x, const ComplexDouble &beta, ComplexDouble *y) { CXXBLAS_DEBUG_OUT("heccsmv -> [" BLAS_IMPL "] zcscmv"); char matdescra[5] = { "H*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { heccsmv (upLo, n, alpha, A, ia, ja, x, beta, y); return; } char transA = 'N'; mkl_zcscmv(&transA, &n, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(x), reinterpret_cast(&beta), reinterpret_cast(y)); } #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL2_HECCSMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/hecrsmv.h000066400000000000000000000063161456314707100250460ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_HECRSMV_H #define CXXBLAS_SPARSELEVEL2_HECRSMV_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HECRSMV 1 namespace cxxblas { template void hecrsmv(StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const VX *x, const BETA &beta, VY *y); #ifdef HAVE_SPARSEBLAS template typename If::isBlasCompatibleInteger hecrsmv(StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *x, const ComplexFloat &beta, ComplexFloat *y); template typename If::isBlasCompatibleInteger hecrsmv(StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *x, const ComplexDouble &beta, ComplexDouble *y); #endif // HAVE_SPARSEBLAS } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL2_HECRSMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/hecrsmv.tcc000066400000000000000000000146651456314707100253760ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_HECRSMV_TCC #define CXXBLAS_SPARSELEVEL2_HECRSMV_TCC 1 #include "xflens/cxxblas/auxiliary/auxiliary.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HECRSMV 1 namespace cxxblas { template void hecrsmv(StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const VX *x, const BETA &beta, VY *y) { CXXBLAS_DEBUG_OUT("hecrsmv_generic"); using cxxblas::conjugate; // // The correct index base of the CRS matrix is stored in first Element of ia // --ia; ja -= ia[1]; A -= ia[1]; // // Let x, y be one-based; x_, y_ get correct index base ia[1] // const VX *x_ = x - ia[1]; VY *y_ = y - ia[1]; --x; --y; if (beta==BETA(0)) { for (int i=1; i<=n; ++i) { y[i] = 0; } } else if (beta!=BETA(1)) { for (int i=1; i<=n; ++i) { y[i] *= beta; } } if (upLo==Upper) { for (int i=1, I=ia[1]; i<=n; ++i, ++I) { if (ia[i] typename If::isBlasCompatibleInteger hecrsmv(StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *x, const ComplexFloat &beta, ComplexFloat *y) { CXXBLAS_DEBUG_OUT("hecrsmv -> [" BLAS_IMPL "] ccsrmv"); char matdescra[5] = { "H*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { hecrsmv (upLo, n, alpha, A, ia, ja, x, beta, y); return; } char transA = 'N'; mkl_ccsrmv(&transA, &n, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(x), reinterpret_cast(&beta), reinterpret_cast(y)); } template typename If::isBlasCompatibleInteger hecrsmv(StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *x, const ComplexDouble &beta, ComplexDouble *y) { CXXBLAS_DEBUG_OUT("hecrsmv -> [" BLAS_IMPL "] zcsrmv"); char matdescra[5] = { "H*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { hecrsmv (upLo, n, alpha, A, ia, ja, x, beta, y); return; } char transA = 'N'; mkl_zcsrmv(&transA, &n, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(x), reinterpret_cast(&beta), reinterpret_cast(y)); } #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL2_HECRSMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/sparselevel2.h000066400000000000000000000043101456314707100257760ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_SPARSELEVEL2_H #define CXXBLAS_SPARSELEVEL2_SPARSELEVEL2_H 1 namespace cxxblas { template char getIndexBaseChar(IndexType x); } // namespace cxxblas #include "xflens/cxxblas/sparselevel2/gecrsmv.h" #include "xflens/cxxblas/sparselevel2/heccsmv.h" #include "xflens/cxxblas/sparselevel2/hecrsmv.h" #include "xflens/cxxblas/sparselevel2/syccsmv.h" #include "xflens/cxxblas/sparselevel2/sycrsmv.h" #include "xflens/cxxblas/sparselevel2/trccssv.h" #include "xflens/cxxblas/sparselevel2/trcrssv.h" #endif // CXXBLAS_SPARSELEVEL2_SPARSELEVEL2_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/sparselevel2.tcc000066400000000000000000000046351456314707100263320ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_SPARSELEVEL2_TCC #define CXXBLAS_SPARSELEVEL2_SPARSELEVEL2_TCC 1 namespace cxxblas { template char getIndexBaseChar(IndexType x) { if (x==IndexType(0)) { // zero-based Indexing return 'C'; } else if (x==IndexType(1)) { // one-based Indexing return 'F'; } // Error return 'E'; } } // namespace cxxblas #include "xflens/cxxblas/sparselevel2/gecrsmv.tcc" #include "xflens/cxxblas/sparselevel2/heccsmv.tcc" #include "xflens/cxxblas/sparselevel2/hecrsmv.tcc" #include "xflens/cxxblas/sparselevel2/syccsmv.tcc" #include "xflens/cxxblas/sparselevel2/sycrsmv.tcc" #include "xflens/cxxblas/sparselevel2/trccssv.tcc" #include "xflens/cxxblas/sparselevel2/trcrssv.tcc" #endif // CXXBLAS_SPARSELEVEL2_SPARSELEVEL2_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/syccsmv.h000066400000000000000000000077321456314707100250710ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_SYCCSMV_H #define CXXBLAS_SPARSELEVEL2_SYCCSMV_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYCCSMV 1 namespace cxxblas { template void syccsmv(StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const VX *x, const BETA &beta, VY *y); #ifdef HAVE_SPARSEBLAS template typename If::isBlasCompatibleInteger syccsmv(StorageUpLo upLo, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *x, const float &beta, float *y); template typename If::isBlasCompatibleInteger syccsmv(StorageUpLo upLo, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *x, const double &beta, double *y); template typename If::isBlasCompatibleInteger syccsmv(StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *x, const ComplexFloat &beta, ComplexFloat *y); template typename If::isBlasCompatibleInteger syccsmv(StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *x, const ComplexDouble &beta, ComplexDouble *y); #endif // HAVE_SPARSEBLAS } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL2_SYCCSMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/syccsmv.tcc000066400000000000000000000203351456314707100254050ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_SYCCSMV_TCC #define CXXBLAS_SPARSELEVEL2_SYCCSMV_TCC 1 #include "xflens/cxxblas/auxiliary/auxiliary.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYCCSMV 1 namespace cxxblas { template void syccsmv(StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const VX *x, const BETA &beta, VY *y) { CXXBLAS_DEBUG_OUT("syccsmv_generic"); // // The correct index base of the CCS matrix is stored in first Element of ja // --ja; ia -= ja[1]; A -= ja[1]; // // Let x, y be one-based; x_, y_ get correct index base ja[1] // const VX *x_ = x - ja[1]; VY *y_ = y - ja[1]; --x; --y; if (beta==BETA(0)) { for (int i=1; i<=n; ++i) { y[i] = 0; } } else if (beta!=BETA(1)) { for (int i=1; i<=n; ++i) { y[i] *= beta; } } if (upLo==Lower) { for (int j=1, J=ja[1]; j<=n; ++j, ++J) { if (ja[j] typename If::isBlasCompatibleInteger syccsmv(StorageUpLo upLo, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *x, const float &beta, float *y) { CXXBLAS_DEBUG_OUT("syccsmv -> [" BLAS_IMPL "] scscmv"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { syccsmv (upLo, n, alpha, A, ia, ja, x, beta, y); return; } char transA = 'N'; mkl_scscmv(&transA, &n, &n, &alpha, &matdescra[0], A, ia, ja, ja+1, x, &beta, y); } template typename If::isBlasCompatibleInteger syccsmv(StorageUpLo upLo, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *x, const double &beta, double *y) { CXXBLAS_DEBUG_OUT("syccsmv -> [" BLAS_IMPL "] dcscmv"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { syccsmv (upLo, n, alpha, A, ia, ja, x, beta, y); return; } char transA = 'N'; mkl_dcscmv(&transA, &n, &n, &alpha, &matdescra[0], A, ia, ja, ja+1, x, &beta, y); } template typename If::isBlasCompatibleInteger syccsmv(StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *x, const ComplexFloat &beta, ComplexFloat *y) { CXXBLAS_DEBUG_OUT("syccsmv -> [" BLAS_IMPL "] ccscmv"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { syccsmv (upLo, n, alpha, A, ia, ja, x, beta, y); return; } char transA = 'N'; mkl_ccscmv(&transA, &n, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(x), reinterpret_cast(&beta), reinterpret_cast(y)); } template typename If::isBlasCompatibleInteger syccsmv(StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *x, const ComplexDouble &beta, ComplexDouble *y) { CXXBLAS_DEBUG_OUT("syccsmv -> [" BLAS_IMPL "] zcscmv"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { syccsmv (upLo, n, alpha, A, ia, ja, x, beta, y); return; } char transA = 'N'; mkl_zcscmv(&transA, &n, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(x), reinterpret_cast(&beta), reinterpret_cast(y)); } #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL2_SYCCSMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/sycrsmv.h000066400000000000000000000077341456314707100251120ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_SYCRSMV_H #define CXXBLAS_SPARSELEVEL2_SYCRSMV_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYCRSMV 1 namespace cxxblas { template void sycrsmv(StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const VX *x, const BETA &beta, VY *y); #ifdef HAVE_SPARSEBLAS template typename If::isBlasCompatibleInteger sycrsmv(StorageUpLo upLo, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *x, const float &beta, float *y); template typename If::isBlasCompatibleInteger sycrsmv(StorageUpLo upLo, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *x, const double &beta, double *y); template typename If::isBlasCompatibleInteger sycrsmv(StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *x, const ComplexFloat &beta, ComplexFloat *y); template typename If::isBlasCompatibleInteger sycrsmv(StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *x, const ComplexDouble &beta, ComplexDouble *y); #endif // HAVE_SPARSEBLAS } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL2_SYCRSMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/sycrsmv.tcc000066400000000000000000000200571456314707100254250ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_SYCRSMV_TCC #define CXXBLAS_SPARSELEVEL2_SYCRSMV_TCC 1 #include "xflens/cxxblas/auxiliary/auxiliary.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYCRSMV 1 namespace cxxblas { template void sycrsmv(StorageUpLo upLo, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const VX *x, const BETA &beta, VY *y) { CXXBLAS_DEBUG_OUT("sycrsmv_generic"); // // The correct index base of the CRS matrix is stored in first Element of ia // --ia; ja -= ia[1]; A -= ia[1]; // // Let x, y be one-based; x_, y_ get correct index base ia[1] // const VX *x_ = x - ia[1]; VY *y_ = y - ia[1]; --x; --y; if (beta==BETA(0)) { for (int i=1; i<=n; ++i) { y[i] = 0; } } else if (beta!=BETA(1)) { for (int i=1; i<=n; ++i) { y[i] *= beta; } } if (upLo==Upper) { for (int i=1, I=ia[1]; i<=n; ++i, ++I) { if (ia[i] typename If::isBlasCompatibleInteger sycrsmv(StorageUpLo upLo, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *x, const float &beta, float *y) { CXXBLAS_DEBUG_OUT("sycrsmv -> [" BLAS_IMPL "] scsrmv"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { sycrsmv (upLo, n, alpha, A, ia, ja, x, beta, y); return; }; char transA = 'N'; mkl_scsrmv(&transA, &n, &n, &alpha, &matdescra[0], A, ja, ia, ia+1, x, &beta, y); } template typename If::isBlasCompatibleInteger sycrsmv(StorageUpLo upLo, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *x, const double &beta, double *y) { CXXBLAS_DEBUG_OUT("sycrsmv -> [" BLAS_IMPL "] dcsrmv"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { sycrsmv (upLo, n, alpha, A, ia, ja, x, beta, y); return; } char transA = 'N'; mkl_dcsrmv(&transA, &n, &n, &alpha, &matdescra[0], A, ja, ia, ia+1, x, &beta, y); } template typename If::isBlasCompatibleInteger sycrsmv(StorageUpLo upLo, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *x, const ComplexFloat &beta, ComplexFloat *y) { CXXBLAS_DEBUG_OUT("sycrsmv -> [" BLAS_IMPL "] ccsrmv"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { sycrsmv (upLo, n, alpha, A, ia, ja, x, beta, y); return; } char transA = 'N'; mkl_ccsrmv(&transA, &n, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(x), reinterpret_cast(&beta), reinterpret_cast(y)); } template typename If::isBlasCompatibleInteger sycrsmv(StorageUpLo upLo, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *x, const ComplexDouble &beta, ComplexDouble *y) { CXXBLAS_DEBUG_OUT("sycrsmv -> [" BLAS_IMPL "] zcsrmv"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { sycrsmv (upLo, n, alpha, A, ia, ja, x, beta, y); return; } char transA = 'N'; mkl_zcsrmv(&transA, &n, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(x), reinterpret_cast(&beta), reinterpret_cast(y)); } #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL2_SYCRSMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/trccssv.h000066400000000000000000000070531456314707100250650ustar00rootroot00000000000000/* * Copyright (c) 2013, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_TRCCSSV_H #define CXXBLAS_SPARSELEVEL2_TRCCSSV_H 1 #include "xflens/cxxblas/typedefs.h" namespace cxxblas { #ifdef HAVE_SPARSEBLAS #define HAVE_CXXBLAS_TRCCSSV 1 template typename If::isBlasCompatibleInteger trccssv(StorageUpLo upLo, Transpose trans, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *x, float *y); template typename If::isBlasCompatibleInteger trccssv(StorageUpLo upLo, Transpose trans, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *x, double *y); template typename If::isBlasCompatibleInteger trccssv(StorageUpLo upLo, Transpose trans, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *x, ComplexFloat *y); template typename If::isBlasCompatibleInteger trccssv(StorageUpLo upLo, Transpose trans, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *x, ComplexDouble *y); #endif // HAVE_SPARSEBLAS } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL2_TRCCSMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/trccssv.tcc000066400000000000000000000124021456314707100254010ustar00rootroot00000000000000/* * Copyright (c) 2013, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_TRCCSSV_TCC #define CXXBLAS_SPARSELEVEL2_TRCCSSV_TCC 1 #include "xflens/cxxblas/auxiliary/auxiliary.h" #include "xflens/cxxblas/typedefs.h" namespace cxxblas { #ifdef HAVE_SPARSEBLAS #define HAVE_CXXBLAS_TRCCSSV 1 template typename If::isBlasCompatibleInteger trccssv(StorageUpLo upLo, Transpose trans, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *x, float *y) { CXXBLAS_DEBUG_OUT("trccssv -> [" BLAS_IMPL "] scscsv"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E'); char transA = getF77BlasChar(trans); mkl_scscsv(&transA, &n, &n, &alpha, &matdescra[0], A, ia, ja, ja+1, x, y); } template typename If::isBlasCompatibleInteger trccssv(StorageUpLo upLo, Transpose trans, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *x, double *y) { CXXBLAS_DEBUG_OUT("trccssv -> [" BLAS_IMPL "] dcscsv"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E'); char transA = getF77BlasChar(trans); mkl_dcscsv(&transA, &n, &n, &alpha, &matdescra[0], A, ia, ja, ja+1, x, y); } template typename If::isBlasCompatibleInteger trccssv(StorageUpLo upLo, Transpose trans, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *x, ComplexFloat *y) { CXXBLAS_DEBUG_OUT("trccssv -> [" BLAS_IMPL "] ccscsv"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E'); char transA = getF77BlasChar(trans); mkl_ccscsv(&transA, &n, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(x), reinterpret_cast(y)); } template typename If::isBlasCompatibleInteger trccssv(StorageUpLo upLo, Transpose trans, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *x, ComplexDouble *y) { CXXBLAS_DEBUG_OUT("trccssv -> [" BLAS_IMPL "] zcscsv"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E'); char transA = getF77BlasChar(trans); mkl_zcscsv(&transA, &n, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(x), reinterpret_cast(y)); } #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL2_TRCCSSV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/trcrssv.h000066400000000000000000000070311456314707100251000ustar00rootroot00000000000000/* * Copyright (c) 2013, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_TRCRSSV_H #define CXXBLAS_SPARSELEVEL2_TRCRSSV_H 1 #include "xflens/cxxblas/typedefs.h" namespace cxxblas { #ifdef HAVE_SPARSEBLAS #define HAVE_CXXBLAS_TRCRSSV 1 template typename If::isBlasCompatibleInteger trcrssv(StorageUpLo upLo, Transpose trans, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *x, float *y); template typename If::isBlasCompatibleInteger trcrssv(StorageUpLo upLo, Transpose trans, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *x, double *y); template typename If::isBlasCompatibleInteger trcrssv(StorageUpLo upLo, Transpose trans, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *x, ComplexFloat *y); template typename If::isBlasCompatibleInteger trcrssv(StorageUpLo upLo, Transpose trans, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *x, ComplexDouble *y); #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL2_TRCRSSV_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel2/trcrssv.tcc000066400000000000000000000123061456314707100254230ustar00rootroot00000000000000/* * Copyright (c) 2013, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL2_TRCRSSV_TCC #define CXXBLAS_SPARSELEVEL2_TRCRSSV_TCC 1 #include "xflens/cxxblas/typedefs.h" namespace cxxblas { #ifdef HAVE_SPARSEBLAS #define HAVE_CXXBLAS_TRCRSSV 1 template typename If::isBlasCompatibleInteger trcrssv(StorageUpLo upLo, Transpose trans, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *x, float *y) { CXXBLAS_DEBUG_OUT("trcrssv -> [" BLAS_IMPL "] scsrsv"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E') ; char transA = getF77BlasChar(trans); mkl_scsrsv(&transA, &n, &alpha, &matdescra[0], A, ja, ia, ia+1, x, y); } template typename If::isBlasCompatibleInteger trcrssv(StorageUpLo upLo, Transpose trans, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *x, double *y) { CXXBLAS_DEBUG_OUT("trcrssv -> [" BLAS_IMPL "] dcsrsv"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E') ; char transA = getF77BlasChar(trans); mkl_dcsrsv(&transA, &n, &alpha, &matdescra[0], A, ja, ia, ia+1, x, y); } template typename If::isBlasCompatibleInteger trcrssv(StorageUpLo upLo, Transpose trans, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *x, ComplexFloat *y) { CXXBLAS_DEBUG_OUT("trcrssv -> [" BLAS_IMPL "] ccsrsv"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E') ; char transA = getF77BlasChar(trans); mkl_ccsrsv(&transA, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(x), reinterpret_cast(y)); } template typename If::isBlasCompatibleInteger trcrssv(StorageUpLo upLo, Transpose trans, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *x, ComplexDouble *y) { CXXBLAS_DEBUG_OUT("trcrssv -> [" BLAS_IMPL "] zcsrsv"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E'); char transA = getF77BlasChar(trans); mkl_zcsrsv(&transA, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(x), reinterpret_cast(y)); } #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL2_TRCRSSV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/000077500000000000000000000000001456314707100232215ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/gecrsmm.h000066400000000000000000000112341456314707100250300ustar00rootroot00000000000000/* * Copyright (c) 2013, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_GECRSMM_H #define CXXBLAS_SPARSELEVEL3_GECRSMM_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GECRSMM 1 namespace cxxblas { template void gecrsmm(Transpose transA, IndexType m, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC); #ifdef HAVE_SPARSEBLAS template typename If::isBlasCompatibleInteger gecrsmm(Transpose transA, IndexType m, IndexType n, IndexType k, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *B, IndexType ldB, const float &beta, float *C, IndexType ldC); template typename If::isBlasCompatibleInteger gecrsmm(Transpose transA, IndexType m, IndexType n, IndexType k, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *B, IndexType ldB, const double &beta, double *C, IndexType ldC); template typename If::isBlasCompatibleInteger gecrsmm(Transpose transA, IndexType m, IndexType n, IndexType k, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC); template typename If::isBlasCompatibleInteger gecrsmm(Transpose transA, IndexType m, IndexType n, IndexType k, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC); #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL3_GECRSMM_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/gecrsmm.tcc000066400000000000000000000206641456314707100253610ustar00rootroot00000000000000/* * Copyright (c) 2013, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_GECRSMM_TCC #define CXXBLAS_SPARSELEVEL3_GECRSMM_TCC 1 #include "xflens/cxxblas/auxiliary/auxiliary.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_GECRSMM 1 namespace cxxblas { template void gecrsmm(Transpose transA, IndexType m, IndexType n, IndexType k, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("gecrsmm_generic"); for (IndexType i=0; i typename If::isBlasCompatibleInteger gecrsmm(Transpose transA, IndexType m, IndexType n, IndexType k, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *B, IndexType ldB, const float &beta, float *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("gecrsmm -> [" BLAS_IMPL "] scsrmm"); char matdescra[5] = { "G***" }; matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { gecrsmm (transA, m, n, k, alpha, A, ia, ja, B, ldB, beta, C, ldC); return; } char transA_ = getF77BlasChar(transA); mkl_scsrmm(&transA_, &m, &n, &k, &alpha, &matdescra[0], A, ja, ia, ia+1, B, ldB, &beta, C, ldC); } template typename If::isBlasCompatibleInteger gecrsmm(Transpose transA, IndexType m, IndexType n, IndexType k, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *B, IndexType ldB, const double &beta, double *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("gecrsmm -> [" BLAS_IMPL "] dcsrmm"); char matdescra[5] = { "G***" }; matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { gecrsmm (transA, m, n, k, alpha, A, ia, ja, B, ldC, beta, C, ldC); return; } char transA_ = getF77BlasChar(transA); mkl_dcsrmm(&transA, &m, &n, &k, &alpha, &matdescra[0], A, ja, ia, ia+1, B, ldB, &beta, C, ldC); } template typename If::isBlasCompatibleInteger gecrsmm(Transpose transA, IndexType m, IndexType n, IndexType k, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("gecrsmm -> [" BLAS_IMPL "] ccsrmm"); char matdescra[5] = { "G***" }; matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { gecrsmm (transA, m, n, k, alpha, A, ia, ja, B, ldB, beta, C, ldC); return; } char transA_ = getF77BlasChar(transA); if (transA==Conj) { transA_ = 'C'; mkl_ccscmm(&transA_, &m, &n, k, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(B), ldB, reinterpret_cast(&beta), reinterpret_cast(C), ldC); } else { mkl_ccsrmm(&transA_, &m, &n, &k, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(B), ldB, reinterpret_cast(&beta), reinterpret_cast(C), ldC); } } template typename If::isBlasCompatibleInteger gecrsmm(Transpose transA, IndexType m, IndexType n, IndexType k, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("gecrsmm -> [" BLAS_IMPL "] zcsrmm"); char matdescra[5] = { "G***" }; matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { gecrsmm (transA, m, n, k, alpha, A, ia, ja, B, ldB, beta, C, ldC); return; } char transA_ = getF77BlasChar(transA); if (transA==Conj) { transA_ = 'C'; mkl_zcscmm(&transA_, &m, &n, &k, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(B), ldB, reinterpret_cast(&beta), reinterpret_cast(C), ldC); } else { mkl_zcsrmm(&transA_, &m, &n, &k, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(B), ldB, reinterpret_cast(&beta), reinterpret_cast(C), ldC); } } #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL3_GECRSMM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/heccsmm.h000066400000000000000000000070371456314707100250200ustar00rootroot00000000000000/* * Copyright (c) 2013, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_HECCSMM_H #define CXXBLAS_SPARSELEVEL3_HECCSMM_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HECCSMM 1 namespace cxxblas { template void heccsmm(StorageUpLo upLo, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC); #ifdef HAVE_SPARSEBLAS template typename If::isBlasCompatibleInteger heccsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC); template typename If::isBlasCompatibleInteger heccsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC); #endif // HAVE_SPARSEBLAS } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL3_HECCSMM_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/heccsmm.tcc000066400000000000000000000125631456314707100253420ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_HECCSMM_TCC #define CXXBLAS_SPARSELEVEL3_HECCSMM_TCC 1 #include "xflens/cxxblas/auxiliary/auxiliary.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HECCSMM 1 namespace cxxblas { template void heccsmm(StorageUpLo upLo, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("heccsmm_generic"); for (IndexType i=0; i typename If::isBlasCompatibleInteger heccsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("heccsmm -> [" BLAS_IMPL "] ccscmm"); char matdescra[5] = { "H*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { heccsmm (upLo, m, n, alpha, A, ia, ja, B, ldB, beta, C, ldC); return; } char transA = 'N'; mkl_ccscmm(&transA, &m, &n, &m, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(B), &ldB, reinterpret_cast(&beta), reinterpret_cast(C), &ldC); } template typename If::isBlasCompatibleInteger heccsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("heccsmm -> [" BLAS_IMPL "] zcscmm"); char matdescra[5] = { "H*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { heccsmm (upLo, m, n, alpha, A, ia, ja, B, ldB, beta, C, ldC); return; } char transA = 'N'; mkl_zcscmm(&transA, &m, &n, &m, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(B), &ldB, reinterpret_cast(&beta), reinterpret_cast(C), &ldC); } #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL3_HECCSMM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/hecrsmm.h000066400000000000000000000070441456314707100250350ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_HECRSMM_H #define CXXBLAS_SPARSELEVEL3_HECRSMM_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HECRSMM 1 namespace cxxblas { template void hecrsmm(StorageUpLo upLo, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC); #ifdef HAVE_SPARSEBLAS template typename If::isBlasCompatibleInteger hecrsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC); template typename If::isBlasCompatibleInteger hecrsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC); #endif // HAVE_SPARSEBLAS } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL3_HECRSMM_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/hecrsmm.tcc000066400000000000000000000125631456314707100253610ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_HECRSMM_TCC #define CXXBLAS_SPARSELEVEL3_HECRSMM_TCC 1 #include "xflens/cxxblas/auxiliary/auxiliary.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_HECRSMM 1 namespace cxxblas { template void hecrsmm(StorageUpLo upLo, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("hecrsmm_generic"); for (IndexType i=0; i typename If::isBlasCompatibleInteger hecrsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("hecrsmm -> [" BLAS_IMPL "] ccsrmm"); char matdescra[5] = { "H*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { hecrsmm (upLo, m, n, alpha, A, ia, ja, B, ldB, beta, C, ldC); return; } char transA = 'N'; mkl_ccsrmm(&transA, &m, &n, &m, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(B), &ldB, reinterpret_cast(&beta), reinterpret_cast(C), &ldC); } template typename If::isBlasCompatibleInteger hecrsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("hecrsmm -> [" BLAS_IMPL "] zcsrmm"); char matdescra[5] = { "H*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { hecrsmm (upLo, m, n, alpha, A, ia, ja, B, ldB, beta, C, ldC); return; } char transA = 'N'; mkl_zcsrmm(&transA, &m, &n, &m, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(B), &ldB, reinterpret_cast(&beta), reinterpret_cast(C), &ldC); } #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL3_HECRSMM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/sparselevel3.h000066400000000000000000000041201456314707100257770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_SPARSELEVEL3_H #define CXXBLAS_SPARSELEVEL3_SPARSELEVEL3_H 1 #include "xflens/cxxblas/sparselevel3/gecrsmm.h" #include "xflens/cxxblas/sparselevel3/heccsmm.h" #include "xflens/cxxblas/sparselevel3/hecrsmm.h" #include "xflens/cxxblas/sparselevel3/syccsmm.h" #include "xflens/cxxblas/sparselevel3/sycrsmm.h" #include "xflens/cxxblas/sparselevel3/trccssm.h" #include "xflens/cxxblas/sparselevel3/trcrssm.h" #endif // CXXBLAS_SPARSELEVEL2_SPARSELEVEL2_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/sparselevel3.tcc000066400000000000000000000041441456314707100263270ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_SPARSELEVEL3_TCC #define CXXBLAS_SPARSELEVEL3_SPARSELEVEL3_TCC 1 #include "xflens/cxxblas/sparselevel3/gecrsmm.tcc" #include "xflens/cxxblas/sparselevel3/heccsmm.tcc" #include "xflens/cxxblas/sparselevel3/hecrsmm.tcc" #include "xflens/cxxblas/sparselevel3/syccsmm.tcc" #include "xflens/cxxblas/sparselevel3/sycrsmm.tcc" #include "xflens/cxxblas/sparselevel3/trccssm.tcc" #include "xflens/cxxblas/sparselevel3/trcrssm.tcc" #endif // CXXBLAS_SPARSELEVEL3_SPARSELEVEL3_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/syccsmm.h000066400000000000000000000107651456314707100250610ustar00rootroot00000000000000/* * Copyright (c) 2013, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_SYCCSMM_H #define CXXBLAS_SPARSELEVEL3_SYCCSMM_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYCCSMM 1 namespace cxxblas { template void syccsmm(StorageUpLo upLo, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC); #ifdef HAVE_SPARSEBLAS template typename If::isBlasCompatibleInteger syccsmm(StorageUpLo upLo, IndexType m, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *B, IndexType ldB, const float &beta, float *C, IndexType ldC); template typename If::isBlasCompatibleInteger syccsmm(StorageUpLo upLo, IndexType m, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *B, IndexType ldB, const double &beta, double *C, IndexType ldC); template typename If::isBlasCompatibleInteger syccsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC); template typename If::isBlasCompatibleInteger syccsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC); #endif // HAVE_SPARSEBLAS } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL3_SYCCSMM_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/syccsmm.tcc000066400000000000000000000171671456314707100254060ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_SYCCSMM_TCC #define CXXBLAS_SPARSELEVEL3_HECCSMM_TCC 1 #include "xflens/cxxblas/auxiliary/auxiliary.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYCCSMM 1 namespace cxxblas { template void syccsmm(StorageUpLo upLo, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("syccsmm_generic"); for (IndexType i=0; i typename If::isBlasCompatibleInteger syccsmm(StorageUpLo upLo, IndexType m, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *B, IndexType ldB, const float &beta, float *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("syccsmm -> [" BLAS_IMPL "] scscmm"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { syccsmm (upLo, m, n, alpha, A, ia, ja, B, ldB, beta, C, ldC); return; } char transA = 'N'; mkl_scscmm(&transA, &m, &n, &m, &alpha, &matdescra[0], A, ia, ja, ja+1, B, &ldB &beta, C, &ldC); } template typename If::isBlasCompatibleInteger syccsmm(StorageUpLo upLo, IndexType m, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *B, IndexType ldB, const double &beta, double *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("syccsmm -> [" BLAS_IMPL "] dcscmm"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { syccsmm (upLo, m, n, alpha, A, ia, ja, B, ldB, beta, C, ldC); return; } char transA = 'N'; mkl_dcscmm(&transA, &m, &n, &m, &alpha, &matdescra[0], A, ia, ja, ja+1, B, &ldB &beta, C, &ldC); } template typename If::isBlasCompatibleInteger syccsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("syccsmm -> [" BLAS_IMPL "] ccscmm"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { syccsmm (upLo, m, n, alpha, A, ia, ja, B, ldB, beta, C, ldC); return; } char transA = 'N'; mkl_ccscmm(&transA, &m, &n, &m, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(B), &ldB, reinterpret_cast(&beta), reinterpret_cast(C), &ldC); } template typename If::isBlasCompatibleInteger syccsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("syccsmm -> [" BLAS_IMPL "] zcscmm"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { syccsmm (upLo, m, n, alpha, A, ia, ja, B, ldB, beta, C, ldC); return; } char transA = 'N'; mkl_zcscmm(&transA, &m, &n, &m, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(B), &ldB, reinterpret_cast(&beta), reinterpret_cast(C), &ldC); } #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL3_SYCCSMM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/sycrsmm.h000066400000000000000000000107721456314707100250760ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_SYCRSMM_H #define CXXBLAS_SPARSELEVEL3_SYCRSMM_H 1 #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYCRSMM 1 namespace cxxblas { template void sycrsmm(StorageUpLo upLo, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC); #ifdef HAVE_SPARSEBLAS template typename If::isBlasCompatibleInteger sycrsmm(StorageUpLo upLo, IndexType m, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *B, IndexType ldB, const float &beta, float *C, IndexType ldC); template typename If::isBlasCompatibleInteger sycrsmm(StorageUpLo upLo, IndexType m, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *B, IndexType ldB, const double &beta, double *C, IndexType ldC); template typename If::isBlasCompatibleInteger sycrsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC); template typename If::isBlasCompatibleInteger sycrsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC); #endif // HAVE_SPARSEBLAS } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL3_SYCRSMM_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/sycrsmm.tcc000066400000000000000000000171521456314707100254170ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_SYCRSMM_TCC #define CXXBLAS_SPARSELEVEL3_SYCRSMM_TCC 1 #include "xflens/cxxblas/auxiliary/auxiliary.h" #include "xflens/cxxblas/typedefs.h" #define HAVE_CXXBLAS_SYCRSMM 1 namespace cxxblas { template void sycrsmm(StorageUpLo upLo, IndexType m, IndexType n, const ALPHA &alpha, const MA *A, const IndexType *ia, const IndexType *ja, const MB *B, IndexType ldB, const BETA &beta, MC *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("sycrsmm_generic"); for (IndexType i=0; i typename If::isBlasCompatibleInteger sycrsmm(StorageUpLo upLo, IndexType m, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *B, IndexType ldB, const float &beta, float *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("sycrsmm -> [" BLAS_IMPL "] scsrmm"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { sycrsmm (upLo, m, n, alpha, A, ia, ja, B, ldB, beta, C, ldC); return; } char transA = 'N'; mkl_scsrmm(&transA, &m, &n, &m, &alpha, &matdescra[0], A, ia, ja, ja+1, B, &ldB &beta, C, &ldC); } template typename If::isBlasCompatibleInteger sycrsmm(StorageUpLo upLo, IndexType m, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *B, IndexType ldB, const double &beta, double *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("sycrsmm -> [" BLAS_IMPL "] dcsrmm"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { sycrsmm (upLo, m, n, alpha, A, ia, ja, B, ldB, beta, C, ldC); return; } char transA = 'N'; mkl_dcsrmm(&transA, &m, &n, &m, &alpha, &matdescra[0], A, ia, ja, ja+1, B, &ldB &beta, C, &ldC); } template typename If::isBlasCompatibleInteger sycrsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *B, IndexType ldB, const ComplexFloat &beta, ComplexFloat *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("sycrsmm -> [" BLAS_IMPL "] ccsrmm"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { sycrsmm (upLo, m, n, alpha, A, ia, ja, B, ldB, beta, C, ldC); return; } char transA = 'N'; mkl_ccsrmm(&transA, &m, &n, &m, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(B), &ldB, reinterpret_cast(&beta), reinterpret_cast(C), &ldC); } template typename If::isBlasCompatibleInteger sycrsmm(StorageUpLo upLo, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *B, IndexType ldB, const ComplexDouble &beta, ComplexDouble *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("sycrsmm -> [" BLAS_IMPL "] zcsrmm"); char matdescra[5] = { "S*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); if (matdescra[3]=='E') { sycrsmm (upLo, m, n, alpha, A, ia, ja, B, ldB, beta, C, ldC); return; } char transA = 'N'; mkl_zcsrmm(&transA, &m, &n, &m, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(B), &ldB, reinterpret_cast(&beta), reinterpret_cast(C), &ldC); } #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL3_SYCRSMM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/trccssm.h000066400000000000000000000077501456314707100250610ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_TRCCSSM_H #define CXXBLAS_SPARSELEVEL3_TRCCSSM_H 1 #include "xflens/cxxblas/typedefs.h" namespace cxxblas { #ifdef HAVE_SPARSEBLAS #define HAVE_CXXBLAS_TRCCSSM 1 template typename If::isBlasCompatibleInteger trccssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *B, IndexType ldB, float *C, IndexType ldC); template typename If::isBlasCompatibleInteger trccssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *B, IndexType ldB, double *C, IndexType ldC); template typename If::isBlasCompatibleInteger trccssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *B, IndexType ldB, ComplexFloat *C, IndexType ldC); template typename If::isBlasCompatibleInteger trccssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *B, IndexType ldB, ComplexDouble *C, IndexType ldC); #endif // HAVE_SPARSEBLAS } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL3_TRCCSSM_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/trccssm.tcc000066400000000000000000000132751456314707100254020ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_TRCCSSM_TCC #define CXXBLAS_SPARSELEVEL3_TRCCSSM_TCC 1 #include "xflens/cxxblas/auxiliary/auxiliary.h" #include "xflens/cxxblas/typedefs.h" namespace cxxblas { #ifdef HAVE_SPARSEBLAS #define HAVE_CXXBLAS_TRCCSSM 1 template typename If::isBlasCompatibleInteger trccssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *B, IndexType ldB, float *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("trccssm -> [" BLAS_IMPL "] scscsm"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E'); char transA = getF77BlasChar(trans); mkl_scscsm(&transA, &m, &n, &alpha, &matdescra[0], A, ia, ja, ja+1, B, &ldB, C, &ldC); } template typename If::isBlasCompatibleInteger trccssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *B, IndexType ldB, double *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("trccssm -> [" BLAS_IMPL "] dcscsm"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E'); char transA = getF77BlasChar(trans); mkl_dcscsm(&transA, &m, &n, &alpha, &matdescra[0], A, ia, ja, ja+1, B, &ldB, C, &ldC); } template typename If::isBlasCompatibleInteger trccssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *B, IndexType ldB, ComplexFloat *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("trccssm -> [" BLAS_IMPL "] ccscsm"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E'); char transA = getF77BlasChar(trans); mkl_ccscsm(&transA, &m, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(B), &ldB, reinterpret_cast(C), &ldC); } template typename If::isBlasCompatibleInteger trccssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *B, IndexType ldB, ComplexDouble *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("trccssm -> [" BLAS_IMPL "] zcscsm"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E'); char transA = getF77BlasChar(trans); mkl_zcscsm(&transA, &m, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ia, ja, ja+1, reinterpret_cast(B), &ldB, reinterpret_cast(C), &ldC); } #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL3_TRCCSSM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/trcrssm.h000066400000000000000000000077511456314707100251010ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_TRCRSSM_H #define CXXBLAS_SPARSELEVEL3_TRCRSSM_H 1 #include "xflens/cxxblas/typedefs.h" namespace cxxblas { #ifdef HAVE_SPARSEBLAS #define HAVE_CXXBLAS_TRCRSSM 1 template typename If::isBlasCompatibleInteger trcrssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *B, IndexType ldB, float *C, IndexType ldC); template typename If::isBlasCompatibleInteger trcrssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *B, IndexType ldB, double *C, IndexType ldC); template typename If::isBlasCompatibleInteger trcrssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *B, IndexType ldB, ComplexFloat *C, IndexType ldC); template typename If::isBlasCompatibleInteger trcrssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *B, IndexType ldB, ComplexDouble *C, IndexType ldC); #endif // HAVE_SPARSEBLAS } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL3_TRCRSSM_H xtensor-blas-0.21.0/include/xflens/cxxblas/sparselevel3/trcrssm.tcc000066400000000000000000000132041456314707100254110ustar00rootroot00000000000000/* * Copyright (c) 2007-2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_SPARSELEVEL3_TRCRSSM_TCC #define CXXBLAS_SPARSELEVEL3_TRCRSSM_TCC 1 #include "xflens/cxxblas/typedefs.h" namespace cxxblas { #ifdef HAVE_SPARSEBLAS #define HAVE_CXXBLAS_TRCRSSM 1 template typename If::isBlasCompatibleInteger trcrssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const float &alpha, const float *A, const IndexType *ia, const IndexType *ja, const float *B, IndexType ldB, float *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("trcrssm -> [" BLAS_IMPL "] scsrsm"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E'); char transA = getF77BlasChar(trans); mkl_scsrsm(&transA, &m, &n, &alpha, &matdescra[0], A, ja, ia, ia+1, B, &ldB, C, &ldC); } template typename If::isBlasCompatibleInteger trcrssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const double &alpha, const double *A, const IndexType *ia, const IndexType *ja, const double *B, IndexType ldB, double *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("trcrssm -> [" BLAS_IMPL "] dcsrsm"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E'); char transA = getF77BlasChar(trans); mkl_dcsrsm(&transA, &m, &n, &alpha, &matdescra[0], A, ja, ia, ia+1, B, &ldB, C, &ldC); } template typename If::isBlasCompatibleInteger trcrssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const ComplexFloat &alpha, const ComplexFloat *A, const IndexType *ia, const IndexType *ja, const ComplexFloat *B, IndexType ldB, ComplexFloat *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("trcrssm -> [" BLAS_IMPL "] ccsrsm"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E'); char transA = getF77BlasChar(trans); mkl_ccsrsm(&transA, &m, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(B), &ldB, reinterpret_cast(C), &ldC); } template typename If::isBlasCompatibleInteger trcrssm(StorageUpLo upLo, Transpose trans, IndexType m, IndexType n, const ComplexDouble &alpha, const ComplexDouble *A, const IndexType *ia, const IndexType *ja, const ComplexDouble *B, IndexType ldB, ComplexDouble *C, IndexType ldC) { CXXBLAS_DEBUG_OUT("trcrssm -> [" BLAS_IMPL "] zcsrsm"); char matdescra[5] = { "T*N*" }; matdescra[1] = getF77BlasChar(upLo); matdescra[3] = getIndexBaseChar(ia[0]); ASSERT(matdescra[3]!='E'); char transA = getF77BlasChar(trans); mkl_zcsrsm(&transA, &m, &n, reinterpret_cast(&alpha), &matdescra[0], reinterpret_cast(A), ja, ia, ia+1, reinterpret_cast(B), &ldB, reinterpret_cast(C), &ldC); } #endif } // namespace cxxblas #endif // CXXBLAS_SPARSELEVEL3_TRCRSSM_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/000077500000000000000000000000001456314707100227055ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/acxpby.h000066400000000000000000000037471456314707100243570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_ACXPBY_H #define CXXBLAS_TINYLEVEL1_ACXPBY_H 1 #include "xflens/cxxblas/typedefs.h" namespace cxxblas { template void acxpby(const ALPHA &alpha, const X *x, const BETA &beta, Y *y); } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_ACXPBY_H xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/acxpby.tcc000066400000000000000000000042101456314707100246630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_ACXPBY_TCC #define CXXBLAS_TINYLEVEL1_ACXPBY_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void acxpy(const ALPHA &alpha, const X *x, const BETA &beta, Y *y) { CXXBLAS_DEBUG_OUT("acxpby [tiny]"); for (int i=0, iX=0, iY=0; i void acxpy(const ALPHA &alpha, const X *x, Y *y); } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_ACXPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/acxpy.tcc000066400000000000000000000041151456314707100245250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_ACXPY_TCC #define CXXBLAS_TINYLEVEL1_ACXPY_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void acxpy(const ALPHA &alpha, const X *x, Y *y) { CXXBLAS_DEBUG_OUT("acxpy [tiny]"); for (int i=0, iX=0, iY=0; i void axpby(const ALPHA &alpha, const X *x, const BETA &beta, Y *y); } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_AXPBY_H xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/axpby.tcc000066400000000000000000000041701456314707100245250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_AXPBY_TCC #define CXXBLAS_TINYLEVEL1_AXPBY_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void axpby(const ALPHA &alpha, const X *x, const BETA &beta, Y *y) { CXXBLAS_DEBUG_OUT("axpby [tiny]"); for (int i=0, iX=0, iY=0; i void axpy(const ALPHA &alpha, const X *x, Y *y); } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_AXPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/axpy.tcc000066400000000000000000000040751456314707100243670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_AXPY_TCC #define CXXBLAS_TINYLEVEL1_AXPY_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void axpy(const ALPHA &alpha, const X *x, Y *y) { CXXBLAS_DEBUG_OUT("axpy [tiny]"); for (int i=0, iX=0, iY=0; i void ccopy(const X *x, Y *y); } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_CCOPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/ccopy.tcc000066400000000000000000000040351456314707100245170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_CCOPY_TCC #define CXXBLAS_TINYLEVEL1_CCOPY_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void ccopy(const X *x, Y *y) { CXXBLAS_DEBUG_OUT("ccopy [tiny]"); for (int i=0, iX=0, iY=0; i void copy(const X *x, Y *y); } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_COPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/copy.tcc000066400000000000000000000040221456314707100243500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_COPY_TCC #define CXXBLAS_TINYLEVEL1_COPY_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void copy(const X *x, Y *y) { CXXBLAS_DEBUG_OUT("copy [tiny]"); for (int i=0, iX=0, iY=0; i void geaxpy(Transpose trans, const ALPHA &alpha, const MA *A, MB *B); } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_GEAXPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/geaxpy.tcc000066400000000000000000000060551456314707100247030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_GEAXPY_TCC #define CXXBLAS_TINYLEVEL1_GEAXPY_TCC 1 #include "xflens/cxxblas/cxxblas.h" #define HAVE_CXXBLAS_GEAXPY 1 namespace cxxblas { template void geaxpy(Transpose trans, const ALPHA &alpha, const MA *A, MB *B) { CXXBLAS_DEBUG_OUT("geaxpy [tiny]"); if (trans==NoTrans) { if ((ldA==n) && (ldB==n)) { axpy(alpha, A, B); return; } else { for (int i=0, iA=0, iB=0; i(alpha, A+iA, B+iB); } return; } } if (trans==Conj) { if ((ldA==n) && (ldB==n)) { acxpy(alpha, A, B); return; } else { for (int i=0, iA=0, iB=0; i(alpha, A+iA, B+iB); } return; } } if (trans==Trans) { for (int i=0, iB=0; i(alpha, A+i, B+iB); } return; } if (trans==ConjTrans) { for (int i=0, iB=0; i(alpha, A+i, B+iB); } return; } } } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_GEAXPY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/gecopy.h000066400000000000000000000037161456314707100243530ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_GECOPY_H #define CXXBLAS_TINYLEVEL1_GECOPY_H 1 #include "xflens/cxxblas/typedefs.h" namespace cxxblas { // // B = A or B = A^T // template void gecopy(Transpose trans, const MA *A, MB *B); } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_GECOPY_H xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/gecopy.tcc000066400000000000000000000051061456314707100246700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_GECOPY_TCC #define CXXBLAS_TINYLEVEL1_GECOPY_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { // // B = A or B = A^T // template void gecopy(Transpose trans, const MA *A, MB *B) { CXXBLAS_DEBUG_OUT("gecopy [tiny]"); if (trans==NoTrans) { if ((ldA==n) && (ldB==n)) { copy(A, B); return; } else { for (int i=0, iA=0, iB=0; i(A+iA, B+iB); } return; } } if (trans==Trans || trans==ConjTrans) { for (int i=0, iB=0; i(A+i, B+iB); } } if (trans==Conj || trans==Conj) { ASSERT(m==n); ASSERT(0); //gecotr(B, ldB); } } } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_GECOPY_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/gerscal.h000066400000000000000000000036461456314707100245070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_GERSCAL_H #define CXXBLAS_TINYLEVEL1_GERSCAL_H 1 #include "xflens/cxxblas/typedefs.h" namespace cxxblas { template void gerscal(const ALPHA &alpha, MA *A); } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_GERSCAL_H xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/gerscal.tcc000066400000000000000000000040531456314707100250220ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_GERSCAL_TCC #define CXXBLAS_TINYLEVEL1_GERSCAL_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gerscal(const ALPHA &alpha, MA *A) { CXXBLAS_DEBUG_OUT("gerscal [tiny]"); for (int i=0; i(alpha, A+i*ldA); } } } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_GERSCAL_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/gescal.h000066400000000000000000000036421456314707100243210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_GESCAL_H #define CXXBLAS_TINYLEVEL1_GESCAL_H 1 #include "xflens/cxxblas/typedefs.h" namespace cxxblas { template void gescal(const ALPHA &alpha, MA *A); } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_GESCAL_H xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/gescal.tcc000066400000000000000000000040451456314707100246410ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_GESCAL_TCC #define CXXBLAS_TINYLEVEL1_GESCAL_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gescal(const ALPHA &alpha, MA *A) { CXXBLAS_DEBUG_OUT("gescal [tiny]"); for (int i=0; i(alpha, A+i*ldA); } } } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_GESCAL_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/rscal.h000066400000000000000000000036261456314707100241710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_RSCAL_H #define CXXBLAS_TINYLEVEL1_RSCAL_H 1 #include "xflens/cxxblas/typedefs.h" namespace cxxblas { template void rscal(const ALPHA &alpha, Y *y); } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_RSCAL_H xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/rscal.tcc000066400000000000000000000040061456314707100245040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_RSCAL_TCC #define CXXBLAS_TINYLEVEL1_RSCAL_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void rscal(const ALPHA &alpha, Y *y) { CXXBLAS_DEBUG_OUT("rscal [tiny]"); for (int i=0, iY=0; i void scal(const ALPHA &alpha, Y *y); } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL1_SCAL_H xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel1/scal.tcc000066400000000000000000000040011456314707100243150ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL1_SCAL_TCC #define CXXBLAS_TINYLEVEL1_SCAL_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void scal(const ALPHA &alpha, Y *y) { CXXBLAS_DEBUG_OUT("scal [tiny]"); for (int i=0, iY=0; i void gemv(Transpose trans, MA alpha, const MA *A, const VX *x, VY beta, VY *y); } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL2_GEMV_H xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel2/gemv.tcc000066400000000000000000000103111456314707100243330ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL2_GEMV_TCC #define CXXBLAS_TINYLEVEL2_GEMV_TCC 1 #include "xflens/cxxblas/cxxblas.h" namespace cxxblas { template void gemv_n(MA alpha, const MA *A, const VX *x, VY beta, VY *y) { CXXBLAS_DEBUG_OUT("gemv_n [tiny]"); for (int i=0, iY=0; i void gemv_c(MA alpha, const MA *A, const VX *x, VY beta, VY *y) { CXXBLAS_DEBUG_OUT("gemv_c [tiny]"); for (int i=0, iY=0; i void gemv_t(MA alpha, const MA *A, const VX *x, VY beta, VY *y) { CXXBLAS_DEBUG_OUT("gemv_t [tiny]"); for (int j=0, jY=0; j void gemv_ct(MA alpha, const MA *A, const VX *x, VY beta, VY *y) { CXXBLAS_DEBUG_OUT("gemv_t [tiny]"); for (int j=0, jY=0; j void gemv(Transpose trans, MA alpha, const MA *A, const VX *x, VY beta, VY *y) { CXXBLAS_DEBUG_OUT("gemv [tiny]"); if (trans==NoTrans) { gemv_n(alpha, A, x, beta, y); } else if (trans==Trans) { gemv_t(alpha, A, x, beta, y); } else if (trans==Conj){ gemv_c(alpha, A, x, beta, y); } else if (trans==ConjTrans){ gemv_ct(alpha, A, x, beta, y); } } } // namespace cxxblas #endif // CXXBLAS_TINYLEVEL2_GEMV_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel2/tinylevel2.h000066400000000000000000000034311456314707100251550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL2_TINYLEVEL2_H #define CXXBLAS_TINYLEVEL2_TINYLEVEL2_H 1 #include "xflens/cxxblas/tinylevel2/gemv.h" #endif // CXXBLAS_TINYLEVEL2_TINYLEVEL2_H xtensor-blas-0.21.0/include/xflens/cxxblas/tinylevel2/tinylevel2.tcc000066400000000000000000000034411456314707100255000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TINYLEVEL2_TINYLEVEL2_TCC #define CXXBLAS_TINYLEVEL2_TINYLEVEL2_TCC 1 #include "xflens/cxxblas/tinylevel2/gemv.tcc" #endif // CXXBLAS_TINYLEVEL2_TINYLEVEL2_TCC xtensor-blas-0.21.0/include/xflens/cxxblas/typedefs.h000066400000000000000000000043211456314707100226050ustar00rootroot00000000000000/* * Copyright (c) 2009, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXBLAS_TYPEDEFS_H #define CXXBLAS_TYPEDEFS_H 1 // #include namespace cxxblas { #ifndef CXXBLAS_COMPLEX_TYPES #define CXXBLAS_COMPLEX_TYPES 1 typedef std::complex ComplexFloat; typedef std::complex ComplexDouble; #endif // CXXBLAS_COMPLEX_TYPES enum StorageOrder { RowMajor, ColMajor }; enum StorageUpLo { Upper = 'U', Lower = 'L' }; enum Diag { Unit = 'U', NonUnit = 'N' }; enum Side { Left = 'L', Right = 'R' }; enum Transpose {NoTrans=0, Conj=1, Trans=2, ConjTrans=3}; } // namespace cxxblas #endif // CXXBLAS_TYPEDEFS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/000077500000000000000000000000001456314707100211235ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxlapack/CMakeLists.txt000066400000000000000000000002431456314707100236620ustar00rootroot00000000000000install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/flens FILES_MATCHING PATTERN "*.h" PATTERN "*.tcc" PATTERN "*.cxx" ) xtensor-blas-0.21.0/include/xflens/cxxlapack/LICENSE000066400000000000000000000027441456314707100221370ustar00rootroot00000000000000Copyright (c) 2007-2014, Michael Lehn All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the FLENS development group nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. xtensor-blas-0.21.0/include/xflens/cxxlapack/README.md000066400000000000000000000003471456314707100224060ustar00rootroot00000000000000# FLENS: Flexible Library for Efficient Numerical Solutions This folder contains slightly modified code from the [FLENS Library](https://github.com/michael-lehn/FLENS). The FLENS library is published under a BSD-3-Clause license. xtensor-blas-0.21.0/include/xflens/cxxlapack/cxxlapack.cxx000066400000000000000000000034511456314707100236300ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_CXXLAPACK_CXX #define CXXLAPACK_CXXLAPACK_CXX 1 #include "xflens/cxxlapack/cxxlapack.h" #include "xflens/cxxlapack/cxxlapack.tcc" #endif // CXXLAPACK_CXXLAPACK_CXX 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/cxxlapack.h000066400000000000000000000034031456314707100232520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_CXXLAPACK_H #define CXXLAPACK_CXXLAPACK_H 1 #include "xflens/cxxlapack/interface/interface.h" #endif // CXXLAPACK_CXXLAPACK_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/cxxlapack.tcc000066400000000000000000000034131456314707100235750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_CXXLAPACK_TCC #define CXXLAPACK_CXXLAPACK_TCC 1 #include "xflens/cxxlapack/interface/interface.tcc" #endif // CXXLAPACK_CXXLAPACK_TCC 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/000077500000000000000000000000001456314707100230635ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/bbcsd.h000066400000000000000000000131061456314707100243120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_BBCSD_H #define CXXLAPACK_INTERFACE_BBCSD_H 1 #include namespace cxxlapack { template IndexType bbcsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, IndexType m, IndexType p, IndexType q, float *theta, float *phi, float *U1, IndexType ldU1, float *U2, IndexType ldU2, float *V1t, IndexType ldV1t, float *V2t, IndexType ldV2t, const float *b11d, const float *b11e, const float *b12d, const float *b12e, float *work, IndexType lWork); template IndexType bbcsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, IndexType m, IndexType p, IndexType q, double *theta, double *phi, double *U1, IndexType ldU1, double *U2, IndexType ldU2, double *V1t, IndexType ldV1t, double *V2t, IndexType ldV2t, const double *b11d, const double *b11e, const double *b12d, const double *b12e, double *work, IndexType lWork); template IndexType bbcsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, IndexType m, IndexType p, IndexType q, float *theta, float *phi, std::complex *U1, IndexType ldU1, std::complex *U2, IndexType ldU2, std::complex *V1t, IndexType ldV1t, std::complex *V2t, IndexType ldV2t, const float *b11d, const float *b11e, const float *b12d, const float *b12e, float *work, IndexType lWork); template IndexType bbcsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, IndexType m, IndexType p, IndexType q, double *theta, double *phi, std::complex *U1, IndexType ldU1, std::complex *U2, IndexType ldU2, std::complex *V1t, IndexType ldV1t, std::complex *V2t, IndexType ldV2t, const double *b11d, const double *b11e, const double *b12d, const double *b12e, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_BBCSD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/bbcsd.tcc000066400000000000000000000224231456314707100246360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_BBCSD_TCC #define CXXLAPACK_INTERFACE_BBCSD_TCC 1 #include #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType bbcsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, IndexType m, IndexType p, IndexType q, float *theta, float *phi, float *U1, IndexType ldU1, float *U2, IndexType ldU2, float *V1t, IndexType ldV1t, float *V2t, IndexType ldV2t, const float *b11d, const float *b11e, const float *b12d, const float *b12e, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sbbcsd"); LAPACK_IMPL(sbbcsd)(&jobu1, &jobu2, &jobv1t, &jobv2t, &trans, &m, &p, &q, theta, phi, U1, &ldU1, U2, &ldU2, V1t, &ldV1t, V2t, &ldV2t, b11d, b11e, b12d, b12e, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType bbcsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, IndexType m, IndexType p, IndexType q, double *theta, double *phi, double *U1, IndexType ldU1, double *U2, IndexType ldU2, double *V1t, IndexType ldV1t, double *V2t, IndexType ldV2t, const double *b11d, const double *b11e, const double *b12d, const double *b12e, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dbbcsd"); LAPACK_IMPL(dbbcsd)(&jobu1, &jobu2, &jobv1t, &jobv2t, &trans, &m, &p, &q, theta, phi, U1, &ldU1, U2, &ldU2, V1t, &ldV1t, V2t, &ldV2t, b11d, b11e, b12d, b12e, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType bbcsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, IndexType m, IndexType p, IndexType q, float *theta, float *phi, std::complex *U1, IndexType ldU1, std::complex *U2, IndexType ldU2, std::complex *V1t, IndexType ldV1t, std::complex *V2t, IndexType ldV2t, const float *b11d, const float *b11e, const float *b12d, const float *b12e, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cbbcsd"); LAPACK_IMPL(cbbcsd)(&jobu1, &jobu2, &jobv1t, &jobv2t, &trans, &m, &p, &q, theta, phi, reinterpret_cast(U1), &ldU1, reinterpret_cast(U2), &ldU2, reinterpret_cast(V1t), &ldV1t, reinterpret_cast(V2t), &ldV2t, b11d, b11e, b12d, b12e, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType bbcsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, IndexType m, IndexType p, IndexType q, double *theta, double *phi, std::complex *U1, IndexType ldU1, std::complex *U2, IndexType ldU2, std::complex *V1t, IndexType ldV1t, std::complex *V2t, IndexType ldV2t, const double *b11d, const double *b11e, const double *b12d, const double *b12e, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zbbcsd"); LAPACK_IMPL(zbbcsd)(&jobu1, &jobu2, &jobv1t, &jobv2t, &trans, &m, &p, &q, theta, phi, reinterpret_cast(U1), &ldU1, reinterpret_cast(U2), &ldU2, reinterpret_cast(V1t), &ldV1t, reinterpret_cast(V2t), &ldV2t, b11d, b11e, b12d, b12e, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_BBCSD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/bdsdc.h000066400000000000000000000055341456314707100243220ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_BDSDC_H #define CXXLAPACK_INTERFACE_BDSDC_H 1 #include namespace cxxlapack { template IndexType bdsdc(char upLo, char compq, IndexType n, float *d, float *e, float *U, IndexType ldU, float *VT, IndexType ldVT, float *q, IndexType *iq, float *work, IndexType *iWork); template IndexType bdsdc(char upLo, char compq, IndexType n, double *d, double *e, double *U, IndexType ldU, double *VT, IndexType ldVT, double *q, IndexType *iq, double *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_BDSDC_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/bdsdc.tcc000066400000000000000000000100231456314707100246310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_BDSDC_TCC #define CXXLAPACK_INTERFACE_BDSDC_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType bdsdc(char upLo, char compq, IndexType n, float *d, float *e, float *U, IndexType ldU, float *VT, IndexType ldVT, float *q, IndexType *iq, float *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cbdsdc"); LAPACK_IMPL(cbdsdc)(&upLo, &compq, &n, d, e, U, &ldU, VT, &ldVT, q, iq, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType bdsdc(char upLo, char compq, IndexType n, double *d, double *e, double *U, IndexType ldU, double *VT, IndexType ldVT, double *q, IndexType *iq, double *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dbdsdc"); LAPACK_IMPL(dbdsdc)(&upLo, &compq, &n, d, e, U, &ldU, VT, &ldVT, q, iq, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_BDSDC_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/bdsqr.h000066400000000000000000000100071456314707100243450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_BDSQR_H #define CXXLAPACK_INTERFACE_BDSQR_H 1 #include namespace cxxlapack { template IndexType bdsqr(char upLo, IndexType n, IndexType ncvt, IndexType nru, IndexType ncc, float *d, float *e, float *VT, IndexType ldVT, float *U, IndexType ldU, float *C, IndexType ldC, float *work); template IndexType bdsqr(char upLo, IndexType n, IndexType ncvt, IndexType nru, IndexType ncc, double *d, double *e, double *VT, IndexType ldVT, double *U, IndexType ldU, double *C, IndexType ldC, double *work); template IndexType bdsqr(char upLo, IndexType n, IndexType ncvt, IndexType nru, IndexType ncc, float *d, float *e, std::complex *VT, IndexType ldVT, std::complex *U, IndexType ldU, std::complex *C, IndexType ldC, float *rWork); template IndexType bdsqr(char upLo, IndexType n, IndexType ncvt, IndexType nru, IndexType ncc, double *d, double *e, std::complex *VT, IndexType ldVT, std::complex *U, IndexType ldU, std::complex *C, IndexType ldC, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_BDSQR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/bdsqr.tcc000066400000000000000000000150421456314707100246730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_BDSQR_TCC #define CXXLAPACK_INTERFACE_BDSQR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType bdsqr(char upLo, IndexType n, IndexType ncvt, IndexType nru, IndexType ncc, float *d, float *e, float *VT, IndexType ldVT, float *U, IndexType ldU, float *C, IndexType ldC, float *work) { IndexType info; CXXLAPACK_DEBUG_OUT("sbdsqr"); LAPACK_IMPL(sbdsqr)(&upLo, &n, &ncvt, &nru, &ncc, d, e, VT, &ldVT, U, &ldU, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType bdsqr(char upLo, IndexType n, IndexType ncvt, IndexType nru, IndexType ncc, double *d, double *e, double *VT, IndexType ldVT, double *U, IndexType ldU, double *C, IndexType ldC, double *work) { IndexType info; CXXLAPACK_DEBUG_OUT("dbdsqr"); LAPACK_IMPL(dbdsqr)(&upLo, &n, &ncvt, &nru, &ncc, d, e, VT, &ldVT, U, &ldU, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType bdsqr(char upLo, IndexType n, IndexType ncvt, IndexType nru, IndexType ncc, float *d, float *e, std::complex *VT, IndexType ldVT, std::complex *U, IndexType ldU, std::complex *C, IndexType ldC, float *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cbdsqr"); LAPACK_IMPL(cbdsqr)(&upLo, &n, &ncvt, &nru, &ncc, d, e, reinterpret_cast(VT), &ldVT, reinterpret_cast(U), &ldU, reinterpret_cast(C), &ldC, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType bdsqr(char upLo, IndexType n, IndexType ncvt, IndexType nru, IndexType ncc, double *d, double *e, std::complex *VT, IndexType ldVT, std::complex *U, IndexType ldU, std::complex *C, IndexType ldC, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zbdsqr"); LAPACK_IMPL(zbdsqr)(&upLo, &n, &ncvt, &nru, &ncc, d, e, reinterpret_cast(VT), &ldVT, reinterpret_cast(U), &ldU, reinterpret_cast(C), &ldC, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_BDSQR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/cgesv.h000066400000000000000000000046331456314707100243510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_CGESV_H #define CXXLAPACK_INTERFACE_CGESV_H 1 #include namespace cxxlapack { template IndexType zcgesv(IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, std::complex *work, std::complex *swork, double *rWork, IndexType &iter); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_CGESV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/cgesv.tcc000066400000000000000000000062111456314707100246650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_CGESV_TCC #define CXXLAPACK_INTERFACE_CGESV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType zcgesv(IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, std::complex *work, std::complex *swork, double *rWork, IndexType &iter) { IndexType info; CXXLAPACK_DEBUG_OUT("zcgesv"); LAPACK_IMPL(zcgesv)(&n, &nRhs, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, work, swork, rWork, &iter, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_CGESV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/chla_transtype.h000066400000000000000000000036511456314707100262610ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_CHLA_TRANSTYPE_H #define CXXLAPACK_INTERFACE_CHLA_TRANSTYPE_H 1 #include namespace cxxlapack { template char chla_transtype(IndexType trans); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_CHLA_TRANSTYPE_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/chla_transtype.tcc000066400000000000000000000040731456314707100266020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_CHLA_TRANSTYPE_TCC #define CXXLAPACK_INTERFACE_CHLA_TRANSTYPE_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template char chla_transtype(IndexType trans) { return LAPACK_IMPL(chla_transtype)(&trans); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_CHLA_TRANSTYPE_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/cposv.h000066400000000000000000000046311456314707100243720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_CPOSV_H #define CXXLAPACK_INTERFACE_CPOSV_H 1 #include namespace cxxlapack { template IndexType cposv(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, std::complex *work, std::complex *swork, double *rWork, IndexType &iter); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_CPOSV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/cposv.tcc000066400000000000000000000061551456314707100247170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_CPOSV_TCC #define CXXLAPACK_INTERFACE_CPOSV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { // TODO: rename this posv and put it into posv.h and posv.tcc template IndexType cposv(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, std::complex *work, std::complex *swork, double *rWork, IndexType &iter) { IndexType info; CXXLAPACK_DEBUG_OUT("zcposv"); LAPACK_IMPL(zcposv)(&uplo, &n, &nRhs, A, &ldA, B, &ldB, X, &ldX, work, swork, rWork, &iter, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_CPOSV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/disna.h000066400000000000000000000043731456314707100243410ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_DISNA_H #define CXXLAPACK_INTERFACE_DISNA_H 1 #include namespace cxxlapack { template IndexType disna(char job, IndexType m, IndexType n, const float *d, float *sep); template IndexType disna(char job, IndexType m, IndexType n, const double *d, double *sep); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_DISNA_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/disna.tcc000066400000000000000000000060371456314707100246620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_DISNA_TCC #define CXXLAPACK_INTERFACE_DISNA_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType disna(char job, IndexType m, IndexType n, const float *d, float *sep) { IndexType info; CXXLAPACK_DEBUG_OUT("sdisna"); LAPACK_IMPL(sdisna)(&job, &m, &n, d, sep, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType disna(char job, IndexType m, IndexType n, const double *d, double *sep) { IndexType info; CXXLAPACK_DEBUG_OUT("ddisna"); LAPACK_IMPL(ddisna)(&job, &m, &n, d, sep, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_DISNA_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/dspcon.h000066400000000000000000000064351456314707100245320ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPCON_H #define CXXLAPACK_INTERFACE_SPCON_H 1 #include namespace cxxlapack { template IndexType spcon(char uplo, IndexType n, const float *Ap, IndexType *iPiv, float anorm, float &rCond, std::complex *work, IndexType *iWork); template IndexType spcon(char uplo, IndexType n, const double *Ap, IndexType *iPiv, double anorm, double &rCond, double *work, IndexType *iWork); template IndexType spcon(char uplo, IndexType n, const std::complex *Ap, IndexType *iPiv, float anorm, float &rCond, std::complex *work); template IndexType spcon(char uplo, IndexType n, const std::complex *Ap, IndexType *iPiv, double anorm, double &rCond, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPCON_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/dspcon.tcc000066400000000000000000000121061456314707100250440ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPCON_TCC #define CXXLAPACK_INTERFACE_SPCON_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType spcon(char uplo, IndexType n, const float *Ap, IndexType *iPiv, float anorm, float &rCond, float *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sspcon"); LAPACK_IMPL(sspcon)(&uplo, &n, Ap, iPiv, &anorm, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spcon(char uplo, IndexType n, const double *Ap, IndexType *iPiv, double anorm, double &rCond, double *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dspcon"); LAPACK_IMPL(dspcon)(&uplo, &n, Ap, iPiv, &anorm, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spcon(char uplo, IndexType n, const std::complex *Ap, IndexType *iPiv, float anorm, float &rCond, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("cspcon"); LAPACK_IMPL(cspcon)(&uplo, &n, reinterpret_cast(Ap), iPiv, &anorm, &rCond, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spcon(char uplo, IndexType n, const std::complex *Ap, IndexType *iPiv, double anorm, double &rCond, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("zspcon"); LAPACK_IMPL(zspcon)(&uplo, &n, reinterpret_cast(Ap), iPiv, &anorm, &rCond, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPCON_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbbrd.h000066400000000000000000000110011456314707100243050ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBBRD_H #define CXXLAPACK_INTERFACE_GBBRD_H 1 #include namespace cxxlapack { template IndexType gbbrd(char vect, IndexType m, IndexType n, IndexType ncc, IndexType kl, IndexType ku, float *Ab, IndexType ldAb, float *d, float *e, float *Q, IndexType ldQ, float *PT, IndexType ldPT, float *C, IndexType ldC, float *work); template IndexType gbbrd(char vect, IndexType m, IndexType n, IndexType ncc, IndexType kl, IndexType ku, double *Ab, IndexType ldAb, double *d, double *e, double *Q, IndexType ldQ, double *PT, IndexType ldPT, double *C, IndexType ldC, double *work); template IndexType gbbrd(char vect, IndexType m, IndexType n, IndexType ncc, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldAb, float *d, float *e, std::complex *Q, IndexType ldQ, std::complex *PT, IndexType ldPT, std::complex *C, IndexType ldC, std::complex *work, double *rWork); template IndexType gbbrd(char vect, IndexType m, IndexType n, IndexType ncc, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldAb, double *d, double *e, std::complex *Q, IndexType ldQ, std::complex *PT, IndexType ldPT, std::complex *C, IndexType ldC, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBBRD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbbrd.tcc000066400000000000000000000167401456314707100246460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBBRD_TCC #define CXXLAPACK_INTERFACE_GBBRD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gbbrd(char vect, IndexType m, IndexType n, IndexType ncc, IndexType kl, IndexType ku, float *Ab, IndexType ldAb, float *d, float *e, float *Q, IndexType ldQ, float *PT, IndexType ldPT, float *C, IndexType ldC, float *work) { IndexType info; CXXLAPACK_DEBUG_OUT("sgbbrd"); LAPACK_IMPL(sgbbrd)(&vect, &m, &n, &ncc, &kl, &ku, Ab, &ldAb, d, e, Q, &ldQ, PT, &ldPT, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbbrd(char vect, IndexType m, IndexType n, IndexType ncc, IndexType kl, IndexType ku, double *Ab, IndexType ldAb, double *d, double *e, double *Q, IndexType ldQ, double *PT, IndexType ldPT, double *C, IndexType ldC, double *work) { IndexType info; CXXLAPACK_DEBUG_OUT("dgbbrd"); LAPACK_IMPL(dgbbrd)(&vect, &m, &n, &ncc, &kl, &ku, Ab, &ldAb, d, e, Q, &ldQ, PT, &ldPT, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbbrd(char vect, IndexType m, IndexType n, IndexType ncc, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldAb, float *d, float *e, std::complex *Q, IndexType ldQ, std::complex *PT, IndexType ldPT, std::complex *C, IndexType ldC, std::complex *work, float *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgbbrd"); LAPACK_IMPL(cgbbrd)(&vect, &m, &n, &ncc, &kl, &ku, reinterpret_cast(Ab), &ldAb, d, e, reinterpret_cast(Q), &ldQ, reinterpret_cast(PT), &ldPT, reinterpret_cast(C), &ldC, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbbrd(char vect, IndexType m, IndexType n, IndexType ncc, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldAb, double *d, double *e, std::complex *Q, IndexType ldQ, std::complex *PT, IndexType ldPT, std::complex *C, IndexType ldC, std::complex *work, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgbbrd"); LAPACK_IMPL(zgbbrd)(&vect, &m, &n, &ncc, &kl, &ku, reinterpret_cast(Ab), &ldAb, d, e, reinterpret_cast(Q), &ldQ, reinterpret_cast(PT), &ldPT, reinterpret_cast(C), &ldC, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBBRD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbcon.h000066400000000000000000000073651456314707100243370ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBCON_H #define CXXLAPACK_INTERFACE_GBCON_H 1 #include namespace cxxlapack { template IndexType gbcon(char norm, IndexType n, IndexType kl, IndexType ku, const float *Ab, IndexType ldAb, const IndexType *iPiv, float anorm, float &rCond, float *work, IndexType *iWork); template IndexType gbcon(char norm, IndexType n, IndexType kl, IndexType ku, const double *Ab, IndexType ldAb, const IndexType *iPiv, double anorm, double &rCond, double *work, IndexType *iWork); template IndexType gbcon(char norm, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, const IndexType *iPiv, float anorm, float &rCond, std::complex *work, IndexType *iWork); template IndexType gbcon(char norm, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, const IndexType *iPiv, double anorm, double &rCond, std::complex *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBCON_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbcon.tcc000066400000000000000000000137521456314707100246560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBCON_TCC #define CXXLAPACK_INTERFACE_GBCON_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gbcon(char norm, IndexType n, IndexType kl, IndexType ku, const float *Ab, IndexType ldAb, const IndexType *iPiv, float anorm, float &rCond, float *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgbcon"); LAPACK_IMPL(sgbcon)(&norm, &n, &kl, &ku, Ab, &ldAb, iPiv, &anorm, &rCond, work, &iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbcon(char norm, IndexType n, IndexType kl, IndexType ku, const double *Ab, IndexType ldAb, const IndexType *iPiv, double anorm, double &rCond, double *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgbcon"); LAPACK_IMPL(dgbcon)(&norm, &n, &kl, &ku, Ab, &ldAb, iPiv, &anorm, &rCond, work, &iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbcon(char norm, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, const IndexType *iPiv, float anorm, float &rCond, std::complex *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgbcon"); LAPACK_IMPL(cgbcon)(&norm, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, iPiv, &anorm, &rCond, reinterpret_cast(work), &iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbcon(char norm, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, const IndexType *iPiv, double anorm, double &rCond, std::complex *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgbcon"); LAPACK_IMPL(zgbcon)(&norm, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, iPiv, &anorm, &rCond, reinterpret_cast(work), &iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBCON_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbequ.h000066400000000000000000000073551456314707100243510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBEQU_H #define CXXLAPACK_INTERFACE_GBEQU_H 1 #include namespace cxxlapack { template IndexType gbequ(IndexType m, IndexType n, IndexType kl, IndexType ku, const float *Ab, IndexType ldAb, float *r, float *c, float &rowcnd, float &colcnd, float &amax); template IndexType gbequ(IndexType m, IndexType n, IndexType kl, IndexType ku, const double *Ab, IndexType ldAb, double *r, double *c, double &rowcnd, double &colcnd, double &amax); template IndexType gbequ(IndexType m, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, float *r, float *c, float &rowcnd, float &colcnd, float &amax); template IndexType gbequ(IndexType m, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, double *r, double *c, double &rowcnd, double &colcnd, double &amax); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBEQU_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbequ.tcc000066400000000000000000000136121456314707100246640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBEQU_TCC #define CXXLAPACK_INTERFACE_GBEQU_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gbequ(IndexType m, IndexType n, IndexType kl, IndexType ku, const float *Ab, IndexType ldAb, float *r, float *c, float &rowcnd, float &colcnd, float &amax) { IndexType info; CXXLAPACK_DEBUG_OUT("sgbequ"); LAPACK_IMPL(sgbequ)(&m, &n, &kl, &ku, Ab, &ldAb, r, c, &rowcnd, &colcnd, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbequ(IndexType m, IndexType n, IndexType kl, IndexType ku, const double *Ab, IndexType ldAb, double *r, double *c, double &rowcnd, double &colcnd, double &amax) { IndexType info; CXXLAPACK_DEBUG_OUT("dgbequ"); LAPACK_IMPL(dgbequ)(&m, &n, &kl, &ku, Ab, &ldAb, r, c, &rowcnd, &colcnd, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbequ(IndexType m, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, float *r, float *c, float &rowcnd, float &colcnd, float &amax) { IndexType info; CXXLAPACK_DEBUG_OUT("cgbequ"); LAPACK_IMPL(cgbequ)(&m, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, r, c, &rowcnd, &colcnd, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbequ(IndexType m, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, double *r, double *c, double &rowcnd, double &colcnd, double &amax) { IndexType info; CXXLAPACK_DEBUG_OUT("zgbequ"); LAPACK_IMPL(zgbequ)(&m, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, r, c, &rowcnd, &colcnd, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBEQU_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbequb.h000066400000000000000000000054401456314707100245040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBEQUB_H #define CXXLAPACK_INTERFACE_GBEQUB_H 1 #include namespace cxxlapack { template IndexType gbequb(IndexType m, IndexType n, IndexType kl, IndexType ku, const double *Ab, IndexType ldAb, double *r, double *c, double &rowcnd, double &colcnd, double &amax); template IndexType gbequb(IndexType m, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, double *r, double *c, double &rowcnd, double &colcnd, double &amax); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBEQUB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbequb.tcc000066400000000000000000000137311456314707100250300ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBEQUB_TCC #define CXXLAPACK_INTERFACE_GBEQUB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gbequb(IndexType m, IndexType n, IndexType kl, IndexType ku, const float *Ab, IndexType ldAb, float *r, float *c, float &rowcnd, float &colcnd, float &amax) { IndexType info; CXXLAPACK_DEBUG_OUT("sgbequb"); LAPACK_IMPL(sgbequb)(&m, &n, &kl, &ku, Ab, &ldAb, r, c, &rowcnd, &colcnd, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbequb(IndexType m, IndexType n, IndexType kl, IndexType ku, const double *Ab, IndexType ldAb, double *r, double *c, double &rowcnd, double &colcnd, double &amax) { IndexType info; CXXLAPACK_DEBUG_OUT("dgbequb"); LAPACK_IMPL(dgbequb)(&m, &n, &kl, &ku, Ab, &ldAb, r, c, &rowcnd, &colcnd, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbequb(IndexType m, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, float *r, float *c, float &rowcnd, float &colcnd, float &amax) { IndexType info; CXXLAPACK_DEBUG_OUT("cgbequb"); LAPACK_IMPL(cgbequb)(&m, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, r, c, &rowcnd, &colcnd, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbequb(IndexType m, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, double *r, double *c, double &rowcnd, double &colcnd, double &amax) { IndexType info; CXXLAPACK_DEBUG_OUT("zgbequb"); LAPACK_IMPL(zgbequb)(&m, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, r, c, &rowcnd, &colcnd, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBEQUB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbrfs.h000066400000000000000000000115351456314707100243440ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBRFS_H #define CXXLAPACK_INTERFACE_GBRFS_H 1 #include namespace cxxlapack { template IndexType gbrfs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const float *Ab, IndexType ldAb, const float *Afb, IndexType ldAfb, const IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType gbrfs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const double *Ab, IndexType ldAb, const double *Afb, IndexType ldAfb, const IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType gbrfs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType gbrfs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBRFS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbrfs.tcc000066400000000000000000000177101456314707100246670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBRFS_TCC #define CXXLAPACK_INTERFACE_GBRFS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gbrfs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const float *Ab, IndexType ldAb, const float *Afb, IndexType ldAfb, const IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgbrfs"); LAPACK_IMPL(sgbrfs)(&trans, &n &kl, &ku, &nRhs, Ab, &ldAb, Afb, &ldAfb, iPiv, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbrfs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const double *Ab, IndexType ldAb, const double *Afb, IndexType ldAfb, const IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgbrfs"); LAPACK_IMPL(dgbrfs)(&trans, &n &kl, &ku, &nRhs, Ab, &ldAb, Afb, &ldAfb, iPiv, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbrfs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgbrfs"); LAPACK_IMPL(cgbrfs)(&trans, &n &kl, &ku, &nRhs, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Afb), &ldAfb, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbrfs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgbrfs"); LAPACK_IMPL(zgbrfs)(&trans, &n &kl, &ku, &nRhs, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Afb), &ldAfb, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBRFS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbsv.h000066400000000000000000000063661456314707100242100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBSV_H #define CXXLAPACK_INTERFACE_GBSV_H 1 #include namespace cxxlapack { template IndexType gbsv(IndexType n, IndexType kl, IndexType ku, IndexType nRhs, float *Ab, IndexType ldAb, IndexType *iPiv, float *B, IndexType ldB); template IndexType gbsv(IndexType n, IndexType kl, IndexType ku, IndexType nRhs, double *Ab, IndexType ldAb, IndexType *iPiv, double *B, IndexType ldB); template IndexType gbsv(IndexType n, IndexType kl, IndexType ku, IndexType nRhs, std::complex *Ab, IndexType ldAb, IndexType *iPiv, std::complex *B, IndexType ldB); template IndexType gbsv(IndexType n, IndexType kl, IndexType ku, IndexType nRhs, std::complex *Ab, IndexType ldAb, IndexType *iPiv, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBSV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbsv.tcc000066400000000000000000000124051456314707100245210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBSV_TCC #define CXXLAPACK_INTERFACE_GBSV_TCC 1 #include #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gbsv(IndexType n, IndexType kl, IndexType ku, IndexType nRhs, float *Ab, IndexType ldAb, IndexType *iPiv, float *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("sgbsv"); LAPACK_IMPL(sgbsv)(&n, &kl, &ku, &nRhs, Ab, &ldAb, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbsv(IndexType n, IndexType kl, IndexType ku, IndexType nRhs, double *Ab, IndexType ldAb, IndexType *iPiv, double *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("dgbsv"); LAPACK_IMPL(dgbsv)(&n, &kl, &ku, &nRhs, Ab, &ldAb, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbsv(IndexType n, IndexType kl, IndexType ku, IndexType nRhs, std::complex *Ab, IndexType ldAb, IndexType *iPiv, std::complex *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("cgbsv"); LAPACK_IMPL(cgbsv)(&n, &kl, &ku, &nRhs, reinterpret_cast(Ab), &ldAb, iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbsv(IndexType n, IndexType kl, IndexType ku, IndexType nRhs, std::complex *Ab, IndexType ldAb, IndexType *iPiv, std::complex *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("zgbsv"); LAPACK_IMPL(zgbsv)(&n, &kl, &ku, &nRhs, reinterpret_cast(Ab), &ldAb, iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBSV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbsvx.h000066400000000000000000000125751456314707100243770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBSVX_H #define CXXLAPACK_INTERFACE_GBSVX_H 1 #include namespace cxxlapack { template IndexType gbsvx(char fact, char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, float *Ab, IndexType ldAb, float *Afb, IndexType ldAfb, IndexType *iPiv, char &equed, float *r, float *c, float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType gbsvx(char fact, char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, double *Ab, IndexType ldAb, double *Afb, IndexType ldAfb, IndexType *iPiv, char &equed, double *r, double *c, double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType gbsvx(char fact, char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, std::complex *Ab, IndexType ldAb, std::complex *Afb, IndexType ldAfb, IndexType *iPiv, char &equed, float *r, float *c, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType gbsvx(char fact, char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, std::complex *Ab, IndexType ldAb, std::complex *Afb, IndexType ldAfb, IndexType *iPiv, char &equed, double *r, double *c, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBSVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbsvx.tcc000066400000000000000000000217071456314707100247160ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBSVX_TCC #define CXXLAPACK_INTERFACE_GBSVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gbsvx(char fact, char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, float *Ab, IndexType ldAb, float *Afb, IndexType ldAfb, IndexType *iPiv, char &equed, float *r, float *c, float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgbsvx"); LAPACK_IMPL(sgbsvx)(&fact, &trans, &n, &kl, &ku, &nRhs, Ab, &ldAb, Afb, ldAfb, iPiv, &equed, r, c, B, ldB, X, ldX, &rCond, &ferr, &berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbsvx(char fact, char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, double *Ab, IndexType ldAb, double *Afb, IndexType ldAfb, IndexType *iPiv, char &equed, double *r, double *c, double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgbsvx"); LAPACK_IMPL(dgbsvx)(&fact, &trans, &n, &kl, &ku, &nRhs, Ab, &ldAb, Afb, ldAfb, iPiv, &equed, r, c, B, ldB, X, ldX, &rCond, &ferr, &berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbsvx(char fact, char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, std::complex *Ab, IndexType ldAb, std::complex *Afb, IndexType ldAfb, IndexType *iPiv, char &equed, float *r, float *c, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, float *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgbsvx"); LAPACK_IMPL(cgbsvx)(&fact, &trans, &n, &kl, &ku, &nRhs, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Afb), ldAfb, iPiv, &equed, r, c, reinterpret_cast(B), ldB, reinterpret_cast(X), ldX, &rCond, &ferr, &berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbsvx(char fact, char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, std::complex *Ab, IndexType ldAb, std::complex *Afb, IndexType ldAfb, IndexType *iPiv, char &equed, double *r, double *c, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgbsvx"); LAPACK_IMPL(zgbsvx)(&fact, &trans, &n, &kl, &ku, &nRhs, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Afb), ldAfb, iPiv, &equed, r, c, reinterpret_cast(B), ldB, reinterpret_cast(X), ldX, &rCond, &ferr, &berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBSVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbtf2.h000066400000000000000000000057551456314707100242540ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBTF2_H #define CXXLAPACK_INTERFACE_GBTF2_H 1 #include namespace cxxlapack { template IndexType gbtf2(IndexType m, IndexType n, IndexType kl, IndexType ku, float *Ab, IndexType ldAb, IndexType *iPiv); template IndexType gbtf2(IndexType m, IndexType n, IndexType kl, IndexType ku, double *Ab, IndexType ldAb, IndexType *iPiv); template IndexType gbtf2(IndexType m, IndexType n, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldAb, IndexType *iPiv); template IndexType gbtf2(IndexType m, IndexType n, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldAb, IndexType *iPiv); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBTF2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbtf2.tcc000066400000000000000000000113321456314707100245620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBTF2_TCC #define CXXLAPACK_INTERFACE_GBTF2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gbtf2(IndexType m, IndexType n, IndexType kl, IndexType ku, float *Ab, IndexType ldAb, IndexType *iPiv) { IndexType info; CXXLAPACK_DEBUG_OUT("sgbtf2"); LAPACK_IMPL(sgbtf2)(&m, &n, &kl, &ku, Ab, &ldAb, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbtf2(IndexType m, IndexType n, IndexType kl, IndexType ku, double *Ab, IndexType ldAb, IndexType *iPiv) { IndexType info; CXXLAPACK_DEBUG_OUT("dgbtf2"); LAPACK_IMPL(dgbtf2)(&m, &n, &kl, &ku, Ab, &ldAb, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbtf2(IndexType m, IndexType n, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldAb, IndexType *iPiv) { IndexType info; CXXLAPACK_DEBUG_OUT("cgbtf2"); LAPACK_IMPL(cgbtf2)(&m, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbtf2(IndexType m, IndexType n, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldAb, IndexType *iPiv) { IndexType info; CXXLAPACK_DEBUG_OUT("zgbtf2"); LAPACK_IMPL(zgbtf2)(&m, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBTF2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbtrf.h000066400000000000000000000057551456314707100243540ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBTRF_H #define CXXLAPACK_INTERFACE_GBTRF_H 1 #include namespace cxxlapack { template IndexType gbtrf(IndexType m, IndexType n, IndexType kl, IndexType ku, float *Ab, IndexType ldab, IndexType *iPiv); template IndexType gbtrf(IndexType m, IndexType n, IndexType kl, IndexType ku, double *Ab, IndexType ldab, IndexType *iPiv); template IndexType gbtrf(IndexType m, IndexType n, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldab, IndexType *iPiv); template IndexType gbtrf(IndexType m, IndexType n, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldab, IndexType *iPiv); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBTRF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbtrf.tcc000066400000000000000000000113321456314707100246620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBTRF_TCC #define CXXLAPACK_INTERFACE_GBTRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gbtrf(IndexType m, IndexType n, IndexType kl, IndexType ku, float *Ab, IndexType ldAb, IndexType *iPiv) { IndexType info; CXXLAPACK_DEBUG_OUT("sgbtrf"); LAPACK_IMPL(sgbtrf)(&m, &n, &kl, &ku, Ab, &ldAb, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbtrf(IndexType m, IndexType n, IndexType kl, IndexType ku, double *Ab, IndexType ldAb, IndexType *iPiv) { IndexType info; CXXLAPACK_DEBUG_OUT("dgbtrf"); LAPACK_IMPL(dgbtrf)(&m, &n, &kl, &ku, Ab, &ldAb, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbtrf(IndexType m, IndexType n, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldAb, IndexType *iPiv) { IndexType info; CXXLAPACK_DEBUG_OUT("cgbtrf"); LAPACK_IMPL(cgbtrf)(&m, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbtrf(IndexType m, IndexType n, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldAb, IndexType *iPiv) { IndexType info; CXXLAPACK_DEBUG_OUT("zgbtrf"); LAPACK_IMPL(zgbtrf)(&m, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBTRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbtrs.h000066400000000000000000000071311456314707100243570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBTRS_H #define CXXLAPACK_INTERFACE_GBTRS_H 1 #include namespace cxxlapack { template IndexType gbtrs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const float *Ab, IndexType ldAb, const IndexType *iPiv, float *B, IndexType ldb); template IndexType gbtrs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const double *Ab, IndexType ldAb, const IndexType *iPiv, double *B, IndexType ldb); template IndexType gbtrs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const std::complex *Ab, IndexType ldAb, const IndexType *iPiv, std::complex *B, IndexType ldb); template IndexType gbtrs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const std::complex *Ab, IndexType ldAb, const IndexType *iPiv, std::complex *B, IndexType ldb); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBTRS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gbtrs.tcc000066400000000000000000000132161456314707100247020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GBTRS_TCC #define CXXLAPACK_INTERFACE_GBTRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gbtrs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const float *Ab, IndexType ldAb, const IndexType *iPiv, float *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("sgbtrs"); LAPACK_IMPL(sgbtrs)(&trans, &n, &kl, &ku, &nRhs, Ab, &ldAb, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbtrs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const double *Ab, IndexType ldAb, const IndexType *iPiv, double *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("dgbtrs"); LAPACK_IMPL(dgbtrs)(&trans, &n, &kl, &ku, &nRhs, Ab, &ldAb, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbtrs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const std::complex *Ab, IndexType ldAb, const IndexType *iPiv, std::complex *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("cgbtrs"); LAPACK_IMPL(cgbtrs)(&trans, &n, &kl, &ku, &nRhs, reinterpret_cast(Ab), &ldAb, iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gbtrs(char trans, IndexType n, IndexType kl, IndexType ku, IndexType nRhs, const std::complex *Ab, IndexType ldAb, const IndexType *iPiv, std::complex *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("zgbtrs"); LAPACK_IMPL(zgbtrs)(&trans, &n, &kl, &ku, &nRhs, reinterpret_cast(Ab), &ldAb, iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GBTRS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gebak.h000066400000000000000000000063051456314707100243110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEBAK_H #define CXXLAPACK_INTERFACE_GEBAK_H 1 #include namespace cxxlapack { template IndexType gebak(char job, char side, IndexType n, IndexType iLo, IndexType iHi, const float *scale, IndexType m, float *V, IndexType ldV); template IndexType gebak(char job, char side, IndexType n, IndexType iLo, IndexType iHi, const double *scale, IndexType m, double *V, IndexType ldV); template IndexType gebak(char job, char side, IndexType n, IndexType iLo, IndexType iHi, const float *scale, IndexType m, std::complex *V, IndexType ldV); template IndexType gebak(char job, char side, IndexType n, IndexType iLo, IndexType iHi, const double *scale, IndexType m, std::complex *V, IndexType ldV); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEBAK_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gebak.tcc000066400000000000000000000122111456314707100246240ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEBAK_TCC #define CXXLAPACK_INTERFACE_GEBAK_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gebak(char job, char side, IndexType n, IndexType iLo, IndexType iHi, const float *scale, IndexType m, float *V, IndexType ldV) { IndexType info; CXXLAPACK_DEBUG_OUT("sgebak"); LAPACK_IMPL(sgebak)(&job, &side, &n, &iLo, &iHi, scale, &m, V, &ldV, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gebak(char job, char side, IndexType n, IndexType iLo, IndexType iHi, const double *scale, IndexType m, double *V, IndexType ldV) { IndexType info; CXXLAPACK_DEBUG_OUT("dgebak"); LAPACK_IMPL(dgebak)(&job, &side, &n, &iLo, &iHi, scale, &m, V, &ldV, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gebak(char job, char side, IndexType n, IndexType iLo, IndexType iHi, const float *scale, IndexType m, std::complex *V, IndexType ldV) { IndexType info; CXXLAPACK_DEBUG_OUT("cgebak"); LAPACK_IMPL(cgebak)(&job, &side, &n, &iLo, &iHi, scale, &m, reinterpret_cast(V), &ldV, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gebak(char job, char side, IndexType n, IndexType iLo, IndexType iHi, const double *scale, IndexType m, std::complex *V, IndexType ldV) { IndexType info; CXXLAPACK_DEBUG_OUT("zgebak"); LAPACK_IMPL(zgebak)(&job, &side, &n, &iLo, &iHi, scale, &m, reinterpret_cast(V), &ldV, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEBAK_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gebal.h000066400000000000000000000056011456314707100243100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEBAL_H #define CXXLAPACK_INTERFACE_GEBAL_H 1 #include namespace cxxlapack { template IndexType gebal(char job, IndexType n, float *A, IndexType ldA, IndexType &iLo, IndexType &iHi, float *scale); template IndexType gebal(char job, IndexType n, double *A, IndexType ldA, IndexType &iLo, IndexType &iHi, double *scale); template IndexType gebal(char job, IndexType n, std::complex *A, IndexType ldA, IndexType &iLo, IndexType &iHi, float *scale); template IndexType gebal(char job, IndexType n, std::complex *A, IndexType ldA, IndexType &iLo, IndexType &iHi, double *scale); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEBAL_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gebal.tcc000066400000000000000000000111721456314707100246320ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEBAL_TCC #define CXXLAPACK_INTERFACE_GEBAL_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gebal(char job, IndexType n, float *A, IndexType ldA, IndexType &iLo, IndexType &iHi, float *scale) { IndexType info; CXXLAPACK_DEBUG_OUT("sgebal"); LAPACK_IMPL(sgebal)(&job, &n, A, &ldA, &iLo, &iHi, scale, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gebal(char job, IndexType n, double *A, IndexType ldA, IndexType &iLo, IndexType &iHi, double *scale) { IndexType info; CXXLAPACK_DEBUG_OUT("dgebal"); LAPACK_IMPL(dgebal)(&job, &n, A, &ldA, &iLo, &iHi, scale, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gebal(char job, IndexType n, std::complex *A, IndexType ldA, IndexType &iLo, IndexType &iHi, float *scale) { IndexType info; CXXLAPACK_DEBUG_OUT("cgebal"); LAPACK_IMPL(cgebal)(&job, &n, reinterpret_cast(A), &ldA, &iLo, &iHi, scale, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gebal(char job, IndexType n, std::complex *A, IndexType ldA, IndexType &iLo, IndexType &iHi, double *scale) { IndexType info; CXXLAPACK_DEBUG_OUT("zgebal"); LAPACK_IMPL(zgebal)(&job, &n, reinterpret_cast(A), &ldA, &iLo, &iHi, scale, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEBAL_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gebd2.h000066400000000000000000000064351456314707100242270ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEBD2_H #define CXXLAPACK_INTERFACE_GEBD2_H 1 #include namespace cxxlapack { template IndexType gebd2(IndexType m, IndexType n, float *A, IndexType ldA, float *d, float *e, float *tauq, float *taup, float *work); template IndexType gebd2(IndexType m, IndexType n, double *A, IndexType ldA, double *d, double *e, double *tauq, double *taup, double *work); template IndexType gebd2(IndexType m, IndexType n, std::complex *A, IndexType ldA, float *d, float *e, std::complex *tauq, std::complex *taup, std::complex *work); template IndexType gebd2(IndexType m, IndexType n, std::complex *A, IndexType ldA, double *d, double *e, std::complex *tauq, std::complex *taup, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEBD2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gebd2.tcc000066400000000000000000000125521456314707100245460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEBD2_TCC #define CXXLAPACK_INTERFACE_GEBD2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gebd2(IndexType m, IndexType n, float *A, IndexType ldA, float *d, float *e, float *tauq, float *taup, float *work) { IndexType info; CXXLAPACK_DEBUG_OUT("sgebd2"); LAPACK_IMPL(sgebd2)(&m, &n, A, &ldA, d, e, tauq, taup, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gebd2(IndexType m, IndexType n, double *A, IndexType ldA, double *d, double *e, double *tauq, double *taup, double *work) { IndexType info; CXXLAPACK_DEBUG_OUT("dgebd2"); LAPACK_IMPL(dgebd2)(&m, &n, A, &ldA, d, e, tauq, taup, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gebd2(IndexType m, IndexType n, std::complex *A, IndexType ldA, float *d, float *e, std::complex *tauq, std::complex *taup, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("cgebd2"); LAPACK_IMPL(cgebd2)(&m, &n, reinterpret_cast(A), &ldA, d, e, reinterpret_cast(tauq), reinterpret_cast(taup), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gebd2(IndexType m, IndexType n, std::complex *A, IndexType ldA, double *d, double *e, std::complex *tauq, std::complex *taup, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("zgebd2"); LAPACK_IMPL(zgebd2)(&m, &n, reinterpret_cast(A), &ldA, d, e, reinterpret_cast(tauq), reinterpret_cast(taup), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEBD2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gebrd.h000066400000000000000000000066711456314707100243310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEBRD_H #define CXXLAPACK_INTERFACE_GEBRD_H 1 #include namespace cxxlapack { template IndexType gebrd(IndexType m, IndexType n, float *A, IndexType ldA, float *d, float *e, float *tauq, float *taup, float *work, IndexType lWork); template IndexType gebrd(IndexType m, IndexType n, double *A, IndexType ldA, double *d, double *e, double *tauq, double *taup, double *work, IndexType lWork); template IndexType gebrd(IndexType m, IndexType n, std::complex *A, IndexType ldA, float *d, float *e, std::complex *tauq, std::complex *taup, std::complex *work, IndexType lWork); template IndexType gebrd(IndexType m, IndexType n, std::complex *A, IndexType ldA, double *d, double *e, std::complex *tauq, std::complex *taup, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEBRD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gebrd.tcc000066400000000000000000000131701456314707100246430ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEBRD_TCC #define CXXLAPACK_INTERFACE_GEBRD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gebrd(IndexType m, IndexType n, float *A, IndexType ldA, float *d, float *e, float *tauq, float *taup, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgebrd"); LAPACK_IMPL(sgebrd)(&m, &n, A, &ldA, d, e, tauq, taup, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gebrd(IndexType m, IndexType n, double *A, IndexType ldA, double *d, double *e, double *tauq, double *taup, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgebrd"); LAPACK_IMPL(dgebrd)(&m, &n, A, &ldA, d, e, tauq, taup, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gebrd(IndexType m, IndexType n, std::complex *A, IndexType ldA, float *d, float *e, std::complex *tauq, std::complex *taup, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgebrd"); LAPACK_IMPL(cgebrd)(&m, &n, reinterpret_cast(A), &ldA, d, e, reinterpret_cast(tauq), reinterpret_cast(taup), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gebrd(IndexType m, IndexType n, std::complex *A, IndexType ldA, double *d, double *e, std::complex *tauq, std::complex *taup, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgebrd"); LAPACK_IMPL(zgebrd)(&m, &n, reinterpret_cast(A), &ldA, d, e, reinterpret_cast(tauq), reinterpret_cast(taup), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEBRD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gecon.h000066400000000000000000000066411456314707100243360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GECON_H #define CXXLAPACK_INTERFACE_GECON_H 1 #include namespace cxxlapack { template IndexType gecon(char norm, IndexType n, const float *A, IndexType lda, const float &normA, float &rCond, float *work, IndexType *iwork); template IndexType gecon(char norm, IndexType n, const double *A, IndexType lda, const double &normA, double &rCond, double *work, IndexType *iwork); template IndexType gecon(char norm, IndexType n, const std::complex *A, IndexType lda, const float &normA, float &rCond, std::complex *work, IndexType *iwork); template IndexType gecon(char norm, IndexType n, const std::complex *A, IndexType lda, const double &normA, double &rCond, std::complex *work, IndexType *iwork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GECON_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gecon.tcc000066400000000000000000000123321456314707100246520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GECON_TCC #define CXXLAPACK_INTERFACE_GECON_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gecon(char norm, IndexType n, const float *A, IndexType ldA, const float &normA, float &rCond, float *work, IndexType *iwork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgecon"); LAPACK_IMPL(sgecon)(&norm, &n, A, &ldA, &normA, &rCond, work, iwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gecon(char norm, IndexType n, const double *A, IndexType ldA, const double &normA, double &rCond, double *work, IndexType *iwork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgecon"); LAPACK_IMPL(dgecon)(&norm, &n, A, &ldA, &normA, &rCond, work, iwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gecon(char norm, IndexType n, const std::complex *A, IndexType ldA, const float &normA, float &rCond, std::complex *work, double *rwork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgecon"); LAPACK_IMPL(cgecon)(&norm, &n, reinterpret_cast(A), &ldA, &normA, &rCond, reinterpret_cast(work), rwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gecon(char norm, IndexType n, const std::complex *A, IndexType ldA, const double &normA, double &rCond, std::complex *work, double *rwork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgecon"); LAPACK_IMPL(zgecon)(&norm, &n, reinterpret_cast(A), &ldA, &normA, &rCond, reinterpret_cast(work), rwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GECON_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geequ.h000066400000000000000000000066551456314707100243560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEEQU_H #define CXXLAPACK_INTERFACE_GEEQU_H 1 #include namespace cxxlapack { template IndexType geequ(const IndexType m, const IndexType n, const float *A, const IndexType ldA, float *r, float *c, float &rowCnd, float &colCnd, float &maxA); template IndexType geequ(const IndexType m, const IndexType n, const double *A, const IndexType ldA, double *r, double *c, double &rowCnd, double &colCnd, double &maxA); template IndexType geequ(const IndexType m, const IndexType n, const std::complex *A, const IndexType ldA, float *r, float *c, float &rowCnd, float &colCnd, float &maxA); template IndexType geequ(const IndexType m, const IndexType n, const std::complex *A, const IndexType ldA, double *r, double *c, double &rowCnd, double &colCnd, double &maxA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEEQU_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geequ.tcc000066400000000000000000000125721456314707100246730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEEQU_TCC #define CXXLAPACK_INTERFACE_GEEQU_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType geequ(const IndexType m, const IndexType n, const double *A, const IndexType ldA, float *r, float *c, float &rowCnd, float &colCnd, float &maxA) { IndexType info; CXXLAPACK_DEBUG_OUT("sgeequ"); LAPACK_IMPL(sgeequ)(&m, &n, A, &ldA, r, c, &rowCnd, &colCnd, &maxA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geequ(const IndexType m, const IndexType n, const double *A, const IndexType ldA, double *r, double *c, double &rowCnd, double &colCnd, double &maxA) { IndexType info; CXXLAPACK_DEBUG_OUT("dgeequ"); LAPACK_IMPL(dgeequ)(&m, &n, A, &ldA, r, c, &rowCnd, &colCnd, &maxA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geequ(const IndexType m, const IndexType n, const std::complex *A, const IndexType ldA, float *r, float *c, float &rowCnd, float &colCnd, float &maxA) { IndexType info; CXXLAPACK_DEBUG_OUT("cgeequ"); LAPACK_IMPL(cgeequ)(&m, &n, reinterpret_cast(A), &ldA, r, c, &rowCnd, &colCnd, &maxA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geequ(const IndexType m, const IndexType n, const std::complex *A, const IndexType ldA, double *r, double *c, double &rowCnd, double &colCnd, double &maxA) { IndexType info; CXXLAPACK_DEBUG_OUT("zgeequ"); LAPACK_IMPL(zgeequ)(&m, &n, reinterpret_cast(A), &ldA, r, c, &rowCnd, &colCnd, &maxA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEEQU_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geequb.h000066400000000000000000000067001456314707100245070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEEQUB_H #define CXXLAPACK_INTERFACE_GEEQUB_H 1 #include namespace cxxlapack { template IndexType geequb(IndexType m, IndexType n, const float *A, IndexType ldA, float *r, float *c, float &rCond, float &colcond, float &amax); template IndexType geequb(IndexType m, IndexType n, const double *A, IndexType ldA, double *r, double *c, double &rCond, double &colcond, double &amax); template IndexType geequb(IndexType m, IndexType n, const std::complex *A, IndexType ldA, float *r, float *c, float &rCond, float &colcond, float &amax); template IndexType geequb(IndexType m, IndexType n, const std::complex *A, IndexType ldA, double *r, double *c, double &rCond, double &colcond, double &amax); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEEQUB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geequb.tcc000066400000000000000000000126501456314707100250320ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEEQUB_TCC #define CXXLAPACK_INTERFACE_GEEQUB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType geequb(IndexType m, IndexType n, const float *A, IndexType ldA, float *r, float *c, float &rCond, float &colcond, float &amax) { IndexType info; CXXLAPACK_DEBUG_OUT("sgeequb"); LAPACK_IMPL(sgeequb)(&m, &n, A, &ldA, r, c, &rCond, &colcond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geequb(IndexType m, IndexType n, const double *A, IndexType ldA, double *r, double *c, double &rCond, double &colcond, double &amax) { IndexType info; CXXLAPACK_DEBUG_OUT("dgeequb"); LAPACK_IMPL(dgeequb)(&m, &n, A, &ldA, r, c, &rCond, &colcond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geequb(IndexType m, IndexType n, const std::complex *A, IndexType ldA, float *r, float *c, float &rCond, float &colcond, float &amax) { IndexType info; CXXLAPACK_DEBUG_OUT("cgeequb"); LAPACK_IMPL(cgeequb)(&m, &n, reinterpret_cast(A), &ldA, r, c, &rCond, &colcond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geequb(IndexType m, IndexType n, const std::complex *A, IndexType ldA, double *r, double *c, double &rCond, double &colcond, double &amax) { IndexType info; CXXLAPACK_DEBUG_OUT("zgeequb"); LAPACK_IMPL(zgeequb)(&m, &n, reinterpret_cast(A), &ldA, r, c, &rCond, &colcond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEEQUB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gees.h000066400000000000000000000077201456314707100241650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEES_H #define CXXLAPACK_INTERFACE_GEES_H 1 #include namespace cxxlapack { template IndexType gees(char jobVS, char sort, IndexType (*select)(const float *, const float *), IndexType n, float *A, IndexType ldA, IndexType &sdim, float *wr, float *wi, float *VS, IndexType ldVS, float *work, IndexType lWork, IndexType *bWork); template IndexType gees(char jobVS, char sort, IndexType (*select)(const double *, const double *), IndexType n, double *A, IndexType ldA, IndexType &sdim, double *wr, double *wi, double *VS, IndexType ldVS, double *work, IndexType lWork, IndexType *bWork); template IndexType gees(char jobVS, char sort, IndexType (*select)(const std::complex *), IndexType n, std::complex *A, const IndexType ldA, IndexType &sdim, std::complex *w, std::complex *VS, const IndexType ldVS, std::complex *work, const IndexType lWork, float *rWork, IndexType *bWork); template IndexType gees(char jobVS, char sort, IndexType (*select)(const std::complex *), IndexType n, std::complex *A, const IndexType ldA, IndexType &sdim, std::complex *w, std::complex *VS, const IndexType ldVS, std::complex *work, const IndexType lWork, double *rWork, IndexType *bWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEES_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gees.tcc000066400000000000000000000153111456314707100245020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEES_TCC #define CXXLAPACK_INTERFACE_GEES_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gees(char jobVS, char sort, IndexType (*select)(const float *, const float *), IndexType n, float *A, IndexType ldA, IndexType &sdim, float *wr, float *wi, float *VS, IndexType ldVS, float *work, IndexType lWork, IndexType *bWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgees"); LAPACK_IMPL(sgees)(&jobVS, &sort, select, &n, A, &ldA, &sdim, wr, wi, VS, &ldVS, work, &lWork, bWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gees(char jobVS, char sort, IndexType (*select)(const double *, const double *), IndexType n, double *A, IndexType ldA, IndexType &sdim, double *wr, double *wi, double *VS, IndexType ldVS, double *work, IndexType lWork, IndexType *bWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgees"); LAPACK_IMPL(dgees)(&jobVS, &sort, select, &n, A, &ldA, &sdim, wr, wi, VS, &ldVS, work, &lWork, bWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gees(char jobVS, char sort, IndexType (*select)(const std::complex *), IndexType n, std::complex *A, const IndexType ldA, IndexType &sdim, std::complex *w, std::complex *VS, const IndexType ldVS, std::complex *work, const IndexType lWork, float *rWork, IndexType *bWork) { typedef IndexType (*LapackSelect)(const float *); IndexType info; CXXLAPACK_DEBUG_OUT("cgees"); LAPACK_IMPL(cgees)(&jobVS, &sort, reinterpret_cast(select), &n, reinterpret_cast(A), &ldA, &sdim, reinterpret_cast(w), reinterpret_cast(VS), &ldVS, reinterpret_cast(work), &lWork, rWork, bWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gees(char jobVS, char sort, IndexType (*select)(const std::complex *), IndexType n, std::complex *A, const IndexType ldA, IndexType &sdim, std::complex *w, std::complex *VS, const IndexType ldVS, std::complex *work, const IndexType lWork, double *rWork, IndexType *bWork) { typedef IndexType (*LapackSelect)(const double *); IndexType info; CXXLAPACK_DEBUG_OUT("zgees"); LAPACK_IMPL(zgees)(&jobVS, &sort, reinterpret_cast(select), &n, reinterpret_cast(A), &ldA, &sdim, reinterpret_cast(w), reinterpret_cast(VS), &ldVS, reinterpret_cast(work), &lWork, rWork, bWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEES_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geesx.h000066400000000000000000000112401456314707100243450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEESX_H #define CXXLAPACK_INTERFACE_GEESX_H 1 #include namespace cxxlapack { template IndexType geesx(char jobVS, char sort, IndexType (*select)(const float *, const float *), char sense, IndexType n, float *A, IndexType ldA, IndexType &sDim, float *wr, float *wi, float *VS, IndexType ldVS, float *rCondE, float *rCondV, float *work, IndexType lWork, IndexType *iWork, IndexType liWork, IndexType *bWork); template IndexType geesx(char jobVS, char sort, IndexType (*select)(const double *, const double *), char sense, IndexType n, double *A, IndexType ldA, IndexType &sDim, double *wr, double *wi, double *VS, IndexType ldVS, double *rCondE, double *rCondV, double *work, IndexType lWork, IndexType *iWork, IndexType liWork, IndexType *bWork); template IndexType geesx(char jobVS, char sort, IndexType (*select)(const std::complex *), char sense, IndexType n, std::complex *A, IndexType ldA, IndexType &sDim, std::complex *w, std::complex *VS, IndexType ldVS, float *rCondE, float *rCondV, std::complex *work, IndexType lWork, float *rWork, IndexType *bWork); template IndexType geesx(char jobVS, char sort, IndexType (*select)(const std::complex *), char sense, IndexType n, std::complex *A, IndexType ldA, IndexType &sDim, std::complex *w, std::complex *VS, IndexType ldVS, double *rCondE, double *rCondV, std::complex *work, IndexType lWork, double *rWork, IndexType *bWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEESX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geesx.tcc000066400000000000000000000176411456314707100247020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEESX_TCC #define CXXLAPACK_INTERFACE_GEESX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType geesx(char jobVS, char sort, IndexType (*select)(const float *, const float *), char sense, IndexType n, float *A, IndexType ldA, IndexType &sDim, float *wr, float *wi, float *VS, IndexType ldVS, float &rCondE, float &rCondV, float *work, IndexType lWork, IndexType *iWork, IndexType liWork, IndexType *bWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgeesx"); LAPACK_IMPL(sgeesx)(&jobVS, &sort, select, &sense, &n, A, &ldA, &sDim, wr, wi, VS, &ldVS, &rCondE, &rCondV, work, &lWork, iWork, &liWork, bWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geesx(char jobVS, char sort, IndexType (*select)(const double *, const double *), char sense, IndexType n, double *A, IndexType ldA, IndexType &sDim, double *wr, double *wi, double *VS, IndexType ldVS, double &rCondE, double &rCondV, double *work, IndexType lWork, IndexType *iWork, IndexType liWork, IndexType *bWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgeesx"); LAPACK_IMPL(dgeesx)(&jobVS, &sort, select, &sense, &n, A, &ldA, &sDim, wr, wi, VS, &ldVS, &rCondE, &rCondV, work, &lWork, iWork, &liWork, bWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geesx(char jobVS, char sort, IndexType (*select)(const std::complex *), char sense, IndexType n, std::complex *A, IndexType ldA, IndexType &sDim, std::complex *w, std::complex *VS, IndexType ldVS, float &rCondE, float &rCondV, std::complex *work, IndexType lWork, float *rWork, IndexType *bWork) { typedef IndexType (*LapackSelect)(const float *); IndexType info; CXXLAPACK_DEBUG_OUT("cgeesx"); LAPACK_IMPL(cgeesx)(&jobVS, &sort, reinterpret_cast(select), &sense, &n, reinterpret_cast(A), &ldA, &sDim, reinterpret_cast(w), reinterpret_cast(VS), &ldVS, &rCondE, &rCondV, reinterpret_cast(work), &lWork, rWork, bWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geesx(char jobVS, char sort, IndexType (*select)(const std::complex *), char sense, IndexType n, std::complex *A, IndexType ldA, IndexType &sDim, std::complex *w, std::complex *VS, IndexType ldVS, double &rCondE, double &rCondV, std::complex *work, IndexType lWork, double *rWork, IndexType *bWork) { typedef IndexType (*LapackSelect)(const double *); IndexType info; CXXLAPACK_DEBUG_OUT("zgeesx"); LAPACK_IMPL(zgeesx)(&jobVS, &sort, reinterpret_cast(select), &sense, &n, reinterpret_cast(A), &ldA, &sDim, reinterpret_cast(w), reinterpret_cast(VS), &ldVS, &rCondE, &rCondV, reinterpret_cast(work), &lWork, rWork, bWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEESX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geev.h000066400000000000000000000072561456314707100241740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEEV_H #define CXXLAPACK_INTERFACE_GEEV_H 1 #include namespace cxxlapack { template IndexType geev(char jobVL, char jobVR, IndexType n, float *A, IndexType ldA, float *wr, float *wi, float *VL, IndexType ldVL, float *VR, IndexType ldVR, float *work, IndexType lWork); template IndexType geev(char jobVL, char jobVR, IndexType n, double *A, IndexType ldA, double *wr, double *wi, double *VL, IndexType ldVL, double *VR, IndexType ldVR, double *work, IndexType lWork); template IndexType geev(char jobVL, char jobVR, IndexType n, std::complex *A, IndexType ldA, std::complex *w, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, std::complex *work, IndexType lWork, float *rWork); template IndexType geev(char jobVL, char jobVR, IndexType n, std::complex *A, IndexType ldA, std::complex *w, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, std::complex *work, IndexType lWork, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEEV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geev.tcc000066400000000000000000000142731456314707100245130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEEV_TCC #define CXXLAPACK_INTERFACE_GEEV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType geev(char jobVL, char jobVR, IndexType n, float *A, IndexType ldA, float *wr, float *wi, float *VL, IndexType ldVL, float *VR, IndexType ldVR, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgeev"); LAPACK_IMPL(sgeev)(&jobVL, &jobVR, &n, A, &ldA, wr, wi, VL, &ldVL, VR, &ldVR, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geev(char jobVL, char jobVR, IndexType n, double *A, IndexType ldA, double *wr, double *wi, double *VL, IndexType ldVL, double *VR, IndexType ldVR, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgeev"); LAPACK_IMPL(dgeev)(&jobVL, &jobVR, &n, A, &ldA, wr, wi, VL, &ldVL, VR, &ldVR, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geev(char jobVL, char jobVR, IndexType n, std::complex *A, IndexType ldA, std::complex *w, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, std::complex *work, IndexType lWork, float *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgeev"); LAPACK_IMPL(cgeev)(&jobVL, &jobVR, &n, reinterpret_cast(A), &ldA, reinterpret_cast(w), reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geev(char jobVL, char jobVR, IndexType n, std::complex *A, IndexType ldA, std::complex *w, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, std::complex *work, IndexType lWork, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgeev"); LAPACK_IMPL(zgeev)(&jobVL, &jobVR, &n, reinterpret_cast(A), &ldA, reinterpret_cast(w), reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEEV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geevx.h000066400000000000000000000116751456314707100243640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEEVX_H #define CXXLAPACK_INTERFACE_GEEVX_H 1 #include namespace cxxlapack { template IndexType geevx(char balanc, char jobVL, char jobVR, char sense, IndexType n, float *A, IndexType ldA, float *wr, float *wi, float *VL, IndexType ldVL, float *VR, IndexType ldVR, IndexType &iLo, IndexType &iHi, float *scale, float &ABnorm, float *rCondE, float *rCondV, float *work, IndexType lWork, IndexType *iWork); template IndexType geevx(char balanc, char jobVL, char jobVR, char sense, IndexType n, double *A, IndexType ldA, double *wr, double *wi, double *VL, IndexType ldVL, double *VR, IndexType ldVR, IndexType &iLo, IndexType &iHi, double *scale, double &ABnorm, double *rCondE, double *rCondV, double *work, IndexType lWork, IndexType *iWork); template IndexType geevx(char balanc, char jobVL, char jobVR, char sense, IndexType n, std::complex *A, IndexType ldA, std::complex *w, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType &iLo, IndexType &iHi, float *scale, float &ABnorm, float &rCondE, float &rCondV, std::complex *work, IndexType lWork, float *rWork); template IndexType geevx(char balanc, char jobVL, char jobVR, char sense, IndexType n, std::complex *A, IndexType ldA, std::complex *w, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType &iLo, IndexType &iHi, double *scale, double &ABnorm, double &rCondE, double &rCondV, std::complex *work, IndexType lWork, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEEVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geevx.tcc000066400000000000000000000206601456314707100247000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEEVX_TCC #define CXXLAPACK_INTERFACE_GEEVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType geevx(char balanc, char jobVL, char jobVR, char sense, IndexType n, float *A, IndexType ldA, float *wr, float *wi, float *VL, IndexType ldVL, float *VR, IndexType ldVR, IndexType &iLo, IndexType &iHi, float *scale, float &ABnorm, float *rCondE, float *rCondV, float *work, IndexType lWork, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgeevx"); LAPACK_IMPL(sgeevx)(&balanc, &jobVL, &jobVR, &sense, &n, A, &ldA, wr, wi, VL, &ldVL, VR, &ldVR, &iLo, &iHi, scale, &ABnorm, rCondE, rCondV, work, &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geevx(char balanc, char jobVL, char jobVR, char sense, IndexType n, double *A, IndexType ldA, double *wr, double *wi, double *VL, IndexType ldVL, double *VR, IndexType ldVR, IndexType &iLo, IndexType &iHi, double *scale, double &ABnorm, double *rCondE, double *rCondV, double *work, IndexType lWork, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgeevx"); LAPACK_IMPL(dgeevx)(&balanc, &jobVL, &jobVR, &sense, &n, A, &ldA, wr, wi, VL, &ldVL, VR, &ldVR, &iLo, &iHi, scale, &ABnorm, rCondE, rCondV, work, &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geevx(char balanc, char jobVL, char jobVR, char sense, IndexType n, std::complex *A, IndexType ldA, std::complex *w, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType &iLo, IndexType &iHi, float *scale, float &ABnorm, float *rCondE, float *rCondV, std::complex *work, IndexType lWork, float *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgeevx"); LAPACK_IMPL(cgeevx)(&balanc, &jobVL, &jobVR, &sense, &n, reinterpret_cast(A), &ldA, reinterpret_cast(w), reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, &iLo, &iHi, scale, &ABnorm, rCondE, rCondV, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geevx(char balanc, char jobVL, char jobVR, char sense, IndexType n, std::complex *A, IndexType ldA, std::complex *w, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType &iLo, IndexType &iHi, double *scale, double &ABnorm, double *rCondE, double *rCondV, std::complex *work, IndexType lWork, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgeevx"); LAPACK_IMPL(zgeevx)(&balanc, &jobVL, &jobVR, &sense, &n, reinterpret_cast(A), &ldA, reinterpret_cast(w), reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, &iLo, &iHi, scale, &ABnorm, rCondE, rCondV, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEEVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gegs.h000066400000000000000000000103541456314707100241640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEGS_H #define CXXLAPACK_INTERFACE_GEGS_H 1 #include namespace cxxlapack { template IndexType gegs(char jobvsl, char jobvsr, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *alpha, float *beta, float *Vsl, IndexType ldVsl, float *Vsr, IndexType ldVsr, float *work, IndexType lWork); template IndexType gegs(char jobvsl, char jobvsr, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *alpha, double *beta, double *Vsl, IndexType ldVsl, double *Vsr, IndexType ldVsr, double *work, IndexType lWork); template IndexType gegs(char jobvsl, char jobvsr, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *Vsl, IndexType ldVsl, std::complex *Vsr, IndexType ldVsr, std::complex *work, IndexType lWork, float *rWork); template IndexType gegs(char jobvsl, char jobvsr, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *Vsl, IndexType ldVsl, std::complex *Vsr, IndexType ldVsr, std::complex *work, IndexType lWork, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEGS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gegs.tcc000066400000000000000000000162021456314707100245040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEGS_TCC #define CXXLAPACK_INTERFACE_GEGS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gegs(char jobvsl, char jobvsr, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *alpha, float *beta, float *Vsl, IndexType ldVsl, float *Vsr, IndexType ldVsr, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgegs"); LAPACK_IMPL(sgegs)(&jobvsl, &jobvsr, &n, A, &ldA, B, &ldB, alpha, beta, Vsl, &ldVsl, Vsr, &ldVsr, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gegs(char jobvsl, char jobvsr, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *alpha, double *beta, double *Vsl, IndexType ldVsl, double *Vsr, IndexType ldVsr, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgegs"); LAPACK_IMPL(dgegs)(&jobvsl, &jobvsr, &n, A, &ldA, B, &ldB, alpha, beta, Vsl, &ldVsl, Vsr, &ldVsr, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gegs(char jobvsl, char jobvsr, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *Vsl, IndexType ldVsl, std::complex *Vsr, IndexType ldVsr, std::complex *work, IndexType lWork, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgegs"); LAPACK_IMPL(cgegs)(&jobvsl, &jobvsr, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(Vsl), &ldVsl, reinterpret_cast(Vsr), &ldVsr, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gegs(char jobvsl, char jobvsr, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *Vsl, IndexType ldVsl, std::complex *Vsr, IndexType ldVsr, std::complex *work, IndexType lWork, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgegs"); LAPACK_IMPL(zgegs)(&jobvsl, &jobvsr, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(Vsl), &ldVsl, reinterpret_cast(Vsr), &ldVsr, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEGS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gegv.h000066400000000000000000000103341456314707100241650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEGV_H #define CXXLAPACK_INTERFACE_GEGV_H 1 #include namespace cxxlapack { template IndexType gegv(char jobvsl, char jobvsr, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *alpha, float *beta, float *VL, IndexType ldVL, float *VR, IndexType ldVR, float *work, IndexType lWork); template IndexType gegv(char jobvsl, char jobvsr, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *alpha, double *beta, double *VL, IndexType ldVL, double *VR, IndexType ldVR, double *work, IndexType lWork); template IndexType gegv(char jobvsl, char jobvsr, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, std::complex *work, IndexType lWork, float *rWork); template IndexType gegv(char jobvsl, char jobvsr, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, std::complex *work, IndexType lWork, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEGV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gegv.tcc000066400000000000000000000161421456314707100245120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEGV_TCC #define CXXLAPACK_INTERFACE_GEGV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gegv(char jobvsl, char jobvsr, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *alpha, float *beta, float *VL, IndexType ldVL, float *VR, IndexType ldVR, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgegv"); LAPACK_IMPL(sgegv)(&jobvsl, &jobvsr, &n, A, &ldA, B, &ldB, alpha, beta, VL, &ldVL, VR, &ldVR, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gegv(char jobvsl, char jobvsr, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *alpha, double *beta, double *VL, IndexType ldVL, double *VR, IndexType ldVR, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgegv"); LAPACK_IMPL(dgegv)(&jobvsl, &jobvsr, &n, A, &ldA, B, &ldB, alpha, beta, VL, &ldVL, VR, &ldVR, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gegv(char jobvsl, char jobvsr, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, std::complex *work, IndexType lWork, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgegv"); LAPACK_IMPL(cgegv)(&jobvsl, &jobvsr, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gegv(char jobvsl, char jobvsr, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, std::complex *work, IndexType lWork, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgegv"); LAPACK_IMPL(zgegv)(&jobvsl, &jobvsr, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEGS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gehd2.h000066400000000000000000000055531456314707100242350ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEHD2_H #define CXXLAPACK_INTERFACE_GEHD2_H 1 #include namespace cxxlapack { template IndexType gehd2(IndexType n, IndexType iLo, IndexType iHi, float *A, IndexType ldA, float *tau, float *work); template IndexType gehd2(IndexType n, IndexType iLo, IndexType iHi, double *A, IndexType ldA, double *tau, double *work); template IndexType gehd2(IndexType n, IndexType iLo, IndexType iHi, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work); template IndexType gehd2(IndexType n, IndexType iLo, IndexType iHi, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEHD2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gehd2.tcc000066400000000000000000000113151456314707100245500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEHD2_TCC #define CXXLAPACK_INTERFACE_GEHD2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gehd2(IndexType n, IndexType iLo, IndexType iHi, float *A, IndexType ldA, float *tau, float *work) { IndexType info; CXXLAPACK_DEBUG_OUT("sgehd2"); LAPACK_IMPL(sgehd2)(&n, &iLo, &iHi, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gehd2(IndexType n, IndexType iLo, IndexType iHi, double *A, IndexType ldA, double *tau, double *work) { IndexType info; CXXLAPACK_DEBUG_OUT("dgehd2"); LAPACK_IMPL(dgehd2)(&n, &iLo, &iHi, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gehd2(IndexType n, IndexType iLo, IndexType iHi, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("cgehd2"); LAPACK_IMPL(cgehd2)(&n, &iLo, &iHi, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gehd2(IndexType n, IndexType iLo, IndexType iHi, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("zgehd2"); LAPACK_IMPL(zgehd2)(&n, &iLo, &iHi, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEHD2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gehrd.h000066400000000000000000000060051456314707100243260ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEHRD_H #define CXXLAPACK_INTERFACE_GEHRD_H 1 #include namespace cxxlapack { template IndexType gehrd(IndexType n, IndexType iLo, IndexType iHi, float *A, IndexType ldA, float *tau, float *work, IndexType lWork); template IndexType gehrd(IndexType n, IndexType iLo, IndexType iHi, double *A, IndexType ldA, double *tau, double *work, IndexType lWork); template IndexType gehrd(IndexType n, IndexType iLo, IndexType iHi, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork); template IndexType gehrd(IndexType n, IndexType iLo, IndexType iHi, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEHRD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gehrd.tcc000066400000000000000000000117261456314707100246560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEHRD_TCC #define CXXLAPACK_INTERFACE_GEHRD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gehrd(IndexType n, IndexType iLo, IndexType iHi, float *A, IndexType ldA, float *tau, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgehrd"); LAPACK_IMPL(sgehrd)(&n, &iLo, &iHi, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gehrd(IndexType n, IndexType iLo, IndexType iHi, double *A, IndexType ldA, double *tau, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgehrd"); LAPACK_IMPL(dgehrd)(&n, &iLo, &iHi, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gehrd(IndexType n, IndexType iLo, IndexType iHi, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgehrd"); LAPACK_IMPL(cgehrd)(&n, &iLo, &iHi, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gehrd(IndexType n, IndexType iLo, IndexType iHi, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgehrd"); LAPACK_IMPL(zgehrd)(&n, &iLo, &iHi, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEHRD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gejsv.h000066400000000000000000000056431456314707100243620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEJSV_H #define CXXLAPACK_INTERFACE_GEJSV_H 1 #include namespace cxxlapack { template IndexType gejsv(char jobA, char jobU, char jobV, char jobR, char jobT, char jobP, IndexType m, IndexType n, float *A, IndexType ldA, float *sva, float *U, IndexType ldU, float *V, IndexType ldV, float *work, IndexType lWork, IndexType *iWork); template IndexType gejsv(char jobA, char jobU, char jobV, char jobR, char jobT, char jobP, IndexType m, IndexType n, double *A, IndexType ldA, double *sva, double *U, IndexType ldU, double *V, IndexType ldV, double *work, IndexType lWork, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEJSV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gejsv.tcc000066400000000000000000000105601456314707100246760ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEJSV_TCC #define CXXLAPACK_INTERFACE_GEJSV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gejsv(char jobA, char jobU, char jobV, char jobR, char jobT, char jobP, IndexType m, IndexType n, float *A, IndexType ldA, float *sva, float *U, IndexType ldU, float *V, IndexType ldV, float *work, IndexType lWork, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgejsv"); LAPACK_IMPL(sgejsv)(&jobA, &jobU, &jobV, &jobR, &jobT, &jobP, &m, &n, A, &ldA, sva, U, &ldU, V, &ldV, work, &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gejsv(char jobA, char jobU, char jobV, char jobR, char jobT, char jobP, IndexType m, IndexType n, double *A, IndexType ldA, double *sva, double *U, IndexType ldU, double *V, IndexType ldV, double *work, IndexType lWork, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgejsv"); LAPACK_IMPL(dgejsv)(&jobA, &jobU, &jobV, &jobR, &jobT, &jobP, &m, &n, A, &ldA, sva, U, &ldU, V, &ldV, work, &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEJSV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gelq2.h000066400000000000000000000054211456314707100242500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GELQ2_H #define CXXLAPACK_INTERFACE_GELQ2_H 1 #include namespace cxxlapack { template IndexType gelq2(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work); template IndexType gelq2(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work); template IndexType gelq2(const IndexType m, const IndexType n, std::complex *A, const IndexType ldA, std::complex *tau, std::complex *work); template IndexType gelq2(const IndexType m, const IndexType n, std::complex *A, const IndexType ldA, std::complex *tau, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GELQ2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gelq2.tcc000066400000000000000000000110021456314707100245620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GELQ2_TCC #define CXXLAPACK_INTERFACE_GELQ2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gelq2(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work) { IndexType info; CXXLAPACK_DEBUG_OUT("sgelq2"); LAPACK_IMPL(sgelq2)(&m, &n, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gelq2(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work) { IndexType info; CXXLAPACK_DEBUG_OUT("dgelq2"); LAPACK_IMPL(dgelq2)(&m, &n, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gelq2(const IndexType m, const IndexType n, std::complex *A, const IndexType ldA, std::complex *tau, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("cgelq2"); LAPACK_IMPL(cgelq2)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gelq2(const IndexType m, const IndexType n, std::complex *A, const IndexType ldA, std::complex *tau, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("zgelq2"); LAPACK_IMPL(zgelq2)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GELQ2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gelqf.h000066400000000000000000000055531456314707100243420ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GELQF_H #define CXXLAPACK_INTERFACE_GELQF_H 1 #include namespace cxxlapack { template IndexType gelqf(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work, IndexType lWork); template IndexType gelqf(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work, IndexType lWork); template IndexType gelqf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *TAU, std::complex *work, IndexType lWork); template IndexType gelqf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *TAU, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GELQF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gelqf.tcc000066400000000000000000000113141456314707100246540ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GELQF_TCC #define CXXLAPACK_INTERFACE_GELQF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gelqf(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgelqf"); LAPACK_IMPL(sgelqf)(&m, &n, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gelqf(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgelqf"); LAPACK_IMPL(dgelqf)(&m, &n, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gelqf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgelqf"); LAPACK_IMPL(cgelqf)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gelqf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgelqf"); LAPACK_IMPL(zgelqf)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GELQF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gels.h000066400000000000000000000064061456314707100241740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GELS_H #define CXXLAPACK_INTERFACE_GELS_H 1 #include namespace cxxlapack { template IndexType gels(char trans, IndexType m, IndexType n, IndexType nRhs, float *A, IndexType ldA, float *B, IndexType ldB, float *work, IndexType lWork); template IndexType gels(char trans, IndexType m, IndexType n, IndexType nRhs, double *A, IndexType ldA, double *B, IndexType ldB, double *work, IndexType lWork); template IndexType gels(char trans, IndexType m, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *work, IndexType lWork); template IndexType gels(char trans, IndexType m, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GELS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gels.tcc000066400000000000000000000125631456314707100245170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GELS_TCC #define CXXLAPACK_INTERFACE_GELS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gels(char trans, IndexType m, IndexType n, IndexType nRhs, float *A, IndexType ldA, float *B, IndexType ldB, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgels"); LAPACK_IMPL(sgels)(&trans, &m, &n, &nRhs, A, &ldA, B, &ldB, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gels(char trans, IndexType m, IndexType n, IndexType nRhs, double *A, IndexType ldA, double *B, IndexType ldB, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgels"); LAPACK_IMPL(dgels)(&trans, &m, &n, &nRhs, A, &ldA, B, &ldB, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gels(char trans, IndexType m, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgels"); LAPACK_IMPL(cgels)(&trans, &m, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gels(char trans, IndexType m, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgels"); LAPACK_IMPL(zgels)(&trans, &m, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GELS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gelsd.h000066400000000000000000000102651456314707100243360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GELSD_H #define CXXLAPACK_INTERFACE_GELSD_H 1 #include namespace cxxlapack { template IndexType gelsd(IndexType m, IndexType n, IndexType nRhs, const float *A, IndexType ldA, float *B, IndexType ldB, float *s, float rCond, IndexType &rank, float *work, IndexType lWork, IndexType *iWork); template IndexType gelsd(IndexType m, IndexType n, IndexType nRhs, const double *A, IndexType ldA, double *B, IndexType ldB, double *s, double rCond, IndexType &rank, double *work, IndexType lWork, IndexType *iWork); template IndexType gelsd(IndexType m, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, float *s, float rCond, IndexType &rank, std::complex *work, IndexType lWork, float *rWork, IndexType *iWork); template IndexType gelsd(IndexType m, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, double *s, double rCond, IndexType &rank, std::complex *work, IndexType lWork, double *rWork, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GELSD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gelsd.tcc000066400000000000000000000153111456314707100246550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GELSD_TCC #define CXXLAPACK_INTERFACE_GELSD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gelsd(IndexType m, IndexType n, IndexType nRhs, const float *A, IndexType ldA, float *B, IndexType ldB, float *s, float rCond, IndexType &rank, float *work, IndexType lWork, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgelsd"); LAPACK_IMPL(sgelsd)(&m, &n, &nRhs, A, &ldA, B, &ldB, s, &rCond, &rank, work, &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gelsd(IndexType m, IndexType n, IndexType nRhs, const double *A, IndexType ldA, double *B, IndexType ldB, double *s, double rCond, IndexType &rank, double *work, IndexType lWork, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgelsd"); LAPACK_IMPL(dgelsd)(&m, &n, &nRhs, A, &ldA, B, &ldB, s, &rCond, &rank, work, &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gelsd(IndexType m, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, float *s, float rCond, IndexType &rank, std::complex *work, IndexType lWork, float *rWork, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgelsd"); LAPACK_IMPL(cgelsd)(&m, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, s, &rCond, &rank, reinterpret_cast(work), &lWork, rWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gelsd(IndexType m, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, double *s, double rCond, IndexType &rank, std::complex *work, IndexType lWork, double *rWork, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgelsd"); LAPACK_IMPL(zgelsd)(&m, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, s, &rCond, &rank, reinterpret_cast(work), &lWork, rWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GELSD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gelss.h000066400000000000000000000073411456314707100243560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GELSS_H #define CXXLAPACK_INTERFACE_GELSS_H 1 #include namespace cxxlapack { template IndexType gelss(IndexType m, IndexType n, IndexType nRhs, float *A, IndexType ldA, float *B, IndexType ldB, float *s, float rCond, IndexType rank, float *work, IndexType lWork); template IndexType gelss(IndexType m, IndexType n, IndexType nRhs, double *A, IndexType ldA, double *B, IndexType ldB, double *s, double rCond, IndexType rank, double *work, IndexType lWork); template IndexType gelss(IndexType m, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *s, float rCond, IndexType rank, std::complex *work, IndexType lWork); template IndexType gelss(IndexType m, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *s, double rCond, IndexType rank, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GELSS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gelss.tcc000066400000000000000000000144021456314707100246740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GELSS_TCC #define CXXLAPACK_INTERFACE_GELSS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gelss(IndexType m, IndexType n, IndexType nRhs, float *A, IndexType ldA, float *B, IndexType ldB, float *s, float rCond, IndexType rank, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgelss"); LAPACK_IMPL(sgelss)(&m, &n, &nRhs, A, &ldA, B, &ldB, s, &rCond, &rank, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gelss(IndexType m, IndexType n, IndexType nRhs, double *A, IndexType ldA, double *B, IndexType ldB, double *s, double rCond, IndexType rank, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgelss"); LAPACK_IMPL(dgelss)(&m, &n, &nRhs, A, &ldA, B, &ldB, s, &rCond, &rank, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gelss(IndexType m, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *s, float rCond, IndexType rank, std::complex *work, float rWork, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgelss"); LAPACK_IMPL(cgelss)(&m, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(s), &rCond, &rank, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gelss(IndexType m, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *s, double rCond, IndexType rank, std::complex *work, double rWork, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgelss"); LAPACK_IMPL(zgelss)(&m, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(s), &rCond, &rank, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GELSS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gelsx.h000066400000000000000000000072451456314707100243660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GELSX_H #define CXXLAPACK_INTERFACE_GELSX_H 1 #include namespace cxxlapack { template IndexType gelsx(IndexType m, IndexType n, IndexType nRhs, float *A, IndexType ldA, float *B, IndexType ldB, IndexType *jpvt, float rCond, IndexType &rank, float *work); template IndexType gelsx(IndexType m, IndexType n, IndexType nRhs, double *A, IndexType ldA, double *B, IndexType ldB, IndexType *jpvt, double rCond, IndexType &rank, double *work); template IndexType gelsx(IndexType m, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType *jpvt, float rCond, IndexType &rank, std::complex *work, float *rWork); template IndexType gelsx(IndexType m, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType *jpvt, double rCond, IndexType &rank, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GELSX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gelsx.tcc000066400000000000000000000137341456314707100247100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GELSX_TCC #define CXXLAPACK_INTERFACE_GELSX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gelsx(IndexType m, IndexType n, IndexType nRhs, float *A, IndexType ldA, float *B, IndexType ldB, IndexType *jpvt, float rCond, IndexType &rank, float *work) { IndexType info; CXXLAPACK_DEBUG_OUT("sgelsx"); LAPACK_IMPL(sgelsx)(&m, &n, &nRhs, A, &ldA, B, &ldB, jpvt, &rCond, &rank, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gelsx(IndexType m, IndexType n, IndexType nRhs, double *A, IndexType ldA, double *B, IndexType ldB, IndexType *jpvt, double rCond, IndexType &rank, double *work) { IndexType info; CXXLAPACK_DEBUG_OUT("dgelsx"); LAPACK_IMPL(dgelsx)(&m, &n, &nRhs, A, &ldA, B, &ldB, jpvt, &rCond, &rank, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gelsx(IndexType m, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType *jpvt, float rCond, IndexType &rank, std::complex *work, float *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgelsx"); LAPACK_IMPL(cgelsx)(&m, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, jpvt, &rCond, &rank, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gelsx(IndexType m, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType *jpvt, double rCond, IndexType &rank, std::complex *work, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgelsx"); LAPACK_IMPL(zgelsx)(&m, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, jpvt, &rCond, &rank, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GELSX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gelsy.h000066400000000000000000000071061456314707100243630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GELSY_H #define CXXLAPACK_INTERFACE_GELSY_H 1 #include namespace cxxlapack { template void gelsy(IndexType m, IndexType n, IndexType nRhs, float *A, IndexType ldA, float *B, IndexType ldB, IndexType *jPiv, float rCond, IndexType &rank, float *work, IndexType lWork); template void gelsy(IndexType m, IndexType n, IndexType nRhs, double *A, IndexType ldA, double *B, IndexType ldB, IndexType *jPiv, double rCond, IndexType &rank, double *work, IndexType lWork); template void gelsy(IndexType m, IndexType n, IndexType nRhs, std::complex *A, const IndexType ldA, std::complex *B, IndexType ldB, IndexType *jPiv, float rCond, IndexType &rank, std::complex *work, IndexType lWork, float *rWork); template void gelsy(IndexType m, IndexType n, IndexType nRhs, std::complex *A, const IndexType ldA, std::complex *B, IndexType ldB, IndexType *jPiv, double rCond, IndexType &rank, std::complex *work, IndexType lWork, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GELSY_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gelsy.tcc000066400000000000000000000136541456314707100247120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GELSY_TCC #define CXXLAPACK_INTERFACE_GELSY_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void gelsy(IndexType m, IndexType n, IndexType nRhs, float *A, IndexType ldA, float *B, IndexType ldB, IndexType *jPiv, float rCond, IndexType &rank, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgelsy"); LAPACK_IMPL(sgelsy)(&m, &n, &nRhs, A, &ldA, B, &ldB, jPiv, &rCond, &rank, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } template void gelsy(IndexType m, IndexType n, IndexType nRhs, double *A, IndexType ldA, double *B, IndexType ldB, IndexType *jPiv, double rCond, IndexType &rank, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgelsy"); LAPACK_IMPL(dgelsy)(&m, &n, &nRhs, A, &ldA, B, &ldB, jPiv, &rCond, &rank, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } template void gelsy(IndexType m, IndexType n, IndexType nRhs, std::complex *A, const IndexType ldA, std::complex *B, IndexType ldB, IndexType *jPiv, float rCond, IndexType &rank, std::complex *work, IndexType lWork, float *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgelsy"); LAPACK_IMPL(cgelsy)(&m, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, jPiv, &rCond, &rank, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } template void gelsy(IndexType m, IndexType n, IndexType nRhs, std::complex *A, const IndexType ldA, std::complex *B, IndexType ldB, IndexType *jPiv, double rCond, IndexType &rank, std::complex *work, IndexType lWork, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgelsy"); LAPACK_IMPL(zgelsy)(&m, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, jPiv, &rCond, &rank, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GELSY_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geql2.h000066400000000000000000000055351456314707100242560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQL2_H #define CXXLAPACK_INTERFACE_GEQL2_H 1 #include namespace cxxlapack { template IndexType geql2(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work); template IndexType geql2(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work); template IndexType geql2(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work); template IndexType geql2(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQL2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geql2.tcc000066400000000000000000000111161456314707100245700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQL2_TCC #define CXXLAPACK_INTERFACE_GEQL2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType geql2(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work) { IndexType info; CXXLAPACK_DEBUG_OUT("sgeql2"); LAPACK_IMPL(sgeql2)(&m, &n, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geql2(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work) { IndexType info; CXXLAPACK_DEBUG_OUT("dgeql2"); LAPACK_IMPL(dgeql2)(&m, &n, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geql2(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("cgeql2"); LAPACK_IMPL(cgeql2)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geql2(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("zgeql2"); LAPACK_IMPL(zgeql2)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQL2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geqlf.h000066400000000000000000000057711456314707100243440ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQLF_H #define CXXLAPACK_INTERFACE_GEQLF_H 1 #include namespace cxxlapack { template IndexType geqlf(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work, IndexType lWork); template IndexType geqlf(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work, IndexType lWork); template IndexType geqlf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork); template IndexType geqlf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQLF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geqlf.tcc000066400000000000000000000115321456314707100246560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQLF_TCC #define CXXLAPACK_INTERFACE_GEQLF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType geqlf(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgeqlf"); LAPACK_IMPL(sgeqlf)(&m, &n, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqlf(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgeqlf"); LAPACK_IMPL(dgeqlf)(&m, &n, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqlf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgeqlf"); LAPACK_IMPL(cgeqlf)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqlf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgeqlf"); LAPACK_IMPL(zgeqlf)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQLF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geqp3.h000066400000000000000000000061051456314707100242550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQP3_H #define CXXLAPACK_INTERFACE_GEQP3_H 1 #include namespace cxxlapack { template IndexType geqp3(IndexType m, IndexType n, float *A, IndexType ldA, IndexType *jPvt, float *tau, float *work, IndexType lWork); template IndexType geqp3(IndexType m, IndexType n, double *A, IndexType ldA, IndexType *jPvt, double *tau, double *work, IndexType lWork); template IndexType geqp3(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, std::complex *work, IndexType lWork, float *rWork); template IndexType geqp3(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, std::complex *work, IndexType lWork, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQP3_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geqp3.tcc000066400000000000000000000121041456314707100245730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQP3_TCC #define CXXLAPACK_INTERFACE_GEQP3_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType geqp3(IndexType m, IndexType n, float *A, IndexType ldA, IndexType *jPvt, float *tau, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgeqp3"); LAPACK_IMPL(sgeqp3)(&m, &n, A, &ldA, jPvt, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqp3(IndexType m, IndexType n, double *A, IndexType ldA, IndexType *jPvt, double *tau, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgeqp3"); LAPACK_IMPL(dgeqp3)(&m, &n, A, &ldA, jPvt, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqp3(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, std::complex *work, IndexType lWork, float *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgeqp3"); LAPACK_IMPL(cgeqp3)(&m, &n, reinterpret_cast(A), &ldA, jPvt, reinterpret_cast(tau), reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqp3(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, std::complex *work, IndexType lWork, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgeqp3"); LAPACK_IMPL(zgeqp3)(&m, &n, reinterpret_cast(A), &ldA, jPvt, reinterpret_cast(tau), reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQP3_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geqpf.h000066400000000000000000000056731456314707100243510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQPF_H #define CXXLAPACK_INTERFACE_GEQPF_H 1 #include namespace cxxlapack { template IndexType geqpf(IndexType m, IndexType n, float *A, IndexType ldA, IndexType *jPvt, float *tau, float *work); template IndexType geqpf(IndexType m, IndexType n, double *A, IndexType ldA, IndexType *jPvt, double *tau, double *work); template IndexType geqpf(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, std::complex *work, float *rWork); template IndexType geqpf(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQPF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geqpf.tcc000066400000000000000000000115121456314707100246600ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQPF_TCC #define CXXLAPACK_INTERFACE_GEQPF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType geqpf(IndexType m, IndexType n, float *A, IndexType ldA, IndexType *jPvt, float *tau, float *work) { IndexType info; CXXLAPACK_DEBUG_OUT("sgeqpf"); LAPACK_IMPL(sgeqpf)(&m, &n, A, &ldA, jPvt, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqpf(IndexType m, IndexType n, double *A, IndexType ldA, IndexType *jPvt, double *tau, double *work) { IndexType info; CXXLAPACK_DEBUG_OUT("dgeqpf"); LAPACK_IMPL(dgeqpf)(&m, &n, A, &ldA, jPvt, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqpf(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, std::complex *work, float *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgeqpf"); LAPACK_IMPL(cgeqpf)(&m, &n, reinterpret_cast(A), &ldA, jPvt, reinterpret_cast(tau), reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqpf(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, std::complex *work, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgeqpf"); LAPACK_IMPL(zgeqpf)(&m, &n, reinterpret_cast(A), &ldA, jPvt, reinterpret_cast(tau), reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQPF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geqr2.h000066400000000000000000000053411456314707100242570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQR2_H #define CXXLAPACK_INTERFACE_GEQR2_H 1 #include namespace cxxlapack { template IndexType geqr2(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work); template IndexType geqr2(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work); template IndexType geqr2(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work); template IndexType geqr2(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQR2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geqr2.tcc000066400000000000000000000107221456314707100246000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQR2_TCC #define CXXLAPACK_INTERFACE_GEQR2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType geqr2(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work) { IndexType info; CXXLAPACK_DEBUG_OUT("sgeqr2"); LAPACK_IMPL(sgeqr2)(&m, &n, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqr2(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work) { IndexType info; CXXLAPACK_DEBUG_OUT("dgeqr2"); LAPACK_IMPL(dgeqr2)(&m, &n, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqr2(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("cgeqr2"); LAPACK_IMPL(cgeqr2)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqr2(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("zgeqr2"); LAPACK_IMPL(zgeqr2)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQR2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geqr2p.h000066400000000000000000000053741456314707100244450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQR2P_H #define CXXLAPACK_INTERFACE_GEQR2P_H 1 #include namespace cxxlapack { template IndexType geqr2p(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work); template IndexType geqr2p(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work); template IndexType geqr2p(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work); template IndexType geqr2p(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQR2P_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geqr2p.tcc000066400000000000000000000110151456314707100247540ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQR2P_TCC #define CXXLAPACK_INTERFACE_GEQR2P_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType geqr2p(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work) { IndexType info; CXXLAPACK_DEBUG_OUT("sgeqr2p"); LAPACK_IMPL(sgeqr2p)(&m, &n, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqr2p(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work) { IndexType info; CXXLAPACK_DEBUG_OUT("dgeqrp2"); LAPACK_IMPL(dgeqr2p)(&m, &n, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqr2p(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("cgeqr2p"); LAPACK_IMPL(cgeqr2p)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqr2p(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("zgeqr2p"); LAPACK_IMPL(zgeqr2p)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQR2P_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geqrf.h000066400000000000000000000055351456314707100243500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQRF_H #define CXXLAPACK_INTERFACE_GEQRF_H 1 #include namespace cxxlapack { template IndexType geqrf(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work, IndexType lWork); template IndexType geqrf(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work, IndexType lWork); template IndexType geqrf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork); template IndexType geqrf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQRF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geqrf.tcc000066400000000000000000000112761456314707100246710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQRF_TCC #define CXXLAPACK_INTERFACE_GEQRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType geqrf(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgeqrf"); LAPACK_IMPL(sgeqrf)(&m, &n, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqrf(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgeqrf"); LAPACK_IMPL(dgeqrf)(&m, &n, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqrf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgeqrf"); LAPACK_IMPL(cgeqrf)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqrf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgeqrf"); LAPACK_IMPL(zgeqrf)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geqrfp.h000066400000000000000000000055741456314707100245330ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQRFP_H #define CXXLAPACK_INTERFACE_GEQRFP_H 1 #include namespace cxxlapack { template IndexType geqrfp(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work, IndexType lWork); template IndexType geqrfp(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work, IndexType lWork); template IndexType geqrfp(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork); template IndexType geqrfp(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQRFP_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/geqrfp.tcc000066400000000000000000000114001456314707100250360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GEQRFP_TCC #define CXXLAPACK_INTERFACE_GEQRFP_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType geqrfp(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgeqrfp"); LAPACK_IMPL(sgeqrfp)(&m, &n, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqrfp(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgeqrfp"); LAPACK_IMPL(dgeqrfp)(&m, &n, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqrfp(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgeqrfp"); LAPACK_IMPL(cgeqrfp)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType geqrfp(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgeqrfp"); LAPACK_IMPL(zgeqrfp)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GEQRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gerfs.h000066400000000000000000000107051456314707100243450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GERFS_H #define CXXLAPACK_INTERFACE_GERFS_H 1 #include namespace cxxlapack { template IndexType gerfs(char trans, IndexType n, IndexType nRhs, const float *A, IndexType ldA, const float *AF, IndexType ldAF, const IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float *fErr, float *bErr, float *work, IndexType *iWork); template IndexType gerfs(char trans, IndexType n, IndexType nRhs, const double *A, IndexType ldA, const double *AF, IndexType ldAF, const IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double *fErr, double *bErr, double *work, IndexType *iWork); template IndexType gerfs(char trans, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *AF, IndexType ldAF, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *fErr, float *bErr, std::complex *work, float *rWork); template IndexType gerfs(char trans, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *AF, IndexType ldAF, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *fErr, double *bErr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GERFS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gerfs.tcc000066400000000000000000000165321456314707100246730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GERFS_TCC #define CXXLAPACK_INTERFACE_GERFS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gerfs(char trans, IndexType n, IndexType nRhs, const float *A, IndexType ldA, const float *AF, IndexType ldAF, const IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float *fErr, float *bErr, float *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgerfs"); LAPACK_IMPL(sgerfs)(&trans, &n, &nRhs, A, &ldA, AF, &ldAF, iPiv, B, &ldB, X, &ldX, fErr, bErr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gerfs(char trans, IndexType n, IndexType nRhs, const double *A, IndexType ldA, const double *AF, IndexType ldAF, const IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double *fErr, double *bErr, double *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgerfs"); LAPACK_IMPL(dgerfs)(&trans, &n, &nRhs, A, &ldA, AF, &ldAF, iPiv, B, &ldB, X, &ldX, fErr, bErr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gerfs(char trans, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *AF, IndexType ldAF, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *fErr, float *bErr, std::complex *work, float *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgerfs"); LAPACK_IMPL(cgerfs)(&trans, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(AF), &ldAF, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, fErr, bErr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gerfs(char trans, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *AF, IndexType ldAF, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *fErr, double *bErr, std::complex *work, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgerfs"); LAPACK_IMPL(zgerfs)(&trans, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(AF), &ldAF, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, fErr, bErr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GERFS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gerq2.h000066400000000000000000000055351456314707100242640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GERQ2_H #define CXXLAPACK_INTERFACE_GERQ2_H 1 #include namespace cxxlapack { template IndexType gerq2(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work); template IndexType gerq2(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work); template IndexType gerq2(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work); template IndexType gerq2(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GERQ2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gerq2.tcc000066400000000000000000000111171456314707100245770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GERQ2_TCC #define CXXLAPACK_INTERFACE_GERQ2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gerq2(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work) { IndexType info; CXXLAPACK_DEBUG_OUT("sgerq2"); LAPACK_IMPL(sgerq2)(&m, &n, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gerq2(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work) { IndexType info; CXXLAPACK_DEBUG_OUT("dgerq2"); LAPACK_IMPL(dgerq2)(&m, &n, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gerq2(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("cgerq2"); LAPACK_IMPL(cgerq2)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gerq2(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("zgerq2"); LAPACK_IMPL(zgerq2)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GERQ2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gerqf.h000066400000000000000000000057711456314707100243520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GERQF_H #define CXXLAPACK_INTERFACE_GERQF_H 1 #include namespace cxxlapack { template IndexType gerqf(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work, IndexType lWork); template IndexType gerqf(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work, IndexType lWork); template IndexType gerqf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork); template IndexType gerqf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GERQF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gerqf.tcc000066400000000000000000000115331456314707100246650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GERQF_TCC #define CXXLAPACK_INTERFACE_GERQF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gerqf(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgerqf"); LAPACK_IMPL(sgerqf)(&m, &n, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gerqf(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgerqf"); LAPACK_IMPL(dgerqf)(&m, &n, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gerqf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgerqf"); LAPACK_IMPL(cgerqf)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gerqf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgerqf"); LAPACK_IMPL(zgerqf)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GERQF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gesc2.h000066400000000000000000000057711456314707100242510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GESC2_H #define CXXLAPACK_INTERFACE_GESC2_H 1 #include namespace cxxlapack { template void gesc2(IndexType n, float *A, IndexType ldA, float *rhs, const IndexType *iPiv, const IndexType *jpiv, float &scale); template void gesc2(IndexType n, double *A, IndexType ldA, double *rhs, const IndexType *iPiv, const IndexType *jpiv, double &scale); template void gesc2(IndexType n, std::complex *A, IndexType ldA, std::complex *rhs, const IndexType *iPiv, const IndexType *jpiv, float &scale); template void gesc2(IndexType n, std::complex *A, IndexType ldA, std::complex *rhs, const IndexType *iPiv, const IndexType *jpiv, double &scale); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GESC2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gesc2.tcc000066400000000000000000000100431456314707100245570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GESC2_TCC #define CXXLAPACK_INTERFACE_GESC2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void gesc2(IndexType n, float *A, IndexType ldA, float *rhs, const IndexType *iPiv, const IndexType *jpiv, float &scale) { CXXLAPACK_DEBUG_OUT("sgesc2"); LAPACK_IMPL(sgesc2)(&n, A, &ldA, rhs, iPiv, jpiv, &scale); } template void gesc2(IndexType n, double *A, IndexType ldA, double *rhs, const IndexType *iPiv, const IndexType *jpiv, double &scale) { CXXLAPACK_DEBUG_OUT("dgesc2"); LAPACK_IMPL(dgesc2)(&n, A, &ldA, rhs, iPiv, jpiv, &scale); } template void gesc2(IndexType n, std::complex *A, IndexType ldA, std::complex *rhs, const IndexType *iPiv, const IndexType *jpiv, float &scale) { CXXLAPACK_DEBUG_OUT("cgesc2"); LAPACK_IMPL(cgesc2)(&n, reinterpret_cast(A), &ldA, reinterpret_cast(rhs), iPiv, jpiv, &scale); } template void gesc2(IndexType n, std::complex *A, IndexType ldA, std::complex *rhs, const IndexType *iPiv, const IndexType *jpiv, double &scale) { CXXLAPACK_DEBUG_OUT("zgesc2"); LAPACK_IMPL(zgesc2)(&n, reinterpret_cast(A), &ldA, reinterpret_cast(rhs), iPiv, jpiv, &scale); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GESC2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gesdd.h000066400000000000000000000100001456314707100243110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GESDD_H #define CXXLAPACK_INTERFACE_GESDD_H 1 #include namespace cxxlapack { template IndexType gesdd(char jobZ, IndexType m, IndexType n, float *A, IndexType ldA, float *s, float *U, IndexType ldU, float *Vt, IndexType ldVt, float *work, IndexType lWork, IndexType *iWork); template IndexType gesdd(char jobZ, IndexType m, IndexType n, double *A, IndexType ldA, double *s, double *U, IndexType ldU, double *Vt, IndexType ldVt, double *work, IndexType lWork, IndexType *iWork); template IndexType gesdd(char jobZ, IndexType m, IndexType n, std::complex *A, IndexType ldA, float *s, std::complex *U, IndexType ldU, std::complex *Vt, IndexType ldVt, std::complex *work, IndexType lWork, float *rWork, IndexType *iWork); template IndexType gesdd(char jobZ, IndexType m, IndexType n, std::complex *A, IndexType ldA, double *s, std::complex *U, IndexType ldU, std::complex *Vt, IndexType ldVt, std::complex *work, IndexType lWork, double *rWork, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GESDD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gesdd.tcc000066400000000000000000000150521456314707100246470ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GESDD_TCC #define CXXLAPACK_INTERFACE_GESDD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gesdd(char jobZ, IndexType m, IndexType n, float *A, IndexType ldA, float *s, float *U, IndexType ldU, float *Vt, IndexType ldVt, float *work, IndexType lWork, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgesdd"); LAPACK_IMPL(sgesdd)(&jobZ, &m, &n, A, &ldA, s, U, &ldU, Vt, &ldVt, work, &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gesdd(char jobZ, IndexType m, IndexType n, double *A, IndexType ldA, double *s, double *U, IndexType ldU, double *Vt, IndexType ldVt, double *work, IndexType lWork, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgesdd"); LAPACK_IMPL(dgesdd)(&jobZ, &m, &n, A, &ldA, s, U, &ldU, Vt, &ldVt, work, &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gesdd(char jobZ, IndexType m, IndexType n, std::complex *A, IndexType ldA, float *s, std::complex *U, IndexType ldU, std::complex *Vt, IndexType ldVt, std::complex *work, IndexType lWork, float *rWork, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgesdd"); LAPACK_IMPL(cgesdd)(&jobZ, &m, &n, reinterpret_cast(A), &ldA, s, reinterpret_cast(U), &ldU, reinterpret_cast(Vt), &ldVt, reinterpret_cast(work), &lWork, rWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gesdd(char jobZ, IndexType m, IndexType n, std::complex *A, IndexType ldA, double *s, std::complex *U, IndexType ldU, std::complex *Vt, IndexType ldVt, std::complex *work, IndexType lWork, double *rWork, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgesdd"); LAPACK_IMPL(zgesdd)(&jobZ, &m, &n, reinterpret_cast(A), &ldA, s, reinterpret_cast(U), &ldU, reinterpret_cast(Vt), &ldVt, reinterpret_cast(work), &lWork, rWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GESDD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gesv.h000066400000000000000000000054721456314707100242100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GESV_H #define CXXLAPACK_INTERFACE_GESV_H 1 #include namespace cxxlapack { template IndexType gesv(IndexType n, IndexType nRhs, float *A, IndexType ldA, IndexType *iPiv, float *B, IndexType ldB); template IndexType gesv(IndexType n, IndexType nRhs, double *A, IndexType ldA, IndexType *iPiv, double *B, IndexType ldB); template IndexType gesv(IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *B, IndexType ldB); template IndexType gesv(IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GESV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gesv.tcc000066400000000000000000000110771456314707100245300ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GESV_TCC #define CXXLAPACK_INTERFACE_GESV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gesv(IndexType n, IndexType nRhs, float *A, IndexType ldA, IndexType *iPiv, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("sgesv"); IndexType info; LAPACK_IMPL(sgesv)(&n, &nRhs, A, &ldA, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gesv(IndexType n, IndexType nRhs, double *A, IndexType ldA, IndexType *iPiv, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dgesv"); IndexType info; LAPACK_IMPL(dgesv)(&n, &nRhs, A, &ldA, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gesv(IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("cgesv"); IndexType info; LAPACK_IMPL(cgesv)(&n, &nRhs, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gesv(IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zgesv"); IndexType info; LAPACK_IMPL(zgesv)(&n, &nRhs, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GESV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gesvd.h000066400000000000000000000077051456314707100243550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GESVD_H #define CXXLAPACK_INTERFACE_GESVD_H 1 #include namespace cxxlapack { template IndexType gesvd(char jobU, char jobVt, IndexType m, IndexType n, float *A, IndexType ldA, float *s, float *U, IndexType ldU, float *Vt, IndexType ldVt, float *work, IndexType lWork); template IndexType gesvd(char jobU, char jobVt, IndexType m, IndexType n, double *A, IndexType ldA, double *s, double *U, IndexType ldU, double *Vt, IndexType ldVt, double *work, IndexType lWork); template IndexType gesvd(char jobU, char jobVt, IndexType m, IndexType n, std::complex *A, IndexType ldA, float *s, std::complex *U, IndexType ldU, std::complex *Vt, IndexType ldVt, std::complex *work, IndexType lWork, float *rWork); template IndexType gesvd(char jobU, char jobVt, IndexType m, IndexType n, std::complex *A, IndexType ldA, double *s, std::complex *U, IndexType ldU, std::complex *Vt, IndexType ldVt, std::complex *work, IndexType lWork, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GESVD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gesvd.tcc000066400000000000000000000150001456314707100246620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GESVD_TCC #define CXXLAPACK_INTERFACE_GESVD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gesvd(char jobU, char jobVt, IndexType m, IndexType n, float *A, IndexType ldA, float *s, float *U, IndexType ldU, float *Vt, IndexType ldVt, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sgesvd"); IndexType info; LAPACK_IMPL(sgesvd)(&jobU, &jobVt, &m, &n, A, &ldA, s, U, &ldU, Vt, &ldVt, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gesvd(char jobU, char jobVt, IndexType m, IndexType n, double *A, IndexType ldA, double *s, double *U, IndexType ldU, double *Vt, IndexType ldVt, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dgesvd"); IndexType info; LAPACK_IMPL(dgesvd)(&jobU, &jobVt, &m, &n, A, &ldA, s, U, &ldU, Vt, &ldVt, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gesvd(char jobU, char jobVt, IndexType m, IndexType n, std::complex *A, IndexType ldA, float *s, std::complex *U, IndexType ldU, std::complex *Vt, IndexType ldVt, std::complex *work, IndexType lWork, float *rWork) { CXXLAPACK_DEBUG_OUT("cgesvd"); IndexType info; LAPACK_IMPL(cgesvd)(&jobU, &jobVt, &m, &n, reinterpret_cast(A), &ldA, s, reinterpret_cast(U), &ldU, reinterpret_cast(Vt), &ldVt, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gesvd(char jobU, char jobVt, IndexType m, IndexType n, std::complex *A, IndexType ldA, double *s, std::complex *U, IndexType ldU, std::complex *Vt, IndexType ldVt, std::complex *work, IndexType lWork, double *rWork) { CXXLAPACK_DEBUG_OUT("zgesvd"); IndexType info; LAPACK_IMPL(zgesvd)(&jobU, &jobVt, &m, &n, reinterpret_cast(A), &ldA, s, reinterpret_cast(U), &ldU, reinterpret_cast(Vt), &ldVt, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GESVD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gesvj.h000066400000000000000000000051651456314707100243610ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GESVJ_H #define CXXLAPACK_INTERFACE_GESVJ_H 1 #include namespace cxxlapack { template IndexType gesvj(char jobA, char jobU, char jobV, IndexType m, IndexType n, float *A, IndexType ldA, float *sva, IndexType mv, float *V, IndexType ldV, float *work, IndexType lWork); template IndexType gesvj(char jobA, char jobU, char jobV, IndexType m, IndexType n, double *A, IndexType ldA, double *sva, IndexType mv, double *V, IndexType ldV, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GESVJ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gesvj.tcc000066400000000000000000000074741456314707100247100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GESVJ_TCC #define CXXLAPACK_INTERFACE_GESVJ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gesvj(char jobA, char jobU, char jobV, IndexType m, IndexType n, float *A, IndexType ldA, float *sva, IndexType mv, float *V, IndexType ldV, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sgesvj"); IndexType info; LAPACK_IMPL(sgesvj)(&jobA, &jobU, &jobV, &m, &n, A, &ldA, sva, &mv, V, &ldV, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gesvj(char jobA, char jobU, char jobV, IndexType m, IndexType n, double *A, IndexType ldA, double *sva, IndexType mv, double *V, IndexType ldV, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dgesvj"); IndexType info; LAPACK_IMPL(dgesvj)(&jobA, &jobU, &jobV, &m, &n, A, &ldA, sva, &mv, V, &ldV, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GESVJ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gesvx.h000066400000000000000000000113551456314707100243750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GESVX_H #define CXXLAPACK_INTERFACE_GESVX_H 1 #include namespace cxxlapack { template IndexType gesvx(char fact, char trans, IndexType n, IndexType nRhs, float *A, IndexType ldA, float *AF, IndexType ldAF, IndexType *iPiv, char equed, float *r, float *c, float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *fErr, float *bErr, float *work, IndexType *iWork); template IndexType gesvx(char fact, char trans, IndexType n, IndexType nRhs, double *A, IndexType ldA, double *AF, IndexType ldAF, IndexType *iPiv, char equed, double *r, double *c, double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *fErr, double *bErr, double *work, IndexType *iWork); template IndexType gesvx(char fact, char trans, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *AF, IndexType ldAF, IndexType *iPiv, char equed, float *r, float *c, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *fErr, float *bErr, std::complex *work, float *rWork); template IndexType gesvx(char fact, char trans, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *AF, IndexType ldAF, IndexType *iPiv, char equed, double *r, double *c, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *fErr, double *bErr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GESVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gesvx.tcc000066400000000000000000000201421456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GESVX_TCC #define CXXLAPACK_INTERFACE_GESVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gesvx(char fact, char trans, IndexType n, IndexType nRhs, float *A, IndexType ldA, float *AF, IndexType ldAF, IndexType *iPiv, char equed, float *r, float *c, float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *fErr, float *bErr, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("sgesvx"); IndexType info; LAPACK_IMPL(sgesvx)(&fact, &trans, &n, &nRhs, A, &ldA, AF, &ldAF, iPiv, &equed, r, c, B, &ldB, X, &ldX, &rCond, fErr, bErr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gesvx(char fact, char trans, IndexType n, IndexType nRhs, double *A, IndexType ldA, double *AF, IndexType ldAF, IndexType *iPiv, char equed, double *r, double *c, double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *fErr, double *bErr, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dgesvx"); IndexType info; LAPACK_IMPL(dgesvx)(&fact, &trans, &n, &nRhs, A, &ldA, AF, &ldAF, iPiv, &equed, r, c, B, &ldB, X, &ldX, &rCond, fErr, bErr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gesvx(char fact, char trans, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *AF, IndexType ldAF, IndexType *iPiv, char equed, float *r, float *c, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *fErr, float *bErr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cgesvx"); IndexType info; LAPACK_IMPL(cgesvx)(&fact, &trans, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(AF), &ldAF, iPiv, &equed, r, c, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, fErr, bErr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gesvx(char fact, char trans, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *AF, IndexType ldAF, IndexType *iPiv, char equed, double *r, double *c, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *fErr, double *bErr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zgesvx"); IndexType info; LAPACK_IMPL(zgesvx)(&fact, &trans, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(AF), &ldAF, iPiv, &equed, r, c, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, fErr, bErr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GESVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/getc2.h000066400000000000000000000053251456314707100242450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GETC2_H #define CXXLAPACK_INTERFACE_GETC2_H 1 #include namespace cxxlapack { template IndexType getc2(IndexType n, float *A, IndexType ldA, IndexType *iPiv, IndexType *jpiv); template IndexType getc2(IndexType n, double *A, IndexType ldA, IndexType *iPiv, IndexType *jpiv); template IndexType getc2(IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, IndexType *jpiv); template IndexType getc2(IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, IndexType *jpiv); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GETC2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/getc2.tcc000066400000000000000000000103751456314707100245700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GETC2_TCC #define CXXLAPACK_INTERFACE_GETC2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType getc2(IndexType n, float *A, IndexType ldA, IndexType *iPiv, IndexType *jpiv) { CXXLAPACK_DEBUG_OUT("sgetc2"); IndexType info; LAPACK_IMPL(sgetc2)(&n, A, &ldA, iPiv, jpiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType getc2(IndexType n, double *A, IndexType ldA, IndexType *iPiv, IndexType *jpiv) { CXXLAPACK_DEBUG_OUT("dgetc2"); IndexType info; LAPACK_IMPL(dgetc2)(&n, A, &ldA, iPiv, jpiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType getc2(IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, IndexType *jpiv) { CXXLAPACK_DEBUG_OUT("cgetc2"); IndexType info; LAPACK_IMPL(cgetc2)(&n, reinterpret_cast(A), &ldA, iPiv, jpiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType getc2(IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, IndexType *jpiv) { CXXLAPACK_DEBUG_OUT("zgetc2"); IndexType info; LAPACK_IMPL(zgetc2)(&n, reinterpret_cast(A), &ldA, iPiv, jpiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GETC2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/getf2.h000066400000000000000000000052651456314707100242530ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GETF2_H #define CXXLAPACK_INTERFACE_GETF2_H 1 #include namespace cxxlapack { template IndexType getf2(IndexType m, IndexType n, float *A, IndexType ldA, IndexType *iPiv); template IndexType getf2(IndexType m, IndexType n, double *A, IndexType ldA, IndexType *iPiv); template IndexType getf2(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv); template IndexType getf2(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GETF2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/getf2.tcc000066400000000000000000000102061456314707100245640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GETF2_TCC #define CXXLAPACK_INTERFACE_GETF2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType getf2(IndexType m, IndexType n, float *A, IndexType ldA, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("sgetf2"); IndexType info; LAPACK_IMPL(sgetf2)(&m, &n, A, &ldA, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType getf2(IndexType m, IndexType n, double *A, IndexType ldA, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("dgetf2"); IndexType info; LAPACK_IMPL(dgetf2)(&m, &n, A, &ldA, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType getf2(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("cgetf2"); IndexType info; LAPACK_IMPL(cgetf2)(&m, &n, reinterpret_cast(A), &ldA, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType getf2(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("zgetf2"); IndexType info; LAPACK_IMPL(zgetf2)(&m, &n, reinterpret_cast(A), &ldA, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GETF2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/getrf.h000066400000000000000000000052671456314707100243550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GETRF_H #define CXXLAPACK_INTERFACE_GETRF_H 1 #include namespace cxxlapack { template IndexType getrf(IndexType m, IndexType n, float *A, IndexType ldA, IndexType *iPiv); template IndexType getrf(IndexType m, IndexType n, double *A, IndexType ldA, IndexType *iPiv); template IndexType getrf(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv); template IndexType getrf(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GETRF_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/getrf.tcc000066400000000000000000000103211456314707100246620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GETRF_TCC #define CXXLAPACK_INTERFACE_GETRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType getrf(IndexType m, IndexType n, float *A, IndexType ldA, IndexType *iPiv) { IndexType info; CXXLAPACK_DEBUG_OUT("sgetrf"); LAPACK_IMPL(sgetrf)(&m, &n, A, &ldA, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType getrf(IndexType m, IndexType n, double *A, IndexType ldA, IndexType *iPiv) { IndexType info; CXXLAPACK_DEBUG_OUT("dgetrf"); LAPACK_IMPL(dgetrf)(&m, &n, A, &ldA, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType getrf(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv) { IndexType info; CXXLAPACK_DEBUG_OUT("cgetrf"); LAPACK_IMPL(cgetrf)(&m, &n, reinterpret_cast(A), &ldA, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType getrf(IndexType m, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv) { IndexType info; CXXLAPACK_DEBUG_OUT("zgetrf"); LAPACK_IMPL(zgetrf)(&m, &n, reinterpret_cast(A), &ldA, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GETRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/getri.h000066400000000000000000000054611456314707100243540ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GETRI_H #define CXXLAPACK_INTERFACE_GETRI_H 1 #include namespace cxxlapack { template IndexType getri(IndexType n, float *A, IndexType ldA, const IndexType *iPiv, float *work, IndexType lWork); template IndexType getri(IndexType n, double *A, IndexType ldA, const IndexType *iPiv, double *work, IndexType lWork); template IndexType getri(IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType lWork); template IndexType getri(IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GETRI_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/getri.tcc000066400000000000000000000107761456314707100247030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GETRI_TCC #define CXXLAPACK_INTERFACE_GETRI_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType getri(IndexType n, float *A, IndexType ldA, const IndexType *iPiv, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sgetri"); LAPACK_IMPL(sgetri)(&n, A, &ldA, iPiv, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType getri(IndexType n, double *A, IndexType ldA, const IndexType *iPiv, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dgetri"); LAPACK_IMPL(dgetri)(&n, A, &ldA, iPiv, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType getri(IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cgetri"); LAPACK_IMPL(cgetri)(&n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType getri(IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zgetri"); LAPACK_IMPL(zgetri)(&n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GETRI_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/getrs.h000066400000000000000000000064031456314707100243630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GETRS_H #define CXXLAPACK_INTERFACE_GETRS_H 1 #include namespace cxxlapack { template IndexType getrs(char trans, IndexType n, IndexType nRhs, const float *A, IndexType ldA, const IndexType *iPiv, float *B, IndexType ldB); template IndexType getrs(char trans, IndexType n, IndexType nRhs, const double *A, IndexType ldA, const IndexType *iPiv, double *B, IndexType ldB); template IndexType getrs(char trans, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB); template IndexType getrs(char trans, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GETRS_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/getrs.tcc000066400000000000000000000123221456314707100247020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GETRS_TCC #define CXXLAPACK_INTERFACE_GETRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType getrs(char trans, IndexType n, IndexType nRhs, const float *A, IndexType ldA, const IndexType *iPiv, float *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("sgetrs"); LAPACK_IMPL(sgetrs)(&trans, &n, &nRhs, A, &ldA, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "trans = " << trans << std::endl; std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType getrs(char trans, IndexType n, IndexType nRhs, const double *A, IndexType ldA, const IndexType *iPiv, double *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("dgetrs"); LAPACK_IMPL(dgetrs)(&trans, &n, &nRhs, A, &ldA, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "trans = " << trans << std::endl; std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType getrs(char trans, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("cgetrs"); LAPACK_IMPL(cgetrs)(&trans, &n, &nRhs, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType getrs(char trans, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("zgetrs"); LAPACK_IMPL(zgetrs)(&trans, &n, &nRhs, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GETRS_TCC 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggbak.h000066400000000000000000000067051456314707100243170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGBAK_H #define CXXLAPACK_INTERFACE_GGBAK_H 1 #include namespace cxxlapack { template IndexType ggbak(char job, char side, IndexType n, IndexType ilo, IndexType ihi, const float *lscale, const float *rscale, IndexType m, float *V, IndexType ldV); template IndexType ggbak(char job, char side, IndexType n, IndexType ilo, IndexType ihi, const double *lscale, const double *rscale, IndexType m, double *V, IndexType ldV); template IndexType ggbak(char job, char side, IndexType n, IndexType ilo, IndexType ihi, const float *lscale, const float *rscale, IndexType m, std::complex *V, IndexType ldV); template IndexType ggbak(char job, char side, IndexType n, IndexType ilo, IndexType ihi, const double *lscale, const double *rscale, IndexType m, std::complex *V, IndexType ldV); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGBAK_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggbak.tcc000066400000000000000000000130021456314707100246250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGBAK_TCC #define CXXLAPACK_INTERFACE_GGBAK_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ggbak(char job, char side, IndexType n, IndexType ilo, IndexType ihi, const float *lscale, const float *rscale, IndexType m, float *V, IndexType ldV) { CXXLAPACK_DEBUG_OUT("sggbak"); IndexType info; LAPACK_IMPL(sggbak)(&job, &side, &n, &ilo, &ihi, lscale, rscale, &m, V, &ldV, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggbak(char job, char side, IndexType n, IndexType ilo, IndexType ihi, const double *lscale, const double *rscale, IndexType m, double *V, IndexType ldV) { CXXLAPACK_DEBUG_OUT("dggbak"); IndexType info; LAPACK_IMPL(dggbak)(&job, &side, &n, &ilo, &ihi, lscale, rscale, &m, V, &ldV, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggbak(char job, char side, IndexType n, IndexType ilo, IndexType ihi, const float *lscale, const float *rscale, IndexType m, std::complex *V, IndexType ldV) { CXXLAPACK_DEBUG_OUT("cggbak"); IndexType info; LAPACK_IMPL(cggbak)(&job, &side, &n, &ilo, &ihi, lscale, rscale, &m, reinterpret_cast(V), &ldV, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggbak(char job, char side, IndexType n, IndexType ilo, IndexType ihi, const double *lscale, const double *rscale, IndexType m, std::complex *V, IndexType ldV) { CXXLAPACK_DEBUG_OUT("zggbak"); IndexType info; LAPACK_IMPL(zggbak)(&job, &side, &n, &ilo, &ihi, lscale, rscale, &m, reinterpret_cast(V), &ldV, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGBAK_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggbal.h000066400000000000000000000071411456314707100243130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGBAL_H #define CXXLAPACK_INTERFACE_GGBAL_H 1 #include namespace cxxlapack { template IndexType ggbal(char job, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, IndexType ilo, IndexType ihi, float *lscale, float *rscale, float *work); template IndexType ggbal(char job, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, IndexType ilo, IndexType ihi, double *lscale, double *rscale, double *work); template IndexType ggbal(char job, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType ilo, IndexType ihi, float *lscale, float *rscale, float *work); template IndexType ggbal(char job, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType ilo, IndexType ihi, double *lscale, double *rscale, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGBAL_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggbal.tcc000066400000000000000000000134701456314707100246370ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGBAL_TCC #define CXXLAPACK_INTERFACE_GGBAL_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ggbal(char job, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, IndexType ilo, IndexType ihi, float *lscale, float *rscale, float *work) { CXXLAPACK_DEBUG_OUT("sggbal"); IndexType info; LAPACK_IMPL(sggbal)(&job, &n, A, &ldA, B, &ldB, &ilo, &ihi, lscale, rscale, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggbal(char job, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, IndexType ilo, IndexType ihi, double *lscale, double *rscale, double *work) { CXXLAPACK_DEBUG_OUT("dggbal"); IndexType info; LAPACK_IMPL(dggbal)(&job, &n, A, &ldA, B, &ldB, &ilo, &ihi, lscale, rscale, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggbal(char job, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType ilo, IndexType ihi, float *lscale, float *rscale, double *work) { CXXLAPACK_DEBUG_OUT("cggbal"); IndexType info; LAPACK_IMPL(cggbal)(&job, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &ilo, &ihi, lscale, rscale, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggbal(char job, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType ilo, IndexType ihi, double *lscale, double *rscale, double *work) { CXXLAPACK_DEBUG_OUT("zggbal"); IndexType info; LAPACK_IMPL(zggbal)(&job, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &ilo, &ihi, lscale, rscale, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGBAL_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gges.h000066400000000000000000000117271456314707100241710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGES_H #define CXXLAPACK_INTERFACE_GGES_H 1 #include namespace cxxlapack { template IndexType gges(char jobvsl, char jobvsr, char sort, IndexType (*select)(const float *, const float *), IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, IndexType &sdim, float *alpha, float *beta, float *Vsl, IndexType ldVsl, float *Vsr, IndexType ldVsr, float *work, IndexType lWork, bool *bwork); template IndexType gges(char jobvsl, char jobvsr, char sort, IndexType (*select)(const double *, const double *), IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, IndexType &sdim, double *alpha, double *beta, double *Vsl, IndexType ldVsl, double *Vsr, IndexType ldVsr, double *work, IndexType lWork, bool *bwork); template IndexType gges(char jobvsl, char jobvsr, char sort, IndexType (*select)(const std::complex *), IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType &sdim, std::complex *alpha, std::complex *beta, std::complex *Vsl, IndexType ldVsl, std::complex *Vsr, IndexType ldVsr, std::complex *work, IndexType lWork, double rWork, bool *bwork); template IndexType gges(char jobvsl, char jobvsr, char sort, IndexType (*select)(const std::complex *), IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType &sdim, std::complex *alpha, std::complex *beta, std::complex *Vsl, IndexType ldVsl, std::complex *Vsr, IndexType ldVsr, std::complex *work, IndexType lWork, double rWork, bool *bwork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGES_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gges.tcc000066400000000000000000000207331456314707100245100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGES_TCC #define CXXLAPACK_INTERFACE_GGES_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gges(char jobvsl, char jobvsr, char sort, IndexType (*select)(const float *, const float *), IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, IndexType &sdim, float *alpha, float *beta, float *Vsl, IndexType ldVsl, float *Vsr, IndexType ldVsr, float *work, IndexType lWork, bool *bwork) { CXXLAPACK_DEBUG_OUT("sgges"); IndexType info; // TODO: Convert bwork into a logical array! LAPACK_IMPL(sgges)(&jobvsl, &jobvsr, &sort, select, &n, A, &ldA, B, &ldB, &sdim, alpha, beta, Vsl, &ldVsl, Vsr, &ldVsr, work, &lWork, bwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gges(char jobvsl, char jobvsr, char sort, IndexType (*select)(const double *, const double *), IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, IndexType &sdim, double *alpha, double *beta, double *Vsl, IndexType ldVsl, double *Vsr, IndexType ldVsr, double *work, IndexType lWork, bool *bwork) { CXXLAPACK_DEBUG_OUT("dgges"); IndexType info; // TODO: Convert bwork into a logical array! LAPACK_IMPL(dgges)(&jobvsl, &jobvsr, &sort, select, &n, A, &ldA, B, &ldB, &sdim, alpha, beta, Vsl, &ldVsl, Vsr, &ldVsr, work, &lWork, bwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gges(char jobvsl, char jobvsr, char sort, IndexType (*select)(const std::complex *), IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType &sdim, std::complex *alpha, std::complex *beta, std::complex *Vsl, IndexType ldVsl, std::complex *Vsr, IndexType ldVsr, std::complex *work, IndexType lWork, double rWork, bool *bwork) { CXXLAPACK_DEBUG_OUT("cgges"); IndexType info; // TODO: Convert bwork into a logical array! LAPACK_IMPL(cgges)(&jobvsl, &jobvsr, &sort, &select, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &sdim, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(Vsl), &ldVsl, reinterpret_cast(Vsr), &ldVsr, reinterpret_cast(work), &lWork, rWork, bwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gges(char jobvsl, char jobvsr, char sort, IndexType (*select)(const std::complex *), IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType &sdim, std::complex *alpha, std::complex *beta, std::complex *Vsl, IndexType ldVsl, std::complex *Vsr, IndexType ldVsr, std::complex *work, IndexType lWork, double rWork, bool *bwork) { CXXLAPACK_DEBUG_OUT("zgges"); IndexType info; // TODO: Convert bwork into a logical array! LAPACK_IMPL(zgges)(&jobvsl, &jobvsr, &sort, &select, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &sdim, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(Vsl), &ldVsl, reinterpret_cast(Vsr), &ldVsr, reinterpret_cast(work), &lWork, rWork, bwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGES_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggesx.h000066400000000000000000000130501456314707100243500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGESX_H #define CXXLAPACK_INTERFACE_GGESX_H 1 #include namespace cxxlapack { template IndexType ggesx(char jobvsl, char jobvsr, char sort, bool selctg, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, IndexType &sdim, float *alpha, float *beta, float *Vsl, IndexType ldVsl, float *Vsr, IndexType ldVsr, float *rConde, float *rCondv, float *work, IndexType lWork, IndexType *iWork, IndexType liWork, bool *bwork); template IndexType ggesx(char jobvsl, char jobvsr, char sort, bool selctg, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, IndexType &sdim, double *alpha, double *beta, double *Vsl, IndexType ldVsl, double *Vsr, IndexType ldVsr, double *rConde, double *rCondv, double *work, IndexType lWork, IndexType *iWork, IndexType liWork, bool *bwork); template IndexType ggesx(char jobvsl, char jobvsr, char sort, bool selctg, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType &sdim, std::complex *alpha, std::complex *beta, std::complex *Vsl, IndexType ldVsl, std::complex *Vsr, IndexType ldVsr, float *rConde, float *rCondv, std::complex *work, IndexType lWork, float rWork, IndexType *iWork, IndexType liWork, bool *bwork); template IndexType ggesx(char jobvsl, char jobvsr, char sort, bool selctg, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType &sdim, std::complex *alpha, std::complex *beta, std::complex *Vsl, IndexType ldVsl, std::complex *Vsr, IndexType ldVsr, double *rConde, double *rCondv, std::complex *work, IndexType lWork, double rWork, IndexType *iWork, IndexType liWork, bool *bwork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGESX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggesx.tcc000066400000000000000000000233041456314707100246750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGESX_TCC #define CXXLAPACK_INTERFACE_GGESX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ggesx(char jobvsl, char jobvsr, char sort, bool selctg, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, IndexType &sdim, float *alpha, float *beta, float *Vsl, IndexType ldVsl, float *Vsr, IndexType ldVsr, float *rConde, float *rCondv, float *work, IndexType lWork, IndexType *iWork, IndexType liWork, bool *bwork) { CXXLAPACK_DEBUG_OUT("sggesx"); IndexType info; IndexType selctg_ = selctg; // TODO: Convert bwork into a logical array! LAPACK_IMPL(sggesx)(&jobvsl, &jobvsr, &sort, &selctg_, &n, A, &ldA, B, &ldB, &sdim, alpha, beta, Vsl, &ldVsl, Vsr, &ldVsr, rConde, rCondv, work, &lWork, iWork, liWork, bwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggesx(char jobvsl, char jobvsr, char sort, bool selctg, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, IndexType &sdim, double *alpha, double *beta, double *Vsl, IndexType ldVsl, double *Vsr, IndexType ldVsr, double *rConde, double *rCondv, double *work, IndexType lWork, IndexType *iWork, IndexType liWork, bool *bwork) { CXXLAPACK_DEBUG_OUT("dggesx"); IndexType info; IndexType selctg_ = selctg; // TODO: Convert bwork into a logical array! LAPACK_IMPL(dggesx)(&jobvsl, &jobvsr, &sort, &selctg_, &n, A, &ldA, B, &ldB, &sdim, alpha, beta, Vsl, &ldVsl, Vsr, &ldVsr, rConde, rCondv, work, &lWork, iWork, liWork, bwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggesx(char jobvsl, char jobvsr, char sort, bool selctg, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType &sdim, std::complex *alpha, std::complex *beta, std::complex *Vsl, IndexType ldVsl, std::complex *Vsr, IndexType ldVsr, float *rConde, float *rCondv, std::complex *work, IndexType lWork, float rWork, IndexType *iWork, IndexType liWork, bool *bwork) { CXXLAPACK_DEBUG_OUT("cggesx"); IndexType info; IndexType selctg_ = selctg; // TODO: Convert bwork into a logical array! LAPACK_IMPL(cggesx)(&jobvsl, &jobvsr, &sort, &selctg_, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &sdim, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(Vsl), &ldVsl, reinterpret_cast(Vsr), &ldVsr, rConde, rCondv, reinterpret_cast(work), &lWork, rWork, iWork, &liWork, bwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggesx(char jobvsl, char jobvsr, char sort, bool selctg, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, IndexType &sdim, std::complex *alpha, std::complex *beta, std::complex *Vsl, IndexType ldVsl, std::complex *Vsr, IndexType ldVsr, double *rConde, double *rCondv, std::complex *work, IndexType lWork, double rWork, IndexType *iWork, IndexType liWork, bool *bwork) { CXXLAPACK_DEBUG_OUT("zggesx"); IndexType info; IndexType selctg_ = selctg; // TODO: Convert bwork into a logical array! LAPACK_IMPL(zggesx)(&jobvsl, &jobvsr, &sort, &selctg_, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &sdim, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(Vsl), &ldVsl, reinterpret_cast(Vsr), &ldVsr, rConde, rCondv, reinterpret_cast(work), &lWork, rWork, iWork, &liWork, bwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGESX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggev.h000066400000000000000000000104461456314707100241710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGEV_H #define CXXLAPACK_INTERFACE_GGEV_H 1 #include namespace cxxlapack { template IndexType ggev(char jobVL, char jobvr, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *alphar, float *alphai, float *beta, float *VL, IndexType ldVL, float *VR, IndexType ldVR, float *work, IndexType lWork); template IndexType ggev(char jobVL, char jobvr, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *alphar, double *alphai, double *beta, double *VL, IndexType ldVL, double *VR, IndexType ldVR, double *work, IndexType lWork); template IndexType ggev(char jobVL, char jobvr, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, std::complex *work, IndexType lWork, float *rWork); template IndexType ggev(char jobVL, char jobvr, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, std::complex *work, IndexType lWork, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGEV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggev.tcc000066400000000000000000000163371456314707100245200ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGEV_TCC #define CXXLAPACK_INTERFACE_GGEV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ggev(char jobVL, char jobvr, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *alphar, float *alphai, float *beta, float *VL, IndexType ldVL, float *VR, IndexType ldVR, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sggev"); IndexType info; LAPACK_IMPL(sggev)(&jobVL, &jobvr, &n, A, &ldA, B, &ldB, alphar, alphai, beta, VL, &ldVL, VR, &ldVR, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggev(char jobVL, char jobvr, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *alphar, double *alphai, double *beta, double *VL, IndexType ldVL, double *VR, IndexType ldVR, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dggev"); IndexType info; LAPACK_IMPL(dggev)(&jobVL, &jobvr, &n, A, &ldA, B, &ldB, alphar, alphai, beta, VL, &ldVL, VR, &ldVR, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggev(char jobVL, char jobvr, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, std::complex *work, IndexType lWork, float *rWork) { CXXLAPACK_DEBUG_OUT("cggev"); IndexType info; LAPACK_IMPL(cggev)(&jobVL, &jobvr, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggev(char jobVL, char jobvr, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, std::complex *work, IndexType lWork, double *rWork) { CXXLAPACK_DEBUG_OUT("zggev"); IndexType info; LAPACK_IMPL(zggev)(&jobVL, &jobvr, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGEV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggevx.h000066400000000000000000000143451456314707100243630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGEVX_H #define CXXLAPACK_INTERFACE_GGEVX_H 1 #include namespace cxxlapack { template IndexType ggevx(char balanc, char jobVL, char jobvr, char sense, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *alphar, float *alphai, float *beta, float *VL, IndexType ldVL, float *VR, IndexType ldVR, IndexType &ilo, IndexType &ihi, float *lscale, float *rscale, float &abnrm, float &bbnrm, float *rConde, float *rCondv, float *work, IndexType lWork, IndexType *iWork, bool *bwork); template IndexType ggevx(char balanc, char jobVL, char jobvr, char sense, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *alphar, double *alphai, double *beta, double *VL, IndexType ldVL, double *VR, IndexType ldVR, IndexType &ilo, IndexType &ihi, double *lscale, double *rscale, double &abnrm, double &bbnrm, double *rConde, double *rCondv, double *work, IndexType lWork, IndexType *iWork, bool *bwork); template IndexType ggevx(char balanc, char jobVL, char jobvr, char sense, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType &ilo, IndexType &ihi, float *lscale, float *rscale, float &abnrm, float &bbnrm, float *rConde, float *rCondv, std::complex *work, IndexType lWork, float *rWork, IndexType *iWork, bool *bwork); template IndexType ggevx(char balanc, char jobVL, char jobvr, char sense, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType &ilo, IndexType &ihi, double *lscale, double *rscale, double &abnrm, double &bbnrm, double *rConde, double *rCondv, std::complex *work, IndexType lWork, double *rWork, IndexType *iWork, bool *bwork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGEVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggevx.tcc000066400000000000000000000253301456314707100247010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGEVX_TCC #define CXXLAPACK_INTERFACE_GGEVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ggevx(char balanc, char jobVL, char jobvr, char sense, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *alphar, float *alphai, float *beta, float *VL, IndexType ldVL, float *VR, IndexType ldVR, IndexType &ilo, IndexType &ihi, float *lscale, float *rscale, float &abnrm, float &bbnrm, float *rConde, float *rCondv, float *work, IndexType lWork, IndexType *iWork, bool *bwork) { CXXLAPACK_DEBUG_OUT("sggevx"); IndexType info; // TODO: Convert bwork into a logical array! LAPACK_IMPL(sggevx)(&balanc, &jobVL, &jobvr, &sense, &n, A, &ldA, B, &ldB, alphar, alphai, beta, VL, &ldVL, VR, &ldVR, &ilo, &ihi, lscale, rscale, &abnrm, &bbnrm, rConde, rCondv, work, &lWork, iWork, bwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggevx(char balanc, char jobVL, char jobvr, char sense, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *alphar, double *alphai, double *beta, double *VL, IndexType ldVL, double *VR, IndexType ldVR, IndexType &ilo, IndexType &ihi, double *lscale, double *rscale, double &abnrm, double &bbnrm, double *rConde, double *rCondv, double *work, IndexType lWork, IndexType *iWork, bool *bwork) { CXXLAPACK_DEBUG_OUT("dggevx"); IndexType info; // TODO: Convert bwork into a logical array! LAPACK_IMPL(dggevx)(&balanc, &jobVL, &jobvr, &sense, &n, A, &ldA, B, &ldB, alphar, alphai, beta, VL, &ldVL, VR, &ldVR, &ilo, &ihi, lscale, rscale, &abnrm, &bbnrm, rConde, rCondv, work, &lWork, iWork, bwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggevx(char balanc, char jobVL, char jobvr, char sense, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType &ilo, IndexType &ihi, float *lscale, float *rscale, float &abnrm, float &bbnrm, float *rConde, float *rCondv, std::complex *work, IndexType lWork, float *rWork, IndexType *iWork, bool *bwork) { CXXLAPACK_DEBUG_OUT("cggevx"); IndexType info; // TODO: Convert bwork into a logical array! LAPACK_IMPL(cggevx)(&balanc, &jobVL, &jobvr, &sense, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, &ilo, &ihi, lscale, rscale, &abnrm, &bbnrm, rConde, rCondv, reinterpret_cast(work), &lWork, rWork, iWork, bwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggevx(char balanc, char jobVL, char jobvr, char sense, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType &ilo, IndexType &ihi, double *lscale, double *rscale, double &abnrm, double &bbnrm, double *rConde, double *rCondv, std::complex *work, IndexType lWork, double *rWork, IndexType *iWork, bool *bwork) { CXXLAPACK_DEBUG_OUT("zggevx"); IndexType info; // TODO: Convert bwork into a logical array! LAPACK_IMPL(zggevx)(&balanc, &jobVL, &jobvr, &sense, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, &ilo, &ihi, lscale, rscale, &abnrm, &bbnrm, rConde, rCondv, reinterpret_cast(work), &lWork, rWork, iWork, bwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGEVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggglm.h000066400000000000000000000073011456314707100243320ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGGLM_H #define CXXLAPACK_INTERFACE_GGGLM_H 1 #include namespace cxxlapack { template IndexType ggglm(IndexType n, IndexType m, IndexType p, float *A, IndexType ldA, float *B, IndexType ldB, float *d, float *x, float *y, float *work, IndexType lWork); template IndexType ggglm(IndexType n, IndexType m, IndexType p, double *A, IndexType ldA, double *B, IndexType ldB, double *d, double *x, double *y, double *work, IndexType lWork); template IndexType ggglm(IndexType n, IndexType m, IndexType p, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *d, std::complex *x, std::complex *y, std::complex *work, IndexType lWork); template IndexType ggglm(IndexType n, IndexType m, IndexType p, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *d, std::complex *x, std::complex *y, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGGLM_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggglm.tcc000066400000000000000000000142421456314707100246560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGGLM_TCC #define CXXLAPACK_INTERFACE_GGGLM_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ggglm(IndexType n, IndexType m, IndexType p, float *A, IndexType ldA, float *B, IndexType ldB, float *d, float *x, float *y, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sggglm"); IndexType info; LAPACK_IMPL(sggglm)(&n, &m, &p, A, &ldA, B, &ldB, d, x, y, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggglm(IndexType n, IndexType m, IndexType p, double *A, IndexType ldA, double *B, IndexType ldB, double *d, double *x, double *y, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dggglm"); IndexType info; LAPACK_IMPL(dggglm)(&n, &m, &p, A, &ldA, B, &ldB, d, x, y, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggglm(IndexType n, IndexType m, IndexType p, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *d, std::complex *x, std::complex *y, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("cggglm"); IndexType info; LAPACK_IMPL(cggglm)(&n, &m, &p, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(d), reinterpret_cast(x), reinterpret_cast(y), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggglm(IndexType n, IndexType m, IndexType p, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *d, std::complex *x, std::complex *y, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zggglm"); IndexType info; LAPACK_IMPL(zggglm)(&n, &m, &p, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(d), reinterpret_cast(x), reinterpret_cast(y), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGGLM_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gghrd.h000066400000000000000000000075511456314707100243370ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGHRD_H #define CXXLAPACK_INTERFACE_GGHRD_H 1 #include namespace cxxlapack { template IndexType gghrd(char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, float *A, IndexType ldA, float *B, IndexType ldB, float *Q, IndexType ldQ, float *Z, IndexType ldZ); template IndexType gghrd(char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, double *A, IndexType ldA, double *B, IndexType ldB, double *Q, IndexType ldQ, double *Z, IndexType ldZ); template IndexType gghrd(char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ); template IndexType gghrd(char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGHRD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gghrd.tcc000066400000000000000000000145431456314707100246600ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGHRD_TCC #define CXXLAPACK_INTERFACE_GGHRD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gghrd(char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, float *A, IndexType ldA, float *B, IndexType ldB, float *Q, IndexType ldQ, float *Z, IndexType ldZ) { CXXLAPACK_DEBUG_OUT("sgghrd"); IndexType info; LAPACK_IMPL(sgghrd)(&compq, &compz &n, &ilo, &ihi, A, &ldA, B, &ldB, Q, &ldQ, Z, &ldZ, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gghrd(char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, double *A, IndexType ldA, double *B, IndexType ldB, double *Q, IndexType ldQ, double *Z, IndexType ldZ) { CXXLAPACK_DEBUG_OUT("dgghrd"); IndexType info; LAPACK_IMPL(dgghrd)(&compq, &compz &n, &ilo, &ihi, A, &ldA, B, &ldB, Q, &ldQ, Z, &ldZ, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gghrd(char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ) { CXXLAPACK_DEBUG_OUT("cgghrd"); IndexType info; LAPACK_IMPL(cgghrd)(&compq, &compz &n, &ilo, &ihi, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(Q), &ldQ, reinterpret_cast(Z), &ldZ, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gghrd(char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ) { CXXLAPACK_DEBUG_OUT("zgghrd"); IndexType info; LAPACK_IMPL(zgghrd)(&compq, &compz &n, &ilo, &ihi, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(Q), &ldQ, reinterpret_cast(Z), &ldZ, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGHRD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gglse.h000066400000000000000000000073011456314707100243360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGLSE_H #define CXXLAPACK_INTERFACE_GGLSE_H 1 #include namespace cxxlapack { template IndexType gglse(IndexType m, IndexType n, IndexType p, float *A, IndexType ldA, float *B, IndexType ldB, float *c, float *d, float *x, float *work, IndexType lWork); template IndexType gglse(IndexType m, IndexType n, IndexType p, double *A, IndexType ldA, double *B, IndexType ldB, double *c, double *d, double *x, double *work, IndexType lWork); template IndexType gglse(IndexType m, IndexType n, IndexType p, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *c, std::complex *d, std::complex *x, std::complex *work, IndexType lWork); template IndexType gglse(IndexType m, IndexType n, IndexType p, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *c, std::complex *d, std::complex *x, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGLSE_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gglse.tcc000066400000000000000000000142431456314707100246630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGLSE_TCC #define CXXLAPACK_INTERFACE_GGLSE_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gglse(IndexType m, IndexType n, IndexType p, float *A, IndexType ldA, float *B, IndexType ldB, float *c, float *d, float *x, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sgglse"); IndexType info; LAPACK_IMPL(sgglse)(&m, &n, &p, A, &ldA, B, &ldB, c, d, x, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gglse(IndexType m, IndexType n, IndexType p, double *A, IndexType ldA, double *B, IndexType ldB, double *c, double *d, double *x, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dgglse"); IndexType info; LAPACK_IMPL(dgglse)(&m, &n, &p, A, &ldA, B, &ldB, c, d, x, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gglse(IndexType m, IndexType n, IndexType p, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *c, std::complex *d, std::complex *x, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("cgglse"); IndexType info; LAPACK_IMPL(cgglse)(&m, &n, &p, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(c), reinterpret_cast(d), reinterpret_cast(x), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gglse(IndexType m, IndexType n, IndexType p, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *c, std::complex *d, std::complex *x, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zgglse"); IndexType info; LAPACK_IMPL(zgglse)(&m, &n, &p, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(c), reinterpret_cast(d), reinterpret_cast(x), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGLSE_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggqrf.h000066400000000000000000000071111456314707100243420ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGQRF_H #define CXXLAPACK_INTERFACE_GGQRF_H 1 #include namespace cxxlapack { template IndexType ggqrf(IndexType n, IndexType m, IndexType p, float *A, IndexType ldA, float *taua, float *B, IndexType ldB, float *taub, float *work, IndexType lWork); template IndexType ggqrf(IndexType n, IndexType m, IndexType p, double *A, IndexType ldA, double *taua, double *B, IndexType ldB, double *taub, double *work, IndexType lWork); template IndexType ggqrf(IndexType n, IndexType m, IndexType p, std::complex *A, IndexType ldA, std::complex *taua, std::complex *B, IndexType ldB, std::complex *taub, std::complex *work, IndexType lWork); template IndexType ggqrf(IndexType n, IndexType m, IndexType p, std::complex *A, IndexType ldA, std::complex *taua, std::complex *B, IndexType ldB, std::complex *taub, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGQRF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggqrf.tcc000066400000000000000000000136521456314707100246730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGQRF_TCC #define CXXLAPACK_INTERFACE_GGQRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ggqrf(IndexType n, IndexType m, IndexType p, float *A, IndexType ldA, float *taua, float *B, IndexType ldB, float *taub, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sggqrf"); IndexType info; LAPACK_IMPL(sggqrf)(&n, &m, &p, A, &ldA, taua, B, &ldB, taub, work, &lWork &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggqrf(IndexType n, IndexType m, IndexType p, double *A, IndexType ldA, double *taua, double *B, IndexType ldB, double *taub, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dggqrf"); IndexType info; LAPACK_IMPL(dggqrf)(&n, &m, &p, A, &ldA, taua, B, &ldB, taub, work, &lWork &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggqrf(IndexType n, IndexType m, IndexType p, std::complex *A, IndexType ldA, std::complex *taua, std::complex *B, IndexType ldB, std::complex *taub, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("cggqrf"); IndexType info; LAPACK_IMPL(cggqrf)(&n, &m, &p, reinterpret_cast(A), &ldA, reinterpret_cast(taua), reinterpret_cast(B), &ldB, reinterpret_cast(taub), reinterpret_cast(work), &lWork &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggqrf(IndexType n, IndexType m, IndexType p, std::complex *A, IndexType ldA, std::complex *taua, std::complex *B, IndexType ldB, std::complex *taub, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zggqrf"); IndexType info; LAPACK_IMPL(zggqrf)(&n, &m, &p, reinterpret_cast(A), &ldA, reinterpret_cast(taua), reinterpret_cast(B), &ldB, reinterpret_cast(taub), reinterpret_cast(work), &lWork &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGQRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggrqf.h000066400000000000000000000071111456314707100243420ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGRQF_H #define CXXLAPACK_INTERFACE_GGRQF_H 1 #include namespace cxxlapack { template IndexType ggrqf(IndexType m, IndexType p, IndexType n, float *A, IndexType ldA, float *taua, float *B, IndexType ldB, float *taub, float *work, IndexType lWork); template IndexType ggrqf(IndexType m, IndexType p, IndexType n, double *A, IndexType ldA, double *taua, double *B, IndexType ldB, double *taub, double *work, IndexType lWork); template IndexType ggrqf(IndexType m, IndexType p, IndexType n, std::complex *A, IndexType ldA, std::complex *taua, std::complex *B, IndexType ldB, std::complex *taub, std::complex *work, IndexType lWork); template IndexType ggrqf(IndexType m, IndexType p, IndexType n, std::complex *A, IndexType ldA, std::complex *taua, std::complex *B, IndexType ldB, std::complex *taub, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGRQF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggrqf.tcc000066400000000000000000000136531456314707100246740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGRQF_TCC #define CXXLAPACK_INTERFACE_GGRQF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ggrqf(IndexType m, IndexType p, IndexType n, float *A, IndexType ldA, float *taua, float *B, IndexType ldB, float *taub, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("ssggrqf"); IndexType info; LAPACK_IMPL(sggrqf)(&m, &p, &n, A, &ldA, taua, B, &ldB, taub, work, &lWork &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggrqf(IndexType m, IndexType p, IndexType n, double *A, IndexType ldA, double *taua, double *B, IndexType ldB, double *taub, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dggrqf"); IndexType info; LAPACK_IMPL(dggrqf)(&m, &p, &n, A, &ldA, taua, B, &ldB, taub, work, &lWork &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggrqf(IndexType m, IndexType p, IndexType n, std::complex *A, IndexType ldA, std::complex *taua, std::complex *B, IndexType ldB, std::complex *taub, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("cggrqf"); IndexType info; LAPACK_IMPL(cggrqf)(&m, &p, &n, reinterpret_cast(A), &ldA, reinterpret_cast(taua), reinterpret_cast(B), &ldB, reinterpret_cast(taub), reinterpret_cast(work), &lWork &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggrqf(IndexType m, IndexType p, IndexType n, std::complex *A, IndexType ldA, std::complex *taua, std::complex *B, IndexType ldB, std::complex *taub, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zggrqf"); IndexType info; LAPACK_IMPL(zggrqf)(&m, &p, &n, reinterpret_cast(A), &ldA, reinterpret_cast(taua), reinterpret_cast(B), &ldB, reinterpret_cast(taub), reinterpret_cast(work), &lWork &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGRQF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggsvd.h000066400000000000000000000123651456314707100243550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGSVD_H #define CXXLAPACK_INTERFACE_GGSVD_H 1 #include namespace cxxlapack { template IndexType ggsvd(char jobu, char jobv, char jobq, IndexType m, IndexType n, IndexType p, IndexType &k, IndexType &l, float *A, IndexType ldA, float *B, IndexType ldB, float *alpha, float *beta, float *U, IndexType ldU, float *V, IndexType ldV, float *Q, IndexType ldQ, float *work, IndexType *iWork); template IndexType ggsvd(char jobu, char jobv, char jobq, IndexType m, IndexType n, IndexType p, IndexType &k, IndexType &l, double *A, IndexType ldA, double *B, IndexType ldB, double *alpha, double *beta, double *U, IndexType ldU, double *V, IndexType ldV, double *Q, IndexType ldQ, double *work, IndexType *iWork); template IndexType ggsvd(char jobu, char jobv, char jobq, IndexType m, IndexType n, IndexType p, IndexType &k, IndexType &l, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, float *alpha, float *beta, std::complex *U, IndexType ldU, std::complex *V, IndexType ldV, std::complex *Q, IndexType ldQ, std::complex *work, float *rWork, IndexType *iWork); template IndexType ggsvd(char jobu, char jobv, char jobq, IndexType m, IndexType n, IndexType p, IndexType &k, IndexType &l, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, double *alpha, double *beta, std::complex *U, IndexType ldU, std::complex *V, IndexType ldV, std::complex *Q, IndexType ldQ, std::complex *work, double *rWork, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGSVD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggsvd.tcc000066400000000000000000000214311456314707100246710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGSVD_TCC #define CXXLAPACK_INTERFACE_GGSVD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ggsvd(char jobu, char jobv, char jobq, IndexType m, IndexType n, IndexType p, IndexType &k, IndexType &l, float *A, IndexType ldA, float *B, IndexType ldB, float *alpha, float *beta, float *U, IndexType ldU, float *V, IndexType ldV, float *Q, IndexType ldQ, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("sggsvd"); IndexType info; LAPACK_IMPL(sggsvd)(&jobu, &jobv, &jobq, &m, &n, &p, &k, &l, A, &ldA, B, &ldB, alpha, beta, U, &ldU, V, &ldV, Q, &ldQ, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggsvd(char jobu, char jobv, char jobq, IndexType m, IndexType n, IndexType p, IndexType &k, IndexType &l, double *A, IndexType ldA, double *B, IndexType ldB, double *alpha, double *beta, double *U, IndexType ldU, double *V, IndexType ldV, double *Q, IndexType ldQ, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dggsvd"); IndexType info; LAPACK_IMPL(dggsvd)(&jobu, &jobv, &jobq, &m, &n, &p, &k, &l, A, &ldA, B, &ldB, alpha, beta, U, &ldU, V, &ldV, Q, &ldQ, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggsvd(char jobu, char jobv, char jobq, IndexType m, IndexType n, IndexType p, IndexType &k, IndexType &l, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, float *alpha, float *beta, std::complex *U, IndexType ldU, std::complex *V, IndexType ldV, std::complex *Q, IndexType ldQ, std::complex *work, float *rWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("cggsvd"); IndexType info; LAPACK_IMPL(cggsvd)(&jobu, &jobv, &jobq, &m, &n, &p, &k, &l, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, alpha, beta, reinterpret_cast(U), &ldU, reinterpret_cast(V), &ldV, reinterpret_cast(Q), &ldQ, reinterpret_cast(work), rWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggsvd(char jobu, char jobv, char jobq, IndexType m, IndexType n, IndexType p, IndexType &k, IndexType &l, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, double *alpha, double *beta, std::complex *U, IndexType ldU, std::complex *V, IndexType ldV, std::complex *Q, IndexType ldQ, std::complex *work, double *rWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("zggsvd"); IndexType info; LAPACK_IMPL(zggsvd)(&jobu, &jobv, &jobq, &m, &n, &p, &k, &l, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, alpha, beta, reinterpret_cast(U), &ldU, reinterpret_cast(V), &ldV, reinterpret_cast(Q), &ldQ, reinterpret_cast(work), rWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGSVD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggsvp.h000066400000000000000000000126011456314707100243620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGSVP_H #define CXXLAPACK_INTERFACE_GGSVP_H 1 #include namespace cxxlapack { template IndexType ggsvp(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float tola, float tolb, IndexType &k, IndexType &l, float *U, IndexType ldU, float *V, IndexType ldV, float *Q, IndexType ldQ, IndexType *iWork, float *tau, float *work); template IndexType ggsvp(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double tola, double tolb, IndexType &k, IndexType &l, double *U, IndexType ldU, double *V, IndexType ldV, double *Q, IndexType ldQ, IndexType *iWork, double *tau, double *work); template IndexType ggsvp(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, float tola, float tolb, IndexType &k, IndexType &l, std::complex *U, IndexType ldU, std::complex *V, IndexType ldV, std::complex *Q, IndexType ldQ, IndexType *iWork, float *rWork, std::complex *tau, std::complex *work); template IndexType ggsvp(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, double tola, double tolb, IndexType &k, IndexType &l, std::complex *U, IndexType ldU, std::complex *V, IndexType ldV, std::complex *Q, IndexType ldQ, IndexType *iWork, double *rWork, std::complex *tau, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGSVP_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ggsvp.tcc000066400000000000000000000221051456314707100247040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GGSVP_TCC #define CXXLAPACK_INTERFACE_GGSVP_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ggsvp(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float tola, float tolb, IndexType &k, IndexType &l, float *U, IndexType ldU, float *V, IndexType ldV, float *Q, IndexType ldQ, IndexType *iWork, float *tau, float *work) { CXXLAPACK_DEBUG_OUT("sggsvp"); IndexType info; LAPACK_IMPL(sggsvp)(&jobu, &jobv, &jobq, &m, &p, &n, A, &ldA, B, &ldB, &tola, &tolb, &k, &l, U, &ldU, V, &ldV, Q, &ldQ, iWork, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggsvp(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double tola, double tolb, IndexType &k, IndexType &l, double *U, IndexType ldU, double *V, IndexType ldV, double *Q, IndexType ldQ, IndexType *iWork, double *tau, double *work) { CXXLAPACK_DEBUG_OUT("dggsvp"); IndexType info; LAPACK_IMPL(dggsvp)(&jobu, &jobv, &jobq, &m, &p, &n, A, &ldA, B, &ldB, &tola, &tolb, &k, &l, U, &ldU, V, &ldV, Q, &ldQ, iWork, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggsvp(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, float tola, float tolb, IndexType &k, IndexType &l, std::complex *U, IndexType ldU, std::complex *V, IndexType ldV, std::complex *Q, IndexType ldQ, IndexType *iWork, float *rWork, std::complex *tau, std::complex *work) { CXXLAPACK_DEBUG_OUT("cggsvp"); IndexType info; LAPACK_IMPL(cggsvp)(&jobu, &jobv, &jobq, &m, &p, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &tola, &tolb, &k, &l, reinterpret_cast(U), &ldU, reinterpret_cast(V), &ldV, reinterpret_cast(Q), &ldQ, iWork, rWork, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ggsvp(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, double tola, double tolb, IndexType &k, IndexType &l, std::complex *U, IndexType ldU, std::complex *V, IndexType ldV, std::complex *Q, IndexType ldQ, IndexType *iWork, double *rWork, std::complex *tau, std::complex *work) { CXXLAPACK_DEBUG_OUT("zggsvp"); IndexType info; LAPACK_IMPL(zggsvp)(&jobu, &jobv, &jobq, &m, &p, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &tola, &tolb, &k, &l, reinterpret_cast(U), &ldU, reinterpret_cast(V), &ldV, reinterpret_cast(Q), &ldQ, iWork, rWork, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GGSVP_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gsvj0.h000066400000000000000000000054551456314707100242760ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GSVJ0_H #define CXXLAPACK_INTERFACE_GSVJ0_H 1 #include namespace cxxlapack { template IndexType gsvj0(char jobV, IndexType m, IndexType n, float *A, IndexType ldA, float *D, float *sva, IndexType mv, float *V, IndexType ldV, const float &eps, const float &sfMin, const float &tol, IndexType nSweep, float *work, IndexType lWork); template IndexType gsvj0(char jobV, IndexType m, IndexType n, double *A, IndexType ldA, double *D, double *sva, IndexType mv, double *V, IndexType ldV, const double &eps, const double &sfMin, const double &tol, IndexType nSweep, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GSVJ0_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gsvj0.tcc000066400000000000000000000102211456314707100246030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GSVJ0_TCC #define CXXLAPACK_INTERFACE_GSVJ0_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gsvj0(char jobV, IndexType m, IndexType n, float *A, IndexType ldA, float *D, float *sva, IndexType mv, float *V, IndexType ldV, const float &eps, const float &sfMin, const float &tol, IndexType nSweep, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sgsvj0"); IndexType info; LAPACK_IMPL(sgsvj0)(&jobV, &m, &n, A, &ldA, D, sva, &mv, V, &ldV, &eps, &sfMin, &tol, &nSweep, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gsvj0(char jobV, IndexType m, IndexType n, double *A, IndexType ldA, double *D, double *sva, IndexType mv, double *V, IndexType ldV, const double &eps, const double &sfMin, const double &tol, IndexType nSweep, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dgsvj0"); IndexType info; LAPACK_IMPL(dgsvj0)(&jobV, &m, &n, A, &ldA, D, sva, &mv, V, &ldV, &eps, &sfMin, &tol, &nSweep, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GSVJ0_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gsvj1.h000066400000000000000000000055451456314707100242770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GSVJ1_H #define CXXLAPACK_INTERFACE_GSVJ1_H 1 #include namespace cxxlapack { template IndexType gsvj1(char jobV, IndexType m, IndexType n, IndexType n1, float *A, IndexType ldA, float *D, float *sva, IndexType mv, float *V, IndexType ldV, const float &eps, const float &sfMin, const float &tol, IndexType nSweep, float *work, IndexType lWork); template IndexType gsvj1(char jobV, IndexType m, IndexType n, IndexType n1, double *A, IndexType ldA, double *D, double *sva, IndexType mv, double *V, IndexType ldV, const double &eps, const double &sfMin, const double &tol, IndexType nSweep, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GSVJ1_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gsvj1.tcc000066400000000000000000000103721456314707100246130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GSVJ1_TCC #define CXXLAPACK_INTERFACE_GSVJ1_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gsvj1(char jobV, IndexType m, IndexType n, IndexType n1, float *A, IndexType ldA, float *D, float *sva, IndexType mv, float *V, IndexType ldV, const float &eps, const float &sfMin, const float &tol, IndexType nSweep, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sgsvj1"); IndexType info; LAPACK_IMPL(sgsvj1)(&jobV, &m, &n, &n1, A, &ldA, D, sva, &mv, V, &ldV, &eps, &sfMin, &tol, &nSweep, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gsvj1(char jobV, IndexType m, IndexType n, IndexType n1, double *A, IndexType ldA, double *D, double *sva, IndexType mv, double *V, IndexType ldV, const double &eps, const double &sfMin, const double &tol, IndexType nSweep, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dgsvj1"); IndexType info; LAPACK_IMPL(dgsvj1)(&jobV, &m, &n, &n1, A, &ldA, D, sva, &mv, V, &ldV, &eps, &sfMin, &tol, &nSweep, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GSVJ1_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gtcon.h000066400000000000000000000071131456314707100243500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GTCON_H #define CXXLAPACK_INTERFACE_GTCON_H 1 #include namespace cxxlapack { template IndexType gtcon(char norm, IndexType n, const float *dl, const float *d, const float *du, const float *du2, const IndexType *iPiv, float anorm, float &rCond, float *work); template IndexType gtcon(char norm, IndexType n, const double *dl, const double *d, const double *du, const double *du2, const IndexType *iPiv, double anorm, double &rCond, double *work); template IndexType gtcon(char norm, IndexType n, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *du2, const IndexType *iPiv, float anorm, float &rCond, std::complex *work); template IndexType gtcon(char norm, IndexType n, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *du2, const IndexType *iPiv, double anorm, double &rCond, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GTCON_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gtcon.tcc000066400000000000000000000136161456314707100246770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GTCON_TCC #define CXXLAPACK_INTERFACE_GTCON_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gtcon(char norm, IndexType n, const float *dl, const float *d, const float *du, const float *du2, const IndexType *iPiv, float anorm, float &rCond, float *work) { CXXLAPACK_DEBUG_OUT("sgtcon"); IndexType info; LAPACK_IMPL(sgtcon)(&norm, &n, dl, d, du, du2, iPiv, &anorm, &rCond, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gtcon(char norm, IndexType n, const double *dl, const double *d, const double *du, const double *du2, const IndexType *iPiv, double anorm, double &rCond, double *work) { CXXLAPACK_DEBUG_OUT("dgtcon"); IndexType info; LAPACK_IMPL(dgtcon)(&norm, &n, dl, d, du, du2, iPiv, &anorm, &rCond, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gtcon(char norm, IndexType n, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *du2, const IndexType *iPiv, float anorm, float &rCond, std::complex *work) { CXXLAPACK_DEBUG_OUT("cgtcon"); IndexType info; LAPACK_IMPL(cgtcon)(&norm, &n, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(du2), iPiv, &anorm, &rCond, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gtcon(char norm, IndexType n, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *du2, const IndexType *iPiv, double anorm, double &rCond, std::complex *work) { CXXLAPACK_DEBUG_OUT("zgtcon"); IndexType info; LAPACK_IMPL(zgtcon)(&norm, &n, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(du2), iPiv, &anorm, &rCond, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GTCON_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gtrfs.h000066400000000000000000000117751456314707100243740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GTRFS_H #define CXXLAPACK_INTERFACE_GTRFS_H 1 #include namespace cxxlapack { template IndexType gtrfs(char trans, IndexType n, IndexType nRhs, const float *dl, const float *d, const float *du, const float *dlf, const float *df, const float *duf, const float *du2, const IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType gtrfs(char trans, IndexType n, IndexType nRhs, const double *dl, const double *d, const double *du, const double *dlf, const double *df, const double *duf, const double *du2, const IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType gtrfs(char trans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *dlf, const std::complex *df, const std::complex *duf, const std::complex *du2, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType gtrfs(char trans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *dlf, const std::complex *df, const std::complex *duf, const std::complex *du2, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GTRFS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gtrfs.tcc000066400000000000000000000210041456314707100247000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GTRFS_TCC #define CXXLAPACK_INTERFACE_GTRFS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gtrfs(char trans, IndexType n, IndexType nRhs, const float *dl, const float *d, const float *du, const float *dlf, const float *df, const float *duf, const float *du2, const IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("sgtrfs"); IndexType info; LAPACK_IMPL(sgtrfs)(&trans, &n, &nRhs, dl, d, du, dlf, df, duf, du2, iPiv, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gtrfs(char trans, IndexType n, IndexType nRhs, const double *dl, const double *d, const double *du, const double *dlf, const double *df, const double *duf, const double *du2, const IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dgtrfs"); IndexType info; LAPACK_IMPL(dgtrfs)(&trans, &n, &nRhs, dl, d, du, dlf, df, duf, du2, iPiv, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gtrfs(char trans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *dlf, const std::complex *df, const std::complex *duf, const std::complex *du2, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cgtrfs"); IndexType info; LAPACK_IMPL(cgtrfs)(&trans, &n, &nRhs, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(dlf), reinterpret_cast(df), reinterpret_cast(duf), reinterpret_cast(du2), iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gtrfs(char trans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *dlf, const std::complex *df, const std::complex *duf, const std::complex *du2, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zgtrfs"); IndexType info; LAPACK_IMPL(zgtrfs)(&trans, &n, &nRhs, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(dlf), reinterpret_cast(df), reinterpret_cast(duf), reinterpret_cast(du2), iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GTRFS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gtsv.h000066400000000000000000000057161456314707100242300ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GTSV_H #define CXXLAPACK_INTERFACE_GTSV_H 1 #include namespace cxxlapack { template IndexType gtsv(IndexType n, IndexType nRhs, float *dl, float *d, float *du, float *B, IndexType ldB); template IndexType gtsv(IndexType n, IndexType nRhs, double *dl, double *d, double *du, double *B, IndexType ldB); template IndexType gtsv(IndexType n, IndexType nRhs, std::complex *dl, std::complex *d, std::complex *du, std::complex *B, IndexType ldB); template IndexType gtsv(IndexType n, IndexType nRhs, std::complex *dl, std::complex *d, std::complex *du, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GTSV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gtsv.tcc000066400000000000000000000114631456314707100245460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GTSV_TCC #define CXXLAPACK_INTERFACE_GTSV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gtsv(IndexType n, IndexType nRhs, float *dl, float *d, float *du, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("sgtsv"); IndexType info; LAPACK_IMPL(sgtsv)(&n, &nRhs, dl, d, du, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gtsv(IndexType n, IndexType nRhs, double *dl, double *d, double *du, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dgtsv"); IndexType info; LAPACK_IMPL(dgtsv)(&n, &nRhs, dl, d, du, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gtsv(IndexType n, IndexType nRhs, std::complex *dl, std::complex *d, std::complex *du, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("cgtsv"); IndexType info; LAPACK_IMPL(cgtsv)(&n, &nRhs, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gtsv(IndexType n, IndexType nRhs, std::complex *dl, std::complex *d, std::complex *du, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zgtsv"); IndexType info; LAPACK_IMPL(zgtsv)(&n, &nRhs, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GTSV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gtsvx.h000066400000000000000000000125151456314707100244130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GTSVX_H #define CXXLAPACK_INTERFACE_GTSVX_H 1 #include namespace cxxlapack { template IndexType gtsvx(char fact, char trans, IndexType n, IndexType nRhs, const float *dl, const float *d, const float *du, float *dlf, float *df, float *duf, float *du2, IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType gtsvx(char fact, char trans, IndexType n, IndexType nRhs, const double *dl, const double *d, const double *du, double *dlf, double *df, double *duf, double *du2, IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType gtsvx(char fact, char trans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, std::complex *dlf, std::complex *df, std::complex *duf, std::complex *du2, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType gtsvx(char fact, char trans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, std::complex *dlf, std::complex *df, std::complex *duf, std::complex *du2, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GTSVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gtsvx.tcc000066400000000000000000000217761456314707100247460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GTSVX_TCC #define CXXLAPACK_INTERFACE_GTSVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gtsvx(char fact, char trans, IndexType n, IndexType nRhs, const float *dl, const float *d, const float *du, float *dlf, float *df, float *duf, float *du2, IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("sgtsvx"); IndexType info; LAPACK_IMPL(sgtsvx)(&fact, &trans, &n, &nRhs, dl, d, du, dlf, df, duf, du2, iPiv, B, &ldB, X, &ldX, &rCond, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gtsvx(char fact, char trans, IndexType n, IndexType nRhs, const double *dl, const double *d, const double *du, double *dlf, double *df, double *duf, double *du2, IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dgtsvx"); IndexType info; LAPACK_IMPL(dgtsvx)(&fact, &trans, &n, &nRhs, dl, d, du, dlf, df, duf, du2, iPiv, B, &ldB, X, &ldX, &rCond, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gtsvx(char fact, char trans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, std::complex *dlf, std::complex *df, std::complex *duf, std::complex *du2, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cgtsvx"); IndexType info; LAPACK_IMPL(cgtsvx)(&fact, &trans, &n, &nRhs, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(dlf), reinterpret_cast(df), reinterpret_cast(duf), reinterpret_cast(du2), iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gtsvx(char fact, char trans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, std::complex *dlf, std::complex *df, std::complex *duf, std::complex *du2, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zgtsvx"); IndexType info; LAPACK_IMPL(zgtsvx)(&fact, &trans, &n, &nRhs, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(dlf), reinterpret_cast(df), reinterpret_cast(duf), reinterpret_cast(du2), iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GTSVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gttrf.h000066400000000000000000000055451456314707100243730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GTTRF_H #define CXXLAPACK_INTERFACE_GTTRF_H 1 #include namespace cxxlapack { template IndexType gttrf(IndexType n, float *dl, float *d, float *du, float *du2, IndexType *iPiv); template IndexType gttrf(IndexType n, double *dl, double *d, double *du, double *du2, IndexType *iPiv); template IndexType gttrf(IndexType n, std::complex *dl, std::complex *d, std::complex *du, std::complex *du2, IndexType *iPiv); template IndexType gttrf(IndexType n, std::complex *dl, std::complex *d, std::complex *du, std::complex *du2, IndexType *iPiv); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GTTRF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gttrf.tcc000066400000000000000000000112121456314707100247010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GTTRF_TCC #define CXXLAPACK_INTERFACE_GTTRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gttrf(IndexType n, float *dl, float *d, float *du, float *du2, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("sgttrf"); IndexType info; LAPACK_IMPL(sgttrf)(&n, dl, d, du, du2, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gttrf(IndexType n, double *dl, double *d, double *du, double *du2, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("dgttrf"); IndexType info; LAPACK_IMPL(dgttrf)(&n, dl, d, du, du2, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gttrf(IndexType n, std::complex *dl, std::complex *d, std::complex *du, std::complex *du2, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("cgttrf"); IndexType info; LAPACK_IMPL(cgttrf)(&n, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(du2), iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gttrf(IndexType n, std::complex *dl, std::complex *d, std::complex *du, std::complex *du2, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("zgttrf"); IndexType info; LAPACK_IMPL(zgttrf)(&n, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(du2), iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GTTRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gttrs.h000066400000000000000000000070661456314707100244100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GTTRS_H #define CXXLAPACK_INTERFACE_GTTRS_H 1 #include namespace cxxlapack { template IndexType gttrs(char trans, IndexType n, IndexType nRhs, const float *dl, const float *d, const float *du, const float *du2, const IndexType *iPiv, float *B, IndexType ldB); template IndexType gttrs(char trans, IndexType n, IndexType nRhs, const double *dl, const double *d, const double *du, const double *du2, const IndexType *iPiv, double *B, IndexType ldB); template IndexType gttrs(char trans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *du2, const IndexType *iPiv, std::complex *B, IndexType ldB); template IndexType gttrs(char trans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *du2, const IndexType *iPiv, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GTTRS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gttrs.tcc000066400000000000000000000135431456314707100247270ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GTTRS_TCC #define CXXLAPACK_INTERFACE_GTTRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType gttrs(char trans, IndexType n, IndexType nRhs, const float *dl, const float *d, const float *du, const float *du2, const IndexType *iPiv, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("sgttrs"); IndexType info; LAPACK_IMPL(sgttrs)(&trans, &n, &nRhs, dl, d, du, du2, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gttrs(char trans, IndexType n, IndexType nRhs, const double *dl, const double *d, const double *du, const double *du2, const IndexType *iPiv, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dgttrs"); IndexType info; LAPACK_IMPL(dgttrs)(&trans, &n, &nRhs, dl, d, du, du2, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gttrs(char trans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *du2, const IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("cgttrs"); IndexType info; LAPACK_IMPL(cgttrs)(&trans, &n, &nRhs, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(du2), iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType gttrs(char trans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *du2, const IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zgttrs"); IndexType info; LAPACK_IMPL(zgttrs)(&trans, &n, &nRhs, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(du2), iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GTTRS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gtts2.h000066400000000000000000000070451456314707100243050ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GTTS2_H #define CXXLAPACK_INTERFACE_GTTS2_H 1 #include namespace cxxlapack { template void gtts2(IndexType itrans, IndexType n, IndexType nRhs, const float *dl, const float *d, const float *du, const float *du2, const IndexType *iPiv, float *B, IndexType ldB); template void gtts2(IndexType itrans, IndexType n, IndexType nRhs, const double *dl, const double *d, const double *du, const double *du2, const IndexType *iPiv, double *B, IndexType ldB); template void gtts2(IndexType itrans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *du2, const IndexType *iPiv, std::complex *B, IndexType ldB); template void gtts2(IndexType itrans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *du2, const IndexType *iPiv, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GTTS2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/gtts2.tcc000066400000000000000000000121171456314707100246230ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_GTTS2_TCC #define CXXLAPACK_INTERFACE_GTTS2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void gtts2(IndexType itrans, IndexType n, IndexType nRhs, const float *dl, const float *d, const float *du, const float *du2, const IndexType *iPiv, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("sgtts2"); LAPACK_IMPL(sgtts2)(&itrans, &n, &nRhs, dl, d, du, du2, iPiv, B, &ldB); } template void gtts2(IndexType itrans, IndexType n, IndexType nRhs, const double *dl, const double *d, const double *du, const double *du2, const IndexType *iPiv, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dgtts2"); LAPACK_IMPL(dgtts2)(&itrans, &n, &nRhs, dl, d, du, du2, iPiv, B, &ldB); } template void gtts2(IndexType itrans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *du2, const IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("cgtts2"); LAPACK_IMPL(cgtts2)(&itrans, &n, &nRhs, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(du2), iPiv, reinterpret_cast(B), &ldB); } template void gtts2(IndexType itrans, IndexType n, IndexType nRhs, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *du2, const IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zgtts2"); LAPACK_IMPL(zgtts2)(&itrans, &n, &nRhs, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(du2), iPiv, reinterpret_cast(B), &ldB); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_GTTS2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbev.h000066400000000000000000000052561456314707100241700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBEV_H #define CXXLAPACK_INTERFACE_HBEV_H 1 #include namespace cxxlapack { template IndexType hbev(char jobZ, char upLo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, float *w, std::complex *Z, IndexType ldZ, std::complex *work, float *rWork); template IndexType hbev(char jobZ, char upLo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, double *w, std::complex *Z, IndexType ldZ, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBEV_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbev.tcc000066400000000000000000000076311456314707100245110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBEV_TCC #define CXXLAPACK_INTERFACE_HBEV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hbev(char jobZ, char upLo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, float *w, std::complex *Z, IndexType ldZ, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("chbev"); IndexType info; LAPACK_IMPL(chbev)(&jobZ, &upLo, &n, &kd, reinterpret_cast(Ab), &ldAb, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hbev(char jobZ, char upLo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, double *w, std::complex *Z, IndexType ldZ, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zhbev"); IndexType info; LAPACK_IMPL(zhbev)(&jobZ, &upLo, &n, &kd, reinterpret_cast(Ab), &ldAb, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBEV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbevd.h000066400000000000000000000060031456314707100243230ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBEVD_H #define CXXLAPACK_INTERFACE_HBEVD_H 1 #include namespace cxxlapack { template IndexType hbevd(char jobz, char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, float *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); template IndexType hbevd(char jobz, char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, double *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBEVD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbevd.tcc000066400000000000000000000107461456314707100246560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBEVD_TCC #define CXXLAPACK_INTERFACE_HBEVD_TCC #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hbevd(char jobz, char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, float *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("chbevd"); IndexType info; LAPACK_IMPL(chbevd)(&jobz, &uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, lrWork, iWork, liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hbevd(char jobz, char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, double *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("zhbevd"); IndexType info; LAPACK_IMPL(zhbevd)(&jobz, &uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, lrWork, iWork, liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBEVD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbevx.h000066400000000000000000000066551456314707100243640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBEVX_H #define CXXLAPACK_INTERFACE_HBEVX_H 1 #include namespace cxxlapack { template IndexType hbevx(char jobz, char range, char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, std::complex *Q, IndexType ldQ, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, std::complex *work, float *rWork, IndexType *ifail); template IndexType hbevx(char jobz, char range, char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, std::complex *Q, IndexType ldQ, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, std::complex *work, double *rWork, IndexType *ifail); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBEVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbevx.tcc000066400000000000000000000123551456314707100247000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBEVX_TCC #define CXXLAPACK_INTERFACE_HBEVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hbevx(char jobz, char range, char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, std::complex *Q, IndexType ldQ, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, std::complex *work, float *rWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("chbevx"); IndexType info; LAPACK_IMPL(chbevx)(&jobz, &range, &uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Q), &ldQ, &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), rWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hbevx(char jobz, char range, char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, std::complex *Q, IndexType ldQ, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, std::complex *work, double *rWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("zhbevx"); IndexType info; LAPACK_IMPL(zhbevx)(&jobz, &range, &uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Q), &ldQ, &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), rWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBEVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbgst.h000066400000000000000000000057351456314707100243550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBGST_H #define CXXLAPACK_INTERFACE_HBGST_H 1 #include namespace cxxlapack { template IndexType hbgst(char vect, char uplo, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, const std::complex *Bb, IndexType ldBb, std::complex *X, IndexType ldX, std::complex *work, float *rWork); template IndexType hbgst(char vect, char uplo, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, const std::complex *Bb, IndexType ldBb, std::complex *X, IndexType ldX, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBGST_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbgst.tcc000066400000000000000000000106221456314707100246660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBGST_TCC #define CXXLAPACK_INTERFACE_HBGST_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hbgst(char vect, char uplo, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, const std::complex *Bb, IndexType ldBb, std::complex *X, IndexType ldX, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("chbgst"); IndexType info; LAPACK_IMPL(chbgst)(&vect, &uplo, &n, &ka, &kb, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Bb), &ldBb, reinterpret_cast(X), &ldX, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hbgst(char vect, char uplo, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, const std::complex *Bb, IndexType ldBb, std::complex *X, IndexType ldX, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zhbgst"); IndexType info; LAPACK_IMPL(zhbgst)(&vect, &uplo, &n, &ka, &kb, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Bb), &ldBb, reinterpret_cast(X), &ldX, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBGST_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbgv.h000066400000000000000000000060541456314707100241670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBGV_H #define CXXLAPACK_INTERFACE_HBGV_H 1 #include namespace cxxlapack { template IndexType hbgv (char vect, char uplo, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, std::complex *Bb, IndexType ldBb, float *w, std::complex *X, IndexType ldX, std::complex *work, float *rWork); template IndexType hbgv (char vect, char uplo, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, std::complex *Bb, IndexType ldBb, double *w, std::complex *X, IndexType ldX, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBGV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbgv.tcc000066400000000000000000000110011456314707100244750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBGV_TCC #define CXXLAPACK_INTERFACE_HBGV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hbgv (char vect, char uplo, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, std::complex *Bb, IndexType ldBb, float *w, std::complex *X, IndexType ldX, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("chbgv"); IndexType info; LAPACK_IMPL(chbgv) (&vect, &uplo, &n, &ka, &kb, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Bb), &ldBb, w, reinterpret_cast(X), &ldX, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hbgv (char vect, char uplo, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, std::complex *Bb, IndexType ldBb, double *w, std::complex *X, IndexType ldX, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zhbgv"); IndexType info; LAPACK_IMPL(zhbgv) (&vect, &uplo, &n, &ka, &kb, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Bb), &ldBb, w, reinterpret_cast(X), &ldX, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBGV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbgvd.h000066400000000000000000000066251456314707100243370ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBGVD_H #define CXXLAPACK_INTERFACE_HBGVD_H 1 #include namespace cxxlapack { template IndexType hbgvd(char vect, char uplo, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, std::complex *Bb, IndexType ldBb, float *w, std::complex *X, IndexType ldX, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); template IndexType hbgvd(char vect, char uplo, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, std::complex *Bb, IndexType ldBb, double *w, std::complex *X, IndexType ldX, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBGVD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbgvd.tcc000066400000000000000000000121161456314707100246510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBGVD_TCC #define CXXLAPACK_INTERFACE_HBGVD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hbgvd(char vect, char uplo, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, std::complex *Bb, IndexType ldBb, float *w, std::complex *X, IndexType ldX, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("chbgvd"); IndexType info; LAPACK_IMPL(chbgvd)(&vect, &uplo, &n, &ka, &kb, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Bb), &ldBb, w, reinterpret_cast(X), &ldX, reinterpret_cast(work), &lWork, rWork, &lrWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hbgvd(char vect, char uplo, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, std::complex *Bb, IndexType ldBb, double *w, std::complex *X, IndexType ldX, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("zhbgvd"); IndexType info; LAPACK_IMPL(zhbgvd)(&vect, &uplo, &n, &ka, &kb, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Bb), &ldBb, w, reinterpret_cast(X), &ldX, reinterpret_cast(work), &lWork, rWork, &lrWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBGVD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbgvx.h000066400000000000000000000072171456314707100243610ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBGVX_H #define CXXLAPACK_INTERFACE_HBGVX_H 1 #include namespace cxxlapack { template IndexType hbgvx(char jobz, char range, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, std::complex *Bb, IndexType ldBb, std::complex *Q, IndexType ldQ, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, std::complex *work, float *rWork, IndexType *iWork, IndexType *ifail); template IndexType hbgvx(char jobz, char range, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, std::complex *Bb, IndexType ldBb, std::complex *Q, IndexType ldQ, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, std::complex *work, double *rWork, IndexType *iWork, IndexType *ifail); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBGVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbgvx.tcc000066400000000000000000000132401456314707100246740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBGVX_TCC #define CXXLAPACK_INTERFACE_HBGVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hbgvx(char jobz, char range, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, std::complex *Bb, IndexType ldBb, std::complex *Q, IndexType ldQ, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, std::complex *work, float *rWork, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("chbgvx"); IndexType info; LAPACK_IMPL(chbgvx)(&jobz, &range, &n, &ka, &kb, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Bb), &ldBb, reinterpret_cast(Q), &ldQ, &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), rWork, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hbgvx(char jobz, char range, IndexType n, IndexType ka, IndexType kb, std::complex *Ab, IndexType ldAb, std::complex *Bb, IndexType ldBb, std::complex *Q, IndexType ldQ, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, std::complex *work, double *rWork, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("zhbgvx"); IndexType info; LAPACK_IMPL(zhbgvx)(&jobz, &range, &n, &ka, &kb, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Bb), &ldBb, reinterpret_cast(Q), &ldQ, &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), rWork, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBGVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbtrd.h000066400000000000000000000052751456314707100243500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBTRD_H #define CXXLAPACK_INTERFACE_HBTRD_H 1 #include namespace cxxlapack { template IndexType hbtrd(char vect, char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, float *d, float *e, std::complex *Q, IndexType ldQ, std::complex *work); template IndexType hbtrd(char vect, char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, double *d, double *e, std::complex *Q, IndexType ldQ, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBTRD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hbtrd.tcc000066400000000000000000000076741456314707100246770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBTRD_TCC #define CXXLAPACK_INTERFACE_HBTRD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hbtrd(char vect, char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, float *d, float *e, std::complex *Q, IndexType ldQ, std::complex *work) { CXXLAPACK_DEBUG_OUT("chbtrd"); IndexType info; LAPACK_IMPL(chbtrd)(&vect, &uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, d, e, reinterpret_cast(Q), &ldQ, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hbtrd(char vect, char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, double *d, double *e, std::complex *Q, IndexType ldQ, std::complex *work) { CXXLAPACK_DEBUG_OUT("zhbtrd"); IndexType info; LAPACK_IMPL(zhbtrd)(&vect, &uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, d, e, reinterpret_cast(Q), &ldQ, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBTRD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hecon.h000066400000000000000000000051171456314707100243340ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HECON_H #define CXXLAPACK_INTERFACE_HECON_H 1 #include namespace cxxlapack { template IndexType hecon(char uplo, IndexType n, const std::complex *A, IndexType ldA, IndexType *iPiv, float anorm, float &rCond, std::complex *work); template IndexType hecon(char uplo, IndexType n, const std::complex *A, IndexType ldA, IndexType *iPiv, double anorm, double &rCond, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HECON_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hecon.tcc000066400000000000000000000072331456314707100246570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HECON_TCC #define CXXLAPACK_INTERFACE_HECON_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hecon(char uplo, IndexType n, const std::complex *A, IndexType ldA, IndexType *iPiv, float anorm, float &rCond, std::complex *work) { CXXLAPACK_DEBUG_OUT("checon"); IndexType info; LAPACK_IMPL(checon)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, &anorm, &rCond, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hecon(char uplo, IndexType n, const std::complex *A, IndexType ldA, IndexType *iPiv, double anorm, double &rCond, std::complex *work) { CXXLAPACK_DEBUG_OUT("zhecon"); IndexType info; LAPACK_IMPL(zhecon)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, &anorm, &rCond, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HECON_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/heequb.h000066400000000000000000000051341456314707100245100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEEQUB_H #define CXXLAPACK_INTERFACE_HEEQUB_H 1 #include namespace cxxlapack { template IndexType heequb(char uplo, IndexType n, const std::complex *A, IndexType ldA, float *s, float &rCond, float &amax, std::complex *work); template IndexType heequb(char uplo, IndexType n, const std::complex *A, IndexType ldA, double *s, double &rCond, double &amax, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEEQUB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/heequb.tcc000066400000000000000000000072651456314707100250410ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEEQUB_TCC #define CXXLAPACK_INTERFACE_HEEQUB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType heequb(char uplo, IndexType n, const std::complex *A, IndexType ldA, float *s, float &rCond, float &amax, std::complex *work) { CXXLAPACK_DEBUG_OUT("cheequb"); IndexType info; LAPACK_IMPL(cheequb)(&uplo, &n, reinterpret_cast(A), &ldA, s, &rCond, &amax, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType heequb(char uplo, IndexType n, const std::complex *A, IndexType ldA, double *s, double &rCond, double &amax, std::complex *work) { CXXLAPACK_DEBUG_OUT("zheequb"); IndexType info; LAPACK_IMPL(zheequb)(&uplo, &n, reinterpret_cast(A), &ldA, s, &rCond, &amax, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEEQUB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/heev.h000066400000000000000000000050641456314707100241700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEEV_H #define CXXLAPACK_INTERFACE_HEEV_H 1 #include namespace cxxlapack { template IndexType heev(char jobZ, char upLo, IndexType n, std::complex *A, IndexType ldA, float *w, std::complex *work, IndexType lWork, float *rWork); template IndexType heev(char jobZ, char upLo, IndexType n, std::complex *A, IndexType ldA, double *w, std::complex *work, IndexType lWork, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEEV_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/heev.tcc000066400000000000000000000072131456314707100245100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEEV_TCC #define CXXLAPACK_INTERFACE_HEEV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType heev(char jobZ, char upLo, IndexType n, std::complex *A, IndexType ldA, float *w, std::complex *work, IndexType lWork, float *rWork) { CXXLAPACK_DEBUG_OUT("cheev"); IndexType info; LAPACK_IMPL(cheev)(&jobZ, &upLo, &n, reinterpret_cast(A), &ldA, w, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType heev(char jobZ, char upLo, IndexType n, std::complex *A, IndexType ldA, double *w, std::complex *work, IndexType lWork, double *rWork) { CXXLAPACK_DEBUG_OUT("zheev"); IndexType info; LAPACK_IMPL(zheev)(&jobZ, &upLo, &n, reinterpret_cast(A), &ldA, w, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEEV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/heevd.h000066400000000000000000000054771456314707100243440ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEEVD_H #define CXXLAPACK_INTERFACE_HEEVD_H 1 #include namespace cxxlapack { template IndexType heevd(char jobZ, char upLo, IndexType n, std::complex *A, IndexType ldA, float *w, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); template IndexType heevd(char jobZ, char upLo, IndexType n, std::complex *A, IndexType ldA, double *w, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEEVD_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/heevd.tcc000066400000000000000000000101261456314707100246510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEEVD_TCC #define CXXLAPACK_INTERFACE_HEEVD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType heevd(char jobZ, char upLo, IndexType n, std::complex *A, IndexType ldA, float *w, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("cheevd"); IndexType info; LAPACK_IMPL(cheevd)(&jobZ, &upLo, &n, reinterpret_cast(A), &ldA, w, reinterpret_cast(work), &lWork, rWork, &lrWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType heevd(char jobZ, char upLo, IndexType n, std::complex *A, IndexType ldA, double *w, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("zheevd"); IndexType info; LAPACK_IMPL(zheevd)(&jobZ, &upLo, &n, reinterpret_cast(A), &ldA, w, reinterpret_cast(work), &lWork, rWork, &lrWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEEVD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/heevr.h000066400000000000000000000066751456314707100243630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEEVR_H #define CXXLAPACK_INTERFACE_HEEVR_H 1 #include namespace cxxlapack { template IndexType heevr(char jobz, char range, char uplo, IndexType n, std::complex *A, IndexType ldA, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); template IndexType heevr(char jobz, char range, char uplo, IndexType n, std::complex *A, IndexType ldA, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEEVR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/heevr.tcc000066400000000000000000000123331456314707100246710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEEVR_TCC #define CXXLAPACK_INTERFACE_HEEVR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType heevr(char jobz, char range, char uplo, IndexType n, std::complex *A, IndexType ldA, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("cheevr"); IndexType info; LAPACK_IMPL(cheevr)(&jobz, &range, &uplo, &n, reinterpret_cast(A), &ldA, &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, &lrWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType heevr(char jobz, char range, char uplo, IndexType n, std::complex *A, IndexType ldA, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("zheevr"); IndexType info; LAPACK_IMPL(zheevr)(&jobz, &range, &uplo, &n, reinterpret_cast(A), &ldA, &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, &lrWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEEVR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/heevx.h000066400000000000000000000065551456314707100243660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEEVX_H #define CXXLAPACK_INTERFACE_HEEVX_H 1 #include namespace cxxlapack { template IndexType heevx(char jobz, char range, char uplo, IndexType n, std::complex *A, IndexType ldA, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork, IndexType *iWork, IndexType *ifail); template IndexType heevx(char jobz, char range, char uplo, IndexType n, std::complex *A, IndexType ldA, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork, IndexType *iWork, IndexType *ifail); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEEVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/heevx.tcc000066400000000000000000000121141456314707100246740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEEVX_TCC #define CXXLAPACK_INTERFACE_HEEVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType heevx(char jobz, char range, char uplo, IndexType n, std::complex *A, IndexType ldA, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("cheevx"); IndexType info; LAPACK_IMPL(cheevx)(&jobz, &range, &uplo, &n, reinterpret_cast(A), &ldA, &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType heevx(char jobz, char range, char uplo, IndexType n, std::complex *A, IndexType ldA, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("zheevx"); IndexType info; LAPACK_IMPL(zheevx)(&jobz, &range, &uplo, &n, reinterpret_cast(A), &ldA, &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEEVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hegs2.h000066400000000000000000000047331456314707100242530ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEGS2_H #define CXXLAPACK_INTERFACE_HEGS2_H 1 #include namespace cxxlapack { template IndexType hegs2(IndexType itype, char uplo, IndexType n, std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB); template IndexType hegs2(IndexType itype, char uplo, IndexType n, std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEGS2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hegs2.tcc000066400000000000000000000067521456314707100246000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEGS2_TCC #define CXXLAPACK_INTERFACE_HEGS2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hegs2(IndexType itype, char uplo, IndexType n, std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("chegs2"); IndexType info; LAPACK_IMPL(chegs2)(&itype, &uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hegs2(IndexType itype, char uplo, IndexType n, std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zhegs2"); IndexType info; LAPACK_IMPL(zhegs2)(&itype, &uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEGS2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hegst.h000066400000000000000000000047331456314707100243550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEGST_H #define CXXLAPACK_INTERFACE_HEGST_H 1 #include namespace cxxlapack { template IndexType hegst(IndexType itype, char uplo, IndexType n, std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB); template IndexType hegst(IndexType itype, char uplo, IndexType n, std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEGST_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hegst.tcc000066400000000000000000000067521456314707100247020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEGST_TCC #define CXXLAPACK_INTERFACE_HEGST_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hegst(IndexType itype, char uplo, IndexType n, std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("chegst"); IndexType info; LAPACK_IMPL(chegst)(&itype, &uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hegst(IndexType itype, char uplo, IndexType n, std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zhegst"); IndexType info; LAPACK_IMPL(zhegst)(&itype, &uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEGST_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hegv.h000066400000000000000000000054221456314707100241700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBGV_H #define CXXLAPACK_INTERFACE_HBGV_H 1 #include namespace cxxlapack { template IndexType hegv (IndexType itype, char jobz, char uplo, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, float *w, std::complex *work, IndexType lWork, float *rWork); template IndexType hegv (IndexType itype, char jobz, char uplo, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, double *w, std::complex *work, IndexType lWork, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBGV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hegv.tcc000066400000000000000000000100671456314707100245130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEGV_TCC #define CXXLAPACK_INTERFACE_HEGV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hegv (IndexType itype, char jobz, char uplo, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, float *w, std::complex *work, IndexType lWork, float *rWork) { CXXLAPACK_DEBUG_OUT("chegv"); IndexType info; LAPACK_IMPL(chegv)(&itype, &jobz, &uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, w, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hegv (IndexType itype, char jobz, char uplo, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, double *w, std::complex *work, IndexType lWork, double *rWork) { CXXLAPACK_DEBUG_OUT("zhegv"); IndexType info; LAPACK_IMPL(zhegv)(&itype, &jobz, &uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, w, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEGV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hegvd.h000066400000000000000000000060051456314707100243320ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HBGVD_H #define CXXLAPACK_INTERFACE_HBGVD_H 1 #include namespace cxxlapack { template IndexType hegvd(IndexType itype, char jobz, char uplo, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, float *w, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); template IndexType hegvd(IndexType itype, char jobz, char uplo, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, double *w, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HBGVD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hegvd.tcc000066400000000000000000000107601456314707100246570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEGVD_TCC #define CXXLAPACK_INTERFACE_HEGVD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hegvd(IndexType itype, char jobz, char uplo, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, float *w, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("chegvd"); IndexType info; LAPACK_IMPL(chegvd)(&itype, &jobz, &uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, w, reinterpret_cast(work), &lWork, rWork, &lrWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hegvd(IndexType itype, char jobz, char uplo, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, double *w, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("zhegvd"); IndexType info; LAPACK_IMPL(zhegvd)(&itype, &jobz, &uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, w, reinterpret_cast(work), &lWork, rWork, &lrWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEGVd_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hegvx.h000066400000000000000000000071151456314707100243610ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEGVX_H #define CXXLAPACK_INTERFACE_HEGVX_H 1 #include namespace cxxlapack { template IndexType hegvx(IndexType itype, char jobz, char range, char uplo, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork, IndexType *iWork, IndexType *ifail); template IndexType hegvx(IndexType itype, char jobz, char range, char uplo, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork, IndexType *iWork, IndexType *ifail); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEGVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hegvx.tcc000066400000000000000000000127761456314707100247140ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HEGVX_TCC #define CXXLAPACK_INTERFACE_HEGVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hegvx(IndexType itype, char jobz, char range, char uplo, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("chegvx"); IndexType info; LAPACK_IMPL(chegvx)(&itype, &jobz, &range, &uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hegvx(IndexType itype, char jobz, char range, char uplo, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("zhegvx"); IndexType info; LAPACK_IMPL(zhegvx)(&itype, &jobz, &range, &uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HEGVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/herfs.h000066400000000000000000000064031456314707100243460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HERFS_H #define CXXLAPACK_INTERFACE_HERFS_H 1 #include namespace cxxlapack { template IndexType herfs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType herfs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HERFS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/herfs.tcc000066400000000000000000000116361456314707100246740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HERFS_TCC #define CXXLAPACK_INTERFACE_HERFS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType herfs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cherfs"); IndexType info; LAPACK_IMPL(cherfs)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType herfs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zherfs"); IndexType info; LAPACK_IMPL(zherfs)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HERFS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hesv.h000066400000000000000000000051721456314707100242060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HESV_H #define CXXLAPACK_INTERFACE_HESV_H 1 #include namespace cxxlapack { template IndexType hesv (char uplo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work, IndexType lWork); template IndexType hesv (char uplo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HESV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hesv.tcc000066400000000000000000000074721456314707100245350ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HESV_TCC #define CXXLAPACK_INTERFACE_HESV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hesv (char uplo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("chesv"); IndexType info; LAPACK_IMPL(chesv)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hesv (char uplo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zhesv"); IndexType info; LAPACK_IMPL(zhesv)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HESV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hesvx.h000066400000000000000000000070211456314707100243710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HESVX_H #define CXXLAPACK_INTERFACE_HESVX_H 1 #include namespace cxxlapack { template IndexType hesvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, IndexType lWork, float *rWork); template IndexType hesvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, IndexType lWork, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HESVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hesvx.tcc000066400000000000000000000125061456314707100247170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HESVX_TCC #define CXXLAPACK_INTERFACE_HESVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hesvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, IndexType lWork, float *rWork) { CXXLAPACK_DEBUG_OUT("chesvx"); IndexType info; LAPACK_IMPL(chesvx)(&fact, &uplo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hesvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, IndexType lWork, double *rWork) { CXXLAPACK_DEBUG_OUT("zhesvx"); IndexType info; LAPACK_IMPL(zhesvx)(&fact, &uplo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HESVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/heswapr.h000066400000000000000000000041531456314707100247100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_DUMMY_H #define CXXLAPACK_INTERFACE_DUMMY_H 1 #include namespace cxxlapack { template IndexType heswap(IndexType m, IndexType n, std::complex *A); template IndexType heswap(IndexType n, IndexType m, std::complex *A); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_DUMMY_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/heswapr.tcc000066400000000000000000000064241456314707100252350ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HESWAPR_TCC #define CXXLAPACK_INTERFACE_HESWAPR_TCC #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType heswapr(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType i1, IndexType i2) { CXXLAPACK_DEBUG_OUT("cheswapr"); IndexType info; LAPACK_IMPL(cheswapr)(&uplo, &n, reinterpret_cast(A), &ldA, &i1, &i2, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType heswapr(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType i1, IndexType i2) { CXXLAPACK_DEBUG_OUT("zheswapr"); IndexType info; LAPACK_IMPL(zheswapr)(&uplo, &n, reinterpret_cast(A), &ldA, &i1, &i2, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HESWAPR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetd2.h000066400000000000000000000046211456314707100242450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETD2_H #define CXXLAPACK_INTERFACE_HETD2_H 1 #include namespace cxxlapack { template IndexType hetd2(char uplo, IndexType n, std::complex *A, IndexType ldA, float *d, float *e, std::complex *tau); template IndexType hetd2(char uplo, IndexType n, std::complex *A, IndexType ldA, double *d, double *e, std::complex *tau); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETD2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetd2.tcc000066400000000000000000000066101456314707100245670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETD2_TCC #define CXXLAPACK_INTERFACE_HETD2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hetd2(char uplo, IndexType n, std::complex *A, IndexType ldA, float *d, float *e, std::complex *tau) { CXXLAPACK_DEBUG_OUT("chetd2"); IndexType info; LAPACK_IMPL(chetd2)(&uplo, &n, reinterpret_cast(A), &ldA, d, e, reinterpret_cast(tau), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hetd2(char uplo, IndexType n, std::complex *A, IndexType ldA, double *d, double *e, std::complex *tau) { CXXLAPACK_DEBUG_OUT("zhetd2"); IndexType info; LAPACK_IMPL(zhetd2)(&uplo, &n, reinterpret_cast(A), &ldA, d, e, reinterpret_cast(tau), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETD2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetf2.h000066400000000000000000000044031456314707100242450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETF2_H #define CXXLAPACK_INTERFACE_HETF2_H 1 #include namespace cxxlapack { template IndexType hetf2(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv); template IndexType hetf2(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETF2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetf2.tcc000066400000000000000000000061501456314707100245700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETF2_TCC #define CXXLAPACK_INTERFACE_HETF2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hetf2(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("chetf2"); IndexType info; LAPACK_IMPL(chetf2)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hetf2(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("zhetf2"); IndexType info; LAPACK_IMPL(zhetf2)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETF2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetrd.h000066400000000000000000000050551456314707100243470ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETRD_H #define CXXLAPACK_INTERFACE_HETRD_H 1 #include namespace cxxlapack { template IndexType hetrd(char uplo, IndexType n, std::complex *A, IndexType ldA, float *d, float *e, std::complex *tau, std::complex *work, IndexType lWork); template IndexType hetrd(char uplo, IndexType n, std::complex *A, IndexType ldA, double *d, double *e, std::complex *tau, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETRD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetrd.tcc000066400000000000000000000073101456314707100246650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETRD_TCC #define CXXLAPACK_INTERFACE_HETRD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hetrd(char uplo, IndexType n, std::complex *A, IndexType ldA, float *d, float *e, std::complex *tau, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("chetrd"); IndexType info; LAPACK_IMPL(chetrd)(&uplo, &n, reinterpret_cast(A), &ldA, d, e, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hetrd(char uplo, IndexType n, std::complex *A, IndexType ldA, double *d, double *e, std::complex *tau, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zhetrd"); IndexType info; LAPACK_IMPL(zhetrd)(&uplo, &n, reinterpret_cast(A), &ldA, d, e, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETRD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetrf.h000066400000000000000000000046401456314707100243500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETRF_H #define CXXLAPACK_INTERFACE_HETRF_H 1 #include namespace cxxlapack { template IndexType hetrf(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *work, IndexType lwork); template IndexType hetrf(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *work, IndexType lwork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETRI_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetrf.tcc000066400000000000000000000066501456314707100246750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETRF_TCC #define CXXLAPACK_INTERFACE_HETRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hetrf(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *work, IndexType lwork) { CXXLAPACK_DEBUG_OUT("chetrf"); IndexType info; LAPACK_IMPL(chetrf)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &lwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hetrf(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *work, IndexType lwork) { CXXLAPACK_DEBUG_OUT("zhetrf"); IndexType info; LAPACK_IMPL(zhetrf)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &lwork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetri.h000066400000000000000000000045211456314707100243510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETRI_H #define CXXLAPACK_INTERFACE_HETRI_H 1 #include namespace cxxlapack { template IndexType hetri(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work); template IndexType hetri(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETRI_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetri.tcc000066400000000000000000000064421456314707100246770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETRI_TCC #define CXXLAPACK_INTERFACE_HETRI_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hetri(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work) { CXXLAPACK_DEBUG_OUT("chetri"); IndexType info; LAPACK_IMPL(chetri)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hetri(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work) { CXXLAPACK_DEBUG_OUT("zhetri"); IndexType info; LAPACK_IMPL(zhetri)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETRI_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetri2.h000066400000000000000000000046601456314707100244370ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETRI2_H #define CXXLAPACK_INTERFACE_HETRI2_H 1 #include namespace cxxlapack { template IndexType hetri2(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType lWork); template IndexType hetri2(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETRI2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetri2.tcc000066400000000000000000000067131456314707100247620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETRI2_TCC #define CXXLAPACK_INTERFACE_HETRI2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hetri2(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("chetri2"); IndexType info; LAPACK_IMPL(chetri2)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hetri2(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zhetri2"); IndexType info; LAPACK_IMPL(zhetri2)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETRI2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetri2x.h000066400000000000000000000046731456314707100246330ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETRI2X_H #define CXXLAPACK_INTERFACE_HETRI2X_H 1 #include namespace cxxlapack { template IndexType hetri2x(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType nb); template IndexType hetri2x(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType nb); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETRI2X_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetri2x.tcc000066400000000000000000000067421456314707100251540ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETRI2X_TCC #define CXXLAPACK_INTERFACE_HETRI2X_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hetri2x(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType nb) { CXXLAPACK_DEBUG_OUT("chetri2x"); IndexType info; LAPACK_IMPL(chetri2x)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &nb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hetri2x(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType nb) { CXXLAPACK_DEBUG_OUT("zhetri2x"); IndexType info; LAPACK_IMPL(zhetri2x)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &nb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETRI2X_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetrs.h000066400000000000000000000051011456314707100243560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETRS_H #define CXXLAPACK_INTERFACE_HETRS_H 1 #include namespace cxxlapack { template IndexType hetrs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB); template IndexType hetrs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETRS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetrs.tcc000066400000000000000000000072021456314707100247040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETRS_TCC #define CXXLAPACK_INTERFACE_HETRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hetrs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("chetrs"); IndexType info; LAPACK_IMPL(chetrs)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hetrs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zhetrs"); IndexType info; LAPACK_IMPL(zhetrs)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETRS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetrs2.h000066400000000000000000000052611456314707100244470ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETRS2_H #define CXXLAPACK_INTERFACE_HETRS2_H 1 #include namespace cxxlapack { template IndexType hetrs2(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work); template IndexType hetrs2(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETRS2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hetrs2.tcc000066400000000000000000000076271456314707100250010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HETRS2_TCC #define CXXLAPACK_INTERFACE_HETRS2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hetrs2(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work) { CXXLAPACK_DEBUG_OUT("chetrs2"); IndexType info; LAPACK_IMPL(chetrs2)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, iPiv, B, reinterpret_cast(B), &ldB, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hetrs2(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work) { CXXLAPACK_DEBUG_OUT("zhetrs2"); IndexType info; LAPACK_IMPL(zhetrs2)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, iPiv, B, reinterpret_cast(B), &ldB, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HETRS2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hfrk.h000066400000000000000000000053601456314707100241720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HFRK_H #define CXXLAPACK_INTERFACE_HFRK_H 1 #include namespace cxxlapack { template IndexType hfrk (char transr, char uplo, char trans, IndexType n, IndexType k, float alpha, const std::complex *A, IndexType ldA, float beta, std::complex *C); template IndexType hfrk (char transr, char uplo, char trans, IndexType n, IndexType k, double alpha, const std::complex *A, IndexType ldA, double beta, std::complex *C); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HFRK_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hfrk.tcc000066400000000000000000000076141456314707100245200ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HFRK_TCC #define CXXLAPACK_INTERFACE_HFRK_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hfrk (char transr, char uplo, char trans, IndexType n, IndexType k, float alpha, const std::complex *A, IndexType ldA, float beta, std::complex *C) { CXXLAPACK_DEBUG_OUT("chfrk"); IndexType info; LAPACK_IMPL(chfrk)(&transr, &uplo, &trans, &n, &k, &alpha, reinterpret_cast(A), &ldA, &beta, reinterpret_cast(C), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hfrk (char transr, char uplo, char trans, IndexType n, IndexType k, double alpha, const std::complex *A, IndexType ldA, double beta, std::complex *C) { CXXLAPACK_DEBUG_OUT("zhfrk"); IndexType info; LAPACK_IMPL(zhfrk)(&transr, &uplo, &trans, &n, &k, &alpha, reinterpret_cast(A), &ldA, &beta, reinterpret_cast(C), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HFRK_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hgeqz.h000066400000000000000000000114311456314707100243520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HGEQZ_H #define CXXLAPACK_INTERFACE_HGEQZ_H 1 #include namespace cxxlapack { template IndexType hgeqz(char job, char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, float *H, IndexType ldH, float *T, IndexType ldT, float *alphaar, float *alphaai, float *beta, float *Q, IndexType ldQ, float *Z, IndexType ldZ, float *work, IndexType lWork); template IndexType hgeqz(char job, char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, double *H, IndexType ldH, double *T, IndexType ldT, double *alphaar, double *alphaai, double *beta, double *Q, IndexType ldQ, double *Z, IndexType ldZ, double *work, IndexType lWork); template IndexType hgeqz(char job, char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, std::complex *H, IndexType ldH, std::complex *T, IndexType ldT, std::complex *alpha, std::complex *beta, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork); template IndexType hgeqz(char job, char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, std::complex *H, IndexType ldH, std::complex *T, IndexType ldT, std::complex *alpha, std::complex *beta, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HGEQZ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hgeqz.tcc000066400000000000000000000201071456314707100246740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HGEQZ_TCC #define CXXLAPACK_INTERFACE_HGEQZ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hgeqz(char job, char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, float *H, IndexType ldH, float *T, IndexType ldT, float *alphaar, float *alphaai, float *beta, float *Q, IndexType ldQ, float *Z, IndexType ldZ, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("shgeqz"); IndexType info; LAPACK_IMPL(shgeqz)(&job, &compq, &compz, &n, &ilo, &ihi, H, &ldH, T, &ldT, alphaar, alphaai, beta, Q, &ldQ, Z, &ldZ, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hgeqz(char job, char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, double *H, IndexType ldH, double *T, IndexType ldT, double *alphaar, double *alphaai, double *beta, double *Q, IndexType ldQ, double *Z, IndexType ldZ, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dhgeqz"); IndexType info; LAPACK_IMPL(dhgeqz)(&job, &compq, &compz, &n, &ilo, &ihi, H, &ldH, T, &ldT, alphaar, alphaai, beta, Q, &ldQ, Z, &ldZ, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hgeqz(char job, char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, std::complex *H, IndexType ldH, std::complex *T, IndexType ldT, std::complex *alpha, std::complex *beta, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork) { CXXLAPACK_DEBUG_OUT("chgeqz"); IndexType info; LAPACK_IMPL(chgeqz)(&job, &compq, &compz, &n, &ilo, &ihi, reinterpret_cast(H), &ldH, reinterpret_cast(T), &ldT, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(Q), &ldQ, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hgeqz(char job, char compq, char compz, IndexType n, IndexType ilo, IndexType ihi, std::complex *H, IndexType ldH, std::complex *T, IndexType ldT, std::complex *alpha, std::complex *beta, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork) { CXXLAPACK_DEBUG_OUT("zhgeqz"); IndexType info; LAPACK_IMPL(zhgeqz)(&job, &compq, &compz, &n, &ilo, &ihi, reinterpret_cast(H), &ldH, reinterpret_cast(T), &ldT, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(Q), &ldQ, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HGEQZ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpcon.h000066400000000000000000000047731456314707100243560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPCON_H #define CXXLAPACK_INTERFACE_HPCON_H 1 #include namespace cxxlapack { template IndexType hpcon(char uplo, IndexType n, const std::complex *Ap, const IndexType *iPiv, float anorm, float &rCond, std::complex *work); template IndexType hpcon(char uplo, IndexType n, const std::complex *Ap, const IndexType *iPiv, double anorm, double &rCond, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPCON_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpcon.tcc000066400000000000000000000070261456314707100246720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPCON_TCC #define CXXLAPACK_INTERFACE_HPCON_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hpcon(char uplo, IndexType n, const std::complex *Ap, const IndexType *iPiv, float anorm, float &rCond, std::complex *work) { CXXLAPACK_DEBUG_OUT("chpcon"); IndexType info; LAPACK_IMPL(chpcon)(&uplo, &n, reinterpret_cast(Ap), iPiv, &anorm, &rCond, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hpcon(char uplo, IndexType n, const std::complex *Ap, const IndexType *iPiv, double anorm, double &rCond, std::complex *work) { CXXLAPACK_DEBUG_OUT("zhpcon"); IndexType info; LAPACK_IMPL(zhpcon)(&uplo, &n, reinterpret_cast(Ap), iPiv, &anorm, &rCond, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPCON_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpev.h000066400000000000000000000050561456314707100242040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPEV_H #define CXXLAPACK_INTERFACE_HPEV_H 1 #include namespace cxxlapack { template IndexType hpev(char jobZ, char upLo, IndexType n, std::complex *Ap, float *w, std::complex *Z, IndexType ldZ, std::complex *work, float *rWork); template IndexType hpev(char jobZ, char upLo, IndexType n, std::complex *Ap, double *w, std::complex *Z, IndexType ldZ, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPEV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpev.tcc000066400000000000000000000072671456314707100245340ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPEV_TCC #define CXXLAPACK_INTERFACE_HPEV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hpev(char jobZ, char upLo, IndexType n, std::complex *Ap, float *w, std::complex *Z, IndexType ldZ, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("chpev"); IndexType info; LAPACK_IMPL(chpev)(&jobZ, &upLo, &n, reinterpret_cast(Ap), w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hpev(char jobZ, char upLo, IndexType n, std::complex *Ap, double *w, std::complex *Z, IndexType ldZ, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zhpev"); IndexType info; LAPACK_IMPL(zhpev)(&jobZ, &upLo, &n, reinterpret_cast(Ap), w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPEV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpevd.h000066400000000000000000000056111456314707100243450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPEVD_H #define CXXLAPACK_INTERFACE_HPEVD_H 1 #include namespace cxxlapack { template IndexType hpevd(char jobZ, char upLo, IndexType n, std::complex *Ap, float *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); template IndexType hpevd(char jobZ, char upLo, IndexType n, std::complex *Ap, double *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPEVD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpevd.tcc000066400000000000000000000104121456314707100246620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPEVD_TCC #define CXXLAPACK_INTERFACE_HPEVD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hpevd(char jobZ, char upLo, IndexType n, std::complex *Ap, float *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("chpevd"); IndexType info; LAPACK_IMPL(chpevd)(&jobZ, &upLo, &n, reinterpret_cast(Ap), w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, &lrWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hpevd(char jobZ, char upLo, IndexType n, std::complex *Ap, double *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("zhpevd"); IndexType info; LAPACK_IMPL(zhpevd)(&jobZ, &upLo, &n, reinterpret_cast(Ap), w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, &lrWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPEVD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpevx.h000066400000000000000000000063271456314707100243760ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPEVX_H #define CXXLAPACK_INTERFACE_HPEVX_H 1 #include namespace cxxlapack { template IndexType hpevx(char jobz, char range, char uplo, IndexType n, std::complex *Ap, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, std::complex *work, float *rWork, IndexType *iWork, IndexType *ifail); template IndexType hpevx(char jobz, char range, char uplo, IndexType n, std::complex *Ap, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, std::complex *work, double *rWork, IndexType *iWork, IndexType *ifail); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPEVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpevx.tcc000066400000000000000000000115141456314707100247120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPEVX_TCC #define CXXLAPACK_INTERFACE_HPEVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hpevx(char jobz, char range, char uplo, IndexType n, std::complex *Ap, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, std::complex *work, float *rWork, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("chpevx"); IndexType info; LAPACK_IMPL(chpevx)(&jobz, &range, &uplo, &n, reinterpret_cast(Ap), &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), rWork, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hpevx(char jobz, char range, char uplo, IndexType n, std::complex *Ap, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, std::complex *work, double *rWork, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("zhpevx"); IndexType info; LAPACK_IMPL(zhpevx)(&jobz, &range, &uplo, &n, reinterpret_cast(Ap), &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), rWork, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPEVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpgst.h000066400000000000000000000044671456314707100243740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPGST_H #define CXXLAPACK_INTERFACE_HPGST_H 1 #include namespace cxxlapack { template IndexType hpgst(IndexType itype, char uplo, IndexType n, std::complex *Ap, const std::complex *Bp); template IndexType hpgst(IndexType itype, char uplo, IndexType n, std::complex *Ap, const std::complex *Bp); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPGST_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpgst.tcc000066400000000000000000000063421456314707100247100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPGST_TCC #define CXXLAPACK_INTERFACE_HPGST_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hpgst(IndexType itype, char uplo, IndexType n, std::complex *Ap, const std::complex *Bp) { CXXLAPACK_DEBUG_OUT("chpgst"); IndexType info; LAPACK_IMPL(chpgst)(&itype, &uplo, &n, reinterpret_cast(Ap), reinterpret_cast(Bp), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hpgst(IndexType itype, char uplo, IndexType n, std::complex *Ap, const std::complex *Bp) { CXXLAPACK_DEBUG_OUT("zhpgst"); IndexType info; LAPACK_IMPL(zhpgst)(&itype, &uplo, &n, reinterpret_cast(Ap), reinterpret_cast(Bp), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPGST_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpgv.h000066400000000000000000000053061456314707100242040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPGV_H #define CXXLAPACK_INTERFACE_HPGV_H 1 #include namespace cxxlapack { template IndexType hpgv (IndexType itype, char jobz, char uplo, IndexType n, std::complex *Ap, std::complex *Bp, float *w, std::complex *Z, IndexType ldZ, std::complex *work, float *rWork); template IndexType hpgv (IndexType itype, char jobz, char uplo, IndexType n, std::complex *Ap, std::complex *Bp, double *w, std::complex *Z, IndexType ldZ, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPGV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpgv.tcc000066400000000000000000000077531456314707100245360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPGV_TCC #define CXXLAPACK_INTERFACE_HPGV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hpgv (IndexType itype, char jobz, char uplo, IndexType n, std::complex *Ap, std::complex *Bp, float *w, std::complex *Z, IndexType ldZ, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("chpgv"); IndexType info; LAPACK_IMPL(chpgv)(&itype, &jobz, &uplo, &n, reinterpret_cast(Ap), reinterpret_cast(Bp), w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hpgv (IndexType itype, char jobz, char uplo, IndexType n, std::complex *Ap, std::complex *Bp, double *w, std::complex *Z, IndexType ldZ, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zhpgv"); IndexType info; LAPACK_IMPL(zhpgv)(&itype, &jobz, &uplo, &n, reinterpret_cast(Ap), reinterpret_cast(Bp), w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPGV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpgvd.h000066400000000000000000000060061456314707100243460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPGVD_H #define CXXLAPACK_INTERFACE_HPGVD_H 1 #include namespace cxxlapack { template IndexType hpgvd(IndexType itype, char jobz, char uplo, IndexType n, std::complex *Ap, std::complex *Bp, float *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); template IndexType hpgvd(IndexType itype, char jobz, char uplo, IndexType n, std::complex *Ap, std::complex *Bp, double *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPGVD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpgvd.tcc000066400000000000000000000110461456314707100246700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPGVD_TCC #define CXXLAPACK_INTERFACE_HPGVD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hpgvd(IndexType itype, char jobz, char uplo, IndexType n, std::complex *Ap, std::complex *Bp, float *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("chpgvd"); IndexType info; LAPACK_IMPL(chpgvd)(&itype, &jobz, &uplo, &n, reinterpret_cast(Ap), reinterpret_cast(Bp), w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, &lrWork, iWork, liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hpgvd(IndexType itype, char jobz, char uplo, IndexType n, std::complex *Ap, std::complex *Bp, double *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("zhpgvd"); IndexType info; LAPACK_IMPL(zhpgvd)(&itype, &jobz, &uplo, &n, reinterpret_cast(Ap), reinterpret_cast(Bp), w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, &lrWork, iWork, liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPGVD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpgvx.h000066400000000000000000000065571456314707100244050ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPGVX_H #define CXXLAPACK_INTERFACE_HPGVX_H 1 #include namespace cxxlapack { template IndexType hpgvx(IndexType itype, char jobz, char range, char uplo, IndexType n, std::complex *Ap, std::complex *Bp, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, std::complex *work, float *rWork, IndexType *iWork, IndexType *ifail); template IndexType hpgvx(IndexType itype, char jobz, char range, char uplo, IndexType n, std::complex *Ap, std::complex *Bp, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, std::complex *work, double *rWork, IndexType *iWork, IndexType *ifail); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPGVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpgvx.tcc000066400000000000000000000122041456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPGVX_TCC #define CXXLAPACK_INTERFACE_HPGVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hpgvx(IndexType itype, char jobz, char range, char uplo, IndexType n, std::complex *Ap, std::complex *Bp, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, std::complex *work, float *rWork, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("chpevx"); IndexType info; LAPACK_IMPL(chpevx)(&itype, &jobz, &range, &uplo, &n, reinterpret_cast(Ap), reinterpret_cast(Bp), &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), rWork, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hpgvx(IndexType itype, char jobz, char range, char uplo, IndexType n, std::complex *Ap, std::complex *Bp, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, std::complex *work, double *rWork, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("zhpevx"); IndexType info; LAPACK_IMPL(zhpevx)(&itype, &jobz, &range, &uplo, &n, reinterpret_cast(Ap), reinterpret_cast(Bp), &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), rWork, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPGVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hprfs.h000066400000000000000000000061311456314707100243570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_DUMMY_H #define CXXLAPACK_INTERFACE_DUMMY_H 1 #include namespace cxxlapack { template IndexType hprfs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *Afp, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType hprfs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *Afp, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_DUMMY_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hprfs.tcc000066400000000000000000000112161456314707100247010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPRFS_TCC #define CXXLAPACK_INTERFACE_HPRFS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hprfs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *Afp, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("chprfs"); IndexType info; LAPACK_IMPL(chprfs)(&uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(Afp), iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hprfs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *Afp, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zhprfs"); IndexType info; LAPACK_IMPL(zhprfs)(&uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(Afp), iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPRFS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpsv.h000066400000000000000000000046261456314707100242240ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPSV_H #define CXXLAPACK_INTERFACE_HPSV_H 1 #include namespace cxxlapack { template IndexType hpsv (char uplo, IndexType n, IndexType nRhs, std::complex *Ap, IndexType *iPiv, std::complex *B, IndexType ldB); template IndexType hpsv (char uplo, IndexType n, IndexType nRhs, std::complex *Ap, IndexType *iPiv, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPSV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpsv.tcc000066400000000000000000000066071456314707100245470ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPSV_TCC #define CXXLAPACK_INTERFACE_HPSV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hpsv (char uplo, IndexType n, IndexType nRhs, std::complex *Ap, IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("chpsv"); IndexType info; LAPACK_IMPL(chpsv)(&uplo, &n, &nRhs, reinterpret_cast(Ap), iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hpsv (char uplo, IndexType n, IndexType nRhs, std::complex *Ap, IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zhpsv"); IndexType info; LAPACK_IMPL(zhpsv)(&uplo, &n, &nRhs, reinterpret_cast(Ap), iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPSV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpsvx.h000066400000000000000000000064151456314707100244120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPSVX_H #define CXXLAPACK_INTERFACE_HPSVX_H 1 #include namespace cxxlapack { template IndexType hpsvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *Afp, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType hpsvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *Afp, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPSVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hpsvx.tcc000066400000000000000000000116441456314707100247340ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPSVX_TCC #define CXXLAPACK_INTERFACE_HPSVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hpsvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *Afp, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("chpsvx"); IndexType info; LAPACK_IMPL(chpsvx)(&fact, &uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(Afp), iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hpsvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *Afp, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zhpsvx"); IndexType info; LAPACK_IMPL(zhpsvx)(&fact, &uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(Afp), iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPSVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hptrd.h000066400000000000000000000045111456314707100243560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPTRD_H #define CXXLAPACK_INTERFACE_HPTRD_H 1 #include namespace cxxlapack { template IndexType hptrd(char uplo, IndexType n, std::complex *Ap, float *d, float *e, std::complex *tau); template IndexType hptrd(char uplo, IndexType n, std::complex *Ap, double *d, double *e, std::complex *tau); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPTRD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hptrd.tcc000066400000000000000000000064161456314707100247060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPTRD_TCC #define CXXLAPACK_INTERFACE_HPTRD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hptrd(char uplo, IndexType n, std::complex *Ap, float *d, float *e, std::complex *tau) { CXXLAPACK_DEBUG_OUT("chptrd"); IndexType info; LAPACK_IMPL(chptrd)(&uplo, &n, reinterpret_cast(Ap), d, e, reinterpret_cast(tau), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hptrd(char uplo, IndexType n, std::complex *Ap, double *d, double *e, std::complex *tau) { CXXLAPACK_DEBUG_OUT("zhptrd"); IndexType info; LAPACK_IMPL(zhptrd)(&uplo, &n, reinterpret_cast(Ap), d, e, reinterpret_cast(tau), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPTRD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hptrf.h000066400000000000000000000042731456314707100243650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPTRF_H #define CXXLAPACK_INTERFACE_HPTRF_H 1 #include namespace cxxlapack { template IndexType hptrf(char uplo, IndexType n, std::complex *Ap, IndexType *iPiv); template IndexType hptrf(char uplo, IndexType n, std::complex *Ap, IndexType *iPiv); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPTRF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hptrf.tcc000066400000000000000000000057561456314707100247160ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPTRF_TCC #define CXXLAPACK_INTERFACE_HPTRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hptrf(char uplo, IndexType n, std::complex *Ap, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("chptrf"); IndexType info; LAPACK_IMPL(chptrf)(&uplo, &n, reinterpret_cast(Ap), iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hptrf(char uplo, IndexType n, std::complex *Ap, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("zhptrf"); IndexType info; LAPACK_IMPL(zhptrf)(&uplo, &n, reinterpret_cast(Ap), iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPTRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hptri.h000066400000000000000000000044111456314707100243620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPTRI_H #define CXXLAPACK_INTERFACE_HPTRI_H 1 #include namespace cxxlapack { template IndexType hptri(char uplo, IndexType n, std::complex *Ap, const IndexType *iPiv, std::complex *work); template IndexType hptri(char uplo, IndexType n, std::complex *Ap, const IndexType *iPiv, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPTRI_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hptri.tcc000066400000000000000000000062501456314707100247070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPTRI_TCC #define CXXLAPACK_INTERFACE_HPTRI_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hptri(char uplo, IndexType n, std::complex *Ap, const IndexType *iPiv, std::complex *work) { CXXLAPACK_DEBUG_OUT("chptri"); IndexType info; LAPACK_IMPL(chptri)(&uplo, &n, reinterpret_cast(Ap), iPiv, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hptri(char uplo, IndexType n, std::complex *Ap, const IndexType *iPiv, std::complex *work) { CXXLAPACK_DEBUG_OUT("zhptri"); IndexType info; LAPACK_IMPL(zhptri)(&uplo, &n, reinterpret_cast(Ap), iPiv, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPTRI_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hptrs.h000066400000000000000000000047551456314707100244070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPTRS_H #define CXXLAPACK_INTERFACE_HPTRS_H 1 #include namespace cxxlapack { template IndexType hptrs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const IndexType *iPiv, std::complex *B, IndexType ldB); template IndexType hptrs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const IndexType *iPiv, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPTRS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hptrs.tcc000066400000000000000000000067741456314707100247340ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HPTRS_TCC #define CXXLAPACK_INTERFACE_HPTRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hptrs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("chptrs"); IndexType info; LAPACK_IMPL(chptrs)(&uplo, &n, &nRhs, reinterpret_cast(Ap), iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hptrs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zhptrs"); IndexType info; LAPACK_IMPL(zhptrs)(&uplo, &n, &nRhs, reinterpret_cast(Ap), iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HPTRS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hsein.h000066400000000000000000000121531456314707100243440ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HSEIN_H #define CXXLAPACK_INTERFACE_HSEIN_H 1 #include namespace cxxlapack { // template // IndexType // hsein(char side, // char eigsrc, // char initv, // bool *select, // IndexType n, // const float *H, // IndexType ldH, // float *wr, // const float *wi, // float *VL, // IndexType ldVL, // float *VR, // IndexType ldVR, // IndexType mm, // IndexType &m, // float *work, // IndexType *ifaill, // IndexType *ifailr); // // template // IndexType // hsein(char side, // char eigsrc, // char initv, // bool *select, // IndexType n, // const double *H, // IndexType ldH, // double *wr, // const double *wi, // double *VL, // IndexType ldVL, // double *VR, // IndexType ldVR, // IndexType mm, // IndexType &m, // double *work, // IndexType *ifaill, // IndexType *ifailr); // // template // IndexType // hsein(char side, // char eigsrc, // char initv, // bool *select, // IndexType n, // const std::complex *H, // IndexType ldH, // std::complex *w, // std::complex *VL, // IndexType ldVL, // std::complex *VR, // IndexType ldVR, // IndexType mm, // IndexType &m, // std::complex *work, // float *rWork, // IndexType *ifaill, // IndexType *ifailr); // // template // IndexType // hsein(char side, // char eigsrc, // char initv, // bool *select, // IndexType n, // const std::complex *H, // IndexType ldH, // std::complex *w, // std::complex *VL, // IndexType ldVL, // std::complex *VR, // IndexType ldVR, // IndexType mm, // IndexType &m, // std::complex *work, // double *rWork, // IndexType *ifaill, // IndexType *ifailr); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HSEIN_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hsein.tcc000066400000000000000000000213051456314707100246650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HSEIN_TCC #define CXXLAPACK_INTERFACE_HSEIN_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { // template // IndexType // hsein(char side, // char eigsrc, // char initv, // bool *select, // IndexType n, // const float *H, // IndexType ldH, // float *wr, // const float *wi, // float *VL, // IndexType ldVL, // float *VR, // IndexType ldVR, // IndexType mm, // IndexType &m, // float *work, // IndexType *ifaill, // IndexType *ifailr) // { // CXXLAPACK_DEBUG_OUT("shsein"); // // IndexType info; // //IndexType *select_ = ??? // // LAPACK_IMPL(shsein)(&side, // &eigsrc, // &initv, // select, // &n, // H, // &ldH, // wr, // wi, // VL, // &ldVL, // VR, // &ldVR, // mm, // m, // work, // ifaill, // ifailr, // &info); // # ifndef NDEBUG // if (info<0) { // std::cerr << "info = " << info << std::endl; // } // # endif // ASSERT(info>=0); // return info; // } // template // IndexType // hsein(char side, // char eigsrc, // char initv, // bool *select, // IndexType n, // const double *H, // IndexType ldH, // double *wr, // const double *wi, // double *VL, // IndexType ldVL, // double *VR, // IndexType ldVR, // IndexType mm, // IndexType &m, // double *work, // IndexType *ifaill, // IndexType *ifailr) // { // CXXLAPACK_DEBUG_OUT("dhsein"); // // IndexType info; // //IndexType *select_ = ??? // // LAPACK_IMPL(dhsein)(&side, // &eigsrc, // &initv, // select, // &n, // H, // &ldH, // wr, // wi, // VL, // &ldVL, // VR, // &ldVR, // mm, // m, // work, // ifaill, // ifailr, // &info); // # ifndef NDEBUG // if (info<0) { // std::cerr << "info = " << info << std::endl; // } // # endif // ASSERT(info>=0); // return info; // } // // template // IndexType // hsein(char side, // char eigsrc, // char initv, // bool *select, // IndexType n, // const std::complex *H, // IndexType ldH, // std::complex *w, // std::complex *VL, // IndexType ldVL, // std::complex *VR, // IndexType ldVR, // IndexType mm, // IndexType &m, // std::complex *work, // float *rWork, // IndexType *ifaill, // IndexType *ifailr) // { // CXXLAPACK_DEBUG_OUT("chsein"); // // IndexType info; // //IndexType *select_ = ??? // LAPACK_IMPL(chsein)(&side, // &eigsrc, // &initv, // select, // &n, // reinterpret_cast(H), // &ldH, // reinterpret_cast(w), // reinterpret_cast(VL), // &ldVL, // reinterpret_cast(VR), // &ldVR, // mm, // m, // reinterpret_cast(work), // rWork, // ifaill, // ifailr, // &info); // # ifndef NDEBUG // if (info<0) { // std::cerr << "info = " << info << std::endl; // } // # endif // ASSERT(info>=0); // return info; // } // template // IndexType // hsein(char side, // char eigsrc, // char initv, // bool *select, // IndexType n, // const std::complex *H, // IndexType ldH, // std::complex *w, // std::complex *VL, // IndexType ldVL, // std::complex *VR, // IndexType ldVR, // IndexType mm, // IndexType &m, // std::complex *work, // double *rWork, // IndexType *ifaill, // IndexType *ifailr) // { // CXXLAPACK_DEBUG_OUT("zhsein"); // // IndexType info; // //IndexType *select_ = ??? // LAPACK_IMPL(zhsein)(&side, // &eigsrc, // &initv, // select, // &n, // reinterpret_cast(H), // &ldH, // reinterpret_cast(w), // reinterpret_cast(VL), // &ldVL, // reinterpret_cast(VR), // &ldVR, // mm, // m, // reinterpret_cast(work), // rWork, // ifaill, // ifailr, // &info); // # ifndef NDEBUG // if (info<0) { // std::cerr << "info = " << info << std::endl; // } // # endif // ASSERT(info>=0); // return info; // } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HSEIN_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hseqr.h000066400000000000000000000071151456314707100243620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HSEQR_H #define CXXLAPACK_INTERFACE_HSEQR_H 1 #include namespace cxxlapack { template IndexType hseqr(char job, char compZ, IndexType n, IndexType iLo, IndexType iHi, float *H, IndexType ldH, float *wr, float *wi, float *Z, IndexType ldZ, float *work, IndexType lWork); template IndexType hseqr(char job, char compZ, IndexType n, IndexType iLo, IndexType iHi, double *H, IndexType ldH, double *wr, double *wi, double *Z, IndexType ldZ, double *work, IndexType lWork); template IndexType hseqr(char job, char compZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork); template IndexType hseqr(char job, char compZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HSEQR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/hseqr.tcc000066400000000000000000000140401456314707100246770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_HSEQR_TCC #define CXXLAPACK_INTERFACE_HSEQR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType hseqr(char job, char compZ, IndexType n, IndexType iLo, IndexType iHi, float *H, IndexType ldH, float *wr, float *wi, float *Z, IndexType ldZ, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("shseqr"); IndexType info; LAPACK_IMPL(shseqr)(&job, &compZ, &n, &iLo, &iHi, H, &ldH, wr, wi, Z, &ldZ, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hseqr(char job, char compZ, IndexType n, IndexType iLo, IndexType iHi, double *H, IndexType ldH, double *wr, double *wi, double *Z, IndexType ldZ, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dhseqr"); IndexType info; LAPACK_IMPL(dhseqr)(&job, &compZ, &n, &iLo, &iHi, H, &ldH, wr, wi, Z, &ldZ, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hseqr(char job, char compZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("shseqr"); IndexType info; LAPACK_IMPL(chseqr)(&job, &compZ, &n, &iLo, &iHi, reinterpret_cast(H), &ldH, reinterpret_cast(w), reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType hseqr(char job, char compZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dhseqr"); IndexType info; LAPACK_IMPL(zhseqr)(&job, &compZ, &n, &iLo, &iHi, reinterpret_cast(H), &ldH, reinterpret_cast(w), reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_HSEQR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ieeeck.h000066400000000000000000000037331456314707100244670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_IEEECK_H #define CXXLAPACK_INTERFACE_IEEECK_H 1 #include namespace cxxlapack { template IndexType ieeeck(IndexType ispec, float zero, float one); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_IEEECK_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ieeeck.tcc000066400000000000000000000043131456314707100250040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_IEEECK_TCC #define CXXLAPACK_INTERFACE_IEEECK_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ieeeck(IndexType ispec, float zero, float one) { CXXLAPACK_DEBUG_OUT("ieeeck"); return LAPACK_IMPL(ieeeck)(&ispec, &zero, &one); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_IEEECK_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ilalc.h000066400000000000000000000042371456314707100243260ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ILALC_H #define CXXLAPACK_INTERFACE_ILALC_H 1 #include namespace cxxlapack { template IndexType ilalc(IndexType m, IndexType n, const double *A, IndexType ldA); template IndexType ilalc(IndexType m, IndexType n, const std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ILALC_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ilalc.tcc000066400000000000000000000053361456314707100246510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ILALC_TCC #define CXXLAPACK_INTERFACE_ILALC_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ilalc(IndexType m, IndexType n, const double *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("iladlc"); IndexType info = LAPACK_IMPL(iladlc)(&m, &n, A, &ldA); return info; } template IndexType ilalc(IndexType m, IndexType n, const std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("ilazlc"); IndexType info = LAPACK_IMPL(ilazlc)(&m, &n, reinterpret_cast(A), &ldA); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ILALC_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ilalr.h000066400000000000000000000042371456314707100243450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ILALR_H #define CXXLAPACK_INTERFACE_ILALR_H 1 #include namespace cxxlapack { template IndexType ilalr(IndexType m, IndexType n, const double *A, IndexType ldA); template IndexType ilalr(IndexType m, IndexType n, const std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ILALR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ilalr.tcc000066400000000000000000000053241456314707100246650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ILALR_TCC #define CXXLAPACK_INTERFACE_ILALR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ilalr(IndexType m, IndexType n, const double *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("iladlr"); IndexType info = LAPACK_IMPL(iladlr)(&m, &n, A, &ldA); return info; } template IndexType ilalr(IndexType m, IndexType n, const std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("ilazlr"); IndexType info = LAPACK_IMPL(ilazlr)(&m, &n, reinterpret_cast(A), &ldA); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ILALR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ilaslc.h000066400000000000000000000037701456314707100245120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ILASLC_H #define CXXLAPACK_INTERFACE_ILASLC_H 1 #include namespace cxxlapack { template IndexType ilaslc(IndexType m, IndexType n, const float *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ILASLC_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ilaslc.tcc000066400000000000000000000043771456314707100250400ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ILASLC_TCC #define CXXLAPACK_INTERFACE_ILASLC_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ilaslc(IndexType m, IndexType n, const float *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("ilaslc"); return LAPACK_IMPL(ilaslc)(&m, &n, A, &ldA); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ILASLC_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ilaslr.h000066400000000000000000000037701456314707100245310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ILASLR_H #define CXXLAPACK_INTERFACE_ILASLR_H 1 #include namespace cxxlapack { template IndexType ilaslr(IndexType m, IndexType n, const float *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ILASLR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ilaslr.tcc000066400000000000000000000043771456314707100250570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ILASLR_TCC #define CXXLAPACK_INTERFACE_ILASLR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ilaslr(IndexType m, IndexType n, const float *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("ilaslr"); return LAPACK_IMPL(ilaslr)(&m, &n, A, &ldA); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ILASLR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ilaver.h000066400000000000000000000037531456314707100245260ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ILAVER_H #define CXXLAPACK_INTERFACE_ILAVER_H 1 #include namespace cxxlapack { template void ilaver(IndexType &vers_major, IndexType &vers_minor, IndexType &vers_patch); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ILAVER_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ilaver.tcc000066400000000000000000000043301456314707100250400ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ILAVER_TCC #define CXXLAPACK_INTERFACE_ILAVER_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void ilaver(IndexType &vers_major, IndexType &vers_minor, IndexType &vers_patch) { CXXLAPACK_DEBUG_OUT("ilaver"); LAPACK_IMPL(ilaver)(&vers_major, &vers_minor, &vers_patch); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ILAVER_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ilazlc.h000066400000000000000000000040211456314707100245070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ILAZLC_H #define CXXLAPACK_INTERFACE_ILAZLC_H 1 #include namespace cxxlapack { template IndexType ilazlc(IndexType m, IndexType n, const std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ILAZLC_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ilazlc.tcc000066400000000000000000000044711456314707100250420ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ILAZLC_TCC #define CXXLAPACK_INTERFACE_ILAZLC_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ilazlc(IndexType m, IndexType n, const std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("ilazlc"); return LAPACK_IMPL(ilazlc)(&m, &n, reinterpret_cast(A), &ldA); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ILAZLC_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ilazlr.h000066400000000000000000000040211456314707100245260ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ILAZLR_H #define CXXLAPACK_INTERFACE_ILAZLR_H 1 #include namespace cxxlapack { template IndexType ilazlr(IndexType m, IndexType n, const std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ILAZLR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ilazlr.tcc000066400000000000000000000044711456314707100250610ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ILAZLR_TCC #define CXXLAPACK_INTERFACE_ILAZLR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ilazlr(IndexType m, IndexType n, const std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("ilazlr"); return LAPACK_IMPL(ilazlr)(&m, &n, reinterpret_cast(A), &ldA); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ILAZLR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/interface.h000066400000000000000000000636611456314707100252100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_INTERFACE_H #define CXXLAPACK_INTERFACE_INTERFACE_H 1 #include #include "xflens/cxxlapack/interface/bbcsd.h" #include "xflens/cxxlapack/interface/bdsdc.h" #include "xflens/cxxlapack/interface/bdsqr.h" #include "xflens/cxxlapack/interface/cgesv.h" #include "xflens/cxxlapack/interface/chla_transtype.h" #include "xflens/cxxlapack/interface/cposv.h" #include "xflens/cxxlapack/interface/disna.h" #include "xflens/cxxlapack/interface/dspcon.h" #include "xflens/cxxlapack/interface/gbbrd.h" #include "xflens/cxxlapack/interface/gbcon.h" #include "xflens/cxxlapack/interface/gbequb.h" #include "xflens/cxxlapack/interface/gbequ.h" #include "xflens/cxxlapack/interface/gbrfs.h" #include "xflens/cxxlapack/interface/gbsv.h" #include "xflens/cxxlapack/interface/gbsvx.h" #include "xflens/cxxlapack/interface/gbtf2.h" #include "xflens/cxxlapack/interface/gbtrf.h" #include "xflens/cxxlapack/interface/gbtrs.h" #include "xflens/cxxlapack/interface/gebak.h" #include "xflens/cxxlapack/interface/gebal.h" #include "xflens/cxxlapack/interface/gebd2.h" #include "xflens/cxxlapack/interface/gebrd.h" #include "xflens/cxxlapack/interface/gecon.h" #include "xflens/cxxlapack/interface/geequb.h" #include "xflens/cxxlapack/interface/geequ.h" #include "xflens/cxxlapack/interface/gees.h" #include "xflens/cxxlapack/interface/geesx.h" #include "xflens/cxxlapack/interface/geev.h" #include "xflens/cxxlapack/interface/geevx.h" #include "xflens/cxxlapack/interface/gegs.h" #include "xflens/cxxlapack/interface/gegv.h" #include "xflens/cxxlapack/interface/gehd2.h" #include "xflens/cxxlapack/interface/gehrd.h" #include "xflens/cxxlapack/interface/gejsv.h" #include "xflens/cxxlapack/interface/gelq2.h" #include "xflens/cxxlapack/interface/gelqf.h" #include "xflens/cxxlapack/interface/gelsd.h" #include "xflens/cxxlapack/interface/gels.h" #include "xflens/cxxlapack/interface/gelss.h" #include "xflens/cxxlapack/interface/gelsx.h" #include "xflens/cxxlapack/interface/gelsy.h" #include "xflens/cxxlapack/interface/geql2.h" #include "xflens/cxxlapack/interface/geqlf.h" #include "xflens/cxxlapack/interface/geqp3.h" #include "xflens/cxxlapack/interface/geqpf.h" #include "xflens/cxxlapack/interface/geqr2.h" #include "xflens/cxxlapack/interface/geqr2p.h" #include "xflens/cxxlapack/interface/geqrf.h" #include "xflens/cxxlapack/interface/geqrfp.h" #include "xflens/cxxlapack/interface/gerfs.h" #include "xflens/cxxlapack/interface/gerq2.h" #include "xflens/cxxlapack/interface/gerqf.h" #include "xflens/cxxlapack/interface/gesc2.h" #include "xflens/cxxlapack/interface/gesdd.h" #include "xflens/cxxlapack/interface/gesvd.h" #include "xflens/cxxlapack/interface/gesv.h" #include "xflens/cxxlapack/interface/gesvj.h" #include "xflens/cxxlapack/interface/gesvx.h" #include "xflens/cxxlapack/interface/getc2.h" #include "xflens/cxxlapack/interface/getf2.h" #include "xflens/cxxlapack/interface/getrf.h" #include "xflens/cxxlapack/interface/getri.h" #include "xflens/cxxlapack/interface/getrs.h" #include "xflens/cxxlapack/interface/ggbak.h" #include "xflens/cxxlapack/interface/ggbal.h" #include "xflens/cxxlapack/interface/gges.h" #include "xflens/cxxlapack/interface/ggesx.h" #include "xflens/cxxlapack/interface/ggev.h" #include "xflens/cxxlapack/interface/ggevx.h" #include "xflens/cxxlapack/interface/ggglm.h" #include "xflens/cxxlapack/interface/gghrd.h" #include "xflens/cxxlapack/interface/gglse.h" #include "xflens/cxxlapack/interface/ggqrf.h" #include "xflens/cxxlapack/interface/ggrqf.h" #include "xflens/cxxlapack/interface/ggsvd.h" #include "xflens/cxxlapack/interface/ggsvp.h" #include "xflens/cxxlapack/interface/gsvj0.h" #include "xflens/cxxlapack/interface/gsvj1.h" #include "xflens/cxxlapack/interface/gtcon.h" #include "xflens/cxxlapack/interface/gtrfs.h" #include "xflens/cxxlapack/interface/gtsv.h" #include "xflens/cxxlapack/interface/gtsvx.h" #include "xflens/cxxlapack/interface/gttrf.h" #include "xflens/cxxlapack/interface/gttrs.h" #include "xflens/cxxlapack/interface/gtts2.h" #include "xflens/cxxlapack/interface/hbevd.h" #include "xflens/cxxlapack/interface/hbev.h" #include "xflens/cxxlapack/interface/hbevx.h" #include "xflens/cxxlapack/interface/hbgst.h" #include "xflens/cxxlapack/interface/hbgvd.h" #include "xflens/cxxlapack/interface/hbgv.h" #include "xflens/cxxlapack/interface/hbgvx.h" #include "xflens/cxxlapack/interface/hbtrd.h" #include "xflens/cxxlapack/interface/hecon.h" #include "xflens/cxxlapack/interface/heequb.h" #include "xflens/cxxlapack/interface/heevd.h" #include "xflens/cxxlapack/interface/heev.h" #include "xflens/cxxlapack/interface/heevr.h" #include "xflens/cxxlapack/interface/heevx.h" #include "xflens/cxxlapack/interface/hegs2.h" #include "xflens/cxxlapack/interface/hegst.h" #include "xflens/cxxlapack/interface/hegvd.h" #include "xflens/cxxlapack/interface/hegv.h" #include "xflens/cxxlapack/interface/hegvx.h" #include "xflens/cxxlapack/interface/herfs.h" #include "xflens/cxxlapack/interface/hesv.h" #include "xflens/cxxlapack/interface/hesvx.h" #include "xflens/cxxlapack/interface/heswapr.h" #include "xflens/cxxlapack/interface/hetd2.h" #include "xflens/cxxlapack/interface/hetf2.h" #include "xflens/cxxlapack/interface/hetrd.h" #include "xflens/cxxlapack/interface/hetrf.h" #include "xflens/cxxlapack/interface/hetri2.h" #include "xflens/cxxlapack/interface/hetri2x.h" #include "xflens/cxxlapack/interface/hetri.h" #include "xflens/cxxlapack/interface/hetrs2.h" #include "xflens/cxxlapack/interface/hetrs.h" #include "xflens/cxxlapack/interface/hfrk.h" #include "xflens/cxxlapack/interface/hgeqz.h" #include "xflens/cxxlapack/interface/hpcon.h" #include "xflens/cxxlapack/interface/hpevd.h" #include "xflens/cxxlapack/interface/hpev.h" #include "xflens/cxxlapack/interface/hpevx.h" #include "xflens/cxxlapack/interface/hpgst.h" #include "xflens/cxxlapack/interface/hpgvd.h" #include "xflens/cxxlapack/interface/hpgv.h" #include "xflens/cxxlapack/interface/hpgvx.h" #include "xflens/cxxlapack/interface/hprfs.h" #include "xflens/cxxlapack/interface/hpsv.h" #include "xflens/cxxlapack/interface/hpsvx.h" #include "xflens/cxxlapack/interface/hptrd.h" #include "xflens/cxxlapack/interface/hptrf.h" #include "xflens/cxxlapack/interface/hptri.h" #include "xflens/cxxlapack/interface/hptrs.h" #include "xflens/cxxlapack/interface/hsein.h" #include "xflens/cxxlapack/interface/hseqr.h" #include "xflens/cxxlapack/interface/ieeeck.h" #include "xflens/cxxlapack/interface/ilalc.h" #include "xflens/cxxlapack/interface/ilalr.h" #include "xflens/cxxlapack/interface/laprec.h" #include "xflens/cxxlapack/interface/ilaslc.h" #include "xflens/cxxlapack/interface/ilaslr.h" #include "xflens/cxxlapack/interface/latrans.h" #include "xflens/cxxlapack/interface/lauplo.h" #include "xflens/cxxlapack/interface/ilaver.h" #include "xflens/cxxlapack/interface/ilazlc.h" #include "xflens/cxxlapack/interface/ilazlr.h" #include "xflens/cxxlapack/interface/isnan.h" #include "xflens/cxxlapack/interface/izmax1.h" #include "xflens/cxxlapack/interface/labad.h" #include "xflens/cxxlapack/interface/labrd.h" #include "xflens/cxxlapack/interface/lacgv.h" #include "xflens/cxxlapack/interface/lacn2.h" #include "xflens/cxxlapack/interface/lacon.h" #include "xflens/cxxlapack/interface/lacp2.h" #include "xflens/cxxlapack/interface/lacpy.h" #include "xflens/cxxlapack/interface/lacrm.h" #include "xflens/cxxlapack/interface/lacrt.h" #include "xflens/cxxlapack/interface/ladiv.h" #include "xflens/cxxlapack/interface/lae2.h" #include "xflens/cxxlapack/interface/laebz.h" #include "xflens/cxxlapack/interface/laed0.h" #include "xflens/cxxlapack/interface/laed1.h" #include "xflens/cxxlapack/interface/laed2.h" #include "xflens/cxxlapack/interface/laed3.h" #include "xflens/cxxlapack/interface/laed4.h" #include "xflens/cxxlapack/interface/laed5.h" #include "xflens/cxxlapack/interface/laed6.h" #include "xflens/cxxlapack/interface/laed7.h" #include "xflens/cxxlapack/interface/laed8.h" #include "xflens/cxxlapack/interface/laed9.h" #include "xflens/cxxlapack/interface/laeda.h" #include "xflens/cxxlapack/interface/laein.h" #include "xflens/cxxlapack/interface/laesy.h" #include "xflens/cxxlapack/interface/laev2.h" #include "xflens/cxxlapack/interface/laexc.h" #include "xflens/cxxlapack/interface/lag2c.h" #include "xflens/cxxlapack/interface/lag2d.h" #include "xflens/cxxlapack/interface/lag2.h" #include "xflens/cxxlapack/interface/lag2s.h" #include "xflens/cxxlapack/interface/lag2z.h" #include "xflens/cxxlapack/interface/la_gbamv.h" #include "xflens/cxxlapack/interface/la_gbrcond_c.h" #include "xflens/cxxlapack/interface/la_gbrcond.h" #include "xflens/cxxlapack/interface/la_gbrcond_x.h" #include "xflens/cxxlapack/interface/la_gbrpvgrw.h" #include "xflens/cxxlapack/interface/la_geamv.h" #include "xflens/cxxlapack/interface/la_gercond_c.h" #include "xflens/cxxlapack/interface/la_gercond.h" #include "xflens/cxxlapack/interface/la_gercond_x.h" #include "xflens/cxxlapack/interface/lags2.h" #include "xflens/cxxlapack/interface/lagtf.h" #include "xflens/cxxlapack/interface/lagtm.h" #include "xflens/cxxlapack/interface/lagts.h" #include "xflens/cxxlapack/interface/lagv2.h" #include "xflens/cxxlapack/interface/lahef.h" #include "xflens/cxxlapack/interface/la_heramv.h" #include "xflens/cxxlapack/interface/la_hercond_c.h" #include "xflens/cxxlapack/interface/la_hercond_x.h" #include "xflens/cxxlapack/interface/la_herpvgrw.h" #include "xflens/cxxlapack/interface/lahqr.h" #include "xflens/cxxlapack/interface/lahr2.h" #include "xflens/cxxlapack/interface/lahrd.h" #include "xflens/cxxlapack/interface/laic1.h" #include "xflens/cxxlapack/interface/laisnan.h" #include "xflens/cxxlapack/interface/la_lin_berr.h" #include "xflens/cxxlapack/interface/laln2.h" #include "xflens/cxxlapack/interface/lals0.h" #include "xflens/cxxlapack/interface/lalsa.h" #include "xflens/cxxlapack/interface/lalsd.h" #include "xflens/cxxlapack/interface/lamch.h" #include "xflens/cxxlapack/interface/lamrg.h" #include "xflens/cxxlapack/interface/laneg.h" #include "xflens/cxxlapack/interface/langb.h" #include "xflens/cxxlapack/interface/lange.h" #include "xflens/cxxlapack/interface/langt.h" #include "xflens/cxxlapack/interface/lanhb.h" #include "xflens/cxxlapack/interface/lanhe.h" #include "xflens/cxxlapack/interface/lanhf.h" #include "xflens/cxxlapack/interface/lanhp.h" #include "xflens/cxxlapack/interface/lanhs.h" #include "xflens/cxxlapack/interface/lanht.h" #include "xflens/cxxlapack/interface/lansb.h" #include "xflens/cxxlapack/interface/lansf.h" #include "xflens/cxxlapack/interface/lansp.h" #include "xflens/cxxlapack/interface/lanst.h" #include "xflens/cxxlapack/interface/lansy.h" #include "xflens/cxxlapack/interface/lantb.h" #include "xflens/cxxlapack/interface/lantp.h" #include "xflens/cxxlapack/interface/lantr.h" #include "xflens/cxxlapack/interface/lanv2.h" #include "xflens/cxxlapack/interface/lapll.h" #include "xflens/cxxlapack/interface/lapmr.h" #include "xflens/cxxlapack/interface/lapmt.h" #include "xflens/cxxlapack/interface/la_porcond_c.h" #include "xflens/cxxlapack/interface/la_porcond.h" #include "xflens/cxxlapack/interface/la_porcond_x.h" #include "xflens/cxxlapack/interface/la_porpvgrw.h" #include "xflens/cxxlapack/interface/lapy2.h" #include "xflens/cxxlapack/interface/lapy3.h" #include "xflens/cxxlapack/interface/laqgb.h" #include "xflens/cxxlapack/interface/laqge.h" #include "xflens/cxxlapack/interface/laqhb.h" #include "xflens/cxxlapack/interface/laqhe.h" #include "xflens/cxxlapack/interface/laqhp.h" #include "xflens/cxxlapack/interface/laqp2.h" #include "xflens/cxxlapack/interface/laqps.h" #include "xflens/cxxlapack/interface/laqr0.h" #include "xflens/cxxlapack/interface/laqr1.h" #include "xflens/cxxlapack/interface/laqr2.h" #include "xflens/cxxlapack/interface/laqr3.h" #include "xflens/cxxlapack/interface/laqr4.h" #include "xflens/cxxlapack/interface/laqr5.h" #include "xflens/cxxlapack/interface/laqsb.h" #include "xflens/cxxlapack/interface/laqsp.h" #include "xflens/cxxlapack/interface/laqsy.h" #include "xflens/cxxlapack/interface/laqtr.h" #include "xflens/cxxlapack/interface/lar1v.h" #include "xflens/cxxlapack/interface/lar2v.h" #include "xflens/cxxlapack/interface/larcm.h" #include "xflens/cxxlapack/interface/larfb.h" #include "xflens/cxxlapack/interface/larfg.h" #include "xflens/cxxlapack/interface/larfgp.h" #include "xflens/cxxlapack/interface/larf.h" #include "xflens/cxxlapack/interface/larft.h" #include "xflens/cxxlapack/interface/larfx.h" #include "xflens/cxxlapack/interface/largv.h" #include "xflens/cxxlapack/interface/larnv.h" #include "xflens/cxxlapack/interface/la_rpvgrw.h" #include "xflens/cxxlapack/interface/larra.h" #include "xflens/cxxlapack/interface/larrb.h" #include "xflens/cxxlapack/interface/larrc.h" #include "xflens/cxxlapack/interface/larrd.h" #include "xflens/cxxlapack/interface/larre.h" #include "xflens/cxxlapack/interface/larrf.h" #include "xflens/cxxlapack/interface/larrj.h" #include "xflens/cxxlapack/interface/larrk.h" #include "xflens/cxxlapack/interface/larrr.h" #include "xflens/cxxlapack/interface/larrv.h" #include "xflens/cxxlapack/interface/larscl2.h" #include "xflens/cxxlapack/interface/lartg.h" #include "xflens/cxxlapack/interface/lartgp.h" #include "xflens/cxxlapack/interface/lartgs.h" #include "xflens/cxxlapack/interface/lartv.h" #include "xflens/cxxlapack/interface/laruv.h" #include "xflens/cxxlapack/interface/larzb.h" #include "xflens/cxxlapack/interface/larz.h" #include "xflens/cxxlapack/interface/larzt.h" #include "xflens/cxxlapack/interface/las2.h" #include "xflens/cxxlapack/interface/lascl2.h" #include "xflens/cxxlapack/interface/lascl.h" #include "xflens/cxxlapack/interface/lasd0.h" #include "xflens/cxxlapack/interface/lasd1.h" #include "xflens/cxxlapack/interface/lasd2.h" #include "xflens/cxxlapack/interface/lasd3.h" #include "xflens/cxxlapack/interface/lasd4.h" #include "xflens/cxxlapack/interface/lasd5.h" #include "xflens/cxxlapack/interface/lasd6.h" #include "xflens/cxxlapack/interface/lasd7.h" #include "xflens/cxxlapack/interface/lasd8.h" #include "xflens/cxxlapack/interface/lasda.h" #include "xflens/cxxlapack/interface/lasdq.h" #include "xflens/cxxlapack/interface/lasdt.h" #include "xflens/cxxlapack/interface/laset.h" #include "xflens/cxxlapack/interface/lasq1.h" #include "xflens/cxxlapack/interface/lasq2.h" #include "xflens/cxxlapack/interface/lasq3.h" #include "xflens/cxxlapack/interface/lasq4.h" #include "xflens/cxxlapack/interface/lasq5.h" #include "xflens/cxxlapack/interface/lasq6.h" #include "xflens/cxxlapack/interface/lasr.h" #include "xflens/cxxlapack/interface/lasrt.h" #include "xflens/cxxlapack/interface/lassq.h" #include "xflens/cxxlapack/interface/lasv2.h" #include "xflens/cxxlapack/interface/laswp.h" #include "xflens/cxxlapack/interface/lasy2.h" #include "xflens/cxxlapack/interface/la_syamv.h" #include "xflens/cxxlapack/interface/lasyf.h" #include "xflens/cxxlapack/interface/la_syrcond_c.h" #include "xflens/cxxlapack/interface/la_syrcond.h" #include "xflens/cxxlapack/interface/la_syrcond_x.h" #include "xflens/cxxlapack/interface/la_syrpvgrw.h" #include "xflens/cxxlapack/interface/lat2c.h" #include "xflens/cxxlapack/interface/lat2s.h" #include "xflens/cxxlapack/interface/latbs.h" #include "xflens/cxxlapack/interface/latdf.h" #include "xflens/cxxlapack/interface/latps.h" #include "xflens/cxxlapack/interface/latrd.h" #include "xflens/cxxlapack/interface/latrs.h" #include "xflens/cxxlapack/interface/latrz.h" #include "xflens/cxxlapack/interface/latzm.h" #include "xflens/cxxlapack/interface/lauu2.h" #include "xflens/cxxlapack/interface/lauum.h" #include "xflens/cxxlapack/interface/la_wwaddw.h" #include "xflens/cxxlapack/interface/lsame.h" #include "xflens/cxxlapack/interface/lsamen.h" #include "xflens/cxxlapack/interface/opgtr.h" #include "xflens/cxxlapack/interface/opmtr.h" #include "xflens/cxxlapack/interface/orbdb.h" #include "xflens/cxxlapack/interface/orcsd.h" #include "xflens/cxxlapack/interface/org2l.h" #include "xflens/cxxlapack/interface/org2r.h" #include "xflens/cxxlapack/interface/orgbr.h" #include "xflens/cxxlapack/interface/orghr.h" #include "xflens/cxxlapack/interface/orgl2.h" #include "xflens/cxxlapack/interface/orglq.h" #include "xflens/cxxlapack/interface/orgql.h" #include "xflens/cxxlapack/interface/orgqr.h" #include "xflens/cxxlapack/interface/orgr2.h" #include "xflens/cxxlapack/interface/orgrq.h" #include "xflens/cxxlapack/interface/orgtr.h" #include "xflens/cxxlapack/interface/orm2l.h" #include "xflens/cxxlapack/interface/orm2r.h" #include "xflens/cxxlapack/interface/ormbr.h" #include "xflens/cxxlapack/interface/ormhr.h" #include "xflens/cxxlapack/interface/orml2.h" #include "xflens/cxxlapack/interface/ormlq.h" #include "xflens/cxxlapack/interface/ormql.h" #include "xflens/cxxlapack/interface/ormqr.h" #include "xflens/cxxlapack/interface/ormr2.h" #include "xflens/cxxlapack/interface/ormr3.h" #include "xflens/cxxlapack/interface/ormrq.h" #include "xflens/cxxlapack/interface/ormrz.h" #include "xflens/cxxlapack/interface/ormtr.h" #include "xflens/cxxlapack/interface/pbcon.h" #include "xflens/cxxlapack/interface/pbequ.h" #include "xflens/cxxlapack/interface/pbrfs.h" #include "xflens/cxxlapack/interface/pbstf.h" #include "xflens/cxxlapack/interface/pbsv.h" #include "xflens/cxxlapack/interface/pbsvx.h" #include "xflens/cxxlapack/interface/pbtf2.h" #include "xflens/cxxlapack/interface/pbtrf.h" #include "xflens/cxxlapack/interface/pbtrs.h" #include "xflens/cxxlapack/interface/pftrf.h" #include "xflens/cxxlapack/interface/pftri.h" #include "xflens/cxxlapack/interface/pftrs.h" #include "xflens/cxxlapack/interface/pocon.h" #include "xflens/cxxlapack/interface/poequb.h" #include "xflens/cxxlapack/interface/poequ.h" #include "xflens/cxxlapack/interface/porfs.h" #include "xflens/cxxlapack/interface/posv.h" #include "xflens/cxxlapack/interface/posvx.h" #include "xflens/cxxlapack/interface/potf2.h" #include "xflens/cxxlapack/interface/potrf.h" #include "xflens/cxxlapack/interface/potri.h" #include "xflens/cxxlapack/interface/potrs.h" #include "xflens/cxxlapack/interface/ppcon.h" #include "xflens/cxxlapack/interface/ppequ.h" #include "xflens/cxxlapack/interface/pprfs.h" #include "xflens/cxxlapack/interface/ppsv.h" #include "xflens/cxxlapack/interface/ppsvx.h" #include "xflens/cxxlapack/interface/pptrf.h" #include "xflens/cxxlapack/interface/pptri.h" #include "xflens/cxxlapack/interface/pptrs.h" #include "xflens/cxxlapack/interface/pstf2.h" #include "xflens/cxxlapack/interface/pstrf.h" #include "xflens/cxxlapack/interface/ptcon.h" #include "xflens/cxxlapack/interface/pteqr.h" #include "xflens/cxxlapack/interface/ptrfs.h" #include "xflens/cxxlapack/interface/ptsv.h" #include "xflens/cxxlapack/interface/ptsvx.h" #include "xflens/cxxlapack/interface/pttrf.h" #include "xflens/cxxlapack/interface/pttrs.h" #include "xflens/cxxlapack/interface/ptts2.h" #include "xflens/cxxlapack/interface/rot.h" #include "xflens/cxxlapack/interface/rscl.h" #include "xflens/cxxlapack/interface/sbevd.h" #include "xflens/cxxlapack/interface/sbev.h" #include "xflens/cxxlapack/interface/sbevx.h" #include "xflens/cxxlapack/interface/sbgst.h" #include "xflens/cxxlapack/interface/sbgvd.h" #include "xflens/cxxlapack/interface/sbgv.h" #include "xflens/cxxlapack/interface/sbgvx.h" #include "xflens/cxxlapack/interface/sbtrd.h" #include "xflens/cxxlapack/interface/sfrk.h" #include "xflens/cxxlapack/interface/sgesv.h" #include "xflens/cxxlapack/interface/spevd.h" #include "xflens/cxxlapack/interface/spev.h" #include "xflens/cxxlapack/interface/spevx.h" #include "xflens/cxxlapack/interface/spgst.h" #include "xflens/cxxlapack/interface/spgvd.h" #include "xflens/cxxlapack/interface/spgv.h" #include "xflens/cxxlapack/interface/spgvx.h" #include "xflens/cxxlapack/interface/spmv.h" #include "xflens/cxxlapack/interface/sposv.h" #include "xflens/cxxlapack/interface/sprfs.h" #include "xflens/cxxlapack/interface/spr.h" #include "xflens/cxxlapack/interface/spsv.h" #include "xflens/cxxlapack/interface/spsvx.h" #include "xflens/cxxlapack/interface/sptrd.h" #include "xflens/cxxlapack/interface/sptrf.h" #include "xflens/cxxlapack/interface/sptri.h" #include "xflens/cxxlapack/interface/sptrs.h" #include "xflens/cxxlapack/interface/stebz.h" #include "xflens/cxxlapack/interface/stedc.h" #include "xflens/cxxlapack/interface/stegr.h" #include "xflens/cxxlapack/interface/stein.h" #include "xflens/cxxlapack/interface/stemr.h" #include "xflens/cxxlapack/interface/steqr.h" #include "xflens/cxxlapack/interface/sterf.h" #include "xflens/cxxlapack/interface/stevd.h" #include "xflens/cxxlapack/interface/stev.h" #include "xflens/cxxlapack/interface/stevr.h" #include "xflens/cxxlapack/interface/stevx.h" #include "xflens/cxxlapack/interface/sycon.h" #include "xflens/cxxlapack/interface/syconv.h" #include "xflens/cxxlapack/interface/syequb.h" #include "xflens/cxxlapack/interface/syevd.h" #include "xflens/cxxlapack/interface/syev.h" #include "xflens/cxxlapack/interface/syevr.h" #include "xflens/cxxlapack/interface/syevx.h" #include "xflens/cxxlapack/interface/sygs2.h" #include "xflens/cxxlapack/interface/sygst.h" #include "xflens/cxxlapack/interface/sygvd.h" #include "xflens/cxxlapack/interface/sygv.h" #include "xflens/cxxlapack/interface/sygvx.h" #include "xflens/cxxlapack/interface/symv.h" #include "xflens/cxxlapack/interface/syrfs.h" #include "xflens/cxxlapack/interface/syr.h" #include "xflens/cxxlapack/interface/sysv.h" #include "xflens/cxxlapack/interface/sysvx.h" #include "xflens/cxxlapack/interface/syswapr.h" #include "xflens/cxxlapack/interface/sytd2.h" #include "xflens/cxxlapack/interface/sytf2.h" #include "xflens/cxxlapack/interface/sytrd.h" #include "xflens/cxxlapack/interface/sytrf.h" #include "xflens/cxxlapack/interface/sytri2.h" #include "xflens/cxxlapack/interface/sytri2x.h" #include "xflens/cxxlapack/interface/sytri.h" #include "xflens/cxxlapack/interface/sytrs2.h" #include "xflens/cxxlapack/interface/sytrs.h" #include "xflens/cxxlapack/interface/tbcon.h" #include "xflens/cxxlapack/interface/tbrfs.h" #include "xflens/cxxlapack/interface/tbtrs.h" #include "xflens/cxxlapack/interface/tfsm.h" #include "xflens/cxxlapack/interface/tftri.h" #include "xflens/cxxlapack/interface/tfttp.h" #include "xflens/cxxlapack/interface/tfttr.h" #include "xflens/cxxlapack/interface/tgevc.h" #include "xflens/cxxlapack/interface/tgex2.h" #include "xflens/cxxlapack/interface/tgexc.h" #include "xflens/cxxlapack/interface/tgsen.h" #include "xflens/cxxlapack/interface/tgsja.h" #include "xflens/cxxlapack/interface/tgsna.h" #include "xflens/cxxlapack/interface/tgsy2.h" #include "xflens/cxxlapack/interface/tgsyl.h" #include "xflens/cxxlapack/interface/tpcon.h" #include "xflens/cxxlapack/interface/tprfs.h" #include "xflens/cxxlapack/interface/tptri.h" #include "xflens/cxxlapack/interface/tptrs.h" #include "xflens/cxxlapack/interface/tpttf.h" #include "xflens/cxxlapack/interface/tpttr.h" #include "xflens/cxxlapack/interface/trcon.h" #include "xflens/cxxlapack/interface/trevc.h" #include "xflens/cxxlapack/interface/trexc.h" #include "xflens/cxxlapack/interface/trrfs.h" #include "xflens/cxxlapack/interface/trsen.h" #include "xflens/cxxlapack/interface/trsna.h" #include "xflens/cxxlapack/interface/trsyl.h" #include "xflens/cxxlapack/interface/trti2.h" #include "xflens/cxxlapack/interface/trtri.h" #include "xflens/cxxlapack/interface/trtrs.h" #include "xflens/cxxlapack/interface/trttf.h" #include "xflens/cxxlapack/interface/trttp.h" #include "xflens/cxxlapack/interface/tzrqf.h" #include "xflens/cxxlapack/interface/tzrzf.h" #include "xflens/cxxlapack/interface/unbdb.h" #include "xflens/cxxlapack/interface/uncsd.h" #include "xflens/cxxlapack/interface/ung2l.h" #include "xflens/cxxlapack/interface/ung2r.h" #include "xflens/cxxlapack/interface/ungbr.h" #include "xflens/cxxlapack/interface/unghr.h" #include "xflens/cxxlapack/interface/ungl2.h" #include "xflens/cxxlapack/interface/unglq.h" #include "xflens/cxxlapack/interface/ungql.h" #include "xflens/cxxlapack/interface/ungqr.h" #include "xflens/cxxlapack/interface/ungr2.h" #include "xflens/cxxlapack/interface/ungrq.h" #include "xflens/cxxlapack/interface/ungtr.h" #include "xflens/cxxlapack/interface/unm2l.h" #include "xflens/cxxlapack/interface/unm2r.h" #include "xflens/cxxlapack/interface/unmbr.h" #include "xflens/cxxlapack/interface/unmhr.h" #include "xflens/cxxlapack/interface/unml2.h" #include "xflens/cxxlapack/interface/unmlq.h" #include "xflens/cxxlapack/interface/unmql.h" #include "xflens/cxxlapack/interface/unmqr.h" #include "xflens/cxxlapack/interface/unmr2.h" #include "xflens/cxxlapack/interface/unmr3.h" #include "xflens/cxxlapack/interface/unmrq.h" #include "xflens/cxxlapack/interface/unmrz.h" #include "xflens/cxxlapack/interface/unmtr.h" #include "xflens/cxxlapack/interface/upgtr.h" #include "xflens/cxxlapack/interface/upmtr.h" #include "xflens/cxxlapack/interface/zsum1.h" #endif // CXXLAPACK_INTERFACE_INTERFACE_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/interface.tcc000066400000000000000000000657211456314707100255310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_INTERFACE_TCC #define CXXLAPACK_INTERFACE_INTERFACE_TCC 1 #include "xflens/cxxlapack/interface/bbcsd.tcc" #include "xflens/cxxlapack/interface/bdsdc.tcc" #include "xflens/cxxlapack/interface/bdsqr.tcc" #include "xflens/cxxlapack/interface/cgesv.tcc" #include "xflens/cxxlapack/interface/chla_transtype.tcc" #include "xflens/cxxlapack/interface/cposv.tcc" #include "xflens/cxxlapack/interface/disna.tcc" #include "xflens/cxxlapack/interface/dspcon.tcc" #include "xflens/cxxlapack/interface/gbbrd.tcc" #include "xflens/cxxlapack/interface/gbcon.tcc" #include "xflens/cxxlapack/interface/gbequb.tcc" #include "xflens/cxxlapack/interface/gbequ.tcc" #include "xflens/cxxlapack/interface/gbrfs.tcc" #include "xflens/cxxlapack/interface/gbsv.tcc" #include "xflens/cxxlapack/interface/gbsvx.tcc" #include "xflens/cxxlapack/interface/gbtf2.tcc" #include "xflens/cxxlapack/interface/gbtrf.tcc" #include "xflens/cxxlapack/interface/gbtrs.tcc" #include "xflens/cxxlapack/interface/gebak.tcc" #include "xflens/cxxlapack/interface/gebal.tcc" #include "xflens/cxxlapack/interface/gebd2.tcc" #include "xflens/cxxlapack/interface/gebrd.tcc" #include "xflens/cxxlapack/interface/gecon.tcc" #include "xflens/cxxlapack/interface/geequb.tcc" #include "xflens/cxxlapack/interface/geequ.tcc" #include "xflens/cxxlapack/interface/gees.tcc" #include "xflens/cxxlapack/interface/geesx.tcc" #include "xflens/cxxlapack/interface/geev.tcc" #include "xflens/cxxlapack/interface/geevx.tcc" #include "xflens/cxxlapack/interface/gegs.tcc" #include "xflens/cxxlapack/interface/gegv.tcc" #include "xflens/cxxlapack/interface/gehd2.tcc" #include "xflens/cxxlapack/interface/gehrd.tcc" #include "xflens/cxxlapack/interface/gejsv.tcc" #include "xflens/cxxlapack/interface/gelq2.tcc" #include "xflens/cxxlapack/interface/gelqf.tcc" #include "xflens/cxxlapack/interface/gelsd.tcc" #include "xflens/cxxlapack/interface/gels.tcc" #include "xflens/cxxlapack/interface/gelss.tcc" #include "xflens/cxxlapack/interface/gelsx.tcc" #include "xflens/cxxlapack/interface/gelsy.tcc" #include "xflens/cxxlapack/interface/geql2.tcc" #include "xflens/cxxlapack/interface/geqlf.tcc" #include "xflens/cxxlapack/interface/geqp3.tcc" #include "xflens/cxxlapack/interface/geqpf.tcc" #include "xflens/cxxlapack/interface/geqr2.tcc" #include "xflens/cxxlapack/interface/geqr2p.tcc" #include "xflens/cxxlapack/interface/geqrf.tcc" #include "xflens/cxxlapack/interface/geqrfp.tcc" #include "xflens/cxxlapack/interface/gerfs.tcc" #include "xflens/cxxlapack/interface/gerq2.tcc" #include "xflens/cxxlapack/interface/gerqf.tcc" #include "xflens/cxxlapack/interface/gesc2.tcc" #include "xflens/cxxlapack/interface/gesdd.tcc" #include "xflens/cxxlapack/interface/gesvd.tcc" #include "xflens/cxxlapack/interface/gesv.tcc" #include "xflens/cxxlapack/interface/gesvj.tcc" #include "xflens/cxxlapack/interface/gesvx.tcc" #include "xflens/cxxlapack/interface/getc2.tcc" #include "xflens/cxxlapack/interface/getf2.tcc" #include "xflens/cxxlapack/interface/getrf.tcc" #include "xflens/cxxlapack/interface/getri.tcc" #include "xflens/cxxlapack/interface/getrs.tcc" #include "xflens/cxxlapack/interface/ggbak.tcc" #include "xflens/cxxlapack/interface/ggbal.tcc" #include "xflens/cxxlapack/interface/gges.tcc" #include "xflens/cxxlapack/interface/ggesx.tcc" #include "xflens/cxxlapack/interface/ggev.tcc" #include "xflens/cxxlapack/interface/ggevx.tcc" #include "xflens/cxxlapack/interface/ggglm.tcc" #include "xflens/cxxlapack/interface/gghrd.tcc" #include "xflens/cxxlapack/interface/gglse.tcc" #include "xflens/cxxlapack/interface/ggqrf.tcc" #include "xflens/cxxlapack/interface/ggrqf.tcc" #include "xflens/cxxlapack/interface/ggsvd.tcc" #include "xflens/cxxlapack/interface/ggsvp.tcc" #include "xflens/cxxlapack/interface/gsvj0.tcc" #include "xflens/cxxlapack/interface/gsvj1.tcc" #include "xflens/cxxlapack/interface/gtcon.tcc" #include "xflens/cxxlapack/interface/gtrfs.tcc" #include "xflens/cxxlapack/interface/gtsv.tcc" #include "xflens/cxxlapack/interface/gtsvx.tcc" #include "xflens/cxxlapack/interface/gttrf.tcc" #include "xflens/cxxlapack/interface/gttrs.tcc" #include "xflens/cxxlapack/interface/gtts2.tcc" #include "xflens/cxxlapack/interface/hbevd.tcc" #include "xflens/cxxlapack/interface/hbev.tcc" #include "xflens/cxxlapack/interface/hbevx.tcc" #include "xflens/cxxlapack/interface/hbgst.tcc" #include "xflens/cxxlapack/interface/hbgvd.tcc" #include "xflens/cxxlapack/interface/hbgv.tcc" #include "xflens/cxxlapack/interface/hbgvx.tcc" #include "xflens/cxxlapack/interface/hbtrd.tcc" #include "xflens/cxxlapack/interface/hecon.tcc" #include "xflens/cxxlapack/interface/heequb.tcc" #include "xflens/cxxlapack/interface/heevd.tcc" #include "xflens/cxxlapack/interface/heev.tcc" #include "xflens/cxxlapack/interface/heevr.tcc" #include "xflens/cxxlapack/interface/heevx.tcc" #include "xflens/cxxlapack/interface/hegs2.tcc" #include "xflens/cxxlapack/interface/hegst.tcc" #include "xflens/cxxlapack/interface/hegvd.tcc" #include "xflens/cxxlapack/interface/hegv.tcc" #include "xflens/cxxlapack/interface/hegvx.tcc" #include "xflens/cxxlapack/interface/herfs.tcc" #include "xflens/cxxlapack/interface/hesv.tcc" #include "xflens/cxxlapack/interface/hesvx.tcc" #include "xflens/cxxlapack/interface/heswapr.tcc" #include "xflens/cxxlapack/interface/hetd2.tcc" #include "xflens/cxxlapack/interface/hetf2.tcc" #include "xflens/cxxlapack/interface/hetrd.tcc" #include "xflens/cxxlapack/interface/hetrf.tcc" #include "xflens/cxxlapack/interface/hetri2.tcc" #include "xflens/cxxlapack/interface/hetri2x.tcc" #include "xflens/cxxlapack/interface/hetri.tcc" #include "xflens/cxxlapack/interface/hetrs2.tcc" #include "xflens/cxxlapack/interface/hetrs.tcc" #include "xflens/cxxlapack/interface/hfrk.tcc" #include "xflens/cxxlapack/interface/hgeqz.tcc" #include "xflens/cxxlapack/interface/hpcon.tcc" #include "xflens/cxxlapack/interface/hpevd.tcc" #include "xflens/cxxlapack/interface/hpev.tcc" #include "xflens/cxxlapack/interface/hpevx.tcc" #include "xflens/cxxlapack/interface/hpgst.tcc" #include "xflens/cxxlapack/interface/hpgvd.tcc" #include "xflens/cxxlapack/interface/hpgv.tcc" #include "xflens/cxxlapack/interface/hpgvx.tcc" #include "xflens/cxxlapack/interface/hprfs.tcc" #include "xflens/cxxlapack/interface/hpsv.tcc" #include "xflens/cxxlapack/interface/hpsvx.tcc" #include "xflens/cxxlapack/interface/hptrd.tcc" #include "xflens/cxxlapack/interface/hptrf.tcc" #include "xflens/cxxlapack/interface/hptri.tcc" #include "xflens/cxxlapack/interface/hptrs.tcc" #include "xflens/cxxlapack/interface/hsein.tcc" #include "xflens/cxxlapack/interface/hseqr.tcc" #include "xflens/cxxlapack/interface/ieeeck.tcc" #include "xflens/cxxlapack/interface/ilalc.tcc" #include "xflens/cxxlapack/interface/ilalr.tcc" #include "xflens/cxxlapack/interface/laprec.tcc" #include "xflens/cxxlapack/interface/ilaslc.tcc" #include "xflens/cxxlapack/interface/ilaslr.tcc" #include "xflens/cxxlapack/interface/latrans.tcc" #include "xflens/cxxlapack/interface/lauplo.tcc" #include "xflens/cxxlapack/interface/ilaver.tcc" #include "xflens/cxxlapack/interface/ilazlc.tcc" #include "xflens/cxxlapack/interface/ilazlr.tcc" #include "xflens/cxxlapack/interface/isnan.tcc" #include "xflens/cxxlapack/interface/izmax1.tcc" #include "xflens/cxxlapack/interface/labad.tcc" #include "xflens/cxxlapack/interface/labrd.tcc" #include "xflens/cxxlapack/interface/lacgv.tcc" #include "xflens/cxxlapack/interface/lacn2.tcc" #include "xflens/cxxlapack/interface/lacon.tcc" #include "xflens/cxxlapack/interface/lacp2.tcc" #include "xflens/cxxlapack/interface/lacpy.tcc" #include "xflens/cxxlapack/interface/lacrm.tcc" #include "xflens/cxxlapack/interface/lacrt.tcc" #include "xflens/cxxlapack/interface/ladiv.tcc" #include "xflens/cxxlapack/interface/lae2.tcc" #include "xflens/cxxlapack/interface/laebz.tcc" #include "xflens/cxxlapack/interface/laed0.tcc" #include "xflens/cxxlapack/interface/laed1.tcc" #include "xflens/cxxlapack/interface/laed2.tcc" #include "xflens/cxxlapack/interface/laed3.tcc" #include "xflens/cxxlapack/interface/laed4.tcc" #include "xflens/cxxlapack/interface/laed5.tcc" #include "xflens/cxxlapack/interface/laed6.tcc" #include "xflens/cxxlapack/interface/laed7.tcc" #include "xflens/cxxlapack/interface/laed8.tcc" #include "xflens/cxxlapack/interface/laed9.tcc" #include "xflens/cxxlapack/interface/laeda.tcc" #include "xflens/cxxlapack/interface/laein.tcc" #include "xflens/cxxlapack/interface/laesy.tcc" #include "xflens/cxxlapack/interface/laev2.tcc" #include "xflens/cxxlapack/interface/laexc.tcc" #include "xflens/cxxlapack/interface/lag2c.tcc" #include "xflens/cxxlapack/interface/lag2d.tcc" #include "xflens/cxxlapack/interface/lag2.tcc" #include "xflens/cxxlapack/interface/lag2s.tcc" #include "xflens/cxxlapack/interface/lag2z.tcc" #include "xflens/cxxlapack/interface/la_gbamv.tcc" #include "xflens/cxxlapack/interface/la_gbrcond_c.tcc" #include "xflens/cxxlapack/interface/la_gbrcond.tcc" #include "xflens/cxxlapack/interface/la_gbrcond_x.tcc" #include "xflens/cxxlapack/interface/la_gbrpvgrw.tcc" #include "xflens/cxxlapack/interface/la_geamv.tcc" #include "xflens/cxxlapack/interface/la_gercond_c.tcc" #include "xflens/cxxlapack/interface/la_gercond.tcc" #include "xflens/cxxlapack/interface/la_gercond_x.tcc" #include "xflens/cxxlapack/interface/lags2.tcc" #include "xflens/cxxlapack/interface/lagtf.tcc" #include "xflens/cxxlapack/interface/lagtm.tcc" #include "xflens/cxxlapack/interface/lagts.tcc" #include "xflens/cxxlapack/interface/lagv2.tcc" #include "xflens/cxxlapack/interface/lahef.tcc" #include "xflens/cxxlapack/interface/la_heramv.tcc" #include "xflens/cxxlapack/interface/la_hercond_c.tcc" #include "xflens/cxxlapack/interface/la_hercond_x.tcc" #include "xflens/cxxlapack/interface/la_herpvgrw.tcc" #include "xflens/cxxlapack/interface/lahqr.tcc" #include "xflens/cxxlapack/interface/lahr2.tcc" #include "xflens/cxxlapack/interface/lahrd.tcc" #include "xflens/cxxlapack/interface/laic1.tcc" #include "xflens/cxxlapack/interface/laisnan.tcc" #include "xflens/cxxlapack/interface/la_lin_berr.tcc" #include "xflens/cxxlapack/interface/laln2.tcc" #include "xflens/cxxlapack/interface/lals0.tcc" #include "xflens/cxxlapack/interface/lalsa.tcc" #include "xflens/cxxlapack/interface/lalsd.tcc" #include "xflens/cxxlapack/interface/lamch.tcc" #include "xflens/cxxlapack/interface/lamrg.tcc" #include "xflens/cxxlapack/interface/laneg.tcc" #include "xflens/cxxlapack/interface/langb.tcc" #include "xflens/cxxlapack/interface/lange.tcc" #include "xflens/cxxlapack/interface/langt.tcc" #include "xflens/cxxlapack/interface/lanhb.tcc" #include "xflens/cxxlapack/interface/lanhe.tcc" #include "xflens/cxxlapack/interface/lanhf.tcc" #include "xflens/cxxlapack/interface/lanhp.tcc" #include "xflens/cxxlapack/interface/lanhs.tcc" #include "xflens/cxxlapack/interface/lanht.tcc" #include "xflens/cxxlapack/interface/lansb.tcc" #include "xflens/cxxlapack/interface/lansf.tcc" #include "xflens/cxxlapack/interface/lansp.tcc" #include "xflens/cxxlapack/interface/lanst.tcc" #include "xflens/cxxlapack/interface/lansy.tcc" #include "xflens/cxxlapack/interface/lantb.tcc" #include "xflens/cxxlapack/interface/lantp.tcc" #include "xflens/cxxlapack/interface/lantr.tcc" #include "xflens/cxxlapack/interface/lanv2.tcc" #include "xflens/cxxlapack/interface/lapll.tcc" #include "xflens/cxxlapack/interface/lapmr.tcc" #include "xflens/cxxlapack/interface/lapmt.tcc" #include "xflens/cxxlapack/interface/la_porcond_c.tcc" #include "xflens/cxxlapack/interface/la_porcond.tcc" #include "xflens/cxxlapack/interface/la_porcond_x.tcc" #include "xflens/cxxlapack/interface/la_porpvgrw.tcc" #include "xflens/cxxlapack/interface/lapy2.tcc" #include "xflens/cxxlapack/interface/lapy3.tcc" #include "xflens/cxxlapack/interface/laqgb.tcc" #include "xflens/cxxlapack/interface/laqge.tcc" #include "xflens/cxxlapack/interface/laqhb.tcc" #include "xflens/cxxlapack/interface/laqhe.tcc" #include "xflens/cxxlapack/interface/laqhp.tcc" #include "xflens/cxxlapack/interface/laqp2.tcc" #include "xflens/cxxlapack/interface/laqps.tcc" #include "xflens/cxxlapack/interface/laqr0.tcc" #include "xflens/cxxlapack/interface/laqr1.tcc" #include "xflens/cxxlapack/interface/laqr2.tcc" #include "xflens/cxxlapack/interface/laqr3.tcc" #include "xflens/cxxlapack/interface/laqr4.tcc" #include "xflens/cxxlapack/interface/laqr5.tcc" #include "xflens/cxxlapack/interface/laqsb.tcc" #include "xflens/cxxlapack/interface/laqsp.tcc" #include "xflens/cxxlapack/interface/laqsy.tcc" #include "xflens/cxxlapack/interface/laqtr.tcc" #include "xflens/cxxlapack/interface/lar1v.tcc" #include "xflens/cxxlapack/interface/lar2v.tcc" #include "xflens/cxxlapack/interface/larcm.tcc" #include "xflens/cxxlapack/interface/larfb.tcc" #include "xflens/cxxlapack/interface/larfg.tcc" #include "xflens/cxxlapack/interface/larfgp.tcc" #include "xflens/cxxlapack/interface/larf.tcc" #include "xflens/cxxlapack/interface/larft.tcc" #include "xflens/cxxlapack/interface/larfx.tcc" #include "xflens/cxxlapack/interface/largv.tcc" #include "xflens/cxxlapack/interface/larnv.tcc" #include "xflens/cxxlapack/interface/la_rpvgrw.tcc" #include "xflens/cxxlapack/interface/larra.tcc" #include "xflens/cxxlapack/interface/larrb.tcc" #include "xflens/cxxlapack/interface/larrc.tcc" #include "xflens/cxxlapack/interface/larrd.tcc" #include "xflens/cxxlapack/interface/larre.tcc" #include "xflens/cxxlapack/interface/larrf.tcc" #include "xflens/cxxlapack/interface/larrj.tcc" #include "xflens/cxxlapack/interface/larrk.tcc" #include "xflens/cxxlapack/interface/larrr.tcc" #include "xflens/cxxlapack/interface/larrv.tcc" #include "xflens/cxxlapack/interface/larscl2.tcc" #include "xflens/cxxlapack/interface/lartg.tcc" #include "xflens/cxxlapack/interface/lartgp.tcc" #include "xflens/cxxlapack/interface/lartgs.tcc" #include "xflens/cxxlapack/interface/lartv.tcc" #include "xflens/cxxlapack/interface/laruv.tcc" #include "xflens/cxxlapack/interface/larzb.tcc" #include "xflens/cxxlapack/interface/larz.tcc" #include "xflens/cxxlapack/interface/larzt.tcc" #include "xflens/cxxlapack/interface/las2.tcc" #include "xflens/cxxlapack/interface/lascl2.tcc" #include "xflens/cxxlapack/interface/lascl.tcc" #include "xflens/cxxlapack/interface/lasd0.tcc" #include "xflens/cxxlapack/interface/lasd1.tcc" #include "xflens/cxxlapack/interface/lasd2.tcc" #include "xflens/cxxlapack/interface/lasd3.tcc" #include "xflens/cxxlapack/interface/lasd4.tcc" #include "xflens/cxxlapack/interface/lasd5.tcc" #include "xflens/cxxlapack/interface/lasd6.tcc" #include "xflens/cxxlapack/interface/lasd7.tcc" #include "xflens/cxxlapack/interface/lasd8.tcc" #include "xflens/cxxlapack/interface/lasda.tcc" #include "xflens/cxxlapack/interface/lasdq.tcc" #include "xflens/cxxlapack/interface/lasdt.tcc" #include "xflens/cxxlapack/interface/laset.tcc" #include "xflens/cxxlapack/interface/lasq1.tcc" #include "xflens/cxxlapack/interface/lasq2.tcc" #include "xflens/cxxlapack/interface/lasq3.tcc" #include "xflens/cxxlapack/interface/lasq4.tcc" #include "xflens/cxxlapack/interface/lasq5.tcc" #include "xflens/cxxlapack/interface/lasq6.tcc" #include "xflens/cxxlapack/interface/lasr.tcc" #include "xflens/cxxlapack/interface/lasrt.tcc" #include "xflens/cxxlapack/interface/lassq.tcc" #include "xflens/cxxlapack/interface/lasv2.tcc" #include "xflens/cxxlapack/interface/laswp.tcc" #include "xflens/cxxlapack/interface/lasy2.tcc" #include "xflens/cxxlapack/interface/la_syamv.tcc" #include "xflens/cxxlapack/interface/lasyf.tcc" #include "xflens/cxxlapack/interface/la_syrcond_c.tcc" #include "xflens/cxxlapack/interface/la_syrcond.tcc" #include "xflens/cxxlapack/interface/la_syrcond_x.tcc" #include "xflens/cxxlapack/interface/la_syrpvgrw.tcc" #include "xflens/cxxlapack/interface/lat2c.tcc" #include "xflens/cxxlapack/interface/lat2s.tcc" #include "xflens/cxxlapack/interface/latbs.tcc" #include "xflens/cxxlapack/interface/latdf.tcc" #include "xflens/cxxlapack/interface/latps.tcc" #include "xflens/cxxlapack/interface/latrd.tcc" #include "xflens/cxxlapack/interface/latrs.tcc" #include "xflens/cxxlapack/interface/latrz.tcc" #include "xflens/cxxlapack/interface/latzm.tcc" #include "xflens/cxxlapack/interface/lauu2.tcc" #include "xflens/cxxlapack/interface/lauum.tcc" #include "xflens/cxxlapack/interface/la_wwaddw.tcc" #include "xflens/cxxlapack/interface/lsame.tcc" #include "xflens/cxxlapack/interface/lsamen.tcc" #include "xflens/cxxlapack/interface/opgtr.tcc" #include "xflens/cxxlapack/interface/opmtr.tcc" #include "xflens/cxxlapack/interface/orbdb.tcc" #include "xflens/cxxlapack/interface/orcsd.tcc" #include "xflens/cxxlapack/interface/org2l.tcc" #include "xflens/cxxlapack/interface/org2r.tcc" #include "xflens/cxxlapack/interface/orgbr.tcc" #include "xflens/cxxlapack/interface/orghr.tcc" #include "xflens/cxxlapack/interface/orgl2.tcc" #include "xflens/cxxlapack/interface/orglq.tcc" #include "xflens/cxxlapack/interface/orgql.tcc" #include "xflens/cxxlapack/interface/orgqr.tcc" #include "xflens/cxxlapack/interface/orgr2.tcc" #include "xflens/cxxlapack/interface/orgrq.tcc" #include "xflens/cxxlapack/interface/orgtr.tcc" #include "xflens/cxxlapack/interface/orm2l.tcc" #include "xflens/cxxlapack/interface/orm2r.tcc" #include "xflens/cxxlapack/interface/ormbr.tcc" #include "xflens/cxxlapack/interface/ormhr.tcc" #include "xflens/cxxlapack/interface/orml2.tcc" #include "xflens/cxxlapack/interface/ormlq.tcc" #include "xflens/cxxlapack/interface/ormql.tcc" #include "xflens/cxxlapack/interface/ormqr.tcc" #include "xflens/cxxlapack/interface/ormr2.tcc" #include "xflens/cxxlapack/interface/ormr3.tcc" #include "xflens/cxxlapack/interface/ormrq.tcc" #include "xflens/cxxlapack/interface/ormrz.tcc" #include "xflens/cxxlapack/interface/ormtr.tcc" #include "xflens/cxxlapack/interface/pbcon.tcc" #include "xflens/cxxlapack/interface/pbequ.tcc" #include "xflens/cxxlapack/interface/pbrfs.tcc" #include "xflens/cxxlapack/interface/pbstf.tcc" #include "xflens/cxxlapack/interface/pbsv.tcc" #include "xflens/cxxlapack/interface/pbsvx.tcc" #include "xflens/cxxlapack/interface/pbtf2.tcc" #include "xflens/cxxlapack/interface/pbtrf.tcc" #include "xflens/cxxlapack/interface/pbtrs.tcc" #include "xflens/cxxlapack/interface/pftrf.tcc" #include "xflens/cxxlapack/interface/pftri.tcc" #include "xflens/cxxlapack/interface/pftrs.tcc" #include "xflens/cxxlapack/interface/pocon.tcc" #include "xflens/cxxlapack/interface/poequb.tcc" #include "xflens/cxxlapack/interface/poequ.tcc" #include "xflens/cxxlapack/interface/porfs.tcc" #include "xflens/cxxlapack/interface/posv.tcc" #include "xflens/cxxlapack/interface/posvx.tcc" #include "xflens/cxxlapack/interface/potf2.tcc" #include "xflens/cxxlapack/interface/potrf.tcc" #include "xflens/cxxlapack/interface/potri.tcc" #include "xflens/cxxlapack/interface/potrs.tcc" #include "xflens/cxxlapack/interface/ppcon.tcc" #include "xflens/cxxlapack/interface/ppequ.tcc" #include "xflens/cxxlapack/interface/pprfs.tcc" #include "xflens/cxxlapack/interface/ppsv.tcc" #include "xflens/cxxlapack/interface/ppsvx.tcc" #include "xflens/cxxlapack/interface/pptrf.tcc" #include "xflens/cxxlapack/interface/pptri.tcc" #include "xflens/cxxlapack/interface/pptrs.tcc" #include "xflens/cxxlapack/interface/pstf2.tcc" #include "xflens/cxxlapack/interface/pstrf.tcc" #include "xflens/cxxlapack/interface/ptcon.tcc" #include "xflens/cxxlapack/interface/pteqr.tcc" #include "xflens/cxxlapack/interface/ptrfs.tcc" #include "xflens/cxxlapack/interface/ptsv.tcc" #include "xflens/cxxlapack/interface/ptsvx.tcc" #include "xflens/cxxlapack/interface/pttrf.tcc" #include "xflens/cxxlapack/interface/pttrs.tcc" #include "xflens/cxxlapack/interface/ptts2.tcc" #include "xflens/cxxlapack/interface/rot.tcc" #include "xflens/cxxlapack/interface/rscl.tcc" #include "xflens/cxxlapack/interface/sbevd.tcc" #include "xflens/cxxlapack/interface/sbev.tcc" #include "xflens/cxxlapack/interface/sbevx.tcc" #include "xflens/cxxlapack/interface/sbgst.tcc" #include "xflens/cxxlapack/interface/sbgvd.tcc" #include "xflens/cxxlapack/interface/sbgv.tcc" #include "xflens/cxxlapack/interface/sbgvx.tcc" #include "xflens/cxxlapack/interface/sbtrd.tcc" #include "xflens/cxxlapack/interface/sfrk.tcc" #include "xflens/cxxlapack/interface/sgesv.tcc" #include "xflens/cxxlapack/interface/spevd.tcc" #include "xflens/cxxlapack/interface/spev.tcc" #include "xflens/cxxlapack/interface/spevx.tcc" #include "xflens/cxxlapack/interface/spgst.tcc" #include "xflens/cxxlapack/interface/spgvd.tcc" #include "xflens/cxxlapack/interface/spgv.tcc" #include "xflens/cxxlapack/interface/spgvx.tcc" #include "xflens/cxxlapack/interface/spmv.tcc" #include "xflens/cxxlapack/interface/sposv.tcc" #include "xflens/cxxlapack/interface/sprfs.tcc" #include "xflens/cxxlapack/interface/spr.tcc" #include "xflens/cxxlapack/interface/spsv.tcc" #include "xflens/cxxlapack/interface/spsvx.tcc" #include "xflens/cxxlapack/interface/sptrd.tcc" #include "xflens/cxxlapack/interface/sptrf.tcc" #include "xflens/cxxlapack/interface/sptri.tcc" #include "xflens/cxxlapack/interface/sptrs.tcc" #include "xflens/cxxlapack/interface/stebz.tcc" #include "xflens/cxxlapack/interface/stedc.tcc" #include "xflens/cxxlapack/interface/stegr.tcc" #include "xflens/cxxlapack/interface/stein.tcc" #include "xflens/cxxlapack/interface/stemr.tcc" #include "xflens/cxxlapack/interface/steqr.tcc" #include "xflens/cxxlapack/interface/sterf.tcc" #include "xflens/cxxlapack/interface/stevd.tcc" #include "xflens/cxxlapack/interface/stev.tcc" #include "xflens/cxxlapack/interface/stevr.tcc" #include "xflens/cxxlapack/interface/stevx.tcc" #include "xflens/cxxlapack/interface/sycon.tcc" #include "xflens/cxxlapack/interface/syconv.tcc" #include "xflens/cxxlapack/interface/syequb.tcc" #include "xflens/cxxlapack/interface/syevd.tcc" #include "xflens/cxxlapack/interface/syev.tcc" #include "xflens/cxxlapack/interface/syevr.tcc" #include "xflens/cxxlapack/interface/syevx.tcc" #include "xflens/cxxlapack/interface/sygs2.tcc" #include "xflens/cxxlapack/interface/sygst.tcc" #include "xflens/cxxlapack/interface/sygvd.tcc" #include "xflens/cxxlapack/interface/sygv.tcc" #include "xflens/cxxlapack/interface/sygvx.tcc" #include "xflens/cxxlapack/interface/symv.tcc" #include "xflens/cxxlapack/interface/syrfs.tcc" #include "xflens/cxxlapack/interface/syr.tcc" #include "xflens/cxxlapack/interface/sysv.tcc" #include "xflens/cxxlapack/interface/sysvx.tcc" #include "xflens/cxxlapack/interface/syswapr.tcc" #include "xflens/cxxlapack/interface/sytd2.tcc" #include "xflens/cxxlapack/interface/sytf2.tcc" #include "xflens/cxxlapack/interface/sytrd.tcc" #include "xflens/cxxlapack/interface/sytrf.tcc" #include "xflens/cxxlapack/interface/sytri2.tcc" #include "xflens/cxxlapack/interface/sytri2x.tcc" #include "xflens/cxxlapack/interface/sytri.tcc" #include "xflens/cxxlapack/interface/sytrs2.tcc" #include "xflens/cxxlapack/interface/sytrs.tcc" #include "xflens/cxxlapack/interface/tbcon.tcc" #include "xflens/cxxlapack/interface/tbrfs.tcc" #include "xflens/cxxlapack/interface/tbtrs.tcc" #include "xflens/cxxlapack/interface/tfsm.tcc" #include "xflens/cxxlapack/interface/tftri.tcc" #include "xflens/cxxlapack/interface/tfttp.tcc" #include "xflens/cxxlapack/interface/tfttr.tcc" #include "xflens/cxxlapack/interface/tgevc.tcc" #include "xflens/cxxlapack/interface/tgex2.tcc" #include "xflens/cxxlapack/interface/tgexc.tcc" #include "xflens/cxxlapack/interface/tgsen.tcc" #include "xflens/cxxlapack/interface/tgsja.tcc" #include "xflens/cxxlapack/interface/tgsna.tcc" #include "xflens/cxxlapack/interface/tgsy2.tcc" #include "xflens/cxxlapack/interface/tgsyl.tcc" #include "xflens/cxxlapack/interface/tpcon.tcc" #include "xflens/cxxlapack/interface/tprfs.tcc" #include "xflens/cxxlapack/interface/tptri.tcc" #include "xflens/cxxlapack/interface/tptrs.tcc" #include "xflens/cxxlapack/interface/tpttf.tcc" #include "xflens/cxxlapack/interface/tpttr.tcc" #include "xflens/cxxlapack/interface/trcon.tcc" #include "xflens/cxxlapack/interface/trevc.tcc" #include "xflens/cxxlapack/interface/trexc.tcc" #include "xflens/cxxlapack/interface/trrfs.tcc" #include "xflens/cxxlapack/interface/trsen.tcc" #include "xflens/cxxlapack/interface/trsna.tcc" #include "xflens/cxxlapack/interface/trsyl.tcc" #include "xflens/cxxlapack/interface/trti2.tcc" #include "xflens/cxxlapack/interface/trtri.tcc" #include "xflens/cxxlapack/interface/trtrs.tcc" #include "xflens/cxxlapack/interface/trttf.tcc" #include "xflens/cxxlapack/interface/trttp.tcc" #include "xflens/cxxlapack/interface/tzrqf.tcc" #include "xflens/cxxlapack/interface/tzrzf.tcc" #include "xflens/cxxlapack/interface/unbdb.tcc" #include "xflens/cxxlapack/interface/uncsd.tcc" #include "xflens/cxxlapack/interface/ung2l.tcc" #include "xflens/cxxlapack/interface/ung2r.tcc" #include "xflens/cxxlapack/interface/ungbr.tcc" #include "xflens/cxxlapack/interface/unghr.tcc" #include "xflens/cxxlapack/interface/ungl2.tcc" #include "xflens/cxxlapack/interface/unglq.tcc" #include "xflens/cxxlapack/interface/ungql.tcc" #include "xflens/cxxlapack/interface/ungqr.tcc" #include "xflens/cxxlapack/interface/ungr2.tcc" #include "xflens/cxxlapack/interface/ungrq.tcc" #include "xflens/cxxlapack/interface/ungtr.tcc" #include "xflens/cxxlapack/interface/unm2l.tcc" #include "xflens/cxxlapack/interface/unm2r.tcc" #include "xflens/cxxlapack/interface/unmbr.tcc" #include "xflens/cxxlapack/interface/unmhr.tcc" #include "xflens/cxxlapack/interface/unml2.tcc" #include "xflens/cxxlapack/interface/unmlq.tcc" #include "xflens/cxxlapack/interface/unmql.tcc" #include "xflens/cxxlapack/interface/unmqr.tcc" #include "xflens/cxxlapack/interface/unmr2.tcc" #include "xflens/cxxlapack/interface/unmr3.tcc" #include "xflens/cxxlapack/interface/unmrq.tcc" #include "xflens/cxxlapack/interface/unmrz.tcc" #include "xflens/cxxlapack/interface/unmtr.tcc" #include "xflens/cxxlapack/interface/upgtr.tcc" #include "xflens/cxxlapack/interface/upmtr.tcc" #include "xflens/cxxlapack/interface/zsum1.tcc" #endif // CXXLAPACK_INTERFACE_INTERFACE_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/isnan.h000066400000000000000000000035741456314707100243550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ISNAN_H #define CXXLAPACK_INTERFACE_ISNAN_H 1 #include namespace cxxlapack { template bool isnan(float sin); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ISNAN_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/isnan.tcc000066400000000000000000000040571456314707100246740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ISNAN_TCC #define CXXLAPACK_INTERFACE_ISNAN_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template bool isnan(float sin) { CXXLAPACK_DEBUG_OUT("sisnan"); return LAPACK_IMPL(sisnan)(&sin); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ISNAN_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/izmax1.h000066400000000000000000000037511456314707100244530ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_IZMAX1_H #define CXXLAPACK_INTERFACE_IZMAX1_H 1 #include namespace cxxlapack { template IndexType ismax1(IndexType n, const std::complex *cx, IndexType incx); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_IZMAX1_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/izmax1.tcc000066400000000000000000000043661456314707100250000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_IZMAX1_TCC #define CXXLAPACK_INTERFACE_IZMAX1_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ismax1(IndexType n, const std::complex *cx, IndexType incx) { CXXLAPACK_DEBUG_OUT("ismax1"); return LAPACK_IMPL(ismax1)(&n, reinterpret_cast(cx), &incx); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_IZMAX1_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gbamv.h000066400000000000000000000102361456314707100250060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GBAMV_H #define CXXLAPACK_INTERFACE_LA_GBAMV_H 1 #include namespace cxxlapack { template void la_gbamv(IndexType trans, IndexType m, IndexType n, IndexType kl, IndexType ku, double alpha, const float *AB, IndexType ldAB, const float *x, IndexType incx, float beta, float *y, IndexType incy); template void la_gbamv(IndexType trans, IndexType m, IndexType n, IndexType kl, IndexType ku, double alpha, const double *AB, IndexType ldAB, const double *x, IndexType incx, double beta, double *y, IndexType incy); template void la_gbamv(IndexType trans, IndexType m, IndexType n, IndexType kl, IndexType ku, float alpha, const std::complex *AB, IndexType ldAB, const std::complex *x, IndexType incx, float beta, float *y, IndexType incy); template void la_gbamv(IndexType trans, IndexType m, IndexType n, IndexType kl, IndexType ku, double alpha, const std::complex *AB, IndexType ldAB, const std::complex *x, IndexType incx, double beta, double *y, IndexType incy); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GBAMV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gbamv.tcc000066400000000000000000000137611456314707100253360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GBAMV_TCC #define CXXLAPACK_INTERFACE_LA_GBAMV_TCC #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void la_gbamv(IndexType trans, IndexType m, IndexType n, IndexType kl, IndexType ku, float alpha, const float *AB, IndexType ldAB, const float *x, IndexType incx, float beta, float *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("sla_gbamv"); LAPACK_IMPL(sla_gbamv)(&trans, &m, &n, &kl, &ku, &alpha, AB, &ldAB, x, &incx, &beta, y, &incy); } template void la_gbamv(IndexType trans, IndexType m, IndexType n, IndexType kl, IndexType ku, double alpha, const double *AB, IndexType ldAB, const double *x, IndexType incx, double beta, double *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("dla_gbamv"); LAPACK_IMPL(dla_gbamv)(&trans, &m, &n, &kl, &ku, &alpha, AB, &ldAB, x, &incx, &beta, y, &incy); } template void la_gbamv(IndexType trans, IndexType m, IndexType n, IndexType kl, IndexType ku, float alpha, const std::complex *AB, IndexType ldAB, const std::complex *x, IndexType incx, float beta, float *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("cla_gbamv"); LAPACK_IMPL(cla_gbamv)(&trans, &m, &n, &kl, &ku, &alpha, reinterpret_cast(AB), &ldAB, reinterpret_cast(x), &incx, &beta, y, &incy); } template void la_gbamv(IndexType trans, IndexType m, IndexType n, IndexType kl, IndexType ku, double alpha, const std::complex *AB, IndexType ldAB, const std::complex *x, IndexType incx, double beta, double *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("zla_gbamv"); LAPACK_IMPL(zla_gbamv)(&trans, &m, &n, &kl, &ku, &alpha, reinterpret_cast(AB), &ldAB, reinterpret_cast(x), &incx, &beta, y, &incy); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GBAMV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gbrcond.h000066400000000000000000000061111456314707100253250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GBRCOND_H #define CXXLAPACK_INTERFACE_LA_GBRCOND_H 1 #include namespace cxxlapack { template float la_gbrCond(char trans, IndexType n, IndexType kl, IndexType ku, const float *Ab, IndexType ldAb, const float *Afb, IndexType ldAfb, const IndexType *iPiv, IndexType cmode, const float *c, IndexType &info, float *work, IndexType *iWork); template double la_gbrCond(char trans, IndexType n, IndexType kl, IndexType ku, const double *Ab, IndexType ldAb, const double *Afb, IndexType ldAfb, const IndexType *iPiv, IndexType cmode, const double *c, IndexType &info, double *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GBRCOND_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gbrcond.tcc000066400000000000000000000104451456314707100256540ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GBRCOND_TCC #define CXXLAPACK_INTERFACE_LA_GBRCOND_TCC #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_gbrCond(char trans, IndexType n, IndexType kl, IndexType ku, const float *Ab, IndexType ldAb, const float *Afb, IndexType ldAfb, const IndexType *iPiv, IndexType cmode, const float *c, IndexType &info, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("sla_gbrcond"); return LAPACK_IMPL(sla_gbrcond)(&trans, &n, &kl, &ku, Ab, &ldAb, Afb, &ldAfb, iPiv, &cmode, c, &info, work, iWork); } template double la_gbrCond(char trans, IndexType n, IndexType kl, IndexType ku, const double *Ab, IndexType ldAb, const double *Afb, IndexType ldAfb, const IndexType *iPiv, IndexType cmode, const double *c, IndexType &info, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dla_gbrcond"); return LAPACK_IMPL(dla_gbrcond)(&trans, &n, &kl, &ku, Ab, &ldAb, Afb, &ldAfb, iPiv, &cmode, c, &info, work, iWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GBRCOND_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gbrcond_c.h000066400000000000000000000064651456314707100256430ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GBR_COND_C_H #define CXXLAPACK_INTERFACE_LA_GBR_COND_C_H 1 #include namespace cxxlapack { template double la_gbrCond_c(char trans, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const IndexType *iPiv, const float *c, bool capply, IndexType &info, std::complex *work, float *rWork); template double la_gbrCond_c(char trans, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const IndexType *iPiv, const double *c, bool capply, IndexType &info, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GBR_COND_C_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gbrcond_c.tcc000066400000000000000000000115211456314707100261520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GBRCOND_C_TCC #define CXXLAPACK_INTERFACE_LA_GBRCOND_C_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_gbrCond_c(char trans, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const IndexType *iPiv, const float *c, bool capply, IndexType &info, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cla_gbrcond_c"); IndexType capply_ = capply; return LAPACK_IMPL(cla_gbrcond_c)(&trans, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Afb), &ldAfb, iPiv, c, &capply_, &info, reinterpret_cast(work), rWork); } template double la_gbrCond_c(char trans, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const IndexType *iPiv, const double *c, bool capply, IndexType &info, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zla_gbrcond_c"); IndexType capply_ = capply; return LAPACK_IMPL(zla_gbrcond_c)(&trans, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Afb), &ldAfb, iPiv, c, &capply_, &info, reinterpret_cast(work), rWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GBRCOND_C_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gbrcond_x.h000066400000000000000000000063131456314707100256600ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GBR_COND_X_H #define CXXLAPACK_INTERFACE_LA_GBR_COND_X_H 1 #include namespace cxxlapack { template double la_gbrCond_x(char trans, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, float *rWork); template double la_gbrCond_x(char trans, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GBR_COND_X_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gbrcond_x.tcc000066400000000000000000000112211456314707100261740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GBRCOND_X_TCC #define CXXLAPACK_INTERFACE_LA_GBRCOND_X_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_gbrCond_x(char trans, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cla_gbrcond_x"); return LAPACK_IMPL(cla_gbrcond_x)(&trans, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Afb), &ldAfb, iPiv, reinterpret_cast(x) &info, reinterpret_cast(work), rWork); } template double la_gbrCond_x(char trans, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zla_gbrcond_x"); return LAPACK_IMPL(zla_gbrcond_x)(&trans, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Afb), &ldAfb, iPiv, reinterpret_cast(x) &info, reinterpret_cast(work), rWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GBRCOND_X_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gbrpvgrw.h000066400000000000000000000067311456314707100255570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GBRPVGRW_H #define CXXLAPACK_INTERFACE_LA_GBRPVGRW_H #include namespace cxxlapack { template double la_gbrpvgrw(IndexType n, IndexType kl, IndexType ku, IndexType ncols, const float *Ab, IndexType ldAb, const float *Afb, IndexType ldAfb); template double la_gbrpvgrw(IndexType n, IndexType kl, IndexType ku, IndexType ncols, const double *Ab, IndexType ldAb, const double *Afb, IndexType ldAfb); template double la_gbrpvgrw(IndexType n, IndexType kl, IndexType ku, IndexType ncols, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb); template double la_gbrpvgrw(IndexType n, IndexType kl, IndexType ku, IndexType ncols, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GBRPVGRW_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gbrpvgrw.tcc000066400000000000000000000121101456314707100260650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GBRPVGRW_TCC #define CXXLAPACK_INTERFACE_LA_GBRPVGRW_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_gbrpvgrw(IndexType n, IndexType kl, IndexType ku, IndexType ncols, const float *Ab, IndexType ldAb, const float *Afb, IndexType ldAfb) { CXXLAPACK_DEBUG_OUT("sla_gbrpvgrw"); return LAPACK_IMPL(sla_gbrpvgrw)(&n, &kl, &ku, &ncols, Ab, &ldAb, Afb, &ldAfb); } template double la_gbrpvgrw(IndexType n, IndexType kl, IndexType ku, IndexType ncols, const double *Ab, IndexType ldAb, const double *Afb, IndexType ldAfb) { CXXLAPACK_DEBUG_OUT("dla_gbrpvgrw"); return LAPACK_IMPL(dla_gbrpvgrw)(&n, &kl, &ku, &ncols, Ab, &ldAb, Afb, &ldAfb); } template double la_gbrpvgrw(IndexType n, IndexType kl, IndexType ku, IndexType ncols, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb) { CXXLAPACK_DEBUG_OUT("cla_gbrpvgrw"); return LAPACK_IMPL(cla_gbrpvgrw)(&n, &kl, &ku, &ncols, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Afb), &ldAfb); } template double la_gbrpvgrw(IndexType n, IndexType kl, IndexType ku, IndexType ncols, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb) { CXXLAPACK_DEBUG_OUT("zla_gbrpvgrw"); return LAPACK_IMPL(zla_gbrpvgrw)(&n, &kl, &ku, &ncols, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Afb), &ldAfb); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GBRPVGRW_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_geamv.h000066400000000000000000000075621456314707100250210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GEAMV_H #define CXXLAPACK_INTERFACE_LA_GEAMV_H 1 #include namespace cxxlapack { template void la_geamv(char trans, IndexType m, IndexType n, float alpha, const float *A, IndexType ldA, const float *x, IndexType incx, float beta, float *y, IndexType incy); template void la_geamv(char trans, IndexType m, IndexType n, double alpha, const double *A, IndexType ldA, const double *x, IndexType incx, double beta, double *y, IndexType incy); template void la_geamv(char trans, IndexType m, IndexType n, float alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, float beta, float *y, IndexType incy); template void la_geamv(char trans, IndexType m, IndexType n, double alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, double beta, double *y, IndexType incy); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GEAMV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_geamv.tcc000066400000000000000000000127351456314707100253410ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GEAMV_TCC #define CXXLAPACK_INTERFACE_LA_GEAMV_TCC #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void la_geamv(char trans, IndexType m, IndexType n, float alpha, const float *A, IndexType ldA, const float *x, IndexType incx, float beta, float *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("sla_geamv"); LAPACK_IMPL(sla_geamv)(&trans, &m, &n, &alpha, A, &ldA, x, &incx, &beta, y, &incy); } template void la_geamv(char trans, IndexType m, IndexType n, double alpha, const double *A, IndexType ldA, const double *x, IndexType incx, double beta, double *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("dla_geamv"); LAPACK_IMPL(dla_geamv)(&trans, &m, &n, &alpha, A, &ldA, x, &incx, &beta, y, &incy); } template void la_geamv(char trans, IndexType m, IndexType n, float alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, float beta, float *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("cla_geamv"); LAPACK_IMPL(cla_geamv)(&trans, &m, &n, &alpha, reinterpret_cast(A), &ldA, reinterpret_cast(x), &incx, &beta, y, &incy); } template void la_geamv(char trans, IndexType m, IndexType n, double alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, double beta, double *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("zla_geamv"); LAPACK_IMPL(zla_geamv)(&trans, &m, &n, &alpha, reinterpret_cast(A), &ldA, reinterpret_cast(x), &incx, &beta, y, &incy); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GEAMV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gercond.h000066400000000000000000000056371456314707100253440ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GERCOND_H #define CXXLAPACK_INTERFACE_LA_GERCOND_H 1 #include namespace cxxlapack { template float la_gerCond(char trans, IndexType n, const float *A, IndexType ldA, const float *Af, IndexType ldAf, const IndexType *iPiv, IndexType cmode, const float *c, IndexType &info, float *work, IndexType *iWork); template double la_gerCond(char trans, IndexType n, const double *A, IndexType ldA, const double *Af, IndexType ldAf, const IndexType *iPiv, IndexType cmode, const double *c, IndexType &info, double *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GERCOND_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gercond.tcc000066400000000000000000000106111456314707100256520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GERCOND_TCC #define CXXLAPACK_INTERFACE_LA_GERCOND_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float la_gerCond(char trans, IndexType n, const float *A, IndexType ldA, const float *Af, IndexType ldAf, const IndexType *iPiv, IndexType cmode, const float *c, IndexType &info, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("sla_gercond"); float val = LAPACK_IMPL(sla_gercond)(&trans, &n, A, &ldA, Af, &ldAf, iPiv, &cmode, c, &info, work, iWork); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return val; } template double la_gerCond(char trans, IndexType n, const double *A, IndexType ldA, const double *Af, IndexType ldAf, const IndexType *iPiv, IndexType cmode, const double *c, IndexType &info, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dla_gercond"); double val = LAPACK_IMPL(dla_gercond)(&trans, &n, A, &ldA, Af, &ldAf, iPiv, &cmode, c, &info, work, iWork); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return val; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GERCOND_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gercond_c.h000066400000000000000000000061461456314707100256420ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GERCOND_C_H #define CXXLAPACK_INTERFACE_LA_GERCOND_C_H 1 #include namespace cxxlapack { template double la_gerCond_c(char trans, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const float *c, bool capply, IndexType &info, std::complex *work, float *rWork); template double la_gerCond_c(char trans, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const double *c, bool capply, IndexType &info, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GERCOND_C_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gercond_c.tcc000066400000000000000000000106331456314707100261600ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GERCOND_C_TCC #define CXXLAPACK_INTERFACE_LA_GERCOND_C_TCC #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_gerCond_c(char trans, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const float *c, bool capply, IndexType &info, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cla_gercond_c"); return LAPACK_IMPL(cla_gercond_c)(&trans, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af) &ldAf, iPiv, c, &capply, &info, reinterpret_cast(work), rWork); } template double la_gerCond_c(char trans, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const double *c, bool capply, IndexType &info, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zla_gercond_c"); return LAPACK_IMPL(zla_gercond_c)(&trans, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af) &ldAf, iPiv, c, &capply, &info, reinterpret_cast(work), rWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GERCOND_C_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gercond_x.h000066400000000000000000000057741456314707100256750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GERCOND_X_H #define CXXLAPACK_INTERFACE_LA_GERCOND_X_H 1 #include namespace cxxlapack { template double la_gerCond_x(char trans, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, float *rWork); template double la_gerCond_x(char trans, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GERCOND_X_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_gercond_x.tcc000066400000000000000000000104371456314707100262070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_GERCOND_X_TCC #define CXXLAPACK_INTERFACE_LA_GERCOND_X_TCC #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_gerCond_x(char trans, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cla_gercond_x"); return LAPACK_IMPL(cla_gercond_x)(&trans, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af) &ldAf, iPiv, reinterpret_cast(x), &info, reinterpret_cast(work), rWork); } template double la_gerCond_x(char trans, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zla_gercond_x"); return LAPACK_IMPL(zla_gercond_x)(&trans, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af) &ldAf, iPiv, reinterpret_cast(x), &info, reinterpret_cast(work), rWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_GERCOND_X_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_heramv.h000066400000000000000000000054521456314707100252000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_HEAMV_H #define CXXLAPACK_INTERFACE_LA_HEAMV_H 1 #include namespace cxxlapack { template void la_heamv(IndexType uplo, IndexType n, float alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, float beta, float *y, IndexType incy); template void la_heamv(IndexType uplo, IndexType n, double alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, double beta, double *y, IndexType incy); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_HEAMV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_heramv.tcc000066400000000000000000000077451456314707100255310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_HEAMV_TCC #define CXXLAPACK_INTERFACE_LA_HEAMV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void la_heamv(IndexType uplo, IndexType n, float alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, float beta, float *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("cla_heamv"); IndexType info; LAPACK_IMPL(cla_heamv)(&uplo, &n, &alpha, reinterpret_cast(A), &ldA, reinterpret_cast(x), &incx, &beta, y, &incy); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template void la_heamv(IndexType uplo, IndexType n, double alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, double beta, double *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("zla_heamv"); IndexType info; LAPACK_IMPL(zla_heamv)(&uplo, &n, &alpha, reinterpret_cast(A), &ldA, reinterpret_cast(x), &incx, &beta, y, &incy); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_HEAMV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_hercond_c.h000066400000000000000000000061441456314707100256410ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_HERCOND_X_H #define CXXLAPACK_INTERFACE_LA_HERCOND_X_H 1 #include namespace cxxlapack { template double la_herCond_c(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, IndexType *iPiv, float *c, bool capply, IndexType &info, std::complex *work, float *rWork); template double la_herCond_c(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, IndexType *iPiv, double *c, bool capply, IndexType &info, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_HERCOND_X_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_hercond_c.tcc000066400000000000000000000110671456314707100261630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_HERCOND_C_TCC #define CXXLAPACK_INTERFACE_LA_HERCOND_C_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_herCond_c(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, IndexType *iPiv, float *c, bool capply, IndexType &info, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cla_hercond_c"); IndexType capply_ = capply; return LAPACK_IMPL(cla_hercond_c)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, c, &capply_, &info, reinterpret_cast(work), rWork, rWork); } template double la_herCond_c(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, IndexType *iPiv, double *c, bool capply, IndexType &info, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zla_hercond_c"); IndexType capply_ = capply; return LAPACK_IMPL(zla_hercond_c)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, c, &capply_, &info, reinterpret_cast(work), rWork, rWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_HERCOND_C_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_hercond_x.h000066400000000000000000000057621456314707100256730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_HERCOND_X_H #define CXXLAPACK_INTERFACE_LA_HERCOND_X_H 1 #include namespace cxxlapack { template double la_herCond_x(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, float *rWork) ; template double la_herCond_x(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, double *rWork) ; } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_HERCOND_X_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_hercond_x.tcc000066400000000000000000000104371456314707100262100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_HERCOND_X_TCC #define CXXLAPACK_INTERFACE_LA_HERCOND_X_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_herCond_x(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cla_hercond_x"); return LAPACK_IMPL(cla_hercond_x)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, reinterpret_cast(x), &info, reinterpret_cast(work), rWork); } template double la_herCond_x(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zla_hercond_x"); return LAPACK_IMPL(zla_hercond_x)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, reinterpret_cast(x), &info, reinterpret_cast(work), rWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_HERCOND_X_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_herpvgrw.h000066400000000000000000000054041456314707100255570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_DUMMY_H #define CXXLAPACK_INTERFACE_DUMMY_H 1 #include namespace cxxlapack { template float la_herpvgrg(char uplo, IndexType n, IndexType info, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, float *work); template double la_herpvgrg(char uplo, IndexType n, IndexType info, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_DUMMY_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_herpvgrw.tcc000066400000000000000000000074201456314707100261010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_HERPVGRW_TCC #define CXXLAPACK_INTERFACE_LA_HERPVGRW_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_herpvgrg(char uplo, IndexType n, IndexType info, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, float *work) { CXXLAPACK_DEBUG_OUT("cla_herpvgrg"); return LAPACK_IMPL(cla_herpvgrg)(&uplo, &n, &info, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, work); } template double la_herpvgrg(char uplo, IndexType n, IndexType info, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, double *work) { CXXLAPACK_DEBUG_OUT("zla_herpvgrg"); return LAPACK_IMPL(zla_herpvgrg)(&uplo, &n, &info, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_HERPVGRW_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_lin_berr.h000066400000000000000000000061011456314707100255020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_LIN_BERR_H #define CXXLAPACK_INTERFACE_LA_LIN_BERR_H #include namespace cxxlapack { template void la_lin_berr(IndexType n, IndexType nz, IndexType nRhs, float *res, const float *ayb, const float *berr); template void la_lin_berr(IndexType n, IndexType nz, IndexType nRhs, double *res, const double *ayb, const double *berr); template void la_lin_berr(IndexType n, IndexType nz, IndexType nRhs, const std::complex *res, const float *ayb, float *berr); template void la_lin_berr(IndexType n, IndexType nz, IndexType nRhs, const std::complex *res, const double *ayb, double *berr); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_LIN_BERR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_lin_berr.tcc000066400000000000000000000102021456314707100260210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_LIN_BERR_TCC #define CXXLAPACK_INTERFACE_LA_LIN_BERR_TCC #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void la_lin_berr(IndexType n, IndexType nz, IndexType nRhs, const float *res, const float *ayb, float *berr) { CXXLAPACK_DEBUG_OUT("sla_lin_berr"); LAPACK_IMPL(sla_lin_berr)(&n, &nz, &nRhs, res, ayb, berr); } template void la_lin_berr(IndexType n, IndexType nz, IndexType nRhs, const double *res, const double *ayb, double *berr) { CXXLAPACK_DEBUG_OUT("dla_lin_berr"); LAPACK_IMPL(dla_lin_berr)(&n, &nz, &nRhs, res, ayb, berr); } template void la_lin_berr(IndexType n, IndexType nz, IndexType nRhs, const std::complex *res, const float *ayb, float *berr) { CXXLAPACK_DEBUG_OUT("cla_lin_berr"); LAPACK_IMPL(cla_lin_berr)(&n, &nz, &nRhs, reinterpret_cast(res), ayb, berr); } template void la_lin_berr(IndexType n, IndexType nz, IndexType nRhs, const std::complex *res, const double *ayb, double *berr) { CXXLAPACK_DEBUG_OUT("zla_lin_berr"); LAPACK_IMPL(zla_lin_berr)(&n, &nz, &nRhs, reinterpret_cast(res), ayb, berr); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_LIN_BERR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_porcond.h000066400000000000000000000055031456314707100253570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_PORCOND_H #define CXXLAPACK_INTERFACE_LA_PORCOND_H 1 #include namespace cxxlapack { template float la_porCond(char uplo, IndexType n, const float *A, IndexType ldA, const float *Af, IndexType ldAf, IndexType cmode, const float *c, IndexType &info, float *work, IndexType *iWork); template double la_porCond(char uplo, IndexType n, const double *A, IndexType ldA, const double *Af, IndexType ldAf, IndexType cmode, const double *c, IndexType &info, double *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_PORCOND_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_porcond.tcc000066400000000000000000000103271456314707100257010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_PORCOND_TCC #define CXXLAPACK_INTERFACE_LA_PORCOND_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float la_porCond(char uplo, IndexType n, const float *A, IndexType ldA, const float *Af, IndexType ldAf, IndexType cmode, const float *c, IndexType &info, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("sla_porcond"); float val = LAPACK_IMPL(sla_porcond)(&uplo, &n, A, &ldA, Af, &ldAf, &cmode, c, &info, work, iWork); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return val; } template double la_porCond(char uplo, IndexType n, const double *A, IndexType ldA, const double *Af, IndexType ldAf, IndexType cmode, const double *c, IndexType &info, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dla_porcond"); double val = LAPACK_IMPL(dla_porcond)(&uplo, &n, A, &ldA, Af, &ldAf, &cmode, c, &info, work, iWork); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return val; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_PORCOND_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_porcond_c.h000066400000000000000000000057741456314707100256730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_PORCOND_C_H #define CXXLAPACK_INTERFACE_LA_PORCOND_C_H 1 #include namespace cxxlapack { template double la_porCond_c(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const float *c, bool capply, IndexType &info, std::complex *work, float *rWork); template double la_porCond_c(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const double *c, bool capply, IndexType &info, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_PORCOND_C_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_porcond_c.tcc000066400000000000000000000104431456314707100262020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_PORCOND_C_TCC #define CXXLAPACK_INTERFACE_LA_PORCOND_C_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_porCond_c(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const float *c, bool capply, IndexType &info, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cla_porcond_c"); IndexType capply_ = capply; return LAPACK_IMPL(cla_porcond_c)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, c, &capply_, &info, reinterpret_cast(work), rWork); } template double la_porCond_c(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const double *c, bool capply, IndexType &info, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zla_porcond_c"); IndexType capply_ = capply; return LAPACK_IMPL(zla_porcond_c)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, c, &capply_, &info, reinterpret_cast(work), rWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_PORCOND_C_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_porcond_x.h000066400000000000000000000056221456314707100257100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_PORCOND_X_H #define CXXLAPACK_INTERFACE_LA_PORCOND_X_H 1 #include namespace cxxlapack { template double la_porCond_x(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const std::complex *x, IndexType &info, std::complex *work, float *rWork); template double la_porCond_x(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const std::complex *x, IndexType &info, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_PORCOND_X_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_porcond_x.tcc000066400000000000000000000101451456314707100262260ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_PORCOND_X_TCC #define CXXLAPACK_INTERFACE_LA_PORCOND_X_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_porCond_x(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const std::complex *x, IndexType &info, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("zla_porcond_x"); return LAPACK_IMPL(cla_porcond_x)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, reinterpret_cast(x), &info, reinterpret_cast(work), rWork); } template double la_porCond_x(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const std::complex *x, IndexType &info, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zla_porcond_x"); return LAPACK_IMPL(zla_porcond_x)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, reinterpret_cast(x), &info, reinterpret_cast(work), rWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_PORCOND_X_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_porpvgrw.h000066400000000000000000000064251456314707100256050ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_PORPVGRW_H #define CXXLAPACK_INTERFACE_LA_PORPVGRW_H 1 #include namespace cxxlapack { template IndexType la_porpvgrw(char uplo, IndexType ncols, const float *A, IndexType ldA, const float *Af, IndexType ldAf, float *work); template IndexType la_porpvgrw(char uplo, IndexType ncols, const double *A, IndexType ldA, const double *Af, IndexType ldAf, double *work); template double la_porpvgrw(char uplo, IndexType ncols, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, float *work); template double la_porpvgrw(char uplo, IndexType ncols, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_PORPVGRW_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_porpvgrw.tcc000066400000000000000000000113501456314707100261200ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_PORPVGRW_TCC #define CXXLAPACK_INTERFACE_LA_PORPVGRW_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_porpvgrw(char uplo, IndexType ncols, const float *A, IndexType ldA, const float *Af, IndexType ldAf, float *work) { CXXLAPACK_DEBUG_OUT("sla_porpvgrw"); return LAPACK_IMPL(sla_porpvgrw)(&uplo, &ncols, A, &ldA, Af, &ldAf, work); } template double la_porpvgrw(char uplo, IndexType ncols, const double *A, IndexType ldA, const double *Af, IndexType ldAf, double *work) { CXXLAPACK_DEBUG_OUT("dla_porpvgrw"); return LAPACK_IMPL(dla_porpvgrw)(&uplo, &ncols, A, &ldA, Af, &ldAf, work); } template double la_porpvgrw(char uplo, IndexType ncols, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, float *work) { CXXLAPACK_DEBUG_OUT("cla_porpvgrw"); return LAPACK_IMPL(cla_porpvgrw)(&uplo, &ncols, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, work); } template double la_porpvgrw(char uplo, IndexType ncols, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, double *work) { CXXLAPACK_DEBUG_OUT("zla_porpvgrw"); return LAPACK_IMPL(zla_porpvgrw)(&uplo, &ncols, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_PORPVGRW_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_rpvgrw.h000066400000000000000000000060211456314707100252360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_RPVGRW_TCC #define CXXLAPACK_INTERFACE_LA_RPVGRW_TCC 1 #include namespace cxxlapack { template double la_rpvgrw(IndexType n, IndexType ncols, const float *A, IndexType ldA, const float *Af, IndexType ldAf); template double la_rpvgrw(IndexType n, IndexType ncols, const double *A, IndexType ldA, const double *Af, IndexType ldAf); template double la_rpvgrw(IndexType n, IndexType ncols, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf); template double la_rpvgrw(IndexType n, IndexType ncols, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_RPVGRW_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_rpvgrw.tcc000066400000000000000000000104021456314707100255560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_RPVGRW_TCC #define CXXLAPACK_INTERFACE_LA_RPVGRW_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_rpvgrw(IndexType n, IndexType ncols, const float *A, IndexType ldA, const float *Af, IndexType ldAf) { CXXLAPACK_DEBUG_OUT("sla_rpvgrw"); return LAPACK_IMPL(sla_rpvgrw)(&n, &ncols, A, &ldA, Af, &ldAf); } template double la_rpvgrw(IndexType n, IndexType ncols, const double *A, IndexType ldA, const double *Af, IndexType ldAf) { CXXLAPACK_DEBUG_OUT("dla_rpvgrw"); return LAPACK_IMPL(dla_rpvgrw)(&n, &ncols, A, &ldA, Af, &ldAf); } template double la_rpvgrw(IndexType n, IndexType ncols, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf) { CXXLAPACK_DEBUG_OUT("cla_rpvgrw"); return LAPACK_IMPL(cla_rpvgrw)(&n, &ncols, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf); } template double la_rpvgrw(IndexType n, IndexType ncols, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf) { CXXLAPACK_DEBUG_OUT("zla_rpvgrw"); return LAPACK_IMPL(zla_rpvgrw)(&n, &ncols, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_RPVGRW_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_syamv.h000066400000000000000000000072361456314707100250570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_SYAMV_H #define CXXLAPACK_INTERFACE_LA_SYAMV_H 1 #include namespace cxxlapack { template void la_syamv(char uplo, IndexType n, float alpha, const float *A, IndexType ldA, const float *x, IndexType incx, float beta, float *y, IndexType incy); template void la_syamv(char uplo, IndexType n, double alpha, const double *A, IndexType ldA, const double *x, IndexType incx, double beta, double *y, IndexType incy); template void la_syamv(char uplo, IndexType n, float alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, float beta, float *y, IndexType incy); template void la_syamv(char uplo, IndexType n, double alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, double beta, double *y, IndexType incy); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_SYAMV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_syamv.tcc000066400000000000000000000122331456314707100253720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_SYAMV_TCC #define CXXLAPACK_INTERFACE_LA_SYAMV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void la_syamv(char uplo, IndexType n, float alpha, const float *A, IndexType ldA, const float *x, IndexType incx, float beta, float *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("sla_syamv"); LAPACK_IMPL(sla_syamv)(&uplo, &n, &alpha, A, &ldA, x, &incx, &beta, y, &incy); } template void la_syamv(char uplo, IndexType n, double alpha, const double *A, IndexType ldA, const double *x, IndexType incx, double beta, double *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("dla_syamv"); LAPACK_IMPL(dla_syamv)(&uplo, &n, &alpha, A, &ldA, x, &incx, &beta, y, &incy); } template void la_syamv(char uplo, IndexType n, float alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, float beta, float *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("cla_syamv"); LAPACK_IMPL(cla_syamv)(&uplo, &n, &alpha, reinterpret_cast(A), &ldA, reinterpret_cast(x), &incx, &beta, y, &incy); } template void la_syamv(char uplo, IndexType n, double alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, double beta, double *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("zla_syamv"); LAPACK_IMPL(zla_syamv)(&uplo, &n, &alpha, reinterpret_cast(A), &ldA, reinterpret_cast(x), &incx, &beta, y, &incy); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_SYAMV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_syrcond.h000066400000000000000000000056301456314707100253750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_SYROND_H #define CXXLAPACK_INTERFACE_LA_SYROND_H 1 #include namespace cxxlapack { template float la_syrCond(char uplo, IndexType n, const float *A, IndexType ldA, const float *Af, IndexType ldAf, const IndexType *iPiv, IndexType cmode, const float *c, IndexType &info, float *work, IndexType *iWork); template double la_syrCond(char uplo, IndexType n, const double *A, IndexType ldA, const double *Af, IndexType ldAf, const IndexType *iPiv, IndexType cmode, const double *c, IndexType &info, double *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_SYROND_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_syrcond.tcc000066400000000000000000000106061456314707100257160ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_SYRCOND_TCC #define CXXLAPACK_INTERFACE_LA_SYRCOND_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float la_syrCond(char uplo, IndexType n, const float *A, IndexType ldA, const float *Af, IndexType ldAf, const IndexType *iPiv, IndexType cmode, const float *c, IndexType &info, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("sla_syrcond"); float val = LAPACK_IMPL(sla_syrcond)(&uplo, &n, A, &ldA, Af, &ldAf, iPiv, &cmode, c, &info, work, iWork); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return val; } template double la_syrCond(char uplo, IndexType n, const double *A, IndexType ldA, const double *Af, IndexType ldAf, const IndexType *iPiv, IndexType cmode, const double *c, IndexType &info, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dla_syrcond"); double val = LAPACK_IMPL(dla_syrcond)(&uplo, &n, A, &ldA, Af, &ldAf, iPiv, &cmode, c, &info, work, iWork); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return val; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_SYRCOND_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_syrcond_c.h000066400000000000000000000061441456314707100257000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_SYRCOND_C_H #define CXXLAPACK_INTERFACE_LA_SYRCOND_C_H 1 #include namespace cxxlapack { template double la_syrCond_c(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const float *c, bool capply, IndexType &info, std::complex *work, float *rWork); template double la_syrCond_c(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const double *c, bool capply, IndexType &info, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_SYRCOND_C_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_syrcond_c.tcc000066400000000000000000000107351456314707100262230ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_SYRCOND_C_TCC #define CXXLAPACK_INTERFACE_LA_SYRCOND_C_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_syrCond_c(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const float *c, bool capply, IndexType &info, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cla_syrcond_c"); IndexType capply_ = capply; return LAPACK_IMPL(cla_syrcond_c)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, c, &capply_, &info, reinterpret_cast(work), rWork); } template double la_syrCond_c(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const double *c, bool capply, IndexType &info, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zla_syrcond_c"); IndexType capply_ = capply; return LAPACK_IMPL(zla_syrcond_c)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, c, &capply_, &info, reinterpret_cast(work), rWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_SYRCOND_C_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_syrcond_x.h000066400000000000000000000057721456314707100257330ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_SYRCOND_X_H #define CXXLAPACK_INTERFACE_LA_SYRCOND_X_H 1 #include namespace cxxlapack { template double la_syrCond_x(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, float *rWork); template double la_syrCond_x(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_SYRCOND_X_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_syrcond_x.tcc000066400000000000000000000104371456314707100262470ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_SYRCOND_X_TCC #define CXXLAPACK_INTERFACE_LA_SYRCOND_X_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_syrCond_x(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cla_syrcond_x"); return LAPACK_IMPL(cla_syrcond_x)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, reinterpret_cast(x), &info, reinterpret_cast(work), rWork); } template double la_syrCond_x(char uplo, IndexType n, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const std::complex *x, IndexType &info, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zla_syrcond_x"); return LAPACK_IMPL(zla_syrcond_x)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, reinterpret_cast(x), &info, reinterpret_cast(work), rWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_SYRCOND_X_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_syrpvgrw.h000066400000000000000000000071731456314707100256230ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_SYRPVGRW_H #define CXXLAPACK_INTERFACE_LA_SYRPVGRW_H 1 #include namespace cxxlapack { template double la_syrpvgrw(char uplo, IndexType n, IndexType info, const float *A, IndexType ldA, const float *Af, IndexType ldAf, const IndexType *iPiv, float *work); template double la_syrpvgrw(char uplo, IndexType n, IndexType info, const double *A, IndexType ldA, const double *Af, IndexType ldAf, const IndexType *iPiv, double *work); template double la_syrpvgrw(char uplo, IndexType n, IndexType info, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, float *work); template double la_syrpvgrw(char uplo, IndexType n, IndexType info, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_SYRPVGRW_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_syrpvgrw.tcc000066400000000000000000000125751456314707100261470ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_SYRPVGRW_TCC #define CXXLAPACK_INTERFACE_LA_SYRPVGRW_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double la_syrpvgrw(char uplo, IndexType n, IndexType info, const float *A, IndexType ldA, const float *Af, IndexType ldAf, const IndexType *iPiv, float *work) { CXXLAPACK_DEBUG_OUT("sla_syrpvgrw"); return LAPACK_IMPL(sla_syrpvgrw)(&uplo, &n, &info, A, &ldA, Af, &ldAf, iPiv, work); } template double la_syrpvgrw(char uplo, IndexType n, IndexType info, const double *A, IndexType ldA, const double *Af, IndexType ldAf, const IndexType *iPiv, double *work) { CXXLAPACK_DEBUG_OUT("dla_syrpvgrw"); return LAPACK_IMPL(dla_syrpvgrw)(&uplo, &n, &info, A, &ldA, Af, &ldAf, iPiv, work); } template double la_syrpvgrw(char uplo, IndexType n, IndexType info, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, float *work) { CXXLAPACK_DEBUG_OUT("cla_syrpvgrw"); return LAPACK_IMPL(cla_syrpvgrw)(&uplo, &n, &info, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, work); } template double la_syrpvgrw(char uplo, IndexType n, IndexType info, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, double *work) { CXXLAPACK_DEBUG_OUT("zla_syrpvgrw"); return LAPACK_IMPL(zla_syrpvgrw)(&uplo, &n, &info, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_SYRPVGRW_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_wwaddw.h000066400000000000000000000052231456314707100252070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_WWADDW_H #define CXXLAPACK_INTERFACE_LA_WWADDW_H 1 #include namespace cxxlapack { template void la_wwaddw(IndexType n, float *x, float *y, const float *w); template void la_wwaddw(IndexType n, double *x, double *y, const double *w); template void la_wwaddw(IndexType n, std::complex *x, std::complex *y, const std::complex *w); template void la_wwaddw(IndexType n, std::complex *x, std::complex *y, const std::complex *w); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_WWADDW_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/la_wwaddw.tcc000066400000000000000000000067741456314707100255450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LA_WWADDW_TCC #define CXXLAPACK_INTERFACE_LA_WWADDW_TCC #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void la_wwaddw(IndexType n, float *x, float *y, const float *w) { CXXLAPACK_DEBUG_OUT("sla_wwaddw"); LAPACK_IMPL(sla_wwaddw)(&n, x, y, w); } template void la_wwaddw(IndexType n, double *x, double *y, const double *w) { CXXLAPACK_DEBUG_OUT("dla_wwaddw"); LAPACK_IMPL(dla_wwaddw)(&n, x, y, w); } template void la_wwaddw(IndexType n, std::complex *x, std::complex *y, const std::complex *w) { CXXLAPACK_DEBUG_OUT("cla_wwaddw"); LAPACK_IMPL(cla_wwaddw)(&n, reinterpret_cast(x), reinterpret_cast(y), reinterpret_cast(w)); } template void la_wwaddw(IndexType n, std::complex *x, std::complex *y, const std::complex *w) { CXXLAPACK_DEBUG_OUT("zla_wwaddw"); LAPACK_IMPL(zla_wwaddw)(&n, reinterpret_cast(x), reinterpret_cast(y), reinterpret_cast(w)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LA_WWADDW_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/labad.h000066400000000000000000000037311456314707100243030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LABAD_H #define CXXLAPACK_INTERFACE_LABAD_H 1 #include namespace cxxlapack { template void labad(float &smallv, float &largev); template void labad(double &smallv, double &largev); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LABAD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/labad.tcc000066400000000000000000000043671456314707100246330ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LABAD_TCC #define CXXLAPACK_INTERFACE_LABAD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void labad(float &smallv, float &largev) { CXXLAPACK_DEBUG_OUT("slabad"); LAPACK_IMPL(slabad)(&smallv, &largev); } template void labad(double &smallv, double &largev) { CXXLAPACK_DEBUG_OUT("dlabad"); LAPACK_IMPL(dlabad)(&smallv, &largev); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LABAD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/labrd.h000066400000000000000000000075051456314707100243270ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LABRD_H #define CXXLAPACK_INTERFACE_LABRD_H 1 #include namespace cxxlapack { template void labrd(IndexType m, IndexType n, IndexType nb, float *A, IndexType ldA, float *d, float *e, float *tauq, float *taup, float *X, IndexType ldX, float *Y, IndexType ldY); template void labrd(IndexType m, IndexType n, IndexType nb, double *A, IndexType ldA, double *d, double *e, double *tauq, double *taup, double *X, IndexType ldX, double *Y, IndexType ldY); template void labrd(IndexType m, IndexType n, IndexType nb, std::complex *A, IndexType ldA, float *d, float *e, std::complex *tauq, std::complex *taup, std::complex *X, IndexType ldX, std::complex *Y, IndexType ldY); template void labrd(IndexType m, IndexType n, IndexType nb, std::complex *A, IndexType ldA, double *d, double *e, std::complex *tauq, std::complex *taup, std::complex *X, IndexType ldX, std::complex *Y, IndexType ldY); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LABRD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/labrd.tcc000066400000000000000000000132331456314707100246440ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LABRD_TCC #define CXXLAPACK_INTERFACE_LABRD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void labrd(IndexType m, IndexType n, IndexType nb, float *A, IndexType ldA, float *d, float *e, float *tauq, float *taup, float *X, IndexType ldX, float *Y, IndexType ldY) { CXXLAPACK_DEBUG_OUT("slabrd"); IndexType info; LAPACK_IMPL(slabrd)(&m, &n, &nb, A, &ldA, d, e, tauq, taup, X, &ldX, Y, &ldY); } template void labrd(IndexType m, IndexType n, IndexType nb, double *A, IndexType ldA, double *d, double *e, double *tauq, double *taup, double *X, IndexType ldX, double *Y, IndexType ldY) { CXXLAPACK_DEBUG_OUT("dlabrd"); IndexType info; LAPACK_IMPL(dlabrd)(&m, &n, &nb, A, &ldA, d, e, tauq, taup, X, &ldX, Y, &ldY); } template void labrd(IndexType m, IndexType n, IndexType nb, std::complex *A, IndexType ldA, float *d, float *e, std::complex *tauq, std::complex *taup, std::complex *X, IndexType ldX, std::complex *Y, IndexType ldY) { CXXLAPACK_DEBUG_OUT("clabrd"); IndexType info; LAPACK_IMPL(clabrd)(&m, &n, &nb, reinterpret_cast(A), &ldA, d, e, reinterpret_cast(tauq), reinterpret_cast(taup), reinterpret_cast(X), &ldX, reinterpret_cast(Y), &ldY); } template void labrd(IndexType m, IndexType n, IndexType nb, std::complex *A, IndexType ldA, double *d, double *e, std::complex *tauq, std::complex *taup, std::complex *X, IndexType ldX, std::complex *Y, IndexType ldY) { CXXLAPACK_DEBUG_OUT("zlabrd"); IndexType info; LAPACK_IMPL(zlabrd)(&m, &n, &nb, reinterpret_cast(A), &ldA, d, e, reinterpret_cast(tauq), reinterpret_cast(taup), reinterpret_cast(X), &ldX, reinterpret_cast(Y), &ldY); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LABRD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lacgv.h000066400000000000000000000041411456314707100243300ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LACGV_H #define CXXLAPACK_INTERFACE_LACGV_H 1 #include namespace cxxlapack { template void lacgv(IndexType n, std::complex *x, IndexType incx); template void lacgv(IndexType n, std::complex *x, IndexType incx); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LACGV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lacgv.tcc000066400000000000000000000047301456314707100246560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LACGV_TCC #define CXXLAPACK_INTERFACE_LACGV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lacgv(IndexType n, std::complex *x, IndexType incx) { CXXLAPACK_DEBUG_OUT("clacgv"); LAPACK_IMPL(clacgv)(&n, reinterpret_cast(x), &incx); } template void lacgv(IndexType n, std::complex *x, IndexType incx) { CXXLAPACK_DEBUG_OUT("zlacgv"); LAPACK_IMPL(zlacgv)(&n, reinterpret_cast(x), &incx); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LACGV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lacn2.h000066400000000000000000000055371456314707100242450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LACN2_H #define CXXLAPACK_INTERFACE_LACN2_H 1 #include namespace cxxlapack { template void lacn2(IndexType n, float *v, float *x, IndexType *isgn, float &est, IndexType &kase, IndexType *iSave); template void lacn2(IndexType n, double *v, double *x, IndexType *isgn, double &est, IndexType &kase, IndexType *iSave); template void lacn2(IndexType n, std::complex *v, std::complex *x, float &est, IndexType &kase, IndexType *iSave); template void lacn2(IndexType n, std::complex *v, std::complex *x, double &est, IndexType &kase, IndexType *iSave); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LACN2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lacn2.tcc000066400000000000000000000075201456314707100245610ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LACN2_TCC #define CXXLAPACK_INTERFACE_LACN2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lacn2(IndexType n, float *v, float *x, IndexType *isgn, float &est, IndexType &kase, IndexType *iSave) { CXXLAPACK_DEBUG_OUT("slacn2"); LAPACK_IMPL(slacn2)(&n, v, x, isgn, &est, &kase, iSave); } template void lacn2(IndexType n, double *v, double *x, IndexType *isgn, double &est, IndexType &kase, IndexType *iSave) { CXXLAPACK_DEBUG_OUT("dlacn2"); LAPACK_IMPL(dlacn2)(&n, v, x, isgn, &est, &kase, iSave); } template void lacn2(IndexType n, std::complex *v, std::complex *x, float &est, IndexType &kase, IndexType *iSave) { CXXLAPACK_DEBUG_OUT("clacn2"); LAPACK_IMPL(clacn2)(&n, reinterpret_cast(v), reinterpret_cast(x), &est, &kase, iSave); } template void lacn2(IndexType n, std::complex *v, std::complex *x, double &est, IndexType &kase, IndexType *iSave) { CXXLAPACK_DEBUG_OUT("zlacn2"); LAPACK_IMPL(zlacn2)(&n, reinterpret_cast(v), reinterpret_cast(x), &est, &kase, iSave); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LACN2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lacon.h000066400000000000000000000054121456314707100243320ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LACOND_H #define CXXLAPACK_INTERFACE_LACOND_H 1 #include namespace cxxlapack { template void lacon(IndexType n, float *v, float *x, IndexType *isgn, float &est, IndexType &kase); template void lacon(IndexType n, double *v, double *x, IndexType *isgn, double &est, IndexType &kase); template void lacon(IndexType n, std::complex *v, std::complex *x, float &est, IndexType &kase); template void lacon(IndexType n, std::complex *v, std::complex *x, double &est, IndexType &kase); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LACOND_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lacon.tcc000066400000000000000000000072141456314707100246560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LACON_TCC #define CXXLAPACK_INTERFACE_LACON_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lacon(IndexType n, float *v, float *x, IndexType *isgn, float &est, IndexType &kase) { CXXLAPACK_DEBUG_OUT("slacon"); LAPACK_IMPL(slacon)(&n, v, x, isgn, &est, &kase); } template void lacon(IndexType n, double *v, double *x, IndexType *isgn, double &est, IndexType &kase) { CXXLAPACK_DEBUG_OUT("dlacon"); LAPACK_IMPL(dlacon)(&n, v, x, isgn, &est, &kase); } template void lacon(IndexType n, std::complex *v, std::complex *x, float &est, IndexType &kase) { CXXLAPACK_DEBUG_OUT("clacon"); LAPACK_IMPL(clacon)(&n, reinterpret_cast(v), reinterpret_cast(x), &est, &kase); } template void lacon(IndexType n, std::complex *v, std::complex *x, double &est, IndexType &kase) { CXXLAPACK_DEBUG_OUT("zlacon"); LAPACK_IMPL(zlacon)(&n, reinterpret_cast(v), reinterpret_cast(x), &est, &kase); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LACON_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lacp2.h000066400000000000000000000046031456314707100242400ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LACP2_H #define CXXLAPACK_INTERFACE_LACP2_H 1 #include namespace cxxlapack { template void lacp2(char uplo, IndexType m, IndexType n, const float *A, IndexType ldA, std::complex *B, IndexType ldB); template void lacp2(char uplo, IndexType m, IndexType n, const double *A, IndexType ldA, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LACP2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lacp2.tcc000066400000000000000000000057041456314707100245650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LACP2_TCC #define CXXLAPACK_INTERFACE_LACP2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lacp2(char uplo, IndexType m, IndexType n, const float *A, IndexType ldA, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("clacp2"); LAPACK_IMPL(clacp2)(&uplo, &m, &n, A, &ldA, reinterpret_cast(B), &ldB); } template void lacp2(char uplo, IndexType m, IndexType n, const double *A, IndexType ldA, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zlacp2"); LAPACK_IMPL(zlacp2)(&uplo, &m, &n, A, &ldA, reinterpret_cast(B), &ldB); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LACP2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lacpy.h000066400000000000000000000060451456314707100243510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LACPY_H #define CXXLAPACK_INTERFACE_LACPY_H 1 #include namespace cxxlapack { template void lacpy(char uplo, IndexType m, IndexType n, const float *A, IndexType ldA, float *B, IndexType ldB); template void lacpy(char uplo, IndexType m, IndexType n, const double *A, IndexType ldA, double *B, IndexType ldB); template void lacpy(char uplo, IndexType m, IndexType n, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB); template void lacpy(char uplo, IndexType m, IndexType n, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LACPY_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lacpy.tcc000066400000000000000000000101131456314707100246620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LACPY_TCC #define CXXLAPACK_INTERFACE_LACPY_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lacpy(char uplo, IndexType m, IndexType n, const float *A, IndexType ldA, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("slacpy"); LAPACK_IMPL(slacpy)(&uplo, &m, &n, A, &ldA, B, &ldB); } template void lacpy(char uplo, IndexType m, IndexType n, const double *A, IndexType ldA, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dlacpy"); LAPACK_IMPL(dlacpy)(&uplo, &m, &n, A, &ldA, B, &ldB); } template void lacpy(char uplo, IndexType m, IndexType n, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("clacpy"); LAPACK_IMPL(clacpy)(&uplo, &m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB); } template void lacpy(char uplo, IndexType m, IndexType n, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zlacpy"); LAPACK_IMPL(zlacpy)(&uplo, &m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LACPY_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lacrm.h000066400000000000000000000052051456314707100243340ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LACRM_H #define CXXLAPACK_INTERFACE_LACRM_H 1 #include namespace cxxlapack { template void lacrm(IndexType m, IndexType n, const std::complex *A, IndexType ldA, const float *B, IndexType ldB, std::complex *C, IndexType ldC, float *rWork); template void lacrm(IndexType m, IndexType n, const std::complex *A, IndexType ldA, const double *B, IndexType ldB, std::complex *C, IndexType ldC, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LACRM_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lacrm.tcc000066400000000000000000000065521456314707100246640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LACRM_TCC #define CXXLAPACK_INTERFACE_LACRM_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lacrm(IndexType m, IndexType n, const std::complex *A, IndexType ldA, const float *B, IndexType ldB, std::complex *C, IndexType ldC, float *rWork) { CXXLAPACK_DEBUG_OUT("clacrm"); LAPACK_IMPL(clacrm)(&m, &n, reinterpret_cast(A), &ldA, B, &ldB, reinterpret_cast(C), &ldC, rWork); } template void lacrm(IndexType m, IndexType n, const std::complex *A, IndexType ldA, const double *B, IndexType ldB, std::complex *C, IndexType ldC, double *rWork) { CXXLAPACK_DEBUG_OUT("zlacrm"); LAPACK_IMPL(zlacrm)(&m, &n, reinterpret_cast(A), &ldA, B, &ldB, reinterpret_cast(C), &ldC, rWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LACRM_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lacrt.h000066400000000000000000000046171456314707100243510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LACRT_H #define CXXLAPACK_INTERFACE_LACRT_H 1 #include namespace cxxlapack { template IndexType lacrt(IndexType n, std::complex *cx, IndexType incx, std::complex *cy, IndexType incy, std::complex c, std::complex s); template IndexType lacrt(IndexType n, std::complex *cx, IndexType incx, std::complex *cy, IndexType incy, std::complex c, std::complex s); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LACRT_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lacrt.tcc000066400000000000000000000062061456314707100246670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LACRT_TCC #define CXXLAPACK_INTERFACE_LACRT_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lacrt(IndexType n, std::complex *cx, IndexType incx, std::complex *cy, IndexType incy, std::complex c, std::complex s) { CXXLAPACK_DEBUG_OUT("clacrt"); LAPACK_IMPL(clacrt)(&n, reinterpret_cast(cx) &incx, reinterpret_cast(cy), &incy, reinterpret_cast(&c), reinterpret_cast(&s)); } template void lacrt(IndexType n, std::complex *cx, IndexType incx, std::complex *cy, IndexType incy, std::complex c, std::complex s) { CXXLAPACK_DEBUG_OUT("zlacrt"); LAPACK_IMPL(zlacrt)(&n, reinterpret_cast(cx) &incx, reinterpret_cast(cy), &incy, reinterpret_cast(&c), reinterpret_cast(&s)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LACRT_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ladiv.h000066400000000000000000000045521456314707100243410ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LADIV_H #define CXXLAPACK_INTERFACE_LADIV_H 1 #include #include "xflens/cxxblas/drivers/drivers.h" namespace cxxlapack { using cxxblas::RestrictTo; using cxxblas::IsSame; template typename RestrictTo::value, void>::Type ladiv(const double a, const double b, const double c, const double d, double &p, double &q); template typename RestrictTo::value, std::complex >::Type ladiv(std::complex x, std::complex y); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LADIV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ladiv.tcc000066400000000000000000000054441456314707100246640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LADIV_TCC #define CXXLAPACK_INTERFACE_LADIV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template typename RestrictTo::value, void>::Type ladiv(const Double a, const Double b, const Double c, const Double d, Double &p, Double &q) { CXXLAPACK_DEBUG_OUT("dladiv"); LAPACK_IMPL(dladiv)(&a, &b, &c, &d, &p, &q); } template typename RestrictTo::value, std::complex >::Type ladiv(std::complex x, std::complex y) { CXXLAPACK_DEBUG_OUT("zladiv"); std::complex z = LAPACK_IMPL(zladiv)(reinterpret_cast(&x), reinterpret_cast(&y)); return z; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LADIV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lae2.h000066400000000000000000000043521456314707100240630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAE2_H #define CXXLAPACK_INTERFACE_LAE2_H 1 #include namespace cxxlapack { template void lae2(float a, float b, float c, float &rt1, float &rt2); template void lae2(double a, double b, double c, double &rt1, double &rt2); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAE2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lae2.tcc000066400000000000000000000052011456314707100243770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAE2_TCC #define CXXLAPACK_INTERFACE_LAE_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lae2(float a, float b, float c, float &rt1, float &rt2) { CXXLAPACK_DEBUG_OUT("slae2"); LAPACK_IMPL(slae2)(&a, &b, &c, &rt1, &rt2); } template void lae2(double a, double b, double c, double &rt1, double &rt2) { CXXLAPACK_DEBUG_OUT("dlae2"); LAPACK_IMPL(dlae2)(&a, &b, &c, &rt1, &rt2); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_DUMMY_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laebz.h000066400000000000000000000064731456314707100243430ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAEBZ_H #define CXXLAPACK_INTERFACE_LAEBZ_H 1 #include namespace cxxlapack { template IndexType laebz(IndexType ijob, IndexType nitmax, IndexType n, IndexType mmax, IndexType minp, IndexType nbmin, float abstol, float reltol, float pivmin, const float *d, const float *e, const float *e2, IndexType *nval, float *Ab, float *c, IndexType &mout, IndexType *NAb, float *work, IndexType *iWork); template IndexType laebz(IndexType ijob, IndexType nitmax, IndexType n, IndexType mmax, IndexType minp, IndexType nbmin, double abstol, double reltol, double pivmin, const double *d, const double *e, const double *e2, IndexType *nval, double *Ab, double *c, IndexType &mout, IndexType *NAb, double *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAEBZ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laebz.tcc000066400000000000000000000115161456314707100246570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAEBZ_TCC #define CXXLAPACK_INTERFACE_LAEBZ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laebz(IndexType ijob, IndexType nitmax, IndexType n, IndexType mmax, IndexType minp, IndexType nbmin, float abstol, float reltol, float pivmin, const float *d, const float *e, const float *e2, IndexType *nval, float *Ab, float *c, IndexType &mout, IndexType *NAb, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("slaebz"); IndexType info; LAPACK_IMPL(slaebz)(&ijob, &nitmax, &n, &mmax, &minp, &nbmin, &abstol, &reltol, &pivmin, d, e, e2, nval, Ab, c, &mout, NAb, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laebz(IndexType ijob, IndexType nitmax, IndexType n, IndexType mmax, IndexType minp, IndexType nbmin, double abstol, double reltol, double pivmin, const double *d, const double *e, const double *e2, IndexType *nval, double *Ab, double *c, IndexType &mout, IndexType *NAb, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dlaebz"); IndexType info; LAPACK_IMPL(dlaebz)(&ijob, &nitmax, &n, &mmax, &minp, &nbmin, &abstol, &reltol, &pivmin, d, e, e2, nval, Ab, c, &mout, NAb, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAEBZ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed0.h000066400000000000000000000071571456314707100242330ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED0_H #define CXXLAPACK_INTERFACE_LAED0_H 1 #include namespace cxxlapack { template IndexType laed0(IndexType icompq, IndexType qsiz, IndexType n, float *d, const float *e, float *Q, IndexType ldQ, float *Qstore, IndexType ldQs, float *work, IndexType *iWork); template IndexType laed0(IndexType icompq, IndexType qsiz, IndexType n, double *d, const double *e, double *Q, IndexType ldQ, double *Qstore, IndexType ldQs, double *work, IndexType *iWork); template IndexType laed0(IndexType icompq, IndexType qsiz, IndexType n, float *d, const float *e, std::complex *Q, IndexType ldQ, std::complex *Qstore, IndexType ldQs, float *rWork, IndexType *iWork); template IndexType laed0(IndexType icompq, IndexType qsiz, IndexType n, double *d, const double *e, std::complex *Q, IndexType ldQ, std::complex *Qstore, IndexType ldQs, double *rWork, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED0_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed0.tcc000066400000000000000000000135121456314707100245450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED0_TCC #define CXXLAPACK_INTERFACE_LAED0_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laed0(IndexType icompq, IndexType qsiz, IndexType n, float *d, const float *e, float *Q, IndexType ldQ, float *Qstore, IndexType ldQs, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("slaed0"); IndexType info; LAPACK_IMPL(slaed0)(&icompq, &qsiz, &n, d, e, Q, &ldQ, Qstore, &ldQs, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed0(IndexType icompq, IndexType qsiz, IndexType n, double *d, const double *e, double *Q, IndexType ldQ, double *Qstore, IndexType ldQs, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dlaed0"); IndexType info; LAPACK_IMPL(dlaed0)(&icompq, &qsiz, &n, d, e, Q, &ldQ, Qstore, &ldQs, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed0(IndexType icompq, IndexType qsiz, IndexType n, float *d, const float *e, std::complex *Q, IndexType ldQ, std::complex *Qstore, IndexType ldQs, float *rWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("claed0"); IndexType info; LAPACK_IMPL(claed0)(&icompq, &qsiz, &n, d, e, reinterpret_cast(Q), &ldQ, reinterpret_cast(Qstore), &ldQs, rWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed0(IndexType icompq, IndexType qsiz, IndexType n, double *d, const double *e, std::complex *Q, IndexType ldQ, std::complex *Qstore, IndexType ldQs, double *rWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("zlaed0"); IndexType info; LAPACK_IMPL(zlaed0)(&icompq, &qsiz, &n, d, e, reinterpret_cast(Q), &ldQ, reinterpret_cast(Qstore), &ldQs, rWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED0_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed1.h000066400000000000000000000050711456314707100242250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED1_H #define CXXLAPACK_INTERFACE_LAED1_H 1 #include namespace cxxlapack { template IndexType laed1(IndexType n, float *d, float *Q, IndexType ldQ, IndexType *indxq, float rho, IndexType cutpnt, float *work, IndexType *iWork); template IndexType laed1(IndexType n, double *d, double *Q, IndexType ldQ, IndexType *indxq, double rho, IndexType cutpnt, double *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED1_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed1.tcc000066400000000000000000000070701456314707100245500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED1_TCC #define CXXLAPACK_INTERFACE_LAED1_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laed1(IndexType n, float *d, float *Q, IndexType ldQ, IndexType *indxq, float rho, IndexType cutpnt, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("slaed1"); IndexType info; LAPACK_IMPL(slaed1)(&n, d, Q, &ldQ, indxq, &rho, &cutpnt, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed1(IndexType n, double *d, double *Q, IndexType ldQ, IndexType *indxq, double rho, IndexType cutpnt, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dlaed1"); IndexType info; LAPACK_IMPL(dlaed1)(&n, d, Q, &ldQ, indxq, &rho, &cutpnt, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED1_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed2.h000066400000000000000000000061141456314707100242250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED2_H #define CXXLAPACK_INTERFACE_LAED2_H 1 #include namespace cxxlapack { template IndexType laed2(IndexType &k, IndexType n, IndexType n1, float *d, float *Q, IndexType ldQ, IndexType *indxq, float &rho, const float *z, float *dlambda, float *w, float *q2, IndexType *indx, IndexType *indxc, IndexType *indxp, IndexType *coltyp); template IndexType laed2(IndexType &k, IndexType n, IndexType n1, double *d, double *Q, IndexType ldQ, IndexType *indxq, double &rho, const double *z, double *dlambda, double *w, double *q2, IndexType *indx, IndexType *indxc, IndexType *indxp, IndexType *coltyp); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed2.tcc000066400000000000000000000106461456314707100245540ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED2_TCC #define CXXLAPACK_INTERFACE_LAED2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laed2(IndexType &k, IndexType n, IndexType n1, float *d, float *Q, IndexType ldQ, IndexType *indxq, float &rho, const float *z, float *dlambda, float *w, float *q2, IndexType *indx, IndexType *indxc, IndexType *indxp, IndexType *coltyp) { CXXLAPACK_DEBUG_OUT("slaed2"); IndexType info; LAPACK_IMPL(slaed2)(&k, &n, &n1, d, Q, &ldQ, indxq, &rho, z, dlambda, w, q2, indx, indxc, indxp, coltyp, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed2(IndexType &k, IndexType n, IndexType n1, double *d, double *Q, IndexType ldQ, IndexType *indxq, double &rho, const double *z, double *dlambda, double *w, double *q2, IndexType *indx, IndexType *indxc, IndexType *indxp, IndexType *coltyp) { CXXLAPACK_DEBUG_OUT("dlaed2"); IndexType info; LAPACK_IMPL(dlaed2)(&k, &n, &n1, d, Q, &ldQ, indxq, &rho, z, dlambda, q2, w, indx, indxc, indxp, coltyp, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed3.h000066400000000000000000000055251456314707100242330ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED3_H #define CXXLAPACK_INTERFACE_LAED3_H 1 #include namespace cxxlapack { template IndexType laed3(IndexType k, IndexType n, IndexType n1, float *d, float *Q, IndexType ldQ, float &rho, float *dlambda, const float *q2, const IndexType *indx, const IndexType *ctot, float *w, float *s); template IndexType laed3(IndexType k, IndexType n, IndexType n1, double *d, double *Q, IndexType ldQ, double &rho, double *dlambda, const double *q2, const IndexType *indx, const IndexType *ctot, double *w, double *s); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED3_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed3.tcc000066400000000000000000000100121456314707100245400ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED3_TCC #define CXXLAPACK_INTERFACE_LAED3_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laed3(IndexType k, IndexType n, IndexType n1, float *d, float *Q, IndexType ldQ, float &rho, float *dlambda, const float *q2, const IndexType *indx, const IndexType *ctot, float *w, float *s) { CXXLAPACK_DEBUG_OUT("slaed3"); IndexType info; LAPACK_IMPL(slaed3)(&k, &n, &n1, d, Q, &ldQ, &rho, dlambda, q2, indx, ctot, w, s, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed3(IndexType k, IndexType n, IndexType n1, double *d, double *Q, IndexType ldQ, double &rho, double *dlambda, const double *q2, const IndexType *indx, const IndexType *ctot, double *w, double *s) { CXXLAPACK_DEBUG_OUT("dlaed3"); IndexType info; LAPACK_IMPL(dlaed3)(&k, &n, &n1, d, Q, &ldQ, &rho, dlambda, q2, indx, ctot, w, s, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED3_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed4.h000066400000000000000000000046251456314707100242340ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED4_H #define CXXLAPACK_INTERFACE_LAED4_H 1 #include namespace cxxlapack { template IndexType laed4(IndexType n, IndexType i, const float *d, const float *z, float *delta, float rho, float &dlam); template IndexType laed4(IndexType n, IndexType i, const double *d, const double *z, double *delta, double rho, double &dlam); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED4_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed4.tcc000066400000000000000000000064421456314707100245550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED4_TCC #define CXXLAPACK_INTERFACE_LAED4_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laed4(IndexType n, IndexType i, const float *d, const float *z, float *delta, float rho, float &dlam) { CXXLAPACK_DEBUG_OUT("slaed4"); IndexType info; LAPACK_IMPL(slaed4)(&n, &i, d, z, delta, &rho, &dlam, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed4(IndexType n, IndexType i, const double *d, const double *z, double *delta, double rho, double &dlam) { CXXLAPACK_DEBUG_OUT("dlaed4"); IndexType info; LAPACK_IMPL(dlaed4)(&n, &i, d, z, delta, &rho, &dlam, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED4_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed5.h000066400000000000000000000045171456314707100242350ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED5_H #define CXXLAPACK_INTERFACE_LAED5_H 1 #include namespace cxxlapack { template IndexType laed5(IndexType i, float *d, const float *z, const float *delta, float rho, float &dlam); template IndexType laed5(IndexType i, double *d, const double *z, const double *delta, double rho, double &dlam); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED5_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed5.tcc000066400000000000000000000062531456314707100245560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED5_TCC #define CXXLAPACK_INTERFACE_LAED5_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laed5(IndexType i, const float *d, const float *z, float *delta, float rho, float &dlam) { CXXLAPACK_DEBUG_OUT("slaed5"); IndexType info; LAPACK_IMPL(slaed5)(&i, d, z, delta, &rho, &dlam, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed5(IndexType i, const double *d, const double *z, double *delta, double rho, double &dlam) { CXXLAPACK_DEBUG_OUT("dlaed5"); IndexType info; LAPACK_IMPL(dlaed5)(&i, d, z, delta, &rho, &dlam, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED5_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed6.h000066400000000000000000000046451456314707100242400ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED6_H #define CXXLAPACK_INTERFACE_LAED6_H 1 #include namespace cxxlapack { template IndexType laed6(IndexType kniter, bool orgati, float rho, const float *d, const float *z, float finit, float &tau); template IndexType laed6(IndexType kniter, bool orgati, double rho, const double *d, const double *z, double finit, double &tau); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED6_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed6.tcc000066400000000000000000000066121456314707100245560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED6_TCC #define CXXLAPACK_INTERFACE_LAED6_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laed6(IndexType kniter, bool orgati, float rho, const float *d, const float *z, float finit, float &tau) { CXXLAPACK_DEBUG_OUT("slaed6"); IndexType info; IndexType orgati_ = orgati; LAPACK_IMPL(slaed6)(&kniter, &orgati_, &rho, d, z, &finit, &tau, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed6(IndexType kniter, bool orgati, double rho, const double *d, const double *z, double finit, double &tau) { CXXLAPACK_DEBUG_OUT("dlaed6"); IndexType info; IndexType orgati_ = orgati; LAPACK_IMPL(dlaed6)(&kniter, &orgati_, &rho, d, z, &finit, &tau, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED6_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed7.h000066400000000000000000000123021456314707100242260ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED7_H #define CXXLAPACK_INTERFACE_LAED7_H 1 #include namespace cxxlapack { template IndexType laed7(IndexType icompq, IndexType n, IndexType qsiz, IndexType tlvls, IndexType curlvl, IndexType curpbm, float *d, float *Q, IndexType ldQ, IndexType *indxq, float rho, IndexType cutpnt, float *qstore, const IndexType *qptr, const IndexType *prmptr, const IndexType *perm, const IndexType *givptr, const IndexType *givcol, const float *givnum, float *work, IndexType *iWork); template IndexType laed7(IndexType icompq, IndexType n, IndexType qsiz, IndexType tlvls, IndexType curlvl, IndexType curpbm, double *d, double *Q, IndexType ldQ, IndexType *indxq, double rho, IndexType cutpnt, double *qstore, const IndexType *qptr, const IndexType *prmptr, const IndexType *perm, const IndexType *givptr, const IndexType *givcol, const double *givnum, double *work, IndexType *iWork); template IndexType laed7(IndexType icompq, IndexType n, IndexType qsiz, IndexType tlvls, IndexType curlvl, IndexType curpbm, float *d, std::complex *Q, IndexType ldQ, float rho, IndexType *indxq, float *qstore, const IndexType *qptr, const IndexType *prmptr, const IndexType *perm, const IndexType *givptr, const IndexType *givcol, const float *givnum, std::complex *work, float *rWork, IndexType *iWork); template IndexType laed7(IndexType icompq, IndexType n, IndexType qsiz, IndexType tlvls, IndexType curlvl, IndexType curpbm, double *d, std::complex *Q, IndexType ldQ, double rho, IndexType *indxq, double *qstore, const IndexType *qptr, const IndexType *prmptr, const IndexType *perm, const IndexType *givptr, const IndexType *givcol, const double *givnum, std::complex *work, double *rWork, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED7_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed7.tcc000066400000000000000000000207701456314707100245600ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED7_TCC #define CXXLAPACK_INTERFACE_LAED7_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laed7(IndexType icompq, IndexType n, IndexType qsiz, IndexType tlvls, IndexType curlvl, IndexType curpbm, float *d, float *Q, IndexType ldQ, IndexType *indxq, float rho, IndexType cutpnt, float *qstore, const IndexType *qptr, const IndexType *prmptr, const IndexType *perm, const IndexType *givptr, const IndexType *givcol, const float *givnum, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("slaed7"); IndexType info; LAPACK_IMPL(slaed7)(&icompq, &n, &qsiz, &tlvls, &curlvl, &curpbm, d, Q, &ldQ, indxq, rho, &cutpnt, qstore, qptr, prmptr, perm, givptr, givcol, givnum, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed7(IndexType icompq, IndexType n, IndexType qsiz, IndexType tlvls, IndexType curlvl, IndexType curpbm, double *d, double *Q, IndexType ldQ, IndexType *indxq, double rho, IndexType cutpnt, double *qstore, const IndexType *qptr, const IndexType *prmptr, const IndexType *perm, const IndexType *givptr, const IndexType *givcol, const double *givnum, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("slaed7"); IndexType info; LAPACK_IMPL(dlaed7)(&icompq, &n, &qsiz, &tlvls, &curlvl, &curpbm, d, Q, &ldQ, indxq, rho, &cutpnt, qstore, qptr, prmptr, perm, givptr, givcol, givnum, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed7(IndexType icompq, IndexType n, IndexType qsiz, IndexType tlvls, IndexType curlvl, IndexType curpbm, float *d, std::complex *Q, IndexType ldQ, float rho, IndexType *indxq, float *qstore, const IndexType *qptr, const IndexType *prmptr, const IndexType *perm, const IndexType *givptr, const IndexType *givcol, const float *givnum, std::complex *work, float *rWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("claed7"); IndexType info; LAPACK_IMPL(claed7)(&icompq, &n, &qsiz, &tlvls, &curlvl, &curpbm, d, reinterpret_cast(Q), &ldQ, rho, indxq, qstore, qptr, prmptr, perm, givptr, givcol, givnum, reinterpret_cast(work), rWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed7(IndexType icompq, IndexType n, IndexType qsiz, IndexType tlvls, IndexType curlvl, IndexType curpbm, double *d, std::complex *Q, IndexType ldQ, double rho, IndexType *indxq, double *qstore, const IndexType *qptr, const IndexType *prmptr, const IndexType *perm, const IndexType *givptr, const IndexType *givcol, const double *givnum, std::complex *work, double *rWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("zlaed7"); IndexType info; LAPACK_IMPL(zlaed7)(&icompq, &n, &qsiz, &tlvls, &curlvl, &curpbm, d, reinterpret_cast(Q), &ldQ, rho, indxq, qstore, qptr, prmptr, perm, givptr, givcol, givnum, reinterpret_cast(work), rWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED7_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed8.h000066400000000000000000000120671456314707100242370ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED8_H #define CXXLAPACK_INTERFACE_LAED8_H 1 #include namespace cxxlapack { template IndexType laed8(IndexType icomq, IndexType &k, IndexType n, IndexType qsiz, float *d, float *Q, IndexType ldQ, const IndexType *indxq, float &rho, const IndexType *cutpnt, const float *z, float *dlambda, float *Q2, IndexType ldQ2, float *w, IndexType *perm, IndexType &givptr, IndexType &givcol, float *givnum, IndexType *indxp, IndexType *indx); template IndexType laed8(IndexType icomq, IndexType &k, IndexType n, IndexType qsiz, double *d, double *Q, IndexType ldQ, const IndexType *indxq, double &rho, const IndexType *cutpnt, const double *z, double *dlambda, double *Q2, IndexType ldQ2, double *w, IndexType *perm, IndexType &givptr, IndexType &givcol, double *givnum, IndexType *indxp, IndexType *indx); template IndexType laed8(IndexType &k, IndexType n, IndexType qsiz, std::complex *Q, IndexType ldQ, float *d, float &rho, const IndexType *cutpnt, const float *z, float *dlambda, std::complex *Q2, IndexType ldQ2, float *w, IndexType *indxp, IndexType *indx, const IndexType *indxq, IndexType *perm, IndexType &givptr, IndexType &givcol, float *givnum); template IndexType laed8(IndexType &k, IndexType n, IndexType qsiz, std::complex *Q, IndexType ldQ, double *d, double &rho, const IndexType *cutpnt, const double *z, double *dlambda, std::complex *Q2, IndexType ldQ2, double *w, IndexType *indxp, IndexType *indx, const IndexType *indxq, IndexType *perm, IndexType &givptr, IndexType &givcol, double *givnum); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED8_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed8.tcc000066400000000000000000000203721456314707100245570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_DUMMY_TCC #define CXXLAPACK_INTERFACE_DUMMY_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laed8(IndexType icomq, IndexType &k, IndexType n, IndexType qsiz, float *d, float *Q, IndexType ldQ, const IndexType *indxq, float &rho, const IndexType *cutpnt, const float *z, float *dlambda, float *Q2, IndexType ldQ2, float *w, IndexType *perm, IndexType &givptr, IndexType &givcol, float *givnum, IndexType *indxp, IndexType *indx) { CXXLAPACK_DEBUG_OUT("slaed8"); IndexType info; LAPACK_IMPL(slaed8)(&icomq, &k, &n, &qsiz, d, Q, &ldQ, indxq, &rho, cutpnt, z, dlambda, Q2, &ldQ2, w, perm, &givptr, &givcol, givnum, indxp, indx, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed8(IndexType icomq, IndexType &k, IndexType n, IndexType qsiz, double *d, double *Q, IndexType ldQ, const IndexType *indxq, double &rho, const IndexType *cutpnt, const double *z, double *dlambda, double *Q2, IndexType ldQ2, double *w, IndexType *perm, IndexType &givptr, IndexType &givcol, double *givnum, IndexType *indxp, IndexType *indx) { CXXLAPACK_DEBUG_OUT("dlaed8"); IndexType info; LAPACK_IMPL(dlaed8)(&icomq, &k, &n, &qsiz, d, Q, &ldQ, indxq, &rho, cutpnt, z, dlambda, Q2, &ldQ2, w, perm, &givptr, &givcol, givnum, indxp, indx, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed8(IndexType &k, IndexType n, IndexType qsiz, std::complex *Q, IndexType ldQ, float *d, float &rho, const IndexType *cutpnt, const float *z, float *dlambda, std::complex *Q2, IndexType ldQ2, float *w, IndexType *indxp, IndexType *indx, const IndexType *indxq, IndexType *perm, IndexType &givptr, IndexType &givcol, float *givnum) { CXXLAPACK_DEBUG_OUT("claed8"); IndexType info; LAPACK_IMPL(claed8)(&k, &n, &qsiz, reinterpret_cast(Q), &ldQ, d, &rho, cutpnt, z, dlambda, reinterpret_cast(Q2), &ldQ2, w, indxp, indx, indxq, perm, &givptr, &givcol, givnum, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed8(IndexType &k, IndexType n, IndexType qsiz, std::complex *Q, IndexType ldQ, double *d, double &rho, const IndexType *cutpnt, const double *z, double *dlambda, std::complex *Q2, IndexType ldQ2, double *w, IndexType *indxp, IndexType *indx, const IndexType *indxq, IndexType *perm, IndexType &givptr, IndexType &givcol, double *givnum) { CXXLAPACK_DEBUG_OUT("zlaed8"); IndexType info; LAPACK_IMPL(zlaed8)(&k, &n, &qsiz, reinterpret_cast(Q), &ldQ, d, &rho, cutpnt, z, dlambda, reinterpret_cast(Q2), &ldQ2, w, indxp, indx, indxq, perm, &givptr, &givcol, givnum, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_DUMMY_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed9.h000066400000000000000000000054151456314707100242370ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED9_H #define CXXLAPACK_INTERFACE_LAED9_H 1 #include namespace cxxlapack { template IndexType laed9(IndexType k, IndexType kstart, IndexType kstop, IndexType n, float *d, float *Q, IndexType ldQ, float rho, const float *dlambda, const float *w, float *S, IndexType ldS); template IndexType laed9(IndexType k, IndexType kstart, IndexType kstop, IndexType n, double *d, double *Q, IndexType ldQ, double rho, const double *dlambda, const double *w, double *S, IndexType ldS); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED9_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laed9.tcc000066400000000000000000000076361456314707100245700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAED9_TCC #define CXXLAPACK_INTERFACE_LAED9_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laed9(IndexType k, IndexType kstart, IndexType kstop, IndexType n, float *d, float *Q, IndexType ldQ, float rho, const float *dlambda, const float *w, float *S, IndexType ldS) { CXXLAPACK_DEBUG_OUT("slaed9"); IndexType info; LAPACK_IMPL(slaed9)(&k, &kstart, &kstop, &n, d, Q, &ldQ, &rho, dlambda, w, S, &ldS, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laed9(IndexType k, IndexType kstart, IndexType kstop, IndexType n, double *d, double *Q, IndexType ldQ, double rho, const double *dlambda, const double *w, double *S, IndexType ldS) { CXXLAPACK_DEBUG_OUT("dlaed9"); IndexType info; LAPACK_IMPL(dlaed9)(&k, &kstart, &kstop, &n, d, Q, &ldQ, &rho, dlambda, w, S, &ldS, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAED9_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laeda.h000066400000000000000000000056111456314707100243050ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAEDA_H #define CXXLAPACK_INTERFACE_LAEDA_H 1 #include namespace cxxlapack { template IndexType laeda(IndexType n, IndexType tlvls, IndexType curlvl, IndexType curpbm, const IndexType *prmptr, const IndexType *perm, const IndexType *givptr, const IndexType *givcol, const float *givnum, const float *q, const IndexType *qptr, float *z, float *ztemp); template IndexType laeda(IndexType n, IndexType tlvls, IndexType curlvl, IndexType curpbm, const IndexType *prmptr, const IndexType *perm, const IndexType *givptr, const IndexType *givcol, const double *givnum, const double *q, const IndexType *qptr, double *z, double *ztemp); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAEDA_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laeda.tcc000066400000000000000000000101601456314707100246220ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAEDA_TCC #define CXXLAPACK_INTERFACE_LAEDA_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laeda(IndexType n, IndexType tlvls, IndexType curlvl, IndexType curpbm, const IndexType *prmptr, const IndexType *perm, const IndexType *givptr, const IndexType *givcol, const float *givnum, const float *q, const IndexType *qptr, float *z, float *ztemp) { CXXLAPACK_DEBUG_OUT("slaeda"); IndexType info; LAPACK_IMPL(slaeda)(&n, &tlvls, &curlvl, &curpbm, prmptr, perm, givptr, givcol, givnum, q, qptr, z, ztemp, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laeda(IndexType n, IndexType tlvls, IndexType curlvl, IndexType curpbm, const IndexType *prmptr, const IndexType *perm, const IndexType *givptr, const IndexType *givcol, const double *givnum, const double *q, const IndexType *qptr, double *z, double *ztemp) { CXXLAPACK_DEBUG_OUT("dlaeda"); IndexType info; LAPACK_IMPL(dlaeda)(&n, &tlvls, &curlvl, &curpbm, prmptr, perm, givptr, givcol, givnum, q, qptr, z, ztemp, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAEDA_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laein.h000066400000000000000000000103051456314707100243230ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAEIN_H #define CXXLAPACK_INTERFACE_LAEIN_H 1 #include namespace cxxlapack { template IndexType laein(bool rightv, bool noinit, IndexType n, const float *H, IndexType ldH, const float wr, const float wi, float *vr, float *vi, float *B, IndexType ldB, float *work, float eps3, float smlnum, float bignum); template IndexType laein(bool rightv, bool noinit, IndexType n, const double *H, IndexType ldH, const double wr, const double wi, double *vr, double *vi, double *B, IndexType ldB, double *work, double eps3, double smlnum, double bignum); template IndexType laein(bool rightv, bool noinit, IndexType n, const std::complex *H, IndexType ldH, const std::complex w, std::complex *v, std::complex *B, IndexType ldB, float *rWork, float eps3, float smlnum, float bignum); template IndexType laein(bool rightv, bool noinit, IndexType n, const std::complex *H, IndexType ldH, const std::complex w, std::complex *v, std::complex *B, IndexType ldB, double *rWork, double eps3, double smlnum, double bignum); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAEIN_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laein.tcc000066400000000000000000000161631456314707100246550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAEIN_TCC #define CXXLAPACK_INTERFACE_LAEIN_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laein(bool rightv, bool noinit, IndexType n, const float *H, IndexType ldH, const float wr, const float wi, float *vr, float *vi, float *B, IndexType ldB, float *work, float eps3, float smlnum, float bignum) { CXXLAPACK_DEBUG_OUT("slaein"); IndexType info; IndexType rightv_ = rightv; IndexType noinit_ = noinit; LAPACK_IMPL(slaein)(&rightv_, &noinit_, &n, H, &ldH, &wr, &wi, vr, vi, B, &ldB, work, &eps3, &smlnum, &bignum, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laein(bool rightv, bool noinit, IndexType n, const double *H, IndexType ldH, const double wr, const double wi, double *vr, double *vi, double *B, IndexType ldB, double *work, double eps3, double smlnum, double bignum) { CXXLAPACK_DEBUG_OUT("dlaein"); IndexType info; IndexType rightv_ = rightv; IndexType noinit_ = noinit; LAPACK_IMPL(dlaein)(&rightv_, &noinit_, &n, H, &ldH, &wr, &wi, vr, vi, B, &ldB, work, &eps3, &smlnum, &bignum, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laein(bool rightv, bool noinit, IndexType n, const std::complex *H, IndexType ldH, const std::complex w, std::complex *v, std::complex *B, IndexType ldB, float *rWork, float eps3, float smlnum, float bignum) { CXXLAPACK_DEBUG_OUT("claein"); IndexType info; IndexType rightv_ = rightv; IndexType noinit_ = noinit; LAPACK_IMPL(claein)(&rightv_, &noinit_, &n, reinterpret_cast(H), &ldH, reinterpret_cast(&w), reinterpret_cast(v), reinterpret_cast(B), &ldB, rWork, &eps3, &smlnum, &bignum, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laein(bool rightv, bool noinit, IndexType n, const std::complex *H, IndexType ldH, const std::complex w, std::complex *v, std::complex *B, IndexType ldB, double *rWork, double eps3, double smlnum, double bignum) { CXXLAPACK_DEBUG_OUT("zlaein"); IndexType info; IndexType rightv_ = rightv; IndexType noinit_ = noinit; LAPACK_IMPL(zlaein)(&rightv_, &noinit_, &n, reinterpret_cast(H), &ldH, reinterpret_cast(&w), reinterpret_cast(v), reinterpret_cast(B), &ldB, rWork, &eps3, &smlnum, &bignum, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAEIN_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laesy.h000066400000000000000000000047511456314707100243600ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAESY_H #define CXXLAPACK_INTERFACE_LAESY_H 1 #include namespace cxxlapack { template void laesy(std::complex a, std::complex b, std::complex c, std::complex &rt1, std::complex &rt2, std::complex &evscal, std::complex &cs1, std::complex &sn1); template void laesy(std::complex a, std::complex b, std::complex c, std::complex &rt1, std::complex &rt2, std::complex &evscal, std::complex &cs1, std::complex &sn1); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAESY_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laesy.tcc000066400000000000000000000070161456314707100246770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAESY_TCC #define CXXLAPACK_INTERFACE_LAESY_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laesy(std::complex a, std::complex b, std::complex c, std::complex &rt1, std::complex &rt2, std::complex &evscal, std::complex &cs1, std::complex &sn1) { CXXLAPACK_DEBUG_OUT("claesy"); LAPACK_IMPL(claesy)(reinterpret_cast(&a), reinterpret_cast(&b), reinterpret_cast(&c), reinterpret_cast(&rt1), reinterpret_cast(&rt2), reinterpret_cast(&evscal), reinterpret_cast(&cs1), reinterpret_cast(&sn1)); } template void laesy(std::complex a, std::complex b, std::complex c, std::complex &rt1, std::complex &rt2, std::complex &evscal, std::complex &cs1, std::complex &sn1) { CXXLAPACK_DEBUG_OUT("zlaesy"); LAPACK_IMPL(zlaesy)(reinterpret_cast(&a), reinterpret_cast(&b), reinterpret_cast(&c), reinterpret_cast(&rt1), reinterpret_cast(&rt2), reinterpret_cast(&evscal), reinterpret_cast(&cs1), reinterpret_cast(&sn1)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAESY_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laev2.h000066400000000000000000000057721456314707100242600ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAEV2_H #define CXXLAPACK_INTERFACE_LAEV2_H 1 #include namespace cxxlapack { template void laev2(float a, float b, float c, float &rt1, float &rt2, float &cs1, float &sn1); template void laev2(double a, double b, double c, double &rt1, double &rt2, double &cs1, double &sn1); template void laev2(std::complex a, std::complex b, std::complex c, float &rt1, float &rt2, float &cs1, std::complex &sn1); template void laev2(std::complex a, std::complex b, std::complex c, double &rt1, double &rt2, double &cs1, std::complex &sn1); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAEV2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laev2.tcc000066400000000000000000000102371456314707100245720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAEV2_TCC #define CXXLAPACK_INTERFACE_LAEV2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laev2(float a, float b, float c, float &rt1, float &rt2, float &cs1, float &sn1) { CXXLAPACK_DEBUG_OUT("slaev2"); LAPACK_IMPL(slaev2)(&a, &b, &c, &rt1, &rt2, &cs1, &sn1); } template void laev2(double a, double b, double c, double &rt1, double &rt2, double &cs1, double &sn1) { CXXLAPACK_DEBUG_OUT("dlaev2"); LAPACK_IMPL(dlaev2)(&a, &b, &c, &rt1, &rt2, &cs1, &sn1); } template void laev2(std::complex a, std::complex b, std::complex c, float &rt1, float &rt2, float &cs1, std::complex &sn1) { CXXLAPACK_DEBUG_OUT("claev2"); LAPACK_IMPL(claev2)(reinterpret_cast(&a), reinterpret_cast(&b), reinterpret_cast(&c), &rt1, &rt2, &cs1, reinterpret_cast(&sn1)); } template void laev2(std::complex a, std::complex b, std::complex c, double &rt1, double &rt2, double &cs1, std::complex &sn1) { CXXLAPACK_DEBUG_OUT("zlaev2"); LAPACK_IMPL(zlaev2)(reinterpret_cast(&a), reinterpret_cast(&b), reinterpret_cast(&c), &rt1, &rt2, &cs1, reinterpret_cast(&sn1)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAEV2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laexc.h000066400000000000000000000046771456314707100243460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAEXC_H #define CXXLAPACK_INTERFACE_LAEXC_H 1 #include namespace cxxlapack { template IndexType laexc(bool wantQ, IndexType n, float *T, IndexType ldT, float *Q, IndexType ldQ, IndexType j1, IndexType n1, IndexType n2, float *work); template IndexType laexc(bool wantQ, IndexType n, double *T, IndexType ldT, double *Q, IndexType ldQ, IndexType j1, IndexType n1, IndexType n2, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAEXC_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laexc.tcc000066400000000000000000000070441456314707100246570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAEXC_TCC #define CXXLAPACK_INTERFACE_LAEXC_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laexc(bool wantQ, IndexType n, float *T, IndexType ldT, float *Q, IndexType ldQ, IndexType j1, IndexType n1, IndexType n2, float *work) { CXXLAPACK_DEBUG_OUT("slaexc"); IndexType info; IndexType wantQ_ = wantQ; LAPACK_IMPL(slaexc)(&wantQ_, &n, T, &ldT, Q, &ldQ, &j1, &n1, &n2, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laexc(bool wantQ, IndexType n, double *T, IndexType ldT, double *Q, IndexType ldQ, IndexType j1, IndexType n1, IndexType n2, double *work) { CXXLAPACK_DEBUG_OUT("dlaexc"); IndexType info; IndexType wantQ_ = wantQ; LAPACK_IMPL(dlaexc)(&wantQ_, &n, T, &ldT, Q, &ldQ, &j1, &n1, &n2, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAEXC_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lag2.h000066400000000000000000000051541456314707100240660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAG2_H #define CXXLAPACK_INTERFACE_LAG2_H 1 #include namespace cxxlapack { template void lag2(const float *A, IndexType ldA, const float *B, IndexType ldB, float safemin, float &scale1, float &scale2, float &wr1, float &wr2, float &wi); template void lag2(const double *A, IndexType ldA, const double *B, IndexType ldB, double safemin, double &scale1, double &scale2, double &wr1, double &wr2, double &wi); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAG2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lag2.tcc000066400000000000000000000064431456314707100244120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAG2_TCC #define CXXLAPACK_INTERFACE_LAG2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lag2(const float *A, IndexType ldA, const float *B, IndexType ldB, float safemin, float &scale1, float &scale2, float &wr1, float &wr2, float &wi) { CXXLAPACK_DEBUG_OUT("slag2"); LAPACK_IMPL(slag2)(A, &ldA, B, &ldB, &safemin, &scale1, &scale2, &wr1, &wr2, &wi); } template void lag2(const double *A, IndexType ldA, const double *B, IndexType ldB, double safemin, double &scale1, double &scale2, double &wr1, double &wr2, double &wi) { CXXLAPACK_DEBUG_OUT("dlag2"); LAPACK_IMPL(dlag2)(A, &ldA, B, &ldB, &safemin, &scale1, &scale2, &wr1, &wr2, &wi); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAG2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lag2c.h000066400000000000000000000041411456314707100242240ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAG2C_H #define CXXLAPACK_INTERFACE_LAG2C_H 1 #include namespace cxxlapack { template IndexType lag2c(IndexType m, IndexType n, const std::complex *A, IndexType ldA, std::complex *Sa, IndexType ldSa); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAG2C_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lag2c.tcc000066400000000000000000000051751456314707100245560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAG2C_TCC #define CXXLAPACK_INTERFACE_LAG2C_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lag2c(IndexType m, IndexType n, const std::complex *A, IndexType ldA, std::complex *Sa, IndexType ldSa) { CXXLAPACK_DEBUG_OUT("zlag2c"); IndexType info; LAPACK_IMPL(zlag2c)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Sa), &ldSa, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAG2C_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lag2d.h000066400000000000000000000040751456314707100242330ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAG2S_H #define CXXLAPACK_INTERFACE_LAG2S_H 1 #include namespace cxxlapack { template IndexType lag2d(IndexType m, IndexType n, const float *Sa, IndexType ldSa, double *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAG2S_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lag2d.tcc000066400000000000000000000050341456314707100245510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAG2D_TCC #define CXXLAPACK_INTERFACE_LAG2D_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lag2d(IndexType m, IndexType n, const float *Sa, IndexType ldSa, double *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("slag2d"); IndexType info; LAPACK_IMPL(slag2d)(&m, &n, Sa, &ldSa, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAG2D_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lag2s.h000066400000000000000000000040751456314707100242520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAG2S_H #define CXXLAPACK_INTERFACE_LAG2S_H 1 #include namespace cxxlapack { template IndexType lag2s(IndexType m, IndexType n, const double *A, IndexType ldA, float *SA, IndexType ldSA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAG2S_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lag2s.tcc000066400000000000000000000050341456314707100245700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAG2S_TCC #define CXXLAPACK_INTERFACE_LAG2S_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lag2s(IndexType m, IndexType n, const double *A, IndexType ldA, float *SA, IndexType ldSA) { CXXLAPACK_DEBUG_OUT("dlag2s"); IndexType info; LAPACK_IMPL(dlag2s)(&m, &n, A, &ldA, SA, &ldSA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAG2S_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lag2z.h000066400000000000000000000040751456314707100242610ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAG2Z_H #define CXXLAPACK_INTERFACE_LAG2Z_H 1 #include namespace cxxlapack { template IndexType lag2z(IndexType m, IndexType n, std::complex *Sa, IndexType ldSa, std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAG2Z_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lag2z.tcc000066400000000000000000000051231456314707100245760ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAG2Z_TCC #define CXXLAPACK_INTERFACE_LAG2Z_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lag2z(IndexType m, IndexType n, std::complex *Sa, IndexType ldSa, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("clag2z"); IndexType info; LAPACK_IMPL(clag2z)(&m, &n, reinterpret_cast(Sa), &ldSa, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAG2Z_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lags2.h000066400000000000000000000076011456314707100242500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAGS2_H #define CXXLAPACK_INTERFACE_LAGS2_H 1 #include namespace cxxlapack { template void lags2(bool upper, float a1, float a2, float a3, float b1, float b2, float b3, float &csu, float &snu, float &csv, float &snv, float &csq, float &snq); template void lags2(bool upper, double a1, double a2, double a3, double b1, double b2, double b3, double &csu, double &snu, double &csv, double &snv, double &csq, double &snq); template void lags2(bool upper, float a1, std::complex a2, float a3, float b1, std::complex b2, float b3, float &csu, std::complex &snu, float &csv, std::complex &snv, float &csq, std::complex &snq); template void lags2(bool upper, double a1, std::complex a2, double a3, double b1, std::complex b2, double b3, double &csu, std::complex &snu, double &csv, std::complex &snv, double &csq, std::complex &snq); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAGS2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lags2.tcc000066400000000000000000000135041456314707100245710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAGS2_TCC #define CXXLAPACK_INTERFACE_LAGS2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lags2(bool upper, float a1, float a2, float a3, float b1, float b2, float b3, float &csu, float &snu, float &csv, float &snv, float &csq, float &snq) { CXXLAPACK_DEBUG_OUT("slags2"); LOGICAL upper_ = upper; LAPACK_IMPL(slags2)(&upper_, &a1, &a2, &a3, &b1, &b2, &b3, &csu, &snu, &csv, &snv, &csq, &snq); } template void lags2(bool upper, double a1, double a2, double a3, double b1, double b2, double b3, double &csu, double &snu, double &csv, double &snv, double &csq, double &snq) { CXXLAPACK_DEBUG_OUT("dlags2"); LOGICAL upper_ = upper; LAPACK_IMPL(dlags2)(&upper_, &a1, &a2, &a3, &b1, &b2, &b3, &csu, &snu, &csv, &snv, &csq, &snq); } template void lags2(bool upper, float a1, std::complex a2, float a3, float b1, std::complex b2, float b3, float &csu, std::complex &snu, float &csv, std::complex &snv, float &csq, std::complex &snq) { CXXLAPACK_DEBUG_OUT("clags2"); LOGICAL upper_ = upper; LAPACK_IMPL(clags2)(&upper_, &a1, reinterpret_cast(&a2), &a3, &b1, reinterpret_cast(&b2), &b3, &csu, reinterpret_cast(&snu), &csv, reinterpret_cast(&snv), &csq, reinterpret_cast(&snq)); } template void lags2(bool upper, double a1, std::complex a2, double a3, double b1, std::complex b2, double b3, double &csu, std::complex &snu, double &csv, std::complex &snv, double &csq, std::complex &snq) { CXXLAPACK_DEBUG_OUT("zlags2"); LOGICAL upper_ = upper; LAPACK_IMPL(zlags2)(&upper_, &a1, reinterpret_cast(&a2), &a3, &b1, reinterpret_cast(&b2), &b3, &csu, reinterpret_cast(&snu), &csv, reinterpret_cast(&snv), &csq, reinterpret_cast(&snq)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAGS2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lagtf.h000066400000000000000000000047331456314707100243400ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAGTF_H #define CXXLAPACK_INTERFACE_LAGTF_H 1 #include namespace cxxlapack { template IndexType lagtf(IndexType n, float *a, IndexType lambda, float *b, float *c, float tol, float *d, IndexType *in); template IndexType lagtf(IndexType n, double *a, IndexType lambda, double *b, double *c, double tol, double *d, IndexType *in); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAGTF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lagtf.tcc000066400000000000000000000066241456314707100246630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAGTF_TCC #define CXXLAPACK_INTERFACE_LAGTF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lagtf(IndexType n, float *a, IndexType lambda, float *b, float *c, float tol, float *d, IndexType *in) { CXXLAPACK_DEBUG_OUT("slagtf2"); IndexType info; LAPACK_IMPL(slagtf)(&n, a, &lambda, b, c, &tol, d, in, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lagtf(IndexType n, double *a, IndexType lambda, double *b, double *c, double tol, double *d, IndexType *in) { CXXLAPACK_DEBUG_OUT("dlagtf2"); IndexType info; LAPACK_IMPL(dlagtf)(&n, a, &lambda, b, c, &tol, d, in, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAGTF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lagtm.h000066400000000000000000000075611456314707100243510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAGTM_H #define CXXLAPACK_INTERFACE_LAGTM_H 1 #include namespace cxxlapack { template IndexType lagtm(char trans, IndexType n, IndexType nRhs, float alpha, const float *dl, const float *d, const float *du, const float *X, IndexType ldX, float beta, float *B, IndexType ldB); template IndexType lagtm(char trans, IndexType n, IndexType nRhs, double alpha, const double *dl, const double *d, const double *du, const double *X, IndexType ldX, double beta, double *B, IndexType ldB); template IndexType lagtm(char trans, IndexType n, IndexType nRhs, float alpha, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *X, IndexType ldX, float beta, std::complex *B, IndexType ldB); template IndexType lagtm(char trans, IndexType n, IndexType nRhs, double alpha, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *X, IndexType ldX, double beta, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAGTM_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lagtm.tcc000066400000000000000000000131231456314707100246620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAGTM_TCC #define CXXLAPACK_INTERFACE_LAGTM_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lagtm(char trans, IndexType n, IndexType nRhs, float alpha, const float *dl, const float *d, const float *du, const float *X, IndexType ldX, float beta, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("slagtm"); LAPACK_IMPL(slagtm)(&trans, &n, &nRhs, alpha, dl, d, du, X, &ldX, &beta, B, &ldB); } template void lagtm(char trans, IndexType n, IndexType nRhs, double alpha, const double *dl, const double *d, const double *du, const double *X, IndexType ldX, double beta, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dlagtm"); LAPACK_IMPL(dlagtm)(&trans, &n, &nRhs, alpha, dl, d, du, X, &ldX, &beta, B, &ldB); } template void lagtm(char trans, IndexType n, IndexType nRhs, float alpha, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *X, IndexType ldX, float beta, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("clagtm"); LAPACK_IMPL(clagtm)(&trans, &n, &nRhs, alpha, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(X), &ldX, &beta, reinterpret_cast(B), &ldB); } template void lagtm(char trans, IndexType n, IndexType nRhs, double alpha, const std::complex *dl, const std::complex *d, const std::complex *du, const std::complex *X, IndexType ldX, double beta, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zlagtm"); LAPACK_IMPL(zlagtm)(&trans, &n, &nRhs, alpha, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du), reinterpret_cast(X), &ldX, &beta, reinterpret_cast(B), &ldB); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAGTM_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lagts.h000066400000000000000000000050371456314707100243530ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAGTS_H #define CXXLAPACK_INTERFACE_LAGTS_H 1 #include namespace cxxlapack { template IndexType lagts(IndexType job, IndexType n, const float *a, const float *b, const float *c, const float *d, const IndexType *in, float *y, float &tol); template IndexType lagts(IndexType job, IndexType n, const double *a, const double *b, const double *c, const double *d, const IndexType *in, double *y, double &tol); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAGTS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lagts.tcc000066400000000000000000000067761456314707100247100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAGTS_TCC #define CXXLAPACK_INTERFACE_LAGTS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lagts(IndexType job, IndexType n, const float *a, const float *b, const float *c, const float *d, const IndexType *in, float *y, float &tol) { CXXLAPACK_DEBUG_OUT("slagts"); IndexType info; LAPACK_IMPL(slagts)(&job, &n, a, b, c, d, in, y, &tol, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lagts(IndexType job, IndexType n, const double *a, const double *b, const double *c, const double *d, const IndexType *in, double *y, double &tol) { CXXLAPACK_DEBUG_OUT("dlagts"); IndexType info; LAPACK_IMPL(dlagts)(&job, &n, a, b, c, d, in, y, &tol, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAGTS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lagv2.h000066400000000000000000000053131456314707100242510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAGV2_H #define CXXLAPACK_INTERFACE_LAGV2_H 1 #include namespace cxxlapack { template void lagv2(float A, IndexType ldA, float *B, IndexType ldB, float *alphar, float *alphai, float *beta, float &csl, float &snl, float &csr, float &snr); template void lagv2(double A, IndexType ldA, double *B, IndexType ldB, double *alphar, double *alphai, double *beta, double &csl, double &snl, double &csr, double &snr); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAGV2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lagv2.tcc000066400000000000000000000066621456314707100246030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAGV2_TCC #define CXXLAPACK_INTERFACE_LAGV2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lagv2(float A, IndexType ldA, float *B, IndexType ldB, float *alphar, float *alphai, float *beta, float &csl, float &snl, float &csr, float &snr) { CXXLAPACK_DEBUG_OUT("slagv2"); LAPACK_IMPL(slagv2)(A, &ldA, B, &ldB, alphar, alphai, beta, &csl, &snl, &csr, &snr); } template void lagv2(double A, IndexType ldA, double *B, IndexType ldB, double *alphar, double *alphai, double *beta, double &csl, double &snl, double &csr, double &snr) { CXXLAPACK_DEBUG_OUT("dlagv2"); LAPACK_IMPL(dlagv2)(A, &ldA, B, &ldB, alphar, alphai, beta, &csl, &snl, &csr, &snr); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAGV2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lahef.h000066400000000000000000000050471456314707100243210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAHEF_H #define CXXLAPACK_INTERFACE_LAHEF_H 1 #include namespace cxxlapack { template IndexType lahef(char uplo, IndexType n, IndexType nb, IndexType &kb, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *W, IndexType ldW); template IndexType lahef(char uplo, IndexType n, IndexType nb, IndexType &kb, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *W, IndexType ldW); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAHEF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lahef.tcc000066400000000000000000000072101456314707100246350ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAHEF_TCC #define CXXLAPACK_INTERFACE_LAHEF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lahef(char uplo, IndexType n, IndexType nb, IndexType &kb, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *W, IndexType ldW) { CXXLAPACK_DEBUG_OUT("clahef"); IndexType info; LAPACK_IMPL(clahef)(&uplo, &n, &nb, &kb, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(W), ldW, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lahef(char uplo, IndexType n, IndexType nb, IndexType &kb, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *W, IndexType ldW) { CXXLAPACK_DEBUG_OUT("zlahef"); IndexType info; LAPACK_IMPL(zlahef)(&uplo, &n, &nb, &kb, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(W), ldW, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAHEF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lahqr.h000066400000000000000000000072551456314707100243540ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAHQR_H #define CXXLAPACK_INTERFACE_LAHQR_H 1 #include namespace cxxlapack { template IndexType lahqr(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, float *H, IndexType ldH, float *wr, float *wi, IndexType iLoZ, IndexType iHiZ, float *Z, IndexType ldZ); template IndexType lahqr(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, double *H, IndexType ldH, double *wr, double *wi, IndexType iLoZ, IndexType iHiZ, double *Z, IndexType ldZ); template IndexType lahqr(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ); template IndexType lahqr(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAHQR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lahqr.tcc000066400000000000000000000146201456314707100246700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAHQR_TCC #define CXXLAPACK_INTERFACE_LAHQR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lahqr(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, float *H, IndexType ldH, float *wr, float *wi, IndexType iLoZ, IndexType iHiZ, float *Z, IndexType ldZ) { CXXLAPACK_DEBUG_OUT("slahqr"); IndexType info; IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(slahqr)(&wantT_, &wantZ_, &n, &iLo, &iHi, H, &ldH, wr, wi, &iLoZ, &iHiZ, Z, &ldZ, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lahqr(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, double *H, IndexType ldH, double *wr, double *wi, IndexType iLoZ, IndexType iHiZ, double *Z, IndexType ldZ) { CXXLAPACK_DEBUG_OUT("dlahqr"); IndexType info; IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(dlahqr)(&wantT_, &wantZ_, &n, &iLo, &iHi, H, &ldH, wr, wi, &iLoZ, &iHiZ, Z, &ldZ, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lahqr(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ) { CXXLAPACK_DEBUG_OUT("clahqr"); IndexType info; IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(clahqr)(&wantT_, &wantZ_, &n, &iLo, &iHi, reinterpret_cast(H), &ldH, reinterpret_cast(w), &iLoZ, &iHiZ, reinterpret_cast(Z), &ldZ, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lahqr(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ) { CXXLAPACK_DEBUG_OUT("zlahqr"); IndexType info; IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(zlahqr)(&wantT_, &wantZ_, &n, &iLo, &iHi, reinterpret_cast(H), &ldH, reinterpret_cast(w), &iLoZ, &iHiZ, reinterpret_cast(Z), &ldZ, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAHQR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lahr2.h000066400000000000000000000064461456314707100242560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAHR2_H #define CXXLAPACK_INTERFACE_LAHR2_H 1 #include namespace cxxlapack { template void lahr2(IndexType n, IndexType k, IndexType nb, float *A, IndexType ldA, float *tau, float *T, IndexType ldT, float *Y, IndexType ldY); template void lahr2(IndexType n, IndexType k, IndexType nb, double *A, IndexType ldA, double *tau, double *T, IndexType ldT, double *Y, IndexType ldY); template void lahr2(IndexType n, IndexType k, IndexType nb, std::complex *A, IndexType ldA, std::complex *tau, std::complex *T, IndexType ldT, std::complex *Y, IndexType ldY); template void lahr2(IndexType n, IndexType k, IndexType nb, std::complex *A, IndexType ldA, std::complex *tau, std::complex *T, IndexType ldT, std::complex *Y, IndexType ldY); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAHR2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lahr2.tcc000066400000000000000000000114261456314707100245720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAHR2_TCC #define CXXLAPACK_INTERFACE_LAHR2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lahr2(IndexType n, IndexType k, IndexType nb, float *A, IndexType ldA, float *tau, float *T, IndexType ldT, float *Y, IndexType ldY) { CXXLAPACK_DEBUG_OUT("slahr2"); LAPACK_IMPL(slahr2)(&n, &k, &nb, A, &ldA, tau, T, &ldT, Y, &ldY); } template void lahr2(IndexType n, IndexType k, IndexType nb, double *A, IndexType ldA, double *tau, double *T, IndexType ldT, double *Y, IndexType ldY) { CXXLAPACK_DEBUG_OUT("dlahr2"); LAPACK_IMPL(dlahr2)(&n, &k, &nb, A, &ldA, tau, T, &ldT, Y, &ldY); } template void lahr2(IndexType n, IndexType k, IndexType nb, std::complex *A, IndexType ldA, std::complex *tau, std::complex *T, IndexType ldT, std::complex *Y, IndexType ldY) { CXXLAPACK_DEBUG_OUT("clahr2"); LAPACK_IMPL(clahr2)(&n, &k, &nb, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(T), &ldT, reinterpret_cast(Y), &ldY); } template void lahr2(IndexType n, IndexType k, IndexType nb, std::complex *A, IndexType ldA, std::complex *tau, std::complex *T, IndexType ldT, std::complex *Y, IndexType ldY) { CXXLAPACK_DEBUG_OUT("zlahr2"); LAPACK_IMPL(zlahr2)(&n, &k, &nb, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(T), &ldT, reinterpret_cast(Y), &ldY); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAHR2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lahrd.h000066400000000000000000000066061456314707100243360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAHRD_H #define CXXLAPACK_INTERFACE_LAHRD_H 1 #include namespace cxxlapack { template void lahrd(IndexType n, IndexType k, IndexType nb, float *A, IndexType ldA, float *tau, float *T, IndexType ldT, float *Y, IndexType ldY); template void lahrd(IndexType n, IndexType k, IndexType nb, double *A, IndexType ldA, double *tau, double *T, IndexType ldT, double *Y, IndexType ldY); template void lahrd(IndexType n, IndexType k, IndexType nb, std::complex *A, IndexType ldA, std::complex *tau, std::complex *T, IndexType ldT, std::complex *Y, IndexType ldY); template void lahrd(IndexType n, IndexType k, IndexType nb, std::complex *A, IndexType ldA, std::complex *tau, std::complex *T, IndexType ldT, std::complex *Y, IndexType ldY); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAHRD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lahrd.tcc000066400000000000000000000114601456314707100246520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAHRD_TCC #define CXXLAPACK_INTERFACE_LAHRD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lahrd(IndexType n, IndexType k, IndexType nb, float *A, IndexType ldA, float *tau, float *T, IndexType ldT, float *Y, IndexType ldY) { CXXLAPACK_DEBUG_OUT("slahrd"); LAPACK_IMPL(slahrd)(&n, &k, &nb, A, &ldA, tau, T, &ldT, Y, &ldY); } template void lahrd(IndexType n, IndexType k, IndexType nb, double *A, IndexType ldA, double *tau, double *T, IndexType ldT, double *Y, IndexType ldY) { CXXLAPACK_DEBUG_OUT("dlahrd"); LAPACK_IMPL(dlahrd)(&n, &k, &nb, A, &ldA, tau, T, &ldT, Y, &ldY); } template void lahrd(IndexType n, IndexType k, IndexType nb, std::complex *A, IndexType ldA, std::complex *tau, std::complex *T, IndexType ldT, std::complex *Y, IndexType ldY) { CXXLAPACK_DEBUG_OUT("clahrd"); LAPACK_IMPL(clahrd)(&n, &k, &nb, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(T), &ldT, reinterpret_cast(Y), &ldY); } template void lahrd(IndexType n, IndexType k, IndexType nb, std::complex *A, IndexType ldA, std::complex *tau, std::complex *T, IndexType ldT, std::complex *Y, IndexType ldY) { CXXLAPACK_DEBUG_OUT("zlahrd"); LAPACK_IMPL(zlahrd)(&n, &k, &nb, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(T), &ldT, reinterpret_cast(Y), &ldY); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAHRD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laic1.h000066400000000000000000000063371456314707100242360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAIC1_H #define CXXLAPACK_INTERFACE_LAIC1_H 1 #include namespace cxxlapack { template void laic1(IndexType job, IndexType j, const float *x, float sEst, const float *w, float gamma, float &sEstPr, float &s, float &c); template void laic1(IndexType job, IndexType j, const double *x, double sEst, const double *w, double gamma, double &sEstPr, double &s, double &c); template void laic1(IndexType job, IndexType j, const std::complex *x, float sEst, const std::complex *w, const std::complex &gamma, float &sEstPr, std::complex &s, std::complex &c); template void laic1(IndexType job, IndexType j, const std::complex *x, double sEst, const std::complex *w, const std::complex &gamma, double &sEstPr, std::complex &s, std::complex &c); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAIC1_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laic1.tcc000066400000000000000000000112411456314707100245460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAIC1_TCC #define CXXLAPACK_INTERFACE_LAIC1_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laic1(IndexType job, IndexType j, const float *x, float sEst, const float *w, float gamma, float &sEstPr, float &s, float &c) { CXXLAPACK_DEBUG_OUT("slaic1"); LAPACK_IMPL(slaic1)(&job, &j, x, &sEst, w, &gamma, &sEstPr, &s, &c); } template void laic1(IndexType job, IndexType j, const double *x, double sEst, const double *w, double gamma, double &sEstPr, double &s, double &c) { CXXLAPACK_DEBUG_OUT("dlaic1"); LAPACK_IMPL(dlaic1)(&job, &j, x, &sEst, w, &gamma, &sEstPr, &s, &c); } template void laic1(IndexType job, IndexType j, const std::complex *x, float sEst, const std::complex *w, const std::complex &gamma, float &sEstPr, std::complex &s, std::complex &c) { CXXLAPACK_DEBUG_OUT("claic1"); LAPACK_IMPL(claic1)(&job, &j, reinterpret_cast(x), &sEst, reinterpret_cast(w), reinterpret_cast(&gamma), &sEstPr, reinterpret_cast(&s), reinterpret_cast(&c)); } template void laic1(IndexType job, IndexType j, const std::complex *x, double sEst, const std::complex *w, const std::complex &gamma, double &sEstPr, std::complex &s, std::complex &c) { CXXLAPACK_DEBUG_OUT("zlaic1"); LAPACK_IMPL(zlaic1)(&job, &j, reinterpret_cast(x), &sEst, reinterpret_cast(w), reinterpret_cast(&gamma), &sEstPr, reinterpret_cast(&s), reinterpret_cast(&c)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAIC1_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laisnan.h000066400000000000000000000040551456314707100246650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAISNAN_H #define CXXLAPACK_INTERFACE_LAISNAN_H 1 #include namespace cxxlapack { template bool laisnan(float sin1, float sin2); template bool laisnan(double din1, double din2); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAISNAN_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laisnan.tcc000066400000000000000000000045651456314707100252150ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAISNAN_TCC #define CXXLAPACK_INTERFACE_LAISNAN_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template bool laisnan(float sin1, float sin2) { CXXLAPACK_DEBUG_OUT("slaisna"); return LAPACK_IMPL(slaisnan)(&sin1, &sin2); } template bool laisnan(double din1, double din2) { CXXLAPACK_DEBUG_OUT("dlaisnan"); return LAPACK_IMPL(dlaisnan)(&din1, &din2); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAISNAN_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laln2.h000066400000000000000000000057551456314707100242600ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LALN2_H #define CXXLAPACK_INTERFACE_LALN2_H 1 #include namespace cxxlapack { template IndexType laln2(bool trans, IndexType na, IndexType nw, const float &sMin, const float &ca, const float *A, IndexType ldA, const float &d1, const float &d2, const float *B, IndexType ldB, const float &wr, const float &wi, float *X, IndexType ldX, float &scale, float &normX); template IndexType laln2(bool trans, IndexType na, IndexType nw, const double &sMin, const double &ca, const double *A, IndexType ldA, const double &d1, const double &d2, const double *B, IndexType ldB, const double &wr, const double &wi, double *X, IndexType ldX, double &scale, double &normX); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LALN2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laln2.tcc000066400000000000000000000106761456314707100246000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LALN2_TCC #define CXXLAPACK_INTERFACE_LALN2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laln2(bool trans, IndexType na, IndexType nw, const float &sMin, const float &ca, const float *A, IndexType ldA, const float &d1, const float &d2, const float *B, IndexType ldB, const float &wr, const float &wi, float *X, IndexType ldX, float &scale, float &normX) { CXXLAPACK_DEBUG_OUT("slaln2"); IndexType info; IndexType trans_ = trans; LAPACK_IMPL(slaln2)(&trans_, &na, &nw, &sMin, &ca, A, &ldA, &d1, &d2, B, &ldB, &wr, &wi, X, &ldX, &scale, &normX, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laln2(bool trans, IndexType na, IndexType nw, const double &sMin, const double &ca, const double *A, IndexType ldA, const double &d1, const double &d2, const double *B, IndexType ldB, const double &wr, const double &wi, double *X, IndexType ldX, double &scale, double &normX) { CXXLAPACK_DEBUG_OUT("dlaln2"); IndexType info; IndexType trans_ = trans; LAPACK_IMPL(dlaln2)(&trans_, &na, &nw, &sMin, &ca, A, &ldA, &d1, &d2, B, &ldB, &wr, &wi, X, &ldX, &scale, &normX, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LALN2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lals0.h000066400000000000000000000126311456314707100242520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LALS0_H #define CXXLAPACK_INTERFACE_LALS0_H 1 #include namespace cxxlapack { template IndexType lals0(IndexType icomq, IndexType nl, IndexType nr, IndexType sqre, IndexType nRhs, float *B, IndexType ldB, float *Bx, IndexType ldBx, const IndexType *perm, IndexType givptr, const IndexType *Givcol, IndexType ldGcol, const float *Givnum, IndexType ldGnum, const float *Poles, const float *difl, const float *difr, const float *z, IndexType k, float c, float s, float *work); template IndexType lals0(IndexType icomq, IndexType nl, IndexType nr, IndexType sqre, IndexType nRhs, double *B, IndexType ldB, double *Bx, IndexType ldBx, const IndexType *perm, IndexType givptr, const IndexType *Givcol, IndexType ldGcol, const double *Givnum, IndexType ldGnum, const double *Poles, const double *difl, const double *difr, const double *z, IndexType k, double c, double s, double *work); template IndexType lals0(IndexType icomq, IndexType nl, IndexType nr, IndexType sqre, IndexType nRhs, std::complex *B, IndexType ldB, std::complex *Bx, IndexType ldBx, const IndexType *perm, IndexType givptr, const IndexType *Givcol, IndexType ldGcol, const float *Givnum, IndexType ldGnum, const float *Poles, const float *difl, const float *difr, const float *z, IndexType k, float c, float s, float *rWork); template IndexType lals0(IndexType icomq, IndexType nl, IndexType nr, IndexType sqre, IndexType nRhs, std::complex *B, IndexType ldB, std::complex *Bx, IndexType ldBx, const IndexType *perm, IndexType givptr, const IndexType *Givcol, IndexType ldGcol, const double *Givnum, IndexType ldGnum, const double *Poles, const double *difl, const double *difr, const double *z, IndexType k, double c, double s, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LALS0_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lals0.tcc000066400000000000000000000215501456314707100245740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LALS0_TCC #define CXXLAPACK_INTERFACE_LALS0_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lals0(IndexType icomq, IndexType nl, IndexType nr, IndexType sqre, IndexType nRhs, float *B, IndexType ldB, float *Bx, IndexType ldBx, const IndexType *perm, IndexType givptr, const IndexType *Givcol, IndexType ldGcol, const float *Givnum, IndexType ldGnum, const float *Poles, const float *difl, const float *difr, const float *z, IndexType k, float c, float s, float *work) { CXXLAPACK_DEBUG_OUT("slals0"); IndexType info; LAPACK_IMPL(slals0)(&icomq, &nl, &nr, &sqre, &nRhs, B, &ldB, Bx, &ldBx, perm, givptr, Givcol, &ldGcol, Givnum, &ldGnum, Poles, difl, difr, z, &k, &c, &s, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lals0(IndexType icomq, IndexType nl, IndexType nr, IndexType sqre, IndexType nRhs, double *B, IndexType ldB, double *Bx, IndexType ldBx, const IndexType *perm, IndexType givptr, const IndexType *Givcol, IndexType ldGcol, const double *Givnum, IndexType ldGnum, const double *Poles, const double *difl, const double *difr, const double *z, IndexType k, double c, double s, double *work) { CXXLAPACK_DEBUG_OUT("dlals0"); IndexType info; LAPACK_IMPL(dlals0)(&icomq, &nl, &nr, &sqre, &nRhs, B, &ldB, Bx, &ldBx, perm, givptr, Givcol, &ldGcol, Givnum, &ldGnum, Poles, difl, difr, z, &k, &c, &s, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lals0(IndexType icomq, IndexType nl, IndexType nr, IndexType sqre, IndexType nRhs, std::complex *B, IndexType ldB, std::complex *Bx, IndexType ldBx, const IndexType *perm, IndexType givptr, const IndexType *Givcol, IndexType ldGcol, const float *Givnum, IndexType ldGnum, const float *Poles, const float *difl, const float *difr, const float *z, IndexType k, float c, float s, float *rWork) { CXXLAPACK_DEBUG_OUT("clals0"); IndexType info; LAPACK_IMPL(clals0)(&icomq, &nl, &nr, &sqre, &nRhs, reinterpret_cast(B), &ldB, reinterpret_cast(Bx), &ldBx, perm, givptr, Givcol, &ldGcol, Givnum, &ldGnum, Poles, difl, difr, z, &k, &c, &s, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lals0(IndexType icomq, IndexType nl, IndexType nr, IndexType sqre, IndexType nRhs, std::complex *B, IndexType ldB, std::complex *Bx, IndexType ldBx, const IndexType *perm, IndexType givptr, const IndexType *Givcol, IndexType ldGcol, const double *Givnum, IndexType ldGnum, const double *Poles, const double *difl, const double *difr, const double *z, IndexType k, double c, double s, double *rWork) { CXXLAPACK_DEBUG_OUT("zlals0"); IndexType info; LAPACK_IMPL(zlals0)(&icomq, &nl, &nr, &sqre, &nRhs, reinterpret_cast(B), &ldB, reinterpret_cast(Bx), &ldBx, perm, givptr, Givcol, &ldGcol, Givnum, &ldGnum, Poles, difl, difr, z, &k, &c, &s, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LALS0_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lalsa.h000066400000000000000000000133251456314707100243340ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LALSA_H #define CXXLAPACK_INTERFACE_LALSA_H 1 #include namespace cxxlapack { template IndexType lalsa(IndexType icompq, IndexType smlsiz, IndexType n, IndexType nRhs, float *B, IndexType ldB, float *Bx, IndexType ldBx, const float *U, IndexType ldU, const float *VT, const IndexType *k, const float *Difl, const float *Difr, const float *Z, const float *Poles, const IndexType *Givptr, const IndexType *Givcol, IndexType ldGcol, const IndexType *Perm, const float *Givnum, const float *c, const float *s, float *work, IndexType *iWork); template IndexType lalsa(IndexType icompq, IndexType smlsiz, IndexType n, IndexType nRhs, double *B, IndexType ldB, double *Bx, IndexType ldBx, const double *U, IndexType ldU, const double *VT, const IndexType *k, const double *Difl, const double *Difr, const double *Z, const double *Poles, const IndexType *Givptr, const IndexType *Givcol, IndexType ldGcol, const IndexType *Perm, const double *Givnum, const double *c, const double *s, double *work, IndexType *iWork); template IndexType lalsa(IndexType icompq, IndexType smlsiz, IndexType n, IndexType nRhs, std::complex *B, IndexType ldB, std::complex *Bx, IndexType ldBx, const float *U, IndexType ldU, const float *VT, const IndexType *k, const float *Difl, const float *Difr, const float *Z, const float *Poles, const IndexType *Givptr, const IndexType *Givcol, IndexType ldGcol, const IndexType *Perm, const float *Givnum, const float *c, const float *s, float *work, IndexType *iWork); template IndexType lalsa(IndexType icompq, IndexType smlsiz, IndexType n, IndexType nRhs, std::complex *B, IndexType ldB, std::complex *Bx, IndexType ldBx, const double *U, IndexType ldU, const double *VT, const IndexType *k, const double *Difl, const double *Difr, const double *Z, const double *Poles, const IndexType *Givptr, const IndexType *Givcol, IndexType ldGcol, const IndexType *Perm, const double *Givnum, const double *c, const double *s, double *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LALSA_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lalsa.tcc000066400000000000000000000225271456314707100246620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LALSA_TCC #define CXXLAPACK_INTERFACE_LALSA_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lalsa(IndexType icompq, IndexType smlsiz, IndexType n, IndexType nRhs, float *B, IndexType ldB, float *Bx, IndexType ldBx, const float *U, IndexType ldU, const float *VT, const IndexType *k, const float *Difl, const float *Difr, const float *Z, const float *Poles, const IndexType *Givptr, const IndexType *Givcol, IndexType ldGcol, const IndexType *Perm, const float *Givnum, const float *c, const float *s, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("slalsa"); IndexType info; LAPACK_IMPL(slalsa)(&icompq, &smlsiz, &n, &nRhs, B, &ldB, Bx, &ldBx, U, &ldU, VT, k, Difl, Difr, Z, Poles, Givptr, Givcol, &ldGcol, Perm, Givnum, c, s, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lalsa(IndexType icompq, IndexType smlsiz, IndexType n, IndexType nRhs, double *B, IndexType ldB, double *Bx, IndexType ldBx, const double *U, IndexType ldU, const double *VT, const IndexType *k, const double *Difl, const double *Difr, const double *Z, const double *Poles, const IndexType *Givptr, const IndexType *Givcol, IndexType ldGcol, const IndexType *Perm, const double *Givnum, const double *c, const double *s, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dlalsa"); IndexType info; LAPACK_IMPL(dlalsa)(&icompq, &smlsiz, &n, &nRhs, B, &ldB, Bx, &ldBx, U, &ldU, VT, k, Difl, Difr, Z, Poles, Givptr, Givcol, &ldGcol, Perm, Givnum, c, s, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lalsa(IndexType icompq, IndexType smlsiz, IndexType n, IndexType nRhs, std::complex *B, IndexType ldB, std::complex *Bx, IndexType ldBx, const float *U, IndexType ldU, const float *VT, const IndexType *k, const float *Difl, const float *Difr, const float *Z, const float *Poles, const IndexType *Givptr, const IndexType *Givcol, IndexType ldGcol, const IndexType *Perm, const float *Givnum, const float *c, const float *s, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("clalsa"); IndexType info; LAPACK_IMPL(clalsa)(&icompq, &smlsiz, &n, &nRhs, reinterpret_cast(B), &ldB, reinterpret_cast(Bx), &ldBx, U, &ldU, VT, k, Difl, Difr, Z, Poles, Givptr, Givcol, &ldGcol, Perm, Givnum, c, s, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lalsa(IndexType icompq, IndexType smlsiz, IndexType n, IndexType nRhs, std::complex *B, IndexType ldB, std::complex *Bx, IndexType ldBx, const double *U, IndexType ldU, const double *VT, const IndexType *k, const double *Difl, const double *Difr, const double *Z, const double *Poles, const IndexType *Givptr, const IndexType *Givcol, IndexType ldGcol, const IndexType *Perm, const double *Givnum, const double *c, const double *s, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("zlalsa"); IndexType info; LAPACK_IMPL(zlalsa)(&icompq, &smlsiz, &n, &nRhs, reinterpret_cast(B), &ldB, reinterpret_cast(Bx), &ldBx, U, &ldU, VT, k, Difl, Difr, Z, Poles, Givptr, Givcol, &ldGcol, Perm, Givnum, c, s, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LALSA_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lalsd.h000066400000000000000000000075221456314707100243410ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LALSD_H #define CXXLAPACK_INTERFACE_LALSD_H 1 #include namespace cxxlapack { template IndexType lalsd(char uplo, IndexType smlsiz, IndexType n, IndexType nRhs, float *d, float *e, float *B, IndexType ldB, float rCond, IndexType &rank, float *work, IndexType *iWork); template IndexType lalsd(char uplo, IndexType smlsiz, IndexType n, IndexType nRhs, double *d, double *e, double *B, IndexType ldB, double rCond, IndexType &rank, double *work, IndexType *iWork); template IndexType lalsd(char uplo, IndexType smlsiz, IndexType n, IndexType nRhs, float *d, float *e, std::complex *B, IndexType ldB, float rCond, IndexType &rank, std::complex *work, float *rWork, IndexType *iWork); template IndexType lalsd(char uplo, IndexType smlsiz, IndexType n, IndexType nRhs, double *d, double *e, std::complex *B, IndexType ldB, double rCond, IndexType &rank, std::complex *work, double *rWork, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LALSD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lalsd.tcc000066400000000000000000000143161456314707100246620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LALSD_TCC #define CXXLAPACK_INTERFACE_LALSD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lalsd(char uplo, IndexType smlsiz, IndexType n, IndexType nRhs, float *d, float *e, float *B, IndexType ldB, float rCond, IndexType &rank, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("slalsd"); IndexType info; LAPACK_IMPL(slalsd)(&uplo, &smlsiz, &n, &nRhs, d, e, B, &ldB, &rCond, &rank, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lalsd(char uplo, IndexType smlsiz, IndexType n, IndexType nRhs, double *d, double *e, double *B, IndexType ldB, double rCond, IndexType &rank, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dlalsd"); IndexType info; LAPACK_IMPL(dlalsd)(&uplo, &smlsiz, &n, &nRhs, d, e, B, &ldB, &rCond, &rank, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lalsd(char uplo, IndexType smlsiz, IndexType n, IndexType nRhs, float *d, float *e, std::complex *B, IndexType ldB, float rCond, IndexType &rank, std::complex *work, float *rWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("clalsd"); IndexType info; LAPACK_IMPL(clalsd)(&uplo, &smlsiz, &n, &nRhs, d, e, reinterpret_cast(B), &ldB, &rCond, &rank, reinterpret_cast(work), rWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lalsd(char uplo, IndexType smlsiz, IndexType n, IndexType nRhs, double *d, double *e, std::complex *B, IndexType ldB, double rCond, IndexType &rank, std::complex *work, double *rWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("zlalsd"); IndexType info; LAPACK_IMPL(zlalsd)(&uplo, &smlsiz, &n, &nRhs, d, e, reinterpret_cast(B), &ldB, &rCond, &rank, reinterpret_cast(work), rWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LALSD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lamch.h000066400000000000000000000035271456314707100243270ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAMCH_H #define CXXLAPACK_INTERFACE_LAMCH_H 1 #include namespace cxxlapack { template T lamch(char c); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAMCH_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lamch.tcc000066400000000000000000000041401456314707100246410ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAMCH_TCC #define CXXLAPACK_INTERFACE_LAMCH_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lamch_(char c, double &value) { value = LAPACK_IMPL(dlamch)(&c); } template T lamch(char c) { T value; lamch_(c, value); return value; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAMCH_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lamrg.h000066400000000000000000000045131456314707100243410ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAMRG_H #define CXXLAPACK_INTERFACE_LAMRG_H 1 #include namespace cxxlapack { template void lamrg(IndexType n1, IndexType n2, const float *A, IndexType dtrd1, IndexType dtrd2, IndexType *index); template void lamrg(IndexType n1, IndexType n2, const double *A, IndexType dtrd1, IndexType dtrd2, IndexType *index); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAMRG_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lamrg.tcc000066400000000000000000000054601456314707100246650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAMRG_TCC #define CXXLAPACK_INTERFACE_LAMRG_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lamrg(IndexType n1, IndexType n2, const float *A, IndexType dtrd1, IndexType dtrd2, IndexType *index) { CXXLAPACK_DEBUG_OUT("slamrg"); LAPACK_IMPL(slamrg)(&n1, &n2, A, &dtrd1, &dtrd2, index); } template void lamrg(IndexType n1, IndexType n2, const double *A, IndexType dtrd1, IndexType dtrd2, IndexType *index) { CXXLAPACK_DEBUG_OUT("dlamrg"); LAPACK_IMPL(dlamrg)(&n1, &n2, A, &dtrd1, &dtrd2, index); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAMRG_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laneg.h000066400000000000000000000045171456314707100243310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANEG_H #define CXXLAPACK_INTERFACE_LANEG_H 1 #include namespace cxxlapack { template IndexType laneg(IndexType n, const float *d, const float *lld, float sigma, float pivmin, IndexType r); template IndexType laneg(IndexType n, const double *d, const double *lld, double sigma, double pivmin, IndexType r); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANEG_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laneg.tcc000066400000000000000000000056021456314707100246470ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANEG_TCC #define CXXLAPACK_INTERFACE_LANEG_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laneg(IndexType n, const float *d, const float *lld, float sigma, float pivmin, IndexType r) { CXXLAPACK_DEBUG_OUT("slaneg"); return LAPACK_IMPL(slaneg)(&n, d, lld, &sigma, &pivmin, &r); } template IndexType laneg(IndexType n, const double *d, const double *lld, double sigma, double pivmin, IndexType r) { CXXLAPACK_DEBUG_OUT("dlaneg"); return LAPACK_IMPL(dlaneg)(&n, d, lld, &sigma, &pivmin, &r); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANEG_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/langb.h000066400000000000000000000060771456314707100243310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANGB_H #define CXXLAPACK_INTERFACE_LANGB_H 1 #include namespace cxxlapack { template float langb(char norm, IndexType n, IndexType kl, IndexType ku, const float *Ab, IndexType ldAb, float *work); template double langb(char norm, IndexType n, IndexType kl, IndexType ku, const double *Ab, IndexType ldAb, double *work); template float langb(char norm, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, float *work); template double langb(char norm, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANGB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/langb.tcc000066400000000000000000000104051456314707100246410ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANGB_TCC #define CXXLAPACK_INTERFACE_LANGB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float langb(char norm, IndexType n, IndexType kl, IndexType ku, const float *Ab, IndexType ldAb, float *work) { CXXLAPACK_DEBUG_OUT("slangb"); return LAPACK_IMPL(slangb)(&norm, &n, &kl, &ku, Ab, &ldAb, work); } template double langb(char norm, IndexType n, IndexType kl, IndexType ku, const double *Ab, IndexType ldAb, double *work) { CXXLAPACK_DEBUG_OUT("dlangb"); return LAPACK_IMPL(dlangb)(&norm, &n, &kl, &ku, Ab, &ldAb, work); } template float langb(char norm, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, float *work) { CXXLAPACK_DEBUG_OUT("clangb"); return LAPACK_IMPL(clangb)(&norm, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, work); } template double langb(char norm, IndexType n, IndexType kl, IndexType ku, const std::complex *Ab, IndexType ldAb, double *work) { CXXLAPACK_DEBUG_OUT("clangb"); return LAPACK_IMPL(zlangb)(&norm, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANGB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lange.h000066400000000000000000000055301456314707100243250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANGE_H #define CXXLAPACK_INTERFACE_LANGE_H 1 #include namespace cxxlapack { template float lange(char norm, IndexType m, IndexType n, const float *A, const IndexType ldA, float *work); template double lange(char norm, IndexType m, IndexType n, const double *A, const IndexType ldA, double *work); template float lange(char norm, IndexType m, IndexType n, const std::complex *A, IndexType ldA, float *work); template double lange(char norm, IndexType m, IndexType n, const std::complex *A, IndexType ldA, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANGE_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lange.tcc000066400000000000000000000076211456314707100246520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANGE_TCC #define CXXLAPACK_INTERFACE_LANGE_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lange(char norm, IndexType m, IndexType n, const float *A, const IndexType ldA, float *work) { CXXLAPACK_DEBUG_OUT("slange"); return LAPACK_IMPL(slange)(&norm, &m, &n, A, &ldA, work); } template double lange(char norm, IndexType m, IndexType n, const double *A, const IndexType ldA, double *work) { CXXLAPACK_DEBUG_OUT("dlange"); return LAPACK_IMPL(dlange)(&norm, &m, &n, A, &ldA, work); } template float lange(char norm, IndexType m, IndexType n, const std::complex *A, IndexType ldA, float *work) { CXXLAPACK_DEBUG_OUT("clange"); return LAPACK_IMPL(clange)(&norm, &m, &n, reinterpret_cast(A), &ldA, work); } template double lange(char norm, IndexType m, IndexType n, const std::complex *A, IndexType ldA, double *work) { CXXLAPACK_DEBUG_OUT("zlange"); return LAPACK_IMPL(zlange)(&norm, &m, &n, reinterpret_cast(A), &ldA, work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANGE_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/langt.h000066400000000000000000000053701456314707100243460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANGT_H #define CXXLAPACK_INTERFACE_LANGT_H 1 #include namespace cxxlapack { template float langt(char norm, IndexType n, const float *dl, const float *d, const float *du); template double langt(char norm, IndexType n, const double *dl, const double *d, const double *du); template float langt(char norm, IndexType n, const std::complex *dl, const std::complex *d, const std::complex *du); template double langt(char norm, IndexType n, const std::complex *dl, const std::complex *d, const std::complex *du); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANGT_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/langt.tcc000066400000000000000000000074561456314707100246770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANGT_TCC #define CXXLAPACK_INTERFACE_LANGT_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float langt(char norm, IndexType n, const float *dl, const float *d, const float *du) { CXXLAPACK_DEBUG_OUT("slangt"); return LAPACK_IMPL(slangt)(&norm, &n, dl, d, du); } template double langt(char norm, IndexType n, const double *dl, const double *d, const double *du) { CXXLAPACK_DEBUG_OUT("dlangt"); return LAPACK_IMPL(dlangt)(&norm, &n, dl, d, du); } template float langt(char norm, IndexType n, const std::complex *dl, const std::complex *d, const std::complex *du) { CXXLAPACK_DEBUG_OUT("clangt"); return LAPACK_IMPL(clangt)(&norm, &n, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du)); } template double langt(char norm, IndexType n, const std::complex *dl, const std::complex *d, const std::complex *du) { CXXLAPACK_DEBUG_OUT("zlangt"); return LAPACK_IMPL(zlangt)(&norm, &n, reinterpret_cast(dl), reinterpret_cast(d), reinterpret_cast(du)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANGT_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanhb.h000066400000000000000000000047461456314707100243330ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANHB_H #define CXXLAPACK_INTERFACE_LANHB_H 1 #include namespace cxxlapack { template float lanhb(char norm, char uplo, IndexType n, IndexType k, const std::complex *Ab, IndexType ldAb, float *work); template double lanhb(char norm, char uplo, IndexType n, IndexType k, const std::complex *Ab, IndexType ldAb, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANHB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanhb.tcc000066400000000000000000000062411456314707100246450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANHB_TCC #define CXXLAPACK_INTERFACE_LANHB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lanhb(char norm, char uplo, IndexType n, IndexType k, const std::complex *Ab, IndexType ldAb, float *work) { CXXLAPACK_DEBUG_OUT("clanhb"); return LAPACK_IMPL(clanhb)(&norm, &uplo, &n, &k, reinterpret_cast(Ab), &ldAb, work); } template double lanhb(char norm, char uplo, IndexType n, IndexType k, const std::complex *Ab, IndexType ldAb, double *work) { CXXLAPACK_DEBUG_OUT("zlanhb"); return LAPACK_IMPL(zlanhb)(&norm, &uplo, &n, &k, reinterpret_cast(Ab), &ldAb, work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANHB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanhe.h000066400000000000000000000046201456314707100243250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANHE_H #define CXXLAPACK_INTERFACE_LANHE_H 1 #include namespace cxxlapack { template float lanhe(char norm, char uplo, IndexType n, const std::complex *A, IndexType ldA, float *work); template double lanhe(char norm, char uplo, IndexType n, const std::complex *A, IndexType ldA, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANHE_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanhe.tcc000066400000000000000000000060131456314707100246450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANHE_TCC #define CXXLAPACK_INTERFACE_LANHE_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double lanhe(char norm, char uplo, IndexType n, const std::complex *A, IndexType ldA, float *work) { CXXLAPACK_DEBUG_OUT("clanhe"); return LAPACK_IMPL(clanhe)(&norm, &uplo, &n, reinterpret_cast(A), &ldA, work); } template double lanhe(char norm, char uplo, IndexType n, const std::complex *A, IndexType ldA, double *work) { CXXLAPACK_DEBUG_OUT("zlanhe"); return LAPACK_IMPL(zlanhe)(&norm, &uplo, &n, reinterpret_cast(A), &ldA, work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANHE_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanhf.h000066400000000000000000000046241456314707100243320ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANHF_H #define CXXLAPACK_INTERFACE_LANHF_H 1 #include namespace cxxlapack { template float lanhf(char norm, char trans, char uplo, IndexType n, const std::complex *A, float *work); template double lanhf(char norm, char trans, char uplo, IndexType n, const std::complex *A, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANHF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanhf.tcc000066400000000000000000000060211456314707100246450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANHF_TCC #define CXXLAPACK_INTERFACE_LANHF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lanhf(char norm, char trans, char uplo, IndexType n, const std::complex *A, float *work) { CXXLAPACK_DEBUG_OUT("clanhf"); return LAPACK_IMPL(clanhf)(&norm, &trans, &uplo, &n, reinterpret_cast(A), work); } template double lanhf(char norm, char trans, char uplo, IndexType n, const std::complex *A, double *work) { CXXLAPACK_DEBUG_OUT("zlanhf"); return LAPACK_IMPL(zlanhf)(&norm, &trans, &uplo, &n, reinterpret_cast(A), work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANHF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanhp.h000066400000000000000000000044721456314707100243450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANHP_H #define CXXLAPACK_INTERFACE_LANHP_H 1 #include namespace cxxlapack { template float lanhp(char norm, char uplo, IndexType n, const std::complex *A, float *work); template double lanhp(char norm, char uplo, IndexType n, const std::complex *A, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANHP_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanhp.tcc000066400000000000000000000055651456314707100246730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANHP_TCC #define CXXLAPACK_INTERFACE_LANHP_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lanhp(char norm, char uplo, IndexType n, const std::complex *Ap, float *work) { CXXLAPACK_DEBUG_OUT("clanhp"); return LAPACK_IMPL(clanhp)(&norm, &uplo, &n, reinterpret_cast(Ap), work); } template double lanhp(char norm, char uplo, IndexType n, const std::complex *Ap, double *work) { CXXLAPACK_DEBUG_OUT("zlanhp"); return LAPACK_IMPL(zlanhp)(&norm, &uplo, &n, reinterpret_cast(Ap), work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANHP_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanhs.h000066400000000000000000000054001456314707100243400ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANHS_H #define CXXLAPACK_INTERFACE_LANHS_H 1 #include namespace cxxlapack { template float lanhs(char norm, IndexType n, const float *A, IndexType ldA, float *work); template double lanhs(char norm, IndexType n, const double *A, IndexType ldA, double *work); template float lanhs(char norm, IndexType n, const std::complex *A, IndexType ldA, float *work); template double lanhs(char norm, IndexType n, const std::complex *A, IndexType ldA, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANHS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanhs.tcc000066400000000000000000000072751456314707100246760ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANHS_TCC #define CXXLAPACK_INTERFACE_LANHS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lanhs(char norm, IndexType n, const float *A, IndexType ldA, float *work) { CXXLAPACK_DEBUG_OUT("slanhs"); return LAPACK_IMPL(slanhs)(&norm, &n, A, &ldA, work); } template double lanhs(char norm, IndexType n, const double *A, IndexType ldA, double *work) { CXXLAPACK_DEBUG_OUT("dlanhs"); return LAPACK_IMPL(dlanhs)(&norm, &n, A, &ldA, work); } template float lanhs(char norm, IndexType n, const std::complex *A, IndexType ldA, float *work) { CXXLAPACK_DEBUG_OUT("clanhs"); return LAPACK_IMPL(clanhs)(&norm, &n, reinterpret_cast(A), &ldA, work); } template double lanhs(char norm, IndexType n, const std::complex *A, IndexType ldA, double *work) { CXXLAPACK_DEBUG_OUT("zlanhs"); return LAPACK_IMPL(zlanhs)(&norm, &n, reinterpret_cast(A), &ldA, work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANHS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanht.h000066400000000000000000000043341456314707100243460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANHT_H #define CXXLAPACK_INTERFACE_LANHT_H 1 #include namespace cxxlapack { template float lanht(char norm, IndexType n, const float *d, const std::complex *e); template double lanht(char norm, IndexType n, const double *d, const std::complex *e); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANHT_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanht.tcc000066400000000000000000000053111456314707100246640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANHT_TCC #define CXXLAPACK_INTERFACE_LANHT_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lanht(char norm, IndexType n, const float *d, const std::complex *e) { CXXLAPACK_DEBUG_OUT("clanht"); return LAPACK_IMPL(clanht)(&norm, &n, d, reinterpret_cast(e)); } template double lanht(char norm, IndexType n, const double *d, const std::complex *e) { CXXLAPACK_DEBUG_OUT("zlanht"); return LAPACK_IMPL(zlanht)(&norm, &n, d, reinterpret_cast(e)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANHT_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lansb.h000066400000000000000000000061031456314707100243330ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANSB_H #define CXXLAPACK_INTERFACE_LANSB_H 1 #include namespace cxxlapack { template float lansb(char norm, char uplo, IndexType n, IndexType k, const float *Ab, IndexType ldAb, float *work); template double lansb(char norm, char uplo, IndexType n, IndexType k, const double *Ab, IndexType ldAb, double *work); template float lansb(char norm, char uplo, IndexType n, IndexType k, const std::complex *Ab, IndexType ldAb, float *work); template double lansb(char norm, char uplo, IndexType n, IndexType k, const std::complex *Ab, IndexType ldAb, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANSB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lansb.tcc000066400000000000000000000104171456314707100246600ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANSB_TCC #define CXXLAPACK_INTERFACE_LANSB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lansb(char norm, char uplo, IndexType n, IndexType k, const float *Ab, IndexType ldAb, float *work) { CXXLAPACK_DEBUG_OUT("slansb"); return LAPACK_IMPL(slansb)(&norm, &uplo, &n, &k, Ab, &ldAb, work); } template double lansb(char norm, char uplo, IndexType n, IndexType k, const double *Ab, IndexType ldAb, double *work) { CXXLAPACK_DEBUG_OUT("dlansb"); return LAPACK_IMPL(dlansb)(&norm, &uplo, &n, &k, Ab, &ldAb, work); } template float lansb(char norm, char uplo, IndexType n, IndexType k, const std::complex *Ab, IndexType ldAb, float *work) { CXXLAPACK_DEBUG_OUT("clansb"); return LAPACK_IMPL(clansb)(&norm, &uplo, &n, &k, reinterpret_cast(Ab), &ldAb, work); } template double lansb(char norm, char uplo, IndexType n, IndexType k, const std::complex *Ab, IndexType ldAb, double *work) { CXXLAPACK_DEBUG_OUT("zlansb"); return LAPACK_IMPL(zlansb)(&norm, &uplo, &n, &k, reinterpret_cast(Ab), &ldAb, work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANSB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lansf.h000066400000000000000000000045161456314707100243450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANSF_H #define CXXLAPACK_INTERFACE_LANSF_H 1 #include namespace cxxlapack { template float lansf(char norm, char transr, char uplo, IndexType n, const float *A, float *work); template double lansf(char norm, char transr, char uplo, IndexType n, const double *A, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANSF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lansf.tcc000066400000000000000000000056071456314707100246710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANSF_TCC #define CXXLAPACK_INTERFACE_LANSF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lansf(char norm, char transr, char uplo, IndexType n, const float *A, float *work) { CXXLAPACK_DEBUG_OUT("slansf"); return LAPACK_IMPL(slansf)(&norm, &transr, &uplo, &n, A, work); } template double lansf(char norm, char transr, char uplo, IndexType n, const double *A, double *work) { CXXLAPACK_DEBUG_OUT("dlansf"); return LAPACK_IMPL(dlansf)(&norm, &transr, &uplo, &n, A, work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANSF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lansp.h000066400000000000000000000054161456314707100243570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANSP_H #define CXXLAPACK_INTERFACE_LANSP_H 1 #include namespace cxxlapack { template float lansp(char norm, char uplo, IndexType n, const float *Ap, float *work); template double lansp(char norm, char uplo, IndexType n, const double *Ap, double *work); template float lansp(char norm, char uplo, IndexType n, const std::complex *Ap, float *work); template double lansp(char norm, char uplo, IndexType n, const std::complex *Ap, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANSP_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lansp.tcc000066400000000000000000000073231456314707100247000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANSP_TCC #define CXXLAPACK_INTERFACE_LANSP_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lansp(char norm, char uplo, IndexType n, const float *Ap, float *work) { CXXLAPACK_DEBUG_OUT("slansp"); return LAPACK_IMPL(slansp)(&norm, &uplo, &n, Ap, work); } template double lansp(char norm, char uplo, IndexType n, const double *Ap, double *work) { CXXLAPACK_DEBUG_OUT("dlansp"); return LAPACK_IMPL(dlansp)(&norm, &uplo, &n, Ap, work); } template float lansp(char norm, char uplo, IndexType n, const std::complex *Ap, float *work) { CXXLAPACK_DEBUG_OUT("clansp"); return LAPACK_IMPL(clansp)(&norm, &uplo, &n, reinterpret_cast(Ap), work); } template double lansp(char norm, char uplo, IndexType n, const std::complex *Ap, double *work) { CXXLAPACK_DEBUG_OUT("zlansp"); return LAPACK_IMPL(zlansp)(&norm, &uplo, &n, reinterpret_cast(Ap), work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANSP_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanst.h000066400000000000000000000042541456314707100243620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANST_H #define CXXLAPACK_INTERFACE_LANST_H 1 #include namespace cxxlapack { template float lanst(char norm, IndexType n, const float *d, const float *e); template double lanst(char norm, IndexType n, const double *d, const double *e); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANST_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanst.tcc000066400000000000000000000051241456314707100247010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANST_TCC #define CXXLAPACK_INTERFACE_LANST_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lanst(char norm, IndexType n, const float *d, const float *e) { CXXLAPACK_DEBUG_OUT("slanst"); return LAPACK_IMPL(slanst)(&norm, &n, d, e); } template double lanst(char norm, IndexType n, const double *d, const double *e) { CXXLAPACK_DEBUG_OUT("dlanst"); return LAPACK_IMPL(dlanst)(&norm, &n, d, e); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANST_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lansy.h000066400000000000000000000056431456314707100243720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANSY_H #define CXXLAPACK_INTERFACE_LANSY_H 1 #include namespace cxxlapack { template float lansy(char norm, char uplo, IndexType n, const float *A, IndexType ldA, float *work); template double lansy(char norm, char uplo, IndexType n, const double *A, IndexType ldA, double *work); template float lansy(char norm, char uplo, IndexType n, const std::complex *A, IndexType ldA, float *work); template double lansy(char norm, char uplo, IndexType n, const std::complex *A, IndexType ldA, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANSY_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lansy.tcc000066400000000000000000000077521456314707100247170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANSY_TCC #define CXXLAPACK_INTERFACE_LANSY_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lansy(char norm, char uplo, IndexType n, const float *A, IndexType ldA, float *work) { CXXLAPACK_DEBUG_OUT("slansy"); return LAPACK_IMPL(slansy)(&norm, &uplo, &n, A, &ldA, work); } template double lansy(char norm, char uplo, IndexType n, const double *A, IndexType ldA, double *work) { CXXLAPACK_DEBUG_OUT("dlansy"); return LAPACK_IMPL(dlansy)(&norm, &uplo, &n, A, &ldA, work); } template float lansy(char norm, char uplo, IndexType n, const std::complex *A, IndexType ldA, float *work) { CXXLAPACK_DEBUG_OUT("clansy"); return LAPACK_IMPL(clansy)(&norm, &uplo, &n, reinterpret_cast(A), &ldA, work); } template double lansy(char norm, char uplo, IndexType n, const std::complex *A, IndexType ldA, double *work) { CXXLAPACK_DEBUG_OUT("zlansy"); return LAPACK_IMPL(zlansy)(&norm, &uplo, &n, reinterpret_cast(A), &ldA, work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANSY_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lantb.h000066400000000000000000000063501456314707100243400ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANTB_H #define CXXLAPACK_INTERFACE_LANTB_H 1 #include namespace cxxlapack { template float lantb(char norm, char uplo, char diag, IndexType n, IndexType k, const float *Ab, IndexType ldAb, float *work); template double lantb(char norm, char uplo, char diag, IndexType n, IndexType k, const double *Ab, IndexType ldAb, double *work); template float lantb(char norm, char uplo, char diag, IndexType n, IndexType k, const std::complex *Ab, IndexType ldAb, float *work); template double lantb(char norm, char uplo, char diag, IndexType n, IndexType k, const std::complex *Ab, IndexType ldAb, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANTB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lantb.tcc000066400000000000000000000110751456314707100246620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANTB_TCC #define CXXLAPACK_INTERFACE_LANTB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lantb(char norm, char uplo, char diag, IndexType n, IndexType k, const float *Ab, IndexType ldAb, float *work) { CXXLAPACK_DEBUG_OUT("slantb"); return LAPACK_IMPL(slantb)(&norm, &uplo, &diag, &n, &k, Ab, &ldAb, work); } template double lantb(char norm, char uplo, char diag, IndexType n, IndexType k, const double *Ab, IndexType ldAb, double *work) { CXXLAPACK_DEBUG_OUT("dlantb"); return LAPACK_IMPL(dlantb)(&norm, &uplo, &diag, &n, &k, Ab, &ldAb, work); } template float lantb(char norm, char uplo, char diag, IndexType n, IndexType k, const std::complex *Ab, IndexType ldAb, float *work) { CXXLAPACK_DEBUG_OUT("clantb"); return LAPACK_IMPL(clantb)(&norm, &uplo, &diag, &n, &k, reinterpret_cast(Ab), &ldAb, work); } template double lantb(char norm, char uplo, char diag, IndexType n, IndexType k, const std::complex *Ab, IndexType ldAb, double *work) { CXXLAPACK_DEBUG_OUT("zlantb"); return LAPACK_IMPL(zlantb)(&norm, &uplo, &diag, &n, &k, reinterpret_cast(Ab), &ldAb, work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANTB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lantp.h000066400000000000000000000057041456314707100243600ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANTP_H #define CXXLAPACK_INTERFACE_LANTP_H 1 #include namespace cxxlapack { template float lantp(char norm, char uplo, char diag, IndexType n, const float *Ap, float *work); template double lantp(char norm, char uplo, char diag, IndexType n, const double *Ap, double *work); template float lantp(char norm, char uplo, char diag, IndexType n, const std::complex *Ap, float *work); template double lantp(char norm, char uplo, char diag, IndexType n, const std::complex *Ap, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANTP_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lantp.tcc000066400000000000000000000077711456314707100247100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANTP_TCC #define CXXLAPACK_INTERFACE_LANTP_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lantp(char norm, char uplo, char diag, IndexType n, const float *Ap, float *work) { CXXLAPACK_DEBUG_OUT("slantp"); return LAPACK_IMPL(slantp)(&norm, &uplo, &diag, &n, Ap, work); } template double lantp(char norm, char uplo, char diag, IndexType n, const double *Ap, double *work) { CXXLAPACK_DEBUG_OUT("dlantp"); return LAPACK_IMPL(dlantp)(&norm, &uplo, &diag, &n, Ap, work); } template float lantp(char norm, char uplo, char diag, IndexType n, const std::complex *Ap, float *work) { CXXLAPACK_DEBUG_OUT("clantp"); return LAPACK_IMPL(clantp)(&norm, &uplo, &diag, &n, reinterpret_cast(Ap), work); } template double lantp(char norm, char uplo, char diag, IndexType n, const std::complex *Ap, double *work) { CXXLAPACK_DEBUG_OUT("zlantp"); return LAPACK_IMPL(zlantp)(&norm, &uplo, &diag, &n, reinterpret_cast(Ap), work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANTP_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lantr.h000066400000000000000000000062611456314707100243610ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANTR_H #define CXXLAPACK_INTERFACE_LANTR_H 1 #include namespace cxxlapack { template float lantr(char norm, char upLo, char diag, IndexType m, IndexType n, const float *A, IndexType ldA, float *work); template double lantr(char norm, char upLo, char diag, IndexType m, IndexType n, const double *A, IndexType ldA, double *work); template float lantr(char norm, char upLo, char diag, IndexType m, IndexType n, const std::complex *A, IndexType ldA, float *work); template double lantr(char norm, char upLo, char diag, IndexType m, IndexType n, const std::complex *A, IndexType ldA, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANTR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lantr.tcc000066400000000000000000000107711456314707100247040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANTR_TCC #define CXXLAPACK_INTERFACE_LANTR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lantr(char norm, char upLo, char diag, IndexType m, IndexType n, const float *A, IndexType ldA, float *work) { CXXLAPACK_DEBUG_OUT("slantr"); return LAPACK_IMPL(slantr)(&norm, &upLo, &diag, &m, &n, A, &ldA, work); } template double lantr(char norm, char upLo, char diag, IndexType m, IndexType n, const double *A, IndexType ldA, double *work) { CXXLAPACK_DEBUG_OUT("dlantr"); return LAPACK_IMPL(dlantr)(&norm, &upLo, &diag, &m, &n, A, &ldA, work); } template float lantr(char norm, char upLo, char diag, IndexType m, IndexType n, const std::complex *A, IndexType ldA, float *work) { CXXLAPACK_DEBUG_OUT("clantr"); return LAPACK_IMPL(clantr)(&norm, &upLo, &diag, &m, &n, reinterpret_cast(A), &ldA, work); } template double lantr(char norm, char upLo, char diag, IndexType m, IndexType n, const std::complex *A, IndexType ldA, double *work) { CXXLAPACK_DEBUG_OUT("zlantr"); return LAPACK_IMPL(zlantr)(&norm, &upLo, &diag, &m, &n, reinterpret_cast(A), &ldA, work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANTR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanv2.h000066400000000000000000000045551456314707100242670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANV2_H #define CXXLAPACK_INTERFACE_LANV2_H 1 #include namespace cxxlapack { template void lanv2(float &a, float &b, float &c, float &d, float &rt1r, float &rt1i, float &rt2r, float &rt2i, float &cs, float &sn); template void lanv2(double &a, double &b, double &c, double &d, double &rt1r, double &rt1i, double &rt2r, double &rt2i, double &cs, double &sn); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANV2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lanv2.tcc000066400000000000000000000060151456314707100246020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LANV2_TCC #define CXXLAPACK_INTERFACE_LANV2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lanv2(float &a, float &b, float &c, float &d, float &rt1r, float &rt1i, float &rt2r, float &rt2i, float &cs, float &sn) { CXXLAPACK_DEBUG_OUT("slanv2"); LAPACK_IMPL(slanv2)(&a, &b, &c, &d, &rt1r, &rt1i, &rt2r, &rt2i, &cs, &sn); } template void lanv2(double &a, double &b, double &c, double &d, double &rt1r, double &rt1i, double &rt2r, double &rt2i, double &cs, double &sn) { CXXLAPACK_DEBUG_OUT("dlanv2"); LAPACK_IMPL(dlanv2)(&a, &b, &c, &d, &rt1r, &rt1i, &rt2r, &rt2i, &cs, &sn); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LANV2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lapll.h000066400000000000000000000055251456314707100243470ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAPLL_H #define CXXLAPACK_INTERFACE_LAPLL_H 1 #include namespace cxxlapack { template void lapll(IndexType n, float *x, IndexType incx, float *y, float incy, float &ssmin); template void lapll(IndexType n, double *x, IndexType incx, double *y, double incy, double &ssmin); template void lapll(IndexType n, std::complex *x, IndexType incx, std::complex *y, float incy, float &ssmin); template void lapll(IndexType n, std::complex *x, IndexType incx, std::complex *y, double incy, double &ssmin); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAPLL_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lapll.tcc000066400000000000000000000074321456314707100246700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAPLL_TCC #define CXXLAPACK_INTERFACE_LAPLL_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lapll(IndexType n, double *x, IndexType incx, float *y, float incy, float &ssmin) { CXXLAPACK_DEBUG_OUT("slapll"); LAPACK_IMPL(slapll)(&n, x, &incx, y, &incy, &ssmin); } template void lapll(IndexType n, double *x, IndexType incx, double *y, double incy, double &ssmin) { CXXLAPACK_DEBUG_OUT("dlapll"); LAPACK_IMPL(dlapll)(&n, x, &incx, y, &incy, &ssmin); } template void lapll(IndexType n, std::complex *x, IndexType incx, std::complex *y, float incy, float &ssmin) { CXXLAPACK_DEBUG_OUT("clapll"); LAPACK_IMPL(clapll)(&n, reinterpret_cast(x), &incx, reinterpret_cast(y), &incy, &ssmin); } template void lapll(IndexType n, std::complex *x, IndexType incx, std::complex *y, double incy, double &ssmin) { CXXLAPACK_DEBUG_OUT("zlapll"); LAPACK_IMPL(zlapll)(&n, reinterpret_cast(x), &incx, reinterpret_cast(y), &incy, &ssmin); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_DUMMY_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lapmr.h000066400000000000000000000055311456314707100243530ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAPMR_H #define CXXLAPACK_INTERFACE_LAPMR_H 1 #include namespace cxxlapack { template IndexType lapmr(bool forwrd, IndexType m, IndexType n, float *X, IndexType ldX, IndexType &k); template IndexType lapmr(bool forwrd, IndexType m, IndexType n, double *X, IndexType ldX, IndexType &k); template IndexType lapmr(bool forwrd, IndexType m, IndexType n, std::complex *X, IndexType ldX, IndexType &k); template IndexType lapmr(bool forwrd, IndexType m, IndexType n, std::complex *X, IndexType ldX, IndexType &k); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAPMR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lapmr.tcc000066400000000000000000000075161456314707100247020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAPMR_TCC #define CXXLAPACK_INTERFACE_LAPMR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lapmr(bool forwrd, IndexType m, IndexType n, float *X, IndexType ldX, IndexType &k) { CXXLAPACK_DEBUG_OUT("slapmr"); IndexType forwrd_ = forwrd; LAPACK_IMPL(slapmr)(&forwrd_, &m, &n, X, &ldX, &k); } template void lapmr(bool forwrd, IndexType m, IndexType n, double *X, IndexType ldX, IndexType &k) { CXXLAPACK_DEBUG_OUT("dlapmr"); IndexType forwrd_ = forwrd; LAPACK_IMPL(dlapmr)(&forwrd_, &m, &n, X, &ldX, &k); } template void lapmr(bool forwrd, IndexType m, IndexType n, std::complex *X, IndexType ldX, IndexType &k) { CXXLAPACK_DEBUG_OUT("clapmr"); IndexType forwrd_ = forwrd; LAPACK_IMPL(clapmr)(&forwrd_, &m, &n, reinterpret_cast(X), &ldX, &k); } template void lapmr(bool forwrd, IndexType m, IndexType n, std::complex *X, IndexType ldX, IndexType &k) { CXXLAPACK_DEBUG_OUT("zlapmr"); IndexType forwrd_ = forwrd; LAPACK_IMPL(zlapmr)(&forwrd_, &m, &n, reinterpret_cast(X), &ldX, &k); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAPMR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lapmt.h000066400000000000000000000055321456314707100243560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAPMT_H #define CXXLAPACK_INTERFACE_LAPMT_H 1 #include namespace cxxlapack { template IndexType lapmt(bool forwrd, IndexType m, IndexType n, float *X, IndexType ldX, IndexType &k); template IndexType lapmt(bool forwrd, IndexType m, IndexType n, double *X, IndexType ldX, IndexType &k); template IndexType lapmt(bool forwrd, IndexType m, IndexType n, std::complex *X, IndexType ldX, IndexType &k); template IndexType lapmt(bool forwrd, IndexType m, IndexType n, std::complex *X, IndexType ldX, IndexType &k); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAPMT_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lapmt.tcc000066400000000000000000000075231456314707100247020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAPMT_TCC #define CXXLAPACK_INTERFACE_LAPMT_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lapmt(bool forwrd, IndexType m, IndexType n, float *X, IndexType ldX, IndexType &k) { CXXLAPACK_DEBUG_OUT("slapmt"); IndexType forwrd_ = forwrd; LAPACK_IMPL(slapmt)(&forwrd_, &m, &n, X, &ldX, &k); } template void lapmt(bool forwrd, IndexType m, IndexType n, double *X, IndexType ldX, IndexType &k) { CXXLAPACK_DEBUG_OUT("dlapmt"); IndexType forwrd_ = forwrd; LAPACK_IMPL(dlapmt)(&forwrd_, &m, &n, X, &ldX, &k); } template void lapmt(bool forwrd, IndexType m, IndexType n, std::complex *X, IndexType ldX, IndexType &k) { CXXLAPACK_DEBUG_OUT("clapmt"); IndexType forwrd_ = forwrd; LAPACK_IMPL(clapmt)(&forwrd_, &m, &n, reinterpret_cast(X), &ldX, &k); } template void lapmt(bool forwrd, IndexType m, IndexType n, std::complex *X, IndexType ldX, IndexType &k) { CXXLAPACK_DEBUG_OUT("zlapmt"); IndexType forwrd_ = forwrd; LAPACK_IMPL(zlapmt)(&forwrd_, &m, &n, reinterpret_cast(X), &ldX, &k); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAPMT_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laprec.h000066400000000000000000000036121456314707100245040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAPREC_H #define CXXLAPACK_INTERFACE_LAPREC_H 1 #include namespace cxxlapack { template IndexType laprec(char prec); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAPREC_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laprec.tcc000066400000000000000000000040521456314707100250250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAPREC_TCC #define CXXLAPACK_INTERFACE_LAPREC_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laprec(char prec) { CXXLAPACK_DEBUG_OUT("laprec"); return LAPACK_IMPL(ilaprec)(&prec); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAPREC_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lapy2.h000066400000000000000000000037021456314707100242650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAPY2_H #define CXXLAPACK_INTERFACE_LAPY2_H 1 #include namespace cxxlapack { template float lapy2(float x, float y); template double lapy2(double x, double y); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAPY2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lapy2.tcc000066400000000000000000000042541456314707100246120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAPY2_TCC #define CXXLAPACK_INTERFACE_LAPY2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lapy2(float x, float y) { CXXLAPACK_DEBUG_OUT("slapy2"); return LAPACK_IMPL(slapy2)(&x, &y); } template double lapy2(double x, double y) { CXXLAPACK_DEBUG_OUT("dlapy2"); return LAPACK_IMPL(dlapy2)(&x, &y); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAPY2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lapy3.h000066400000000000000000000037251456314707100242730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAPY3_H #define CXXLAPACK_INTERFACE_LAPY3_H 1 #include namespace cxxlapack { template float lapy3(float x, float y, float z); template double lapy3(double x, double y, double z); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAPY3_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lapy3.tcc000066400000000000000000000043061456314707100246110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAPY3_TCC #define CXXLAPACK_INTERFACE_LAPY3_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template float lapy3(float x, float y, float z) { CXXLAPACK_DEBUG_OUT("slapy3"); return LAPACK_IMPL(slapy3)(&x, &y, &z); } template double lapy3(double x, double y, double z) { CXXLAPACK_DEBUG_OUT("dlapy3"); return LAPACK_IMPL(dlapy3)(&x, &y, &z); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAPY3_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqgb.h000066400000000000000000000073261456314707100243320ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQGB_H #define CXXLAPACK_INTERFACE_LAQGB_H 1 #include namespace cxxlapack { template void laqgb(IndexType m, IndexType n, IndexType kl, IndexType ku, float *Ab, IndexType ldAb, const float *r, const float *c, float rowcnd, float colcnd, float amax, char &equed); template void laqgb(IndexType m, IndexType n, IndexType kl, IndexType ku, double *Ab, IndexType ldAb, const double *r, const double *c, double rowcnd, double colcnd, double amax, char &equed); template void laqgb(IndexType m, IndexType n, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldAb, const float *r, const float *c, float rowcnd, float colcnd, float amax, char &equed); template void laqgb(IndexType m, IndexType n, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldAb, const double *r, const double *c, double rowcnd, double colcnd, double amax, char &equed); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQGB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqgb.tcc000066400000000000000000000123231456314707100246450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQGB_TCC #define CXXLAPACK_INTERFACE_LAQGB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laqgb(IndexType m, IndexType n, IndexType kl, IndexType ku, float *Ab, IndexType ldAb, const float *r, const float *c, float rowcnd, float colcnd, float amax, char &equed) { CXXLAPACK_DEBUG_OUT("slaqgb"); LAPACK_IMPL(slaqgb)(&m, &n, &kl, &ku, Ab, &ldAb, r, c, &rowcnd, &colcnd, &amax, &equed); } template void laqgb(IndexType m, IndexType n, IndexType kl, IndexType ku, double *Ab, IndexType ldAb, const double *r, const double *c, double rowcnd, double colcnd, double amax, char &equed) { CXXLAPACK_DEBUG_OUT("dlaqgb"); LAPACK_IMPL(dlaqgb)(&m, &n, &kl, &ku, Ab, &ldAb, r, c, &rowcnd, &colcnd, &amax, &equed); } template void laqgb(IndexType m, IndexType n, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldAb, const float *r, const float *c, float rowcnd, float colcnd, float amax, char &equed) { CXXLAPACK_DEBUG_OUT("claqgb"); LAPACK_IMPL(claqgb)(&m, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, r, c, &rowcnd, &colcnd, &amax, &equed); } template void laqgb(IndexType m, IndexType n, IndexType kl, IndexType ku, std::complex *Ab, IndexType ldAb, const double *r, const double *c, double rowcnd, double colcnd, double amax, char &equed) { CXXLAPACK_DEBUG_OUT("zlaqgb"); LAPACK_IMPL(zlaqgb)(&m, &n, &kl, &ku, reinterpret_cast(Ab), &ldAb, r, c, &rowcnd, &colcnd, &amax, &equed); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQGB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqge.h000066400000000000000000000064321456314707100243320ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQGE_H #define CXXLAPACK_INTERFACE_LAQGE_H 1 #include namespace cxxlapack { template void laqge(IndexType m, IndexType n, float *A, IndexType ldA, const float *r, const float *c, const float &rowCond, const float &colCond, const float &maxA, char &equed); template void laqge(IndexType m, IndexType n, double *A, IndexType ldA, const double *r, const double *c, const double &rowCond, const double &colCond, const double &maxA, char &equed); template void laqge(const IndexType m, const IndexType n, std::complex *A, const IndexType ldA, const float *r, const float *c, const float &rowCond, const float &colCond, const float &maxA, char &equed); template void laqge(const IndexType m, const IndexType n, std::complex *A, const IndexType ldA, const double *r, const double *c, const double &rowCond, const double &colCond, const double &maxA, char &equed); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQGE_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqge.tcc000066400000000000000000000111111456314707100246420ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQGE_TCC #define CXXLAPACK_INTERFACE_LAQGE_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laqge(IndexType m, IndexType n, float *A, IndexType ldA, const float *r, const float *c, const float &rowCond, const float &colCond, const float &maxA, char &equed) { CXXLAPACK_DEBUG_OUT("slaqge"); LAPACK_IMPL(slaqge)(&m, &n, A, &ldA, r, c, &rowCond, &colCond, &maxA, &equed); } template void laqge(IndexType m, IndexType n, double *A, IndexType ldA, const double *r, const double *c, const double &rowCond, const double &colCond, const double &maxA, char &equed) { CXXLAPACK_DEBUG_OUT("dlaqge"); LAPACK_IMPL(dlaqge)(&m, &n, A, &ldA, r, c, &rowCond, &colCond, &maxA, &equed); } template void laqge(const IndexType m, const IndexType n, std::complex *A, const IndexType ldA, const float *r, const float *c, const float &rowCond, const float &colCond, const float &maxA, char &equed) { CXXLAPACK_DEBUG_OUT("claqge"); LAPACK_IMPL(claqge)(&m, &n, reinterpret_cast(A), &ldA, r, c, &rowCond, &colCond, &maxA, &equed); } template void laqge(const IndexType m, const IndexType n, std::complex *A, const IndexType ldA, const double *r, const double *c, const double &rowCond, const double &colCond, const double &maxA, char &equed) { CXXLAPACK_DEBUG_OUT("zlaqge"); LAPACK_IMPL(zlaqge)(&m, &n, reinterpret_cast(A), &ldA, r, c, &rowCond, &colCond, &maxA, &equed); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQGE_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqhb.h000066400000000000000000000050551456314707100243300ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQHB_H #define CXXLAPACK_INTERFACE_LAQHB_H 1 #include namespace cxxlapack { template void laqhb(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, const float *s, float scond, float amax, char &equed); template void laqhb(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, const double *s, double scond, double amax, char &equed); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQHB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqhb.tcc000066400000000000000000000063421456314707100246520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQHB_TCC #define CXXLAPACK_INTERFACE_LAQHB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laqhb(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, const float *s, float scond, float amax, char &equed) { CXXLAPACK_DEBUG_OUT("claqhb"); LAPACK_IMPL(claqhb)(&uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, s, &scond, &amax, &equed); } template void laqhb(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, const double *s, double scond, double amax, char &equed) { CXXLAPACK_DEBUG_OUT("zlaqhb"); LAPACK_IMPL(zlaqhb)(&uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, s, &scond, &amax, &equed); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQHB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqhe.h000066400000000000000000000047351456314707100243370ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQHE_H #define CXXLAPACK_INTERFACE_LAQHE_H 1 #include namespace cxxlapack { template void laqhe(char uplo, IndexType n, std::complex *A, IndexType ldA, const float *s, float scond, float amax, char &equed); template void laqhe(char uplo, IndexType n, std::complex *A, IndexType ldA, const double *s, double scond, double amax, char &equed); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQHE_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqhe.tcc000066400000000000000000000061411456314707100246520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQHE_TCC #define CXXLAPACK_INTERFACE_LAQHE_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laqhe(char uplo, IndexType n, std::complex *A, IndexType ldA, const float *s, float scond, float amax, char &equed) { CXXLAPACK_DEBUG_OUT("claqhe"); LAPACK_IMPL(claqhe)(&uplo, &n, reinterpret_cast(A), &ldA, s, &scond, &amax, &equed); } template void laqhe(char uplo, IndexType n, std::complex *A, IndexType ldA, const double *s, double scond, double amax, char &equed) { CXXLAPACK_DEBUG_OUT("zlaqhe"); LAPACK_IMPL(zlaqhe)(&uplo, &n, reinterpret_cast(A), &ldA, s, &scond, &amax, &equed); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQHE_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqhp.h000066400000000000000000000046311456314707100243450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQHP_H #define CXXLAPACK_INTERFACE_LAQHP_H 1 #include namespace cxxlapack { template void laqhp(char uplo, IndexType n, std::complex *Ap, const float *s, float scond, float amax, char &equed); template void laqhp(char uplo, IndexType n, std::complex *Ap, const double *s, double scond, double amax, char &equed); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQHP_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqhp.tcc000066400000000000000000000064641456314707100246750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQHP_TCC #define CXXLAPACK_INTERFACE_LAQHP_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laqhp(char uplo, IndexType n, std::complex *Ap, const float *s, float scond, float amax, char &equed) { CXXLAPACK_DEBUG_OUT("claqhp"); IndexType info; LAPACK_IMPL(claqhp)(&uplo, &n, reinterpret_cast(Ap), s, &scond, &amax, &equed); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laqhp(char uplo, IndexType n, std::complex *Ap, const double *s, double scond, double amax, char &equed) { CXXLAPACK_DEBUG_OUT("zlaqhp"); IndexType info; LAPACK_IMPL(zlaqhp)(&uplo, &n, reinterpret_cast(Ap), s, &scond, &amax, &equed); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQHP_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqp2.h000066400000000000000000000064101456314707100242540ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQP2_H #define CXXLAPACK_INTERFACE_LAQP2_H 1 #include namespace cxxlapack { template void laqp2(IndexType m, IndexType n, IndexType offset, float *A, IndexType ldA, IndexType *jPvt, float *tau, float *vn1, float *vn2, float *work); template void laqp2(IndexType m, IndexType n, IndexType offset, double *A, IndexType ldA, IndexType *jPvt, double *tau, double *vn1, double *vn2, double *work); template void laqp2(IndexType m, IndexType n, IndexType offset, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, float *vn1, float *vn2, std::complex *work); template void laqp2(IndexType m, IndexType n, IndexType offset, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, double *vn1, double *vn2, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQP2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqp2.tcc000066400000000000000000000112311456314707100245730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQP2_TCC #define CXXLAPACK_INTERFACE_LAQP2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laqp2(IndexType m, IndexType n, IndexType offset, float *A, IndexType ldA, IndexType *jPvt, float *tau, float *vn1, float *vn2, float *work) { CXXLAPACK_DEBUG_OUT("slaqp2"); LAPACK_IMPL(slaqp2)(&m, &n, &offset, A, &ldA, jPvt, tau, vn1, vn2, work); } template void laqp2(IndexType m, IndexType n, IndexType offset, double *A, IndexType ldA, IndexType *jPvt, double *tau, double *vn1, double *vn2, double *work) { CXXLAPACK_DEBUG_OUT("dlaqp2"); LAPACK_IMPL(dlaqp2)(&m, &n, &offset, A, &ldA, jPvt, tau, vn1, vn2, work); } template void laqp2(IndexType m, IndexType n, IndexType offset, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, float *vn1, float *vn2, std::complex *work) { CXXLAPACK_DEBUG_OUT("claqp2"); LAPACK_IMPL(claqp2)(&m, &n, &offset, reinterpret_cast(A), &ldA, jPvt, reinterpret_cast(tau), vn1, vn2, reinterpret_cast(work)); } template void laqp2(IndexType m, IndexType n, IndexType offset, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, double *vn1, double *vn2, std::complex *work) { CXXLAPACK_DEBUG_OUT("zlaqp2"); LAPACK_IMPL(zlaqp2)(&m, &n, &offset, reinterpret_cast(A), &ldA, jPvt, reinterpret_cast(tau), vn1, vn2, reinterpret_cast(work)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQP2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqps.h000066400000000000000000000074161456314707100243640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQPS_H #define CXXLAPACK_INTERFACE_LAQPS_H 1 #include namespace cxxlapack { template void laqps(IndexType m, IndexType n, IndexType offset, IndexType nb, IndexType &kb, float *A, IndexType ldA, IndexType *jPvt, float *tau, float *vn1, float *vn2, float *auxv, float *F, IndexType ldF); template void laqps(IndexType m, IndexType n, IndexType offset, IndexType nb, IndexType &kb, double *A, IndexType ldA, IndexType *jPvt, double *tau, double *vn1, double *vn2, double *auxv, double *F, IndexType ldF); template void laqps(IndexType m, IndexType n, IndexType offset, IndexType nb, IndexType &kb, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, float *vn1, float *vn2, std::complex *auxv, std::complex *F, IndexType ldF); template void laqps(IndexType m, IndexType n, IndexType offset, IndexType nb, IndexType &kb, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, double *vn1, double *vn2, std::complex *auxv, std::complex *F, IndexType ldF); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQPS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqps.tcc000066400000000000000000000131431456314707100247000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQPS_TCC #define CXXLAPACK_INTERFACE_LAQPS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laqps(IndexType m, IndexType n, IndexType offset, IndexType nb, IndexType &kb, float *A, IndexType ldA, IndexType *jPvt, float *tau, float *vn1, float *vn2, float *auxv, float *F, IndexType ldF) { CXXLAPACK_DEBUG_OUT("slaqps"); LAPACK_IMPL(slaqps)(&m, &n, &offset, &nb, &kb, A, &ldA, jPvt, tau, vn1, vn2, auxv, F, &ldF); } template void laqps(IndexType m, IndexType n, IndexType offset, IndexType nb, IndexType &kb, double *A, IndexType ldA, IndexType *jPvt, double *tau, double *vn1, double *vn2, double *auxv, double *F, IndexType ldF) { CXXLAPACK_DEBUG_OUT("dlaqps"); LAPACK_IMPL(dlaqps)(&m, &n, &offset, &nb, &kb, A, &ldA, jPvt, tau, vn1, vn2, auxv, F, &ldF); } template void laqps(IndexType m, IndexType n, IndexType offset, IndexType nb, IndexType &kb, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, float *vn1, float *vn2, std::complex *auxv, std::complex *F, IndexType ldF) { CXXLAPACK_DEBUG_OUT("claqps"); LAPACK_IMPL(claqps)(&m, &n, &offset, &nb, &kb, reinterpret_cast(A), &ldA, jPvt, reinterpret_cast(tau), vn1, vn2, reinterpret_cast(auxv), reinterpret_cast(F), &ldF); } template void laqps(IndexType m, IndexType n, IndexType offset, IndexType nb, IndexType &kb, std::complex *A, IndexType ldA, IndexType *jPvt, std::complex *tau, double *vn1, double *vn2, std::complex *auxv, std::complex *F, IndexType ldF) { CXXLAPACK_DEBUG_OUT("zlaqps"); LAPACK_IMPL(zlaqps)(&m, &n, &offset, &nb, &kb, reinterpret_cast(A), &ldA, jPvt, reinterpret_cast(tau), vn1, vn2, reinterpret_cast(auxv), reinterpret_cast(F), &ldF); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQPS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqr0.h000066400000000000000000000075461456314707100242670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQR0_H #define CXXLAPACK_INTERFACE_LAQR0_H 1 #include namespace cxxlapack { template IndexType laqr0(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, float *H, IndexType ldH, float *wr, float *wi, IndexType iLoZ, IndexType iHiZ, float *Z, IndexType ldZ, float *work, IndexType lWork); template IndexType laqr0(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, double *H, IndexType ldH, double *wr, double *wi, IndexType iLoZ, IndexType iHiZ, double *Z, IndexType ldZ, double *work, IndexType lWork); template IndexType laqr0(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork); template IndexType laqr0(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQR0_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqr0.tcc000066400000000000000000000154221456314707100246010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQR0_TCC #define CXXLAPACK_INTERFACE_LAQR0_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laqr0(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, float *H, IndexType ldH, float *wr, float *wi, IndexType iLoZ, IndexType iHiZ, float *Z, IndexType ldZ, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("slaqr0"); IndexType info; IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(slaqr0)(&wantT_, &wantZ_, &n, &iLo, &iHi, H, &ldH, wr, wi, &iLoZ, &iHiZ, Z, &ldZ, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laqr0(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, double *H, IndexType ldH, double *wr, double *wi, IndexType iLoZ, IndexType iHiZ, double *Z, IndexType ldZ, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dlaqr0"); IndexType info; IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(dlaqr0)(&wantT_, &wantZ_, &n, &iLo, &iHi, H, &ldH, wr, wi, &iLoZ, &iHiZ, Z, &ldZ, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laqr0(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("claqr0"); IndexType info; IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(claqr0)(&wantT_, &wantZ_, &n, &iLo, &iHi, reinterpret_cast(H), &ldH, reinterpret_cast(w), &iLoZ, &iHiZ, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laqr0(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zlaqr0"); IndexType info; IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(zlaqr0)(&wantT_, &wantZ_, &n, &iLo, &iHi, reinterpret_cast(H), &ldH, reinterpret_cast(w), &iLoZ, &iHiZ, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQR0_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqr1.h000066400000000000000000000057551456314707100242700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQR1_H #define CXXLAPACK_INTERFACE_LAQR1_H 1 #include namespace cxxlapack { template void laqr1(IndexType n, const float *H, IndexType ldH, const float &sr1, const float &si1, const float &sr2, const float &si2, float *v); template void laqr1(IndexType n, const double *H, IndexType ldH, const double &sr1, const double &si1, const double &sr2, const double &si2, double *v); template void laqr1(IndexType n, const std::complex *H, IndexType ldH, const std::complex &s1, const std::complex &s2, std::complex &v); template void laqr1(IndexType n, const std::complex *H, IndexType ldH, const std::complex &s1, const std::complex &s2, std::complex &v); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQR1_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqr1.tcc000066400000000000000000000102331456314707100245750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQR1_TCC #define CXXLAPACK_INTERFACE_LAQR1_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laqr1(IndexType n, const float *H, IndexType ldH, const float &sr1, const float &si1, const float &sr2, const float &si2, float *v) { CXXLAPACK_DEBUG_OUT("slaqr1"); LAPACK_IMPL(slaqr1)(&n, H, &ldH, &sr1, &si1, &sr2, &si2, v); } template void laqr1(IndexType n, const double *H, IndexType ldH, const double &sr1, const double &si1, const double &sr2, const double &si2, double *v) { CXXLAPACK_DEBUG_OUT("dlaqr1"); LAPACK_IMPL(dlaqr1)(&n, H, &ldH, &sr1, &si1, &sr2, &si2, v); } template void laqr1(IndexType n, const std::complex *H, IndexType ldH, const std::complex &s1, const std::complex &s2, std::complex *v) { CXXLAPACK_DEBUG_OUT("claqr1"); LAPACK_IMPL(claqr1)(&n, reinterpret_cast(H), &ldH, reinterpret_cast(&s1), reinterpret_cast(&s2), reinterpret_cast(v)); } template void laqr1(IndexType n, const std::complex *H, IndexType ldH, const std::complex &s1, const std::complex &s2, std::complex *v) { CXXLAPACK_DEBUG_OUT("zlaqr1"); LAPACK_IMPL(zlaqr1)(&n, reinterpret_cast(H), &ldH, reinterpret_cast(&s1), reinterpret_cast(&s2), reinterpret_cast(v)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQR1_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqr2.h000066400000000000000000000123671456314707100242660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQR2_H #define CXXLAPACK_INTERFACE_LAQR2_H 1 #include namespace cxxlapack { template void laqr2(bool wantT, bool wantZ, IndexType u, IndexType kTop, IndexType kBot, IndexType nw, float *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, float *Z, IndexType ldZ, IndexType &ns, IndexType &nd, float *sr, float *si, float *V, IndexType ldV, IndexType nh, float *T, IndexType ldT, IndexType nv, float *WV, IndexType ldWV, float *work, IndexType lWork); template void laqr2(bool wantT, bool wantZ, IndexType u, IndexType kTop, IndexType kBot, IndexType nw, double *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, double *Z, IndexType ldZ, IndexType &ns, IndexType &nd, double *sr, double *si, double *V, IndexType ldV, IndexType nh, double *T, IndexType ldT, IndexType nv, double *WV, IndexType ldWV, double *work, IndexType lWork); template void laqr2(bool wantT, bool wantZ, IndexType n, IndexType kTop, IndexType kBot, IndexType nw, std::complex *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, IndexType &ns, IndexType &nd, std::complex *sh, std::complex *V, IndexType ldV, IndexType nh, std::complex *T, IndexType ldT, IndexType nv, std::complex *WV, IndexType ldWV, std::complex *work, IndexType lWork); template void laqr2(bool wantT, bool wantZ, IndexType n, IndexType kTop, IndexType kBot, IndexType nw, std::complex *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, IndexType &ns, IndexType &nd, std::complex *sh, std::complex *V, IndexType ldV, IndexType nh, std::complex *T, IndexType ldT, IndexType nv, std::complex *WV, IndexType ldWV, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQR2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqr2.tcc000066400000000000000000000212251456314707100246010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQR2_TCC #define CXXLAPACK_INTERFACE_LAQR2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laqr2(bool wantT, bool wantZ, IndexType u, IndexType kTop, IndexType kBot, IndexType nw, float *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, float *Z, IndexType ldZ, IndexType &ns, IndexType &nd, float *sr, float *si, float *V, IndexType ldV, IndexType nh, float *T, IndexType ldT, IndexType nv, float *WV, IndexType ldWV, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("slaqr2"); IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(slaqr2)(&wantT_, &wantZ_, &u, &kTop, &kBot, &nw, H, &ldH, &iLoZ, &iHiZ, Z, &ldZ, &ns, &nd, sr, si, V, &ldV, &nh, T, &ldT, &nv, WV, &ldWV, work, &lWork); } template void laqr2(bool wantT, bool wantZ, IndexType u, IndexType kTop, IndexType kBot, IndexType nw, double *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, double *Z, IndexType ldZ, IndexType &ns, IndexType &nd, double *sr, double *si, double *V, IndexType ldV, IndexType nh, double *T, IndexType ldT, IndexType nv, double *WV, IndexType ldWV, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dlaqr2"); IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(dlaqr2)(&wantT_, &wantZ_, &u, &kTop, &kBot, &nw, H, &ldH, &iLoZ, &iHiZ, Z, &ldZ, &ns, &nd, sr, si, V, &ldV, &nh, T, &ldT, &nv, WV, &ldWV, work, &lWork); } template void laqr2(bool wantT, bool wantZ, IndexType n, IndexType kTop, IndexType kBot, IndexType nw, std::complex *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, IndexType &ns, IndexType &nd, std::complex *sh, std::complex *V, IndexType ldV, IndexType nh, std::complex *T, IndexType ldT, IndexType nv, std::complex *WV, IndexType ldWV, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("claqr2"); IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(claqr2)(&wantT_, &wantZ_, &n, &kTop, &kBot, &nw, reinterpret_cast(H), &ldH, &iLoZ, &iHiZ, reinterpret_cast(Z), &ldZ, &ns, &nd, reinterpret_cast(sh), reinterpret_cast(V), &ldV, &nh, reinterpret_cast(T), &ldT, &nv, reinterpret_cast(WV), &ldWV, reinterpret_cast(work), &lWork); } template void laqr2(bool wantT, bool wantZ, IndexType n, IndexType kTop, IndexType kBot, IndexType nw, std::complex *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, IndexType &ns, IndexType &nd, std::complex *sh, std::complex *V, IndexType ldV, IndexType nh, std::complex *T, IndexType ldT, IndexType nv, std::complex *WV, IndexType ldWV, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zlaqr2"); IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(zlaqr2)(&wantT_, &wantZ_, &n, &kTop, &kBot, &nw, reinterpret_cast(H), &ldH, &iLoZ, &iHiZ, reinterpret_cast(Z), &ldZ, &ns, &nd, reinterpret_cast(sh), reinterpret_cast(V), &ldV, &nh, reinterpret_cast(T), &ldT, &nv, reinterpret_cast(WV), &ldWV, reinterpret_cast(work), &lWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQR2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqr3.h000066400000000000000000000127001456314707100242560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQR3_H #define CXXLAPACK_INTERFACE_LAQR3_H 1 #include namespace cxxlapack { template void laqr3(bool wantT, bool wantZ, IndexType n, IndexType kTop, IndexType kBot, IndexType nw, float *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, float *Z, IndexType ldZ, IndexType &ns, IndexType &nd, float *sr, float *si, float *V, IndexType ldV, IndexType nh, float *T, IndexType ldT, IndexType nv, float *WV, IndexType ldWV, float *work, IndexType lWork); template void laqr3(bool wantT, bool wantZ, IndexType n, IndexType kTop, IndexType kBot, IndexType nw, double *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, double *Z, IndexType ldZ, IndexType &ns, IndexType &nd, double *sr, double *si, double *V, IndexType ldV, IndexType nh, double *T, IndexType ldT, IndexType nv, double *WV, IndexType ldWV, double *work, IndexType lWork); template void laqr3(bool wantT, bool wantZ, IndexType n, IndexType kTop, IndexType kBot, IndexType nw, std::complex *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, IndexType &ns, IndexType &nd, std::complex *sh, std::complex *V, IndexType ldV, IndexType nh, std::complex *T, IndexType ldT, IndexType nv, std::complex *WV, IndexType ldWV, std::complex *work, IndexType lWork); template void laqr3(bool wantT, bool wantZ, IndexType n, IndexType kTop, IndexType kBot, IndexType nw, std::complex *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, IndexType &ns, IndexType &nd, std::complex *sh, std::complex *V, IndexType ldV, IndexType nh, std::complex *T, IndexType ldT, IndexType nv, std::complex *WV, IndexType ldWV, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQR3_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqr3.tcc000066400000000000000000000215351456314707100246060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQR3_TCC #define CXXLAPACK_INTERFACE_LAQR3_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laqr3(bool wantT, bool wantZ, IndexType n, IndexType kTop, IndexType kBot, IndexType nw, float *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, float *Z, IndexType ldZ, IndexType &ns, IndexType &nd, float *sr, float *si, float *V, IndexType ldV, IndexType nh, float *T, IndexType ldT, IndexType nv, float *WV, IndexType ldWV, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("slaqr3"); IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(slaqr3)(&wantT_, &wantZ_, &n, &kTop, &kBot, &nw, H, &ldH, &iLoZ, &iHiZ, Z, &ldZ, &ns, &nd, sr, si, V, &ldV, &nh, T, &ldT, &nv, WV, &ldWV, work, &lWork); } template void laqr3(bool wantT, bool wantZ, IndexType n, IndexType kTop, IndexType kBot, IndexType nw, double *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, double *Z, IndexType ldZ, IndexType &ns, IndexType &nd, double *sr, double *si, double *V, IndexType ldV, IndexType nh, double *T, IndexType ldT, IndexType nv, double *WV, IndexType ldWV, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dlaqr3"); IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(dlaqr3)(&wantT_, &wantZ_, &n, &kTop, &kBot, &nw, H, &ldH, &iLoZ, &iHiZ, Z, &ldZ, &ns, &nd, sr, si, V, &ldV, &nh, T, &ldT, &nv, WV, &ldWV, work, &lWork); } template void laqr3(bool wantT, bool wantZ, IndexType n, IndexType kTop, IndexType kBot, IndexType nw, std::complex *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, IndexType &ns, IndexType &nd, std::complex *sh, std::complex *V, IndexType ldV, IndexType nh, std::complex *T, IndexType ldT, IndexType nv, std::complex *WV, IndexType ldWV, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("claqr3"); IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(claqr3)(&wantT_, &wantZ_, &n, &kTop, &kBot, &nw, reinterpret_cast(H), &ldH, &iLoZ, &iHiZ, reinterpret_cast(Z), &ldZ, &ns, &nd, reinterpret_cast(sh), reinterpret_cast(V), &ldV, &nh, reinterpret_cast(T), &ldT, &nv, reinterpret_cast(WV), &ldWV, reinterpret_cast(work), &lWork); } template void laqr3(bool wantT, bool wantZ, IndexType n, IndexType kTop, IndexType kBot, IndexType nw, std::complex *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, IndexType &ns, IndexType &nd, std::complex *sh, std::complex *V, IndexType ldV, IndexType nh, std::complex *T, IndexType ldT, IndexType nv, std::complex *WV, IndexType ldWV, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zlaqr3"); IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(zlaqr3)(&wantT_, &wantZ_, &n, &kTop, &kBot, &nw, reinterpret_cast(H), &ldH, &iLoZ, &iHiZ, reinterpret_cast(Z), &ldZ, &ns, &nd, reinterpret_cast(sh), reinterpret_cast(V), &ldV, &nh, reinterpret_cast(T), &ldT, &nv, reinterpret_cast(WV), &ldWV, reinterpret_cast(work), &lWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQR3_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqr4.h000066400000000000000000000077371456314707100242750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQR4_H #define CXXLAPACK_INTERFACE_LAQR4_H 1 #include namespace cxxlapack { template IndexType laqr4(bool wantT, bool wantZ, IndexType n, const IndexType iLo, const IndexType iHi, float *H, const IndexType ldH, float *wr, float *wi, const IndexType iLoZ, const IndexType iHiZ, float *Z, const IndexType ldZ, float *work, const IndexType lWork); template IndexType laqr4(bool wantT, bool wantZ, IndexType n, const IndexType iLo, const IndexType iHi, double *H, const IndexType ldH, double *wr, double *wi, const IndexType iLoZ, const IndexType iHiZ, double *Z, const IndexType ldZ, double *work, const IndexType lWork); template IndexType laqr4(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork); template IndexType laqr4(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQR4_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqr4.tcc000066400000000000000000000156171456314707100246130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQR4_TCC #define CXXLAPACK_INTERFACE_LAQR4_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laqr4(bool wantT, bool wantZ, IndexType n, const IndexType iLo, const IndexType iHi, float *H, const IndexType ldH, float *wr, float *wi, const IndexType iLoZ, const IndexType iHiZ, float *Z, const IndexType ldZ, float *work, const IndexType lWork) { CXXLAPACK_DEBUG_OUT("slaqr4"); IndexType info; IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(slaqr4)(&wantT_, &wantZ_, &n, &iLo, &iHi, H, &ldH, wr, wi, &iLoZ, &iHiZ, Z, &ldZ, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laqr4(bool wantT, bool wantZ, IndexType n, const IndexType iLo, const IndexType iHi, double *H, const IndexType ldH, double *wr, double *wi, const IndexType iLoZ, const IndexType iHiZ, double *Z, const IndexType ldZ, double *work, const IndexType lWork) { CXXLAPACK_DEBUG_OUT("dlaqr4"); IndexType info; IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(dlaqr4)(&wantT_, &wantZ_, &n, &iLo, &iHi, H, &ldH, wr, wi, &iLoZ, &iHiZ, Z, &ldZ, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laqr4(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("claqr4"); IndexType info; IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(claqr4)(&wantT_, &wantZ_, &n, &iLo, &iHi, reinterpret_cast(H), &ldH, reinterpret_cast(w), &iLoZ, &iHiZ, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laqr4(bool wantT, bool wantZ, IndexType n, IndexType iLo, IndexType iHi, std::complex *H, IndexType ldH, std::complex *w, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zlaqr4"); IndexType info; IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(zlaqr4)(&wantT_, &wantZ_, &n, &iLo, &iHi, reinterpret_cast(H), &ldH, reinterpret_cast(w), &iLoZ, &iHiZ, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQR4_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqr5.h000066400000000000000000000122061456314707100242610ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQR5_H #define CXXLAPACK_INTERFACE_LAQR5_H 1 #include namespace cxxlapack { template void laqr5(bool wantT, bool wantZ, IndexType kacc22, IndexType n, IndexType kTop, IndexType kBot, IndexType nShifts, float *sr, float *si, float *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, float *Z, IndexType ldZ, float *V, IndexType ldV, float *U, IndexType ldU, IndexType nv, float *WV, IndexType ldWV, IndexType nh, float *WH, IndexType ldWH); template void laqr5(bool wantT, bool wantZ, IndexType kacc22, IndexType n, IndexType kTop, IndexType kBot, IndexType nShifts, double *sr, double *si, double *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, double *Z, IndexType ldZ, double *V, IndexType ldV, double *U, IndexType ldU, IndexType nv, double *WV, IndexType ldWV, IndexType nh, double *WH, IndexType ldWH); template void laqr5(bool wantT, bool wantZ, IndexType kacc22, IndexType n, IndexType kTop, IndexType kBot, IndexType nShifts, std::complex *s, std::complex *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, std::complex *V, IndexType ldV, std::complex *U, IndexType ldU, IndexType nv, std::complex *WV, IndexType ldWV, IndexType nh, std::complex *WH, IndexType ldWH); template void laqr5(bool wantT, bool wantZ, IndexType kacc22, IndexType n, IndexType kTop, IndexType kBot, IndexType nShifts, std::complex *s, std::complex *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, std::complex *V, IndexType ldV, std::complex *U, IndexType ldU, IndexType nv, std::complex *WV, IndexType ldWV, IndexType nh, std::complex *WH, IndexType ldWH); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQR5_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqr5.tcc000066400000000000000000000207251456314707100246100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQR5_TCC #define CXXLAPACK_INTERFACE_LAQR5_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laqr5(bool wantT, bool wantZ, IndexType kacc22, IndexType n, IndexType kTop, IndexType kBot, IndexType nShifts, float *sr, float *si, float *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, float *Z, IndexType ldZ, float *V, IndexType ldV, float *U, IndexType ldU, IndexType nv, float *WV, IndexType ldWV, IndexType nh, float *WH, IndexType ldWH) { CXXLAPACK_DEBUG_OUT("slaqr5"); IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(slaqr5)(&wantT_, &wantZ_, &kacc22, &n, &kTop, &kBot, &nShifts, sr, si, H, &ldH, &iLoZ, &iHiZ, Z, &ldZ, V, &ldV, U, &ldU, &nv, WV, &ldWV, &nh, WH, &ldWH); } template void laqr5(bool wantT, bool wantZ, IndexType kacc22, IndexType n, IndexType kTop, IndexType kBot, IndexType nShifts, double *sr, double *si, double *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, double *Z, IndexType ldZ, double *V, IndexType ldV, double *U, IndexType ldU, IndexType nv, double *WV, IndexType ldWV, IndexType nh, double *WH, IndexType ldWH) { CXXLAPACK_DEBUG_OUT("dlaqr5"); IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(dlaqr5)(&wantT_, &wantZ_, &kacc22, &n, &kTop, &kBot, &nShifts, sr, si, H, &ldH, &iLoZ, &iHiZ, Z, &ldZ, V, &ldV, U, &ldU, &nv, WV, &ldWV, &nh, WH, &ldWH); } template void laqr5(bool wantT, bool wantZ, IndexType kacc22, IndexType n, IndexType kTop, IndexType kBot, IndexType nShifts, std::complex *s, std::complex *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, std::complex *V, IndexType ldV, std::complex *U, IndexType ldU, IndexType nv, std::complex *WV, IndexType ldWV, IndexType nh, std::complex *WH, IndexType ldWH) { CXXLAPACK_DEBUG_OUT("claqr5"); IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(claqr5)(&wantT_, &wantZ_, &kacc22, &n, &kTop, &kBot, &nShifts, reinterpret_cast(s), reinterpret_cast(H), &ldH, &iLoZ, &iHiZ, reinterpret_cast(Z), &ldZ, reinterpret_cast(V), &ldV, reinterpret_cast(U), &ldU, &nv, reinterpret_cast(WV), &ldWV, &nh, reinterpret_cast(WH), &ldWH); } template void laqr5(bool wantT, bool wantZ, IndexType kacc22, IndexType n, IndexType kTop, IndexType kBot, IndexType nShifts, std::complex *s, std::complex *H, IndexType ldH, IndexType iLoZ, IndexType iHiZ, std::complex *Z, IndexType ldZ, std::complex *V, IndexType ldV, std::complex *U, IndexType ldU, IndexType nv, std::complex *WV, IndexType ldWV, IndexType nh, std::complex *WH, IndexType ldWH) { CXXLAPACK_DEBUG_OUT("zlaqr5"); IndexType wantT_ = wantT; IndexType wantZ_ = wantZ; LAPACK_IMPL(zlaqr5)(&wantT_, &wantZ_, &kacc22, &n, &kTop, &kBot, &nShifts, reinterpret_cast(s), reinterpret_cast(H), &ldH, &iLoZ, &iHiZ, reinterpret_cast(Z), &ldZ, reinterpret_cast(V), &ldV, reinterpret_cast(U), &ldU, &nv, reinterpret_cast(WV), &ldWV, &nh, reinterpret_cast(WH), &ldWH); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQR5_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqsb.h000066400000000000000000000064621456314707100243460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQSB_H #define CXXLAPACK_INTERFACE_LAQSB_H 1 #include namespace cxxlapack { template IndexType laqsb(char uplo, IndexType n, IndexType kd, float *Ab, IndexType ldAb, const float *s, float scond, float amax, char &equed); template IndexType laqsb(char uplo, IndexType n, IndexType kd, double *Ab, IndexType ldAb, const double *s, double scond, double amax, char &equed); template IndexType laqsb(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, const float *s, float scond, float amax, char &equed); template IndexType laqsb(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, const double *s, double scond, double amax, char &equed); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQSB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqsb.tcc000066400000000000000000000107631456314707100246670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQSB_TCC #define CXXLAPACK_INTERFACE_LAQSB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laqsb(char uplo, IndexType n, IndexType kd, float *Ab, IndexType ldAb, const float *s, float scond, float amax, char &equed) { CXXLAPACK_DEBUG_OUT("slaqsb"); LAPACK_IMPL(slaqsb)(&uplo, &n, &kd, Ab, &ldAb, s, &scond, &amax, &equed); } template void laqsb(char uplo, IndexType n, IndexType kd, double *Ab, IndexType ldAb, const double *s, double scond, double amax, char &equed) { CXXLAPACK_DEBUG_OUT("dlaqsb"); LAPACK_IMPL(dlaqsb)(&uplo, &n, &kd, Ab, &ldAb, s, &scond, &amax, &equed); } template void laqsb(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, const float *s, float scond, float amax, char &equed) { CXXLAPACK_DEBUG_OUT("claqsb"); LAPACK_IMPL(claqsb)(&uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, s, &scond, &amax, &equed); } template void laqsb(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb, const double *s, double scond, double amax, char &equed) { CXXLAPACK_DEBUG_OUT("zlaqsb"); LAPACK_IMPL(zlaqsb)(&uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, s, &scond, &amax, &equed); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQSB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqsp.h000066400000000000000000000057661456314707100243720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQSP_H #define CXXLAPACK_INTERFACE_LAQSP_H 1 #include namespace cxxlapack { template void laqsp(char uplo, IndexType n, float *Ap, const float *s, float scond, float amax, char &equed); template void laqsp(char uplo, IndexType n, double *Ap, const double *s, double scond, double amax, char &equed); template void laqsp(char uplo, IndexType n, std::complex *Ap, const float *s, float scond, float amax, char &equed); template void laqsp(char uplo, IndexType n, std::complex *Ap, const double *s, double scond, double amax, char &equed); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQSP_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqsp.tcc000066400000000000000000000077671456314707100247170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQSP_TCC #define CXXLAPACK_INTERFACE_LAQSP_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laqsp(char uplo, IndexType n, float *Ap, const float *s, float scond, float amax, char &equed) { CXXLAPACK_DEBUG_OUT("slaqsp"); LAPACK_IMPL(slaqsp)(&uplo, &n, Ap, s, &scond, &amax, &equed); } template void laqsp(char uplo, IndexType n, double *Ap, const double *s, double scond, double amax, char &equed) { CXXLAPACK_DEBUG_OUT("dlaqsp"); LAPACK_IMPL(dlaqsp)(&uplo, &n, Ap, s, &scond, &amax, &equed); } template void laqsp(char uplo, IndexType n, std::complex *Ap, const float *s, float scond, float amax, char &equed) { CXXLAPACK_DEBUG_OUT("claqsp"); LAPACK_IMPL(claqsp)(&uplo, &n, reinterpret_cast(Ap), s, &scond, &amax, &equed); } template void laqsp(char uplo, IndexType n, std::complex *Ap, const double *s, double scond, double amax, char &equed) { CXXLAPACK_DEBUG_OUT("zlaqsp"); LAPACK_IMPL(zlaqsp)(&uplo, &n, reinterpret_cast(Ap), s, &scond, &amax, &equed); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQSP_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqsy.h000066400000000000000000000062051456314707100243700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQSY_H #define CXXLAPACK_INTERFACE_LAQSY_H 1 #include namespace cxxlapack { template void laqsy(char uplo, IndexType n, float *A, IndexType ldA, const float *s, float scond, float amax, char &equed); template void laqsy(char uplo, IndexType n, double *A, IndexType ldA, const double *s, double scond, double amax, char &equed); template void laqsy(char uplo, IndexType n, std::complex *A, IndexType ldA, const float *s, float scond, float amax, char &equed); template void laqsy(char uplo, IndexType n, std::complex *A, IndexType ldA, const double *s, double scond, double amax, char &equed); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQSY_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqsy.tcc000066400000000000000000000103531456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQSY_TCC #define CXXLAPACK_INTERFACE_LAQSY_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laqsy(char uplo, IndexType n, float *A, IndexType ldA, const float *s, float scond, float amax, char &equed) { CXXLAPACK_DEBUG_OUT("slaqsy"); LAPACK_IMPL(slaqsy)(&uplo, &n, A, &ldA, s, &scond, &amax, &equed); } template void laqsy(char uplo, IndexType n, double *A, IndexType ldA, const double *s, double scond, double amax, char &equed) { CXXLAPACK_DEBUG_OUT("dlaqsy"); LAPACK_IMPL(dlaqsy)(&uplo, &n, A, &ldA, s, &scond, &amax, &equed); } template void laqsy(char uplo, IndexType n, std::complex *A, IndexType ldA, const float *s, float scond, float amax, char &equed) { CXXLAPACK_DEBUG_OUT("claqsy"); LAPACK_IMPL(claqsy)(&uplo, &n, reinterpret_cast(A), &ldA, s, &scond, &amax, &equed); } template void laqsy(char uplo, IndexType n, std::complex *A, IndexType ldA, const double *s, double scond, double amax, char &equed) { CXXLAPACK_DEBUG_OUT("zlaqsy"); LAPACK_IMPL(zlaqsy)(&uplo, &n, reinterpret_cast(A), &ldA, s, &scond, &amax, &equed); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQSY_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqtr.h000066400000000000000000000050311456314707100243560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQTR_H #define CXXLAPACK_INTERFACE_LAQTR_H 1 #include namespace cxxlapack { template IndexType laqtr(bool trans, bool real, IndexType n, const float *T, IndexType ldT, const float *B, const float &w, float &scale, float *x, float *work); template IndexType laqtr(bool trans, bool real, IndexType n, const double *T, IndexType ldT, const double *B, const double &w, double &scale, double *x, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQTR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laqtr.tcc000066400000000000000000000072721456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAQTR_TCC #define CXXLAPACK_INTERFACE_LAQTR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType laqtr(bool trans, bool real, IndexType n, const float *T, IndexType ldT, const float *B, const float &w, float &scale, float *x, float *work) { CXXLAPACK_DEBUG_OUT("slaqtr"); IndexType info; IndexType trans_ = trans; IndexType real_ = real; LAPACK_IMPL(slaqtr)(&trans_, &real_, &n, T, &ldT, B, &w, &scale, x, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType laqtr(bool trans, bool real, IndexType n, const double *T, IndexType ldT, const double *B, const double &w, double &scale, double *x, double *work) { CXXLAPACK_DEBUG_OUT("dlaqtr"); IndexType info; IndexType trans_ = trans; IndexType real_ = real; LAPACK_IMPL(dlaqtr)(&trans_, &real_, &n, T, &ldT, B, &w, &scale, x, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAQTR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lar1v.h000066400000000000000000000121721456314707100242640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAR1V_H #define CXXLAPACK_INTERFACE_LAR1V_H 1 #include namespace cxxlapack { template void lar1v(IndexType n, IndexType b1, IndexType bn, float lambda, const float *d, const float *l, const float *ld, const float *lld, float pivmin, float gaptol, float *z, bool wantnc, IndexType &negcnt, float &ztz, float &mingma, IndexType &r, IndexType *isuppz, float &nrminv, float &resid, float &rqcorr, float *work); template void lar1v(IndexType n, IndexType b1, IndexType bn, double lambda, const double *d, const double *l, const double *ld, const double *lld, double pivmin, double gaptol, double *z, bool wantnc, IndexType &negcnt, double &ztz, double &mingma, IndexType &r, IndexType *isuppz, double &nrminv, double &resid, double &rqcorr, double *work); template void lar1v(IndexType n, IndexType b1, IndexType bn, float lambda, const float *d, const float *l, const float *ld, const float *lld, float pivmin, float gaptol, std::complex *z, bool wantnc, IndexType &negcnt, float &ztz, float &mingma, IndexType &r, IndexType *isuppz, float &nrminv, float &resid, float &rqcorr, float *work); template void lar1v(IndexType n, IndexType b1, IndexType bn, double lambda, const double *d, const double *l, const double *ld, const double *lld, double pivmin, double gaptol, std::complex *z, bool wantnc, IndexType &negcnt, double &ztz, double &mingma, IndexType &r, IndexType *isuppz, double &nrminv, double &resid, double &rqcorr, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAR1V_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lar1v.tcc000066400000000000000000000173101456314707100246050ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAR1V_TCC #define CXXLAPACK_INTERFACE_LAR1V_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lar1v(IndexType n, IndexType b1, IndexType bn, float lambda, const float *d, const float *l, const float *ld, const float *lld, float pivmin, float gaptol, float *z, bool wantnc, IndexType &negcnt, float &ztz, float &mingma, IndexType &r, IndexType *isuppz, float &nrminv, float &resid, float &rqcorr, float *work) { CXXLAPACK_DEBUG_OUT("slaq1v"); bool wantnc_ = wantnc; LAPACK_IMPL(slar1v)(&n, &b1, &bn, &lambda, d, l, ld, lld, &pivmin, &gaptol, z, &wantnc_, &negcnt, &ztz, &mingma, &r, isuppz, &nrminv, &resid, &rqcorr, work); } template void lar1v(IndexType n, IndexType b1, IndexType bn, double lambda, const double *d, const double *l, const double *ld, const double *lld, double pivmin, double gaptol, double *z, bool wantnc, IndexType &negcnt, double &ztz, double &mingma, IndexType &r, IndexType *isuppz, double &nrminv, double &resid, double &rqcorr, double *work) { CXXLAPACK_DEBUG_OUT("dlaq1v"); bool wantnc_ = wantnc; LAPACK_IMPL(dlar1v)(&n, &b1, &bn, &lambda, d, l, ld, lld, &pivmin, &gaptol, z, &wantnc_, &negcnt, &ztz, &mingma, &r, isuppz, &nrminv, &resid, &rqcorr, work); } template void lar1v(IndexType n, IndexType b1, IndexType bn, float lambda, const float *d, const float *l, const float *ld, const float *lld, float pivmin, float gaptol, std::complex *z, bool wantnc, IndexType &negcnt, float &ztz, float &mingma, IndexType &r, IndexType *isuppz, float &nrminv, float &resid, float &rqcorr, float *work) { CXXLAPACK_DEBUG_OUT("claq1v"); bool wantnc_ = wantnc; LAPACK_IMPL(clar1v)(&n, &b1, &bn, &lambda, d, l, ld, lld, &pivmin, &gaptol, reinterpret_cast(z), &wantnc_, &negcnt, &ztz, &mingma, &r, isuppz, &nrminv, &resid, &rqcorr, work); } template void lar1v(IndexType n, IndexType b1, IndexType bn, double lambda, const double *d, const double *l, const double *ld, const double *lld, double pivmin, double gaptol, std::complex *z, bool wantnc, IndexType &negcnt, double &ztz, double &mingma, IndexType &r, IndexType *isuppz, double &nrminv, double &resid, double &rqcorr, double *work) { CXXLAPACK_DEBUG_OUT("zlaq1v"); bool wantnc_ = wantnc; LAPACK_IMPL(zlar1v)(&n, &b1, &bn, &lambda, d, l, ld, lld, &pivmin, &gaptol, reinterpret_cast(z), &wantnc_, &negcnt, &ztz, &mingma, &r, isuppz, &nrminv, &resid, &rqcorr, work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAR1V_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lar2v.h000066400000000000000000000063451456314707100242720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAR2V_H #define CXXLAPACK_INTERFACE_LAR2V_H 1 #include namespace cxxlapack { template void lar2v(IndexType n, float *x, float *y, float *z, IndexType incx, const float *c, const float *s, IndexType incc); template void lar2v(IndexType n, double *x, double *y, double *z, IndexType incx, const double *c, const double *s, IndexType incc); template void lar2v(IndexType n, std::complex *x, std::complex *y, std::complex *z, IndexType incx, const float *c, const std::complex *s, IndexType incc); template void lar2v(IndexType n, std::complex *x, std::complex *y, std::complex *z, IndexType incx, const double *c, const std::complex *s, IndexType incc); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAR2V_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lar2v.tcc000066400000000000000000000110361456314707100246050ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAR2V_TCC #define CXXLAPACK_INTERFACE_LAR2V_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lar2v(IndexType n, float *x, float *y, float *z, IndexType incx, const float *c, const float *s, IndexType incc) { CXXLAPACK_DEBUG_OUT("slaq2v"); IndexType info; LAPACK_IMPL(slar2v)(&n, x, y, z, &incx, c, s, &incc); } template void lar2v(IndexType n, double *x, double *y, double *z, IndexType incx, const double *c, const double *s, IndexType incc) { CXXLAPACK_DEBUG_OUT("dlaq2v"); IndexType info; LAPACK_IMPL(dlar2v)(&n, x, y, z, &incx, c, s, &incc); } template void lar2v(IndexType n, std::complex *x, std::complex *y, std::complex *z, IndexType incx, const float *c, const std::complex *s, IndexType incc) { CXXLAPACK_DEBUG_OUT("claq2v"); IndexType info; LAPACK_IMPL(clar2v)(&n, reinterpret_cast(x), reinterpret_cast(y), reinterpret_cast(z), &incx, c, reinterpret_cast(s), &incc); } template void lar2v(IndexType n, std::complex *x, std::complex *y, std::complex *z, IndexType incx, const double *c, const std::complex *s, IndexType incc) { CXXLAPACK_DEBUG_OUT("zlaq2v"); IndexType info; LAPACK_IMPL(zlar2v)(&n, reinterpret_cast(x), reinterpret_cast(y), reinterpret_cast(z), &incx, c, reinterpret_cast(s), &incc); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAR2V_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larcm.h000066400000000000000000000051751456314707100243420ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARCM_H #define CXXLAPACK_INTERFACE_LARCM_H 1 #include namespace cxxlapack { template IndexType larcm(IndexType m, IndexType n, const float *A, IndexType ldA, const std::complex *B, IndexType ldB, std::complex *C, IndexType ldC, float *rWork); template IndexType larcm(IndexType m, IndexType n, const double *A, IndexType ldA, const std::complex *B, IndexType ldB, std::complex *C, IndexType ldC, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARCM_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larcm.tcc000066400000000000000000000065321456314707100246620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARCM_TCC #define CXXLAPACK_INTERFACE_LARCM_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void larcm(IndexType m, IndexType n, const float *A, IndexType ldA, const std::complex *B, IndexType ldB, std::complex *C, IndexType ldC, float *rWork) { CXXLAPACK_DEBUG_OUT("clarcm"); LAPACK_IMPL(clarcm)(&m, &n, A, &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(C), &ldC, rWork); } template void larcm(IndexType m, IndexType n, const double *A, IndexType ldA, const std::complex *B, IndexType ldB, std::complex *C, IndexType ldC, double *rWork) { CXXLAPACK_DEBUG_OUT("zlarcm"); LAPACK_IMPL(zlarcm)(&m, &n, A, &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(C), &ldC, rWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARCM_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larf.h000066400000000000000000000063671456314707100241740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARF_H #define CXXLAPACK_INTERFACE_LARF_H 1 #include namespace cxxlapack { template void larf(char side, IndexType m, IndexType n, const float *V, IndexType incV, const float &tau, float *C, IndexType ldC, float *work); template void larf(char side, IndexType m, IndexType n, const double *V, IndexType incV, const double &tau, double *C, IndexType ldC, double *work); template void larf(char side, IndexType m, IndexType n, const std::complex *V, IndexType incV, const std::complex &tau, std::complex *C, IndexType ldC, std::complex *work); template void larf(char side, IndexType m, IndexType n, const std::complex *V, IndexType incV, const std::complex &tau, std::complex *C, IndexType ldC, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larf.tcc000066400000000000000000000111041456314707100244770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARF_TCC #define CXXLAPACK_INTERFACE_LARF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void larf(char side, IndexType m, IndexType n, const float *V, IndexType incV, const float &tau, float *C, IndexType ldC, float *work) { CXXLAPACK_DEBUG_OUT("slarf"); LAPACK_IMPL(slarf)(&side, &m, &n, V, &incV, &tau, C, &ldC, work); } template void larf(char side, IndexType m, IndexType n, const double *V, IndexType incV, const double &tau, double *C, IndexType ldC, double *work) { CXXLAPACK_DEBUG_OUT("dlarf"); LAPACK_IMPL(dlarf)(&side, &m, &n, V, &incV, &tau, C, &ldC, work); } template void larf(char side, IndexType m, IndexType n, const std::complex *V, IndexType incV, const std::complex &tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("clarf"); LAPACK_IMPL(clarf)(&side, &m, &n, reinterpret_cast(V), &incV, reinterpret_cast(&tau), reinterpret_cast(C), &ldC, reinterpret_cast(work)); } template void larf(char side, IndexType m, IndexType n, const std::complex *V, IndexType incV, const std::complex &tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("zlarf"); LAPACK_IMPL(zlarf)(&side, &m, &n, reinterpret_cast(V), &incV, reinterpret_cast(&tau), reinterpret_cast(C), &ldC, reinterpret_cast(work)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larfb.h000066400000000000000000000104021456314707100243170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARFB_H #define CXXLAPACK_INTERFACE_LARFB_H 1 #include namespace cxxlapack { template void larfb(char side, char trans, char direct, char storev, IndexType m, IndexType n, IndexType k, const float *V, IndexType ldV, const float *T, IndexType ldT, float *C, IndexType ldC, float *work, const IndexType ldWork); template void larfb(char side, char trans, char direct, char storev, IndexType m, IndexType n, IndexType k, const double *V, IndexType ldV, const double *T, IndexType ldT, double *C, IndexType ldC, double *work, const IndexType ldWork); template void larfb(char side, char trans, char direct, char storev, IndexType m, IndexType n, IndexType k, const std::complex *V, IndexType ldV, const std::complex *T, IndexType ldT, std::complex *C, IndexType ldC, std::complex *work, IndexType ldWork); template void larfb(char side, char trans, char direct, char storev, IndexType m, IndexType n, IndexType k, const std::complex *V, IndexType ldV, const std::complex *T, IndexType ldT, std::complex *C, IndexType ldC, std::complex *work, IndexType ldWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARFB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larfb.tcc000066400000000000000000000143731456314707100246540ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARFB_TCC #define CXXLAPACK_INTERFACE_LARFB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void larfb(char side, char trans, char direct, char storev, IndexType m, IndexType n, IndexType k, const float *V, IndexType ldV, const float *T, IndexType ldT, float *C, IndexType ldC, float *work, const IndexType ldWork) { CXXLAPACK_DEBUG_OUT("slarfb"); LAPACK_IMPL(slarfb)(&side, &trans, &direct, &storev, &m, &n, &k, V, &ldV, T, &ldT, C, &ldC, work, &ldWork); } template void larfb(char side, char trans, char direct, char storev, IndexType m, IndexType n, IndexType k, const double *V, IndexType ldV, const double *T, IndexType ldT, double *C, IndexType ldC, double *work, const IndexType ldWork) { CXXLAPACK_DEBUG_OUT("dlarfb"); LAPACK_IMPL(dlarfb)(&side, &trans, &direct, &storev, &m, &n, &k, V, &ldV, T, &ldT, C, &ldC, work, &ldWork); } template void larfb(char side, char trans, char direct, char storev, IndexType m, IndexType n, IndexType k, const std::complex *V, IndexType ldV, const std::complex *T, IndexType ldT, std::complex *C, IndexType ldC, std::complex *work, IndexType ldWork) { CXXLAPACK_DEBUG_OUT("clarfb"); LAPACK_IMPL(clarfb)(&side, &trans, &direct, &storev, &m, &n, &k, reinterpret_cast(V), &ldV, reinterpret_cast(T), &ldT, reinterpret_cast(C), &ldC, reinterpret_cast(work), &ldWork); } template void larfb(char side, char trans, char direct, char storev, IndexType m, IndexType n, IndexType k, const std::complex *V, IndexType ldV, const std::complex *T, IndexType ldT, std::complex *C, IndexType ldC, std::complex *work, IndexType ldWork) { CXXLAPACK_DEBUG_OUT("zlarfb"); LAPACK_IMPL(zlarfb)(&side, &trans, &direct, &storev, &m, &n, &k, reinterpret_cast(V), &ldV, reinterpret_cast(T), &ldT, reinterpret_cast(C), &ldC, reinterpret_cast(work), &ldWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARFB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larfg.h000066400000000000000000000051711456314707100243330ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARFG_H #define CXXLAPACK_INTERFACE_LARFG_H 1 #include namespace cxxlapack { template void larfg(IndexType n, float &alpha, float *x, IndexType incX, float &tau); template void larfg(IndexType n, double &alpha, double *x, IndexType incX, double &tau); template void larfg(IndexType n, std::complex &alpha, std::complex *x, IndexType incX, std::complex &tau); template void larfg(IndexType n, std::complex &alpha, std::complex *x, IndexType incX, std::complex &tau); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARFG_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larfg.tcc000066400000000000000000000070271456314707100246570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARFG_TCC #define CXXLAPACK_INTERFACE_LARFG_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void larfg(IndexType n, float &alpha, float *x, IndexType incX, float &tau) { CXXLAPACK_DEBUG_OUT("slarfg"); LAPACK_IMPL(slarfg)(&n, &alpha, x, &incX, &tau); } template void larfg(IndexType n, double &alpha, double *x, IndexType incX, double &tau) { CXXLAPACK_DEBUG_OUT("dlarfg"); LAPACK_IMPL(dlarfg)(&n, &alpha, x, &incX, &tau); } template void larfg(IndexType n, std::complex &alpha, std::complex *x, IndexType incX, std::complex &tau) { CXXLAPACK_DEBUG_OUT("clarfg"); LAPACK_IMPL(clarfg)(&n, reinterpret_cast(&alpha), reinterpret_cast(x), &incX, reinterpret_cast(&tau)); } template void larfg(IndexType n, std::complex &alpha, std::complex *x, IndexType incX, std::complex &tau) { CXXLAPACK_DEBUG_OUT("zlarfg"); LAPACK_IMPL(zlarfg)(&n, reinterpret_cast(&alpha), reinterpret_cast(x), &incX, reinterpret_cast(&tau)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARFG_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larfgp.h000066400000000000000000000052211456314707100245070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARFGP_H #define CXXLAPACK_INTERFACE_LARFGP_H 1 #include namespace cxxlapack { template void larfgp(IndexType n, float &alpha, float *x, IndexType incX, float &tau); template void larfgp(IndexType n, double &alpha, double *x, IndexType incX, double &tau); template void larfgp(IndexType n, std::complex &alpha, std::complex *x, IndexType incX, std::complex &tau); template void larfgp(IndexType n, std::complex &alpha, std::complex *x, IndexType incX, std::complex &tau); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARFGP_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larfgp.tcc000066400000000000000000000071061456314707100250350ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARFGP_TCC #define CXXLAPACK_INTERFACE_LARFGP_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void larfgp(IndexType n, float &alpha, float *x, IndexType incX, float &tau) { CXXLAPACK_DEBUG_OUT("slarfgp"); LAPACK_IMPL(slarfgp)(&n, &alpha, x, &incX, &tau); } template void larfgp(IndexType n, double &alpha, double *x, IndexType incX, double &tau) { CXXLAPACK_DEBUG_OUT("dlarfgp"); LAPACK_IMPL(dlarfgp)(&n, &alpha, x, &incX, &tau); } template void larfgp(IndexType n, std::complex &alpha, std::complex *x, IndexType incX, std::complex &tau) { CXXLAPACK_DEBUG_OUT("clarfgp"); LAPACK_IMPL(clarfgp)(&n, reinterpret_cast(&alpha), reinterpret_cast(x), &incX, reinterpret_cast(&tau)); } template void larfgp(IndexType n, std::complex &alpha, std::complex *x, IndexType incX, std::complex &tau) { CXXLAPACK_DEBUG_OUT("zlarfgp"); LAPACK_IMPL(zlarfgp)(&n, reinterpret_cast(&alpha), reinterpret_cast(x), &incX, reinterpret_cast(&tau)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARFGP_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larft.h000066400000000000000000000064021456314707100243460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARFT_H #define CXXLAPACK_INTERFACE_LARFT_H 1 #include namespace cxxlapack { template void larft(char direct, char storev, IndexType n, IndexType k, float *V, IndexType ldV, const float *tau, float *T, IndexType ldT); template void larft(char direct, char storev, IndexType n, IndexType k, double *V, IndexType ldV, const double *tau, double *T, IndexType ldT); template void larft(char direct, char storev, IndexType n, IndexType k, std::complex *V, IndexType ldV, const std::complex *tau, std::complex *T, IndexType ldT); template void larft(char direct, char storev, IndexType n, IndexType k, std::complex *V, IndexType ldV, const std::complex *tau, std::complex *T, IndexType ldT); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARFT_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larft.tcc000066400000000000000000000110771456314707100246740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARFT_TCC #define CXXLAPACK_INTERFACE_LARFT_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void larft(char direct, char storev, IndexType n, IndexType k, float *V, IndexType ldV, const float *tau, float *T, IndexType ldT) { CXXLAPACK_DEBUG_OUT("slarft"); LAPACK_IMPL(slarft)(&direct, &storev, &n, &k, V, &ldV, tau, T, &ldT); } template void larft(char direct, char storev, IndexType n, IndexType k, double *V, IndexType ldV, const double *tau, double *T, IndexType ldT) { CXXLAPACK_DEBUG_OUT("dlarft"); LAPACK_IMPL(dlarft)(&direct, &storev, &n, &k, V, &ldV, tau, T, &ldT); } template void larft(char direct, char storev, IndexType n, IndexType k, std::complex *V, IndexType ldV, const std::complex *tau, std::complex *T, IndexType ldT) { CXXLAPACK_DEBUG_OUT("clarft"); LAPACK_IMPL(clarft)(&direct, &storev, &n, &k, reinterpret_cast(V), &ldV, reinterpret_cast(tau), reinterpret_cast(T), &ldT); } template void larft(char direct, char storev, IndexType n, IndexType k, std::complex *V, IndexType ldV, const std::complex *tau, std::complex *T, IndexType ldT) { CXXLAPACK_DEBUG_OUT("zlarft"); LAPACK_IMPL(zlarft)(&direct, &storev, &n, &k, reinterpret_cast(V), &ldV, reinterpret_cast(tau), reinterpret_cast(T), &ldT); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARFT_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larfx.h000066400000000000000000000062021456314707100243500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARFX_H #define CXXLAPACK_INTERFACE_LARFX_H 1 #include namespace cxxlapack { template void larfx(char side, IndexType m, IndexType n, const float *V, const float &tau, float *C, IndexType ldC, float *work); template void larfx(char side, IndexType m, IndexType n, const double *V, const double &tau, double *C, IndexType ldC, double *work); template void larfx(char side, IndexType m, IndexType n, const std::complex *V, const std::complex &tau, std::complex *C, IndexType ldC, std::complex *work); template void larfx(char side, IndexType m, IndexType n, const std::complex *V, const std::complex &tau, std::complex *C, IndexType ldC, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARFX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larfx.tcc000066400000000000000000000106131456314707100246730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARFX_TCC #define CXXLAPACK_INTERFACE_LARFX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void larfx(char side, IndexType m, IndexType n, const float *V, const float &tau, float *C, IndexType ldC, float *work) { CXXLAPACK_DEBUG_OUT("slarfx"); LAPACK_IMPL(slarfx)(&side, &m, &n, V, &tau, C, &ldC, work); } template void larfx(char side, IndexType m, IndexType n, const double *V, const double &tau, double *C, IndexType ldC, double *work) { CXXLAPACK_DEBUG_OUT("dlarfx"); LAPACK_IMPL(dlarfx)(&side, &m, &n, V, &tau, C, &ldC, work); } template void larfx(char side, IndexType m, IndexType n, const std::complex *V, const std::complex &tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("clarfx"); LAPACK_IMPL(clarfx)(&side, &m, &n, reinterpret_cast(V), reinterpret_cast(&tau), reinterpret_cast(C), &ldC, reinterpret_cast(work)); } template void larfx(char side, IndexType m, IndexType n, const std::complex *V, const std::complex &tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("zlarfx"); LAPACK_IMPL(zlarfx)(&side, &m, &n, reinterpret_cast(V), reinterpret_cast(&tau), reinterpret_cast(C), &ldC, reinterpret_cast(work)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARFX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/largv.h000066400000000000000000000057501456314707100243560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARGV_H #define CXXLAPACK_INTERFACE_LARGV_H 1 #include namespace cxxlapack { template IndexType largv(IndexType n, float *x, IndexType incx, float *y, IndexType incy, float *c, IndexType incc); template IndexType largv(IndexType n, double *x, IndexType incx, double *y, IndexType incy, double *c, IndexType incc); template void largv(IndexType n, std::complex *x, IndexType incx, std::complex *y, IndexType incy, float *c, IndexType incc); template void largv(IndexType n, std::complex *x, IndexType incx, std::complex *y, IndexType incy, double *c, IndexType incc); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARGV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/largv.tcc000066400000000000000000000077661456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARGV_TCC #define CXXLAPACK_INTERFACE_LARGV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void largv(IndexType n, float *x, IndexType incx, float *y, IndexType incy, float *c, IndexType incc) { CXXLAPACK_DEBUG_OUT("slargv"); LAPACK_IMPL(slargv)(&n, x &incx, y, &incy, c, &incc); } template void largv(IndexType n, double *x, IndexType incx, double *y, IndexType incy, double *c, IndexType incc) { CXXLAPACK_DEBUG_OUT("dlargv"); LAPACK_IMPL(dlargv)(&n, x &incx, y, &incy, c, &incc); } template void largv(IndexType n, std::complex *x, IndexType incx, std::complex *y, IndexType incy, float *c, IndexType incc) { CXXLAPACK_DEBUG_OUT("clargv"); LAPACK_IMPL(clargv)(&n, reinterpret_cast(x) &incx, reinterpret_cast(y), &incy, c, &incc); } template void largv(IndexType n, std::complex *x, IndexType incx, std::complex *y, IndexType incy, double *c, IndexType incc) { CXXLAPACK_DEBUG_OUT("zlargv"); LAPACK_IMPL(zlargv)(&n, reinterpret_cast(x) &incx, reinterpret_cast(y), &incy, c, &incc); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARGV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larnv.h000066400000000000000000000050551456314707100243630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARNV_H #define CXXLAPACK_INTERFACE_LARNV_H 1 #include namespace cxxlapack { template void larnv(IndexType idist, IndexType iseed, IndexType n, float *x); template void larnv(IndexType idist, IndexType iseed, IndexType n, double *x); template void larnv(IndexType idist, IndexType iseed, IndexType n, std::complex *x); template void larnv(IndexType idist, IndexType iseed, IndexType n, std::complex *x); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARNV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larnv.tcc000066400000000000000000000063671456314707100247140ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARNV_TCC #define CXXLAPACK_INTERFACE_LARNV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void larnv(IndexType idist, IndexType iseed, IndexType n, float *x) { CXXLAPACK_DEBUG_OUT("slarnv"); LAPACK_IMPL(slarnv)(&idist, &iseed, &n, x); } template void larnv(IndexType idist, IndexType iseed, IndexType n, double *x) { CXXLAPACK_DEBUG_OUT("dlarnv"); LAPACK_IMPL(dlarnv)(&idist, &iseed, &n, x); } template void larnv(IndexType idist, IndexType iseed, IndexType n, std::complex *x) { CXXLAPACK_DEBUG_OUT("clarnv"); LAPACK_IMPL(clarnv)(&idist, &iseed, &n, reinterpret_cast(x)); } template void larnv(IndexType idist, IndexType iseed, IndexType n, std::complex *x) { CXXLAPACK_DEBUG_OUT("zlarnv"); LAPACK_IMPL(zlarnv)(&idist, &iseed, &n, reinterpret_cast(x)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARNV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larra.h000066400000000000000000000047611456314707100243450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRA_H #define CXXLAPACK_INTERFACE_LARRA_H 1 #include namespace cxxlapack { template IndexType larra(IndexType n, const float *d, float *e, float *e2, float spltol, float tnrm, IndexType &nsplit, IndexType &isplit); template IndexType larra(IndexType n, const double *d, double *e, double *e2, double spltol, double tnrm, IndexType &nsplit, IndexType &isplit); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRA_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larra.tcc000066400000000000000000000067021456314707100246640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRA_TCC #define CXXLAPACK_INTERFACE_LARRA_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType larra(IndexType n, const float *d, float *e, float *e2, float spltol, float tnrm, IndexType &nsplit, IndexType &isplit) { CXXLAPACK_DEBUG_OUT("slarra"); IndexType info; LAPACK_IMPL(slarra)(&n, d, e, e2, &spltol, &tnrm, &nsplit, &isplit, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType larra(IndexType n, const double *d, double *e, double *e2, double spltol, double tnrm, IndexType &nsplit, IndexType &isplit) { CXXLAPACK_DEBUG_OUT("dlarra"); IndexType info; LAPACK_IMPL(dlarra)(&n, d, e, e2, &spltol, &tnrm, &nsplit, &isplit, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRA_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrb.h000066400000000000000000000061431456314707100243420ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRB_H #define CXXLAPACK_INTERFACE_LARRB_H 1 #include namespace cxxlapack { template IndexType larrb(IndexType n, const float *d, const float *lld, IndexType ifirst, IndexType ilast, float rtol1, float rtol2, float offset, float *w, float *wap, float *werr, float *work, IndexType *iWork, float pivmin, float spdiam, IndexType twist); template IndexType larrb(IndexType n, const double *d, const double *lld, IndexType ifirst, IndexType ilast, double rtol1, double rtol2, double offset, double *w, double *wap, double *werr, double *work, IndexType *iWork, double pivmin, double spdiam, IndexType twist); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrb.tcc000066400000000000000000000106431456314707100246640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRB_TCC #define CXXLAPACK_INTERFACE_LARRB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType larrb(IndexType n, const float *d, const float *lld, IndexType ifirst, IndexType ilast, float rtol1, float rtol2, float offset, float *w, float *wap, float *werr, float *work, IndexType *iWork, float pivmin, float spdiam, IndexType twist) { IndexType info; LAPACK_IMPL(slarrb)(&n, d, lld, &ifirst, &ilast, &rtol1, &rtol2, &offset, w, wap, werr, work, iWork, &pivmin, &spdiam, &twist, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType larrb(IndexType n, const double *d, const double *lld, IndexType ifirst, IndexType ilast, double rtol1, double rtol2, double offset, double *w, double *wap, double *werr, double *work, IndexType *iWork, double pivmin, double spdiam, IndexType twist) { IndexType info; LAPACK_IMPL(dlarrb)(&n, d, lld, &ifirst, &ilast, &rtol1, &rtol2, &offset, w, wap, werr, work, iWork, &pivmin, &spdiam, &twist, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrc.h000066400000000000000000000052011456314707100243350ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRC_H #define CXXLAPACK_INTERFACE_LARRC_H 1 #include namespace cxxlapack { template IndexType larrc(char jobt, IndexType n, float vl, float vu, const float *d, const float *e, float pivmin, IndexType &eigcnt, IndexType &lcnt, IndexType &rcnt); template IndexType larrc(char jobt, IndexType n, double vl, double vu, const double *d, const double *e, double pivmin, IndexType &eigcnt, IndexType &lcnt, IndexType &rcnt); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRC_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrc.tcc000066400000000000000000000072701456314707100246670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRC_TCC #define CXXLAPACK_INTERFACE_LARRC_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType larrc(char jobt, IndexType n, float vl, float vu, const float *d, const float *e, float pivmin, IndexType &eigcnt, IndexType &lcnt, IndexType &rcnt) { CXXLAPACK_DEBUG_OUT("slarrc"); IndexType info; LAPACK_IMPL(slarrc)(&jobt, &n, &vl, &vu, d, e, &pivmin, &eigcnt, &lcnt, &rcnt, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType larrc(char jobt, IndexType n, double vl, double vu, const double *d, const double *e, double pivmin, IndexType &eigcnt, IndexType &lcnt, IndexType &rcnt) { CXXLAPACK_DEBUG_OUT("dlarrc"); IndexType info; LAPACK_IMPL(dlarrc)(&jobt, &n, &vl, &vu, d, e, &pivmin, &eigcnt, &lcnt, &rcnt, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRC_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrd.h000066400000000000000000000072611456314707100243460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRD_H #define CXXLAPACK_INTERFACE_LARRD_H 1 #include namespace cxxlapack { template IndexType larrd(char range, char order, IndexType n, float vl, float vu, IndexType il, IndexType iu, const float *gers, float reltol, const float *d, const float *e, const float *e2, const float pivmin, IndexType nsplit, IndexType *isplit, IndexType &m, float *w, float *werr, float &wl, float &wu, IndexType *iblock, IndexType *indexw, float *work, IndexType *iWork); template IndexType larrd(char range, char order, IndexType n, double vl, double vu, IndexType il, IndexType iu, const double *gers, double reltol, const double *d, const double *e, const double *e2, const double pivmin, IndexType nsplit, IndexType *isplit, IndexType &m, double *w, double *werr, double &wl, double &wu, IndexType *iblock, IndexType *indexw, double *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrd.tcc000066400000000000000000000127021456314707100246640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRD_TCC #define CXXLAPACK_INTERFACE_LARRD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType larrd(char range, char order, IndexType n, float vl, float vu, IndexType il, IndexType iu, const float *gers, float reltol, const float *d, const float *e, const float *e2, const float pivmin, IndexType nsplit, IndexType *isplit, IndexType &m, float *w, float *werr, float &wl, float &wu, IndexType *iblock, IndexType *indexw, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("slarrd"); IndexType info; LAPACK_IMPL(slarrd)(&range, &order, &n, &vl, &vu, &il, &iu, gers, &reltol, d, e, e2, &pivmin, &nsplit, isplit, &m, w, werr, &wl, &wu, iblock, indexw, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType larrd(char range, char order, IndexType n, double vl, double vu, IndexType il, IndexType iu, const double *gers, double reltol, const double *d, const double *e, const double *e2, const double pivmin, IndexType nsplit, IndexType *isplit, IndexType &m, double *w, double *werr, double &wl, double &wu, IndexType *iblock, IndexType *indexw, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dlarrd"); IndexType info; LAPACK_IMPL(dlarrd)(&range, &order, &n, &vl, &vu, &il, &iu, gers, &reltol, d, e, e2, &pivmin, &nsplit, isplit, &m, w, werr, &wl, &wu, iblock, indexw, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larre.h000066400000000000000000000073011456314707100243420ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRE_H #define CXXLAPACK_INTERFACE_LARRE_H 1 #include namespace cxxlapack { template IndexType larre(char range, IndexType n, float &vl, float &vu, IndexType il, IndexType iu, float *d, float *e, float *e2, float rtol1, float rtol2, float spltol, IndexType &nsplit, IndexType *isplit, IndexType &m, float *w, float *werr, float *wgap, IndexType *iblock, IndexType *indexw, float *gers, float &pivmin, float *work, IndexType *iWork); template IndexType larre(char range, IndexType n, double &vl, double &vu, IndexType il, IndexType iu, double *d, double *e, double *e2, double rtol1, double rtol2, double spltol, IndexType &nsplit, IndexType *isplit, IndexType &m, double *w, double *werr, double *wgap, IndexType *iblock, IndexType *indexw, double *gers, double &pivmin, double *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRE_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larre.tcc000066400000000000000000000127301456314707100246660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRE_TCC #define CXXLAPACK_INTERFACE_LARRE_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType larre(char range, IndexType n, float &vl, float &vu, IndexType il, IndexType iu, float *d, float *e, float *e2, float rtol1, float rtol2, float spltol, IndexType &nsplit, IndexType *isplit, IndexType &m, float *w, float *werr, float *wgap, IndexType *iblock, IndexType *indexw, float *gers, float &pivmin, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("slarre"); IndexType info; LAPACK_IMPL(slarre)(&range, &n, &vl, &vu, &il, &iu, d, e, e2, &rtol1, &rtol2, &spltol, &nsplit, isplit, &m, w, werr, wgap, iblock, indexw, gers, &pivmin, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType larre(char range, IndexType n, double &vl, double &vu, IndexType il, IndexType iu, double *d, double *e, double *e2, double rtol1, double rtol2, double spltol, IndexType &nsplit, IndexType *isplit, IndexType &m, double *w, double *werr, double *wgap, IndexType *iblock, IndexType *indexw, double *gers, double &pivmin, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dlarre"); IndexType info; LAPACK_IMPL(dlarre)(&range, &n, &vl, &vu, &il, &iu, d, e, e2, &rtol1, &rtol2, &spltol, &nsplit, isplit, &m, w, werr, wgap, iblock, indexw, gers, &pivmin, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRE_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrf.h000066400000000000000000000062711456314707100243500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRF_H #define CXXLAPACK_INTERFACE_LARRF_H 1 #include namespace cxxlapack { template IndexType larrf(char range, const float *d, const float *l, const float *ld, IndexType clstrt, IndexType clend, const float *w, float *wgap, const float *werr, float spdiam, float clgapl, float clgapr, float pivmin, float &sigma, float *dplus, float *lplus, float *work); template IndexType larrf(char range, const double *d, const double *l, const double *ld, IndexType clstrt, IndexType clend, const double *w, double *wgap, const double *werr, double spdiam, double clgapl, double clgapr, double pivmin, double &sigma, double *dplus, double *lplus, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrf.tcc000066400000000000000000000111661456314707100246710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRF_TCC #define CXXLAPACK_INTERFACE_LARRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType larrf(char range, const float *d, const float *l, const float *ld, IndexType clstrt, IndexType clend, const float *w, float *wgap, const float *werr, float spdiam, float clgapl, float clgapr, float pivmin, float &sigma, float *dplus, float *lplus, float *work) { CXXLAPACK_DEBUG_OUT("slarrf"); IndexType info; LAPACK_IMPL(slarrf)(&range, d, l, ld, &clstrt, &clend, w, wgap, werr, &spdiam, &clgapl, &clgapr, &pivmin, &sigma, dplus, lplus, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType larrf(char range, const double *d, const double *l, const double *ld, IndexType clstrt, IndexType clend, const double *w, double *wgap, const double *werr, double spdiam, double clgapl, double clgapr, double pivmin, double &sigma, double *dplus, double *lplus, double *work) { CXXLAPACK_DEBUG_OUT("dlarrf"); IndexType info; LAPACK_IMPL(dlarrf)(&range, d, l, ld, &clstrt, &clend, w, wgap, werr, &spdiam, &clgapl, &clgapr, &pivmin, &sigma, dplus, lplus, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrj.h000066400000000000000000000055651456314707100243610ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRJ_H #define CXXLAPACK_INTERFACE_LARRJ_H 1 #include namespace cxxlapack { template IndexType larrj(IndexType n, const float *d, const float *e2, IndexType ifirst, IndexType ilast, float rtol, IndexType offset, float *w, float *werr, float *work, IndexType *iWork, float pivmin, float spmin); template IndexType larrj(IndexType n, const double *d, const double *e2, IndexType ifirst, IndexType ilast, double rtol, IndexType offset, double *w, double *werr, double *work, IndexType *iWork, double pivmin, double spmin); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRJ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrj.tcc000066400000000000000000000101241456314707100246660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRJ_TCC #define CXXLAPACK_INTERFACE_LARRJ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType larrj(IndexType n, const float *d, const float *e2, IndexType ifirst, IndexType ilast, float rtol, IndexType offset, float *w, float *werr, float *work, IndexType *iWork, float pivmin, float spmin) { CXXLAPACK_DEBUG_OUT("slarrj"); IndexType info; LAPACK_IMPL(slarrj)(&n, d, e2, &ifirst, &ilast, &rtol, &offset, w, werr, work, iWork, &pivmin, &spmin, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType larrj(IndexType n, const double *d, const double *e2, IndexType ifirst, IndexType ilast, double rtol, IndexType offset, double *w, double *werr, double *work, IndexType *iWork, double pivmin, double spmin) { CXXLAPACK_DEBUG_OUT("dlarrj"); IndexType info; LAPACK_IMPL(dlarrj)(&n, d, e2, &ifirst, &ilast, &rtol, &offset, w, werr, work, iWork, &pivmin, &spmin, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRJ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrk.h000066400000000000000000000051671456314707100243600ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRK_H #define CXXLAPACK_INTERFACE_LARRK_H 1 #include namespace cxxlapack { template IndexType larrk(IndexType n, IndexType iw, float gl, float gu, const float *d, const float *e2, float pivmin, float reltol, float &w, float &werr); template IndexType larrk(IndexType n, IndexType iw, double gl, double gu, const double *d, const double *e2, double pivmin, double reltol, double &w, double &werr); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRK_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrk.tcc000066400000000000000000000072421456314707100246760ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRK_TCC #define CXXLAPACK_INTERFACE_LARRK_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType larrk(IndexType n, IndexType iw, float gl, float gu, const float *d, const float *e2, float pivmin, float reltol, float &w, float &werr) { CXXLAPACK_DEBUG_OUT("slarrk"); IndexType info; LAPACK_IMPL(slarrk)(&n, &iw, &gl, &gu, d, e2, &pivmin, &reltol, w, werr, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType larrk(IndexType n, IndexType iw, double gl, double gu, const double *d, const double *e2, double pivmin, double reltol, double &w, double &werr) { CXXLAPACK_DEBUG_OUT("dlarrk"); IndexType info; LAPACK_IMPL(dlarrk)(&n, &iw, &gl, &gu, d, e2, &pivmin, &reltol, w, werr, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRK_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrr.h000066400000000000000000000041471456314707100243640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRR_H #define CXXLAPACK_INTERFACE_LARRR_H 1 #include namespace cxxlapack { template IndexType larrr(IndexType n, const float *d, float *e); template IndexType larrr(IndexType n, const double *d, double *e); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrr.tcc000066400000000000000000000054441456314707100247070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRR_TCC #define CXXLAPACK_INTERFACE_LARRR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType larrr(IndexType n, const float *d, float *e) { CXXLAPACK_DEBUG_OUT("slarrr"); IndexType info; LAPACK_IMPL(slarrr)(&n, d, e, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType larrr(IndexType n, const double *d, double *e) { CXXLAPACK_DEBUG_OUT("dlarrr"); IndexType info; LAPACK_IMPL(dlarrr)(&n, d, e, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrv.h000066400000000000000000000130721456314707100243650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRV_H #define CXXLAPACK_INTERFACE_LARRV_H 1 #include namespace cxxlapack { template IndexType larrv(IndexType n, float vl, float vu, float *d, float *l, float pivmin, IndexType *isplit, float m, IndexType dol, IndexType dou, float minrgp, float rtol1, float rtol2, float *w, float *werr, float *wgap, const IndexType *iblock, const IndexType *indexw, const float *gers, float *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType *iWork); template IndexType larrv(IndexType n, double vl, double vu, double *d, double *l, double pivmin, IndexType *isplit, double m, IndexType dol, IndexType dou, double minrgp, double rtol1, double rtol2, double *w, double *werr, double *wgap, const IndexType *iblock, const IndexType *indexw, const double *gers, double *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType *iWork); template IndexType larrv(IndexType n, float vl, float vu, float *d, float *l, float pivmin, IndexType *isplit, float m, IndexType dol, IndexType dou, float minrgp, float rtol1, float rtol2, float *w, float *werr, float *wgap, const IndexType *iblock, const IndexType *indexw, const float *gers, std::complex *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType *iWork); template IndexType larrv(IndexType n, double vl, double vu, double *d, double *l, double pivmin, IndexType *isplit, double m, IndexType dol, IndexType dou, double minrgp, double rtol1, double rtol2, double *w, double *werr, double *wgap, const IndexType *iblock, const IndexType *indexw, const double *gers, std::complex *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larrv.tcc000066400000000000000000000220631456314707100247070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARRV_TCC #define CXXLAPACK_INTERFACE_LARRV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType larrv(IndexType n, float vl, float vu, float *d, float *l, float pivmin, IndexType *isplit, float m, IndexType dol, IndexType dou, float minrgp, float rtol1, float rtol2, float *w, float *werr, float *wgap, const IndexType *iblock, const IndexType *indexw, const float *gers, float *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("slarrv"); IndexType info; LAPACK_IMPL(slarrv)(&n, &vl, &vu, d, l, &pivmin, isplit, &m, &dol, &dou, &minrgp, &rtol1, &rtol2, w, werr, wgap, iblock, indexw, gers, Z, &ldZ, isuppz, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType larrv(IndexType n, double vl, double vu, double *d, double *l, double pivmin, IndexType *isplit, double m, IndexType dol, IndexType dou, double minrgp, double rtol1, double rtol2, double *w, double *werr, double *wgap, const IndexType *iblock, const IndexType *indexw, const double *gers, double *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dlarrv"); IndexType info; LAPACK_IMPL(dlarrv)(&n, &vl, &vu, d, l, &pivmin, isplit, &m, &dol, &dou, &minrgp, &rtol1, &rtol2, w, werr, wgap, iblock, indexw, gers, Z, &ldZ, isuppz, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType larrv(IndexType n, float vl, float vu, float *d, float *l, float pivmin, IndexType *isplit, float m, IndexType dol, IndexType dou, float minrgp, float rtol1, float rtol2, float *w, float *werr, float *wgap, const IndexType *iblock, const IndexType *indexw, const float *gers, std::complex *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("clarrv"); IndexType info; LAPACK_IMPL(clarrv)(&n, &vl, &vu, d, l, &pivmin, isplit, &m, &dol, &dou, &minrgp, &rtol1, &rtol2, w, werr, wgap, iblock, indexw, gers, reinterpret_cast(Z), &ldZ, isuppz, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType larrv(IndexType n, double vl, double vu, double *d, double *l, double pivmin, IndexType *isplit, double m, IndexType dol, IndexType dou, double minrgp, double rtol1, double rtol2, double *w, double *werr, double *wgap, const IndexType *iblock, const IndexType *indexw, const double *gers, std::complex *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("zlarrv"); IndexType info; LAPACK_IMPL(zlarrv)(&n, &vl, &vu, d, l, &pivmin, isplit, &m, &dol, &dou, &minrgp, &rtol1, &rtol2, w, werr, wgap, iblock, indexw, gers, reinterpret_cast(Z), &ldZ, isuppz, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARRV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larscl2.h000066400000000000000000000053231456314707100246010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARSCL2_H #define CXXLAPACK_INTERFACE_LARSCL2_H 1 #include namespace cxxlapack { template void larscl2(IndexType m, IndexType n, const float *d, float *X, IndexType ldX); template void larscl2(IndexType m, IndexType n, const double *d, double *X, IndexType ldX); template void larscl2(IndexType m, IndexType n, const float *d, std::complex *X, IndexType ldX); template void larscl2(IndexType m, IndexType n, const double *d, std::complex *X, IndexType ldX); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARSCL2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larscl2.tcc000066400000000000000000000070211456314707100251200ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARSCL2_TCC #define CXXLAPACK_INTERFACE_LARSCL2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void larscl2(IndexType m, IndexType n, const float *d, float *X, IndexType ldX) { CXXLAPACK_DEBUG_OUT("slarscl2"); LAPACK_IMPL(slarscl2)(&m, &n, d, X, &ldX); } template void larscl2(IndexType m, IndexType n, const double *d, double *X, IndexType ldX) { CXXLAPACK_DEBUG_OUT("dlarscl2"); LAPACK_IMPL(dlarscl2)(&m, &n, d, X, &ldX); } template void larscl2(IndexType m, IndexType n, const float *d, std::complex *X, IndexType ldX) { CXXLAPACK_DEBUG_OUT("clarscl2"); LAPACK_IMPL(clarscl2)(&m, &n, d, reinterpret_cast(X), &ldX); } template void larscl2(IndexType m, IndexType n, const double *d, std::complex *X, IndexType ldX) { CXXLAPACK_DEBUG_OUT("zlarscl2"); LAPACK_IMPL(zlarscl2)(&m, &n, d, reinterpret_cast(X), &ldX); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARSCL2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lartg.h000066400000000000000000000053331456314707100243510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARTG_H #define CXXLAPACK_INTERFACE_LARTG_H 1 #include namespace cxxlapack { template void lartg(const float &f, const float &g, float &cs, float &sn, float &r); template void lartg(const double &f, const double &g, double &cs, double &sn, double &r); template void lartg(const std::complex &f, const std::complex &g, float &cs, std::complex &sn, std::complex &r); template void lartg(const std::complex &f, const std::complex &g, double &cs, std::complex &sn, std::complex &r); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARTG_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lartg.tcc000066400000000000000000000072351456314707100246760ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARTG_TCC #define CXXLAPACK_INTERFACE_LARTG_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lartg(const float &f, const float &g, float &cs, float &sn, float &r) { CXXLAPACK_DEBUG_OUT("slartg"); LAPACK_IMPL(slartg)(&f, &g, &cs, &sn, &r); } template void lartg(const double &f, const double &g, double &cs, double &sn, double &r) { CXXLAPACK_DEBUG_OUT("dlartg"); LAPACK_IMPL(dlartg)(&f, &g, &cs, &sn, &r); } template void lartg(const std::complex &f, const std::complex &g, float &cs, std::complex &sn, std::complex &r) { CXXLAPACK_DEBUG_OUT("clartg"); LAPACK_IMPL(clartg)(reinterpret_cast(&f), reinterpret_cast(&g), &cs, reinterpret_cast(&sn), reinterpret_cast(&r)); } template void lartg(const std::complex &f, const std::complex &g, double &cs, std::complex &sn, std::complex &r) { CXXLAPACK_DEBUG_OUT("zlartg"); LAPACK_IMPL(zlartg)(reinterpret_cast(&f), reinterpret_cast(&g), &cs, reinterpret_cast(&sn), reinterpret_cast(&r)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARTG_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lartgp.h000066400000000000000000000044131456314707100245270ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARTGP_H #define CXXLAPACK_INTERFACE_LARTGP_H 1 #include namespace cxxlapack { template void lartgp(float f, float g, float &cs, float &sn, float &r); template void lartgp(double f, double g, double &cs, double &sn, double &r); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARTGP_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lartgp.tcc000066400000000000000000000052551456314707100250560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARTGP_TCC #define CXXLAPACK_INTERFACE_LARTGP_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lartgp(float f, float g, float &cs, float &sn, float &r) { CXXLAPACK_DEBUG_OUT("slartgp"); LAPACK_IMPL(slartgp)(&f, &g, &cs, &sn, &r); } template void lartgp(double f, double g, double &cs, double &sn, double &r) { CXXLAPACK_DEBUG_OUT("dlartgp"); LAPACK_IMPL(dlartgp)(&f, &g, &cs, &sn, &r); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARTGP_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lartgs.h000066400000000000000000000044201456314707100245300ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARTGS_H #define CXXLAPACK_INTERFACE_LARTGS_H 1 #include namespace cxxlapack { template void lartgs(float x, float y, float sigma, float &cs, float &sn); template void lartgs(double x, double y, double sigma, double &cs, double &sn); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARTGS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lartgs.tcc000066400000000000000000000052731456314707100250610ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARTGS_TCC #define CXXLAPACK_INTERFACE_LARTGS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lartgs(float x, float y, float sigma, float &cs, float &sn) { CXXLAPACK_DEBUG_OUT("slartgs"); LAPACK_IMPL(slartgs)(&x, &y, &sigma, &cs, &sn); } template void lartgs(double x, double y, double sigma, double &cs, double &sn) { CXXLAPACK_DEBUG_OUT("dlartgs"); LAPACK_IMPL(dlartgs)(&x, &y, &sigma, &cs, &sn); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARTGS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lartv.h000066400000000000000000000063171456314707100243730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARTV_H #define CXXLAPACK_INTERFACE_LARTV_H 1 #include namespace cxxlapack { template void lartv(IndexType n, float *x, IndexType incx, float *y, IndexType incy, const float *c, const float *s, IndexType incc); template void lartv(IndexType n, double *x, IndexType incx, double *y, IndexType incy, const double *c, const double *s, IndexType incc); template void lartv(IndexType n, std::complex *x, IndexType incx, std::complex *y, IndexType incy, const float *c, const std::complex *s, IndexType incc); template void lartv(IndexType n, std::complex *x, IndexType incx, std::complex *y, IndexType incy, const double *c, const std::complex *s, IndexType incc); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARTV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lartv.tcc000066400000000000000000000106151456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARTV_TCC #define CXXLAPACK_INTERFACE_LARTV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lartv(IndexType n, float *x, IndexType incx, float *y, IndexType incy, const float *c, const float *s, IndexType incc) { CXXLAPACK_DEBUG_OUT("slartv"); LAPACK_IMPL(slartv)(&n, x, &incx, y, &incy, c, s, &incc); } template void lartv(IndexType n, double *x, IndexType incx, double *y, IndexType incy, const double *c, const double *s, IndexType incc) { CXXLAPACK_DEBUG_OUT("dlartv"); LAPACK_IMPL(dlartv)(&n, x, &incx, y, &incy, c, s, &incc); } template void lartv(IndexType n, std::complex *x, IndexType incx, std::complex *y, IndexType incy, const float *c, const std::complex *s, IndexType incc) { CXXLAPACK_DEBUG_OUT("clartv"); LAPACK_IMPL(clartv)(&n, reinterpret_cast(x), &incx, reinterpret_cast(y), &incy, c, reinterpret_cast(s), &incc); } template void lartv(IndexType n, std::complex *x, IndexType incx, std::complex *y, IndexType incy, const double *c, const std::complex *s, IndexType incc) { CXXLAPACK_DEBUG_OUT("zlartv"); LAPACK_IMPL(zlartv)(&n, reinterpret_cast(x), &incx, reinterpret_cast(y), &incy, c, reinterpret_cast(s), &incc); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARTV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laruv.h000066400000000000000000000041431456314707100243670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARUV_H #define CXXLAPACK_INTERFACE_LARUV_H 1 #include namespace cxxlapack { template void laruv(IndexType *seed, IndexType n, float *X); template void laruv(IndexType *seed, IndexType n, double *X); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARUV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laruv.tcc000066400000000000000000000046421456314707100247150ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARUV_TCC #define CXXLAPACK_INTERFACE_LARUV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laruv(IndexType *seed, IndexType n, float *X) { CXXLAPACK_DEBUG_OUT("slaruv"); LAPACK_IMPL(slaruv)(seed, &n, X); } template void laruv(IndexType *seed, IndexType n, double *X) { CXXLAPACK_DEBUG_OUT("dlaruv"); LAPACK_IMPL(dlaruv)(seed, &n, X); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARUV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larz.h000066400000000000000000000065071456314707100242140ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARZ_H #define CXXLAPACK_INTERFACE_LARZ_H 1 #include namespace cxxlapack { template void larz(char side, IndexType m, IndexType n, IndexType l, const float *V, IndexType incV, float tau, float *C, IndexType ldC, float *work); template void larz(char side, IndexType m, IndexType n, IndexType l, const double *V, IndexType incV, double tau, double *C, IndexType ldC, double *work); template void larz(char side, IndexType m, IndexType n, IndexType l, const std::complex *V, IndexType incV, const std::complex &tau, std::complex *C, IndexType ldC, std::complex *work); template void larz(char side, IndexType m, IndexType n, IndexType l, const std::complex *V, IndexType incV, const std::complex &tau, std::complex *C, IndexType ldC, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARZ_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larz.tcc000066400000000000000000000113601456314707100245270ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARZ_TCC #define CXXLAPACK_INTERFACE_LARZ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void larz(char side, IndexType m, IndexType n, IndexType l, const float *V, IndexType incV, float tau, float *C, IndexType ldC, float *work) { CXXLAPACK_DEBUG_OUT("slarz"); LAPACK_IMPL(slarz)(&side, &m, &n, &l, V, &incV, &tau, C, &ldC, work); } template void larz(char side, IndexType m, IndexType n, IndexType l, const double *V, IndexType incV, double tau, double *C, IndexType ldC, double *work) { CXXLAPACK_DEBUG_OUT("dlarz"); LAPACK_IMPL(dlarz)(&side, &m, &n, &l, V, &incV, &tau, C, &ldC, work); } template void larz(char side, IndexType m, IndexType n, IndexType l, const std::complex *V, IndexType incV, const std::complex &tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("clarz"); LAPACK_IMPL(clarz)(&side, &m, &n, &l, reinterpret_cast(V), &incV, reinterpret_cast(&tau), reinterpret_cast(C), &ldC, reinterpret_cast(work)); } template void larz(char side, IndexType m, IndexType n, IndexType l, const std::complex *V, IndexType incV, const std::complex &tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("zlarz"); LAPACK_IMPL(zlarz)(&side, &m, &n, &l, reinterpret_cast(V), &incV, reinterpret_cast(&tau), reinterpret_cast(C), &ldC, reinterpret_cast(work)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARZ_TCC 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larzb.h000066400000000000000000000103301456314707100243430ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARZB_H #define CXXLAPACK_INTERFACE_LARZB_H 1 #include namespace cxxlapack { template void larzb(char side, char trans, char direct, char storeV, IndexType m, IndexType n, IndexType k, IndexType l, const float *V, IndexType ldV, const float *T, IndexType ldT, float *C, IndexType ldC, float *work, IndexType ldWork); template void larzb(char side, char trans, char direct, char storeV, IndexType m, IndexType n, IndexType k, IndexType l, const double *V, IndexType ldV, const double *T, IndexType ldT, double *C, IndexType ldC, double *work, IndexType ldWork); template void larzb(char side, char trans, char direct, char storeU, IndexType m, IndexType n, IndexType k, IndexType l, const std::complex *V, IndexType ldV, const std::complex *T, IndexType ldT, std::complex *C, IndexType ldC, std::complex *work, IndexType ldWork); template void larzb(char side, char trans, char direct, char storeU, IndexType m, IndexType n, IndexType k, IndexType l, const std::complex *V, IndexType ldV, const std::complex *T, IndexType ldT, std::complex *C, IndexType ldC, std::complex *work, IndexType ldWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARZB_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larzb.tcc000066400000000000000000000144611456314707100246760ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARZB_TCC #define CXXLAPACK_INTERFACE_LARZB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void larzb(char side, char trans, char direct, char storeV, IndexType m, IndexType n, IndexType k, IndexType l, const float *V, IndexType ldV, const float *T, IndexType ldT, float *C, IndexType ldC, float *work, IndexType ldWork) { CXXLAPACK_DEBUG_OUT("slarzb"); LAPACK_IMPL(slarzb)(&side, &trans, &direct, &storeV, &m, &n, &k, &l, V, &ldV, T, &ldT, C, &ldC, work, &ldWork); } template void larzb(char side, char trans, char direct, char storeV, IndexType m, IndexType n, IndexType k, IndexType l, const double *V, IndexType ldV, const double *T, IndexType ldT, double *C, IndexType ldC, double *work, IndexType ldWork) { CXXLAPACK_DEBUG_OUT("dlarzb"); LAPACK_IMPL(dlarzb)(&side, &trans, &direct, &storeV, &m, &n, &k, &l, V, &ldV, T, &ldT, C, &ldC, work, &ldWork); } template void larzb(char side, char trans, char direct, char storeV, IndexType m, IndexType n, IndexType k, IndexType l, const std::complex *V, IndexType ldV, const std::complex *T, IndexType ldT, std::complex *C, IndexType ldC, std::complex *work, IndexType ldWork) { CXXLAPACK_DEBUG_OUT("clarzb"); LAPACK_IMPL(clarzb)(&side, &trans, &direct, &storeV, &m, &n, &k, &l, reinterpret_cast(V), &ldV, reinterpret_cast(T), &ldT, reinterpret_cast(C), &ldC, reinterpret_cast(work), &ldWork); } template void larzb(char side, char trans, char direct, char storeV, IndexType m, IndexType n, IndexType k, IndexType l, const std::complex *V, IndexType ldV, const std::complex *T, IndexType ldT, std::complex *C, IndexType ldC, std::complex *work, IndexType ldWork) { CXXLAPACK_DEBUG_OUT("zlarzb"); LAPACK_IMPL(zlarzb)(&side, &trans, &direct, &storeV, &m, &n, &k, &l, reinterpret_cast(V), &ldV, reinterpret_cast(T), &ldT, reinterpret_cast(C), &ldC, reinterpret_cast(work), &ldWork); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARZB_TCC 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larzt.h000066400000000000000000000064031456314707100243730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARZT_H #define CXXLAPACK_INTERFACE_LARZT_H 1 #include namespace cxxlapack { template void larzt(char direct, char storeV, IndexType n, IndexType k, float *V, const IndexType ldV, const float *tau, float *T, const IndexType ldT); template void larzt(char direct, char storeV, IndexType n, IndexType k, double *V, const IndexType ldV, const double *tau, double *T, const IndexType ldT); template void larzt(char direct, char storeV, IndexType n, IndexType k, std::complex *V, IndexType ldV, const std::complex *tau, std::complex *T, IndexType ldT); template void larzt(char direct, char storeV, IndexType n, IndexType k, std::complex *V, IndexType ldV, const std::complex *tau, std::complex *T, IndexType ldT); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARZT_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/larzt.tcc000066400000000000000000000111011456314707100247040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LARZT_TCC #define CXXLAPACK_INTERFACE_LARZT_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void larzt(char direct, char storeV, IndexType n, IndexType k, float *V, const IndexType ldV, const float *tau, float *T, const IndexType ldT) { CXXLAPACK_DEBUG_OUT("slarzt"); LAPACK_IMPL(slarzt)(&direct, &storeV, &n, &k, V, &ldV, tau, T, &ldT); } template void larzt(char direct, char storeV, IndexType n, IndexType k, double *V, const IndexType ldV, const double *tau, double *T, const IndexType ldT) { CXXLAPACK_DEBUG_OUT("dlarzt"); LAPACK_IMPL(dlarzt)(&direct, &storeV, &n, &k, V, &ldV, tau, T, &ldT); } template void larzt(char direct, char storeV, IndexType n, IndexType k, std::complex *V, IndexType ldV, const std::complex *tau, std::complex *T, IndexType ldT) { CXXLAPACK_DEBUG_OUT("clarzt"); LAPACK_IMPL(clarzt)(&direct, &storeV, &n, &k, reinterpret_cast(V), &ldV, reinterpret_cast(tau), reinterpret_cast(T), &ldT); } template void larzt(char direct, char storeV, IndexType n, IndexType k, std::complex *V, IndexType ldV, const std::complex *tau, std::complex *T, IndexType ldT) { CXXLAPACK_DEBUG_OUT("zlarzt"); LAPACK_IMPL(zlarzt)(&direct, &storeV, &n, &k, reinterpret_cast(V), &ldV, reinterpret_cast(tau), reinterpret_cast(T), &ldT); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LARZT_TCC 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/las2.h000066400000000000000000000044041456314707100240770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAS2_H #define CXXLAPACK_INTERFACE_LAS2_H 1 #include namespace cxxlapack { template void las2 (float f, float g, float h, float &ssmin, float &ssmax); template void las2 (double f, double g, double h, double &ssmin, double &ssmax); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAS2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/las2.tcc000066400000000000000000000052451456314707100244250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAS2_TCC #define CXXLAPACK_INTERFACE_LAS2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void las2 (float f, float g, float h, float &ssmin, float &ssmax) { CXXLAPACK_DEBUG_OUT("slas2"); LAPACK_IMPL(slas2) (&f, &g, &h, &ssmin, &ssmax); } template void las2 (double f, double g, double h, double &ssmin, double &ssmax) { CXXLAPACK_DEBUG_OUT("dlas2"); LAPACK_IMPL(dlas2) (&f, &g, &h, &ssmin, &ssmax); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAS2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lascl.h000066400000000000000000000061711456314707100243370ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASCL_H #define CXXLAPACK_INTERFACE_LASCL_H 1 #include namespace cxxlapack { template IndexType lascl(char type, IndexType kl, IndexType ku, const float &cFrom, const float &cTo, IndexType m, IndexType n, float *A, IndexType ldA); template IndexType lascl(char type, IndexType kl, IndexType ku, const double &cFrom, const double &cTo, IndexType m, IndexType n, double *A, IndexType ldA); template IndexType lascl(char type, IndexType kl, IndexType ku, const float &cFrom, const float &cTo, IndexType m, IndexType n, std::complex *A, IndexType ldA); template IndexType lascl(char type, IndexType kl, IndexType ku, const double &cFrom, const double &cTo, IndexType m, IndexType n, std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASCL_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lascl.tcc000066400000000000000000000121001456314707100246460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASCL_TCC #define CXXLAPACK_INTERFACE_LASCL_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lascl(char type, IndexType kl, IndexType ku, const float &cFrom, const float &cTo, IndexType m, IndexType n, float *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("slascl"); IndexType info; LAPACK_IMPL(slascl)(&type, &kl, &ku, &cFrom, &cTo, &m, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lascl(char type, IndexType kl, IndexType ku, const double &cFrom, const double &cTo, IndexType m, IndexType n, double *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("dlascl"); IndexType info; LAPACK_IMPL(dlascl)(&type, &kl, &ku, &cFrom, &cTo, &m, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lascl(char type, IndexType kl, IndexType ku, const float &cFrom, const float &cTo, IndexType m, IndexType n, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("clascl"); IndexType info; LAPACK_IMPL(clascl)(&type, &kl, &ku, &cFrom, &cTo, &m, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lascl(char type, IndexType kl, IndexType ku, const double &cFrom, const double &cTo, IndexType m, IndexType n, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("zlascl"); IndexType info; LAPACK_IMPL(zlascl)(&type, &kl, &ku, &cFrom, &cTo, &m, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASCL_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lascl2.h000066400000000000000000000053201456314707100244140ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASCL2_H #define CXXLAPACK_INTERFACE_LASCL2_H 1 #include namespace cxxlapack { template IndexType lascl2(IndexType m, IndexType n, const float *d, float *X, IndexType ldX); template IndexType lascl2(IndexType m, IndexType n, const double *d, double *X, IndexType ldX); template IndexType lascl2(IndexType m, IndexType n, const float *d, std::complex *X, IndexType ldX); template IndexType lascl2(IndexType m, IndexType n, const double *d, std::complex *X, IndexType ldX); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASCL2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lascl2.tcc000066400000000000000000000067411456314707100247460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASCL2_TCC #define CXXLAPACK_INTERFACE_LASCL2_TCC #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lascl2(IndexType m, IndexType n, const float *d, float *X, IndexType ldX) { CXXLAPACK_DEBUG_OUT("slascl2"); LAPACK_IMPL(slascl2)(&m, &n, d, X, &ldX); } template void lascl2(IndexType m, IndexType n, const double *d, double *X, IndexType ldX) { CXXLAPACK_DEBUG_OUT("dlascl2"); LAPACK_IMPL(dlascl2)(&m, &n, d, X, &ldX); } template void lascl2(IndexType m, IndexType n, const float *d, std::complex *X, IndexType ldX) { CXXLAPACK_DEBUG_OUT("clascl2"); LAPACK_IMPL(clascl2)(&m, &n, d, reinterpret_cast(X), &ldX); } template void lascl2(IndexType m, IndexType n, const double *d, std::complex *X, IndexType ldX) { CXXLAPACK_DEBUG_OUT("zlascl2"); LAPACK_IMPL(zlascl2)(&m, &n, d, reinterpret_cast(X), &ldX); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASCL2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd0.h000066400000000000000000000053111456314707100242370ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD0_H #define CXXLAPACK_INTERFACE_LASD0_H 1 #include namespace cxxlapack { template IndexType lasd0(IndexType n, IndexType sqre, float *d, const float *e, float *U, IndexType ldU, float *Vt, IndexType ldVt, IndexType smlsiz, IndexType *iWork, float *work); template IndexType lasd0(IndexType n, IndexType sqre, double *d, const double *e, double *U, IndexType ldU, double *Vt, IndexType ldVt, IndexType smlsiz, IndexType *iWork, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD0_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd0.tcc000066400000000000000000000074501456314707100245670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD0_TCC #define CXXLAPACK_INTERFACE_LASD0_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasd0(IndexType n, IndexType sqre, float *d, const float *e, float *U, IndexType ldU, float *Vt, IndexType ldVt, IndexType smlsiz, IndexType *iWork, float *work) { CXXLAPACK_DEBUG_OUT("slasd0"); IndexType info; LAPACK_IMPL(slasd0)(&n, &sqre, d, e, U, &ldU, Vt, &ldVt, &smlsiz, iWork, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasd0(IndexType n, IndexType sqre, double *d, const double *e, double *U, IndexType ldU, double *Vt, IndexType ldVt, IndexType smlsiz, IndexType *iWork, double *work) { CXXLAPACK_DEBUG_OUT("dlasd0"); IndexType info; LAPACK_IMPL(dlasd0)(&n, &sqre, d, e, U, &ldU, Vt, &ldVt, &smlsiz, iWork, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD0_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd1.h000066400000000000000000000055501456314707100242450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD1_H #define CXXLAPACK_INTERFACE_LASD1_H 1 #include namespace cxxlapack { template IndexType lasd1(IndexType nl, IndexType nr, IndexType sqre, float *d, float &alpha, float &beta, float *U, IndexType ldU, float *Vt, IndexType ldVt, IndexType *idxq, IndexType *iWork, float *work); template IndexType lasd1(IndexType nl, IndexType nr, IndexType sqre, double *d, double &alpha, double &beta, double *U, IndexType ldU, double *Vt, IndexType ldVt, IndexType *idxq, IndexType *iWork, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD1_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd1.tcc000066400000000000000000000100641456314707100245630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD1_TCC #define CXXLAPACK_INTERFACE_LASD1_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasd1(IndexType nl, IndexType nr, IndexType sqre, float *d, float &alpha, float &beta, float *U, IndexType ldU, float *Vt, IndexType ldVt, IndexType *idxq, IndexType *iWork, float *work) { CXXLAPACK_DEBUG_OUT("slasd1"); IndexType info; LAPACK_IMPL(slasd1)(&nl, &nr, &sqre, d, &alpha, &beta, U, &ldU, Vt, &ldVt, idxq, iWork, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasd1(IndexType nl, IndexType nr, IndexType sqre, double *d, double &alpha, double &beta, double *U, IndexType ldU, double *Vt, IndexType ldVt, IndexType *idxq, IndexType *iWork, double *work) { CXXLAPACK_DEBUG_OUT("dlasd1"); IndexType info; LAPACK_IMPL(dlasd1)(&nl, &nr, &sqre, d, &alpha, &beta, U, &ldU, Vt, &ldVt, idxq, iWork, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD1_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd2.h000066400000000000000000000070231456314707100242430ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD2_H #define CXXLAPACK_INTERFACE_LASD2_H 1 #include namespace cxxlapack { template IndexType lasd2(IndexType nl, IndexType nr, IndexType sqre, IndexType &k, float *d, float *z, float alpha, float beta, float *U, IndexType ldU, float *Vt, IndexType ldVt, float *dsigma, float *U2, IndexType ldU2, float *Vt2, IndexType ldVt2, IndexType *idxp, IndexType *idx, IndexType *idxc, IndexType *idxq, IndexType *coltype); template IndexType lasd2(IndexType nl, IndexType nr, IndexType sqre, IndexType &k, double *d, double *z, double alpha, double beta, double *U, IndexType ldU, double *Vt, IndexType ldVt, double *dsigma, double *U2, IndexType ldU2, double *Vt2, IndexType ldVt2, IndexType *idxp, IndexType *idx, IndexType *idxc, IndexType *idxq, IndexType *coltype); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd2.tcc000066400000000000000000000122601456314707100245640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD2_TCC #define CXXLAPACK_INTERFACE_LASD2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasd2(IndexType nl, IndexType nr, IndexType sqre, IndexType &k, float *d, float *z, float alpha, float beta, float *U, IndexType ldU, float *Vt, IndexType ldVt, float *dsigma, float *U2, IndexType ldU2, float *Vt2, IndexType ldVt2, IndexType *idxp, IndexType *idx, IndexType *idxc, IndexType *idxq, IndexType *coltype) { CXXLAPACK_DEBUG_OUT("slasd2"); IndexType info; LAPACK_IMPL(slasd2)(&nl, &nr, &sqre, &k, d, z, &alpha, &beta, U, &ldU, Vt, &ldVt, dsigma, U2, &ldU2, Vt2, &ldVt2, idxp, idx, idxc, idxq, coltype, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasd2(IndexType nl, IndexType nr, IndexType sqre, IndexType &k, double *d, double *z, double alpha, double beta, double *U, IndexType ldU, double *Vt, IndexType ldVt, double *dsigma, double *U2, IndexType ldU2, double *Vt2, IndexType ldVt2, IndexType *idxp, IndexType *idx, IndexType *idxc, IndexType *idxq, IndexType *coltype) { CXXLAPACK_DEBUG_OUT("dlasd2"); IndexType info; LAPACK_IMPL(dlasd2)(&nl, &nr, &sqre, &k, d, z, &alpha, &beta, U, &ldU, Vt, &ldVt, dsigma, U2, &ldU2, Vt2, &ldVt2, idxp, idx, idxc, idxq, coltype, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd3.h000066400000000000000000000064321456314707100242470ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD3_H #define CXXLAPACK_INTERFACE_LASD3_H 1 #include namespace cxxlapack { template IndexType lasd3(IndexType nl, IndexType nr, IndexType sqre, IndexType k, float *d, float *D, IndexType ldD, const float dsigma, float *U, IndexType ldU, float *U2, IndexType ldU2, float *Vt, IndexType ldVt, float *Vt2, IndexType ldVt2, const IndexType *idxc, const IndexType *ctot, const float *z); template IndexType lasd3(IndexType nl, IndexType nr, IndexType sqre, IndexType k, double *d, double *D, IndexType ldD, const double dsigma, double *U, IndexType ldU, double *U2, IndexType ldU2, double *Vt, IndexType ldVt, double *Vt2, IndexType ldVt2, const IndexType *idxc, const IndexType *ctot, const double *z); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD3_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd3.tcc000066400000000000000000000114151456314707100245660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD3_TCC #define CXXLAPACK_INTERFACE_LASD3_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasd3(IndexType nl, IndexType nr, IndexType sqre, IndexType k, float *d, float *D, IndexType ldD, const float dsigma, float *U, IndexType ldU, float *U2, IndexType ldU2, float *Vt, IndexType ldVt, float *Vt2, IndexType ldVt2, const IndexType *idxc, const IndexType *ctot, const float *z) { CXXLAPACK_DEBUG_OUT("slasd3"); IndexType info; LAPACK_IMPL(slasd3)(&nl, &nr, &sqre, &k, d, D, &ldD, &dsigma, U, &ldU, U2, &ldU2, Vt, &ldVt, Vt2, &ldVt2, idxc, ctot, z, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasd3(IndexType nl, IndexType nr, IndexType sqre, IndexType k, double *d, double *D, IndexType ldD, const double dsigma, double *U, IndexType ldU, double *U2, IndexType ldU2, double *Vt, IndexType ldVt, double *Vt2, IndexType ldVt2, const IndexType *idxc, const IndexType *ctot, const double *z) { CXXLAPACK_DEBUG_OUT("dlasd3"); IndexType info; LAPACK_IMPL(dlasd3)(&nl, &nr, &sqre, &k, d, D, &ldD, &dsigma, U, &ldU, U2, &ldU2, Vt, &ldVt, Vt2, &ldVt2, idxc, ctot, z, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD3_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd4.h000066400000000000000000000047451456314707100242550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD4_H #define CXXLAPACK_INTERFACE_LASD4_H 1 #include namespace cxxlapack { template IndexType lasd4(IndexType n, IndexType i, const float *d, const float *z, float *delta, float rho, float &sigma, float *work); template IndexType lasd4(IndexType n, IndexType i, const double *d, const double *z, double *delta, double rho, double &sigma, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD4_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd4.tcc000066400000000000000000000066501456314707100245740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD4_TCC #define CXXLAPACK_INTERFACE_LASD4_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasd4(IndexType n, IndexType i, const float *d, const float *z, float *delta, float rho, float &sigma, float *work) { CXXLAPACK_DEBUG_OUT("slasd4"); IndexType info; LAPACK_IMPL(slasd4)(&n, &i, d, z, delta, &rho, &sigma, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasd4(IndexType n, IndexType i, const double *d, const double *z, double *delta, double rho, double &sigma, double *work) { CXXLAPACK_DEBUG_OUT("dlasd4"); IndexType info; LAPACK_IMPL(dlasd4)(&n, &i, d, z, delta, &rho, &sigma, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD4_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd5.h000066400000000000000000000046251456314707100242530ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD5_H #define CXXLAPACK_INTERFACE_LASD5_H 1 #include namespace cxxlapack { template void lasd5(IndexType i, const float *d, const float *z, float *delta, float rho, float &sigma, float *work); template void lasd5(IndexType i, const double *d, const double *z, double *delta, double rho, double &sigma, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD5_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd5.tcc000066400000000000000000000056441456314707100245770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD5_TCC #define CXXLAPACK_INTERFACE_LASD5_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lasd5(IndexType i, const float *d, const float *z, float *delta, float rho, float &sigma, float *work) { CXXLAPACK_DEBUG_OUT("slasd5"); LAPACK_IMPL(slasd5)(&i, d, z, delta, &rho, &sigma, work); } template void lasd5(IndexType i, const double *d, const double *z, double *delta, double rho, double &sigma, double *work) { CXXLAPACK_DEBUG_OUT("dlasd5"); LAPACK_IMPL(dlasd5)(&i, d, z, delta, &rho, &sigma, work); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD5_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd6.h000066400000000000000000000074231456314707100242530ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD6_H #define CXXLAPACK_INTERFACE_LASD6_H 1 #include namespace cxxlapack { template IndexType lasd6(IndexType icompq, IndexType nl, IndexType nr, IndexType sqre, float *d, float *vf, float *vl, float &alpha, float &beta, IndexType *idxq, IndexType *perm, IndexType &givptr, IndexType *Givcol, IndexType ldGcol, float *Givnum, IndexType ldGnum, float *Poles, float *difl, float *difr, float *z, IndexType &k, float &c, float &s, float *work, IndexType *iWork); template IndexType lasd6(IndexType icompq, IndexType nl, IndexType nr, IndexType sqre, double *d, double *vf, double *vl, double &alpha, double &beta, IndexType *idxq, IndexType *perm, IndexType &givptr, IndexType *Givcol, IndexType ldGcol, double *Givnum, IndexType ldGnum, double *Poles, double *difl, double *difr, double *z, IndexType &k, double &c, double &s, double *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD6_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd6.tcc000066400000000000000000000131401456314707100245660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD6_TCC #define CXXLAPACK_INTERFACE_LASD6_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasd6(IndexType icompq, IndexType nl, IndexType nr, IndexType sqre, float *d, float *vf, float *vl, float &alpha, float &beta, IndexType *idxq, IndexType *perm, IndexType &givptr, IndexType *Givcol, IndexType ldGcol, float *Givnum, IndexType ldGnum, float *Poles, float *difl, float *difr, float *z, IndexType &k, float &c, float &s, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("slasd6"); IndexType info; LAPACK_IMPL(slasd6)(&icompq, &nl, &nr, &sqre, d, vf, vl, &alpha, &beta, idxq, perm, &givptr, Givcol, &ldGcol, Givnum, &ldGnum, Poles, difl, difr, z, &k, &c, &s, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasd6(IndexType icompq, IndexType nl, IndexType nr, IndexType sqre, double *d, double *vf, double *vl, double &alpha, double &beta, IndexType *idxq, IndexType *perm, IndexType &givptr, IndexType *Givcol, IndexType ldGcol, double *Givnum, IndexType ldGnum, double *Poles, double *difl, double *difr, double *z, IndexType &k, double &c, double &s, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dlasd6"); IndexType info; LAPACK_IMPL(dlasd6)(&icompq, &nl, &nr, &sqre, d, vf, vl, &alpha, &beta, idxq, perm, &givptr, Givcol, &ldGcol, Givnum, &ldGnum, Poles, difl, difr, z, &k, &c, &s, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD6_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd7.h000066400000000000000000000075271456314707100242610ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD7_H #define CXXLAPACK_INTERFACE_LASD7_H 1 #include namespace cxxlapack { template IndexType lasd7(IndexType icompq, IndexType nl, IndexType nr, IndexType sqre, IndexType &k, float *d, float *z, float *zw, float *vf, float *vfw, float *vl, float *vlw, float &alpha, float &beta, float *dsigma, IndexType *idx, IndexType *idxp, const IndexType *idxq, IndexType *perm, IndexType &givptr, IndexType *Givcol, IndexType ldGcol, float *Givnum, IndexType ldGnum, float &c, float &s); template IndexType lasd7(IndexType icompq, IndexType nl, IndexType nr, IndexType sqre, IndexType &k, double *d, double *z, double *zw, double *vf, double *vfw, double *vl, double *vlw, double &alpha, double &beta, double *dsigma, IndexType *idx, IndexType *idxp, const IndexType *idxq, IndexType *perm, IndexType &givptr, IndexType *Givcol, IndexType ldGcol, double *Givnum, IndexType ldGnum, double &c, double &s); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD7_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd7.tcc000066400000000000000000000133161456314707100245740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD7_TCC #define CXXLAPACK_INTERFACE_LASD7_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasd7(IndexType icompq, IndexType nl, IndexType nr, IndexType sqre, IndexType &k, float *d, float *z, float *zw, float *vf, float *vfw, float *vl, float *vlw, float &alpha, float &beta, float *dsigma, IndexType *idx, IndexType *idxp, const IndexType *idxq, IndexType *perm, IndexType &givptr, IndexType *Givcol, IndexType ldGcol, float *Givnum, IndexType ldGnum, float &c, float &s) { CXXLAPACK_DEBUG_OUT("slasd7"); IndexType info; LAPACK_IMPL(slasd7)(&icompq, &nl, &nr, &sqre, &k, d, z, zw, vf, vfw, vl, vlw, &alpha, &beta, dsigma, idx, idxp, idxq, perm, &givptr, Givcol, &ldGcol, Givnum, &ldGnum, &c, &s, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasd7(IndexType icompq, IndexType nl, IndexType nr, IndexType sqre, IndexType &k, double *d, double *z, double *zw, double *vf, double *vfw, double *vl, double *vlw, double &alpha, double &beta, double *dsigma, IndexType *idx, IndexType *idxp, const IndexType *idxq, IndexType *perm, IndexType &givptr, IndexType *Givcol, IndexType ldGcol, double *Givnum, IndexType ldGnum, double &c, double &s) { CXXLAPACK_DEBUG_OUT("dlasd7"); IndexType info; LAPACK_IMPL(dlasd7)(&icompq, &nl, &nr, &sqre, &k, d, z, zw, vf, vfw, vl, vlw, &alpha, &beta, dsigma, idx, idxp, idxq, perm, &givptr, Givcol, &ldGcol, Givnum, &ldGnum, &c, &s, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD7_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd8.h000066400000000000000000000053271456314707100242560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD8_H #define CXXLAPACK_INTERFACE_LASD8_H 1 #include namespace cxxlapack { template IndexType lasd8(IndexType icompq, IndexType k, float *d, float *z, float *vf, float *vl, float *difl, float *Difr, IndexType ldDifr, float *dsigma, float *work); template IndexType lasd8(IndexType icompq, IndexType k, double *d, double *z, double *vf, double *vl, double *difl, double *Difr, IndexType ldDifr, double *dsigma, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD8_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasd8.tcc000066400000000000000000000074741456314707100246050ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASD8_TCC #define CXXLAPACK_INTERFACE_LASD8_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasd8(IndexType icompq, IndexType k, float *d, float *z, float *vf, float *vl, float *difl, float *Difr, IndexType ldDifr, float *dsigma, float *work) { CXXLAPACK_DEBUG_OUT("slasd8"); IndexType info; LAPACK_IMPL(slasd8)(&icompq, &k, d, z, vf, vl, difl, Difr, &ldDifr, dsigma, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasd8(IndexType icompq, IndexType k, double *d, double *z, double *vf, double *vl, double *difl, double *Difr, IndexType ldDifr, double *dsigma, double *work) { CXXLAPACK_DEBUG_OUT("dlasd8"); IndexType info; LAPACK_IMPL(dlasd8)(&icompq, &k, d, z, vf, vl, difl, Difr, &ldDifr, dsigma, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASD8_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasda.h000066400000000000000000000072331456314707100243250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASDA_H #define CXXLAPACK_INTERFACE_LASDA_H 1 #include namespace cxxlapack { template IndexType dlasda(IndexType icompq, IndexType smlsiz, IndexType n, IndexType sqre, float *d, const float *e, float *U, IndexType ldU, float *Vt, IndexType &k, float *Difl, float *Difr, float *Z, float *Poles, IndexType *Givptr, IndexType *Givcol, IndexType ldGcol, IndexType *Perm, float *Givnum, float *c, float *s, float *work, IndexType *iWork); template IndexType dlasda(IndexType icompq, IndexType smlsiz, IndexType n, IndexType sqre, double *d, const double *e, double *U, IndexType ldU, double *Vt, IndexType &k, double *Difl, double *Difr, double *Z, double *Poles, IndexType *Givptr, IndexType *Givcol, IndexType ldGcol, IndexType *Perm, double *Givnum, double *c, double *s, double *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASDA_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasda.tcc000066400000000000000000000124741456314707100246520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASDA_TCC #define CXXLAPACK_INTERFACE_LASDA_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasda(IndexType icompq, IndexType smlsiz, IndexType n, IndexType sqre, float *d, const float *e, float *U, IndexType ldU, float *Vt, IndexType &k, float *Difl, float *Difr, float *Z, float *Poles, IndexType *Givptr, IndexType *Givcol, IndexType ldGcol, IndexType *Perm, float *Givnum, float *c, float *s, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("slasda"); IndexType info; LAPACK_IMPL(slasda)(&icompq, &smlsiz, &n &sqre, d, e, U, &ldU, Vt, &k, Difl, Difr, Z, Poles, Givptr, Givcol, &ldGcol, Perm, Givnum, c, s, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasda(IndexType icompq, IndexType smlsiz, IndexType n, IndexType sqre, double *d, const double *e, double *U, IndexType ldU, double *Vt, IndexType &k, double *Difl, double *Difr, double *Z, double *Poles, IndexType *Givptr, IndexType *Givcol, IndexType ldGcol, IndexType *Perm, double *Givnum, double *c, double *s, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dlasda"); IndexType info; LAPACK_IMPL(dlasda)(&icompq, &smlsiz, &n &sqre, d, e, U, &ldU, Vt, &k, Difl, Difr, Z, Poles, Givptr, Givcol, &ldGcol, Perm, Givnum, c, s, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASDA_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasdq.h000066400000000000000000000057471456314707100243550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASDQ_H #define CXXLAPACK_INTERFACE_LASDQ_H 1 #include namespace cxxlapack { template IndexType lasdq(char uplo, IndexType sqre, IndexType n, IndexType ncvt, IndexType nru, IndexType ncc, float *d, float *e, float *Vt, IndexType ldVt, float *U, IndexType ldU, float *C, IndexType ldC, float *work); template IndexType lasdq(char uplo, IndexType sqre, IndexType n, IndexType ncvt, IndexType nru, IndexType ncc, double *d, double *e, double *Vt, IndexType ldVt, double *U, IndexType ldU, double *C, IndexType ldC, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASDQ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasdq.tcc000066400000000000000000000104141456314707100246620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASDQ_TCC #define CXXLAPACK_INTERFACE_LASDQ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasdq(char uplo, IndexType sqre, IndexType n, IndexType ncvt, IndexType nru, IndexType ncc, float *d, float *e, float *Vt, IndexType ldVt, float *U, IndexType ldU, float *C, IndexType ldC, float *work) { CXXLAPACK_DEBUG_OUT("slasdq"); IndexType info; LAPACK_IMPL(slasdq)(&uplo, &sqre, &n, &ncvt, &nru, &ncc, d, e, Vt, &ldVt, U, &ldU, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasdq(char uplo, IndexType sqre, IndexType n, IndexType ncvt, IndexType nru, IndexType ncc, double *d, double *e, double *Vt, IndexType ldVt, double *U, IndexType ldU, double *C, IndexType ldC, double *work) { CXXLAPACK_DEBUG_OUT("dlasdq"); IndexType info; LAPACK_IMPL(dlasdq)(&uplo, &sqre, &n, &ncvt, &nru, &ncc, d, e, Vt, &ldVt, U, &ldU, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASDQ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasdt.h000066400000000000000000000041571456314707100243520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASDT_H #define CXXLAPACK_INTERFACE_LASDT_H 1 #include namespace cxxlapack { template IndexType lasdt(IndexType n, IndexType &lvl, IndexType &nd, IndexType *inode, IndexType *ndiml, IndexType *ndimr, IndexType msub); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASDT_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasdt.tcc000066400000000000000000000046511456314707100246730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASDT_TCC #define CXXLAPACK_INTERFACE_LASDT_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lasdt(IndexType n, IndexType &lvl, IndexType &nd, IndexType *inode, IndexType *ndiml, IndexType *ndimr, IndexType msub) { CXXLAPACK_DEBUG_OUT("dlasdt"); LAPACK_IMPL(dlasdt)(&n, &lvl, &nd, inode, ndiml, ndimr &msub); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASDT_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laset.h000066400000000000000000000057411456314707100243530ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASET_H #define CXXLAPACK_INTERFACE_LASET_H 1 #include namespace cxxlapack { template void laset(char uplo, IndexType m, IndexType n, float alpha, float beta, float *A, IndexType ldA); template void laset(char uplo, IndexType m, IndexType n, double alpha, double beta, double *A, IndexType ldA); template void laset(char uplo, IndexType m, IndexType n, std::complex alpha, std::complex beta, std::complex *A, IndexType ldA); template void laset(char uplo, IndexType m, IndexType n, std::complex alpha, std::complex beta, std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASET_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laset.tcc000066400000000000000000000101441456314707100246660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASET_TCC #define CXXLAPACK_INTERFACE_LASET_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laset(char uplo, IndexType m, IndexType n, float alpha, float beta, float *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("slaset"); LAPACK_IMPL(slaset)(&uplo, &m, &n, &alpha, &beta, A, &ldA); } template void laset(char uplo, IndexType m, IndexType n, double alpha, double beta, double *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("dlaset"); LAPACK_IMPL(dlaset)(&uplo, &m, &n, &alpha, &beta, A, &ldA); } template void laset(char uplo, IndexType m, IndexType n, std::complex alpha, std::complex beta, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("claset"); LAPACK_IMPL(claset)(&uplo, &m, &n, reinterpret_cast(&alpha), reinterpret_cast(&beta), reinterpret_cast(A), &ldA); } template void laset(char uplo, IndexType m, IndexType n, std::complex alpha, std::complex beta, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("zlaset"); LAPACK_IMPL(zlaset)(&uplo, &m, &n, reinterpret_cast(&alpha), reinterpret_cast(&beta), reinterpret_cast(A), &ldA); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASET_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasq1.h000066400000000000000000000042651456314707100242640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASQ1_H #define CXXLAPACK_INTERFACE_LASQ1_H 1 #include namespace cxxlapack { template IndexType lasq1(IndexType n, float *d, float *e, float *work); template IndexType lasq1(IndexType n, double *d, double *e, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASQ1_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasq1.tcc000066400000000000000000000056471456314707100246130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASQ1_TCC #define CXXLAPACK_INTERFACE_LASQ1_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasq1(IndexType n, float *d, float *e, float *work) { CXXLAPACK_DEBUG_OUT("slasq1"); IndexType info; LAPACK_IMPL(slasq1)(&n, d, e, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasq1(IndexType n, double *d, double *e, double *work) { CXXLAPACK_DEBUG_OUT("dlasq1"); IndexType info; LAPACK_IMPL(dlasq1)(&n, d, e, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASQ1_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasq2.h000066400000000000000000000040371456314707100242620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASQ2_H #define CXXLAPACK_INTERFACE_LASQ2_H 1 #include namespace cxxlapack { template IndexType lasq2(IndexType n, float *z); template IndexType lasq2(IndexType n, double *z); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASQ2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasq2.tcc000066400000000000000000000052561456314707100246100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASQ2_TCC #define CXXLAPACK_INTERFACE_LASQ2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasq2(IndexType n, float *z) { CXXLAPACK_DEBUG_OUT("slasq2"); IndexType info; LAPACK_IMPL(slasq2)(&n, z, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasq2(IndexType n, double *z) { CXXLAPACK_DEBUG_OUT("dlasq2"); IndexType info; LAPACK_IMPL(dlasq2)(&n, z, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASQ2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasq3.h000066400000000000000000000066031456314707100242640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASQ3_H #define CXXLAPACK_INTERFACE_LASQ3_H 1 #include namespace cxxlapack { template void lasq3(IndexType i0, IndexType &n0, const float *z, IndexType &pp, float &dmin, float &sigma, float &desig, float qmax, IndexType &nfail, IndexType &iter, IndexType &ndiv, bool ieee, IndexType &ttype, float &dmin1, float &dmin2, float &dn, float &dn1, float &dn2, float &g, float &tau); template void lasq3(IndexType i0, IndexType &n0, const double *z, IndexType &pp, double &dmin, double &sigma, double &desig, double qmax, IndexType &nfail, IndexType &iter, IndexType &ndiv, bool ieee, IndexType &ttype, double &dmin1, double &dmin2, double &dn, double &dn1, double &dn2, double &g, double &tau); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASQ3_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasq3.tcc000066400000000000000000000112151456314707100246010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASQ3_TCC #define CXXLAPACK_INTERFACE_LASQ3_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lasq3(IndexType i0, IndexType &n0, const float *z, IndexType &pp, float &dmin, float &sigma, float &desig, float qmax, IndexType &nfail, IndexType &iter, IndexType &ndiv, bool ieee, IndexType &ttype, float &dmin1, float &dmin2, float &dn, float &dn1, float &dn2, float &g, float &tau) { CXXLAPACK_DEBUG_OUT("slasq3"); IndexType ieee_ = ieee; LAPACK_IMPL(slasq3)(&i0, &n0, z, &pp, &dmin, &sigma, &desig, &qmax, &nfail, &iter, &ndiv, &ieee_, &ttype, &dmin1, &dmin2, &dn, &dn1, &dn2, &g, &tau); } template void lasq3(IndexType i0, IndexType &n0, const double *z, IndexType &pp, double &dmin, double &sigma, double &desig, double qmax, IndexType &nfail, IndexType &iter, IndexType &ndiv, bool ieee, IndexType &ttype, double &dmin1, double &dmin2, double &dn, double &dn1, double &dn2, double &g, double &tau) { CXXLAPACK_DEBUG_OUT("dlasq3"); IndexType ieee_ = ieee; LAPACK_IMPL(dlasq3)(&i0, &n0, z, &pp, &dmin, &sigma, &desig, &qmax, &nfail, &iter, &ndiv, &ieee_, &ttype, &dmin1, &dmin2, &dn, &dn1, &dn2, &g, &tau); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASQ3_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasq4.h000066400000000000000000000056331456314707100242670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASQ4_H #define CXXLAPACK_INTERFACE_LASQ4_H 1 #include namespace cxxlapack { template void lasq4(IndexType i0, IndexType n0, const float *z, IndexType pp, IndexType n0in, float dmin, float dmin1, float dmin2, float dn, float dn1, float dn2, float &tau, float &ttype, float &g); template void lasq4(IndexType i0, IndexType n0, const double *z, IndexType pp, IndexType n0in, double dmin, double dmin1, double dmin2, double dn, double dn1, double dn2, double &tau, double &ttype, double &g); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASQ4_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasq4.tcc000066400000000000000000000074371456314707100246150ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASQ4_TCC #define CXXLAPACK_INTERFACE_LASQ4_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lasq4(IndexType i0, IndexType n0, const float *z, IndexType pp, IndexType n0in, float dmin, float dmin1, float dmin2, float dn, float dn1, float dn2, float &tau, float &ttype, float &g) { CXXLAPACK_DEBUG_OUT("slasq4"); LAPACK_IMPL(slasq4)(&i0, &n0, z, &pp, &n0in, &dmin, &dmin1, &dmin2, &dn, &dn1, &dn2, &tau, &ttype, &g); } template void lasq4(IndexType i0, IndexType n0, const double *z, IndexType pp, IndexType n0in, double dmin, double dmin1, double dmin2, double dn, double dn1, double dn2, double &tau, double &ttype, double &g) { CXXLAPACK_DEBUG_OUT("dlasq4"); LAPACK_IMPL(dlasq4)(&i0, &n0, z, &pp, &n0in, &dmin, &dmin1, &dmin2, &dn, &dn1, &dn2, &tau, &ttype, &g); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASQ4_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasq5.h000066400000000000000000000056331456314707100242700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASQ5_H #define CXXLAPACK_INTERFACE_LASQ5_H 1 #include namespace cxxlapack { template void lasq5(IndexType i0, IndexType n0, const float *z, IndexType pp, IndexType n0in, float dmin, float dmin1, float dmin2, float dn, float dn1, float dn2, float &tau, IndexType &ttype, float &g); template void lasq5(IndexType i0, IndexType n0, const double *z, IndexType pp, IndexType n0in, double dmin, double dmin1, double dmin2, double dn, double dn1, double dn2, double &tau, IndexType &ttype, double &g); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASQ5_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasq5.tcc000066400000000000000000000074521456314707100246130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASQ5_TCC #define CXXLAPACK_INTERFACE_LASQ5_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasq5(IndexType i0, IndexType n0, const float *z, IndexType pp, IndexType n0in, float dmin, float dmin1, float dmin2, float dn, float dn1, float dn2, float &tau, IndexType &ttype, float &g) { CXXLAPACK_DEBUG_OUT("slasq5"); LAPACK_IMPL(slasq5)(&i0, &n0, z, &pp, &n0in, &dmin, &dmin1, &dmin2, &dn, &dn1, &dn2, &tau, &ttype, &g); } template IndexType lasq5(IndexType i0, IndexType n0, const double *z, IndexType pp, IndexType n0in, double dmin, double dmin1, double dmin2, double dn, double dn1, double dn2, double &tau, IndexType &ttype, double &g) { CXXLAPACK_DEBUG_OUT("dlasq5"); LAPACK_IMPL(dlasq5)(&i0, &n0, z, &pp, &n0in, &dmin, &dmin1, &dmin2, &dn, &dn1, &dn2, &tau, &ttype, &g); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASQ5_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasq6.h000066400000000000000000000051741456314707100242710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASQ6_H #define CXXLAPACK_INTERFACE_LASQ6_H 1 #include namespace cxxlapack { template void lasq6(IndexType i0, IndexType n0, const float *z, IndexType pp, float &dmin, float &dmin1, float &dmin2, float &dn, float &dnm1, float &dnm2); template void lasq6(IndexType i0, IndexType n0, const double *z, IndexType pp, double &dmin, double &dmin1, double &dmin2, double &dn, double &dnm1, double &dnm2); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASQ6_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasq6.tcc000066400000000000000000000065321456314707100246120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASQ6_TCC #define CXXLAPACK_INTERFACE_LASQ6_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lasq6(IndexType i0, IndexType n0, const float *z, IndexType pp, float &dmin, float &dmin1, float &dmin2, float &dn, float &dnm1, float &dnm2) { CXXLAPACK_DEBUG_OUT("slasq6"); IndexType info; LAPACK_IMPL(slasq6)(&i0, &n0, z, &pp, &dmin, &dmin1, &dmin2, &dn, &dnm1, &dnm2); } template void lasq6(IndexType i0, IndexType n0, const double *z, IndexType pp, double &dmin, double &dmin1, double &dmin2, double &dn, double &dnm1, double &dnm2) { CXXLAPACK_DEBUG_OUT("dlasq6"); IndexType info; LAPACK_IMPL(dlasq6)(&i0, &n0, z, &pp, &dmin, &dmin1, &dmin2, &dn, &dnm1, &dnm2); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASQ6_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasr.h000066400000000000000000000064071456314707100242040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASR_H #define CXXLAPACK_INTERFACE_LASR_H 1 #include namespace cxxlapack { template void lasr (char side, char pivot, char direct, IndexType m, IndexType n, const float *c, const float *s, float *A, IndexType ldA); template void lasr (char side, char pivot, char direct, IndexType m, IndexType n, const double *c, const double *s, double *A, IndexType ldA); template void lasr (char side, char pivot, char direct, IndexType m, IndexType n, const float *c, const float *s, std::complex *A, IndexType ldA); template void lasr (char side, char pivot, char direct, IndexType m, IndexType n, const double *c, const double *s, std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasr.tcc000066400000000000000000000106741456314707100245270ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASR_TCC #define CXXLAPACK_INTERFACE_LASR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lasr (char side, char pivot, char direct, IndexType m, IndexType n, const float *c, const float *s, float *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("slasr"); LAPACK_IMPL(slasr) (&side, &pivot, &direct, &m, &n, c, s, A, &ldA); } template void lasr (char side, char pivot, char direct, IndexType m, IndexType n, const double *c, const double *s, double *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("dlasr"); LAPACK_IMPL(dlasr) (&side, &pivot, &direct, &m, &n, c, s, A, &ldA); } template void lasr (char side, char pivot, char direct, IndexType m, IndexType n, const float *c, const float *s, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("clasr"); LAPACK_IMPL(clasr) (&side, &pivot, &direct, &m, &n, c, s, reinterpret_cast(A), &ldA); } template void lasr (char side, char pivot, char direct, IndexType m, IndexType n, const double *c, const double *s, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("zlasr"); LAPACK_IMPL(zlasr) (&side, &pivot, &direct, &m, &n, c, s, reinterpret_cast(A), &ldA); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasrt.h000066400000000000000000000041471456314707100243670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASRT_H #define CXXLAPACK_INTERFACE_LASRT_H 1 #include namespace cxxlapack { template IndexType lasrt(char id, IndexType n, float *d); template IndexType lasrt(char id, IndexType n, double *d); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASRT_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasrt.tcc000066400000000000000000000054501456314707100247070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASRT_TCC #define CXXLAPACK_INTERFACE_LASRT_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasrt(char id, IndexType n, float *d) { CXXLAPACK_DEBUG_OUT("slasrt"); IndexType info; LAPACK_IMPL(slasrt)(&id, &n, d, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasrt(char id, IndexType n, double *d) { CXXLAPACK_DEBUG_OUT("dlasrt"); IndexType info; LAPACK_IMPL(dlasrt)(&id, &n, d, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASRT_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lassq.h000066400000000000000000000053451456314707100243660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASSQ_H #define CXXLAPACK_INTERFACE_LASSQ_H 1 #include namespace cxxlapack { template void lassq(IndexType n, const float *x, IndexType incX, float &scale, float &sumsq); template void lassq(IndexType n, const double *x, IndexType incX, double &scale, double &sumsq); template void lassq(IndexType n, const std::complex *x, IndexType incX, float &scale, float &sumsq); template void lassq(IndexType n, const std::complex *x, IndexType incX, double &scale, double &sumsq); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASSQ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lassq.tcc000066400000000000000000000070471456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASSQ_TCC #define CXXLAPACK_INTERFACE_LASSQ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lassq(IndexType n, const float *x, IndexType incX, float &scale, float &sumsq) { CXXLAPACK_DEBUG_OUT("slassq"); LAPACK_IMPL(slassq)(&n, x, &incX, &scale, &sumsq); } template void lassq(IndexType n, const double *x, IndexType incX, double &scale, double &sumsq) { CXXLAPACK_DEBUG_OUT("dlassq"); LAPACK_IMPL(dlassq)(&n, x, &incX, &scale, &sumsq); } template void lassq(IndexType n, const std::complex *x, IndexType incX, float &scale, float &sumsq) { CXXLAPACK_DEBUG_OUT("classq"); LAPACK_IMPL(classq)(&n, reinterpret_cast(x), &incX, &scale, &sumsq); } template void lassq(IndexType n, const std::complex *x, IndexType incX, double &scale, double &sumsq) { CXXLAPACK_DEBUG_OUT("zlassq"); LAPACK_IMPL(zlassq)(&n, reinterpret_cast(x), &incX, &scale, &sumsq); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASSQ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasv2.h000066400000000000000000000050171456314707100242660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASV2_H #define CXXLAPACK_INTERFACE_LASV2_H 1 #include namespace cxxlapack { template void lasv2(float f, float g, float h, float &ssmin, float &ssmax, float &snr, float &csr, float &snl, float &csl); template void lasv2(double f, double g, double h, double &ssmin, double &ssmax, double &snr, double &csr, double &snl, double &csl); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASV2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasv2.tcc000066400000000000000000000062541456314707100246140ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASV2_TCC #define CXXLAPACK_INTERFACE_LASV2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void lasv2(float f, float g, float h, float &ssmin, float &ssmax, float &snr, float &csr, float &snl, float &csl) { CXXLAPACK_DEBUG_OUT("slasv2"); LAPACK_IMPL(slasv2)(&f, &g, &h, &ssmin, &ssmax, &snr, &csr, &snl, &csl); } template void lasv2(double f, double g, double h, double &ssmin, double &ssmax, double &snr, double &csr, double &snl, double &csl) { CXXLAPACK_DEBUG_OUT("dlasv2"); LAPACK_IMPL(dlasv2)(&f, &g, &h, &ssmin, &ssmax, &snr, &csr, &snl, &csl); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASV2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laswp.h000066400000000000000000000057171456314707100243740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASWP_H #define CXXLAPACK_INTERFACE_LASWP_H 1 #include namespace cxxlapack { template void laswp(IndexType n, float *A, IndexType ldA, IndexType k1, IndexType k2, const IndexType *iPiv, IndexType incX); template void laswp(IndexType n, double *A, IndexType ldA, IndexType k1, IndexType k2, const IndexType *iPiv, IndexType incX); template void laswp(IndexType n, std::complex *A, IndexType ldA, IndexType k1, IndexType k2, const IndexType *iPiv, IndexType incX); template void laswp(IndexType n, std::complex *A, IndexType ldA, IndexType k1, IndexType k2, const IndexType *iPiv, IndexType incX); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASWP_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/laswp.tcc000066400000000000000000000100001456314707100246730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASWP_TCC #define CXXLAPACK_INTERFACE_LASWP_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void laswp(IndexType n, float *A, IndexType ldA, IndexType k1, IndexType k2, const IndexType *iPiv, IndexType incX) { CXXLAPACK_DEBUG_OUT("slaswp"); LAPACK_IMPL(slaswp)(&n, A, &ldA, &k1, &k2, iPiv, &incX); } template void laswp(IndexType n, double *A, IndexType ldA, IndexType k1, IndexType k2, const IndexType *iPiv, IndexType incX) { CXXLAPACK_DEBUG_OUT("dlaswp"); LAPACK_IMPL(dlaswp)(&n, A, &ldA, &k1, &k2, iPiv, &incX); } template void laswp(IndexType n, std::complex *A, IndexType ldA, IndexType k1, IndexType k2, const IndexType *iPiv, IndexType incX) { CXXLAPACK_DEBUG_OUT("claswp"); LAPACK_IMPL(claswp)(&n, reinterpret_cast(A), &ldA, &k1, &k2, iPiv, &incX); } template void laswp(IndexType n, std::complex *A, IndexType ldA, IndexType k1, IndexType k2, const IndexType *iPiv, IndexType incX) { CXXLAPACK_DEBUG_OUT("zlaswp"); LAPACK_IMPL(zlaswp)(&n, reinterpret_cast(A), &ldA, &k1, &k2, iPiv, &incX); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASWP_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasy2.h000066400000000000000000000053771456314707100243020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASY2_H #define CXXLAPACK_INTERFACE_LASY2_H 1 #include namespace cxxlapack { template IndexType lasy2(bool transTL, bool transTR, IndexType sgn, IndexType n1, IndexType n2, const float *TL, IndexType ldTL, const float *TR, IndexType ldTR, const float *B, IndexType ldB, float &scale, float *X, IndexType ldX, float &xNorm); template IndexType lasy2(bool transTL, bool transTR, IndexType sgn, IndexType n1, IndexType n2, const double *TL, IndexType ldTL, const double *TR, IndexType ldTR, const double *B, IndexType ldB, double &scale, double *X, IndexType ldX, double &xNorm); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASY2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasy2.tcc000066400000000000000000000103141456314707100246070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASY2_TCC #define CXXLAPACK_INTERFACE_LASY2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasy2(bool transTL, bool transTR, IndexType sgn, IndexType n1, IndexType n2, const float *TL, IndexType ldTL, const float *TR, IndexType ldTR, const float *B, IndexType ldB, float &scale, float *X, IndexType ldX, float &xNorm) { CXXLAPACK_DEBUG_OUT("slasy2"); IndexType info; IndexType transTL_ = transTL; IndexType transTR_ = transTR; LAPACK_IMPL(slasy2)(&transTL_, &transTR_, &sgn, &n1, &n2, TL, &ldTL, TR, &ldTR, B, &ldB, &scale, X, &ldX, &xNorm, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasy2(bool transTL, bool transTR, IndexType sgn, IndexType n1, IndexType n2, const double *TL, IndexType ldTL, const double *TR, IndexType ldTR, const double *B, IndexType ldB, double &scale, double *X, IndexType ldX, double &xNorm) { CXXLAPACK_DEBUG_OUT("dlasy2"); IndexType info; IndexType transTL_ = transTL; IndexType transTR_ = transTR; LAPACK_IMPL(dlasy2)(&transTL_, &transTR_, &sgn, &n1, &n2, TL, &ldTL, TR, &ldTR, B, &ldB, &scale, X, &ldX, &xNorm, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASY2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasyf.h000066400000000000000000000064321456314707100243570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASYF_H #define CXXLAPACK_INTERFACE_LASYF_H 1 #include namespace cxxlapack { template IndexType lasyf(char uplo, IndexType n, IndexType nb, IndexType &kb, float *A, IndexType ldA, IndexType *iPiv, float *W, IndexType ldW); template IndexType lasyf(char uplo, IndexType n, IndexType nb, IndexType &kb, double *A, IndexType ldA, IndexType *iPiv, double *W, IndexType ldW); template IndexType lasyf(char uplo, IndexType n, IndexType nb, IndexType &kb, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *W, IndexType ldW); template IndexType lasyf(char uplo, IndexType n, IndexType nb, IndexType &kb, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *W, IndexType ldW); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASYF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lasyf.tcc000066400000000000000000000124131456314707100246750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LASYF_TCC #define CXXLAPACK_INTERFACE_LASYF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lasyf(char uplo, IndexType n, IndexType nb, IndexType &kb, float *A, IndexType ldA, IndexType *iPiv, float *W, IndexType ldW) { CXXLAPACK_DEBUG_OUT("slasyf"); IndexType info; LAPACK_IMPL(slasyf)(&uplo, &n, &nb, &kb, A, &ldA, iPiv, W, &ldW, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasyf(char uplo, IndexType n, IndexType nb, IndexType &kb, double *A, IndexType ldA, IndexType *iPiv, double *W, IndexType ldW) { CXXLAPACK_DEBUG_OUT("dlasyf"); IndexType info; LAPACK_IMPL(dlasyf)(&uplo, &n, &nb, &kb, A, &ldA, iPiv, W, &ldW, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasyf(char uplo, IndexType n, IndexType nb, IndexType &kb, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *W, IndexType ldW) { CXXLAPACK_DEBUG_OUT("zlasyf"); IndexType info; LAPACK_IMPL(zlasyf)(&uplo, &n, &nb, &kb, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(W), &ldW, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lasyf(char uplo, IndexType n, IndexType nb, IndexType &kb, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *W, IndexType ldW) { CXXLAPACK_DEBUG_OUT("clasyf"); IndexType info; LAPACK_IMPL(clasyf)(&uplo, &n, &nb, &kb, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(W), &ldW, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LASYF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lat2c.h000066400000000000000000000041441456314707100242440ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAT2C_H #define CXXLAPACK_INTERFACE_LAT2C_H 1 #include namespace cxxlapack { template IndexType lat2c(char uplo, IndexType n, const std::complex *A, IndexType ldA, std::complex *Sa, IndexType ldSa); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAT2C_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lat2c.tcc000066400000000000000000000052031456314707100245630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAT2C_TCC #define CXXLAPACK_INTERFACE_LAT2C_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lat2c(char uplo, IndexType n, const std::complex *A, IndexType ldA, std::complex *Sa, IndexType ldSa) { CXXLAPACK_DEBUG_OUT("zlat2c"); IndexType info; LAPACK_IMPL(zlat2c)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Sa), &ldSa, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAT2C_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lat2s.h000066400000000000000000000041001456314707100242540ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAT2S_H #define CXXLAPACK_INTERFACE_LAT2S_H 1 #include namespace cxxlapack { template IndexType lat2s(char uplo, IndexType n, const double *A, IndexType ldA, float *Sa, IndexType ldSa); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAT2S_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lat2s.tcc000066400000000000000000000050421456314707100246040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAT2S_TCC #define CXXLAPACK_INTERFACE_LAT2S_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lat2s(char uplo, IndexType n, const double *A, IndexType ldA, float *Sa, IndexType ldSa) { CXXLAPACK_DEBUG_OUT("dlat2s"); IndexType info; LAPACK_IMPL(dlat2s)(&uplo, &n, A, &ldA, Sa, &ldSa, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAT2S_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latbs.h000066400000000000000000000074111456314707100243440ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATBS_H #define CXXLAPACK_INTERFACE_LATBS_H 1 #include namespace cxxlapack { template IndexType latbs(char uplo, char trans, char diag, char normin, IndexType n, IndexType kd, const float *Ab, IndexType ldAb, float *x, float &scale, float *cnorm); template IndexType latbs(char uplo, char trans, char diag, char normin, IndexType n, IndexType kd, const double *Ab, IndexType ldAb, double *x, double &scale, double *cnorm); template IndexType latbs(char uplo, char trans, char diag, char normin, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, std::complex *x, float &scale, float *cnorm); template IndexType latbs(char uplo, char trans, char diag, char normin, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, std::complex *x, double &scale, double *cnorm); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATBS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latbs.tcc000066400000000000000000000140071456314707100246650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATBS_TCC #define CXXLAPACK_INTERFACE_LATBS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType latbs(char uplo, char trans, char diag, char normin, IndexType n, IndexType kd, const float *Ab, IndexType ldAb, float *x, float &scale, float *cnorm) { CXXLAPACK_DEBUG_OUT("slatbs"); IndexType info; LAPACK_IMPL(slatbs)(&uplo, &trans, &diag, &normin, &n, &kd, Ab, &ldAb, x, &scale, cnorm, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType latbs(char uplo, char trans, char diag, char normin, IndexType n, IndexType kd, const double *Ab, IndexType ldAb, double *x, double &scale, double *cnorm) { CXXLAPACK_DEBUG_OUT("dlatbs"); IndexType info; LAPACK_IMPL(dlatbs)(&uplo, &trans, &diag, &normin, &n, &kd, Ab, &ldAb, x, &scale, cnorm, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType latbs(char uplo, char trans, char diag, char normin, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, std::complex *x, float &scale, float *cnorm) { CXXLAPACK_DEBUG_OUT("clatbs"); IndexType info; LAPACK_IMPL(clatbs)(&uplo, &trans, &diag, &normin, &n, &kd, reinterpret_cast(Ab), &ldAb, reinterpret_cast(x), &scale, cnorm, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType latbs(char uplo, char trans, char diag, char normin, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, std::complex *x, double &scale, double *cnorm) { CXXLAPACK_DEBUG_OUT("zlatbs"); IndexType info; LAPACK_IMPL(zlatbs)(&uplo, &trans, &diag, &normin, &n, &kd, reinterpret_cast(Ab), &ldAb, reinterpret_cast(x), &scale, cnorm, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATBS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latdf.h000066400000000000000000000066141456314707100243350ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATDF_H #define CXXLAPACK_INTERFACE_LATDF_H 1 #include namespace cxxlapack { template void latdf(IndexType ijob, IndexType n, const float *Z, IndexType ldZ, float *rhs, float &rdsum, float &rdscal, const IndexType *iPiv, const IndexType *jpiv); template void latdf(IndexType ijob, IndexType n, const double *Z, IndexType ldZ, double *rhs, double &rdsum, double &rdscal, const IndexType *iPiv, const IndexType *jpiv); template void latdf(IndexType ijob, IndexType n, const std::complex *Z, IndexType ldZ, std::complex *rhs, float &rdsum, float &rdscal, const IndexType *iPiv, const IndexType *jpiv); template void latdf(IndexType ijob, IndexType n, const std::complex *Z, IndexType ldZ, std::complex *rhs, double &rdsum, double &rdscal, const IndexType *iPiv, const IndexType *jpiv); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATDF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latdf.tcc000066400000000000000000000112451456314707100246530ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATDF_TCC #define CXXLAPACK_INTERFACE_LATDF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void latdf(IndexType ijob, IndexType n, const float *Z, IndexType ldZ, float *rhs, float &rdsum, float &rdscal, const IndexType *iPiv, const IndexType *jpiv) { CXXLAPACK_DEBUG_OUT("slatdf"); LAPACK_IMPL(slatdf)(&ijob, &n, Z, &ldZ, rhs, &rdsum, &rdscal, iPiv, jpiv); } template void latdf(IndexType ijob, IndexType n, const double *Z, IndexType ldZ, double *rhs, double &rdsum, double &rdscal, const IndexType *iPiv, const IndexType *jpiv) { CXXLAPACK_DEBUG_OUT("dlatdf"); LAPACK_IMPL(dlatdf)(&ijob, &n, Z, &ldZ, rhs, &rdsum, &rdscal, iPiv, jpiv); } template void latdf(IndexType ijob, IndexType n, const std::complex *Z, IndexType ldZ, std::complex *rhs, float &rdsum, float &rdscal, const IndexType *iPiv, const IndexType *jpiv) { CXXLAPACK_DEBUG_OUT("clatdf"); LAPACK_IMPL(clatdf)(&ijob, &n, reinterpret_cast(Z), &ldZ, reinterpret_cast(rhs), &rdsum, &rdscal, iPiv, jpiv); } template void latdf(IndexType ijob, IndexType n, const std::complex *Z, IndexType ldZ, std::complex *rhs, double &rdsum, double &rdscal, const IndexType *iPiv, const IndexType *jpiv) { CXXLAPACK_DEBUG_OUT("zlatdf"); LAPACK_IMPL(zlatdf)(&ijob, &n, reinterpret_cast(Z), &ldZ, reinterpret_cast(rhs), &rdsum, &rdscal, iPiv, jpiv); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATDF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latps.h000066400000000000000000000066431456314707100243700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATPS_H #define CXXLAPACK_INTERFACE_LATPS_H 1 #include namespace cxxlapack { template IndexType latps(char uplo, char trans, char diag, char normin, IndexType n, const float *Ap, float *x, float &scale, float &cnorm); template IndexType latps(char uplo, char trans, char diag, char normin, IndexType n, const double *Ap, double *x, double &scale, double &cnorm); template IndexType latps(char uplo, char trans, char diag, char normin, IndexType n, const std::complex *Ap, std::complex *x, float &scale, float &cnorm); template IndexType latps(char uplo, char trans, char diag, char normin, IndexType n, const std::complex *Ap, std::complex *x, double &scale, double &cnorm); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATPS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latps.tcc000066400000000000000000000127261456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATPS_TCC #define CXXLAPACK_INTERFACE_LATPS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType latps(char uplo, char trans, char diag, char normin, IndexType n, const float *Ap, float *x, float &scale, float &cnorm) { CXXLAPACK_DEBUG_OUT("slatps"); IndexType info; LAPACK_IMPL(slatps)(&uplo, &trans, &diag, &normin, &n, Ap, x, &scale, &cnorm, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType latps(char uplo, char trans, char diag, char normin, IndexType n, const double *Ap, double *x, double &scale, double &cnorm) { CXXLAPACK_DEBUG_OUT("dlatps"); IndexType info; LAPACK_IMPL(dlatps)(&uplo, &trans, &diag, &normin, &n, Ap, x, &scale, &cnorm, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType latps(char uplo, char trans, char diag, char normin, IndexType n, const std::complex *Ap, std::complex *x, float &scale, float &cnorm) { CXXLAPACK_DEBUG_OUT("clatps"); IndexType info; LAPACK_IMPL(clatps)(&uplo, &trans, &diag, &normin, &n, reinterpret_cast(Ap), reinterpret_cast(x), &scale, &cnorm, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType latps(char uplo, char trans, char diag, char normin, IndexType n, const std::complex *Ap, std::complex *x, double &scale, double &cnorm) { CXXLAPACK_DEBUG_OUT("zlatps"); IndexType info; LAPACK_IMPL(zlatps)(&uplo, &trans, &diag, &normin, &n, reinterpret_cast(Ap), reinterpret_cast(x), &scale, &cnorm, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATPS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latrans.h000066400000000000000000000036201456314707100247010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATRANS_H #define CXXLAPACK_INTERFACE_LATRANS_H 1 #include namespace cxxlapack { template IndexType latrans(char trans); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATRANS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latrans.tcc000066400000000000000000000041001456314707100252150ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATRANS_TCC #define CXXLAPACK_INTERFACE_LATRANS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType latrans(char trans) { CXXLAPACK_DEBUG_OUT("latrans"); return LAPACK_IMPL(ilatrans)(&trans); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATRANS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latrd.h000066400000000000000000000065301456314707100243460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATRD_H #define CXXLAPACK_INTERFACE_LATRD_H 1 #include namespace cxxlapack { template void latrd(char uplo, IndexType n, IndexType nb, const float *A, IndexType ldA, float *e, float *tau, float *W, IndexType ldW); template void latrd(char uplo, IndexType n, IndexType nb, const double *A, IndexType ldA, double *e, double *tau, double *W, IndexType ldW); template void latrd(char uplo, IndexType n, IndexType nb, const std::complex *A, IndexType ldA, float *e, std::complex *tau, std::complex *W, IndexType ldW); template void latrd(char uplo, IndexType n, IndexType nb, const std::complex *A, IndexType ldA, double *e, std::complex *tau, std::complex *W, IndexType ldW); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATRD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latrd.tcc000066400000000000000000000111711456314707100246650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATRD_TCC #define CXXLAPACK_INTERFACE_LATRD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType latrd(char uplo, IndexType n, IndexType nb, float *A, IndexType ldA, float *e, float *tau, float *W, IndexType ldW) { CXXLAPACK_DEBUG_OUT("slatrd"); LAPACK_IMPL(slatrd)(&uplo, &n, &nb, A, &ldA, e, tau, W, &ldW); } template IndexType latrd(char uplo, IndexType n, IndexType nb, double *A, IndexType ldA, double *e, double *tau, double *W, IndexType ldW) { CXXLAPACK_DEBUG_OUT("dlatrd"); LAPACK_IMPL(dlatrd)(&uplo, &n, &nb, A, &ldA, e, tau, W, &ldW); } template void latrd(char uplo, IndexType n, IndexType nb, std::complex *A, IndexType ldA, float *e, std::complex *tau, std::complex *W, IndexType ldW) { CXXLAPACK_DEBUG_OUT("clatrd"); LAPACK_IMPL(clatrd)(&uplo, &n, &nb, reinterpret_cast(A), &ldA, e, reinterpret_cast(tau), reinterpret_cast(W), &ldW); } template void latrd(char uplo, IndexType n, IndexType nb, std::complex *A, IndexType ldA, double *e, std::complex *tau, std::complex *W, IndexType ldW) { CXXLAPACK_DEBUG_OUT("zlatrd"); LAPACK_IMPL(zlatrd)(&uplo, &n, &nb, reinterpret_cast(A), &ldA, e, reinterpret_cast(tau), reinterpret_cast(W), &ldW); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATRD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latrs.h000066400000000000000000000067121456314707100243670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATRS_H #define CXXLAPACK_INTERFACE_LATRS_H 1 #include namespace cxxlapack { template IndexType latrs(char uplo, char trans, char diag, char normin, IndexType n, const float *A, IndexType ldA, float *x, float &scale, float *cNorm); template IndexType latrs(char uplo, char trans, char diag, char normin, IndexType n, const double *A, IndexType ldA, double *x, double &scale, double *cNorm); template IndexType latrs(char upLo, char trans, char diag, char normIn, IndexType n, const std::complex *A, IndexType ldA, std::complex *x, float &scale, float *cNorm); template IndexType latrs(char upLo, char trans, char diag, char normIn, IndexType n, const std::complex *A, IndexType ldA, std::complex *x, double &scale, double *cNorm); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATRS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latrs.tcc000066400000000000000000000131271456314707100247070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATRS_TCC #define CXXLAPACK_INTERFACE_LATRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType latrs(char uplo, char trans, char diag, char normin, IndexType n, const float *A, IndexType ldA, float *x, float &scale, float *cNorm) { IndexType info; CXXLAPACK_DEBUG_OUT("slatrs"); LAPACK_IMPL(slatrs)(&uplo, &trans, &diag, &normin, &n, A, &ldA, x, &scale, cNorm, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType latrs(char uplo, char trans, char diag, char normin, IndexType n, const double *A, IndexType ldA, double *x, double &scale, double *cNorm) { IndexType info; CXXLAPACK_DEBUG_OUT("dlatrs"); LAPACK_IMPL(dlatrs)(&uplo, &trans, &diag, &normin, &n, A, &ldA, x, &scale, cNorm, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType latrs(char upLo, char trans, char diag, char normIn, IndexType n, const std::complex *A, IndexType ldA, std::complex *x, float &scale, float *cNorm) { IndexType info; CXXLAPACK_DEBUG_OUT("clatrs"); LAPACK_IMPL(clatrs)(&upLo, &trans, &diag, &normIn, &n, reinterpret_cast(A), &ldA, reinterpret_cast(x), &scale, cNorm, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType latrs(char upLo, char trans, char diag, char normIn, IndexType n, const std::complex *A, IndexType ldA, std::complex *x, double &scale, double *cNorm) { IndexType info; CXXLAPACK_DEBUG_OUT("zlatrs"); LAPACK_IMPL(zlatrs)(&upLo, &trans, &diag, &normIn, &n, reinterpret_cast(A), &ldA, reinterpret_cast(x), &scale, cNorm, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATRS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latrz.h000066400000000000000000000054371456314707100244010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATRZ_H #define CXXLAPACK_INTERFACE_LATRZ_H 1 #include namespace cxxlapack { template void latrz(IndexType m, IndexType n, IndexType l, float *A, IndexType ldA, float *tau, float *work); template void latrz(IndexType m, IndexType n, IndexType l, double *A, IndexType ldA, double *tau, double *work); template void latrz(IndexType m, IndexType n, IndexType l, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work); template void latrz(IndexType m, IndexType n, IndexType l, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATRZ_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latrz.tcc000066400000000000000000000075551456314707100247260ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATRZ_TCC #define CXXLAPACK_INTERFACE_LATRZ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void latrz(IndexType m, IndexType n, IndexType l, float *A, IndexType ldA, float *tau, float *work) { CXXLAPACK_DEBUG_OUT("slatrz"); LAPACK_IMPL(slatrz)(&m, &n, &l, A, &ldA, tau, work); } template void latrz(IndexType m, IndexType n, IndexType l, double *A, IndexType ldA, double *tau, double *work) { CXXLAPACK_DEBUG_OUT("dlatrz"); LAPACK_IMPL(dlatrz)(&m, &n, &l, A, &ldA, tau, work); } template void latrz(IndexType m, IndexType n, IndexType l, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work) { CXXLAPACK_DEBUG_OUT("clatrz"); LAPACK_IMPL(clatrz)(&m, &n, &l, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work)); } template void latrz(IndexType m, IndexType n, IndexType l, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work) { CXXLAPACK_DEBUG_OUT("zlatrz"); LAPACK_IMPL(zlatrz)(&m, &n, &l, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATRZ_TCC 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latzm.h000066400000000000000000000070261456314707100243700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATZM_H #define CXXLAPACK_INTERFACE_LATZM_H 1 #include namespace cxxlapack { template IndexType latzm(char side, IndexType m, IndexType n, const float *v, IndexType incv, float tau, float *C1, float *C2, IndexType ldC, float *work); template IndexType latzm(char side, IndexType m, IndexType n, const double *v, IndexType incv, double tau, double *C1, double *C2, IndexType ldC, double *work); template IndexType latzm(char side, IndexType m, IndexType n, const std::complex *v, IndexType incv, std::complex tau, std::complex *C1, std::complex *C2, IndexType ldC, std::complex *work); template IndexType latzm(char side, IndexType m, IndexType n, const std::complex *v, IndexType incv, std::complex tau, std::complex *C1, std::complex *C2, IndexType ldC, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATZM_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/latzm.tcc000066400000000000000000000120241456314707100247040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LATZM_TCC #define CXXLAPACK_INTERFACE_LATZM_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void latzm(char side, IndexType m, IndexType n, const float *v, IndexType incv, float tau, float *C1, float *C2, IndexType ldC, float *work) { CXXLAPACK_DEBUG_OUT("slatzm"); LAPACK_IMPL(slatzm)(&side, &m, &n, v, &incv, &tau, C1, C2, &ldC, work); } template void latzm(char side, IndexType m, IndexType n, const double *v, IndexType incv, double tau, double *C1, double *C2, IndexType ldC, double *work) { CXXLAPACK_DEBUG_OUT("dlatzm"); LAPACK_IMPL(dlatzm)(&side, &m, &n, v, &incv, &tau, C1, C2, &ldC, work); } template void latzm(char side, IndexType m, IndexType n, const std::complex *v, IndexType incv, std::complex tau, std::complex *C1, std::complex *C2, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("clatzm"); LAPACK_IMPL(clatzm)(&side, &m, &n, reinterpret_cast(v), &incv, reinterpret_cast(&tau), reinterpret_cast(C1), reinterpret_cast(C2), &ldC, reinterpret_cast(work)); } template void latzm(char side, IndexType m, IndexType n, const std::complex *v, IndexType incv, std::complex tau, std::complex *C1, std::complex *C2, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("zlatzm"); LAPACK_IMPL(zlatzm)(&side, &m, &n, reinterpret_cast(v), &incv, reinterpret_cast(&tau), reinterpret_cast(C1), reinterpret_cast(C2), &ldC, reinterpret_cast(work)); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LATZM_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lauplo.h000066400000000000000000000036131456314707100245330ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAUPLO_H #define CXXLAPACK_INTERFACE_LAUPLO_H 1 #include namespace cxxlapack { template IndexType lauplo(char uplo); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAUPLO_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lauplo.tcc000066400000000000000000000040721456314707100250550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAUPLO_TCC #define CXXLAPACK_INTERFACE_LAUPLO_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lauplo(char uplo) { CXXLAPACK_DEBUG_OUT("lauplo"); return LAPACK_IMPL(ilauplo)(&uplo); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAUPLO_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lauu2.h000066400000000000000000000047461456314707100242770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAUU2_H #define CXXLAPACK_INTERFACE_LAUU2_H 1 #include namespace cxxlapack { template IndexType lauu2(char upLo, IndexType n, float *A, IndexType ldA); template IndexType lauu2(char upLo, IndexType n, double *A, IndexType ldA); template IndexType lauu2(char upLo, IndexType n, std::complex *A, IndexType ldA); template IndexType lauu2(char upLo, IndexType n, std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAUU2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lauu2.tcc000066400000000000000000000076531456314707100246210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAUU2_TCC #define CXXLAPACK_INTERFACE_LAUU2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lauu2(char upLo, IndexType n, float *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("slauu2"); IndexType info; LAPACK_IMPL(slauu2)(&upLo, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lauu2(char upLo, IndexType n, double *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("dlauu2"); IndexType info; LAPACK_IMPL(dlauu2)(&upLo, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lauu2(char upLo, IndexType n, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("clauu2"); IndexType info; LAPACK_IMPL(clauu2)(&upLo, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lauu2(char upLo, IndexType n, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("zlauu2"); IndexType info; LAPACK_IMPL(zlauu2)(&upLo, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAUU2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lauum.h000066400000000000000000000047451456314707100243710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAUUM_H #define CXXLAPACK_INTERFACE_LAUUM_H 1 #include namespace cxxlapack { template IndexType lauum(char upLo, IndexType n, float *A, IndexType ldA); template IndexType lauum(char upLo, IndexType n, double *A, IndexType ldA); template IndexType lauum(char upLo, IndexType n, std::complex *A, IndexType ldA); template IndexType lauum(char upLo, IndexType n, std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAUUM_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lauum.tcc000066400000000000000000000076521456314707100247130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LAUUM_TCC #define CXXLAPACK_INTERFACE_LAUUM_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType lauum(char upLo, IndexType n, float *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("slauum"); IndexType info; LAPACK_IMPL(slauum)(&upLo, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lauum(char upLo, IndexType n, double *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("dlauum"); IndexType info; LAPACK_IMPL(dlauum)(&upLo, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lauum(char upLo, IndexType n, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("clauum"); IndexType info; LAPACK_IMPL(clauum)(&upLo, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType lauum(char upLo, IndexType n, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("zlauum"); IndexType info; LAPACK_IMPL(zlauum)(&upLo, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LAUUM_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lsame.h000066400000000000000000000036561456314707100243470ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LSAME_H #define CXXLAPACK_INTERFACE_LSAME_H 1 #include namespace cxxlapack { template bool lsame(char ca, char cb); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LSAME_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lsame.tcc000066400000000000000000000041571456314707100246660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LSAME_TCC #define CXXLAPACK_INTERFACE_LSAME_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template bool lsame(char ca, char cb) { CXXLAPACK_DEBUG_OUT("lsame"); return LAPACK_IMPL(lsame)(&ca, &cb); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LSAME_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lsamen.h000066400000000000000000000037001456314707100245130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LSAMEN_H #define CXXLAPACK_INTERFACE_LSAMEN_H 1 #include namespace cxxlapack { template bool lsamen(IndexType n, char ca, char cb); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LSAMEN_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/lsamen.tcc000066400000000000000000000042671456314707100250460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_LSAMEN_TCC #define CXXLAPACK_INTERFACE_LSAMEN_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template bool lsamen(IndexType n, char ca, char cb) { CXXLAPACK_DEBUG_OUT("lsamen"); return LAPACK_IMPL(lsamen)(&n, &ca, &cb); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_LSAME_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/opgtr.h000066400000000000000000000046311456314707100243730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_OPGTR_H #define CXXLAPACK_INTERFACE_OPGTR_H 1 #include namespace cxxlapack { template IndexType opgtr(char uplo, IndexType n, const float *Ap, const float *tau, float *Q, IndexType ldQ, float *work); template IndexType opgtr(char uplo, IndexType n, const double *Ap, const double *tau, double *Q, IndexType ldQ, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_OPGTR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/opgtr.tcc000066400000000000000000000064501456314707100247160ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_OPGTR_TCC #define CXXLAPACK_INTERFACE_OPGTR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType opgtr(char uplo, IndexType n, const float *Ap, const float *tau, float *Q, IndexType ldQ, float *work) { CXXLAPACK_DEBUG_OUT("sopgtr"); IndexType info; LAPACK_IMPL(sopgtr)(&uplo, &n, Ap, tau, Q, &ldQ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType opgtr(char uplo, IndexType n, const double *Ap, const double *tau, double *Q, IndexType ldQ, double *work) { CXXLAPACK_DEBUG_OUT("dopgtr"); IndexType info; LAPACK_IMPL(dopgtr)(&uplo, &n, Ap, tau, Q, &ldQ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_OPGTR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/opmtr.h000066400000000000000000000051711456314707100244010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_OPMTR_H #define CXXLAPACK_INTERFACE_OPMTR_H 1 #include namespace cxxlapack { template IndexType opmtr(char side, char uplo, char trans, IndexType m, IndexType n, const float *Ap, const float *tau, float *C, IndexType ldC, float *work); template IndexType opmtr(char side, char uplo, char trans, IndexType m, IndexType n, const double *Ap, const double *tau, double *C, IndexType ldC, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_OPMTR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/opmtr.tcc000066400000000000000000000072461456314707100247300ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_OPMTR_TCC #define CXXLAPACK_INTERFACE_OPMTR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType opmtr(char side, char uplo, char trans, IndexType m, IndexType n, const float *Ap, const float *tau, float *C, IndexType ldC, float *work) { CXXLAPACK_DEBUG_OUT("sopmtr"); IndexType info; LAPACK_IMPL(sopmtr)(&side, &uplo, &trans, &m, &n, Ap, tau, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType opmtr(char side, char uplo, char trans, IndexType m, IndexType n, const double *Ap, const double *tau, double *C, IndexType ldC, double *work) { CXXLAPACK_DEBUG_OUT("dopmtr"); IndexType info; LAPACK_IMPL(dopmtr)(&side, &uplo, &trans, &m, &n, Ap, tau, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_OPMTR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orbdb.h000066400000000000000000000067371456314707100243410ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORBDB_H #define CXXLAPACK_INTERFACE_ORBDB_H 1 #include namespace cxxlapack { template IndexType orbdb(char trans, char signs, IndexType m, IndexType p, IndexType q, float *X11, IndexType ldX11, float *X12, IndexType ldX12, float *X21, IndexType ldX21, float *X22, IndexType ldX22, float *theta, float *phi, float *taup1, float *taup2, float *tauq1, float *tauq2, float *work, IndexType lWork); template IndexType orbdb(char trans, char signs, IndexType m, IndexType p, IndexType q, double *X11, IndexType ldX11, double *X12, IndexType ldX12, double *X21, IndexType ldX21, double *X22, IndexType ldX22, double *theta, double *phi, double *taup1, double *taup2, double *tauq1, double *tauq2, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORBDB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orbdb.tcc000066400000000000000000000121441456314707100246500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORBDB_TCC #define CXXLAPACK_INTERFACE_ORBDB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType orbdb(char trans, char signs, IndexType m, IndexType p, IndexType q, float *X11, IndexType ldX11, float *X12, IndexType ldX12, float *X21, IndexType ldX21, float *X22, IndexType ldX22, float *theta, float *phi, float *taup1, float *taup2, float *tauq1, float *tauq2, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sorbdb"); IndexType info; LAPACK_IMPL(sorbdb)(&trans, &signs, &m, &p, &q, X11, &ldX11, X12, &ldX12, X21, &ldX21, X22, &ldX22, theta, phi, taup1, taup2, tauq1, tauq2, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType orbdb(char trans, char signs, IndexType m, IndexType p, IndexType q, double *X11, IndexType ldX11, double *X12, IndexType ldX12, double *X21, IndexType ldX21, double *X22, IndexType ldX22, double *theta, double *phi, double *taup1, double *taup2, double *tauq1, double *tauq2, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dorbdb"); IndexType info; LAPACK_IMPL(dorbdb)(&trans, &signs, &m, &p, &q, X11, &ldX11, X12, &ldX12, X21, &ldX21, X22, &ldX22, theta, phi, taup1, taup2, tauq1, tauq2, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORBDB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orcsd.h000066400000000000000000000100771456314707100243530ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORCSD_H #define CXXLAPACK_INTERFACE_ORCSD_H 1 #include namespace cxxlapack { template IndexType orcsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, char signs, IndexType m, IndexType p, IndexType q, const float *X11, IndexType ldX11, const float *X12, IndexType ldX12, const float *X21, IndexType ldX21, const float *X22, IndexType ldX22, float *theta, float *U1, IndexType ldU1, float *U2, IndexType ldU2, float *V1t, IndexType ldV1t, float *V2t, IndexType ldV2t, float *work, IndexType lWork, IndexType *iWork); template IndexType orcsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, char signs, IndexType m, IndexType p, IndexType q, const double *X11, IndexType ldX11, const double *X12, IndexType ldX12, const double *X21, IndexType ldX21, const double *X22, IndexType ldX22, double *theta, double *U1, IndexType ldU1, double *U2, IndexType ldU2, double *V1t, IndexType ldV1t, double *V2t, IndexType ldV2t, double *work, IndexType lWork, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORCSD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orcsd.tcc000066400000000000000000000141631456314707100246750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORCSD_TCC #define CXXLAPACK_INTERFACE_ORCSD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType orcsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, char signs, IndexType m, IndexType p, IndexType q, const float *X11, IndexType ldX11, const float *X12, IndexType ldX12, const float *X21, IndexType ldX21, const float *X22, IndexType ldX22, float *theta, float *U1, IndexType ldU1, float *U2, IndexType ldU2, float *V1t, IndexType ldV1t, float *V2t, IndexType ldV2t, float *work, IndexType lWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("sorcsd"); IndexType info; LAPACK_IMPL(sorcsd)(&jobu1, &jobu2, &jobv1t, &jobv2t, &trans, &signs, &m, &p, &q, X11, &ldX11, X12, &ldX12, X21, &ldX21, X22, &ldX22, theta, U1, &ldU1, U2, &ldU2, V1t, &ldV1t, V2t, &ldV2t, work &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType orcsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, char signs, IndexType m, IndexType p, IndexType q, const double *X11, IndexType ldX11, const double *X12, IndexType ldX12, const double *X21, IndexType ldX21, const double *X22, IndexType ldX22, double *theta, double *U1, IndexType ldU1, double *U2, IndexType ldU2, double *V1t, IndexType ldV1t, double *V2t, IndexType ldV2t, double *work, IndexType lWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dorcsd"); IndexType info; LAPACK_IMPL(dorcsd)(&jobu1, &jobu2, &jobv1t, &jobv2t, &trans, &signs, &m, &p, &q, X11, &ldX11, X12, &ldX12, X21, &ldX21, X22, &ldX22, theta, U1, &ldU1, U2, &ldU2, V1t, &ldV1t, V2t, &ldV2t, work &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORCSD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/org2l.h000066400000000000000000000046171456314707100242710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORG2L_H #define CXXLAPACK_INTERFACE_ORG2L_H 1 #include namespace cxxlapack { template IndexType org2l(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work); template IndexType org2l(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORG2L_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/org2l.tcc000066400000000000000000000064301456314707100246060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORG2L_TCC #define CXXLAPACK_INTERFACE_ORG2L_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType org2l(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work) { CXXLAPACK_DEBUG_OUT("sorg2l"); IndexType info; LAPACK_IMPL(sorg2l)(&m, &n, &k, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType org2l(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work) { CXXLAPACK_DEBUG_OUT("dorg2l"); IndexType info; LAPACK_IMPL(dorg2l)(&m, &n, &k, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORG2L_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/org2r.h000066400000000000000000000044171456314707100242750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORG2R_H #define CXXLAPACK_INTERFACE_ORG2R_H 1 #include namespace cxxlapack { template IndexType org2r(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work); template IndexType org2r(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORG2R_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/org2r.tcc000066400000000000000000000062301456314707100246120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORG2R_TCC #define CXXLAPACK_INTERFACE_ORG2R_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType org2r(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work) { CXXLAPACK_DEBUG_OUT("sorg2r"); IndexType info; LAPACK_IMPL(sorg2r)(&m, &n, &k, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType org2r(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work) { CXXLAPACK_DEBUG_OUT("dorg2r"); IndexType info; LAPACK_IMPL(dorg2r)(&m, &n, &k, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORG2R_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orgbr.h000066400000000000000000000050521456314707100243510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGBR_H #define CXXLAPACK_INTERFACE_ORGBR_H 1 #include namespace cxxlapack { template IndexType orgbr(char vect, IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work, IndexType lWork); template IndexType orgbr(char vect, IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGBR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orgbr.tcc000066400000000000000000000070401456314707100246720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGBG_TCC #define CXXLAPACK_INTERFACE_ORGBG_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType orgbr(char vect, IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sorgbr"); IndexType info; LAPACK_IMPL(sorgbr)(&vect, &m, &n, &k, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType orgbr(char vect, IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dorgbr"); IndexType info; LAPACK_IMPL(dorgbr)(&vect, &m, &n, &k, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGBG_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orghr.h000066400000000000000000000045251456314707100243630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGHR_H #define CXXLAPACK_INTERFACE_ORGHR_H 1 #include namespace cxxlapack { template IndexType orghr(IndexType n, IndexType iLo, IndexType iHi, float *A, IndexType ldA, const float *tau, float *work, IndexType lWork); template IndexType orghr(IndexType n, IndexType iLo, IndexType iHi, double *A, IndexType ldA, const double *tau, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGHR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orghr.tcc000066400000000000000000000064361456314707100247100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGHR_TCC #define CXXLAPACK_INTERFACE_ORGHR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType orghr(IndexType n, IndexType iLo, IndexType iHi, float *A, IndexType ldA, const float *tau, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sorghr"); IndexType info; LAPACK_IMPL(sorghr)(&n, &iLo, &iHi, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType orghr(IndexType n, IndexType iLo, IndexType iHi, double *A, IndexType ldA, const double *tau, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dorghr"); IndexType info; LAPACK_IMPL(dorghr)(&n, &iLo, &iHi, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGHR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orgl2.h000066400000000000000000000044171456314707100242670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGL2_H #define CXXLAPACK_INTERFACE_ORGL2_H 1 #include namespace cxxlapack { template IndexType orgl2(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work); template IndexType orgl2(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGL2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orgl2.tcc000066400000000000000000000062301456314707100246040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGL2_TCC #define CXXLAPACK_INTERFACE_ORGL2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType orgl2(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work) { CXXLAPACK_DEBUG_OUT("sorgl2"); IndexType info; LAPACK_IMPL(sorgl2)(&m, &n, &k, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType orgl2(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work) { CXXLAPACK_DEBUG_OUT("dorgl2"); IndexType info; LAPACK_IMPL(dorgl2)(&m, &n, &k, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGL2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orglq.h000066400000000000000000000045151456314707100243650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGLQ_H #define CXXLAPACK_INTERFACE_ORGLQ_H 1 #include namespace cxxlapack { template IndexType orglq(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work, IndexType lWork); template IndexType orglq(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGLQ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orglq.tcc000066400000000000000000000064161456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGLQ_TCC #define CXXLAPACK_INTERFACE_ORGLQ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType orglq(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sorglq"); IndexType info; LAPACK_IMPL(sorglq)(&m, &n, &k, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType orglq(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dorglq"); IndexType info; LAPACK_IMPL(dorglq)(&m, &n, &k, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGLQ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orgql.h000066400000000000000000000045151456314707100243650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGQL_H #define CXXLAPACK_INTERFACE_ORGQL_H 1 #include namespace cxxlapack { template IndexType orgql(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work, IndexType lWork); template IndexType orgql(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGQL_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orgql.tcc000066400000000000000000000064161456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGQL_TCC #define CXXLAPACK_INTERFACE_ORGQL_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType orgql(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sorgql"); IndexType info; LAPACK_IMPL(sorgql)(&m, &n, &k, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType orgql(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dorgql"); IndexType info; LAPACK_IMPL(dorgql)(&m, &n, &k, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGLQ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orgqr.h000066400000000000000000000045151456314707100243730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGQR_H #define CXXLAPACK_INTERFACE_ORGQR_H 1 #include namespace cxxlapack { template IndexType orgqr(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work, IndexType lWork); template IndexType orgqr(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGQR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orgqr.tcc000066400000000000000000000064141456314707100247150ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGQR_TCC #define CXXLAPACK_INTERFACE_ORGQR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType orgqr(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sorgqr"); LAPACK_IMPL(sorgqr)(&m, &n, &k, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType orgqr(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dorgqr"); LAPACK_IMPL(dorgqr)(&m, &n, &k, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGQR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orgr2.h000066400000000000000000000046171456314707100242770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGR2_H #define CXXLAPACK_INTERFACE_ORGR2_H 1 #include namespace cxxlapack { template IndexType orgr2(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work); template IndexType orgr2(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGR2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orgr2.tcc000066400000000000000000000064301456314707100246140ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGR2_TCC #define CXXLAPACK_INTERFACE_ORGR2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType orgr2(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work) { CXXLAPACK_DEBUG_OUT("sorgr2"); IndexType info; LAPACK_IMPL(sorgr2)(&m, &n, &k, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType orgr2(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work) { CXXLAPACK_DEBUG_OUT("dorgr2"); IndexType info; LAPACK_IMPL(dorgr2)(&m, &n, &k, A, &ldA, tau, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGR2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orgrq.h000066400000000000000000000047351456314707100243770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGRQ_H #define CXXLAPACK_INTERFACE_ORGRQ_H 1 #include namespace cxxlapack { template IndexType orgrq(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work, IndexType lWork); template IndexType orgrq(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGRQ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orgrq.tcc000066400000000000000000000066361456314707100247230ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGRQ_TCC #define CXXLAPACK_INTERFACE_ORGRQ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType orgrq(IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sorgrq"); IndexType info; LAPACK_IMPL(sorgrq)(&m, &n, &k, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType orgrq(IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dorgrq"); IndexType info; LAPACK_IMPL(dorgrq)(&m, &n, &k, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGRQ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orgtr.h000066400000000000000000000046351456314707100244010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGTR_H #define CXXLAPACK_INTERFACE_ORGTR_H 1 #include namespace cxxlapack { template IndexType orgtr(char uplo, IndexType n, float *A, IndexType ldA, const float *tau, float *work, IndexType lWork); template IndexType orgtr(char uplo, IndexType n, double *A, IndexType ldA, const double *tau, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGTR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orgtr.tcc000066400000000000000000000064641456314707100247250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORGTR_TCC #define CXXLAPACK_INTERFACE_ORGTR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType orgtr(char uplo, IndexType n, float *A, IndexType ldA, const float *tau, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sorgtr"); IndexType info; LAPACK_IMPL(sorgtr)(&uplo, &n, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType orgtr(char uplo, IndexType n, double *A, IndexType ldA, const double *tau, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dorgtr"); IndexType info; LAPACK_IMPL(dorgtr)(&uplo, &n, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORGTR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orm2l.h000066400000000000000000000051571456314707100242770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORM2L_H #define CXXLAPACK_INTERFACE_ORM2L_H 1 #include namespace cxxlapack { template IndexType orm2l(char side, char trans, IndexType m, IndexType n, IndexType k, const float *A, IndexType ldA, float *C, IndexType ldC, float *work); template IndexType orm2l(char side, char trans, IndexType m, IndexType n, IndexType k, const double *A, IndexType ldA, double *C, IndexType ldC, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORM2L_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orm2l.tcc000066400000000000000000000072261456314707100246200ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORM2L_TCC #define CXXLAPACK_INTERFACE_ORM2L_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType orm2l(char side, char trans, IndexType m, IndexType n, IndexType k, const float *A, IndexType ldA, float *C, IndexType ldC, float *work) { CXXLAPACK_DEBUG_OUT("sorm2l"); IndexType info; LAPACK_IMPL(sorm2l)(&side, &trans, &m, &n, &k, A, &ldA, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType orm2l(char side, char trans, IndexType m, IndexType n, IndexType k, const double *A, IndexType ldA, double *C, IndexType ldC, double *work) { CXXLAPACK_DEBUG_OUT("dorm2l"); IndexType info; LAPACK_IMPL(dorm2l)(&side, &trans, &m, &n, &k, A, &ldA, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORM2L_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orm2r.h000066400000000000000000000047731456314707100243100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORM2R_H #define CXXLAPACK_INTERFACE_ORM2R_H 1 #include namespace cxxlapack { template IndexType orm2r(char side, char trans, IndexType m, IndexType n, IndexType k, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work); template IndexType orm2r(char side, char trans, IndexType m, IndexType n, IndexType k, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORM2R_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orm2r.tcc000066400000000000000000000071241456314707100246230ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORM2R_TCC #define CXXLAPACK_INTERFACE_ORM2R_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType orm2r(char side, char trans, IndexType m, IndexType n, IndexType k, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work) { CXXLAPACK_DEBUG_OUT("sorm2r"); IndexType info; LAPACK_IMPL(sorm2r)(&side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType orm2r(char side, char trans, IndexType m, IndexType n, IndexType k, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work) { CXXLAPACK_DEBUG_OUT("dorm2r"); IndexType info; LAPACK_IMPL(dorm2r)(&side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORM2R_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormbr.h000066400000000000000000000055251456314707100243640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMBR_H #define CXXLAPACK_INTERFACE_ORMBR_H 1 #include namespace cxxlapack { template IndexType ormbr(char vect, char side, char trans, IndexType m, IndexType n, IndexType k, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work, IndexType lWork); template IndexType ormbr(char vect, char side, char trans, IndexType m, IndexType n, IndexType k, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMBR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormbr.tcc000066400000000000000000000100341456314707100246750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMBR_TCC #define CXXLAPACK_INTERFACE_ORMBR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ormbr(char vect, char side, char trans, IndexType m, IndexType n, IndexType k, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sormbr"); IndexType info; LAPACK_IMPL(sormbr)(&vect, &side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ormbr(char vect, char side, char trans, IndexType m, IndexType n, IndexType k, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dormbr"); IndexType info; LAPACK_IMPL(dormbr)(&vect, &side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMBR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormhr.h000066400000000000000000000051671456314707100243740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMHR_H #define CXXLAPACK_INTERFACE_ORMHR_H 1 #include namespace cxxlapack { template IndexType ormhr(char side, char trans, IndexType m, IndexType n, IndexType iLo, IndexType iHi, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work, IndexType lWork); template IndexType ormhr(char side, char trans, IndexType m, IndexType n, IndexType iLo, IndexType iHi, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMHR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormhr.tcc000066400000000000000000000075001456314707100247070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMHR_TCC #define CXXLAPACK_INTERFACE_ORMHR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ormhr(char side, char trans, IndexType m, IndexType n, IndexType iLo, IndexType iHi, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sormhr"); IndexType info; LAPACK_IMPL(sormhr)(&side, &trans, &m, &n, &iLo, &iHi, A, &ldA, tau, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ormhr(char side, char trans, IndexType m, IndexType n, IndexType iLo, IndexType iHi, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dormhr"); IndexType info; LAPACK_IMPL(dormhr)(&side, &trans, &m, &n, &iLo, &iHi, A, &ldA, tau, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMHR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orml2.h000066400000000000000000000047731456314707100243020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORML2_H #define CXXLAPACK_INTERFACE_ORML2_H 1 #include namespace cxxlapack { template IndexType orml2(char side, char trans, IndexType m, IndexType n, IndexType k, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work); template IndexType orml2(char side, char trans, IndexType m, IndexType n, IndexType k, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORML2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/orml2.tcc000066400000000000000000000071241456314707100246150ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORML2_TCC #define CXXLAPACK_INTERFACE_ORML2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType orml2(char side, char trans, IndexType m, IndexType n, IndexType k, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work) { CXXLAPACK_DEBUG_OUT("sorml2"); IndexType info; LAPACK_IMPL(sorml2)(&side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType orml2(char side, char trans, IndexType m, IndexType n, IndexType k, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work) { CXXLAPACK_DEBUG_OUT("dorml2"); IndexType info; LAPACK_IMPL(dorml2)(&side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORML2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormlq.h000066400000000000000000000050711456314707100243710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMLQ_H #define CXXLAPACK_INTERFACE_ORMLQ_H 1 #include namespace cxxlapack { template IndexType ormlq(char side, char trans, IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work, IndexType lWork); template IndexType ormlq(char side, char trans, IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMLQ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormlq.tcc000066400000000000000000000073101456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMLQ_TCC #define CXXLAPACK_INTERFACE_ORMLQ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ormlq(char side, char trans, IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sormlq"); LAPACK_IMPL(sormlq)(&side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ormlq(char side, char trans, IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dormlq"); LAPACK_IMPL(dormlq)(&side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMLQ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormql.h000066400000000000000000000054111456314707100243670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMQL_H #define CXXLAPACK_INTERFACE_ORMQL_H 1 #include namespace cxxlapack { template IndexType ormql(char side, char trans, IndexType m, IndexType n, IndexType k, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work, IndexType lWork); template IndexType ormql(char side, char trans, IndexType m, IndexType n, IndexType k, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMQL_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormql.tcc000066400000000000000000000076321456314707100247200ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMQL_TCC #define CXXLAPACK_INTERFACE_ORMQL_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ormql(char side, char trans, IndexType m, IndexType n, IndexType k, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sormql"); IndexType info; LAPACK_IMPL(sormql)(&side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ormql(char side, char trans, IndexType m, IndexType n, IndexType k, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dormql"); IndexType info; LAPACK_IMPL(dormql)(&side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMQL_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormqr.h000066400000000000000000000050711456314707100243770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMQR_H #define CXXLAPACK_INTERFACE_ORMQR_H 1 #include namespace cxxlapack { template IndexType ormqr(char side, char trans, IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work, IndexType lWork); template IndexType ormqr(char side, char trans, IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMQR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormqr.tcc000066400000000000000000000073101456314707100247170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMQR_TCC #define CXXLAPACK_INTERFACE_ORMQR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ormqr(char side, char trans, IndexType m, IndexType n, IndexType k, float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sormqr"); LAPACK_IMPL(sormqr)(&side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ormqr(char side, char trans, IndexType m, IndexType n, IndexType k, double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dormqr"); LAPACK_IMPL(dormqr)(&side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMQR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormr2.h000066400000000000000000000047731456314707100243100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMR2_H #define CXXLAPACK_INTERFACE_ORMR2_H 1 #include namespace cxxlapack { template IndexType ormqr(char side, char trans, IndexType m, IndexType n, IndexType k, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work); template IndexType ormqr(char side, char trans, IndexType m, IndexType n, IndexType k, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMR2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormr2.tcc000066400000000000000000000071241456314707100246230ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMR2_TCC #define CXXLAPACK_INTERFACE_ORMR2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ormr2(char side, char trans, IndexType m, IndexType n, IndexType k, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work) { CXXLAPACK_DEBUG_OUT("sormr2"); IndexType info; LAPACK_IMPL(sormr2)(&side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ormr2(char side, char trans, IndexType m, IndexType n, IndexType k, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work) { CXXLAPACK_DEBUG_OUT("dormr2"); IndexType info; LAPACK_IMPL(dormr2)(&side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMR2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormr3.h000066400000000000000000000050471456314707100243040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMR3_H #define CXXLAPACK_INTERFACE_ORMR3_H 1 #include namespace cxxlapack { template void ormr3(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work); template void ormr3(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMR3_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormr3.tcc000066400000000000000000000072141456314707100246240ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMR3_TCC #define CXXLAPACK_INTERFACE_ORMR3_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void ormr3(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work) { IndexType info; CXXLAPACK_DEBUG_OUT("sormr3"); LAPACK_IMPL(sormr3)(&side, &trans, &m, &n, &k, &l, A, &ldA, tau, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } template void ormr3(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work) { IndexType info; CXXLAPACK_DEBUG_OUT("dormr3"); LAPACK_IMPL(dormr3)(&side, &trans, &m, &n, &k, &l, A, &ldA, tau, C, &ldC, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMR3_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormrq.h000066400000000000000000000050711456314707100243770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMRQ_H #define CXXLAPACK_INTERFACE_ORMRQ_H 1 #include namespace cxxlapack { template IndexType ormrq(char side, char trans, IndexType m, IndexType n, IndexType k, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work, IndexType lWork); template IndexType ormrq(char side, char trans, IndexType m, IndexType n, IndexType k, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMRQ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormrq.tcc000066400000000000000000000073121456314707100247210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMRQ_TCC #define CXXLAPACK_INTERFACE_ORMRQ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ormrq(char side, char trans, IndexType m, IndexType n, IndexType k, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sormrq"); IndexType info; LAPACK_IMPL(sormrq)(&side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ormrq(char side, char trans, IndexType m, IndexType n, IndexType k, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dormrq"); IndexType info; LAPACK_IMPL(dormrq)(&side, &trans, &m, &n, &k, A, &ldA, tau, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMRQ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormrz.h000066400000000000000000000051451456314707100244120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMRZ_H #define CXXLAPACK_INTERFACE_ORMRZ_H 1 #include namespace cxxlapack { template void ormrz(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work, IndexType lWork); template void ormrz(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMRZ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormrz.tcc000066400000000000000000000074021456314707100247320ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMRZ_TCC #define CXXLAPACK_INTERFACE_ORMRZ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void ormrz(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const float *A, IndexType ldA, const float *tau, float *C, IndexType ldC, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("sormrz"); LAPACK_IMPL(sormrz)(&side, &trans, &m, &n, &k, &l, A, &ldA, tau, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } template void ormrz(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const double *A, IndexType ldA, const double *tau, double *C, IndexType ldC, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dormrz"); LAPACK_IMPL(dormrz)(&side, &trans, &m, &n, &k, &l, A, &ldA, tau, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMRZ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormtr.h000066400000000000000000000053111456314707100243770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMTR_TCC #define CXXLAPACK_INTERFACE_ORMTR_TCC 1 #include namespace cxxlapack { template IndexType ormtr(char side, char uplo, char trans, IndexType m, IndexType n, const float *A, IndexType ldA, float *C, IndexType ldC, float *work, IndexType lWork); template IndexType ormtr(char side, char uplo, char trans, IndexType m, IndexType n, const double *A, IndexType ldA, double *C, IndexType ldC, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMTR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ormtr.tcc000066400000000000000000000074501456314707100247270ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ORMTR_TCC #define CXXLAPACK_INTERFACE_ORMTR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ormtr(char side, char uplo, char trans, IndexType m, IndexType n, const float *A, IndexType ldA, float *C, IndexType ldC, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sormtr"); IndexType info; LAPACK_IMPL(sormtr)(&side, &uplo, &trans, &m, &n, A, &ldA, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ormtr(char side, char uplo, char trans, IndexType m, IndexType n, const double *A, IndexType ldA, double *C, IndexType ldC, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dormtr"); IndexType info; LAPACK_IMPL(dormtr)(&side, &uplo, &trans, &m, &n, A, &ldA, C, &ldC, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ORMTR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbcon.h000066400000000000000000000066611456314707100243460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBCON_H #define CXXLAPACK_INTERFACE_PBCON_H 1 #include namespace cxxlapack { template IndexType pbcon(char uplo, IndexType n, IndexType nd, const float *Ab, IndexType ldAb, float anorm, float &rCond, float *work, IndexType *iWork); template IndexType pbcon(char uplo, IndexType n, IndexType nd, const double *Ab, IndexType ldAb, double anorm, double &rCond, double *work, IndexType *iWork); template IndexType pbcon(char uplo, IndexType n, IndexType nd, const std::complex *Ab, IndexType ldAb, float anorm, float &rCond, std::complex *work, float *rWork); template IndexType pbcon(char uplo, IndexType n, IndexType nd, const std::complex *Ab, IndexType ldAb, double anorm, double &rCond, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBCON_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbcon.tcc000066400000000000000000000127341456314707100246660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBCON_TCC #define CXXLAPACK_INTERFACE_PBCON_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pbcon(char uplo, IndexType n, IndexType nd, const float *Ab, IndexType ldAb, float anorm, float &rCond, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("spbcon"); IndexType info; LAPACK_IMPL(spbcon)(&uplo, &n, &nd, Ab, &ldAb, &anorm, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbcon(char uplo, IndexType n, IndexType nd, const double *Ab, IndexType ldAb, double anorm, double &rCond, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dpbocn"); IndexType info; LAPACK_IMPL(dpbcon)(&uplo, &n, &nd, Ab, &ldAb, &anorm, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbcon(char uplo, IndexType n, IndexType nd, const std::complex *Ab, IndexType ldAb, float anorm, float &rCond, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cpbcon"); IndexType info; LAPACK_IMPL(cpbcon)(&uplo, &n, &nd, reinterpret_cast(Ab), &ldAb, &anorm, &rCond, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbcon(char uplo, IndexType n, IndexType nd, const std::complex *Ab, IndexType ldAb, double anorm, double &rCond, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zpbcon"); IndexType info; LAPACK_IMPL(zpbcon)(&uplo, &n, &nd, reinterpret_cast(Ab), &ldAb, &anorm, &rCond, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBCON_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbequ.h000066400000000000000000000063711456314707100243570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBEQU_H #define CXXLAPACK_INTERFACE_PBEQU_H 1 #include namespace cxxlapack { template IndexType pbequ(char uplo, IndexType n, IndexType kd, const float *Ab, IndexType ldAb, float *s, float &scond, float &amax); template IndexType pbequ(char uplo, IndexType n, IndexType kd, const double *Ab, IndexType ldAb, double *s, double &scond, double &amax); template IndexType pbequ(char uplo, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, float *s, float &scond, float &amax); template IndexType pbequ(char uplo, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, double *s, double &scond, double &amax); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBEQU_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbequ.tcc000066400000000000000000000121571456314707100247000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBEQU_TCC #define CXXLAPACK_INTERFACE_PBEQU_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pbequ(char uplo, IndexType n, IndexType kd, const float *Ab, IndexType ldAb, float *s, float &scond, float &amax) { CXXLAPACK_DEBUG_OUT("spbequ"); IndexType info; LAPACK_IMPL(spbequ)(&uplo, &n, &kd, Ab, &ldAb, s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbequ(char uplo, IndexType n, IndexType kd, const double *Ab, IndexType ldAb, double *s, double &scond, double &amax) { CXXLAPACK_DEBUG_OUT("dpbequ"); IndexType info; LAPACK_IMPL(dpbequ)(&uplo, &n, &kd, Ab, &ldAb, s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbequ(char uplo, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, float *s, float &scond, float &amax) { CXXLAPACK_DEBUG_OUT("cpbequ"); IndexType info; LAPACK_IMPL(cpbequ)(&uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbequ(char uplo, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, double *s, double &scond, double &amax) { CXXLAPACK_DEBUG_OUT("zpbequ"); IndexType info; LAPACK_IMPL(zpbequ)(&uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBEQU_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbrfs.h000066400000000000000000000110161456314707100243470ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBRFS_H #define CXXLAPACK_INTERFACE_PBRFS_H 1 #include namespace cxxlapack { template IndexType pbrfs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const float *Ab, IndexType ldAb, const float *Afb, IndexType ldAfb, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType pbrfs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const double *Ab, IndexType ldAb, const double *Afb, IndexType ldAfb, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType pbrfs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType pbrfs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBRFS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbrfs.tcc000066400000000000000000000166571456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBRFS_TCC #define CXXLAPACK_INTERFACE_PBRFS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pbrfs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const float *Ab, IndexType ldAb, const float *Afb, IndexType ldAfb, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("spbrfs"); IndexType info; LAPACK_IMPL(spbrfs)(&uplo, &n, &kd, &nRhs, Ab, &ldAb, Afb, &ldAfb, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbrfs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const double *Ab, IndexType ldAb, const double *Afb, IndexType ldAfb, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("spbrfs"); IndexType info; LAPACK_IMPL(dpbrfs)(&uplo, &n, &kd, &nRhs, Ab, &ldAb, Afb, &ldAfb, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbrfs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cpbrfs"); IndexType info; LAPACK_IMPL(cpbrfs)(&uplo, &n, &kd, &nRhs, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Afb), &ldAfb, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbrfs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const std::complex *Ab, IndexType ldAb, const std::complex *Afb, IndexType ldAfb, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zpbrfs"); IndexType info; LAPACK_IMPL(zpbrfs)(&uplo, &n, &kd, &nRhs, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Afb), &ldAfb, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBRFS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbstf.h000066400000000000000000000053151456314707100243560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBSTF_H #define CXXLAPACK_INTERFACE_PBSTF_H 1 #include namespace cxxlapack { template IndexType pbstf(char uplo, IndexType n, IndexType kd, float *Ab, IndexType ldAb); template IndexType pbstf(char uplo, IndexType n, IndexType kd, double *Ab, IndexType ldAb); template IndexType pbstf(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb); template IndexType pbstf(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBSTF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbstf.tcc000066400000000000000000000104001456314707100246670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBSTF_TCC #define CXXLAPACK_INTERFACE_PBSTF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pbstf(char uplo, IndexType n, IndexType kd, float *Ab, IndexType ldAb) { CXXLAPACK_DEBUG_OUT("spbstf"); IndexType info; LAPACK_IMPL(spbstf)(&uplo, &n, &kd, Ab, &ldAb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbstf(char uplo, IndexType n, IndexType kd, double *Ab, IndexType ldAb) { CXXLAPACK_DEBUG_OUT("dpbstf"); IndexType info; LAPACK_IMPL(dpbstf)(&uplo, &n, &kd, Ab, &ldAb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbstf(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb) { CXXLAPACK_DEBUG_OUT("cpbstf"); IndexType info; LAPACK_IMPL(cpbstf)(&uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbstf(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb) { CXXLAPACK_DEBUG_OUT("zpbstf"); IndexType info; LAPACK_IMPL(zpbstf)(&uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBSTF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbsv.h000066400000000000000000000062061456314707100242120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBSV_H #define CXXLAPACK_INTERFACE_PBSV_H 1 #include namespace cxxlapack { template IndexType pbsv (char uplo, IndexType n, IndexType kd, IndexType nRhs, float *Ab, IndexType ldAb, float *B, IndexType ldB); template IndexType pbsv (char uplo, IndexType n, IndexType kd, IndexType nRhs, double *Ab, IndexType ldAb, double *B, IndexType ldB); template IndexType pbsv (char uplo, IndexType n, IndexType kd, IndexType nRhs, std::complex *Ab, IndexType ldAb, std::complex *B, IndexType ldB); template IndexType pbsv (char uplo, IndexType n, IndexType kd, IndexType nRhs, std::complex *Ab, IndexType ldAb, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBSV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbsv.tcc000066400000000000000000000120341456314707100245300ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBSV_TCC #define CXXLAPACK_INTERFACE_PBSV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pbsv (char uplo, IndexType n, IndexType kd, IndexType nRhs, float *Ab, IndexType ldAb, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("spbsv"); IndexType info; LAPACK_IMPL(spbsv) (&uplo, &n, &kd, &nRhs, Ab, &ldAb, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbsv (char uplo, IndexType n, IndexType kd, IndexType nRhs, double *Ab, IndexType ldAb, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dpbsv"); IndexType info; LAPACK_IMPL(dpbsv) (&uplo, &n, &kd, &nRhs, Ab, &ldAb, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbsv (char uplo, IndexType n, IndexType kd, IndexType nRhs, std::complex *Ab, IndexType ldAb, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("cpbsv"); IndexType info; LAPACK_IMPL(cpbsv) (&uplo, &n, &kd, &nRhs, reinterpret_cast(Ab), &ldAb, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbsv (char uplo, IndexType n, IndexType kd, IndexType nRhs, std::complex *Ab, IndexType ldAb, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zpbsv"); IndexType info; LAPACK_IMPL(zpbsv) (&uplo, &n, &kd, &nRhs, reinterpret_cast(Ab), &ldAb, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBSV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbsvx.h000066400000000000000000000116751456314707100244100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBSVX_H #define CXXLAPACK_INTERFACE_PBSVX_H 1 #include namespace cxxlapack { template IndexType pbsvx(char fact, char uplo, IndexType n, IndexType kd, IndexType nRhs, float *Ab, IndexType ldAb, float *Afb, IndexType ldAfb, char &equed, float *s, float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType pbsvx(char fact, char uplo, IndexType n, IndexType kd, IndexType nRhs, double *Ab, IndexType ldAb, double *Afb, IndexType ldAfb, char &equed, double *s, double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType pbsvx(char fact, char uplo, IndexType n, IndexType kd, IndexType nRhs, std::complex *Ab, IndexType ldAb, std::complex *Afb, IndexType ldAfb, char &equed, float *s, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, IndexType *rWork); template IndexType pbsvx(char fact, char uplo, IndexType n, IndexType kd, IndexType nRhs, std::complex *Ab, IndexType ldAb, std::complex *Afb, IndexType ldAfb, char &equed, double *s, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, IndexType *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBSVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbsvx.tcc000066400000000000000000000204371456314707100247260ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBSVX_TCC #define CXXLAPACK_INTERFACE_PBSVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pbsvx(char fact, char uplo, IndexType n, IndexType kd, IndexType nRhs, float *Ab, IndexType ldAb, float *Afb, IndexType ldAfb, char &equed, float *s, float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("spbsvx"); IndexType info; LAPACK_IMPL(spbsvx)(&fact, &uplo, &n, &kd, &nRhs, Ab, &ldAb, Afb, &ldAfb, &equed, s, B, &ldB, X, &ldX, &rCond, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbsvx(char fact, char uplo, IndexType n, IndexType kd, IndexType nRhs, double *Ab, IndexType ldAb, double *Afb, IndexType ldAfb, char &equed, double *s, double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dpbsvx"); IndexType info; LAPACK_IMPL(dpbsvx)(&fact, &uplo, &n, &kd, &nRhs, Ab, &ldAb, Afb, &ldAfb, &equed, s, B, &ldB, X, &ldX, &rCond, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbsvx(char fact, char uplo, IndexType n, IndexType kd, IndexType nRhs, std::complex *Ab, IndexType ldAb, std::complex *Afb, IndexType ldAfb, char &equed, float *s, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, IndexType *rWork) { CXXLAPACK_DEBUG_OUT("cpbsvx"); IndexType info; LAPACK_IMPL(cpbsvx)(&fact, &uplo, &n, &kd, &nRhs, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Afb), &ldAfb, &equed, s, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), work, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbsvx(char fact, char uplo, IndexType n, IndexType kd, IndexType nRhs, std::complex *Ab, IndexType ldAb, std::complex *Afb, IndexType ldAfb, char &equed, double *s, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, IndexType *rWork) { CXXLAPACK_DEBUG_OUT("zpbsvx"); IndexType info; LAPACK_IMPL(zpbsvx)(&fact, &uplo, &n, &kd, &nRhs, reinterpret_cast(Ab), &ldAb, reinterpret_cast(Afb), &ldAfb, &equed, s, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), work, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBSVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbtf2.h000066400000000000000000000053151456314707100242550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBTF2_H #define CXXLAPACK_INTERFACE_PBTF2_H 1 #include namespace cxxlapack { template IndexType pbtf2(char uplo, IndexType n, IndexType kd, float *Ab, IndexType ldAb); template IndexType pbtf2(char uplo, IndexType n, IndexType kd, double *Ab, IndexType ldAb); template IndexType pbtf2(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb); template IndexType pbtf2(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBTF2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbtf2.tcc000066400000000000000000000103761456314707100246020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBTF2_TCC #define CXXLAPACK_INTERFACE_PBTF2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pbtf2(char uplo, IndexType n, IndexType kd, float *Ab, IndexType ldAb) { CXXLAPACK_DEBUG_OUT("spbtf2"); IndexType info; LAPACK_IMPL(spbtf2)(&uplo, &n, &kd, Ab, &ldAb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbtf2(char uplo, IndexType n, IndexType kd, double *Ab, IndexType ldAb) { CXXLAPACK_DEBUG_OUT("dpbtf2"); IndexType info; LAPACK_IMPL(dpbtf2)(&uplo, &n, &kd, Ab, &ldAb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbtf2(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb) { CXXLAPACK_DEBUG_OUT("cpbtf2"); IndexType info; LAPACK_IMPL(cpbtf2)(&uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbtf2(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb) { CXXLAPACK_DEBUG_OUT("zpbtf2"); IndexType info; LAPACK_IMPL(zpbtf2)(&uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBTF2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbtrf.h000066400000000000000000000053151456314707100243550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBTRF_H #define CXXLAPACK_INTERFACE_PBTRF_H 1 #include namespace cxxlapack { template IndexType pbtrf(char uplo, IndexType n, IndexType kd, float *Ab, IndexType ldAb); template IndexType pbtrf(char uplo, IndexType n, IndexType kd, double *Ab, IndexType ldAb); template IndexType pbtrf(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb); template IndexType pbtrf(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBTRF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbtrf.tcc000066400000000000000000000103771456314707100247030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBTRF_TCC #define CXXLAPACK_INTERFACE_PBTRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pbtrf(char uplo, IndexType n, IndexType kd, float *Ab, IndexType ldAb) { CXXLAPACK_DEBUG_OUT("spbtrf"); IndexType info; LAPACK_IMPL(spbtrf)(&uplo, &n, &kd, Ab, &ldAb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbtrf(char uplo, IndexType n, IndexType kd, double *Ab, IndexType ldAb) { CXXLAPACK_DEBUG_OUT("dpbtrf"); IndexType info; LAPACK_IMPL(dpbtrf)(&uplo, &n, &kd, Ab, &ldAb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbtrf(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb) { CXXLAPACK_DEBUG_OUT("cpbtrf"); IndexType info; LAPACK_IMPL(cpbtrf)(&uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbtrf(char uplo, IndexType n, IndexType kd, std::complex *Ab, IndexType ldAb) { CXXLAPACK_DEBUG_OUT("zpbtrf"); IndexType info; LAPACK_IMPL(zpbtrf)(&uplo, &n, &kd, reinterpret_cast(Ab), &ldAb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBTRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbtrs.h000066400000000000000000000063571456314707100244010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBTRS_H #define CXXLAPACK_INTERFACE_PBTRS_H 1 #include namespace cxxlapack { template IndexType pbtrs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const float *Ab, IndexType ldAb, float *B, IndexType ldB); template IndexType pbtrs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const double *Ab, IndexType ldAb, double *B, IndexType ldB); template IndexType pbtrs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const std::complex *Ab, IndexType ldAb, std::complex *B, IndexType ldB); template IndexType pbtrs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const std::complex *Ab, IndexType ldAb, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBTRS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pbtrs.tcc000066400000000000000000000122251456314707100247120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PBTRS_TCC #define CXXLAPACK_INTERFACE_PBTRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pbtrs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const float *Ab, IndexType ldAb, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("spbtrs"); IndexType info; LAPACK_IMPL(spbtrs)(&uplo, &n, &kd, &nRhs, Ab, &ldAb, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbtrs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const double *Ab, IndexType ldAb, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dpbtrs"); IndexType info; LAPACK_IMPL(dpbtrs)(&uplo, &n, &kd, &nRhs, Ab, &ldAb, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbtrs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const std::complex *Ab, IndexType ldAb, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("cpbtrs"); IndexType info; LAPACK_IMPL(cpbtrs)(&uplo, &n, &kd, &nRhs, reinterpret_cast(Ab), &ldAb, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pbtrs(char uplo, IndexType n, IndexType kd, IndexType nRhs, const std::complex *Ab, IndexType ldAb, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zpbtrs"); IndexType info; LAPACK_IMPL(zpbtrs)(&uplo, &n, &kd, &nRhs, reinterpret_cast(Ab), &ldAb, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PBTRS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pftrf.h000066400000000000000000000051021456314707100243530ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PFTRF_H #define CXXLAPACK_INTERFACE_PFTRF_H 1 #include namespace cxxlapack { template IndexType pftrf(char transr, char uplo, IndexType n, float *A); template IndexType pftrf(char transr, char uplo, IndexType n, double *A); template IndexType pftrf(char transr, char uplo, IndexType n, std::complex *A); template IndexType pftrf(char transr, char uplo, IndexType n, std::complex *A); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PFTRF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pftrf.tcc000066400000000000000000000100221456314707100246720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PFTRF_TCC #define CXXLAPACK_INTERFACE_PFTRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pftrf(char transr, char uplo, IndexType n, float *A) { CXXLAPACK_DEBUG_OUT("spftrf"); IndexType info; LAPACK_IMPL(spftrf)(&transr, &uplo, &n, A, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pftrf(char transr, char uplo, IndexType n, double *A) { CXXLAPACK_DEBUG_OUT("dpftrf"); IndexType info; LAPACK_IMPL(dpftrf)(&transr, &uplo, &n, A, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pftrf(char transr, char uplo, IndexType n, std::complex *A) { CXXLAPACK_DEBUG_OUT("cpftrf"); IndexType info; LAPACK_IMPL(cpftrf)(&transr, &uplo, &n, reinterpret_cast(A), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pftrf(char transr, char uplo, IndexType n, std::complex *A) { CXXLAPACK_DEBUG_OUT("zpftrf"); IndexType info; LAPACK_IMPL(zpftrf)(&transr, &uplo, &n, reinterpret_cast(A), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pftri.h000066400000000000000000000051011456314707100243550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PFTRI_H #define CXXLAPACK_INTERFACE_PFTRI_H 1 #include namespace cxxlapack { template IndexType pftri(char transr, char uplo, IndexType n, float *A); template IndexType pftri(char transr, char uplo, IndexType n, double *A); template IndexType pftri(char transr, char uplo, IndexType n, std::complex *A); template IndexType pftri(char transr, char uplo, IndexType n, std::complex *A); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PFTRI_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pftri.tcc000066400000000000000000000100221456314707100246750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PFTRI_TCC #define CXXLAPACK_INTERFACE_PFTRI_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pftri(char transr, char uplo, IndexType n, float *A) { CXXLAPACK_DEBUG_OUT("spftri"); IndexType info; LAPACK_IMPL(spftri)(&transr, &uplo, &n, A, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pftri(char transr, char uplo, IndexType n, double *A) { CXXLAPACK_DEBUG_OUT("dpftri"); IndexType info; LAPACK_IMPL(dpftri)(&transr, &uplo, &n, A, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pftri(char transr, char uplo, IndexType n, std::complex *A) { CXXLAPACK_DEBUG_OUT("cpftri"); IndexType info; LAPACK_IMPL(cpftri)(&transr, &uplo, &n, reinterpret_cast(A), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pftri(char transr, char uplo, IndexType n, std::complex *A) { CXXLAPACK_DEBUG_OUT("zpftri"); IndexType info; LAPACK_IMPL(zpftri)(&transr, &uplo, &n, reinterpret_cast(A), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTRI_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pftrs.h000066400000000000000000000046261456314707100244020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_DUMMY_H #define CXXLAPACK_INTERFACE_DUMMY_H 1 #include namespace cxxlapack { template IndexType dummy(IndexType m, IndexType n, float *A); template IndexType dummy(IndexType m, IndexType n, double *A); template IndexType dummy(IndexType n, IndexType m, std::complex *A); template IndexType dummy(IndexType n, IndexType m, std::complex *A); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_DUMMY_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pftrs.tcc000066400000000000000000000116261456314707100247220ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PFTRS_TCC #define CXXLAPACK_INTERFACE_PFTRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pftrs(char transr, char uplo, IndexType n, IndexType nRhs, const float *A, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("spftrs"); IndexType info; LAPACK_IMPL(spftrs)(&transr, &uplo, &n, &nRhs, A, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pftrs(char transr, char uplo, IndexType n, IndexType nRhs, const double *A, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dpftrs"); IndexType info; LAPACK_IMPL(dpftrs)(&transr, &uplo, &n, &nRhs, A, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pftrs(char transr, char uplo, IndexType n, IndexType nRhs, const std::complex *A, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("cpftrs"); IndexType info; LAPACK_IMPL(cpftrs)(&transr, &uplo, &n, &nRhs, reinterpret_cast(A), reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pftrs(char transr, char uplo, IndexType n, IndexType nRhs, const std::complex *A, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zpftrs"); IndexType info; LAPACK_IMPL(zpftrs)(&transr, &uplo, &n, &nRhs, reinterpret_cast(A), reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PFTRS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pocon.h000066400000000000000000000063431456314707100243600ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POCON_H #define CXXLAPACK_INTERFACE_POCON_H 1 #include namespace cxxlapack { template IndexType pocon(char upLo, IndexType n, const float *A, IndexType ldA, const float &normA, float &rCond, float *work, IndexType *iWork); template IndexType pocon(char upLo, IndexType n, const double *A, IndexType ldA, const double &normA, double &rCond, double *work, IndexType *iWork); template IndexType pocon(char upLo, IndexType n, const std::complex *A, IndexType ldA, const float &normA, float &rCond, std::complex *work, float *rWork); template IndexType pocon(char upLo, IndexType n, const std::complex *A, IndexType ldA, const double &normA, double &rCond, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POCON_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pocon.tcc000066400000000000000000000122351456314707100246770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POCON_TCC #define CXXLAPACK_INTERFACE_POCON_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pocon(char upLo, IndexType n, const float *A, IndexType ldA, const float &normA, float &rCond, float *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("spocon"); LAPACK_IMPL(spocon)(&upLo, &n, A, &ldA, &normA, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pocon(char upLo, IndexType n, const double *A, IndexType ldA, const double &normA, double &rCond, double *work, IndexType *iWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dpocon"); LAPACK_IMPL(dpocon)(&upLo, &n, A, &ldA, &normA, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pocon(char upLo, IndexType n, const std::complex *A, IndexType ldA, const float &normA, float &rCond, std::complex *work, float *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cpocon"); LAPACK_IMPL(cpocon)(&upLo, &n, reinterpret_cast(A), &ldA, &normA, &rCond, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pocon(char upLo, IndexType n, const std::complex *A, IndexType ldA, const double &normA, double &rCond, std::complex *work, double *rWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zpocon"); LAPACK_IMPL(zpocon)(&upLo, &n, reinterpret_cast(A), &ldA, &normA, &rCond, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POCON_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/poequ.h000066400000000000000000000056611456314707100243750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POEQU_H #define CXXLAPACK_INTERFACE_POEQU_H 1 #include namespace cxxlapack { template IndexType poequ(IndexType n, const float *A, IndexType ldA, float *s, float &scond, float &amax); template IndexType poequ(IndexType n, const double *A, IndexType ldA, double *s, double &scond, double &amax); template IndexType poequ(IndexType n, const std::complex *A, IndexType ldA, float *s, float &scond, float &amax); template IndexType poequ(IndexType n, const std::complex *A, IndexType ldA, double *s, double &scond, double &amax); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POEQU_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/poequ.tcc000066400000000000000000000111161456314707100247070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POEQU_TCC #define CXXLAPACK_INTERFACE_POEQU_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType poequ(IndexType n, const float *A, IndexType ldA, float *s, float &scond, float &amax) { CXXLAPACK_DEBUG_OUT("spoequ"); IndexType info; LAPACK_IMPL(spoequ)(&n, A, &ldA, s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType poequ(IndexType n, const double *A, IndexType ldA, double *s, double &scond, double &amax) { CXXLAPACK_DEBUG_OUT("dpoequ"); IndexType info; LAPACK_IMPL(dpoequ)(&n, A, &ldA, s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType poequ(IndexType n, const std::complex *A, IndexType ldA, float *s, float &scond, float &amax) { CXXLAPACK_DEBUG_OUT("cpoequ"); IndexType info; LAPACK_IMPL(cpoequ)(&n, reinterpret_cast(A), &ldA, s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType poequ(IndexType n, const std::complex *A, IndexType ldA, double *s, double &scond, double &amax) { CXXLAPACK_DEBUG_OUT("zpoequ"); IndexType info; LAPACK_IMPL(zpoequ)(&n, reinterpret_cast(A), &ldA, s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POEQU_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/poequb.h000066400000000000000000000057141456314707100245360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POEQUB_H #define CXXLAPACK_INTERFACE_POEQUB_H 1 #include namespace cxxlapack { template IndexType poequb(IndexType n, const float *A, IndexType ldA, float *s, float &scond, float &amax); template IndexType poequb(IndexType n, const double *A, IndexType ldA, double *s, double &scond, double &amax); template IndexType poequb(IndexType n, const std::complex *A, IndexType ldA, float *s, float &scond, float &amax); template IndexType poequb(IndexType n, const std::complex *A, IndexType ldA, double *s, double &scond, double &amax); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POEQUB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/poequb.tcc000066400000000000000000000112121456314707100250460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POEQUB_TCC #define CXXLAPACK_INTERFACE_POEQUB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType poequb(IndexType n, const float *A, IndexType ldA, float *s, float &scond, float &amax) { CXXLAPACK_DEBUG_OUT("spoequb"); IndexType info; LAPACK_IMPL(spoequb)(&n, A, &ldA, s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType poequb(IndexType n, const double *A, IndexType ldA, double *s, double &scond, double &amax) { CXXLAPACK_DEBUG_OUT("dpoequb"); IndexType info; LAPACK_IMPL(dpoequb)(&n, A, &ldA, s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType poequb(IndexType n, const std::complex *A, IndexType ldA, float *s, float &scond, float &amax) { CXXLAPACK_DEBUG_OUT("cpoequb"); IndexType info; LAPACK_IMPL(cpoequb)(&n, reinterpret_cast(A), &ldA, s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType poequb(IndexType n, const std::complex *A, IndexType ldA, double *s, double &scond, double &amax) { CXXLAPACK_DEBUG_OUT("zpoequb"); IndexType info; LAPACK_IMPL(zpoequb)(&n, reinterpret_cast(A), &ldA, s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POEQUB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/porfs.h000066400000000000000000000105531456314707100243710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PORFS_H #define CXXLAPACK_INTERFACE_PORFS_H 1 #include namespace cxxlapack { template IndexType porfs(char uplo, IndexType n, IndexType nRhs, const float *A, IndexType ldA, const float *Af, IndexType ldAf, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType porfs(char uplo, IndexType n, IndexType nRhs, const double *A, IndexType ldA, const double *Af, IndexType ldAf, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType porfs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType porfs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PORFS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/porfs.tcc000066400000000000000000000162301456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PORFS_TCC #define CXXLAPACK_INTERFACE_PORFS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType porfs(char uplo, IndexType n, IndexType nRhs, const float *A, IndexType ldA, const float *Af, IndexType ldAf, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("sporfs"); IndexType info; LAPACK_IMPL(sporfs)(&uplo, &n, &nRhs, A, &ldA, Af, &ldAf, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType porfs(char uplo, IndexType n, IndexType nRhs, const double *A, IndexType ldA, const double *Af, IndexType ldAf, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dporfs"); IndexType info; LAPACK_IMPL(dporfs)(&uplo, &n, &nRhs, A, &ldA, Af, &ldAf, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType porfs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cporfs"); IndexType info; LAPACK_IMPL(cporfs)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType porfs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zporfs"); IndexType info; LAPACK_IMPL(zporfs)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_DUMMY_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/posv.h000066400000000000000000000055561456314707100242360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POSV_H #define CXXLAPACK_INTERFACE_POSV_H 1 #include namespace cxxlapack { template IndexType posv(char upLo, IndexType n, IndexType nRhs, float *A, IndexType ldA, float *B, IndexType ldB); template IndexType posv(char upLo, IndexType n, IndexType nRhs, double *A, IndexType ldA, double *B, IndexType ldB); template IndexType posv(char upLo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB); template IndexType posv(char upLo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POSV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/posv.tcc000066400000000000000000000111641456314707100245500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POSV_TCC #define CXXLAPACK_INTERFACE_POSV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType posv(char upLo, IndexType n, IndexType nRhs, float *A, IndexType ldA, float *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("sposv"); LAPACK_IMPL(sposv)(&upLo, &n, &nRhs, A, &ldA, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType posv(char upLo, IndexType n, IndexType nRhs, double *A, IndexType ldA, double *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("dposv"); LAPACK_IMPL(dposv)(&upLo, &n, &nRhs, A, &ldA, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType posv(char upLo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("cposv"); LAPACK_IMPL(cposv)(&upLo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType posv(char upLo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("zposv"); LAPACK_IMPL(zposv)(&upLo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POSV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/posvx.h000066400000000000000000000114361456314707100244200ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POSVX_H #define CXXLAPACK_INTERFACE_POSVX_H 1 #include namespace cxxlapack { template IndexType posvx(char fact, char uplo, IndexType n, IndexType nRhs, float *A, IndexType ldA, float *Af, IndexType ldAf, char &equed, float *s, float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType posvx(char fact, char uplo, IndexType n, IndexType nRhs, double *A, IndexType ldA, double *Af, IndexType ldAf, char &equed, double *s, double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType posvx(char fact, char uplo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *Af, IndexType ldAf, char &equed, float *s, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType posvx(char fact, char uplo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *Af, IndexType ldAf, char &equed, double *s, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POSVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/posvx.tcc000066400000000000000000000177171456314707100247520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POSVX_TCC #define CXXLAPACK_INTERFACE_POSVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType posvx(char fact, char uplo, IndexType n, IndexType nRhs, float *A, IndexType ldA, float *Af, IndexType ldAf, char &equed, float *s, float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("sposvx"); IndexType info; LAPACK_IMPL(sposvx)(&fact, &uplo, &n, &nRhs, A, &ldA, Af, &ldAf, &equed, s, B, &ldB, X, &ldX, &rCond, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType posvx(char fact, char uplo, IndexType n, IndexType nRhs, double *A, IndexType ldA, double *Af, IndexType ldAf, char &equed, double *s, double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dposvx"); IndexType info; LAPACK_IMPL(dposvx)(&fact, &uplo, &n, &nRhs, A, &ldA, Af, &ldAf, &equed, s, B, &ldB, X, &ldX, &rCond, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType posvx(char fact, char uplo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *Af, IndexType ldAf, char &equed, float *s, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cposvx"); IndexType info; LAPACK_IMPL(cposvx)(&fact, &uplo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, &equed, s, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType posvx(char fact, char uplo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, std::complex *Af, IndexType ldAf, char &equed, double *s, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zposvx"); IndexType info; LAPACK_IMPL(zposvx)(&fact, &uplo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, &equed, s, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POSVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/potf2.h000066400000000000000000000047451456314707100243000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POTF2_H #define CXXLAPACK_INTERFACE_POTF2_H 1 #include namespace cxxlapack { template IndexType potf2(char upLo, IndexType n, float *A, IndexType ldA); template IndexType potf2(char upLo, IndexType n, double *A, IndexType ldA); template IndexType potf2(char upLo, IndexType n, std::complex *A, IndexType ldA); template IndexType potf2(char upLo, IndexType n, std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POTF2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/potf2.tcc000066400000000000000000000076521456314707100246220ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POTF2_TCC #define CXXLAPACK_INTERFACE_POTF2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType potf2(char upLo, IndexType n, float *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("spotf2"); IndexType info; LAPACK_IMPL(spotf2)(&upLo, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType potf2(char upLo, IndexType n, double *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("dpotf2"); IndexType info; LAPACK_IMPL(dpotf2)(&upLo, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType potf2(char upLo, IndexType n, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("cpotf2"); IndexType info; LAPACK_IMPL(cpotf2)(&upLo, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType potf2(char upLo, IndexType n, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("zpotf2"); IndexType info; LAPACK_IMPL(zpotf2)(&upLo, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POTF2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/potrf.h000066400000000000000000000047251456314707100243760ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POTRF_H #define CXXLAPACK_INTERFACE_POTRF_H 1 #include namespace cxxlapack { template IndexType potrf(char upLo, IndexType n, float *A, IndexType ldA); template IndexType potrf(char upLo, IndexType n, double *A, IndexType ldA); template IndexType potrf(char upLo, IndexType n, std::complex *A, IndexType ldA); template IndexType potrf(char upLo, IndexType n, std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POTRF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/potrf.tcc000066400000000000000000000076271456314707100247240ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POTRF_TCC #define CXXLAPACK_INTERFACE_POTRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType potrf(char upLo, IndexType n, float *A, IndexType ldA) { IndexType info; CXXLAPACK_DEBUG_OUT("spotrf"); LAPACK_IMPL(spotrf)(&upLo, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType potrf(char upLo, IndexType n, double *A, IndexType ldA) { IndexType info; CXXLAPACK_DEBUG_OUT("dpotrf"); LAPACK_IMPL(dpotrf)(&upLo, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType potrf(char upLo, IndexType n, std::complex *A, IndexType ldA) { IndexType info; CXXLAPACK_DEBUG_OUT("cpotrf"); LAPACK_IMPL(cpotrf)(&upLo, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType potrf(char upLo, IndexType n, std::complex *A, IndexType ldA) { IndexType info; CXXLAPACK_DEBUG_OUT("zpotrf"); LAPACK_IMPL(zpotrf)(&upLo, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POTRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/potri.h000066400000000000000000000047451456314707100244030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POTRI_H #define CXXLAPACK_INTERFACE_POTRI_H 1 #include namespace cxxlapack { template IndexType potri(char upLo, IndexType n, float *A, IndexType ldA); template IndexType potri(char upLo, IndexType n, double *A, IndexType ldA); template IndexType potri(char upLo, IndexType n, std::complex *A, IndexType ldA); template IndexType potri(char upLo, IndexType n, std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POTRI_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/potri.tcc000066400000000000000000000076471456314707100247310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POTRI_TCC #define CXXLAPACK_INTERFACE_POTRI_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType potri(char upLo, IndexType n, float *A, IndexType ldA) { IndexType info; CXXLAPACK_DEBUG_OUT("spotri"); LAPACK_IMPL(spotri)(&upLo, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType potri(char upLo, IndexType n, double *A, IndexType ldA) { IndexType info; CXXLAPACK_DEBUG_OUT("dpotri"); LAPACK_IMPL(dpotri)(&upLo, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType potri(char upLo, IndexType n, std::complex *A, IndexType ldA) { IndexType info; CXXLAPACK_DEBUG_OUT("cpotri"); LAPACK_IMPL(cpotri)(&upLo, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType potri(char upLo, IndexType n, std::complex *A, IndexType ldA) { IndexType info; CXXLAPACK_DEBUG_OUT("zpotri"); LAPACK_IMPL(zpotri)(&upLo, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POTRI_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/potrs.h000066400000000000000000000057411456314707100244120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POTRS_H #define CXXLAPACK_INTERFACE_POTRS_H 1 #include namespace cxxlapack { template IndexType potrs(char upLo, IndexType n, IndexType nRhs, const float *A, IndexType ldA, float *B, IndexType ldB); template IndexType potrs(char upLo, IndexType n, IndexType nRhs, const double *A, IndexType ldA, double *B, IndexType ldB); template IndexType potrs(char upLo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB); template IndexType potrs(char upLo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POTRS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/potrs.tcc000066400000000000000000000114271456314707100247320ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_POTRS_TCC #define CXXLAPACK_INTERFACE_POTRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType potrs(char upLo, IndexType n, IndexType nRhs, const float *A, IndexType ldA, float *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("spotrs"); LAPACK_IMPL(spotrs)(&upLo, &n, &nRhs, A, &ldA, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType potrs(char upLo, IndexType n, IndexType nRhs, const double *A, IndexType ldA, double *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("dpotrs"); LAPACK_IMPL(dpotrs)(&upLo, &n, &nRhs, A, &ldA, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType potrs(char upLo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("cpotrs"); LAPACK_IMPL(cpotrs)(&upLo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType potrs(char upLo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB) { IndexType info; CXXLAPACK_DEBUG_OUT("zpotrs"); LAPACK_IMPL(zpotrs)(&upLo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_POTRS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ppcon.h000066400000000000000000000061431456314707100243570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPCON_H #define CXXLAPACK_INTERFACE_PPCON_H 1 #include namespace cxxlapack { template IndexType ppcon(char uplo, IndexType n, const float *Ap, float anorm, float &rCond, float *work, IndexType *iWork); template IndexType ppcon(char uplo, IndexType n, const double *Ap, double anorm, double &rCond, double *work, IndexType *iWork); template IndexType ppcon(char uplo, IndexType n, const std::complex *Ap, float anorm, float &rCond, std::complex *work, float *rWork); template IndexType ppcon(char uplo, IndexType n, const std::complex *Ap, double anorm, double &rCond, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPCON_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ppcon.tcc000066400000000000000000000116751456314707100247070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPCON_TCC #define CXXLAPACK_INTERFACE_PPCON_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ppcon(char uplo, IndexType n, const float *Ap, float anorm, float &rCond, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("sppcon"); IndexType info; LAPACK_IMPL(sppcon)(&uplo, &n, Ap, &anorm, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ppcon(char uplo, IndexType n, const double *Ap, double anorm, double &rCond, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dppcon"); IndexType info; LAPACK_IMPL(dppcon)(&uplo, &n, Ap, &anorm, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ppcon(char uplo, IndexType n, const std::complex *Ap, float anorm, float &rCond, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cppcon"); IndexType info; LAPACK_IMPL(cppcon)(&uplo, &n, reinterpret_cast(Ap), &anorm, &rCond, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ppcon(char uplo, IndexType n, const std::complex *Ap, double anorm, double &rCond, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zppcon"); IndexType info; LAPACK_IMPL(zppcon)(&uplo, &n, reinterpret_cast(Ap), &anorm, &rCond, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPCON_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ppequ.h000066400000000000000000000056711456314707100243770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPEQU_H #define CXXLAPACK_INTERFACE_PPEQU_H 1 #include namespace cxxlapack { template IndexType ppequ(char uplo, IndexType n, const float *Ap, float *s, float &scond, float &amax); template IndexType ppequ(char uplo, IndexType n, const double *Ap, double *s, double &scond, double &amax); template IndexType ppequ(char uplo, IndexType n, const std::complex *Ap, float *s, float &scond, float &amax); template IndexType ppequ(char uplo, IndexType n, const std::complex *Ap, double *s, double &scond, double &amax); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPEQU_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ppequ.tcc000066400000000000000000000111361456314707100247120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPEQU_TCC #define CXXLAPACK_INTERFACE_PPEQU_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ppequ(char uplo, IndexType n, const float *Ap, float *s, float &scond, float &amax) { CXXLAPACK_DEBUG_OUT("sppequ"); IndexType info; LAPACK_IMPL(sppequ)(&uplo, &n, Ap, s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ppequ(char uplo, IndexType n, const double *Ap, double *s, double &scond, double &amax) { CXXLAPACK_DEBUG_OUT("dppequ"); IndexType info; LAPACK_IMPL(dppequ)(&uplo, &n, Ap, s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ppequ(char uplo, IndexType n, const std::complex *Ap, float *s, float &scond, float &amax) { CXXLAPACK_DEBUG_OUT("cppequ"); IndexType info; LAPACK_IMPL(cppequ)(&uplo, &n, reinterpret_cast(Ap), s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ppequ(char uplo, IndexType n, const std::complex *Ap, double *s, double &scond, double &amax) { CXXLAPACK_DEBUG_OUT("zppequ"); IndexType info; LAPACK_IMPL(zppequ)(&uplo, &n, reinterpret_cast(Ap), s, &scond, &amax, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPEQU_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pprfs.h000066400000000000000000000100551456314707100243670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPRFS_H #define CXXLAPACK_INTERFACE_PPRFS_H 1 #include namespace cxxlapack { template IndexType pprfs(char uplo, IndexType n, IndexType nRhs, const float *Ap, const float *Afp, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType pprfs(char uplo, IndexType n, IndexType nRhs, const double *Ap, const double *Afp, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType pprfs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *Afp, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType pprfs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *Afp, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPRFS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pprfs.tcc000066400000000000000000000152161456314707100247150ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPRFS_TCC #define CXXLAPACK_INTERFACE_PPRFS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pprfs(char uplo, IndexType n, IndexType nRhs, const float *Ap, const float *Afp, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("spprfs"); IndexType info; LAPACK_IMPL(spprfs)(&uplo, &n, &nRhs, Ap, Afp, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pprfs(char uplo, IndexType n, IndexType nRhs, const double *Ap, const double *Afp, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dpprfs"); IndexType info; LAPACK_IMPL(dpprfs)(&uplo, &n, &nRhs, Ap, Afp, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pprfs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *Afp, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cpprfs"); IndexType info; LAPACK_IMPL(cpprfs)(&uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(Afp), reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pprfs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *Afp, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zpprfs"); IndexType info; LAPACK_IMPL(zpprfs)(&uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(Afp), reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPRFS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ppsv.h000066400000000000000000000055361456314707100242350ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPSV_H #define CXXLAPACK_INTERFACE_PPSV_H 1 #include namespace cxxlapack { template IndexType ppsv (char uplo, IndexType n, IndexType nRhs, float *Ap, float *B, IndexType ldB); template IndexType ppsv (char uplo, IndexType n, IndexType nRhs, double *Ap, double *B, IndexType ldB); template IndexType ppsv (char uplo, IndexType n, IndexType nRhs, std::complex *Ap, std::complex *B, IndexType ldB); template IndexType ppsv (char uplo, IndexType n, IndexType nRhs, std::complex *Ap, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPSV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ppsv.tcc000066400000000000000000000110431456314707100245450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPSV_TCC #define CXXLAPACK_INTERFACE_PPSV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ppsv (char uplo, IndexType n, IndexType nRhs, float *Ap, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("sppsv"); IndexType info; LAPACK_IMPL(sppsv) (&uplo, &n, &nRhs, Ap, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ppsv (char uplo, IndexType n, IndexType nRhs, double *Ap, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dppsv"); IndexType info; LAPACK_IMPL(dppsv) (&uplo, &n, &nRhs, Ap, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ppsv (char uplo, IndexType n, IndexType nRhs, std::complex *Ap, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("cppsv"); IndexType info; LAPACK_IMPL(cppsv) (&uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ppsv (char uplo, IndexType n, IndexType nRhs, std::complex *Ap, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zppsv"); IndexType info; LAPACK_IMPL(zppsv) (&uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPSV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ppsvx.h000066400000000000000000000107711456314707100244220ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPSVX_H #define CXXLAPACK_INTERFACE_PPSVX_H 1 #include namespace cxxlapack { template IndexType ppsvx(char fact, char uplo, IndexType n, IndexType nRhs, float *Ap, float *Afp, char &equed, float *s, float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType ppsvx(char fact, char uplo, IndexType n, IndexType nRhs, double *Ap, double *Afp, char &equed, double *s, double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType ppsvx(char fact, char uplo, IndexType n, IndexType nRhs, std::complex *Ap, std::complex *Afp, char &equed, float *s, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, IndexType *iWork); template IndexType ppsvx(char fact, char uplo, IndexType n, IndexType nRhs, std::complex *Ap, std::complex *Afp, char &equed, double *s, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPSVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ppsvx.tcc000066400000000000000000000167401456314707100247460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPSVX_TCC #define CXXLAPACK_INTERFACE_PPSVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ppsvx(char fact, char uplo, IndexType n, IndexType nRhs, float *Ap, float *Afp, char &equed, float *s, float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("sppsvx"); IndexType info; LAPACK_IMPL(sppsvx)(&fact, &uplo, &n, &nRhs, Ap, Afp, &equed, s, B, &ldB, X, &ldX, &rCond, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ppsvx(char fact, char uplo, IndexType n, IndexType nRhs, double *Ap, double *Afp, char &equed, double *s, double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dppsvx"); IndexType info; LAPACK_IMPL(dppsvx)(&fact, &uplo, &n, &nRhs, Ap, Afp, &equed, s, B, &ldB, X, &ldX, &rCond, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ppsvx(char fact, char uplo, IndexType n, IndexType nRhs, std::complex *Ap, std::complex *Afp, char &equed, float *s, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("cppsvx"); IndexType info; LAPACK_IMPL(cppsvx)(&fact, &uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(Afp), &equed, s, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ppsvx(char fact, char uplo, IndexType n, IndexType nRhs, std::complex *Ap, std::complex *Afp, char &equed, double *s, std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("zppsvx"); IndexType info; LAPACK_IMPL(zppsvx)(&fact, &uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(Afp), &equed, s, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPSVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pptrf.h000066400000000000000000000046451456314707100244000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPTRF_H #define CXXLAPACK_INTERFACE_PPTRF_H 1 #include namespace cxxlapack { template IndexType pptrf(char uplo, IndexType n, float *Ap); template IndexType pptrf(char uplo, IndexType n, double *Ap); template IndexType pptrf(char uplo, IndexType n, std::complex *Ap); template IndexType pptrf(char uplo, IndexType n, std::complex *Ap); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPTRF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pptrf.tcc000066400000000000000000000074061456314707100247200ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPTRF_TCC #define CXXLAPACK_INTERFACE_PPTRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pptrf(char uplo, IndexType n, float *Ap) { CXXLAPACK_DEBUG_OUT("spptrf"); IndexType info; LAPACK_IMPL(spptrf)(&uplo, &n, Ap, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pptrf(char uplo, IndexType n, double *Ap) { CXXLAPACK_DEBUG_OUT("dpptrf"); IndexType info; LAPACK_IMPL(dpptrf)(&uplo, &n, Ap, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pptrf(char uplo, IndexType n, std::complex *Ap) { CXXLAPACK_DEBUG_OUT("cpptrf"); IndexType info; LAPACK_IMPL(cpptrf)(&uplo, &n, reinterpret_cast(Ap), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pptrf(char uplo, IndexType n, std::complex *Ap) { CXXLAPACK_DEBUG_OUT("zpptrf"); IndexType info; LAPACK_IMPL(zpptrf)(&uplo, &n, reinterpret_cast(Ap), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPTRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pptri.h000066400000000000000000000046451456314707100244030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPTRI_H #define CXXLAPACK_INTERFACE_PPTRI_H 1 #include namespace cxxlapack { template IndexType pptri(char uplo, IndexType n, float *Ap); template IndexType pptri(char uplo, IndexType n, double *Ap); template IndexType pptri(char uplo, IndexType n, std::complex *Ap); template IndexType pptri(char uplo, IndexType n, std::complex *Ap); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPTRI_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pptri.tcc000066400000000000000000000074101456314707100247160ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPTRI_TCC #define CXXLAPACK_INTERFACE_PPTRI_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pptri(char uplo, IndexType n, float *Ap) { CXXLAPACK_DEBUG_OUT("spptri"); IndexType info; LAPACK_IMPL(spptri)(&uplo, &n, Ap, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pptri(char uplo, IndexType n, double *Ap) { CXXLAPACK_DEBUG_OUT("dpptri"); IndexType info; LAPACK_IMPL(dpptri)(&uplo, &n, Ap, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pptri(char uplo, IndexType n, std::complex *Ap) { CXXLAPACK_DEBUG_OUT("cpptri"); IndexType info; LAPACK_IMPL(cpptri)(&uplo, &n, reinterpret_cast(Ap), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pptri(char uplo, IndexType n, std::complex *Ap) { CXXLAPACK_DEBUG_OUT("dpptri"); IndexType info; LAPACK_IMPL(zpptri)(&uplo, &n, reinterpret_cast(Ap), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPTRI_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pptrs.h000066400000000000000000000056511456314707100244130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPTRS_H #define CXXLAPACK_INTERFACE_PPTRS_H 1 #include namespace cxxlapack { template IndexType pptrs(char uplo, IndexType n, IndexType nRhs, const float *Ap, float *B, IndexType ldB); template IndexType pptrs(char uplo, IndexType n, IndexType nRhs, const double *Ap, double *B, IndexType ldB); template IndexType pptrs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *B, IndexType ldB); template IndexType pptrs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPTRS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pptrs.tcc000066400000000000000000000112131456314707100247240ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PPTRS_TCC #define CXXLAPACK_INTERFACE_PPTRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pptrs(char uplo, IndexType n, IndexType nRhs, const float *Ap, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("spptrs"); IndexType info; LAPACK_IMPL(spptrs)(&uplo, &n, &nRhs, Ap, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pptrs(char uplo, IndexType n, IndexType nRhs, const double *Ap, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dpptrs"); IndexType info; LAPACK_IMPL(dpptrs)(&uplo, &n, &nRhs, Ap, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pptrs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("cpptrs"); IndexType info; LAPACK_IMPL(cpptrs)(&uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pptrs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zpptrs"); IndexType info; LAPACK_IMPL(zpptrs)(&uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PPTRS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pstf2.h000066400000000000000000000062351456314707100243000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PSTF2_H #define CXXLAPACK_INTERFACE_PSTF2_H 1 #include namespace cxxlapack { template IndexType pstf2(char uplo, IndexType n, float *A, IndexType ldA, IndexType *iPiv, IndexType &rank, float tol, float *work); template IndexType pstf2(char uplo, IndexType n, double *A, IndexType ldA, IndexType *iPiv, IndexType &rank, double tol, double *work); template IndexType pstf2(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, IndexType &rank, float tol, float *work); template IndexType pstf2(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, IndexType &rank, double tol, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PSTF2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pstf2.tcc000066400000000000000000000120061456314707100246130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PSTF2_TCC #define CXXLAPACK_INTERFACE_PSTF2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pstf2(char uplo, IndexType n, float *A, IndexType ldA, IndexType *iPiv, IndexType &rank, float tol, float *work) { CXXLAPACK_DEBUG_OUT("spstf2"); IndexType info; LAPACK_IMPL(spstf2)(&uplo, &n, A, &ldA, iPiv, &rank, &tol, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pstf2(char uplo, IndexType n, double *A, IndexType ldA, IndexType *iPiv, IndexType &rank, double tol, double *work) { CXXLAPACK_DEBUG_OUT("dpstf2"); IndexType info; LAPACK_IMPL(dpstf2)(&uplo, &n, A, &ldA, iPiv, &rank, &tol, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pstf2(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, IndexType &rank, float tol, float *work) { CXXLAPACK_DEBUG_OUT("cpstf2"); IndexType info; LAPACK_IMPL(cpstf2)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, &rank, &tol, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pstf2(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, IndexType &rank, double tol, double *work) { CXXLAPACK_DEBUG_OUT("zpstf2"); IndexType info; LAPACK_IMPL(zpstf2)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, &rank, &tol, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_DUMMY_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pstrf.h000066400000000000000000000062351456314707100244000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PSTRF_H #define CXXLAPACK_INTERFACE_PSTRF_H 1 #include namespace cxxlapack { template IndexType pstrf(char uplo, IndexType n, float *A, IndexType ldA, IndexType *iPiv, IndexType &rank, float tol, float *work); template IndexType pstrf(char uplo, IndexType n, double *A, IndexType ldA, IndexType *iPiv, IndexType &rank, double tol, double *work); template IndexType pstrf(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, IndexType &rank, float tol, float *work); template IndexType pstrf(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, IndexType &rank, double tol, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PSTRF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pstrf.tcc000066400000000000000000000120061456314707100247130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PSTRF_TCC #define CXXLAPACK_INTERFACE_PSTRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pstrf(char uplo, IndexType n, float *A, IndexType ldA, IndexType *iPiv, IndexType &rank, float tol, float *work) { CXXLAPACK_DEBUG_OUT("spstrf"); IndexType info; LAPACK_IMPL(spstrf)(&uplo, &n, A, &ldA, iPiv, &rank, &tol, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pstrf(char uplo, IndexType n, double *A, IndexType ldA, IndexType *iPiv, IndexType &rank, double tol, double *work) { CXXLAPACK_DEBUG_OUT("dpstrf"); IndexType info; LAPACK_IMPL(dpstrf)(&uplo, &n, A, &ldA, iPiv, &rank, &tol, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pstrf(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, IndexType &rank, float tol, float *work) { CXXLAPACK_DEBUG_OUT("cpstrf"); IndexType info; LAPACK_IMPL(cpstrf)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, &rank, &tol, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pstrf(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, IndexType &rank, double tol, double *work) { CXXLAPACK_DEBUG_OUT("zpstrf"); IndexType info; LAPACK_IMPL(zpstrf)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, &rank, &tol, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_DUMMY_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ptcon.h000066400000000000000000000056731456314707100243720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTCON_H #define CXXLAPACK_INTERFACE_PTCON_H 1 #include namespace cxxlapack { template IndexType ptcon(IndexType n, const float *d, const float *e, float anorm, float &rCond, float *work); template IndexType ptcon(IndexType n, const double *d, const double *e, double anorm, double &rCond, double *work); template IndexType ptcon(IndexType n, const float *d, const std::complex *e, float anorm, float &rCond, float *rWork); template IndexType ptcon(IndexType n, const double *d, const std::complex *e, double anorm, double &rCond, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTCON_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ptcon.tcc000066400000000000000000000111361456314707100247030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTCON_TCC #define CXXLAPACK_INTERFACE_PTCON_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ptcon(IndexType n, const float *d, const float *e, float anorm, float &rCond, float *work) { CXXLAPACK_DEBUG_OUT("sptcon"); IndexType info; LAPACK_IMPL(sptcon)(&n, d, e, &anorm, &rCond, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ptcon(IndexType n, const double *d, const double *e, double anorm, double &rCond, double *work) { CXXLAPACK_DEBUG_OUT("dptcon"); IndexType info; LAPACK_IMPL(dptcon)(&n, d, e, &anorm, &rCond, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ptcon(IndexType n, const float *d, const std::complex *e, float anorm, float &rCond, float *rWork) { CXXLAPACK_DEBUG_OUT("cptcon"); IndexType info; LAPACK_IMPL(cptcon)(&n, d, reinterpret_cast(e), &anorm, &rCond, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ptcon(IndexType n, const double *d, const std::complex *e, double anorm, double &rCond, double *rWork) { CXXLAPACK_DEBUG_OUT("zptcon"); IndexType info; LAPACK_IMPL(zptcon)(&n, d, reinterpret_cast(e), &anorm, &rCond, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTCON_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pteqr.h000066400000000000000000000057671456314707100244060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTEQR_H #define CXXLAPACK_INTERFACE_PTEQR_H 1 #include namespace cxxlapack { template IndexType pteqr(char compz, IndexType n, float *d, float *e, float *Z, IndexType ldZ, float *work); template IndexType pteqr(char compz, IndexType n, double *d, double *e, double *Z, IndexType ldZ, double *work); template IndexType pteqr(char compz, IndexType n, float *d, float *e, std::complex *Z, IndexType ldZ, float *rWork); template IndexType pteqr(char compz, IndexType n, double *d, double *e, std::complex *Z, IndexType ldZ, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTEQR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pteqr.tcc000066400000000000000000000113371456314707100247160ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTEQR_TCC #define CXXLAPACK_INTERFACE_PTEQR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pteqr(char compz, IndexType n, float *d, float *e, float *Z, IndexType ldZ, float *work) { CXXLAPACK_DEBUG_OUT("spteqr"); IndexType info; LAPACK_IMPL(spteqr)(&compz, n, d, e, Z, &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pteqr(char compz, IndexType n, double *d, double *e, double *Z, IndexType ldZ, double *work) { CXXLAPACK_DEBUG_OUT("dpteqr"); IndexType info; LAPACK_IMPL(dpteqr)(&compz, n, d, e, Z, &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pteqr(char compz, IndexType n, float *d, float *e, std::complex *Z, IndexType ldZ, float *rWork) { CXXLAPACK_DEBUG_OUT("cpteqr"); IndexType info; LAPACK_IMPL(cpteqr)(&compz, n, d, e, reinterpret_cast(Z), &ldZ, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pteqr(char compz, IndexType n, double *d, double *e, std::complex *Z, IndexType ldZ, double *rWork) { CXXLAPACK_DEBUG_OUT("zpteqr"); IndexType info; LAPACK_IMPL(zpteqr)(&compz, n, d, e, reinterpret_cast(Z), &ldZ, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTEQR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ptrfs.h000066400000000000000000000100211456314707100243640ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTRFS_H #define CXXLAPACK_INTERFACE_PTRFS_H 1 #include namespace cxxlapack { template IndexType ptrfs(IndexType n, IndexType nRhs, const float *d, const float *e, const float *df, const float *ef, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work); template IndexType ptrfs(IndexType n, IndexType nRhs, const double *d, const double *e, const double *df, const double *ef, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work); template IndexType ptrfs(IndexType n, IndexType nRhs, const float *d, const std::complex *e, const float *df, const std::complex *ef, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work); template IndexType ptrfs(IndexType n, IndexType nRhs, const double *d, const std::complex *e, const double *df, const std::complex *ef, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTRFS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ptrfs.tcc000066400000000000000000000151211456314707100247140ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTRFS_TCC #define CXXLAPACK_INTERFACE_PTRFS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ptrfs(IndexType n, IndexType nRhs, const float *d, const float *e, const float *df, const float *ef, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work) { CXXLAPACK_DEBUG_OUT("sptrfs"); IndexType info; LAPACK_IMPL(sptrfs)(&n, &nRhs, d, e, df, ef, B, &ldB, X, &ldX, ferr, berr, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ptrfs(IndexType n, IndexType nRhs, const double *d, const double *e, const double *df, const double *ef, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work) { CXXLAPACK_DEBUG_OUT("dptrfs"); IndexType info; LAPACK_IMPL(dptrfs)(&n, &nRhs, d, e, df, ef, B, &ldB, X, &ldX, ferr, berr, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ptrfs(IndexType n, IndexType nRhs, const float *d, const std::complex *e, const float *df, const std::complex *ef, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work) { CXXLAPACK_DEBUG_OUT("cptrfs"); IndexType info; LAPACK_IMPL(cptrfs)(&n, &nRhs, d, reinterpret_cast(e), df, reinterpret_cast(ef), reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ptrfs(IndexType n, IndexType nRhs, const double *d, const std::complex *e, const double *df, const std::complex *ef, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work) { CXXLAPACK_DEBUG_OUT("zptrfs"); IndexType info; LAPACK_IMPL(zptrfs)(&n, &nRhs, d, reinterpret_cast(e), df, reinterpret_cast(ef), reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTRFS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ptsv.h000066400000000000000000000055261456314707100242400ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTSV_H #define CXXLAPACK_INTERFACE_PTSV_H 1 #include namespace cxxlapack { template IndexType ptsv (IndexType n, IndexType nRhs, float *d, float *e, float *B, IndexType &ldB); template IndexType ptsv (IndexType n, IndexType nRhs, double *d, double *e, double *B, IndexType &ldB); template IndexType ptsv (IndexType n, IndexType nRhs, std::complex *d, std::complex *e, std::complex *B, IndexType &ldB); template IndexType ptsv (IndexType n, IndexType nRhs, std::complex *d, std::complex *e, std::complex *B, IndexType &ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTSV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ptsv.tcc000066400000000000000000000111001456314707100245430ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTSV_TCC #define CXXLAPACK_INTERFACE_PTSV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ptsv (IndexType n, IndexType nRhs, float *d, float *e, float *B, IndexType &ldB) { CXXLAPACK_DEBUG_OUT("sptsv"); IndexType info; LAPACK_IMPL(sptsv) (&n, &nRhs, d, e, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ptsv (IndexType n, IndexType nRhs, double *d, double *e, double *B, IndexType &ldB) { CXXLAPACK_DEBUG_OUT("dptsv"); IndexType info; LAPACK_IMPL(dptsv) (&n, &nRhs, d, e, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ptsv (IndexType n, IndexType nRhs, std::complex *d, std::complex *e, std::complex *B, IndexType &ldB) { CXXLAPACK_DEBUG_OUT("cptsv"); IndexType info; LAPACK_IMPL(cptsv) (&n, &nRhs, reinterpret_cast(d), reinterpret_cast(e), reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ptsv (IndexType n, IndexType nRhs, std::complex *d, std::complex *e, std::complex *B, IndexType &ldB) { CXXLAPACK_DEBUG_OUT("zptsv"); IndexType info; LAPACK_IMPL(zptsv) (&n, &nRhs, reinterpret_cast(d), reinterpret_cast(e), reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTSV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ptsvx.h000066400000000000000000000105411456314707100244210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTSVX_H #define CXXLAPACK_INTERFACE_PTSVX_H 1 #include namespace cxxlapack { template IndexType ptsvx(char fact, IndexType n, IndexType nRhs, const float *d, const float *e, float *df, float *ef, const float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work); template IndexType ptsvx(char fact, IndexType n, IndexType nRhs, const double *d, const double *e, double *df, double *ef, const double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work); template IndexType ptsvx(char fact, IndexType n, IndexType nRhs, const float *d, const std::complex *e, float *df, std::complex *ef, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work); template IndexType ptsvx(char fact, IndexType n, IndexType nRhs, const double *d, const std::complex *e, double *df, std::complex *ef, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTSVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ptsvx.tcc000066400000000000000000000161571456314707100247540ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTSVX_TCC #define CXXLAPACK_INTERFACE_PTSVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ptsvx(char fact, IndexType n, IndexType nRhs, const float *d, const float *e, float *df, float *ef, const float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work) { CXXLAPACK_DEBUG_OUT("sptsvx"); IndexType info; LAPACK_IMPL(sptsvx)(&fact, &n, &nRhs, d, e, df, ef, B, &ldB, X, &ldX, &rCond, ferr, berr, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ptsvx(char fact, IndexType n, IndexType nRhs, const double *d, const double *e, double *df, double *ef, const double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work) { CXXLAPACK_DEBUG_OUT("dptsvx"); IndexType info; LAPACK_IMPL(dptsvx)(&fact, &n, &nRhs, d, e, df, ef, B, &ldB, X, &ldX, &rCond, ferr, berr, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ptsvx(char fact, IndexType n, IndexType nRhs, const float *d, const std::complex *e, double *df, std::complex *ef, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work) { CXXLAPACK_DEBUG_OUT("cptsvx"); IndexType info; LAPACK_IMPL(cptsvx)(&fact, &n, &nRhs, d, reinterpret_cast(e), df, reinterpret_cast(ef), reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ptsvx(char fact, IndexType n, IndexType nRhs, const double *d, const std::complex *e, double *df, std::complex *ef, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work) { CXXLAPACK_DEBUG_OUT("zptsvx"); IndexType info; LAPACK_IMPL(zptsvx)(&fact, &n, &nRhs, d, reinterpret_cast(e), df, reinterpret_cast(ef), reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTSVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pttrf.h000066400000000000000000000046351456314707100244030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTTRF_H #define CXXLAPACK_INTERFACE_PTTRF_H 1 #include namespace cxxlapack { template IndexType pttrf(IndexType n, float *d, float *e); template IndexType pttrf(IndexType n, double *d, double *e); template IndexType dpttrf(IndexType n, float *d, std::complex *e); template IndexType dpttrf(IndexType n, double *d, std::complex *e); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTTRF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pttrf.tcc000066400000000000000000000073471456314707100247300ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTTRF_TCC #define CXXLAPACK_INTERFACE_PTTRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pttrf(IndexType n, float *d, float *e) { CXXLAPACK_DEBUG_OUT("spttrf"); IndexType info; LAPACK_IMPL(spttrf)(&n, d, e, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pttrf(IndexType n, double *d, double *e) { CXXLAPACK_DEBUG_OUT("dpttrf"); IndexType info; LAPACK_IMPL(dpttrf)(&n, d, e, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pttrf(IndexType n, float *d, std::complex *e) { CXXLAPACK_DEBUG_OUT("cpttrf"); IndexType info; LAPACK_IMPL(cpttrf)(&n, d, reinterpret_cast(e), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pttrf(IndexType n, double *d, std::complex *e) { CXXLAPACK_DEBUG_OUT("zpttrf"); IndexType info; LAPACK_IMPL(zpttrf)(&n, d, reinterpret_cast(e), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTTRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pttrs.h000066400000000000000000000056351456314707100244210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTTRS_H #define CXXLAPACK_INTERFACE_PTTRS_H 1 #include namespace cxxlapack { template IndexType pttrs(IndexType n, IndexType nRhs, const float *d, const float *e, float *B, IndexType ldB); template IndexType pttrs(IndexType n, IndexType nRhs, const double *d, const double *e, double *B, IndexType ldB); template IndexType pttrs(IndexType n, IndexType nRhs, const float *d, const std::complex *e, std::complex *B, IndexType ldB); template IndexType pttrs(IndexType n, IndexType nRhs, const double *d, const std::complex *e, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTTRS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/pttrs.tcc000066400000000000000000000111361456314707100247340ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTTRS_TCC #define CXXLAPACK_INTERFACE_PTTRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType pttrs(IndexType n, IndexType nRhs, const float *d, const float *e, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("spttrs"); IndexType info; LAPACK_IMPL(spttrs)(&n, &nRhs, d, e, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pttrs(IndexType n, IndexType nRhs, const double *d, const double *e, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dpttrs"); IndexType info; LAPACK_IMPL(dpttrs)(&n, &nRhs, d, e, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pttrs(IndexType n, IndexType nRhs, const float *d, const std::complex *e, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("cpttrs"); IndexType info; LAPACK_IMPL(cpttrs)(&n, &nRhs, d, reinterpret_cast(e), reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType pttrs(IndexType n, IndexType nRhs, const double *d, const std::complex *e, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zpttrs"); IndexType info; LAPACK_IMPL(zpttrs)(&n, &nRhs, d, reinterpret_cast(e), reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTTRS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ptts2.h000066400000000000000000000056351456314707100243210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTTS2_H #define CXXLAPACK_INTERFACE_PTTS2_H 1 #include namespace cxxlapack { template IndexType ptts2(IndexType n, IndexType nRhs, const float *d, const float *e, float *B, IndexType ldB); template IndexType ptts2(IndexType n, IndexType nRhs, const double *d, const double *e, double *B, IndexType ldB); template IndexType ptts2(IndexType n, IndexType nRhs, const float *d, const std::complex *e, std::complex *B, IndexType ldB); template IndexType ptts2(IndexType n, IndexType nRhs, const double *d, const std::complex *e, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTTS2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ptts2.tcc000066400000000000000000000075021456314707100246360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_PTTS2_TCC #define CXXLAPACK_INTERFACE_PTTS2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void pttrs(IndexType n, IndexType nRhs, const float *d, const float *e, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("sptts2"); LAPACK_IMPL(sptts2)(&n, &nRhs, d, e, B, &ldB); } template void pttrs(IndexType n, IndexType nRhs, const double *d, const double *e, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dptts2"); LAPACK_IMPL(dptts2)(&n, &nRhs, d, e, B, &ldB); } template void ptts2(IndexType n, IndexType nRhs, const float *d, const std::complex *e, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("cptts2"); LAPACK_IMPL(cptts2)(&n, &nRhs, d, reinterpret_cast(e), reinterpret_cast(B), &ldB); } template void ptts2(IndexType n, IndexType nRhs, const double *d, const std::complex *e, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zptts2"); LAPACK_IMPL(zptts2)(&n, &nRhs, d, reinterpret_cast(e), reinterpret_cast(B), &ldB); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_PTTS2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/rot.h000066400000000000000000000045771456314707100240550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ROT_H #define CXXLAPACK_INTERFACE_ROT_H 1 #include namespace cxxlapack { template void rot (IndexType m, std::complex *cx, IndexType incx, std::complex *cy, IndexType incy, float c, float s); template void rot (IndexType m, std::complex *cx, IndexType incx, std::complex *cy, IndexType incy, double c, double s); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ROT_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/rot.tcc000066400000000000000000000057461456314707100243760ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ROT_TCC #define CXXLAPACK_INTERFACE_ROT_TCC #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void rot (IndexType m, std::complex *cx, IndexType incx, std::complex *cy, IndexType incy, float c, float s) { CXXLAPACK_DEBUG_OUT("crot"); LAPACK_IMPL(crot) (&m, reinterpret_cast(cx), &incx, reinterpret_cast(cy), &incy, &c, &s); } template void rot (IndexType m, std::complex *cx, IndexType incx, std::complex *cy, IndexType incy, double c, double s) { CXXLAPACK_DEBUG_OUT("zrot"); LAPACK_IMPL(zrot) (&m, reinterpret_cast(cx), &incx, reinterpret_cast(cy), &incy, &c, &s); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ROT_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/rscl.h000066400000000000000000000047621456314707100242100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_RSCL_H #define CXXLAPACK_INTERFACE_RSCL_H 1 #include namespace cxxlapack { template void rscl(IndexType n, const float &sa, float *sx, IndexType incX); template void rscl(IndexType n, const double &sa, double *sx, IndexType incX); template void rscl(IndexType n, const float &sa, std::complex *sx, IndexType incX); template void rscl(IndexType n, const double &sa, std::complex *sx, IndexType incX); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_RSCL_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/rscl.tcc000066400000000000000000000063531456314707100245300ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_RSCL_TCC #define CXXLAPACK_INTERFACE_RSCL_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void rscl(IndexType n, const float &sa, float *sx, IndexType incX) { CXXLAPACK_DEBUG_OUT("srscl"); LAPACK_IMPL(srscl)(&n, &sa, sx, &incX); } template void rscl(IndexType n, const double &sa, double *sx, IndexType incX) { CXXLAPACK_DEBUG_OUT("drscl"); LAPACK_IMPL(drscl)(&n, &sa, sx, &incX); } template void rscl(IndexType n, const float &sa, std::complex *sx, IndexType incX) { CXXLAPACK_DEBUG_OUT("csrscl"); LAPACK_IMPL(csrscl)(&n, &sa, reinterpret_cast(sx), &incX); } template void rscl(IndexType n, const double &sa, std::complex *sx, IndexType incX) { CXXLAPACK_DEBUG_OUT("zdrscl"); LAPACK_IMPL(zdrscl)(&n, &sa, reinterpret_cast(sx), &incX); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_RSCL_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbev.h000066400000000000000000000051361456314707100242000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBEV_H #define CXXLAPACK_INTERFACE_SBEV_H 1 #include namespace cxxlapack { template IndexType sbev(char jobZ, char upLo, IndexType n, IndexType kd, float *Ab, IndexType ldAb, float *w, float *z, IndexType ldZ, float *work); template IndexType sbev(char jobZ, char upLo, IndexType n, IndexType kd, double *Ab, IndexType ldAb, double *w, double *z, IndexType ldZ, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBEV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbev.tcc000066400000000000000000000071571456314707100245270ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBEV_TCC #define CXXLAPACK_INTERFACE_SBEV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sbev(char jobz, char upLo, IndexType n, IndexType kd, float *Ab, IndexType ldAb, float *w, float *Z, IndexType ldZ, float *work) { CXXLAPACK_DEBUG_OUT("ssbev"); IndexType info; LAPACK_IMPL(ssbev)(&jobz, &upLo, &n, &kd, Ab, &ldAb, w, Z, &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sbev(char jobz, char upLo, IndexType n, IndexType kd, double *Ab, IndexType ldAb, double *w, double *Z, IndexType ldZ, double *work) { CXXLAPACK_DEBUG_OUT("dsbev"); IndexType info; LAPACK_IMPL(dsbev)(&jobz, &upLo, &n, &kd, Ab, &ldAb, w, Z, &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBEV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbevd.h000066400000000000000000000055431456314707100243460ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBEVD_H #define CXXLAPACK_INTERFACE_SBEVD_H 1 #include namespace cxxlapack { template IndexType sbevd(char jobz, char uplo, IndexType n, IndexType kd, float *Ab, IndexType ldAb, float *w, float *Z, IndexType ldZ, float *work, IndexType lWork, IndexType *iWork, IndexType liWork); template IndexType sbevd(char jobz, char uplo, IndexType n, IndexType kd, double *Ab, IndexType ldAb, double *w, double *Z, IndexType ldZ, double *work, IndexType lWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBEVD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbevd.tcc000066400000000000000000000100641456314707100246620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBEVD_TCC #define CXXLAPACK_INTERFACE_SBEVD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sbevd(char jobz, char uplo, IndexType n, IndexType kd, float *Ab, IndexType ldAb, float *w, float *Z, IndexType ldZ, float *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("ssbevd"); IndexType info; LAPACK_IMPL(ssbevd)(&jobz, &uplo, &n, &kd, Ab, &ldAb, w, Z, &ldZ, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sbevd(char jobz, char uplo, IndexType n, IndexType kd, double *Ab, IndexType ldAb, double *w, double *Z, IndexType ldZ, double *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("dsbevd"); IndexType info; LAPACK_IMPL(dsbevd)(&jobz, &uplo, &n, &kd, Ab, &ldAb, w, Z, &ldZ, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBEVD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbevx.h000066400000000000000000000066571456314707100244010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBEVX_H #define CXXLAPACK_INTERFACE_SBEVX_H 1 #include namespace cxxlapack { template IndexType sbevx(char jobz, char range, char uplo, IndexType n, IndexType kd, float *Ab, IndexType ldAb, float *Q, IndexType ldQ, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType &ldZ, float *work, IndexType *iWork, IndexType *ifail); template IndexType sbevx(char jobz, char range, char uplo, IndexType n, IndexType kd, double *Ab, IndexType ldAb, double *Q, IndexType ldQ, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType &ldZ, double *work, IndexType *iWork, IndexType *ifail); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBEVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbevx.tcc000066400000000000000000000120201456314707100247000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBEVX_TCC #define CXXLAPACK_INTERFACE_SBEVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sbevx(char jobz, char range, char uplo, IndexType n, IndexType kd, float *Ab, IndexType ldAb, float *Q, IndexType ldQ, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType &ldZ, float *work, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("ssbevx"); IndexType info; LAPACK_IMPL(ssbevx)(&jobz, &range, &uplo, &n, &kd, Ab, &ldAb, Q, &ldQ, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, work, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sbevx(char jobz, char range, char uplo, IndexType n, IndexType kd, double *Ab, IndexType ldAb, double *Q, IndexType ldQ, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType &ldZ, double *work, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("dsbevx"); IndexType info; LAPACK_IMPL(dsbevx)(&jobz, &range, &uplo, &n, &kd, Ab, &ldAb, Q, &ldQ, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, work, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBEVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbgst.h000066400000000000000000000054121456314707100243600ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBGST_H #define CXXLAPACK_INTERFACE_SBGST_H 1 #include namespace cxxlapack { template IndexType sbgst(char vect, char uplo, IndexType n, IndexType kA, IndexType kB, float *Ab, IndexType ldAb, const float *BB, IndexType ldBB, float *X, IndexType ldX, float *work); template IndexType sbgst(char vect, char uplo, IndexType n, IndexType kA, IndexType kB, double *Ab, IndexType ldAb, const double *BB, IndexType ldBB, double *X, IndexType ldX, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBGST_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbgst.tcc000066400000000000000000000076371456314707100247150ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBGST_TCC #define CXXLAPACK_INTERFACE_SBGST_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sbgst(char vect, char uplo, IndexType n, IndexType kA, IndexType kB, float *Ab, IndexType ldAb, const float *BB, IndexType ldBB, float *X, IndexType ldX, float *work) { CXXLAPACK_DEBUG_OUT("ssbgst"); IndexType info; LAPACK_IMPL(ssbgst)(&vect, &uplo, &n, &kA, &kB, Ab, &ldAb, BB, &ldBB, X, &ldX, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sbgst(char vect, char uplo, IndexType n, IndexType kA, IndexType kB, double *Ab, IndexType ldAb, const double *BB, IndexType ldBB, double *X, IndexType ldX, double *work) { CXXLAPACK_DEBUG_OUT("dsbgst"); IndexType info; LAPACK_IMPL(dsbgst)(&vect, &uplo, &n, &kA, &kB, Ab, &ldAb, BB, &ldBB, X, &ldX, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBGST_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbgv.h000066400000000000000000000055161456314707100242040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBGV_H #define CXXLAPACK_INTERFACE_SBGV_H 1 #include namespace cxxlapack { template IndexType sbgv (char jobz, char uplo, IndexType n, IndexType kA, IndexType kB, float *Ab, IndexType ldAb, float Bb, IndexType ldBb, float *w, float *Z, IndexType ldZ, float *work); template IndexType sbgv (char jobz, char uplo, IndexType n, IndexType kA, IndexType kB, double *Ab, IndexType ldAb, double Bb, IndexType ldBb, double *w, double *Z, IndexType ldZ, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBGV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbgv.tcc000066400000000000000000000100151456314707100245140ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBGV_TCC #define CXXLAPACK_INTERFACE_SBGV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sbgv (char jobz, char uplo, IndexType n, IndexType kA, IndexType kB, float *Ab, IndexType ldAb, float Bb, IndexType ldBb, float *w, float *Z, IndexType ldZ, float *work) { CXXLAPACK_DEBUG_OUT("ssbgv"); IndexType info; LAPACK_IMPL(ssbgv) (&jobz, &uplo, &n, &kA, &kB, Ab, &ldAb, Bb, &ldBb, w, Z, &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sbgv (char jobz, char uplo, IndexType n, IndexType kA, IndexType kB, double *Ab, IndexType ldAb, double Bb, IndexType ldBb, double *w, double *Z, IndexType ldZ, double *work) { CXXLAPACK_DEBUG_OUT("dsbgv"); IndexType info; LAPACK_IMPL(dsbgv) (&jobz, &uplo, &n, &kA, &kB, Ab, &ldAb, Bb, &ldBb, w, Z, &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBGV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbgvd.h000066400000000000000000000061011456314707100243370ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBGVD_H #define CXXLAPACK_INTERFACE_SBGVD_H 1 #include namespace cxxlapack { template IndexType sbgvd(char jobz, char uplo, IndexType n, IndexType kA, IndexType kB, float *Ab, IndexType ldAb, float *Bb, IndexType ldBb, float *w, float *Z, IndexType ldZ, float *work, IndexType lWork, float *iWork, IndexType liWork); template IndexType sbgvd(char jobz, char uplo, IndexType n, IndexType kA, IndexType kB, double *Ab, IndexType ldAb, double *Bb, IndexType ldBb, double *w, double *Z, IndexType ldZ, double *work, IndexType lWork, double *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBGVD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbgvd.tcc000066400000000000000000000106501456314707100246650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBGVD_TCC #define CXXLAPACK_INTERFACE_SBGVD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sbgvd(char jobz, char uplo, IndexType n, IndexType kA, IndexType kB, float *Ab, IndexType ldAb, float *Bb, IndexType ldBb, float *w, float *Z, IndexType ldZ, float *work, IndexType lWork, float *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("ssbgvd"); IndexType info; LAPACK_IMPL(ssbgvd)(&jobz, &uplo &n, &kA, &kB, Ab, &ldAb, Bb, &ldBb, w, Z, &ldZ, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sbgvd(char jobz, char uplo, IndexType n, IndexType kA, IndexType kB, double *Ab, IndexType ldAb, double *Bb, IndexType ldBb, double *w, double *Z, IndexType ldZ, double *work, IndexType lWork, double *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("dsbgvd"); IndexType info; LAPACK_IMPL(dsbgvd)(&jobz, &uplo &n, &kA, &kB, Ab, &ldAb, Bb, &ldBb, w, Z, &ldZ, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBGVD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbgvx.h000066400000000000000000000072131456314707100243700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBGVX_H #define CXXLAPACK_INTERFACE_SBGVX_H 1 #include namespace cxxlapack { template IndexType sbgvx(char jobz, char range, char uplo, IndexType n, IndexType kA, IndexType kB, float *Ab, IndexType ldAb, float *Bb, IndexType ldBb, float *Q, IndexType ldQ, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, float *work, IndexType *iWork, IndexType *ifail); template IndexType sbgvx(char jobz, char range, char uplo, IndexType n, IndexType kA, IndexType kB, double *Ab, IndexType ldAb, double *Bb, IndexType ldBb, double *Q, IndexType ldQ, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, double *work, IndexType *iWork, IndexType *ifail); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBGVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbgvx.tcc000066400000000000000000000126041456314707100247120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBGVX_TCC #define CXXLAPACK_INTERFACE_SBGVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sbgvx(char jobz, char range, char uplo, IndexType n, IndexType kA, IndexType kB, float *Ab, IndexType ldAb, float *Bb, IndexType ldBb, float *Q, IndexType ldQ, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, float *work, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("ssbgvx"); IndexType info; LAPACK_IMPL(ssbgvx)(&jobz, &range, &uplo, &n, &kA, &kB, Ab, &ldAb, Bb, &ldBb, Q, &ldQ, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, work, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sbgvx(char jobz, char range, char uplo, IndexType n, IndexType kA, IndexType kB, double *Ab, IndexType ldAb, double *Bb, IndexType ldBb, double *Q, IndexType ldQ, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, double *work, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("dsbgvx"); IndexType info; LAPACK_IMPL(dsbgvx)(&jobz, &range, &uplo, &n, &kA, &kB, Ab, &ldAb, Bb, &ldBb, Q, &ldQ, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, work, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBGVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbtrd.h000066400000000000000000000052751456314707100243630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBTRD_H #define CXXLAPACK_INTERFACE_SBTRD_H 1 #include namespace cxxlapack { template IndexType sbtrd(char vect, char uplo, IndexType n, IndexType kd, float *Ab, IndexType ldAb, float *d, float *e, float *Q, IndexType ldQ, float *work); template IndexType sbtrd(char vect, char uplo, IndexType n, IndexType kd, double *Ab, IndexType ldAb, double *d, double *e, double *Q, IndexType ldQ, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBTRD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sbtrd.tcc000066400000000000000000000074241456314707100247030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SBTRD_TCC #define CXXLAPACK_INTERFACE_SBTRD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sbtrd(char vect, char uplo, IndexType n, IndexType kd, float *Ab, IndexType ldAb, float *d, float *e, float *Q, IndexType ldQ, float *work) { CXXLAPACK_DEBUG_OUT("ssbtrd"); IndexType info; LAPACK_IMPL(ssbtrd)(&vect, &uplo, &n, &kd, Ab, &ldAb, d, e, Q, &ldQ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sbtrd(char vect, char uplo, IndexType n, IndexType kd, double *Ab, IndexType ldAb, double *d, double *e, double *Q, IndexType ldQ, double *work) { CXXLAPACK_DEBUG_OUT("dsbtrd"); IndexType info; LAPACK_IMPL(dsbtrd)(&vect, &uplo, &n, &kd, Ab, &ldAb, d, e, Q, &ldQ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SBTRD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sfrk.h000066400000000000000000000051701456314707100242040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SFRK_H #define CXXLAPACK_INTERFACE_SFRK_H 1 #include namespace cxxlapack { template IndexType sfrk (char transr, char uplo, char trans, IndexType n, IndexType k, float alpha, const float *A, IndexType ldA, float beta, float *C); template IndexType sfrk (char transr, char uplo, char trans, IndexType n, IndexType k, double alpha, const double *A, IndexType ldA, double beta, double *C); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SFRK_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sfrk.tcc000066400000000000000000000072551456314707100245340ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SFRK_TCC #define CXXLAPACK_INTERFACE_SFRK_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sfrk (char transr, char uplo, char trans, IndexType n, IndexType k, float alpha, const float *A, IndexType ldA, float beta, float *C) { CXXLAPACK_DEBUG_OUT("ssfrk"); IndexType info; LAPACK_IMPL(ssfrk) (&transr, &uplo, &trans, &n, &k, &alpha, A, &ldA, &beta, C, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sfrk (char transr, char uplo, char trans, IndexType n, IndexType k, double alpha, const double *A, IndexType ldA, double beta, double *C) { CXXLAPACK_DEBUG_OUT("dsfrk"); IndexType info; LAPACK_IMPL(dsfrk) (&transr, &uplo, &trans, &n, &k, &alpha, A, &ldA, &beta, C, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SFRK_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sgesv.h000066400000000000000000000044441456314707100243710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SGESV_H #define CXXLAPACK_INTERFACE_SGESV_H 1 #include namespace cxxlapack { template IndexType sgesv(IndexType n, IndexType nRhs, double *A, IndexType ldA, IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double *work, float *swork, IndexType &iter); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SGESV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sgesv.tcc000066400000000000000000000056371456314707100247200ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SGESV_TCC #define CXXLAPACK_INTERFACE_SGESV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sgesv(IndexType n, IndexType nRhs, double *A, IndexType ldA, IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double *work, float *swork, IndexType &iter) { CXXLAPACK_DEBUG_OUT("dsgesv"); IndexType info; LAPACK_IMPL(dsgesv)(&n, &nRhs, A, &ldA, iPiv, B, &ldB, X, &ldX, work, swork, &iter, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SGESV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spev.h000066400000000000000000000047361456314707100242230ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPEV_H #define CXXLAPACK_INTERFACE_SPEV_H 1 #include namespace cxxlapack { template IndexType spev (char jobz, char uplo, IndexType n, float *Ap, float *w, float *Z, IndexType ldZ, float *work); template IndexType spev (char jobz, char uplo, IndexType n, double *Ap, double *w, double *Z, IndexType ldZ, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPEV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spev.tcc000066400000000000000000000066351456314707100245450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPEV_TCC #define CXXLAPACK_INTERFACE_SPEV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType spev (char jobz, char uplo, IndexType n, float *Ap, float *w, float *Z, IndexType ldZ, float *work) { CXXLAPACK_DEBUG_OUT("sspev"); IndexType info; LAPACK_IMPL(sspev) (&jobz, &uplo, &n, Ap, w, Z, &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spev (char jobz, char uplo, IndexType n, double *Ap, double *w, double *Z, IndexType ldZ, double *work) { CXXLAPACK_DEBUG_OUT("dspev"); IndexType info; LAPACK_IMPL(dspev) (&jobz, &uplo, &n, Ap, w, Z, &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPEV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spevd.h000066400000000000000000000053171456314707100243630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPEVD_H #define CXXLAPACK_INTERFACE_SPEVD_H 1 #include namespace cxxlapack { template IndexType spevd(char jobz, char uplo, IndexType n, float *Ap, float *w, float *Z, IndexType ldZ, float *work, IndexType lWork, IndexType *iWork, IndexType liWork); template IndexType spevd(char jobz, char uplo, IndexType n, double *Ap, double *w, double *Z, IndexType ldZ, double *work, IndexType lWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPEVD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spevd.tcc000066400000000000000000000074701456314707100247070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPEVD_TCC #define CXXLAPACK_INTERFACE_SPEVD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType spevd(char jobz, char uplo, IndexType n, float *Ap, float *w, float *Z, IndexType ldZ, float *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("sspevd"); IndexType info; LAPACK_IMPL(sspevd)(&jobz, &uplo, &n, Ap, w, Z, &ldZ, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spevd(char jobz, char uplo, IndexType n, double *Ap, double *w, double *Z, IndexType ldZ, double *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("dspevd"); IndexType info; LAPACK_IMPL(dspevd)(&jobz, &uplo, &n, Ap, w, Z, &ldZ, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPEVD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spevx.h000066400000000000000000000062071456314707100244060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPEVX_H #define CXXLAPACK_INTERFACE_SPEVX_H 1 #include namespace cxxlapack { template IndexType spevx(char jobz, char range, char uplo, IndexType n, float *Ap, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, float *work, IndexType *iWork, IndexType *ifail); template IndexType spevx(char jobz, char range, char uplo, IndexType n, double *Ap, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, double *work, IndexType *iWork, IndexType *ifail); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPEVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spevx.tcc000066400000000000000000000110361456314707100247240ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPEVX_TCC #define CXXLAPACK_INTERFACE_SPEVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType spevx(char jobz, char range, char uplo, IndexType n, float *Ap, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, float *work, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("sspevx"); IndexType info; LAPACK_IMPL(sspevx)(&jobz, &range, &uplo, &n, Ap, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, work, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spevx(char jobz, char range, char uplo, IndexType n, double *Ap, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, double *work, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("dspevx"); IndexType info; LAPACK_IMPL(dspevx)(&jobz, &range, &uplo, &n, Ap, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, work, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPEVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spgst.h000066400000000000000000000044051456314707100243770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPGST_H #define CXXLAPACK_INTERFACE_SPGST_H 1 #include namespace cxxlapack { template IndexType spgst(IndexType itype, char uplo, IndexType n, float *Ap, const float *Bp); template IndexType spgst(IndexType itype, char uplo, IndexType n, double *Ap, const double *Bp); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPGST_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spgst.tcc000066400000000000000000000060661456314707100247260ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPGST_TCC #define CXXLAPACK_INTERFACE_SPGST_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType spgst(IndexType itype, char uplo, IndexType n, float *Ap, const float *Bp) { CXXLAPACK_DEBUG_OUT("sspgst"); IndexType info; LAPACK_IMPL(sspgst)(&itype, &uplo, &n, Ap, &Bp, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spgst(IndexType itype, char uplo, IndexType n, double *Ap, const double *Bp) { CXXLAPACK_DEBUG_OUT("dspgst"); IndexType info; LAPACK_IMPL(dspgst)(&itype, &uplo, &n, Ap, &Bp, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPGST_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spgv.h000066400000000000000000000051661456314707100242230ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPGV_H #define CXXLAPACK_INTERFACE_SPGV_H 1 #include namespace cxxlapack { template IndexType spgv (IndexType itype, char jobz, char uplo, IndexType n, float *Ap, float *Bp, float *w, float *Z, IndexType ldZ, float *work); template IndexType spgv (IndexType itype, char jobz, char uplo, IndexType n, double *Ap, double *Bp, double *w, double *Z, IndexType ldZ, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPGV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spgv.tcc000066400000000000000000000072351456314707100245440ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPGV_TCC #define CXXLAPACK_INTERFACE_SPGV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType spgv (IndexType itype, char jobz, char uplo, IndexType n, float *Ap, float *Bp, float *w, float *Z, IndexType ldZ, float *work) { CXXLAPACK_DEBUG_OUT("sspgv"); IndexType info; LAPACK_IMPL(sspgv) (&itype, &jobz, &uplo, &n, Ap, Bp, w, Z, &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spgv (IndexType itype, char jobz, char uplo, IndexType n, double *Ap, double *Bp, double *w, double *Z, IndexType ldZ, double *work) { CXXLAPACK_DEBUG_OUT("dspgv"); IndexType info; LAPACK_IMPL(dspgv) (&itype, &jobz, &uplo, &n, Ap, Bp, w, Z, &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPGV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spgvd.h000066400000000000000000000055471456314707100243720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPGVD_H #define CXXLAPACK_INTERFACE_SPGVD_H 1 #include namespace cxxlapack { template IndexType spgvd(IndexType itype, char jobz, char uplo, IndexType n, float *Ap, float *Bp, float *w, float *Z, IndexType ldZ, float *work, IndexType lWork, IndexType *iWork, IndexType liWork); template IndexType spgvd(IndexType itype, char jobz, char uplo, IndexType n, double *Ap, double *Bp, double *w, double *Z, IndexType ldZ, double *work, IndexType lWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPGVD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spgvd.tcc000066400000000000000000000100701456314707100246770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPGVD_TCC #define CXXLAPACK_INTERFACE_SPGVD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType spgvd(IndexType itype, char jobz, char uplo, IndexType n, float *Ap, float *Bp, float *w, float *Z, IndexType ldZ, float *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("sspgvd"); IndexType info; LAPACK_IMPL(sspgvd)(&itype, &jobz, &uplo, &n, Ap, Bp, w, Z, &ldZ, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spgvd(IndexType itype, char jobz, char uplo, IndexType n, double *Ap, double *Bp, double *w, double *Z, IndexType ldZ, double *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("dspgvd"); IndexType info; LAPACK_IMPL(dspgvd)(&itype, &jobz, &uplo, &n, Ap, Bp, w, Z, &ldZ, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPGVD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spgvx.h000066400000000000000000000064371456314707100244150ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPGVX_H #define CXXLAPACK_INTERFACE_SPGVX_H 1 #include namespace cxxlapack { template IndexType spgvx(IndexType itype, char jobz, char range, char uplo, IndexType n, float *Ap, float *Bp, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, float *work, IndexType *iWork, IndexType *ifail); template IndexType spgvx(IndexType itype, char jobz, char range, char uplo, IndexType n, double *Ap, double *Bp, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, double *work, IndexType *iWork, IndexType *ifail); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPGVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spgvx.tcc000066400000000000000000000114361456314707100247320ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPGVX_TCC #define CXXLAPACK_INTERFACE_SPGVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType spgvx(IndexType itype, char jobz, char range, char uplo, IndexType n, float *Ap, float *Bp, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, float *work, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("sspevx"); IndexType info; LAPACK_IMPL(sspevx)(&itype, &jobz, &range, &uplo, &n, Ap, Bp, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, work, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spgvx(IndexType itype, char jobz, char range, char uplo, IndexType n, double *Ap, double *Bp, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, double *work, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("dspevx"); IndexType info; LAPACK_IMPL(dspevx)(&itype, &jobz, &range, &uplo, &n, Ap, Bp, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, work, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPGVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spmv.h000066400000000000000000000051741456314707100242300ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPMV_H #define CXXLAPACK_INTERFACE_SPMV_H 1 #include namespace cxxlapack { template void spmv (char uplo, IndexType n, std::complex alpha, const std::complex *Ap, const std::complex *x, IndexType incx, const std::complex beta, std::complex *y, IndexType incy); template void spmv (char uplo, IndexType n, std::complex alpha, const std::complex *Ap, const std::complex *x, IndexType incx, const std::complex beta, std::complex *y, IndexType incy); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPMV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spmv.tcc000066400000000000000000000070531456314707100245500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPMV_TCC #define CXXLAPACK_INTERFACE_SPMV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void spmv (char uplo, IndexType n, std::complex alpha, const std::complex *Ap, const std::complex *x, IndexType incx, const std::complex beta, std::complex *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("cspmv"); LAPACK_IMPL(cspmv)(&uplo, &n, reinterpret_cast(&alpha), reinterpret_cast(Ap), reinterpret_cast(x), &incx, reinterpret_cast(&beta), reinterpret_cast(y), &incy); } template void spmv (char uplo, IndexType n, std::complex alpha, const std::complex *Ap, const std::complex *x, IndexType incx, const std::complex beta, std::complex *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("zspmv"); LAPACK_IMPL(zspmv)(&uplo, &n, reinterpret_cast(&alpha), reinterpret_cast(Ap), reinterpret_cast(x), &incx, reinterpret_cast(&beta), reinterpret_cast(y), &incy); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPMV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sposv.h000066400000000000000000000043751456314707100244170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPOSV_H #define CXXLAPACK_INTERFACE_SPOSV_H 1 #include namespace cxxlapack { template IndexType sposv(char uplo, IndexType n, double *A, IndexType ldA, const double *B, IndexType ldB, double *X, IndexType ldX, double *work, float *swork, IndexType &iter); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPOSV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sposv.tcc000066400000000000000000000055361456314707100247410ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPOSV_TCC #define CXXLAPACK_INTERFACE_SPOSV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sposv(char uplo, IndexType n, double *A, IndexType ldA, const double *B, IndexType ldB, double *X, IndexType ldX, double *work, float *swork, IndexType &iter) { CXXLAPACK_DEBUG_OUT("dsposv"); IndexType info; LAPACK_IMPL(dsposv)(&uplo, &n, A, &ldA, B, &ldB, X, &ldX, work, swork, &iter, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPOSV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spr.h000066400000000000000000000045731456314707100240510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPR_H #define CXXLAPACK_INTERFACE_SPR_H 1 #include namespace cxxlapack { template void spr (char uplo, IndexType n, std::complex alpha, const std::complex *x, IndexType incx, std::complex *Ap); template void spr (char uplo, IndexType n, std::complex alpha, const std::complex *x, IndexType incx, std::complex *Ap); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spr.tcc000066400000000000000000000065201456314707100243650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPR_TCC #define CXXLAPACK_INTERFACE_SPR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void spr (char uplo, IndexType n, std::complex alpha, const std::complex *x, IndexType incx, std::complex *Ap) { CXXLAPACK_DEBUG_OUT("cspr"); IndexType info; LAPACK_IMPL(cspr) (&uplo, &n, reinterpret_cast(&alpha), reinterpret_cast(x), &incx, reinterpret_cast(Ap)); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template void spr (char uplo, IndexType n, std::complex alpha, const std::complex *x, IndexType incx, std::complex *Ap) { CXXLAPACK_DEBUG_OUT("zspr"); IndexType info; LAPACK_IMPL(zspr) (&uplo, &n, reinterpret_cast(&alpha), reinterpret_cast(x), &incx, reinterpret_cast(Ap)); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sprfs.h000066400000000000000000000103251456314707100243720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPRFS_H #define CXXLAPACK_INTERFACE_SPRFS_H 1 #include namespace cxxlapack { template IndexType sprfs(char uplo, IndexType n, IndexType nRhs, const float *Ap, const float *Afp, const IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType sprfs(char uplo, IndexType n, IndexType nRhs, const double *Ap, const double *Afp, const IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType sprfs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *Afp, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType sprfs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *Afp, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPRFS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sprfs.tcc000066400000000000000000000156401456314707100247210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPRFS_TCC #define CXXLAPACK_INTERFACE_SPRFS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sprfs(char uplo, IndexType n, IndexType nRhs, const float *Ap, const float *Afp, const IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("ssprfs"); IndexType info; LAPACK_IMPL(ssprfs)(&uplo, &n, &nRhs, Ap, Afp, iPiv, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sprfs(char uplo, IndexType n, IndexType nRhs, const double *Ap, const double *Afp, const IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dsprfs"); IndexType info; LAPACK_IMPL(dsprfs)(&uplo, &n, &nRhs, Ap, Afp, iPiv, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sprfs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *Afp, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("csprfs"); IndexType info; LAPACK_IMPL(csprfs)(&uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(Afp), iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sprfs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *Afp, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zsprfs"); IndexType info; LAPACK_IMPL(zsprfs)(&uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(Afp), iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPRFS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spsv.h000066400000000000000000000057721456314707100242420ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPSV_H #define CXXLAPACK_INTERFACE_SPSV_H 1 #include namespace cxxlapack { template IndexType spsv (char uplo, IndexType n, IndexType nRhs, float *Ap, IndexType *iPiv, float *B, IndexType ldB); template IndexType spsv (char uplo, IndexType n, IndexType nRhs, double *Ap, IndexType *iPiv, double *B, IndexType ldB); template IndexType spsv (char uplo, IndexType n, IndexType nRhs, std::complex *Ap, IndexType *iPiv, std::complex *B, IndexType ldB); template IndexType spsv (char uplo, IndexType n, IndexType nRhs, std::complex *Ap, IndexType *iPiv, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPSV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spsv.tcc000066400000000000000000000114511456314707100245530ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPSV_TCC #define CXXLAPACK_INTERFACE_SPSV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType spsv (char uplo, IndexType n, IndexType nRhs, float *Ap, IndexType *iPiv, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("sspsv"); IndexType info; LAPACK_IMPL(sspsv) (&uplo, &n, &nRhs, Ap, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spsv (char uplo, IndexType n, IndexType nRhs, double *Ap, IndexType *iPiv, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dspsv"); IndexType info; LAPACK_IMPL(dspsv) (&uplo, &n, &nRhs, Ap, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spsv (char uplo, IndexType n, IndexType nRhs, std::complex *Ap, IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("cspsv"); IndexType info; LAPACK_IMPL(cspsv) (&uplo, &n, &nRhs, reinterpret_cast(Ap), iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spsv (char uplo, IndexType n, IndexType nRhs, std::complex *Ap, IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zspsv"); IndexType info; LAPACK_IMPL(zspsv) (&uplo, &n, &nRhs, reinterpret_cast(Ap), iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPSV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spsvx.h000066400000000000000000000110461456314707100244210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPSVX_H #define CXXLAPACK_INTERFACE_SPSVX_H 1 #include namespace cxxlapack { template IndexType spsvx(char fact, char uplo, IndexType n, IndexType nRhs, const float *Ap, float *Afp, IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType spsvx(char fact, char uplo, IndexType n, IndexType nRhs, const double *Ap, double *Afp, IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType spsvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *Afp, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType spsvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *Afp, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPSVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/spsvx.tcc000066400000000000000000000166771456314707100247620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPSVX_TCC #define CXXLAPACK_INTERFACE_SPSVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType spsvx(char fact, char uplo, IndexType n, IndexType nRhs, const float *Ap, float *Afp, IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("sspsvx"); IndexType info; LAPACK_IMPL(sspsvx)(&fact, &uplo, &n, &nRhs, Ap, Afp, iPiv, B, &ldB, X, &ldX, &rCond, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spsvx(char fact, char uplo, IndexType n, IndexType nRhs, const double *Ap, double *Afp, IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dspsvx"); IndexType info; LAPACK_IMPL(dspsvx)(&fact, &uplo, &n, &nRhs, Ap, Afp, iPiv, B, &ldB, X, &ldX, &rCond, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spsvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *Afp, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("cspsvx"); IndexType info; LAPACK_IMPL(cspsvx)(&fact, &uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(Afp), iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType spsvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *Afp, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zspsvx"); IndexType info; LAPACK_IMPL(zspsvx)(&fact, &uplo, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(Afp), iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPSVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sptrd.h000066400000000000000000000045111456314707100243710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPTRD_H #define CXXLAPACK_INTERFACE_SPTRD_H 1 #include namespace cxxlapack { template IndexType sptrd(char uplo, IndexType n, float *Ap, float *d, float *e, float *tau); template IndexType sptrd(char uplo, IndexType n, double *Ap, double *d, double *e, double *tau); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPTRD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sptrd.tcc000066400000000000000000000062361456314707100247210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPTRD_TCC #define CXXLAPACK_INTERFACE_SPTRD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sptrd(char uplo, IndexType n, float *Ap, float *d, float *e, float *tau) { CXXLAPACK_DEBUG_OUT("ssptrd"); IndexType info; LAPACK_IMPL(ssptrd)(&uplo, &n, Ap, d, e, tau, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sptrd(char uplo, IndexType n, double *Ap, double *d, double *e, double *tau) { CXXLAPACK_DEBUG_OUT("dsptrd"); IndexType info; LAPACK_IMPL(dsptrd)(&uplo, &n, Ap, d, e, tau, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPTRD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sptrf.h000066400000000000000000000051011456314707100243670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPTRF_H #define CXXLAPACK_INTERFACE_SPTRF_H 1 #include namespace cxxlapack { template IndexType sptrf(char uplo, IndexType n, float *Ap, IndexType *iPiv); template IndexType sptrf(char uplo, IndexType n, double *Ap, IndexType *iPiv); template IndexType sptrf(char uplo, IndexType n, std::complex *Ap, IndexType *iPiv); template IndexType sptrf(char uplo, IndexType n, std::complex *Ap, IndexType *iPiv); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPTRF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sptrf.tcc000066400000000000000000000100131456314707100247070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPTRF_TCC #define CXXLAPACK_INTERFACE_SPTRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sptrf(char uplo, IndexType n, float *Ap, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("ssptrf"); IndexType info; LAPACK_IMPL(ssptrf)(&uplo, &n, Ap, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sptrf(char uplo, IndexType n, double *Ap, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("dsptrf"); IndexType info; LAPACK_IMPL(dsptrf)(&uplo, &n, Ap, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sptrf(char uplo, IndexType n, std::complex *Ap, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("csptrf"); IndexType info; LAPACK_IMPL(csptrf)(&uplo, &n, reinterpret_cast(Ap), iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sptrf(char uplo, IndexType n, std::complex *Ap, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("zsptrf"); IndexType info; LAPACK_IMPL(zsptrf)(&uplo, &n, reinterpret_cast(Ap), iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPTRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sptri.h000066400000000000000000000053361456314707100244040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPTRI_H #define CXXLAPACK_INTERFACE_SPTRI_H 1 #include namespace cxxlapack { template IndexType sptri(char uplo, IndexType n, float *Ap, const IndexType *iPiv, float *work); template IndexType sptri(char uplo, IndexType n, double *Ap, const IndexType *iPiv, double *work); template IndexType sptri(char uplo, IndexType n, std::complex *Ap, const IndexType *iPiv, std::complex *work); template IndexType sptri(char uplo, IndexType n, std::complex *Ap, const IndexType *iPiv, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPTRI_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sptri.tcc000066400000000000000000000105071456314707100247220ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPTRI_TCC #define CXXLAPACK_INTERFACE_SPTRI_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sptri(char uplo, IndexType n, float *Ap, const IndexType *iPiv, float *work) { CXXLAPACK_DEBUG_OUT("ssptri"); IndexType info; LAPACK_IMPL(ssptri)(&uplo, &n, Ap, iPiv, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sptri(char uplo, IndexType n, double *Ap, const IndexType *iPiv, double *work) { CXXLAPACK_DEBUG_OUT("dsptri"); IndexType info; LAPACK_IMPL(dsptri)(&uplo, &n, Ap, iPiv, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sptri(char uplo, IndexType n, std::complex *Ap, const IndexType *iPiv, std::complex *work) { CXXLAPACK_DEBUG_OUT("csptri"); IndexType info; LAPACK_IMPL(csptri)(&uplo, &n, reinterpret_cast(Ap), iPiv, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sptri(char uplo, IndexType n, std::complex *Ap, const IndexType *iPiv, std::complex *work) { CXXLAPACK_DEBUG_OUT("zsptri"); IndexType info; LAPACK_IMPL(zsptri)(&uplo, &n, reinterpret_cast(Ap), iPiv, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPTRI_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sptrs.h000066400000000000000000000061031456314707100244070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPTRS_H #define CXXLAPACK_INTERFACE_SPTRS_H 1 #include namespace cxxlapack { template IndexType sptrs(char uplo, IndexType n, IndexType nRhs, const float *Ap, const IndexType *iPiv, float *B, IndexType ldB); template IndexType sptrs(char uplo, IndexType n, IndexType nRhs, const double *Ap, const IndexType *iPiv, double *B, IndexType ldB); template IndexType sptrs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const IndexType *iPiv, std::complex *B, IndexType ldB); template IndexType sptrs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const IndexType *iPiv, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPTRS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sptrs.tcc000066400000000000000000000116001456314707100247270ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SPTRS_TCC #define CXXLAPACK_INTERFACE_SPTRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sptrs(char uplo, IndexType n, IndexType nRhs, const float *Ap, const IndexType *iPiv, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("ssptrs"); IndexType info; LAPACK_IMPL(ssptrs)(&uplo, &n, &nRhs, Ap, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sptrs(char uplo, IndexType n, IndexType nRhs, const double *Ap, const IndexType *iPiv, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dsptrs"); IndexType info; LAPACK_IMPL(dsptrs)(&uplo, &n, &nRhs, Ap, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sptrs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("csptrs"); IndexType info; LAPACK_IMPL(csptrs)(&uplo, &n, &nRhs, reinterpret_cast(Ap), iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sptrs(char uplo, IndexType n, IndexType nRhs, const std::complex *Ap, const IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zsptrs"); IndexType info; LAPACK_IMPL(zsptrs)(&uplo, &n, &nRhs, reinterpret_cast(Ap), iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SPTRS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stebz.h000066400000000000000000000062271456314707100243720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEBZ_H #define CXXLAPACK_INTERFACE_STEBZ_H 1 #include namespace cxxlapack { template IndexType stebz(char range, char order, IndexType n, float vl, float vu, IndexType il, IndexType iu, float abstol, const float *d, const float *e, IndexType &m, IndexType &nsplit, float *w, IndexType *iblock, IndexType *isplit, float *work, IndexType *iWork); template IndexType stebz(char range, char order, IndexType n, double vl, double vu, IndexType il, IndexType iu, double abstol, const double *d, const double *e, IndexType &m, IndexType &nsplit, double *w, IndexType *iblock, IndexType *isplit, double *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEBZ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stebz.tcc000066400000000000000000000110701456314707100247040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEBZ_TCC #define CXXLAPACK_INTERFACE_STEBZ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType stebz(char range, char order, IndexType n, float vl, float vu, IndexType il, IndexType iu, float abstol, const float *d, const float *e, IndexType &m, IndexType &nsplit, float *w, IndexType *iblock, IndexType *isplit, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("sstebz"); IndexType info; LAPACK_IMPL(sstebz)(&range, &order, &n, &vl, &vu, &il, &iu, &abstol, d, e, &m, &nsplit, w, iblock, isplit, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stebz(char range, char order, IndexType n, double vl, double vu, IndexType il, IndexType iu, double abstol, const double *d, const double *e, IndexType &m, IndexType &nsplit, double *w, IndexType *iblock, IndexType *isplit, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dstebz"); IndexType info; LAPACK_IMPL(dstebz)(&range, &order, &n, &vl, &vu, &il, &iu, &abstol, d, e, &m, &nsplit, w, iblock, isplit, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEBZ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stedc.h000066400000000000000000000071621456314707100243440ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEDC_H #define CXXLAPACK_INTERFACE_STEDC_H 1 #include namespace cxxlapack { template IndexType stedc(char compz, IndexType n, float *d, float *e, float *Z, IndexType ldZ, float *work, IndexType lWork, IndexType *iWork, IndexType liWork); template IndexType stedc(char compz, IndexType n, double *d, double *e, double *Z, IndexType ldZ, double *work, IndexType lWork, IndexType *iWork, IndexType liWork); template IndexType stedc(char compz, IndexType n, float *d, float *e, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); template IndexType stedc(char compz, IndexType n, double *d, double *e, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEDC_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stedc.tcc000066400000000000000000000135211456314707100246620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEDC_TCC #define CXXLAPACK_INTERFACE_STEDC_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType stedc(char compz, IndexType n, float *d, float *e, float *Z, IndexType ldZ, float *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("sstebc"); IndexType info; LAPACK_IMPL(sstedc)(&compz, &n, d, e, Z, &ldZ, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stedc(char compz, IndexType n, double *d, double *e, double *Z, IndexType ldZ, double *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("dstebc"); IndexType info; LAPACK_IMPL(dstedc)(&compz, &n, d, e, Z, &ldZ, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stedc(char compz, IndexType n, float *d, float *e, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("cstebc"); IndexType info; LAPACK_IMPL(cstedc)(&compz, &n, d, e, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, lrWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stedc(char compz, IndexType n, double *d, double *e, std::complex *Z, IndexType ldZ, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("zstebc"); IndexType info; LAPACK_IMPL(zstedc)(&compz, &n, d, e, reinterpret_cast(Z), &ldZ, reinterpret_cast(work), &lWork, rWork, lrWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEDC_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stegr.h000066400000000000000000000111571456314707100243650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEGR_H #define CXXLAPACK_INTERFACE_STEGR_H 1 #include namespace cxxlapack { template IndexType stegr(char jobz, char range, IndexType n, float *d, float *e, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType lWork); template IndexType stegr(char jobz, char range, IndexType n, double *d, double *e, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType lWork); template IndexType stegr(char jobz, char range, IndexType n, float *d, float *e, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType lWork, IndexType *iWork, IndexType liWork); template IndexType stegr(char jobz, char range, IndexType n, double *d, double *e, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType lWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEGR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stegr.tcc000066400000000000000000000167261456314707100247160ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEGR_TCC #define CXXLAPACK_INTERFACE_STEGR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType stegr(char jobz, char range, IndexType n, float *d, float *e, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sstegr"); IndexType info; LAPACK_IMPL(sstegr)(&jobz, &range, &n, d, e, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, isuppz, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stegr(char jobz, char range, IndexType n, double *d, double *e, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dstegr"); IndexType info; LAPACK_IMPL(dstegr)(&jobz, &range, &n, d, e, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, isuppz, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stegr(char jobz, char range, IndexType n, float *d, float *e, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, std::complex *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("cstegr"); IndexType info; LAPACK_IMPL(cstegr)(&jobz, &range, &n, d, e, &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, isuppz, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stegr(char jobz, char range, IndexType n, double *d, double *e, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, std::complex *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("z‚stegr"); IndexType info; LAPACK_IMPL(zstegr)(&jobz, &range, &n, d, e, &vl, &vu, &il, &iu, &abstol, &m, w, reinterpret_cast(Z), &ldZ, isuppz, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEGR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stein.h000066400000000000000000000073751456314707100243720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEIN_H #define CXXLAPACK_INTERFACE_STEIN_H 1 #include namespace cxxlapack { template IndexType stein(IndexType n, const float *d, const float *e, IndexType m, const float *w, const IndexType *iblock, const IndexType *isplit, float *Z, IndexType ldZ, float *work, IndexType *iWork, IndexType *ifail); template IndexType stein(IndexType n, const double *d, const double *e, IndexType m, const double *w, const IndexType *iblock, const IndexType *isplit, double *Z, IndexType ldZ, double *work, IndexType *iWork, IndexType *ifail); template IndexType stein(IndexType n, const float *d, const float *e, IndexType m, const float *w, const IndexType *iblock, const IndexType *isplit, std::complex *Z, IndexType ldZ, float *work, IndexType *iWork, IndexType *ifail); template IndexType stein(IndexType n, const double *d, const double *e, IndexType m, const double *w, const IndexType *iblock, const IndexType *isplit, std::complex *Z, IndexType ldZ, double *work, IndexType *iWork, IndexType *ifail); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEIN_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stein.tcc000066400000000000000000000137521456314707100247100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEIN_TCC #define CXXLAPACK_INTERFACE_STEIN_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType stein(IndexType n, const float *d, const float *e, IndexType m, const float *w, const IndexType *iblock, const IndexType *isplit, float *Z, IndexType ldZ, float *work, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("sstein"); IndexType info; LAPACK_IMPL(sstein)(&n, d, e, &m, w, iblock, isplit, Z, &ldZ, work, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stein(IndexType n, const double *d, const double *e, IndexType m, const double *w, const IndexType *iblock, const IndexType *isplit, double *Z, IndexType ldZ, double *work, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("dstein"); IndexType info; LAPACK_IMPL(dstein)(&n, d, e, &m, w, iblock, isplit, Z, &ldZ, work, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stein(IndexType n, const float *d, const float *e, IndexType m, const float *w, const IndexType *iblock, const IndexType *isplit, std::complex *Z, IndexType ldZ, float *work, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("cstein"); IndexType info; LAPACK_IMPL(cstein)(&n, d, e, &m, w, iblock, isplit, reinterpret_cast(Z), &ldZ, work, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stein(IndexType n, const double *d, const double *e, IndexType m, const double *w, const IndexType *iblock, const IndexType *isplit, std::complex *Z, IndexType ldZ, double *work, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("zstein"); IndexType info; LAPACK_IMPL(zstein)(&n, d, e, &m, w, iblock, isplit, reinterpret_cast(Z), &ldZ, work, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEIN_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stemr.h000066400000000000000000000114011456314707100243630ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEMR_H #define CXXLAPACK_INTERFACE_STEMR_H 1 #include namespace cxxlapack { template IndexType stemr(char jobz, char range, IndexType n, float *d, float *e, float vl, float vu, IndexType il, IndexType iu, IndexType &m, float *w, float *Z, IndexType ldZ, IndexType nzc, IndexType *isuppz, bool tryrac, float *work, IndexType lWork); template IndexType stemr(char jobz, char range, IndexType n, double *d, double *e, double vl, double vu, IndexType il, IndexType iu, IndexType &m, double *w, double *Z, IndexType ldZ, IndexType nzc, IndexType *isuppz, bool tryrac, double *work, IndexType lWork); template IndexType stemr(char jobz, char range, IndexType n, float *d, float *e, float vl, float vu, IndexType il, IndexType iu, IndexType &m, float *w, std::complex *Z, IndexType ldZ, IndexType nzc, IndexType *isuppz, bool tryrac, float *work, IndexType lWork, IndexType *iWork, IndexType liWork); template IndexType stemr(char jobz, char range, IndexType n, double *d, double *e, double vl, double vu, IndexType il, IndexType iu, IndexType &m, double *w, std::complex *Z, IndexType ldZ, IndexType nzc, IndexType *isuppz, bool tryrac, double *work, IndexType lWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEMR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stemr.tcc000066400000000000000000000175161456314707100247220ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEMR_TCC #define CXXLAPACK_INTERFACE_STEMR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType stemr(char jobz, char range, IndexType n, float *d, float *e, float vl, float vu, IndexType il, IndexType iu, IndexType &m, float *w, float *Z, IndexType ldZ, IndexType nzc, IndexType *isuppz, bool tryrac, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("sstemr"); IndexType info; IndexType tryrac_ = tryrac; LAPACK_IMPL(sstemr)(&jobz, &range, n, d, e, &vl, &vu, &il, &iu, &m, w, Z, &ldZ, &nzc, isuppz, &tryrac_, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stemr(char jobz, char range, IndexType n, double *d, double *e, double vl, double vu, IndexType il, IndexType iu, IndexType &m, double *w, double *Z, IndexType ldZ, IndexType nzc, IndexType *isuppz, bool tryrac, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dstemr"); IndexType info; IndexType tryrac_ = tryrac; LAPACK_IMPL(dstemr)(&jobz, &range, n, d, e, &vl, &vu, &il, &iu, &m, w, Z, &ldZ, &nzc, isuppz, &tryrac_, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stemr(char jobz, char range, IndexType n, float *d, float *e, float vl, float vu, IndexType il, IndexType iu, IndexType &m, float *w, std::complex *Z, IndexType ldZ, IndexType nzc, IndexType *isuppz, bool tryrac, float *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("cstemr"); IndexType info; IndexType tryrac_ = tryrac; LAPACK_IMPL(cstemr)(&jobz, &range, n, d, e, &vl, &vu, &il, &iu, &m, w, reinterpret_cast(Z), &ldZ, &nzc, isuppz, &tryrac_, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stemr(char jobz, char range, IndexType n, double *d, double *e, double vl, double vu, IndexType il, IndexType iu, IndexType &m, double *w, std::complex *Z, IndexType ldZ, IndexType nzc, IndexType *isuppz, bool tryrac, double *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("zstemr"); IndexType info; IndexType tryrac_ = tryrac; LAPACK_IMPL(zstemr)(&jobz, &range, n, d, e, &vl, &vu, &il, &iu, &m, w, reinterpret_cast(Z), &ldZ, &nzc, isuppz, &tryrac_, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEMR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/steqr.h000066400000000000000000000057651456314707100244070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEQR_H #define CXXLAPACK_INTERFACE_STEQR_H 1 #include namespace cxxlapack { template IndexType steqr(char compz, IndexType n, float *d, float *e, float *Z, IndexType ldZ, float *work); template IndexType steqr(char compz, IndexType n, double *d, double *e, double *Z, IndexType ldZ, double *work); template IndexType steqr(char compz, IndexType n, float *d, float *e, std::complex *Z, IndexType ldZ, float *work); template IndexType steqr(char compz, IndexType n, double *d, double *e, std::complex *Z, IndexType ldZ, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEQR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/steqr.tcc000066400000000000000000000113401456314707100247130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEQR_TCC #define CXXLAPACK_INTERFACE_STEQR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType steqr(char compz, IndexType n, float *d, float *e, float *Z, IndexType ldZ, float *work) { CXXLAPACK_DEBUG_OUT("ssteqr"); IndexType info; LAPACK_IMPL(ssteqr)(&compz, &n, d, e, Z, &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType steqr(char compz, IndexType n, double *d, double *e, double *Z, IndexType ldZ, double *work) { CXXLAPACK_DEBUG_OUT("dsteqr"); IndexType info; LAPACK_IMPL(dsteqr)(&compz, &n, d, e, Z, &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType steqr(char compz, IndexType n, float *d, float *e, std::complex *Z, IndexType ldZ, float *work) { CXXLAPACK_DEBUG_OUT("csteqr"); IndexType info; LAPACK_IMPL(csteqr)(&compz, &n, d, e, reinterpret_cast(Z), &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType steqr(char compz, IndexType n, double *d, double *e, std::complex *Z, IndexType ldZ, double *work) { CXXLAPACK_DEBUG_OUT("zsteqr"); IndexType info; LAPACK_IMPL(zsteqr)(&compz, &n, d, e, reinterpret_cast(Z), &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEQR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sterf.h000066400000000000000000000041471456314707100243650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STERF_H #define CXXLAPACK_INTERFACE_STERF_H 1 #include namespace cxxlapack { template IndexType sterf(IndexType n, float *d, float *e); template IndexType sterf(IndexType n, double *d, double *e); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STERF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sterf.tcc000066400000000000000000000054441456314707100247100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STERF_TCC #define CXXLAPACK_INTERFACE_STERF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sterf(IndexType n, float *d, float *e) { CXXLAPACK_DEBUG_OUT("ssterf"); IndexType info; LAPACK_IMPL(ssterf)(&n, d, e, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sterf(IndexType n, double *d, double *e) { CXXLAPACK_DEBUG_OUT("dsterf"); IndexType info; LAPACK_IMPL(dsterf)(&n, d, e, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STERF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stev.h000066400000000000000000000046201456314707100242170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEV_H #define CXXLAPACK_INTERFACE_STEV_H 1 #include namespace cxxlapack { template IndexType stev (char jobz, IndexType n, float *d, float *e, float *Z, IndexType ldZ, float *work); template IndexType stev (char jobz, IndexType n, double *d, double *e, double *Z, IndexType ldZ, double *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stev.tcc000066400000000000000000000064271456314707100245500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEV_TCC #define CXXLAPACK_INTERFACE_STEV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType stev (char jobz, IndexType n, float *d, float *e, float *Z, IndexType ldZ, float *work) { CXXLAPACK_DEBUG_OUT("sstev"); IndexType info; LAPACK_IMPL(sstev) (&jobz, &n, d, e, Z, &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stev (char jobz, IndexType n, double *d, double *e, double *Z, IndexType ldZ, double *work) { CXXLAPACK_DEBUG_OUT("dstev"); IndexType info; LAPACK_IMPL(dstev) (&jobz, &n, d, e, Z, &ldZ, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stevd.h000066400000000000000000000052011456314707100243570ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEVD_H #define CXXLAPACK_INTERFACE_STEVD_H 1 #include namespace cxxlapack { template IndexType stevd(char jobz, IndexType n, float *d, float *e, float *Z, IndexType ldZ, float *work, IndexType lWork, IndexType *iWork, IndexType liWork); template IndexType stevd(char jobz, IndexType n, double *d, double *e, double *Z, IndexType ldZ, double *work, IndexType lWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEVD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stevd.tcc000066400000000000000000000072621456314707100247120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEVD_TCC #define CXXLAPACK_INTERFACE_STEVD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType stevd(char jobz, IndexType n, float *d, float *e, float *Z, IndexType ldZ, float *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("sstevd"); IndexType info; LAPACK_IMPL(sstevd)(&jobz, &n, d, e, Z, &ldZ, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stevd(char jobz, IndexType n, double *d, double *e, double *Z, IndexType ldZ, double *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("dstevd"); IndexType info; LAPACK_IMPL(dstevd)(&jobz, &n, d, e, Z, &ldZ, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEVD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stevr.h000066400000000000000000000064421456314707100244050ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEVR_H #define CXXLAPACK_INTERFACE_STEVR_H 1 #include namespace cxxlapack { template IndexType stevr(char jobz, char range, IndexType n, float *d, float *e, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType lWork, IndexType *iWork, IndexType liWork); template IndexType stevr(char jobz, char range, IndexType n, double *d, double *e, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType lWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEVR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stevr.tcc000066400000000000000000000114401456314707100247210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEVR_TCC #define CXXLAPACK_INTERFACE_STEVR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType stevr(char jobz, char range, IndexType n, float *d, float *e, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("sstevr"); IndexType info; LAPACK_IMPL(sstevr)(&jobz, &range &n, d, e, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, isuppz, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stevr(char jobz, char range, IndexType n, double *d, double *e, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("dstevr"); IndexType info; LAPACK_IMPL(dstevr)(&jobz, &range &n, d, e, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, isuppz, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEVR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stevx.h000066400000000000000000000063231456314707100244110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEVX_H #define CXXLAPACK_INTERFACE_STEVX_H 1 #include namespace cxxlapack { template IndexType stevx(char jobz, char range, IndexType n, float *d, float *e, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType *iWork, IndexType *ifail); template IndexType stevx(char jobz, char range, IndexType n, double *d, double *e, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType *iWork, IndexType *ifail); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/stevx.tcc000066400000000000000000000112261456314707100247310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_STEVX_TCC #define CXXLAPACK_INTERFACE_STEVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType stevx(char jobz, char range, IndexType n, float *d, float *e, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("sstevx"); IndexType info; LAPACK_IMPL(sstevx)(&jobz, &range &n, d, e, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, isuppz, work, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType stevx(char jobz, char range, IndexType n, double *d, double *e, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("dstevx"); IndexType info; LAPACK_IMPL(dstevx)(&jobz, &range &n, d, e, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, isuppz, work, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_STEVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sycon.h000066400000000000000000000070411456314707100243710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYOCN_H #define CXXLAPACK_INTERFACE_SYOCN_H 1 #include namespace cxxlapack { template IndexType sycon(char uplo, IndexType n, const float *A, IndexType ldA, const IndexType *iPiv, float anorm, float &rCond, float *work, IndexType *iWork); template IndexType sycon(char uplo, IndexType n, const double *A, IndexType ldA, const IndexType *iPiv, double anorm, double &rCond, double *work, IndexType *iWork); template IndexType sycon(char uplo, IndexType n, const std::complex *A, IndexType ldA, const IndexType *iPiv, float anorm, float &rCond, std::complex *work, IndexType *iWork); template IndexType sycon(char uplo, IndexType n, const std::complex *A, IndexType ldA, const IndexType *iPiv, double anorm, double &rCond, std::complex *work, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYOCN_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sycon.tcc000066400000000000000000000127331456314707100247170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYCON_TCC #define CXXLAPACK_INTERFACE_SYCON_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sycon(char uplo, IndexType n, const float *A, IndexType ldA, const IndexType *iPiv, float anorm, float &rCond, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("ssycon"); IndexType info; LAPACK_IMPL(ssycon)(&uplo, &n, A, &ldA, iPiv, &anorm, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sycon(char uplo, IndexType n, const double *A, IndexType ldA, const IndexType *iPiv, double anorm, double &rCond, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dsycon"); IndexType info; LAPACK_IMPL(dsycon)(&uplo, &n, A, &ldA, iPiv, &anorm, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sycon(char uplo, IndexType n, const std::complex *A, IndexType ldA, const IndexType *iPiv, float anorm, float &rCond, std::complex *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("csycon"); IndexType info; LAPACK_IMPL(csycon)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, &anorm, &rCond, reinterpret_cast(work), iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sycon(char uplo, IndexType n, const std::complex *A, IndexType ldA, const IndexType *iPiv, double anorm, double &rCond, std::complex *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("zsycon"); IndexType info; LAPACK_IMPL(zsycon)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, &anorm, &rCond, reinterpret_cast(work), iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYCON_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syconv.h000066400000000000000000000061611456314707100245610ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYONV_H #define CXXLAPACK_INTERFACE_SYONV_H 1 #include namespace cxxlapack { template IndexType syconv(char uplo, char way, IndexType n, const float *A, IndexType ldA, const IndexType *iPiv, float *work); template IndexType syconv(char uplo, char way, IndexType n, const double *A, IndexType ldA, const IndexType *iPiv, double *work); template IndexType syconv(char uplo, char way, IndexType n, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work); template IndexType syconv(char uplo, char way, IndexType n, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYONV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syconv.tcc000066400000000000000000000117311456314707100251020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYCONV_TCC #define CXXLAPACK_INTERFACE_SYCONV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType syconv(char uplo, char way, IndexType n, const float *A, IndexType ldA, const IndexType *iPiv, float *work) { CXXLAPACK_DEBUG_OUT("ssyconv"); IndexType info; LAPACK_IMPL(ssyconv)(&uplo, &way, &n, A, &ldA, iPiv, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType syconv(char uplo, char way, IndexType n, const double *A, IndexType ldA, const IndexType *iPiv, double *work) { CXXLAPACK_DEBUG_OUT("dsyconv"); IndexType info; LAPACK_IMPL(dsyconv)(&uplo, &way, &n, A, &ldA, iPiv, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType syconv(char uplo, char way, IndexType n, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work) { CXXLAPACK_DEBUG_OUT("csyconv"); IndexType info; LAPACK_IMPL(csyconv)(&uplo, &way, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType syconv(char uplo, char way, IndexType n, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work) { CXXLAPACK_DEBUG_OUT("zsyconv"); IndexType info; LAPACK_IMPL(zsyconv)(&uplo, &way, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYCONV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syequb.h000066400000000000000000000064401456314707100245500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYEQUB_H #define CXXLAPACK_INTERFACE_SYEQUB_H 1 #include namespace cxxlapack { template IndexType syequb(char uplo, IndexType n, const float *A, IndexType ldA, float *s, float &scond, float &amax, float *work); template IndexType syequb(char uplo, IndexType n, const double *A, IndexType ldA, double *s, double &scond, double &amax, double *work); template IndexType syequb(char uplo, IndexType n, const std::complex *A, IndexType ldA, float *s, float &scond, float &amax, std::complex *work); template IndexType syequb(char uplo, IndexType n, const std::complex *A, IndexType ldA, double *s, double &scond, double &amax, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYEQUB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syequb.tcc000066400000000000000000000123621456314707100250720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYEQUB_TCC #define CXXLAPACK_INTERFACE_SYEQUB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType syequb(char uplo, IndexType n, const float *A, IndexType ldA, float *s, float &scond, float &amax, float *work) { CXXLAPACK_DEBUG_OUT("ssyequb"); IndexType info; LAPACK_IMPL(ssyequb)(&uplo, &n, A, &ldA, s, &scond, &amax, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType syequb(char uplo, IndexType n, const double *A, IndexType ldA, double *s, double &scond, double &amax, double *work) { CXXLAPACK_DEBUG_OUT("dsyequb"); IndexType info; LAPACK_IMPL(dsyequb)(&uplo, &n, A, &ldA, s, &scond, &amax, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType syequb(char uplo, IndexType n, const std::complex *A, IndexType ldA, float *s, float &scond, float &amax, std::complex *work) { CXXLAPACK_DEBUG_OUT("csyequb"); IndexType info; LAPACK_IMPL(csyequb)(&uplo, &n, reinterpret_cast(A), &ldA, s, &scond, &amax, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType syequb(char uplo, IndexType n, const std::complex *A, IndexType ldA, double *s, double &scond, double &amax, std::complex *work) { CXXLAPACK_DEBUG_OUT("zsyequb"); IndexType info; LAPACK_IMPL(zsyequb)(&uplo, &n, reinterpret_cast(A), &ldA, s, &scond, &amax, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYEQUB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syev.h000066400000000000000000000047241456314707100242310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYEV_H #define CXXLAPACK_INTERFACE_SYEV_H 1 #include namespace cxxlapack { template IndexType syev(char jobZ, char upLo, IndexType n, float *A, IndexType ldA, float *w, float *work, IndexType lWork); template IndexType syev(char jobZ, char upLo, IndexType n, double *A, IndexType ldA, double *w, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYEV_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syev.tcc000066400000000000000000000064271456314707100245550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYEV_TCC #define CXXLAPACK_INTERFACE_SYEV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType syev(char jobZ, char upLo, IndexType n, float *A, IndexType ldA, float *w, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("ssyev"); IndexType info; LAPACK_IMPL(ssyev)(&jobZ, &upLo, &n, A, &ldA, w, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType syev(char jobZ, char upLo, IndexType n, double *A, IndexType ldA, double *w, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dsyev"); IndexType info; LAPACK_IMPL(dsyev)(&jobZ, &upLo, &n, A, &ldA, w, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYEV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syevd.h000066400000000000000000000047741456314707100244020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYEVD_H #define CXXLAPACK_INTERFACE_SYEVD_H 1 #include namespace cxxlapack { template IndexType syevd(char jobZ, char upLo, IndexType n, float *A, IndexType ldA, float *w, float *work, IndexType lWork, IndexType *iWork, IndexType liWork); template IndexType syevd(char jobZ, char upLo, IndexType n, double *A, IndexType ldA, double *w, double *work, IndexType lWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYEV_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syevd.tcc000066400000000000000000000070631456314707100247160ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYEVD_TCC #define CXXLAPACK_INTERFACE_SYEVD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType syevd(char jobZ, char upLo, IndexType n, float *A, IndexType ldA, float *w, float *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("ssyevd"); IndexType info; LAPACK_IMPL(ssyevd)(&jobZ, &upLo, &n, A, &ldA, w, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType syevd(char jobZ, char upLo, IndexType n, double *A, IndexType ldA, double *w, double *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("dsyevd"); IndexType info; LAPACK_IMPL(dsyevd)(&jobZ, &upLo, &n, A, &ldA, w, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYEV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syevr.h000066400000000000000000000065571456314707100244210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYEVR_H #define CXXLAPACK_INTERFACE_SYEVR_H 1 #include namespace cxxlapack { template IndexType syevr(char jobz, char range, char uplo, IndexType n, float *A, IndexType ldA, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType lWork, IndexType *iWork, IndexType liWork); template IndexType syevr(char jobz, char range, char uplo, IndexType n, double *A, IndexType ldA, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType lWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYEVR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syevr.tcc000066400000000000000000000116541456314707100247350ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYEVR_TCC #define CXXLAPACK_INTERFACE_SYEVR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType syevr(char jobz, char range, char uplo, IndexType n, float *A, IndexType ldA, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("ssyevr"); IndexType info; LAPACK_IMPL(ssyevr)(&jobz, &range, &uplo, &n, A, &ldA, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, isuppz, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType syevr(char jobz, char range, char uplo, IndexType n, double *A, IndexType ldA, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("dsyevr"); IndexType info; LAPACK_IMPL(dsyevr)(&jobz, &range, &uplo, &n, A, &ldA, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, isuppz, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYEVR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syevx.h000066400000000000000000000065571456314707100244270ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYEVX_H #define CXXLAPACK_INTERFACE_SYEVX_H 1 #include namespace cxxlapack { template IndexType syevx(char jobz, char range, char uplo, IndexType n, float *A, IndexType ldA, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType lWork, IndexType *iWork, IndexType *ifail); template IndexType syevx(char jobz, char range, char uplo, IndexType n, double *A, IndexType ldA, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType lWork, IndexType *iWork, IndexType *ifail); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYEVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syevx.tcc000066400000000000000000000116501456314707100247370ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYEVX_TCC #define CXXLAPACK_INTERFACE_SYEVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType syevx(char jobz, char range, char uplo, IndexType n, float *A, IndexType ldA, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, IndexType *isuppz, float *work, IndexType lWork, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("ssyevx"); IndexType info; LAPACK_IMPL(ssyevx)(&jobz, &range, &uplo, &n, A, &ldA, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, isuppz, work, &lWork, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType syevx(char jobz, char range, char uplo, IndexType n, double *A, IndexType ldA, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, IndexType *isuppz, double *work, IndexType lWork, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("dsyevx"); IndexType info; LAPACK_IMPL(dsyevx)(&jobz, &range, &uplo, &n, A, &ldA, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, isuppz, work, &lWork, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYEVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sygs2.h000066400000000000000000000046251456314707100243120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYGS2_H #define CXXLAPACK_INTERFACE_SYGS2_H 1 #include namespace cxxlapack { template IndexType sygs2(char itype, char uplo, IndexType n, float *A, IndexType ldA, const float *B, IndexType ldB); template IndexType sygs2(char itype, char uplo, IndexType n, double *A, IndexType ldA, const double *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYGS2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sygs2.tcc000066400000000000000000000064501456314707100246320ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYGS2_TCC #define CXXLAPACK_INTERFACE_SYGS2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sygs2(char itype, char uplo, IndexType n, float *A, IndexType ldA, const float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("ssygs2"); IndexType info; LAPACK_IMPL(ssygs2)(&itype, &uplo, &n, A, &ldA, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sygs2(char itype, char uplo, IndexType n, double *A, IndexType ldA, const double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dsygs2"); IndexType info; LAPACK_IMPL(dsygs2)(&itype, &uplo, &n, A, &ldA, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYGS2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sygst.h000066400000000000000000000046251456314707100244140ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYGST_H #define CXXLAPACK_INTERFACE_SYGST_H 1 #include namespace cxxlapack { template IndexType sygst(char itype, char uplo, IndexType n, float *A, IndexType ldA, const float *B, IndexType ldB); template IndexType sygst(char itype, char uplo, IndexType n, double *A, IndexType ldA, const double *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYGST_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sygst.tcc000066400000000000000000000064501456314707100247340ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYGST_TCC #define CXXLAPACK_INTERFACE_SYGST_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sygst(char itype, char uplo, IndexType n, float *A, IndexType ldA, const float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("ssygst"); IndexType info; LAPACK_IMPL(ssygst)(&itype, &uplo, &n, A, &ldA, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sygst(char itype, char uplo, IndexType n, double *A, IndexType ldA, const double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dsygst"); IndexType info; LAPACK_IMPL(dsygst)(&itype, &uplo, &n, A, &ldA, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYGST_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sygv.h000066400000000000000000000051661456314707100242340ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYEV_H #define CXXLAPACK_INTERFACE_SYEV_H 1 #include namespace cxxlapack { template IndexType sygv (IndexType itype, char jobz, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *w, float *work, IndexType lWork); template IndexType sygv (IndexType itype, char jobz, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *w, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYEV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sygv.tcc000066400000000000000000000072411456314707100245520ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYGV_TCC #define CXXLAPACK_INTERFACE_SYGV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sygv (IndexType itype, char jobz, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *w, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("ssyev"); IndexType info; LAPACK_IMPL(ssyev) (&itype, &jobz, &n, A, &ldA, B, &ldB, w, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sygv (IndexType itype, char jobz, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *w, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dsyev"); IndexType info; LAPACK_IMPL(dsyev) (&itype, &jobz, &n, A, &ldA, B, &ldB, w, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYGV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sygvd.h000066400000000000000000000055451456314707100244010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYEVD_H #define CXXLAPACK_INTERFACE_SYEVD_H 1 #include namespace cxxlapack { template IndexType sygvd(IndexType itype, char jobz, char uplo, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *w, float *work, IndexType lWork, IndexType *iWork, IndexType liWork); template IndexType sygvd(IndexType itype, char jobz, char uplo, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *w, double *work, IndexType lWork, IndexType *iWork, IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYEVD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sygvd.tcc000066400000000000000000000100701456314707100247100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYGVD_TCC #define CXXLAPACK_INTERFACE_SYGVD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sygvd(IndexType itype, char jobz, char uplo, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *w, float *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("ssygvd"); IndexType info; LAPACK_IMPL(ssygvd)(&itype, &jobz, &uplo, &n, A, &ldA, B, &ldB, w, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sygvd(IndexType itype, char jobz, char uplo, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *w, double *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("dsygvd"); IndexType info; LAPACK_IMPL(dsygvd)(&itype, &jobz, &uplo, &n, A, &ldA, B, &ldB, w, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYGVD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sygvx.h000066400000000000000000000067751456314707100244330ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYGVX_H #define CXXLAPACK_INTERFACE_SYGVX_H 1 #include namespace cxxlapack { template IndexType sygvx(IndexType itype, char jobz, char range, char uplo, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, float *work, IndexType lWork, IndexType *iWork, IndexType *ifail); template IndexType sygvx(IndexType itype, char jobz, char range, char uplo, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, double *work, IndexType lWork, IndexType *iWork, IndexType *ifail); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYGVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sygvx.tcc000066400000000000000000000122301456314707100247340ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYGVX_TCC #define CXXLAPACK_INTERFACE_SYGVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sygvx(IndexType itype, char jobz, char range, char uplo, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float vl, float vu, IndexType il, IndexType iu, float abstol, IndexType &m, float *w, float *Z, IndexType ldZ, float *work, IndexType lWork, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("ssygvx"); IndexType info; LAPACK_IMPL(ssygvx)(&itype, &jobz, &range, &uplo, &n, A, &ldA, B, &ldB, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, work, &lWork, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sygvx(IndexType itype, char jobz, char range, char uplo, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double vl, double vu, IndexType il, IndexType iu, double abstol, IndexType &m, double *w, double *Z, IndexType ldZ, double *work, IndexType lWork, IndexType *iWork, IndexType *ifail) { CXXLAPACK_DEBUG_OUT("dsygvx"); IndexType info; LAPACK_IMPL(dsygvx)(&itype, &jobz, &range, &uplo, &n, A, &ldA, B, &ldB, &vl, &vu, &il, &iu, &abstol, &m, w, Z, &ldZ, work, &lWork, iWork, ifail, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYGVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/symv.h000066400000000000000000000053421456314707100242360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYMV_H #define CXXLAPACK_INTERFACE_SYMV_H 1 #include namespace cxxlapack { template void symv (char uplo, IndexType n, std::complex alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, std::complex beta, std::complex *Y, IndexType incy); template void symv (char uplo, IndexType n, std::complex alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, std::complex beta, std::complex *Y, IndexType incy); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYMV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/symv.tcc000066400000000000000000000073011456314707100245550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYMV_TCC #define CXXLAPACK_INTERFACE_SYMV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void symv (char uplo, IndexType n, std::complex alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, std::complex beta, std::complex *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("csymv"); LAPACK_IMPL(csymv)(&uplo, &n, reinterpret_cast(&alpha), reinterpret_cast(A), &ldA, reinterpret_cast(x), &incx, reinterpret_cast(&beta), reinterpret_cast(y), &incy); } template void symv (char uplo, IndexType n, std::complex alpha, const std::complex *A, IndexType ldA, const std::complex *x, IndexType incx, std::complex beta, std::complex *y, IndexType incy) { CXXLAPACK_DEBUG_OUT("zsymv"); LAPACK_IMPL(zsymv)(&uplo, &n, reinterpret_cast(&alpha), reinterpret_cast(A), &ldA, reinterpret_cast(x), &incx, reinterpret_cast(&beta), reinterpret_cast(y), &incy); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYMV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syr.h000066400000000000000000000047331456314707100240600ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYR_H #define CXXLAPACK_INTERFACE_SYR_H 1 #include namespace cxxlapack { template void syr (char uplo, IndexType n, std::complex alpha, const std::complex *x, IndexType incx, std::complex *A, IndexType ldA); template void syr (char uplo, IndexType n, std::complex alpha, const std::complex *x, IndexType incx, std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syr.tcc000066400000000000000000000062321456314707100243760ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYR_TCC #define CXXLAPACK_INTERFACE_SYR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void syr (char uplo, IndexType n, std::complex alpha, const std::complex *x, IndexType incx, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("csyr"); LAPACK_IMPL(csyr) (&uplo, &n, reinterpret_cast(&alpha), reinterpret_cast(x), &incx, reinterpret_cast(A), &ldA); } template void syr (char uplo, IndexType n, std::complex alpha, const std::complex *x, IndexType incx, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("zsyr"); LAPACK_IMPL(zsyr) (&uplo, &n, reinterpret_cast(&alpha), reinterpret_cast(x), &incx, reinterpret_cast(A), &ldA); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syrfs.h000066400000000000000000000110211456314707100243750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYRFS_H #define CXXLAPACK_INTERFACE_SYRFS_H 1 #include namespace cxxlapack { template IndexType syrfs(char uplo, IndexType n, IndexType nRhs, const float *A, IndexType ldA, const float *Af, IndexType ldAf, const IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType syrfs(char uplo, IndexType n, IndexType nRhs, const double *A, IndexType ldA, const double *Af, IndexType ldAf, const IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType syrfs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType syrfs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYRFS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syrfs.tcc000066400000000000000000000166471456314707100247420ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYRFS_TCC #define CXXLAPACK_INTERFACE_SYRFS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType syrfs(char uplo, IndexType n, IndexType nRhs, const float *A, IndexType ldA, const float *Af, IndexType ldAf, const IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("ssyrfs"); IndexType info; LAPACK_IMPL(ssyrfs)(&uplo, &n, &nRhs, A, &ldA, Af, &ldAf, iPiv, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType syrfs(char uplo, IndexType n, IndexType nRhs, const double *A, IndexType ldA, const double *Af, IndexType ldAf, const IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dsyrfs"); IndexType info; LAPACK_IMPL(dsyrfs)(&uplo, &n, &nRhs, A, &ldA, Af, &ldAf, iPiv, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType syrfs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("csyrfs"); IndexType info; LAPACK_IMPL(csyrfs)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType syrfs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *Af, IndexType ldAf, const IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("zsyrfs"); IndexType info; LAPACK_IMPL(zsyrfs)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYRFS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sysv.h000066400000000000000000000067021456314707100242450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYSV_H #define CXXLAPACK_INTERFACE_SYSV_H 1 #include namespace cxxlapack { template IndexType sysv (char uplo, IndexType n, IndexType nRhs, float *A, IndexType ldA, IndexType *iPiv, float *B, IndexType ldB, float *work, IndexType lWork); template IndexType sysv (char uplo, IndexType n, IndexType nRhs, double *A, IndexType ldA, IndexType *iPiv, double *B, IndexType ldB, double *work, IndexType lWork); template IndexType sysv (char uplo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work, IndexType lWork); template IndexType sysv (char uplo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYSV_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sysv.tcc000066400000000000000000000131441456314707100245650ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYSV_TCC #define CXXLAPACK_INTERFACE_SYSV_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sysv (char uplo, IndexType n, IndexType nRhs, float *A, IndexType ldA, IndexType *iPiv, float *B, IndexType ldB, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("ssysv"); IndexType info; LAPACK_IMPL(ssysv) (&uplo, &n, &nRhs, A, &ldA, iPiv, B, &ldB, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sysv (char uplo, IndexType n, IndexType nRhs, double *A, IndexType ldA, IndexType *iPiv, double *B, IndexType ldB, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dsysv"); IndexType info; LAPACK_IMPL(dsysv) (&uplo, &n, &nRhs, A, &ldA, iPiv, B, &ldB, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sysv (char uplo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("csysv"); IndexType info; LAPACK_IMPL(csysv) (&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sysv (char uplo, IndexType n, IndexType nRhs, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zsysv"); IndexType info; LAPACK_IMPL(zsysv) (&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYSV_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sysvx.h000066400000000000000000000120121456314707100244240ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYSVX_H #define CXXLAPACK_INTERFACE_SYSVX_H 1 #include namespace cxxlapack { template IndexType sysvx(char fact, char uplo, IndexType n, IndexType nRhs, const float *A, IndexType ldA, float *Af, IndexType ldAf, IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work, IndexType lWork, IndexType *iWork); template IndexType sysvx(char fact, char uplo, IndexType n, IndexType nRhs, const double *A, IndexType ldA, double *Af, IndexType ldAf, IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work, IndexType lWork, IndexType *iWork); template IndexType sysvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, IndexType lWork, float *rWork); template IndexType sysvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, IndexType lWork, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYSVX_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sysvx.tcc000066400000000000000000000203401456314707100247510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYSVX_TCC #define CXXLAPACK_INTERFACE_SYSVX_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sysvx(char fact, char uplo, IndexType n, IndexType nRhs, const float *A, IndexType ldA, float *Af, IndexType ldAf, IndexType *iPiv, const float *B, IndexType ldB, float *X, IndexType ldX, float &rCond, float *ferr, float *berr, float *work, IndexType lWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("ssysvx"); IndexType info; LAPACK_IMPL(ssysvx)(&fact, &uplo, &n, &nRhs, A, &ldA, Af, &ldAf, iPiv, B, &ldB, X, &ldX, &rCond, ferr, berr, work, &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sysvx(char fact, char uplo, IndexType n, IndexType nRhs, const double *A, IndexType ldA, double *Af, IndexType ldAf, IndexType *iPiv, const double *B, IndexType ldB, double *X, IndexType ldX, double &rCond, double *ferr, double *berr, double *work, IndexType lWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dsysvx"); IndexType info; LAPACK_IMPL(dsysvx)(&fact, &uplo, &n, &nRhs, A, &ldA, Af, &ldAf, iPiv, B, &ldB, X, &ldX, &rCond, ferr, berr, work, &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sysvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, float &rCond, float *ferr, float *berr, std::complex *work, IndexType lWork, float *rWork) { CXXLAPACK_DEBUG_OUT("csysvx"); IndexType info; LAPACK_IMPL(csysvx)(&fact, &uplo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sysvx(char fact, char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *Af, IndexType ldAf, IndexType *iPiv, const std::complex *B, IndexType ldB, std::complex *X, IndexType ldX, double &rCond, double *ferr, double *berr, std::complex *work, IndexType lWork, double *rWork) { CXXLAPACK_DEBUG_OUT("zsysvx"); IndexType info; LAPACK_IMPL(zsysvx)(&fact, &uplo, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(Af), &ldAf, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, &rCond, ferr, berr, reinterpret_cast(work), &lWork, rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYSVX_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syswapr.h000066400000000000000000000056131456314707100247510ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYSWAPR_H #define CXXLAPACK_INTERFACE_SYSWAPR_H 1 #include namespace cxxlapack { template IndexType syswapr(char uplo, IndexType n, float *A, IndexType ldA, IndexType i1, IndexType i2); template IndexType syswapr(char uplo, IndexType n, double *A, IndexType ldA, IndexType i1, IndexType i2); template IndexType syswapr(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType i1, IndexType i2); template IndexType syswapr(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType i1, IndexType i2); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYSWAPR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/syswapr.tcc000066400000000000000000000074611456314707100252760ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYSWAPR_TCC #define CXXLAPACK_INTERFACE_SYSWAPR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void syswapr(char uplo, IndexType n, float *A, IndexType ldA, IndexType i1, IndexType i2) { CXXLAPACK_DEBUG_OUT("ssyswapr"); LAPACK_IMPL(ssyswapr)(&uplo, &n, A, &ldA, &i1 &i2); } template void syswapr(char uplo, IndexType n, double *A, IndexType ldA, IndexType i1, IndexType i2) { CXXLAPACK_DEBUG_OUT("dsyswapr"); LAPACK_IMPL(dsyswapr)(&uplo, &n, A, &ldA, &i1 &i2); } template void syswapr(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType i1, IndexType i2) { CXXLAPACK_DEBUG_OUT("csyswapr"); LAPACK_IMPL(csyswapr)(&uplo, &n, reinterpret_cast(A), &ldA, &i1 &i2); } template void syswapr(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType i1, IndexType i2) { CXXLAPACK_DEBUG_OUT("zsyswapr"); LAPACK_IMPL(zsyswapr)(&uplo, &n, reinterpret_cast(A), &ldA, &i1 &i2); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYSWAPR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytd2.h000066400000000000000000000046211456314707100243040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTD2_H #define CXXLAPACK_INTERFACE_SYTD2_H 1 #include namespace cxxlapack { template IndexType sytd2(char uplo, IndexType n, float *A, IndexType ldA, float *d, float *e, float *tau); template IndexType sytd2(char uplo, IndexType n, double *A, IndexType ldA, double *d, double *e, double *tau); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTD2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytd2.tcc000066400000000000000000000064301456314707100246260ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTD2_TCC #define CXXLAPACK_INTERFACE_SYTD2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sytd2(char uplo, IndexType n, float *A, IndexType ldA, float *d, float *e, float *tau) { CXXLAPACK_DEBUG_OUT("ssytd2"); IndexType info; LAPACK_IMPL(ssytd2)(&uplo, &n, A, &ldA, d, e, tau, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytd2(char uplo, IndexType n, double *A, IndexType ldA, double *d, double *e, double *tau) { CXXLAPACK_DEBUG_OUT("dsytd2"); IndexType info; LAPACK_IMPL(dsytd2)(&uplo, &n, A, &ldA, d, e, tau, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTD2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytf2.h000066400000000000000000000046251456314707100243120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTF2_H #define CXXLAPACK_INTERFACE_SYTF2_H 1 #include namespace cxxlapack { template IndexType sytf2(IndexType m, IndexType n, float *A); template IndexType sytf2(IndexType m, IndexType n, double *A); template IndexType sytf2(IndexType n, IndexType m, std::complex *A); template IndexType sytf2(IndexType n, IndexType m, std::complex *A); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTF2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytf2.tcc000066400000000000000000000104011456314707100246210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTF2_TCC #define CXXLAPACK_INTERFACE_SYTF2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sytf2(char uplo, IndexType n, float *A, IndexType ldA, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("ssytf2"); IndexType info; LAPACK_IMPL(ssytf2)(&uplo, &n, A, &ldA, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytf2(char uplo, IndexType n, double *A, IndexType ldA, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("dsytf2"); IndexType info; LAPACK_IMPL(dsytf2)(&uplo, &n, A, &ldA, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytf2(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("csytf2"); IndexType info; LAPACK_IMPL(csytf2)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytf2(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv) { CXXLAPACK_DEBUG_OUT("zsytf2"); IndexType info; LAPACK_IMPL(zsytf2)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTF2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytrd.h000066400000000000000000000050551456314707100244060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTRD_H #define CXXLAPACK_INTERFACE_SYTRD_H 1 #include namespace cxxlapack { template IndexType sytrd(char uplo, IndexType n, float *A, IndexType ldA, float *d, float *e, float *tau, float *work, IndexType lWork); template IndexType sytrd(char uplo, IndexType n, double *A, IndexType ldA, double *d, double *e, double *tau, double *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTRD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytrd.tcc000066400000000000000000000070401456314707100247240ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTRD_TCC #define CXXLAPACK_INTERFACE_SYTRD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sytrd(char uplo, IndexType n, float *A, IndexType ldA, float *d, float *e, float *tau, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("ssytrd"); IndexType info; LAPACK_IMPL(ssytrd)(&uplo, &n, A, &ldA, d, e, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytrd(char uplo, IndexType n, double *A, IndexType ldA, double *d, double *e, double *tau, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dsytrd"); IndexType info; LAPACK_IMPL(dsytrd)(&uplo, &n, A, &ldA, d, e, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTRD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytrf.h000066400000000000000000000060111456314707100244010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTRF_H #define CXXLAPACK_INTERFACE_SYTRF_H 1 #include namespace cxxlapack { template IndexType sytrf(char uplo, IndexType n, float *A, IndexType ldA, IndexType *iPiv, float *work, IndexType lWork); template IndexType sytrf(char uplo, IndexType n, double *A, IndexType ldA, IndexType *iPiv, double *work, IndexType lWork); template IndexType sytrf(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *work, IndexType lWork); template IndexType sytrf(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTRF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytrf.tcc000066400000000000000000000115061456314707100247300ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTRF_TCC #define CXXLAPACK_INTERFACE_SYTRF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sytrf(char uplo, IndexType n, float *A, IndexType ldA, IndexType *iPiv, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("ssytrf"); IndexType info; LAPACK_IMPL(ssytrf)(&uplo, &n, A, &ldA, iPiv, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytrf(char uplo, IndexType n, double *A, IndexType ldA, IndexType *iPiv, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dsytrf"); IndexType info; LAPACK_IMPL(dsytrf)(&uplo, &n, A, &ldA, iPiv, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytrf(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("csytrf"); IndexType info; LAPACK_IMPL(csytrf)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytrf(char uplo, IndexType n, std::complex *A, IndexType ldA, IndexType *iPiv, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zsytrf"); IndexType info; LAPACK_IMPL(zsytrf)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTRF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytri.h000066400000000000000000000055551456314707100244200ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTRI_H #define CXXLAPACK_INTERFACE_SYTRI_H 1 #include namespace cxxlapack { template IndexType sytri(char uplo, IndexType n, float *A, IndexType ldA, const IndexType *iPiv, float *work); template IndexType sytri(char uplo, IndexType n, double *A, IndexType ldA, const IndexType *iPiv, double *work); template IndexType sytri(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work); template IndexType sytri(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTRI_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytri.tcc000066400000000000000000000110721456314707100247310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTRI_TCC #define CXXLAPACK_INTERFACE_SYTRI_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sytri(char uplo, IndexType n, float *A, IndexType ldA, const IndexType *iPiv, float *work) { CXXLAPACK_DEBUG_OUT("ssytri"); IndexType info; LAPACK_IMPL(ssytri)(&uplo, &n, A, &ldA, iPiv, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytri(char uplo, IndexType n, double *A, IndexType ldA, const IndexType *iPiv, double *work) { CXXLAPACK_DEBUG_OUT("dsytri"); IndexType info; LAPACK_IMPL(dsytri)(&uplo, &n, A, &ldA, iPiv, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytri(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work) { CXXLAPACK_DEBUG_OUT("csytri"); IndexType info; LAPACK_IMPL(csytri)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytri(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work) { CXXLAPACK_DEBUG_OUT("zsytri"); IndexType info; LAPACK_IMPL(zsytri)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTRI_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytri2.h000066400000000000000000000060501456314707100244710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTRI2_H #define CXXLAPACK_INTERFACE_SYTRI2_H 1 #include namespace cxxlapack { template IndexType sytri2(char uplo, IndexType n, float *A, IndexType ldA, const IndexType *iPiv, float *work, IndexType lWork); template IndexType sytri2(char uplo, IndexType n, double *A, IndexType ldA, const IndexType *iPiv, double *work, IndexType lWork); template IndexType sytri2(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType lWork); template IndexType sytri2(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTRI2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytri2.tcc000066400000000000000000000116151456314707100250160ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRI2BUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRI2BUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRI2CT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTRI2_TCC #define CXXLAPACK_INTERFACE_SYTRI2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sytri2(char uplo, IndexType n, float *A, IndexType ldA, const IndexType *iPiv, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("ssytri2"); IndexType info; LAPACK_IMPL(ssytri2)(&uplo, &n, A, &ldA, iPiv, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytri2(char uplo, IndexType n, double *A, IndexType ldA, const IndexType *iPiv, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dsytri2"); IndexType info; LAPACK_IMPL(dsytri2)(&uplo, &n, A, &ldA, iPiv, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytri2(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("csytri2"); IndexType info; LAPACK_IMPL(csytri2)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytri2(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zsytri2"); IndexType info; LAPACK_IMPL(zsytri2)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTRI2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytri2x.h000066400000000000000000000060731456314707100246660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTRI2X_H #define CXXLAPACK_INTERFACE_SYTRI2X_H 1 #include namespace cxxlapack { template IndexType sytri2x(char uplo, IndexType n, float *A, IndexType ldA, const IndexType *iPiv, float *work, IndexType nb); template IndexType sytri2x(char uplo, IndexType n, double *A, IndexType ldA, const IndexType *iPiv, double *work, IndexType nb); template IndexType sytri2x(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType nb); template IndexType sytri2x(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType nb); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTRI2X_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytri2x.tcc000066400000000000000000000116431456314707100252070ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRI2XBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRI2XBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRI2XCT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTRI2X_TCC #define CXXLAPACK_INTERFACE_SYTRI2X_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sytri2x(char uplo, IndexType n, float *A, IndexType ldA, const IndexType *iPiv, float *work, IndexType nb) { CXXLAPACK_DEBUG_OUT("ssytri2x"); IndexType info; LAPACK_IMPL(ssytri2x)(&uplo, &n, A, &ldA, iPiv, work, &nb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytri2x(char uplo, IndexType n, double *A, IndexType ldA, const IndexType *iPiv, double *work, IndexType nb) { CXXLAPACK_DEBUG_OUT("dsytri2x"); IndexType info; LAPACK_IMPL(dsytri2x)(&uplo, &n, A, &ldA, iPiv, work, &nb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytri2x(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType nb) { CXXLAPACK_DEBUG_OUT("csytri2x"); IndexType info; LAPACK_IMPL(csytri2x)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &nb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytri2x(char uplo, IndexType n, std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *work, IndexType nb) { CXXLAPACK_DEBUG_OUT("zsytri2x"); IndexType info; LAPACK_IMPL(zsytri2x)(&uplo, &n, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(work), &nb, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTRI2X_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytrs.h000066400000000000000000000063551456314707100244310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTRS_H #define CXXLAPACK_INTERFACE_SYTRS_H 1 #include namespace cxxlapack { template IndexType sytrs(char uplo, IndexType n, IndexType nRhs, const float *A, IndexType ldA, const IndexType *iPiv, float *B, IndexType ldB); template IndexType sytrs(char uplo, IndexType n, IndexType nRhs, const double *A, IndexType ldA, const IndexType *iPiv, double *B, IndexType ldB); template IndexType sytrs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB); template IndexType sytrs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTRS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytrs.tcc000066400000000000000000000122161456314707100247440ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTRS_TCC #define CXXLAPACK_INTERFACE_SYTRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sytrs(char uplo, IndexType n, IndexType nRhs, const float *A, IndexType ldA, const IndexType *iPiv, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("ssyrts"); IndexType info; LAPACK_IMPL(ssytrs)(&uplo, &n, &nRhs, A, &ldA, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytrs(char uplo, IndexType n, IndexType nRhs, const double *A, IndexType ldA, const IndexType *iPiv, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dsyrts"); IndexType info; LAPACK_IMPL(dsytrs)(&uplo, &n, &nRhs, A, &ldA, iPiv, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytrs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("csyrts"); IndexType info; LAPACK_IMPL(csytrs)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytrs(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("zsyrts"); IndexType info; LAPACK_IMPL(zsytrs)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTRS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytrs2.h000066400000000000000000000066741456314707100245170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTRS2_H #define CXXLAPACK_INTERFACE_SYTRS2_H 1 #include namespace cxxlapack { template IndexType sytrs2(char uplo, IndexType n, IndexType nRhs, const float *A, IndexType ldA, const IndexType *iPiv, float *B, IndexType ldB, float *work); template IndexType sytrs2(char uplo, IndexType n, IndexType nRhs, const double *A, IndexType ldA, const IndexType *iPiv, double *B, IndexType ldB, double *work); template IndexType sytrs2(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work); template IndexType sytrs2(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTRS2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/sytrs2.tcc000066400000000000000000000130061456314707100250240ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_SYTRS2_TCC #define CXXLAPACK_INTERFACE_SYTRS2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType sytrs2(char uplo, IndexType n, IndexType nRhs, const float *A, IndexType ldA, const IndexType *iPiv, float *B, IndexType ldB, float *work) { CXXLAPACK_DEBUG_OUT("ssyrts2"); IndexType info; LAPACK_IMPL(ssytrs2)(&uplo, &n, &nRhs, A, &ldA, iPiv, B, &ldB, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytrs2(char uplo, IndexType n, IndexType nRhs, const double *A, IndexType ldA, const IndexType *iPiv, double *B, IndexType ldB, double *work) { CXXLAPACK_DEBUG_OUT("dsyrts2"); IndexType info; LAPACK_IMPL(dsytrs2)(&uplo, &n, &nRhs, A, &ldA, iPiv, B, &ldB, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytrs2(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work) { CXXLAPACK_DEBUG_OUT("csyrts2"); IndexType info; LAPACK_IMPL(csytrs2)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType sytrs2(char uplo, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const IndexType *iPiv, std::complex *B, IndexType ldB, std::complex *work) { CXXLAPACK_DEBUG_OUT("zsyrts2"); IndexType info; LAPACK_IMPL(zsytrs2)(&uplo, &n, &nRhs, reinterpret_cast(A), &ldA, iPiv, reinterpret_cast(B), &ldB, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_SYTRS2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tbcon.h000066400000000000000000000071211456314707100243420ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TBCON_H #define CXXLAPACK_INTERFACE_TBCON_H 1 #include namespace cxxlapack { template IndexType tbcon(char norm, char uplo, char diag, IndexType n, IndexType kd, const float *Ab, IndexType ldAb, float &rCond, float *work, IndexType *iWork); template IndexType tbcon(char norm, char uplo, char diag, IndexType n, IndexType kd, const double *Ab, IndexType ldAb, double &rCond, double *work, IndexType *iWork); template IndexType tbcon(char norm, char uplo, char diag, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, float &rCond, std::complex *work, float *rWork); template IndexType tbcon(char norm, char uplo, char diag, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, double &rCond, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TBCON_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tbcon.tcc000066400000000000000000000133371456314707100246720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TBCON_TCC #define CXXLAPACK_INTERFACE_TBCON_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tbcon(char norm, char uplo, char diag, IndexType n, IndexType kd, const float *Ab, IndexType ldAb, float &rCond, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("stbcon"); IndexType info; LAPACK_IMPL(stbcon)(&norm, &uplo, &diag, &n, &kd, Ab, ldAb, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tbcon(char norm, char uplo, char diag, IndexType n, IndexType kd, const double *Ab, IndexType ldAb, double &rCond, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dtbcon"); IndexType info; LAPACK_IMPL(dtbcon)(&norm, &uplo, &diag, &n, &kd, Ab, ldAb, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tbcon(char norm, char uplo, char diag, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, float &rCond, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("ctbcon"); IndexType info; LAPACK_IMPL(ctbcon)(&norm, &uplo, &diag, &n, &kd, reinterpret_cast(Ab), ldAb, &rCond, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tbcon(char norm, char uplo, char diag, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, double &rCond, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("ztbcon"); IndexType info; LAPACK_IMPL(ztbcon)(&norm, &uplo, &diag, &n, &kd, reinterpret_cast(Ab), ldAb, &rCond, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TBCON_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tbrfs.h000066400000000000000000000105231456314707100243550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TBRFS_H #define CXXLAPACK_INTERFACE_TBRFS_H 1 #include namespace cxxlapack { template IndexType tbrfs(char uplo, char trans, char diag, IndexType n, IndexType kd, const float *Ab, IndexType ldAb, const float *B, IndexType ldB, const float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType tbrfs(char uplo, char trans, char diag, IndexType n, IndexType kd, const double *Ab, IndexType ldAb, const double *B, IndexType ldB, const double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType tbrfs(char uplo, char trans, char diag, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, const std::complex *B, IndexType ldB, const std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType tbrfs(char uplo, char trans, char diag, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, const std::complex *B, IndexType ldB, const std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TBRFS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tbrfs.tcc000066400000000000000000000161331456314707100247020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TBRFS_TCC #define CXXLAPACK_INTERFACE_TBRFS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tbrfs(char uplo, char trans, char diag, IndexType n, IndexType kd, const float *Ab, IndexType ldAb, const float *B, IndexType ldB, const float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("stbrfs"); IndexType info; LAPACK_IMPL(stbrfs)(&uplo, &trans, &diag, &n, &kd, Ab, &ldAb, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tbrfs(char uplo, char trans, char diag, IndexType n, IndexType kd, const double *Ab, IndexType ldAb, const double *B, IndexType ldB, const double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dtbrfs"); IndexType info; LAPACK_IMPL(dtbrfs)(&uplo, &trans, &diag, &n, &kd, Ab, &ldAb, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tbrfs(char uplo, char trans, char diag, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, const std::complex *B, IndexType ldB, const std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("ctbrfs"); IndexType info; LAPACK_IMPL(ctbrfs)(&uplo, &trans, &diag, &n, &kd, reinterpret_cast(Ab), &ldAb, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tbrfs(char uplo, char trans, char diag, IndexType n, IndexType kd, const std::complex *Ab, IndexType ldAb, const std::complex *B, IndexType ldB, const std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("ztbrfs"); IndexType info; LAPACK_IMPL(ztbrfs)(&uplo, &trans, &diag, &n, &kd, reinterpret_cast(Ab), &ldAb, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TBRFS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tbtrs.h000066400000000000000000000070351456314707100243770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TBTRS_H #define CXXLAPACK_INTERFACE_TBTRS_H 1 #include namespace cxxlapack { template IndexType tbtrs(char norm, char uplo, char diag, IndexType n, IndexType kd, IndexType nRhs, const float *Ab, IndexType ldAb, float *B, IndexType ldB); template IndexType tbtrs(char norm, char uplo, char diag, IndexType n, IndexType kd, IndexType nRhs, const double *Ab, IndexType ldAb, double *B, IndexType ldB); template IndexType tbtrs(char norm, char uplo, char diag, IndexType n, IndexType kd, IndexType nRhs, const std::complex *Ab, IndexType ldAb, std::complex *B, IndexType ldB); template IndexType tbtrs(char norm, char uplo, char diag, IndexType n, IndexType kd, IndexType nRhs, const std::complex *Ab, IndexType ldAb, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TBTRS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tbtrs.tcc000066400000000000000000000132331456314707100247160ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TBTRS_TCC #define CXXLAPACK_INTERFACE_TBTRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tbtrs(char norm, char uplo, char diag, IndexType n, IndexType kd, IndexType nRhs, const float *Ab, IndexType ldAb, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("stbtrs"); IndexType info; LAPACK_IMPL(stbtrs)(&norm, &uplo, &diag, &n, &kd, &nRhs, Ab, &ldAb, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tbtrs(char norm, char uplo, char diag, IndexType n, IndexType kd, IndexType nRhs, const double *Ab, IndexType ldAb, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dtbtrs"); IndexType info; LAPACK_IMPL(dtbtrs)(&norm, &uplo, &diag, &n, &kd, &nRhs, Ab, &ldAb, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tbtrs(char norm, char uplo, char diag, IndexType n, IndexType kd, IndexType nRhs, const std::complex *Ab, IndexType ldAb, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("ctbtrs"); IndexType info; LAPACK_IMPL(ctbtrs)(&norm, &uplo, &diag, &n, &kd, &nRhs, reinterpret_cast(Ab), &ldAb, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tbtrs(char norm, char uplo, char diag, IndexType n, IndexType kd, IndexType nRhs, const std::complex *Ab, IndexType ldAb, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("ztbtrs"); IndexType info; LAPACK_IMPL(ztbtrs)(&norm, &uplo, &diag, &n, &kd, &nRhs, reinterpret_cast(Ab), &ldAb, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TBTRS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tfsm.h000066400000000000000000000073061456314707100242130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TFSM_H #define CXXLAPACK_INTERFACE_TFSM_H 1 #include namespace cxxlapack { template void tfsm (char transr, char side, char uplo, char trans, char diag, IndexType m, IndexType n, float alpha, const float *A, float *B, IndexType ldB); template void tfsm (char transr, char side, char uplo, char trans, char diag, IndexType m, IndexType n, double alpha, const double *A, double *B, IndexType ldB); template void tfsm (char transr, char side, char uplo, char trans, char diag, IndexType m, IndexType n, std::complex alpha, const std::complex *A, std::complex *B, IndexType ldB); template void tfsm (char transr, char side, char uplo, char trans, char diag, IndexType m, IndexType n, std::complex alpha, const std::complex *A, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TFSM_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tfsm.tcc000066400000000000000000000123601456314707100245310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TFSM_TCC #define CXXLAPACK_INTERFACE_TFSM_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void tfsm (char transr, char side, char uplo, char trans, char diag, IndexType m, IndexType n, float alpha, const float *A, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("stfsm"); LAPACK_IMPL(stfsm) (&transr, &side, &uplo, &trans, &diag, &m, &n, &alpha, A, B, &ldB); } template void tfsm (char transr, char side, char uplo, char trans, char diag, IndexType m, IndexType n, double alpha, const double *A, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dtfsm"); LAPACK_IMPL(dtfsm) (&transr, &side, &uplo, &trans, &diag, &m, &n, &alpha, A, B, &ldB); } template void tfsm (char transr, char side, char uplo, char trans, char diag, IndexType m, IndexType n, std::complex alpha, const std::complex *A, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("ctfsm"); LAPACK_IMPL(ctfsm) (&transr, &side, &uplo, &trans, &diag, &m, &n, reinterpret_cast(&alpha), reinterpret_cast(A), reinterpret_cast(B), &ldB); } template void tfsm (char transr, char side, char uplo, char trans, char diag, IndexType m, IndexType n, std::complex alpha, const std::complex *A, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("ztfsm"); LAPACK_IMPL(ztfsm) (&transr, &side, &uplo, &trans, &diag, &m, &n, reinterpret_cast(&alpha), reinterpret_cast(A), reinterpret_cast(B), &ldB); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TFSM_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tftri.h000066400000000000000000000053311456314707100243660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TFTRI_H #define CXXLAPACK_INTERFACE_TFTRI_H 1 #include namespace cxxlapack { template IndexType tftri(char transr, char uplo, char diag, IndexType n, float *A); template IndexType tftri(char transr, char uplo, char diag, IndexType n, double *A); template IndexType tftri(char transr, char uplo, char diag, IndexType n, std::complex *A); template IndexType tftri(char transr, char uplo, char diag, IndexType n, std::complex *A); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TFTRI_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tftri.tcc000066400000000000000000000104261456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TFTRI_TCC #define CXXLAPACK_INTERFACE_TFTRI_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tftri(char transr, char uplo, char diag, IndexType n, float *A) { CXXLAPACK_DEBUG_OUT("stftri"); IndexType info; LAPACK_IMPL(stftri)(&transr, &uplo, &diag, &n, A, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tftri(char transr, char uplo, char diag, IndexType n, double *A) { CXXLAPACK_DEBUG_OUT("dtftri"); IndexType info; LAPACK_IMPL(dtftri)(&transr, &uplo, &diag, &n, A, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tftri(char transr, char uplo, char diag, IndexType n, std::complex *A) { CXXLAPACK_DEBUG_OUT("ctftri"); IndexType info; LAPACK_IMPL(ctftri)(&transr, &uplo, &diag, &n, reinterpret_cast(A), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tftri(char transr, char uplo, char diag, IndexType n, std::complex *A) { CXXLAPACK_DEBUG_OUT("ztftri"); IndexType info; LAPACK_IMPL(ztftri)(&transr, &uplo, &diag, &n, reinterpret_cast(A), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TFTRI_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tfttp.h000066400000000000000000000054311456314707100244000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TFTTP_H #define CXXLAPACK_INTERFACE_TFTTP_H 1 #include namespace cxxlapack { template IndexType tfttp(char transr, char uplo, IndexType n, const float *Arf, float *Ap); template IndexType tfttp(char transr, char uplo, IndexType n, const double *Arf, double *Ap); template IndexType tfttp(char transr, char uplo, IndexType n, const std::complex *Arf, std::complex *Ap); template IndexType tfttp(char transr, char uplo, IndexType n, const std::complex *Arf, std::complex *Ap); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TFTTP_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tfttp.tcc000066400000000000000000000106271456314707100247250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TFTTP_TCC #define CXXLAPACK_INTERFACE_TFTTP_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tfttp(char transr, char uplo, IndexType n, const float *Arf, float *Ap) { CXXLAPACK_DEBUG_OUT("stfttp"); IndexType info; LAPACK_IMPL(stfttp)(&transr, &uplo, &n, Arf, Ap, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tfttp(char transr, char uplo, IndexType n, const double *Arf, double *Ap) { CXXLAPACK_DEBUG_OUT("dtfttp"); IndexType info; LAPACK_IMPL(dtfttp)(&transr, &uplo, &n, Arf, Ap, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tfttp(char transr, char uplo, IndexType n, const std::complex *Arf, std::complex *Ap) { CXXLAPACK_DEBUG_OUT("ctfttp"); IndexType info; LAPACK_IMPL(ctfttp)(&transr, &uplo, &n, reinterpret_cast(Arf), reinterpret_cast(Ap), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tfttp(char transr, char uplo, IndexType n, const std::complex *Arf, std::complex *Ap) { CXXLAPACK_DEBUG_OUT("ztfttp"); IndexType info; LAPACK_IMPL(ztfttp)(&transr, &uplo, &n, reinterpret_cast(Arf), reinterpret_cast(Ap), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TFTTP_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tfttr.h000066400000000000000000000056651456314707100244130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TFTTR_H #define CXXLAPACK_INTERFACE_TFTTR_H 1 #include namespace cxxlapack { template IndexType tfttr(char transr, char uplo, IndexType n, const float *Arf, float *A, IndexType ldA); template IndexType tfttr(char transr, char uplo, IndexType n, const double *Arf, double *A, IndexType ldA); template IndexType tfttr(char transr, char uplo, IndexType n, const std::complex *Arf, std::complex *A, IndexType ldA); template IndexType tfttr(char transr, char uplo, IndexType n, const std::complex *Arf, std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TFTTR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tfttr.tcc000066400000000000000000000112261456314707100247230ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TFTTR_TCC #define CXXLAPACK_INTERFACE_TFTTR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tfttr(char transr, char uplo, IndexType n, const float *Arf, float *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("stfttr"); IndexType info; LAPACK_IMPL(stfttr)(&transr, &uplo, &n, Arf, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tfttr(char transr, char uplo, IndexType n, const double *Arf, double *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("dtfttr"); IndexType info; LAPACK_IMPL(dtfttr)(&transr, &uplo, &n, Arf, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tfttr(char transr, char uplo, IndexType n, const std::complex *Arf, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("ctfttr"); IndexType info; LAPACK_IMPL(ctfttr)(&transr, &uplo, &n, reinterpret_cast(Arf), reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tfttr(char transr, char uplo, IndexType n, const std::complex *Arf, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("ztfttr"); IndexType info; LAPACK_IMPL(ztfttr)(&transr, &uplo, &n, reinterpret_cast(Arf), reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TFTTR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgevc.h000066400000000000000000000106751456314707100243550ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGEVC_H #define CXXLAPACK_INTERFACE_TGEVC_H 1 #include namespace cxxlapack { template IndexType tgevc(char side, char howmny, bool select, IndexType n, const float *S, IndexType ldS, const float *P, IndexType ldP, float *VL, IndexType ldVL, float *VR, IndexType ldVR, IndexType mm, IndexType &m, float *work); template IndexType tgevc(char side, char howmny, bool select, IndexType n, const double *S, IndexType ldS, const double *P, IndexType ldP, double *VL, IndexType ldVL, double *VR, IndexType ldVR, IndexType mm, IndexType &m, double *work); template IndexType tgevc(char side, char howmny, bool select, IndexType n, const std::complex *S, IndexType ldS, const std::complex *P, IndexType ldP, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType mm, IndexType &m, std::complex *work, float *rWork); template IndexType tgevc(char side, char howmny, bool select, IndexType n, const std::complex *S, IndexType ldS, const std::complex *P, IndexType ldP, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType mm, IndexType &m, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGEVC_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgevc.tcc000066400000000000000000000166451456314707100247020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGEVC_TCC #define CXXLAPACK_INTERFACE_TGEVC_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tgevc(char side, char howmny, bool select, IndexType n, const float *S, IndexType ldS, const float *P, IndexType ldP, float *VL, IndexType ldVL, float *VR, IndexType ldVR, IndexType mm, IndexType &m, float *work) { CXXLAPACK_DEBUG_OUT("stgevc"); IndexType info; IndexType select_ = select; LAPACK_IMPL(stgevc)(&side, &howmny, &select_, &n, S, &ldS, P, &ldP, VL, &ldVL, VR, &ldVR, &mm, &m, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgevc(char side, char howmny, bool select, IndexType n, const double *S, IndexType ldS, const double *P, IndexType ldP, double *VL, IndexType ldVL, double *VR, IndexType ldVR, IndexType mm, IndexType &m, double *work) { CXXLAPACK_DEBUG_OUT("dtgevc"); IndexType info; IndexType select_ = select; LAPACK_IMPL(dtgevc)(&side, &howmny, &select_, &n, S, &ldS, P, &ldP, VL, &ldVL, VR, &ldVR, &mm, &m, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgevc(char side, char howmny, bool select, IndexType n, const std::complex *S, IndexType ldS, const std::complex *P, IndexType ldP, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType mm, IndexType &m, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("ctgevc"); IndexType info; IndexType select_ = select; LAPACK_IMPL(ctgevc)(&side, &howmny, &select_, &n, reinterpret_cast(S), &ldS, reinterpret_cast(P), &ldP, reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, &mm, &m, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgevc(char side, char howmny, bool select, IndexType n, const std::complex *S, IndexType ldS, const std::complex *P, IndexType ldP, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType mm, IndexType &m, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("ztgevc"); IndexType info; IndexType select_ = select; LAPACK_IMPL(ztgevc)(&side, &howmny, &select_, &n, reinterpret_cast(S), &ldS, reinterpret_cast(P), &ldP, reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, &mm, &m, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGEVC_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgex2.h000066400000000000000000000077751456314707100243050ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGEX2_H #define CXXLAPACK_INTERFACE_TGEX2_H 1 #include namespace cxxlapack { template IndexType tgex2(bool wantq, bool wantz, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *Q, IndexType ldQ, float *Z, IndexType ldZ, IndexType j1, IndexType n1, IndexType n2, float *work, IndexType lWork); template IndexType tgex2(bool wantq, bool wantz, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *Q, IndexType ldQ, double *Z, IndexType ldZ, IndexType j1, IndexType n1, IndexType n2, double *work, IndexType lWork); template IndexType tgex2(bool wantq, bool wantz, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ, IndexType j1); template IndexType tgex2(bool wantq, bool wantz, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ, IndexType j1); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGEX2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgex2.tcc000066400000000000000000000155271456314707100246210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGEX2_TCC #define CXXLAPACK_INTERFACE_TGEX2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tgex2(bool wantq, bool wantz, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *Q, IndexType ldQ, float *Z, IndexType ldZ, IndexType j1, IndexType n1, IndexType n2, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("stgex2"); IndexType info; IndexType wantq_ = wantq; IndexType wantz_ = wantz; LAPACK_IMPL(stgex2)(&wantq_, &wantz_, &n, A, &ldA, B, &ldB, Q, &ldQ, Z, &ldZ, &j1, &n1, &n2, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgex2(bool wantq, bool wantz, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *Q, IndexType ldQ, double *Z, IndexType ldZ, IndexType j1, IndexType n1, IndexType n2, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dtgex2"); IndexType info; IndexType wantq_ = wantq; IndexType wantz_ = wantz; LAPACK_IMPL(dtgex2)(&wantq_, &wantz_, &n, A, &ldA, B, &ldB, Q, &ldQ, Z, &ldZ, &j1, &n1, &n2, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgex2(bool wantq, bool wantz, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ, IndexType j1) { CXXLAPACK_DEBUG_OUT("ctgex2"); IndexType info; IndexType wantq_ = wantq; IndexType wantz_ = wantz; LAPACK_IMPL(ctgex2)(&wantq_, &wantz_, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(Q), &ldQ, reinterpret_cast(Z), &ldZ, &j1, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgex2(bool wantq, bool wantz, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ, IndexType j1) { CXXLAPACK_DEBUG_OUT("ztgex2"); IndexType info; IndexType wantq_ = wantq; IndexType wantz_ = wantz; LAPACK_IMPL(ztgex2)(&wantq_, &wantz_, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(Q), &ldQ, reinterpret_cast(Z), &ldZ, &j1, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGEX2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgexc.h000066400000000000000000000100151456314707100243430ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGEXC_H #define CXXLAPACK_INTERFACE_TGEXC_H 1 #include namespace cxxlapack { template IndexType tgexc(bool wantq, bool wantz, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *Q, IndexType ldQ, float *Z, IndexType ldZ, IndexType ifst, IndexType ilst, float *work, IndexType lWork); template IndexType tgexc(bool wantq, bool wantz, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *Q, IndexType ldQ, double *Z, IndexType ldZ, IndexType ifst, IndexType ilst, double *work, IndexType lWork); template IndexType tgexc(bool wantq, bool wantz, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ, IndexType ifst, IndexType ilst); template IndexType tgexc(bool wantq, bool wantz, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ, IndexType ifst, IndexType ilst); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGEXC_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgexc.tcc000066400000000000000000000155671456314707100247060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGEXC_TCC #define CXXLAPACK_INTERFACE_TGEXC_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tgexc(bool wantq, bool wantz, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *Q, IndexType ldQ, float *Z, IndexType ldZ, IndexType ifst, IndexType ilst, float *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("stgexc"); IndexType info; IndexType wantq_ = wantq; IndexType wantz_ = wantz; LAPACK_IMPL(stgexc)(&wantq_, &wantz_, &n, A, &ldA, B, &ldB, Q, &ldQ, Z, &ldZ, &ifst, &ilst, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgexc(bool wantq, bool wantz, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *Q, IndexType ldQ, double *Z, IndexType ldZ, IndexType ifst, IndexType ilst, double *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("dtgexc"); IndexType info; IndexType wantq_ = wantq; IndexType wantz_ = wantz; LAPACK_IMPL(dtgexc)(&wantq_, &wantz_, &n, A, &ldA, B, &ldB, Q, &ldQ, Z, &ldZ, &ifst, &ilst, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgexc(bool wantq, bool wantz, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ, IndexType ifst, IndexType ilst) { CXXLAPACK_DEBUG_OUT("ctgexc"); IndexType info; IndexType wantq_ = wantq; IndexType wantz_ = wantz; LAPACK_IMPL(ctgexc)(&wantq_, &wantz_, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(Q), &ldQ, reinterpret_cast(Z), &ldZ, &ifst, &ilst, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgexc(bool wantq, bool wantz, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ, IndexType ifst, IndexType ilst) { CXXLAPACK_DEBUG_OUT("ztgexc"); IndexType info; IndexType wantq_ = wantq; IndexType wantz_ = wantz; LAPACK_IMPL(ztgexc)(&wantq_, &wantz_, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(Q), &ldQ, reinterpret_cast(Z), &ldZ, &ifst, &ilst, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGEXC_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgsen.h000066400000000000000000000134131456314707100243560ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGSEN_H #define CXXLAPACK_INTERFACE_TGSEN_H 1 #include namespace cxxlapack { // template // IndexType // tgsen(IndexType ijob, // bool wantq, // bool wantz, // bool *select, // IndexType n, // float *A, // IndexType ldA, // float *B, // IndexType ldB, // float *alphar, // float *alphai, // float *beta, // float *Q, // IndexType ldQ, // float *Z, // IndexType ldZ, // IndexType &m, // float &pl, // float &pr, // float *dif, // float *work, // IndexType lWork, // IndexType *iWork, // IndexType liWork); // // template // IndexType // tgsen(IndexType ijob, // bool wantq, // bool wantz, // bool *select, // IndexType n, // double *A, // IndexType ldA, // double *B, // IndexType ldB, // double *alphar, // double *alphai, // double *beta, // double *Q, // IndexType ldQ, // double *Z, // IndexType ldZ, // IndexType &m, // double &pl, // double &pr, // double *dif, // double *work, // IndexType lWork, // IndexType *iWork, // IndexType liWork); // // template // IndexType // tgsen(IndexType ijob, // bool wantq, // bool wantz, // bool *select, // IndexType n, // std::complex *A, // IndexType ldA, // std::complex *B, // IndexType ldB, // std::complex *alpha, // std::complex *beta, // std::complex *Q, // IndexType ldQ, // std::complex *Z, // IndexType ldZ, // IndexType &m, // double &pl, // double &pr, // double *dif, // std::complex *work, // IndexType lWork, // IndexType *iWork, // IndexType liWork); // template // IndexType // tgsen(IndexType ijob, // bool wantq, // bool wantz, // bool *select, // IndexType n, // std::complex *A, // IndexType ldA, // std::complex *B, // IndexType ldB, // std::complex *alpha, // std::complex *beta, // std::complex *Q, // IndexType ldQ, // std::complex *Z, // IndexType ldZ, // IndexType &m, // double &pl, // double &pr, // double *dif, // std::complex *work, // IndexType lWork, // IndexType *iWork, // IndexType liWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGSEN_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgsen.tcc000066400000000000000000000236041456314707100247030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGSEN_TCC #define CXXLAPACK_INTERFACE_TGSEN_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { /*template IndexType tgsen(IndexType ijob, bool wantq, bool wantz, bool *select, IndexType n, float *A, IndexType ldA, float *B, IndexType ldB, float *alphar, float *alphai, float *beta, float *Q, IndexType ldQ, float *Z, IndexType ldZ, IndexType &m, float &pl, float &pr, float *dif, float *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("stgsen"); IndexType info; IndexType wantq_ = wantq; IndexType wantz_ = wantz; //TODO: Convert select into a logical array! LAPACK_IMPL(stgsen)(&ijob, &wantq_, &wantz_, select, &n, A, &ldA, B, &ldB, alphar, alphai, beta, Q, &ldQ, Z, &ldZ, &m, &pl, &pr, dif, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgsen(IndexType ijob, bool wantq, bool wantz, bool *select, IndexType n, double *A, IndexType ldA, double *B, IndexType ldB, double *alphar, double *alphai, double *beta, double *Q, IndexType ldQ, double *Z, IndexType ldZ, IndexType &m, double &pl, double &pr, double *dif, double *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("dtgsen"); IndexType info; IndexType wantq_ = wantq; IndexType wantz_ = wantz; //TODO: Convert select into a logical array! LAPACK_IMPL(dtgsen)(&ijob, &wantq_, &wantz_, select, &n, A, &ldA, B, &ldB, alphar, alphai, beta, Q, &ldQ, Z, &ldZ, &m, &pl, &pr, dif, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgsen(IndexType ijob, bool wantq, bool wantz, bool *select, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ, IndexType &m, double &pl, double &pr, double *dif, std::complex *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("ctgsen"); IndexType info; IndexType wantq_ = wantq; IndexType wantz_ = wantz; //TODO: Convert select into a logical array! LAPACK_IMPL(ctgsen)(&ijob, &wantq_, &wantz_, select, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(Q), &ldQ, reinterpret_cast(Z), &ldZ, &m, &pl, &pr, dif, reinterpret_cast(work), &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgsen(IndexType ijob, bool wantq, bool wantz, bool *select, IndexType n, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, std::complex *alpha, std::complex *beta, std::complex *Q, IndexType ldQ, std::complex *Z, IndexType ldZ, IndexType &m, double &pl, double &pr, double *dif, std::complex *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("ztgsen"); IndexType info; IndexType wantq_ = wantq; IndexType wantz_ = wantz; //TODO: Convert select into a logical array! LAPACK_IMPL(ztgsen)(&ijob, &wantq_, &wantz_, select, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(alpha), reinterpret_cast(beta), reinterpret_cast(Q), &ldQ, reinterpret_cast(Z), &ldZ, &m, &pl, &pr, dif, reinterpret_cast(work), &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; }*/ } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGSEN_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgsja.h000066400000000000000000000127211456314707100243470ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGSJA_H #define CXXLAPACK_INTERFACE_TGSJA_H 1 #include namespace cxxlapack { template IndexType tgsja(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, IndexType k, IndexType l, float *A, IndexType ldA, float *B, IndexType ldB, float tola, float tolb, float *alpha, float *beta, float *U, IndexType ldU, float *V, IndexType ldV, float *Q, IndexType ldQ, float *work, IndexType &ncycle); template IndexType tgsja(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, IndexType k, IndexType l, double *A, IndexType ldA, double *B, IndexType ldB, double tola, double tolb, double *alpha, double *beta, double *U, IndexType ldU, double *V, IndexType ldV, double *Q, IndexType ldQ, double *work, IndexType &ncycle); template IndexType tgsja(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, IndexType k, IndexType l, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, float tola, float tolb, float *alpha, float *beta, std::complex *U, IndexType ldU, std::complex *V, IndexType ldV, std::complex *Q, IndexType ldQ, std::complex *work, IndexType &ncycle); template IndexType tgsja(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, IndexType k, IndexType l, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, double tola, double tolb, double *alpha, double *beta, std::complex *U, IndexType ldU, std::complex *V, IndexType ldV, std::complex *Q, IndexType ldQ, std::complex *work, IndexType &ncycle); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGSJA_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgsja.tcc000066400000000000000000000221471456314707100246740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGSJA_TCC #define CXXLAPACK_INTERFACE_TGSJA_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tgsja(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, IndexType k, IndexType l, float *A, IndexType ldA, double *B, IndexType ldB, float tola, float tolb, float *alpha, float *beta, float *U, IndexType ldU, float *V, IndexType ldV, float *Q, IndexType ldQ, float *work, IndexType &ncycle) { CXXLAPACK_DEBUG_OUT("stgsja"); IndexType info; LAPACK_IMPL(stgsja)(&jobu, &jobv, &jobq, &m, &p, &n, &k, &l, A, &ldA, B, &ldB, &tola, &tolb, alpha, beta, U, &ldU, V, &ldV, Q, &ldQ, work, &ncycle, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgsja(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, IndexType k, IndexType l, double *A, IndexType ldA, double *B, IndexType ldB, double tola, double tolb, double *alpha, double *beta, double *U, IndexType ldU, double *V, IndexType ldV, double *Q, IndexType ldQ, double *work, IndexType &ncycle) { CXXLAPACK_DEBUG_OUT("dtgsja"); IndexType info; LAPACK_IMPL(dtgsja)(&jobu, &jobv, &jobq, &m, &p, &n, &k, &l, A, &ldA, B, &ldB, &tola, &tolb, alpha, beta, U, &ldU, V, &ldV, Q, &ldQ, work, &ncycle, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgsja(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, IndexType k, IndexType l, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, double tola, double tolb, double *alpha, double *beta, std::complex *U, IndexType ldU, std::complex *V, IndexType ldV, std::complex *Q, IndexType ldQ, std::complex *work, IndexType &ncycle) { CXXLAPACK_DEBUG_OUT("ctgsja"); IndexType info; LAPACK_IMPL(ctgsja)(&jobu, &jobv, &jobq, &m, &p, &n, &k, &l, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &tola, &tolb, alpha, beta, reinterpret_cast(U), &ldU, reinterpret_cast(V), &ldV, reinterpret_cast(Q), &ldQ, work, &ncycle, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgsja(char jobu, char jobv, char jobq, IndexType m, IndexType p, IndexType n, IndexType k, IndexType l, std::complex *A, IndexType ldA, std::complex *B, IndexType ldB, double tola, double tolb, double *alpha, double *beta, std::complex *U, IndexType ldU, std::complex *V, IndexType ldV, std::complex *Q, IndexType ldQ, std::complex *work, IndexType &ncycle) { CXXLAPACK_DEBUG_OUT("ztgsja"); IndexType info; LAPACK_IMPL(ztgsja)(&jobu, &jobv, &jobq, &m, &p, &n, &k, &l, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &tola, &tolb, alpha, beta, reinterpret_cast(U), &ldU, reinterpret_cast(V), &ldV, reinterpret_cast(Q), &ldQ, work, &ncycle, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGSJA_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgsna.h000066400000000000000000000120341456314707100243500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGSNA_H #define CXXLAPACK_INTERFACE_TGSNA_H 1 #include namespace cxxlapack { /* template IndexType tgsna(char job, char howmny, bool *select, IndexType n, const float *A, IndexType ldA, const float *B, IndexType ldB, const float *VL, IndexType ldVL, const float *VR, IndexType ldVR, float *s, float *dif, IndexType mm, IndexType &m, float *work, IndexType lWork, IndexType *iWork); template IndexType tgsna(char job, char howmny, bool *select, IndexType n, const double *A, IndexType ldA, const double *B, IndexType ldB, const double *VL, IndexType ldVL, const double *VR, IndexType ldVR, double *s, double *dif, IndexType mm, IndexType &m, double *work, IndexType lWork, IndexType *iWork); template IndexType tgsna(char job, char howmny, bool *select, IndexType n, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, const std::complex *VL, IndexType ldVL, const std::complex *VR, IndexType ldVR, float *s, float *dif, IndexType mm, IndexType &m, std::complex *work, IndexType lWork, IndexType *iWork); template IndexType tgsna(char job, char howmny, bool *select, IndexType n, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, const std::complex *VL, IndexType ldVL, const std::complex *VR, IndexType ldVR, double *s, double *dif, IndexType mm, IndexType &m, std::complex *work, IndexType lWork, IndexType *iWork); */ } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGSNA_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgsna.tcc000066400000000000000000000211331456314707100246720ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGSNA_TCC #define CXXLAPACK_INTERFACE_TGSNA_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { /* template IndexType tgsna(char job, char howmny, bool *select, IndexType n, const float *A, IndexType ldA, const float *B, IndexType ldB, const float *VL, IndexType ldVL, const float *VR, IndexType ldVR, float *s, float *dif, IndexType mm, IndexType &m, float *work, IndexType lWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("stgsna"); IndexType info; // TODO: Convert select into a logical array! LAPACK_IMPL(stgsna)(&job, &howmny, select, &n, A, &ldA, B, &ldB, VL, &ldVL, VR, &ldVR, s, dif, &mm, &m, work, &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgsna(char job, char howmny, bool *select, IndexType n, const double *A, IndexType ldA, const double *B, IndexType ldB, const double *VL, IndexType ldVL, const double *VR, IndexType ldVR, double *s, double *dif, IndexType mm, IndexType &m, double *work, IndexType lWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dtgsna"); IndexType info; // TODO: Convert select into a logical array! LAPACK_IMPL(dtgsna)(&job, &howmny, select, &n, A, &ldA, B, &ldB, VL, &ldVL, VR, &ldVR, s, dif, &mm, &m, work, &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgsna(char job, char howmny, bool *select, IndexType n, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, const std::complex *VL, IndexType ldVL, const std::complex *VR, IndexType ldVR, float *s, float *dif, IndexType mm, IndexType &m, std::complex *work, IndexType lWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("ctgsna"); IndexType info; // TODO: Convert select into a logical array! LAPACK_IMPL(ctgsna)(&job, &howmny, select, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, s, dif, &mm, &m, reinterpret_cast(work), &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgsna(char job, char howmny, bool *select, IndexType n, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, const std::complex *VL, IndexType ldVL, const std::complex *VR, IndexType ldVR, double *s, double *dif, IndexType mm, IndexType &m, std::complex *work, IndexType lWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("ztgsna"); IndexType info; // TODO: Convert select into a logical array! LAPACK_IMPL(ztgsna)(&job, &howmny, select, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, s, dif, &mm, &m, reinterpret_cast(work), &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; }*/ } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGSNA_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgsy2.h000066400000000000000000000121641456314707100243100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGSY2_H #define CXXLAPACK_INTERFACE_TGSY2_H 1 #include namespace cxxlapack { template IndexType tgsy2(char trans, IndexType ijob, IndexType m, IndexType n, const float *A, IndexType ldA, const float *B, IndexType ldB, float *C, IndexType ldC, const float *D, IndexType ldD, const float *E, IndexType ldE, float *F, IndexType ldF, float &scale, float &rdsum, float &rdscal, IndexType *iWork, IndexType &pq); template IndexType tgsy2(char trans, IndexType ijob, IndexType m, IndexType n, const double *A, IndexType ldA, const double *B, IndexType ldB, double *C, IndexType ldC, const double *D, IndexType ldD, const double *E, IndexType ldE, double *F, IndexType ldF, double &scale, double &rdsum, double &rdscal, IndexType *iWork, IndexType &pq); template IndexType tgsy2(char trans, IndexType ijob, IndexType m, IndexType n, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, std::complex *C, IndexType ldC, const std::complex *D, IndexType ldD, const std::complex *E, IndexType ldE, std::complex *F, IndexType ldF, float &scale, float &rdsum, float &rdscal); template IndexType tgsy2(char trans, IndexType ijob, IndexType m, IndexType n, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, std::complex *C, IndexType ldC, const std::complex *D, IndexType ldD, const std::complex *E, IndexType ldE, std::complex *F, IndexType ldF, double &scale, double &rdsum, double &rdscal); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGSY2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgsy2.tcc000066400000000000000000000207441456314707100246350ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGSY2_TCC #define CXXLAPACK_INTERFACE_TGSY2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tgsy2(char trans, IndexType ijob, IndexType m, IndexType n, const float *A, IndexType ldA, const float *B, IndexType ldB, float *C, IndexType ldC, const float *D, IndexType ldD, const float *E, IndexType ldE, float *F, IndexType ldF, float &scale, float &rdsum, float &rdscal, IndexType *iWork, IndexType &pq) { CXXLAPACK_DEBUG_OUT("stgsy2"); IndexType info; LAPACK_IMPL(stgsy2)(&trans, &ijob, &m, &n, A, &ldA, B, &ldB, C, &ldC, D, &ldD, E, &ldE, F, &ldF, &scale, &rdsum, &rdscal, iWork, &pq, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgsy2(char trans, IndexType ijob, IndexType m, IndexType n, const double *A, IndexType ldA, const double *B, IndexType ldB, double *C, IndexType ldC, const double *D, IndexType ldD, const double *E, IndexType ldE, double *F, IndexType ldF, double &scale, double &rdsum, double &rdscal, IndexType *iWork, IndexType &pq) { CXXLAPACK_DEBUG_OUT("dtgsy2"); IndexType info; LAPACK_IMPL(dtgsy2)(&trans, &ijob, &m, &n, A, &ldA, B, &ldB, C, &ldC, D, &ldD, E, &ldE, F, &ldF, &scale, &rdsum, &rdscal, iWork, &pq, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgsy2(char trans, IndexType ijob, IndexType m, IndexType n, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, std::complex *C, IndexType ldC, const std::complex *D, IndexType ldD, const std::complex *E, IndexType ldE, std::complex *F, IndexType ldF, float &scale, float &rdsum, float &rdscal) { CXXLAPACK_DEBUG_OUT("ctgsy2"); IndexType info; LAPACK_IMPL(ctgsy2)(&trans, &ijob, &m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(C), &ldC, reinterpret_cast(D), &ldD, reinterpret_cast(E), &ldE, reinterpret_cast(F), &ldF, &scale, &rdsum, &rdscal, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgsy2(char trans, IndexType ijob, IndexType m, IndexType n, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, std::complex *C, IndexType ldC, const std::complex *D, IndexType ldD, const std::complex *E, IndexType ldE, std::complex *F, IndexType ldF, double &scale, double &rdsum, double &rdscal) { CXXLAPACK_DEBUG_OUT("ztgsy2"); IndexType info; LAPACK_IMPL(ztgsy2)(&trans, &ijob, &m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(C), &ldC, reinterpret_cast(D), &ldD, reinterpret_cast(E), &ldE, reinterpret_cast(F), &ldF, &scale, &rdsum, &rdscal, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGSY2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgsyl.h000066400000000000000000000124351456314707100244030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGSYL_H #define CXXLAPACK_INTERFACE_TGSYL_H 1 #include namespace cxxlapack { template IndexType tgsyl(char trans, IndexType ijob, IndexType m, IndexType n, const float *A, IndexType ldA, const float *B, IndexType ldB, float *C, IndexType ldC, const float *D, IndexType ldD, const float *E, IndexType ldE, float *F, IndexType ldF, float &scale, float &dif, float *work, IndexType lWork, IndexType *iWork); template IndexType tgsyl(char trans, IndexType ijob, IndexType m, IndexType n, const double *A, IndexType ldA, const double *B, IndexType ldB, double *C, IndexType ldC, const double *D, IndexType ldD, const double *E, IndexType ldE, double *F, IndexType ldF, double &scale, double &dif, double *work, IndexType lWork, IndexType *iWork); template IndexType tgsyl(char trans, IndexType ijob, IndexType m, IndexType n, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, std::complex *C, IndexType ldC, const std::complex *D, IndexType ldD, const std::complex *E, IndexType ldE, std::complex *F, IndexType ldF, float &scale, float &dif, std::complex *work, IndexType lWork, IndexType *iWork); template IndexType tgsyl(char trans, IndexType ijob, IndexType m, IndexType n, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, std::complex *C, IndexType ldC, const std::complex *D, IndexType ldD, const std::complex *E, IndexType ldE, std::complex *F, IndexType ldF, double &scale, double &dif, std::complex *work, IndexType lWork, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGSYL_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tgsyl.tcc000066400000000000000000000214451456314707100247260ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TGSYL_TCC #define CXXLAPACK_INTERFACE_TGSYL_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tgsyl(char trans, IndexType ijob, IndexType m, IndexType n, const float *A, IndexType ldA, const float *B, IndexType ldB, float *C, IndexType ldC, const float *D, IndexType ldD, const float *E, IndexType ldE, float *F, IndexType ldF, float &scale, float &dif, float *work, IndexType lWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("stgsyl"); IndexType info; LAPACK_IMPL(stgsyl)(&trans, &ijob, &m, &n, A, &ldA, B, &ldB, C, &ldC, D, &ldD, E, &ldE, F, &ldF, &scale, &dif, work, &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgsyl(char trans, IndexType ijob, IndexType m, IndexType n, const double *A, IndexType ldA, const double *B, IndexType ldB, double *C, IndexType ldC, const double *D, IndexType ldD, const double *E, IndexType ldE, double *F, IndexType ldF, double &scale, double &dif, double *work, IndexType lWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dtgsyl"); IndexType info; LAPACK_IMPL(dtgsyl)(&trans, &ijob, &m, &n, A, &ldA, B, &ldB, C, &ldC, D, &ldD, E, &ldE, F, &ldF, &scale, &dif, work, &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgsyl(char trans, IndexType ijob, IndexType m, IndexType n, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, std::complex *C, IndexType ldC, const std::complex *D, IndexType ldD, const std::complex *E, IndexType ldE, std::complex *F, IndexType ldF, float &scale, float &dif, std::complex *work, IndexType lWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("ctgsyl"); IndexType info; LAPACK_IMPL(ctgsyl)(&trans, &ijob, &m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(C), &ldC, reinterpret_cast(D), &ldD, reinterpret_cast(E), &ldE, reinterpret_cast(F), &ldF, &scale, &dif, reinterpret_cast(work), &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tgsyl(char trans, IndexType ijob, IndexType m, IndexType n, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, std::complex *C, IndexType ldC, const std::complex *D, IndexType ldD, const std::complex *E, IndexType ldE, std::complex *F, IndexType ldF, double &scale, double &dif, std::complex *work, IndexType lWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("ztgsyl"); IndexType info; LAPACK_IMPL(ztgsyl)(&trans, &ijob, &m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(C), &ldC, reinterpret_cast(D), &ldD, reinterpret_cast(E), &ldE, reinterpret_cast(F), &ldF, &scale, &dif, reinterpret_cast(work), &lWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TGSYL_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tpcon.h000066400000000000000000000064211456314707100243620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TPCON_H #define CXXLAPACK_INTERFACE_TPCON_H 1 #include namespace cxxlapack { template IndexType tpcon(char norm, char uplo, char diag, IndexType n, const float *Ap, float &rCond, float *work, IndexType *iWork); template IndexType tpcon(char norm, char uplo, char diag, IndexType n, const double *Ap, double &rCond, double *work, IndexType *iWork); template IndexType tpcon(char norm, char uplo, char diag, IndexType n, const std::complex *Ap, float &rCond, std::complex *work, float *rWork); template IndexType tpcon(char norm, char uplo, char diag, IndexType n, const std::complex *Ap, double &rCond, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TPCON_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tpcon.tcc000066400000000000000000000123241456314707100247030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TPCON_TCC #define CXXLAPACK_INTERFACE_TPCON_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tpcon(char norm, char uplo, char diag, IndexType n, const float *Ap, float &rCond, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("stpcon"); IndexType info; LAPACK_IMPL(stpcon)(&norm, &uplo, &diag, &n, Ap, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tpcon(char norm, char uplo, char diag, IndexType n, const double *Ap, double &rCond, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dtpcon"); IndexType info; LAPACK_IMPL(dtpcon)(&norm, &uplo, &diag, &n, Ap, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tpcon(char norm, char uplo, char diag, IndexType n, const std::complex *Ap, float &rCond, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("ctpcon"); IndexType info; LAPACK_IMPL(ctpcon)(&norm, &uplo, &diag, &n, reinterpret_cast(Ap), &rCond, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tpcon(char norm, char uplo, char diag, IndexType n, const std::complex *Ap, double &rCond, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("ztpcon"); IndexType info; LAPACK_IMPL(ztpcon)(&norm, &uplo, &diag, &n, reinterpret_cast(Ap), &rCond, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TPCON_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tprfs.h000066400000000000000000000103251456314707100243730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TPRFS_H #define CXXLAPACK_INTERFACE_TPRFS_H 1 #include namespace cxxlapack { template IndexType tprfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const float *Ap, const float *B, IndexType ldB, const float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType tprfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const double *Ap, const double *B, IndexType ldB, const double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType tprfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *B, IndexType ldB, const std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType tprfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *B, IndexType ldB, const std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TPRFS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tprfs.tcc000066400000000000000000000155701456314707100247240ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TPRFS_TCC #define CXXLAPACK_INTERFACE_TPRFS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tprfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const float *Ap, const float *B, IndexType ldB, const float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("stprfs"); IndexType info; LAPACK_IMPL(stprfs)(&uplo, &trans, &diag, &n, &nRhs, Ap, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tprfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const double *Ap, const double *B, IndexType ldB, const double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dtprfs"); IndexType info; LAPACK_IMPL(dtprfs)(&uplo, &trans, &diag, &n, &nRhs, Ap, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tprfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *B, IndexType ldB, const std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("ctprfs"); IndexType info; LAPACK_IMPL(ctprfs)(&uplo, &trans, &diag, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tprfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *Ap, const std::complex *B, IndexType ldB, const std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("ztprfs"); IndexType info; LAPACK_IMPL(ztprfs)(&uplo, &trans, &diag, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TPRFS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tptri.h000066400000000000000000000050761456314707100244060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TPTRI_H #define CXXLAPACK_INTERFACE_TPTRI_H 1 #include namespace cxxlapack { template IndexType tptri(char uplo, char diag, IndexType n, float *Ap); template IndexType tptri(char uplo, char diag, IndexType n, double *Ap); template IndexType tptri(char uplo, char diag, IndexType n, std::complex *Ap); template IndexType tptri(char uplo, char diag, IndexType n, std::complex *Ap); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TPTRI_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tptri.tcc000066400000000000000000000100131456314707100247130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TPTRI_TCC #define CXXLAPACK_INTERFACE_TPTRI_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tptri(char uplo, char diag, IndexType n, float *Ap) { CXXLAPACK_DEBUG_OUT("stptri"); IndexType info; LAPACK_IMPL(stptri)(&uplo, &diag, &n, Ap, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tptri(char uplo, char diag, IndexType n, double *Ap) { CXXLAPACK_DEBUG_OUT("dtptri"); IndexType info; LAPACK_IMPL(dtptri)(&uplo, &diag, &n, Ap, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tptri(char uplo, char diag, IndexType n, std::complex *Ap) { CXXLAPACK_DEBUG_OUT("ctptri"); IndexType info; LAPACK_IMPL(ctptri)(&uplo, &diag, &n, reinterpret_cast(Ap), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tptri(char uplo, char diag, IndexType n, std::complex *Ap) { CXXLAPACK_DEBUG_OUT("ztptri"); IndexType info; LAPACK_IMPL(ztptri)(&uplo, &diag, &n, reinterpret_cast(Ap), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TPTRI_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tptrs.h000066400000000000000000000063661456314707100244230ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TPTRS_H #define CXXLAPACK_INTERFACE_TPTRS_H 1 #include namespace cxxlapack { template IndexType tptrs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const float *Ap, float *B, IndexType ldB); template IndexType tptrs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const double *Ap, double *B, IndexType ldB); template IndexType tptrs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *B, IndexType ldB); template IndexType tptrs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TPTRS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tptrs.tcc000066400000000000000000000122451456314707100247360ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TPTRS_TCC #define CXXLAPACK_INTERFACE_TPTRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tptrs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const float *Ap, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("stptrs"); IndexType info; LAPACK_IMPL(stptrs)(&uplo, &trans, &diag, &n, &nRhs, Ap, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tptrs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const double *Ap, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dtptrs"); IndexType info; LAPACK_IMPL(dtptrs)(&uplo, &trans, &diag, &n, &nRhs, Ap, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tptrs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("ctptrs"); IndexType info; LAPACK_IMPL(ctptrs)(&uplo, &trans, &diag, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tptrs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *Ap, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("ztptrs"); IndexType info; LAPACK_IMPL(ztptrs)(&uplo, &trans, &diag, &n, &nRhs, reinterpret_cast(Ap), reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TPTRS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tpttf.h000066400000000000000000000054171456314707100244040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TPTTF_H #define CXXLAPACK_INTERFACE_TPTTF_H 1 #include namespace cxxlapack { template IndexType tpttf(char transr, char uplo, IndexType n, const float *Ap, float *Arf); template IndexType tpttf(char transr, char uplo, IndexType n, const double *Ap, double *Arf); template IndexType tpttf(char transr, char uplo, IndexType n, const std::complex *Ap, std::complex *Arf); template IndexType tpttf(char transr, char uplo, IndexType n, const std::complex *Ap, std::complex *Arf); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TPTTF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tpttf.tcc000066400000000000000000000106151456314707100247220ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TPTTF_TCC #define CXXLAPACK_INTERFACE_TPTTF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tpttf(char transr, char uplo, IndexType n, const float *Ap, float *Arf) { CXXLAPACK_DEBUG_OUT("stpttf"); IndexType info; LAPACK_IMPL(stpttf)(&transr, &uplo, &n, Ap, Arf, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tpttf(char transr, char uplo, IndexType n, const double *Ap, double *Arf) { CXXLAPACK_DEBUG_OUT("dtpttf"); IndexType info; LAPACK_IMPL(dtpttf)(&transr, &uplo, &n, Ap, Arf, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tpttf(char transr, char uplo, IndexType n, const std::complex *Ap, std::complex *Arf) { CXXLAPACK_DEBUG_OUT("ctpttf"); IndexType info; LAPACK_IMPL(ctpttf)(&transr, &uplo, &n, reinterpret_cast(Ap), reinterpret_cast(Arf), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tpttf(char transr, char uplo, IndexType n, const std::complex *Ap, std::complex *Arf) { CXXLAPACK_DEBUG_OUT("ztpttf"); IndexType info; LAPACK_IMPL(ztpttf)(&transr, &uplo, &n, reinterpret_cast(Ap), reinterpret_cast(Arf), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TPTTF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tpttr.h000066400000000000000000000053741456314707100244220ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TPTTR_H #define CXXLAPACK_INTERFACE_TPTTR_H 1 #include namespace cxxlapack { template IndexType tpttr(char uplo, IndexType n, const float *Ap, float *A, IndexType ldA); template IndexType tpttr(char uplo, IndexType n, const double *Ap, double *A, IndexType ldA); template IndexType tpttr(char uplo, IndexType n, const std::complex *Ap, std::complex *A, IndexType ldA); template IndexType tpttr(char uplo, IndexType n, const std::complex *Ap, std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TPTTR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tpttr.tcc000066400000000000000000000105451456314707100247400ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TPTTR_TCC #define CXXLAPACK_INTERFACE_TPTTR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tpttr(char uplo, IndexType n, const float *Ap, float *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("stpttr"); IndexType info; LAPACK_IMPL(stpttr)(&uplo, &n, Ap, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tpttr(char uplo, IndexType n, const double *Ap, double *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("dtpttr"); IndexType info; LAPACK_IMPL(dtpttr)(&uplo, &n, Ap, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tpttr(char uplo, IndexType n, const std::complex *Ap, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("ctpttr"); IndexType info; LAPACK_IMPL(ctpttr)(&uplo, &n, reinterpret_cast(Ap), reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tpttr(char uplo, IndexType n, const std::complex *Ap, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("ztpttr"); IndexType info; LAPACK_IMPL(ztpttr)(&uplo, &n, reinterpret_cast(Ap), reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TPTTR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trcon.h000066400000000000000000000046251456314707100243700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRCON_H #define CXXLAPACK_INTERFACE_TRCON_H 1 #include namespace cxxlapack { template IndexType trcon(IndexType m, IndexType n, float *A); template IndexType trcon(IndexType m, IndexType n, double *A); template IndexType trcon(IndexType n, IndexType m, std::complex *A); template IndexType trcon(IndexType n, IndexType m, std::complex *A); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRCON_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trcon.tcc000066400000000000000000000127231456314707100247100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRCON_TCC #define CXXLAPACK_INTERFACE_TRCON_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType trcon(char norm, char uplo, char diag, IndexType n, const float *A, IndexType ldA, float &rCond, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("strcon"); IndexType info; LAPACK_IMPL(strcon)(&norm, &uplo, &diag, &n, A, &ldA, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trcon(char norm, char uplo, char diag, IndexType n, const double *A, IndexType ldA, double &rCond, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dtrcon"); IndexType info; LAPACK_IMPL(dtrcon)(&norm, &uplo, &diag, &n, A, &ldA, &rCond, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trcon(char norm, char uplo, char diag, IndexType n, const std::complex *A, IndexType ldA, float &rCond, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("ctrcon"); IndexType info; LAPACK_IMPL(ctrcon)(&norm, &uplo, &diag, &n, reinterpret_cast(A), &ldA, &rCond, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trcon(char norm, char uplo, char diag, IndexType n, const std::complex *A, IndexType ldA, double &rCond, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("ztrcon"); IndexType info; LAPACK_IMPL(ztrcon)(&norm, &uplo, &diag, &n, reinterpret_cast(A), &ldA, &rCond, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRCON_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trevc.h000066400000000000000000000074021456314707100243620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TREVC_H #define CXXLAPACK_INTERFACE_TREVC_H 1 #include namespace cxxlapack { template IndexType trevc(char side, char howMany, IndexType *select, IndexType n, const float *T, IndexType ldT, float *VL, IndexType ldVL, float *VR, IndexType ldVR, IndexType mm, IndexType &m, float *work); template IndexType trevc(char side, char howMany, IndexType *select, IndexType n, const double *T, IndexType ldT, double *VL, IndexType ldVL, double *VR, IndexType ldVR, IndexType mm, IndexType &m, double *work); template IndexType trevc(char side, char howMany, IndexType *select, IndexType n, std::complex *T, IndexType ldT, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType mm, IndexType &m, std::complex *work, float *rWork); template IndexType trevc(char side, char howMany, IndexType *select, IndexType n, std::complex *T, IndexType ldT, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType mm, IndexType &m, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TREVC_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trevc.tcc000066400000000000000000000145221456314707100247050ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TREVC_TCC #define CXXLAPACK_INTERFACE_TREVC_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType trevc(char side, char howMany, IndexType *select, IndexType n, const float *T, IndexType ldT, float *VL, IndexType ldVL, float *VR, IndexType ldVR, IndexType mm, IndexType &m, float *work) { CXXLAPACK_DEBUG_OUT("strevc"); IndexType info; LAPACK_IMPL(strevc)(&side, &howMany, select, &n, T, &ldT, VL, &ldVL, VR, &ldVR, &mm, &m, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trevc(char side, char howMany, IndexType *select, IndexType n, const double *T, IndexType ldT, double *VL, IndexType ldVL, double *VR, IndexType ldVR, IndexType mm, IndexType &m, double *work) { CXXLAPACK_DEBUG_OUT("dtrevc"); IndexType info; LAPACK_IMPL(dtrevc)(&side, &howMany, select, &n, T, &ldT, VL, &ldVL, VR, &ldVR, &mm, &m, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trevc(char side, char howMany, IndexType *select, IndexType n, std::complex *T, IndexType ldT, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType mm, IndexType &m, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("ctrevc"); IndexType info; LAPACK_IMPL(ctrevc)(&side, &howMany, select, &n, reinterpret_cast(T), &ldT, reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, &mm, &m, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trevc(char side, char howMany, IndexType *select, IndexType n, std::complex *T, IndexType ldT, std::complex *VL, IndexType ldVL, std::complex *VR, IndexType ldVR, IndexType mm, IndexType &m, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("ztrevc"); IndexType info; LAPACK_IMPL(ztrevc)(&side, &howMany, select, &n, reinterpret_cast(T), &ldT, reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, &mm, &m, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TREVC_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trexc.h000066400000000000000000000061131456314707100243620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TREXC_H #define CXXLAPACK_INTERFACE_TREXC_H 1 #include namespace cxxlapack { template IndexType trexc(char compQ, IndexType n, float *T, IndexType ldT, float *Q, IndexType ldQ, IndexType &iFirst, IndexType &iLast, float *work); template IndexType trexc(char compQ, IndexType n, double *T, IndexType ldT, double *Q, IndexType ldQ, IndexType &iFirst, IndexType &iLast, double *work); template IndexType trexc(char compQ, IndexType n, std::complex *T, IndexType ldT, std::complex *Q, IndexType ldQ, IndexType iFirst, IndexType iLast); template IndexType trexc(char compQ, IndexType n, std::complex *T, IndexType ldT, std::complex *Q, IndexType ldQ, IndexType iFirst, IndexType iLast); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TREXC_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trexc.tcc000066400000000000000000000120511456314707100247020ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TREXC_TCC #define CXXLAPACK_INTERFACE_TREXC_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType trexc(char compQ, IndexType n, float *T, IndexType ldT, float *Q, IndexType ldQ, IndexType &iFirst, IndexType &iLast, float *work) { CXXLAPACK_DEBUG_OUT("strexc"); IndexType info; LAPACK_IMPL(strexc)(&compQ, &n, T, &ldT, Q, &ldQ, &iFirst, &iLast, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trexc(char compQ, IndexType n, double *T, IndexType ldT, double *Q, IndexType ldQ, IndexType &iFirst, IndexType &iLast, double *work) { CXXLAPACK_DEBUG_OUT("dtrexc"); IndexType info; LAPACK_IMPL(dtrexc)(&compQ, &n, T, &ldT, Q, &ldQ, &iFirst, &iLast, work, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trexc(char compQ, IndexType n, std::complex *T, IndexType ldT, std::complex *Q, IndexType ldQ, IndexType iFirst, IndexType iLast) { CXXLAPACK_DEBUG_OUT("ctrexc"); IndexType info; LAPACK_IMPL(ctrexc)(&compQ, &n, reinterpret_cast(T), &ldT, reinterpret_cast(Q), &ldQ, &iFirst, &iLast, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trexc(char compQ, IndexType n, std::complex *T, IndexType ldT, std::complex *Q, IndexType ldQ, IndexType iFirst, IndexType iLast) { CXXLAPACK_DEBUG_OUT("ztrexc"); IndexType info; LAPACK_IMPL(ztrexc)(&compQ, &n, reinterpret_cast(T), &ldT, reinterpret_cast(Q), &ldQ, &iFirst, &iLast, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TREXC_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trrfs.h000066400000000000000000000105611456314707100243770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRRGS_H #define CXXLAPACK_INTERFACE_TRRGS_H 1 #include namespace cxxlapack { template IndexType trrfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const float *A, IndexType ldA, const float *B, IndexType ldB, const float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork); template IndexType trrfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const double *A, IndexType ldA, const double *B, IndexType ldB, const double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork); template IndexType trrfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, const std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork); template IndexType trrfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, const std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRRGS_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trrfs.tcc000066400000000000000000000161671456314707100247310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRRFS_TCC #define CXXLAPACK_INTERFACE_TRRFS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType trrfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const float *A, IndexType ldA, const float *B, IndexType ldB, const float *X, IndexType ldX, float *ferr, float *berr, float *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("strrfs"); IndexType info; LAPACK_IMPL(strrfs)(&uplo, &trans, &diag, &n, &nRhs, A, &ldA, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trrfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const double *A, IndexType ldA, const double *B, IndexType ldB, const double *X, IndexType ldX, double *ferr, double *berr, double *work, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dtrrfs"); IndexType info; LAPACK_IMPL(dtrrfs)(&uplo, &trans, &diag, &n, &nRhs, A, &ldA, B, &ldB, X, &ldX, ferr, berr, work, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trrfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, const std::complex *X, IndexType ldX, float *ferr, float *berr, std::complex *work, float *rWork) { CXXLAPACK_DEBUG_OUT("ctrrfs"); IndexType info; LAPACK_IMPL(ctrrfs)(&uplo, &trans, &diag, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trrfs(char uplo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, const std::complex *B, IndexType ldB, const std::complex *X, IndexType ldX, double *ferr, double *berr, std::complex *work, double *rWork) { CXXLAPACK_DEBUG_OUT("ztrrfs"); IndexType info; LAPACK_IMPL(ztrrfs)(&uplo, &trans, &diag, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(X), &ldX, ferr, berr, reinterpret_cast(work), rWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRRFS_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trsen.h000066400000000000000000000101521456314707100243660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRSEN_H #define CXXLAPACK_INTERFACE_TRSEN_H 1 #include namespace cxxlapack { template IndexType trsen(char job, char compQ, const IndexType *select, IndexType n, float *T, IndexType ldT, float *Q, IndexType ldQ, float *wr, float *wi, IndexType &m, float &s, float &sep, float *work, IndexType lWork, IndexType *iWork, IndexType liWork); template IndexType trsen(char job, char compQ, const IndexType *select, IndexType n, double *T, IndexType ldT, double *Q, IndexType ldQ, double *wr, double *wi, IndexType &m, double &s, double &sep, double *work, IndexType lWork, IndexType *iWork, IndexType liWork); template IndexType trsen(char job, char compQ, const IndexType *select, IndexType n, std::complex *T, const IndexType ldT, std::complex *Q, const IndexType ldQ, std::complex *w, IndexType &m, float &s, float &sep, std::complex *work, IndexType lWork); template IndexType trsen(char job, char compQ, const IndexType *select, IndexType n, std::complex *T, const IndexType ldT, std::complex *Q, const IndexType ldQ, std::complex *w, IndexType &m, double &s, double &sep, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRSEN_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trsen.tcc000066400000000000000000000156751456314707100247270ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRSEN_TCC #define CXXLAPACK_INTERFACE_TRSEN_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType trsen(char job, char compQ, const IndexType *select, IndexType n, float *T, IndexType ldT, double *Q, IndexType ldQ, float *wr, float *wi, IndexType &m, float &s, float &sep, float *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("strsen"); IndexType info; LAPACK_IMPL(strsen)(&job, &compQ, select, &n, T, &ldT, Q, &ldQ, wr, wi, &m, &s, &sep, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trsen(char job, char compQ, const IndexType *select, IndexType n, double *T, IndexType ldT, double *Q, IndexType ldQ, double *wr, double *wi, IndexType &m, double &s, double &sep, double *work, IndexType lWork, IndexType *iWork, IndexType liWork) { CXXLAPACK_DEBUG_OUT("dtrsen"); IndexType info; LAPACK_IMPL(dtrsen)(&job, &compQ, select, &n, T, &ldT, Q, &ldQ, wr, wi, &m, &s, &sep, work, &lWork, iWork, &liWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trsen(char job, char compQ, const IndexType *select, IndexType n, std::complex *T, const IndexType ldT, std::complex *Q, const IndexType ldQ, std::complex *w, IndexType &m, float &s, float &sep, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("ctrsen"); IndexType info; LAPACK_IMPL(ctrsen)(&job, &compQ, *select, &n, reinterpret_cast(T), &ldT, reinterpret_cast(Q), &ldQ, reinterpret_cast(w), &m, &s, &sep, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trsen(char job, char compQ, const IndexType *select, IndexType n, std::complex *T, const IndexType ldT, std::complex *Q, const IndexType ldQ, std::complex *w, IndexType &m, double &s, double &sep, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("ztrsen"); IndexType info; LAPACK_IMPL(ztrsen)(&job, &compQ, *select, &n, reinterpret_cast(T), &ldT, reinterpret_cast(Q), &ldQ, reinterpret_cast(w), &m, &s, &sep, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRSEN_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trsna.h000066400000000000000000000111561456314707100243670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRSNA_H #define CXXLAPACK_INTERFACE_TRSNA_H 1 #include namespace cxxlapack { template IndexType trsna(char job, char howMany, const IndexType *select, IndexType n, const float *T, IndexType ldT, const float *VL, IndexType ldVL, const float *VR, IndexType ldVR, float *s, float *sep, IndexType mm, IndexType &m, float *work, IndexType ldWork, IndexType *iWork); template IndexType trsna(char job, char howMany, const IndexType *select, IndexType n, const double *T, IndexType ldT, const double *VL, IndexType ldVL, const double *VR, IndexType ldVR, double *s, double *sep, IndexType mm, IndexType &m, double *work, IndexType ldWork, IndexType *iWork); template IndexType trsna(char job, char howMany, const IndexType *select, const IndexType n, const std::complex *T, const IndexType ldT, const std::complex *VL, const IndexType ldVL, const std::complex *VR, const IndexType ldVR, float *s, float *sep, const IndexType mm, IndexType &m, std::complex *work, const IndexType ldWork, float *rWork); template IndexType trsna(char job, char howMany, const IndexType *select, const IndexType n, const std::complex *T, const IndexType ldT, const std::complex *VL, const IndexType ldVL, const std::complex *VR, const IndexType ldVR, double *s, double *sep, const IndexType mm, IndexType &m, std::complex *work, const IndexType ldWork, double *rWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRSNA_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trsna.tcc000066400000000000000000000170111456314707100247050ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRSNA_TCC #define CXXLAPACK_INTERFACE_TRSNA_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType trsna(char job, char howMany, const IndexType *select, IndexType n, const float *T, IndexType ldT, const float *VL, IndexType ldVL, const float *VR, IndexType ldVR, float *s, float *sep, IndexType mm, IndexType &m, float *work, IndexType ldWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("strsna"); IndexType info; LAPACK_IMPL(strsna)(&job, &howMany, select, &n, T, &ldT, VL, &ldVL, VR, &ldVR, s, sep, &mm, &m, work, &ldWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trsna(char job, char howMany, const IndexType *select, IndexType n, const double *T, IndexType ldT, const double *VL, IndexType ldVL, const double *VR, IndexType ldVR, double *s, double *sep, IndexType mm, IndexType &m, double *work, IndexType ldWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("dtrsna"); IndexType info; LAPACK_IMPL(dtrsna)(&job, &howMany, select, &n, T, &ldT, VL, &ldVL, VR, &ldVR, s, sep, &mm, &m, work, &ldWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trsna(char job, char howMany, const IndexType *select, const IndexType n, const std::complex *T, const IndexType ldT, const std::complex *VL, const IndexType ldVL, const std::complex *VR, const IndexType ldVR, float *s, float *sep, const IndexType mm, IndexType &m, std::complex *work, const IndexType ldWork, float *rWork) { CXXLAPACK_DEBUG_OUT("ctrsna"); IndexType info; LAPACK_IMPL(ctrsna)(&job, &howMany, select, &n, reinterpret_cast(T), &ldT, reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, s, sep, &mm, &m, reinterpret_cast(work), &ldWork, rWork); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trsna(char job, char howMany, const IndexType *select, const IndexType n, const std::complex *T, const IndexType ldT, const std::complex *VL, const IndexType ldVL, const std::complex *VR, const IndexType ldVR, double *s, double *sep, const IndexType mm, IndexType &m, std::complex *work, const IndexType ldWork, double *rWork) { CXXLAPACK_DEBUG_OUT("ztrsna"); IndexType info; LAPACK_IMPL(ztrsna)(&job, &howMany, select, &n, reinterpret_cast(T), &ldT, reinterpret_cast(VL), &ldVL, reinterpret_cast(VR), &ldVR, s, sep, &mm, &m, reinterpret_cast(work), &ldWork, rWork); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRSNA_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trsyl.h000066400000000000000000000073321456314707100244160ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRSYL_H #define CXXLAPACK_INTERFACE_TRSYL_H 1 #include namespace cxxlapack { template IndexType trsyl(char transA, char transB, IndexType sign, IndexType m, IndexType n, const float *A, IndexType ldA, const float *B, IndexType ldB, float *C, IndexType ldC, float &scale); template IndexType trsyl(char transA, char transB, IndexType sign, IndexType m, IndexType n, const double *A, IndexType ldA, const double *B, IndexType ldB, double *C, IndexType ldC, double &scale); template IndexType trsyl(char transA, char transB, IndexType sign, IndexType m, IndexType n, const std::complex *A, const IndexType ldA, const std::complex *B, const IndexType ldB, std::complex *C, const IndexType ldC, float &scale); template IndexType trsyl(char transA, char transB, IndexType sign, IndexType m, IndexType n, const std::complex *A, const IndexType ldA, const std::complex *B, const IndexType ldB, std::complex *C, const IndexType ldC, double &scale); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRSYL_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trsyl.tcc000066400000000000000000000141501456314707100247340ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRSYL_TCC #define CXXLAPACK_INTERFACE_TRSYL_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType trsyl(char transA, char transB, IndexType sign, IndexType m, IndexType n, const float *A, IndexType ldA, const float *B, IndexType ldB, float *C, IndexType ldC, float &scale) { CXXLAPACK_DEBUG_OUT("strsyl"); IndexType info; LAPACK_IMPL(strsyl)(&transA, &transB, &sign, &m, &n, A, &ldA, B, &ldB, C, &ldC, &scale, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trsyl(char transA, char transB, IndexType sign, IndexType m, IndexType n, const double *A, IndexType ldA, const double *B, IndexType ldB, double *C, IndexType ldC, double &scale) { CXXLAPACK_DEBUG_OUT("dtrsyl"); IndexType info; LAPACK_IMPL(dtrsyl)(&transA, &transB, &sign, &m, &n, A, &ldA, B, &ldB, C, &ldC, &scale, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trsyl(char transA, char transB, IndexType sign, IndexType m, IndexType n, const std::complex *A, const IndexType ldA, const std::complex *B, const IndexType ldB, std::complex *C, const IndexType ldC, float &scale) { CXXLAPACK_DEBUG_OUT("ctrsyl"); IndexType info; LAPACK_IMPL(ctrsyl)(&transA, &transB, &sign, &m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(C), &ldC, &scale, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trsyl(char transA, char transB, IndexType sign, IndexType m, IndexType n, const std::complex *A, const IndexType ldA, const std::complex *B, const IndexType ldB, std::complex *C, const IndexType ldC, double &scale) { CXXLAPACK_DEBUG_OUT("ztrsyl"); IndexType info; LAPACK_IMPL(ztrsyl)(&transA, &transB, &sign, &m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, reinterpret_cast(C), &ldC, &scale, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRSYL_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trti2.h000066400000000000000000000051551456314707100243060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRTI2_H #define CXXLAPACK_INTERFACE_TRTI2_H 1 #include namespace cxxlapack { template IndexType trti2(char upLo, char diag, IndexType n, float *A, IndexType ldA); template IndexType trti2(char upLo, char diag, IndexType n, double *A, IndexType ldA); template IndexType trti2(char upLo, char diag, IndexType n, std::complex *A, IndexType ldA); template IndexType trti2(char upLo, char diag, IndexType n, std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRTI2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trti2.tcc000066400000000000000000000102361456314707100246240ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRTI2_TCC #define CXXLAPACK_INTERFACE_TRTI2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType trti2(char upLo, char diag, IndexType n, float *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("strti2"); IndexType info; LAPACK_IMPL(strti2)(&upLo, &diag, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trti2(char upLo, char diag, IndexType n, double *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("dtrti2"); IndexType info; LAPACK_IMPL(dtrti2)(&upLo, &diag, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trti2(char upLo, char diag, IndexType n, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("ctrti2"); IndexType info; LAPACK_IMPL(ctrti2)(&upLo, &diag, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trti2(char upLo, char diag, IndexType n, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("ztrti2"); IndexType info; LAPACK_IMPL(ztrti2)(&upLo, &diag, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRTI2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trtri.h000066400000000000000000000051551456314707100244060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRTRI_H #define CXXLAPACK_INTERFACE_TRTRI_H 1 #include namespace cxxlapack { template IndexType trtri(char upLo, char diag, IndexType n, float *A, IndexType ldA); template IndexType trtri(char upLo, char diag, IndexType n, double *A, IndexType ldA); template IndexType trtri(char upLo, char diag, IndexType n, std::complex *A, IndexType ldA); template IndexType trtri(char upLo, char diag, IndexType n, std::complex *A, IndexType ldA); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRTRI_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trtri.tcc000066400000000000000000000104521456314707100247240ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRTRI_TCC #define CXXLAPACK_INTERFACE_TRTRI_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType trtri(char upLo, char diag, IndexType n, float *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("strtri"); IndexType info; CXXLAPACK_DEBUG_OUT("strtri"); LAPACK_IMPL(strtri)(&upLo, &diag, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trtri(char upLo, char diag, IndexType n, double *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("dtrtri"); IndexType info; CXXLAPACK_DEBUG_OUT("dtrtri"); LAPACK_IMPL(dtrtri)(&upLo, &diag, &n, A, &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trtri(char upLo, char diag, IndexType n, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("ctrtri"); IndexType info; CXXLAPACK_DEBUG_OUT("ctrtri"); LAPACK_IMPL(ctrtri)(&upLo, &diag, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trtri(char upLo, char diag, IndexType n, std::complex *A, IndexType ldA) { CXXLAPACK_DEBUG_OUT("ztrtri"); IndexType info; CXXLAPACK_DEBUG_OUT("ztrtri"); LAPACK_IMPL(ztrtri)(&upLo, &diag, &n, reinterpret_cast(A), &ldA, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRTRI_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trtrs.h000066400000000000000000000065401456314707100244170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRTRS_H #define CXXLAPACK_INTERFACE_TRTRS_H 1 #include namespace cxxlapack { template IndexType trtrs(char upLo, char trans, char diag, IndexType n, IndexType nRhs, const float *A, IndexType ldA, float *B, IndexType ldB); template IndexType trtrs(char upLo, char trans, char diag, IndexType n, IndexType nRhs, const double *A, IndexType ldA, double *B, IndexType ldB); template IndexType trtrs(char upLo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB); template IndexType trtrs(char upLo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRTRS_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trtrs.tcc000066400000000000000000000130011456314707100247270ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRTRS_TCC #define CXXLAPACK_INTERFACE_TRTRS_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType trtrs(char upLo, char trans, char diag, IndexType n, IndexType nRhs, const float *A, IndexType ldA, float *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("strtrs"); IndexType info; CXXLAPACK_DEBUG_OUT("strtrs"); LAPACK_IMPL(strtrs)(&upLo, &trans, &diag, &n, &nRhs, A, &ldA, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trtrs(char upLo, char trans, char diag, IndexType n, IndexType nRhs, const double *A, IndexType ldA, double *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("dtrtrs"); IndexType info; CXXLAPACK_DEBUG_OUT("dtrtrs"); LAPACK_IMPL(dtrtrs)(&upLo, &trans, &diag, &n, &nRhs, A, &ldA, B, &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trtrs(char upLo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("ctrtrs"); IndexType info; CXXLAPACK_DEBUG_OUT("ctrtrs"); LAPACK_IMPL(ctrtrs)(&upLo, &trans, &diag, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trtrs(char upLo, char trans, char diag, IndexType n, IndexType nRhs, const std::complex *A, IndexType ldA, std::complex *B, IndexType ldB) { CXXLAPACK_DEBUG_OUT("ztrtrs"); IndexType info; CXXLAPACK_DEBUG_OUT("ztrtrs"); LAPACK_IMPL(ztrtrs)(&upLo, &trans, &diag, &n, &nRhs, reinterpret_cast(A), &ldA, reinterpret_cast(B), &ldB, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRTRS_TCC 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trttf.h000066400000000000000000000056651456314707100244130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRTTF_H #define CXXLAPACK_INTERFACE_TRTTF_H 1 #include namespace cxxlapack { template IndexType trttf(char transr, char uplo, IndexType n, const float *A, IndexType ldA, float *Arf); template IndexType trttf(char transr, char uplo, IndexType n, const double *A, IndexType ldA, double *Arf); template IndexType trttf(char transr, char uplo, IndexType n, const std::complex *A, IndexType ldA, std::complex *Arf); template IndexType trttf(char transr, char uplo, IndexType n, const std::complex *A, IndexType ldA, std::complex *Arf); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRTTF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trttf.tcc000066400000000000000000000112271456314707100247240ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRTTF_TCC #define CXXLAPACK_INTERFACE_TRTTF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType trttf(char transr, char uplo, IndexType n, const float *A, IndexType ldA, float *Arf) { CXXLAPACK_DEBUG_OUT("strttf"); IndexType info; LAPACK_IMPL(strttf)(&transr, &uplo, &n, A, &ldA, Arf, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trttf(char transr, char uplo, IndexType n, const double *A, IndexType ldA, double *Arf) { CXXLAPACK_DEBUG_OUT("dtrttf"); IndexType info; LAPACK_IMPL(dtrttf)(&transr, &uplo, &n, A, &ldA, Arf, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trttf(char transr, char uplo, IndexType n, const std::complex *A, IndexType ldA, std::complex *Arf) { CXXLAPACK_DEBUG_OUT("ctrttf"); IndexType info; LAPACK_IMPL(ctrttf)(&transr, &uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Arf), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trttf(char transr, char uplo, IndexType n, const std::complex *A, IndexType ldA, std::complex *Arf) { CXXLAPACK_DEBUG_OUT("ztrttf"); IndexType info; LAPACK_IMPL(ztrttf)(&transr, &uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Arf), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRTTF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trttp.h000066400000000000000000000054051456314707100244150ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRTTP_H #define CXXLAPACK_INTERFACE_TRTTP_H 1 #include namespace cxxlapack { template IndexType trttp(char uplo, IndexType n, const float *A, IndexType ldA, float *Ap); template IndexType trttp(char uplo, IndexType n, const double *A, IndexType ldA, double *Ap); template IndexType trttp(char uplo, IndexType n, const std::complex *A, IndexType ldA, std::complex *Ap); template IndexType trttp(char uplo, IndexType n, const std::complex *A, IndexType ldA, std::complex *Ap); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRTTP_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/trttp.tcc000066400000000000000000000105571456314707100247430ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TRTTP_TCC #define CXXLAPACK_INTERFACE_TRTTP_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType trttp(char uplo, IndexType n, const float *A, IndexType ldA, float *Ap) { CXXLAPACK_DEBUG_OUT("strttp"); IndexType info; LAPACK_IMPL(strttp)(&uplo, &n, A, &ldA, Ap, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trttp(char uplo, IndexType n, const double *A, IndexType ldA, double *Ap) { CXXLAPACK_DEBUG_OUT("dtrttp"); IndexType info; LAPACK_IMPL(dtrttp)(&uplo, &n, A, &ldA, Ap, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trttp(char uplo, IndexType n, const std::complex *A, IndexType ldA, std::complex *Ap) { CXXLAPACK_DEBUG_OUT("ctrttp"); IndexType info; LAPACK_IMPL(ctrttp)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Ap), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType trttp(char uplo, IndexType n, const std::complex *A, IndexType ldA, std::complex *Ap) { CXXLAPACK_DEBUG_OUT("ztrttp"); IndexType info; LAPACK_IMPL(ztrttp)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(Ap), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TRTTP_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tzrqf.h000066400000000000000000000053031456314707100244030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TZRQF_H #define CXXLAPACK_INTERFACE_TZRQF_H 1 #include namespace cxxlapack { template IndexType tzrqf(IndexType m, IndexType n, float *A, IndexType ldA, float *tau); template IndexType tzrqf(IndexType m, IndexType n, double *A, IndexType ldA, double *tau); template IndexType tzrqf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau); template IndexType tzrqf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TZRQF_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tzrqf.tcc000066400000000000000000000104271456314707100247300ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TZRQF_TCC #define CXXLAPACK_INTERFACE_TZRQF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType tzrqf(IndexType m, IndexType n, float *A, IndexType ldA, float *tau) { CXXLAPACK_DEBUG_OUT("stzrqf"); IndexType info; LAPACK_IMPL(stzrqf)(&m, &n, A, &ldA, tau, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tzrqf(IndexType m, IndexType n, double *A, IndexType ldA, double *tau) { CXXLAPACK_DEBUG_OUT("dtzrqf"); IndexType info; LAPACK_IMPL(dtzrqf)(&m, &n, A, &ldA, tau, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tzrqf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau) { CXXLAPACK_DEBUG_OUT("ctzrqf"); IndexType info; LAPACK_IMPL(ctzrqf)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType tzrqf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau) { CXXLAPACK_DEBUG_OUT("ztzrqf"); IndexType info; LAPACK_IMPL(ztzrqf)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TZRQF_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tzrzf.h000066400000000000000000000055321456314707100244200ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TZRZF_H #define CXXLAPACK_INTERFACE_TZRZF_H 1 #include namespace cxxlapack { template void tzrzf(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work, IndexType lWork); template void tzrzf(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work, IndexType lWork); template void tzrzf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork); template void tzrzf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TZRZF_H 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/tzrzf.tcc000066400000000000000000000111701456314707100247350ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_TZRZF_TCC #define CXXLAPACK_INTERFACE_TZRZF_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void tzrzf(IndexType m, IndexType n, float *A, IndexType ldA, float *tau, float *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("stzrzf"); LAPACK_IMPL(stzrzf)(&m, &n, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } template void tzrzf(IndexType m, IndexType n, double *A, IndexType ldA, double *tau, double *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("dtzrzf"); LAPACK_IMPL(dtzrzf)(&m, &n, A, &ldA, tau, work, &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } template void tzrzf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("ctzrzf"); LAPACK_IMPL(ctzrzf)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } template void tzrzf(IndexType m, IndexType n, std::complex *A, IndexType ldA, std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("ztzrzf"); LAPACK_IMPL(ztzrzf)(&m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_TZRZF_TCC 1 xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unbdb.h000066400000000000000000000067371456314707100243430ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNBDB_H #define CXXLAPACK_INTERFACE_UNBDB_H 1 #include namespace cxxlapack { template IndexType unbdb(char trans, char signs, IndexType m, IndexType p, IndexType q, std::complex *X11, IndexType ldX11, std::complex *X12, IndexType ldX12, std::complex *X21, IndexType ldX21, std::complex *X22, IndexType ldX22, float *theta, float *phi, std::complex *taup1, std::complex *taup2, std::complex *tauq1, std::complex *tauq2, std::complex *work, IndexType lWork); template IndexType unbdb(char trans, char signs, IndexType m, IndexType p, IndexType q, std::complex *X11, IndexType ldX11, std::complex *X12, IndexType ldX12, std::complex *X21, IndexType ldX21, std::complex *X22, IndexType ldX22, double *theta, double *phi, std::complex *taup1, std::complex *taup2, std::complex *tauq1, std::complex *tauq2, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNBDB_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unbdb.tcc000066400000000000000000000131321456314707100246500ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNBDB_TCC #define CXXLAPACK_INTERFACE_UNBDB_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType unbdb(char trans, char signs, IndexType m, IndexType p, IndexType q, std::complex *X11, IndexType ldX11, std::complex *X12, IndexType ldX12, std::complex *X21, IndexType ldX21, std::complex *X22, IndexType ldX22, float *theta, float *phi, std::complex *taup1, std::complex *taup2, std::complex *tauq1, std::complex *tauq2, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("cunbdb"); IndexType info; LAPACK_IMPL(cunbdb)(&trans, &signs &m, &p, &q, reinterpret_cast(X11), &ldX11, reinterpret_cast(X12), &ldX12, reinterpret_cast(X21), &ldX21, reinterpret_cast(X22), &ldX22, theta, phi, reinterpret_cast(taup1), reinterpret_cast(taup2), reinterpret_cast(tauq1), reinterpret_cast(tauq2), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType unbdb(char trans, char signs, IndexType m, IndexType p, IndexType q, std::complex *X11, IndexType ldX11, std::complex *X12, IndexType ldX12, std::complex *X21, IndexType ldX21, std::complex *X22, IndexType ldX22, double *theta, double *phi, std::complex *taup1, std::complex *taup2, std::complex *tauq1, std::complex *tauq2, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zunbdb"); IndexType info; LAPACK_IMPL(zunbdb)(&trans, &signs &m, &p, &q, reinterpret_cast(X11), &ldX11, reinterpret_cast(X12), &ldX12, reinterpret_cast(X21), &ldX21, reinterpret_cast(X22), &ldX22, theta, phi, reinterpret_cast(taup1), reinterpret_cast(taup2), reinterpret_cast(tauq1), reinterpret_cast(tauq2), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNBDB_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/uncsd.h000066400000000000000000000112211456314707100243450ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNCSD_H #define CXXLAPACK_INTERFACE_UNCSD_H 1 #include namespace cxxlapack { template IndexType uncsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, char signs, IndexType m, IndexType p, IndexType q, const std::complex *X11, IndexType ldX11, const std::complex *X12, IndexType ldX12, const std::complex *X21, IndexType ldX21, const std::complex *X22, IndexType ldX22, float *theta, std::complex *U1, IndexType ldU1, std::complex *U2, IndexType ldU2, std::complex *V1t, IndexType ldV1t, std::complex *V2t, IndexType ldV2t, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork); template IndexType uncsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, char signs, IndexType m, IndexType p, IndexType q, const std::complex *X11, IndexType ldX11, const std::complex *X12, IndexType ldX12, const std::complex *X21, IndexType ldX21, const std::complex *X22, IndexType ldX22, double *theta, std::complex *U1, IndexType ldU1, std::complex *U2, IndexType ldU2, std::complex *V1t, IndexType ldV1t, std::complex *V2t, IndexType ldV2t, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNCSD_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/uncsd.tcc000066400000000000000000000165351456314707100247040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNCSD_TCC #define CXXLAPACK_INTERFACE_UNCSD_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType uncsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, char signs, IndexType m, IndexType p, IndexType q, const std::complex *X11, IndexType ldX11, const std::complex *X12, IndexType ldX12, const std::complex *X21, IndexType ldX21, const std::complex *X22, IndexType ldX22, float *theta, std::complex *U1, IndexType ldU1, std::complex *U2, IndexType ldU2, std::complex *V1t, IndexType ldV1t, std::complex *V2t, IndexType ldV2t, std::complex *work, IndexType lWork, float *rWork, IndexType lrWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("cuncsd"); IndexType info; LAPACK_IMPL(cuncsd)(&jobu1, &jobu2, &jobv1t, &jobv2t, &trans, &signs, &m, &p, &q, reinterpret_cast(X11), &ldX11, reinterpret_cast(X12), &ldX12, reinterpret_cast(X21), &ldX21, reinterpret_cast(X22), &ldX22, theta, reinterpret_cast(U1), &ldU1, reinterpret_cast(U2), &ldU2, reinterpret_cast(V1t), &ldV1t, reinterpret_cast(V2t), &ldV2t, reinterpret_cast(work), &lWork, rWork, &lrWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType uncsd(char jobu1, char jobu2, char jobv1t, char jobv2t, char trans, char signs, IndexType m, IndexType p, IndexType q, const std::complex *X11, IndexType ldX11, const std::complex *X12, IndexType ldX12, const std::complex *X21, IndexType ldX21, const std::complex *X22, IndexType ldX22, double *theta, std::complex *U1, IndexType ldU1, std::complex *U2, IndexType ldU2, std::complex *V1t, IndexType ldV1t, std::complex *V2t, IndexType ldV2t, std::complex *work, IndexType lWork, double *rWork, IndexType lrWork, IndexType *iWork) { CXXLAPACK_DEBUG_OUT("zuncsd"); IndexType info; LAPACK_IMPL(zuncsd)(&jobu1, &jobu2, &jobv1t, &jobv2t, &trans, &signs, &m, &p, &q, reinterpret_cast(X11), &ldX11, reinterpret_cast(X12), &ldX12, reinterpret_cast(X21), &ldX21, reinterpret_cast(X22), &ldX22, theta, reinterpret_cast(U1), &ldU1, reinterpret_cast(U2), &ldU2, reinterpret_cast(V1t), &ldV1t, reinterpret_cast(V2t), &ldV2t, reinterpret_cast(work), &lWork, rWork, &lrWork, iWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNCSD_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ung2l.h000066400000000000000000000047431456314707100242730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNG2L_H #define CXXLAPACK_INTERFACE_UNG2L_H 1 #include namespace cxxlapack { template IndexType ung2l(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work); template IndexType ung2l(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNG2L_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ung2l.tcc000066400000000000000000000070401456314707100246060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNR2L_TCC #define CXXLAPACK_INTERFACE_UNR2L_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ung2l(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work) { CXXLAPACK_DEBUG_OUT("cung2l"); IndexType info; LAPACK_IMPL(cung2l)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ung2l(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work) { CXXLAPACK_DEBUG_OUT("zung2l"); IndexType info; LAPACK_IMPL(zung2l)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNR2L_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ung2r.h000066400000000000000000000047431456314707100243010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNG2R_H #define CXXLAPACK_INTERFACE_UNG2R_H 1 #include namespace cxxlapack { template IndexType ung2r(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work); template IndexType ung2r(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNG2R_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ung2r.tcc000066400000000000000000000070401456314707100246140ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNR2R_TCC #define CXXLAPACK_INTERFACE_UNR2R_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ung2r(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work) { CXXLAPACK_DEBUG_OUT("cung2r"); IndexType info; LAPACK_IMPL(cung2r)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ung2r(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work) { CXXLAPACK_DEBUG_OUT("zung2r"); IndexType info; LAPACK_IMPL(zung2r)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNR2R_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ungbr.h000066400000000000000000000052471456314707100243610ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGBR_H #define CXXLAPACK_INTERFACE_UNGBR_H 1 #include namespace cxxlapack { template IndexType ungbr(char vect, IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork); template IndexType ungbr(char vect, IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGBR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ungbr.tcc000066400000000000000000000075221456314707100247010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGBG_TCC #define CXXLAPACK_INTERFACE_UNGBG_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ungbr(char vect, IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("cungbr"); IndexType info; LAPACK_IMPL(cungbr)(&vect, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ungbr(char vect, IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zungbr"); IndexType info; LAPACK_IMPL(zungbr)(&vect, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGBG_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unghr.h000066400000000000000000000050531456314707100243620ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGHR_H #define CXXLAPACK_INTERFACE_UNGHR_H 1 #include namespace cxxlapack { template IndexType unghr(IndexType n, IndexType iLo, IndexType iHi, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork); template IndexType unghr(IndexType n, IndexType iLo, IndexType iHi, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGHR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unghr.tcc000066400000000000000000000072501456314707100247050ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGHR_TCC #define CXXLAPACK_INTERFACE_UNGHR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType unghr(IndexType n, IndexType iLo, IndexType iHi, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("cunghr"); IndexType info; LAPACK_IMPL(cunghr)(&n, &iLo, &iHi, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType unghr(IndexType n, IndexType iLo, IndexType iHi, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zunghr"); IndexType info; LAPACK_IMPL(zunghr)(&n, &iLo, &iHi, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGHR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ungl2.h000066400000000000000000000047231456314707100242710ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGL2_H #define CXXLAPACK_INTERFACE_UNGL2_H 1 #include namespace cxxlapack { template IndexType ungl2(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work); template IndexType ungl2(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGL2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ungl2.tcc000066400000000000000000000070201456314707100246040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGL2_TCC #define CXXLAPACK_INTERFACE_UNGL2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ungl2(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work) { CXXLAPACK_DEBUG_OUT("cungl2"); IndexType info; LAPACK_IMPL(cungl2)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ungl2(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work) { CXXLAPACK_DEBUG_OUT("zungl2"); IndexType info; LAPACK_IMPL(zungl2)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGL2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unglq.h000066400000000000000000000051351456314707100243660ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGLQ_H #define CXXLAPACK_INTERFACE_UNGLQ_H 1 #include namespace cxxlapack { template IndexType unglq(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork); template IndexType unglq(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGLQ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unglq.tcc000066400000000000000000000073201456314707100247060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGLQ_TCC #define CXXLAPACK_INTERFACE_UNGLQ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType unglq(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cunglq"); LAPACK_IMPL(cunglq)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType unglq(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zunglq"); LAPACK_IMPL(zunglq)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGLQ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ungql.h000066400000000000000000000050551456314707100243670ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGQL_H #define CXXLAPACK_INTERFACE_UNGQL_H 1 #include namespace cxxlapack { template IndexType ungql(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork); template IndexType ungql(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGQL_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ungql.tcc000066400000000000000000000072421456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGQL_TCC #define CXXLAPACK_INTERFACE_UNGQL_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ungql(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("cungql"); IndexType info; LAPACK_IMPL(cungql)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ungql(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zungql"); IndexType info; LAPACK_IMPL(zungql)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGLQ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ungqr.h000066400000000000000000000051351456314707100243740ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGQR_H #define CXXLAPACK_INTERFACE_UNGQR_H 1 #include namespace cxxlapack { template IndexType ungqr(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork); template IndexType ungqr(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGQR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ungqr.tcc000066400000000000000000000073201456314707100247140ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGQR_TCC #define CXXLAPACK_INTERFACE_UNGQR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ungqr(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cungqr"); LAPACK_IMPL(cungqr)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ungqr(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zungqr"); LAPACK_IMPL(zungqr)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGQR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ungr2.h000066400000000000000000000047431456314707100243010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGR2_H #define CXXLAPACK_INTERFACE_UNGR2_H 1 #include namespace cxxlapack { template IndexType ungr2(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work); template IndexType ungr2(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGR2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ungr2.tcc000066400000000000000000000070401456314707100246140ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGR2_TCC #define CXXLAPACK_INTERFACE_UNGR2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ungr2(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work) { CXXLAPACK_DEBUG_OUT("cungr2"); IndexType info; LAPACK_IMPL(cungr2)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ungr2(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work) { CXXLAPACK_DEBUG_OUT("zungr2"); IndexType info; LAPACK_IMPL(zungr2)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGR2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ungrq.h000066400000000000000000000050751456314707100243770ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGRQ_H #define CXXLAPACK_INTERFACE_UNGRQ_H 1 #include namespace cxxlapack { template IndexType ungrq(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork); template IndexType ungrq(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGRQ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ungrq.tcc000066400000000000000000000072621456314707100247210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGRQ_TCC #define CXXLAPACK_INTERFACE_UNGRQ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ungrq(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("cungrq"); IndexType info; LAPACK_IMPL(cungrq)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ungrq(IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zungrq"); IndexType info; LAPACK_IMPL(zungrq)(&m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGRQ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ungtr.h000066400000000000000000000047611456314707100244030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGTR_H #define CXXLAPACK_INTERFACE_UNGTR_H 1 #include namespace cxxlapack { template IndexType ungtr(char uplo, IndexType n, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork); template IndexType ungtr(char uplo, IndexType n, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGTR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/ungtr.tcc000066400000000000000000000070741456314707100247250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNGTR_TCC #define CXXLAPACK_INTERFACE_UNGTR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType ungtr(char uplo, IndexType n, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("cungtr"); IndexType info; LAPACK_IMPL(cungtr)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType ungtr(char uplo, IndexType n, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zungtr"); IndexType info; LAPACK_IMPL(zungtr)(&uplo, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNGTR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unm2l.h000066400000000000000000000054771456314707100243060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNM2L_H #define CXXLAPACK_INTERFACE_UNM2L_H 1 #include namespace cxxlapack { template IndexType unm2l(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work); template IndexType unm2l(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNM2L_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unm2l.tcc000066400000000000000000000102201456314707100246060ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNM2L_TCC #define CXXLAPACK_INTERFACE_UNM2L_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType unm2l(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("cunm2l"); IndexType info; LAPACK_IMPL(cunm2l)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType unm2l(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("zunm2l"); IndexType info; LAPACK_IMPL(zunm2l)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNM2L_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unm2r.h000066400000000000000000000054771456314707100243140ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNM2R_H #define CXXLAPACK_INTERFACE_UNM2R_H 1 #include namespace cxxlapack { template IndexType unm2r(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work); template IndexType unm2r(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNM2R_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unm2r.tcc000066400000000000000000000102201456314707100246140ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNM2R_TCC #define CXXLAPACK_INTERFACE_UNM2R_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType unm2r(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("cunm2r"); IndexType info; LAPACK_IMPL(cunm2r)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType unm2r(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("zunm2r"); IndexType info; LAPACK_IMPL(zunm2r)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNM2R_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmbr.h000066400000000000000000000057611456314707100243700ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMBR_H #define CXXLAPACK_INTERFACE_UNMBR_H 1 #include namespace cxxlapack { template IndexType unmbr(char vect, char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); template IndexType unmbr(char vect, char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMBR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmbr.tcc000066400000000000000000000106601456314707100247040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMBR_TCC #define CXXLAPACK_INTERFACE_UNMBR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType unmbr(char vect, char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("cunmbr"); IndexType info; LAPACK_IMPL(cunmbr)(&vect, &side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType unmbr(char vect, char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zunmbr"); IndexType info; LAPACK_IMPL(zunmbr)(&vect, &side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMBR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmhr.h000066400000000000000000000057631456314707100244000ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMHR_H #define CXXLAPACK_INTERFACE_UNMHR_H 1 #include namespace cxxlapack { template IndexType unmhr(char side, char trans, IndexType m, IndexType n, IndexType ilo, IndexType ihi, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); template IndexType unmhr(char side, char trans, IndexType m, IndexType n, IndexType ilo, IndexType ihi, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMHR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmhr.tcc000066400000000000000000000106641456314707100247160ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMHR_TCC #define CXXLAPACK_INTERFACE_UNMHR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType unmhr(char side, char trans, IndexType m, IndexType n, IndexType ilo, IndexType ihi, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("cunmhr"); IndexType info; LAPACK_IMPL(cunmhr)(&side, &trans, &m, &n, &ilo, &ihi, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType unmhr(char side, char trans, IndexType m, IndexType n, IndexType ilo, IndexType ihi, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zunmhr"); IndexType info; LAPACK_IMPL(zunmhr)(&side, &trans, &m, &n, &ilo, &ihi, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMHR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unml2.h000066400000000000000000000054571456314707100243040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNML2_H #define CXXLAPACK_INTERFACE_UNML2_H 1 #include namespace cxxlapack { template IndexType unml2(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work); template IndexType unml2(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNML2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unml2.tcc000066400000000000000000000102001456314707100246040ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNML2_TCC #define CXXLAPACK_INTERFACE_UNML2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType unml2(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("cunml2"); IndexType info; LAPACK_IMPL(cunml2)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType unml2(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("zunml2"); IndexType info; LAPACK_IMPL(zunml2)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNML2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmlq.h000066400000000000000000000056311456314707100243750ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMLQ_H #define CXXLAPACK_INTERFACE_UNMLQ_H 1 #include namespace cxxlapack { template IndexType unmlq(char side, char trans, IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); template IndexType unmlq(char side, char trans, IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMLQ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmlq.tcc000066400000000000000000000104241456314707100247130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMLQ_TCC #define CXXLAPACK_INTERFACE_UNMLQ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType unmlq(char side, char trans, IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cunmlq"); LAPACK_IMPL(cunmlq)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType unmlq(char side, char trans, IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zunmlq"); LAPACK_IMPL(zunmlq)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMLQ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmql.h000066400000000000000000000056111456314707100243730ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMQL_H #define CXXLAPACK_INTERFACE_UNMQL_H 1 #include namespace cxxlapack { template IndexType unmql(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); template IndexType unmql(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMQL_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmql.tcc000066400000000000000000000104221456314707100247110ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMQL_TCC #define CXXLAPACK_INTERFACE_UNMQL_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType unmql(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("cunmql"); IndexType info; LAPACK_IMPL(cunmql)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType unmql(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zunmql"); IndexType info; LAPACK_IMPL(zunmql)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMQL_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmqr.h000066400000000000000000000056311456314707100244030ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMQR_H #define CXXLAPACK_INTERFACE_UNMQR_H 1 #include namespace cxxlapack { template IndexType unmqr(char side, char trans, IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); template IndexType unmqr(char side, char trans, IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMQR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmqr.tcc000066400000000000000000000104241456314707100247210ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMQR_TCC #define CXXLAPACK_INTERFACE_UNMQR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType unmqr(char side, char trans, IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cunmqr"); LAPACK_IMPL(cunmqr)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType unmqr(char side, char trans, IndexType m, IndexType n, IndexType k, std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zunmqr"); LAPACK_IMPL(zunmqr)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMQR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmr2.h000066400000000000000000000054571456314707100243120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMR2_H #define CXXLAPACK_INTERFACE_UNMR2_H 1 #include namespace cxxlapack { template IndexType unmr2(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work); template IndexType unmr2(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMR2_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmr2.tcc000066400000000000000000000102001456314707100246120ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMR2_TCC #define CXXLAPACK_INTERFACE_UNMR2_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType unmr2(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("cunmr2"); IndexType info; LAPACK_IMPL(cunmr2)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType unmr2(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("zunmr2"); IndexType info; LAPACK_IMPL(zunmr2)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMR2_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmr3.h000066400000000000000000000055671456314707100243150ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMR3_H #define CXXLAPACK_INTERFACE_UNMR3_H 1 #include namespace cxxlapack { template void unmr3(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work); template void unmr3(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMR3_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmr3.tcc000066400000000000000000000103201456314707100246160ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMR3_TCC #define CXXLAPACK_INTERFACE_UNMR3_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void unmr3(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("cunmr3"); LAPACK_IMPL(cunmr3)(&side, &trans, &m, &n, &k, &l, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } template void unmr3(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work) { IndexType info; CXXLAPACK_DEBUG_OUT("zunmr3"); LAPACK_IMPL(zunmr3)(&side, &trans, &m, &n, &k, &l, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMR3_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmrq.h000066400000000000000000000056111456314707100244010ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMRQ_H #define CXXLAPACK_INTERFACE_UNMRQ_H 1 #include namespace cxxlapack { template IndexType unmrq(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); template IndexType unmrq(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMRQ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmrq.tcc000066400000000000000000000104221456314707100247170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMRQ_TCC #define CXXLAPACK_INTERFACE_UNMRQ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType unmrq(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("cunmrq"); IndexType info; LAPACK_IMPL(cunmrq)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType unmrq(char side, char trans, IndexType m, IndexType n, IndexType k, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zunmrq"); IndexType info; LAPACK_IMPL(zunmrq)(&side, &trans, &m, &n, &k, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMRQ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmrz.h000066400000000000000000000057411456314707100244160ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMRZ_H #define CXXLAPACK_INTERFACE_UNMRZ_H 1 #include namespace cxxlapack { template void unmrz(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); template void unmrz(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMRZ_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmrz.tcc000066400000000000000000000105621456314707100247350ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMRZ_TCC #define CXXLAPACK_INTERFACE_UNMRZ_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template void unmrz(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("cunmrz"); LAPACK_IMPL(cunmrz)(&side, &trans, &m, &n, &k, &l, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } template void unmrz(char side, char trans, IndexType m, IndexType n, IndexType k, IndexType l, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { IndexType info; CXXLAPACK_DEBUG_OUT("zunmrz"); LAPACK_IMPL(zunmrz)(&side, &trans, &m, &n, &k, &l, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMRZ_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmtr.h000066400000000000000000000056451456314707100244130ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMTR_TCC #define CXXLAPACK_INTERFACE_UNMTR_TCC 1 #include namespace cxxlapack { template IndexType unmtr(char side, char uplo, char trans, IndexType m, IndexType n, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); template IndexType unmtr(char side, char uplo, char trans, IndexType m, IndexType n, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMTR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/unmtr.tcc000066400000000000000000000104561456314707100247310ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary funns, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary funn must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UNMTR_TCC #define CXXLAPACK_INTERFACE_UNMTR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType unmtr(char side, char uplo, char trans, IndexType m, IndexType n, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("cunmtr"); IndexType info; LAPACK_IMPL(cunmtr)(&side, &uplo, &trans, &m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType unmtr(char side, char uplo, char trans, IndexType m, IndexType n, const std::complex *A, IndexType ldA, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work, IndexType lWork) { CXXLAPACK_DEBUG_OUT("zunmtr"); IndexType info; LAPACK_IMPL(zunmtr)(&side, &uplo, &trans, &m, &n, reinterpret_cast(A), &ldA, reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &lWork, &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UNMTR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/upgtr.h000066400000000000000000000047551456314707100244100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UPGTR_H #define CXXLAPACK_INTERFACE_UPGTR_H 1 #include namespace cxxlapack { template IndexType upgtr(char uplo, IndexType n, const std::complex *Ap, const std::complex *tau, std::complex *Q, IndexType ldQ, std::complex *work); template IndexType upgtr(char uplo, IndexType n, const std::complex *Ap, const std::complex *tau, std::complex *Q, IndexType ldQ, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UPGTR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/upgtr.tcc000066400000000000000000000071641456314707100247270ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UPGTR_TCC #define CXXLAPACK_INTERFACE_UPGTR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType upgtr(char uplo, IndexType n, const std::complex *Ap, const std::complex *tau, std::complex *Q, IndexType ldQ, std::complex *work) { CXXLAPACK_DEBUG_OUT("cupgtr"); IndexType info; LAPACK_IMPL(cupgtr)(&uplo, &n, reinterpret_cast(Ap), reinterpret_cast(tau), reinterpret_cast(Q), &ldQ, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType upgtr(char uplo, IndexType n, const std::complex *Ap, const std::complex *tau, std::complex *Q, IndexType ldQ, std::complex *work) { CXXLAPACK_DEBUG_OUT("zupgtr"); IndexType info; LAPACK_IMPL(zupgtr)(&uplo, &n, reinterpret_cast(Ap), reinterpret_cast(tau), reinterpret_cast(Q), &ldQ, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UPGTR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/upmtr.h000066400000000000000000000053611456314707100244100ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UPMTR_H #define CXXLAPACK_INTERFACE_UPMTR_H 1 #include namespace cxxlapack { template IndexType upmtr(char side, char uplo, char trans, IndexType m, IndexType n, const std::complex *Ap, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work); template IndexType upmtr(char side, char uplo, char trans, IndexType m, IndexType n, const std::complex *Ap, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UPMTR_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/upmtr.tcc000066400000000000000000000100271456314707100247250ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_UPMTR_TCC #define CXXLAPACK_INTERFACE_UPMTR_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template IndexType upmtr(char side, char uplo, char trans, IndexType m, IndexType n, const std::complex *Ap, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("cupmtr"); IndexType info; LAPACK_IMPL(cupmtr)(&side, &uplo, &trans, &m, &n, reinterpret_cast(Ap), reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } template IndexType upmtr(char side, char uplo, char trans, IndexType m, IndexType n, const std::complex *Ap, const std::complex *tau, std::complex *C, IndexType ldC, std::complex *work) { CXXLAPACK_DEBUG_OUT("zupmtr"); IndexType info; LAPACK_IMPL(zupmtr)(&side, &uplo, &trans, &m, &n, reinterpret_cast(Ap), reinterpret_cast(tau), reinterpret_cast(C), &ldC, reinterpret_cast(work), &info); # ifndef NDEBUG if (info<0) { std::cerr << "info = " << info << std::endl; } # endif ASSERT(info>=0); return info; } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_UPMTR_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/zsum1.h000066400000000000000000000037401456314707100243170ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ZSUM1_H #define CXXLAPACK_INTERFACE_ZSUM1_H 1 #include namespace cxxlapack { template double zsum1(IndexType n, const std::complex *cx, IndexType incx); } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ZSUM1_H xtensor-blas-0.21.0/include/xflens/cxxlapack/interface/zsum1.tcc000066400000000000000000000043531456314707100246420ustar00rootroot00000000000000/* * Copyright (c) 2012, Michael Lehn, Klaus Pototzky * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3) Neither the name of the FLENS development group nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CXXLAPACK_INTERFACE_ZUSM1_TCC #define CXXLAPACK_INTERFACE_ZUSM1_TCC 1 #include #include "xflens/cxxlapack/interface/interface.h" #include "xflens/cxxlapack/netlib/netlib.h" namespace cxxlapack { template double zsum1(IndexType n, const std::complex *cx, IndexType incx) { CXXLAPACK_DEBUG_OUT("dzsum1"); return LAPACK_IMPL(dzsum1)(&n, reinterpret_cast(cx), &incx); } } // namespace cxxlapack #endif // CXXLAPACK_INTERFACE_ZUSM1_TCC xtensor-blas-0.21.0/include/xflens/cxxlapack/netlib/000077500000000000000000000000001456314707100224005ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxlapack/netlib/Makefile000066400000000000000000000002201456314707100240320ustar00rootroot00000000000000all : lapack/ $(MAKE) -C lapack lapack/ : tar xfz lapack.tgz clean : lapack/ $(MAKE) -C lapack clean distclean : clean $(RM) -rf lapack/ xtensor-blas-0.21.0/include/xflens/cxxlapack/netlib/interface/000077500000000000000000000000001456314707100243405ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xflens/cxxlapack/netlib/interface/dummy.in.cc000066400000000000000000062013711456314707100264210ustar00rootroot00000000000000//-- cbbcsd -------------------------------------------------------------------- void LAPACK_DECL(cbbcsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, FLOAT *THETA, FLOAT *PHI, FLOAT_COMPLEX *U1, const INTEGER *LDU1, FLOAT_COMPLEX *U2, const INTEGER *LDU2, FLOAT_COMPLEX *V1T, const INTEGER *LDV1T, FLOAT_COMPLEX *V2T, const INTEGER *LDV2T, FLOAT *B11D, FLOAT *B11E, FLOAT *B12D, FLOAT *B12E, const FLOAT *B21D, const FLOAT *B21E, const FLOAT *B22D, const FLOAT *B22E, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cbbcsd"); LAPACK_IMPL(cbbcsd)(JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS, M, P, Q, THETA, PHI, U1, LDU1, U2, LDU2, V1T, LDV1T, V2T, LDV2T, B11D, B11E, B12D, B12E, B21D, B21E, B22D, B22E, RWORK, LRWORK, INFO); } //-- cbdsqr -------------------------------------------------------------------- void LAPACK_DECL(cbdsqr)(const char *UPLO, const INTEGER *N, const INTEGER *NCVT, const INTEGER *NRU, const INTEGER *NCC, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *VT, const INTEGER *LDVT, FLOAT_COMPLEX *U, const INTEGER *LDU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cbdsqr"); LAPACK_IMPL(cbdsqr)(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C, LDC, RWORK, INFO); } //-- cgbbrd -------------------------------------------------------------------- void LAPACK_DECL(cgbbrd)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *NCC, const INTEGER *KL, const INTEGER *KU, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *PT, const INTEGER *LDPT, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgbbrd"); LAPACK_IMPL(cgbbrd)(VECT, M, N, NCC, KL, KU, AB, LDAB, D, E, Q, LDQ, PT, LDPT, C, LDC, WORK, RWORK, INFO); } //-- cgbcon -------------------------------------------------------------------- void LAPACK_DECL(cgbcon)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgbcon"); LAPACK_IMPL(cgbcon)(NORM, N, KL, KU, AB, LDAB, IPIV, ANORM, RCOND, WORK, RWORK, INFO); } //-- cgbequ -------------------------------------------------------------------- void LAPACK_DECL(cgbequ)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgbequ"); LAPACK_IMPL(cgbequ)(M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND, AMAX, INFO); } //-- cgbequb ------------------------------------------------------------------- void LAPACK_DECL(cgbequb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgbequb"); LAPACK_IMPL(cgbequb)(M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND, AMAX, INFO); } //-- cgbrfs -------------------------------------------------------------------- void LAPACK_DECL(cgbrfs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgbrfs"); LAPACK_IMPL(cgbrfs)(TRANS, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- cgbrfsx ------------------------------------------------------------------- void LAPACK_DECL(cgbrfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, FLOAT *R, FLOAT *C, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgbrfsx"); LAPACK_IMPL(cgbrfsx)(TRANS, EQUED, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, R, C, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- cgbsv --------------------------------------------------------------------- void LAPACK_DECL(cgbsv)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, FLOAT_COMPLEX *AB, const INTEGER *LDAB, INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgbsv"); LAPACK_IMPL(cgbsv)(N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB, INFO); } //-- cgbsvx -------------------------------------------------------------------- void LAPACK_DECL(cgbsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, INTEGER *IPIV, char *EQUED, FLOAT *R, FLOAT *C, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgbsvx"); LAPACK_IMPL(cgbsvx)(FACT, TRANS, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, EQUED, R, C, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- cgbtf2 -------------------------------------------------------------------- void LAPACK_DECL(cgbtf2)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, FLOAT_COMPLEX *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgbtf2"); LAPACK_IMPL(cgbtf2)(M, N, KL, KU, AB, LDAB, IPIV, INFO); } //-- cgbtrf -------------------------------------------------------------------- void LAPACK_DECL(cgbtrf)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, FLOAT_COMPLEX *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgbtrf"); LAPACK_IMPL(cgbtrf)(M, N, KL, KU, AB, LDAB, IPIV, INFO); } //-- cgbtrs -------------------------------------------------------------------- void LAPACK_DECL(cgbtrs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgbtrs"); LAPACK_IMPL(cgbtrs)(TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB, INFO); } //-- cgebak -------------------------------------------------------------------- void LAPACK_DECL(cgebak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const FLOAT *SCALE, const INTEGER *M, FLOAT_COMPLEX *V, const INTEGER *LDV, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgebak"); LAPACK_IMPL(cgebak)(JOB, SIDE, N, ILO, IHI, SCALE, M, V, LDV, INFO); } //-- cgebal -------------------------------------------------------------------- void LAPACK_DECL(cgebal)(const char *JOB, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *ILO, INTEGER *IHI, FLOAT *SCALE, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgebal"); LAPACK_IMPL(cgebal)(JOB, N, A, LDA, ILO, IHI, SCALE, INFO); } //-- cgebd2 -------------------------------------------------------------------- void LAPACK_DECL(cgebd2)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *TAUQ, FLOAT_COMPLEX *TAUP, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgebd2"); LAPACK_IMPL(cgebd2)(M, N, A, LDA, D, E, TAUQ, TAUP, WORK, INFO); } //-- cgebrd -------------------------------------------------------------------- void LAPACK_DECL(cgebrd)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *TAUQ, FLOAT_COMPLEX *TAUP, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgebrd"); LAPACK_IMPL(cgebrd)(M, N, A, LDA, D, E, TAUQ, TAUP, WORK, LWORK, INFO); } //-- cgecon -------------------------------------------------------------------- void LAPACK_DECL(cgecon)(const char *NORM, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgecon"); LAPACK_IMPL(cgecon)(NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK, INFO); } //-- cgeequ -------------------------------------------------------------------- void LAPACK_DECL(cgeequ)(const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgeequ"); LAPACK_IMPL(cgeequ)(M, N, A, LDA, R, C, ROWCND, COLCND, AMAX, INFO); } //-- cgeequb ------------------------------------------------------------------- void LAPACK_DECL(cgeequb)(const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgeequb"); LAPACK_IMPL(cgeequb)(M, N, A, LDA, R, C, ROWCND, COLCND, AMAX, INFO); } //-- cgees --------------------------------------------------------------------- void LAPACK_DECL(cgees)(const char *JOBVS, const char *SORT, const LOGICAL *SELECT, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *SDIM, FLOAT_COMPLEX *W, FLOAT_COMPLEX *VS, const INTEGER *LDVS, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgees"); LAPACK_IMPL(cgees)(JOBVS, SORT, SELECT, N, A, LDA, SDIM, W, VS, LDVS, WORK, LWORK, RWORK, BWORK, INFO); } //-- cgeesx -------------------------------------------------------------------- void LAPACK_DECL(cgeesx)(const char *JOBVS, const char *SORT, const LOGICAL *SELECT, const char *SENSE, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *SDIM, FLOAT_COMPLEX *W, FLOAT_COMPLEX *VS, const INTEGER *LDVS, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgeesx"); LAPACK_IMPL(cgeesx)(JOBVS, SORT, SELECT, SENSE, N, A, LDA, SDIM, W, VS, LDVS, RCONDE, RCONDV, WORK, LWORK, RWORK, BWORK, INFO); } //-- cgeev --------------------------------------------------------------------- void LAPACK_DECL(cgeev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *W, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgeev"); LAPACK_IMPL(cgeev)(JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR, WORK, LWORK, RWORK, INFO); } //-- cgeevx -------------------------------------------------------------------- void LAPACK_DECL(cgeevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *W, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, FLOAT *SCALE, FLOAT *ABNRM, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgeevx"); LAPACK_IMPL(cgeevx)(BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, W, VL, LDVL, VR, LDVR, ILO, IHI, SCALE, ABNRM, RCONDE, RCONDV, WORK, LWORK, RWORK, INFO); } //-- cgegs --------------------------------------------------------------------- void LAPACK_DECL(cgegs)(const char *JOBVSL, const char *JOBVSR, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *VSL, const INTEGER *LDVSL, FLOAT_COMPLEX *VSR, const INTEGER *LDVSR, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgegs"); LAPACK_IMPL(cgegs)(JOBVSL, JOBVSR, N, A, LDA, B, LDB, ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, WORK, LWORK, RWORK, INFO); } //-- cgegv --------------------------------------------------------------------- void LAPACK_DECL(cgegv)(const char *JOBVL, const char *JOBVR, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgegv"); LAPACK_IMPL(cgegv)(JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHA, BETA, VL, LDVL, VR, LDVR, WORK, LWORK, RWORK, INFO); } //-- cgehd2 -------------------------------------------------------------------- void LAPACK_DECL(cgehd2)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgehd2"); LAPACK_IMPL(cgehd2)(N, ILO, IHI, A, LDA, TAU, WORK, INFO); } //-- cgehrd -------------------------------------------------------------------- void LAPACK_DECL(cgehrd)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgehrd"); LAPACK_IMPL(cgehrd)(N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO); } //-- cgelq2 -------------------------------------------------------------------- void LAPACK_DECL(cgelq2)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgelq2"); LAPACK_IMPL(cgelq2)(M, N, A, LDA, TAU, WORK, INFO); } //-- cgelqf -------------------------------------------------------------------- void LAPACK_DECL(cgelqf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgelqf"); LAPACK_IMPL(cgelqf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- cgels --------------------------------------------------------------------- void LAPACK_DECL(cgels)(const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgels"); LAPACK_IMPL(cgels)(TRANS, M, N, NRHS, A, LDA, B, LDB, WORK, LWORK, INFO); } //-- cgelsd -------------------------------------------------------------------- void LAPACK_DECL(cgelsd)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT *S, const FLOAT *RCOND, INTEGER *RANK, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgelsd"); LAPACK_IMPL(cgelsd)(M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK, WORK, LWORK, RWORK, IWORK, INFO); } //-- cgelss -------------------------------------------------------------------- void LAPACK_DECL(cgelss)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT *S, const FLOAT *RCOND, INTEGER *RANK, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgelss"); LAPACK_IMPL(cgelss)(M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK, WORK, LWORK, RWORK, INFO); } //-- cgelsx -------------------------------------------------------------------- void LAPACK_DECL(cgelsx)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *JPVT, const FLOAT *RCOND, INTEGER *RANK, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgelsx"); LAPACK_IMPL(cgelsx)(M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK, WORK, RWORK, INFO); } //-- cgelsy -------------------------------------------------------------------- void LAPACK_DECL(cgelsy)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *JPVT, const FLOAT *RCOND, INTEGER *RANK, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgelsy"); LAPACK_IMPL(cgelsy)(M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK, WORK, LWORK, RWORK, INFO); } //-- cgeql2 -------------------------------------------------------------------- void LAPACK_DECL(cgeql2)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgeql2"); LAPACK_IMPL(cgeql2)(M, N, A, LDA, TAU, WORK, INFO); } //-- cgeqlf -------------------------------------------------------------------- void LAPACK_DECL(cgeqlf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgeqlf"); LAPACK_IMPL(cgeqlf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- cgeqp3 -------------------------------------------------------------------- void LAPACK_DECL(cgeqp3)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgeqp3"); LAPACK_IMPL(cgeqp3)(M, N, A, LDA, JPVT, TAU, WORK, LWORK, RWORK, INFO); } //-- cgeqpf -------------------------------------------------------------------- void LAPACK_DECL(cgeqpf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgeqpf"); LAPACK_IMPL(cgeqpf)(M, N, A, LDA, JPVT, TAU, WORK, RWORK, INFO); } //-- cgeqr2 -------------------------------------------------------------------- void LAPACK_DECL(cgeqr2)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgeqr2"); LAPACK_IMPL(cgeqr2)(M, N, A, LDA, TAU, WORK, INFO); } //-- cgeqr2p ------------------------------------------------------------------- void LAPACK_DECL(cgeqr2p)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgeqr2p"); LAPACK_IMPL(cgeqr2p)(M, N, A, LDA, TAU, WORK, INFO); } //-- cgeqrf -------------------------------------------------------------------- void LAPACK_DECL(cgeqrf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgeqrf"); LAPACK_IMPL(cgeqrf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- cgeqrfp ------------------------------------------------------------------- void LAPACK_DECL(cgeqrfp)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgeqrfp"); LAPACK_IMPL(cgeqrfp)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- cgerfs -------------------------------------------------------------------- void LAPACK_DECL(cgerfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgerfs"); LAPACK_IMPL(cgerfs)(TRANS, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- cgerfsx ------------------------------------------------------------------- void LAPACK_DECL(cgerfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *R, const FLOAT *C, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgerfsx"); LAPACK_IMPL(cgerfsx)(TRANS, EQUED, N, NRHS, A, LDA, AF, LDAF, IPIV, R, C, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- cgerq2 -------------------------------------------------------------------- void LAPACK_DECL(cgerq2)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgerq2"); LAPACK_IMPL(cgerq2)(M, N, A, LDA, TAU, WORK, INFO); } //-- cgerqf -------------------------------------------------------------------- void LAPACK_DECL(cgerqf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgerqf"); LAPACK_IMPL(cgerqf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- cgesc2 -------------------------------------------------------------------- void LAPACK_DECL(cgesc2)(const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *RHS, const INTEGER *IPIV, const INTEGER *JPIV, FLOAT *SCALE) { DEBUG_LAPACK_STUB("cgesc2"); LAPACK_IMPL(cgesc2)(N, A, LDA, RHS, IPIV, JPIV, SCALE); } //-- cgesdd -------------------------------------------------------------------- void LAPACK_DECL(cgesdd)(const char *JOBZ, const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *S, FLOAT_COMPLEX *U, const INTEGER *LDU, FLOAT_COMPLEX *VT, const INTEGER *LDVT, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgesdd"); LAPACK_IMPL(cgesdd)(JOBZ, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK, LWORK, RWORK, IWORK, INFO); } //-- cgesv --------------------------------------------------------------------- void LAPACK_DECL(cgesv)(const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgesv"); LAPACK_IMPL(cgesv)(N, NRHS, A, LDA, IPIV, B, LDB, INFO); } //-- cgesvd -------------------------------------------------------------------- void LAPACK_DECL(cgesvd)(const char *JOBU, const char *JOBVT, const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *S, FLOAT_COMPLEX *U, const INTEGER *LDU, FLOAT_COMPLEX *VT, const INTEGER *LDVT, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgesvd"); LAPACK_IMPL(cgesvd)(JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK, LWORK, RWORK, INFO); } //-- cgesvx -------------------------------------------------------------------- void LAPACK_DECL(cgesvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, FLOAT *R, FLOAT *C, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgesvx"); LAPACK_IMPL(cgesvx)(FACT, TRANS, N, NRHS, A, LDA, AF, LDAF, IPIV, EQUED, R, C, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- cgesvxx ------------------------------------------------------------------- void LAPACK_DECL(cgesvxx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, FLOAT *R, FLOAT *C, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgesvxx"); LAPACK_IMPL(cgesvxx)(FACT, TRANS, N, NRHS, A, LDA, AF, LDAF, IPIV, EQUED, R, C, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- cgetc2 -------------------------------------------------------------------- void LAPACK_DECL(cgetc2)(const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *JPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgetc2"); LAPACK_IMPL(cgetc2)(N, A, LDA, IPIV, JPIV, INFO); } //-- cgetf2 -------------------------------------------------------------------- void LAPACK_DECL(cgetf2)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgetf2"); LAPACK_IMPL(cgetf2)(M, N, A, LDA, IPIV, INFO); } //-- cgetrf -------------------------------------------------------------------- void LAPACK_DECL(cgetrf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgetrf"); LAPACK_IMPL(cgetrf)(M, N, A, LDA, IPIV, INFO); } //-- cgetri -------------------------------------------------------------------- void LAPACK_DECL(cgetri)(const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgetri"); LAPACK_IMPL(cgetri)(N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- cgetrs -------------------------------------------------------------------- void LAPACK_DECL(cgetrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgetrs"); LAPACK_IMPL(cgetrs)(TRANS, N, NRHS, A, LDA, IPIV, B, LDB, INFO); } //-- cggbak -------------------------------------------------------------------- void LAPACK_DECL(cggbak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const FLOAT *LSCALE, const FLOAT *RSCALE, const INTEGER *M, FLOAT_COMPLEX *V, const INTEGER *LDV, INTEGER *INFO) { DEBUG_LAPACK_STUB("cggbak"); LAPACK_IMPL(cggbak)(JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V, LDV, INFO); } //-- cggbal -------------------------------------------------------------------- void LAPACK_DECL(cggbal)(const char *JOB, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *ILO, INTEGER *IHI, FLOAT *LSCALE, FLOAT *RSCALE, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cggbal"); LAPACK_IMPL(cggbal)(JOB, N, A, LDA, B, LDB, ILO, IHI, LSCALE, RSCALE, WORK, INFO); } //-- cgges --------------------------------------------------------------------- void LAPACK_DECL(cgges)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *SDIM, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *VSL, const INTEGER *LDVSL, FLOAT_COMPLEX *VSR, const INTEGER *LDVSR, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgges"); LAPACK_IMPL(cgges)(JOBVSL, JOBVSR, SORT, SELCTG, N, A, LDA, B, LDB, SDIM, ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, WORK, LWORK, RWORK, BWORK, INFO); } //-- cggesx -------------------------------------------------------------------- void LAPACK_DECL(cggesx)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const char *SENSE, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *SDIM, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *VSL, const INTEGER *LDVSL, FLOAT_COMPLEX *VSR, const INTEGER *LDVSR, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *IWORK, const INTEGER *LIWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cggesx"); LAPACK_IMPL(cggesx)(JOBVSL, JOBVSR, SORT, SELCTG, SENSE, N, A, LDA, B, LDB, SDIM, ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, RCONDE, RCONDV, WORK, LWORK, RWORK, IWORK, LIWORK, BWORK, INFO); } //-- cggev --------------------------------------------------------------------- void LAPACK_DECL(cggev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cggev"); LAPACK_IMPL(cggev)(JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHA, BETA, VL, LDVL, VR, LDVR, WORK, LWORK, RWORK, INFO); } //-- cggevx -------------------------------------------------------------------- void LAPACK_DECL(cggevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, FLOAT *LSCALE, FLOAT *RSCALE, FLOAT *ABNRM, FLOAT *BBNRM, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *IWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cggevx"); LAPACK_IMPL(cggevx)(BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, B, LDB, ALPHA, BETA, VL, LDVL, VR, LDVR, ILO, IHI, LSCALE, RSCALE, ABNRM, BBNRM, RCONDE, RCONDV, WORK, LWORK, RWORK, IWORK, BWORK, INFO); } //-- cggglm -------------------------------------------------------------------- void LAPACK_DECL(cggglm)(const INTEGER *N, const INTEGER *M, const INTEGER *P, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *D, FLOAT_COMPLEX *X, FLOAT_COMPLEX *Y, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cggglm"); LAPACK_IMPL(cggglm)(N, M, P, A, LDA, B, LDB, D, X, Y, WORK, LWORK, INFO); } //-- cgghrd -------------------------------------------------------------------- void LAPACK_DECL(cgghrd)(const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgghrd"); LAPACK_IMPL(cgghrd)(COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q, LDQ, Z, LDZ, INFO); } //-- cgglse -------------------------------------------------------------------- void LAPACK_DECL(cgglse)(const INTEGER *M, const INTEGER *N, const INTEGER *P, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *C, FLOAT_COMPLEX *D, FLOAT_COMPLEX *X, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgglse"); LAPACK_IMPL(cgglse)(M, N, P, A, LDA, B, LDB, C, D, X, WORK, LWORK, INFO); } //-- cggqrf -------------------------------------------------------------------- void LAPACK_DECL(cggqrf)(const INTEGER *N, const INTEGER *M, const INTEGER *P, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAUA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *TAUB, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cggqrf"); LAPACK_IMPL(cggqrf)(N, M, P, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO); } //-- cggrqf -------------------------------------------------------------------- void LAPACK_DECL(cggrqf)(const INTEGER *M, const INTEGER *P, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAUA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *TAUB, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cggrqf"); LAPACK_IMPL(cggrqf)(M, P, N, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO); } //-- cggsvd -------------------------------------------------------------------- void LAPACK_DECL(cggsvd)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *N, const INTEGER *P, INTEGER *K, INTEGER *L, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT *ALPHA, FLOAT *BETA, FLOAT_COMPLEX *U, const INTEGER *LDU, FLOAT_COMPLEX *V, const INTEGER *LDV, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cggsvd"); LAPACK_IMPL(cggsvd)(JOBU, JOBV, JOBQ, M, N, P, K, L, A, LDA, B, LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, RWORK, IWORK, INFO); } //-- cggsvp -------------------------------------------------------------------- void LAPACK_DECL(cggsvp)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT *TOLA, const FLOAT *TOLB, INTEGER *K, INTEGER *L, FLOAT_COMPLEX *U, const INTEGER *LDU, FLOAT_COMPLEX *V, const INTEGER *LDV, FLOAT_COMPLEX *Q, const INTEGER *LDQ, INTEGER *IWORK, FLOAT *RWORK, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cggsvp"); LAPACK_IMPL(cggsvp)(JOBU, JOBV, JOBQ, M, P, N, A, LDA, B, LDB, TOLA, TOLB, K, L, U, LDU, V, LDV, Q, LDQ, IWORK, RWORK, TAU, WORK, INFO); } //-- cgtcon -------------------------------------------------------------------- void LAPACK_DECL(cgtcon)(const char *NORM, const INTEGER *N, const FLOAT_COMPLEX *DL, const FLOAT_COMPLEX *D, const FLOAT_COMPLEX *DU, const FLOAT_COMPLEX *DU2, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgtcon"); LAPACK_IMPL(cgtcon)(NORM, N, DL, D, DU, DU2, IPIV, ANORM, RCOND, WORK, INFO); } //-- cgtrfs -------------------------------------------------------------------- void LAPACK_DECL(cgtrfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *DL, const FLOAT_COMPLEX *D, const FLOAT_COMPLEX *DU, const FLOAT_COMPLEX *DLF, const FLOAT_COMPLEX *DF, const FLOAT_COMPLEX *DUF, const FLOAT_COMPLEX *DU2, const INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgtrfs"); LAPACK_IMPL(cgtrfs)(TRANS, N, NRHS, DL, D, DU, DLF, DF, DUF, DU2, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- cgtsv --------------------------------------------------------------------- void LAPACK_DECL(cgtsv)(const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *DL, FLOAT_COMPLEX *D, FLOAT_COMPLEX *DU, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgtsv"); LAPACK_IMPL(cgtsv)(N, NRHS, DL, D, DU, B, LDB, INFO); } //-- cgtsvx -------------------------------------------------------------------- void LAPACK_DECL(cgtsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *DL, const FLOAT_COMPLEX *D, const FLOAT_COMPLEX *DU, FLOAT_COMPLEX *DLF, FLOAT_COMPLEX *DF, FLOAT_COMPLEX *DUF, FLOAT_COMPLEX *DU2, INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgtsvx"); LAPACK_IMPL(cgtsvx)(FACT, TRANS, N, NRHS, DL, D, DU, DLF, DF, DUF, DU2, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- cgttrf -------------------------------------------------------------------- void LAPACK_DECL(cgttrf)(const INTEGER *N, FLOAT_COMPLEX *DL, FLOAT_COMPLEX *D, FLOAT_COMPLEX *DU, FLOAT_COMPLEX *DU2, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgttrf"); LAPACK_IMPL(cgttrf)(N, DL, D, DU, DU2, IPIV, INFO); } //-- cgttrs -------------------------------------------------------------------- void LAPACK_DECL(cgttrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *DL, const FLOAT_COMPLEX *D, const FLOAT_COMPLEX *DU, const FLOAT_COMPLEX *DU2, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cgttrs"); LAPACK_IMPL(cgttrs)(TRANS, N, NRHS, DL, D, DU, DU2, IPIV, B, LDB, INFO); } //-- cgtts2 -------------------------------------------------------------------- void LAPACK_DECL(cgtts2)(const INTEGER *ITRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *DL, const FLOAT_COMPLEX *D, const FLOAT_COMPLEX *DU, const FLOAT_COMPLEX *DU2, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("cgtts2"); LAPACK_IMPL(cgtts2)(ITRANS, N, NRHS, DL, D, DU, DU2, IPIV, B, LDB); } //-- chbev --------------------------------------------------------------------- void LAPACK_DECL(chbev)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chbev"); LAPACK_IMPL(chbev)(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, RWORK, INFO); } //-- chbevd -------------------------------------------------------------------- void LAPACK_DECL(chbevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chbevd"); LAPACK_IMPL(chbevd)(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- chbevx -------------------------------------------------------------------- void LAPACK_DECL(chbevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *Q, const INTEGER *LDQ, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("chbevx"); LAPACK_IMPL(chbevx)(JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO); } //-- chbgst -------------------------------------------------------------------- void LAPACK_DECL(chbgst)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *BB, const INTEGER *LDBB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chbgst"); LAPACK_IMPL(chbgst)(VECT, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, X, LDX, WORK, RWORK, INFO); } //-- chbgv --------------------------------------------------------------------- void LAPACK_DECL(chbgv)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *BB, const INTEGER *LDBB, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chbgv"); LAPACK_IMPL(chbgv)(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, RWORK, INFO); } //-- chbgvd -------------------------------------------------------------------- void LAPACK_DECL(chbgvd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *BB, const INTEGER *LDBB, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chbgvd"); LAPACK_IMPL(chbgvd)(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- chbgvx -------------------------------------------------------------------- void LAPACK_DECL(chbgvx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *BB, const INTEGER *LDBB, FLOAT_COMPLEX *Q, const INTEGER *LDQ, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("chbgvx"); LAPACK_IMPL(chbgvx)(JOBZ, RANGE, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO); } //-- chbtrd -------------------------------------------------------------------- void LAPACK_DECL(chbtrd)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chbtrd"); LAPACK_IMPL(chbtrd)(VECT, UPLO, N, KD, AB, LDAB, D, E, Q, LDQ, WORK, INFO); } //-- checon -------------------------------------------------------------------- void LAPACK_DECL(checon)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("checon"); LAPACK_IMPL(checon)(UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK, INFO); } //-- cheequb ------------------------------------------------------------------- void LAPACK_DECL(cheequb)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, const FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cheequb"); LAPACK_IMPL(cheequb)(UPLO, N, A, LDA, S, SCOND, AMAX, WORK, INFO); } //-- cheev --------------------------------------------------------------------- void LAPACK_DECL(cheev)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *W, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cheev"); LAPACK_IMPL(cheev)(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, INFO); } //-- cheevd -------------------------------------------------------------------- void LAPACK_DECL(cheevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *W, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cheevd"); LAPACK_IMPL(cheevd)(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- cheevr -------------------------------------------------------------------- void LAPACK_DECL(cheevr)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cheevr"); LAPACK_IMPL(cheevr)(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- cheevx -------------------------------------------------------------------- void LAPACK_DECL(cheevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("cheevx"); LAPACK_IMPL(cheevx)(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK, IWORK, IFAIL, INFO); } //-- chegs2 -------------------------------------------------------------------- void LAPACK_DECL(chegs2)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("chegs2"); LAPACK_IMPL(chegs2)(ITYPE, UPLO, N, A, LDA, B, LDB, INFO); } //-- chegst -------------------------------------------------------------------- void LAPACK_DECL(chegst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("chegst"); LAPACK_IMPL(chegst)(ITYPE, UPLO, N, A, LDA, B, LDB, INFO); } //-- chegv --------------------------------------------------------------------- void LAPACK_DECL(chegv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT *W, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chegv"); LAPACK_IMPL(chegv)(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, RWORK, INFO); } //-- chegvd -------------------------------------------------------------------- void LAPACK_DECL(chegvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT *W, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chegvd"); LAPACK_IMPL(chegvd)(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- chegvx -------------------------------------------------------------------- void LAPACK_DECL(chegvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("chegvx"); LAPACK_IMPL(chegvx)(ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK, IWORK, IFAIL, INFO); } //-- cherfs -------------------------------------------------------------------- void LAPACK_DECL(cherfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cherfs"); LAPACK_IMPL(cherfs)(UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- cherfsx ------------------------------------------------------------------- void LAPACK_DECL(cherfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, FLOAT *S, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cherfsx"); LAPACK_IMPL(cherfsx)(UPLO, EQUED, N, NRHS, A, LDA, AF, LDAF, IPIV, S, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- chesv --------------------------------------------------------------------- void LAPACK_DECL(chesv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chesv"); LAPACK_IMPL(chesv)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO); } //-- chesvx -------------------------------------------------------------------- void LAPACK_DECL(chesvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chesvx"); LAPACK_IMPL(chesvx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, LWORK, RWORK, INFO); } //-- chesvxx ------------------------------------------------------------------- void LAPACK_DECL(chesvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, FLOAT *S, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chesvxx"); LAPACK_IMPL(chesvxx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, EQUED, S, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- cheswapr ------------------------------------------------------------------ void LAPACK_DECL(cheswapr)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *I1, const INTEGER *I2) { DEBUG_LAPACK_STUB("cheswapr"); LAPACK_IMPL(cheswapr)(UPLO, N, A, LDA, I1, I2); } //-- chetd2 -------------------------------------------------------------------- void LAPACK_DECL(chetd2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *TAU, INTEGER *INFO) { DEBUG_LAPACK_STUB("chetd2"); LAPACK_IMPL(chetd2)(UPLO, N, A, LDA, D, E, TAU, INFO); } //-- chetf2 -------------------------------------------------------------------- void LAPACK_DECL(chetf2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("chetf2"); LAPACK_IMPL(chetf2)(UPLO, N, A, LDA, IPIV, INFO); } //-- chetrd -------------------------------------------------------------------- void LAPACK_DECL(chetrd)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chetrd"); LAPACK_IMPL(chetrd)(UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO); } //-- chetrf -------------------------------------------------------------------- void LAPACK_DECL(chetrf)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chetrf"); LAPACK_IMPL(chetrf)(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- chetri -------------------------------------------------------------------- void LAPACK_DECL(chetri)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chetri"); LAPACK_IMPL(chetri)(UPLO, N, A, LDA, IPIV, WORK, INFO); } //-- chetri2 ------------------------------------------------------------------- void LAPACK_DECL(chetri2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chetri2"); LAPACK_IMPL(chetri2)(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- chetri2x ------------------------------------------------------------------ void LAPACK_DECL(chetri2x)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, const INTEGER *NB, INTEGER *INFO) { DEBUG_LAPACK_STUB("chetri2x"); LAPACK_IMPL(chetri2x)(UPLO, N, A, LDA, IPIV, WORK, NB, INFO); } //-- chetrs -------------------------------------------------------------------- void LAPACK_DECL(chetrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("chetrs"); LAPACK_IMPL(chetrs)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO); } //-- chetrs2 ------------------------------------------------------------------- void LAPACK_DECL(chetrs2)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chetrs2"); LAPACK_IMPL(chetrs2)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, INFO); } //-- chfrk --------------------------------------------------------------------- void LAPACK_DECL(chfrk)(const char *TRANSR, const char *UPLO, const char *TRANS, const INTEGER *N, const INTEGER *K, const FLOAT *ALPHA, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *BETA, FLOAT_COMPLEX *C) { DEBUG_LAPACK_STUB("chfrk"); LAPACK_IMPL(chfrk)(TRANSR, UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C); } //-- chgeqz -------------------------------------------------------------------- void LAPACK_DECL(chgeqz)(const char *JOB, const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *H, const INTEGER *LDH, FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chgeqz"); LAPACK_IMPL(chgeqz)(JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT, ALPHA, BETA, Q, LDQ, Z, LDZ, WORK, LWORK, RWORK, INFO); } //-- chla_transtype ------------------------------------------------------------ UNKNOWN LAPACK_DECL(chla_transtype)(const INTEGER *TRANS) { DEBUG_LAPACK_STUB("chla_transtype"); return LAPACK_IMPL(chla_transtype)(TRANS); } //-- chpcon -------------------------------------------------------------------- void LAPACK_DECL(chpcon)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chpcon"); LAPACK_IMPL(chpcon)(UPLO, N, AP, IPIV, ANORM, RCOND, WORK, INFO); } //-- chpev --------------------------------------------------------------------- void LAPACK_DECL(chpev)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chpev"); LAPACK_IMPL(chpev)(JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, RWORK, INFO); } //-- chpevd -------------------------------------------------------------------- void LAPACK_DECL(chpevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chpevd"); LAPACK_IMPL(chpevd)(JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- chpevx -------------------------------------------------------------------- void LAPACK_DECL(chpevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("chpevx"); LAPACK_IMPL(chpevx)(JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO); } //-- chpgst -------------------------------------------------------------------- void LAPACK_DECL(chpgst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *BP, INTEGER *INFO) { DEBUG_LAPACK_STUB("chpgst"); LAPACK_IMPL(chpgst)(ITYPE, UPLO, N, AP, BP, INFO); } //-- chpgv --------------------------------------------------------------------- void LAPACK_DECL(chpgv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, FLOAT_COMPLEX *BP, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chpgv"); LAPACK_IMPL(chpgv)(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, RWORK, INFO); } //-- chpgvd -------------------------------------------------------------------- void LAPACK_DECL(chpgvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, FLOAT_COMPLEX *BP, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chpgvd"); LAPACK_IMPL(chpgvd)(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- chpgvx -------------------------------------------------------------------- void LAPACK_DECL(chpgvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, FLOAT_COMPLEX *BP, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("chpgvx"); LAPACK_IMPL(chpgvx)(ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO); } //-- chprfs -------------------------------------------------------------------- void LAPACK_DECL(chprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *AFP, const INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chprfs"); LAPACK_IMPL(chprfs)(UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- chpsv --------------------------------------------------------------------- void LAPACK_DECL(chpsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *AP, INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("chpsv"); LAPACK_IMPL(chpsv)(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO); } //-- chpsvx -------------------------------------------------------------------- void LAPACK_DECL(chpsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, FLOAT_COMPLEX *AFP, INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chpsvx"); LAPACK_IMPL(chpsvx)(FACT, UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- chptrd -------------------------------------------------------------------- void LAPACK_DECL(chptrd)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *TAU, INTEGER *INFO) { DEBUG_LAPACK_STUB("chptrd"); LAPACK_IMPL(chptrd)(UPLO, N, AP, D, E, TAU, INFO); } //-- chptrf -------------------------------------------------------------------- void LAPACK_DECL(chptrf)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("chptrf"); LAPACK_IMPL(chptrf)(UPLO, N, AP, IPIV, INFO); } //-- chptri -------------------------------------------------------------------- void LAPACK_DECL(chptri)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chptri"); LAPACK_IMPL(chptri)(UPLO, N, AP, IPIV, WORK, INFO); } //-- chptrs -------------------------------------------------------------------- void LAPACK_DECL(chptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("chptrs"); LAPACK_IMPL(chptrs)(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO); } //-- chsein -------------------------------------------------------------------- void LAPACK_DECL(chsein)(const char *SIDE, const char *EIGSRC, const char *INITV, const LOGICAL *SELECT, const INTEGER *N, const FLOAT_COMPLEX *H, const INTEGER *LDH, FLOAT_COMPLEX *W, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IFAILL, INTEGER *IFAILR, INTEGER *INFO) { DEBUG_LAPACK_STUB("chsein"); LAPACK_IMPL(chsein)(SIDE, EIGSRC, INITV, SELECT, N, H, LDH, W, VL, LDVL, VR, LDVR, MM, M, WORK, RWORK, IFAILL, IFAILR, INFO); } //-- chseqr -------------------------------------------------------------------- void LAPACK_DECL(chseqr)(const char *JOB, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *H, const INTEGER *LDH, FLOAT_COMPLEX *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("chseqr"); LAPACK_IMPL(chseqr)(JOB, COMPZ, N, ILO, IHI, H, LDH, W, Z, LDZ, WORK, LWORK, INFO); } //-- cla_gbamv ----------------------------------------------------------------- void LAPACK_DECL(cla_gbamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT *ALPHA, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *X, const INTEGER *INCX, const FLOAT *BETA, FLOAT *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("cla_gbamv"); LAPACK_IMPL(cla_gbamv)(TRANS, M, N, KL, KU, ALPHA, AB, LDAB, X, INCX, BETA, Y, INCY); } //-- cla_gbrcond_c ------------------------------------------------------------- FLOAT LAPACK_DECL(cla_gbrcond_c)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const FLOAT *C, const LOGICAL *CAPPLY, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK) { DEBUG_LAPACK_STUB("cla_gbrcond_c"); return LAPACK_IMPL(cla_gbrcond_c)(TRANS, N, KL, KU, AB, LDAB, AFB, LDAFB, IPIV, C, CAPPLY, INFO, WORK, RWORK); } //-- cla_gbrcond_x ------------------------------------------------------------- FLOAT LAPACK_DECL(cla_gbrcond_x)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const FLOAT_COMPLEX *X, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK) { DEBUG_LAPACK_STUB("cla_gbrcond_x"); return LAPACK_IMPL(cla_gbrcond_x)(TRANS, N, KL, KU, AB, LDAB, AFB, LDAFB, IPIV, X, INFO, WORK, RWORK); } //-- cla_gbrfsx_extended ------------------------------------------------------- void LAPACK_DECL(cla_gbrfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT_COMPLEX *RES, const FLOAT *AYB, const FLOAT_COMPLEX *DY, const FLOAT_COMPLEX *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("cla_gbrfsx_extended"); ASSERT(0); /* LAPACK_IMPL(cla_gbrfsx_extended)(PREC_TYPE, TRANS_TYPE, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERR_BNDS_NORM, ERR_BNDS_COMP, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- cla_gbrpvgrw -------------------------------------------------------------- FLOAT LAPACK_DECL(cla_gbrpvgrw)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NCOLS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *AFB, const INTEGER *LDAFB) { DEBUG_LAPACK_STUB("cla_gbrpvgrw"); return LAPACK_IMPL(cla_gbrpvgrw)(N, KL, KU, NCOLS, AB, LDAB, AFB, LDAFB); } //-- cla_geamv ----------------------------------------------------------------- void LAPACK_DECL(cla_geamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const FLOAT *ALPHA, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *X, const INTEGER *INCX, const FLOAT *BETA, FLOAT *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("cla_geamv"); LAPACK_IMPL(cla_geamv)(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY); } //-- cla_gercond_c ------------------------------------------------------------- FLOAT LAPACK_DECL(cla_gercond_c)(const char *TRANS, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *C, const LOGICAL *CAPPLY, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK) { DEBUG_LAPACK_STUB("cla_gercond_c"); return LAPACK_IMPL(cla_gercond_c)(TRANS, N, A, LDA, AF, LDAF, IPIV, C, CAPPLY, INFO, WORK, RWORK); } //-- cla_gercond_x ------------------------------------------------------------- FLOAT LAPACK_DECL(cla_gercond_x)(const char *TRANS, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT_COMPLEX *X, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK) { DEBUG_LAPACK_STUB("cla_gercond_x"); return LAPACK_IMPL(cla_gercond_x)(TRANS, N, A, LDA, AF, LDAF, IPIV, X, INFO, WORK, RWORK); } //-- cla_gerfsx_extended ------------------------------------------------------- void LAPACK_DECL(cla_gerfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, const FLOAT *ERRS_N, const FLOAT *ERRS_C, const FLOAT_COMPLEX *RES, const FLOAT *AYB, const FLOAT_COMPLEX *DY, const FLOAT_COMPLEX *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("cla_gerfsx_extended"); ASSERT(0); /* LAPACK_IMPL(cla_gerfsx_extended)(PREC_TYPE, TRANS_TYPE, N, NRHS, A, LDA, AF, LDAF, IPIV, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERRS_N, ERRS_C, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- cla_heamv ----------------------------------------------------------------- void LAPACK_DECL(cla_heamv)(const INTEGER *UPLO, const INTEGER *N, const FLOAT *ALPHA, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *X, const INTEGER *INCX, const FLOAT *BETA, FLOAT *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("cla_heamv"); LAPACK_IMPL(cla_heamv)(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY); } //-- cla_hercond_c ------------------------------------------------------------- FLOAT LAPACK_DECL(cla_hercond_c)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *C, const LOGICAL *CAPPLY, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK) { DEBUG_LAPACK_STUB("cla_hercond_c"); return LAPACK_IMPL(cla_hercond_c)(UPLO, N, A, LDA, AF, LDAF, IPIV, C, CAPPLY, INFO, WORK, RWORK); } //-- cla_hercond_x ------------------------------------------------------------- FLOAT LAPACK_DECL(cla_hercond_x)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT_COMPLEX *X, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK) { DEBUG_LAPACK_STUB("cla_hercond_x"); return LAPACK_IMPL(cla_hercond_x)(UPLO, N, A, LDA, AF, LDAF, IPIV, X, INFO, WORK, RWORK); } //-- cla_herfsx_extended ------------------------------------------------------- void LAPACK_DECL(cla_herfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT_COMPLEX *RES, const FLOAT *AYB, const FLOAT_COMPLEX *DY, const FLOAT_COMPLEX *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("cla_herfsx_extended"); ASSERT(0); /* LAPACK_IMPL(cla_herfsx_extended)(PREC_TYPE, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERR_BNDS_NORM, ERR_BNDS_COMP, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- cla_herpvgrw -------------------------------------------------------------- FLOAT LAPACK_DECL(cla_herpvgrw)(const char *UPLO, const INTEGER *N, const INTEGER *INFO, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *WORK) { DEBUG_LAPACK_STUB("cla_herpvgrw"); return LAPACK_IMPL(cla_herpvgrw)(UPLO, N, INFO, A, LDA, AF, LDAF, IPIV, WORK); } //-- cla_lin_berr -------------------------------------------------------------- void LAPACK_DECL(cla_lin_berr)(const INTEGER *N, const INTEGER *NZ, const INTEGER *NRHS, const FLOAT_COMPLEX *RES, const FLOAT *AYB, FLOAT *BERR) { DEBUG_LAPACK_STUB("cla_lin_berr"); LAPACK_IMPL(cla_lin_berr)(N, NZ, NRHS, RES, AYB, BERR); } //-- cla_porcond_c ------------------------------------------------------------- FLOAT LAPACK_DECL(cla_porcond_c)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const FLOAT *C, const LOGICAL *CAPPLY, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK) { DEBUG_LAPACK_STUB("cla_porcond_c"); return LAPACK_IMPL(cla_porcond_c)(UPLO, N, A, LDA, AF, LDAF, C, CAPPLY, INFO, WORK, RWORK); } //-- cla_porcond_x ------------------------------------------------------------- FLOAT LAPACK_DECL(cla_porcond_x)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const FLOAT_COMPLEX *X, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK) { DEBUG_LAPACK_STUB("cla_porcond_x"); return LAPACK_IMPL(cla_porcond_x)(UPLO, N, A, LDA, AF, LDAF, X, INFO, WORK, RWORK); } //-- cla_porfsx_extended ------------------------------------------------------- void LAPACK_DECL(cla_porfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT_COMPLEX *RES, const FLOAT *AYB, const FLOAT_COMPLEX *DY, const FLOAT_COMPLEX *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("cla_porfsx_extended"); ASSERT(0); /* LAPACK_IMPL(cla_porfsx_extended)(PREC_TYPE, UPLO, N, NRHS, A, LDA, AF, LDAF, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERR_BNDS_NORM, ERR_BNDS_COMP, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- cla_porpvgrw -------------------------------------------------------------- FLOAT LAPACK_DECL(cla_porpvgrw)(const char *UPLO, const INTEGER *NCOLS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const FLOAT *WORK) { DEBUG_LAPACK_STUB("cla_porpvgrw"); return LAPACK_IMPL(cla_porpvgrw)(UPLO, NCOLS, A, LDA, AF, LDAF, WORK); } //-- cla_rpvgrw ---------------------------------------------------------------- FLOAT LAPACK_DECL(cla_rpvgrw)(const INTEGER *N, const INTEGER *NCOLS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF) { DEBUG_LAPACK_STUB("cla_rpvgrw"); return LAPACK_IMPL(cla_rpvgrw)(N, NCOLS, A, LDA, AF, LDAF); } //-- cla_syamv ----------------------------------------------------------------- void LAPACK_DECL(cla_syamv)(const INTEGER *UPLO, const INTEGER *N, const FLOAT *ALPHA, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *X, const INTEGER *INCX, const FLOAT *BETA, FLOAT *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("cla_syamv"); LAPACK_IMPL(cla_syamv)(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY); } //-- cla_syrcond_c ------------------------------------------------------------- FLOAT LAPACK_DECL(cla_syrcond_c)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *C, const LOGICAL *CAPPLY, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK) { DEBUG_LAPACK_STUB("cla_syrcond_c"); return LAPACK_IMPL(cla_syrcond_c)(UPLO, N, A, LDA, AF, LDAF, IPIV, C, CAPPLY, INFO, WORK, RWORK); } //-- cla_syrcond_x ------------------------------------------------------------- FLOAT LAPACK_DECL(cla_syrcond_x)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT_COMPLEX *X, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK) { DEBUG_LAPACK_STUB("cla_syrcond_x"); return LAPACK_IMPL(cla_syrcond_x)(UPLO, N, A, LDA, AF, LDAF, IPIV, X, INFO, WORK, RWORK); } //-- cla_syrfsx_extended ------------------------------------------------------- void LAPACK_DECL(cla_syrfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT_COMPLEX *RES, const FLOAT *AYB, const FLOAT_COMPLEX *DY, const FLOAT_COMPLEX *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("cla_syrfsx_extended"); ASSERT(0); /* LAPACK_IMPL(cla_syrfsx_extended)(PREC_TYPE, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERR_BNDS_NORM, ERR_BNDS_COMP, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- cla_syrpvgrw -------------------------------------------------------------- FLOAT LAPACK_DECL(cla_syrpvgrw)(const char *UPLO, const INTEGER *N, const INTEGER *INFO, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *WORK) { DEBUG_LAPACK_STUB("cla_syrpvgrw"); return LAPACK_IMPL(cla_syrpvgrw)(UPLO, N, INFO, A, LDA, AF, LDAF, IPIV, WORK); } //-- cla_wwaddw ---------------------------------------------------------------- void LAPACK_DECL(cla_wwaddw)(const INTEGER *N, FLOAT_COMPLEX *X, FLOAT_COMPLEX *Y, const FLOAT_COMPLEX *W) { DEBUG_LAPACK_STUB("cla_wwaddw"); LAPACK_IMPL(cla_wwaddw)(N, X, Y, W); } //-- clabrd -------------------------------------------------------------------- void LAPACK_DECL(clabrd)(const INTEGER *M, const INTEGER *N, const INTEGER *NB, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *TAUQ, FLOAT_COMPLEX *TAUP, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT_COMPLEX *Y, const INTEGER *LDY) { DEBUG_LAPACK_STUB("clabrd"); LAPACK_IMPL(clabrd)(M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y, LDY); } //-- clacgv -------------------------------------------------------------------- void LAPACK_DECL(clacgv)(const INTEGER *N, FLOAT_COMPLEX *X, const INTEGER *INCX) { DEBUG_LAPACK_STUB("clacgv"); LAPACK_IMPL(clacgv)(N, X, INCX); } //-- clacn2 -------------------------------------------------------------------- void LAPACK_DECL(clacn2)(const INTEGER *N, FLOAT_COMPLEX *V, FLOAT_COMPLEX *X, FLOAT *EST, INTEGER *KASE, INTEGER *ISAVE) { DEBUG_LAPACK_STUB("clacn2"); LAPACK_IMPL(clacn2)(N, V, X, EST, KASE, ISAVE); } //-- clacon -------------------------------------------------------------------- void LAPACK_DECL(clacon)(const INTEGER *N, FLOAT_COMPLEX *V, FLOAT_COMPLEX *X, FLOAT *EST, INTEGER *KASE) { DEBUG_LAPACK_STUB("clacon"); LAPACK_IMPL(clacon)(N, V, X, EST, KASE); } //-- clacp2 -------------------------------------------------------------------- void LAPACK_DECL(clacp2)(const char *UPLO, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("clacp2"); LAPACK_IMPL(clacp2)(UPLO, M, N, A, LDA, B, LDB); } //-- clacpy -------------------------------------------------------------------- void LAPACK_DECL(clacpy)(const char *UPLO, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("clacpy"); LAPACK_IMPL(clacpy)(UPLO, M, N, A, LDA, B, LDB); } //-- clacrm -------------------------------------------------------------------- void LAPACK_DECL(clacrm)(const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, const FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT *RWORK) { DEBUG_LAPACK_STUB("clacrm"); LAPACK_IMPL(clacrm)(M, N, A, LDA, B, LDB, C, LDC, RWORK); } //-- clacrt -------------------------------------------------------------------- void LAPACK_DECL(clacrt)(const INTEGER *N, FLOAT_COMPLEX *CX, const INTEGER *INCX, FLOAT_COMPLEX *CY, const INTEGER *INCY, const FLOAT_COMPLEX *C, const FLOAT_COMPLEX *S) { DEBUG_LAPACK_STUB("clacrt"); LAPACK_IMPL(clacrt)(N, CX, INCX, CY, INCY, C, S); } //-- cladiv -------------------------------------------------------------------- UNKNOWN LAPACK_DECL(cladiv)(const FLOAT_COMPLEX *X, const FLOAT_COMPLEX *Y) { DEBUG_LAPACK_STUB("cladiv"); return LAPACK_IMPL(cladiv)(X, Y); } //-- claed0 -------------------------------------------------------------------- void LAPACK_DECL(claed0)(const INTEGER *QSIZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *QSTORE, const INTEGER *LDQS, FLOAT *RWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("claed0"); LAPACK_IMPL(claed0)(QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS, RWORK, IWORK, INFO); } //-- claed7 -------------------------------------------------------------------- void LAPACK_DECL(claed7)(const INTEGER *N, const INTEGER *CUTPNT, const INTEGER *QSIZ, const INTEGER *TLVLS, const INTEGER *CURLVL, const INTEGER *CURPBM, FLOAT *D, FLOAT_COMPLEX *Q, const INTEGER *LDQ, const FLOAT *RHO, INTEGER *INDXQ, FLOAT *QSTORE, INTEGER *QPTR, const INTEGER *PRMPTR, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const FLOAT *GIVNUM, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("claed7"); LAPACK_IMPL(claed7)(N, CUTPNT, QSIZ, TLVLS, CURLVL, CURPBM, D, Q, LDQ, RHO, INDXQ, QSTORE, QPTR, PRMPTR, PERM, GIVPTR, GIVCOL, GIVNUM, WORK, RWORK, IWORK, INFO); } //-- claed8 -------------------------------------------------------------------- void LAPACK_DECL(claed8)(INTEGER *K, const INTEGER *N, const INTEGER *QSIZ, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT *D, FLOAT *RHO, const INTEGER *CUTPNT, const FLOAT *Z, FLOAT *DLAMDA, FLOAT_COMPLEX *Q2, const INTEGER *LDQ2, FLOAT *W, INTEGER *INDXP, INTEGER *INDX, const INTEGER *INDXQ, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, FLOAT *GIVNUM, INTEGER *INFO) { DEBUG_LAPACK_STUB("claed8"); LAPACK_IMPL(claed8)(K, N, QSIZ, Q, LDQ, D, RHO, CUTPNT, Z, DLAMDA, Q2, LDQ2, W, INDXP, INDX, INDXQ, PERM, GIVPTR, GIVCOL, GIVNUM, INFO); } //-- claein -------------------------------------------------------------------- void LAPACK_DECL(claein)(const LOGICAL *RIGHTV, const LOGICAL *NOINIT, const INTEGER *N, const FLOAT_COMPLEX *H, const INTEGER *LDH, const FLOAT_COMPLEX *W, FLOAT_COMPLEX *V, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT *RWORK, const FLOAT *EPS3, const FLOAT *SMLNUM, INTEGER *INFO) { DEBUG_LAPACK_STUB("claein"); LAPACK_IMPL(claein)(RIGHTV, NOINIT, N, H, LDH, W, V, B, LDB, RWORK, EPS3, SMLNUM, INFO); } //-- claesy -------------------------------------------------------------------- void LAPACK_DECL(claesy)(const FLOAT_COMPLEX *A, const FLOAT_COMPLEX *B, const FLOAT_COMPLEX *C, FLOAT_COMPLEX *RT1, FLOAT_COMPLEX *RT2, FLOAT_COMPLEX *EVSCAL, FLOAT_COMPLEX *CS1, FLOAT_COMPLEX *SN1) { DEBUG_LAPACK_STUB("claesy"); LAPACK_IMPL(claesy)(A, B, C, RT1, RT2, EVSCAL, CS1, SN1); } //-- claev2 -------------------------------------------------------------------- void LAPACK_DECL(claev2)(const FLOAT_COMPLEX *A, const FLOAT_COMPLEX *B, const FLOAT_COMPLEX *C, FLOAT *RT1, FLOAT *RT2, FLOAT *CS1, FLOAT_COMPLEX *SN1) { DEBUG_LAPACK_STUB("claev2"); LAPACK_IMPL(claev2)(A, B, C, RT1, RT2, CS1, SN1); } //-- clag2z -------------------------------------------------------------------- void LAPACK_DECL(clag2z)(const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *SA, const INTEGER *LDSA, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("clag2z"); LAPACK_IMPL(clag2z)(M, N, SA, LDSA, A, LDA, INFO); } //-- clags2 -------------------------------------------------------------------- void LAPACK_DECL(clags2)(const LOGICAL *UPPER, const FLOAT *A1, const FLOAT_COMPLEX *A2, const FLOAT *A3, const FLOAT *B1, const FLOAT_COMPLEX *B2, const FLOAT *B3, FLOAT *CSU, FLOAT_COMPLEX *SNU, FLOAT *CSV, FLOAT_COMPLEX *SNV, FLOAT *CSQ, FLOAT_COMPLEX *SNQ) { DEBUG_LAPACK_STUB("clags2"); LAPACK_IMPL(clags2)(UPPER, A1, A2, A3, B1, B2, B3, CSU, SNU, CSV, SNV, CSQ, SNQ); } //-- clagtm -------------------------------------------------------------------- void LAPACK_DECL(clagtm)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *ALPHA, const FLOAT_COMPLEX *DL, const FLOAT_COMPLEX *D, const FLOAT_COMPLEX *DU, const FLOAT_COMPLEX *X, const INTEGER *LDX, const FLOAT *BETA, FLOAT_COMPLEX *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("clagtm"); LAPACK_IMPL(clagtm)(TRANS, N, NRHS, ALPHA, DL, D, DU, X, LDX, BETA, B, LDB); } //-- clahef -------------------------------------------------------------------- void LAPACK_DECL(clahef)(const char *UPLO, const INTEGER *N, const INTEGER *NB, INTEGER *KB, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT_COMPLEX *W, const INTEGER *LDW, INTEGER *INFO) { DEBUG_LAPACK_STUB("clahef"); LAPACK_IMPL(clahef)(UPLO, N, NB, KB, A, LDA, IPIV, W, LDW, INFO); } //-- clahqr -------------------------------------------------------------------- void LAPACK_DECL(clahqr)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *H, const INTEGER *LDH, FLOAT_COMPLEX *W, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *INFO) { DEBUG_LAPACK_STUB("clahqr"); LAPACK_IMPL(clahqr)(WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ, IHIZ, Z, LDZ, INFO); } //-- clahr2 -------------------------------------------------------------------- void LAPACK_DECL(clahr2)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *Y, const INTEGER *LDY) { DEBUG_LAPACK_STUB("clahr2"); LAPACK_IMPL(clahr2)(N, K, NB, A, LDA, TAU, T, LDT, Y, LDY); } //-- clahrd -------------------------------------------------------------------- void LAPACK_DECL(clahrd)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *Y, const INTEGER *LDY) { DEBUG_LAPACK_STUB("clahrd"); LAPACK_IMPL(clahrd)(N, K, NB, A, LDA, TAU, T, LDT, Y, LDY); } //-- claic1 -------------------------------------------------------------------- void LAPACK_DECL(claic1)(const INTEGER *JOB, const INTEGER *J, const FLOAT_COMPLEX *X, const FLOAT *SEST, const FLOAT_COMPLEX *W, const FLOAT_COMPLEX *GAMMA, FLOAT *SESTPR, FLOAT_COMPLEX *S, FLOAT_COMPLEX *C) { DEBUG_LAPACK_STUB("claic1"); LAPACK_IMPL(claic1)(JOB, J, X, SEST, W, GAMMA, SESTPR, S, C); } //-- clals0 -------------------------------------------------------------------- void LAPACK_DECL(clals0)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, const INTEGER *NRHS, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *BX, const INTEGER *LDBX, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const FLOAT *GIVNUM, const INTEGER *LDGNUM, const FLOAT *POLES, const FLOAT *DIFL, const FLOAT *DIFR, const FLOAT *Z, const INTEGER *K, const FLOAT *C, const FLOAT *S, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("clals0"); LAPACK_IMPL(clals0)(ICOMPQ, NL, NR, SQRE, NRHS, B, LDB, BX, LDBX, PERM, GIVPTR, GIVCOL, LDGCOL, GIVNUM, LDGNUM, POLES, DIFL, DIFR, Z, K, C, S, RWORK, INFO); } //-- clalsa -------------------------------------------------------------------- void LAPACK_DECL(clalsa)(const INTEGER *ICOMPQ, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *BX, const INTEGER *LDBX, const FLOAT *U, const INTEGER *LDU, const FLOAT *VT, const INTEGER *K, const FLOAT *DIFL, const FLOAT *DIFR, const FLOAT *Z, const FLOAT *POLES, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const INTEGER *PERM, const FLOAT *GIVNUM, const FLOAT *C, const FLOAT *S, FLOAT *RWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("clalsa"); LAPACK_IMPL(clalsa)(ICOMPQ, SMLSIZ, N, NRHS, B, LDB, BX, LDBX, U, LDU, VT, K, DIFL, DIFR, Z, POLES, GIVPTR, GIVCOL, LDGCOL, PERM, GIVNUM, C, S, RWORK, IWORK, INFO); } //-- clalsd -------------------------------------------------------------------- void LAPACK_DECL(clalsd)(const char *UPLO, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT *RCOND, INTEGER *RANK, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("clalsd"); LAPACK_IMPL(clalsd)(UPLO, SMLSIZ, N, NRHS, D, E, B, LDB, RCOND, RANK, WORK, RWORK, IWORK, INFO); } //-- clangb -------------------------------------------------------------------- FLOAT LAPACK_DECL(clangb)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *WORK) { DEBUG_LAPACK_STUB("clangb"); return LAPACK_IMPL(clangb)(NORM, N, KL, KU, AB, LDAB, WORK); } //-- clange -------------------------------------------------------------------- FLOAT LAPACK_DECL(clange)(const char *NORM, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *WORK) { DEBUG_LAPACK_STUB("clange"); return LAPACK_IMPL(clange)(NORM, M, N, A, LDA, WORK); } //-- clangt -------------------------------------------------------------------- FLOAT LAPACK_DECL(clangt)(const char *NORM, const INTEGER *N, const FLOAT_COMPLEX *DL, const FLOAT_COMPLEX *D, const FLOAT_COMPLEX *DU) { DEBUG_LAPACK_STUB("clangt"); return LAPACK_IMPL(clangt)(NORM, N, DL, D, DU); } //-- clanhb -------------------------------------------------------------------- FLOAT LAPACK_DECL(clanhb)(const char *NORM, const char *UPLO, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *WORK) { DEBUG_LAPACK_STUB("clanhb"); return LAPACK_IMPL(clanhb)(NORM, UPLO, N, K, AB, LDAB, WORK); } //-- clanhe -------------------------------------------------------------------- FLOAT LAPACK_DECL(clanhe)(const char *NORM, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *WORK) { DEBUG_LAPACK_STUB("clanhe"); return LAPACK_IMPL(clanhe)(NORM, UPLO, N, A, LDA, WORK); } //-- clanhf -------------------------------------------------------------------- FLOAT LAPACK_DECL(clanhf)(const char *NORM, const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, FLOAT *WORK) { DEBUG_LAPACK_STUB("clanhf"); return LAPACK_IMPL(clanhf)(NORM, TRANSR, UPLO, N, A, WORK); } //-- clanhp -------------------------------------------------------------------- FLOAT LAPACK_DECL(clanhp)(const char *NORM, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT *WORK) { DEBUG_LAPACK_STUB("clanhp"); return LAPACK_IMPL(clanhp)(NORM, UPLO, N, AP, WORK); } //-- clanhs -------------------------------------------------------------------- FLOAT LAPACK_DECL(clanhs)(const char *NORM, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *WORK) { DEBUG_LAPACK_STUB("clanhs"); return LAPACK_IMPL(clanhs)(NORM, N, A, LDA, WORK); } //-- clanht -------------------------------------------------------------------- FLOAT LAPACK_DECL(clanht)(const char *NORM, const INTEGER *N, const FLOAT *D, const FLOAT_COMPLEX *E) { DEBUG_LAPACK_STUB("clanht"); return LAPACK_IMPL(clanht)(NORM, N, D, E); } //-- clansb -------------------------------------------------------------------- FLOAT LAPACK_DECL(clansb)(const char *NORM, const char *UPLO, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *WORK) { DEBUG_LAPACK_STUB("clansb"); return LAPACK_IMPL(clansb)(NORM, UPLO, N, K, AB, LDAB, WORK); } //-- clansp -------------------------------------------------------------------- FLOAT LAPACK_DECL(clansp)(const char *NORM, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT *WORK) { DEBUG_LAPACK_STUB("clansp"); return LAPACK_IMPL(clansp)(NORM, UPLO, N, AP, WORK); } //-- clansy -------------------------------------------------------------------- FLOAT LAPACK_DECL(clansy)(const char *NORM, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *WORK) { DEBUG_LAPACK_STUB("clansy"); return LAPACK_IMPL(clansy)(NORM, UPLO, N, A, LDA, WORK); } //-- clantb -------------------------------------------------------------------- FLOAT LAPACK_DECL(clantb)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *WORK) { DEBUG_LAPACK_STUB("clantb"); return LAPACK_IMPL(clantb)(NORM, UPLO, DIAG, N, K, AB, LDAB, WORK); } //-- clantp -------------------------------------------------------------------- FLOAT LAPACK_DECL(clantp)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT *WORK) { DEBUG_LAPACK_STUB("clantp"); return LAPACK_IMPL(clantp)(NORM, UPLO, DIAG, N, AP, WORK); } //-- clantr -------------------------------------------------------------------- FLOAT LAPACK_DECL(clantr)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *WORK) { DEBUG_LAPACK_STUB("clantr"); return LAPACK_IMPL(clantr)(NORM, UPLO, DIAG, M, N, A, LDA, WORK); } //-- clapll -------------------------------------------------------------------- void LAPACK_DECL(clapll)(const INTEGER *N, FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT_COMPLEX *Y, const INTEGER *INCY, FLOAT *SSMIN) { DEBUG_LAPACK_STUB("clapll"); LAPACK_IMPL(clapll)(N, X, INCX, Y, INCY, SSMIN); } //-- clapmr -------------------------------------------------------------------- void LAPACK_DECL(clapmr)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *X, const INTEGER *LDX, INTEGER *K) { DEBUG_LAPACK_STUB("clapmr"); LAPACK_IMPL(clapmr)(FORWRD, M, N, X, LDX, K); } //-- clapmt -------------------------------------------------------------------- void LAPACK_DECL(clapmt)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *X, const INTEGER *LDX, INTEGER *K) { DEBUG_LAPACK_STUB("clapmt"); LAPACK_IMPL(clapmt)(FORWRD, M, N, X, LDX, K); } //-- claqgb -------------------------------------------------------------------- void LAPACK_DECL(claqgb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT *R, const FLOAT *C, const FLOAT *ROWCND, const FLOAT *COLCND, const FLOAT *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("claqgb"); LAPACK_IMPL(claqgb)(M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND, AMAX, EQUED); } //-- claqge -------------------------------------------------------------------- void LAPACK_DECL(claqge)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *R, const FLOAT *C, const FLOAT *ROWCND, const FLOAT *COLCND, const FLOAT *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("claqge"); LAPACK_IMPL(claqge)(M, N, A, LDA, R, C, ROWCND, COLCND, AMAX, EQUED); } //-- claqhb -------------------------------------------------------------------- void LAPACK_DECL(claqhb)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("claqhb"); LAPACK_IMPL(claqhb)(UPLO, N, KD, AB, LDAB, S, SCOND, AMAX, EQUED); } //-- claqhe -------------------------------------------------------------------- void LAPACK_DECL(claqhe)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("claqhe"); LAPACK_IMPL(claqhe)(UPLO, N, A, LDA, S, SCOND, AMAX, EQUED); } //-- claqhp -------------------------------------------------------------------- void LAPACK_DECL(claqhp)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("claqhp"); LAPACK_IMPL(claqhp)(UPLO, N, AP, S, SCOND, AMAX, EQUED); } //-- claqp2 -------------------------------------------------------------------- void LAPACK_DECL(claqp2)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT_COMPLEX *TAU, FLOAT *VN1, FLOAT *VN2, FLOAT_COMPLEX *WORK) { DEBUG_LAPACK_STUB("claqp2"); LAPACK_IMPL(claqp2)(M, N, OFFSET, A, LDA, JPVT, TAU, VN1, VN2, WORK); } //-- claqps -------------------------------------------------------------------- void LAPACK_DECL(claqps)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, const INTEGER *NB, INTEGER *KB, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT_COMPLEX *TAU, FLOAT *VN1, FLOAT *VN2, FLOAT_COMPLEX *AUXV, FLOAT_COMPLEX *F, const INTEGER *LDF) { DEBUG_LAPACK_STUB("claqps"); LAPACK_IMPL(claqps)(M, N, OFFSET, NB, KB, A, LDA, JPVT, TAU, VN1, VN2, AUXV, F, LDF); } //-- claqr0 -------------------------------------------------------------------- void LAPACK_DECL(claqr0)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *H, const INTEGER *LDH, FLOAT_COMPLEX *W, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("claqr0"); LAPACK_IMPL(claqr0)(WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ, IHIZ, Z, LDZ, WORK, LWORK, INFO); } //-- claqr1 -------------------------------------------------------------------- void LAPACK_DECL(claqr1)(const INTEGER *N, const FLOAT_COMPLEX *H, const INTEGER *LDH, const FLOAT_COMPLEX *S1, const FLOAT_COMPLEX *S2, FLOAT_COMPLEX *V) { DEBUG_LAPACK_STUB("claqr1"); LAPACK_IMPL(claqr1)(N, H, LDH, S1, S2, V); } //-- claqr2 -------------------------------------------------------------------- void LAPACK_DECL(claqr2)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, FLOAT_COMPLEX *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, FLOAT_COMPLEX *SH, FLOAT_COMPLEX *V, const INTEGER *LDV, const INTEGER *NH, FLOAT_COMPLEX *T, const INTEGER *LDT, const INTEGER *NV, FLOAT_COMPLEX *WV, const INTEGER *LDWV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK) { DEBUG_LAPACK_STUB("claqr2"); LAPACK_IMPL(claqr2)(WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT, NV, WV, LDWV, WORK, LWORK); } //-- claqr3 -------------------------------------------------------------------- void LAPACK_DECL(claqr3)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, FLOAT_COMPLEX *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, FLOAT_COMPLEX *SH, FLOAT_COMPLEX *V, const INTEGER *LDV, const INTEGER *NH, FLOAT_COMPLEX *T, const INTEGER *LDT, const INTEGER *NV, FLOAT_COMPLEX *WV, const INTEGER *LDWV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK) { DEBUG_LAPACK_STUB("claqr3"); LAPACK_IMPL(claqr3)(WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT, NV, WV, LDWV, WORK, LWORK); } //-- claqr4 -------------------------------------------------------------------- void LAPACK_DECL(claqr4)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *H, const INTEGER *LDH, FLOAT_COMPLEX *W, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("claqr4"); LAPACK_IMPL(claqr4)(WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ, IHIZ, Z, LDZ, WORK, LWORK, INFO); } //-- claqr5 -------------------------------------------------------------------- void LAPACK_DECL(claqr5)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *KACC22, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NSHFTS, FLOAT_COMPLEX *S, FLOAT_COMPLEX *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *V, const INTEGER *LDV, FLOAT_COMPLEX *U, const INTEGER *LDU, const INTEGER *NV, FLOAT_COMPLEX *WV, const INTEGER *LDWV, const INTEGER *NH, FLOAT_COMPLEX *WH, const INTEGER *LDWH) { DEBUG_LAPACK_STUB("claqr5"); LAPACK_IMPL(claqr5)(WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S, H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV, WV, LDWV, NH, WH, LDWH); } //-- claqsb -------------------------------------------------------------------- void LAPACK_DECL(claqsb)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("claqsb"); LAPACK_IMPL(claqsb)(UPLO, N, KD, AB, LDAB, S, SCOND, AMAX, EQUED); } //-- claqsp -------------------------------------------------------------------- void LAPACK_DECL(claqsp)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("claqsp"); LAPACK_IMPL(claqsp)(UPLO, N, AP, S, SCOND, AMAX, EQUED); } //-- claqsy -------------------------------------------------------------------- void LAPACK_DECL(claqsy)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("claqsy"); LAPACK_IMPL(claqsy)(UPLO, N, A, LDA, S, SCOND, AMAX, EQUED); } //-- clar1v -------------------------------------------------------------------- void LAPACK_DECL(clar1v)(const INTEGER *N, const INTEGER *B1, const INTEGER *BN, const FLOAT *LAMBDA, const FLOAT *D, const FLOAT *L, const FLOAT *LD, const FLOAT *LLD, const FLOAT *PIVMIN, const FLOAT *GAPTOL, FLOAT_COMPLEX *Z, const LOGICAL *WANTNC, INTEGER *NEGCNT, FLOAT *ZTZ, FLOAT *MINGMA, INTEGER *R, INTEGER *ISUPPZ, FLOAT *NRMINV, FLOAT *RESID, FLOAT *RQCORR, FLOAT *WORK) { DEBUG_LAPACK_STUB("clar1v"); LAPACK_IMPL(clar1v)(N, B1, BN, LAMBDA, D, L, LD, LLD, PIVMIN, GAPTOL, Z, WANTNC, NEGCNT, ZTZ, MINGMA, R, ISUPPZ, NRMINV, RESID, RQCORR, WORK); } //-- clar2v -------------------------------------------------------------------- void LAPACK_DECL(clar2v)(const INTEGER *N, FLOAT_COMPLEX *X, FLOAT_COMPLEX *Y, FLOAT_COMPLEX *Z, const INTEGER *INCX, const FLOAT *C, const FLOAT_COMPLEX *S, const INTEGER *INCC) { DEBUG_LAPACK_STUB("clar2v"); LAPACK_IMPL(clar2v)(N, X, Y, Z, INCX, C, S, INCC); } //-- clarcm -------------------------------------------------------------------- void LAPACK_DECL(clarcm)(const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT *RWORK) { DEBUG_LAPACK_STUB("clarcm"); LAPACK_IMPL(clarcm)(M, N, A, LDA, B, LDB, C, LDC, RWORK); } //-- clarf --------------------------------------------------------------------- void LAPACK_DECL(clarf)(const char *SIDE, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *V, const INTEGER *INCV, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK) { DEBUG_LAPACK_STUB("clarf"); LAPACK_IMPL(clarf)(SIDE, M, N, V, INCV, TAU, C, LDC, WORK); } //-- clarfb -------------------------------------------------------------------- void LAPACK_DECL(clarfb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *V, const INTEGER *LDV, const FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LDWORK) { DEBUG_LAPACK_STUB("clarfb"); LAPACK_IMPL(clarfb)(SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV, T, LDT, C, LDC, WORK, LDWORK); } //-- clarfg -------------------------------------------------------------------- void LAPACK_DECL(clarfg)(const INTEGER *N, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT_COMPLEX *TAU) { DEBUG_LAPACK_STUB("clarfg"); LAPACK_IMPL(clarfg)(N, ALPHA, X, INCX, TAU); } //-- clarfgp ------------------------------------------------------------------- void LAPACK_DECL(clarfgp)(const INTEGER *N, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT_COMPLEX *TAU) { DEBUG_LAPACK_STUB("clarfgp"); LAPACK_IMPL(clarfgp)(N, ALPHA, X, INCX, TAU); } //-- clarft -------------------------------------------------------------------- void LAPACK_DECL(clarft)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *V, const INTEGER *LDV, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *T, const INTEGER *LDT) { DEBUG_LAPACK_STUB("clarft"); LAPACK_IMPL(clarft)(DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT); } //-- clarfx -------------------------------------------------------------------- void LAPACK_DECL(clarfx)(const char *SIDE, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *V, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK) { DEBUG_LAPACK_STUB("clarfx"); LAPACK_IMPL(clarfx)(SIDE, M, N, V, TAU, C, LDC, WORK); } //-- clargv -------------------------------------------------------------------- void LAPACK_DECL(clargv)(const INTEGER *N, FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT_COMPLEX *Y, const INTEGER *INCY, FLOAT *C, const INTEGER *INCC) { DEBUG_LAPACK_STUB("clargv"); LAPACK_IMPL(clargv)(N, X, INCX, Y, INCY, C, INCC); } //-- clarnv -------------------------------------------------------------------- void LAPACK_DECL(clarnv)(const INTEGER *IDIST, INTEGER *ISEED, const INTEGER *N, FLOAT_COMPLEX *X) { DEBUG_LAPACK_STUB("clarnv"); LAPACK_IMPL(clarnv)(IDIST, ISEED, N, X); } //-- clarrv -------------------------------------------------------------------- void LAPACK_DECL(clarrv)(const INTEGER *N, const FLOAT *VL, const FLOAT *VU, FLOAT *D, FLOAT *L, const FLOAT *PIVMIN, const INTEGER *ISPLIT, const INTEGER *M, const INTEGER *DOL, const INTEGER *DOU, const FLOAT *MINRGP, const FLOAT *RTOL1, const FLOAT *RTOL2, FLOAT *W, FLOAT *WERR, FLOAT *WGAP, const INTEGER *IBLOCK, const INTEGER *INDEXW, const FLOAT *GERS, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("clarrv"); LAPACK_IMPL(clarrv)(N, VL, VU, D, L, PIVMIN, ISPLIT, M, DOL, DOU, MINRGP, RTOL1, RTOL2, W, WERR, WGAP, IBLOCK, INDEXW, GERS, Z, LDZ, ISUPPZ, WORK, IWORK, INFO); } //-- clarscl2 ------------------------------------------------------------------ void LAPACK_DECL(clarscl2)(const INTEGER *M, const INTEGER *N, const FLOAT *D, FLOAT_COMPLEX *X, const INTEGER *LDX) { DEBUG_LAPACK_STUB("clarscl2"); LAPACK_IMPL(clarscl2)(M, N, D, X, LDX); } //-- clartg -------------------------------------------------------------------- void LAPACK_DECL(clartg)(const FLOAT_COMPLEX *F, const FLOAT_COMPLEX *G, FLOAT *CS, FLOAT_COMPLEX *SN, FLOAT_COMPLEX *R) { DEBUG_LAPACK_STUB("clartg"); LAPACK_IMPL(clartg)(F, G, CS, SN, R); } //-- clartv -------------------------------------------------------------------- void LAPACK_DECL(clartv)(const INTEGER *N, FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT_COMPLEX *Y, const INTEGER *INCY, const FLOAT *C, const FLOAT_COMPLEX *S, const INTEGER *INCC) { DEBUG_LAPACK_STUB("clartv"); LAPACK_IMPL(clartv)(N, X, INCX, Y, INCY, C, S, INCC); } //-- clarz --------------------------------------------------------------------- void LAPACK_DECL(clarz)(const char *SIDE, const INTEGER *M, const INTEGER *N, const INTEGER *L, const FLOAT_COMPLEX *V, const INTEGER *INCV, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK) { DEBUG_LAPACK_STUB("clarz"); LAPACK_IMPL(clarz)(SIDE, M, N, L, V, INCV, TAU, C, LDC, WORK); } //-- clarzb -------------------------------------------------------------------- void LAPACK_DECL(clarzb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const FLOAT_COMPLEX *V, const INTEGER *LDV, const FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LDWORK) { DEBUG_LAPACK_STUB("clarzb"); LAPACK_IMPL(clarzb)(SIDE, TRANS, DIRECT, STOREV, M, N, K, L, V, LDV, T, LDT, C, LDC, WORK, LDWORK); } //-- clarzt -------------------------------------------------------------------- void LAPACK_DECL(clarzt)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *V, const INTEGER *LDV, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *T, const INTEGER *LDT) { DEBUG_LAPACK_STUB("clarzt"); LAPACK_IMPL(clarzt)(DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT); } //-- clascl -------------------------------------------------------------------- void LAPACK_DECL(clascl)(const char *TYPE, const INTEGER *KL, const INTEGER *KU, const FLOAT *CFROM, const FLOAT *CTO, const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("clascl"); LAPACK_IMPL(clascl)(TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO); } //-- clascl2 ------------------------------------------------------------------- void LAPACK_DECL(clascl2)(const INTEGER *M, const INTEGER *N, const FLOAT *D, FLOAT_COMPLEX *X, const INTEGER *LDX) { DEBUG_LAPACK_STUB("clascl2"); LAPACK_IMPL(clascl2)(M, N, D, X, LDX); } //-- claset -------------------------------------------------------------------- void LAPACK_DECL(claset)(const char *UPLO, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *ALPHA, const FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("claset"); LAPACK_IMPL(claset)(UPLO, M, N, ALPHA, BETA, A, LDA); } //-- clasr --------------------------------------------------------------------- void LAPACK_DECL(clasr)(const char *SIDE, const char *PIVOT, const char *DIRECT, const INTEGER *M, const INTEGER *N, const FLOAT *C, const FLOAT *S, FLOAT_COMPLEX *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("clasr"); LAPACK_IMPL(clasr)(SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA); } //-- classq -------------------------------------------------------------------- void LAPACK_DECL(classq)(const INTEGER *N, const FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT *SCALE, FLOAT *SUMSQ) { DEBUG_LAPACK_STUB("classq"); LAPACK_IMPL(classq)(N, X, INCX, SCALE, SUMSQ); } //-- claswp -------------------------------------------------------------------- void LAPACK_DECL(claswp)(const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *K1, const INTEGER *K2, const INTEGER *IPIV, const INTEGER *INCX) { DEBUG_LAPACK_STUB("claswp"); LAPACK_IMPL(claswp)(N, A, LDA, K1, K2, IPIV, INCX); } //-- clasyf -------------------------------------------------------------------- void LAPACK_DECL(clasyf)(const char *UPLO, const INTEGER *N, const INTEGER *NB, INTEGER *KB, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT_COMPLEX *W, const INTEGER *LDW, INTEGER *INFO) { DEBUG_LAPACK_STUB("clasyf"); LAPACK_IMPL(clasyf)(UPLO, N, NB, KB, A, LDA, IPIV, W, LDW, INFO); } //-- clatbs -------------------------------------------------------------------- void LAPACK_DECL(clatbs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const INTEGER *KD, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *X, FLOAT *SCALE, FLOAT *CNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("clatbs"); LAPACK_IMPL(clatbs)(UPLO, TRANS, DIAG, NORMIN, N, KD, AB, LDAB, X, SCALE, CNORM, INFO); } //-- clatdf -------------------------------------------------------------------- void LAPACK_DECL(clatdf)(const INTEGER *IJOB, const INTEGER *N, const FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *RHS, FLOAT *RDSUM, FLOAT *RDSCAL, const INTEGER *IPIV, const INTEGER *JPIV) { DEBUG_LAPACK_STUB("clatdf"); LAPACK_IMPL(clatdf)(IJOB, N, Z, LDZ, RHS, RDSUM, RDSCAL, IPIV, JPIV); } //-- clatps -------------------------------------------------------------------- void LAPACK_DECL(clatps)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT_COMPLEX *X, FLOAT *SCALE, FLOAT *CNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("clatps"); LAPACK_IMPL(clatps)(UPLO, TRANS, DIAG, NORMIN, N, AP, X, SCALE, CNORM, INFO); } //-- clatrd -------------------------------------------------------------------- void LAPACK_DECL(clatrd)(const char *UPLO, const INTEGER *N, const INTEGER *NB, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *E, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *W, const INTEGER *LDW) { DEBUG_LAPACK_STUB("clatrd"); LAPACK_IMPL(clatrd)(UPLO, N, NB, A, LDA, E, TAU, W, LDW); } //-- clatrs -------------------------------------------------------------------- void LAPACK_DECL(clatrs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *X, FLOAT *SCALE, FLOAT *CNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("clatrs"); LAPACK_IMPL(clatrs)(UPLO, TRANS, DIAG, NORMIN, N, A, LDA, X, SCALE, CNORM, INFO); } //-- clatrz -------------------------------------------------------------------- void LAPACK_DECL(clatrz)(const INTEGER *M, const INTEGER *N, const INTEGER *L, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK) { DEBUG_LAPACK_STUB("clatrz"); LAPACK_IMPL(clatrz)(M, N, L, A, LDA, TAU, WORK); } //-- clatzm -------------------------------------------------------------------- void LAPACK_DECL(clatzm)(const char *SIDE, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *V, const INTEGER *INCV, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C1, FLOAT_COMPLEX *C2, const INTEGER *LDC, FLOAT_COMPLEX *WORK) { DEBUG_LAPACK_STUB("clatzm"); LAPACK_IMPL(clatzm)(SIDE, M, N, V, INCV, TAU, C1, C2, LDC, WORK); } //-- clauu2 -------------------------------------------------------------------- void LAPACK_DECL(clauu2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("clauu2"); LAPACK_IMPL(clauu2)(UPLO, N, A, LDA, INFO); } //-- clauum -------------------------------------------------------------------- void LAPACK_DECL(clauum)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("clauum"); LAPACK_IMPL(clauum)(UPLO, N, A, LDA, INFO); } //-- cpbcon -------------------------------------------------------------------- void LAPACK_DECL(cpbcon)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpbcon"); LAPACK_IMPL(cpbcon)(UPLO, N, KD, AB, LDAB, ANORM, RCOND, WORK, RWORK, INFO); } //-- cpbequ -------------------------------------------------------------------- void LAPACK_DECL(cpbequ)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpbequ"); LAPACK_IMPL(cpbequ)(UPLO, N, KD, AB, LDAB, S, SCOND, AMAX, INFO); } //-- cpbrfs -------------------------------------------------------------------- void LAPACK_DECL(cpbrfs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpbrfs"); LAPACK_IMPL(cpbrfs)(UPLO, N, KD, NRHS, AB, LDAB, AFB, LDAFB, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- cpbstf -------------------------------------------------------------------- void LAPACK_DECL(cpbstf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpbstf"); LAPACK_IMPL(cpbstf)(UPLO, N, KD, AB, LDAB, INFO); } //-- cpbsv --------------------------------------------------------------------- void LAPACK_DECL(cpbsv)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpbsv"); LAPACK_IMPL(cpbsv)(UPLO, N, KD, NRHS, AB, LDAB, B, LDB, INFO); } //-- cpbsvx -------------------------------------------------------------------- void LAPACK_DECL(cpbsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, char *EQUED, FLOAT *S, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpbsvx"); LAPACK_IMPL(cpbsvx)(FACT, UPLO, N, KD, NRHS, AB, LDAB, AFB, LDAFB, EQUED, S, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- cpbtf2 -------------------------------------------------------------------- void LAPACK_DECL(cpbtf2)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpbtf2"); LAPACK_IMPL(cpbtf2)(UPLO, N, KD, AB, LDAB, INFO); } //-- cpbtrf -------------------------------------------------------------------- void LAPACK_DECL(cpbtrf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpbtrf"); LAPACK_IMPL(cpbtrf)(UPLO, N, KD, AB, LDAB, INFO); } //-- cpbtrs -------------------------------------------------------------------- void LAPACK_DECL(cpbtrs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpbtrs"); LAPACK_IMPL(cpbtrs)(UPLO, N, KD, NRHS, AB, LDAB, B, LDB, INFO); } //-- cpftrf -------------------------------------------------------------------- void LAPACK_DECL(cpftrf)(const char *TRANSR, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpftrf"); LAPACK_IMPL(cpftrf)(TRANSR, UPLO, N, A, INFO); } //-- cpftri -------------------------------------------------------------------- void LAPACK_DECL(cpftri)(const char *TRANSR, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpftri"); LAPACK_IMPL(cpftri)(TRANSR, UPLO, N, A, INFO); } //-- cpftrs -------------------------------------------------------------------- void LAPACK_DECL(cpftrs)(const char *TRANSR, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpftrs"); LAPACK_IMPL(cpftrs)(TRANSR, UPLO, N, NRHS, A, B, LDB, INFO); } //-- cpocon -------------------------------------------------------------------- void LAPACK_DECL(cpocon)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpocon"); LAPACK_IMPL(cpocon)(UPLO, N, A, LDA, ANORM, RCOND, WORK, RWORK, INFO); } //-- cpoequ -------------------------------------------------------------------- void LAPACK_DECL(cpoequ)(const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpoequ"); LAPACK_IMPL(cpoequ)(N, A, LDA, S, SCOND, AMAX, INFO); } //-- cpoequb ------------------------------------------------------------------- void LAPACK_DECL(cpoequb)(const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpoequb"); LAPACK_IMPL(cpoequb)(N, A, LDA, S, SCOND, AMAX, INFO); } //-- cporfs -------------------------------------------------------------------- void LAPACK_DECL(cporfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cporfs"); LAPACK_IMPL(cporfs)(UPLO, N, NRHS, A, LDA, AF, LDAF, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- cporfsx ------------------------------------------------------------------- void LAPACK_DECL(cporfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, FLOAT *S, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cporfsx"); LAPACK_IMPL(cporfsx)(UPLO, EQUED, N, NRHS, A, LDA, AF, LDAF, S, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- cposv --------------------------------------------------------------------- void LAPACK_DECL(cposv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cposv"); LAPACK_IMPL(cposv)(UPLO, N, NRHS, A, LDA, B, LDB, INFO); } //-- cposvx -------------------------------------------------------------------- void LAPACK_DECL(cposvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, char *EQUED, FLOAT *S, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cposvx"); LAPACK_IMPL(cposvx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, EQUED, S, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- cposvxx ------------------------------------------------------------------- void LAPACK_DECL(cposvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, char *EQUED, FLOAT *S, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cposvxx"); LAPACK_IMPL(cposvxx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, EQUED, S, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- cpotf2 -------------------------------------------------------------------- void LAPACK_DECL(cpotf2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpotf2"); LAPACK_IMPL(cpotf2)(UPLO, N, A, LDA, INFO); } //-- cpotrf -------------------------------------------------------------------- void LAPACK_DECL(cpotrf)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpotrf"); LAPACK_IMPL(cpotrf)(UPLO, N, A, LDA, INFO); } //-- cpotri -------------------------------------------------------------------- void LAPACK_DECL(cpotri)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpotri"); LAPACK_IMPL(cpotri)(UPLO, N, A, LDA, INFO); } //-- cpotrs -------------------------------------------------------------------- void LAPACK_DECL(cpotrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpotrs"); LAPACK_IMPL(cpotrs)(UPLO, N, NRHS, A, LDA, B, LDB, INFO); } //-- cppcon -------------------------------------------------------------------- void LAPACK_DECL(cppcon)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cppcon"); LAPACK_IMPL(cppcon)(UPLO, N, AP, ANORM, RCOND, WORK, RWORK, INFO); } //-- cppequ -------------------------------------------------------------------- void LAPACK_DECL(cppequ)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("cppequ"); LAPACK_IMPL(cppequ)(UPLO, N, AP, S, SCOND, AMAX, INFO); } //-- cpprfs -------------------------------------------------------------------- void LAPACK_DECL(cpprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *AFP, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpprfs"); LAPACK_IMPL(cpprfs)(UPLO, N, NRHS, AP, AFP, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- cppsv --------------------------------------------------------------------- void LAPACK_DECL(cppsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *AP, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cppsv"); LAPACK_IMPL(cppsv)(UPLO, N, NRHS, AP, B, LDB, INFO); } //-- cppsvx -------------------------------------------------------------------- void LAPACK_DECL(cppsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *AP, FLOAT_COMPLEX *AFP, char *EQUED, FLOAT *S, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cppsvx"); LAPACK_IMPL(cppsvx)(FACT, UPLO, N, NRHS, AP, AFP, EQUED, S, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- cpptrf -------------------------------------------------------------------- void LAPACK_DECL(cpptrf)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpptrf"); LAPACK_IMPL(cpptrf)(UPLO, N, AP, INFO); } //-- cpptri -------------------------------------------------------------------- void LAPACK_DECL(cpptri)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpptri"); LAPACK_IMPL(cpptri)(UPLO, N, AP, INFO); } //-- cpptrs -------------------------------------------------------------------- void LAPACK_DECL(cpptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpptrs"); LAPACK_IMPL(cpptrs)(UPLO, N, NRHS, AP, B, LDB, INFO); } //-- cpstf2 -------------------------------------------------------------------- void LAPACK_DECL(cpstf2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const FLOAT *TOL, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpstf2"); LAPACK_IMPL(cpstf2)(UPLO, N, A, LDA, PIV, RANK, TOL, WORK, INFO); } //-- cpstrf -------------------------------------------------------------------- void LAPACK_DECL(cpstrf)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const FLOAT *TOL, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpstrf"); LAPACK_IMPL(cpstrf)(UPLO, N, A, LDA, PIV, RANK, TOL, WORK, INFO); } //-- cptcon -------------------------------------------------------------------- void LAPACK_DECL(cptcon)(const INTEGER *N, const FLOAT *D, const FLOAT_COMPLEX *E, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cptcon"); LAPACK_IMPL(cptcon)(N, D, E, ANORM, RCOND, RWORK, INFO); } //-- cpteqr -------------------------------------------------------------------- void LAPACK_DECL(cpteqr)(const char *COMPZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpteqr"); LAPACK_IMPL(cpteqr)(COMPZ, N, D, E, Z, LDZ, WORK, INFO); } //-- cptrfs -------------------------------------------------------------------- void LAPACK_DECL(cptrfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT_COMPLEX *E, const FLOAT *DF, const FLOAT_COMPLEX *EF, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cptrfs"); LAPACK_IMPL(cptrfs)(UPLO, N, NRHS, D, E, DF, EF, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- cptsv --------------------------------------------------------------------- void LAPACK_DECL(cptsv)(const INTEGER *N, const INTEGER *NRHS, FLOAT *D, FLOAT_COMPLEX *E, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cptsv"); LAPACK_IMPL(cptsv)(N, NRHS, D, E, B, LDB, INFO); } //-- cptsvx -------------------------------------------------------------------- void LAPACK_DECL(cptsvx)(const char *FACT, const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT_COMPLEX *E, FLOAT *DF, FLOAT_COMPLEX *EF, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cptsvx"); LAPACK_IMPL(cptsvx)(FACT, N, NRHS, D, E, DF, EF, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- cpttrf -------------------------------------------------------------------- void LAPACK_DECL(cpttrf)(const INTEGER *N, FLOAT *D, FLOAT_COMPLEX *E, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpttrf"); LAPACK_IMPL(cpttrf)(N, D, E, INFO); } //-- cpttrs -------------------------------------------------------------------- void LAPACK_DECL(cpttrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT_COMPLEX *E, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cpttrs"); LAPACK_IMPL(cpttrs)(UPLO, N, NRHS, D, E, B, LDB, INFO); } //-- cptts2 -------------------------------------------------------------------- void LAPACK_DECL(cptts2)(const INTEGER *IUPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT_COMPLEX *E, FLOAT_COMPLEX *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("cptts2"); LAPACK_IMPL(cptts2)(IUPLO, N, NRHS, D, E, B, LDB); } //-- crot ---------------------------------------------------------------------- void LAPACK_DECL(crot)(const INTEGER *N, FLOAT_COMPLEX *CX, const INTEGER *INCX, FLOAT_COMPLEX *CY, const INTEGER *INCY, const FLOAT *C, const FLOAT_COMPLEX *S) { DEBUG_LAPACK_STUB("crot"); LAPACK_IMPL(crot)(N, CX, INCX, CY, INCY, C, S); } //-- cspcon -------------------------------------------------------------------- void LAPACK_DECL(cspcon)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cspcon"); LAPACK_IMPL(cspcon)(UPLO, N, AP, IPIV, ANORM, RCOND, WORK, INFO); } //-- cspmv --------------------------------------------------------------------- void LAPACK_DECL(cspmv)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *ALPHA, const FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *X, const INTEGER *INCX, const FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("cspmv"); LAPACK_IMPL(cspmv)(UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY); } //-- cspr ---------------------------------------------------------------------- void LAPACK_DECL(cspr)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *ALPHA, const FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT_COMPLEX *AP) { DEBUG_LAPACK_STUB("cspr"); LAPACK_IMPL(cspr)(UPLO, N, ALPHA, X, INCX, AP); } //-- csprfs -------------------------------------------------------------------- void LAPACK_DECL(csprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *AFP, const INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("csprfs"); LAPACK_IMPL(csprfs)(UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- cspsv --------------------------------------------------------------------- void LAPACK_DECL(cspsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *AP, INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("cspsv"); LAPACK_IMPL(cspsv)(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO); } //-- cspsvx -------------------------------------------------------------------- void LAPACK_DECL(cspsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, FLOAT_COMPLEX *AFP, INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cspsvx"); LAPACK_IMPL(cspsvx)(FACT, UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- csptrf -------------------------------------------------------------------- void LAPACK_DECL(csptrf)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("csptrf"); LAPACK_IMPL(csptrf)(UPLO, N, AP, IPIV, INFO); } //-- csptri -------------------------------------------------------------------- void LAPACK_DECL(csptri)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("csptri"); LAPACK_IMPL(csptri)(UPLO, N, AP, IPIV, WORK, INFO); } //-- csptrs -------------------------------------------------------------------- void LAPACK_DECL(csptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("csptrs"); LAPACK_IMPL(csptrs)(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO); } //-- csrscl -------------------------------------------------------------------- void LAPACK_DECL(csrscl)(const INTEGER *N, const FLOAT *SA, FLOAT_COMPLEX *SX, const INTEGER *INCX) { DEBUG_LAPACK_STUB("csrscl"); LAPACK_IMPL(csrscl)(N, SA, SX, INCX); } //-- cstedc -------------------------------------------------------------------- void LAPACK_DECL(cstedc)(const char *COMPZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cstedc"); LAPACK_IMPL(cstedc)(COMPZ, N, D, E, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- cstegr -------------------------------------------------------------------- void LAPACK_DECL(cstegr)(const char *JOBZ, const char *RANGE, const INTEGER *N, FLOAT *D, FLOAT *E, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cstegr"); LAPACK_IMPL(cstegr)(JOBZ, RANGE, N, D, E, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- cstein -------------------------------------------------------------------- void LAPACK_DECL(cstein)(const INTEGER *N, const FLOAT *D, const FLOAT *E, const INTEGER *M, const FLOAT *W, const INTEGER *IBLOCK, const INTEGER *ISPLIT, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("cstein"); LAPACK_IMPL(cstein)(N, D, E, M, W, IBLOCK, ISPLIT, Z, LDZ, WORK, IWORK, IFAIL, INFO); } //-- cstemr -------------------------------------------------------------------- void LAPACK_DECL(cstemr)(const char *JOBZ, const char *RANGE, const INTEGER *N, FLOAT *D, FLOAT *E, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, const INTEGER *NZC, INTEGER *ISUPPZ, LOGICAL *TRYRAC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cstemr"); LAPACK_IMPL(cstemr)(JOBZ, RANGE, N, D, E, VL, VU, IL, IU, M, W, Z, LDZ, NZC, ISUPPZ, TRYRAC, WORK, LWORK, IWORK, LIWORK, INFO); } //-- csteqr -------------------------------------------------------------------- void LAPACK_DECL(csteqr)(const char *COMPZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("csteqr"); LAPACK_IMPL(csteqr)(COMPZ, N, D, E, Z, LDZ, WORK, INFO); } //-- csycon -------------------------------------------------------------------- void LAPACK_DECL(csycon)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("csycon"); LAPACK_IMPL(csycon)(UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK, INFO); } //-- csyconv ------------------------------------------------------------------- void LAPACK_DECL(csyconv)(const char *UPLO, const char *WAY, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("csyconv"); LAPACK_IMPL(csyconv)(UPLO, WAY, N, A, LDA, IPIV, WORK, INFO); } //-- csyequb ------------------------------------------------------------------- void LAPACK_DECL(csyequb)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("csyequb"); LAPACK_IMPL(csyequb)(UPLO, N, A, LDA, S, SCOND, AMAX, WORK, INFO); } //-- csymv --------------------------------------------------------------------- void LAPACK_DECL(csymv)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *ALPHA, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *X, const INTEGER *INCX, const FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("csymv"); LAPACK_IMPL(csymv)(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY); } //-- csyr ---------------------------------------------------------------------- void LAPACK_DECL(csyr)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *ALPHA, const FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT_COMPLEX *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("csyr"); LAPACK_IMPL(csyr)(UPLO, N, ALPHA, X, INCX, A, LDA); } //-- csyrfs -------------------------------------------------------------------- void LAPACK_DECL(csyrfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("csyrfs"); LAPACK_IMPL(csyrfs)(UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- csyrfsx ------------------------------------------------------------------- void LAPACK_DECL(csyrfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, FLOAT *S, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("csyrfsx"); LAPACK_IMPL(csyrfsx)(UPLO, EQUED, N, NRHS, A, LDA, AF, LDAF, IPIV, S, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- csysv --------------------------------------------------------------------- void LAPACK_DECL(csysv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("csysv"); LAPACK_IMPL(csysv)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO); } //-- csysvx -------------------------------------------------------------------- void LAPACK_DECL(csysvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("csysvx"); LAPACK_IMPL(csysvx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, LWORK, RWORK, INFO); } //-- csysvxx ------------------------------------------------------------------- void LAPACK_DECL(csysvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, FLOAT *S, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("csysvxx"); LAPACK_IMPL(csysvxx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, EQUED, S, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- csyswapr ------------------------------------------------------------------ void LAPACK_DECL(csyswapr)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *I1, const INTEGER *I2) { DEBUG_LAPACK_STUB("csyswapr"); LAPACK_IMPL(csyswapr)(UPLO, N, A, LDA, I1, I2); } //-- csytf2 -------------------------------------------------------------------- void LAPACK_DECL(csytf2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("csytf2"); LAPACK_IMPL(csytf2)(UPLO, N, A, LDA, IPIV, INFO); } //-- csytrf -------------------------------------------------------------------- void LAPACK_DECL(csytrf)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("csytrf"); LAPACK_IMPL(csytrf)(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- csytri -------------------------------------------------------------------- void LAPACK_DECL(csytri)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("csytri"); LAPACK_IMPL(csytri)(UPLO, N, A, LDA, IPIV, WORK, INFO); } //-- csytri2 ------------------------------------------------------------------- void LAPACK_DECL(csytri2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("csytri2"); LAPACK_IMPL(csytri2)(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- csytri2x ------------------------------------------------------------------ void LAPACK_DECL(csytri2x)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, const INTEGER *NB, INTEGER *INFO) { DEBUG_LAPACK_STUB("csytri2x"); LAPACK_IMPL(csytri2x)(UPLO, N, A, LDA, IPIV, WORK, NB, INFO); } //-- csytrs -------------------------------------------------------------------- void LAPACK_DECL(csytrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("csytrs"); LAPACK_IMPL(csytrs)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO); } //-- csytrs2 ------------------------------------------------------------------- void LAPACK_DECL(csytrs2)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("csytrs2"); LAPACK_IMPL(csytrs2)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, INFO); } //-- ctbcon -------------------------------------------------------------------- void LAPACK_DECL(ctbcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *KD, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctbcon"); LAPACK_IMPL(ctbcon)(NORM, UPLO, DIAG, N, KD, AB, LDAB, RCOND, WORK, RWORK, INFO); } //-- ctbrfs -------------------------------------------------------------------- void LAPACK_DECL(ctbrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctbrfs"); LAPACK_IMPL(ctbrfs)(UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- ctbtrs -------------------------------------------------------------------- void LAPACK_DECL(ctbtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctbtrs"); LAPACK_IMPL(ctbtrs)(UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, B, LDB, INFO); } //-- ctfsm --------------------------------------------------------------------- void LAPACK_DECL(ctfsm)(const char *TRANSR, const char *SIDE, const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *ALPHA, const FLOAT_COMPLEX *A, FLOAT_COMPLEX *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("ctfsm"); LAPACK_IMPL(ctfsm)(TRANSR, SIDE, UPLO, TRANS, DIAG, M, N, ALPHA, A, B, LDB); } //-- ctftri -------------------------------------------------------------------- void LAPACK_DECL(ctftri)(const char *TRANSR, const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT_COMPLEX *A, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctftri"); LAPACK_IMPL(ctftri)(TRANSR, UPLO, DIAG, N, A, INFO); } //-- ctfttp -------------------------------------------------------------------- void LAPACK_DECL(ctfttp)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *ARF, FLOAT_COMPLEX *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctfttp"); LAPACK_IMPL(ctfttp)(TRANSR, UPLO, N, ARF, AP, INFO); } //-- ctfttr -------------------------------------------------------------------- void LAPACK_DECL(ctfttr)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *ARF, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctfttr"); LAPACK_IMPL(ctfttr)(TRANSR, UPLO, N, ARF, A, LDA, INFO); } //-- ctgevc -------------------------------------------------------------------- void LAPACK_DECL(ctgevc)(const char *SIDE, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const FLOAT_COMPLEX *S, const INTEGER *LDS, const FLOAT_COMPLEX *P, const INTEGER *LDP, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctgevc"); LAPACK_IMPL(ctgevc)(SIDE, HOWMNY, SELECT, N, S, LDS, P, LDP, VL, LDVL, VR, LDVR, MM, M, WORK, RWORK, INFO); } //-- ctgex2 -------------------------------------------------------------------- void LAPACK_DECL(ctgex2)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, const INTEGER *J1, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctgex2"); LAPACK_IMPL(ctgex2)(WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, J1, INFO); } //-- ctgexc -------------------------------------------------------------------- void LAPACK_DECL(ctgexc)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, const INTEGER *IFST, INTEGER *ILST, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctgexc"); LAPACK_IMPL(ctgexc)(WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, IFST, ILST, INFO); } //-- ctgsen -------------------------------------------------------------------- void LAPACK_DECL(ctgsen)(const INTEGER *IJOB, const LOGICAL *WANTQ, const LOGICAL *WANTZ, const LOGICAL *SELECT, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *M, FLOAT *PL, FLOAT *PR, FLOAT *DIF, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctgsen"); LAPACK_IMPL(ctgsen)(IJOB, WANTQ, WANTZ, SELECT, N, A, LDA, B, LDB, ALPHA, BETA, Q, LDQ, Z, LDZ, M, PL, PR, DIF, WORK, LWORK, IWORK, LIWORK, INFO); } //-- ctgsja -------------------------------------------------------------------- void LAPACK_DECL(ctgsja)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, const INTEGER *K, const INTEGER *L, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT *TOLA, const FLOAT *TOLB, FLOAT *ALPHA, FLOAT *BETA, FLOAT_COMPLEX *U, const INTEGER *LDU, FLOAT_COMPLEX *V, const INTEGER *LDV, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *WORK, INTEGER *NCYCLE, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctgsja"); LAPACK_IMPL(ctgsja)(JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B, LDB, TOLA, TOLB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, NCYCLE, INFO); } //-- ctgsna -------------------------------------------------------------------- void LAPACK_DECL(ctgsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT_COMPLEX *VL, const INTEGER *LDVL, const FLOAT_COMPLEX *VR, const INTEGER *LDVR, FLOAT *S, FLOAT *DIF, const INTEGER *MM, INTEGER *M, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctgsna"); LAPACK_IMPL(ctgsna)(JOB, HOWMNY, SELECT, N, A, LDA, B, LDB, VL, LDVL, VR, LDVR, S, DIF, MM, M, WORK, LWORK, IWORK, INFO); } //-- ctgsy2 -------------------------------------------------------------------- void LAPACK_DECL(ctgsy2)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *C, const INTEGER *LDC, const FLOAT_COMPLEX *D, const INTEGER *LDD, const FLOAT_COMPLEX *E, const INTEGER *LDE, FLOAT_COMPLEX *F, const INTEGER *LDF, FLOAT *SCALE, FLOAT *RDSUM, FLOAT *RDSCAL, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctgsy2"); LAPACK_IMPL(ctgsy2)(TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D, LDD, E, LDE, F, LDF, SCALE, RDSUM, RDSCAL, INFO); } //-- ctgsyl -------------------------------------------------------------------- void LAPACK_DECL(ctgsyl)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *C, const INTEGER *LDC, const FLOAT_COMPLEX *D, const INTEGER *LDD, const FLOAT_COMPLEX *E, const INTEGER *LDE, FLOAT_COMPLEX *F, const INTEGER *LDF, FLOAT *SCALE, FLOAT *DIF, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctgsyl"); LAPACK_IMPL(ctgsyl)(TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D, LDD, E, LDE, F, LDF, SCALE, DIF, WORK, LWORK, IWORK, INFO); } //-- ctpcon -------------------------------------------------------------------- void LAPACK_DECL(ctpcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctpcon"); LAPACK_IMPL(ctpcon)(NORM, UPLO, DIAG, N, AP, RCOND, WORK, RWORK, INFO); } //-- ctprfs -------------------------------------------------------------------- void LAPACK_DECL(ctprfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctprfs"); LAPACK_IMPL(ctprfs)(UPLO, TRANS, DIAG, N, NRHS, AP, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- ctptri -------------------------------------------------------------------- void LAPACK_DECL(ctptri)(const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT_COMPLEX *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctptri"); LAPACK_IMPL(ctptri)(UPLO, DIAG, N, AP, INFO); } //-- ctptrs -------------------------------------------------------------------- void LAPACK_DECL(ctptrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctptrs"); LAPACK_IMPL(ctptrs)(UPLO, TRANS, DIAG, N, NRHS, AP, B, LDB, INFO); } //-- ctpttf -------------------------------------------------------------------- void LAPACK_DECL(ctpttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT_COMPLEX *ARF, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctpttf"); LAPACK_IMPL(ctpttf)(TRANSR, UPLO, N, AP, ARF, INFO); } //-- ctpttr -------------------------------------------------------------------- void LAPACK_DECL(ctpttr)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctpttr"); LAPACK_IMPL(ctpttr)(UPLO, N, AP, A, LDA, INFO); } //-- ctrcon -------------------------------------------------------------------- void LAPACK_DECL(ctrcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctrcon"); LAPACK_IMPL(ctrcon)(NORM, UPLO, DIAG, N, A, LDA, RCOND, WORK, RWORK, INFO); } //-- ctrevc -------------------------------------------------------------------- void LAPACK_DECL(ctrevc)(const char *SIDE, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctrevc"); LAPACK_IMPL(ctrevc)(SIDE, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR, LDVR, MM, M, WORK, RWORK, INFO); } //-- ctrexc -------------------------------------------------------------------- void LAPACK_DECL(ctrexc)(const char *COMPQ, const INTEGER *N, FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *Q, const INTEGER *LDQ, const INTEGER *IFST, const INTEGER *ILST, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctrexc"); LAPACK_IMPL(ctrexc)(COMPQ, N, T, LDT, Q, LDQ, IFST, ILST, INFO); } //-- ctrrfs -------------------------------------------------------------------- void LAPACK_DECL(ctrrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctrrfs"); LAPACK_IMPL(ctrrfs)(UPLO, TRANS, DIAG, N, NRHS, A, LDA, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- ctrsen -------------------------------------------------------------------- void LAPACK_DECL(ctrsen)(const char *JOB, const char *COMPQ, const LOGICAL *SELECT, const INTEGER *N, FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *W, INTEGER *M, FLOAT *S, FLOAT *SEP, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctrsen"); LAPACK_IMPL(ctrsen)(JOB, COMPQ, SELECT, N, T, LDT, Q, LDQ, W, M, S, SEP, WORK, LWORK, INFO); } //-- ctrsna -------------------------------------------------------------------- void LAPACK_DECL(ctrsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const FLOAT_COMPLEX *T, const INTEGER *LDT, const FLOAT_COMPLEX *VL, const INTEGER *LDVL, const FLOAT_COMPLEX *VR, const INTEGER *LDVR, FLOAT *S, FLOAT *SEP, const INTEGER *MM, INTEGER *M, FLOAT_COMPLEX *WORK, const INTEGER *LDWORK, FLOAT *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctrsna"); LAPACK_IMPL(ctrsna)(JOB, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR, LDVR, S, SEP, MM, M, WORK, LDWORK, RWORK, INFO); } //-- ctrsyl -------------------------------------------------------------------- void LAPACK_DECL(ctrsyl)(const char *TRANA, const char *TRANB, const INTEGER *ISGN, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT *SCALE, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctrsyl"); LAPACK_IMPL(ctrsyl)(TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C, LDC, SCALE, INFO); } //-- ctrti2 -------------------------------------------------------------------- void LAPACK_DECL(ctrti2)(const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctrti2"); LAPACK_IMPL(ctrti2)(UPLO, DIAG, N, A, LDA, INFO); } //-- ctrtri -------------------------------------------------------------------- void LAPACK_DECL(ctrtri)(const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctrtri"); LAPACK_IMPL(ctrtri)(UPLO, DIAG, N, A, LDA, INFO); } //-- ctrtrs -------------------------------------------------------------------- void LAPACK_DECL(ctrtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctrtrs"); LAPACK_IMPL(ctrtrs)(UPLO, TRANS, DIAG, N, NRHS, A, LDA, B, LDB, INFO); } //-- ctrttf -------------------------------------------------------------------- void LAPACK_DECL(ctrttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *ARF, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctrttf"); LAPACK_IMPL(ctrttf)(TRANSR, UPLO, N, A, LDA, ARF, INFO); } //-- ctrttp -------------------------------------------------------------------- void LAPACK_DECL(ctrttp)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctrttp"); LAPACK_IMPL(ctrttp)(UPLO, N, A, LDA, AP, INFO); } //-- ctzrqf -------------------------------------------------------------------- void LAPACK_DECL(ctzrqf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctzrqf"); LAPACK_IMPL(ctzrqf)(M, N, A, LDA, TAU, INFO); } //-- ctzrzf -------------------------------------------------------------------- void LAPACK_DECL(ctzrzf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ctzrzf"); LAPACK_IMPL(ctzrzf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- cunbdb -------------------------------------------------------------------- void LAPACK_DECL(cunbdb)(const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, FLOAT_COMPLEX *X11, const INTEGER *LDX11, FLOAT_COMPLEX *X12, const INTEGER *LDX12, FLOAT_COMPLEX *X21, const INTEGER *LDX21, FLOAT_COMPLEX *X22, const INTEGER *LDX22, FLOAT *THETA, FLOAT *PHI, FLOAT_COMPLEX *TAUP1, FLOAT_COMPLEX *TAUP2, FLOAT_COMPLEX *TAUQ1, FLOAT_COMPLEX *TAUQ2, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunbdb"); LAPACK_IMPL(cunbdb)(TRANS, SIGNS, M, P, Q, X11, LDX11, X12, LDX12, X21, LDX21, X22, LDX22, THETA, PHI, TAUP1, TAUP2, TAUQ1, TAUQ2, WORK, LWORK, INFO); } //-- cuncsd -------------------------------------------------------------------- void LAPACK_DECL(cuncsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, const FLOAT_COMPLEX *X11, const INTEGER *LDX11, const FLOAT_COMPLEX *X12, const INTEGER *LDX12, const FLOAT_COMPLEX *X21, const INTEGER *LDX21, const FLOAT_COMPLEX *X22, const INTEGER *LDX22, FLOAT *THETA, FLOAT_COMPLEX *U1, const INTEGER *LDU1, FLOAT_COMPLEX *U2, const INTEGER *LDU2, FLOAT_COMPLEX *V1T, const INTEGER *LDV1T, FLOAT_COMPLEX *V2T, const INTEGER *LDV2T, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cuncsd"); LAPACK_IMPL(cuncsd)(JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS, SIGNS, M, P, Q, X11, LDX11, X12, LDX12, X21, LDX21, X22, LDX22, THETA, U1, LDU1, U2, LDU2, V1T, LDV1T, V2T, LDV2T, WORK, LWORK, RWORK, LRWORK, IWORK, INFO); } //-- cung2l -------------------------------------------------------------------- void LAPACK_DECL(cung2l)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cung2l"); LAPACK_IMPL(cung2l)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- cung2r -------------------------------------------------------------------- void LAPACK_DECL(cung2r)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cung2r"); LAPACK_IMPL(cung2r)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- cungbr -------------------------------------------------------------------- void LAPACK_DECL(cungbr)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cungbr"); LAPACK_IMPL(cungbr)(VECT, M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- cunghr -------------------------------------------------------------------- void LAPACK_DECL(cunghr)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunghr"); LAPACK_IMPL(cunghr)(N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO); } //-- cungl2 -------------------------------------------------------------------- void LAPACK_DECL(cungl2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cungl2"); LAPACK_IMPL(cungl2)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- cunglq -------------------------------------------------------------------- void LAPACK_DECL(cunglq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunglq"); LAPACK_IMPL(cunglq)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- cungql -------------------------------------------------------------------- void LAPACK_DECL(cungql)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cungql"); LAPACK_IMPL(cungql)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- cungqr -------------------------------------------------------------------- void LAPACK_DECL(cungqr)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cungqr"); LAPACK_IMPL(cungqr)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- cungr2 -------------------------------------------------------------------- void LAPACK_DECL(cungr2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cungr2"); LAPACK_IMPL(cungr2)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- cungrq -------------------------------------------------------------------- void LAPACK_DECL(cungrq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cungrq"); LAPACK_IMPL(cungrq)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- cungtr -------------------------------------------------------------------- void LAPACK_DECL(cungtr)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cungtr"); LAPACK_IMPL(cungtr)(UPLO, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- cunm2l -------------------------------------------------------------------- void LAPACK_DECL(cunm2l)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunm2l"); LAPACK_IMPL(cunm2l)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- cunm2r -------------------------------------------------------------------- void LAPACK_DECL(cunm2r)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunm2r"); LAPACK_IMPL(cunm2r)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- cunmbr -------------------------------------------------------------------- void LAPACK_DECL(cunmbr)(const char *VECT, const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunmbr"); LAPACK_IMPL(cunmbr)(VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- cunmhr -------------------------------------------------------------------- void LAPACK_DECL(cunmhr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunmhr"); LAPACK_IMPL(cunmhr)(SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- cunml2 -------------------------------------------------------------------- void LAPACK_DECL(cunml2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunml2"); LAPACK_IMPL(cunml2)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- cunmlq -------------------------------------------------------------------- void LAPACK_DECL(cunmlq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunmlq"); LAPACK_IMPL(cunmlq)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- cunmql -------------------------------------------------------------------- void LAPACK_DECL(cunmql)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunmql"); LAPACK_IMPL(cunmql)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- cunmqr -------------------------------------------------------------------- void LAPACK_DECL(cunmqr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunmqr"); LAPACK_IMPL(cunmqr)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- cunmr2 -------------------------------------------------------------------- void LAPACK_DECL(cunmr2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunmr2"); LAPACK_IMPL(cunmr2)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- cunmr3 -------------------------------------------------------------------- void LAPACK_DECL(cunmr3)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunmr3"); LAPACK_IMPL(cunmr3)(SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, WORK, INFO); } //-- cunmrq -------------------------------------------------------------------- void LAPACK_DECL(cunmrq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunmrq"); LAPACK_IMPL(cunmrq)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- cunmrz -------------------------------------------------------------------- void LAPACK_DECL(cunmrz)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunmrz"); LAPACK_IMPL(cunmrz)(SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- cunmtr -------------------------------------------------------------------- void LAPACK_DECL(cunmtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cunmtr"); LAPACK_IMPL(cunmtr)(SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- cupgtr -------------------------------------------------------------------- void LAPACK_DECL(cupgtr)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cupgtr"); LAPACK_IMPL(cupgtr)(UPLO, N, AP, TAU, Q, LDQ, WORK, INFO); } //-- cupmtr -------------------------------------------------------------------- void LAPACK_DECL(cupmtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("cupmtr"); LAPACK_IMPL(cupmtr)(SIDE, UPLO, TRANS, M, N, AP, TAU, C, LDC, WORK, INFO); } //-- dbbcsd -------------------------------------------------------------------- void LAPACK_DECL(dbbcsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, DOUBLE *THETA, DOUBLE *PHI, DOUBLE *U1, const INTEGER *LDU1, DOUBLE *U2, const INTEGER *LDU2, DOUBLE *V1T, const INTEGER *LDV1T, DOUBLE *V2T, const INTEGER *LDV2T, DOUBLE *B11D, DOUBLE *B11E, DOUBLE *B12D, DOUBLE *B12E, const DOUBLE *B21D, const DOUBLE *B21E, const DOUBLE *B22D, const DOUBLE *B22E, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dbbcsd"); LAPACK_IMPL(dbbcsd)(JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS, M, P, Q, THETA, PHI, U1, LDU1, U2, LDU2, V1T, LDV1T, V2T, LDV2T, B11D, B11E, B12D, B12E, B21D, B21E, B22D, B22E, WORK, LWORK, INFO); } //-- dbdsdc -------------------------------------------------------------------- void LAPACK_DECL(dbdsdc)(const char *UPLO, const char *COMPQ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE *U, const INTEGER *LDU, DOUBLE *VT, const INTEGER *LDVT, DOUBLE *Q, INTEGER *IQ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dbdsdc"); LAPACK_IMPL(dbdsdc)(UPLO, COMPQ, N, D, E, U, LDU, VT, LDVT, Q, IQ, WORK, IWORK, INFO); } //-- dbdsqr -------------------------------------------------------------------- void LAPACK_DECL(dbdsqr)(const char *UPLO, const INTEGER *N, const INTEGER *NCVT, const INTEGER *NRU, const INTEGER *NCC, DOUBLE *D, DOUBLE *E, DOUBLE *VT, const INTEGER *LDVT, DOUBLE *U, const INTEGER *LDU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dbdsqr"); LAPACK_IMPL(dbdsqr)(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C, LDC, WORK, INFO); } //-- ddisna -------------------------------------------------------------------- void LAPACK_DECL(ddisna)(const char *JOB, const INTEGER *M, const INTEGER *N, const DOUBLE *D, DOUBLE *SEP, INTEGER *INFO) { DEBUG_LAPACK_STUB("ddisna"); LAPACK_IMPL(ddisna)(JOB, M, N, D, SEP, INFO); } //-- dgbbrd -------------------------------------------------------------------- void LAPACK_DECL(dgbbrd)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *NCC, const INTEGER *KL, const INTEGER *KU, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *D, DOUBLE *E, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *PT, const INTEGER *LDPT, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgbbrd"); LAPACK_IMPL(dgbbrd)(VECT, M, N, NCC, KL, KU, AB, LDAB, D, E, Q, LDQ, PT, LDPT, C, LDC, WORK, INFO); } //-- dgbcon -------------------------------------------------------------------- void LAPACK_DECL(dgbcon)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE *AB, const INTEGER *LDAB, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgbcon"); LAPACK_IMPL(dgbcon)(NORM, N, KL, KU, AB, LDAB, IPIV, ANORM, RCOND, WORK, IWORK, INFO); } //-- dgbequ -------------------------------------------------------------------- void LAPACK_DECL(dgbequ)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgbequ"); LAPACK_IMPL(dgbequ)(M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND, AMAX, INFO); } //-- dgbequb ------------------------------------------------------------------- void LAPACK_DECL(dgbequb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgbequb"); LAPACK_IMPL(dgbequb)(M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND, AMAX, INFO); } //-- dgbrfs -------------------------------------------------------------------- void LAPACK_DECL(dgbrfs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgbrfs"); LAPACK_IMPL(dgbrfs)(TRANS, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- dgbrfsx ------------------------------------------------------------------- void LAPACK_DECL(dgbrfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, DOUBLE *R, DOUBLE *C, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgbrfsx"); LAPACK_IMPL(dgbrfsx)(TRANS, EQUED, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, R, C, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO); } //-- dgbsv --------------------------------------------------------------------- void LAPACK_DECL(dgbsv)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, DOUBLE *AB, const INTEGER *LDAB, INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgbsv"); LAPACK_IMPL(dgbsv)(N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB, INFO); } //-- dgbsvx -------------------------------------------------------------------- void LAPACK_DECL(dgbsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *AFB, const INTEGER *LDAFB, INTEGER *IPIV, char *EQUED, DOUBLE *R, DOUBLE *C, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgbsvx"); LAPACK_IMPL(dgbsvx)(FACT, TRANS, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, EQUED, R, C, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, IWORK, INFO); } //-- dgbsvxx ------------------------------------------------------------------- void LAPACK_DECL(dgbsvxx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *AFB, const INTEGER *LDAFB, INTEGER *IPIV, char *EQUED, DOUBLE *R, DOUBLE *C, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgbsvxx"); LAPACK_IMPL(dgbsvxx)(FACT, TRANS, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, EQUED, R, C, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO); } //-- dgbtf2 -------------------------------------------------------------------- void LAPACK_DECL(dgbtf2)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, DOUBLE *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgbtf2"); LAPACK_IMPL(dgbtf2)(M, N, KL, KU, AB, LDAB, IPIV, INFO); } //-- dgbtrf -------------------------------------------------------------------- void LAPACK_DECL(dgbtrf)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, DOUBLE *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgbtrf"); LAPACK_IMPL(dgbtrf)(M, N, KL, KU, AB, LDAB, IPIV, INFO); } //-- dgbtrs -------------------------------------------------------------------- void LAPACK_DECL(dgbtrs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, const INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgbtrs"); LAPACK_IMPL(dgbtrs)(TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB, INFO); } //-- dgebak -------------------------------------------------------------------- void LAPACK_DECL(dgebak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const DOUBLE *SCALE, const INTEGER *M, DOUBLE *V, const INTEGER *LDV, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgebak"); LAPACK_IMPL(dgebak)(JOB, SIDE, N, ILO, IHI, SCALE, M, V, LDV, INFO); } //-- dgebal -------------------------------------------------------------------- void LAPACK_DECL(dgebal)(const char *JOB, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *ILO, INTEGER *IHI, DOUBLE *SCALE, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgebal"); LAPACK_IMPL(dgebal)(JOB, N, A, LDA, ILO, IHI, SCALE, INFO); } //-- dgebd2 -------------------------------------------------------------------- void LAPACK_DECL(dgebd2)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE *TAUQ, DOUBLE *TAUP, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgebd2"); LAPACK_IMPL(dgebd2)(M, N, A, LDA, D, E, TAUQ, TAUP, WORK, INFO); } //-- dgebrd -------------------------------------------------------------------- void LAPACK_DECL(dgebrd)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE *TAUQ, DOUBLE *TAUP, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgebrd"); LAPACK_IMPL(dgebrd)(M, N, A, LDA, D, E, TAUQ, TAUP, WORK, LWORK, INFO); } //-- dgecon -------------------------------------------------------------------- void LAPACK_DECL(dgecon)(const char *NORM, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgecon"); LAPACK_IMPL(dgecon)(NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK, INFO); } //-- dgeequ -------------------------------------------------------------------- void LAPACK_DECL(dgeequ)(const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgeequ"); LAPACK_IMPL(dgeequ)(M, N, A, LDA, R, C, ROWCND, COLCND, AMAX, INFO); } //-- dgeequb ------------------------------------------------------------------- void LAPACK_DECL(dgeequb)(const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgeequb"); LAPACK_IMPL(dgeequb)(M, N, A, LDA, R, C, ROWCND, COLCND, AMAX, INFO); } //-- dgees --------------------------------------------------------------------- void LAPACK_DECL(dgees)(const char *JOBVS, const char *SORT, const LOGICAL *SELECT, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *SDIM, DOUBLE *WR, DOUBLE *WI, DOUBLE *VS, const INTEGER *LDVS, DOUBLE *WORK, const INTEGER *LWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgees"); LAPACK_IMPL(dgees)(JOBVS, SORT, SELECT, N, A, LDA, SDIM, WR, WI, VS, LDVS, WORK, LWORK, BWORK, INFO); } //-- dgeesx -------------------------------------------------------------------- void LAPACK_DECL(dgeesx)(const char *JOBVS, const char *SORT, const LOGICAL *SELECT, const char *SENSE, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *SDIM, DOUBLE *WR, DOUBLE *WI, DOUBLE *VS, const INTEGER *LDVS, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgeesx"); LAPACK_IMPL(dgeesx)(JOBVS, SORT, SELECT, SENSE, N, A, LDA, SDIM, WR, WI, VS, LDVS, RCONDE, RCONDV, WORK, LWORK, IWORK, LIWORK, BWORK, INFO); } //-- dgeev --------------------------------------------------------------------- void LAPACK_DECL(dgeev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *WR, DOUBLE *WI, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgeev"); LAPACK_IMPL(dgeev)(JOBVL, JOBVR, N, A, LDA, WR, WI, VL, LDVL, VR, LDVR, WORK, LWORK, INFO); } //-- dgeevx -------------------------------------------------------------------- void LAPACK_DECL(dgeevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *WR, DOUBLE *WI, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, DOUBLE *SCALE, DOUBLE *ABNRM, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgeevx"); LAPACK_IMPL(dgeevx)(BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, WR, WI, VL, LDVL, VR, LDVR, ILO, IHI, SCALE, ABNRM, RCONDE, RCONDV, WORK, LWORK, IWORK, INFO); } //-- dgegs --------------------------------------------------------------------- void LAPACK_DECL(dgegs)(const char *JOBVSL, const char *JOBVSR, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *VSL, const INTEGER *LDVSL, DOUBLE *VSR, const INTEGER *LDVSR, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgegs"); LAPACK_IMPL(dgegs)(JOBVSL, JOBVSR, N, A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, WORK, LWORK, INFO); } //-- dgegv --------------------------------------------------------------------- void LAPACK_DECL(dgegv)(const char *JOBVL, const char *JOBVR, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgegv"); LAPACK_IMPL(dgegv)(JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, VL, LDVL, VR, LDVR, WORK, LWORK, INFO); } //-- dgehd2 -------------------------------------------------------------------- void LAPACK_DECL(dgehd2)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgehd2"); LAPACK_IMPL(dgehd2)(N, ILO, IHI, A, LDA, TAU, WORK, INFO); } //-- dgehrd -------------------------------------------------------------------- void LAPACK_DECL(dgehrd)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgehrd"); LAPACK_IMPL(dgehrd)(N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO); } //-- dgejsv -------------------------------------------------------------------- void LAPACK_DECL(dgejsv)(const char *JOBA, const char *JOBU, const char *JOBV, const char *JOBR, const char *JOBT, const char *JOBP, const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *SVA, DOUBLE *U, const INTEGER *LDU, DOUBLE *V, const INTEGER *LDV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgejsv"); LAPACK_IMPL(dgejsv)(JOBA, JOBU, JOBV, JOBR, JOBT, JOBP, M, N, A, LDA, SVA, U, LDU, V, LDV, WORK, LWORK, IWORK, INFO); } //-- dgelq2 -------------------------------------------------------------------- void LAPACK_DECL(dgelq2)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgelq2"); LAPACK_IMPL(dgelq2)(M, N, A, LDA, TAU, WORK, INFO); } //-- dgelqf -------------------------------------------------------------------- void LAPACK_DECL(dgelqf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgelqf"); LAPACK_IMPL(dgelqf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- dgels --------------------------------------------------------------------- void LAPACK_DECL(dgels)(const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgels"); LAPACK_IMPL(dgels)(TRANS, M, N, NRHS, A, LDA, B, LDB, WORK, LWORK, INFO); } //-- dgelsd -------------------------------------------------------------------- void LAPACK_DECL(dgelsd)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *S, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgelsd"); LAPACK_IMPL(dgelsd)(M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK, WORK, LWORK, IWORK, INFO); } //-- dgelss -------------------------------------------------------------------- void LAPACK_DECL(dgelss)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *S, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgelss"); LAPACK_IMPL(dgelss)(M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK, WORK, LWORK, INFO); } //-- dgelsx -------------------------------------------------------------------- void LAPACK_DECL(dgelsx)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *JPVT, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgelsx"); LAPACK_IMPL(dgelsx)(M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK, WORK, INFO); } //-- dgelsy -------------------------------------------------------------------- void LAPACK_DECL(dgelsy)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *JPVT, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgelsy"); LAPACK_IMPL(dgelsy)(M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK, WORK, LWORK, INFO); } //-- dgeql2 -------------------------------------------------------------------- void LAPACK_DECL(dgeql2)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgeql2"); LAPACK_IMPL(dgeql2)(M, N, A, LDA, TAU, WORK, INFO); } //-- dgeqlf -------------------------------------------------------------------- void LAPACK_DECL(dgeqlf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgeqlf"); LAPACK_IMPL(dgeqlf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- dgeqp3 -------------------------------------------------------------------- void LAPACK_DECL(dgeqp3)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgeqp3"); LAPACK_IMPL(dgeqp3)(M, N, A, LDA, JPVT, TAU, WORK, LWORK, INFO); } //-- dgeqpf -------------------------------------------------------------------- void LAPACK_DECL(dgeqpf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgeqpf"); LAPACK_IMPL(dgeqpf)(M, N, A, LDA, JPVT, TAU, WORK, INFO); } //-- dgeqr2 -------------------------------------------------------------------- void LAPACK_DECL(dgeqr2)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgeqr2"); LAPACK_IMPL(dgeqr2)(M, N, A, LDA, TAU, WORK, INFO); } //-- dgeqr2p ------------------------------------------------------------------- void LAPACK_DECL(dgeqr2p)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgeqr2p"); LAPACK_IMPL(dgeqr2p)(M, N, A, LDA, TAU, WORK, INFO); } //-- dgeqrf -------------------------------------------------------------------- void LAPACK_DECL(dgeqrf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgeqrf"); LAPACK_IMPL(dgeqrf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- dgeqrfp ------------------------------------------------------------------- void LAPACK_DECL(dgeqrfp)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgeqrfp"); LAPACK_IMPL(dgeqrfp)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- dgerfs -------------------------------------------------------------------- void LAPACK_DECL(dgerfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgerfs"); LAPACK_IMPL(dgerfs)(TRANS, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- dgerfsx ------------------------------------------------------------------- void LAPACK_DECL(dgerfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *R, const DOUBLE *C, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgerfsx"); LAPACK_IMPL(dgerfsx)(TRANS, EQUED, N, NRHS, A, LDA, AF, LDAF, IPIV, R, C, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO); } //-- dgerq2 -------------------------------------------------------------------- void LAPACK_DECL(dgerq2)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgerq2"); LAPACK_IMPL(dgerq2)(M, N, A, LDA, TAU, WORK, INFO); } //-- dgerqf -------------------------------------------------------------------- void LAPACK_DECL(dgerqf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgerqf"); LAPACK_IMPL(dgerqf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- dgesc2 -------------------------------------------------------------------- void LAPACK_DECL(dgesc2)(const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *RHS, const INTEGER *IPIV, const INTEGER *JPIV, DOUBLE *SCALE) { DEBUG_LAPACK_STUB("dgesc2"); LAPACK_IMPL(dgesc2)(N, A, LDA, RHS, IPIV, JPIV, SCALE); } //-- dgesdd -------------------------------------------------------------------- void LAPACK_DECL(dgesdd)(const char *JOBZ, const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *U, const INTEGER *LDU, DOUBLE *VT, const INTEGER *LDVT, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgesdd"); LAPACK_IMPL(dgesdd)(JOBZ, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK, LWORK, IWORK, INFO); } //-- dgesv --------------------------------------------------------------------- void LAPACK_DECL(dgesv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgesv"); LAPACK_IMPL(dgesv)(N, NRHS, A, LDA, IPIV, B, LDB, INFO); } //-- dgesvd -------------------------------------------------------------------- void LAPACK_DECL(dgesvd)(const char *JOBU, const char *JOBVT, const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *U, const INTEGER *LDU, DOUBLE *VT, const INTEGER *LDVT, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgesvd"); LAPACK_IMPL(dgesvd)(JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK, LWORK, INFO); } //-- dgesvj -------------------------------------------------------------------- void LAPACK_DECL(dgesvj)(const char *JOBA, const char *JOBU, const char *JOBV, const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *SVA, const INTEGER *MV, DOUBLE *V, const INTEGER *LDV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgesvj"); LAPACK_IMPL(dgesvj)(JOBA, JOBU, JOBV, M, N, A, LDA, SVA, MV, V, LDV, WORK, LWORK, INFO); } //-- dgesvx -------------------------------------------------------------------- void LAPACK_DECL(dgesvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, DOUBLE *R, DOUBLE *C, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgesvx"); LAPACK_IMPL(dgesvx)(FACT, TRANS, N, NRHS, A, LDA, AF, LDAF, IPIV, EQUED, R, C, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, IWORK, INFO); } //-- dgesvxx ------------------------------------------------------------------- void LAPACK_DECL(dgesvxx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, DOUBLE *R, DOUBLE *C, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgesvxx"); LAPACK_IMPL(dgesvxx)(FACT, TRANS, N, NRHS, A, LDA, AF, LDAF, IPIV, EQUED, R, C, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO); } //-- dgetc2 -------------------------------------------------------------------- void LAPACK_DECL(dgetc2)(const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *JPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgetc2"); LAPACK_IMPL(dgetc2)(N, A, LDA, IPIV, JPIV, INFO); } //-- dgetf2 -------------------------------------------------------------------- void LAPACK_DECL(dgetf2)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgetf2"); LAPACK_IMPL(dgetf2)(M, N, A, LDA, IPIV, INFO); } //-- dgetrf -------------------------------------------------------------------- void LAPACK_DECL(dgetrf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgetrf"); LAPACK_IMPL(dgetrf)(M, N, A, LDA, IPIV, INFO); } //-- dgetri -------------------------------------------------------------------- void LAPACK_DECL(dgetri)(const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgetri"); LAPACK_IMPL(dgetri)(N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- dgetrs -------------------------------------------------------------------- void LAPACK_DECL(dgetrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgetrs"); LAPACK_IMPL(dgetrs)(TRANS, N, NRHS, A, LDA, IPIV, B, LDB, INFO); } //-- dggbak -------------------------------------------------------------------- void LAPACK_DECL(dggbak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const DOUBLE *LSCALE, const DOUBLE *RSCALE, const INTEGER *M, DOUBLE *V, const INTEGER *LDV, INTEGER *INFO) { DEBUG_LAPACK_STUB("dggbak"); LAPACK_IMPL(dggbak)(JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V, LDV, INFO); } //-- dggbal -------------------------------------------------------------------- void LAPACK_DECL(dggbal)(const char *JOB, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *ILO, INTEGER *IHI, DOUBLE *LSCALE, DOUBLE *RSCALE, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dggbal"); LAPACK_IMPL(dggbal)(JOB, N, A, LDA, B, LDB, ILO, IHI, LSCALE, RSCALE, WORK, INFO); } //-- dgges --------------------------------------------------------------------- void LAPACK_DECL(dgges)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *SDIM, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *VSL, const INTEGER *LDVSL, DOUBLE *VSR, const INTEGER *LDVSR, DOUBLE *WORK, const INTEGER *LWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgges"); LAPACK_IMPL(dgges)(JOBVSL, JOBVSR, SORT, SELCTG, N, A, LDA, B, LDB, SDIM, ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, WORK, LWORK, BWORK, INFO); } //-- dggesx -------------------------------------------------------------------- void LAPACK_DECL(dggesx)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const char *SENSE, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *SDIM, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *VSL, const INTEGER *LDVSL, DOUBLE *VSR, const INTEGER *LDVSR, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dggesx"); LAPACK_IMPL(dggesx)(JOBVSL, JOBVSR, SORT, SELCTG, SENSE, N, A, LDA, B, LDB, SDIM, ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, RCONDE, RCONDV, WORK, LWORK, IWORK, LIWORK, BWORK, INFO); } //-- dggev --------------------------------------------------------------------- void LAPACK_DECL(dggev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dggev"); LAPACK_IMPL(dggev)(JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, VL, LDVL, VR, LDVR, WORK, LWORK, INFO); } //-- dggevx -------------------------------------------------------------------- void LAPACK_DECL(dggevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, DOUBLE *LSCALE, DOUBLE *RSCALE, DOUBLE *ABNRM, DOUBLE *BBNRM, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dggevx"); LAPACK_IMPL(dggevx)(BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, VL, LDVL, VR, LDVR, ILO, IHI, LSCALE, RSCALE, ABNRM, BBNRM, RCONDE, RCONDV, WORK, LWORK, IWORK, BWORK, INFO); } //-- dggglm -------------------------------------------------------------------- void LAPACK_DECL(dggglm)(const INTEGER *N, const INTEGER *M, const INTEGER *P, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *D, DOUBLE *X, DOUBLE *Y, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dggglm"); LAPACK_IMPL(dggglm)(N, M, P, A, LDA, B, LDB, D, X, Y, WORK, LWORK, INFO); } //-- dgghrd -------------------------------------------------------------------- void LAPACK_DECL(dgghrd)(const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *Z, const INTEGER *LDZ, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgghrd"); LAPACK_IMPL(dgghrd)(COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q, LDQ, Z, LDZ, INFO); } //-- dgglse -------------------------------------------------------------------- void LAPACK_DECL(dgglse)(const INTEGER *M, const INTEGER *N, const INTEGER *P, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *C, DOUBLE *D, DOUBLE *X, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgglse"); LAPACK_IMPL(dgglse)(M, N, P, A, LDA, B, LDB, C, D, X, WORK, LWORK, INFO); } //-- dggqrf -------------------------------------------------------------------- void LAPACK_DECL(dggqrf)(const INTEGER *N, const INTEGER *M, const INTEGER *P, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAUA, DOUBLE *B, const INTEGER *LDB, DOUBLE *TAUB, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dggqrf"); LAPACK_IMPL(dggqrf)(N, M, P, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO); } //-- dggrqf -------------------------------------------------------------------- void LAPACK_DECL(dggrqf)(const INTEGER *M, const INTEGER *P, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAUA, DOUBLE *B, const INTEGER *LDB, DOUBLE *TAUB, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dggrqf"); LAPACK_IMPL(dggrqf)(M, P, N, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO); } //-- dggsvd -------------------------------------------------------------------- void LAPACK_DECL(dggsvd)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *N, const INTEGER *P, INTEGER *K, INTEGER *L, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *ALPHA, DOUBLE *BETA, DOUBLE *U, const INTEGER *LDU, DOUBLE *V, const INTEGER *LDV, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dggsvd"); LAPACK_IMPL(dggsvd)(JOBU, JOBV, JOBQ, M, N, P, K, L, A, LDA, B, LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, IWORK, INFO); } //-- dggsvp -------------------------------------------------------------------- void LAPACK_DECL(dggsvp)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, const DOUBLE *TOLA, const DOUBLE *TOLB, INTEGER *K, INTEGER *L, DOUBLE *U, const INTEGER *LDU, DOUBLE *V, const INTEGER *LDV, DOUBLE *Q, const INTEGER *LDQ, INTEGER *IWORK, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dggsvp"); LAPACK_IMPL(dggsvp)(JOBU, JOBV, JOBQ, M, P, N, A, LDA, B, LDB, TOLA, TOLB, K, L, U, LDU, V, LDV, Q, LDQ, IWORK, TAU, WORK, INFO); } //-- dgsvj0 -------------------------------------------------------------------- void LAPACK_DECL(dgsvj0)(const char *JOBV, const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *SVA, const INTEGER *MV, DOUBLE *V, const INTEGER *LDV, const DOUBLE *EPS, const DOUBLE *SFMIN, const DOUBLE *TOL, const INTEGER *NSWEEP, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgsvj0"); LAPACK_IMPL(dgsvj0)(JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, SFMIN, TOL, NSWEEP, WORK, LWORK, INFO); } //-- dgsvj1 -------------------------------------------------------------------- void LAPACK_DECL(dgsvj1)(const char *JOBV, const INTEGER *M, const INTEGER *N, const INTEGER *N1, DOUBLE *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *SVA, const INTEGER *MV, DOUBLE *V, const INTEGER *LDV, const DOUBLE *EPS, const DOUBLE *SFMIN, const DOUBLE *TOL, const INTEGER *NSWEEP, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgsvj1"); LAPACK_IMPL(dgsvj1)(JOBV, M, N, N1, A, LDA, D, SVA, MV, V, LDV, EPS, SFMIN, TOL, NSWEEP, WORK, LWORK, INFO); } //-- dgtcon -------------------------------------------------------------------- void LAPACK_DECL(dgtcon)(const char *NORM, const INTEGER *N, const DOUBLE *DL, const DOUBLE *D, const DOUBLE *DU, const DOUBLE *DU2, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgtcon"); LAPACK_IMPL(dgtcon)(NORM, N, DL, D, DU, DU2, IPIV, ANORM, RCOND, WORK, IWORK, INFO); } //-- dgtrfs -------------------------------------------------------------------- void LAPACK_DECL(dgtrfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *DL, const DOUBLE *D, const DOUBLE *DU, const DOUBLE *DLF, const DOUBLE *DF, const DOUBLE *DUF, const DOUBLE *DU2, const INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgtrfs"); LAPACK_IMPL(dgtrfs)(TRANS, N, NRHS, DL, D, DU, DLF, DF, DUF, DU2, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- dgtsv --------------------------------------------------------------------- void LAPACK_DECL(dgtsv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE *DL, DOUBLE *D, DOUBLE *DU, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgtsv"); LAPACK_IMPL(dgtsv)(N, NRHS, DL, D, DU, B, LDB, INFO); } //-- dgtsvx -------------------------------------------------------------------- void LAPACK_DECL(dgtsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *DL, const DOUBLE *D, const DOUBLE *DU, DOUBLE *DLF, DOUBLE *DF, DOUBLE *DUF, DOUBLE *DU2, INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgtsvx"); LAPACK_IMPL(dgtsvx)(FACT, TRANS, N, NRHS, DL, D, DU, DLF, DF, DUF, DU2, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, IWORK, INFO); } //-- dgttrf -------------------------------------------------------------------- void LAPACK_DECL(dgttrf)(const INTEGER *N, DOUBLE *DL, DOUBLE *D, DOUBLE *DU, DOUBLE *DU2, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgttrf"); LAPACK_IMPL(dgttrf)(N, DL, D, DU, DU2, IPIV, INFO); } //-- dgttrs -------------------------------------------------------------------- void LAPACK_DECL(dgttrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *DL, const DOUBLE *D, const DOUBLE *DU, const DOUBLE *DU2, const INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dgttrs"); LAPACK_IMPL(dgttrs)(TRANS, N, NRHS, DL, D, DU, DU2, IPIV, B, LDB, INFO); } //-- dgtts2 -------------------------------------------------------------------- void LAPACK_DECL(dgtts2)(const INTEGER *ITRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *DL, const DOUBLE *D, const DOUBLE *DU, const DOUBLE *DU2, const INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("dgtts2"); LAPACK_IMPL(dgtts2)(ITRANS, N, NRHS, DL, D, DU, DU2, IPIV, B, LDB); } //-- dhgeqz -------------------------------------------------------------------- void LAPACK_DECL(dhgeqz)(const char *JOB, const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *H, const INTEGER *LDH, DOUBLE *T, const INTEGER *LDT, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dhgeqz"); LAPACK_IMPL(dhgeqz)(JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT, ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, WORK, LWORK, INFO); } //-- dhsein -------------------------------------------------------------------- void LAPACK_DECL(dhsein)(const char *SIDE, const char *EIGSRC, const char *INITV, LOGICAL *SELECT, const INTEGER *N, const DOUBLE *H, const INTEGER *LDH, DOUBLE *WR, const DOUBLE *WI, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, DOUBLE *WORK, INTEGER *IFAILL, INTEGER *IFAILR, INTEGER *INFO) { DEBUG_LAPACK_STUB("dhsein"); LAPACK_IMPL(dhsein)(SIDE, EIGSRC, INITV, SELECT, N, H, LDH, WR, WI, VL, LDVL, VR, LDVR, MM, M, WORK, IFAILL, IFAILR, INFO); } //-- dhseqr -------------------------------------------------------------------- void LAPACK_DECL(dhseqr)(const char *JOB, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *H, const INTEGER *LDH, DOUBLE *WR, DOUBLE *WI, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dhseqr"); LAPACK_IMPL(dhseqr)(JOB, COMPZ, N, ILO, IHI, H, LDH, WR, WI, Z, LDZ, WORK, LWORK, INFO); } //-- disnan -------------------------------------------------------------------- LOGICAL LAPACK_DECL(disnan)(const DOUBLE *DIN) { DEBUG_LAPACK_STUB("disnan"); return LAPACK_IMPL(disnan)(DIN); } //-- dla_gbamv ----------------------------------------------------------------- void LAPACK_DECL(dla_gbamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE *ALPHA, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *X, const INTEGER *INCX, const DOUBLE *BETA, DOUBLE *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("dla_gbamv"); LAPACK_IMPL(dla_gbamv)(TRANS, M, N, KL, KU, ALPHA, AB, LDAB, X, INCX, BETA, Y, INCY); } //-- dla_gbrcond --------------------------------------------------------------- DOUBLE LAPACK_DECL(dla_gbrcond)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const INTEGER *CMODE, const DOUBLE *C, INTEGER *INFO, const DOUBLE *WORK, const INTEGER *IWORK) { DEBUG_LAPACK_STUB("dla_gbrcond"); return LAPACK_IMPL(dla_gbrcond)(TRANS, N, KL, KU, AB, LDAB, AFB, LDAFB, IPIV, CMODE, C, INFO, WORK, IWORK); } //-- dla_gbrfsx_extended ------------------------------------------------------- void LAPACK_DECL(dla_gbrfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE *B, const INTEGER *LDB, DOUBLE *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const DOUBLE *RES, const DOUBLE *AYB, const DOUBLE *DY, const DOUBLE *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("dla_gbrfsx_extended"); ASSERT(0); /* LAPACK_IMPL(dla_gbrfsx_extended)(PREC_TYPE, TRANS_TYPE, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERR_BNDS_NORM, ERR_BNDS_COMP, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- dla_gbrpvgrw -------------------------------------------------------------- DOUBLE LAPACK_DECL(dla_gbrpvgrw)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NCOLS, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *AFB, const INTEGER *LDAFB) { DEBUG_LAPACK_STUB("dla_gbrpvgrw"); return LAPACK_IMPL(dla_gbrpvgrw)(N, KL, KU, NCOLS, AB, LDAB, AFB, LDAFB); } //-- dla_geamv ----------------------------------------------------------------- void LAPACK_DECL(dla_geamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const DOUBLE *ALPHA, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *X, const INTEGER *INCX, const DOUBLE *BETA, DOUBLE *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("dla_geamv"); LAPACK_IMPL(dla_geamv)(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY); } //-- dla_gercond --------------------------------------------------------------- DOUBLE LAPACK_DECL(dla_gercond)(const char *TRANS, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const INTEGER *CMODE, const DOUBLE *C, INTEGER *INFO, const DOUBLE *WORK, const INTEGER *IWORK) { DEBUG_LAPACK_STUB("dla_gercond"); return LAPACK_IMPL(dla_gercond)(TRANS, N, A, LDA, AF, LDAF, IPIV, CMODE, C, INFO, WORK, IWORK); } //-- dla_gerfsx_extended ------------------------------------------------------- void LAPACK_DECL(dla_gerfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE *B, const INTEGER *LDB, DOUBLE *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, const DOUBLE *ERRS_N, const DOUBLE *ERRS_C, const DOUBLE *RES, const DOUBLE *AYB, const DOUBLE *DY, const DOUBLE *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("dla_gerfsx_extended"); ASSERT(0); /* LAPACK_IMPL(dla_gerfsx_extended)(PREC_TYPE, TRANS_TYPE, N, NRHS, A, LDA, AF, LDAF, IPIV, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERRS_N, ERRS_C, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- dla_lin_berr -------------------------------------------------------------- void LAPACK_DECL(dla_lin_berr)(const INTEGER *N, const INTEGER *NZ, const INTEGER *NRHS, const DOUBLE *RES, const DOUBLE *AYB, DOUBLE *BERR) { DEBUG_LAPACK_STUB("dla_lin_berr"); LAPACK_IMPL(dla_lin_berr)(N, NZ, NRHS, RES, AYB, BERR); } //-- dla_porcond --------------------------------------------------------------- DOUBLE LAPACK_DECL(dla_porcond)(const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *CMODE, const DOUBLE *C, INTEGER *INFO, const DOUBLE *WORK, const INTEGER *IWORK) { DEBUG_LAPACK_STUB("dla_porcond"); return LAPACK_IMPL(dla_porcond)(UPLO, N, A, LDA, AF, LDAF, CMODE, C, INFO, WORK, IWORK); } //-- dla_porfsx_extended ------------------------------------------------------- void LAPACK_DECL(dla_porfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE *B, const INTEGER *LDB, DOUBLE *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const DOUBLE *RES, const DOUBLE *AYB, const DOUBLE *DY, const DOUBLE *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("dla_porfsx_extended"); ASSERT(0); /* LAPACK_IMPL(dla_porfsx_extended)(PREC_TYPE, UPLO, N, NRHS, A, LDA, AF, LDAF, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERR_BNDS_NORM, ERR_BNDS_COMP, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- dla_porpvgrw -------------------------------------------------------------- DOUBLE LAPACK_DECL(dla_porpvgrw)(const char *UPLO, const INTEGER *NCOLS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const DOUBLE *WORK) { DEBUG_LAPACK_STUB("dla_porpvgrw"); return LAPACK_IMPL(dla_porpvgrw)(UPLO, NCOLS, A, LDA, AF, LDAF, WORK); } //-- dla_rpvgrw ---------------------------------------------------------------- DOUBLE LAPACK_DECL(dla_rpvgrw)(const INTEGER *N, const INTEGER *NCOLS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF) { DEBUG_LAPACK_STUB("dla_rpvgrw"); return LAPACK_IMPL(dla_rpvgrw)(N, NCOLS, A, LDA, AF, LDAF); } //-- dla_syamv ----------------------------------------------------------------- void LAPACK_DECL(dla_syamv)(const INTEGER *UPLO, const INTEGER *N, const DOUBLE *ALPHA, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *X, const INTEGER *INCX, const DOUBLE *BETA, DOUBLE *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("dla_syamv"); LAPACK_IMPL(dla_syamv)(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY); } //-- dla_syrcond --------------------------------------------------------------- DOUBLE LAPACK_DECL(dla_syrcond)(const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const INTEGER *CMODE, const DOUBLE *C, INTEGER *INFO, const DOUBLE *WORK, const INTEGER *IWORK) { DEBUG_LAPACK_STUB("dla_syrcond"); return LAPACK_IMPL(dla_syrcond)(UPLO, N, A, LDA, AF, LDAF, IPIV, CMODE, C, INFO, WORK, IWORK); } //-- dla_syrfsx_extended ------------------------------------------------------- void LAPACK_DECL(dla_syrfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE *B, const INTEGER *LDB, DOUBLE *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const DOUBLE *RES, const DOUBLE *AYB, const DOUBLE *DY, const DOUBLE *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("dla_syrfsx_extended"); ASSERT(0); /* LAPACK_IMPL(dla_syrfsx_extended)(PREC_TYPE, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERR_BNDS_NORM, ERR_BNDS_COMP, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- dla_syrpvgrw -------------------------------------------------------------- DOUBLE LAPACK_DECL(dla_syrpvgrw)(const char *UPLO, const INTEGER *N, const INTEGER *INFO, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *WORK) { DEBUG_LAPACK_STUB("dla_syrpvgrw"); return LAPACK_IMPL(dla_syrpvgrw)(UPLO, N, INFO, A, LDA, AF, LDAF, IPIV, WORK); } //-- dla_wwaddw ---------------------------------------------------------------- void LAPACK_DECL(dla_wwaddw)(const INTEGER *N, DOUBLE *X, DOUBLE *Y, const DOUBLE *W) { DEBUG_LAPACK_STUB("dla_wwaddw"); LAPACK_IMPL(dla_wwaddw)(N, X, Y, W); } //-- dlabad -------------------------------------------------------------------- void LAPACK_DECL(dlabad)(DOUBLE *SMALL, DOUBLE *LARGE) { DEBUG_LAPACK_STUB("dlabad"); LAPACK_IMPL(dlabad)(SMALL, LARGE); } //-- dlabrd -------------------------------------------------------------------- void LAPACK_DECL(dlabrd)(const INTEGER *M, const INTEGER *N, const INTEGER *NB, DOUBLE *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE *TAUQ, DOUBLE *TAUP, DOUBLE *X, const INTEGER *LDX, DOUBLE *Y, const INTEGER *LDY) { DEBUG_LAPACK_STUB("dlabrd"); LAPACK_IMPL(dlabrd)(M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y, LDY); } //-- dlacn2 -------------------------------------------------------------------- void LAPACK_DECL(dlacn2)(const INTEGER *N, DOUBLE *V, DOUBLE *X, INTEGER *ISGN, DOUBLE *EST, INTEGER *KASE, INTEGER *ISAVE) { DEBUG_LAPACK_STUB("dlacn2"); LAPACK_IMPL(dlacn2)(N, V, X, ISGN, EST, KASE, ISAVE); } //-- dlacon -------------------------------------------------------------------- void LAPACK_DECL(dlacon)(const INTEGER *N, DOUBLE *V, DOUBLE *X, INTEGER *ISGN, DOUBLE *EST, INTEGER *KASE) { DEBUG_LAPACK_STUB("dlacon"); LAPACK_IMPL(dlacon)(N, V, X, ISGN, EST, KASE); } //-- dlacpy -------------------------------------------------------------------- void LAPACK_DECL(dlacpy)(const char *UPLO, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("dlacpy"); LAPACK_IMPL(dlacpy)(UPLO, M, N, A, LDA, B, LDB); } //-- dladiv -------------------------------------------------------------------- void LAPACK_DECL(dladiv)(const DOUBLE *A, const DOUBLE *B, const DOUBLE *C, const DOUBLE *D, DOUBLE *P, DOUBLE *Q) { DEBUG_LAPACK_STUB("dladiv"); LAPACK_IMPL(dladiv)(A, B, C, D, P, Q); } //-- dlae2 --------------------------------------------------------------------- void LAPACK_DECL(dlae2)(const DOUBLE *A, const DOUBLE *B, const DOUBLE *C, DOUBLE *RT1, DOUBLE *RT2) { DEBUG_LAPACK_STUB("dlae2"); LAPACK_IMPL(dlae2)(A, B, C, RT1, RT2); } //-- dlaebz -------------------------------------------------------------------- void LAPACK_DECL(dlaebz)(const INTEGER *IJOB, const INTEGER *NITMAX, const INTEGER *N, const INTEGER *MMAX, const INTEGER *MINP, const INTEGER *NBMIN, const DOUBLE *ABSTOL, const DOUBLE *RELTOL, const DOUBLE *PIVMIN, const DOUBLE *D, const DOUBLE *E, const DOUBLE *E2, INTEGER *NVAL, DOUBLE *AB, DOUBLE *C, INTEGER *MOUT, INTEGER *NAB, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaebz"); LAPACK_IMPL(dlaebz)(IJOB, NITMAX, N, MMAX, MINP, NBMIN, ABSTOL, RELTOL, PIVMIN, D, E, E2, NVAL, AB, C, MOUT, NAB, WORK, IWORK, INFO); } //-- dlaed0 -------------------------------------------------------------------- void LAPACK_DECL(dlaed0)(const INTEGER *ICOMPQ, const INTEGER *QSIZ, const INTEGER *N, DOUBLE *D, const DOUBLE *E, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *QSTORE, const INTEGER *LDQS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaed0"); LAPACK_IMPL(dlaed0)(ICOMPQ, QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS, WORK, IWORK, INFO); } //-- dlaed1 -------------------------------------------------------------------- void LAPACK_DECL(dlaed1)(const INTEGER *N, DOUBLE *D, DOUBLE *Q, const INTEGER *LDQ, INTEGER *INDXQ, const DOUBLE *RHO, const INTEGER *CUTPNT, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaed1"); LAPACK_IMPL(dlaed1)(N, D, Q, LDQ, INDXQ, RHO, CUTPNT, WORK, IWORK, INFO); } //-- dlaed2 -------------------------------------------------------------------- void LAPACK_DECL(dlaed2)(INTEGER *K, const INTEGER *N, const INTEGER *N1, DOUBLE *D, DOUBLE *Q, const INTEGER *LDQ, INTEGER *INDXQ, DOUBLE *RHO, const DOUBLE *Z, DOUBLE *DLAMDA, DOUBLE *W, DOUBLE *Q2, INTEGER *INDX, INTEGER *INDXC, INTEGER *INDXP, INTEGER *COLTYP, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaed2"); LAPACK_IMPL(dlaed2)(K, N, N1, D, Q, LDQ, INDXQ, RHO, Z, DLAMDA, W, Q2, INDX, INDXC, INDXP, COLTYP, INFO); } //-- dlaed3 -------------------------------------------------------------------- void LAPACK_DECL(dlaed3)(const INTEGER *K, const INTEGER *N, const INTEGER *N1, DOUBLE *D, DOUBLE *Q, const INTEGER *LDQ, const DOUBLE *RHO, DOUBLE *DLAMDA, const DOUBLE *Q2, const INTEGER *INDX, const INTEGER *CTOT, DOUBLE *W, DOUBLE *S, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaed3"); LAPACK_IMPL(dlaed3)(K, N, N1, D, Q, LDQ, RHO, DLAMDA, Q2, INDX, CTOT, W, S, INFO); } //-- dlaed4 -------------------------------------------------------------------- void LAPACK_DECL(dlaed4)(const INTEGER *N, const INTEGER *I, const DOUBLE *D, const DOUBLE *Z, DOUBLE *DELTA, const DOUBLE *RHO, DOUBLE *DLAM, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaed4"); LAPACK_IMPL(dlaed4)(N, I, D, Z, DELTA, RHO, DLAM, INFO); } //-- dlaed5 -------------------------------------------------------------------- void LAPACK_DECL(dlaed5)(const INTEGER *I, const DOUBLE *D, const DOUBLE *Z, DOUBLE *DELTA, const DOUBLE *RHO, DOUBLE *DLAM) { DEBUG_LAPACK_STUB("dlaed5"); LAPACK_IMPL(dlaed5)(I, D, Z, DELTA, RHO, DLAM); } //-- dlaed6 -------------------------------------------------------------------- void LAPACK_DECL(dlaed6)(const INTEGER *KNITER, const LOGICAL *ORGATI, const DOUBLE *RHO, const DOUBLE *D, const DOUBLE *Z, const DOUBLE *FINIT, DOUBLE *TAU, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaed6"); LAPACK_IMPL(dlaed6)(KNITER, ORGATI, RHO, D, Z, FINIT, TAU, INFO); } //-- dlaed7 -------------------------------------------------------------------- void LAPACK_DECL(dlaed7)(const INTEGER *ICOMPQ, const INTEGER *N, const INTEGER *QSIZ, const INTEGER *TLVLS, const INTEGER *CURLVL, const INTEGER *CURPBM, DOUBLE *D, DOUBLE *Q, const INTEGER *LDQ, INTEGER *INDXQ, const DOUBLE *RHO, const INTEGER *CUTPNT, DOUBLE *QSTORE, INTEGER *QPTR, const INTEGER *PRMPTR, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const DOUBLE *GIVNUM, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaed7"); LAPACK_IMPL(dlaed7)(ICOMPQ, N, QSIZ, TLVLS, CURLVL, CURPBM, D, Q, LDQ, INDXQ, RHO, CUTPNT, QSTORE, QPTR, PRMPTR, PERM, GIVPTR, GIVCOL, GIVNUM, WORK, IWORK, INFO); } //-- dlaed8 -------------------------------------------------------------------- void LAPACK_DECL(dlaed8)(const INTEGER *ICOMPQ, INTEGER *K, const INTEGER *N, const INTEGER *QSIZ, DOUBLE *D, DOUBLE *Q, const INTEGER *LDQ, const INTEGER *INDXQ, DOUBLE *RHO, const INTEGER *CUTPNT, const DOUBLE *Z, DOUBLE *DLAMDA, DOUBLE *Q2, const INTEGER *LDQ2, DOUBLE *W, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, DOUBLE *GIVNUM, INTEGER *INDXP, INTEGER *INDX, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaed8"); LAPACK_IMPL(dlaed8)(ICOMPQ, K, N, QSIZ, D, Q, LDQ, INDXQ, RHO, CUTPNT, Z, DLAMDA, Q2, LDQ2, W, PERM, GIVPTR, GIVCOL, GIVNUM, INDXP, INDX, INFO); } //-- dlaed9 -------------------------------------------------------------------- void LAPACK_DECL(dlaed9)(const INTEGER *K, const INTEGER *KSTART, const INTEGER *KSTOP, const INTEGER *N, DOUBLE *D, DOUBLE *Q, const INTEGER *LDQ, const DOUBLE *RHO, const DOUBLE *DLAMDA, const DOUBLE *W, DOUBLE *S, const INTEGER *LDS, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaed9"); LAPACK_IMPL(dlaed9)(K, KSTART, KSTOP, N, D, Q, LDQ, RHO, DLAMDA, W, S, LDS, INFO); } //-- dlaeda -------------------------------------------------------------------- void LAPACK_DECL(dlaeda)(const INTEGER *N, const INTEGER *TLVLS, const INTEGER *CURLVL, const INTEGER *CURPBM, const INTEGER *PRMPTR, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const DOUBLE *GIVNUM, const DOUBLE *Q, const INTEGER *QPTR, DOUBLE *Z, DOUBLE *ZTEMP, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaeda"); LAPACK_IMPL(dlaeda)(N, TLVLS, CURLVL, CURPBM, PRMPTR, PERM, GIVPTR, GIVCOL, GIVNUM, Q, QPTR, Z, ZTEMP, INFO); } //-- dlaein -------------------------------------------------------------------- void LAPACK_DECL(dlaein)(const LOGICAL *RIGHTV, const LOGICAL *NOINIT, const INTEGER *N, const DOUBLE *H, const INTEGER *LDH, const DOUBLE *WR, const DOUBLE *WI, DOUBLE *VR, DOUBLE *VI, DOUBLE *B, const INTEGER *LDB, DOUBLE *WORK, const DOUBLE *EPS3, const DOUBLE *SMLNUM, const DOUBLE *BIGNUM, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaein"); LAPACK_IMPL(dlaein)(RIGHTV, NOINIT, N, H, LDH, WR, WI, VR, VI, B, LDB, WORK, EPS3, SMLNUM, BIGNUM, INFO); } //-- dlaev2 -------------------------------------------------------------------- void LAPACK_DECL(dlaev2)(const DOUBLE *A, const DOUBLE *B, const DOUBLE *C, DOUBLE *RT1, DOUBLE *RT2, DOUBLE *CS1, DOUBLE *SN1) { DEBUG_LAPACK_STUB("dlaev2"); LAPACK_IMPL(dlaev2)(A, B, C, RT1, RT2, CS1, SN1); } //-- dlaexc -------------------------------------------------------------------- void LAPACK_DECL(dlaexc)(const LOGICAL *WANTQ, const INTEGER *N, DOUBLE *T, const INTEGER *LDT, DOUBLE *Q, const INTEGER *LDQ, const INTEGER *J1, const INTEGER *N1, const INTEGER *N2, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaexc"); LAPACK_IMPL(dlaexc)(WANTQ, N, T, LDT, Q, LDQ, J1, N1, N2, WORK, INFO); } //-- dlag2 --------------------------------------------------------------------- void LAPACK_DECL(dlag2)(const DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, const DOUBLE *SAFMIN, DOUBLE *SCALE1, DOUBLE *SCALE2, DOUBLE *WR1, DOUBLE *WR2, DOUBLE *WI) { DEBUG_LAPACK_STUB("dlag2"); LAPACK_IMPL(dlag2)(A, LDA, B, LDB, SAFMIN, SCALE1, SCALE2, WR1, WR2, WI); } //-- dlag2s -------------------------------------------------------------------- void LAPACK_DECL(dlag2s)(const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, FLOAT *SA, const INTEGER *LDSA, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlag2s"); LAPACK_IMPL(dlag2s)(M, N, A, LDA, SA, LDSA, INFO); } //-- dlags2 -------------------------------------------------------------------- void LAPACK_DECL(dlags2)(const LOGICAL *UPPER, const DOUBLE *A1, const DOUBLE *A2, const DOUBLE *A3, const DOUBLE *B1, const DOUBLE *B2, const DOUBLE *B3, DOUBLE *CSU, DOUBLE *SNU, DOUBLE *CSV, DOUBLE *SNV, DOUBLE *CSQ, DOUBLE *SNQ) { DEBUG_LAPACK_STUB("dlags2"); LAPACK_IMPL(dlags2)(UPPER, A1, A2, A3, B1, B2, B3, CSU, SNU, CSV, SNV, CSQ, SNQ); } //-- dlagtf -------------------------------------------------------------------- void LAPACK_DECL(dlagtf)(const INTEGER *N, DOUBLE *A, const DOUBLE *LAMBDA, DOUBLE *B, DOUBLE *C, const DOUBLE *TOL, DOUBLE *D, INTEGER *IN, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlagtf"); LAPACK_IMPL(dlagtf)(N, A, LAMBDA, B, C, TOL, D, IN, INFO); } //-- dlagtm -------------------------------------------------------------------- void LAPACK_DECL(dlagtm)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *ALPHA, const DOUBLE *DL, const DOUBLE *D, const DOUBLE *DU, const DOUBLE *X, const INTEGER *LDX, const DOUBLE *BETA, DOUBLE *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("dlagtm"); LAPACK_IMPL(dlagtm)(TRANS, N, NRHS, ALPHA, DL, D, DU, X, LDX, BETA, B, LDB); } //-- dlagts -------------------------------------------------------------------- void LAPACK_DECL(dlagts)(const INTEGER *JOB, const INTEGER *N, const DOUBLE *A, const DOUBLE *B, const DOUBLE *C, const DOUBLE *D, const INTEGER *IN, DOUBLE *Y, DOUBLE *TOL, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlagts"); LAPACK_IMPL(dlagts)(JOB, N, A, B, C, D, IN, Y, TOL, INFO); } //-- dlagv2 -------------------------------------------------------------------- void LAPACK_DECL(dlagv2)(DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *CSL, DOUBLE *SNL, DOUBLE *CSR, DOUBLE *SNR) { DEBUG_LAPACK_STUB("dlagv2"); LAPACK_IMPL(dlagv2)(A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, CSL, SNL, CSR, SNR); } //-- dlahqr -------------------------------------------------------------------- void LAPACK_DECL(dlahqr)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *H, const INTEGER *LDH, DOUBLE *WR, DOUBLE *WI, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE *Z, const INTEGER *LDZ, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlahqr"); LAPACK_IMPL(dlahqr)(WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI, ILOZ, IHIZ, Z, LDZ, INFO); } //-- dlahr2 -------------------------------------------------------------------- void LAPACK_DECL(dlahr2)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *T, const INTEGER *LDT, DOUBLE *Y, const INTEGER *LDY) { DEBUG_LAPACK_STUB("dlahr2"); LAPACK_IMPL(dlahr2)(N, K, NB, A, LDA, TAU, T, LDT, Y, LDY); } //-- dlahrd -------------------------------------------------------------------- void LAPACK_DECL(dlahrd)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *T, const INTEGER *LDT, DOUBLE *Y, const INTEGER *LDY) { DEBUG_LAPACK_STUB("dlahrd"); LAPACK_IMPL(dlahrd)(N, K, NB, A, LDA, TAU, T, LDT, Y, LDY); } //-- dlaic1 -------------------------------------------------------------------- void LAPACK_DECL(dlaic1)(const INTEGER *JOB, const INTEGER *J, const DOUBLE *X, const DOUBLE *SEST, const DOUBLE *W, const DOUBLE *GAMMA, DOUBLE *SESTPR, DOUBLE *S, DOUBLE *C) { DEBUG_LAPACK_STUB("dlaic1"); LAPACK_IMPL(dlaic1)(JOB, J, X, SEST, W, GAMMA, SESTPR, S, C); } //-- dlaisnan ------------------------------------------------------------------ LOGICAL LAPACK_DECL(dlaisnan)(const DOUBLE *DIN1, const DOUBLE *DIN2) { DEBUG_LAPACK_STUB("dlaisnan"); return LAPACK_IMPL(dlaisnan)(DIN1, DIN2); } //-- dlaln2 -------------------------------------------------------------------- void LAPACK_DECL(dlaln2)(const LOGICAL *LTRANS, const INTEGER *NA, const INTEGER *NW, const DOUBLE *SMIN, const DOUBLE *CA, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *D1, const DOUBLE *D2, const DOUBLE *B, const INTEGER *LDB, const DOUBLE *WR, const DOUBLE *WI, DOUBLE *X, const INTEGER *LDX, DOUBLE *SCALE, DOUBLE *XNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaln2"); LAPACK_IMPL(dlaln2)(LTRANS, NA, NW, SMIN, CA, A, LDA, D1, D2, B, LDB, WR, WI, X, LDX, SCALE, XNORM, INFO); } //-- dlals0 -------------------------------------------------------------------- void LAPACK_DECL(dlals0)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, const INTEGER *NRHS, DOUBLE *B, const INTEGER *LDB, DOUBLE *BX, const INTEGER *LDBX, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const DOUBLE *GIVNUM, const INTEGER *LDGNUM, const DOUBLE *POLES, const DOUBLE *DIFL, const DOUBLE *DIFR, const DOUBLE *Z, const INTEGER *K, const DOUBLE *C, const DOUBLE *S, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlals0"); LAPACK_IMPL(dlals0)(ICOMPQ, NL, NR, SQRE, NRHS, B, LDB, BX, LDBX, PERM, GIVPTR, GIVCOL, LDGCOL, GIVNUM, LDGNUM, POLES, DIFL, DIFR, Z, K, C, S, WORK, INFO); } //-- dlalsa -------------------------------------------------------------------- void LAPACK_DECL(dlalsa)(const INTEGER *ICOMPQ, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, DOUBLE *B, const INTEGER *LDB, DOUBLE *BX, const INTEGER *LDBX, const DOUBLE *U, const INTEGER *LDU, const DOUBLE *VT, const INTEGER *K, const DOUBLE *DIFL, const DOUBLE *DIFR, const DOUBLE *Z, const DOUBLE *POLES, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const INTEGER *PERM, const DOUBLE *GIVNUM, const DOUBLE *C, const DOUBLE *S, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlalsa"); LAPACK_IMPL(dlalsa)(ICOMPQ, SMLSIZ, N, NRHS, B, LDB, BX, LDBX, U, LDU, VT, K, DIFL, DIFR, Z, POLES, GIVPTR, GIVCOL, LDGCOL, PERM, GIVNUM, C, S, WORK, IWORK, INFO); } //-- dlalsd -------------------------------------------------------------------- void LAPACK_DECL(dlalsd)(const char *UPLO, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, DOUBLE *D, DOUBLE *E, DOUBLE *B, const INTEGER *LDB, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlalsd"); LAPACK_IMPL(dlalsd)(UPLO, SMLSIZ, N, NRHS, D, E, B, LDB, RCOND, RANK, WORK, IWORK, INFO); } //-- dlamrg -------------------------------------------------------------------- void LAPACK_DECL(dlamrg)(const INTEGER *N1, const INTEGER *N2, const DOUBLE *A, const INTEGER *DTRD1, const INTEGER *DTRD2, INTEGER *INDEX) { DEBUG_LAPACK_STUB("dlamrg"); LAPACK_IMPL(dlamrg)(N1, N2, A, DTRD1, DTRD2, INDEX); } //-- dlaneg -------------------------------------------------------------------- INTEGER LAPACK_DECL(dlaneg)(const INTEGER *N, const DOUBLE *D, const DOUBLE *LLD, const DOUBLE *SIGMA, const DOUBLE *PIVMIN, const INTEGER *R) { DEBUG_LAPACK_STUB("dlaneg"); return LAPACK_IMPL(dlaneg)(N, D, LLD, SIGMA, PIVMIN, R); } //-- dlangb -------------------------------------------------------------------- DOUBLE LAPACK_DECL(dlangb)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlangb"); return LAPACK_IMPL(dlangb)(NORM, N, KL, KU, AB, LDAB, WORK); } //-- dlange -------------------------------------------------------------------- DOUBLE LAPACK_DECL(dlange)(const char *NORM, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlange"); return LAPACK_IMPL(dlange)(NORM, M, N, A, LDA, WORK); } //-- dlangt -------------------------------------------------------------------- DOUBLE LAPACK_DECL(dlangt)(const char *NORM, const INTEGER *N, const DOUBLE *DL, const DOUBLE *D, const DOUBLE *DU) { DEBUG_LAPACK_STUB("dlangt"); return LAPACK_IMPL(dlangt)(NORM, N, DL, D, DU); } //-- dlanhs -------------------------------------------------------------------- DOUBLE LAPACK_DECL(dlanhs)(const char *NORM, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlanhs"); return LAPACK_IMPL(dlanhs)(NORM, N, A, LDA, WORK); } //-- dlansb -------------------------------------------------------------------- DOUBLE LAPACK_DECL(dlansb)(const char *NORM, const char *UPLO, const INTEGER *N, const INTEGER *K, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlansb"); return LAPACK_IMPL(dlansb)(NORM, UPLO, N, K, AB, LDAB, WORK); } //-- dlansf -------------------------------------------------------------------- DOUBLE LAPACK_DECL(dlansf)(const char *NORM, const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE *A, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlansf"); return LAPACK_IMPL(dlansf)(NORM, TRANSR, UPLO, N, A, WORK); } //-- dlansp -------------------------------------------------------------------- DOUBLE LAPACK_DECL(dlansp)(const char *NORM, const char *UPLO, const INTEGER *N, const DOUBLE *AP, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlansp"); return LAPACK_IMPL(dlansp)(NORM, UPLO, N, AP, WORK); } //-- dlanst -------------------------------------------------------------------- DOUBLE LAPACK_DECL(dlanst)(const char *NORM, const INTEGER *N, const DOUBLE *D, const DOUBLE *E) { DEBUG_LAPACK_STUB("dlanst"); return LAPACK_IMPL(dlanst)(NORM, N, D, E); } //-- dlansy -------------------------------------------------------------------- DOUBLE LAPACK_DECL(dlansy)(const char *NORM, const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlansy"); return LAPACK_IMPL(dlansy)(NORM, UPLO, N, A, LDA, WORK); } //-- dlantb -------------------------------------------------------------------- DOUBLE LAPACK_DECL(dlantb)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *K, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlantb"); return LAPACK_IMPL(dlantb)(NORM, UPLO, DIAG, N, K, AB, LDAB, WORK); } //-- dlantp -------------------------------------------------------------------- DOUBLE LAPACK_DECL(dlantp)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const DOUBLE *AP, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlantp"); return LAPACK_IMPL(dlantp)(NORM, UPLO, DIAG, N, AP, WORK); } //-- dlantr -------------------------------------------------------------------- DOUBLE LAPACK_DECL(dlantr)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlantr"); return LAPACK_IMPL(dlantr)(NORM, UPLO, DIAG, M, N, A, LDA, WORK); } //-- dlanv2 -------------------------------------------------------------------- void LAPACK_DECL(dlanv2)(DOUBLE *A, DOUBLE *B, DOUBLE *C, DOUBLE *D, DOUBLE *RT1R, DOUBLE *RT1I, DOUBLE *RT2R, DOUBLE *RT2I, DOUBLE *CS, DOUBLE *SN) { DEBUG_LAPACK_STUB("dlanv2"); LAPACK_IMPL(dlanv2)(A, B, C, D, RT1R, RT1I, RT2R, RT2I, CS, SN); } //-- dlapll -------------------------------------------------------------------- void LAPACK_DECL(dlapll)(const INTEGER *N, DOUBLE *X, const INTEGER *INCX, DOUBLE *Y, const INTEGER *INCY, DOUBLE *SSMIN) { DEBUG_LAPACK_STUB("dlapll"); LAPACK_IMPL(dlapll)(N, X, INCX, Y, INCY, SSMIN); } //-- dlapmr -------------------------------------------------------------------- void LAPACK_DECL(dlapmr)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, DOUBLE *X, const INTEGER *LDX, INTEGER *K) { DEBUG_LAPACK_STUB("dlapmr"); LAPACK_IMPL(dlapmr)(FORWRD, M, N, X, LDX, K); } //-- dlapmt -------------------------------------------------------------------- void LAPACK_DECL(dlapmt)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, DOUBLE *X, const INTEGER *LDX, INTEGER *K) { DEBUG_LAPACK_STUB("dlapmt"); LAPACK_IMPL(dlapmt)(FORWRD, M, N, X, LDX, K); } //-- dlapy2 -------------------------------------------------------------------- DOUBLE LAPACK_DECL(dlapy2)(const DOUBLE *X, const DOUBLE *Y) { DEBUG_LAPACK_STUB("dlapy2"); return LAPACK_IMPL(dlapy2)(X, Y); } //-- dlapy3 -------------------------------------------------------------------- DOUBLE LAPACK_DECL(dlapy3)(const DOUBLE *X, const DOUBLE *Y, const DOUBLE *Z) { DEBUG_LAPACK_STUB("dlapy3"); return LAPACK_IMPL(dlapy3)(X, Y, Z); } //-- dlaqgb -------------------------------------------------------------------- void LAPACK_DECL(dlaqgb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *R, const DOUBLE *C, const DOUBLE *ROWCND, const DOUBLE *COLCND, const DOUBLE *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("dlaqgb"); LAPACK_IMPL(dlaqgb)(M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND, AMAX, EQUED); } //-- dlaqge -------------------------------------------------------------------- void LAPACK_DECL(dlaqge)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const DOUBLE *R, const DOUBLE *C, const DOUBLE *ROWCND, const DOUBLE *COLCND, const DOUBLE *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("dlaqge"); LAPACK_IMPL(dlaqge)(M, N, A, LDA, R, C, ROWCND, COLCND, AMAX, EQUED); } //-- dlaqp2 -------------------------------------------------------------------- void LAPACK_DECL(dlaqp2)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, DOUBLE *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE *TAU, DOUBLE *VN1, DOUBLE *VN2, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlaqp2"); LAPACK_IMPL(dlaqp2)(M, N, OFFSET, A, LDA, JPVT, TAU, VN1, VN2, WORK); } //-- dlaqps -------------------------------------------------------------------- void LAPACK_DECL(dlaqps)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, const INTEGER *NB, INTEGER *KB, DOUBLE *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE *TAU, DOUBLE *VN1, DOUBLE *VN2, DOUBLE *AUXV, DOUBLE *F, const INTEGER *LDF) { DEBUG_LAPACK_STUB("dlaqps"); LAPACK_IMPL(dlaqps)(M, N, OFFSET, NB, KB, A, LDA, JPVT, TAU, VN1, VN2, AUXV, F, LDF); } //-- dlaqr0 -------------------------------------------------------------------- void LAPACK_DECL(dlaqr0)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *H, const INTEGER *LDH, DOUBLE *WR, DOUBLE *WI, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaqr0"); LAPACK_IMPL(dlaqr0)(WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI, ILOZ, IHIZ, Z, LDZ, WORK, LWORK, INFO); } //-- dlaqr1 -------------------------------------------------------------------- void LAPACK_DECL(dlaqr1)(const INTEGER *N, const DOUBLE *H, const INTEGER *LDH, const DOUBLE *SR1, const DOUBLE *SI1, const DOUBLE *SR2, const DOUBLE *SI2, DOUBLE *V) { DEBUG_LAPACK_STUB("dlaqr1"); LAPACK_IMPL(dlaqr1)(N, H, LDH, SR1, SI1, SR2, SI2, V); } //-- dlaqr2 -------------------------------------------------------------------- void LAPACK_DECL(dlaqr2)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, DOUBLE *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, DOUBLE *SR, DOUBLE *SI, DOUBLE *V, const INTEGER *LDV, const INTEGER *NH, DOUBLE *T, const INTEGER *LDT, const INTEGER *NV, DOUBLE *WV, const INTEGER *LDWV, DOUBLE *WORK, const INTEGER *LWORK) { DEBUG_LAPACK_STUB("dlaqr2"); LAPACK_IMPL(dlaqr2)(WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, IHIZ, Z, LDZ, NS, ND, SR, SI, V, LDV, NH, T, LDT, NV, WV, LDWV, WORK, LWORK); } //-- dlaqr3 -------------------------------------------------------------------- void LAPACK_DECL(dlaqr3)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, DOUBLE *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, DOUBLE *SR, DOUBLE *SI, DOUBLE *V, const INTEGER *LDV, const INTEGER *NH, DOUBLE *T, const INTEGER *LDT, const INTEGER *NV, DOUBLE *WV, const INTEGER *LDWV, DOUBLE *WORK, const INTEGER *LWORK) { DEBUG_LAPACK_STUB("dlaqr3"); LAPACK_IMPL(dlaqr3)(WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, IHIZ, Z, LDZ, NS, ND, SR, SI, V, LDV, NH, T, LDT, NV, WV, LDWV, WORK, LWORK); } //-- dlaqr4 -------------------------------------------------------------------- void LAPACK_DECL(dlaqr4)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *H, const INTEGER *LDH, DOUBLE *WR, DOUBLE *WI, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaqr4"); LAPACK_IMPL(dlaqr4)(WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI, ILOZ, IHIZ, Z, LDZ, WORK, LWORK, INFO); } //-- dlaqr5 -------------------------------------------------------------------- void LAPACK_DECL(dlaqr5)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *KACC22, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NSHFTS, DOUBLE *SR, DOUBLE *SI, DOUBLE *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *V, const INTEGER *LDV, DOUBLE *U, const INTEGER *LDU, const INTEGER *NV, DOUBLE *WV, const INTEGER *LDWV, const INTEGER *NH, DOUBLE *WH, const INTEGER *LDWH) { DEBUG_LAPACK_STUB("dlaqr5"); LAPACK_IMPL(dlaqr5)(WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, SR, SI, H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV, WV, LDWV, NH, WH, LDWH); } //-- dlaqsb -------------------------------------------------------------------- void LAPACK_DECL(dlaqsb)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("dlaqsb"); LAPACK_IMPL(dlaqsb)(UPLO, N, KD, AB, LDAB, S, SCOND, AMAX, EQUED); } //-- dlaqsp -------------------------------------------------------------------- void LAPACK_DECL(dlaqsp)(const char *UPLO, const INTEGER *N, DOUBLE *AP, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("dlaqsp"); LAPACK_IMPL(dlaqsp)(UPLO, N, AP, S, SCOND, AMAX, EQUED); } //-- dlaqsy -------------------------------------------------------------------- void LAPACK_DECL(dlaqsy)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("dlaqsy"); LAPACK_IMPL(dlaqsy)(UPLO, N, A, LDA, S, SCOND, AMAX, EQUED); } //-- dlaqtr -------------------------------------------------------------------- void LAPACK_DECL(dlaqtr)(const LOGICAL *LTRAN, const LOGICAL *LREAL, const INTEGER *N, const DOUBLE *T, const INTEGER *LDT, const DOUBLE *B, const DOUBLE *W, DOUBLE *SCALE, DOUBLE *X, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlaqtr"); LAPACK_IMPL(dlaqtr)(LTRAN, LREAL, N, T, LDT, B, W, SCALE, X, WORK, INFO); } //-- dlar1v -------------------------------------------------------------------- void LAPACK_DECL(dlar1v)(const INTEGER *N, const INTEGER *B1, const INTEGER *BN, const DOUBLE *LAMBDA, const DOUBLE *D, const DOUBLE *L, const DOUBLE *LD, const DOUBLE *LLD, const DOUBLE *PIVMIN, const DOUBLE *GAPTOL, DOUBLE *Z, const LOGICAL *WANTNC, INTEGER *NEGCNT, DOUBLE *ZTZ, DOUBLE *MINGMA, INTEGER *R, INTEGER *ISUPPZ, DOUBLE *NRMINV, DOUBLE *RESID, DOUBLE *RQCORR, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlar1v"); LAPACK_IMPL(dlar1v)(N, B1, BN, LAMBDA, D, L, LD, LLD, PIVMIN, GAPTOL, Z, WANTNC, NEGCNT, ZTZ, MINGMA, R, ISUPPZ, NRMINV, RESID, RQCORR, WORK); } //-- dlar2v -------------------------------------------------------------------- void LAPACK_DECL(dlar2v)(const INTEGER *N, DOUBLE *X, DOUBLE *Y, DOUBLE *Z, const INTEGER *INCX, const DOUBLE *C, const DOUBLE *S, const INTEGER *INCC) { DEBUG_LAPACK_STUB("dlar2v"); LAPACK_IMPL(dlar2v)(N, X, Y, Z, INCX, C, S, INCC); } //-- dlarf --------------------------------------------------------------------- void LAPACK_DECL(dlarf)(const char *SIDE, const INTEGER *M, const INTEGER *N, const DOUBLE *V, const INTEGER *INCV, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlarf"); LAPACK_IMPL(dlarf)(SIDE, M, N, V, INCV, TAU, C, LDC, WORK); } //-- dlarfb -------------------------------------------------------------------- void LAPACK_DECL(dlarfb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *V, const INTEGER *LDV, const DOUBLE *T, const INTEGER *LDT, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LDWORK) { DEBUG_LAPACK_STUB("dlarfb"); LAPACK_IMPL(dlarfb)(SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV, T, LDT, C, LDC, WORK, LDWORK); } //-- dlarfg -------------------------------------------------------------------- void LAPACK_DECL(dlarfg)(const INTEGER *N, DOUBLE *ALPHA, DOUBLE *X, const INTEGER *INCX, DOUBLE *TAU) { DEBUG_LAPACK_STUB("dlarfg"); LAPACK_IMPL(dlarfg)(N, ALPHA, X, INCX, TAU); } //-- dlarfgp ------------------------------------------------------------------- void LAPACK_DECL(dlarfgp)(const INTEGER *N, DOUBLE *ALPHA, DOUBLE *X, const INTEGER *INCX, DOUBLE *TAU) { DEBUG_LAPACK_STUB("dlarfgp"); LAPACK_IMPL(dlarfgp)(N, ALPHA, X, INCX, TAU); } //-- dlarft -------------------------------------------------------------------- void LAPACK_DECL(dlarft)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, DOUBLE *V, const INTEGER *LDV, const DOUBLE *TAU, DOUBLE *T, const INTEGER *LDT) { DEBUG_LAPACK_STUB("dlarft"); LAPACK_IMPL(dlarft)(DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT); } //-- dlarfx -------------------------------------------------------------------- void LAPACK_DECL(dlarfx)(const char *SIDE, const INTEGER *M, const INTEGER *N, const DOUBLE *V, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlarfx"); LAPACK_IMPL(dlarfx)(SIDE, M, N, V, TAU, C, LDC, WORK); } //-- dlargv -------------------------------------------------------------------- void LAPACK_DECL(dlargv)(const INTEGER *N, DOUBLE *X, const INTEGER *INCX, DOUBLE *Y, const INTEGER *INCY, DOUBLE *C, const INTEGER *INCC) { DEBUG_LAPACK_STUB("dlargv"); LAPACK_IMPL(dlargv)(N, X, INCX, Y, INCY, C, INCC); } //-- dlarnv -------------------------------------------------------------------- void LAPACK_DECL(dlarnv)(const INTEGER *IDIST, INTEGER *ISEED, const INTEGER *N, DOUBLE *X) { DEBUG_LAPACK_STUB("dlarnv"); LAPACK_IMPL(dlarnv)(IDIST, ISEED, N, X); } //-- dlarra -------------------------------------------------------------------- void LAPACK_DECL(dlarra)(const INTEGER *N, const DOUBLE *D, DOUBLE *E, DOUBLE *E2, const DOUBLE *SPLTOL, const DOUBLE *TNRM, INTEGER *NSPLIT, INTEGER *ISPLIT, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlarra"); LAPACK_IMPL(dlarra)(N, D, E, E2, SPLTOL, TNRM, NSPLIT, ISPLIT, INFO); } //-- dlarrb -------------------------------------------------------------------- void LAPACK_DECL(dlarrb)(const INTEGER *N, const DOUBLE *D, const DOUBLE *LLD, const INTEGER *IFIRST, const INTEGER *ILAST, const DOUBLE *RTOL1, const DOUBLE *RTOL2, const INTEGER *OFFSET, DOUBLE *W, DOUBLE *WGAP, DOUBLE *WERR, DOUBLE *WORK, INTEGER *IWORK, const DOUBLE *PIVMIN, const DOUBLE *SPDIAM, const INTEGER *TWIST, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlarrb"); LAPACK_IMPL(dlarrb)(N, D, LLD, IFIRST, ILAST, RTOL1, RTOL2, OFFSET, W, WGAP, WERR, WORK, IWORK, PIVMIN, SPDIAM, TWIST, INFO); } //-- dlarrc -------------------------------------------------------------------- void LAPACK_DECL(dlarrc)(const char *JOBT, const INTEGER *N, const DOUBLE *VL, const DOUBLE *VU, const DOUBLE *D, const DOUBLE *E, const DOUBLE *PIVMIN, INTEGER *EIGCNT, INTEGER *LCNT, INTEGER *RCNT, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlarrc"); LAPACK_IMPL(dlarrc)(JOBT, N, VL, VU, D, E, PIVMIN, EIGCNT, LCNT, RCNT, INFO); } //-- dlarrd -------------------------------------------------------------------- void LAPACK_DECL(dlarrd)(const char *RANGE, const char *ORDER, const INTEGER *N, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *GERS, const DOUBLE *RELTOL, const DOUBLE *D, const DOUBLE *E, const DOUBLE *E2, const DOUBLE *PIVMIN, const INTEGER *NSPLIT, const INTEGER *ISPLIT, INTEGER *M, DOUBLE *W, DOUBLE *WERR, DOUBLE *WL, DOUBLE *WU, INTEGER *IBLOCK, INTEGER *INDEXW, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlarrd"); LAPACK_IMPL(dlarrd)(RANGE, ORDER, N, VL, VU, IL, IU, GERS, RELTOL, D, E, E2, PIVMIN, NSPLIT, ISPLIT, M, W, WERR, WL, WU, IBLOCK, INDEXW, WORK, IWORK, INFO); } //-- dlarre -------------------------------------------------------------------- void LAPACK_DECL(dlarre)(const char *RANGE, const INTEGER *N, DOUBLE *VL, DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, DOUBLE *D, DOUBLE *E, DOUBLE *E2, const DOUBLE *RTOL1, const DOUBLE *RTOL2, const DOUBLE *SPLTOL, INTEGER *NSPLIT, INTEGER *ISPLIT, INTEGER *M, DOUBLE *W, DOUBLE *WERR, DOUBLE *WGAP, INTEGER *IBLOCK, INTEGER *INDEXW, DOUBLE *GERS, DOUBLE *PIVMIN, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlarre"); LAPACK_IMPL(dlarre)(RANGE, N, VL, VU, IL, IU, D, E, E2, RTOL1, RTOL2, SPLTOL, NSPLIT, ISPLIT, M, W, WERR, WGAP, IBLOCK, INDEXW, GERS, PIVMIN, WORK, IWORK, INFO); } //-- dlarrf -------------------------------------------------------------------- void LAPACK_DECL(dlarrf)(const INTEGER *N, const DOUBLE *D, const DOUBLE *L, const DOUBLE *LD, const INTEGER *CLSTRT, const INTEGER *CLEND, const DOUBLE *W, DOUBLE *WGAP, const DOUBLE *WERR, const DOUBLE *SPDIAM, const DOUBLE *CLGAPL, const DOUBLE *CLGAPR, const DOUBLE *PIVMIN, DOUBLE *SIGMA, DOUBLE *DPLUS, DOUBLE *LPLUS, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlarrf"); LAPACK_IMPL(dlarrf)(N, D, L, LD, CLSTRT, CLEND, W, WGAP, WERR, SPDIAM, CLGAPL, CLGAPR, PIVMIN, SIGMA, DPLUS, LPLUS, WORK, INFO); } //-- dlarrj -------------------------------------------------------------------- void LAPACK_DECL(dlarrj)(const INTEGER *N, const DOUBLE *D, const DOUBLE *E2, const INTEGER *IFIRST, const INTEGER *ILAST, const DOUBLE *RTOL, const INTEGER *OFFSET, DOUBLE *W, DOUBLE *WERR, DOUBLE *WORK, INTEGER *IWORK, const DOUBLE *PIVMIN, const DOUBLE *SPDIAM, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlarrj"); LAPACK_IMPL(dlarrj)(N, D, E2, IFIRST, ILAST, RTOL, OFFSET, W, WERR, WORK, IWORK, PIVMIN, SPDIAM, INFO); } //-- dlarrk -------------------------------------------------------------------- void LAPACK_DECL(dlarrk)(const INTEGER *N, const INTEGER *IW, const DOUBLE *GL, const DOUBLE *GU, const DOUBLE *D, const DOUBLE *E2, const DOUBLE *PIVMIN, const DOUBLE *RELTOL, DOUBLE *W, DOUBLE *WERR, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlarrk"); LAPACK_IMPL(dlarrk)(N, IW, GL, GU, D, E2, PIVMIN, RELTOL, W, WERR, INFO); } //-- dlarrr -------------------------------------------------------------------- void LAPACK_DECL(dlarrr)(const INTEGER *N, const DOUBLE *D, DOUBLE *E, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlarrr"); LAPACK_IMPL(dlarrr)(N, D, E, INFO); } //-- dlarrv -------------------------------------------------------------------- void LAPACK_DECL(dlarrv)(const INTEGER *N, const DOUBLE *VL, const DOUBLE *VU, DOUBLE *D, DOUBLE *L, const DOUBLE *PIVMIN, const INTEGER *ISPLIT, const INTEGER *M, const INTEGER *DOL, const INTEGER *DOU, const DOUBLE *MINRGP, const DOUBLE *RTOL1, const DOUBLE *RTOL2, DOUBLE *W, DOUBLE *WERR, DOUBLE *WGAP, const INTEGER *IBLOCK, const INTEGER *INDEXW, const DOUBLE *GERS, DOUBLE *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlarrv"); LAPACK_IMPL(dlarrv)(N, VL, VU, D, L, PIVMIN, ISPLIT, M, DOL, DOU, MINRGP, RTOL1, RTOL2, W, WERR, WGAP, IBLOCK, INDEXW, GERS, Z, LDZ, ISUPPZ, WORK, IWORK, INFO); } //-- dlarscl2 ------------------------------------------------------------------ void LAPACK_DECL(dlarscl2)(const INTEGER *M, const INTEGER *N, const DOUBLE *D, DOUBLE *X, const INTEGER *LDX) { DEBUG_LAPACK_STUB("dlarscl2"); LAPACK_IMPL(dlarscl2)(M, N, D, X, LDX); } //-- dlartg -------------------------------------------------------------------- void LAPACK_DECL(dlartg)(const DOUBLE *F, const DOUBLE *G, DOUBLE *CS, DOUBLE *SN, DOUBLE *R) { DEBUG_LAPACK_STUB("dlartg"); LAPACK_IMPL(dlartg)(F, G, CS, SN, R); } //-- dlartgp ------------------------------------------------------------------- void LAPACK_DECL(dlartgp)(const DOUBLE *F, const DOUBLE *G, DOUBLE *CS, DOUBLE *SN, DOUBLE *R) { DEBUG_LAPACK_STUB("dlartgp"); LAPACK_IMPL(dlartgp)(F, G, CS, SN, R); } //-- dlartgs ------------------------------------------------------------------- void LAPACK_DECL(dlartgs)(const DOUBLE *X, const DOUBLE *Y, const DOUBLE *SIGMA, DOUBLE *CS, DOUBLE *SN) { DEBUG_LAPACK_STUB("dlartgs"); LAPACK_IMPL(dlartgs)(X, Y, SIGMA, CS, SN); } //-- dlartv -------------------------------------------------------------------- void LAPACK_DECL(dlartv)(const INTEGER *N, DOUBLE *X, const INTEGER *INCX, DOUBLE *Y, const INTEGER *INCY, const DOUBLE *C, const DOUBLE *S, const INTEGER *INCC) { DEBUG_LAPACK_STUB("dlartv"); LAPACK_IMPL(dlartv)(N, X, INCX, Y, INCY, C, S, INCC); } //-- dlaruv -------------------------------------------------------------------- void LAPACK_DECL(dlaruv)(INTEGER *ISEED, const INTEGER *N, DOUBLE *X) { DEBUG_LAPACK_STUB("dlaruv"); LAPACK_IMPL(dlaruv)(ISEED, N, X); } //-- dlarz --------------------------------------------------------------------- void LAPACK_DECL(dlarz)(const char *SIDE, const INTEGER *M, const INTEGER *N, const INTEGER *L, const DOUBLE *V, const INTEGER *INCV, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlarz"); LAPACK_IMPL(dlarz)(SIDE, M, N, L, V, INCV, TAU, C, LDC, WORK); } //-- dlarzb -------------------------------------------------------------------- void LAPACK_DECL(dlarzb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const DOUBLE *V, const INTEGER *LDV, const DOUBLE *T, const INTEGER *LDT, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LDWORK) { DEBUG_LAPACK_STUB("dlarzb"); LAPACK_IMPL(dlarzb)(SIDE, TRANS, DIRECT, STOREV, M, N, K, L, V, LDV, T, LDT, C, LDC, WORK, LDWORK); } //-- dlarzt -------------------------------------------------------------------- void LAPACK_DECL(dlarzt)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, DOUBLE *V, const INTEGER *LDV, const DOUBLE *TAU, DOUBLE *T, const INTEGER *LDT) { DEBUG_LAPACK_STUB("dlarzt"); LAPACK_IMPL(dlarzt)(DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT); } //-- dlas2 --------------------------------------------------------------------- void LAPACK_DECL(dlas2)(const DOUBLE *F, const DOUBLE *G, const DOUBLE *H, DOUBLE *SSMIN, DOUBLE *SSMAX) { DEBUG_LAPACK_STUB("dlas2"); LAPACK_IMPL(dlas2)(F, G, H, SSMIN, SSMAX); } //-- dlascl -------------------------------------------------------------------- void LAPACK_DECL(dlascl)(const char *TYPE, const INTEGER *KL, const INTEGER *KU, const DOUBLE *CFROM, const DOUBLE *CTO, const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlascl"); LAPACK_IMPL(dlascl)(TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO); } //-- dlascl2 ------------------------------------------------------------------- void LAPACK_DECL(dlascl2)(const INTEGER *M, const INTEGER *N, const DOUBLE *D, DOUBLE *X, const INTEGER *LDX) { DEBUG_LAPACK_STUB("dlascl2"); LAPACK_IMPL(dlascl2)(M, N, D, X, LDX); } //-- dlasd0 -------------------------------------------------------------------- void LAPACK_DECL(dlasd0)(const INTEGER *N, const INTEGER *SQRE, DOUBLE *D, const DOUBLE *E, DOUBLE *U, const INTEGER *LDU, DOUBLE *VT, const INTEGER *LDVT, const INTEGER *SMLSIZ, INTEGER *IWORK, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlasd0"); LAPACK_IMPL(dlasd0)(N, SQRE, D, E, U, LDU, VT, LDVT, SMLSIZ, IWORK, WORK, INFO); } //-- dlasd1 -------------------------------------------------------------------- void LAPACK_DECL(dlasd1)(const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, DOUBLE *D, DOUBLE *ALPHA, DOUBLE *BETA, DOUBLE *U, const INTEGER *LDU, DOUBLE *VT, const INTEGER *LDVT, INTEGER *IDXQ, INTEGER *IWORK, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlasd1"); LAPACK_IMPL(dlasd1)(NL, NR, SQRE, D, ALPHA, BETA, U, LDU, VT, LDVT, IDXQ, IWORK, WORK, INFO); } //-- dlasd2 -------------------------------------------------------------------- void LAPACK_DECL(dlasd2)(const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, INTEGER *K, DOUBLE *D, DOUBLE *Z, const DOUBLE *ALPHA, const DOUBLE *BETA, DOUBLE *U, const INTEGER *LDU, DOUBLE *VT, const INTEGER *LDVT, DOUBLE *DSIGMA, DOUBLE *U2, const INTEGER *LDU2, DOUBLE *VT2, const INTEGER *LDVT2, INTEGER *IDXP, INTEGER *IDX, INTEGER *IDXC, INTEGER *IDXQ, INTEGER *COLTYP, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlasd2"); LAPACK_IMPL(dlasd2)(NL, NR, SQRE, K, D, Z, ALPHA, BETA, U, LDU, VT, LDVT, DSIGMA, U2, LDU2, VT2, LDVT2, IDXP, IDX, IDXC, IDXQ, COLTYP, INFO); } //-- dlasd3 -------------------------------------------------------------------- void LAPACK_DECL(dlasd3)(const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, const INTEGER *K, DOUBLE *D, DOUBLE *Q, const INTEGER *LDQ, const DOUBLE *DSIGMA, DOUBLE *U, const INTEGER *LDU, DOUBLE *U2, const INTEGER *LDU2, DOUBLE *VT, const INTEGER *LDVT, DOUBLE *VT2, const INTEGER *LDVT2, const INTEGER *IDXC, const INTEGER *CTOT, const DOUBLE *Z, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlasd3"); LAPACK_IMPL(dlasd3)(NL, NR, SQRE, K, D, Q, LDQ, DSIGMA, U, LDU, U2, LDU2, VT, LDVT, VT2, LDVT2, IDXC, CTOT, Z, INFO); } //-- dlasd4 -------------------------------------------------------------------- void LAPACK_DECL(dlasd4)(const INTEGER *N, const INTEGER *I, const DOUBLE *D, const DOUBLE *Z, DOUBLE *DELTA, const DOUBLE *RHO, DOUBLE *SIGMA, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlasd4"); LAPACK_IMPL(dlasd4)(N, I, D, Z, DELTA, RHO, SIGMA, WORK, INFO); } //-- dlasd5 -------------------------------------------------------------------- void LAPACK_DECL(dlasd5)(const INTEGER *I, const DOUBLE *D, const DOUBLE *Z, DOUBLE *DELTA, const DOUBLE *RHO, DOUBLE *DSIGMA, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlasd5"); LAPACK_IMPL(dlasd5)(I, D, Z, DELTA, RHO, DSIGMA, WORK); } //-- dlasd6 -------------------------------------------------------------------- void LAPACK_DECL(dlasd6)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, DOUBLE *D, DOUBLE *VF, DOUBLE *VL, DOUBLE *ALPHA, DOUBLE *BETA, INTEGER *IDXQ, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, const INTEGER *LDGCOL, DOUBLE *GIVNUM, const INTEGER *LDGNUM, DOUBLE *POLES, DOUBLE *DIFL, DOUBLE *DIFR, DOUBLE *Z, INTEGER *K, DOUBLE *C, DOUBLE *S, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlasd6"); LAPACK_IMPL(dlasd6)(ICOMPQ, NL, NR, SQRE, D, VF, VL, ALPHA, BETA, IDXQ, PERM, GIVPTR, GIVCOL, LDGCOL, GIVNUM, LDGNUM, POLES, DIFL, DIFR, Z, K, C, S, WORK, IWORK, INFO); } //-- dlasd7 -------------------------------------------------------------------- void LAPACK_DECL(dlasd7)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, INTEGER *K, DOUBLE *D, DOUBLE *Z, DOUBLE *ZW, DOUBLE *VF, DOUBLE *VFW, DOUBLE *VL, DOUBLE *VLW, const DOUBLE *ALPHA, const DOUBLE *BETA, DOUBLE *DSIGMA, INTEGER *IDX, INTEGER *IDXP, const INTEGER *IDXQ, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, const INTEGER *LDGCOL, DOUBLE *GIVNUM, const INTEGER *LDGNUM, DOUBLE *C, DOUBLE *S, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlasd7"); LAPACK_IMPL(dlasd7)(ICOMPQ, NL, NR, SQRE, K, D, Z, ZW, VF, VFW, VL, VLW, ALPHA, BETA, DSIGMA, IDX, IDXP, IDXQ, PERM, GIVPTR, GIVCOL, LDGCOL, GIVNUM, LDGNUM, C, S, INFO); } //-- dlasd8 -------------------------------------------------------------------- void LAPACK_DECL(dlasd8)(const INTEGER *ICOMPQ, const INTEGER *K, DOUBLE *D, DOUBLE *Z, DOUBLE *VF, DOUBLE *VL, DOUBLE *DIFL, DOUBLE *DIFR, const INTEGER *LDDIFR, DOUBLE *DSIGMA, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlasd8"); LAPACK_IMPL(dlasd8)(ICOMPQ, K, D, Z, VF, VL, DIFL, DIFR, LDDIFR, DSIGMA, WORK, INFO); } //-- dlasda -------------------------------------------------------------------- void LAPACK_DECL(dlasda)(const INTEGER *ICOMPQ, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *SQRE, DOUBLE *D, const DOUBLE *E, DOUBLE *U, const INTEGER *LDU, DOUBLE *VT, INTEGER *K, DOUBLE *DIFL, DOUBLE *DIFR, DOUBLE *Z, DOUBLE *POLES, INTEGER *GIVPTR, INTEGER *GIVCOL, const INTEGER *LDGCOL, INTEGER *PERM, DOUBLE *GIVNUM, DOUBLE *C, DOUBLE *S, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlasda"); LAPACK_IMPL(dlasda)(ICOMPQ, SMLSIZ, N, SQRE, D, E, U, LDU, VT, K, DIFL, DIFR, Z, POLES, GIVPTR, GIVCOL, LDGCOL, PERM, GIVNUM, C, S, WORK, IWORK, INFO); } //-- dlasdq -------------------------------------------------------------------- void LAPACK_DECL(dlasdq)(const char *UPLO, const INTEGER *SQRE, const INTEGER *N, const INTEGER *NCVT, const INTEGER *NRU, const INTEGER *NCC, DOUBLE *D, DOUBLE *E, DOUBLE *VT, const INTEGER *LDVT, DOUBLE *U, const INTEGER *LDU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlasdq"); LAPACK_IMPL(dlasdq)(UPLO, SQRE, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C, LDC, WORK, INFO); } //-- dlasdt -------------------------------------------------------------------- void LAPACK_DECL(dlasdt)(const INTEGER *N, INTEGER *LVL, INTEGER *ND, INTEGER *INODE, INTEGER *NDIML, INTEGER *NDIMR, const INTEGER *MSUB) { DEBUG_LAPACK_STUB("dlasdt"); LAPACK_IMPL(dlasdt)(N, LVL, ND, INODE, NDIML, NDIMR, MSUB); } //-- dlaset -------------------------------------------------------------------- void LAPACK_DECL(dlaset)(const char *UPLO, const INTEGER *M, const INTEGER *N, const DOUBLE *ALPHA, const DOUBLE *BETA, DOUBLE *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("dlaset"); LAPACK_IMPL(dlaset)(UPLO, M, N, ALPHA, BETA, A, LDA); } //-- dlasq1 -------------------------------------------------------------------- void LAPACK_DECL(dlasq1)(const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlasq1"); LAPACK_IMPL(dlasq1)(N, D, E, WORK, INFO); } //-- dlasq2 -------------------------------------------------------------------- void LAPACK_DECL(dlasq2)(const INTEGER *N, DOUBLE *Z, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlasq2"); LAPACK_IMPL(dlasq2)(N, Z, INFO); } //-- dlasq3 -------------------------------------------------------------------- void LAPACK_DECL(dlasq3)(const INTEGER *I0, INTEGER *N0, const DOUBLE *Z, INTEGER *PP, DOUBLE *DMIN, DOUBLE *SIGMA, DOUBLE *DESIG, const DOUBLE *QMAX, INTEGER *NFAIL, INTEGER *ITER, INTEGER *NDIV, const LOGICAL *IEEE, INTEGER *TTYPE, DOUBLE *DMIN1, DOUBLE *DMIN2, DOUBLE *DN, DOUBLE *DN1, DOUBLE *DN2, DOUBLE *G, DOUBLE *TAU) { DEBUG_LAPACK_STUB("dlasq3"); LAPACK_IMPL(dlasq3)(I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL, ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1, DN2, G, TAU); } //-- dlasq4 -------------------------------------------------------------------- void LAPACK_DECL(dlasq4)(const INTEGER *I0, const INTEGER *N0, const DOUBLE *Z, const INTEGER *PP, const INTEGER *N0IN, const DOUBLE *DMIN, const DOUBLE *DMIN1, const DOUBLE *DMIN2, const DOUBLE *DN, const DOUBLE *DN1, const DOUBLE *DN2, DOUBLE *TAU, INTEGER *TTYPE, DOUBLE *G) { DEBUG_LAPACK_STUB("dlasq4"); LAPACK_IMPL(dlasq4)(I0, N0, Z, PP, N0IN, DMIN, DMIN1, DMIN2, DN, DN1, DN2, TAU, TTYPE, G); } //-- dlasq5 -------------------------------------------------------------------- void LAPACK_DECL(dlasq5)(const INTEGER *I0, const INTEGER *N0, const DOUBLE *Z, const INTEGER *PP, const DOUBLE *TAU, DOUBLE *DMIN, DOUBLE *DMIN1, DOUBLE *DMIN2, DOUBLE *DN, DOUBLE *DNM1, DOUBLE *DNM2, const LOGICAL *IEEE) { DEBUG_LAPACK_STUB("dlasq5"); LAPACK_IMPL(dlasq5)(I0, N0, Z, PP, TAU, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, IEEE); } //-- dlasq6 -------------------------------------------------------------------- void LAPACK_DECL(dlasq6)(const INTEGER *I0, const INTEGER *N0, const DOUBLE *Z, const INTEGER *PP, DOUBLE *DMIN, DOUBLE *DMIN1, DOUBLE *DMIN2, DOUBLE *DN, DOUBLE *DNM1, DOUBLE *DNM2) { DEBUG_LAPACK_STUB("dlasq6"); LAPACK_IMPL(dlasq6)(I0, N0, Z, PP, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2); } //-- dlasr --------------------------------------------------------------------- void LAPACK_DECL(dlasr)(const char *SIDE, const char *PIVOT, const char *DIRECT, const INTEGER *M, const INTEGER *N, const DOUBLE *C, const DOUBLE *S, DOUBLE *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("dlasr"); LAPACK_IMPL(dlasr)(SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA); } //-- dlasrt -------------------------------------------------------------------- void LAPACK_DECL(dlasrt)(const char *ID, const INTEGER *N, DOUBLE *D, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlasrt"); LAPACK_IMPL(dlasrt)(ID, N, D, INFO); } //-- dlassq -------------------------------------------------------------------- void LAPACK_DECL(dlassq)(const INTEGER *N, const DOUBLE *X, const INTEGER *INCX, DOUBLE *SCALE, DOUBLE *SUMSQ) { DEBUG_LAPACK_STUB("dlassq"); LAPACK_IMPL(dlassq)(N, X, INCX, SCALE, SUMSQ); } //-- dlasv2 -------------------------------------------------------------------- void LAPACK_DECL(dlasv2)(const DOUBLE *F, const DOUBLE *G, const DOUBLE *H, DOUBLE *SSMIN, DOUBLE *SSMAX, DOUBLE *SNR, DOUBLE *CSR, DOUBLE *SNL, DOUBLE *CSL) { DEBUG_LAPACK_STUB("dlasv2"); LAPACK_IMPL(dlasv2)(F, G, H, SSMIN, SSMAX, SNR, CSR, SNL, CSL); } //-- dlaswp -------------------------------------------------------------------- void LAPACK_DECL(dlaswp)(const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const INTEGER *K1, const INTEGER *K2, const INTEGER *IPIV, const INTEGER *INCX) { DEBUG_LAPACK_STUB("dlaswp"); LAPACK_IMPL(dlaswp)(N, A, LDA, K1, K2, IPIV, INCX); } //-- dlasy2 -------------------------------------------------------------------- void LAPACK_DECL(dlasy2)(const LOGICAL *LTRANL, const LOGICAL *LTRANR, const INTEGER *ISGN, const INTEGER *N1, const INTEGER *N2, const DOUBLE *TL, const INTEGER *LDTL, const DOUBLE *TR, const INTEGER *LDTR, const DOUBLE *B, const INTEGER *LDB, DOUBLE *SCALE, DOUBLE *X, const INTEGER *LDX, DOUBLE *XNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlasy2"); LAPACK_IMPL(dlasy2)(LTRANL, LTRANR, ISGN, N1, N2, TL, LDTL, TR, LDTR, B, LDB, SCALE, X, LDX, XNORM, INFO); } //-- dlasyf -------------------------------------------------------------------- void LAPACK_DECL(dlasyf)(const char *UPLO, const INTEGER *N, const INTEGER *NB, INTEGER *KB, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE *W, const INTEGER *LDW, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlasyf"); LAPACK_IMPL(dlasyf)(UPLO, N, NB, KB, A, LDA, IPIV, W, LDW, INFO); } //-- dlat2s -------------------------------------------------------------------- void LAPACK_DECL(dlat2s)(const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, FLOAT *SA, const INTEGER *LDSA, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlat2s"); LAPACK_IMPL(dlat2s)(UPLO, N, A, LDA, SA, LDSA, INFO); } //-- dlatbs -------------------------------------------------------------------- void LAPACK_DECL(dlatbs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const INTEGER *KD, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *X, DOUBLE *SCALE, DOUBLE *CNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlatbs"); LAPACK_IMPL(dlatbs)(UPLO, TRANS, DIAG, NORMIN, N, KD, AB, LDAB, X, SCALE, CNORM, INFO); } //-- dlatdf -------------------------------------------------------------------- void LAPACK_DECL(dlatdf)(const INTEGER *IJOB, const INTEGER *N, const DOUBLE *Z, const INTEGER *LDZ, DOUBLE *RHS, DOUBLE *RDSUM, DOUBLE *RDSCAL, const INTEGER *IPIV, const INTEGER *JPIV) { DEBUG_LAPACK_STUB("dlatdf"); LAPACK_IMPL(dlatdf)(IJOB, N, Z, LDZ, RHS, RDSUM, RDSCAL, IPIV, JPIV); } //-- dlatps -------------------------------------------------------------------- void LAPACK_DECL(dlatps)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const DOUBLE *AP, DOUBLE *X, DOUBLE *SCALE, DOUBLE *CNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlatps"); LAPACK_IMPL(dlatps)(UPLO, TRANS, DIAG, NORMIN, N, AP, X, SCALE, CNORM, INFO); } //-- dlatrd -------------------------------------------------------------------- void LAPACK_DECL(dlatrd)(const char *UPLO, const INTEGER *N, const INTEGER *NB, DOUBLE *A, const INTEGER *LDA, DOUBLE *E, DOUBLE *TAU, DOUBLE *W, const INTEGER *LDW) { DEBUG_LAPACK_STUB("dlatrd"); LAPACK_IMPL(dlatrd)(UPLO, N, NB, A, LDA, E, TAU, W, LDW); } //-- dlatrs -------------------------------------------------------------------- void LAPACK_DECL(dlatrs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *X, DOUBLE *SCALE, DOUBLE *CNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlatrs"); LAPACK_IMPL(dlatrs)(UPLO, TRANS, DIAG, NORMIN, N, A, LDA, X, SCALE, CNORM, INFO); } //-- dlatrz -------------------------------------------------------------------- void LAPACK_DECL(dlatrz)(const INTEGER *M, const INTEGER *N, const INTEGER *L, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlatrz"); LAPACK_IMPL(dlatrz)(M, N, L, A, LDA, TAU, WORK); } //-- dlatzm -------------------------------------------------------------------- void LAPACK_DECL(dlatzm)(const char *SIDE, const INTEGER *M, const INTEGER *N, const DOUBLE *V, const INTEGER *INCV, const DOUBLE *TAU, DOUBLE *C1, DOUBLE *C2, const INTEGER *LDC, DOUBLE *WORK) { DEBUG_LAPACK_STUB("dlatzm"); LAPACK_IMPL(dlatzm)(SIDE, M, N, V, INCV, TAU, C1, C2, LDC, WORK); } //-- dlauu2 -------------------------------------------------------------------- void LAPACK_DECL(dlauu2)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlauu2"); LAPACK_IMPL(dlauu2)(UPLO, N, A, LDA, INFO); } //-- dlauum -------------------------------------------------------------------- void LAPACK_DECL(dlauum)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("dlauum"); LAPACK_IMPL(dlauum)(UPLO, N, A, LDA, INFO); } //-- dopgtr -------------------------------------------------------------------- void LAPACK_DECL(dopgtr)(const char *UPLO, const INTEGER *N, const DOUBLE *AP, const DOUBLE *TAU, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dopgtr"); LAPACK_IMPL(dopgtr)(UPLO, N, AP, TAU, Q, LDQ, WORK, INFO); } //-- dopmtr -------------------------------------------------------------------- void LAPACK_DECL(dopmtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const DOUBLE *AP, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dopmtr"); LAPACK_IMPL(dopmtr)(SIDE, UPLO, TRANS, M, N, AP, TAU, C, LDC, WORK, INFO); } //-- dorbdb -------------------------------------------------------------------- void LAPACK_DECL(dorbdb)(const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, DOUBLE *X11, const INTEGER *LDX11, DOUBLE *X12, const INTEGER *LDX12, DOUBLE *X21, const INTEGER *LDX21, DOUBLE *X22, const INTEGER *LDX22, DOUBLE *THETA, DOUBLE *PHI, DOUBLE *TAUP1, DOUBLE *TAUP2, DOUBLE *TAUQ1, DOUBLE *TAUQ2, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorbdb"); LAPACK_IMPL(dorbdb)(TRANS, SIGNS, M, P, Q, X11, LDX11, X12, LDX12, X21, LDX21, X22, LDX22, THETA, PHI, TAUP1, TAUP2, TAUQ1, TAUQ2, WORK, LWORK, INFO); } //-- dorcsd -------------------------------------------------------------------- void LAPACK_DECL(dorcsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, const DOUBLE *X11, const INTEGER *LDX11, const DOUBLE *X12, const INTEGER *LDX12, const DOUBLE *X21, const INTEGER *LDX21, const DOUBLE *X22, const INTEGER *LDX22, DOUBLE *THETA, DOUBLE *U1, const INTEGER *LDU1, DOUBLE *U2, const INTEGER *LDU2, DOUBLE *V1T, const INTEGER *LDV1T, DOUBLE *V2T, const INTEGER *LDV2T, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorcsd"); LAPACK_IMPL(dorcsd)(JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS, SIGNS, M, P, Q, X11, LDX11, X12, LDX12, X21, LDX21, X22, LDX22, THETA, U1, LDU1, U2, LDU2, V1T, LDV1T, V2T, LDV2T, WORK, LWORK, IWORK, INFO); } //-- dorg2l -------------------------------------------------------------------- void LAPACK_DECL(dorg2l)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorg2l"); LAPACK_IMPL(dorg2l)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- dorg2r -------------------------------------------------------------------- void LAPACK_DECL(dorg2r)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorg2r"); LAPACK_IMPL(dorg2r)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- dorgbr -------------------------------------------------------------------- void LAPACK_DECL(dorgbr)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorgbr"); LAPACK_IMPL(dorgbr)(VECT, M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- dorghr -------------------------------------------------------------------- void LAPACK_DECL(dorghr)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorghr"); LAPACK_IMPL(dorghr)(N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO); } //-- dorgl2 -------------------------------------------------------------------- void LAPACK_DECL(dorgl2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorgl2"); LAPACK_IMPL(dorgl2)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- dorglq -------------------------------------------------------------------- void LAPACK_DECL(dorglq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorglq"); LAPACK_IMPL(dorglq)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- dorgql -------------------------------------------------------------------- void LAPACK_DECL(dorgql)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorgql"); LAPACK_IMPL(dorgql)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- dorgqr -------------------------------------------------------------------- void LAPACK_DECL(dorgqr)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorgqr"); LAPACK_IMPL(dorgqr)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- dorgr2 -------------------------------------------------------------------- void LAPACK_DECL(dorgr2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorgr2"); LAPACK_IMPL(dorgr2)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- dorgrq -------------------------------------------------------------------- void LAPACK_DECL(dorgrq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorgrq"); LAPACK_IMPL(dorgrq)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- dorgtr -------------------------------------------------------------------- void LAPACK_DECL(dorgtr)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorgtr"); LAPACK_IMPL(dorgtr)(UPLO, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- dorm2l -------------------------------------------------------------------- void LAPACK_DECL(dorm2l)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorm2l"); LAPACK_IMPL(dorm2l)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- dorm2r -------------------------------------------------------------------- void LAPACK_DECL(dorm2r)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorm2r"); LAPACK_IMPL(dorm2r)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- dormbr -------------------------------------------------------------------- void LAPACK_DECL(dormbr)(const char *VECT, const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dormbr"); LAPACK_IMPL(dormbr)(VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- dormhr -------------------------------------------------------------------- void LAPACK_DECL(dormhr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dormhr"); LAPACK_IMPL(dormhr)(SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- dorml2 -------------------------------------------------------------------- void LAPACK_DECL(dorml2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dorml2"); LAPACK_IMPL(dorml2)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- dormlq -------------------------------------------------------------------- void LAPACK_DECL(dormlq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dormlq"); LAPACK_IMPL(dormlq)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- dormql -------------------------------------------------------------------- void LAPACK_DECL(dormql)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dormql"); LAPACK_IMPL(dormql)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- dormqr -------------------------------------------------------------------- void LAPACK_DECL(dormqr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dormqr"); LAPACK_IMPL(dormqr)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- dormr2 -------------------------------------------------------------------- void LAPACK_DECL(dormr2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dormr2"); LAPACK_IMPL(dormr2)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- dormr3 -------------------------------------------------------------------- void LAPACK_DECL(dormr3)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dormr3"); LAPACK_IMPL(dormr3)(SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, WORK, INFO); } //-- dormrq -------------------------------------------------------------------- void LAPACK_DECL(dormrq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dormrq"); LAPACK_IMPL(dormrq)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- dormrz -------------------------------------------------------------------- void LAPACK_DECL(dormrz)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dormrz"); LAPACK_IMPL(dormrz)(SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- dormtr -------------------------------------------------------------------- void LAPACK_DECL(dormtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dormtr"); LAPACK_IMPL(dormtr)(SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- dpbcon -------------------------------------------------------------------- void LAPACK_DECL(dpbcon)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpbcon"); LAPACK_IMPL(dpbcon)(UPLO, N, KD, AB, LDAB, ANORM, RCOND, WORK, IWORK, INFO); } //-- dpbequ -------------------------------------------------------------------- void LAPACK_DECL(dpbequ)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpbequ"); LAPACK_IMPL(dpbequ)(UPLO, N, KD, AB, LDAB, S, SCOND, AMAX, INFO); } //-- dpbrfs -------------------------------------------------------------------- void LAPACK_DECL(dpbrfs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *AFB, const INTEGER *LDAFB, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpbrfs"); LAPACK_IMPL(dpbrfs)(UPLO, N, KD, NRHS, AB, LDAB, AFB, LDAFB, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- dpbstf -------------------------------------------------------------------- void LAPACK_DECL(dpbstf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpbstf"); LAPACK_IMPL(dpbstf)(UPLO, N, KD, AB, LDAB, INFO); } //-- dpbsv --------------------------------------------------------------------- void LAPACK_DECL(dpbsv)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpbsv"); LAPACK_IMPL(dpbsv)(UPLO, N, KD, NRHS, AB, LDAB, B, LDB, INFO); } //-- dpbsvx -------------------------------------------------------------------- void LAPACK_DECL(dpbsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *AFB, const INTEGER *LDAFB, char *EQUED, DOUBLE *S, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpbsvx"); LAPACK_IMPL(dpbsvx)(FACT, UPLO, N, KD, NRHS, AB, LDAB, AFB, LDAFB, EQUED, S, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, IWORK, INFO); } //-- dpbtf2 -------------------------------------------------------------------- void LAPACK_DECL(dpbtf2)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpbtf2"); LAPACK_IMPL(dpbtf2)(UPLO, N, KD, AB, LDAB, INFO); } //-- dpbtrf -------------------------------------------------------------------- void LAPACK_DECL(dpbtrf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpbtrf"); LAPACK_IMPL(dpbtrf)(UPLO, N, KD, AB, LDAB, INFO); } //-- dpbtrs -------------------------------------------------------------------- void LAPACK_DECL(dpbtrs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpbtrs"); LAPACK_IMPL(dpbtrs)(UPLO, N, KD, NRHS, AB, LDAB, B, LDB, INFO); } //-- dpftrf -------------------------------------------------------------------- void LAPACK_DECL(dpftrf)(const char *TRANSR, const char *UPLO, const INTEGER *N, DOUBLE *A, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpftrf"); LAPACK_IMPL(dpftrf)(TRANSR, UPLO, N, A, INFO); } //-- dpftri -------------------------------------------------------------------- void LAPACK_DECL(dpftri)(const char *TRANSR, const char *UPLO, const INTEGER *N, DOUBLE *A, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpftri"); LAPACK_IMPL(dpftri)(TRANSR, UPLO, N, A, INFO); } //-- dpftrs -------------------------------------------------------------------- void LAPACK_DECL(dpftrs)(const char *TRANSR, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpftrs"); LAPACK_IMPL(dpftrs)(TRANSR, UPLO, N, NRHS, A, B, LDB, INFO); } //-- dpocon -------------------------------------------------------------------- void LAPACK_DECL(dpocon)(const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpocon"); LAPACK_IMPL(dpocon)(UPLO, N, A, LDA, ANORM, RCOND, WORK, IWORK, INFO); } //-- dpoequ -------------------------------------------------------------------- void LAPACK_DECL(dpoequ)(const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpoequ"); LAPACK_IMPL(dpoequ)(N, A, LDA, S, SCOND, AMAX, INFO); } //-- dpoequb ------------------------------------------------------------------- void LAPACK_DECL(dpoequb)(const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpoequb"); LAPACK_IMPL(dpoequb)(N, A, LDA, S, SCOND, AMAX, INFO); } //-- dporfs -------------------------------------------------------------------- void LAPACK_DECL(dporfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dporfs"); LAPACK_IMPL(dporfs)(UPLO, N, NRHS, A, LDA, AF, LDAF, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- dporfsx ------------------------------------------------------------------- void LAPACK_DECL(dporfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, DOUBLE *S, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dporfsx"); LAPACK_IMPL(dporfsx)(UPLO, EQUED, N, NRHS, A, LDA, AF, LDAF, S, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO); } //-- dposv --------------------------------------------------------------------- void LAPACK_DECL(dposv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dposv"); LAPACK_IMPL(dposv)(UPLO, N, NRHS, A, LDA, B, LDB, INFO); } //-- dposvx -------------------------------------------------------------------- void LAPACK_DECL(dposvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *AF, const INTEGER *LDAF, char *EQUED, DOUBLE *S, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dposvx"); LAPACK_IMPL(dposvx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, EQUED, S, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, IWORK, INFO); } //-- dposvxx ------------------------------------------------------------------- void LAPACK_DECL(dposvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *AF, const INTEGER *LDAF, char *EQUED, DOUBLE *S, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dposvxx"); LAPACK_IMPL(dposvxx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, EQUED, S, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO); } //-- dpotf2 -------------------------------------------------------------------- void LAPACK_DECL(dpotf2)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpotf2"); LAPACK_IMPL(dpotf2)(UPLO, N, A, LDA, INFO); } //-- dpotrf -------------------------------------------------------------------- void LAPACK_DECL(dpotrf)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpotrf"); LAPACK_IMPL(dpotrf)(UPLO, N, A, LDA, INFO); } //-- dpotri -------------------------------------------------------------------- void LAPACK_DECL(dpotri)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpotri"); LAPACK_IMPL(dpotri)(UPLO, N, A, LDA, INFO); } //-- dpotrs -------------------------------------------------------------------- void LAPACK_DECL(dpotrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpotrs"); LAPACK_IMPL(dpotrs)(UPLO, N, NRHS, A, LDA, B, LDB, INFO); } //-- dppcon -------------------------------------------------------------------- void LAPACK_DECL(dppcon)(const char *UPLO, const INTEGER *N, const DOUBLE *AP, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dppcon"); LAPACK_IMPL(dppcon)(UPLO, N, AP, ANORM, RCOND, WORK, IWORK, INFO); } //-- dppequ -------------------------------------------------------------------- void LAPACK_DECL(dppequ)(const char *UPLO, const INTEGER *N, const DOUBLE *AP, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("dppequ"); LAPACK_IMPL(dppequ)(UPLO, N, AP, S, SCOND, AMAX, INFO); } //-- dpprfs -------------------------------------------------------------------- void LAPACK_DECL(dpprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *AP, const DOUBLE *AFP, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpprfs"); LAPACK_IMPL(dpprfs)(UPLO, N, NRHS, AP, AFP, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- dppsv --------------------------------------------------------------------- void LAPACK_DECL(dppsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *AP, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dppsv"); LAPACK_IMPL(dppsv)(UPLO, N, NRHS, AP, B, LDB, INFO); } //-- dppsvx -------------------------------------------------------------------- void LAPACK_DECL(dppsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *AP, DOUBLE *AFP, char *EQUED, DOUBLE *S, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dppsvx"); LAPACK_IMPL(dppsvx)(FACT, UPLO, N, NRHS, AP, AFP, EQUED, S, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, IWORK, INFO); } //-- dpptrf -------------------------------------------------------------------- void LAPACK_DECL(dpptrf)(const char *UPLO, const INTEGER *N, DOUBLE *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpptrf"); LAPACK_IMPL(dpptrf)(UPLO, N, AP, INFO); } //-- dpptri -------------------------------------------------------------------- void LAPACK_DECL(dpptri)(const char *UPLO, const INTEGER *N, DOUBLE *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpptri"); LAPACK_IMPL(dpptri)(UPLO, N, AP, INFO); } //-- dpptrs -------------------------------------------------------------------- void LAPACK_DECL(dpptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *AP, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpptrs"); LAPACK_IMPL(dpptrs)(UPLO, N, NRHS, AP, B, LDB, INFO); } //-- dpstf2 -------------------------------------------------------------------- void LAPACK_DECL(dpstf2)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const DOUBLE *TOL, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpstf2"); LAPACK_IMPL(dpstf2)(UPLO, N, A, LDA, PIV, RANK, TOL, WORK, INFO); } //-- dpstrf -------------------------------------------------------------------- void LAPACK_DECL(dpstrf)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const DOUBLE *TOL, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpstrf"); LAPACK_IMPL(dpstrf)(UPLO, N, A, LDA, PIV, RANK, TOL, WORK, INFO); } //-- dptcon -------------------------------------------------------------------- void LAPACK_DECL(dptcon)(const INTEGER *N, const DOUBLE *D, const DOUBLE *E, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dptcon"); LAPACK_IMPL(dptcon)(N, D, E, ANORM, RCOND, WORK, INFO); } //-- dpteqr -------------------------------------------------------------------- void LAPACK_DECL(dpteqr)(const char *COMPZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpteqr"); LAPACK_IMPL(dpteqr)(COMPZ, N, D, E, Z, LDZ, WORK, INFO); } //-- dptrfs -------------------------------------------------------------------- void LAPACK_DECL(dptrfs)(const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE *E, const DOUBLE *DF, const DOUBLE *EF, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dptrfs"); LAPACK_IMPL(dptrfs)(N, NRHS, D, E, DF, EF, B, LDB, X, LDX, FERR, BERR, WORK, INFO); } //-- dptsv --------------------------------------------------------------------- void LAPACK_DECL(dptsv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE *D, DOUBLE *E, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dptsv"); LAPACK_IMPL(dptsv)(N, NRHS, D, E, B, LDB, INFO); } //-- dptsvx -------------------------------------------------------------------- void LAPACK_DECL(dptsvx)(const char *FACT, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE *E, DOUBLE *DF, DOUBLE *EF, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dptsvx"); LAPACK_IMPL(dptsvx)(FACT, N, NRHS, D, E, DF, EF, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, INFO); } //-- dpttrf -------------------------------------------------------------------- void LAPACK_DECL(dpttrf)(const INTEGER *N, DOUBLE *D, DOUBLE *E, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpttrf"); LAPACK_IMPL(dpttrf)(N, D, E, INFO); } //-- dpttrs -------------------------------------------------------------------- void LAPACK_DECL(dpttrs)(const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE *E, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dpttrs"); LAPACK_IMPL(dpttrs)(N, NRHS, D, E, B, LDB, INFO); } //-- dptts2 -------------------------------------------------------------------- void LAPACK_DECL(dptts2)(const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE *E, DOUBLE *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("dptts2"); LAPACK_IMPL(dptts2)(N, NRHS, D, E, B, LDB); } //-- drscl --------------------------------------------------------------------- void LAPACK_DECL(drscl)(const INTEGER *N, const DOUBLE *SA, DOUBLE *SX, const INTEGER *INCX) { DEBUG_LAPACK_STUB("drscl"); LAPACK_IMPL(drscl)(N, SA, SX, INCX); } //-- dsbev --------------------------------------------------------------------- void LAPACK_DECL(dsbev)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsbev"); LAPACK_IMPL(dsbev)(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, INFO); } //-- dsbevd -------------------------------------------------------------------- void LAPACK_DECL(dsbevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsbevd"); LAPACK_IMPL(dsbevd)(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- dsbevx -------------------------------------------------------------------- void LAPACK_DECL(dsbevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *Q, const INTEGER *LDQ, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsbevx"); LAPACK_IMPL(dsbevx)(JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO); } //-- dsbgst -------------------------------------------------------------------- void LAPACK_DECL(dsbgst)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *BB, const INTEGER *LDBB, DOUBLE *X, const INTEGER *LDX, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsbgst"); LAPACK_IMPL(dsbgst)(VECT, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, X, LDX, WORK, INFO); } //-- dsbgv --------------------------------------------------------------------- void LAPACK_DECL(dsbgv)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *BB, const INTEGER *LDBB, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsbgv"); LAPACK_IMPL(dsbgv)(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, INFO); } //-- dsbgvd -------------------------------------------------------------------- void LAPACK_DECL(dsbgvd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *BB, const INTEGER *LDBB, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsbgvd"); LAPACK_IMPL(dsbgvd)(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- dsbgvx -------------------------------------------------------------------- void LAPACK_DECL(dsbgvx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *BB, const INTEGER *LDBB, DOUBLE *Q, const INTEGER *LDQ, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsbgvx"); LAPACK_IMPL(dsbgvx)(JOBZ, RANGE, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO); } //-- dsbtrd -------------------------------------------------------------------- void LAPACK_DECL(dsbtrd)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *D, DOUBLE *E, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsbtrd"); LAPACK_IMPL(dsbtrd)(VECT, UPLO, N, KD, AB, LDAB, D, E, Q, LDQ, WORK, INFO); } //-- dsfrk --------------------------------------------------------------------- void LAPACK_DECL(dsfrk)(const char *TRANSR, const char *UPLO, const char *TRANS, const INTEGER *N, const INTEGER *K, const DOUBLE *ALPHA, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *BETA, DOUBLE *C) { DEBUG_LAPACK_STUB("dsfrk"); LAPACK_IMPL(dsfrk)(TRANSR, UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C); } //-- dsgesv -------------------------------------------------------------------- void LAPACK_DECL(dsgesv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *WORK, FLOAT *SWORK, INTEGER *ITER, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsgesv"); LAPACK_IMPL(dsgesv)(N, NRHS, A, LDA, IPIV, B, LDB, X, LDX, WORK, SWORK, ITER, INFO); } //-- dspcon -------------------------------------------------------------------- void LAPACK_DECL(dspcon)(const char *UPLO, const INTEGER *N, const DOUBLE *AP, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dspcon"); LAPACK_IMPL(dspcon)(UPLO, N, AP, IPIV, ANORM, RCOND, WORK, IWORK, INFO); } //-- dspev --------------------------------------------------------------------- void LAPACK_DECL(dspev)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *AP, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dspev"); LAPACK_IMPL(dspev)(JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, INFO); } //-- dspevd -------------------------------------------------------------------- void LAPACK_DECL(dspevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *AP, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dspevd"); LAPACK_IMPL(dspevd)(JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- dspevx -------------------------------------------------------------------- void LAPACK_DECL(dspevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE *AP, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("dspevx"); LAPACK_IMPL(dspevx)(JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO); } //-- dspgst -------------------------------------------------------------------- void LAPACK_DECL(dspgst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, DOUBLE *AP, const DOUBLE *BP, INTEGER *INFO) { DEBUG_LAPACK_STUB("dspgst"); LAPACK_IMPL(dspgst)(ITYPE, UPLO, N, AP, BP, INFO); } //-- dspgv --------------------------------------------------------------------- void LAPACK_DECL(dspgv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *AP, DOUBLE *BP, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dspgv"); LAPACK_IMPL(dspgv)(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, INFO); } //-- dspgvd -------------------------------------------------------------------- void LAPACK_DECL(dspgvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *AP, DOUBLE *BP, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dspgvd"); LAPACK_IMPL(dspgvd)(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- dspgvx -------------------------------------------------------------------- void LAPACK_DECL(dspgvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE *AP, DOUBLE *BP, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("dspgvx"); LAPACK_IMPL(dspgvx)(ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO); } //-- dsposv -------------------------------------------------------------------- void LAPACK_DECL(dsposv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *WORK, FLOAT *SWORK, INTEGER *ITER, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsposv"); LAPACK_IMPL(dsposv)(UPLO, N, NRHS, A, LDA, B, LDB, X, LDX, WORK, SWORK, ITER, INFO); } //-- dsprfs -------------------------------------------------------------------- void LAPACK_DECL(dsprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *AP, const DOUBLE *AFP, const INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsprfs"); LAPACK_IMPL(dsprfs)(UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- dspsv --------------------------------------------------------------------- void LAPACK_DECL(dspsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *AP, INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dspsv"); LAPACK_IMPL(dspsv)(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO); } //-- dspsvx -------------------------------------------------------------------- void LAPACK_DECL(dspsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *AP, DOUBLE *AFP, INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dspsvx"); LAPACK_IMPL(dspsvx)(FACT, UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, IWORK, INFO); } //-- dsptrd -------------------------------------------------------------------- void LAPACK_DECL(dsptrd)(const char *UPLO, const INTEGER *N, DOUBLE *AP, DOUBLE *D, DOUBLE *E, DOUBLE *TAU, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsptrd"); LAPACK_IMPL(dsptrd)(UPLO, N, AP, D, E, TAU, INFO); } //-- dsptrf -------------------------------------------------------------------- void LAPACK_DECL(dsptrf)(const char *UPLO, const INTEGER *N, DOUBLE *AP, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsptrf"); LAPACK_IMPL(dsptrf)(UPLO, N, AP, IPIV, INFO); } //-- dsptri -------------------------------------------------------------------- void LAPACK_DECL(dsptri)(const char *UPLO, const INTEGER *N, DOUBLE *AP, const INTEGER *IPIV, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsptri"); LAPACK_IMPL(dsptri)(UPLO, N, AP, IPIV, WORK, INFO); } //-- dsptrs -------------------------------------------------------------------- void LAPACK_DECL(dsptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *AP, const INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsptrs"); LAPACK_IMPL(dsptrs)(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO); } //-- dstebz -------------------------------------------------------------------- void LAPACK_DECL(dstebz)(const char *RANGE, const char *ORDER, const INTEGER *N, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, const DOUBLE *D, const DOUBLE *E, INTEGER *M, INTEGER *NSPLIT, DOUBLE *W, INTEGER *IBLOCK, INTEGER *ISPLIT, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dstebz"); LAPACK_IMPL(dstebz)(RANGE, ORDER, N, VL, VU, IL, IU, ABSTOL, D, E, M, NSPLIT, W, IBLOCK, ISPLIT, WORK, IWORK, INFO); } //-- dstedc -------------------------------------------------------------------- void LAPACK_DECL(dstedc)(const char *COMPZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dstedc"); LAPACK_IMPL(dstedc)(COMPZ, N, D, E, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- dstegr -------------------------------------------------------------------- void LAPACK_DECL(dstegr)(const char *JOBZ, const char *RANGE, const INTEGER *N, DOUBLE *D, DOUBLE *E, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dstegr"); LAPACK_IMPL(dstegr)(JOBZ, RANGE, N, D, E, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- dstein -------------------------------------------------------------------- void LAPACK_DECL(dstein)(const INTEGER *N, const DOUBLE *D, const DOUBLE *E, const INTEGER *M, const DOUBLE *W, const INTEGER *IBLOCK, const INTEGER *ISPLIT, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("dstein"); LAPACK_IMPL(dstein)(N, D, E, M, W, IBLOCK, ISPLIT, Z, LDZ, WORK, IWORK, IFAIL, INFO); } //-- dstemr -------------------------------------------------------------------- void LAPACK_DECL(dstemr)(const char *JOBZ, const char *RANGE, const INTEGER *N, DOUBLE *D, DOUBLE *E, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, const INTEGER *NZC, INTEGER *ISUPPZ, LOGICAL *TRYRAC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dstemr"); LAPACK_IMPL(dstemr)(JOBZ, RANGE, N, D, E, VL, VU, IL, IU, M, W, Z, LDZ, NZC, ISUPPZ, TRYRAC, WORK, LWORK, IWORK, LIWORK, INFO); } //-- dsteqr -------------------------------------------------------------------- void LAPACK_DECL(dsteqr)(const char *COMPZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsteqr"); LAPACK_IMPL(dsteqr)(COMPZ, N, D, E, Z, LDZ, WORK, INFO); } //-- dsterf -------------------------------------------------------------------- void LAPACK_DECL(dsterf)(const INTEGER *N, DOUBLE *D, DOUBLE *E, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsterf"); LAPACK_IMPL(dsterf)(N, D, E, INFO); } //-- dstev --------------------------------------------------------------------- void LAPACK_DECL(dstev)(const char *JOBZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dstev"); LAPACK_IMPL(dstev)(JOBZ, N, D, E, Z, LDZ, WORK, INFO); } //-- dstevd -------------------------------------------------------------------- void LAPACK_DECL(dstevd)(const char *JOBZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dstevd"); LAPACK_IMPL(dstevd)(JOBZ, N, D, E, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- dstevr -------------------------------------------------------------------- void LAPACK_DECL(dstevr)(const char *JOBZ, const char *RANGE, const INTEGER *N, DOUBLE *D, DOUBLE *E, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dstevr"); LAPACK_IMPL(dstevr)(JOBZ, RANGE, N, D, E, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- dstevx -------------------------------------------------------------------- void LAPACK_DECL(dstevx)(const char *JOBZ, const char *RANGE, const INTEGER *N, DOUBLE *D, DOUBLE *E, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("dstevx"); LAPACK_IMPL(dstevx)(JOBZ, RANGE, N, D, E, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO); } //-- dsycon -------------------------------------------------------------------- void LAPACK_DECL(dsycon)(const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsycon"); LAPACK_IMPL(dsycon)(UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK, IWORK, INFO); } //-- dsyconv ------------------------------------------------------------------- void LAPACK_DECL(dsyconv)(const char *UPLO, const char *WAY, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsyconv"); LAPACK_IMPL(dsyconv)(UPLO, WAY, N, A, LDA, IPIV, WORK, INFO); } //-- dsyequb ------------------------------------------------------------------- void LAPACK_DECL(dsyequb)(const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsyequb"); LAPACK_IMPL(dsyequb)(UPLO, N, A, LDA, S, SCOND, AMAX, WORK, INFO); } //-- dsyev --------------------------------------------------------------------- void LAPACK_DECL(dsyev)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *W, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsyev"); LAPACK_IMPL(dsyev)(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO); } //-- dsyevd -------------------------------------------------------------------- void LAPACK_DECL(dsyevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *W, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsyevd"); LAPACK_IMPL(dsyevd)(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, IWORK, LIWORK, INFO); } //-- dsyevr -------------------------------------------------------------------- void LAPACK_DECL(dsyevr)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsyevr"); LAPACK_IMPL(dsyevr)(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- dsyevx -------------------------------------------------------------------- void LAPACK_DECL(dsyevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsyevx"); LAPACK_IMPL(dsyevx)(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO); } //-- dsygs2 -------------------------------------------------------------------- void LAPACK_DECL(dsygs2)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsygs2"); LAPACK_IMPL(dsygs2)(ITYPE, UPLO, N, A, LDA, B, LDB, INFO); } //-- dsygst -------------------------------------------------------------------- void LAPACK_DECL(dsygst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsygst"); LAPACK_IMPL(dsygst)(ITYPE, UPLO, N, A, LDA, B, LDB, INFO); } //-- dsygv --------------------------------------------------------------------- void LAPACK_DECL(dsygv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *W, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsygv"); LAPACK_IMPL(dsygv)(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, INFO); } //-- dsygvd -------------------------------------------------------------------- void LAPACK_DECL(dsygvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *W, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsygvd"); LAPACK_IMPL(dsygvd)(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, IWORK, LIWORK, INFO); } //-- dsygvx -------------------------------------------------------------------- void LAPACK_DECL(dsygvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsygvx"); LAPACK_IMPL(dsygvx)(ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO); } //-- dsyrfs -------------------------------------------------------------------- void LAPACK_DECL(dsyrfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsyrfs"); LAPACK_IMPL(dsyrfs)(UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- dsyrfsx ------------------------------------------------------------------- void LAPACK_DECL(dsyrfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, DOUBLE *S, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsyrfsx"); LAPACK_IMPL(dsyrfsx)(UPLO, EQUED, N, NRHS, A, LDA, AF, LDAF, IPIV, S, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO); } //-- dsysv --------------------------------------------------------------------- void LAPACK_DECL(dsysv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsysv"); LAPACK_IMPL(dsysv)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO); } //-- dsysvx -------------------------------------------------------------------- void LAPACK_DECL(dsysvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, DOUBLE *AF, const INTEGER *LDAF, INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsysvx"); LAPACK_IMPL(dsysvx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, LWORK, IWORK, INFO); } //-- dsysvxx ------------------------------------------------------------------- void LAPACK_DECL(dsysvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, DOUBLE *S, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsysvxx"); LAPACK_IMPL(dsysvxx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, EQUED, S, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO); } //-- dsyswapr ------------------------------------------------------------------ void LAPACK_DECL(dsyswapr)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const INTEGER *I1, const INTEGER *I2) { DEBUG_LAPACK_STUB("dsyswapr"); LAPACK_IMPL(dsyswapr)(UPLO, N, A, LDA, I1, I2); } //-- dsytd2 -------------------------------------------------------------------- void LAPACK_DECL(dsytd2)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE *TAU, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsytd2"); LAPACK_IMPL(dsytd2)(UPLO, N, A, LDA, D, E, TAU, INFO); } //-- dsytf2 -------------------------------------------------------------------- void LAPACK_DECL(dsytf2)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsytf2"); LAPACK_IMPL(dsytf2)(UPLO, N, A, LDA, IPIV, INFO); } //-- dsytrd -------------------------------------------------------------------- void LAPACK_DECL(dsytrd)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsytrd"); LAPACK_IMPL(dsytrd)(UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO); } //-- dsytrf -------------------------------------------------------------------- void LAPACK_DECL(dsytrf)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsytrf"); LAPACK_IMPL(dsytrf)(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- dsytri -------------------------------------------------------------------- void LAPACK_DECL(dsytri)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsytri"); LAPACK_IMPL(dsytri)(UPLO, N, A, LDA, IPIV, WORK, INFO); } //-- dsytri2 ------------------------------------------------------------------- void LAPACK_DECL(dsytri2)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsytri2"); LAPACK_IMPL(dsytri2)(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- dsytri2x ------------------------------------------------------------------ void LAPACK_DECL(dsytri2x)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *WORK, const INTEGER *NB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsytri2x"); LAPACK_IMPL(dsytri2x)(UPLO, N, A, LDA, IPIV, WORK, NB, INFO); } //-- dsytrs -------------------------------------------------------------------- void LAPACK_DECL(dsytrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsytrs"); LAPACK_IMPL(dsytrs)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO); } //-- dsytrs2 ------------------------------------------------------------------- void LAPACK_DECL(dsytrs2)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dsytrs2"); LAPACK_IMPL(dsytrs2)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, INFO); } //-- dtbcon -------------------------------------------------------------------- void LAPACK_DECL(dtbcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *KD, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtbcon"); LAPACK_IMPL(dtbcon)(NORM, UPLO, DIAG, N, KD, AB, LDAB, RCOND, WORK, IWORK, INFO); } //-- dtbrfs -------------------------------------------------------------------- void LAPACK_DECL(dtbrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *B, const INTEGER *LDB, const DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtbrfs"); LAPACK_IMPL(dtbrfs)(UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- dtbtrs -------------------------------------------------------------------- void LAPACK_DECL(dtbtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtbtrs"); LAPACK_IMPL(dtbtrs)(UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, B, LDB, INFO); } //-- dtfsm --------------------------------------------------------------------- void LAPACK_DECL(dtfsm)(const char *TRANSR, const char *SIDE, const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *M, const INTEGER *N, const DOUBLE *ALPHA, const DOUBLE *A, DOUBLE *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("dtfsm"); LAPACK_IMPL(dtfsm)(TRANSR, SIDE, UPLO, TRANS, DIAG, M, N, ALPHA, A, B, LDB); } //-- dtftri -------------------------------------------------------------------- void LAPACK_DECL(dtftri)(const char *TRANSR, const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE *A, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtftri"); LAPACK_IMPL(dtftri)(TRANSR, UPLO, DIAG, N, A, INFO); } //-- dtfttp -------------------------------------------------------------------- void LAPACK_DECL(dtfttp)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE *ARF, DOUBLE *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtfttp"); LAPACK_IMPL(dtfttp)(TRANSR, UPLO, N, ARF, AP, INFO); } //-- dtfttr -------------------------------------------------------------------- void LAPACK_DECL(dtfttr)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE *ARF, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtfttr"); LAPACK_IMPL(dtfttr)(TRANSR, UPLO, N, ARF, A, LDA, INFO); } //-- dtgevc -------------------------------------------------------------------- void LAPACK_DECL(dtgevc)(const char *SIDE, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const DOUBLE *S, const INTEGER *LDS, const DOUBLE *P, const INTEGER *LDP, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtgevc"); LAPACK_IMPL(dtgevc)(SIDE, HOWMNY, SELECT, N, S, LDS, P, LDP, VL, LDVL, VR, LDVR, MM, M, WORK, INFO); } //-- dtgex2 -------------------------------------------------------------------- void LAPACK_DECL(dtgex2)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *Z, const INTEGER *LDZ, const INTEGER *J1, const INTEGER *N1, const INTEGER *N2, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtgex2"); LAPACK_IMPL(dtgex2)(WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, J1, N1, N2, WORK, LWORK, INFO); } //-- dtgexc -------------------------------------------------------------------- void LAPACK_DECL(dtgexc)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *Z, const INTEGER *LDZ, INTEGER *IFST, INTEGER *ILST, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtgexc"); LAPACK_IMPL(dtgexc)(WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, IFST, ILST, WORK, LWORK, INFO); } //-- dtgsen -------------------------------------------------------------------- void LAPACK_DECL(dtgsen)(const INTEGER *IJOB, const LOGICAL *WANTQ, const LOGICAL *WANTZ, const LOGICAL *SELECT, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *Z, const INTEGER *LDZ, INTEGER *M, DOUBLE *PL, DOUBLE *PR, DOUBLE *DIF, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtgsen"); LAPACK_IMPL(dtgsen)(IJOB, WANTQ, WANTZ, SELECT, N, A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, M, PL, PR, DIF, WORK, LWORK, IWORK, LIWORK, INFO); } //-- dtgsja -------------------------------------------------------------------- void LAPACK_DECL(dtgsja)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, const INTEGER *K, const INTEGER *L, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, const DOUBLE *TOLA, const DOUBLE *TOLB, DOUBLE *ALPHA, DOUBLE *BETA, DOUBLE *U, const INTEGER *LDU, DOUBLE *V, const INTEGER *LDV, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *WORK, INTEGER *NCYCLE, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtgsja"); LAPACK_IMPL(dtgsja)(JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B, LDB, TOLA, TOLB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, NCYCLE, INFO); } //-- dtgsna -------------------------------------------------------------------- void LAPACK_DECL(dtgsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, const DOUBLE *VL, const INTEGER *LDVL, const DOUBLE *VR, const INTEGER *LDVR, DOUBLE *S, DOUBLE *DIF, const INTEGER *MM, INTEGER *M, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtgsna"); LAPACK_IMPL(dtgsna)(JOB, HOWMNY, SELECT, N, A, LDA, B, LDB, VL, LDVL, VR, LDVR, S, DIF, MM, M, WORK, LWORK, IWORK, INFO); } //-- dtgsy2 -------------------------------------------------------------------- void LAPACK_DECL(dtgsy2)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, DOUBLE *C, const INTEGER *LDC, const DOUBLE *D, const INTEGER *LDD, const DOUBLE *E, const INTEGER *LDE, DOUBLE *F, const INTEGER *LDF, DOUBLE *SCALE, DOUBLE *RDSUM, DOUBLE *RDSCAL, INTEGER *IWORK, INTEGER *PQ, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtgsy2"); LAPACK_IMPL(dtgsy2)(TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D, LDD, E, LDE, F, LDF, SCALE, RDSUM, RDSCAL, IWORK, PQ, INFO); } //-- dtgsyl -------------------------------------------------------------------- void LAPACK_DECL(dtgsyl)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, DOUBLE *C, const INTEGER *LDC, const DOUBLE *D, const INTEGER *LDD, const DOUBLE *E, const INTEGER *LDE, DOUBLE *F, const INTEGER *LDF, DOUBLE *SCALE, DOUBLE *DIF, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtgsyl"); LAPACK_IMPL(dtgsyl)(TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D, LDD, E, LDE, F, LDF, SCALE, DIF, WORK, LWORK, IWORK, INFO); } //-- dtpcon -------------------------------------------------------------------- void LAPACK_DECL(dtpcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const DOUBLE *AP, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtpcon"); LAPACK_IMPL(dtpcon)(NORM, UPLO, DIAG, N, AP, RCOND, WORK, IWORK, INFO); } //-- dtprfs -------------------------------------------------------------------- void LAPACK_DECL(dtprfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *AP, const DOUBLE *B, const INTEGER *LDB, const DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtprfs"); LAPACK_IMPL(dtprfs)(UPLO, TRANS, DIAG, N, NRHS, AP, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- dtptri -------------------------------------------------------------------- void LAPACK_DECL(dtptri)(const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtptri"); LAPACK_IMPL(dtptri)(UPLO, DIAG, N, AP, INFO); } //-- dtptrs -------------------------------------------------------------------- void LAPACK_DECL(dtptrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *AP, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtptrs"); LAPACK_IMPL(dtptrs)(UPLO, TRANS, DIAG, N, NRHS, AP, B, LDB, INFO); } //-- dtpttf -------------------------------------------------------------------- void LAPACK_DECL(dtpttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE *AP, DOUBLE *ARF, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtpttf"); LAPACK_IMPL(dtpttf)(TRANSR, UPLO, N, AP, ARF, INFO); } //-- dtpttr -------------------------------------------------------------------- void LAPACK_DECL(dtpttr)(const char *UPLO, const INTEGER *N, const DOUBLE *AP, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtpttr"); LAPACK_IMPL(dtpttr)(UPLO, N, AP, A, LDA, INFO); } //-- dtrcon -------------------------------------------------------------------- void LAPACK_DECL(dtrcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtrcon"); LAPACK_IMPL(dtrcon)(NORM, UPLO, DIAG, N, A, LDA, RCOND, WORK, IWORK, INFO); } //-- dtrevc -------------------------------------------------------------------- void LAPACK_DECL(dtrevc)(const char *SIDE, const char *HOWMNY, LOGICAL *SELECT, const INTEGER *N, const DOUBLE *T, const INTEGER *LDT, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtrevc"); LAPACK_IMPL(dtrevc)(SIDE, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR, LDVR, MM, M, WORK, INFO); } //-- dtrexc -------------------------------------------------------------------- void LAPACK_DECL(dtrexc)(const char *COMPQ, const INTEGER *N, DOUBLE *T, const INTEGER *LDT, DOUBLE *Q, const INTEGER *LDQ, INTEGER *IFST, INTEGER *ILST, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtrexc"); LAPACK_IMPL(dtrexc)(COMPQ, N, T, LDT, Q, LDQ, IFST, ILST, WORK, INFO); } //-- dtrrfs -------------------------------------------------------------------- void LAPACK_DECL(dtrrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, const DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtrrfs"); LAPACK_IMPL(dtrrfs)(UPLO, TRANS, DIAG, N, NRHS, A, LDA, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- dtrsen -------------------------------------------------------------------- void LAPACK_DECL(dtrsen)(const char *JOB, const char *COMPQ, const LOGICAL *SELECT, const INTEGER *N, DOUBLE *T, const INTEGER *LDT, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *WR, DOUBLE *WI, INTEGER *M, DOUBLE *S, DOUBLE *SEP, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtrsen"); LAPACK_IMPL(dtrsen)(JOB, COMPQ, SELECT, N, T, LDT, Q, LDQ, WR, WI, M, S, SEP, WORK, LWORK, IWORK, LIWORK, INFO); } //-- dtrsna -------------------------------------------------------------------- void LAPACK_DECL(dtrsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const DOUBLE *T, const INTEGER *LDT, const DOUBLE *VL, const INTEGER *LDVL, const DOUBLE *VR, const INTEGER *LDVR, DOUBLE *S, DOUBLE *SEP, const INTEGER *MM, INTEGER *M, DOUBLE *WORK, const INTEGER *LDWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtrsna"); LAPACK_IMPL(dtrsna)(JOB, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR, LDVR, S, SEP, MM, M, WORK, LDWORK, IWORK, INFO); } //-- dtrsyl -------------------------------------------------------------------- void LAPACK_DECL(dtrsyl)(const char *TRANA, const char *TRANB, const INTEGER *ISGN, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, DOUBLE *C, const INTEGER *LDC, DOUBLE *SCALE, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtrsyl"); LAPACK_IMPL(dtrsyl)(TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C, LDC, SCALE, INFO); } //-- dtrti2 -------------------------------------------------------------------- void LAPACK_DECL(dtrti2)(const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtrti2"); LAPACK_IMPL(dtrti2)(UPLO, DIAG, N, A, LDA, INFO); } //-- dtrtri -------------------------------------------------------------------- void LAPACK_DECL(dtrtri)(const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtrtri"); LAPACK_IMPL(dtrtri)(UPLO, DIAG, N, A, LDA, INFO); } //-- dtrtrs -------------------------------------------------------------------- void LAPACK_DECL(dtrtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtrtrs"); LAPACK_IMPL(dtrtrs)(UPLO, TRANS, DIAG, N, NRHS, A, LDA, B, LDB, INFO); } //-- dtrttf -------------------------------------------------------------------- void LAPACK_DECL(dtrttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *ARF, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtrttf"); LAPACK_IMPL(dtrttf)(TRANSR, UPLO, N, A, LDA, ARF, INFO); } //-- dtrttp -------------------------------------------------------------------- void LAPACK_DECL(dtrttp)(const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtrttp"); LAPACK_IMPL(dtrttp)(UPLO, N, A, LDA, AP, INFO); } //-- dtzrqf -------------------------------------------------------------------- void LAPACK_DECL(dtzrqf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtzrqf"); LAPACK_IMPL(dtzrqf)(M, N, A, LDA, TAU, INFO); } //-- dtzrzf -------------------------------------------------------------------- void LAPACK_DECL(dtzrzf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("dtzrzf"); LAPACK_IMPL(dtzrzf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- dzsum1 -------------------------------------------------------------------- DOUBLE LAPACK_DECL(dzsum1)(const INTEGER *N, const DOUBLE_COMPLEX *CX, const INTEGER *INCX) { DEBUG_LAPACK_STUB("dzsum1"); return LAPACK_IMPL(dzsum1)(N, CX, INCX); } //-- icmax1 -------------------------------------------------------------------- INTEGER LAPACK_DECL(icmax1)(const INTEGER *N, const FLOAT_COMPLEX *CX, const INTEGER *INCX) { DEBUG_LAPACK_STUB("icmax1"); return LAPACK_IMPL(icmax1)(N, CX, INCX); } //-- ieeeck -------------------------------------------------------------------- INTEGER LAPACK_DECL(ieeeck)(const INTEGER *ISPEC, const FLOAT *ZERO, const FLOAT *ONE) { DEBUG_LAPACK_STUB("ieeeck"); return LAPACK_IMPL(ieeeck)(ISPEC, ZERO, ONE); } //-- ilaclc -------------------------------------------------------------------- INTEGER LAPACK_DECL(ilaclc)(const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("ilaclc"); return LAPACK_IMPL(ilaclc)(M, N, A, LDA); } //-- ilaclr -------------------------------------------------------------------- INTEGER LAPACK_DECL(ilaclr)(const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("ilaclr"); return LAPACK_IMPL(ilaclr)(M, N, A, LDA); } //-- iladiag ------------------------------------------------------------------- INTEGER LAPACK_DECL(iladiag)(const char *DIAG) { DEBUG_LAPACK_STUB("iladiag"); return LAPACK_IMPL(iladiag)(DIAG); } //-- iladlc -------------------------------------------------------------------- INTEGER LAPACK_DECL(iladlc)(const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("iladlc"); return LAPACK_IMPL(iladlc)(M, N, A, LDA); } //-- iladlr -------------------------------------------------------------------- INTEGER LAPACK_DECL(iladlr)(const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("iladlr"); return LAPACK_IMPL(iladlr)(M, N, A, LDA); } //-- ilaprec ------------------------------------------------------------------- INTEGER LAPACK_DECL(ilaprec)(const char *PREC) { DEBUG_LAPACK_STUB("ilaprec"); return LAPACK_IMPL(ilaprec)(PREC); } //-- ilaslc -------------------------------------------------------------------- INTEGER LAPACK_DECL(ilaslc)(const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("ilaslc"); return LAPACK_IMPL(ilaslc)(M, N, A, LDA); } //-- ilaslr -------------------------------------------------------------------- INTEGER LAPACK_DECL(ilaslr)(const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("ilaslr"); return LAPACK_IMPL(ilaslr)(M, N, A, LDA); } //-- ilatrans ------------------------------------------------------------------ INTEGER LAPACK_DECL(ilatrans)(const char *TRANS) { DEBUG_LAPACK_STUB("ilatrans"); return LAPACK_IMPL(ilatrans)(TRANS); } //-- ilauplo ------------------------------------------------------------------- INTEGER LAPACK_DECL(ilauplo)(const char *UPLO) { DEBUG_LAPACK_STUB("ilauplo"); return LAPACK_IMPL(ilauplo)(UPLO); } //-- ilaver -------------------------------------------------------------------- void LAPACK_DECL(ilaver)(INTEGER *VERS_MAJOR, INTEGER *VERS_MINOR, INTEGER *VERS_PATCH) { DEBUG_LAPACK_STUB("ilaver"); LAPACK_IMPL(ilaver)(VERS_MAJOR, VERS_MINOR, VERS_PATCH); } //-- ilazlc -------------------------------------------------------------------- INTEGER LAPACK_DECL(ilazlc)(const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("ilazlc"); return LAPACK_IMPL(ilazlc)(M, N, A, LDA); } //-- ilazlr -------------------------------------------------------------------- INTEGER LAPACK_DECL(ilazlr)(const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("ilazlr"); return LAPACK_IMPL(ilazlr)(M, N, A, LDA); } //-- izmax1 -------------------------------------------------------------------- INTEGER LAPACK_DECL(izmax1)(const INTEGER *N, const DOUBLE_COMPLEX *CX, const INTEGER *INCX) { DEBUG_LAPACK_STUB("izmax1"); return LAPACK_IMPL(izmax1)(N, CX, INCX); } //-- lsamen -------------------------------------------------------------------- LOGICAL LAPACK_DECL(lsamen)(const INTEGER *N, const char *CA, const char *CB) { DEBUG_LAPACK_STUB("lsamen"); return LAPACK_IMPL(lsamen)(N, CA, CB); } //-- sbbcsd -------------------------------------------------------------------- void LAPACK_DECL(sbbcsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, FLOAT *THETA, FLOAT *PHI, FLOAT *U1, const INTEGER *LDU1, FLOAT *U2, const INTEGER *LDU2, FLOAT *V1T, const INTEGER *LDV1T, FLOAT *V2T, const INTEGER *LDV2T, FLOAT *B11D, FLOAT *B11E, FLOAT *B12D, FLOAT *B12E, const FLOAT *B21D, const FLOAT *B21E, const FLOAT *B22D, const FLOAT *B22E, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sbbcsd"); LAPACK_IMPL(sbbcsd)(JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS, M, P, Q, THETA, PHI, U1, LDU1, U2, LDU2, V1T, LDV1T, V2T, LDV2T, B11D, B11E, B12D, B12E, B21D, B21E, B22D, B22E, WORK, LWORK, INFO); } //-- sbdsdc -------------------------------------------------------------------- void LAPACK_DECL(sbdsdc)(const char *UPLO, const char *COMPQ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT *U, const INTEGER *LDU, FLOAT *VT, const INTEGER *LDVT, FLOAT *Q, INTEGER *IQ, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sbdsdc"); LAPACK_IMPL(sbdsdc)(UPLO, COMPQ, N, D, E, U, LDU, VT, LDVT, Q, IQ, WORK, IWORK, INFO); } //-- sbdsqr -------------------------------------------------------------------- void LAPACK_DECL(sbdsqr)(const char *UPLO, const INTEGER *N, const INTEGER *NCVT, const INTEGER *NRU, const INTEGER *NCC, FLOAT *D, FLOAT *E, FLOAT *VT, const INTEGER *LDVT, FLOAT *U, const INTEGER *LDU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sbdsqr"); LAPACK_IMPL(sbdsqr)(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C, LDC, WORK, INFO); } //-- scsum1 -------------------------------------------------------------------- FLOAT LAPACK_DECL(scsum1)(const INTEGER *N, const FLOAT_COMPLEX *CX, const INTEGER *INCX) { DEBUG_LAPACK_STUB("scsum1"); return LAPACK_IMPL(scsum1)(N, CX, INCX); } //-- sdisna -------------------------------------------------------------------- void LAPACK_DECL(sdisna)(const char *JOB, const INTEGER *M, const INTEGER *N, const FLOAT *D, FLOAT *SEP, INTEGER *INFO) { DEBUG_LAPACK_STUB("sdisna"); LAPACK_IMPL(sdisna)(JOB, M, N, D, SEP, INFO); } //-- sgbbrd -------------------------------------------------------------------- void LAPACK_DECL(sgbbrd)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *NCC, const INTEGER *KL, const INTEGER *KU, FLOAT *AB, const INTEGER *LDAB, FLOAT *D, FLOAT *E, FLOAT *Q, const INTEGER *LDQ, FLOAT *PT, const INTEGER *LDPT, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgbbrd"); LAPACK_IMPL(sgbbrd)(VECT, M, N, NCC, KL, KU, AB, LDAB, D, E, Q, LDQ, PT, LDPT, C, LDC, WORK, INFO); } //-- sgbcon -------------------------------------------------------------------- void LAPACK_DECL(sgbcon)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT *AB, const INTEGER *LDAB, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgbcon"); LAPACK_IMPL(sgbcon)(NORM, N, KL, KU, AB, LDAB, IPIV, ANORM, RCOND, WORK, IWORK, INFO); } //-- sgbequ -------------------------------------------------------------------- void LAPACK_DECL(sgbequ)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT *AB, const INTEGER *LDAB, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgbequ"); LAPACK_IMPL(sgbequ)(M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND, AMAX, INFO); } //-- sgbequb ------------------------------------------------------------------- void LAPACK_DECL(sgbequb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT *AB, const INTEGER *LDAB, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgbequb"); LAPACK_IMPL(sgbequb)(M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND, AMAX, INFO); } //-- sgbrfs -------------------------------------------------------------------- void LAPACK_DECL(sgbrfs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgbrfs"); LAPACK_IMPL(sgbrfs)(TRANS, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- sgbrfsx ------------------------------------------------------------------- void LAPACK_DECL(sgbrfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, FLOAT *R, FLOAT *C, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgbrfsx"); LAPACK_IMPL(sgbrfsx)(TRANS, EQUED, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, R, C, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO); } //-- sgbsv --------------------------------------------------------------------- void LAPACK_DECL(sgbsv)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, FLOAT *AB, const INTEGER *LDAB, INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgbsv"); LAPACK_IMPL(sgbsv)(N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB, INFO); } //-- sgbsvx -------------------------------------------------------------------- void LAPACK_DECL(sgbsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, FLOAT *AB, const INTEGER *LDAB, FLOAT *AFB, const INTEGER *LDAFB, INTEGER *IPIV, char *EQUED, FLOAT *R, FLOAT *C, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgbsvx"); LAPACK_IMPL(sgbsvx)(FACT, TRANS, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, EQUED, R, C, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, IWORK, INFO); } //-- sgbtf2 -------------------------------------------------------------------- void LAPACK_DECL(sgbtf2)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, FLOAT *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgbtf2"); LAPACK_IMPL(sgbtf2)(M, N, KL, KU, AB, LDAB, IPIV, INFO); } //-- sgbtrf -------------------------------------------------------------------- void LAPACK_DECL(sgbtrf)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, FLOAT *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgbtrf"); LAPACK_IMPL(sgbtrf)(M, N, KL, KU, AB, LDAB, IPIV, INFO); } //-- sgbtrs -------------------------------------------------------------------- void LAPACK_DECL(sgbtrs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, const INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgbtrs"); LAPACK_IMPL(sgbtrs)(TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB, INFO); } //-- sgebak -------------------------------------------------------------------- void LAPACK_DECL(sgebak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const FLOAT *SCALE, const INTEGER *M, FLOAT *V, const INTEGER *LDV, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgebak"); LAPACK_IMPL(sgebak)(JOB, SIDE, N, ILO, IHI, SCALE, M, V, LDV, INFO); } //-- sgebal -------------------------------------------------------------------- void LAPACK_DECL(sgebal)(const char *JOB, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *ILO, INTEGER *IHI, FLOAT *SCALE, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgebal"); LAPACK_IMPL(sgebal)(JOB, N, A, LDA, ILO, IHI, SCALE, INFO); } //-- sgebd2 -------------------------------------------------------------------- void LAPACK_DECL(sgebd2)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT *TAUQ, FLOAT *TAUP, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgebd2"); LAPACK_IMPL(sgebd2)(M, N, A, LDA, D, E, TAUQ, TAUP, WORK, INFO); } //-- sgebrd -------------------------------------------------------------------- void LAPACK_DECL(sgebrd)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT *TAUQ, FLOAT *TAUP, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgebrd"); LAPACK_IMPL(sgebrd)(M, N, A, LDA, D, E, TAUQ, TAUP, WORK, LWORK, INFO); } //-- sgecon -------------------------------------------------------------------- void LAPACK_DECL(sgecon)(const char *NORM, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgecon"); LAPACK_IMPL(sgecon)(NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK, INFO); } //-- sgeequ -------------------------------------------------------------------- void LAPACK_DECL(sgeequ)(const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgeequ"); LAPACK_IMPL(sgeequ)(M, N, A, LDA, R, C, ROWCND, COLCND, AMAX, INFO); } //-- sgeequb ------------------------------------------------------------------- void LAPACK_DECL(sgeequb)(const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgeequb"); LAPACK_IMPL(sgeequb)(M, N, A, LDA, R, C, ROWCND, COLCND, AMAX, INFO); } //-- sgees --------------------------------------------------------------------- void LAPACK_DECL(sgees)(const char *JOBVS, const char *SORT, const LOGICAL *SELECT, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *SDIM, FLOAT *WR, FLOAT *WI, FLOAT *VS, const INTEGER *LDVS, FLOAT *WORK, const INTEGER *LWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgees"); LAPACK_IMPL(sgees)(JOBVS, SORT, SELECT, N, A, LDA, SDIM, WR, WI, VS, LDVS, WORK, LWORK, BWORK, INFO); } //-- sgeesx -------------------------------------------------------------------- void LAPACK_DECL(sgeesx)(const char *JOBVS, const char *SORT, const LOGICAL *SELECT, const char *SENSE, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *SDIM, FLOAT *WR, FLOAT *WI, FLOAT *VS, const INTEGER *LDVS, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgeesx"); LAPACK_IMPL(sgeesx)(JOBVS, SORT, SELECT, SENSE, N, A, LDA, SDIM, WR, WI, VS, LDVS, RCONDE, RCONDV, WORK, LWORK, IWORK, LIWORK, BWORK, INFO); } //-- sgeev --------------------------------------------------------------------- void LAPACK_DECL(sgeev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *WR, FLOAT *WI, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgeev"); LAPACK_IMPL(sgeev)(JOBVL, JOBVR, N, A, LDA, WR, WI, VL, LDVL, VR, LDVR, WORK, LWORK, INFO); } //-- sgeevx -------------------------------------------------------------------- void LAPACK_DECL(sgeevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *WR, FLOAT *WI, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, FLOAT *SCALE, FLOAT *ABNRM, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgeevx"); LAPACK_IMPL(sgeevx)(BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, WR, WI, VL, LDVL, VR, LDVR, ILO, IHI, SCALE, ABNRM, RCONDE, RCONDV, WORK, LWORK, IWORK, INFO); } //-- sgegs --------------------------------------------------------------------- void LAPACK_DECL(sgegs)(const char *JOBVSL, const char *JOBVSR, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *VSL, const INTEGER *LDVSL, FLOAT *VSR, const INTEGER *LDVSR, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgegs"); LAPACK_IMPL(sgegs)(JOBVSL, JOBVSR, N, A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, WORK, LWORK, INFO); } //-- sgegv --------------------------------------------------------------------- void LAPACK_DECL(sgegv)(const char *JOBVL, const char *JOBVR, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgegv"); LAPACK_IMPL(sgegv)(JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, VL, LDVL, VR, LDVR, WORK, LWORK, INFO); } //-- sgehd2 -------------------------------------------------------------------- void LAPACK_DECL(sgehd2)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgehd2"); LAPACK_IMPL(sgehd2)(N, ILO, IHI, A, LDA, TAU, WORK, INFO); } //-- sgehrd -------------------------------------------------------------------- void LAPACK_DECL(sgehrd)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgehrd"); LAPACK_IMPL(sgehrd)(N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO); } //-- sgejsv -------------------------------------------------------------------- void LAPACK_DECL(sgejsv)(const char *JOBA, const char *JOBU, const char *JOBV, const char *JOBR, const char *JOBT, const char *JOBP, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *SVA, const FLOAT *U, const INTEGER *LDU, const FLOAT *V, const INTEGER *LDV, const FLOAT *WORK, const INTEGER *LWORK, const INTEGER *IWORK, const INTEGER *INFO) { DEBUG_LAPACK_STUB("sgejsv"); LAPACK_IMPL(sgejsv)(JOBA, JOBU, JOBV, JOBR, JOBT, JOBP, M, N, A, LDA, SVA, U, LDU, V, LDV, WORK, LWORK, IWORK, INFO); } //-- sgelq2 -------------------------------------------------------------------- void LAPACK_DECL(sgelq2)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgelq2"); LAPACK_IMPL(sgelq2)(M, N, A, LDA, TAU, WORK, INFO); } //-- sgelqf -------------------------------------------------------------------- void LAPACK_DECL(sgelqf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgelqf"); LAPACK_IMPL(sgelqf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- sgels --------------------------------------------------------------------- void LAPACK_DECL(sgels)(const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgels"); LAPACK_IMPL(sgels)(TRANS, M, N, NRHS, A, LDA, B, LDB, WORK, LWORK, INFO); } //-- sgelsd -------------------------------------------------------------------- void LAPACK_DECL(sgelsd)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *S, const FLOAT *RCOND, INTEGER *RANK, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgelsd"); LAPACK_IMPL(sgelsd)(M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK, WORK, LWORK, IWORK, INFO); } //-- sgelss -------------------------------------------------------------------- void LAPACK_DECL(sgelss)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *S, const FLOAT *RCOND, INTEGER *RANK, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgelss"); LAPACK_IMPL(sgelss)(M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK, WORK, LWORK, INFO); } //-- sgelsx -------------------------------------------------------------------- void LAPACK_DECL(sgelsx)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *JPVT, const FLOAT *RCOND, INTEGER *RANK, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgelsx"); LAPACK_IMPL(sgelsx)(M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK, WORK, INFO); } //-- sgelsy -------------------------------------------------------------------- void LAPACK_DECL(sgelsy)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *JPVT, const FLOAT *RCOND, INTEGER *RANK, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgelsy"); LAPACK_IMPL(sgelsy)(M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK, WORK, LWORK, INFO); } //-- sgeql2 -------------------------------------------------------------------- void LAPACK_DECL(sgeql2)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgeql2"); LAPACK_IMPL(sgeql2)(M, N, A, LDA, TAU, WORK, INFO); } //-- sgeqlf -------------------------------------------------------------------- void LAPACK_DECL(sgeqlf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgeqlf"); LAPACK_IMPL(sgeqlf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- sgeqp3 -------------------------------------------------------------------- void LAPACK_DECL(sgeqp3)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgeqp3"); LAPACK_IMPL(sgeqp3)(M, N, A, LDA, JPVT, TAU, WORK, LWORK, INFO); } //-- sgeqpf -------------------------------------------------------------------- void LAPACK_DECL(sgeqpf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgeqpf"); LAPACK_IMPL(sgeqpf)(M, N, A, LDA, JPVT, TAU, WORK, INFO); } //-- sgeqr2 -------------------------------------------------------------------- void LAPACK_DECL(sgeqr2)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgeqr2"); LAPACK_IMPL(sgeqr2)(M, N, A, LDA, TAU, WORK, INFO); } //-- sgeqr2p ------------------------------------------------------------------- void LAPACK_DECL(sgeqr2p)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgeqr2p"); LAPACK_IMPL(sgeqr2p)(M, N, A, LDA, TAU, WORK, INFO); } //-- sgeqrf -------------------------------------------------------------------- void LAPACK_DECL(sgeqrf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgeqrf"); LAPACK_IMPL(sgeqrf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- sgeqrfp ------------------------------------------------------------------- void LAPACK_DECL(sgeqrfp)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgeqrfp"); LAPACK_IMPL(sgeqrfp)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- sgerfs -------------------------------------------------------------------- void LAPACK_DECL(sgerfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgerfs"); LAPACK_IMPL(sgerfs)(TRANS, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- sgerfsx ------------------------------------------------------------------- void LAPACK_DECL(sgerfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *R, const FLOAT *C, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgerfsx"); LAPACK_IMPL(sgerfsx)(TRANS, EQUED, N, NRHS, A, LDA, AF, LDAF, IPIV, R, C, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO); } //-- sgerq2 -------------------------------------------------------------------- void LAPACK_DECL(sgerq2)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgerq2"); LAPACK_IMPL(sgerq2)(M, N, A, LDA, TAU, WORK, INFO); } //-- sgerqf -------------------------------------------------------------------- void LAPACK_DECL(sgerqf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgerqf"); LAPACK_IMPL(sgerqf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- sgesc2 -------------------------------------------------------------------- void LAPACK_DECL(sgesc2)(const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *RHS, const INTEGER *IPIV, const INTEGER *JPIV, FLOAT *SCALE) { DEBUG_LAPACK_STUB("sgesc2"); LAPACK_IMPL(sgesc2)(N, A, LDA, RHS, IPIV, JPIV, SCALE); } //-- sgesdd -------------------------------------------------------------------- void LAPACK_DECL(sgesdd)(const char *JOBZ, const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *S, FLOAT *U, const INTEGER *LDU, FLOAT *VT, const INTEGER *LDVT, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgesdd"); LAPACK_IMPL(sgesdd)(JOBZ, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK, LWORK, IWORK, INFO); } //-- sgesv --------------------------------------------------------------------- void LAPACK_DECL(sgesv)(const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgesv"); LAPACK_IMPL(sgesv)(N, NRHS, A, LDA, IPIV, B, LDB, INFO); } //-- sgesvd -------------------------------------------------------------------- void LAPACK_DECL(sgesvd)(const char *JOBU, const char *JOBVT, const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *S, FLOAT *U, const INTEGER *LDU, FLOAT *VT, const INTEGER *LDVT, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgesvd"); LAPACK_IMPL(sgesvd)(JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK, LWORK, INFO); } //-- sgesvj -------------------------------------------------------------------- void LAPACK_DECL(sgesvj)(const char *JOBA, const char *JOBU, const char *JOBV, const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *SVA, const INTEGER *MV, FLOAT *V, const INTEGER *LDV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgesvj"); LAPACK_IMPL(sgesvj)(JOBA, JOBU, JOBV, M, N, A, LDA, SVA, MV, V, LDV, WORK, LWORK, INFO); } //-- sgesvx -------------------------------------------------------------------- void LAPACK_DECL(sgesvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, FLOAT *R, FLOAT *C, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgesvx"); LAPACK_IMPL(sgesvx)(FACT, TRANS, N, NRHS, A, LDA, AF, LDAF, IPIV, EQUED, R, C, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, IWORK, INFO); } //-- sgesvxx ------------------------------------------------------------------- void LAPACK_DECL(sgesvxx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, FLOAT *R, FLOAT *C, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgesvxx"); LAPACK_IMPL(sgesvxx)(FACT, TRANS, N, NRHS, A, LDA, AF, LDAF, IPIV, EQUED, R, C, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO); } //-- sgetc2 -------------------------------------------------------------------- void LAPACK_DECL(sgetc2)(const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *JPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgetc2"); LAPACK_IMPL(sgetc2)(N, A, LDA, IPIV, JPIV, INFO); } //-- sgetf2 -------------------------------------------------------------------- void LAPACK_DECL(sgetf2)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgetf2"); LAPACK_IMPL(sgetf2)(M, N, A, LDA, IPIV, INFO); } //-- sgetrf -------------------------------------------------------------------- void LAPACK_DECL(sgetrf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgetrf"); LAPACK_IMPL(sgetrf)(M, N, A, LDA, IPIV, INFO); } //-- sgetri -------------------------------------------------------------------- void LAPACK_DECL(sgetri)(const INTEGER *N, FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgetri"); LAPACK_IMPL(sgetri)(N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- sgetrs -------------------------------------------------------------------- void LAPACK_DECL(sgetrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgetrs"); LAPACK_IMPL(sgetrs)(TRANS, N, NRHS, A, LDA, IPIV, B, LDB, INFO); } //-- sggbak -------------------------------------------------------------------- void LAPACK_DECL(sggbak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const FLOAT *LSCALE, const FLOAT *RSCALE, const INTEGER *M, FLOAT *V, const INTEGER *LDV, INTEGER *INFO) { DEBUG_LAPACK_STUB("sggbak"); LAPACK_IMPL(sggbak)(JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V, LDV, INFO); } //-- sggbal -------------------------------------------------------------------- void LAPACK_DECL(sggbal)(const char *JOB, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *ILO, INTEGER *IHI, FLOAT *LSCALE, FLOAT *RSCALE, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sggbal"); LAPACK_IMPL(sggbal)(JOB, N, A, LDA, B, LDB, ILO, IHI, LSCALE, RSCALE, WORK, INFO); } //-- sgges --------------------------------------------------------------------- void LAPACK_DECL(sgges)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *SDIM, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *VSL, const INTEGER *LDVSL, FLOAT *VSR, const INTEGER *LDVSR, FLOAT *WORK, const INTEGER *LWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgges"); LAPACK_IMPL(sgges)(JOBVSL, JOBVSR, SORT, SELCTG, N, A, LDA, B, LDB, SDIM, ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, WORK, LWORK, BWORK, INFO); } //-- sggesx -------------------------------------------------------------------- void LAPACK_DECL(sggesx)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const char *SENSE, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *SDIM, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *VSL, const INTEGER *LDVSL, FLOAT *VSR, const INTEGER *LDVSR, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sggesx"); LAPACK_IMPL(sggesx)(JOBVSL, JOBVSR, SORT, SELCTG, SENSE, N, A, LDA, B, LDB, SDIM, ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, RCONDE, RCONDV, WORK, LWORK, IWORK, LIWORK, BWORK, INFO); } //-- sggev --------------------------------------------------------------------- void LAPACK_DECL(sggev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sggev"); LAPACK_IMPL(sggev)(JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, VL, LDVL, VR, LDVR, WORK, LWORK, INFO); } //-- sggevx -------------------------------------------------------------------- void LAPACK_DECL(sggevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, FLOAT *LSCALE, FLOAT *RSCALE, FLOAT *ABNRM, FLOAT *BBNRM, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sggevx"); LAPACK_IMPL(sggevx)(BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, VL, LDVL, VR, LDVR, ILO, IHI, LSCALE, RSCALE, ABNRM, BBNRM, RCONDE, RCONDV, WORK, LWORK, IWORK, BWORK, INFO); } //-- sggglm -------------------------------------------------------------------- void LAPACK_DECL(sggglm)(const INTEGER *N, const INTEGER *M, const INTEGER *P, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *D, FLOAT *X, FLOAT *Y, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sggglm"); LAPACK_IMPL(sggglm)(N, M, P, A, LDA, B, LDB, D, X, Y, WORK, LWORK, INFO); } //-- sgghrd -------------------------------------------------------------------- void LAPACK_DECL(sgghrd)(const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *Q, const INTEGER *LDQ, FLOAT *Z, const INTEGER *LDZ, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgghrd"); LAPACK_IMPL(sgghrd)(COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q, LDQ, Z, LDZ, INFO); } //-- sgglse -------------------------------------------------------------------- void LAPACK_DECL(sgglse)(const INTEGER *M, const INTEGER *N, const INTEGER *P, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *C, FLOAT *D, FLOAT *X, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgglse"); LAPACK_IMPL(sgglse)(M, N, P, A, LDA, B, LDB, C, D, X, WORK, LWORK, INFO); } //-- sggqrf -------------------------------------------------------------------- void LAPACK_DECL(sggqrf)(const INTEGER *N, const INTEGER *M, const INTEGER *P, FLOAT *A, const INTEGER *LDA, FLOAT *TAUA, FLOAT *B, const INTEGER *LDB, FLOAT *TAUB, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sggqrf"); LAPACK_IMPL(sggqrf)(N, M, P, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO); } //-- sggrqf -------------------------------------------------------------------- void LAPACK_DECL(sggrqf)(const INTEGER *M, const INTEGER *P, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAUA, FLOAT *B, const INTEGER *LDB, FLOAT *TAUB, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sggrqf"); LAPACK_IMPL(sggrqf)(M, P, N, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO); } //-- sggsvd -------------------------------------------------------------------- void LAPACK_DECL(sggsvd)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *N, const INTEGER *P, INTEGER *K, INTEGER *L, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *ALPHA, FLOAT *BETA, FLOAT *U, const INTEGER *LDU, FLOAT *V, const INTEGER *LDV, FLOAT *Q, const INTEGER *LDQ, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sggsvd"); LAPACK_IMPL(sggsvd)(JOBU, JOBV, JOBQ, M, N, P, K, L, A, LDA, B, LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, IWORK, INFO); } //-- sggsvp -------------------------------------------------------------------- void LAPACK_DECL(sggsvp)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, const FLOAT *TOLA, const FLOAT *TOLB, INTEGER *K, INTEGER *L, FLOAT *U, const INTEGER *LDU, FLOAT *V, const INTEGER *LDV, FLOAT *Q, const INTEGER *LDQ, INTEGER *IWORK, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sggsvp"); LAPACK_IMPL(sggsvp)(JOBU, JOBV, JOBQ, M, P, N, A, LDA, B, LDB, TOLA, TOLB, K, L, U, LDU, V, LDV, Q, LDQ, IWORK, TAU, WORK, INFO); } //-- sgsvj0 -------------------------------------------------------------------- void LAPACK_DECL(sgsvj0)(const char *JOBV, const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *D, FLOAT *SVA, const INTEGER *MV, FLOAT *V, const INTEGER *LDV, const FLOAT *EPS, const FLOAT *SFMIN, const FLOAT *TOL, const INTEGER *NSWEEP, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgsvj0"); LAPACK_IMPL(sgsvj0)(JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, SFMIN, TOL, NSWEEP, WORK, LWORK, INFO); } //-- sgsvj1 -------------------------------------------------------------------- void LAPACK_DECL(sgsvj1)(const char *JOBV, const INTEGER *M, const INTEGER *N, const INTEGER *N1, FLOAT *A, const INTEGER *LDA, FLOAT *D, FLOAT *SVA, const INTEGER *MV, FLOAT *V, const INTEGER *LDV, const FLOAT *EPS, const FLOAT *SFMIN, const FLOAT *TOL, const INTEGER *NSWEEP, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgsvj1"); LAPACK_IMPL(sgsvj1)(JOBV, M, N, N1, A, LDA, D, SVA, MV, V, LDV, EPS, SFMIN, TOL, NSWEEP, WORK, LWORK, INFO); } //-- sgtcon -------------------------------------------------------------------- void LAPACK_DECL(sgtcon)(const char *NORM, const INTEGER *N, const FLOAT *DL, const FLOAT *D, const FLOAT *DU, const FLOAT *DU2, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgtcon"); LAPACK_IMPL(sgtcon)(NORM, N, DL, D, DU, DU2, IPIV, ANORM, RCOND, WORK, IWORK, INFO); } //-- sgtrfs -------------------------------------------------------------------- void LAPACK_DECL(sgtrfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *DL, const FLOAT *D, const FLOAT *DU, const FLOAT *DLF, const FLOAT *DF, const FLOAT *DUF, const FLOAT *DU2, const INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgtrfs"); LAPACK_IMPL(sgtrfs)(TRANS, N, NRHS, DL, D, DU, DLF, DF, DUF, DU2, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- sgtsv --------------------------------------------------------------------- void LAPACK_DECL(sgtsv)(const INTEGER *N, const INTEGER *NRHS, FLOAT *DL, FLOAT *D, FLOAT *DU, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgtsv"); LAPACK_IMPL(sgtsv)(N, NRHS, DL, D, DU, B, LDB, INFO); } //-- sgtsvx -------------------------------------------------------------------- void LAPACK_DECL(sgtsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *DL, const FLOAT *D, const FLOAT *DU, FLOAT *DLF, FLOAT *DF, FLOAT *DUF, FLOAT *DU2, INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgtsvx"); LAPACK_IMPL(sgtsvx)(FACT, TRANS, N, NRHS, DL, D, DU, DLF, DF, DUF, DU2, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, IWORK, INFO); } //-- sgttrf -------------------------------------------------------------------- void LAPACK_DECL(sgttrf)(const INTEGER *N, FLOAT *DL, FLOAT *D, FLOAT *DU, FLOAT *DU2, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgttrf"); LAPACK_IMPL(sgttrf)(N, DL, D, DU, DU2, IPIV, INFO); } //-- sgttrs -------------------------------------------------------------------- void LAPACK_DECL(sgttrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *DL, const FLOAT *D, const FLOAT *DU, const FLOAT *DU2, const INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("sgttrs"); LAPACK_IMPL(sgttrs)(TRANS, N, NRHS, DL, D, DU, DU2, IPIV, B, LDB, INFO); } //-- sgtts2 -------------------------------------------------------------------- void LAPACK_DECL(sgtts2)(const INTEGER *ITRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *DL, const FLOAT *D, const FLOAT *DU, const FLOAT *DU2, const INTEGER *IPIV, FLOAT *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("sgtts2"); LAPACK_IMPL(sgtts2)(ITRANS, N, NRHS, DL, D, DU, DU2, IPIV, B, LDB); } //-- shgeqz -------------------------------------------------------------------- void LAPACK_DECL(shgeqz)(const char *JOB, const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *H, const INTEGER *LDH, FLOAT *T, const INTEGER *LDT, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *Q, const INTEGER *LDQ, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("shgeqz"); LAPACK_IMPL(shgeqz)(JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT, ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, WORK, LWORK, INFO); } //-- shsein -------------------------------------------------------------------- void LAPACK_DECL(shsein)(const char *SIDE, const char *EIGSRC, const char *INITV, LOGICAL *SELECT, const INTEGER *N, const FLOAT *H, const INTEGER *LDH, FLOAT *WR, const FLOAT *WI, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, FLOAT *WORK, INTEGER *IFAILL, INTEGER *IFAILR, INTEGER *INFO) { DEBUG_LAPACK_STUB("shsein"); LAPACK_IMPL(shsein)(SIDE, EIGSRC, INITV, SELECT, N, H, LDH, WR, WI, VL, LDVL, VR, LDVR, MM, M, WORK, IFAILL, IFAILR, INFO); } //-- shseqr -------------------------------------------------------------------- void LAPACK_DECL(shseqr)(const char *JOB, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *H, const INTEGER *LDH, FLOAT *WR, FLOAT *WI, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("shseqr"); LAPACK_IMPL(shseqr)(JOB, COMPZ, N, ILO, IHI, H, LDH, WR, WI, Z, LDZ, WORK, LWORK, INFO); } //-- sisnan -------------------------------------------------------------------- LOGICAL LAPACK_DECL(sisnan)(const FLOAT *SIN) { DEBUG_LAPACK_STUB("sisnan"); return LAPACK_IMPL(sisnan)(SIN); } //-- sla_gbamv ----------------------------------------------------------------- void LAPACK_DECL(sla_gbamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT *ALPHA, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *X, const INTEGER *INCX, const FLOAT *BETA, FLOAT *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("sla_gbamv"); LAPACK_IMPL(sla_gbamv)(TRANS, M, N, KL, KU, ALPHA, AB, LDAB, X, INCX, BETA, Y, INCY); } //-- sla_gbrcond --------------------------------------------------------------- FLOAT LAPACK_DECL(sla_gbrcond)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const INTEGER *CMODE, const FLOAT *C, INTEGER *INFO, const FLOAT *WORK, const INTEGER *IWORK) { DEBUG_LAPACK_STUB("sla_gbrcond"); return LAPACK_IMPL(sla_gbrcond)(TRANS, N, KL, KU, AB, LDAB, AFB, LDAFB, IPIV, CMODE, C, INFO, WORK, IWORK); } //-- sla_gbrfsx_extended ------------------------------------------------------- void LAPACK_DECL(sla_gbrfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT *B, const INTEGER *LDB, FLOAT *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT *RES, const FLOAT *AYB, const FLOAT *DY, const FLOAT *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("sla_gbrfsx_extended"); ASSERT(0); /* LAPACK_IMPL(sla_gbrfsx_extended)(PREC_TYPE, TRANS_TYPE, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERR_BNDS_NORM, ERR_BNDS_COMP, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- sla_gbrpvgrw -------------------------------------------------------------- FLOAT LAPACK_DECL(sla_gbrpvgrw)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NCOLS, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *AFB, const INTEGER *LDAFB) { DEBUG_LAPACK_STUB("sla_gbrpvgrw"); return LAPACK_IMPL(sla_gbrpvgrw)(N, KL, KU, NCOLS, AB, LDAB, AFB, LDAFB); } //-- sla_geamv ----------------------------------------------------------------- void LAPACK_DECL(sla_geamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const FLOAT *ALPHA, const FLOAT *A, const INTEGER *LDA, const FLOAT *X, const INTEGER *INCX, const FLOAT *BETA, FLOAT *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("sla_geamv"); LAPACK_IMPL(sla_geamv)(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY); } //-- sla_gercond --------------------------------------------------------------- FLOAT LAPACK_DECL(sla_gercond)(const char *TRANS, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const INTEGER *CMODE, const FLOAT *C, INTEGER *INFO, const FLOAT *WORK, const INTEGER *IWORK) { DEBUG_LAPACK_STUB("sla_gercond"); return LAPACK_IMPL(sla_gercond)(TRANS, N, A, LDA, AF, LDAF, IPIV, CMODE, C, INFO, WORK, IWORK); } //-- sla_gerfsx_extended ------------------------------------------------------- void LAPACK_DECL(sla_gerfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT *B, const INTEGER *LDB, FLOAT *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT *RES, const FLOAT *AYB, const FLOAT *DY, const FLOAT *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("sla_gerfsx_extended"); ASSERT(0); /* LAPACK_IMPL(sla_gerfsx_extended)(PREC_TYPE, TRANS_TYPE, N, NRHS, A, LDA, AF, LDAF, IPIV, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERR_BNDS_NORM, ERR_BNDS_COMP, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- sla_lin_berr -------------------------------------------------------------- void LAPACK_DECL(sla_lin_berr)(const INTEGER *N, const INTEGER *NZ, const INTEGER *NRHS, const FLOAT *RES, const FLOAT *AYB, FLOAT *BERR) { DEBUG_LAPACK_STUB("sla_lin_berr"); LAPACK_IMPL(sla_lin_berr)(N, NZ, NRHS, RES, AYB, BERR); } //-- sla_porcond --------------------------------------------------------------- FLOAT LAPACK_DECL(sla_porcond)(const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *CMODE, const FLOAT *C, INTEGER *INFO, const FLOAT *WORK, const INTEGER *IWORK) { DEBUG_LAPACK_STUB("sla_porcond"); return LAPACK_IMPL(sla_porcond)(UPLO, N, A, LDA, AF, LDAF, CMODE, C, INFO, WORK, IWORK); } //-- sla_porfsx_extended ------------------------------------------------------- void LAPACK_DECL(sla_porfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT *B, const INTEGER *LDB, FLOAT *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT *RES, const FLOAT *AYB, const FLOAT *DY, const FLOAT *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("sla_porfsx_extended"); ASSERT(0); /* LAPACK_IMPL(sla_porfsx_extended)(PREC_TYPE, UPLO, N, NRHS, A, LDA, AF, LDAF, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERR_BNDS_NORM, ERR_BNDS_COMP, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- sla_porpvgrw -------------------------------------------------------------- FLOAT LAPACK_DECL(sla_porpvgrw)(const char *UPLO, const INTEGER *NCOLS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const FLOAT *WORK) { DEBUG_LAPACK_STUB("sla_porpvgrw"); return LAPACK_IMPL(sla_porpvgrw)(UPLO, NCOLS, A, LDA, AF, LDAF, WORK); } //-- sla_rpvgrw ---------------------------------------------------------------- FLOAT LAPACK_DECL(sla_rpvgrw)(const INTEGER *N, const INTEGER *NCOLS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF) { DEBUG_LAPACK_STUB("sla_rpvgrw"); return LAPACK_IMPL(sla_rpvgrw)(N, NCOLS, A, LDA, AF, LDAF); } //-- sla_syamv ----------------------------------------------------------------- void LAPACK_DECL(sla_syamv)(const INTEGER *UPLO, const INTEGER *N, const FLOAT *ALPHA, const FLOAT *A, const INTEGER *LDA, const FLOAT *X, const INTEGER *INCX, const FLOAT *BETA, FLOAT *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("sla_syamv"); LAPACK_IMPL(sla_syamv)(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY); } //-- sla_syrcond --------------------------------------------------------------- FLOAT LAPACK_DECL(sla_syrcond)(const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const INTEGER *CMODE, const FLOAT *C, INTEGER *INFO, const FLOAT *WORK, const INTEGER *IWORK) { DEBUG_LAPACK_STUB("sla_syrcond"); return LAPACK_IMPL(sla_syrcond)(UPLO, N, A, LDA, AF, LDAF, IPIV, CMODE, C, INFO, WORK, IWORK); } //-- sla_syrfsx_extended ------------------------------------------------------- void LAPACK_DECL(sla_syrfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT *B, const INTEGER *LDB, FLOAT *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT *RES, const FLOAT *AYB, const FLOAT *DY, const FLOAT *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("sla_syrfsx_extended"); ASSERT(0); /* LAPACK_IMPL(sla_syrfsx_extended)(PREC_TYPE, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERR_BNDS_NORM, ERR_BNDS_COMP, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- sla_syrpvgrw -------------------------------------------------------------- FLOAT LAPACK_DECL(sla_syrpvgrw)(const char *UPLO, const INTEGER *N, const INTEGER *INFO, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *WORK) { DEBUG_LAPACK_STUB("sla_syrpvgrw"); return LAPACK_IMPL(sla_syrpvgrw)(UPLO, N, INFO, A, LDA, AF, LDAF, IPIV, WORK); } //-- sla_wwaddw ---------------------------------------------------------------- void LAPACK_DECL(sla_wwaddw)(const INTEGER *N, FLOAT *X, FLOAT *Y, const FLOAT *W) { DEBUG_LAPACK_STUB("sla_wwaddw"); LAPACK_IMPL(sla_wwaddw)(N, X, Y, W); } //-- slabad -------------------------------------------------------------------- void LAPACK_DECL(slabad)(FLOAT *SMALL, FLOAT *LARGE) { DEBUG_LAPACK_STUB("slabad"); LAPACK_IMPL(slabad)(SMALL, LARGE); } //-- slabrd -------------------------------------------------------------------- void LAPACK_DECL(slabrd)(const INTEGER *M, const INTEGER *N, const INTEGER *NB, FLOAT *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT *TAUQ, FLOAT *TAUP, FLOAT *X, const INTEGER *LDX, FLOAT *Y, const INTEGER *LDY) { DEBUG_LAPACK_STUB("slabrd"); LAPACK_IMPL(slabrd)(M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y, LDY); } //-- slacn2 -------------------------------------------------------------------- void LAPACK_DECL(slacn2)(const INTEGER *N, FLOAT *V, FLOAT *X, INTEGER *ISGN, FLOAT *EST, INTEGER *KASE, INTEGER *ISAVE) { DEBUG_LAPACK_STUB("slacn2"); LAPACK_IMPL(slacn2)(N, V, X, ISGN, EST, KASE, ISAVE); } //-- slacon -------------------------------------------------------------------- void LAPACK_DECL(slacon)(const INTEGER *N, FLOAT *V, FLOAT *X, INTEGER *ISGN, FLOAT *EST, INTEGER *KASE) { DEBUG_LAPACK_STUB("slacon"); LAPACK_IMPL(slacon)(N, V, X, ISGN, EST, KASE); } //-- slacpy -------------------------------------------------------------------- void LAPACK_DECL(slacpy)(const char *UPLO, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("slacpy"); LAPACK_IMPL(slacpy)(UPLO, M, N, A, LDA, B, LDB); } //-- sladiv -------------------------------------------------------------------- void LAPACK_DECL(sladiv)(const FLOAT *A, const FLOAT *B, const FLOAT *C, const FLOAT *D, FLOAT *P, FLOAT *Q) { DEBUG_LAPACK_STUB("sladiv"); LAPACK_IMPL(sladiv)(A, B, C, D, P, Q); } //-- slae2 --------------------------------------------------------------------- void LAPACK_DECL(slae2)(const FLOAT *A, const FLOAT *B, const FLOAT *C, FLOAT *RT1, FLOAT *RT2) { DEBUG_LAPACK_STUB("slae2"); LAPACK_IMPL(slae2)(A, B, C, RT1, RT2); } //-- slaebz -------------------------------------------------------------------- void LAPACK_DECL(slaebz)(const INTEGER *IJOB, const INTEGER *NITMAX, const INTEGER *N, const INTEGER *MMAX, const INTEGER *MINP, const INTEGER *NBMIN, const FLOAT *ABSTOL, const FLOAT *RELTOL, const FLOAT *PIVMIN, const FLOAT *D, const FLOAT *E, const FLOAT *E2, INTEGER *NVAL, FLOAT *AB, FLOAT *C, INTEGER *MOUT, INTEGER *NAB, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaebz"); LAPACK_IMPL(slaebz)(IJOB, NITMAX, N, MMAX, MINP, NBMIN, ABSTOL, RELTOL, PIVMIN, D, E, E2, NVAL, AB, C, MOUT, NAB, WORK, IWORK, INFO); } //-- slaed0 -------------------------------------------------------------------- void LAPACK_DECL(slaed0)(const INTEGER *ICOMPQ, const INTEGER *QSIZ, const INTEGER *N, FLOAT *D, const FLOAT *E, FLOAT *Q, const INTEGER *LDQ, FLOAT *QSTORE, const INTEGER *LDQS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaed0"); LAPACK_IMPL(slaed0)(ICOMPQ, QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS, WORK, IWORK, INFO); } //-- slaed1 -------------------------------------------------------------------- void LAPACK_DECL(slaed1)(const INTEGER *N, FLOAT *D, FLOAT *Q, const INTEGER *LDQ, INTEGER *INDXQ, const FLOAT *RHO, const INTEGER *CUTPNT, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaed1"); LAPACK_IMPL(slaed1)(N, D, Q, LDQ, INDXQ, RHO, CUTPNT, WORK, IWORK, INFO); } //-- slaed2 -------------------------------------------------------------------- void LAPACK_DECL(slaed2)(INTEGER *K, const INTEGER *N, const INTEGER *N1, FLOAT *D, FLOAT *Q, const INTEGER *LDQ, INTEGER *INDXQ, FLOAT *RHO, const FLOAT *Z, FLOAT *DLAMDA, FLOAT *W, FLOAT *Q2, INTEGER *INDX, INTEGER *INDXC, INTEGER *INDXP, INTEGER *COLTYP, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaed2"); LAPACK_IMPL(slaed2)(K, N, N1, D, Q, LDQ, INDXQ, RHO, Z, DLAMDA, W, Q2, INDX, INDXC, INDXP, COLTYP, INFO); } //-- slaed3 -------------------------------------------------------------------- void LAPACK_DECL(slaed3)(const INTEGER *K, const INTEGER *N, const INTEGER *N1, FLOAT *D, FLOAT *Q, const INTEGER *LDQ, const FLOAT *RHO, FLOAT *DLAMDA, const FLOAT *Q2, const INTEGER *INDX, const INTEGER *CTOT, FLOAT *W, FLOAT *S, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaed3"); LAPACK_IMPL(slaed3)(K, N, N1, D, Q, LDQ, RHO, DLAMDA, Q2, INDX, CTOT, W, S, INFO); } //-- slaed4 -------------------------------------------------------------------- void LAPACK_DECL(slaed4)(const INTEGER *N, const INTEGER *I, const FLOAT *D, const FLOAT *Z, FLOAT *DELTA, const FLOAT *RHO, FLOAT *DLAM, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaed4"); LAPACK_IMPL(slaed4)(N, I, D, Z, DELTA, RHO, DLAM, INFO); } //-- slaed5 -------------------------------------------------------------------- void LAPACK_DECL(slaed5)(const INTEGER *I, const FLOAT *D, const FLOAT *Z, FLOAT *DELTA, const FLOAT *RHO, FLOAT *DLAM) { DEBUG_LAPACK_STUB("slaed5"); LAPACK_IMPL(slaed5)(I, D, Z, DELTA, RHO, DLAM); } //-- slaed6 -------------------------------------------------------------------- void LAPACK_DECL(slaed6)(const INTEGER *KNITER, const LOGICAL *ORGATI, const FLOAT *RHO, const FLOAT *D, const FLOAT *Z, const FLOAT *FINIT, FLOAT *TAU, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaed6"); LAPACK_IMPL(slaed6)(KNITER, ORGATI, RHO, D, Z, FINIT, TAU, INFO); } //-- slaed7 -------------------------------------------------------------------- void LAPACK_DECL(slaed7)(const INTEGER *ICOMPQ, const INTEGER *N, const INTEGER *QSIZ, const INTEGER *TLVLS, const INTEGER *CURLVL, const INTEGER *CURPBM, FLOAT *D, FLOAT *Q, const INTEGER *LDQ, INTEGER *INDXQ, const FLOAT *RHO, const INTEGER *CUTPNT, FLOAT *QSTORE, INTEGER *QPTR, const INTEGER *PRMPTR, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const FLOAT *GIVNUM, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaed7"); LAPACK_IMPL(slaed7)(ICOMPQ, N, QSIZ, TLVLS, CURLVL, CURPBM, D, Q, LDQ, INDXQ, RHO, CUTPNT, QSTORE, QPTR, PRMPTR, PERM, GIVPTR, GIVCOL, GIVNUM, WORK, IWORK, INFO); } //-- slaed8 -------------------------------------------------------------------- void LAPACK_DECL(slaed8)(const INTEGER *ICOMPQ, INTEGER *K, const INTEGER *N, const INTEGER *QSIZ, FLOAT *D, FLOAT *Q, const INTEGER *LDQ, const INTEGER *INDXQ, FLOAT *RHO, const INTEGER *CUTPNT, const FLOAT *Z, FLOAT *DLAMDA, FLOAT *Q2, const INTEGER *LDQ2, FLOAT *W, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, FLOAT *GIVNUM, INTEGER *INDXP, INTEGER *INDX, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaed8"); LAPACK_IMPL(slaed8)(ICOMPQ, K, N, QSIZ, D, Q, LDQ, INDXQ, RHO, CUTPNT, Z, DLAMDA, Q2, LDQ2, W, PERM, GIVPTR, GIVCOL, GIVNUM, INDXP, INDX, INFO); } //-- slaed9 -------------------------------------------------------------------- void LAPACK_DECL(slaed9)(const INTEGER *K, const INTEGER *KSTART, const INTEGER *KSTOP, const INTEGER *N, FLOAT *D, FLOAT *Q, const INTEGER *LDQ, const FLOAT *RHO, const FLOAT *DLAMDA, const FLOAT *W, FLOAT *S, const INTEGER *LDS, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaed9"); LAPACK_IMPL(slaed9)(K, KSTART, KSTOP, N, D, Q, LDQ, RHO, DLAMDA, W, S, LDS, INFO); } //-- slaeda -------------------------------------------------------------------- void LAPACK_DECL(slaeda)(const INTEGER *N, const INTEGER *TLVLS, const INTEGER *CURLVL, const INTEGER *CURPBM, const INTEGER *PRMPTR, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const FLOAT *GIVNUM, const FLOAT *Q, const INTEGER *QPTR, FLOAT *Z, FLOAT *ZTEMP, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaeda"); LAPACK_IMPL(slaeda)(N, TLVLS, CURLVL, CURPBM, PRMPTR, PERM, GIVPTR, GIVCOL, GIVNUM, Q, QPTR, Z, ZTEMP, INFO); } //-- slaein -------------------------------------------------------------------- void LAPACK_DECL(slaein)(const LOGICAL *RIGHTV, const LOGICAL *NOINIT, const INTEGER *N, const FLOAT *H, const INTEGER *LDH, const FLOAT *WR, const FLOAT *WI, FLOAT *VR, FLOAT *VI, FLOAT *B, const INTEGER *LDB, FLOAT *WORK, const FLOAT *EPS3, const FLOAT *SMLNUM, const FLOAT *BIGNUM, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaein"); LAPACK_IMPL(slaein)(RIGHTV, NOINIT, N, H, LDH, WR, WI, VR, VI, B, LDB, WORK, EPS3, SMLNUM, BIGNUM, INFO); } //-- slaev2 -------------------------------------------------------------------- void LAPACK_DECL(slaev2)(const FLOAT *A, const FLOAT *B, const FLOAT *C, FLOAT *RT1, FLOAT *RT2, FLOAT *CS1, FLOAT *SN1) { DEBUG_LAPACK_STUB("slaev2"); LAPACK_IMPL(slaev2)(A, B, C, RT1, RT2, CS1, SN1); } //-- slaexc -------------------------------------------------------------------- void LAPACK_DECL(slaexc)(const LOGICAL *WANTQ, const INTEGER *N, FLOAT *T, const INTEGER *LDT, FLOAT *Q, const INTEGER *LDQ, const INTEGER *J1, const INTEGER *N1, const INTEGER *N2, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaexc"); LAPACK_IMPL(slaexc)(WANTQ, N, T, LDT, Q, LDQ, J1, N1, N2, WORK, INFO); } //-- slag2 --------------------------------------------------------------------- void LAPACK_DECL(slag2)(const FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, const FLOAT *SAFMIN, FLOAT *SCALE1, FLOAT *SCALE2, FLOAT *WR1, FLOAT *WR2, FLOAT *WI) { DEBUG_LAPACK_STUB("slag2"); LAPACK_IMPL(slag2)(A, LDA, B, LDB, SAFMIN, SCALE1, SCALE2, WR1, WR2, WI); } //-- slag2d -------------------------------------------------------------------- void LAPACK_DECL(slag2d)(const INTEGER *M, const INTEGER *N, const FLOAT *SA, const INTEGER *LDSA, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("slag2d"); LAPACK_IMPL(slag2d)(M, N, SA, LDSA, A, LDA, INFO); } //-- slags2 -------------------------------------------------------------------- void LAPACK_DECL(slags2)(const LOGICAL *UPPER, const FLOAT *A1, const FLOAT *A2, const FLOAT *A3, const FLOAT *B1, const FLOAT *B2, const FLOAT *B3, FLOAT *CSU, FLOAT *SNU, FLOAT *CSV, FLOAT *SNV, FLOAT *CSQ, FLOAT *SNQ) { DEBUG_LAPACK_STUB("slags2"); LAPACK_IMPL(slags2)(UPPER, A1, A2, A3, B1, B2, B3, CSU, SNU, CSV, SNV, CSQ, SNQ); } //-- slagtf -------------------------------------------------------------------- void LAPACK_DECL(slagtf)(const INTEGER *N, FLOAT *A, const FLOAT *LAMBDA, FLOAT *B, FLOAT *C, const FLOAT *TOL, FLOAT *D, INTEGER *IN, INTEGER *INFO) { DEBUG_LAPACK_STUB("slagtf"); LAPACK_IMPL(slagtf)(N, A, LAMBDA, B, C, TOL, D, IN, INFO); } //-- slagtm -------------------------------------------------------------------- void LAPACK_DECL(slagtm)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *ALPHA, const FLOAT *DL, const FLOAT *D, const FLOAT *DU, const FLOAT *X, const INTEGER *LDX, const FLOAT *BETA, FLOAT *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("slagtm"); LAPACK_IMPL(slagtm)(TRANS, N, NRHS, ALPHA, DL, D, DU, X, LDX, BETA, B, LDB); } //-- slagts -------------------------------------------------------------------- void LAPACK_DECL(slagts)(const INTEGER *JOB, const INTEGER *N, const FLOAT *A, const FLOAT *B, const FLOAT *C, const FLOAT *D, const INTEGER *IN, FLOAT *Y, FLOAT *TOL, INTEGER *INFO) { DEBUG_LAPACK_STUB("slagts"); LAPACK_IMPL(slagts)(JOB, N, A, B, C, D, IN, Y, TOL, INFO); } //-- slagv2 -------------------------------------------------------------------- void LAPACK_DECL(slagv2)(FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *CSL, FLOAT *SNL, FLOAT *CSR, FLOAT *SNR) { DEBUG_LAPACK_STUB("slagv2"); LAPACK_IMPL(slagv2)(A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, CSL, SNL, CSR, SNR); } //-- slahqr -------------------------------------------------------------------- void LAPACK_DECL(slahqr)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *H, const INTEGER *LDH, FLOAT *WR, FLOAT *WI, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT *Z, const INTEGER *LDZ, INTEGER *INFO) { DEBUG_LAPACK_STUB("slahqr"); LAPACK_IMPL(slahqr)(WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI, ILOZ, IHIZ, Z, LDZ, INFO); } //-- slahr2 -------------------------------------------------------------------- void LAPACK_DECL(slahr2)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *T, const INTEGER *LDT, FLOAT *Y, const INTEGER *LDY) { DEBUG_LAPACK_STUB("slahr2"); LAPACK_IMPL(slahr2)(N, K, NB, A, LDA, TAU, T, LDT, Y, LDY); } //-- slahrd -------------------------------------------------------------------- void LAPACK_DECL(slahrd)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *T, const INTEGER *LDT, FLOAT *Y, const INTEGER *LDY) { DEBUG_LAPACK_STUB("slahrd"); LAPACK_IMPL(slahrd)(N, K, NB, A, LDA, TAU, T, LDT, Y, LDY); } //-- slaic1 -------------------------------------------------------------------- void LAPACK_DECL(slaic1)(const INTEGER *JOB, const INTEGER *J, const FLOAT *X, const FLOAT *SEST, const FLOAT *W, const FLOAT *GAMMA, FLOAT *SESTPR, FLOAT *S, FLOAT *C) { DEBUG_LAPACK_STUB("slaic1"); LAPACK_IMPL(slaic1)(JOB, J, X, SEST, W, GAMMA, SESTPR, S, C); } //-- slaisnan ------------------------------------------------------------------ LOGICAL LAPACK_DECL(slaisnan)(const FLOAT *SIN1, const FLOAT *SIN2) { DEBUG_LAPACK_STUB("slaisnan"); return LAPACK_IMPL(slaisnan)(SIN1, SIN2); } //-- slaln2 -------------------------------------------------------------------- void LAPACK_DECL(slaln2)(const LOGICAL *LTRANS, const INTEGER *NA, const INTEGER *NW, const FLOAT *SMIN, const FLOAT *CA, const FLOAT *A, const INTEGER *LDA, const FLOAT *D1, const FLOAT *D2, const FLOAT *B, const INTEGER *LDB, const FLOAT *WR, const FLOAT *WI, FLOAT *X, const INTEGER *LDX, FLOAT *SCALE, FLOAT *XNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaln2"); LAPACK_IMPL(slaln2)(LTRANS, NA, NW, SMIN, CA, A, LDA, D1, D2, B, LDB, WR, WI, X, LDX, SCALE, XNORM, INFO); } //-- slals0 -------------------------------------------------------------------- void LAPACK_DECL(slals0)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, const INTEGER *NRHS, FLOAT *B, const INTEGER *LDB, FLOAT *BX, const INTEGER *LDBX, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const FLOAT *GIVNUM, const INTEGER *LDGNUM, const FLOAT *POLES, const FLOAT *DIFL, const FLOAT *DIFR, const FLOAT *Z, const INTEGER *K, const FLOAT *C, const FLOAT *S, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slals0"); LAPACK_IMPL(slals0)(ICOMPQ, NL, NR, SQRE, NRHS, B, LDB, BX, LDBX, PERM, GIVPTR, GIVCOL, LDGCOL, GIVNUM, LDGNUM, POLES, DIFL, DIFR, Z, K, C, S, WORK, INFO); } //-- slalsa -------------------------------------------------------------------- void LAPACK_DECL(slalsa)(const INTEGER *ICOMPQ, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, FLOAT *B, const INTEGER *LDB, FLOAT *BX, const INTEGER *LDBX, const FLOAT *U, const INTEGER *LDU, const FLOAT *VT, const INTEGER *K, const FLOAT *DIFL, const FLOAT *DIFR, const FLOAT *Z, const FLOAT *POLES, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const INTEGER *PERM, const FLOAT *GIVNUM, const FLOAT *C, const FLOAT *S, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slalsa"); LAPACK_IMPL(slalsa)(ICOMPQ, SMLSIZ, N, NRHS, B, LDB, BX, LDBX, U, LDU, VT, K, DIFL, DIFR, Z, POLES, GIVPTR, GIVCOL, LDGCOL, PERM, GIVNUM, C, S, WORK, IWORK, INFO); } //-- slalsd -------------------------------------------------------------------- void LAPACK_DECL(slalsd)(const char *UPLO, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, FLOAT *D, FLOAT *E, FLOAT *B, const INTEGER *LDB, const FLOAT *RCOND, INTEGER *RANK, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slalsd"); LAPACK_IMPL(slalsd)(UPLO, SMLSIZ, N, NRHS, D, E, B, LDB, RCOND, RANK, WORK, IWORK, INFO); } //-- slamrg -------------------------------------------------------------------- void LAPACK_DECL(slamrg)(const INTEGER *N1, const INTEGER *N2, const FLOAT *A, const INTEGER *STRD1, const INTEGER *STRD2, INTEGER *INDEX) { DEBUG_LAPACK_STUB("slamrg"); LAPACK_IMPL(slamrg)(N1, N2, A, STRD1, STRD2, INDEX); } //-- slaneg -------------------------------------------------------------------- INTEGER LAPACK_DECL(slaneg)(const INTEGER *N, const FLOAT *D, const FLOAT *LLD, const FLOAT *SIGMA, const FLOAT *PIVMIN, const INTEGER *R) { DEBUG_LAPACK_STUB("slaneg"); return LAPACK_IMPL(slaneg)(N, D, LLD, SIGMA, PIVMIN, R); } //-- slangb -------------------------------------------------------------------- FLOAT LAPACK_DECL(slangb)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT *AB, const INTEGER *LDAB, FLOAT *WORK) { DEBUG_LAPACK_STUB("slangb"); return LAPACK_IMPL(slangb)(NORM, N, KL, KU, AB, LDAB, WORK); } //-- slange -------------------------------------------------------------------- FLOAT LAPACK_DECL(slange)(const char *NORM, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *WORK) { DEBUG_LAPACK_STUB("slange"); return LAPACK_IMPL(slange)(NORM, M, N, A, LDA, WORK); } //-- slangt -------------------------------------------------------------------- FLOAT LAPACK_DECL(slangt)(const char *NORM, const INTEGER *N, const FLOAT *DL, const FLOAT *D, const FLOAT *DU) { DEBUG_LAPACK_STUB("slangt"); return LAPACK_IMPL(slangt)(NORM, N, DL, D, DU); } //-- slanhs -------------------------------------------------------------------- FLOAT LAPACK_DECL(slanhs)(const char *NORM, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *WORK) { DEBUG_LAPACK_STUB("slanhs"); return LAPACK_IMPL(slanhs)(NORM, N, A, LDA, WORK); } //-- slansb -------------------------------------------------------------------- FLOAT LAPACK_DECL(slansb)(const char *NORM, const char *UPLO, const INTEGER *N, const INTEGER *K, const FLOAT *AB, const INTEGER *LDAB, FLOAT *WORK) { DEBUG_LAPACK_STUB("slansb"); return LAPACK_IMPL(slansb)(NORM, UPLO, N, K, AB, LDAB, WORK); } //-- slansf -------------------------------------------------------------------- FLOAT LAPACK_DECL(slansf)(const char *NORM, const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT *A, FLOAT *WORK) { DEBUG_LAPACK_STUB("slansf"); return LAPACK_IMPL(slansf)(NORM, TRANSR, UPLO, N, A, WORK); } //-- slansp -------------------------------------------------------------------- FLOAT LAPACK_DECL(slansp)(const char *NORM, const char *UPLO, const INTEGER *N, const FLOAT *AP, FLOAT *WORK) { DEBUG_LAPACK_STUB("slansp"); return LAPACK_IMPL(slansp)(NORM, UPLO, N, AP, WORK); } //-- slanst -------------------------------------------------------------------- FLOAT LAPACK_DECL(slanst)(const char *NORM, const INTEGER *N, const FLOAT *D, const FLOAT *E) { DEBUG_LAPACK_STUB("slanst"); return LAPACK_IMPL(slanst)(NORM, N, D, E); } //-- slansy -------------------------------------------------------------------- FLOAT LAPACK_DECL(slansy)(const char *NORM, const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *WORK) { DEBUG_LAPACK_STUB("slansy"); return LAPACK_IMPL(slansy)(NORM, UPLO, N, A, LDA, WORK); } //-- slantb -------------------------------------------------------------------- FLOAT LAPACK_DECL(slantb)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *K, const FLOAT *AB, const INTEGER *LDAB, FLOAT *WORK) { DEBUG_LAPACK_STUB("slantb"); return LAPACK_IMPL(slantb)(NORM, UPLO, DIAG, N, K, AB, LDAB, WORK); } //-- slantp -------------------------------------------------------------------- FLOAT LAPACK_DECL(slantp)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const FLOAT *AP, FLOAT *WORK) { DEBUG_LAPACK_STUB("slantp"); return LAPACK_IMPL(slantp)(NORM, UPLO, DIAG, N, AP, WORK); } //-- slantr -------------------------------------------------------------------- FLOAT LAPACK_DECL(slantr)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *WORK) { DEBUG_LAPACK_STUB("slantr"); return LAPACK_IMPL(slantr)(NORM, UPLO, DIAG, M, N, A, LDA, WORK); } //-- slanv2 -------------------------------------------------------------------- void LAPACK_DECL(slanv2)(FLOAT *A, FLOAT *B, FLOAT *C, FLOAT *D, FLOAT *RT1R, FLOAT *RT1I, FLOAT *RT2R, FLOAT *RT2I, FLOAT *CS, FLOAT *SN) { DEBUG_LAPACK_STUB("slanv2"); LAPACK_IMPL(slanv2)(A, B, C, D, RT1R, RT1I, RT2R, RT2I, CS, SN); } //-- slapll -------------------------------------------------------------------- void LAPACK_DECL(slapll)(const INTEGER *N, FLOAT *X, const INTEGER *INCX, FLOAT *Y, const INTEGER *INCY, FLOAT *SSMIN) { DEBUG_LAPACK_STUB("slapll"); LAPACK_IMPL(slapll)(N, X, INCX, Y, INCY, SSMIN); } //-- slapmr -------------------------------------------------------------------- void LAPACK_DECL(slapmr)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, FLOAT *X, const INTEGER *LDX, INTEGER *K) { DEBUG_LAPACK_STUB("slapmr"); LAPACK_IMPL(slapmr)(FORWRD, M, N, X, LDX, K); } //-- slapmt -------------------------------------------------------------------- void LAPACK_DECL(slapmt)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, FLOAT *X, const INTEGER *LDX, INTEGER *K) { DEBUG_LAPACK_STUB("slapmt"); LAPACK_IMPL(slapmt)(FORWRD, M, N, X, LDX, K); } //-- slapy2 -------------------------------------------------------------------- FLOAT LAPACK_DECL(slapy2)(const FLOAT *X, const FLOAT *Y) { DEBUG_LAPACK_STUB("slapy2"); return LAPACK_IMPL(slapy2)(X, Y); } //-- slapy3 -------------------------------------------------------------------- FLOAT LAPACK_DECL(slapy3)(const FLOAT *X, const FLOAT *Y, const FLOAT *Z) { DEBUG_LAPACK_STUB("slapy3"); return LAPACK_IMPL(slapy3)(X, Y, Z); } //-- slaqgb -------------------------------------------------------------------- void LAPACK_DECL(slaqgb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, FLOAT *AB, const INTEGER *LDAB, const FLOAT *R, const FLOAT *C, const FLOAT *ROWCND, const FLOAT *COLCND, const FLOAT *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("slaqgb"); LAPACK_IMPL(slaqgb)(M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND, AMAX, EQUED); } //-- slaqge -------------------------------------------------------------------- void LAPACK_DECL(slaqge)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const FLOAT *R, const FLOAT *C, const FLOAT *ROWCND, const FLOAT *COLCND, const FLOAT *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("slaqge"); LAPACK_IMPL(slaqge)(M, N, A, LDA, R, C, ROWCND, COLCND, AMAX, EQUED); } //-- slaqp2 -------------------------------------------------------------------- void LAPACK_DECL(slaqp2)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, FLOAT *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT *TAU, FLOAT *VN1, FLOAT *VN2, FLOAT *WORK) { DEBUG_LAPACK_STUB("slaqp2"); LAPACK_IMPL(slaqp2)(M, N, OFFSET, A, LDA, JPVT, TAU, VN1, VN2, WORK); } //-- slaqps -------------------------------------------------------------------- void LAPACK_DECL(slaqps)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, const INTEGER *NB, INTEGER *KB, FLOAT *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT *TAU, FLOAT *VN1, FLOAT *VN2, FLOAT *AUXV, FLOAT *F, const INTEGER *LDF) { DEBUG_LAPACK_STUB("slaqps"); LAPACK_IMPL(slaqps)(M, N, OFFSET, NB, KB, A, LDA, JPVT, TAU, VN1, VN2, AUXV, F, LDF); } //-- slaqr0 -------------------------------------------------------------------- void LAPACK_DECL(slaqr0)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *H, const INTEGER *LDH, FLOAT *WR, FLOAT *WI, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaqr0"); LAPACK_IMPL(slaqr0)(WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI, ILOZ, IHIZ, Z, LDZ, WORK, LWORK, INFO); } //-- slaqr1 -------------------------------------------------------------------- void LAPACK_DECL(slaqr1)(const INTEGER *N, const FLOAT *H, const INTEGER *LDH, const FLOAT *SR1, const FLOAT *SI1, const FLOAT *SR2, const FLOAT *SI2, FLOAT *V) { DEBUG_LAPACK_STUB("slaqr1"); LAPACK_IMPL(slaqr1)(N, H, LDH, SR1, SI1, SR2, SI2, V); } //-- slaqr2 -------------------------------------------------------------------- void LAPACK_DECL(slaqr2)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, FLOAT *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, FLOAT *SR, FLOAT *SI, FLOAT *V, const INTEGER *LDV, const INTEGER *NH, FLOAT *T, const INTEGER *LDT, const INTEGER *NV, FLOAT *WV, const INTEGER *LDWV, FLOAT *WORK, const INTEGER *LWORK) { DEBUG_LAPACK_STUB("slaqr2"); LAPACK_IMPL(slaqr2)(WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, IHIZ, Z, LDZ, NS, ND, SR, SI, V, LDV, NH, T, LDT, NV, WV, LDWV, WORK, LWORK); } //-- slaqr3 -------------------------------------------------------------------- void LAPACK_DECL(slaqr3)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, FLOAT *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, FLOAT *SR, FLOAT *SI, FLOAT *V, const INTEGER *LDV, const INTEGER *NH, FLOAT *T, const INTEGER *LDT, const INTEGER *NV, FLOAT *WV, const INTEGER *LDWV, FLOAT *WORK, const INTEGER *LWORK) { DEBUG_LAPACK_STUB("slaqr3"); LAPACK_IMPL(slaqr3)(WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, IHIZ, Z, LDZ, NS, ND, SR, SI, V, LDV, NH, T, LDT, NV, WV, LDWV, WORK, LWORK); } //-- slaqr4 -------------------------------------------------------------------- void LAPACK_DECL(slaqr4)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *H, const INTEGER *LDH, FLOAT *WR, FLOAT *WI, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaqr4"); LAPACK_IMPL(slaqr4)(WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI, ILOZ, IHIZ, Z, LDZ, WORK, LWORK, INFO); } //-- slaqr5 -------------------------------------------------------------------- void LAPACK_DECL(slaqr5)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *KACC22, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NSHFTS, FLOAT *SR, FLOAT *SI, FLOAT *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT *Z, const INTEGER *LDZ, FLOAT *V, const INTEGER *LDV, FLOAT *U, const INTEGER *LDU, const INTEGER *NV, FLOAT *WV, const INTEGER *LDWV, const INTEGER *NH, FLOAT *WH, const INTEGER *LDWH) { DEBUG_LAPACK_STUB("slaqr5"); LAPACK_IMPL(slaqr5)(WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, SR, SI, H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV, WV, LDWV, NH, WH, LDWH); } //-- slaqsb -------------------------------------------------------------------- void LAPACK_DECL(slaqsb)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("slaqsb"); LAPACK_IMPL(slaqsb)(UPLO, N, KD, AB, LDAB, S, SCOND, AMAX, EQUED); } //-- slaqsp -------------------------------------------------------------------- void LAPACK_DECL(slaqsp)(const char *UPLO, const INTEGER *N, FLOAT *AP, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("slaqsp"); LAPACK_IMPL(slaqsp)(UPLO, N, AP, S, SCOND, AMAX, EQUED); } //-- slaqsy -------------------------------------------------------------------- void LAPACK_DECL(slaqsy)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("slaqsy"); LAPACK_IMPL(slaqsy)(UPLO, N, A, LDA, S, SCOND, AMAX, EQUED); } //-- slaqtr -------------------------------------------------------------------- void LAPACK_DECL(slaqtr)(const LOGICAL *LTRAN, const LOGICAL *LREAL, const INTEGER *N, const FLOAT *T, const INTEGER *LDT, const FLOAT *B, const FLOAT *W, FLOAT *SCALE, FLOAT *X, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slaqtr"); LAPACK_IMPL(slaqtr)(LTRAN, LREAL, N, T, LDT, B, W, SCALE, X, WORK, INFO); } //-- slar1v -------------------------------------------------------------------- void LAPACK_DECL(slar1v)(const INTEGER *N, const INTEGER *B1, const INTEGER *BN, const FLOAT *LAMBDA, const FLOAT *D, const FLOAT *L, const FLOAT *LD, const FLOAT *LLD, const FLOAT *PIVMIN, const FLOAT *GAPTOL, FLOAT *Z, const LOGICAL *WANTNC, INTEGER *NEGCNT, FLOAT *ZTZ, FLOAT *MINGMA, INTEGER *R, INTEGER *ISUPPZ, FLOAT *NRMINV, FLOAT *RESID, FLOAT *RQCORR, FLOAT *WORK) { DEBUG_LAPACK_STUB("slar1v"); LAPACK_IMPL(slar1v)(N, B1, BN, LAMBDA, D, L, LD, LLD, PIVMIN, GAPTOL, Z, WANTNC, NEGCNT, ZTZ, MINGMA, R, ISUPPZ, NRMINV, RESID, RQCORR, WORK); } //-- slar2v -------------------------------------------------------------------- void LAPACK_DECL(slar2v)(const INTEGER *N, FLOAT *X, FLOAT *Y, FLOAT *Z, const INTEGER *INCX, const FLOAT *C, const FLOAT *S, const INTEGER *INCC) { DEBUG_LAPACK_STUB("slar2v"); LAPACK_IMPL(slar2v)(N, X, Y, Z, INCX, C, S, INCC); } //-- slarf --------------------------------------------------------------------- void LAPACK_DECL(slarf)(const char *SIDE, const INTEGER *M, const INTEGER *N, const FLOAT *V, const INTEGER *INCV, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK) { DEBUG_LAPACK_STUB("slarf"); LAPACK_IMPL(slarf)(SIDE, M, N, V, INCV, TAU, C, LDC, WORK); } //-- slarfb -------------------------------------------------------------------- void LAPACK_DECL(slarfb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *V, const INTEGER *LDV, const FLOAT *T, const INTEGER *LDT, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LDWORK) { DEBUG_LAPACK_STUB("slarfb"); LAPACK_IMPL(slarfb)(SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV, T, LDT, C, LDC, WORK, LDWORK); } //-- slarfg -------------------------------------------------------------------- void LAPACK_DECL(slarfg)(const INTEGER *N, FLOAT *ALPHA, FLOAT *X, const INTEGER *INCX, FLOAT *TAU) { DEBUG_LAPACK_STUB("slarfg"); LAPACK_IMPL(slarfg)(N, ALPHA, X, INCX, TAU); } //-- slarfgp ------------------------------------------------------------------- void LAPACK_DECL(slarfgp)(const INTEGER *N, FLOAT *ALPHA, FLOAT *X, const INTEGER *INCX, FLOAT *TAU) { DEBUG_LAPACK_STUB("slarfgp"); LAPACK_IMPL(slarfgp)(N, ALPHA, X, INCX, TAU); } //-- slarft -------------------------------------------------------------------- void LAPACK_DECL(slarft)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, FLOAT *V, const INTEGER *LDV, const FLOAT *TAU, FLOAT *T, const INTEGER *LDT) { DEBUG_LAPACK_STUB("slarft"); LAPACK_IMPL(slarft)(DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT); } //-- slarfx -------------------------------------------------------------------- void LAPACK_DECL(slarfx)(const char *SIDE, const INTEGER *M, const INTEGER *N, const FLOAT *V, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK) { DEBUG_LAPACK_STUB("slarfx"); LAPACK_IMPL(slarfx)(SIDE, M, N, V, TAU, C, LDC, WORK); } //-- slargv -------------------------------------------------------------------- void LAPACK_DECL(slargv)(const INTEGER *N, FLOAT *X, const INTEGER *INCX, FLOAT *Y, const INTEGER *INCY, FLOAT *C, const INTEGER *INCC) { DEBUG_LAPACK_STUB("slargv"); LAPACK_IMPL(slargv)(N, X, INCX, Y, INCY, C, INCC); } //-- slarnv -------------------------------------------------------------------- void LAPACK_DECL(slarnv)(const INTEGER *IDIST, INTEGER *ISEED, const INTEGER *N, FLOAT *X) { DEBUG_LAPACK_STUB("slarnv"); LAPACK_IMPL(slarnv)(IDIST, ISEED, N, X); } //-- slarra -------------------------------------------------------------------- void LAPACK_DECL(slarra)(const INTEGER *N, const FLOAT *D, FLOAT *E, FLOAT *E2, const FLOAT *SPLTOL, const FLOAT *TNRM, INTEGER *NSPLIT, INTEGER *ISPLIT, INTEGER *INFO) { DEBUG_LAPACK_STUB("slarra"); LAPACK_IMPL(slarra)(N, D, E, E2, SPLTOL, TNRM, NSPLIT, ISPLIT, INFO); } //-- slarrb -------------------------------------------------------------------- void LAPACK_DECL(slarrb)(const INTEGER *N, const FLOAT *D, const FLOAT *LLD, const INTEGER *IFIRST, const INTEGER *ILAST, const FLOAT *RTOL1, const FLOAT *RTOL2, const INTEGER *OFFSET, FLOAT *W, FLOAT *WGAP, FLOAT *WERR, FLOAT *WORK, INTEGER *IWORK, const FLOAT *PIVMIN, const FLOAT *SPDIAM, const INTEGER *TWIST, INTEGER *INFO) { DEBUG_LAPACK_STUB("slarrb"); LAPACK_IMPL(slarrb)(N, D, LLD, IFIRST, ILAST, RTOL1, RTOL2, OFFSET, W, WGAP, WERR, WORK, IWORK, PIVMIN, SPDIAM, TWIST, INFO); } //-- slarrc -------------------------------------------------------------------- void LAPACK_DECL(slarrc)(const char *JOBT, const INTEGER *N, const FLOAT *VL, const FLOAT *VU, const FLOAT *D, const FLOAT *E, const FLOAT *PIVMIN, INTEGER *EIGCNT, INTEGER *LCNT, INTEGER *RCNT, INTEGER *INFO) { DEBUG_LAPACK_STUB("slarrc"); LAPACK_IMPL(slarrc)(JOBT, N, VL, VU, D, E, PIVMIN, EIGCNT, LCNT, RCNT, INFO); } //-- slarrd -------------------------------------------------------------------- void LAPACK_DECL(slarrd)(const char *RANGE, const char *ORDER, const INTEGER *N, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *GERS, const FLOAT *RELTOL, const FLOAT *D, const FLOAT *E, const FLOAT *E2, const FLOAT *PIVMIN, const INTEGER *NSPLIT, const INTEGER *ISPLIT, INTEGER *M, FLOAT *W, FLOAT *WERR, FLOAT *WL, FLOAT *WU, INTEGER *IBLOCK, INTEGER *INDEXW, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slarrd"); LAPACK_IMPL(slarrd)(RANGE, ORDER, N, VL, VU, IL, IU, GERS, RELTOL, D, E, E2, PIVMIN, NSPLIT, ISPLIT, M, W, WERR, WL, WU, IBLOCK, INDEXW, WORK, IWORK, INFO); } //-- slarre -------------------------------------------------------------------- void LAPACK_DECL(slarre)(const char *RANGE, const INTEGER *N, FLOAT *VL, FLOAT *VU, const INTEGER *IL, const INTEGER *IU, FLOAT *D, FLOAT *E, FLOAT *E2, const FLOAT *RTOL1, const FLOAT *RTOL2, const FLOAT *SPLTOL, INTEGER *NSPLIT, INTEGER *ISPLIT, INTEGER *M, FLOAT *W, FLOAT *WERR, FLOAT *WGAP, INTEGER *IBLOCK, INTEGER *INDEXW, FLOAT *GERS, FLOAT *PIVMIN, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slarre"); LAPACK_IMPL(slarre)(RANGE, N, VL, VU, IL, IU, D, E, E2, RTOL1, RTOL2, SPLTOL, NSPLIT, ISPLIT, M, W, WERR, WGAP, IBLOCK, INDEXW, GERS, PIVMIN, WORK, IWORK, INFO); } //-- slarrf -------------------------------------------------------------------- void LAPACK_DECL(slarrf)(const INTEGER *N, const FLOAT *D, const FLOAT *L, const FLOAT *LD, const INTEGER *CLSTRT, const INTEGER *CLEND, const FLOAT *W, FLOAT *WGAP, const FLOAT *WERR, const FLOAT *SPDIAM, const FLOAT *CLGAPL, const FLOAT *CLGAPR, const FLOAT *PIVMIN, FLOAT *SIGMA, FLOAT *DPLUS, FLOAT *LPLUS, FLOAT *WORK, const INTEGER *INFO) { DEBUG_LAPACK_STUB("slarrf"); LAPACK_IMPL(slarrf)(N, D, L, LD, CLSTRT, CLEND, W, WGAP, WERR, SPDIAM, CLGAPL, CLGAPR, PIVMIN, SIGMA, DPLUS, LPLUS, WORK, INFO); } //-- slarrj -------------------------------------------------------------------- void LAPACK_DECL(slarrj)(const INTEGER *N, const FLOAT *D, const FLOAT *E2, const INTEGER *IFIRST, const INTEGER *ILAST, const FLOAT *RTOL, const INTEGER *OFFSET, FLOAT *W, FLOAT *WERR, FLOAT *WORK, INTEGER *IWORK, const FLOAT *PIVMIN, const FLOAT *SPDIAM, INTEGER *INFO) { DEBUG_LAPACK_STUB("slarrj"); LAPACK_IMPL(slarrj)(N, D, E2, IFIRST, ILAST, RTOL, OFFSET, W, WERR, WORK, IWORK, PIVMIN, SPDIAM, INFO); } //-- slarrk -------------------------------------------------------------------- void LAPACK_DECL(slarrk)(const INTEGER *N, const INTEGER *IW, const FLOAT *GL, const FLOAT *GU, const FLOAT *D, const FLOAT *E2, const FLOAT *PIVMIN, const FLOAT *RELTOL, FLOAT *W, FLOAT *WERR, INTEGER *INFO) { DEBUG_LAPACK_STUB("slarrk"); LAPACK_IMPL(slarrk)(N, IW, GL, GU, D, E2, PIVMIN, RELTOL, W, WERR, INFO); } //-- slarrr -------------------------------------------------------------------- void LAPACK_DECL(slarrr)(const INTEGER *N, const FLOAT *D, FLOAT *E, INTEGER *INFO) { DEBUG_LAPACK_STUB("slarrr"); LAPACK_IMPL(slarrr)(N, D, E, INFO); } //-- slarrv -------------------------------------------------------------------- void LAPACK_DECL(slarrv)(const INTEGER *N, const FLOAT *VL, const FLOAT *VU, FLOAT *D, FLOAT *L, const FLOAT *PIVMIN, const INTEGER *ISPLIT, const INTEGER *M, const INTEGER *DOL, const INTEGER *DOU, const FLOAT *MINRGP, const FLOAT *RTOL1, const FLOAT *RTOL2, FLOAT *W, FLOAT *WERR, FLOAT *WGAP, const INTEGER *IBLOCK, const INTEGER *INDEXW, const FLOAT *GERS, FLOAT *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slarrv"); LAPACK_IMPL(slarrv)(N, VL, VU, D, L, PIVMIN, ISPLIT, M, DOL, DOU, MINRGP, RTOL1, RTOL2, W, WERR, WGAP, IBLOCK, INDEXW, GERS, Z, LDZ, ISUPPZ, WORK, IWORK, INFO); } //-- slarscl2 ------------------------------------------------------------------ void LAPACK_DECL(slarscl2)(const INTEGER *M, const INTEGER *N, const FLOAT *D, FLOAT *X, const INTEGER *LDX) { DEBUG_LAPACK_STUB("slarscl2"); LAPACK_IMPL(slarscl2)(M, N, D, X, LDX); } //-- slartg -------------------------------------------------------------------- void LAPACK_DECL(slartg)(const FLOAT *F, const FLOAT *G, FLOAT *CS, FLOAT *SN, FLOAT *R) { DEBUG_LAPACK_STUB("slartg"); LAPACK_IMPL(slartg)(F, G, CS, SN, R); } //-- slartgp ------------------------------------------------------------------- void LAPACK_DECL(slartgp)(const FLOAT *F, const FLOAT *G, FLOAT *CS, FLOAT *SN, FLOAT *R) { DEBUG_LAPACK_STUB("slartgp"); LAPACK_IMPL(slartgp)(F, G, CS, SN, R); } //-- slartgs ------------------------------------------------------------------- void LAPACK_DECL(slartgs)(const FLOAT *X, const FLOAT *Y, const FLOAT *SIGMA, FLOAT *CS, FLOAT *SN) { DEBUG_LAPACK_STUB("slartgs"); LAPACK_IMPL(slartgs)(X, Y, SIGMA, CS, SN); } //-- slartv -------------------------------------------------------------------- void LAPACK_DECL(slartv)(const INTEGER *N, FLOAT *X, const INTEGER *INCX, FLOAT *Y, const INTEGER *INCY, const FLOAT *C, const FLOAT *S, const INTEGER *INCC) { DEBUG_LAPACK_STUB("slartv"); LAPACK_IMPL(slartv)(N, X, INCX, Y, INCY, C, S, INCC); } //-- slaruv -------------------------------------------------------------------- void LAPACK_DECL(slaruv)(INTEGER *ISEED, const INTEGER *N, FLOAT *X) { DEBUG_LAPACK_STUB("slaruv"); LAPACK_IMPL(slaruv)(ISEED, N, X); } //-- slarz --------------------------------------------------------------------- void LAPACK_DECL(slarz)(const char *SIDE, const INTEGER *M, const INTEGER *N, const INTEGER *L, const FLOAT *V, const INTEGER *INCV, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK) { DEBUG_LAPACK_STUB("slarz"); LAPACK_IMPL(slarz)(SIDE, M, N, L, V, INCV, TAU, C, LDC, WORK); } //-- slarzb -------------------------------------------------------------------- void LAPACK_DECL(slarzb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const FLOAT *V, const INTEGER *LDV, const FLOAT *T, const INTEGER *LDT, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LDWORK) { DEBUG_LAPACK_STUB("slarzb"); LAPACK_IMPL(slarzb)(SIDE, TRANS, DIRECT, STOREV, M, N, K, L, V, LDV, T, LDT, C, LDC, WORK, LDWORK); } //-- slarzt -------------------------------------------------------------------- void LAPACK_DECL(slarzt)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, FLOAT *V, const INTEGER *LDV, const FLOAT *TAU, FLOAT *T, const INTEGER *LDT) { DEBUG_LAPACK_STUB("slarzt"); LAPACK_IMPL(slarzt)(DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT); } //-- slas2 --------------------------------------------------------------------- void LAPACK_DECL(slas2)(const FLOAT *F, const FLOAT *G, const FLOAT *H, FLOAT *SSMIN, FLOAT *SSMAX) { DEBUG_LAPACK_STUB("slas2"); LAPACK_IMPL(slas2)(F, G, H, SSMIN, SSMAX); } //-- slascl -------------------------------------------------------------------- void LAPACK_DECL(slascl)(const char *TYPE, const INTEGER *KL, const INTEGER *KU, const FLOAT *CFROM, const FLOAT *CTO, const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("slascl"); LAPACK_IMPL(slascl)(TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO); } //-- slascl2 ------------------------------------------------------------------- void LAPACK_DECL(slascl2)(const INTEGER *M, const INTEGER *N, const FLOAT *D, FLOAT *X, const INTEGER *LDX) { DEBUG_LAPACK_STUB("slascl2"); LAPACK_IMPL(slascl2)(M, N, D, X, LDX); } //-- slasd0 -------------------------------------------------------------------- void LAPACK_DECL(slasd0)(const INTEGER *N, const INTEGER *SQRE, FLOAT *D, const FLOAT *E, FLOAT *U, const INTEGER *LDU, FLOAT *VT, const INTEGER *LDVT, const INTEGER *SMLSIZ, INTEGER *IWORK, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slasd0"); LAPACK_IMPL(slasd0)(N, SQRE, D, E, U, LDU, VT, LDVT, SMLSIZ, IWORK, WORK, INFO); } //-- slasd1 -------------------------------------------------------------------- void LAPACK_DECL(slasd1)(const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, FLOAT *D, FLOAT *ALPHA, FLOAT *BETA, FLOAT *U, const INTEGER *LDU, FLOAT *VT, const INTEGER *LDVT, INTEGER *IDXQ, INTEGER *IWORK, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slasd1"); LAPACK_IMPL(slasd1)(NL, NR, SQRE, D, ALPHA, BETA, U, LDU, VT, LDVT, IDXQ, IWORK, WORK, INFO); } //-- slasd2 -------------------------------------------------------------------- void LAPACK_DECL(slasd2)(const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, INTEGER *K, FLOAT *D, FLOAT *Z, const FLOAT *ALPHA, const FLOAT *BETA, FLOAT *U, const INTEGER *LDU, FLOAT *VT, const INTEGER *LDVT, FLOAT *DSIGMA, FLOAT *U2, const INTEGER *LDU2, FLOAT *VT2, const INTEGER *LDVT2, INTEGER *IDXP, INTEGER *IDX, INTEGER *IDXC, INTEGER *IDXQ, INTEGER *COLTYP, INTEGER *INFO) { DEBUG_LAPACK_STUB("slasd2"); LAPACK_IMPL(slasd2)(NL, NR, SQRE, K, D, Z, ALPHA, BETA, U, LDU, VT, LDVT, DSIGMA, U2, LDU2, VT2, LDVT2, IDXP, IDX, IDXC, IDXQ, COLTYP, INFO); } //-- slasd3 -------------------------------------------------------------------- void LAPACK_DECL(slasd3)(const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, const INTEGER *K, FLOAT *D, FLOAT *Q, const INTEGER *LDQ, FLOAT *DSIGMA, FLOAT *U, const INTEGER *LDU, const FLOAT *U2, const INTEGER *LDU2, FLOAT *VT, const INTEGER *LDVT, FLOAT *VT2, const INTEGER *LDVT2, const INTEGER *IDXC, const INTEGER *CTOT, FLOAT *Z, INTEGER *INFO) { DEBUG_LAPACK_STUB("slasd3"); LAPACK_IMPL(slasd3)(NL, NR, SQRE, K, D, Q, LDQ, DSIGMA, U, LDU, U2, LDU2, VT, LDVT, VT2, LDVT2, IDXC, CTOT, Z, INFO); } //-- slasd4 -------------------------------------------------------------------- void LAPACK_DECL(slasd4)(const INTEGER *N, const INTEGER *I, const FLOAT *D, const FLOAT *Z, FLOAT *DELTA, const FLOAT *RHO, FLOAT *SIGMA, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slasd4"); LAPACK_IMPL(slasd4)(N, I, D, Z, DELTA, RHO, SIGMA, WORK, INFO); } //-- slasd5 -------------------------------------------------------------------- void LAPACK_DECL(slasd5)(const INTEGER *I, const FLOAT *D, const FLOAT *Z, FLOAT *DELTA, const FLOAT *RHO, FLOAT *DSIGMA, FLOAT *WORK) { DEBUG_LAPACK_STUB("slasd5"); LAPACK_IMPL(slasd5)(I, D, Z, DELTA, RHO, DSIGMA, WORK); } //-- slasd6 -------------------------------------------------------------------- void LAPACK_DECL(slasd6)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, FLOAT *D, FLOAT *VF, FLOAT *VL, FLOAT *ALPHA, FLOAT *BETA, INTEGER *IDXQ, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, const INTEGER *LDGCOL, FLOAT *GIVNUM, const INTEGER *LDGNUM, FLOAT *POLES, FLOAT *DIFL, FLOAT *DIFR, FLOAT *Z, INTEGER *K, FLOAT *C, FLOAT *S, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slasd6"); LAPACK_IMPL(slasd6)(ICOMPQ, NL, NR, SQRE, D, VF, VL, ALPHA, BETA, IDXQ, PERM, GIVPTR, GIVCOL, LDGCOL, GIVNUM, LDGNUM, POLES, DIFL, DIFR, Z, K, C, S, WORK, IWORK, INFO); } //-- slasd7 -------------------------------------------------------------------- void LAPACK_DECL(slasd7)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, INTEGER *K, FLOAT *D, FLOAT *Z, FLOAT *ZW, FLOAT *VF, FLOAT *VFW, FLOAT *VL, FLOAT *VLW, const FLOAT *ALPHA, const FLOAT *BETA, FLOAT *DSIGMA, INTEGER *IDX, INTEGER *IDXP, const INTEGER *IDXQ, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, const INTEGER *LDGCOL, FLOAT *GIVNUM, const INTEGER *LDGNUM, FLOAT *C, FLOAT *S, INTEGER *INFO) { DEBUG_LAPACK_STUB("slasd7"); LAPACK_IMPL(slasd7)(ICOMPQ, NL, NR, SQRE, K, D, Z, ZW, VF, VFW, VL, VLW, ALPHA, BETA, DSIGMA, IDX, IDXP, IDXQ, PERM, GIVPTR, GIVCOL, LDGCOL, GIVNUM, LDGNUM, C, S, INFO); } //-- slasd8 -------------------------------------------------------------------- void LAPACK_DECL(slasd8)(const INTEGER *ICOMPQ, const INTEGER *K, FLOAT *D, FLOAT *Z, FLOAT *VF, FLOAT *VL, FLOAT *DIFL, FLOAT *DIFR, const INTEGER *LDDIFR, FLOAT *DSIGMA, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slasd8"); LAPACK_IMPL(slasd8)(ICOMPQ, K, D, Z, VF, VL, DIFL, DIFR, LDDIFR, DSIGMA, WORK, INFO); } //-- slasda -------------------------------------------------------------------- void LAPACK_DECL(slasda)(const INTEGER *ICOMPQ, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *SQRE, FLOAT *D, const FLOAT *E, FLOAT *U, const INTEGER *LDU, FLOAT *VT, INTEGER *K, FLOAT *DIFL, FLOAT *DIFR, FLOAT *Z, FLOAT *POLES, INTEGER *GIVPTR, INTEGER *GIVCOL, const INTEGER *LDGCOL, INTEGER *PERM, FLOAT *GIVNUM, FLOAT *C, FLOAT *S, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slasda"); LAPACK_IMPL(slasda)(ICOMPQ, SMLSIZ, N, SQRE, D, E, U, LDU, VT, K, DIFL, DIFR, Z, POLES, GIVPTR, GIVCOL, LDGCOL, PERM, GIVNUM, C, S, WORK, IWORK, INFO); } //-- slasdq -------------------------------------------------------------------- void LAPACK_DECL(slasdq)(const char *UPLO, const INTEGER *SQRE, const INTEGER *N, const INTEGER *NCVT, const INTEGER *NRU, const INTEGER *NCC, FLOAT *D, FLOAT *E, FLOAT *VT, const INTEGER *LDVT, FLOAT *U, const INTEGER *LDU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slasdq"); LAPACK_IMPL(slasdq)(UPLO, SQRE, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C, LDC, WORK, INFO); } //-- slasdt -------------------------------------------------------------------- void LAPACK_DECL(slasdt)(const INTEGER *N, INTEGER *LVL, INTEGER *ND, INTEGER *INODE, INTEGER *NDIML, INTEGER *NDIMR, const INTEGER *MSUB) { DEBUG_LAPACK_STUB("slasdt"); LAPACK_IMPL(slasdt)(N, LVL, ND, INODE, NDIML, NDIMR, MSUB); } //-- slaset -------------------------------------------------------------------- void LAPACK_DECL(slaset)(const char *UPLO, const INTEGER *M, const INTEGER *N, const FLOAT *ALPHA, const FLOAT *BETA, FLOAT *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("slaset"); LAPACK_IMPL(slaset)(UPLO, M, N, ALPHA, BETA, A, LDA); } //-- slasq1 -------------------------------------------------------------------- void LAPACK_DECL(slasq1)(const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("slasq1"); LAPACK_IMPL(slasq1)(N, D, E, WORK, INFO); } //-- slasq2 -------------------------------------------------------------------- void LAPACK_DECL(slasq2)(const INTEGER *N, FLOAT *Z, INTEGER *INFO) { DEBUG_LAPACK_STUB("slasq2"); LAPACK_IMPL(slasq2)(N, Z, INFO); } //-- slasq3 -------------------------------------------------------------------- void LAPACK_DECL(slasq3)(const INTEGER *I0, INTEGER *N0, const FLOAT *Z, INTEGER *PP, FLOAT *DMIN, FLOAT *SIGMA, FLOAT *DESIG, const FLOAT *QMAX, INTEGER *NFAIL, INTEGER *ITER, INTEGER *NDIV, const LOGICAL *IEEE, INTEGER *TTYPE, FLOAT *DMIN1, FLOAT *DMIN2, FLOAT *DN, FLOAT *DN1, FLOAT *DN2, FLOAT *G, FLOAT *TAU) { DEBUG_LAPACK_STUB("slasq3"); LAPACK_IMPL(slasq3)(I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL, ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1, DN2, G, TAU); } //-- slasq4 -------------------------------------------------------------------- void LAPACK_DECL(slasq4)(const INTEGER *I0, const INTEGER *N0, const FLOAT *Z, const INTEGER *PP, const INTEGER *N0IN, const FLOAT *DMIN, const FLOAT *DMIN1, const FLOAT *DMIN2, const FLOAT *DN, const FLOAT *DN1, const FLOAT *DN2, FLOAT *TAU, INTEGER *TTYPE, FLOAT *G) { DEBUG_LAPACK_STUB("slasq4"); LAPACK_IMPL(slasq4)(I0, N0, Z, PP, N0IN, DMIN, DMIN1, DMIN2, DN, DN1, DN2, TAU, TTYPE, G); } //-- slasq5 -------------------------------------------------------------------- void LAPACK_DECL(slasq5)(const INTEGER *I0, const INTEGER *N0, const FLOAT *Z, const INTEGER *PP, const FLOAT *TAU, FLOAT *DMIN, FLOAT *DMIN1, FLOAT *DMIN2, FLOAT *DN, FLOAT *DNM1, FLOAT *DNM2, const LOGICAL *IEEE) { DEBUG_LAPACK_STUB("slasq5"); LAPACK_IMPL(slasq5)(I0, N0, Z, PP, TAU, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, IEEE); } //-- slasq6 -------------------------------------------------------------------- void LAPACK_DECL(slasq6)(const INTEGER *I0, const INTEGER *N0, const FLOAT *Z, const INTEGER *PP, FLOAT *DMIN, FLOAT *DMIN1, FLOAT *DMIN2, FLOAT *DN, FLOAT *DNM1, FLOAT *DNM2) { DEBUG_LAPACK_STUB("slasq6"); LAPACK_IMPL(slasq6)(I0, N0, Z, PP, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2); } //-- slasr --------------------------------------------------------------------- void LAPACK_DECL(slasr)(const char *SIDE, const char *PIVOT, const char *DIRECT, const INTEGER *M, const INTEGER *N, const FLOAT *C, const FLOAT *S, FLOAT *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("slasr"); LAPACK_IMPL(slasr)(SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA); } //-- slasrt -------------------------------------------------------------------- void LAPACK_DECL(slasrt)(const char *ID, const INTEGER *N, FLOAT *D, INTEGER *INFO) { DEBUG_LAPACK_STUB("slasrt"); LAPACK_IMPL(slasrt)(ID, N, D, INFO); } //-- slassq -------------------------------------------------------------------- void LAPACK_DECL(slassq)(const INTEGER *N, const FLOAT *X, const INTEGER *INCX, FLOAT *SCALE, FLOAT *SUMSQ) { DEBUG_LAPACK_STUB("slassq"); LAPACK_IMPL(slassq)(N, X, INCX, SCALE, SUMSQ); } //-- slasv2 -------------------------------------------------------------------- void LAPACK_DECL(slasv2)(const FLOAT *F, const FLOAT *G, const FLOAT *H, FLOAT *SSMIN, FLOAT *SSMAX, FLOAT *SNR, FLOAT *CSR, FLOAT *SNL, FLOAT *CSL) { DEBUG_LAPACK_STUB("slasv2"); LAPACK_IMPL(slasv2)(F, G, H, SSMIN, SSMAX, SNR, CSR, SNL, CSL); } //-- slaswp -------------------------------------------------------------------- void LAPACK_DECL(slaswp)(const INTEGER *N, FLOAT *A, const INTEGER *LDA, const INTEGER *K1, const INTEGER *K2, const INTEGER *IPIV, const INTEGER *INCX) { DEBUG_LAPACK_STUB("slaswp"); LAPACK_IMPL(slaswp)(N, A, LDA, K1, K2, IPIV, INCX); } //-- slasy2 -------------------------------------------------------------------- void LAPACK_DECL(slasy2)(const LOGICAL *LTRANL, const LOGICAL *LTRANR, const INTEGER *ISGN, const INTEGER *N1, const INTEGER *N2, const FLOAT *TL, const INTEGER *LDTL, const FLOAT *TR, const INTEGER *LDTR, const FLOAT *B, const INTEGER *LDB, FLOAT *SCALE, FLOAT *X, const INTEGER *LDX, FLOAT *XNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("slasy2"); LAPACK_IMPL(slasy2)(LTRANL, LTRANR, ISGN, N1, N2, TL, LDTL, TR, LDTR, B, LDB, SCALE, X, LDX, XNORM, INFO); } //-- slasyf -------------------------------------------------------------------- void LAPACK_DECL(slasyf)(const char *UPLO, const INTEGER *N, const INTEGER *NB, INTEGER *KB, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT *W, const INTEGER *LDW, INTEGER *INFO) { DEBUG_LAPACK_STUB("slasyf"); LAPACK_IMPL(slasyf)(UPLO, N, NB, KB, A, LDA, IPIV, W, LDW, INFO); } //-- slatbs -------------------------------------------------------------------- void LAPACK_DECL(slatbs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const INTEGER *KD, const FLOAT *AB, const INTEGER *LDAB, FLOAT *X, FLOAT *SCALE, FLOAT *CNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("slatbs"); LAPACK_IMPL(slatbs)(UPLO, TRANS, DIAG, NORMIN, N, KD, AB, LDAB, X, SCALE, CNORM, INFO); } //-- slatdf -------------------------------------------------------------------- void LAPACK_DECL(slatdf)(const INTEGER *IJOB, const INTEGER *N, const FLOAT *Z, const INTEGER *LDZ, FLOAT *RHS, FLOAT *RDSUM, FLOAT *RDSCAL, const INTEGER *IPIV, const INTEGER *JPIV) { DEBUG_LAPACK_STUB("slatdf"); LAPACK_IMPL(slatdf)(IJOB, N, Z, LDZ, RHS, RDSUM, RDSCAL, IPIV, JPIV); } //-- slatps -------------------------------------------------------------------- void LAPACK_DECL(slatps)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const FLOAT *AP, FLOAT *X, FLOAT *SCALE, FLOAT *CNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("slatps"); LAPACK_IMPL(slatps)(UPLO, TRANS, DIAG, NORMIN, N, AP, X, SCALE, CNORM, INFO); } //-- slatrd -------------------------------------------------------------------- void LAPACK_DECL(slatrd)(const char *UPLO, const INTEGER *N, const INTEGER *NB, FLOAT *A, const INTEGER *LDA, FLOAT *E, FLOAT *TAU, FLOAT *W, const INTEGER *LDW) { DEBUG_LAPACK_STUB("slatrd"); LAPACK_IMPL(slatrd)(UPLO, N, NB, A, LDA, E, TAU, W, LDW); } //-- slatrs -------------------------------------------------------------------- void LAPACK_DECL(slatrs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *X, FLOAT *SCALE, FLOAT *CNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("slatrs"); LAPACK_IMPL(slatrs)(UPLO, TRANS, DIAG, NORMIN, N, A, LDA, X, SCALE, CNORM, INFO); } //-- slatrz -------------------------------------------------------------------- void LAPACK_DECL(slatrz)(const INTEGER *M, const INTEGER *N, const INTEGER *L, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK) { DEBUG_LAPACK_STUB("slatrz"); LAPACK_IMPL(slatrz)(M, N, L, A, LDA, TAU, WORK); } //-- slatzm -------------------------------------------------------------------- void LAPACK_DECL(slatzm)(const char *SIDE, const INTEGER *M, const INTEGER *N, const FLOAT *V, const INTEGER *INCV, const FLOAT *TAU, FLOAT *C1, FLOAT *C2, const INTEGER *LDC, FLOAT *WORK) { DEBUG_LAPACK_STUB("slatzm"); LAPACK_IMPL(slatzm)(SIDE, M, N, V, INCV, TAU, C1, C2, LDC, WORK); } //-- slauu2 -------------------------------------------------------------------- void LAPACK_DECL(slauu2)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("slauu2"); LAPACK_IMPL(slauu2)(UPLO, N, A, LDA, INFO); } //-- slauum -------------------------------------------------------------------- void LAPACK_DECL(slauum)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("slauum"); LAPACK_IMPL(slauum)(UPLO, N, A, LDA, INFO); } //-- sopgtr -------------------------------------------------------------------- void LAPACK_DECL(sopgtr)(const char *UPLO, const INTEGER *N, const FLOAT *AP, const FLOAT *TAU, FLOAT *Q, const INTEGER *LDQ, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sopgtr"); LAPACK_IMPL(sopgtr)(UPLO, N, AP, TAU, Q, LDQ, WORK, INFO); } //-- sopmtr -------------------------------------------------------------------- void LAPACK_DECL(sopmtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const FLOAT *AP, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sopmtr"); LAPACK_IMPL(sopmtr)(SIDE, UPLO, TRANS, M, N, AP, TAU, C, LDC, WORK, INFO); } //-- sorbdb -------------------------------------------------------------------- void LAPACK_DECL(sorbdb)(const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, FLOAT *X11, const INTEGER *LDX11, FLOAT *X12, const INTEGER *LDX12, FLOAT *X21, const INTEGER *LDX21, FLOAT *X22, const INTEGER *LDX22, FLOAT *THETA, FLOAT *PHI, FLOAT *TAUP1, FLOAT *TAUP2, FLOAT *TAUQ1, FLOAT *TAUQ2, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorbdb"); LAPACK_IMPL(sorbdb)(TRANS, SIGNS, M, P, Q, X11, LDX11, X12, LDX12, X21, LDX21, X22, LDX22, THETA, PHI, TAUP1, TAUP2, TAUQ1, TAUQ2, WORK, LWORK, INFO); } //-- sorcsd -------------------------------------------------------------------- void LAPACK_DECL(sorcsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, const FLOAT *X11, const INTEGER *LDX11, const FLOAT *X12, const INTEGER *LDX12, const FLOAT *X21, const INTEGER *LDX21, const FLOAT *X22, const INTEGER *LDX22, FLOAT *THETA, FLOAT *U1, const INTEGER *LDU1, FLOAT *U2, const INTEGER *LDU2, FLOAT *V1T, const INTEGER *LDV1T, FLOAT *V2T, const INTEGER *LDV2T, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorcsd"); LAPACK_IMPL(sorcsd)(JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS, SIGNS, M, P, Q, X11, LDX11, X12, LDX12, X21, LDX21, X22, LDX22, THETA, U1, LDU1, U2, LDU2, V1T, LDV1T, V2T, LDV2T, WORK, LWORK, IWORK, INFO); } //-- sorg2l -------------------------------------------------------------------- void LAPACK_DECL(sorg2l)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorg2l"); LAPACK_IMPL(sorg2l)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- sorg2r -------------------------------------------------------------------- void LAPACK_DECL(sorg2r)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorg2r"); LAPACK_IMPL(sorg2r)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- sorgbr -------------------------------------------------------------------- void LAPACK_DECL(sorgbr)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorgbr"); LAPACK_IMPL(sorgbr)(VECT, M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- sorghr -------------------------------------------------------------------- void LAPACK_DECL(sorghr)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorghr"); LAPACK_IMPL(sorghr)(N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO); } //-- sorgl2 -------------------------------------------------------------------- void LAPACK_DECL(sorgl2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorgl2"); LAPACK_IMPL(sorgl2)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- sorglq -------------------------------------------------------------------- void LAPACK_DECL(sorglq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorglq"); LAPACK_IMPL(sorglq)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- sorgql -------------------------------------------------------------------- void LAPACK_DECL(sorgql)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorgql"); LAPACK_IMPL(sorgql)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- sorgqr -------------------------------------------------------------------- void LAPACK_DECL(sorgqr)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorgqr"); LAPACK_IMPL(sorgqr)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- sorgr2 -------------------------------------------------------------------- void LAPACK_DECL(sorgr2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorgr2"); LAPACK_IMPL(sorgr2)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- sorgrq -------------------------------------------------------------------- void LAPACK_DECL(sorgrq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorgrq"); LAPACK_IMPL(sorgrq)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- sorgtr -------------------------------------------------------------------- void LAPACK_DECL(sorgtr)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorgtr"); LAPACK_IMPL(sorgtr)(UPLO, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- sorm2l -------------------------------------------------------------------- void LAPACK_DECL(sorm2l)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorm2l"); LAPACK_IMPL(sorm2l)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- sorm2r -------------------------------------------------------------------- void LAPACK_DECL(sorm2r)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorm2r"); LAPACK_IMPL(sorm2r)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- sormbr -------------------------------------------------------------------- void LAPACK_DECL(sormbr)(const char *VECT, const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sormbr"); LAPACK_IMPL(sormbr)(VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- sormhr -------------------------------------------------------------------- void LAPACK_DECL(sormhr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sormhr"); LAPACK_IMPL(sormhr)(SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- sorml2 -------------------------------------------------------------------- void LAPACK_DECL(sorml2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sorml2"); LAPACK_IMPL(sorml2)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- sormlq -------------------------------------------------------------------- void LAPACK_DECL(sormlq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sormlq"); LAPACK_IMPL(sormlq)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- sormql -------------------------------------------------------------------- void LAPACK_DECL(sormql)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sormql"); LAPACK_IMPL(sormql)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- sormqr -------------------------------------------------------------------- void LAPACK_DECL(sormqr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sormqr"); LAPACK_IMPL(sormqr)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- sormr2 -------------------------------------------------------------------- void LAPACK_DECL(sormr2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sormr2"); LAPACK_IMPL(sormr2)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- sormr3 -------------------------------------------------------------------- void LAPACK_DECL(sormr3)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sormr3"); LAPACK_IMPL(sormr3)(SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, WORK, INFO); } //-- sormrq -------------------------------------------------------------------- void LAPACK_DECL(sormrq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sormrq"); LAPACK_IMPL(sormrq)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- sormrz -------------------------------------------------------------------- void LAPACK_DECL(sormrz)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sormrz"); LAPACK_IMPL(sormrz)(SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- sormtr -------------------------------------------------------------------- void LAPACK_DECL(sormtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sormtr"); LAPACK_IMPL(sormtr)(SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- spbcon -------------------------------------------------------------------- void LAPACK_DECL(spbcon)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("spbcon"); LAPACK_IMPL(spbcon)(UPLO, N, KD, AB, LDAB, ANORM, RCOND, WORK, IWORK, INFO); } //-- spbequ -------------------------------------------------------------------- void LAPACK_DECL(spbequ)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const FLOAT *AB, const INTEGER *LDAB, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("spbequ"); LAPACK_IMPL(spbequ)(UPLO, N, KD, AB, LDAB, S, SCOND, AMAX, INFO); } //-- spbrfs -------------------------------------------------------------------- void LAPACK_DECL(spbrfs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *AFB, const INTEGER *LDAFB, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("spbrfs"); LAPACK_IMPL(spbrfs)(UPLO, N, KD, NRHS, AB, LDAB, AFB, LDAFB, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- spbstf -------------------------------------------------------------------- void LAPACK_DECL(spbstf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, INTEGER *INFO) { DEBUG_LAPACK_STUB("spbstf"); LAPACK_IMPL(spbstf)(UPLO, N, KD, AB, LDAB, INFO); } //-- spbsv --------------------------------------------------------------------- void LAPACK_DECL(spbsv)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, FLOAT *AB, const INTEGER *LDAB, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("spbsv"); LAPACK_IMPL(spbsv)(UPLO, N, KD, NRHS, AB, LDAB, B, LDB, INFO); } //-- spbsvx -------------------------------------------------------------------- void LAPACK_DECL(spbsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, FLOAT *AB, const INTEGER *LDAB, FLOAT *AFB, const INTEGER *LDAFB, char *EQUED, FLOAT *S, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("spbsvx"); LAPACK_IMPL(spbsvx)(FACT, UPLO, N, KD, NRHS, AB, LDAB, AFB, LDAFB, EQUED, S, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, IWORK, INFO); } //-- spbtf2 -------------------------------------------------------------------- void LAPACK_DECL(spbtf2)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, INTEGER *INFO) { DEBUG_LAPACK_STUB("spbtf2"); LAPACK_IMPL(spbtf2)(UPLO, N, KD, AB, LDAB, INFO); } //-- spbtrf -------------------------------------------------------------------- void LAPACK_DECL(spbtrf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, INTEGER *INFO) { DEBUG_LAPACK_STUB("spbtrf"); LAPACK_IMPL(spbtrf)(UPLO, N, KD, AB, LDAB, INFO); } //-- spbtrs -------------------------------------------------------------------- void LAPACK_DECL(spbtrs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("spbtrs"); LAPACK_IMPL(spbtrs)(UPLO, N, KD, NRHS, AB, LDAB, B, LDB, INFO); } //-- spftrf -------------------------------------------------------------------- void LAPACK_DECL(spftrf)(const char *TRANSR, const char *UPLO, const INTEGER *N, FLOAT *A, INTEGER *INFO) { DEBUG_LAPACK_STUB("spftrf"); LAPACK_IMPL(spftrf)(TRANSR, UPLO, N, A, INFO); } //-- spftri -------------------------------------------------------------------- void LAPACK_DECL(spftri)(const char *TRANSR, const char *UPLO, const INTEGER *N, FLOAT *A, INTEGER *INFO) { DEBUG_LAPACK_STUB("spftri"); LAPACK_IMPL(spftri)(TRANSR, UPLO, N, A, INFO); } //-- spftrs -------------------------------------------------------------------- void LAPACK_DECL(spftrs)(const char *TRANSR, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("spftrs"); LAPACK_IMPL(spftrs)(TRANSR, UPLO, N, NRHS, A, B, LDB, INFO); } //-- spocon -------------------------------------------------------------------- void LAPACK_DECL(spocon)(const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("spocon"); LAPACK_IMPL(spocon)(UPLO, N, A, LDA, ANORM, RCOND, WORK, IWORK, INFO); } //-- spoequ -------------------------------------------------------------------- void LAPACK_DECL(spoequ)(const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("spoequ"); LAPACK_IMPL(spoequ)(N, A, LDA, S, SCOND, AMAX, INFO); } //-- spoequb ------------------------------------------------------------------- void LAPACK_DECL(spoequb)(const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("spoequb"); LAPACK_IMPL(spoequb)(N, A, LDA, S, SCOND, AMAX, INFO); } //-- sporfs -------------------------------------------------------------------- void LAPACK_DECL(sporfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sporfs"); LAPACK_IMPL(sporfs)(UPLO, N, NRHS, A, LDA, AF, LDAF, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- sporfsx ------------------------------------------------------------------- void LAPACK_DECL(sporfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, FLOAT *S, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sporfsx"); LAPACK_IMPL(sporfsx)(UPLO, EQUED, N, NRHS, A, LDA, AF, LDAF, S, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO); } //-- sposv --------------------------------------------------------------------- void LAPACK_DECL(sposv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("sposv"); LAPACK_IMPL(sposv)(UPLO, N, NRHS, A, LDA, B, LDB, INFO); } //-- sposvx -------------------------------------------------------------------- void LAPACK_DECL(sposvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *AF, const INTEGER *LDAF, char *EQUED, FLOAT *S, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sposvx"); LAPACK_IMPL(sposvx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, EQUED, S, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, IWORK, INFO); } //-- sposvxx ------------------------------------------------------------------- void LAPACK_DECL(sposvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *AF, const INTEGER *LDAF, char *EQUED, FLOAT *S, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sposvxx"); LAPACK_IMPL(sposvxx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, EQUED, S, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO); } //-- spotf2 -------------------------------------------------------------------- void LAPACK_DECL(spotf2)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("spotf2"); LAPACK_IMPL(spotf2)(UPLO, N, A, LDA, INFO); } //-- spotrf -------------------------------------------------------------------- void LAPACK_DECL(spotrf)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("spotrf"); LAPACK_IMPL(spotrf)(UPLO, N, A, LDA, INFO); } //-- spotri -------------------------------------------------------------------- void LAPACK_DECL(spotri)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("spotri"); LAPACK_IMPL(spotri)(UPLO, N, A, LDA, INFO); } //-- spotrs -------------------------------------------------------------------- void LAPACK_DECL(spotrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("spotrs"); LAPACK_IMPL(spotrs)(UPLO, N, NRHS, A, LDA, B, LDB, INFO); } //-- sppcon -------------------------------------------------------------------- void LAPACK_DECL(sppcon)(const char *UPLO, const INTEGER *N, const FLOAT *AP, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sppcon"); LAPACK_IMPL(sppcon)(UPLO, N, AP, ANORM, RCOND, WORK, IWORK, INFO); } //-- sppequ -------------------------------------------------------------------- void LAPACK_DECL(sppequ)(const char *UPLO, const INTEGER *N, const FLOAT *AP, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("sppequ"); LAPACK_IMPL(sppequ)(UPLO, N, AP, S, SCOND, AMAX, INFO); } //-- spprfs -------------------------------------------------------------------- void LAPACK_DECL(spprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *AP, const FLOAT *AFP, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("spprfs"); LAPACK_IMPL(spprfs)(UPLO, N, NRHS, AP, AFP, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- sppsv --------------------------------------------------------------------- void LAPACK_DECL(sppsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *AP, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("sppsv"); LAPACK_IMPL(sppsv)(UPLO, N, NRHS, AP, B, LDB, INFO); } //-- sppsvx -------------------------------------------------------------------- void LAPACK_DECL(sppsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *AP, FLOAT *AFP, char *EQUED, FLOAT *S, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sppsvx"); LAPACK_IMPL(sppsvx)(FACT, UPLO, N, NRHS, AP, AFP, EQUED, S, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, IWORK, INFO); } //-- spptrf -------------------------------------------------------------------- void LAPACK_DECL(spptrf)(const char *UPLO, const INTEGER *N, FLOAT *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("spptrf"); LAPACK_IMPL(spptrf)(UPLO, N, AP, INFO); } //-- spptri -------------------------------------------------------------------- void LAPACK_DECL(spptri)(const char *UPLO, const INTEGER *N, FLOAT *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("spptri"); LAPACK_IMPL(spptri)(UPLO, N, AP, INFO); } //-- spptrs -------------------------------------------------------------------- void LAPACK_DECL(spptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *AP, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("spptrs"); LAPACK_IMPL(spptrs)(UPLO, N, NRHS, AP, B, LDB, INFO); } //-- spstf2 -------------------------------------------------------------------- void LAPACK_DECL(spstf2)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const FLOAT *TOL, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("spstf2"); LAPACK_IMPL(spstf2)(UPLO, N, A, LDA, PIV, RANK, TOL, WORK, INFO); } //-- spstrf -------------------------------------------------------------------- void LAPACK_DECL(spstrf)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const FLOAT *TOL, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("spstrf"); LAPACK_IMPL(spstrf)(UPLO, N, A, LDA, PIV, RANK, TOL, WORK, INFO); } //-- sptcon -------------------------------------------------------------------- void LAPACK_DECL(sptcon)(const INTEGER *N, const FLOAT *D, const FLOAT *E, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sptcon"); LAPACK_IMPL(sptcon)(N, D, E, ANORM, RCOND, WORK, INFO); } //-- spteqr -------------------------------------------------------------------- void LAPACK_DECL(spteqr)(const char *COMPZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("spteqr"); LAPACK_IMPL(spteqr)(COMPZ, N, D, E, Z, LDZ, WORK, INFO); } //-- sptrfs -------------------------------------------------------------------- void LAPACK_DECL(sptrfs)(const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT *E, const FLOAT *DF, const FLOAT *EF, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sptrfs"); LAPACK_IMPL(sptrfs)(N, NRHS, D, E, DF, EF, B, LDB, X, LDX, FERR, BERR, WORK, INFO); } //-- sptsv --------------------------------------------------------------------- void LAPACK_DECL(sptsv)(const INTEGER *N, const INTEGER *NRHS, FLOAT *D, FLOAT *E, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("sptsv"); LAPACK_IMPL(sptsv)(N, NRHS, D, E, B, LDB, INFO); } //-- sptsvx -------------------------------------------------------------------- void LAPACK_DECL(sptsvx)(const char *FACT, const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT *E, FLOAT *DF, FLOAT *EF, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sptsvx"); LAPACK_IMPL(sptsvx)(FACT, N, NRHS, D, E, DF, EF, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, INFO); } //-- spttrf -------------------------------------------------------------------- void LAPACK_DECL(spttrf)(const INTEGER *N, FLOAT *D, FLOAT *E, INTEGER *INFO) { DEBUG_LAPACK_STUB("spttrf"); LAPACK_IMPL(spttrf)(N, D, E, INFO); } //-- spttrs -------------------------------------------------------------------- void LAPACK_DECL(spttrs)(const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT *E, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("spttrs"); LAPACK_IMPL(spttrs)(N, NRHS, D, E, B, LDB, INFO); } //-- sptts2 -------------------------------------------------------------------- void LAPACK_DECL(sptts2)(const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT *E, FLOAT *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("sptts2"); LAPACK_IMPL(sptts2)(N, NRHS, D, E, B, LDB); } //-- srscl --------------------------------------------------------------------- void LAPACK_DECL(srscl)(const INTEGER *N, const FLOAT *SA, FLOAT *SX, const INTEGER *INCX) { DEBUG_LAPACK_STUB("srscl"); LAPACK_IMPL(srscl)(N, SA, SX, INCX); } //-- ssbev --------------------------------------------------------------------- void LAPACK_DECL(ssbev)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssbev"); LAPACK_IMPL(ssbev)(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, INFO); } //-- ssbevd -------------------------------------------------------------------- void LAPACK_DECL(ssbevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssbevd"); LAPACK_IMPL(ssbevd)(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- ssbevx -------------------------------------------------------------------- void LAPACK_DECL(ssbevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, FLOAT *Q, const INTEGER *LDQ, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssbevx"); LAPACK_IMPL(ssbevx)(JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO); } //-- ssbgst -------------------------------------------------------------------- void LAPACK_DECL(ssbgst)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT *AB, const INTEGER *LDAB, const FLOAT *BB, const INTEGER *LDBB, FLOAT *X, const INTEGER *LDX, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssbgst"); LAPACK_IMPL(ssbgst)(VECT, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, X, LDX, WORK, INFO); } //-- ssbgv --------------------------------------------------------------------- void LAPACK_DECL(ssbgv)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT *AB, const INTEGER *LDAB, FLOAT *BB, const INTEGER *LDBB, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssbgv"); LAPACK_IMPL(ssbgv)(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, INFO); } //-- ssbgvd -------------------------------------------------------------------- void LAPACK_DECL(ssbgvd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT *AB, const INTEGER *LDAB, FLOAT *BB, const INTEGER *LDBB, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssbgvd"); LAPACK_IMPL(ssbgvd)(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- ssbgvx -------------------------------------------------------------------- void LAPACK_DECL(ssbgvx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT *AB, const INTEGER *LDAB, FLOAT *BB, const INTEGER *LDBB, FLOAT *Q, const INTEGER *LDQ, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssbgvx"); LAPACK_IMPL(ssbgvx)(JOBZ, RANGE, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO); } //-- ssbtrd -------------------------------------------------------------------- void LAPACK_DECL(ssbtrd)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, FLOAT *D, FLOAT *E, FLOAT *Q, const INTEGER *LDQ, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssbtrd"); LAPACK_IMPL(ssbtrd)(VECT, UPLO, N, KD, AB, LDAB, D, E, Q, LDQ, WORK, INFO); } //-- ssfrk --------------------------------------------------------------------- void LAPACK_DECL(ssfrk)(const char *TRANSR, const char *UPLO, const char *TRANS, const INTEGER *N, const INTEGER *K, const FLOAT *ALPHA, const FLOAT *A, const INTEGER *LDA, const FLOAT *BETA, FLOAT *C) { DEBUG_LAPACK_STUB("ssfrk"); LAPACK_IMPL(ssfrk)(TRANSR, UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C); } //-- sspcon -------------------------------------------------------------------- void LAPACK_DECL(sspcon)(const char *UPLO, const INTEGER *N, const FLOAT *AP, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sspcon"); LAPACK_IMPL(sspcon)(UPLO, N, AP, IPIV, ANORM, RCOND, WORK, IWORK, INFO); } //-- sspev --------------------------------------------------------------------- void LAPACK_DECL(sspev)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *AP, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sspev"); LAPACK_IMPL(sspev)(JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, INFO); } //-- sspevd -------------------------------------------------------------------- void LAPACK_DECL(sspevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *AP, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sspevd"); LAPACK_IMPL(sspevd)(JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- sspevx -------------------------------------------------------------------- void LAPACK_DECL(sspevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT *AP, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("sspevx"); LAPACK_IMPL(sspevx)(JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO); } //-- sspgst -------------------------------------------------------------------- void LAPACK_DECL(sspgst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, FLOAT *AP, const FLOAT *BP, INTEGER *INFO) { DEBUG_LAPACK_STUB("sspgst"); LAPACK_IMPL(sspgst)(ITYPE, UPLO, N, AP, BP, INFO); } //-- sspgv --------------------------------------------------------------------- void LAPACK_DECL(sspgv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *AP, FLOAT *BP, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sspgv"); LAPACK_IMPL(sspgv)(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, INFO); } //-- sspgvd -------------------------------------------------------------------- void LAPACK_DECL(sspgvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *AP, FLOAT *BP, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sspgvd"); LAPACK_IMPL(sspgvd)(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- sspgvx -------------------------------------------------------------------- void LAPACK_DECL(sspgvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT *AP, FLOAT *BP, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("sspgvx"); LAPACK_IMPL(sspgvx)(ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO); } //-- ssprfs -------------------------------------------------------------------- void LAPACK_DECL(ssprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *AP, const FLOAT *AFP, const INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssprfs"); LAPACK_IMPL(ssprfs)(UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- sspsv --------------------------------------------------------------------- void LAPACK_DECL(sspsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *AP, INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("sspsv"); LAPACK_IMPL(sspsv)(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO); } //-- sspsvx -------------------------------------------------------------------- void LAPACK_DECL(sspsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *AP, FLOAT *AFP, INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sspsvx"); LAPACK_IMPL(sspsvx)(FACT, UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, IWORK, INFO); } //-- ssptrd -------------------------------------------------------------------- void LAPACK_DECL(ssptrd)(const char *UPLO, const INTEGER *N, FLOAT *AP, FLOAT *D, FLOAT *E, FLOAT *TAU, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssptrd"); LAPACK_IMPL(ssptrd)(UPLO, N, AP, D, E, TAU, INFO); } //-- ssptrf -------------------------------------------------------------------- void LAPACK_DECL(ssptrf)(const char *UPLO, const INTEGER *N, FLOAT *AP, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssptrf"); LAPACK_IMPL(ssptrf)(UPLO, N, AP, IPIV, INFO); } //-- ssptri -------------------------------------------------------------------- void LAPACK_DECL(ssptri)(const char *UPLO, const INTEGER *N, FLOAT *AP, const INTEGER *IPIV, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssptri"); LAPACK_IMPL(ssptri)(UPLO, N, AP, IPIV, WORK, INFO); } //-- ssptrs -------------------------------------------------------------------- void LAPACK_DECL(ssptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *AP, const INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssptrs"); LAPACK_IMPL(ssptrs)(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO); } //-- sstebz -------------------------------------------------------------------- void LAPACK_DECL(sstebz)(const char *RANGE, const char *ORDER, const INTEGER *N, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, const FLOAT *D, const FLOAT *E, INTEGER *M, INTEGER *NSPLIT, FLOAT *W, INTEGER *IBLOCK, INTEGER *ISPLIT, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sstebz"); LAPACK_IMPL(sstebz)(RANGE, ORDER, N, VL, VU, IL, IU, ABSTOL, D, E, M, NSPLIT, W, IBLOCK, ISPLIT, WORK, IWORK, INFO); } //-- sstedc -------------------------------------------------------------------- void LAPACK_DECL(sstedc)(const char *COMPZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sstedc"); LAPACK_IMPL(sstedc)(COMPZ, N, D, E, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- sstegr -------------------------------------------------------------------- void LAPACK_DECL(sstegr)(const char *JOBZ, const char *RANGE, const INTEGER *N, FLOAT *D, FLOAT *E, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sstegr"); LAPACK_IMPL(sstegr)(JOBZ, RANGE, N, D, E, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- sstein -------------------------------------------------------------------- void LAPACK_DECL(sstein)(const INTEGER *N, const FLOAT *D, const FLOAT *E, const INTEGER *M, const FLOAT *W, const INTEGER *IBLOCK, const INTEGER *ISPLIT, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("sstein"); LAPACK_IMPL(sstein)(N, D, E, M, W, IBLOCK, ISPLIT, Z, LDZ, WORK, IWORK, IFAIL, INFO); } //-- sstemr -------------------------------------------------------------------- void LAPACK_DECL(sstemr)(const char *JOBZ, const char *RANGE, const INTEGER *N, FLOAT *D, FLOAT *E, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, const INTEGER *NZC, INTEGER *ISUPPZ, LOGICAL *TRYRAC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sstemr"); LAPACK_IMPL(sstemr)(JOBZ, RANGE, N, D, E, VL, VU, IL, IU, M, W, Z, LDZ, NZC, ISUPPZ, TRYRAC, WORK, LWORK, IWORK, LIWORK, INFO); } //-- ssteqr -------------------------------------------------------------------- void LAPACK_DECL(ssteqr)(const char *COMPZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssteqr"); LAPACK_IMPL(ssteqr)(COMPZ, N, D, E, Z, LDZ, WORK, INFO); } //-- ssterf -------------------------------------------------------------------- void LAPACK_DECL(ssterf)(const INTEGER *N, FLOAT *D, FLOAT *E, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssterf"); LAPACK_IMPL(ssterf)(N, D, E, INFO); } //-- sstev --------------------------------------------------------------------- void LAPACK_DECL(sstev)(const char *JOBZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sstev"); LAPACK_IMPL(sstev)(JOBZ, N, D, E, Z, LDZ, WORK, INFO); } //-- sstevd -------------------------------------------------------------------- void LAPACK_DECL(sstevd)(const char *JOBZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sstevd"); LAPACK_IMPL(sstevd)(JOBZ, N, D, E, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- sstevr -------------------------------------------------------------------- void LAPACK_DECL(sstevr)(const char *JOBZ, const char *RANGE, const INTEGER *N, FLOAT *D, FLOAT *E, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("sstevr"); LAPACK_IMPL(sstevr)(JOBZ, RANGE, N, D, E, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- sstevx -------------------------------------------------------------------- void LAPACK_DECL(sstevx)(const char *JOBZ, const char *RANGE, const INTEGER *N, FLOAT *D, FLOAT *E, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("sstevx"); LAPACK_IMPL(sstevx)(JOBZ, RANGE, N, D, E, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO); } //-- ssycon -------------------------------------------------------------------- void LAPACK_DECL(ssycon)(const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssycon"); LAPACK_IMPL(ssycon)(UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK, IWORK, INFO); } //-- ssyconv ------------------------------------------------------------------- void LAPACK_DECL(ssyconv)(const char *UPLO, const char *WAY, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssyconv"); LAPACK_IMPL(ssyconv)(UPLO, WAY, N, A, LDA, IPIV, WORK, INFO); } //-- ssyequb ------------------------------------------------------------------- void LAPACK_DECL(ssyequb)(const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssyequb"); LAPACK_IMPL(ssyequb)(UPLO, N, A, LDA, S, SCOND, AMAX, WORK, INFO); } //-- ssyev --------------------------------------------------------------------- void LAPACK_DECL(ssyev)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *W, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssyev"); LAPACK_IMPL(ssyev)(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO); } //-- ssyevd -------------------------------------------------------------------- void LAPACK_DECL(ssyevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *W, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssyevd"); LAPACK_IMPL(ssyevd)(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, IWORK, LIWORK, INFO); } //-- ssyevr -------------------------------------------------------------------- void LAPACK_DECL(ssyevr)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssyevr"); LAPACK_IMPL(ssyevr)(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- ssyevx -------------------------------------------------------------------- void LAPACK_DECL(ssyevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssyevx"); LAPACK_IMPL(ssyevx)(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO); } //-- ssygs2 -------------------------------------------------------------------- void LAPACK_DECL(ssygs2)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssygs2"); LAPACK_IMPL(ssygs2)(ITYPE, UPLO, N, A, LDA, B, LDB, INFO); } //-- ssygst -------------------------------------------------------------------- void LAPACK_DECL(ssygst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssygst"); LAPACK_IMPL(ssygst)(ITYPE, UPLO, N, A, LDA, B, LDB, INFO); } //-- ssygv --------------------------------------------------------------------- void LAPACK_DECL(ssygv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *W, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssygv"); LAPACK_IMPL(ssygv)(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, INFO); } //-- ssygvd -------------------------------------------------------------------- void LAPACK_DECL(ssygvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *W, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssygvd"); LAPACK_IMPL(ssygvd)(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, IWORK, LIWORK, INFO); } //-- ssygvx -------------------------------------------------------------------- void LAPACK_DECL(ssygvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssygvx"); LAPACK_IMPL(ssygvx)(ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO); } //-- ssyrfs -------------------------------------------------------------------- void LAPACK_DECL(ssyrfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssyrfs"); LAPACK_IMPL(ssyrfs)(UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- ssyrfsx ------------------------------------------------------------------- void LAPACK_DECL(ssyrfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, FLOAT *S, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssyrfsx"); LAPACK_IMPL(ssyrfsx)(UPLO, EQUED, N, NRHS, A, LDA, AF, LDAF, IPIV, S, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO); } //-- ssysv --------------------------------------------------------------------- void LAPACK_DECL(ssysv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssysv"); LAPACK_IMPL(ssysv)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO); } //-- ssysvx -------------------------------------------------------------------- void LAPACK_DECL(ssysvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, FLOAT *AF, const INTEGER *LDAF, INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssysvx"); LAPACK_IMPL(ssysvx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, LWORK, IWORK, INFO); } //-- ssysvxx ------------------------------------------------------------------- void LAPACK_DECL(ssysvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, FLOAT *S, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssysvxx"); LAPACK_IMPL(ssysvxx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, EQUED, S, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO); } //-- ssyswapr ------------------------------------------------------------------ void LAPACK_DECL(ssyswapr)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const INTEGER *I1, const INTEGER *I2) { DEBUG_LAPACK_STUB("ssyswapr"); LAPACK_IMPL(ssyswapr)(UPLO, N, A, LDA, I1, I2); } //-- ssytd2 -------------------------------------------------------------------- void LAPACK_DECL(ssytd2)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT *TAU, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssytd2"); LAPACK_IMPL(ssytd2)(UPLO, N, A, LDA, D, E, TAU, INFO); } //-- ssytf2 -------------------------------------------------------------------- void LAPACK_DECL(ssytf2)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssytf2"); LAPACK_IMPL(ssytf2)(UPLO, N, A, LDA, IPIV, INFO); } //-- ssytrd -------------------------------------------------------------------- void LAPACK_DECL(ssytrd)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssytrd"); LAPACK_IMPL(ssytrd)(UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO); } //-- ssytrf -------------------------------------------------------------------- void LAPACK_DECL(ssytrf)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssytrf"); LAPACK_IMPL(ssytrf)(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- ssytri -------------------------------------------------------------------- void LAPACK_DECL(ssytri)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssytri"); LAPACK_IMPL(ssytri)(UPLO, N, A, LDA, IPIV, WORK, INFO); } //-- ssytri2 ------------------------------------------------------------------- void LAPACK_DECL(ssytri2)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssytri2"); LAPACK_IMPL(ssytri2)(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- ssytri2x ------------------------------------------------------------------ void LAPACK_DECL(ssytri2x)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *WORK, const INTEGER *NB, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssytri2x"); LAPACK_IMPL(ssytri2x)(UPLO, N, A, LDA, IPIV, WORK, NB, INFO); } //-- ssytrs -------------------------------------------------------------------- void LAPACK_DECL(ssytrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssytrs"); LAPACK_IMPL(ssytrs)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO); } //-- ssytrs2 ------------------------------------------------------------------- void LAPACK_DECL(ssytrs2)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ssytrs2"); LAPACK_IMPL(ssytrs2)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, INFO); } //-- stbcon -------------------------------------------------------------------- void LAPACK_DECL(stbcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *KD, const FLOAT *AB, const INTEGER *LDAB, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("stbcon"); LAPACK_IMPL(stbcon)(NORM, UPLO, DIAG, N, KD, AB, LDAB, RCOND, WORK, IWORK, INFO); } //-- stbrfs -------------------------------------------------------------------- void LAPACK_DECL(stbrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *B, const INTEGER *LDB, const FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("stbrfs"); LAPACK_IMPL(stbrfs)(UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- stbtrs -------------------------------------------------------------------- void LAPACK_DECL(stbtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("stbtrs"); LAPACK_IMPL(stbtrs)(UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, B, LDB, INFO); } //-- stfsm --------------------------------------------------------------------- void LAPACK_DECL(stfsm)(const char *TRANSR, const char *SIDE, const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *M, const INTEGER *N, const FLOAT *ALPHA, const FLOAT *A, FLOAT *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("stfsm"); LAPACK_IMPL(stfsm)(TRANSR, SIDE, UPLO, TRANS, DIAG, M, N, ALPHA, A, B, LDB); } //-- stftri -------------------------------------------------------------------- void LAPACK_DECL(stftri)(const char *TRANSR, const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT *A, INTEGER *INFO) { DEBUG_LAPACK_STUB("stftri"); LAPACK_IMPL(stftri)(TRANSR, UPLO, DIAG, N, A, INFO); } //-- stfttp -------------------------------------------------------------------- void LAPACK_DECL(stfttp)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT *ARF, FLOAT *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("stfttp"); LAPACK_IMPL(stfttp)(TRANSR, UPLO, N, ARF, AP, INFO); } //-- stfttr -------------------------------------------------------------------- void LAPACK_DECL(stfttr)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT *ARF, FLOAT *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("stfttr"); LAPACK_IMPL(stfttr)(TRANSR, UPLO, N, ARF, A, LDA, INFO); } //-- stgevc -------------------------------------------------------------------- void LAPACK_DECL(stgevc)(const char *SIDE, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const FLOAT *S, const INTEGER *LDS, const FLOAT *P, const INTEGER *LDP, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("stgevc"); LAPACK_IMPL(stgevc)(SIDE, HOWMNY, SELECT, N, S, LDS, P, LDP, VL, LDVL, VR, LDVR, MM, M, WORK, INFO); } //-- stgex2 -------------------------------------------------------------------- void LAPACK_DECL(stgex2)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *Q, const INTEGER *LDQ, FLOAT *Z, const INTEGER *LDZ, const INTEGER *J1, const INTEGER *N1, const INTEGER *N2, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("stgex2"); LAPACK_IMPL(stgex2)(WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, J1, N1, N2, WORK, LWORK, INFO); } //-- stgexc -------------------------------------------------------------------- void LAPACK_DECL(stgexc)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *Q, const INTEGER *LDQ, FLOAT *Z, const INTEGER *LDZ, INTEGER *IFST, INTEGER *ILST, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("stgexc"); LAPACK_IMPL(stgexc)(WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, IFST, ILST, WORK, LWORK, INFO); } //-- stgsen -------------------------------------------------------------------- void LAPACK_DECL(stgsen)(const INTEGER *IJOB, const LOGICAL *WANTQ, const LOGICAL *WANTZ, const LOGICAL *SELECT, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *Q, const INTEGER *LDQ, FLOAT *Z, const INTEGER *LDZ, INTEGER *M, FLOAT *PL, FLOAT *PR, FLOAT *DIF, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("stgsen"); LAPACK_IMPL(stgsen)(IJOB, WANTQ, WANTZ, SELECT, N, A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, M, PL, PR, DIF, WORK, LWORK, IWORK, LIWORK, INFO); } //-- stgsja -------------------------------------------------------------------- void LAPACK_DECL(stgsja)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, const INTEGER *K, const INTEGER *L, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, const FLOAT *TOLA, const FLOAT *TOLB, FLOAT *ALPHA, FLOAT *BETA, FLOAT *U, const INTEGER *LDU, FLOAT *V, const INTEGER *LDV, FLOAT *Q, const INTEGER *LDQ, FLOAT *WORK, INTEGER *NCYCLE, INTEGER *INFO) { DEBUG_LAPACK_STUB("stgsja"); LAPACK_IMPL(stgsja)(JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B, LDB, TOLA, TOLB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, NCYCLE, INFO); } //-- stgsna -------------------------------------------------------------------- void LAPACK_DECL(stgsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, const FLOAT *VL, const INTEGER *LDVL, const FLOAT *VR, const INTEGER *LDVR, FLOAT *S, FLOAT *DIF, const INTEGER *MM, INTEGER *M, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("stgsna"); LAPACK_IMPL(stgsna)(JOB, HOWMNY, SELECT, N, A, LDA, B, LDB, VL, LDVL, VR, LDVR, S, DIF, MM, M, WORK, LWORK, IWORK, INFO); } //-- stgsy2 -------------------------------------------------------------------- void LAPACK_DECL(stgsy2)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, FLOAT *C, const INTEGER *LDC, const FLOAT *D, const INTEGER *LDD, const FLOAT *E, const INTEGER *LDE, FLOAT *F, const INTEGER *LDF, FLOAT *SCALE, FLOAT *RDSUM, FLOAT *RDSCAL, INTEGER *IWORK, INTEGER *PQ, INTEGER *INFO) { DEBUG_LAPACK_STUB("stgsy2"); LAPACK_IMPL(stgsy2)(TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D, LDD, E, LDE, F, LDF, SCALE, RDSUM, RDSCAL, IWORK, PQ, INFO); } //-- stgsyl -------------------------------------------------------------------- void LAPACK_DECL(stgsyl)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, FLOAT *C, const INTEGER *LDC, const FLOAT *D, const INTEGER *LDD, const FLOAT *E, const INTEGER *LDE, FLOAT *F, const INTEGER *LDF, FLOAT *SCALE, FLOAT *DIF, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("stgsyl"); LAPACK_IMPL(stgsyl)(TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D, LDD, E, LDE, F, LDF, SCALE, DIF, WORK, LWORK, IWORK, INFO); } //-- stpcon -------------------------------------------------------------------- void LAPACK_DECL(stpcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const FLOAT *AP, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("stpcon"); LAPACK_IMPL(stpcon)(NORM, UPLO, DIAG, N, AP, RCOND, WORK, IWORK, INFO); } //-- stprfs -------------------------------------------------------------------- void LAPACK_DECL(stprfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT *AP, const FLOAT *B, const INTEGER *LDB, const FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("stprfs"); LAPACK_IMPL(stprfs)(UPLO, TRANS, DIAG, N, NRHS, AP, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- stptri -------------------------------------------------------------------- void LAPACK_DECL(stptri)(const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("stptri"); LAPACK_IMPL(stptri)(UPLO, DIAG, N, AP, INFO); } //-- stptrs -------------------------------------------------------------------- void LAPACK_DECL(stptrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT *AP, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("stptrs"); LAPACK_IMPL(stptrs)(UPLO, TRANS, DIAG, N, NRHS, AP, B, LDB, INFO); } //-- stpttf -------------------------------------------------------------------- void LAPACK_DECL(stpttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT *AP, FLOAT *ARF, INTEGER *INFO) { DEBUG_LAPACK_STUB("stpttf"); LAPACK_IMPL(stpttf)(TRANSR, UPLO, N, AP, ARF, INFO); } //-- stpttr -------------------------------------------------------------------- void LAPACK_DECL(stpttr)(const char *UPLO, const INTEGER *N, const FLOAT *AP, FLOAT *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("stpttr"); LAPACK_IMPL(stpttr)(UPLO, N, AP, A, LDA, INFO); } //-- strcon -------------------------------------------------------------------- void LAPACK_DECL(strcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("strcon"); LAPACK_IMPL(strcon)(NORM, UPLO, DIAG, N, A, LDA, RCOND, WORK, IWORK, INFO); } //-- strevc -------------------------------------------------------------------- void LAPACK_DECL(strevc)(const char *SIDE, const char *HOWMNY, LOGICAL *SELECT, const INTEGER *N, const FLOAT *T, const INTEGER *LDT, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("strevc"); LAPACK_IMPL(strevc)(SIDE, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR, LDVR, MM, M, WORK, INFO); } //-- strexc -------------------------------------------------------------------- void LAPACK_DECL(strexc)(const char *COMPQ, const INTEGER *N, FLOAT *T, const INTEGER *LDT, FLOAT *Q, const INTEGER *LDQ, INTEGER *IFST, INTEGER *ILST, FLOAT *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("strexc"); LAPACK_IMPL(strexc)(COMPQ, N, T, LDT, Q, LDQ, IFST, ILST, WORK, INFO); } //-- strrfs -------------------------------------------------------------------- void LAPACK_DECL(strrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, const FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("strrfs"); LAPACK_IMPL(strrfs)(UPLO, TRANS, DIAG, N, NRHS, A, LDA, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO); } //-- strsen -------------------------------------------------------------------- void LAPACK_DECL(strsen)(const char *JOB, const char *COMPQ, const LOGICAL *SELECT, const INTEGER *N, FLOAT *T, const INTEGER *LDT, FLOAT *Q, const INTEGER *LDQ, FLOAT *WR, FLOAT *WI, INTEGER *M, FLOAT *S, FLOAT *SEP, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("strsen"); LAPACK_IMPL(strsen)(JOB, COMPQ, SELECT, N, T, LDT, Q, LDQ, WR, WI, M, S, SEP, WORK, LWORK, IWORK, LIWORK, INFO); } //-- strsna -------------------------------------------------------------------- void LAPACK_DECL(strsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const FLOAT *T, const INTEGER *LDT, const FLOAT *VL, const INTEGER *LDVL, const FLOAT *VR, const INTEGER *LDVR, FLOAT *S, FLOAT *SEP, const INTEGER *MM, INTEGER *M, FLOAT *WORK, const INTEGER *LDWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("strsna"); LAPACK_IMPL(strsna)(JOB, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR, LDVR, S, SEP, MM, M, WORK, LDWORK, IWORK, INFO); } //-- strsyl -------------------------------------------------------------------- void LAPACK_DECL(strsyl)(const char *TRANA, const char *TRANB, const INTEGER *ISGN, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, FLOAT *C, const INTEGER *LDC, FLOAT *SCALE, INTEGER *INFO) { DEBUG_LAPACK_STUB("strsyl"); LAPACK_IMPL(strsyl)(TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C, LDC, SCALE, INFO); } //-- strti2 -------------------------------------------------------------------- void LAPACK_DECL(strti2)(const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("strti2"); LAPACK_IMPL(strti2)(UPLO, DIAG, N, A, LDA, INFO); } //-- strtri -------------------------------------------------------------------- void LAPACK_DECL(strtri)(const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("strtri"); LAPACK_IMPL(strtri)(UPLO, DIAG, N, A, LDA, INFO); } //-- strtrs -------------------------------------------------------------------- void LAPACK_DECL(strtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("strtrs"); LAPACK_IMPL(strtrs)(UPLO, TRANS, DIAG, N, NRHS, A, LDA, B, LDB, INFO); } //-- strttf -------------------------------------------------------------------- void LAPACK_DECL(strttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *ARF, INTEGER *INFO) { DEBUG_LAPACK_STUB("strttf"); LAPACK_IMPL(strttf)(TRANSR, UPLO, N, A, LDA, ARF, INFO); } //-- strttp -------------------------------------------------------------------- void LAPACK_DECL(strttp)(const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("strttp"); LAPACK_IMPL(strttp)(UPLO, N, A, LDA, AP, INFO); } //-- stzrqf -------------------------------------------------------------------- void LAPACK_DECL(stzrqf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, INTEGER *INFO) { DEBUG_LAPACK_STUB("stzrqf"); LAPACK_IMPL(stzrqf)(M, N, A, LDA, TAU, INFO); } //-- stzrzf -------------------------------------------------------------------- void LAPACK_DECL(stzrzf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("stzrzf"); LAPACK_IMPL(stzrzf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- zbbcsd -------------------------------------------------------------------- void LAPACK_DECL(zbbcsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, DOUBLE *THETA, DOUBLE *PHI, DOUBLE_COMPLEX *U1, const INTEGER *LDU1, DOUBLE_COMPLEX *U2, const INTEGER *LDU2, DOUBLE_COMPLEX *V1T, const INTEGER *LDV1T, DOUBLE_COMPLEX *V2T, const INTEGER *LDV2T, DOUBLE *B11D, DOUBLE *B11E, DOUBLE *B12D, DOUBLE *B12E, const DOUBLE *B21D, const DOUBLE *B21E, const DOUBLE *B22D, const DOUBLE *B22E, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zbbcsd"); LAPACK_IMPL(zbbcsd)(JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS, M, P, Q, THETA, PHI, U1, LDU1, U2, LDU2, V1T, LDV1T, V2T, LDV2T, B11D, B11E, B12D, B12E, B21D, B21E, B22D, B22E, RWORK, LRWORK, INFO); } //-- zbdsqr -------------------------------------------------------------------- void LAPACK_DECL(zbdsqr)(const char *UPLO, const INTEGER *N, const INTEGER *NCVT, const INTEGER *NRU, const INTEGER *NCC, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *VT, const INTEGER *LDVT, DOUBLE_COMPLEX *U, const INTEGER *LDU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zbdsqr"); LAPACK_IMPL(zbdsqr)(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C, LDC, RWORK, INFO); } //-- zcgesv -------------------------------------------------------------------- void LAPACK_DECL(zcgesv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE_COMPLEX *WORK, FLOAT_COMPLEX *SWORK, DOUBLE *RWORK, INTEGER *ITER, INTEGER *INFO) { DEBUG_LAPACK_STUB("zcgesv"); LAPACK_IMPL(zcgesv)(N, NRHS, A, LDA, IPIV, B, LDB, X, LDX, WORK, SWORK, RWORK, ITER, INFO); } //-- zcposv -------------------------------------------------------------------- void LAPACK_DECL(zcposv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE_COMPLEX *WORK, FLOAT_COMPLEX *SWORK, DOUBLE *RWORK, INTEGER *ITER, INTEGER *INFO) { DEBUG_LAPACK_STUB("zcposv"); LAPACK_IMPL(zcposv)(UPLO, N, NRHS, A, LDA, B, LDB, X, LDX, WORK, SWORK, RWORK, ITER, INFO); } //-- zdrscl -------------------------------------------------------------------- void LAPACK_DECL(zdrscl)(const INTEGER *N, const DOUBLE *SA, DOUBLE_COMPLEX *SX, const INTEGER *INCX) { DEBUG_LAPACK_STUB("zdrscl"); LAPACK_IMPL(zdrscl)(N, SA, SX, INCX); } //-- zgbbrd -------------------------------------------------------------------- void LAPACK_DECL(zgbbrd)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *NCC, const INTEGER *KL, const INTEGER *KU, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *PT, const INTEGER *LDPT, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgbbrd"); LAPACK_IMPL(zgbbrd)(VECT, M, N, NCC, KL, KU, AB, LDAB, D, E, Q, LDQ, PT, LDPT, C, LDC, WORK, RWORK, INFO); } //-- zgbcon -------------------------------------------------------------------- void LAPACK_DECL(zgbcon)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgbcon"); LAPACK_IMPL(zgbcon)(NORM, N, KL, KU, AB, LDAB, IPIV, ANORM, RCOND, WORK, RWORK, INFO); } //-- zgbequ -------------------------------------------------------------------- void LAPACK_DECL(zgbequ)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgbequ"); LAPACK_IMPL(zgbequ)(M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND, AMAX, INFO); } //-- zgbequb ------------------------------------------------------------------- void LAPACK_DECL(zgbequb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgbequb"); LAPACK_IMPL(zgbequb)(M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND, AMAX, INFO); } //-- zgbrfs -------------------------------------------------------------------- void LAPACK_DECL(zgbrfs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgbrfs"); LAPACK_IMPL(zgbrfs)(TRANS, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- zgbrfsx ------------------------------------------------------------------- void LAPACK_DECL(zgbrfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, DOUBLE *R, DOUBLE *C, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgbrfsx"); LAPACK_IMPL(zgbrfsx)(TRANS, EQUED, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, R, C, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- zgbsv --------------------------------------------------------------------- void LAPACK_DECL(zgbsv)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgbsv"); LAPACK_IMPL(zgbsv)(N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB, INFO); } //-- zgbsvx -------------------------------------------------------------------- void LAPACK_DECL(zgbsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, INTEGER *IPIV, char *EQUED, DOUBLE *R, DOUBLE *C, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgbsvx"); LAPACK_IMPL(zgbsvx)(FACT, TRANS, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, EQUED, R, C, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- zgbtf2 -------------------------------------------------------------------- void LAPACK_DECL(zgbtf2)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgbtf2"); LAPACK_IMPL(zgbtf2)(M, N, KL, KU, AB, LDAB, IPIV, INFO); } //-- zgbtrf -------------------------------------------------------------------- void LAPACK_DECL(zgbtrf)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgbtrf"); LAPACK_IMPL(zgbtrf)(M, N, KL, KU, AB, LDAB, IPIV, INFO); } //-- zgbtrs -------------------------------------------------------------------- void LAPACK_DECL(zgbtrs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgbtrs"); LAPACK_IMPL(zgbtrs)(TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB, INFO); } //-- zgebak -------------------------------------------------------------------- void LAPACK_DECL(zgebak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const DOUBLE *SCALE, const INTEGER *M, DOUBLE_COMPLEX *V, const INTEGER *LDV, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgebak"); LAPACK_IMPL(zgebak)(JOB, SIDE, N, ILO, IHI, SCALE, M, V, LDV, INFO); } //-- zgebal -------------------------------------------------------------------- void LAPACK_DECL(zgebal)(const char *JOB, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *ILO, INTEGER *IHI, DOUBLE *SCALE, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgebal"); LAPACK_IMPL(zgebal)(JOB, N, A, LDA, ILO, IHI, SCALE, INFO); } //-- zgebd2 -------------------------------------------------------------------- void LAPACK_DECL(zgebd2)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *TAUQ, DOUBLE_COMPLEX *TAUP, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgebd2"); LAPACK_IMPL(zgebd2)(M, N, A, LDA, D, E, TAUQ, TAUP, WORK, INFO); } //-- zgebrd -------------------------------------------------------------------- void LAPACK_DECL(zgebrd)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *TAUQ, DOUBLE_COMPLEX *TAUP, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgebrd"); LAPACK_IMPL(zgebrd)(M, N, A, LDA, D, E, TAUQ, TAUP, WORK, LWORK, INFO); } //-- zgecon -------------------------------------------------------------------- void LAPACK_DECL(zgecon)(const char *NORM, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgecon"); LAPACK_IMPL(zgecon)(NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK, INFO); } //-- zgeequ -------------------------------------------------------------------- void LAPACK_DECL(zgeequ)(const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgeequ"); LAPACK_IMPL(zgeequ)(M, N, A, LDA, R, C, ROWCND, COLCND, AMAX, INFO); } //-- zgeequb ------------------------------------------------------------------- void LAPACK_DECL(zgeequb)(const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgeequb"); LAPACK_IMPL(zgeequb)(M, N, A, LDA, R, C, ROWCND, COLCND, AMAX, INFO); } //-- zgees --------------------------------------------------------------------- void LAPACK_DECL(zgees)(const char *JOBVS, const char *SORT, const LOGICAL *SELECT, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *SDIM, DOUBLE_COMPLEX *W, DOUBLE_COMPLEX *VS, const INTEGER *LDVS, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgees"); LAPACK_IMPL(zgees)(JOBVS, SORT, SELECT, N, A, LDA, SDIM, W, VS, LDVS, WORK, LWORK, RWORK, BWORK, INFO); } //-- zgeesx -------------------------------------------------------------------- void LAPACK_DECL(zgeesx)(const char *JOBVS, const char *SORT, const LOGICAL *SELECT, const char *SENSE, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *SDIM, DOUBLE_COMPLEX *W, DOUBLE_COMPLEX *VS, const INTEGER *LDVS, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgeesx"); LAPACK_IMPL(zgeesx)(JOBVS, SORT, SELECT, SENSE, N, A, LDA, SDIM, W, VS, LDVS, RCONDE, RCONDV, WORK, LWORK, RWORK, BWORK, INFO); } //-- zgeev --------------------------------------------------------------------- void LAPACK_DECL(zgeev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *W, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgeev"); LAPACK_IMPL(zgeev)(JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR, WORK, LWORK, RWORK, INFO); } //-- zgeevx -------------------------------------------------------------------- void LAPACK_DECL(zgeevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *W, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, DOUBLE *SCALE, DOUBLE *ABNRM, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgeevx"); LAPACK_IMPL(zgeevx)(BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, W, VL, LDVL, VR, LDVR, ILO, IHI, SCALE, ABNRM, RCONDE, RCONDV, WORK, LWORK, RWORK, INFO); } //-- zgegs --------------------------------------------------------------------- void LAPACK_DECL(zgegs)(const char *JOBVSL, const char *JOBVSR, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *VSL, const INTEGER *LDVSL, DOUBLE_COMPLEX *VSR, const INTEGER *LDVSR, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgegs"); LAPACK_IMPL(zgegs)(JOBVSL, JOBVSR, N, A, LDA, B, LDB, ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, WORK, LWORK, RWORK, INFO); } //-- zgegv --------------------------------------------------------------------- void LAPACK_DECL(zgegv)(const char *JOBVL, const char *JOBVR, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgegv"); LAPACK_IMPL(zgegv)(JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHA, BETA, VL, LDVL, VR, LDVR, WORK, LWORK, RWORK, INFO); } //-- zgehd2 -------------------------------------------------------------------- void LAPACK_DECL(zgehd2)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgehd2"); LAPACK_IMPL(zgehd2)(N, ILO, IHI, A, LDA, TAU, WORK, INFO); } //-- zgehrd -------------------------------------------------------------------- void LAPACK_DECL(zgehrd)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgehrd"); LAPACK_IMPL(zgehrd)(N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO); } //-- zgelq2 -------------------------------------------------------------------- void LAPACK_DECL(zgelq2)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgelq2"); LAPACK_IMPL(zgelq2)(M, N, A, LDA, TAU, WORK, INFO); } //-- zgelqf -------------------------------------------------------------------- void LAPACK_DECL(zgelqf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgelqf"); LAPACK_IMPL(zgelqf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- zgels --------------------------------------------------------------------- void LAPACK_DECL(zgels)(const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgels"); LAPACK_IMPL(zgels)(TRANS, M, N, NRHS, A, LDA, B, LDB, WORK, LWORK, INFO); } //-- zgelsd -------------------------------------------------------------------- void LAPACK_DECL(zgelsd)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE *S, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgelsd"); LAPACK_IMPL(zgelsd)(M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK, WORK, LWORK, RWORK, IWORK, INFO); } //-- zgelss -------------------------------------------------------------------- void LAPACK_DECL(zgelss)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE *S, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgelss"); LAPACK_IMPL(zgelss)(M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK, WORK, LWORK, RWORK, INFO); } //-- zgelsx -------------------------------------------------------------------- void LAPACK_DECL(zgelsx)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *JPVT, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgelsx"); LAPACK_IMPL(zgelsx)(M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK, WORK, RWORK, INFO); } //-- zgelsy -------------------------------------------------------------------- void LAPACK_DECL(zgelsy)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *JPVT, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgelsy"); LAPACK_IMPL(zgelsy)(M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK, WORK, LWORK, RWORK, INFO); } //-- zgeql2 -------------------------------------------------------------------- void LAPACK_DECL(zgeql2)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgeql2"); LAPACK_IMPL(zgeql2)(M, N, A, LDA, TAU, WORK, INFO); } //-- zgeqlf -------------------------------------------------------------------- void LAPACK_DECL(zgeqlf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgeqlf"); LAPACK_IMPL(zgeqlf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- zgeqp3 -------------------------------------------------------------------- void LAPACK_DECL(zgeqp3)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgeqp3"); LAPACK_IMPL(zgeqp3)(M, N, A, LDA, JPVT, TAU, WORK, LWORK, RWORK, INFO); } //-- zgeqpf -------------------------------------------------------------------- void LAPACK_DECL(zgeqpf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgeqpf"); LAPACK_IMPL(zgeqpf)(M, N, A, LDA, JPVT, TAU, WORK, RWORK, INFO); } //-- zgeqr2 -------------------------------------------------------------------- void LAPACK_DECL(zgeqr2)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgeqr2"); LAPACK_IMPL(zgeqr2)(M, N, A, LDA, TAU, WORK, INFO); } //-- zgeqr2p ------------------------------------------------------------------- void LAPACK_DECL(zgeqr2p)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgeqr2p"); LAPACK_IMPL(zgeqr2p)(M, N, A, LDA, TAU, WORK, INFO); } //-- zgeqrf -------------------------------------------------------------------- void LAPACK_DECL(zgeqrf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgeqrf"); LAPACK_IMPL(zgeqrf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- zgeqrfp ------------------------------------------------------------------- void LAPACK_DECL(zgeqrfp)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgeqrfp"); LAPACK_IMPL(zgeqrfp)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- zgerfs -------------------------------------------------------------------- void LAPACK_DECL(zgerfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgerfs"); LAPACK_IMPL(zgerfs)(TRANS, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- zgerfsx ------------------------------------------------------------------- void LAPACK_DECL(zgerfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *R, const DOUBLE *C, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgerfsx"); LAPACK_IMPL(zgerfsx)(TRANS, EQUED, N, NRHS, A, LDA, AF, LDAF, IPIV, R, C, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- zgerq2 -------------------------------------------------------------------- void LAPACK_DECL(zgerq2)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgerq2"); LAPACK_IMPL(zgerq2)(M, N, A, LDA, TAU, WORK, INFO); } //-- zgerqf -------------------------------------------------------------------- void LAPACK_DECL(zgerqf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgerqf"); LAPACK_IMPL(zgerqf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- zgesc2 -------------------------------------------------------------------- void LAPACK_DECL(zgesc2)(const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *RHS, const INTEGER *IPIV, const INTEGER *JPIV, DOUBLE *SCALE) { DEBUG_LAPACK_STUB("zgesc2"); LAPACK_IMPL(zgesc2)(N, A, LDA, RHS, IPIV, JPIV, SCALE); } //-- zgesdd -------------------------------------------------------------------- void LAPACK_DECL(zgesdd)(const char *JOBZ, const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *S, DOUBLE_COMPLEX *U, const INTEGER *LDU, DOUBLE_COMPLEX *VT, const INTEGER *LDVT, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgesdd"); LAPACK_IMPL(zgesdd)(JOBZ, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK, LWORK, RWORK, IWORK, INFO); } //-- zgesv --------------------------------------------------------------------- void LAPACK_DECL(zgesv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgesv"); LAPACK_IMPL(zgesv)(N, NRHS, A, LDA, IPIV, B, LDB, INFO); } //-- zgesvd -------------------------------------------------------------------- void LAPACK_DECL(zgesvd)(const char *JOBU, const char *JOBVT, const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *S, DOUBLE_COMPLEX *U, const INTEGER *LDU, DOUBLE_COMPLEX *VT, const INTEGER *LDVT, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgesvd"); LAPACK_IMPL(zgesvd)(JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK, LWORK, RWORK, INFO); } //-- zgesvx -------------------------------------------------------------------- void LAPACK_DECL(zgesvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, DOUBLE *R, DOUBLE *C, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgesvx"); LAPACK_IMPL(zgesvx)(FACT, TRANS, N, NRHS, A, LDA, AF, LDAF, IPIV, EQUED, R, C, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- zgesvxx ------------------------------------------------------------------- void LAPACK_DECL(zgesvxx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, DOUBLE *R, DOUBLE *C, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgesvxx"); LAPACK_IMPL(zgesvxx)(FACT, TRANS, N, NRHS, A, LDA, AF, LDAF, IPIV, EQUED, R, C, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- zgetc2 -------------------------------------------------------------------- void LAPACK_DECL(zgetc2)(const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *JPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgetc2"); LAPACK_IMPL(zgetc2)(N, A, LDA, IPIV, JPIV, INFO); } //-- zgetf2 -------------------------------------------------------------------- void LAPACK_DECL(zgetf2)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgetf2"); LAPACK_IMPL(zgetf2)(M, N, A, LDA, IPIV, INFO); } //-- zgetrf -------------------------------------------------------------------- void LAPACK_DECL(zgetrf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgetrf"); LAPACK_IMPL(zgetrf)(M, N, A, LDA, IPIV, INFO); } //-- zgetri -------------------------------------------------------------------- void LAPACK_DECL(zgetri)(const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgetri"); LAPACK_IMPL(zgetri)(N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- zgetrs -------------------------------------------------------------------- void LAPACK_DECL(zgetrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgetrs"); LAPACK_IMPL(zgetrs)(TRANS, N, NRHS, A, LDA, IPIV, B, LDB, INFO); } //-- zggbak -------------------------------------------------------------------- void LAPACK_DECL(zggbak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const DOUBLE *LSCALE, const DOUBLE *RSCALE, const INTEGER *M, DOUBLE_COMPLEX *V, const INTEGER *LDV, INTEGER *INFO) { DEBUG_LAPACK_STUB("zggbak"); LAPACK_IMPL(zggbak)(JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V, LDV, INFO); } //-- zggbal -------------------------------------------------------------------- void LAPACK_DECL(zggbal)(const char *JOB, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *ILO, INTEGER *IHI, DOUBLE *LSCALE, DOUBLE *RSCALE, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zggbal"); LAPACK_IMPL(zggbal)(JOB, N, A, LDA, B, LDB, ILO, IHI, LSCALE, RSCALE, WORK, INFO); } //-- zgges --------------------------------------------------------------------- void LAPACK_DECL(zgges)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *SDIM, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *VSL, const INTEGER *LDVSL, DOUBLE_COMPLEX *VSR, const INTEGER *LDVSR, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgges"); LAPACK_IMPL(zgges)(JOBVSL, JOBVSR, SORT, SELCTG, N, A, LDA, B, LDB, SDIM, ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, WORK, LWORK, RWORK, BWORK, INFO); } //-- zggesx -------------------------------------------------------------------- void LAPACK_DECL(zggesx)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const char *SENSE, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *SDIM, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *VSL, const INTEGER *LDVSL, DOUBLE_COMPLEX *VSR, const INTEGER *LDVSR, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *IWORK, const INTEGER *LIWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zggesx"); LAPACK_IMPL(zggesx)(JOBVSL, JOBVSR, SORT, SELCTG, SENSE, N, A, LDA, B, LDB, SDIM, ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, RCONDE, RCONDV, WORK, LWORK, RWORK, IWORK, LIWORK, BWORK, INFO); } //-- zggev --------------------------------------------------------------------- void LAPACK_DECL(zggev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zggev"); LAPACK_IMPL(zggev)(JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHA, BETA, VL, LDVL, VR, LDVR, WORK, LWORK, RWORK, INFO); } //-- zggevx -------------------------------------------------------------------- void LAPACK_DECL(zggevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, DOUBLE *LSCALE, DOUBLE *RSCALE, DOUBLE *ABNRM, DOUBLE *BBNRM, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *IWORK, LOGICAL *BWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zggevx"); LAPACK_IMPL(zggevx)(BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, B, LDB, ALPHA, BETA, VL, LDVL, VR, LDVR, ILO, IHI, LSCALE, RSCALE, ABNRM, BBNRM, RCONDE, RCONDV, WORK, LWORK, RWORK, IWORK, BWORK, INFO); } //-- zggglm -------------------------------------------------------------------- void LAPACK_DECL(zggglm)(const INTEGER *N, const INTEGER *M, const INTEGER *P, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *D, DOUBLE_COMPLEX *X, DOUBLE_COMPLEX *Y, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zggglm"); LAPACK_IMPL(zggglm)(N, M, P, A, LDA, B, LDB, D, X, Y, WORK, LWORK, INFO); } //-- zgghrd -------------------------------------------------------------------- void LAPACK_DECL(zgghrd)(const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgghrd"); LAPACK_IMPL(zgghrd)(COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q, LDQ, Z, LDZ, INFO); } //-- zgglse -------------------------------------------------------------------- void LAPACK_DECL(zgglse)(const INTEGER *M, const INTEGER *N, const INTEGER *P, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *C, DOUBLE_COMPLEX *D, DOUBLE_COMPLEX *X, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgglse"); LAPACK_IMPL(zgglse)(M, N, P, A, LDA, B, LDB, C, D, X, WORK, LWORK, INFO); } //-- zggqrf -------------------------------------------------------------------- void LAPACK_DECL(zggqrf)(const INTEGER *N, const INTEGER *M, const INTEGER *P, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAUA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *TAUB, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zggqrf"); LAPACK_IMPL(zggqrf)(N, M, P, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO); } //-- zggrqf -------------------------------------------------------------------- void LAPACK_DECL(zggrqf)(const INTEGER *M, const INTEGER *P, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAUA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *TAUB, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zggrqf"); LAPACK_IMPL(zggrqf)(M, P, N, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO); } //-- zggsvd -------------------------------------------------------------------- void LAPACK_DECL(zggsvd)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *N, const INTEGER *P, INTEGER *K, INTEGER *L, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE *ALPHA, DOUBLE *BETA, DOUBLE_COMPLEX *U, const INTEGER *LDU, DOUBLE_COMPLEX *V, const INTEGER *LDV, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zggsvd"); LAPACK_IMPL(zggsvd)(JOBU, JOBV, JOBQ, M, N, P, K, L, A, LDA, B, LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, RWORK, IWORK, INFO); } //-- zggsvp -------------------------------------------------------------------- void LAPACK_DECL(zggsvp)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE *TOLA, const DOUBLE *TOLB, INTEGER *K, INTEGER *L, DOUBLE_COMPLEX *U, const INTEGER *LDU, DOUBLE_COMPLEX *V, const INTEGER *LDV, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, INTEGER *IWORK, DOUBLE *RWORK, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zggsvp"); LAPACK_IMPL(zggsvp)(JOBU, JOBV, JOBQ, M, P, N, A, LDA, B, LDB, TOLA, TOLB, K, L, U, LDU, V, LDV, Q, LDQ, IWORK, RWORK, TAU, WORK, INFO); } //-- zgtcon -------------------------------------------------------------------- void LAPACK_DECL(zgtcon)(const char *NORM, const INTEGER *N, const DOUBLE_COMPLEX *DL, const DOUBLE_COMPLEX *D, const DOUBLE_COMPLEX *DU, const DOUBLE_COMPLEX *DU2, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgtcon"); LAPACK_IMPL(zgtcon)(NORM, N, DL, D, DU, DU2, IPIV, ANORM, RCOND, WORK, INFO); } //-- zgtrfs -------------------------------------------------------------------- void LAPACK_DECL(zgtrfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *DL, const DOUBLE_COMPLEX *D, const DOUBLE_COMPLEX *DU, const DOUBLE_COMPLEX *DLF, const DOUBLE_COMPLEX *DF, const DOUBLE_COMPLEX *DUF, const DOUBLE_COMPLEX *DU2, const INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgtrfs"); LAPACK_IMPL(zgtrfs)(TRANS, N, NRHS, DL, D, DU, DLF, DF, DUF, DU2, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- zgtsv --------------------------------------------------------------------- void LAPACK_DECL(zgtsv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *DL, DOUBLE_COMPLEX *D, DOUBLE_COMPLEX *DU, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgtsv"); LAPACK_IMPL(zgtsv)(N, NRHS, DL, D, DU, B, LDB, INFO); } //-- zgtsvx -------------------------------------------------------------------- void LAPACK_DECL(zgtsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *DL, const DOUBLE_COMPLEX *D, const DOUBLE_COMPLEX *DU, DOUBLE_COMPLEX *DLF, DOUBLE_COMPLEX *DF, DOUBLE_COMPLEX *DUF, DOUBLE_COMPLEX *DU2, INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgtsvx"); LAPACK_IMPL(zgtsvx)(FACT, TRANS, N, NRHS, DL, D, DU, DLF, DF, DUF, DU2, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- zgttrf -------------------------------------------------------------------- void LAPACK_DECL(zgttrf)(const INTEGER *N, DOUBLE_COMPLEX *DL, DOUBLE_COMPLEX *D, DOUBLE_COMPLEX *DU, DOUBLE_COMPLEX *DU2, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgttrf"); LAPACK_IMPL(zgttrf)(N, DL, D, DU, DU2, IPIV, INFO); } //-- zgttrs -------------------------------------------------------------------- void LAPACK_DECL(zgttrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *DL, const DOUBLE_COMPLEX *D, const DOUBLE_COMPLEX *DU, const DOUBLE_COMPLEX *DU2, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zgttrs"); LAPACK_IMPL(zgttrs)(TRANS, N, NRHS, DL, D, DU, DU2, IPIV, B, LDB, INFO); } //-- zgtts2 -------------------------------------------------------------------- void LAPACK_DECL(zgtts2)(const INTEGER *ITRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *DL, const DOUBLE_COMPLEX *D, const DOUBLE_COMPLEX *DU, const DOUBLE_COMPLEX *DU2, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("zgtts2"); LAPACK_IMPL(zgtts2)(ITRANS, N, NRHS, DL, D, DU, DU2, IPIV, B, LDB); } //-- zhbev --------------------------------------------------------------------- void LAPACK_DECL(zhbev)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhbev"); LAPACK_IMPL(zhbev)(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, RWORK, INFO); } //-- zhbevd -------------------------------------------------------------------- void LAPACK_DECL(zhbevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhbevd"); LAPACK_IMPL(zhbevd)(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- zhbevx -------------------------------------------------------------------- void LAPACK_DECL(zhbevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhbevx"); LAPACK_IMPL(zhbevx)(JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO); } //-- zhbgst -------------------------------------------------------------------- void LAPACK_DECL(zhbgst)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *BB, const INTEGER *LDBB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhbgst"); LAPACK_IMPL(zhbgst)(VECT, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, X, LDX, WORK, RWORK, INFO); } //-- zhbgv --------------------------------------------------------------------- void LAPACK_DECL(zhbgv)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *BB, const INTEGER *LDBB, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhbgv"); LAPACK_IMPL(zhbgv)(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, RWORK, INFO); } //-- zhbgvd -------------------------------------------------------------------- void LAPACK_DECL(zhbgvd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *BB, const INTEGER *LDBB, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhbgvd"); LAPACK_IMPL(zhbgvd)(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- zhbgvx -------------------------------------------------------------------- void LAPACK_DECL(zhbgvx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *BB, const INTEGER *LDBB, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhbgvx"); LAPACK_IMPL(zhbgvx)(JOBZ, RANGE, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO); } //-- zhbtrd -------------------------------------------------------------------- void LAPACK_DECL(zhbtrd)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhbtrd"); LAPACK_IMPL(zhbtrd)(VECT, UPLO, N, KD, AB, LDAB, D, E, Q, LDQ, WORK, INFO); } //-- zhecon -------------------------------------------------------------------- void LAPACK_DECL(zhecon)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhecon"); LAPACK_IMPL(zhecon)(UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK, INFO); } //-- zheequb ------------------------------------------------------------------- void LAPACK_DECL(zheequb)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, const DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zheequb"); LAPACK_IMPL(zheequb)(UPLO, N, A, LDA, S, SCOND, AMAX, WORK, INFO); } //-- zheev --------------------------------------------------------------------- void LAPACK_DECL(zheev)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *W, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zheev"); LAPACK_IMPL(zheev)(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, INFO); } //-- zheevd -------------------------------------------------------------------- void LAPACK_DECL(zheevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *W, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zheevd"); LAPACK_IMPL(zheevd)(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- zheevr -------------------------------------------------------------------- void LAPACK_DECL(zheevr)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zheevr"); LAPACK_IMPL(zheevr)(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- zheevx -------------------------------------------------------------------- void LAPACK_DECL(zheevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("zheevx"); LAPACK_IMPL(zheevx)(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK, IWORK, IFAIL, INFO); } //-- zhegs2 -------------------------------------------------------------------- void LAPACK_DECL(zhegs2)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhegs2"); LAPACK_IMPL(zhegs2)(ITYPE, UPLO, N, A, LDA, B, LDB, INFO); } //-- zhegst -------------------------------------------------------------------- void LAPACK_DECL(zhegst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhegst"); LAPACK_IMPL(zhegst)(ITYPE, UPLO, N, A, LDA, B, LDB, INFO); } //-- zhegv --------------------------------------------------------------------- void LAPACK_DECL(zhegv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE *W, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhegv"); LAPACK_IMPL(zhegv)(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, RWORK, INFO); } //-- zhegvd -------------------------------------------------------------------- void LAPACK_DECL(zhegvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE *W, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhegvd"); LAPACK_IMPL(zhegvd)(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- zhegvx -------------------------------------------------------------------- void LAPACK_DECL(zhegvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhegvx"); LAPACK_IMPL(zhegvx)(ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK, IWORK, IFAIL, INFO); } //-- zherfs -------------------------------------------------------------------- void LAPACK_DECL(zherfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zherfs"); LAPACK_IMPL(zherfs)(UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- zherfsx ------------------------------------------------------------------- void LAPACK_DECL(zherfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, DOUBLE *S, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zherfsx"); LAPACK_IMPL(zherfsx)(UPLO, EQUED, N, NRHS, A, LDA, AF, LDAF, IPIV, S, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- zhesv --------------------------------------------------------------------- void LAPACK_DECL(zhesv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhesv"); LAPACK_IMPL(zhesv)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO); } //-- zhesvx -------------------------------------------------------------------- void LAPACK_DECL(zhesvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhesvx"); LAPACK_IMPL(zhesvx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, LWORK, RWORK, INFO); } //-- zhesvxx ------------------------------------------------------------------- void LAPACK_DECL(zhesvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, DOUBLE *S, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhesvxx"); LAPACK_IMPL(zhesvxx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, EQUED, S, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- zheswapr ------------------------------------------------------------------ void LAPACK_DECL(zheswapr)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *I1, const INTEGER *I2) { DEBUG_LAPACK_STUB("zheswapr"); LAPACK_IMPL(zheswapr)(UPLO, N, A, LDA, I1, I2); } //-- zhetd2 -------------------------------------------------------------------- void LAPACK_DECL(zhetd2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *TAU, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhetd2"); LAPACK_IMPL(zhetd2)(UPLO, N, A, LDA, D, E, TAU, INFO); } //-- zhetf2 -------------------------------------------------------------------- void LAPACK_DECL(zhetf2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhetf2"); LAPACK_IMPL(zhetf2)(UPLO, N, A, LDA, IPIV, INFO); } //-- zhetrd -------------------------------------------------------------------- void LAPACK_DECL(zhetrd)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhetrd"); LAPACK_IMPL(zhetrd)(UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO); } //-- zhetrf -------------------------------------------------------------------- void LAPACK_DECL(zhetrf)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhetrf"); LAPACK_IMPL(zhetrf)(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- zhetri -------------------------------------------------------------------- void LAPACK_DECL(zhetri)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhetri"); LAPACK_IMPL(zhetri)(UPLO, N, A, LDA, IPIV, WORK, INFO); } //-- zhetri2 ------------------------------------------------------------------- void LAPACK_DECL(zhetri2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhetri2"); LAPACK_IMPL(zhetri2)(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- zhetri2x ------------------------------------------------------------------ void LAPACK_DECL(zhetri2x)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, const INTEGER *NB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhetri2x"); LAPACK_IMPL(zhetri2x)(UPLO, N, A, LDA, IPIV, WORK, NB, INFO); } //-- zhetrs -------------------------------------------------------------------- void LAPACK_DECL(zhetrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhetrs"); LAPACK_IMPL(zhetrs)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO); } //-- zhetrs2 ------------------------------------------------------------------- void LAPACK_DECL(zhetrs2)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhetrs2"); LAPACK_IMPL(zhetrs2)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, INFO); } //-- zhfrk --------------------------------------------------------------------- void LAPACK_DECL(zhfrk)(const char *TRANSR, const char *UPLO, const char *TRANS, const INTEGER *N, const INTEGER *K, const DOUBLE *ALPHA, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *BETA, DOUBLE_COMPLEX *C) { DEBUG_LAPACK_STUB("zhfrk"); LAPACK_IMPL(zhfrk)(TRANSR, UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C); } //-- zhgeqz -------------------------------------------------------------------- void LAPACK_DECL(zhgeqz)(const char *JOB, const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *H, const INTEGER *LDH, DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhgeqz"); LAPACK_IMPL(zhgeqz)(JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT, ALPHA, BETA, Q, LDQ, Z, LDZ, WORK, LWORK, RWORK, INFO); } //-- zhpcon -------------------------------------------------------------------- void LAPACK_DECL(zhpcon)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhpcon"); LAPACK_IMPL(zhpcon)(UPLO, N, AP, IPIV, ANORM, RCOND, WORK, INFO); } //-- zhpev --------------------------------------------------------------------- void LAPACK_DECL(zhpev)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhpev"); LAPACK_IMPL(zhpev)(JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, RWORK, INFO); } //-- zhpevd -------------------------------------------------------------------- void LAPACK_DECL(zhpevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhpevd"); LAPACK_IMPL(zhpevd)(JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- zhpevx -------------------------------------------------------------------- void LAPACK_DECL(zhpevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhpevx"); LAPACK_IMPL(zhpevx)(JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO); } //-- zhpgst -------------------------------------------------------------------- void LAPACK_DECL(zhpgst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *BP, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhpgst"); LAPACK_IMPL(zhpgst)(ITYPE, UPLO, N, AP, BP, INFO); } //-- zhpgv --------------------------------------------------------------------- void LAPACK_DECL(zhpgv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *BP, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhpgv"); LAPACK_IMPL(zhpgv)(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, RWORK, INFO); } //-- zhpgvd -------------------------------------------------------------------- void LAPACK_DECL(zhpgvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *BP, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhpgvd"); LAPACK_IMPL(zhpgvd)(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- zhpgvx -------------------------------------------------------------------- void LAPACK_DECL(zhpgvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *BP, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhpgvx"); LAPACK_IMPL(zhpgvx)(ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO); } //-- zhprfs -------------------------------------------------------------------- void LAPACK_DECL(zhprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *AFP, const INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhprfs"); LAPACK_IMPL(zhprfs)(UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- zhpsv --------------------------------------------------------------------- void LAPACK_DECL(zhpsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *AP, INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhpsv"); LAPACK_IMPL(zhpsv)(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO); } //-- zhpsvx -------------------------------------------------------------------- void LAPACK_DECL(zhpsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *AFP, INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhpsvx"); LAPACK_IMPL(zhpsvx)(FACT, UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- zhptrd -------------------------------------------------------------------- void LAPACK_DECL(zhptrd)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *TAU, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhptrd"); LAPACK_IMPL(zhptrd)(UPLO, N, AP, D, E, TAU, INFO); } //-- zhptrf -------------------------------------------------------------------- void LAPACK_DECL(zhptrf)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhptrf"); LAPACK_IMPL(zhptrf)(UPLO, N, AP, IPIV, INFO); } //-- zhptri -------------------------------------------------------------------- void LAPACK_DECL(zhptri)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhptri"); LAPACK_IMPL(zhptri)(UPLO, N, AP, IPIV, WORK, INFO); } //-- zhptrs -------------------------------------------------------------------- void LAPACK_DECL(zhptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhptrs"); LAPACK_IMPL(zhptrs)(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO); } //-- zhsein -------------------------------------------------------------------- void LAPACK_DECL(zhsein)(const char *SIDE, const char *EIGSRC, const char *INITV, const LOGICAL *SELECT, const INTEGER *N, const DOUBLE_COMPLEX *H, const INTEGER *LDH, DOUBLE_COMPLEX *W, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IFAILL, INTEGER *IFAILR, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhsein"); LAPACK_IMPL(zhsein)(SIDE, EIGSRC, INITV, SELECT, N, H, LDH, W, VL, LDVL, VR, LDVR, MM, M, WORK, RWORK, IFAILL, IFAILR, INFO); } //-- zhseqr -------------------------------------------------------------------- void LAPACK_DECL(zhseqr)(const char *JOB, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *H, const INTEGER *LDH, DOUBLE_COMPLEX *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zhseqr"); LAPACK_IMPL(zhseqr)(JOB, COMPZ, N, ILO, IHI, H, LDH, W, Z, LDZ, WORK, LWORK, INFO); } //-- zla_gbamv ----------------------------------------------------------------- void LAPACK_DECL(zla_gbamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE *ALPHA, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *X, const INTEGER *INCX, const DOUBLE *BETA, DOUBLE *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("zla_gbamv"); LAPACK_IMPL(zla_gbamv)(TRANS, M, N, KL, KU, ALPHA, AB, LDAB, X, INCX, BETA, Y, INCY); } //-- zla_gbrcond_c ------------------------------------------------------------- DOUBLE LAPACK_DECL(zla_gbrcond_c)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const DOUBLE *C, const LOGICAL *CAPPLY, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK) { DEBUG_LAPACK_STUB("zla_gbrcond_c"); return LAPACK_IMPL(zla_gbrcond_c)(TRANS, N, KL, KU, AB, LDAB, AFB, LDAFB, IPIV, C, CAPPLY, INFO, WORK, RWORK); } //-- zla_gbrcond_x ------------------------------------------------------------- DOUBLE LAPACK_DECL(zla_gbrcond_x)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const DOUBLE_COMPLEX *X, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK) { DEBUG_LAPACK_STUB("zla_gbrcond_x"); return LAPACK_IMPL(zla_gbrcond_x)(TRANS, N, KL, KU, AB, LDAB, AFB, LDAFB, IPIV, X, INFO, WORK, RWORK); } //-- zla_gbrfsx_extended ------------------------------------------------------- void LAPACK_DECL(zla_gbrfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const DOUBLE_COMPLEX *RES, const DOUBLE *AYB, const DOUBLE_COMPLEX *DY, const DOUBLE_COMPLEX *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("zla_gbrfsx_extended"); ASSERT(0); /* LAPACK_IMPL(zla_gbrfsx_extended)(PREC_TYPE, TRANS_TYPE, N, KL, KU, NRHS, AB, LDAB, AFB, LDAFB, IPIV, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERR_BNDS_NORM, ERR_BNDS_COMP, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- zla_gbrpvgrw -------------------------------------------------------------- DOUBLE LAPACK_DECL(zla_gbrpvgrw)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NCOLS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB) { DEBUG_LAPACK_STUB("zla_gbrpvgrw"); return LAPACK_IMPL(zla_gbrpvgrw)(N, KL, KU, NCOLS, AB, LDAB, AFB, LDAFB); } //-- zla_geamv ----------------------------------------------------------------- void LAPACK_DECL(zla_geamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const DOUBLE *ALPHA, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *X, const INTEGER *INCX, const DOUBLE *BETA, DOUBLE *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("zla_geamv"); LAPACK_IMPL(zla_geamv)(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY); } //-- zla_gercond_c ------------------------------------------------------------- DOUBLE LAPACK_DECL(zla_gercond_c)(const char *TRANS, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *C, const LOGICAL *CAPPLY, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK) { DEBUG_LAPACK_STUB("zla_gercond_c"); return LAPACK_IMPL(zla_gercond_c)(TRANS, N, A, LDA, AF, LDAF, IPIV, C, CAPPLY, INFO, WORK, RWORK); } //-- zla_gercond_x ------------------------------------------------------------- DOUBLE LAPACK_DECL(zla_gercond_x)(const char *TRANS, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE_COMPLEX *X, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK) { DEBUG_LAPACK_STUB("zla_gercond_x"); return LAPACK_IMPL(zla_gercond_x)(TRANS, N, A, LDA, AF, LDAF, IPIV, X, INFO, WORK, RWORK); } //-- zla_gerfsx_extended ------------------------------------------------------- void LAPACK_DECL(zla_gerfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, const DOUBLE *ERRS_N, const DOUBLE *ERRS_C, const DOUBLE_COMPLEX *RES, const DOUBLE *AYB, const DOUBLE_COMPLEX *DY, const DOUBLE_COMPLEX *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("zla_gerfsx_extended"); ASSERT(0); /* LAPACK_IMPL(zla_gerfsx_extended)(PREC_TYPE, TRANS_TYPE, N, NRHS, A, LDA, AF, LDAF, IPIV, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERRS_N, ERRS_C, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- zla_heamv ----------------------------------------------------------------- void LAPACK_DECL(zla_heamv)(const INTEGER *UPLO, const INTEGER *N, const DOUBLE *ALPHA, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *X, const INTEGER *INCX, const DOUBLE *BETA, DOUBLE *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("zla_heamv"); LAPACK_IMPL(zla_heamv)(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY); } //-- zla_hercond_c ------------------------------------------------------------- DOUBLE LAPACK_DECL(zla_hercond_c)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *C, const LOGICAL *CAPPLY, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK) { DEBUG_LAPACK_STUB("zla_hercond_c"); return LAPACK_IMPL(zla_hercond_c)(UPLO, N, A, LDA, AF, LDAF, IPIV, C, CAPPLY, INFO, WORK, RWORK); } //-- zla_hercond_x ------------------------------------------------------------- DOUBLE LAPACK_DECL(zla_hercond_x)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE_COMPLEX *X, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK) { DEBUG_LAPACK_STUB("zla_hercond_x"); return LAPACK_IMPL(zla_hercond_x)(UPLO, N, A, LDA, AF, LDAF, IPIV, X, INFO, WORK, RWORK); } //-- zla_herfsx_extended ------------------------------------------------------- void LAPACK_DECL(zla_herfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const DOUBLE_COMPLEX *RES, const DOUBLE *AYB, const DOUBLE_COMPLEX *DY, const DOUBLE_COMPLEX *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("zla_herfsx_extended"); ASSERT(0); /* LAPACK_IMPL(zla_herfsx_extended)(PREC_TYPE, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERR_BNDS_NORM, ERR_BNDS_COMP, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- zla_herpvgrw -------------------------------------------------------------- DOUBLE LAPACK_DECL(zla_herpvgrw)(const char *UPLO, const INTEGER *N, const INTEGER *INFO, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *WORK) { DEBUG_LAPACK_STUB("zla_herpvgrw"); return LAPACK_IMPL(zla_herpvgrw)(UPLO, N, INFO, A, LDA, AF, LDAF, IPIV, WORK); } //-- zla_lin_berr -------------------------------------------------------------- void LAPACK_DECL(zla_lin_berr)(const INTEGER *N, const INTEGER *NZ, const INTEGER *NRHS, const DOUBLE_COMPLEX *RES, const DOUBLE *AYB, DOUBLE *BERR) { DEBUG_LAPACK_STUB("zla_lin_berr"); LAPACK_IMPL(zla_lin_berr)(N, NZ, NRHS, RES, AYB, BERR); } //-- zla_porcond_c ------------------------------------------------------------- DOUBLE LAPACK_DECL(zla_porcond_c)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const DOUBLE *C, const LOGICAL *CAPPLY, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK) { DEBUG_LAPACK_STUB("zla_porcond_c"); return LAPACK_IMPL(zla_porcond_c)(UPLO, N, A, LDA, AF, LDAF, C, CAPPLY, INFO, WORK, RWORK); } //-- zla_porcond_x ------------------------------------------------------------- DOUBLE LAPACK_DECL(zla_porcond_x)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const DOUBLE_COMPLEX *X, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK) { DEBUG_LAPACK_STUB("zla_porcond_x"); return LAPACK_IMPL(zla_porcond_x)(UPLO, N, A, LDA, AF, LDAF, X, INFO, WORK, RWORK); } //-- zla_porfsx_extended ------------------------------------------------------- void LAPACK_DECL(zla_porfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const DOUBLE_COMPLEX *RES, const DOUBLE *AYB, const DOUBLE_COMPLEX *DY, const DOUBLE_COMPLEX *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("zla_porfsx_extended"); ASSERT(0); /* LAPACK_IMPL(zla_porfsx_extended)(PREC_TYPE, UPLO, N, NRHS, A, LDA, AF, LDAF, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERR_BNDS_NORM, ERR_BNDS_COMP, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- zla_porpvgrw -------------------------------------------------------------- DOUBLE LAPACK_DECL(zla_porpvgrw)(const char *UPLO, const INTEGER *NCOLS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const DOUBLE *WORK) { DEBUG_LAPACK_STUB("zla_porpvgrw"); return LAPACK_IMPL(zla_porpvgrw)(UPLO, NCOLS, A, LDA, AF, LDAF, WORK); } //-- zla_rpvgrw ---------------------------------------------------------------- DOUBLE LAPACK_DECL(zla_rpvgrw)(const INTEGER *N, const INTEGER *NCOLS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF) { DEBUG_LAPACK_STUB("zla_rpvgrw"); return LAPACK_IMPL(zla_rpvgrw)(N, NCOLS, A, LDA, AF, LDAF); } //-- zla_syamv ----------------------------------------------------------------- void LAPACK_DECL(zla_syamv)(const INTEGER *UPLO, const INTEGER *N, const DOUBLE *ALPHA, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *X, const INTEGER *INCX, const DOUBLE *BETA, DOUBLE *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("zla_syamv"); LAPACK_IMPL(zla_syamv)(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY); } //-- zla_syrcond_c ------------------------------------------------------------- DOUBLE LAPACK_DECL(zla_syrcond_c)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *C, const LOGICAL *CAPPLY, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK) { DEBUG_LAPACK_STUB("zla_syrcond_c"); return LAPACK_IMPL(zla_syrcond_c)(UPLO, N, A, LDA, AF, LDAF, IPIV, C, CAPPLY, INFO, WORK, RWORK); } //-- zla_syrcond_x ------------------------------------------------------------- DOUBLE LAPACK_DECL(zla_syrcond_x)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE_COMPLEX *X, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK) { DEBUG_LAPACK_STUB("zla_syrcond_x"); return LAPACK_IMPL(zla_syrcond_x)(UPLO, N, A, LDA, AF, LDAF, IPIV, X, INFO, WORK, RWORK); } //-- zla_syrfsx_extended ------------------------------------------------------- void LAPACK_DECL(zla_syrfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const DOUBLE_COMPLEX *RES, const DOUBLE *AYB, const DOUBLE_COMPLEX *DY, const DOUBLE_COMPLEX *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO) { DEBUG_LAPACK_STUB("zla_syrfsx_extended"); ASSERT(0); /* LAPACK_IMPL(zla_syrfsx_extended)(PREC_TYPE, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, COLEQU, C, B, LDB, Y, LDY, BERR_OUT, N_NORMS, ERR_BNDS_NORM, ERR_BNDS_COMP, RES, AYB, DY, Y_TAIL, RCOND, ITHRESH, RTHRESH, DZ_UB, IGNORE_CWISE, INFO); */ } //-- zla_syrpvgrw -------------------------------------------------------------- DOUBLE LAPACK_DECL(zla_syrpvgrw)(const char *UPLO, const INTEGER *N, const INTEGER *INFO, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *WORK) { DEBUG_LAPACK_STUB("zla_syrpvgrw"); return LAPACK_IMPL(zla_syrpvgrw)(UPLO, N, INFO, A, LDA, AF, LDAF, IPIV, WORK); } //-- zla_wwaddw ---------------------------------------------------------------- void LAPACK_DECL(zla_wwaddw)(const INTEGER *N, DOUBLE_COMPLEX *X, DOUBLE_COMPLEX *Y, const DOUBLE_COMPLEX *W) { DEBUG_LAPACK_STUB("zla_wwaddw"); LAPACK_IMPL(zla_wwaddw)(N, X, Y, W); } //-- zlabrd -------------------------------------------------------------------- void LAPACK_DECL(zlabrd)(const INTEGER *M, const INTEGER *N, const INTEGER *NB, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *TAUQ, DOUBLE_COMPLEX *TAUP, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE_COMPLEX *Y, const INTEGER *LDY) { DEBUG_LAPACK_STUB("zlabrd"); LAPACK_IMPL(zlabrd)(M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y, LDY); } //-- zlacgv -------------------------------------------------------------------- void LAPACK_DECL(zlacgv)(const INTEGER *N, DOUBLE_COMPLEX *X, const INTEGER *INCX) { DEBUG_LAPACK_STUB("zlacgv"); LAPACK_IMPL(zlacgv)(N, X, INCX); } //-- zlacn2 -------------------------------------------------------------------- void LAPACK_DECL(zlacn2)(const INTEGER *N, DOUBLE_COMPLEX *V, DOUBLE_COMPLEX *X, DOUBLE *EST, INTEGER *KASE, INTEGER *ISAVE) { DEBUG_LAPACK_STUB("zlacn2"); LAPACK_IMPL(zlacn2)(N, V, X, EST, KASE, ISAVE); } //-- zlacon -------------------------------------------------------------------- void LAPACK_DECL(zlacon)(const INTEGER *N, DOUBLE_COMPLEX *V, DOUBLE_COMPLEX *X, DOUBLE *EST, INTEGER *KASE) { DEBUG_LAPACK_STUB("zlacon"); LAPACK_IMPL(zlacon)(N, V, X, EST, KASE); } //-- zlacp2 -------------------------------------------------------------------- void LAPACK_DECL(zlacp2)(const char *UPLO, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("zlacp2"); LAPACK_IMPL(zlacp2)(UPLO, M, N, A, LDA, B, LDB); } //-- zlacpy -------------------------------------------------------------------- void LAPACK_DECL(zlacpy)(const char *UPLO, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("zlacpy"); LAPACK_IMPL(zlacpy)(UPLO, M, N, A, LDA, B, LDB); } //-- zlacrm -------------------------------------------------------------------- void LAPACK_DECL(zlacrm)(const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, const DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE *RWORK) { DEBUG_LAPACK_STUB("zlacrm"); LAPACK_IMPL(zlacrm)(M, N, A, LDA, B, LDB, C, LDC, RWORK); } //-- zlacrt -------------------------------------------------------------------- void LAPACK_DECL(zlacrt)(const INTEGER *N, DOUBLE_COMPLEX *CX, const INTEGER *INCX, DOUBLE_COMPLEX *CY, const INTEGER *INCY, const DOUBLE_COMPLEX *C, const DOUBLE_COMPLEX *S) { DEBUG_LAPACK_STUB("zlacrt"); LAPACK_IMPL(zlacrt)(N, CX, INCX, CY, INCY, C, S); } //-- zladiv -------------------------------------------------------------------- UNKNOWN LAPACK_DECL(zladiv)(const DOUBLE_COMPLEX *X, const DOUBLE_COMPLEX *Y) { DEBUG_LAPACK_STUB("zladiv"); return LAPACK_IMPL(zladiv)(X, Y); } //-- zlaed0 -------------------------------------------------------------------- void LAPACK_DECL(zlaed0)(const INTEGER *QSIZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *QSTORE, const INTEGER *LDQS, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlaed0"); LAPACK_IMPL(zlaed0)(QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS, RWORK, IWORK, INFO); } //-- zlaed7 -------------------------------------------------------------------- void LAPACK_DECL(zlaed7)(const INTEGER *N, const INTEGER *CUTPNT, const INTEGER *QSIZ, const INTEGER *TLVLS, const INTEGER *CURLVL, const INTEGER *CURPBM, DOUBLE *D, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, const DOUBLE *RHO, INTEGER *INDXQ, DOUBLE *QSTORE, INTEGER *QPTR, const INTEGER *PRMPTR, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const DOUBLE *GIVNUM, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlaed7"); LAPACK_IMPL(zlaed7)(N, CUTPNT, QSIZ, TLVLS, CURLVL, CURPBM, D, Q, LDQ, RHO, INDXQ, QSTORE, QPTR, PRMPTR, PERM, GIVPTR, GIVCOL, GIVNUM, WORK, RWORK, IWORK, INFO); } //-- zlaed8 -------------------------------------------------------------------- void LAPACK_DECL(zlaed8)(INTEGER *K, const INTEGER *N, const INTEGER *QSIZ, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE *D, DOUBLE *RHO, const INTEGER *CUTPNT, const DOUBLE *Z, DOUBLE *DLAMDA, DOUBLE_COMPLEX *Q2, const INTEGER *LDQ2, DOUBLE *W, INTEGER *INDXP, INTEGER *INDX, const INTEGER *INDXQ, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, DOUBLE *GIVNUM, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlaed8"); LAPACK_IMPL(zlaed8)(K, N, QSIZ, Q, LDQ, D, RHO, CUTPNT, Z, DLAMDA, Q2, LDQ2, W, INDXP, INDX, INDXQ, PERM, GIVPTR, GIVCOL, GIVNUM, INFO); } //-- zlaein -------------------------------------------------------------------- void LAPACK_DECL(zlaein)(const LOGICAL *RIGHTV, const LOGICAL *NOINIT, const INTEGER *N, const DOUBLE_COMPLEX *H, const INTEGER *LDH, const DOUBLE_COMPLEX *W, DOUBLE_COMPLEX *V, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE *RWORK, const DOUBLE *EPS3, const DOUBLE *SMLNUM, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlaein"); LAPACK_IMPL(zlaein)(RIGHTV, NOINIT, N, H, LDH, W, V, B, LDB, RWORK, EPS3, SMLNUM, INFO); } //-- zlaesy -------------------------------------------------------------------- void LAPACK_DECL(zlaesy)(const DOUBLE_COMPLEX *A, const DOUBLE_COMPLEX *B, const DOUBLE_COMPLEX *C, DOUBLE_COMPLEX *RT1, DOUBLE_COMPLEX *RT2, DOUBLE_COMPLEX *EVSCAL, DOUBLE_COMPLEX *CS1, DOUBLE_COMPLEX *SN1) { DEBUG_LAPACK_STUB("zlaesy"); LAPACK_IMPL(zlaesy)(A, B, C, RT1, RT2, EVSCAL, CS1, SN1); } //-- zlaev2 -------------------------------------------------------------------- void LAPACK_DECL(zlaev2)(const DOUBLE_COMPLEX *A, const DOUBLE_COMPLEX *B, const DOUBLE_COMPLEX *C, DOUBLE *RT1, DOUBLE *RT2, DOUBLE *CS1, DOUBLE_COMPLEX *SN1) { DEBUG_LAPACK_STUB("zlaev2"); LAPACK_IMPL(zlaev2)(A, B, C, RT1, RT2, CS1, SN1); } //-- zlag2c -------------------------------------------------------------------- void LAPACK_DECL(zlag2c)(const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *SA, const INTEGER *LDSA, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlag2c"); LAPACK_IMPL(zlag2c)(M, N, A, LDA, SA, LDSA, INFO); } //-- zlags2 -------------------------------------------------------------------- void LAPACK_DECL(zlags2)(const LOGICAL *UPPER, const DOUBLE *A1, const DOUBLE_COMPLEX *A2, const DOUBLE *A3, const DOUBLE *B1, const DOUBLE_COMPLEX *B2, const DOUBLE *B3, DOUBLE *CSU, DOUBLE_COMPLEX *SNU, DOUBLE *CSV, DOUBLE_COMPLEX *SNV, DOUBLE *CSQ, DOUBLE_COMPLEX *SNQ) { DEBUG_LAPACK_STUB("zlags2"); LAPACK_IMPL(zlags2)(UPPER, A1, A2, A3, B1, B2, B3, CSU, SNU, CSV, SNV, CSQ, SNQ); } //-- zlagtm -------------------------------------------------------------------- void LAPACK_DECL(zlagtm)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *ALPHA, const DOUBLE_COMPLEX *DL, const DOUBLE_COMPLEX *D, const DOUBLE_COMPLEX *DU, const DOUBLE_COMPLEX *X, const INTEGER *LDX, const DOUBLE *BETA, DOUBLE_COMPLEX *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("zlagtm"); LAPACK_IMPL(zlagtm)(TRANS, N, NRHS, ALPHA, DL, D, DU, X, LDX, BETA, B, LDB); } //-- zlahef -------------------------------------------------------------------- void LAPACK_DECL(zlahef)(const char *UPLO, const INTEGER *N, const INTEGER *NB, INTEGER *KB, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE_COMPLEX *W, const INTEGER *LDW, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlahef"); LAPACK_IMPL(zlahef)(UPLO, N, NB, KB, A, LDA, IPIV, W, LDW, INFO); } //-- zlahqr -------------------------------------------------------------------- void LAPACK_DECL(zlahqr)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *H, const INTEGER *LDH, DOUBLE_COMPLEX *W, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlahqr"); LAPACK_IMPL(zlahqr)(WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ, IHIZ, Z, LDZ, INFO); } //-- zlahr2 -------------------------------------------------------------------- void LAPACK_DECL(zlahr2)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *Y, const INTEGER *LDY) { DEBUG_LAPACK_STUB("zlahr2"); LAPACK_IMPL(zlahr2)(N, K, NB, A, LDA, TAU, T, LDT, Y, LDY); } //-- zlahrd -------------------------------------------------------------------- void LAPACK_DECL(zlahrd)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *Y, const INTEGER *LDY) { DEBUG_LAPACK_STUB("zlahrd"); LAPACK_IMPL(zlahrd)(N, K, NB, A, LDA, TAU, T, LDT, Y, LDY); } //-- zlaic1 -------------------------------------------------------------------- void LAPACK_DECL(zlaic1)(const INTEGER *JOB, const INTEGER *J, const DOUBLE_COMPLEX *X, const DOUBLE *SEST, const DOUBLE_COMPLEX *W, const DOUBLE_COMPLEX *GAMMA, DOUBLE *SESTPR, DOUBLE_COMPLEX *S, DOUBLE_COMPLEX *C) { DEBUG_LAPACK_STUB("zlaic1"); LAPACK_IMPL(zlaic1)(JOB, J, X, SEST, W, GAMMA, SESTPR, S, C); } //-- zlals0 -------------------------------------------------------------------- void LAPACK_DECL(zlals0)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, const INTEGER *NRHS, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *BX, const INTEGER *LDBX, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const DOUBLE *GIVNUM, const INTEGER *LDGNUM, const DOUBLE *POLES, const DOUBLE *DIFL, const DOUBLE *DIFR, const DOUBLE *Z, const INTEGER *K, const DOUBLE *C, const DOUBLE *S, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlals0"); LAPACK_IMPL(zlals0)(ICOMPQ, NL, NR, SQRE, NRHS, B, LDB, BX, LDBX, PERM, GIVPTR, GIVCOL, LDGCOL, GIVNUM, LDGNUM, POLES, DIFL, DIFR, Z, K, C, S, RWORK, INFO); } //-- zlalsa -------------------------------------------------------------------- void LAPACK_DECL(zlalsa)(const INTEGER *ICOMPQ, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *BX, const INTEGER *LDBX, const DOUBLE *U, const INTEGER *LDU, const DOUBLE *VT, const INTEGER *K, const DOUBLE *DIFL, const DOUBLE *DIFR, const DOUBLE *Z, const DOUBLE *POLES, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const INTEGER *PERM, const DOUBLE *GIVNUM, const DOUBLE *C, const DOUBLE *S, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlalsa"); LAPACK_IMPL(zlalsa)(ICOMPQ, SMLSIZ, N, NRHS, B, LDB, BX, LDBX, U, LDU, VT, K, DIFL, DIFR, Z, POLES, GIVPTR, GIVCOL, LDGCOL, PERM, GIVNUM, C, S, RWORK, IWORK, INFO); } //-- zlalsd -------------------------------------------------------------------- void LAPACK_DECL(zlalsd)(const char *UPLO, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlalsd"); LAPACK_IMPL(zlalsd)(UPLO, SMLSIZ, N, NRHS, D, E, B, LDB, RCOND, RANK, WORK, RWORK, IWORK, INFO); } //-- zlangb -------------------------------------------------------------------- DOUBLE LAPACK_DECL(zlangb)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *WORK) { DEBUG_LAPACK_STUB("zlangb"); return LAPACK_IMPL(zlangb)(NORM, N, KL, KU, AB, LDAB, WORK); } //-- zlange -------------------------------------------------------------------- DOUBLE LAPACK_DECL(zlange)(const char *NORM, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *WORK) { DEBUG_LAPACK_STUB("zlange"); return LAPACK_IMPL(zlange)(NORM, M, N, A, LDA, WORK); } //-- zlangt -------------------------------------------------------------------- DOUBLE LAPACK_DECL(zlangt)(const char *NORM, const INTEGER *N, const DOUBLE_COMPLEX *DL, const DOUBLE_COMPLEX *D, const DOUBLE_COMPLEX *DU) { DEBUG_LAPACK_STUB("zlangt"); return LAPACK_IMPL(zlangt)(NORM, N, DL, D, DU); } //-- zlanhb -------------------------------------------------------------------- DOUBLE LAPACK_DECL(zlanhb)(const char *NORM, const char *UPLO, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *WORK) { DEBUG_LAPACK_STUB("zlanhb"); return LAPACK_IMPL(zlanhb)(NORM, UPLO, N, K, AB, LDAB, WORK); } //-- zlanhe -------------------------------------------------------------------- DOUBLE LAPACK_DECL(zlanhe)(const char *NORM, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *WORK) { DEBUG_LAPACK_STUB("zlanhe"); return LAPACK_IMPL(zlanhe)(NORM, UPLO, N, A, LDA, WORK); } //-- zlanhf -------------------------------------------------------------------- DOUBLE LAPACK_DECL(zlanhf)(const char *NORM, const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, DOUBLE *WORK) { DEBUG_LAPACK_STUB("zlanhf"); return LAPACK_IMPL(zlanhf)(NORM, TRANSR, UPLO, N, A, WORK); } //-- zlanhp -------------------------------------------------------------------- DOUBLE LAPACK_DECL(zlanhp)(const char *NORM, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE *WORK) { DEBUG_LAPACK_STUB("zlanhp"); return LAPACK_IMPL(zlanhp)(NORM, UPLO, N, AP, WORK); } //-- zlanhs -------------------------------------------------------------------- DOUBLE LAPACK_DECL(zlanhs)(const char *NORM, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *WORK) { DEBUG_LAPACK_STUB("zlanhs"); return LAPACK_IMPL(zlanhs)(NORM, N, A, LDA, WORK); } //-- zlanht -------------------------------------------------------------------- DOUBLE LAPACK_DECL(zlanht)(const char *NORM, const INTEGER *N, const DOUBLE *D, const DOUBLE_COMPLEX *E) { DEBUG_LAPACK_STUB("zlanht"); return LAPACK_IMPL(zlanht)(NORM, N, D, E); } //-- zlansb -------------------------------------------------------------------- DOUBLE LAPACK_DECL(zlansb)(const char *NORM, const char *UPLO, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *WORK) { DEBUG_LAPACK_STUB("zlansb"); return LAPACK_IMPL(zlansb)(NORM, UPLO, N, K, AB, LDAB, WORK); } //-- zlansp -------------------------------------------------------------------- DOUBLE LAPACK_DECL(zlansp)(const char *NORM, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE *WORK) { DEBUG_LAPACK_STUB("zlansp"); return LAPACK_IMPL(zlansp)(NORM, UPLO, N, AP, WORK); } //-- zlansy -------------------------------------------------------------------- DOUBLE LAPACK_DECL(zlansy)(const char *NORM, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *WORK) { DEBUG_LAPACK_STUB("zlansy"); return LAPACK_IMPL(zlansy)(NORM, UPLO, N, A, LDA, WORK); } //-- zlantb -------------------------------------------------------------------- DOUBLE LAPACK_DECL(zlantb)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *WORK) { DEBUG_LAPACK_STUB("zlantb"); return LAPACK_IMPL(zlantb)(NORM, UPLO, DIAG, N, K, AB, LDAB, WORK); } //-- zlantp -------------------------------------------------------------------- DOUBLE LAPACK_DECL(zlantp)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE *WORK) { DEBUG_LAPACK_STUB("zlantp"); return LAPACK_IMPL(zlantp)(NORM, UPLO, DIAG, N, AP, WORK); } //-- zlantr -------------------------------------------------------------------- DOUBLE LAPACK_DECL(zlantr)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *WORK) { DEBUG_LAPACK_STUB("zlantr"); return LAPACK_IMPL(zlantr)(NORM, UPLO, DIAG, M, N, A, LDA, WORK); } //-- zlapll -------------------------------------------------------------------- void LAPACK_DECL(zlapll)(const INTEGER *N, DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE_COMPLEX *Y, const INTEGER *INCY, DOUBLE *SSMIN) { DEBUG_LAPACK_STUB("zlapll"); LAPACK_IMPL(zlapll)(N, X, INCX, Y, INCY, SSMIN); } //-- zlapmr -------------------------------------------------------------------- void LAPACK_DECL(zlapmr)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *X, const INTEGER *LDX, INTEGER *K) { DEBUG_LAPACK_STUB("zlapmr"); LAPACK_IMPL(zlapmr)(FORWRD, M, N, X, LDX, K); } //-- zlapmt -------------------------------------------------------------------- void LAPACK_DECL(zlapmt)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *X, const INTEGER *LDX, INTEGER *K) { DEBUG_LAPACK_STUB("zlapmt"); LAPACK_IMPL(zlapmt)(FORWRD, M, N, X, LDX, K); } //-- zlaqgb -------------------------------------------------------------------- void LAPACK_DECL(zlaqgb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE *R, const DOUBLE *C, const DOUBLE *ROWCND, const DOUBLE *COLCND, const DOUBLE *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("zlaqgb"); LAPACK_IMPL(zlaqgb)(M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND, AMAX, EQUED); } //-- zlaqge -------------------------------------------------------------------- void LAPACK_DECL(zlaqge)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *R, const DOUBLE *C, const DOUBLE *ROWCND, const DOUBLE *COLCND, const DOUBLE *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("zlaqge"); LAPACK_IMPL(zlaqge)(M, N, A, LDA, R, C, ROWCND, COLCND, AMAX, EQUED); } //-- zlaqhb -------------------------------------------------------------------- void LAPACK_DECL(zlaqhb)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("zlaqhb"); LAPACK_IMPL(zlaqhb)(UPLO, N, KD, AB, LDAB, S, SCOND, AMAX, EQUED); } //-- zlaqhe -------------------------------------------------------------------- void LAPACK_DECL(zlaqhe)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("zlaqhe"); LAPACK_IMPL(zlaqhe)(UPLO, N, A, LDA, S, SCOND, AMAX, EQUED); } //-- zlaqhp -------------------------------------------------------------------- void LAPACK_DECL(zlaqhp)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("zlaqhp"); LAPACK_IMPL(zlaqhp)(UPLO, N, AP, S, SCOND, AMAX, EQUED); } //-- zlaqp2 -------------------------------------------------------------------- void LAPACK_DECL(zlaqp2)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE_COMPLEX *TAU, DOUBLE *VN1, DOUBLE *VN2, DOUBLE_COMPLEX *WORK) { DEBUG_LAPACK_STUB("zlaqp2"); LAPACK_IMPL(zlaqp2)(M, N, OFFSET, A, LDA, JPVT, TAU, VN1, VN2, WORK); } //-- zlaqps -------------------------------------------------------------------- void LAPACK_DECL(zlaqps)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, const INTEGER *NB, INTEGER *KB, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE_COMPLEX *TAU, DOUBLE *VN1, DOUBLE *VN2, DOUBLE_COMPLEX *AUXV, DOUBLE_COMPLEX *F, const INTEGER *LDF) { DEBUG_LAPACK_STUB("zlaqps"); LAPACK_IMPL(zlaqps)(M, N, OFFSET, NB, KB, A, LDA, JPVT, TAU, VN1, VN2, AUXV, F, LDF); } //-- zlaqr0 -------------------------------------------------------------------- void LAPACK_DECL(zlaqr0)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *H, const INTEGER *LDH, DOUBLE_COMPLEX *W, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlaqr0"); LAPACK_IMPL(zlaqr0)(WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ, IHIZ, Z, LDZ, WORK, LWORK, INFO); } //-- zlaqr1 -------------------------------------------------------------------- void LAPACK_DECL(zlaqr1)(const INTEGER *N, const DOUBLE_COMPLEX *H, const INTEGER *LDH, const DOUBLE_COMPLEX *S1, const DOUBLE_COMPLEX *S2, DOUBLE_COMPLEX *V) { DEBUG_LAPACK_STUB("zlaqr1"); LAPACK_IMPL(zlaqr1)(N, H, LDH, S1, S2, V); } //-- zlaqr2 -------------------------------------------------------------------- void LAPACK_DECL(zlaqr2)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, DOUBLE_COMPLEX *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, DOUBLE_COMPLEX *SH, DOUBLE_COMPLEX *V, const INTEGER *LDV, const INTEGER *NH, DOUBLE_COMPLEX *T, const INTEGER *LDT, const INTEGER *NV, DOUBLE_COMPLEX *WV, const INTEGER *LDWV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK) { DEBUG_LAPACK_STUB("zlaqr2"); LAPACK_IMPL(zlaqr2)(WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT, NV, WV, LDWV, WORK, LWORK); } //-- zlaqr3 -------------------------------------------------------------------- void LAPACK_DECL(zlaqr3)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, DOUBLE_COMPLEX *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, DOUBLE_COMPLEX *SH, DOUBLE_COMPLEX *V, const INTEGER *LDV, const INTEGER *NH, DOUBLE_COMPLEX *T, const INTEGER *LDT, const INTEGER *NV, DOUBLE_COMPLEX *WV, const INTEGER *LDWV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK) { DEBUG_LAPACK_STUB("zlaqr3"); LAPACK_IMPL(zlaqr3)(WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT, NV, WV, LDWV, WORK, LWORK); } //-- zlaqr4 -------------------------------------------------------------------- void LAPACK_DECL(zlaqr4)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *H, const INTEGER *LDH, DOUBLE_COMPLEX *W, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlaqr4"); LAPACK_IMPL(zlaqr4)(WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ, IHIZ, Z, LDZ, WORK, LWORK, INFO); } //-- zlaqr5 -------------------------------------------------------------------- void LAPACK_DECL(zlaqr5)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *KACC22, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NSHFTS, DOUBLE_COMPLEX *S, DOUBLE_COMPLEX *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *V, const INTEGER *LDV, DOUBLE_COMPLEX *U, const INTEGER *LDU, const INTEGER *NV, DOUBLE_COMPLEX *WV, const INTEGER *LDWV, const INTEGER *NH, DOUBLE_COMPLEX *WH, const INTEGER *LDWH) { DEBUG_LAPACK_STUB("zlaqr5"); LAPACK_IMPL(zlaqr5)(WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S, H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV, WV, LDWV, NH, WH, LDWH); } //-- zlaqsb -------------------------------------------------------------------- void LAPACK_DECL(zlaqsb)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("zlaqsb"); LAPACK_IMPL(zlaqsb)(UPLO, N, KD, AB, LDAB, S, SCOND, AMAX, EQUED); } //-- zlaqsp -------------------------------------------------------------------- void LAPACK_DECL(zlaqsp)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("zlaqsp"); LAPACK_IMPL(zlaqsp)(UPLO, N, AP, S, SCOND, AMAX, EQUED); } //-- zlaqsy -------------------------------------------------------------------- void LAPACK_DECL(zlaqsy)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED) { DEBUG_LAPACK_STUB("zlaqsy"); LAPACK_IMPL(zlaqsy)(UPLO, N, A, LDA, S, SCOND, AMAX, EQUED); } //-- zlar1v -------------------------------------------------------------------- void LAPACK_DECL(zlar1v)(const INTEGER *N, const INTEGER *B1, const INTEGER *BN, const DOUBLE *LAMBDA, const DOUBLE *D, const DOUBLE *L, const DOUBLE *LD, const DOUBLE *LLD, const DOUBLE *PIVMIN, const DOUBLE *GAPTOL, DOUBLE_COMPLEX *Z, const LOGICAL *WANTNC, INTEGER *NEGCNT, DOUBLE *ZTZ, DOUBLE *MINGMA, INTEGER *R, INTEGER *ISUPPZ, DOUBLE *NRMINV, DOUBLE *RESID, DOUBLE *RQCORR, DOUBLE *WORK) { DEBUG_LAPACK_STUB("zlar1v"); LAPACK_IMPL(zlar1v)(N, B1, BN, LAMBDA, D, L, LD, LLD, PIVMIN, GAPTOL, Z, WANTNC, NEGCNT, ZTZ, MINGMA, R, ISUPPZ, NRMINV, RESID, RQCORR, WORK); } //-- zlar2v -------------------------------------------------------------------- void LAPACK_DECL(zlar2v)(const INTEGER *N, DOUBLE_COMPLEX *X, DOUBLE_COMPLEX *Y, DOUBLE_COMPLEX *Z, const INTEGER *INCX, const DOUBLE *C, const DOUBLE_COMPLEX *S, const INTEGER *INCC) { DEBUG_LAPACK_STUB("zlar2v"); LAPACK_IMPL(zlar2v)(N, X, Y, Z, INCX, C, S, INCC); } //-- zlarcm -------------------------------------------------------------------- void LAPACK_DECL(zlarcm)(const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE *RWORK) { DEBUG_LAPACK_STUB("zlarcm"); LAPACK_IMPL(zlarcm)(M, N, A, LDA, B, LDB, C, LDC, RWORK); } //-- zlarf --------------------------------------------------------------------- void LAPACK_DECL(zlarf)(const char *SIDE, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *V, const INTEGER *INCV, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK) { DEBUG_LAPACK_STUB("zlarf"); LAPACK_IMPL(zlarf)(SIDE, M, N, V, INCV, TAU, C, LDC, WORK); } //-- zlarfb -------------------------------------------------------------------- void LAPACK_DECL(zlarfb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *V, const INTEGER *LDV, const DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LDWORK) { DEBUG_LAPACK_STUB("zlarfb"); LAPACK_IMPL(zlarfb)(SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV, T, LDT, C, LDC, WORK, LDWORK); } //-- zlarfg -------------------------------------------------------------------- void LAPACK_DECL(zlarfg)(const INTEGER *N, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE_COMPLEX *TAU) { DEBUG_LAPACK_STUB("zlarfg"); LAPACK_IMPL(zlarfg)(N, ALPHA, X, INCX, TAU); } //-- zlarfgp ------------------------------------------------------------------- void LAPACK_DECL(zlarfgp)(const INTEGER *N, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE_COMPLEX *TAU) { DEBUG_LAPACK_STUB("zlarfgp"); LAPACK_IMPL(zlarfgp)(N, ALPHA, X, INCX, TAU); } //-- zlarft -------------------------------------------------------------------- void LAPACK_DECL(zlarft)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *V, const INTEGER *LDV, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *T, const INTEGER *LDT) { DEBUG_LAPACK_STUB("zlarft"); LAPACK_IMPL(zlarft)(DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT); } //-- zlarfx -------------------------------------------------------------------- void LAPACK_DECL(zlarfx)(const char *SIDE, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *V, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK) { DEBUG_LAPACK_STUB("zlarfx"); LAPACK_IMPL(zlarfx)(SIDE, M, N, V, TAU, C, LDC, WORK); } //-- zlargv -------------------------------------------------------------------- void LAPACK_DECL(zlargv)(const INTEGER *N, DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE_COMPLEX *Y, const INTEGER *INCY, DOUBLE *C, const INTEGER *INCC) { DEBUG_LAPACK_STUB("zlargv"); LAPACK_IMPL(zlargv)(N, X, INCX, Y, INCY, C, INCC); } //-- zlarnv -------------------------------------------------------------------- void LAPACK_DECL(zlarnv)(const INTEGER *IDIST, INTEGER *ISEED, const INTEGER *N, DOUBLE_COMPLEX *X) { DEBUG_LAPACK_STUB("zlarnv"); LAPACK_IMPL(zlarnv)(IDIST, ISEED, N, X); } //-- zlarrv -------------------------------------------------------------------- void LAPACK_DECL(zlarrv)(const INTEGER *N, const DOUBLE *VL, const DOUBLE *VU, DOUBLE *D, DOUBLE *L, const DOUBLE *PIVMIN, const INTEGER *ISPLIT, const INTEGER *M, const INTEGER *DOL, const INTEGER *DOU, const DOUBLE *MINRGP, const DOUBLE *RTOL1, const DOUBLE *RTOL2, DOUBLE *W, DOUBLE *WERR, DOUBLE *WGAP, const INTEGER *IBLOCK, const INTEGER *INDEXW, const DOUBLE *GERS, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlarrv"); LAPACK_IMPL(zlarrv)(N, VL, VU, D, L, PIVMIN, ISPLIT, M, DOL, DOU, MINRGP, RTOL1, RTOL2, W, WERR, WGAP, IBLOCK, INDEXW, GERS, Z, LDZ, ISUPPZ, WORK, IWORK, INFO); } //-- zlarscl2 ------------------------------------------------------------------ void LAPACK_DECL(zlarscl2)(const INTEGER *M, const INTEGER *N, const DOUBLE *D, DOUBLE_COMPLEX *X, const INTEGER *LDX) { DEBUG_LAPACK_STUB("zlarscl2"); LAPACK_IMPL(zlarscl2)(M, N, D, X, LDX); } //-- zlartg -------------------------------------------------------------------- void LAPACK_DECL(zlartg)(const DOUBLE_COMPLEX *F, const DOUBLE_COMPLEX *G, DOUBLE *CS, DOUBLE_COMPLEX *SN, DOUBLE_COMPLEX *R) { DEBUG_LAPACK_STUB("zlartg"); LAPACK_IMPL(zlartg)(F, G, CS, SN, R); } //-- zlartv -------------------------------------------------------------------- void LAPACK_DECL(zlartv)(const INTEGER *N, DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE_COMPLEX *Y, const INTEGER *INCY, const DOUBLE *C, const DOUBLE_COMPLEX *S, const INTEGER *INCC) { DEBUG_LAPACK_STUB("zlartv"); LAPACK_IMPL(zlartv)(N, X, INCX, Y, INCY, C, S, INCC); } //-- zlarz --------------------------------------------------------------------- void LAPACK_DECL(zlarz)(const char *SIDE, const INTEGER *M, const INTEGER *N, const INTEGER *L, const DOUBLE_COMPLEX *V, const INTEGER *INCV, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK) { DEBUG_LAPACK_STUB("zlarz"); LAPACK_IMPL(zlarz)(SIDE, M, N, L, V, INCV, TAU, C, LDC, WORK); } //-- zlarzb -------------------------------------------------------------------- void LAPACK_DECL(zlarzb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const DOUBLE_COMPLEX *V, const INTEGER *LDV, const DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LDWORK) { DEBUG_LAPACK_STUB("zlarzb"); LAPACK_IMPL(zlarzb)(SIDE, TRANS, DIRECT, STOREV, M, N, K, L, V, LDV, T, LDT, C, LDC, WORK, LDWORK); } //-- zlarzt -------------------------------------------------------------------- void LAPACK_DECL(zlarzt)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *V, const INTEGER *LDV, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *T, const INTEGER *LDT) { DEBUG_LAPACK_STUB("zlarzt"); LAPACK_IMPL(zlarzt)(DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT); } //-- zlascl -------------------------------------------------------------------- void LAPACK_DECL(zlascl)(const char *TYPE, const INTEGER *KL, const INTEGER *KU, const DOUBLE *CFROM, const DOUBLE *CTO, const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlascl"); LAPACK_IMPL(zlascl)(TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO); } //-- zlascl2 ------------------------------------------------------------------- void LAPACK_DECL(zlascl2)(const INTEGER *M, const INTEGER *N, const DOUBLE *D, DOUBLE_COMPLEX *X, const INTEGER *LDX) { DEBUG_LAPACK_STUB("zlascl2"); LAPACK_IMPL(zlascl2)(M, N, D, X, LDX); } //-- zlaset -------------------------------------------------------------------- void LAPACK_DECL(zlaset)(const char *UPLO, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *ALPHA, const DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("zlaset"); LAPACK_IMPL(zlaset)(UPLO, M, N, ALPHA, BETA, A, LDA); } //-- zlasr --------------------------------------------------------------------- void LAPACK_DECL(zlasr)(const char *SIDE, const char *PIVOT, const char *DIRECT, const INTEGER *M, const INTEGER *N, const DOUBLE *C, const DOUBLE *S, DOUBLE_COMPLEX *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("zlasr"); LAPACK_IMPL(zlasr)(SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA); } //-- zlassq -------------------------------------------------------------------- void LAPACK_DECL(zlassq)(const INTEGER *N, const DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE *SCALE, DOUBLE *SUMSQ) { DEBUG_LAPACK_STUB("zlassq"); LAPACK_IMPL(zlassq)(N, X, INCX, SCALE, SUMSQ); } //-- zlaswp -------------------------------------------------------------------- void LAPACK_DECL(zlaswp)(const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *K1, const INTEGER *K2, const INTEGER *IPIV, const INTEGER *INCX) { DEBUG_LAPACK_STUB("zlaswp"); LAPACK_IMPL(zlaswp)(N, A, LDA, K1, K2, IPIV, INCX); } //-- zlasyf -------------------------------------------------------------------- void LAPACK_DECL(zlasyf)(const char *UPLO, const INTEGER *N, const INTEGER *NB, INTEGER *KB, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE_COMPLEX *W, const INTEGER *LDW, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlasyf"); LAPACK_IMPL(zlasyf)(UPLO, N, NB, KB, A, LDA, IPIV, W, LDW, INFO); } //-- zlat2c -------------------------------------------------------------------- void LAPACK_DECL(zlat2c)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *SA, const INTEGER *LDSA, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlat2c"); LAPACK_IMPL(zlat2c)(UPLO, N, A, LDA, SA, LDSA, INFO); } //-- zlatbs -------------------------------------------------------------------- void LAPACK_DECL(zlatbs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const INTEGER *KD, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *X, DOUBLE *SCALE, DOUBLE *CNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlatbs"); LAPACK_IMPL(zlatbs)(UPLO, TRANS, DIAG, NORMIN, N, KD, AB, LDAB, X, SCALE, CNORM, INFO); } //-- zlatdf -------------------------------------------------------------------- void LAPACK_DECL(zlatdf)(const INTEGER *IJOB, const INTEGER *N, const DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *RHS, DOUBLE *RDSUM, DOUBLE *RDSCAL, const INTEGER *IPIV, const INTEGER *JPIV) { DEBUG_LAPACK_STUB("zlatdf"); LAPACK_IMPL(zlatdf)(IJOB, N, Z, LDZ, RHS, RDSUM, RDSCAL, IPIV, JPIV); } //-- zlatps -------------------------------------------------------------------- void LAPACK_DECL(zlatps)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *X, DOUBLE *SCALE, DOUBLE *CNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlatps"); LAPACK_IMPL(zlatps)(UPLO, TRANS, DIAG, NORMIN, N, AP, X, SCALE, CNORM, INFO); } //-- zlatrd -------------------------------------------------------------------- void LAPACK_DECL(zlatrd)(const char *UPLO, const INTEGER *N, const INTEGER *NB, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *E, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *W, const INTEGER *LDW) { DEBUG_LAPACK_STUB("zlatrd"); LAPACK_IMPL(zlatrd)(UPLO, N, NB, A, LDA, E, TAU, W, LDW); } //-- zlatrs -------------------------------------------------------------------- void LAPACK_DECL(zlatrs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *X, DOUBLE *SCALE, DOUBLE *CNORM, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlatrs"); LAPACK_IMPL(zlatrs)(UPLO, TRANS, DIAG, NORMIN, N, A, LDA, X, SCALE, CNORM, INFO); } //-- zlatrz -------------------------------------------------------------------- void LAPACK_DECL(zlatrz)(const INTEGER *M, const INTEGER *N, const INTEGER *L, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK) { DEBUG_LAPACK_STUB("zlatrz"); LAPACK_IMPL(zlatrz)(M, N, L, A, LDA, TAU, WORK); } //-- zlatzm -------------------------------------------------------------------- void LAPACK_DECL(zlatzm)(const char *SIDE, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *V, const INTEGER *INCV, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C1, DOUBLE_COMPLEX *C2, const INTEGER *LDC, DOUBLE_COMPLEX *WORK) { DEBUG_LAPACK_STUB("zlatzm"); LAPACK_IMPL(zlatzm)(SIDE, M, N, V, INCV, TAU, C1, C2, LDC, WORK); } //-- zlauu2 -------------------------------------------------------------------- void LAPACK_DECL(zlauu2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlauu2"); LAPACK_IMPL(zlauu2)(UPLO, N, A, LDA, INFO); } //-- zlauum -------------------------------------------------------------------- void LAPACK_DECL(zlauum)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("zlauum"); LAPACK_IMPL(zlauum)(UPLO, N, A, LDA, INFO); } //-- zpbcon -------------------------------------------------------------------- void LAPACK_DECL(zpbcon)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpbcon"); LAPACK_IMPL(zpbcon)(UPLO, N, KD, AB, LDAB, ANORM, RCOND, WORK, RWORK, INFO); } //-- zpbequ -------------------------------------------------------------------- void LAPACK_DECL(zpbequ)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpbequ"); LAPACK_IMPL(zpbequ)(UPLO, N, KD, AB, LDAB, S, SCOND, AMAX, INFO); } //-- zpbrfs -------------------------------------------------------------------- void LAPACK_DECL(zpbrfs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpbrfs"); LAPACK_IMPL(zpbrfs)(UPLO, N, KD, NRHS, AB, LDAB, AFB, LDAFB, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- zpbstf -------------------------------------------------------------------- void LAPACK_DECL(zpbstf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpbstf"); LAPACK_IMPL(zpbstf)(UPLO, N, KD, AB, LDAB, INFO); } //-- zpbsv --------------------------------------------------------------------- void LAPACK_DECL(zpbsv)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpbsv"); LAPACK_IMPL(zpbsv)(UPLO, N, KD, NRHS, AB, LDAB, B, LDB, INFO); } //-- zpbsvx -------------------------------------------------------------------- void LAPACK_DECL(zpbsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, char *EQUED, DOUBLE *S, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpbsvx"); LAPACK_IMPL(zpbsvx)(FACT, UPLO, N, KD, NRHS, AB, LDAB, AFB, LDAFB, EQUED, S, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- zpbtf2 -------------------------------------------------------------------- void LAPACK_DECL(zpbtf2)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpbtf2"); LAPACK_IMPL(zpbtf2)(UPLO, N, KD, AB, LDAB, INFO); } //-- zpbtrf -------------------------------------------------------------------- void LAPACK_DECL(zpbtrf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpbtrf"); LAPACK_IMPL(zpbtrf)(UPLO, N, KD, AB, LDAB, INFO); } //-- zpbtrs -------------------------------------------------------------------- void LAPACK_DECL(zpbtrs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpbtrs"); LAPACK_IMPL(zpbtrs)(UPLO, N, KD, NRHS, AB, LDAB, B, LDB, INFO); } //-- zpftrf -------------------------------------------------------------------- void LAPACK_DECL(zpftrf)(const char *TRANSR, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpftrf"); LAPACK_IMPL(zpftrf)(TRANSR, UPLO, N, A, INFO); } //-- zpftri -------------------------------------------------------------------- void LAPACK_DECL(zpftri)(const char *TRANSR, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpftri"); LAPACK_IMPL(zpftri)(TRANSR, UPLO, N, A, INFO); } //-- zpftrs -------------------------------------------------------------------- void LAPACK_DECL(zpftrs)(const char *TRANSR, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpftrs"); LAPACK_IMPL(zpftrs)(TRANSR, UPLO, N, NRHS, A, B, LDB, INFO); } //-- zpocon -------------------------------------------------------------------- void LAPACK_DECL(zpocon)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpocon"); LAPACK_IMPL(zpocon)(UPLO, N, A, LDA, ANORM, RCOND, WORK, RWORK, INFO); } //-- zpoequ -------------------------------------------------------------------- void LAPACK_DECL(zpoequ)(const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpoequ"); LAPACK_IMPL(zpoequ)(N, A, LDA, S, SCOND, AMAX, INFO); } //-- zpoequb ------------------------------------------------------------------- void LAPACK_DECL(zpoequb)(const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpoequb"); LAPACK_IMPL(zpoequb)(N, A, LDA, S, SCOND, AMAX, INFO); } //-- zporfs -------------------------------------------------------------------- void LAPACK_DECL(zporfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zporfs"); LAPACK_IMPL(zporfs)(UPLO, N, NRHS, A, LDA, AF, LDAF, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- zporfsx ------------------------------------------------------------------- void LAPACK_DECL(zporfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, DOUBLE *S, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zporfsx"); LAPACK_IMPL(zporfsx)(UPLO, EQUED, N, NRHS, A, LDA, AF, LDAF, S, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- zposv --------------------------------------------------------------------- void LAPACK_DECL(zposv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zposv"); LAPACK_IMPL(zposv)(UPLO, N, NRHS, A, LDA, B, LDB, INFO); } //-- zposvx -------------------------------------------------------------------- void LAPACK_DECL(zposvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, char *EQUED, DOUBLE *S, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zposvx"); LAPACK_IMPL(zposvx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, EQUED, S, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- zposvxx ------------------------------------------------------------------- void LAPACK_DECL(zposvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, char *EQUED, DOUBLE *S, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zposvxx"); LAPACK_IMPL(zposvxx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, EQUED, S, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- zpotf2 -------------------------------------------------------------------- void LAPACK_DECL(zpotf2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpotf2"); LAPACK_IMPL(zpotf2)(UPLO, N, A, LDA, INFO); } //-- zpotrf -------------------------------------------------------------------- void LAPACK_DECL(zpotrf)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpotrf"); LAPACK_IMPL(zpotrf)(UPLO, N, A, LDA, INFO); } //-- zpotri -------------------------------------------------------------------- void LAPACK_DECL(zpotri)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpotri"); LAPACK_IMPL(zpotri)(UPLO, N, A, LDA, INFO); } //-- zpotrs -------------------------------------------------------------------- void LAPACK_DECL(zpotrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpotrs"); LAPACK_IMPL(zpotrs)(UPLO, N, NRHS, A, LDA, B, LDB, INFO); } //-- zppcon -------------------------------------------------------------------- void LAPACK_DECL(zppcon)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zppcon"); LAPACK_IMPL(zppcon)(UPLO, N, AP, ANORM, RCOND, WORK, RWORK, INFO); } //-- zppequ -------------------------------------------------------------------- void LAPACK_DECL(zppequ)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO) { DEBUG_LAPACK_STUB("zppequ"); LAPACK_IMPL(zppequ)(UPLO, N, AP, S, SCOND, AMAX, INFO); } //-- zpprfs -------------------------------------------------------------------- void LAPACK_DECL(zpprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *AFP, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpprfs"); LAPACK_IMPL(zpprfs)(UPLO, N, NRHS, AP, AFP, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- zppsv --------------------------------------------------------------------- void LAPACK_DECL(zppsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zppsv"); LAPACK_IMPL(zppsv)(UPLO, N, NRHS, AP, B, LDB, INFO); } //-- zppsvx -------------------------------------------------------------------- void LAPACK_DECL(zppsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *AFP, char *EQUED, DOUBLE *S, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zppsvx"); LAPACK_IMPL(zppsvx)(FACT, UPLO, N, NRHS, AP, AFP, EQUED, S, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- zpptrf -------------------------------------------------------------------- void LAPACK_DECL(zpptrf)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpptrf"); LAPACK_IMPL(zpptrf)(UPLO, N, AP, INFO); } //-- zpptri -------------------------------------------------------------------- void LAPACK_DECL(zpptri)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpptri"); LAPACK_IMPL(zpptri)(UPLO, N, AP, INFO); } //-- zpptrs -------------------------------------------------------------------- void LAPACK_DECL(zpptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpptrs"); LAPACK_IMPL(zpptrs)(UPLO, N, NRHS, AP, B, LDB, INFO); } //-- zpstf2 -------------------------------------------------------------------- void LAPACK_DECL(zpstf2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const DOUBLE *TOL, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpstf2"); LAPACK_IMPL(zpstf2)(UPLO, N, A, LDA, PIV, RANK, TOL, WORK, INFO); } //-- zpstrf -------------------------------------------------------------------- void LAPACK_DECL(zpstrf)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const DOUBLE *TOL, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpstrf"); LAPACK_IMPL(zpstrf)(UPLO, N, A, LDA, PIV, RANK, TOL, WORK, INFO); } //-- zptcon -------------------------------------------------------------------- void LAPACK_DECL(zptcon)(const INTEGER *N, const DOUBLE *D, const DOUBLE_COMPLEX *E, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zptcon"); LAPACK_IMPL(zptcon)(N, D, E, ANORM, RCOND, RWORK, INFO); } //-- zpteqr -------------------------------------------------------------------- void LAPACK_DECL(zpteqr)(const char *COMPZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpteqr"); LAPACK_IMPL(zpteqr)(COMPZ, N, D, E, Z, LDZ, WORK, INFO); } //-- zptrfs -------------------------------------------------------------------- void LAPACK_DECL(zptrfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE_COMPLEX *E, const DOUBLE *DF, const DOUBLE_COMPLEX *EF, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zptrfs"); LAPACK_IMPL(zptrfs)(UPLO, N, NRHS, D, E, DF, EF, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- zptsv --------------------------------------------------------------------- void LAPACK_DECL(zptsv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE *D, DOUBLE_COMPLEX *E, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zptsv"); LAPACK_IMPL(zptsv)(N, NRHS, D, E, B, LDB, INFO); } //-- zptsvx -------------------------------------------------------------------- void LAPACK_DECL(zptsvx)(const char *FACT, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE_COMPLEX *E, DOUBLE *DF, DOUBLE_COMPLEX *EF, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zptsvx"); LAPACK_IMPL(zptsvx)(FACT, N, NRHS, D, E, DF, EF, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- zpttrf -------------------------------------------------------------------- void LAPACK_DECL(zpttrf)(const INTEGER *N, DOUBLE *D, DOUBLE_COMPLEX *E, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpttrf"); LAPACK_IMPL(zpttrf)(N, D, E, INFO); } //-- zpttrs -------------------------------------------------------------------- void LAPACK_DECL(zpttrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE_COMPLEX *E, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zpttrs"); LAPACK_IMPL(zpttrs)(UPLO, N, NRHS, D, E, B, LDB, INFO); } //-- zptts2 -------------------------------------------------------------------- void LAPACK_DECL(zptts2)(const INTEGER *IUPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE_COMPLEX *E, DOUBLE_COMPLEX *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("zptts2"); LAPACK_IMPL(zptts2)(IUPLO, N, NRHS, D, E, B, LDB); } //-- zrot ---------------------------------------------------------------------- void LAPACK_DECL(zrot)(const INTEGER *N, DOUBLE_COMPLEX *CX, const INTEGER *INCX, DOUBLE_COMPLEX *CY, const INTEGER *INCY, const DOUBLE *C, const DOUBLE_COMPLEX *S) { DEBUG_LAPACK_STUB("zrot"); LAPACK_IMPL(zrot)(N, CX, INCX, CY, INCY, C, S); } //-- zspcon -------------------------------------------------------------------- void LAPACK_DECL(zspcon)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zspcon"); LAPACK_IMPL(zspcon)(UPLO, N, AP, IPIV, ANORM, RCOND, WORK, INFO); } //-- zspmv --------------------------------------------------------------------- void LAPACK_DECL(zspmv)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *ALPHA, const DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *X, const INTEGER *INCX, const DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("zspmv"); LAPACK_IMPL(zspmv)(UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY); } //-- zspr ---------------------------------------------------------------------- void LAPACK_DECL(zspr)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *ALPHA, const DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE_COMPLEX *AP) { DEBUG_LAPACK_STUB("zspr"); LAPACK_IMPL(zspr)(UPLO, N, ALPHA, X, INCX, AP); } //-- zsprfs -------------------------------------------------------------------- void LAPACK_DECL(zsprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *AFP, const INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsprfs"); LAPACK_IMPL(zsprfs)(UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- zspsv --------------------------------------------------------------------- void LAPACK_DECL(zspsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *AP, INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zspsv"); LAPACK_IMPL(zspsv)(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO); } //-- zspsvx -------------------------------------------------------------------- void LAPACK_DECL(zspsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *AFP, INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zspsvx"); LAPACK_IMPL(zspsvx)(FACT, UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO); } //-- zsptrf -------------------------------------------------------------------- void LAPACK_DECL(zsptrf)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsptrf"); LAPACK_IMPL(zsptrf)(UPLO, N, AP, IPIV, INFO); } //-- zsptri -------------------------------------------------------------------- void LAPACK_DECL(zsptri)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsptri"); LAPACK_IMPL(zsptri)(UPLO, N, AP, IPIV, WORK, INFO); } //-- zsptrs -------------------------------------------------------------------- void LAPACK_DECL(zsptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsptrs"); LAPACK_IMPL(zsptrs)(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO); } //-- zstedc -------------------------------------------------------------------- void LAPACK_DECL(zstedc)(const char *COMPZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zstedc"); LAPACK_IMPL(zstedc)(COMPZ, N, D, E, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO); } //-- zstegr -------------------------------------------------------------------- void LAPACK_DECL(zstegr)(const char *JOBZ, const char *RANGE, const INTEGER *N, DOUBLE *D, DOUBLE *E, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zstegr"); LAPACK_IMPL(zstegr)(JOBZ, RANGE, N, D, E, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, IWORK, LIWORK, INFO); } //-- zstein -------------------------------------------------------------------- void LAPACK_DECL(zstein)(const INTEGER *N, const DOUBLE *D, const DOUBLE *E, const INTEGER *M, const DOUBLE *W, const INTEGER *IBLOCK, const INTEGER *ISPLIT, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO) { DEBUG_LAPACK_STUB("zstein"); LAPACK_IMPL(zstein)(N, D, E, M, W, IBLOCK, ISPLIT, Z, LDZ, WORK, IWORK, IFAIL, INFO); } //-- zstemr -------------------------------------------------------------------- void LAPACK_DECL(zstemr)(const char *JOBZ, const char *RANGE, const INTEGER *N, DOUBLE *D, DOUBLE *E, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, const INTEGER *NZC, INTEGER *ISUPPZ, LOGICAL *TRYRAC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zstemr"); LAPACK_IMPL(zstemr)(JOBZ, RANGE, N, D, E, VL, VU, IL, IU, M, W, Z, LDZ, NZC, ISUPPZ, TRYRAC, WORK, LWORK, IWORK, LIWORK, INFO); } //-- zsteqr -------------------------------------------------------------------- void LAPACK_DECL(zsteqr)(const char *COMPZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsteqr"); LAPACK_IMPL(zsteqr)(COMPZ, N, D, E, Z, LDZ, WORK, INFO); } //-- zsycon -------------------------------------------------------------------- void LAPACK_DECL(zsycon)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsycon"); LAPACK_IMPL(zsycon)(UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK, INFO); } //-- zsyconv ------------------------------------------------------------------- void LAPACK_DECL(zsyconv)(const char *UPLO, const char *WAY, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsyconv"); LAPACK_IMPL(zsyconv)(UPLO, WAY, N, A, LDA, IPIV, WORK, INFO); } //-- zsyequb ------------------------------------------------------------------- void LAPACK_DECL(zsyequb)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsyequb"); LAPACK_IMPL(zsyequb)(UPLO, N, A, LDA, S, SCOND, AMAX, WORK, INFO); } //-- zsymv --------------------------------------------------------------------- void LAPACK_DECL(zsymv)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *ALPHA, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *X, const INTEGER *INCX, const DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *Y, const INTEGER *INCY) { DEBUG_LAPACK_STUB("zsymv"); LAPACK_IMPL(zsymv)(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY); } //-- zsyr ---------------------------------------------------------------------- void LAPACK_DECL(zsyr)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *ALPHA, const DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE_COMPLEX *A, const INTEGER *LDA) { DEBUG_LAPACK_STUB("zsyr"); LAPACK_IMPL(zsyr)(UPLO, N, ALPHA, X, INCX, A, LDA); } //-- zsyrfs -------------------------------------------------------------------- void LAPACK_DECL(zsyrfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsyrfs"); LAPACK_IMPL(zsyrfs)(UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- zsyrfsx ------------------------------------------------------------------- void LAPACK_DECL(zsyrfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, DOUBLE *S, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsyrfsx"); LAPACK_IMPL(zsyrfsx)(UPLO, EQUED, N, NRHS, A, LDA, AF, LDAF, IPIV, S, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- zsysv --------------------------------------------------------------------- void LAPACK_DECL(zsysv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsysv"); LAPACK_IMPL(zsysv)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO); } //-- zsysvx -------------------------------------------------------------------- void LAPACK_DECL(zsysvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsysvx"); LAPACK_IMPL(zsysvx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, LWORK, RWORK, INFO); } //-- zsysvxx ------------------------------------------------------------------- void LAPACK_DECL(zsysvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, DOUBLE *S, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsysvxx"); LAPACK_IMPL(zsysvxx)(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, EQUED, S, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, INFO); } //-- zsyswapr ------------------------------------------------------------------ void LAPACK_DECL(zsyswapr)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *I1, const INTEGER *I2) { DEBUG_LAPACK_STUB("zsyswapr"); LAPACK_IMPL(zsyswapr)(UPLO, N, A, LDA, I1, I2); } //-- zsytf2 -------------------------------------------------------------------- void LAPACK_DECL(zsytf2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsytf2"); LAPACK_IMPL(zsytf2)(UPLO, N, A, LDA, IPIV, INFO); } //-- zsytrf -------------------------------------------------------------------- void LAPACK_DECL(zsytrf)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsytrf"); LAPACK_IMPL(zsytrf)(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- zsytri -------------------------------------------------------------------- void LAPACK_DECL(zsytri)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsytri"); LAPACK_IMPL(zsytri)(UPLO, N, A, LDA, IPIV, WORK, INFO); } //-- zsytri2 ------------------------------------------------------------------- void LAPACK_DECL(zsytri2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsytri2"); LAPACK_IMPL(zsytri2)(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO); } //-- zsytri2x ------------------------------------------------------------------ void LAPACK_DECL(zsytri2x)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, const INTEGER *NB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsytri2x"); LAPACK_IMPL(zsytri2x)(UPLO, N, A, LDA, IPIV, WORK, NB, INFO); } //-- zsytrs -------------------------------------------------------------------- void LAPACK_DECL(zsytrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsytrs"); LAPACK_IMPL(zsytrs)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO); } //-- zsytrs2 ------------------------------------------------------------------- void LAPACK_DECL(zsytrs2)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, UNKNOWN *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zsytrs2"); LAPACK_IMPL(zsytrs2)(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, INFO); } //-- ztbcon -------------------------------------------------------------------- void LAPACK_DECL(ztbcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *KD, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztbcon"); LAPACK_IMPL(ztbcon)(NORM, UPLO, DIAG, N, KD, AB, LDAB, RCOND, WORK, RWORK, INFO); } //-- ztbrfs -------------------------------------------------------------------- void LAPACK_DECL(ztbrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztbrfs"); LAPACK_IMPL(ztbrfs)(UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- ztbtrs -------------------------------------------------------------------- void LAPACK_DECL(ztbtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztbtrs"); LAPACK_IMPL(ztbtrs)(UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, B, LDB, INFO); } //-- ztfsm --------------------------------------------------------------------- void LAPACK_DECL(ztfsm)(const char *TRANSR, const char *SIDE, const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *ALPHA, const DOUBLE_COMPLEX *A, DOUBLE_COMPLEX *B, const INTEGER *LDB) { DEBUG_LAPACK_STUB("ztfsm"); LAPACK_IMPL(ztfsm)(TRANSR, SIDE, UPLO, TRANS, DIAG, M, N, ALPHA, A, B, LDB); } //-- ztftri -------------------------------------------------------------------- void LAPACK_DECL(ztftri)(const char *TRANSR, const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE_COMPLEX *A, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztftri"); LAPACK_IMPL(ztftri)(TRANSR, UPLO, DIAG, N, A, INFO); } //-- ztfttp -------------------------------------------------------------------- void LAPACK_DECL(ztfttp)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *ARF, DOUBLE_COMPLEX *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztfttp"); LAPACK_IMPL(ztfttp)(TRANSR, UPLO, N, ARF, AP, INFO); } //-- ztfttr -------------------------------------------------------------------- void LAPACK_DECL(ztfttr)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *ARF, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztfttr"); LAPACK_IMPL(ztfttr)(TRANSR, UPLO, N, ARF, A, LDA, INFO); } //-- ztgevc -------------------------------------------------------------------- void LAPACK_DECL(ztgevc)(const char *SIDE, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const DOUBLE_COMPLEX *S, const INTEGER *LDS, const DOUBLE_COMPLEX *P, const INTEGER *LDP, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztgevc"); LAPACK_IMPL(ztgevc)(SIDE, HOWMNY, SELECT, N, S, LDS, P, LDP, VL, LDVL, VR, LDVR, MM, M, WORK, RWORK, INFO); } //-- ztgex2 -------------------------------------------------------------------- void LAPACK_DECL(ztgex2)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, const INTEGER *J1, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztgex2"); LAPACK_IMPL(ztgex2)(WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, J1, INFO); } //-- ztgexc -------------------------------------------------------------------- void LAPACK_DECL(ztgexc)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, const INTEGER *IFST, INTEGER *ILST, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztgexc"); LAPACK_IMPL(ztgexc)(WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, IFST, ILST, INFO); } //-- ztgsen -------------------------------------------------------------------- void LAPACK_DECL(ztgsen)(const INTEGER *IJOB, const LOGICAL *WANTQ, const LOGICAL *WANTZ, const LOGICAL *SELECT, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *M, DOUBLE *PL, DOUBLE *PR, DOUBLE *DIF, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztgsen"); LAPACK_IMPL(ztgsen)(IJOB, WANTQ, WANTZ, SELECT, N, A, LDA, B, LDB, ALPHA, BETA, Q, LDQ, Z, LDZ, M, PL, PR, DIF, WORK, LWORK, IWORK, LIWORK, INFO); } //-- ztgsja -------------------------------------------------------------------- void LAPACK_DECL(ztgsja)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, const INTEGER *K, const INTEGER *L, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE *TOLA, const DOUBLE *TOLB, DOUBLE *ALPHA, DOUBLE *BETA, DOUBLE_COMPLEX *U, const INTEGER *LDU, DOUBLE_COMPLEX *V, const INTEGER *LDV, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *WORK, INTEGER *NCYCLE, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztgsja"); LAPACK_IMPL(ztgsja)(JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B, LDB, TOLA, TOLB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, NCYCLE, INFO); } //-- ztgsna -------------------------------------------------------------------- void LAPACK_DECL(ztgsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE_COMPLEX *VL, const INTEGER *LDVL, const DOUBLE_COMPLEX *VR, const INTEGER *LDVR, DOUBLE *S, DOUBLE *DIF, const INTEGER *MM, INTEGER *M, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztgsna"); LAPACK_IMPL(ztgsna)(JOB, HOWMNY, SELECT, N, A, LDA, B, LDB, VL, LDVL, VR, LDVR, S, DIF, MM, M, WORK, LWORK, IWORK, INFO); } //-- ztgsy2 -------------------------------------------------------------------- void LAPACK_DECL(ztgsy2)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *C, const INTEGER *LDC, const DOUBLE_COMPLEX *D, const INTEGER *LDD, const DOUBLE_COMPLEX *E, const INTEGER *LDE, DOUBLE_COMPLEX *F, const INTEGER *LDF, DOUBLE *SCALE, DOUBLE *RDSUM, DOUBLE *RDSCAL, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztgsy2"); LAPACK_IMPL(ztgsy2)(TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D, LDD, E, LDE, F, LDF, SCALE, RDSUM, RDSCAL, INFO); } //-- ztgsyl -------------------------------------------------------------------- void LAPACK_DECL(ztgsyl)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *C, const INTEGER *LDC, const DOUBLE_COMPLEX *D, const INTEGER *LDD, const DOUBLE_COMPLEX *E, const INTEGER *LDE, DOUBLE_COMPLEX *F, const INTEGER *LDF, DOUBLE *SCALE, DOUBLE *DIF, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztgsyl"); LAPACK_IMPL(ztgsyl)(TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D, LDD, E, LDE, F, LDF, SCALE, DIF, WORK, LWORK, IWORK, INFO); } //-- ztpcon -------------------------------------------------------------------- void LAPACK_DECL(ztpcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztpcon"); LAPACK_IMPL(ztpcon)(NORM, UPLO, DIAG, N, AP, RCOND, WORK, RWORK, INFO); } //-- ztprfs -------------------------------------------------------------------- void LAPACK_DECL(ztprfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztprfs"); LAPACK_IMPL(ztprfs)(UPLO, TRANS, DIAG, N, NRHS, AP, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- ztptri -------------------------------------------------------------------- void LAPACK_DECL(ztptri)(const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE_COMPLEX *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztptri"); LAPACK_IMPL(ztptri)(UPLO, DIAG, N, AP, INFO); } //-- ztptrs -------------------------------------------------------------------- void LAPACK_DECL(ztptrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztptrs"); LAPACK_IMPL(ztptrs)(UPLO, TRANS, DIAG, N, NRHS, AP, B, LDB, INFO); } //-- ztpttf -------------------------------------------------------------------- void LAPACK_DECL(ztpttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *ARF, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztpttf"); LAPACK_IMPL(ztpttf)(TRANSR, UPLO, N, AP, ARF, INFO); } //-- ztpttr -------------------------------------------------------------------- void LAPACK_DECL(ztpttr)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztpttr"); LAPACK_IMPL(ztpttr)(UPLO, N, AP, A, LDA, INFO); } //-- ztrcon -------------------------------------------------------------------- void LAPACK_DECL(ztrcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztrcon"); LAPACK_IMPL(ztrcon)(NORM, UPLO, DIAG, N, A, LDA, RCOND, WORK, RWORK, INFO); } //-- ztrevc -------------------------------------------------------------------- void LAPACK_DECL(ztrevc)(const char *SIDE, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztrevc"); LAPACK_IMPL(ztrevc)(SIDE, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR, LDVR, MM, M, WORK, RWORK, INFO); } //-- ztrexc -------------------------------------------------------------------- void LAPACK_DECL(ztrexc)(const char *COMPQ, const INTEGER *N, DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, const INTEGER *IFST, const INTEGER *ILST, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztrexc"); LAPACK_IMPL(ztrexc)(COMPQ, N, T, LDT, Q, LDQ, IFST, ILST, INFO); } //-- ztrrfs -------------------------------------------------------------------- void LAPACK_DECL(ztrrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztrrfs"); LAPACK_IMPL(ztrrfs)(UPLO, TRANS, DIAG, N, NRHS, A, LDA, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO); } //-- ztrsen -------------------------------------------------------------------- void LAPACK_DECL(ztrsen)(const char *JOB, const char *COMPQ, const LOGICAL *SELECT, const INTEGER *N, DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *W, INTEGER *M, DOUBLE *S, DOUBLE *SEP, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztrsen"); LAPACK_IMPL(ztrsen)(JOB, COMPQ, SELECT, N, T, LDT, Q, LDQ, W, M, S, SEP, WORK, LWORK, INFO); } //-- ztrsna -------------------------------------------------------------------- void LAPACK_DECL(ztrsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const DOUBLE_COMPLEX *T, const INTEGER *LDT, const DOUBLE_COMPLEX *VL, const INTEGER *LDVL, const DOUBLE_COMPLEX *VR, const INTEGER *LDVR, DOUBLE *S, DOUBLE *SEP, const INTEGER *MM, INTEGER *M, DOUBLE_COMPLEX *WORK, const INTEGER *LDWORK, DOUBLE *RWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztrsna"); LAPACK_IMPL(ztrsna)(JOB, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR, LDVR, S, SEP, MM, M, WORK, LDWORK, RWORK, INFO); } //-- ztrsyl -------------------------------------------------------------------- void LAPACK_DECL(ztrsyl)(const char *TRANA, const char *TRANB, const INTEGER *ISGN, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE *SCALE, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztrsyl"); LAPACK_IMPL(ztrsyl)(TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C, LDC, SCALE, INFO); } //-- ztrti2 -------------------------------------------------------------------- void LAPACK_DECL(ztrti2)(const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztrti2"); LAPACK_IMPL(ztrti2)(UPLO, DIAG, N, A, LDA, INFO); } //-- ztrtri -------------------------------------------------------------------- void LAPACK_DECL(ztrtri)(const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztrtri"); LAPACK_IMPL(ztrtri)(UPLO, DIAG, N, A, LDA, INFO); } //-- ztrtrs -------------------------------------------------------------------- void LAPACK_DECL(ztrtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztrtrs"); LAPACK_IMPL(ztrtrs)(UPLO, TRANS, DIAG, N, NRHS, A, LDA, B, LDB, INFO); } //-- ztrttf -------------------------------------------------------------------- void LAPACK_DECL(ztrttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *ARF, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztrttf"); LAPACK_IMPL(ztrttf)(TRANSR, UPLO, N, A, LDA, ARF, INFO); } //-- ztrttp -------------------------------------------------------------------- void LAPACK_DECL(ztrttp)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AP, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztrttp"); LAPACK_IMPL(ztrttp)(UPLO, N, A, LDA, AP, INFO); } //-- ztzrqf -------------------------------------------------------------------- void LAPACK_DECL(ztzrqf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztzrqf"); LAPACK_IMPL(ztzrqf)(M, N, A, LDA, TAU, INFO); } //-- ztzrzf -------------------------------------------------------------------- void LAPACK_DECL(ztzrzf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("ztzrzf"); LAPACK_IMPL(ztzrzf)(M, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- zunbdb -------------------------------------------------------------------- void LAPACK_DECL(zunbdb)(const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, DOUBLE_COMPLEX *X11, const INTEGER *LDX11, DOUBLE_COMPLEX *X12, const INTEGER *LDX12, DOUBLE_COMPLEX *X21, const INTEGER *LDX21, DOUBLE_COMPLEX *X22, const INTEGER *LDX22, DOUBLE *THETA, DOUBLE *PHI, DOUBLE_COMPLEX *TAUP1, DOUBLE_COMPLEX *TAUP2, DOUBLE_COMPLEX *TAUQ1, DOUBLE_COMPLEX *TAUQ2, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunbdb"); LAPACK_IMPL(zunbdb)(TRANS, SIGNS, M, P, Q, X11, LDX11, X12, LDX12, X21, LDX21, X22, LDX22, THETA, PHI, TAUP1, TAUP2, TAUQ1, TAUQ2, WORK, LWORK, INFO); } //-- zuncsd -------------------------------------------------------------------- void LAPACK_DECL(zuncsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, const DOUBLE_COMPLEX *X11, const INTEGER *LDX11, const DOUBLE_COMPLEX *X12, const INTEGER *LDX12, const DOUBLE_COMPLEX *X21, const INTEGER *LDX21, const DOUBLE_COMPLEX *X22, const INTEGER *LDX22, DOUBLE *THETA, DOUBLE_COMPLEX *U1, const INTEGER *LDU1, DOUBLE_COMPLEX *U2, const INTEGER *LDU2, DOUBLE_COMPLEX *V1T, const INTEGER *LDV1T, DOUBLE_COMPLEX *V2T, const INTEGER *LDV2T, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zuncsd"); LAPACK_IMPL(zuncsd)(JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS, SIGNS, M, P, Q, X11, LDX11, X12, LDX12, X21, LDX21, X22, LDX22, THETA, U1, LDU1, U2, LDU2, V1T, LDV1T, V2T, LDV2T, WORK, LWORK, RWORK, LRWORK, IWORK, INFO); } //-- zung2l -------------------------------------------------------------------- void LAPACK_DECL(zung2l)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zung2l"); LAPACK_IMPL(zung2l)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- zung2r -------------------------------------------------------------------- void LAPACK_DECL(zung2r)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zung2r"); LAPACK_IMPL(zung2r)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- zungbr -------------------------------------------------------------------- void LAPACK_DECL(zungbr)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zungbr"); LAPACK_IMPL(zungbr)(VECT, M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- zunghr -------------------------------------------------------------------- void LAPACK_DECL(zunghr)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunghr"); LAPACK_IMPL(zunghr)(N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO); } //-- zungl2 -------------------------------------------------------------------- void LAPACK_DECL(zungl2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zungl2"); LAPACK_IMPL(zungl2)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- zunglq -------------------------------------------------------------------- void LAPACK_DECL(zunglq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunglq"); LAPACK_IMPL(zunglq)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- zungql -------------------------------------------------------------------- void LAPACK_DECL(zungql)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zungql"); LAPACK_IMPL(zungql)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- zungqr -------------------------------------------------------------------- void LAPACK_DECL(zungqr)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zungqr"); LAPACK_IMPL(zungqr)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- zungr2 -------------------------------------------------------------------- void LAPACK_DECL(zungr2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zungr2"); LAPACK_IMPL(zungr2)(M, N, K, A, LDA, TAU, WORK, INFO); } //-- zungrq -------------------------------------------------------------------- void LAPACK_DECL(zungrq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zungrq"); LAPACK_IMPL(zungrq)(M, N, K, A, LDA, TAU, WORK, LWORK, INFO); } //-- zungtr -------------------------------------------------------------------- void LAPACK_DECL(zungtr)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zungtr"); LAPACK_IMPL(zungtr)(UPLO, N, A, LDA, TAU, WORK, LWORK, INFO); } //-- zunm2l -------------------------------------------------------------------- void LAPACK_DECL(zunm2l)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunm2l"); LAPACK_IMPL(zunm2l)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- zunm2r -------------------------------------------------------------------- void LAPACK_DECL(zunm2r)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunm2r"); LAPACK_IMPL(zunm2r)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- zunmbr -------------------------------------------------------------------- void LAPACK_DECL(zunmbr)(const char *VECT, const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunmbr"); LAPACK_IMPL(zunmbr)(VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- zunmhr -------------------------------------------------------------------- void LAPACK_DECL(zunmhr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunmhr"); LAPACK_IMPL(zunmhr)(SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- zunml2 -------------------------------------------------------------------- void LAPACK_DECL(zunml2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunml2"); LAPACK_IMPL(zunml2)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- zunmlq -------------------------------------------------------------------- void LAPACK_DECL(zunmlq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunmlq"); LAPACK_IMPL(zunmlq)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- zunmql -------------------------------------------------------------------- void LAPACK_DECL(zunmql)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunmql"); LAPACK_IMPL(zunmql)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- zunmqr -------------------------------------------------------------------- void LAPACK_DECL(zunmqr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunmqr"); LAPACK_IMPL(zunmqr)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- zunmr2 -------------------------------------------------------------------- void LAPACK_DECL(zunmr2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunmr2"); LAPACK_IMPL(zunmr2)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO); } //-- zunmr3 -------------------------------------------------------------------- void LAPACK_DECL(zunmr3)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunmr3"); LAPACK_IMPL(zunmr3)(SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, WORK, INFO); } //-- zunmrq -------------------------------------------------------------------- void LAPACK_DECL(zunmrq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunmrq"); LAPACK_IMPL(zunmrq)(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- zunmrz -------------------------------------------------------------------- void LAPACK_DECL(zunmrz)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunmrz"); LAPACK_IMPL(zunmrz)(SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- zunmtr -------------------------------------------------------------------- void LAPACK_DECL(zunmtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zunmtr"); LAPACK_IMPL(zunmtr)(SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, WORK, LWORK, INFO); } //-- zupgtr -------------------------------------------------------------------- void LAPACK_DECL(zupgtr)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zupgtr"); LAPACK_IMPL(zupgtr)(UPLO, N, AP, TAU, Q, LDQ, WORK, INFO); } //-- zupmtr -------------------------------------------------------------------- void LAPACK_DECL(zupmtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, INTEGER *INFO) { DEBUG_LAPACK_STUB("zupmtr"); LAPACK_IMPL(zupmtr)(SIDE, UPLO, TRANS, M, N, AP, TAU, C, LDC, WORK, INFO); } xtensor-blas-0.21.0/include/xflens/cxxlapack/netlib/interface/filter.pm000066400000000000000000000123661456314707100261730ustar00rootroot00000000000000#! /usr/bin/perl -w ## ## for i in ../lapack/*.f; do cat $i | ./filter.pm impl; done > dummy.in.cc ## ## for i in ../lapack/*.f; do cat $i | ./filter.pm header; done > lapack.in.h ## use strict; die unless $#ARGV==0; my $passThrough = -1; $passThrough = 0 if $ARGV[0] eq "header"; $passThrough = 1 if $ARGV[0] eq "impl"; die if $passThrough == -1; my @lines; my $first = 1; while (my $line=) { print STDERR $line if $first; $first = 0; chomp($line); if ($line =~ /================/) { last; } if ($line =~ /^[^\$]*\$\s*(.*)/) { $lines[$#lines] .= $1; next; } push(@lines, $line); } my %args; my $subroutine; my $returnType = "void"; foreach my $line (@lines) { if ($line =~ /^\s*\*/) { next; } if ($line =~ /CHARACTER[*1]*\s(.*)/) { my $vars = $1; $vars =~ s/\([^)]*\)//g; my @vars = split(/,/, $vars); for my $var (@vars) { $var =~ s/\s//g; $args{$var} = "char"; } } elsif ($line =~ /INTEGER(.*)/) { my $vars = $1; $vars =~ s/\([^)]*\)//g; my @vars = split(",", $vars); for my $var (@vars) { $var =~ s/\s//g; $args{$var} = "INTEGER"; } } elsif ($line =~ /LOGICAL(.*)/) { my $vars = $1; $vars =~ s/\([^)]*\)//g; my @vars = split(/,/, $vars); for my $var (@vars) { $var =~ s/\s//g; $args{$var} = "LOGICAL"; } } elsif ($line =~ /DOUBLE PRECISION(.*)/) { my $vars = $1; $vars =~ s/\([^)]*\)//g; my @vars = split(/,/, $vars); for my $var (@vars) { $var =~ s/\s//g; $args{$var} = "DOUBLE"; } } elsif ($line =~ /^\s*COMPLEX[*]16\s(.*)/) { my $vars = $1; $vars =~ s/\([^)]*\)//g; my @vars = split(/,/, $vars); for my $var (@vars) { $var =~ s/\s//g; $args{$var} = "DOUBLE_COMPLEX"; } } elsif ($line =~ /^\s*COMPLEX(.*)/) { my $vars = $1; $vars =~ s/\([^)]*\)//g; my @vars = split(/,/, $vars); for my $var (@vars) { $var =~ s/\s//g; $args{$var} = "FLOAT_COMPLEX"; } } elsif ($line =~ /^\s*REAL(.*)/) { my $vars = $1; $vars =~ s/\([^)]*\)//g; my @vars = split(/,/, $vars); for my $var (@vars) { $var =~ s/\s//g; $args{$var} = "FLOAT"; } } if ($line =~ /SUBROUTINE (.*)/) { $subroutine = $1; $subroutine =~ s/ //g; } if ($line =~ /(.*) FUNCTION (.*)/) { $returnType = $1; $subroutine = $2; $subroutine =~ s/ //g; $returnType =~ s/^\s*//; $returnType =~ s/\s*$//; if ($returnType =~ /DOUBLE PRECISION/) { $returnType = "DOUBLE"; } elsif ($returnType =~ /REAL/) { $returnType = "FLOAT"; } elsif ($returnType =~ /INTEGER/) { $returnType = "INTEGER"; } elsif ($returnType =~ /LOGICAL/) { $returnType = "LOGICAL"; } else { $returnType = "UNKNOWN"; } } } my %args_non_const; foreach my $line (@lines) { for my $var (keys %args) { if ($line =~ /\s*\*\s*$var\s*\(.*output.*\)/) { $args_non_const{$var} = $var; next; } if ($line =~ /\s*\*\s*$var\s*\(.*workspace.*\)/) { $args_non_const{$var} = $var; } } } for my $var (keys %args) { unless ($args_non_const{$var}) { $args{$var} = "const " . $args{$var}; } } if ($subroutine) { my $name; my @vars; $subroutine =~ /([^(]*)\((.*)\)/; $name = $1; @vars = split(",", $2); for my $var (@vars) { unless ($args{$var}) { print "// warning: $var has unknown type\n"; $args{$var} = "UNKNOWN"; } } my $declName = "LAPACK_IMPL(" . lc($name) . ")("; my $paddingWidth = 0; for my $var (@vars) { if (length($args{$var})>$paddingWidth) { $paddingWidth = length($args{$var}); } } $paddingWidth = (int(($paddingWidth + length($declName)) / 4) + 1)*4 - int(length($declName)/4)*4; my @param; for my $var (@vars) { my $padding = " " x ($paddingWidth - length($args{$var})); push(@param, "$args{$var}$padding *$var"); } my $padding = " " x length($declName); print "//-- " . lc($name) . " " . "-" x (80 - 6 -length($name)) . "\n"; print "$returnType\n"; print $declName . join(",\n$padding", @param) . ")"; if ($passThrough) { print "\n"; print "{\n"; print " " x 4 . "DEBUG_LAPACK_STUB(\"" . lc($name) . "\");\n"; if (lc($name) =~ /extended/) { print " " x 4 . "ASSERT(0);\n"; print " " x 4 . "/*\n"; } my $defName = "LAPACK_IMPL(" . lc($name) . ")("; if ($returnType ne "void") { $defName = "return " . $defName; } $defName = " " x 4 . $defName; $padding = " " x length($defName); print $defName . join(",\n$padding", @vars) . ");\n"; if (lc($name) =~ /extended/) { print " " x 4 . "*/\n" } print "}\n\n"; } else { print ";\n\n"; } } xtensor-blas-0.21.0/include/xflens/cxxlapack/netlib/interface/lapack.in.h000066400000000000000000036732141456314707100263710ustar00rootroot00000000000000#include "xflens/cxxlapack/netlib/netlib.h" #ifndef INTEGER # ifndef MKL_ILP64 typedef int INTEGER; # else typedef long INTEGER; # endif #endif #ifndef FLOAT typedef float FLOAT; #endif #ifndef DOUBLE typedef double DOUBLE; #endif #ifndef FLOAT_COMPLEX typedef float FLOAT_COMPLEX; #endif #ifndef DOUBLE_COMPLEX typedef double DOUBLE_COMPLEX; #endif #ifndef LOGICAL typedef int LOGICAL; #endif #ifndef UNKNOWN typedef void UNKNOWN; #endif //-- cbbcsd -------------------------------------------------------------------- void LAPACK_IMPL(cbbcsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, FLOAT *THETA, FLOAT *PHI, FLOAT_COMPLEX *U1, const INTEGER *LDU1, FLOAT_COMPLEX *U2, const INTEGER *LDU2, FLOAT_COMPLEX *V1T, const INTEGER *LDV1T, FLOAT_COMPLEX *V2T, const INTEGER *LDV2T, FLOAT *B11D, FLOAT *B11E, FLOAT *B12D, FLOAT *B12E, const FLOAT *B21D, const FLOAT *B21E, const FLOAT *B22D, const FLOAT *B22E, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *INFO); //-- cbdsqr -------------------------------------------------------------------- void LAPACK_IMPL(cbdsqr)(const char *UPLO, const INTEGER *N, const INTEGER *NCVT, const INTEGER *NRU, const INTEGER *NCC, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *VT, const INTEGER *LDVT, FLOAT_COMPLEX *U, const INTEGER *LDU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT *RWORK, INTEGER *INFO); //-- cgbbrd -------------------------------------------------------------------- void LAPACK_IMPL(cgbbrd)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *NCC, const INTEGER *KL, const INTEGER *KU, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *PT, const INTEGER *LDPT, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cgbcon -------------------------------------------------------------------- void LAPACK_IMPL(cgbcon)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cgbequ -------------------------------------------------------------------- void LAPACK_IMPL(cgbequ)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO); //-- cgbequb ------------------------------------------------------------------- void LAPACK_IMPL(cgbequb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO); //-- cgbrfs -------------------------------------------------------------------- void LAPACK_IMPL(cgbrfs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cgbrfsx ------------------------------------------------------------------- void LAPACK_IMPL(cgbrfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, FLOAT *R, FLOAT *C, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cgbsv --------------------------------------------------------------------- void LAPACK_IMPL(cgbsv)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, FLOAT_COMPLEX *AB, const INTEGER *LDAB, INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cgbsvx -------------------------------------------------------------------- void LAPACK_IMPL(cgbsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, INTEGER *IPIV, char *EQUED, FLOAT *R, FLOAT *C, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cgbsvxx ------------------------------------------------------------------- void LAPACK_IMPL(cgbsvxx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, INTEGER *IPIV, char *EQUED, FLOAT *R, FLOAT *C, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cgbtf2 -------------------------------------------------------------------- void LAPACK_IMPL(cgbtf2)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, FLOAT_COMPLEX *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO); //-- cgbtrf -------------------------------------------------------------------- void LAPACK_IMPL(cgbtrf)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, FLOAT_COMPLEX *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO); //-- cgbtrs -------------------------------------------------------------------- void LAPACK_IMPL(cgbtrs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cgebak -------------------------------------------------------------------- void LAPACK_IMPL(cgebak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const FLOAT *SCALE, const INTEGER *M, FLOAT_COMPLEX *V, const INTEGER *LDV, INTEGER *INFO); //-- cgebal -------------------------------------------------------------------- void LAPACK_IMPL(cgebal)(const char *JOB, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *ILO, INTEGER *IHI, FLOAT *SCALE, INTEGER *INFO); //-- cgebd2 -------------------------------------------------------------------- void LAPACK_IMPL(cgebd2)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *TAUQ, FLOAT_COMPLEX *TAUP, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cgebrd -------------------------------------------------------------------- void LAPACK_IMPL(cgebrd)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *TAUQ, FLOAT_COMPLEX *TAUP, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cgecon -------------------------------------------------------------------- void LAPACK_IMPL(cgecon)(const char *NORM, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cgeequ -------------------------------------------------------------------- void LAPACK_IMPL(cgeequ)(const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO); //-- cgeequb ------------------------------------------------------------------- void LAPACK_IMPL(cgeequb)(const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO); //-- cgees --------------------------------------------------------------------- void LAPACK_IMPL(cgees)(const char *JOBVS, const char *SORT, LOGICAL (*SELECT)(const FLOAT_COMPLEX *), const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *SDIM, FLOAT_COMPLEX *W, FLOAT_COMPLEX *VS, const INTEGER *LDVS, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, LOGICAL *BWORK, INTEGER *INFO); //-- cgeesx -------------------------------------------------------------------- void LAPACK_IMPL(cgeesx)(const char *JOBVS, const char *SORT, LOGICAL (*SELECT)(const FLOAT_COMPLEX *), const char *SENSE, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *SDIM, FLOAT_COMPLEX *W, FLOAT_COMPLEX *VS, const INTEGER *LDVS, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, LOGICAL *BWORK, INTEGER *INFO); //-- cgeev --------------------------------------------------------------------- void LAPACK_IMPL(cgeev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *W, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO); //-- cgeevx -------------------------------------------------------------------- void LAPACK_IMPL(cgeevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *W, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, FLOAT *SCALE, FLOAT *ABNRM, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO); //-- cgegs --------------------------------------------------------------------- void LAPACK_IMPL(cgegs)(const char *JOBVSL, const char *JOBVSR, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *VSL, const INTEGER *LDVSL, FLOAT_COMPLEX *VSR, const INTEGER *LDVSR, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO); //-- cgegv --------------------------------------------------------------------- void LAPACK_IMPL(cgegv)(const char *JOBVL, const char *JOBVR, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO); //-- cgehd2 -------------------------------------------------------------------- void LAPACK_IMPL(cgehd2)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cgehrd -------------------------------------------------------------------- void LAPACK_IMPL(cgehrd)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cgelq2 -------------------------------------------------------------------- void LAPACK_IMPL(cgelq2)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cgelqf -------------------------------------------------------------------- void LAPACK_IMPL(cgelqf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cgels --------------------------------------------------------------------- void LAPACK_IMPL(cgels)(const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cgelsd -------------------------------------------------------------------- void LAPACK_IMPL(cgelsd)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT *S, const FLOAT *RCOND, INTEGER *RANK, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *INFO); //-- cgelss -------------------------------------------------------------------- void LAPACK_IMPL(cgelss)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT *S, const FLOAT *RCOND, INTEGER *RANK, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO); //-- cgelsx -------------------------------------------------------------------- void LAPACK_IMPL(cgelsx)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *JPVT, const FLOAT *RCOND, INTEGER *RANK, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cgelsy -------------------------------------------------------------------- void LAPACK_IMPL(cgelsy)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *JPVT, const FLOAT *RCOND, INTEGER *RANK, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO); //-- cgeql2 -------------------------------------------------------------------- void LAPACK_IMPL(cgeql2)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cgeqlf -------------------------------------------------------------------- void LAPACK_IMPL(cgeqlf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cgeqp3 -------------------------------------------------------------------- void LAPACK_IMPL(cgeqp3)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO); //-- cgeqpf -------------------------------------------------------------------- void LAPACK_IMPL(cgeqpf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cgeqr2 -------------------------------------------------------------------- void LAPACK_IMPL(cgeqr2)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cgeqr2p ------------------------------------------------------------------- void LAPACK_IMPL(cgeqr2p)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cgeqrf -------------------------------------------------------------------- void LAPACK_IMPL(cgeqrf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cgeqrfp ------------------------------------------------------------------- void LAPACK_IMPL(cgeqrfp)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cgerfs -------------------------------------------------------------------- void LAPACK_IMPL(cgerfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cgerfsx ------------------------------------------------------------------- void LAPACK_IMPL(cgerfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *R, const FLOAT *C, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cgerq2 -------------------------------------------------------------------- void LAPACK_IMPL(cgerq2)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cgerqf -------------------------------------------------------------------- void LAPACK_IMPL(cgerqf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cgesc2 -------------------------------------------------------------------- void LAPACK_IMPL(cgesc2)(const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *RHS, const INTEGER *IPIV, const INTEGER *JPIV, FLOAT *SCALE); //-- cgesdd -------------------------------------------------------------------- void LAPACK_IMPL(cgesdd)(const char *JOBZ, const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *S, FLOAT_COMPLEX *U, const INTEGER *LDU, FLOAT_COMPLEX *VT, const INTEGER *LDVT, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *INFO); //-- cgesv --------------------------------------------------------------------- void LAPACK_IMPL(cgesv)(const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cgesvd -------------------------------------------------------------------- void LAPACK_IMPL(cgesvd)(const char *JOBU, const char *JOBVT, const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *S, FLOAT_COMPLEX *U, const INTEGER *LDU, FLOAT_COMPLEX *VT, const INTEGER *LDVT, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO); //-- cgesvx -------------------------------------------------------------------- void LAPACK_IMPL(cgesvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, FLOAT *R, FLOAT *C, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cgesvxx ------------------------------------------------------------------- void LAPACK_IMPL(cgesvxx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, FLOAT *R, FLOAT *C, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cgetc2 -------------------------------------------------------------------- void LAPACK_IMPL(cgetc2)(const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *JPIV, INTEGER *INFO); //-- cgetf2 -------------------------------------------------------------------- void LAPACK_IMPL(cgetf2)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO); //-- cgetrf -------------------------------------------------------------------- void LAPACK_IMPL(cgetrf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO); //-- cgetri -------------------------------------------------------------------- void LAPACK_IMPL(cgetri)(const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cgetrs -------------------------------------------------------------------- void LAPACK_IMPL(cgetrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cggbak -------------------------------------------------------------------- void LAPACK_IMPL(cggbak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const FLOAT *LSCALE, const FLOAT *RSCALE, const INTEGER *M, FLOAT_COMPLEX *V, const INTEGER *LDV, INTEGER *INFO); //-- cggbal -------------------------------------------------------------------- void LAPACK_IMPL(cggbal)(const char *JOB, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *ILO, INTEGER *IHI, FLOAT *LSCALE, FLOAT *RSCALE, FLOAT *WORK, INTEGER *INFO); //-- cgges --------------------------------------------------------------------- void LAPACK_IMPL(cgges)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *SDIM, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *VSL, const INTEGER *LDVSL, FLOAT_COMPLEX *VSR, const INTEGER *LDVSR, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, LOGICAL *BWORK, INTEGER *INFO); //-- cggesx -------------------------------------------------------------------- void LAPACK_IMPL(cggesx)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const char *SENSE, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *SDIM, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *VSL, const INTEGER *LDVSL, FLOAT_COMPLEX *VSR, const INTEGER *LDVSR, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *IWORK, const INTEGER *LIWORK, LOGICAL *BWORK, INTEGER *INFO); //-- cggev --------------------------------------------------------------------- void LAPACK_IMPL(cggev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO); //-- cggevx -------------------------------------------------------------------- void LAPACK_IMPL(cggevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, FLOAT *LSCALE, FLOAT *RSCALE, FLOAT *ABNRM, FLOAT *BBNRM, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *IWORK, LOGICAL *BWORK, INTEGER *INFO); //-- cggglm -------------------------------------------------------------------- void LAPACK_IMPL(cggglm)(const INTEGER *N, const INTEGER *M, const INTEGER *P, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *D, FLOAT_COMPLEX *X, FLOAT_COMPLEX *Y, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cgghrd -------------------------------------------------------------------- void LAPACK_IMPL(cgghrd)(const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *INFO); //-- cgglse -------------------------------------------------------------------- void LAPACK_IMPL(cgglse)(const INTEGER *M, const INTEGER *N, const INTEGER *P, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *C, FLOAT_COMPLEX *D, FLOAT_COMPLEX *X, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cggqrf -------------------------------------------------------------------- void LAPACK_IMPL(cggqrf)(const INTEGER *N, const INTEGER *M, const INTEGER *P, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAUA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *TAUB, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cggrqf -------------------------------------------------------------------- void LAPACK_IMPL(cggrqf)(const INTEGER *M, const INTEGER *P, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAUA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *TAUB, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cggsvd -------------------------------------------------------------------- void LAPACK_IMPL(cggsvd)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *N, const INTEGER *P, INTEGER *K, INTEGER *L, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT *ALPHA, FLOAT *BETA, FLOAT_COMPLEX *U, const INTEGER *LDU, FLOAT_COMPLEX *V, const INTEGER *LDV, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *INFO); //-- cggsvp -------------------------------------------------------------------- void LAPACK_IMPL(cggsvp)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT *TOLA, const FLOAT *TOLB, INTEGER *K, INTEGER *L, FLOAT_COMPLEX *U, const INTEGER *LDU, FLOAT_COMPLEX *V, const INTEGER *LDV, FLOAT_COMPLEX *Q, const INTEGER *LDQ, INTEGER *IWORK, FLOAT *RWORK, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cgtcon -------------------------------------------------------------------- void LAPACK_IMPL(cgtcon)(const char *NORM, const INTEGER *N, const FLOAT_COMPLEX *DL, const FLOAT_COMPLEX *D, const FLOAT_COMPLEX *DU, const FLOAT_COMPLEX *DU2, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cgtrfs -------------------------------------------------------------------- void LAPACK_IMPL(cgtrfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *DL, const FLOAT_COMPLEX *D, const FLOAT_COMPLEX *DU, const FLOAT_COMPLEX *DLF, const FLOAT_COMPLEX *DF, const FLOAT_COMPLEX *DUF, const FLOAT_COMPLEX *DU2, const INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cgtsv --------------------------------------------------------------------- void LAPACK_IMPL(cgtsv)(const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *DL, FLOAT_COMPLEX *D, FLOAT_COMPLEX *DU, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cgtsvx -------------------------------------------------------------------- void LAPACK_IMPL(cgtsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *DL, const FLOAT_COMPLEX *D, const FLOAT_COMPLEX *DU, FLOAT_COMPLEX *DLF, FLOAT_COMPLEX *DF, FLOAT_COMPLEX *DUF, FLOAT_COMPLEX *DU2, INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cgttrf -------------------------------------------------------------------- void LAPACK_IMPL(cgttrf)(const INTEGER *N, FLOAT_COMPLEX *DL, FLOAT_COMPLEX *D, FLOAT_COMPLEX *DU, FLOAT_COMPLEX *DU2, INTEGER *IPIV, INTEGER *INFO); //-- cgttrs -------------------------------------------------------------------- void LAPACK_IMPL(cgttrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *DL, const FLOAT_COMPLEX *D, const FLOAT_COMPLEX *DU, const FLOAT_COMPLEX *DU2, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cgtts2 -------------------------------------------------------------------- void LAPACK_IMPL(cgtts2)(const INTEGER *ITRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *DL, const FLOAT_COMPLEX *D, const FLOAT_COMPLEX *DU, const FLOAT_COMPLEX *DU2, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB); //-- chbev --------------------------------------------------------------------- void LAPACK_IMPL(chbev)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- chbevd -------------------------------------------------------------------- void LAPACK_IMPL(chbevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- chbevx -------------------------------------------------------------------- void LAPACK_IMPL(chbevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *Q, const INTEGER *LDQ, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- chbgst -------------------------------------------------------------------- void LAPACK_IMPL(chbgst)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *BB, const INTEGER *LDBB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- chbgv --------------------------------------------------------------------- void LAPACK_IMPL(chbgv)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *BB, const INTEGER *LDBB, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- chbgvd -------------------------------------------------------------------- void LAPACK_IMPL(chbgvd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *BB, const INTEGER *LDBB, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- chbgvx -------------------------------------------------------------------- void LAPACK_IMPL(chbgvx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *BB, const INTEGER *LDBB, FLOAT_COMPLEX *Q, const INTEGER *LDQ, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- chbtrd -------------------------------------------------------------------- void LAPACK_IMPL(chbtrd)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- checon -------------------------------------------------------------------- void LAPACK_IMPL(checon)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cheequb ------------------------------------------------------------------- void LAPACK_IMPL(cheequb)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, const FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cheev --------------------------------------------------------------------- void LAPACK_IMPL(cheev)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *W, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO); //-- cheevd -------------------------------------------------------------------- void LAPACK_IMPL(cheevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *W, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- cheevr -------------------------------------------------------------------- void LAPACK_IMPL(cheevr)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- cheevx -------------------------------------------------------------------- void LAPACK_IMPL(cheevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- chegs2 -------------------------------------------------------------------- void LAPACK_IMPL(chegs2)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- chegst -------------------------------------------------------------------- void LAPACK_IMPL(chegst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- chegv --------------------------------------------------------------------- void LAPACK_IMPL(chegv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT *W, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO); //-- chegvd -------------------------------------------------------------------- void LAPACK_IMPL(chegvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT *W, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- chegvx -------------------------------------------------------------------- void LAPACK_IMPL(chegvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- cherfs -------------------------------------------------------------------- void LAPACK_IMPL(cherfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cherfsx ------------------------------------------------------------------- void LAPACK_IMPL(cherfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, FLOAT *S, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- chesv --------------------------------------------------------------------- void LAPACK_IMPL(chesv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- chesvx -------------------------------------------------------------------- void LAPACK_IMPL(chesvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO); //-- chesvxx ------------------------------------------------------------------- void LAPACK_IMPL(chesvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, FLOAT *S, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cheswapr ------------------------------------------------------------------ void LAPACK_IMPL(cheswapr)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *I1, const INTEGER *I2); //-- chetd2 -------------------------------------------------------------------- void LAPACK_IMPL(chetd2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *TAU, INTEGER *INFO); //-- chetf2 -------------------------------------------------------------------- void LAPACK_IMPL(chetf2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO); //-- chetrd -------------------------------------------------------------------- void LAPACK_IMPL(chetrd)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- chetrf -------------------------------------------------------------------- void LAPACK_IMPL(chetrf)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- chetri -------------------------------------------------------------------- void LAPACK_IMPL(chetri)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- chetri2 ------------------------------------------------------------------- void LAPACK_IMPL(chetri2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- chetri2x ------------------------------------------------------------------ void LAPACK_IMPL(chetri2x)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, const INTEGER *NB, INTEGER *INFO); //-- chetrs -------------------------------------------------------------------- void LAPACK_IMPL(chetrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- chetrs2 ------------------------------------------------------------------- void LAPACK_IMPL(chetrs2)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- chfrk --------------------------------------------------------------------- void LAPACK_IMPL(chfrk)(const char *TRANSR, const char *UPLO, const char *TRANS, const INTEGER *N, const INTEGER *K, const FLOAT *ALPHA, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *BETA, FLOAT_COMPLEX *C); //-- chgeqz -------------------------------------------------------------------- void LAPACK_IMPL(chgeqz)(const char *JOB, const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *H, const INTEGER *LDH, FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO); //-- chla_transtype ------------------------------------------------------------ char LAPACK_IMPL(chla_transtype)(const INTEGER *TRANS); //-- chpcon -------------------------------------------------------------------- void LAPACK_IMPL(chpcon)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- chpev --------------------------------------------------------------------- void LAPACK_IMPL(chpev)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- chpevd -------------------------------------------------------------------- void LAPACK_IMPL(chpevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- chpevx -------------------------------------------------------------------- void LAPACK_IMPL(chpevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- chpgst -------------------------------------------------------------------- void LAPACK_IMPL(chpgst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *BP, INTEGER *INFO); //-- chpgv --------------------------------------------------------------------- void LAPACK_IMPL(chpgv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, FLOAT_COMPLEX *BP, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- chpgvd -------------------------------------------------------------------- void LAPACK_IMPL(chpgvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, FLOAT_COMPLEX *BP, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- chpgvx -------------------------------------------------------------------- void LAPACK_IMPL(chpgvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, FLOAT_COMPLEX *BP, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- chprfs -------------------------------------------------------------------- void LAPACK_IMPL(chprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *AFP, const INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- chpsv --------------------------------------------------------------------- void LAPACK_IMPL(chpsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *AP, INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- chpsvx -------------------------------------------------------------------- void LAPACK_IMPL(chpsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, FLOAT_COMPLEX *AFP, INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- chptrd -------------------------------------------------------------------- void LAPACK_IMPL(chptrd)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *TAU, INTEGER *INFO); //-- chptrf -------------------------------------------------------------------- void LAPACK_IMPL(chptrf)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, INTEGER *IPIV, INTEGER *INFO); //-- chptri -------------------------------------------------------------------- void LAPACK_IMPL(chptri)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- chptrs -------------------------------------------------------------------- void LAPACK_IMPL(chptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- chsein -------------------------------------------------------------------- void LAPACK_IMPL(chsein)(const char *SIDE, const char *EIGSRC, const char *INITV, const LOGICAL *SELECT, const INTEGER *N, const FLOAT_COMPLEX *H, const INTEGER *LDH, FLOAT_COMPLEX *W, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IFAILL, INTEGER *IFAILR, INTEGER *INFO); //-- chseqr -------------------------------------------------------------------- void LAPACK_IMPL(chseqr)(const char *JOB, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *H, const INTEGER *LDH, FLOAT_COMPLEX *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cla_gbamv ----------------------------------------------------------------- void LAPACK_IMPL(cla_gbamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT *ALPHA, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *X, const INTEGER *INCX, const FLOAT *BETA, FLOAT *Y, const INTEGER *INCY); //-- cla_gbrcond_c ------------------------------------------------------------- FLOAT LAPACK_IMPL(cla_gbrcond_c)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const FLOAT *C, const LOGICAL *CAPPLY, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK); //-- cla_gbrcond_x ------------------------------------------------------------- FLOAT LAPACK_IMPL(cla_gbrcond_x)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const FLOAT_COMPLEX *X, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK); //-- cla_gbrfsx_extended ------------------------------------------------------- void LAPACK_IMPL(cla_gbrfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT_COMPLEX *RES, const FLOAT *AYB, const FLOAT_COMPLEX *DY, const FLOAT_COMPLEX *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- cla_gbrpvgrw -------------------------------------------------------------- FLOAT LAPACK_IMPL(cla_gbrpvgrw)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NCOLS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *AFB, const INTEGER *LDAFB); //-- cla_geamv ----------------------------------------------------------------- void LAPACK_IMPL(cla_geamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const FLOAT *ALPHA, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *X, const INTEGER *INCX, const FLOAT *BETA, FLOAT *Y, const INTEGER *INCY); //-- cla_gercond_c ------------------------------------------------------------- FLOAT LAPACK_IMPL(cla_gercond_c)(const char *TRANS, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *C, const LOGICAL *CAPPLY, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK); //-- cla_gercond_x ------------------------------------------------------------- FLOAT LAPACK_IMPL(cla_gercond_x)(const char *TRANS, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT_COMPLEX *X, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK); //-- cla_gerfsx_extended ------------------------------------------------------- void LAPACK_IMPL(cla_gerfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, const FLOAT *ERRS_N, const FLOAT *ERRS_C, const FLOAT_COMPLEX *RES, const FLOAT *AYB, const FLOAT_COMPLEX *DY, const FLOAT_COMPLEX *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- cla_heamv ----------------------------------------------------------------- void LAPACK_IMPL(cla_heamv)(const INTEGER *UPLO, const INTEGER *N, const FLOAT *ALPHA, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *X, const INTEGER *INCX, const FLOAT *BETA, FLOAT *Y, const INTEGER *INCY); //-- cla_hercond_c ------------------------------------------------------------- FLOAT LAPACK_IMPL(cla_hercond_c)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *C, const LOGICAL *CAPPLY, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK); //-- cla_hercond_x ------------------------------------------------------------- FLOAT LAPACK_IMPL(cla_hercond_x)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT_COMPLEX *X, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK); //-- cla_herfsx_extended ------------------------------------------------------- void LAPACK_IMPL(cla_herfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT_COMPLEX *RES, const FLOAT *AYB, const FLOAT_COMPLEX *DY, const FLOAT_COMPLEX *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- cla_herpvgrw -------------------------------------------------------------- FLOAT LAPACK_IMPL(cla_herpvgrw)(const char *UPLO, const INTEGER *N, const INTEGER *INFO, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *WORK); //-- cla_lin_berr -------------------------------------------------------------- void LAPACK_IMPL(cla_lin_berr)(const INTEGER *N, const INTEGER *NZ, const INTEGER *NRHS, const FLOAT_COMPLEX *RES, const FLOAT *AYB, FLOAT *BERR); //-- cla_porcond_c ------------------------------------------------------------- FLOAT LAPACK_IMPL(cla_porcond_c)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const FLOAT *C, const LOGICAL *CAPPLY, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK); //-- cla_porcond_x ------------------------------------------------------------- FLOAT LAPACK_IMPL(cla_porcond_x)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const FLOAT_COMPLEX *X, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK); //-- cla_porfsx_extended ------------------------------------------------------- void LAPACK_IMPL(cla_porfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT_COMPLEX *RES, const FLOAT *AYB, const FLOAT_COMPLEX *DY, const FLOAT_COMPLEX *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- cla_porpvgrw -------------------------------------------------------------- FLOAT LAPACK_IMPL(cla_porpvgrw)(const char *UPLO, const INTEGER *NCOLS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const FLOAT *WORK); //-- cla_rpvgrw ---------------------------------------------------------------- FLOAT LAPACK_IMPL(cla_rpvgrw)(const INTEGER *N, const INTEGER *NCOLS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF); //-- cla_syamv ----------------------------------------------------------------- void LAPACK_IMPL(cla_syamv)(const INTEGER *UPLO, const INTEGER *N, const FLOAT *ALPHA, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *X, const INTEGER *INCX, const FLOAT *BETA, FLOAT *Y, const INTEGER *INCY); //-- cla_syrcond_c ------------------------------------------------------------- FLOAT LAPACK_IMPL(cla_syrcond_c)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *C, const LOGICAL *CAPPLY, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK); //-- cla_syrcond_x ------------------------------------------------------------- FLOAT LAPACK_IMPL(cla_syrcond_x)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT_COMPLEX *X, INTEGER *INFO, const FLOAT_COMPLEX *WORK, const FLOAT *RWORK); //-- cla_syrfsx_extended ------------------------------------------------------- void LAPACK_IMPL(cla_syrfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT_COMPLEX *RES, const FLOAT *AYB, const FLOAT_COMPLEX *DY, const FLOAT_COMPLEX *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- cla_syrpvgrw -------------------------------------------------------------- FLOAT LAPACK_IMPL(cla_syrpvgrw)(const char *UPLO, const INTEGER *N, const INTEGER *INFO, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *WORK); //-- cla_wwaddw ---------------------------------------------------------------- void LAPACK_IMPL(cla_wwaddw)(const INTEGER *N, FLOAT_COMPLEX *X, FLOAT_COMPLEX *Y, const FLOAT_COMPLEX *W); //-- clabrd -------------------------------------------------------------------- void LAPACK_IMPL(clabrd)(const INTEGER *M, const INTEGER *N, const INTEGER *NB, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *TAUQ, FLOAT_COMPLEX *TAUP, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT_COMPLEX *Y, const INTEGER *LDY); //-- clacgv -------------------------------------------------------------------- void LAPACK_IMPL(clacgv)(const INTEGER *N, FLOAT_COMPLEX *X, const INTEGER *INCX); //-- clacn2 -------------------------------------------------------------------- void LAPACK_IMPL(clacn2)(const INTEGER *N, FLOAT_COMPLEX *V, FLOAT_COMPLEX *X, FLOAT *EST, INTEGER *KASE, INTEGER *ISAVE); //-- clacon -------------------------------------------------------------------- void LAPACK_IMPL(clacon)(const INTEGER *N, FLOAT_COMPLEX *V, FLOAT_COMPLEX *X, FLOAT *EST, INTEGER *KASE); //-- clacp2 -------------------------------------------------------------------- void LAPACK_IMPL(clacp2)(const char *UPLO, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB); //-- clacpy -------------------------------------------------------------------- void LAPACK_IMPL(clacpy)(const char *UPLO, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB); //-- clacrm -------------------------------------------------------------------- void LAPACK_IMPL(clacrm)(const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, const FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT *RWORK); //-- clacrt -------------------------------------------------------------------- void LAPACK_IMPL(clacrt)(const INTEGER *N, FLOAT_COMPLEX *CX, const INTEGER *INCX, FLOAT_COMPLEX *CY, const INTEGER *INCY, const FLOAT_COMPLEX *C, const FLOAT_COMPLEX *S); //-- cladiv -------------------------------------------------------------------- FLOAT_COMPLEX LAPACK_IMPL(cladiv)(const FLOAT_COMPLEX *X, const FLOAT_COMPLEX *Y); //-- claed0 -------------------------------------------------------------------- void LAPACK_IMPL(claed0)(const INTEGER *QSIZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *QSTORE, const INTEGER *LDQS, FLOAT *RWORK, INTEGER *IWORK, INTEGER *INFO); //-- claed7 -------------------------------------------------------------------- void LAPACK_IMPL(claed7)(const INTEGER *N, const INTEGER *CUTPNT, const INTEGER *QSIZ, const INTEGER *TLVLS, const INTEGER *CURLVL, const INTEGER *CURPBM, FLOAT *D, FLOAT_COMPLEX *Q, const INTEGER *LDQ, const FLOAT *RHO, INTEGER *INDXQ, FLOAT *QSTORE, INTEGER *QPTR, const INTEGER *PRMPTR, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const FLOAT *GIVNUM, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *INFO); //-- claed8 -------------------------------------------------------------------- void LAPACK_IMPL(claed8)(INTEGER *K, const INTEGER *N, const INTEGER *QSIZ, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT *D, FLOAT *RHO, const INTEGER *CUTPNT, const FLOAT *Z, FLOAT *DLAMDA, FLOAT_COMPLEX *Q2, const INTEGER *LDQ2, FLOAT *W, INTEGER *INDXP, INTEGER *INDX, const INTEGER *INDXQ, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, FLOAT *GIVNUM, INTEGER *INFO); //-- claein -------------------------------------------------------------------- void LAPACK_IMPL(claein)(const LOGICAL *RIGHTV, const LOGICAL *NOINIT, const INTEGER *N, const FLOAT_COMPLEX *H, const INTEGER *LDH, const FLOAT_COMPLEX *W, FLOAT_COMPLEX *V, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT *RWORK, const FLOAT *EPS3, const FLOAT *SMLNUM, INTEGER *INFO); //-- claesy -------------------------------------------------------------------- void LAPACK_IMPL(claesy)(const FLOAT_COMPLEX *A, const FLOAT_COMPLEX *B, const FLOAT_COMPLEX *C, FLOAT_COMPLEX *RT1, FLOAT_COMPLEX *RT2, FLOAT_COMPLEX *EVSCAL, FLOAT_COMPLEX *CS1, FLOAT_COMPLEX *SN1); //-- claev2 -------------------------------------------------------------------- void LAPACK_IMPL(claev2)(const FLOAT_COMPLEX *A, const FLOAT_COMPLEX *B, const FLOAT_COMPLEX *C, FLOAT *RT1, FLOAT *RT2, FLOAT *CS1, FLOAT_COMPLEX *SN1); //-- clag2z -------------------------------------------------------------------- void LAPACK_IMPL(clag2z)(const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *SA, const INTEGER *LDSA, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- clags2 -------------------------------------------------------------------- void LAPACK_IMPL(clags2)(const LOGICAL *UPPER, const FLOAT *A1, const FLOAT_COMPLEX *A2, const FLOAT *A3, const FLOAT *B1, const FLOAT_COMPLEX *B2, const FLOAT *B3, FLOAT *CSU, FLOAT_COMPLEX *SNU, FLOAT *CSV, FLOAT_COMPLEX *SNV, FLOAT *CSQ, FLOAT_COMPLEX *SNQ); //-- clagtm -------------------------------------------------------------------- void LAPACK_IMPL(clagtm)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *ALPHA, const FLOAT_COMPLEX *DL, const FLOAT_COMPLEX *D, const FLOAT_COMPLEX *DU, const FLOAT_COMPLEX *X, const INTEGER *LDX, const FLOAT *BETA, FLOAT_COMPLEX *B, const INTEGER *LDB); //-- clahef -------------------------------------------------------------------- void LAPACK_IMPL(clahef)(const char *UPLO, const INTEGER *N, const INTEGER *NB, INTEGER *KB, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT_COMPLEX *W, const INTEGER *LDW, INTEGER *INFO); //-- clahqr -------------------------------------------------------------------- void LAPACK_IMPL(clahqr)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *H, const INTEGER *LDH, FLOAT_COMPLEX *W, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *INFO); //-- clahr2 -------------------------------------------------------------------- void LAPACK_IMPL(clahr2)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *Y, const INTEGER *LDY); //-- clahrd -------------------------------------------------------------------- void LAPACK_IMPL(clahrd)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *Y, const INTEGER *LDY); //-- claic1 -------------------------------------------------------------------- void LAPACK_IMPL(claic1)(const INTEGER *JOB, const INTEGER *J, const FLOAT_COMPLEX *X, const FLOAT *SEST, const FLOAT_COMPLEX *W, const FLOAT_COMPLEX *GAMMA, FLOAT *SESTPR, FLOAT_COMPLEX *S, FLOAT_COMPLEX *C); //-- clals0 -------------------------------------------------------------------- void LAPACK_IMPL(clals0)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, const INTEGER *NRHS, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *BX, const INTEGER *LDBX, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const FLOAT *GIVNUM, const INTEGER *LDGNUM, const FLOAT *POLES, const FLOAT *DIFL, const FLOAT *DIFR, const FLOAT *Z, const INTEGER *K, const FLOAT *C, const FLOAT *S, FLOAT *RWORK, INTEGER *INFO); //-- clalsa -------------------------------------------------------------------- void LAPACK_IMPL(clalsa)(const INTEGER *ICOMPQ, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *BX, const INTEGER *LDBX, const FLOAT *U, const INTEGER *LDU, const FLOAT *VT, const INTEGER *K, const FLOAT *DIFL, const FLOAT *DIFR, const FLOAT *Z, const FLOAT *POLES, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const INTEGER *PERM, const FLOAT *GIVNUM, const FLOAT *C, const FLOAT *S, FLOAT *RWORK, INTEGER *IWORK, INTEGER *INFO); //-- clalsd -------------------------------------------------------------------- void LAPACK_IMPL(clalsd)(const char *UPLO, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT *RCOND, INTEGER *RANK, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *IWORK, INTEGER *INFO); //-- clangb -------------------------------------------------------------------- FLOAT LAPACK_IMPL(clangb)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *WORK); //-- clange -------------------------------------------------------------------- FLOAT LAPACK_IMPL(clange)(const char *NORM, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *WORK); //-- clangt -------------------------------------------------------------------- FLOAT LAPACK_IMPL(clangt)(const char *NORM, const INTEGER *N, const FLOAT_COMPLEX *DL, const FLOAT_COMPLEX *D, const FLOAT_COMPLEX *DU); //-- clanhb -------------------------------------------------------------------- FLOAT LAPACK_IMPL(clanhb)(const char *NORM, const char *UPLO, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *WORK); //-- clanhe -------------------------------------------------------------------- FLOAT LAPACK_IMPL(clanhe)(const char *NORM, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *WORK); //-- clanhf -------------------------------------------------------------------- FLOAT LAPACK_IMPL(clanhf)(const char *NORM, const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, FLOAT *WORK); //-- clanhp -------------------------------------------------------------------- FLOAT LAPACK_IMPL(clanhp)(const char *NORM, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT *WORK); //-- clanhs -------------------------------------------------------------------- FLOAT LAPACK_IMPL(clanhs)(const char *NORM, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *WORK); //-- clanht -------------------------------------------------------------------- FLOAT LAPACK_IMPL(clanht)(const char *NORM, const INTEGER *N, const FLOAT *D, const FLOAT_COMPLEX *E); //-- clansb -------------------------------------------------------------------- FLOAT LAPACK_IMPL(clansb)(const char *NORM, const char *UPLO, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *WORK); //-- clansp -------------------------------------------------------------------- FLOAT LAPACK_IMPL(clansp)(const char *NORM, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT *WORK); //-- clansy -------------------------------------------------------------------- FLOAT LAPACK_IMPL(clansy)(const char *NORM, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *WORK); //-- clantb -------------------------------------------------------------------- FLOAT LAPACK_IMPL(clantb)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *WORK); //-- clantp -------------------------------------------------------------------- FLOAT LAPACK_IMPL(clantp)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT *WORK); //-- clantr -------------------------------------------------------------------- FLOAT LAPACK_IMPL(clantr)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *WORK); //-- clapll -------------------------------------------------------------------- void LAPACK_IMPL(clapll)(const INTEGER *N, FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT_COMPLEX *Y, const INTEGER *INCY, FLOAT *SSMIN); //-- clapmr -------------------------------------------------------------------- void LAPACK_IMPL(clapmr)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *X, const INTEGER *LDX, INTEGER *K); //-- clapmt -------------------------------------------------------------------- void LAPACK_IMPL(clapmt)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *X, const INTEGER *LDX, INTEGER *K); //-- claqgb -------------------------------------------------------------------- void LAPACK_IMPL(claqgb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT *R, const FLOAT *C, const FLOAT *ROWCND, const FLOAT *COLCND, const FLOAT *AMAX, char *EQUED); //-- claqge -------------------------------------------------------------------- void LAPACK_IMPL(claqge)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *R, const FLOAT *C, const FLOAT *ROWCND, const FLOAT *COLCND, const FLOAT *AMAX, char *EQUED); //-- claqhb -------------------------------------------------------------------- void LAPACK_IMPL(claqhb)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED); //-- claqhe -------------------------------------------------------------------- void LAPACK_IMPL(claqhe)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED); //-- claqhp -------------------------------------------------------------------- void LAPACK_IMPL(claqhp)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED); //-- claqp2 -------------------------------------------------------------------- void LAPACK_IMPL(claqp2)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT_COMPLEX *TAU, FLOAT *VN1, FLOAT *VN2, FLOAT_COMPLEX *WORK); //-- claqps -------------------------------------------------------------------- void LAPACK_IMPL(claqps)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, const INTEGER *NB, INTEGER *KB, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT_COMPLEX *TAU, FLOAT *VN1, FLOAT *VN2, FLOAT_COMPLEX *AUXV, FLOAT_COMPLEX *F, const INTEGER *LDF); //-- claqr0 -------------------------------------------------------------------- void LAPACK_IMPL(claqr0)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *H, const INTEGER *LDH, FLOAT_COMPLEX *W, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- claqr1 -------------------------------------------------------------------- void LAPACK_IMPL(claqr1)(const INTEGER *N, const FLOAT_COMPLEX *H, const INTEGER *LDH, const FLOAT_COMPLEX *S1, const FLOAT_COMPLEX *S2, FLOAT_COMPLEX *V); //-- claqr2 -------------------------------------------------------------------- void LAPACK_IMPL(claqr2)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, FLOAT_COMPLEX *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, FLOAT_COMPLEX *SH, FLOAT_COMPLEX *V, const INTEGER *LDV, const INTEGER *NH, FLOAT_COMPLEX *T, const INTEGER *LDT, const INTEGER *NV, FLOAT_COMPLEX *WV, const INTEGER *LDWV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK); //-- claqr3 -------------------------------------------------------------------- void LAPACK_IMPL(claqr3)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, FLOAT_COMPLEX *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, FLOAT_COMPLEX *SH, FLOAT_COMPLEX *V, const INTEGER *LDV, const INTEGER *NH, FLOAT_COMPLEX *T, const INTEGER *LDT, const INTEGER *NV, FLOAT_COMPLEX *WV, const INTEGER *LDWV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK); //-- claqr4 -------------------------------------------------------------------- void LAPACK_IMPL(claqr4)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *H, const INTEGER *LDH, FLOAT_COMPLEX *W, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- claqr5 -------------------------------------------------------------------- void LAPACK_IMPL(claqr5)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *KACC22, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NSHFTS, FLOAT_COMPLEX *S, FLOAT_COMPLEX *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *V, const INTEGER *LDV, FLOAT_COMPLEX *U, const INTEGER *LDU, const INTEGER *NV, FLOAT_COMPLEX *WV, const INTEGER *LDWV, const INTEGER *NH, FLOAT_COMPLEX *WH, const INTEGER *LDWH); //-- claqsb -------------------------------------------------------------------- void LAPACK_IMPL(claqsb)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED); //-- claqsp -------------------------------------------------------------------- void LAPACK_IMPL(claqsp)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED); //-- claqsy -------------------------------------------------------------------- void LAPACK_IMPL(claqsy)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED); //-- clar1v -------------------------------------------------------------------- void LAPACK_IMPL(clar1v)(const INTEGER *N, const INTEGER *B1, const INTEGER *BN, const FLOAT *LAMBDA, const FLOAT *D, const FLOAT *L, const FLOAT *LD, const FLOAT *LLD, const FLOAT *PIVMIN, const FLOAT *GAPTOL, FLOAT_COMPLEX *Z, const LOGICAL *WANTNC, INTEGER *NEGCNT, FLOAT *ZTZ, FLOAT *MINGMA, INTEGER *R, INTEGER *ISUPPZ, FLOAT *NRMINV, FLOAT *RESID, FLOAT *RQCORR, FLOAT *WORK); //-- clar2v -------------------------------------------------------------------- void LAPACK_IMPL(clar2v)(const INTEGER *N, FLOAT_COMPLEX *X, FLOAT_COMPLEX *Y, FLOAT_COMPLEX *Z, const INTEGER *INCX, const FLOAT *C, const FLOAT_COMPLEX *S, const INTEGER *INCC); //-- clarcm -------------------------------------------------------------------- void LAPACK_IMPL(clarcm)(const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT *RWORK); //-- clarf --------------------------------------------------------------------- void LAPACK_IMPL(clarf)(const char *SIDE, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *V, const INTEGER *INCV, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK); //-- clarfb -------------------------------------------------------------------- void LAPACK_IMPL(clarfb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *V, const INTEGER *LDV, const FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LDWORK); //-- clarfg -------------------------------------------------------------------- void LAPACK_IMPL(clarfg)(const INTEGER *N, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT_COMPLEX *TAU); //-- clarfgp ------------------------------------------------------------------- void LAPACK_IMPL(clarfgp)(const INTEGER *N, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT_COMPLEX *TAU); //-- clarft -------------------------------------------------------------------- void LAPACK_IMPL(clarft)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *V, const INTEGER *LDV, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *T, const INTEGER *LDT); //-- clarfx -------------------------------------------------------------------- void LAPACK_IMPL(clarfx)(const char *SIDE, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *V, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK); //-- clargv -------------------------------------------------------------------- void LAPACK_IMPL(clargv)(const INTEGER *N, FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT_COMPLEX *Y, const INTEGER *INCY, FLOAT *C, const INTEGER *INCC); //-- clarnv -------------------------------------------------------------------- void LAPACK_IMPL(clarnv)(const INTEGER *IDIST, INTEGER *ISEED, const INTEGER *N, FLOAT_COMPLEX *X); //-- clarrv -------------------------------------------------------------------- void LAPACK_IMPL(clarrv)(const INTEGER *N, const FLOAT *VL, const FLOAT *VU, FLOAT *D, FLOAT *L, const FLOAT *PIVMIN, const INTEGER *ISPLIT, const INTEGER *M, const INTEGER *DOL, const INTEGER *DOU, const FLOAT *MINRGP, const FLOAT *RTOL1, const FLOAT *RTOL2, FLOAT *W, FLOAT *WERR, FLOAT *WGAP, const INTEGER *IBLOCK, const INTEGER *INDEXW, const FLOAT *GERS, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- clarscl2 ------------------------------------------------------------------ void LAPACK_IMPL(clarscl2)(const INTEGER *M, const INTEGER *N, const FLOAT *D, FLOAT_COMPLEX *X, const INTEGER *LDX); //-- clartg -------------------------------------------------------------------- void LAPACK_IMPL(clartg)(const FLOAT_COMPLEX *F, const FLOAT_COMPLEX *G, FLOAT *CS, FLOAT_COMPLEX *SN, FLOAT_COMPLEX *R); //-- clartv -------------------------------------------------------------------- void LAPACK_IMPL(clartv)(const INTEGER *N, FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT_COMPLEX *Y, const INTEGER *INCY, const FLOAT *C, const FLOAT_COMPLEX *S, const INTEGER *INCC); //-- clarz --------------------------------------------------------------------- void LAPACK_IMPL(clarz)(const char *SIDE, const INTEGER *M, const INTEGER *N, const INTEGER *L, const FLOAT_COMPLEX *V, const INTEGER *INCV, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK); //-- clarzb -------------------------------------------------------------------- void LAPACK_IMPL(clarzb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const FLOAT_COMPLEX *V, const INTEGER *LDV, const FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LDWORK); //-- clarzt -------------------------------------------------------------------- void LAPACK_IMPL(clarzt)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *V, const INTEGER *LDV, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *T, const INTEGER *LDT); //-- clascl -------------------------------------------------------------------- void LAPACK_IMPL(clascl)(const char *TYPE, const INTEGER *KL, const INTEGER *KU, const FLOAT *CFROM, const FLOAT *CTO, const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- clascl2 ------------------------------------------------------------------- void LAPACK_IMPL(clascl2)(const INTEGER *M, const INTEGER *N, const FLOAT *D, FLOAT_COMPLEX *X, const INTEGER *LDX); //-- claset -------------------------------------------------------------------- void LAPACK_IMPL(claset)(const char *UPLO, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *ALPHA, const FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *A, const INTEGER *LDA); //-- clasr --------------------------------------------------------------------- void LAPACK_IMPL(clasr)(const char *SIDE, const char *PIVOT, const char *DIRECT, const INTEGER *M, const INTEGER *N, const FLOAT *C, const FLOAT *S, FLOAT_COMPLEX *A, const INTEGER *LDA); //-- classq -------------------------------------------------------------------- void LAPACK_IMPL(classq)(const INTEGER *N, const FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT *SCALE, FLOAT *SUMSQ); //-- claswp -------------------------------------------------------------------- void LAPACK_IMPL(claswp)(const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *K1, const INTEGER *K2, const INTEGER *IPIV, const INTEGER *INCX); //-- clasyf -------------------------------------------------------------------- void LAPACK_IMPL(clasyf)(const char *UPLO, const INTEGER *N, const INTEGER *NB, INTEGER *KB, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT_COMPLEX *W, const INTEGER *LDW, INTEGER *INFO); //-- clatbs -------------------------------------------------------------------- void LAPACK_IMPL(clatbs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const INTEGER *KD, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *X, FLOAT *SCALE, FLOAT *CNORM, INTEGER *INFO); //-- clatdf -------------------------------------------------------------------- void LAPACK_IMPL(clatdf)(const INTEGER *IJOB, const INTEGER *N, const FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *RHS, FLOAT *RDSUM, FLOAT *RDSCAL, const INTEGER *IPIV, const INTEGER *JPIV); //-- clatps -------------------------------------------------------------------- void LAPACK_IMPL(clatps)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT_COMPLEX *X, FLOAT *SCALE, FLOAT *CNORM, INTEGER *INFO); //-- clatrd -------------------------------------------------------------------- void LAPACK_IMPL(clatrd)(const char *UPLO, const INTEGER *N, const INTEGER *NB, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *E, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *W, const INTEGER *LDW); //-- clatrs -------------------------------------------------------------------- void LAPACK_IMPL(clatrs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *X, FLOAT *SCALE, FLOAT *CNORM, INTEGER *INFO); //-- clatrz -------------------------------------------------------------------- void LAPACK_IMPL(clatrz)(const INTEGER *M, const INTEGER *N, const INTEGER *L, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK); //-- clatzm -------------------------------------------------------------------- void LAPACK_IMPL(clatzm)(const char *SIDE, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *V, const INTEGER *INCV, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C1, FLOAT_COMPLEX *C2, const INTEGER *LDC, FLOAT_COMPLEX *WORK); //-- clauu2 -------------------------------------------------------------------- void LAPACK_IMPL(clauu2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- clauum -------------------------------------------------------------------- void LAPACK_IMPL(clauum)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- cpbcon -------------------------------------------------------------------- void LAPACK_IMPL(cpbcon)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cpbequ -------------------------------------------------------------------- void LAPACK_IMPL(cpbequ)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO); //-- cpbrfs -------------------------------------------------------------------- void LAPACK_IMPL(cpbrfs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cpbstf -------------------------------------------------------------------- void LAPACK_IMPL(cpbstf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, INTEGER *INFO); //-- cpbsv --------------------------------------------------------------------- void LAPACK_IMPL(cpbsv)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cpbsvx -------------------------------------------------------------------- void LAPACK_IMPL(cpbsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *AFB, const INTEGER *LDAFB, char *EQUED, FLOAT *S, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cpbtf2 -------------------------------------------------------------------- void LAPACK_IMPL(cpbtf2)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, INTEGER *INFO); //-- cpbtrf -------------------------------------------------------------------- void LAPACK_IMPL(cpbtrf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT_COMPLEX *AB, const INTEGER *LDAB, INTEGER *INFO); //-- cpbtrs -------------------------------------------------------------------- void LAPACK_IMPL(cpbtrs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cpftrf -------------------------------------------------------------------- void LAPACK_IMPL(cpftrf)(const char *TRANSR, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, INTEGER *INFO); //-- cpftri -------------------------------------------------------------------- void LAPACK_IMPL(cpftri)(const char *TRANSR, const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, INTEGER *INFO); //-- cpftrs -------------------------------------------------------------------- void LAPACK_IMPL(cpftrs)(const char *TRANSR, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cpocon -------------------------------------------------------------------- void LAPACK_IMPL(cpocon)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cpoequ -------------------------------------------------------------------- void LAPACK_IMPL(cpoequ)(const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO); //-- cpoequb ------------------------------------------------------------------- void LAPACK_IMPL(cpoequb)(const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO); //-- cporfs -------------------------------------------------------------------- void LAPACK_IMPL(cporfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cporfsx ------------------------------------------------------------------- void LAPACK_IMPL(cporfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, FLOAT *S, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cposv --------------------------------------------------------------------- void LAPACK_IMPL(cposv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cposvx -------------------------------------------------------------------- void LAPACK_IMPL(cposvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, char *EQUED, FLOAT *S, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cposvxx ------------------------------------------------------------------- void LAPACK_IMPL(cposvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, char *EQUED, FLOAT *S, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cpotf2 -------------------------------------------------------------------- void LAPACK_IMPL(cpotf2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- cpotrf -------------------------------------------------------------------- void LAPACK_IMPL(cpotrf)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- cpotri -------------------------------------------------------------------- void LAPACK_IMPL(cpotri)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- cpotrs -------------------------------------------------------------------- void LAPACK_IMPL(cpotrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cppcon -------------------------------------------------------------------- void LAPACK_IMPL(cppcon)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cppequ -------------------------------------------------------------------- void LAPACK_IMPL(cppequ)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO); //-- cpprfs -------------------------------------------------------------------- void LAPACK_IMPL(cpprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *AFP, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cppsv --------------------------------------------------------------------- void LAPACK_IMPL(cppsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *AP, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cppsvx -------------------------------------------------------------------- void LAPACK_IMPL(cppsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *AP, FLOAT_COMPLEX *AFP, char *EQUED, FLOAT *S, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cpptrf -------------------------------------------------------------------- void LAPACK_IMPL(cpptrf)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, INTEGER *INFO); //-- cpptri -------------------------------------------------------------------- void LAPACK_IMPL(cpptri)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, INTEGER *INFO); //-- cpptrs -------------------------------------------------------------------- void LAPACK_IMPL(cpptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cpstf2 -------------------------------------------------------------------- void LAPACK_IMPL(cpstf2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const FLOAT *TOL, FLOAT *WORK, INTEGER *INFO); //-- cpstrf -------------------------------------------------------------------- void LAPACK_IMPL(cpstrf)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const FLOAT *TOL, FLOAT *WORK, INTEGER *INFO); //-- cptcon -------------------------------------------------------------------- void LAPACK_IMPL(cptcon)(const INTEGER *N, const FLOAT *D, const FLOAT_COMPLEX *E, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *RWORK, INTEGER *INFO); //-- cpteqr -------------------------------------------------------------------- void LAPACK_IMPL(cpteqr)(const char *COMPZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO); //-- cptrfs -------------------------------------------------------------------- void LAPACK_IMPL(cptrfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT_COMPLEX *E, const FLOAT *DF, const FLOAT_COMPLEX *EF, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cptsv --------------------------------------------------------------------- void LAPACK_IMPL(cptsv)(const INTEGER *N, const INTEGER *NRHS, FLOAT *D, FLOAT_COMPLEX *E, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cptsvx -------------------------------------------------------------------- void LAPACK_IMPL(cptsvx)(const char *FACT, const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT_COMPLEX *E, FLOAT *DF, FLOAT_COMPLEX *EF, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cpttrf -------------------------------------------------------------------- void LAPACK_IMPL(cpttrf)(const INTEGER *N, FLOAT *D, FLOAT_COMPLEX *E, INTEGER *INFO); //-- cpttrs -------------------------------------------------------------------- void LAPACK_IMPL(cpttrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT_COMPLEX *E, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cptts2 -------------------------------------------------------------------- void LAPACK_IMPL(cptts2)(const INTEGER *IUPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT_COMPLEX *E, FLOAT_COMPLEX *B, const INTEGER *LDB); //-- crot ---------------------------------------------------------------------- void LAPACK_IMPL(crot)(const INTEGER *N, FLOAT_COMPLEX *CX, const INTEGER *INCX, FLOAT_COMPLEX *CY, const INTEGER *INCY, const FLOAT *C, const FLOAT_COMPLEX *S); //-- cspcon -------------------------------------------------------------------- void LAPACK_IMPL(cspcon)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cspmv --------------------------------------------------------------------- void LAPACK_IMPL(cspmv)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *ALPHA, const FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *X, const INTEGER *INCX, const FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *Y, const INTEGER *INCY); //-- cspr ---------------------------------------------------------------------- void LAPACK_IMPL(cspr)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *ALPHA, const FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT_COMPLEX *AP); //-- csprfs -------------------------------------------------------------------- void LAPACK_IMPL(csprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *AFP, const INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- cspsv --------------------------------------------------------------------- void LAPACK_IMPL(cspsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *AP, INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- cspsvx -------------------------------------------------------------------- void LAPACK_IMPL(cspsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, FLOAT_COMPLEX *AFP, INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- csptrf -------------------------------------------------------------------- void LAPACK_IMPL(csptrf)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, INTEGER *IPIV, INTEGER *INFO); //-- csptri -------------------------------------------------------------------- void LAPACK_IMPL(csptri)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *AP, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- csptrs -------------------------------------------------------------------- void LAPACK_IMPL(csptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- csrscl -------------------------------------------------------------------- void LAPACK_IMPL(csrscl)(const INTEGER *N, const FLOAT *SA, FLOAT_COMPLEX *SX, const INTEGER *INCX); //-- cstedc -------------------------------------------------------------------- void LAPACK_IMPL(cstedc)(const char *COMPZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- cstegr -------------------------------------------------------------------- void LAPACK_IMPL(cstegr)(const char *JOBZ, const char *RANGE, const INTEGER *N, FLOAT *D, FLOAT *E, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- cstein -------------------------------------------------------------------- void LAPACK_IMPL(cstein)(const INTEGER *N, const FLOAT *D, const FLOAT *E, const INTEGER *M, const FLOAT *W, const INTEGER *IBLOCK, const INTEGER *ISPLIT, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- cstemr -------------------------------------------------------------------- void LAPACK_IMPL(cstemr)(const char *JOBZ, const char *RANGE, const INTEGER *N, FLOAT *D, FLOAT *E, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, INTEGER *M, FLOAT *W, FLOAT_COMPLEX *Z, const INTEGER *LDZ, const INTEGER *NZC, INTEGER *ISUPPZ, LOGICAL *TRYRAC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- csteqr -------------------------------------------------------------------- void LAPACK_IMPL(csteqr)(const char *COMPZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT_COMPLEX *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO); //-- csycon -------------------------------------------------------------------- void LAPACK_IMPL(csycon)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- csyconv ------------------------------------------------------------------- void LAPACK_IMPL(csyconv)(const char *UPLO, const char *WAY, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- csyequb ------------------------------------------------------------------- void LAPACK_IMPL(csyequb)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- csymv --------------------------------------------------------------------- void LAPACK_IMPL(csymv)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *ALPHA, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *X, const INTEGER *INCX, const FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *Y, const INTEGER *INCY); //-- csyr ---------------------------------------------------------------------- void LAPACK_IMPL(csyr)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *ALPHA, const FLOAT_COMPLEX *X, const INTEGER *INCX, FLOAT_COMPLEX *A, const INTEGER *LDA); //-- csyrfs -------------------------------------------------------------------- void LAPACK_IMPL(csyrfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- csyrfsx ------------------------------------------------------------------- void LAPACK_IMPL(csyrfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, FLOAT *S, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- csysv --------------------------------------------------------------------- void LAPACK_IMPL(csysv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- csysvx -------------------------------------------------------------------- void LAPACK_IMPL(csysvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, INTEGER *INFO); //-- csysvxx ------------------------------------------------------------------- void LAPACK_IMPL(csysvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, FLOAT *S, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- csyswapr ------------------------------------------------------------------ void LAPACK_IMPL(csyswapr)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *I1, const INTEGER *I2); //-- csytf2 -------------------------------------------------------------------- void LAPACK_IMPL(csytf2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO); //-- csytrf -------------------------------------------------------------------- void LAPACK_IMPL(csytrf)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- csytri -------------------------------------------------------------------- void LAPACK_IMPL(csytri)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- csytri2 ------------------------------------------------------------------- void LAPACK_IMPL(csytri2)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- csytri2x ------------------------------------------------------------------ void LAPACK_IMPL(csytri2x)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *WORK, const INTEGER *NB, INTEGER *INFO); //-- csytrs -------------------------------------------------------------------- void LAPACK_IMPL(csytrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- csytrs2 ------------------------------------------------------------------- void LAPACK_IMPL(csytrs2)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- ctbcon -------------------------------------------------------------------- void LAPACK_IMPL(ctbcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *KD, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- ctbrfs -------------------------------------------------------------------- void LAPACK_IMPL(ctbrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, const FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- ctbtrs -------------------------------------------------------------------- void LAPACK_IMPL(ctbtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT_COMPLEX *AB, const INTEGER *LDAB, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- ctfsm --------------------------------------------------------------------- void LAPACK_IMPL(ctfsm)(const char *TRANSR, const char *SIDE, const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *ALPHA, const FLOAT_COMPLEX *A, FLOAT_COMPLEX *B, const INTEGER *LDB); //-- ctftri -------------------------------------------------------------------- void LAPACK_IMPL(ctftri)(const char *TRANSR, const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT_COMPLEX *A, INTEGER *INFO); //-- ctfttp -------------------------------------------------------------------- void LAPACK_IMPL(ctfttp)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *ARF, FLOAT_COMPLEX *AP, INTEGER *INFO); //-- ctfttr -------------------------------------------------------------------- void LAPACK_IMPL(ctfttr)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *ARF, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- ctgevc -------------------------------------------------------------------- void LAPACK_IMPL(ctgevc)(const char *SIDE, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const FLOAT_COMPLEX *S, const INTEGER *LDS, const FLOAT_COMPLEX *P, const INTEGER *LDP, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- ctgex2 -------------------------------------------------------------------- void LAPACK_IMPL(ctgex2)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, const INTEGER *J1, INTEGER *INFO); //-- ctgexc -------------------------------------------------------------------- void LAPACK_IMPL(ctgexc)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, const INTEGER *IFST, INTEGER *ILST, INTEGER *INFO); //-- ctgsen -------------------------------------------------------------------- void LAPACK_IMPL(ctgsen)(const INTEGER *IJOB, const LOGICAL *WANTQ, const LOGICAL *WANTZ, const LOGICAL *SELECT, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *ALPHA, FLOAT_COMPLEX *BETA, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *Z, const INTEGER *LDZ, INTEGER *M, FLOAT *PL, FLOAT *PR, FLOAT *DIF, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- ctgsja -------------------------------------------------------------------- void LAPACK_IMPL(ctgsja)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, const INTEGER *K, const INTEGER *L, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT *TOLA, const FLOAT *TOLB, FLOAT *ALPHA, FLOAT *BETA, FLOAT_COMPLEX *U, const INTEGER *LDU, FLOAT_COMPLEX *V, const INTEGER *LDV, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *WORK, INTEGER *NCYCLE, INTEGER *INFO); //-- ctgsna -------------------------------------------------------------------- void LAPACK_IMPL(ctgsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT_COMPLEX *VL, const INTEGER *LDVL, const FLOAT_COMPLEX *VR, const INTEGER *LDVR, FLOAT *S, FLOAT *DIF, const INTEGER *MM, INTEGER *M, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- ctgsy2 -------------------------------------------------------------------- void LAPACK_IMPL(ctgsy2)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *C, const INTEGER *LDC, const FLOAT_COMPLEX *D, const INTEGER *LDD, const FLOAT_COMPLEX *E, const INTEGER *LDE, FLOAT_COMPLEX *F, const INTEGER *LDF, FLOAT *SCALE, FLOAT *RDSUM, FLOAT *RDSCAL, INTEGER *INFO); //-- ctgsyl -------------------------------------------------------------------- void LAPACK_IMPL(ctgsyl)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *C, const INTEGER *LDC, const FLOAT_COMPLEX *D, const INTEGER *LDD, const FLOAT_COMPLEX *E, const INTEGER *LDE, FLOAT_COMPLEX *F, const INTEGER *LDF, FLOAT *SCALE, FLOAT *DIF, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- ctpcon -------------------------------------------------------------------- void LAPACK_IMPL(ctpcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- ctprfs -------------------------------------------------------------------- void LAPACK_IMPL(ctprfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- ctptri -------------------------------------------------------------------- void LAPACK_IMPL(ctptri)(const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT_COMPLEX *AP, INTEGER *INFO); //-- ctptrs -------------------------------------------------------------------- void LAPACK_IMPL(ctptrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *AP, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- ctpttf -------------------------------------------------------------------- void LAPACK_IMPL(ctpttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT_COMPLEX *ARF, INTEGER *INFO); //-- ctpttr -------------------------------------------------------------------- void LAPACK_IMPL(ctpttr)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- ctrcon -------------------------------------------------------------------- void LAPACK_IMPL(ctrcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT *RCOND, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- ctrevc -------------------------------------------------------------------- void LAPACK_IMPL(ctrevc)(const char *SIDE, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *VL, const INTEGER *LDVL, FLOAT_COMPLEX *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- ctrexc -------------------------------------------------------------------- void LAPACK_IMPL(ctrexc)(const char *COMPQ, const INTEGER *N, FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *Q, const INTEGER *LDQ, const INTEGER *IFST, const INTEGER *ILST, INTEGER *INFO); //-- ctrrfs -------------------------------------------------------------------- void LAPACK_IMPL(ctrrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, const FLOAT_COMPLEX *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT_COMPLEX *WORK, FLOAT *RWORK, INTEGER *INFO); //-- ctrsen -------------------------------------------------------------------- void LAPACK_IMPL(ctrsen)(const char *JOB, const char *COMPQ, const LOGICAL *SELECT, const INTEGER *N, FLOAT_COMPLEX *T, const INTEGER *LDT, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *W, INTEGER *M, FLOAT *S, FLOAT *SEP, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- ctrsna -------------------------------------------------------------------- void LAPACK_IMPL(ctrsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const FLOAT_COMPLEX *T, const INTEGER *LDT, const FLOAT_COMPLEX *VL, const INTEGER *LDVL, const FLOAT_COMPLEX *VR, const INTEGER *LDVR, FLOAT *S, FLOAT *SEP, const INTEGER *MM, INTEGER *M, FLOAT_COMPLEX *WORK, const INTEGER *LDWORK, FLOAT *RWORK, INTEGER *INFO); //-- ctrsyl -------------------------------------------------------------------- void LAPACK_IMPL(ctrsyl)(const char *TRANA, const char *TRANB, const INTEGER *ISGN, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *B, const INTEGER *LDB, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT *SCALE, INTEGER *INFO); //-- ctrti2 -------------------------------------------------------------------- void LAPACK_IMPL(ctrti2)(const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- ctrtri -------------------------------------------------------------------- void LAPACK_IMPL(ctrtri)(const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- ctrtrs -------------------------------------------------------------------- void LAPACK_IMPL(ctrtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- ctrttf -------------------------------------------------------------------- void LAPACK_IMPL(ctrttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *ARF, INTEGER *INFO); //-- ctrttp -------------------------------------------------------------------- void LAPACK_IMPL(ctrttp)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *AP, INTEGER *INFO); //-- ctzrqf -------------------------------------------------------------------- void LAPACK_IMPL(ctzrqf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, INTEGER *INFO); //-- ctzrzf -------------------------------------------------------------------- void LAPACK_IMPL(ctzrzf)(const INTEGER *M, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cunbdb -------------------------------------------------------------------- void LAPACK_IMPL(cunbdb)(const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, FLOAT_COMPLEX *X11, const INTEGER *LDX11, FLOAT_COMPLEX *X12, const INTEGER *LDX12, FLOAT_COMPLEX *X21, const INTEGER *LDX21, FLOAT_COMPLEX *X22, const INTEGER *LDX22, FLOAT *THETA, FLOAT *PHI, FLOAT_COMPLEX *TAUP1, FLOAT_COMPLEX *TAUP2, FLOAT_COMPLEX *TAUQ1, FLOAT_COMPLEX *TAUQ2, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cuncsd -------------------------------------------------------------------- void LAPACK_IMPL(cuncsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, const FLOAT_COMPLEX *X11, const INTEGER *LDX11, const FLOAT_COMPLEX *X12, const INTEGER *LDX12, const FLOAT_COMPLEX *X21, const INTEGER *LDX21, const FLOAT_COMPLEX *X22, const INTEGER *LDX22, FLOAT *THETA, FLOAT_COMPLEX *U1, const INTEGER *LDU1, FLOAT_COMPLEX *U2, const INTEGER *LDU2, FLOAT_COMPLEX *V1T, const INTEGER *LDV1T, FLOAT_COMPLEX *V2T, const INTEGER *LDV2T, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, FLOAT *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, INTEGER *INFO); //-- cung2l -------------------------------------------------------------------- void LAPACK_IMPL(cung2l)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cung2r -------------------------------------------------------------------- void LAPACK_IMPL(cung2r)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cungbr -------------------------------------------------------------------- void LAPACK_IMPL(cungbr)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cunghr -------------------------------------------------------------------- void LAPACK_IMPL(cunghr)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cungl2 -------------------------------------------------------------------- void LAPACK_IMPL(cungl2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cunglq -------------------------------------------------------------------- void LAPACK_IMPL(cunglq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cungql -------------------------------------------------------------------- void LAPACK_IMPL(cungql)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cungqr -------------------------------------------------------------------- void LAPACK_IMPL(cungqr)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cungr2 -------------------------------------------------------------------- void LAPACK_IMPL(cungr2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cungrq -------------------------------------------------------------------- void LAPACK_IMPL(cungrq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cungtr -------------------------------------------------------------------- void LAPACK_IMPL(cungtr)(const char *UPLO, const INTEGER *N, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cunm2l -------------------------------------------------------------------- void LAPACK_IMPL(cunm2l)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cunm2r -------------------------------------------------------------------- void LAPACK_IMPL(cunm2r)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cunmbr -------------------------------------------------------------------- void LAPACK_IMPL(cunmbr)(const char *VECT, const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cunmhr -------------------------------------------------------------------- void LAPACK_IMPL(cunmhr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cunml2 -------------------------------------------------------------------- void LAPACK_IMPL(cunml2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cunmlq -------------------------------------------------------------------- void LAPACK_IMPL(cunmlq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cunmql -------------------------------------------------------------------- void LAPACK_IMPL(cunmql)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cunmqr -------------------------------------------------------------------- void LAPACK_IMPL(cunmqr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cunmr2 -------------------------------------------------------------------- void LAPACK_IMPL(cunmr2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cunmr3 -------------------------------------------------------------------- void LAPACK_IMPL(cunmr3)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cunmrq -------------------------------------------------------------------- void LAPACK_IMPL(cunmrq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cunmrz -------------------------------------------------------------------- void LAPACK_IMPL(cunmrz)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cunmtr -------------------------------------------------------------------- void LAPACK_IMPL(cunmtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- cupgtr -------------------------------------------------------------------- void LAPACK_IMPL(cupgtr)(const char *UPLO, const INTEGER *N, const FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *Q, const INTEGER *LDQ, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- cupmtr -------------------------------------------------------------------- void LAPACK_IMPL(cupmtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *AP, const FLOAT_COMPLEX *TAU, FLOAT_COMPLEX *C, const INTEGER *LDC, FLOAT_COMPLEX *WORK, INTEGER *INFO); //-- dbbcsd -------------------------------------------------------------------- void LAPACK_IMPL(dbbcsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, DOUBLE *THETA, DOUBLE *PHI, DOUBLE *U1, const INTEGER *LDU1, DOUBLE *U2, const INTEGER *LDU2, DOUBLE *V1T, const INTEGER *LDV1T, DOUBLE *V2T, const INTEGER *LDV2T, DOUBLE *B11D, DOUBLE *B11E, DOUBLE *B12D, DOUBLE *B12E, const DOUBLE *B21D, const DOUBLE *B21E, const DOUBLE *B22D, const DOUBLE *B22E, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dbdsdc -------------------------------------------------------------------- void LAPACK_IMPL(dbdsdc)(const char *UPLO, const char *COMPQ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE *U, const INTEGER *LDU, DOUBLE *VT, const INTEGER *LDVT, DOUBLE *Q, INTEGER *IQ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dbdsqr -------------------------------------------------------------------- void LAPACK_IMPL(dbdsqr)(const char *UPLO, const INTEGER *N, const INTEGER *NCVT, const INTEGER *NRU, const INTEGER *NCC, DOUBLE *D, DOUBLE *E, DOUBLE *VT, const INTEGER *LDVT, DOUBLE *U, const INTEGER *LDU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO); //-- ddisna -------------------------------------------------------------------- void LAPACK_IMPL(ddisna)(const char *JOB, const INTEGER *M, const INTEGER *N, const DOUBLE *D, DOUBLE *SEP, INTEGER *INFO); //-- dgbbrd -------------------------------------------------------------------- void LAPACK_IMPL(dgbbrd)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *NCC, const INTEGER *KL, const INTEGER *KU, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *D, DOUBLE *E, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *PT, const INTEGER *LDPT, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO); //-- dgbcon -------------------------------------------------------------------- void LAPACK_IMPL(dgbcon)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE *AB, const INTEGER *LDAB, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dgbequ -------------------------------------------------------------------- void LAPACK_IMPL(dgbequ)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO); //-- dgbequb ------------------------------------------------------------------- void LAPACK_IMPL(dgbequb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO); //-- dgbrfs -------------------------------------------------------------------- void LAPACK_IMPL(dgbrfs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dgbrfsx ------------------------------------------------------------------- void LAPACK_IMPL(dgbrfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, DOUBLE *R, DOUBLE *C, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dgbsv --------------------------------------------------------------------- void LAPACK_IMPL(dgbsv)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, DOUBLE *AB, const INTEGER *LDAB, INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dgbsvx -------------------------------------------------------------------- void LAPACK_IMPL(dgbsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *AFB, const INTEGER *LDAFB, INTEGER *IPIV, char *EQUED, DOUBLE *R, DOUBLE *C, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dgbsvxx ------------------------------------------------------------------- void LAPACK_IMPL(dgbsvxx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *AFB, const INTEGER *LDAFB, INTEGER *IPIV, char *EQUED, DOUBLE *R, DOUBLE *C, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dgbtf2 -------------------------------------------------------------------- void LAPACK_IMPL(dgbtf2)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, DOUBLE *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO); //-- dgbtrf -------------------------------------------------------------------- void LAPACK_IMPL(dgbtrf)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, DOUBLE *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO); //-- dgbtrs -------------------------------------------------------------------- void LAPACK_IMPL(dgbtrs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, const INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dgebak -------------------------------------------------------------------- void LAPACK_IMPL(dgebak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const DOUBLE *SCALE, const INTEGER *M, DOUBLE *V, const INTEGER *LDV, INTEGER *INFO); //-- dgebal -------------------------------------------------------------------- void LAPACK_IMPL(dgebal)(const char *JOB, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *ILO, INTEGER *IHI, DOUBLE *SCALE, INTEGER *INFO); //-- dgebd2 -------------------------------------------------------------------- void LAPACK_IMPL(dgebd2)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE *TAUQ, DOUBLE *TAUP, DOUBLE *WORK, INTEGER *INFO); //-- dgebrd -------------------------------------------------------------------- void LAPACK_IMPL(dgebrd)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE *TAUQ, DOUBLE *TAUP, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgecon -------------------------------------------------------------------- void LAPACK_IMPL(dgecon)(const char *NORM, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dgeequ -------------------------------------------------------------------- void LAPACK_IMPL(dgeequ)(const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO); //-- dgeequb ------------------------------------------------------------------- void LAPACK_IMPL(dgeequb)(const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO); //-- dgees --------------------------------------------------------------------- void LAPACK_IMPL(dgees)(const char *JOBVS, const char *SORT, LOGICAL (*SELECT)(const DOUBLE *, const DOUBLE *), const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *SDIM, DOUBLE *WR, DOUBLE *WI, DOUBLE *VS, const INTEGER *LDVS, DOUBLE *WORK, const INTEGER *LWORK, LOGICAL *BWORK, INTEGER *INFO); //-- dgeesx -------------------------------------------------------------------- void LAPACK_IMPL(dgeesx)(const char *JOBVS, const char *SORT, LOGICAL (*SELECT)(const DOUBLE *, const DOUBLE *), const char *SENSE, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *SDIM, DOUBLE *WR, DOUBLE *WI, DOUBLE *VS, const INTEGER *LDVS, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, LOGICAL *BWORK, INTEGER *INFO); //-- dgeev --------------------------------------------------------------------- void LAPACK_IMPL(dgeev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *WR, DOUBLE *WI, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgeevx -------------------------------------------------------------------- void LAPACK_IMPL(dgeevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *WR, DOUBLE *WI, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, DOUBLE *SCALE, DOUBLE *ABNRM, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- dgegs --------------------------------------------------------------------- void LAPACK_IMPL(dgegs)(const char *JOBVSL, const char *JOBVSR, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *VSL, const INTEGER *LDVSL, DOUBLE *VSR, const INTEGER *LDVSR, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgegv --------------------------------------------------------------------- void LAPACK_IMPL(dgegv)(const char *JOBVL, const char *JOBVR, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgehd2 -------------------------------------------------------------------- void LAPACK_IMPL(dgehd2)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO); //-- dgehrd -------------------------------------------------------------------- void LAPACK_IMPL(dgehrd)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgejsv -------------------------------------------------------------------- void LAPACK_IMPL(dgejsv)(const char *JOBA, const char *JOBU, const char *JOBV, const char *JOBR, const char *JOBT, const char *JOBP, const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *SVA, DOUBLE *U, const INTEGER *LDU, DOUBLE *V, const INTEGER *LDV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- dgelq2 -------------------------------------------------------------------- void LAPACK_IMPL(dgelq2)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO); //-- dgelqf -------------------------------------------------------------------- void LAPACK_IMPL(dgelqf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgels --------------------------------------------------------------------- void LAPACK_IMPL(dgels)(const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgelsd -------------------------------------------------------------------- void LAPACK_IMPL(dgelsd)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *S, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- dgelss -------------------------------------------------------------------- void LAPACK_IMPL(dgelss)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *S, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgelsx -------------------------------------------------------------------- void LAPACK_IMPL(dgelsx)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *JPVT, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE *WORK, INTEGER *INFO); //-- dgelsy -------------------------------------------------------------------- void LAPACK_IMPL(dgelsy)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *JPVT, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgeql2 -------------------------------------------------------------------- void LAPACK_IMPL(dgeql2)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO); //-- dgeqlf -------------------------------------------------------------------- void LAPACK_IMPL(dgeqlf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgeqp3 -------------------------------------------------------------------- void LAPACK_IMPL(dgeqp3)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgeqpf -------------------------------------------------------------------- void LAPACK_IMPL(dgeqpf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO); //-- dgeqr2 -------------------------------------------------------------------- void LAPACK_IMPL(dgeqr2)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO); //-- dgeqr2p ------------------------------------------------------------------- void LAPACK_IMPL(dgeqr2p)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO); //-- dgeqrf -------------------------------------------------------------------- void LAPACK_IMPL(dgeqrf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgeqrfp ------------------------------------------------------------------- void LAPACK_IMPL(dgeqrfp)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgerfs -------------------------------------------------------------------- void LAPACK_IMPL(dgerfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dgerfsx ------------------------------------------------------------------- void LAPACK_IMPL(dgerfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *R, const DOUBLE *C, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dgerq2 -------------------------------------------------------------------- void LAPACK_IMPL(dgerq2)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO); //-- dgerqf -------------------------------------------------------------------- void LAPACK_IMPL(dgerqf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgesc2 -------------------------------------------------------------------- void LAPACK_IMPL(dgesc2)(const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *RHS, const INTEGER *IPIV, const INTEGER *JPIV, DOUBLE *SCALE); //-- dgesdd -------------------------------------------------------------------- void LAPACK_IMPL(dgesdd)(const char *JOBZ, const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *U, const INTEGER *LDU, DOUBLE *VT, const INTEGER *LDVT, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- dgesv --------------------------------------------------------------------- void LAPACK_IMPL(dgesv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dgesvd -------------------------------------------------------------------- void LAPACK_IMPL(dgesvd)(const char *JOBU, const char *JOBVT, const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *U, const INTEGER *LDU, DOUBLE *VT, const INTEGER *LDVT, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgesvj -------------------------------------------------------------------- void LAPACK_IMPL(dgesvj)(const char *JOBA, const char *JOBU, const char *JOBV, const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *SVA, const INTEGER *MV, DOUBLE *V, const INTEGER *LDV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgesvx -------------------------------------------------------------------- void LAPACK_IMPL(dgesvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, DOUBLE *R, DOUBLE *C, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dgesvxx ------------------------------------------------------------------- void LAPACK_IMPL(dgesvxx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, DOUBLE *R, DOUBLE *C, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dgetc2 -------------------------------------------------------------------- void LAPACK_IMPL(dgetc2)(const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *JPIV, INTEGER *INFO); //-- dgetf2 -------------------------------------------------------------------- void LAPACK_IMPL(dgetf2)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO); //-- dgetrf -------------------------------------------------------------------- void LAPACK_IMPL(dgetrf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO); //-- dgetri -------------------------------------------------------------------- void LAPACK_IMPL(dgetri)(const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgetrs -------------------------------------------------------------------- void LAPACK_IMPL(dgetrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dggbak -------------------------------------------------------------------- void LAPACK_IMPL(dggbak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const DOUBLE *LSCALE, const DOUBLE *RSCALE, const INTEGER *M, DOUBLE *V, const INTEGER *LDV, INTEGER *INFO); //-- dggbal -------------------------------------------------------------------- void LAPACK_IMPL(dggbal)(const char *JOB, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *ILO, INTEGER *IHI, DOUBLE *LSCALE, DOUBLE *RSCALE, DOUBLE *WORK, INTEGER *INFO); //-- dgges --------------------------------------------------------------------- void LAPACK_IMPL(dgges)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *SDIM, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *VSL, const INTEGER *LDVSL, DOUBLE *VSR, const INTEGER *LDVSR, DOUBLE *WORK, const INTEGER *LWORK, LOGICAL *BWORK, INTEGER *INFO); //-- dggesx -------------------------------------------------------------------- void LAPACK_IMPL(dggesx)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const char *SENSE, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *SDIM, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *VSL, const INTEGER *LDVSL, DOUBLE *VSR, const INTEGER *LDVSR, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, LOGICAL *BWORK, INTEGER *INFO); //-- dggev --------------------------------------------------------------------- void LAPACK_IMPL(dggev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dggevx -------------------------------------------------------------------- void LAPACK_IMPL(dggevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, DOUBLE *LSCALE, DOUBLE *RSCALE, DOUBLE *ABNRM, DOUBLE *BBNRM, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, LOGICAL *BWORK, INTEGER *INFO); //-- dggglm -------------------------------------------------------------------- void LAPACK_IMPL(dggglm)(const INTEGER *N, const INTEGER *M, const INTEGER *P, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *D, DOUBLE *X, DOUBLE *Y, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgghrd -------------------------------------------------------------------- void LAPACK_IMPL(dgghrd)(const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *Z, const INTEGER *LDZ, INTEGER *INFO); //-- dgglse -------------------------------------------------------------------- void LAPACK_IMPL(dgglse)(const INTEGER *M, const INTEGER *N, const INTEGER *P, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *C, DOUBLE *D, DOUBLE *X, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dggqrf -------------------------------------------------------------------- void LAPACK_IMPL(dggqrf)(const INTEGER *N, const INTEGER *M, const INTEGER *P, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAUA, DOUBLE *B, const INTEGER *LDB, DOUBLE *TAUB, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dggrqf -------------------------------------------------------------------- void LAPACK_IMPL(dggrqf)(const INTEGER *M, const INTEGER *P, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAUA, DOUBLE *B, const INTEGER *LDB, DOUBLE *TAUB, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dggsvd -------------------------------------------------------------------- void LAPACK_IMPL(dggsvd)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *N, const INTEGER *P, INTEGER *K, INTEGER *L, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *ALPHA, DOUBLE *BETA, DOUBLE *U, const INTEGER *LDU, DOUBLE *V, const INTEGER *LDV, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dggsvp -------------------------------------------------------------------- void LAPACK_IMPL(dggsvp)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, const DOUBLE *TOLA, const DOUBLE *TOLB, INTEGER *K, INTEGER *L, DOUBLE *U, const INTEGER *LDU, DOUBLE *V, const INTEGER *LDV, DOUBLE *Q, const INTEGER *LDQ, INTEGER *IWORK, DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO); //-- dgsvj0 -------------------------------------------------------------------- void LAPACK_IMPL(dgsvj0)(const char *JOBV, const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *SVA, const INTEGER *MV, DOUBLE *V, const INTEGER *LDV, const DOUBLE *EPS, const DOUBLE *SFMIN, const DOUBLE *TOL, const INTEGER *NSWEEP, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgsvj1 -------------------------------------------------------------------- void LAPACK_IMPL(dgsvj1)(const char *JOBV, const INTEGER *M, const INTEGER *N, const INTEGER *N1, DOUBLE *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *SVA, const INTEGER *MV, DOUBLE *V, const INTEGER *LDV, const DOUBLE *EPS, const DOUBLE *SFMIN, const DOUBLE *TOL, const INTEGER *NSWEEP, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dgtcon -------------------------------------------------------------------- void LAPACK_IMPL(dgtcon)(const char *NORM, const INTEGER *N, const DOUBLE *DL, const DOUBLE *D, const DOUBLE *DU, const DOUBLE *DU2, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dgtrfs -------------------------------------------------------------------- void LAPACK_IMPL(dgtrfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *DL, const DOUBLE *D, const DOUBLE *DU, const DOUBLE *DLF, const DOUBLE *DF, const DOUBLE *DUF, const DOUBLE *DU2, const INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dgtsv --------------------------------------------------------------------- void LAPACK_IMPL(dgtsv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE *DL, DOUBLE *D, DOUBLE *DU, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dgtsvx -------------------------------------------------------------------- void LAPACK_IMPL(dgtsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *DL, const DOUBLE *D, const DOUBLE *DU, DOUBLE *DLF, DOUBLE *DF, DOUBLE *DUF, DOUBLE *DU2, INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dgttrf -------------------------------------------------------------------- void LAPACK_IMPL(dgttrf)(const INTEGER *N, DOUBLE *DL, DOUBLE *D, DOUBLE *DU, DOUBLE *DU2, INTEGER *IPIV, INTEGER *INFO); //-- dgttrs -------------------------------------------------------------------- void LAPACK_IMPL(dgttrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *DL, const DOUBLE *D, const DOUBLE *DU, const DOUBLE *DU2, const INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dgtts2 -------------------------------------------------------------------- void LAPACK_IMPL(dgtts2)(const INTEGER *ITRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *DL, const DOUBLE *D, const DOUBLE *DU, const DOUBLE *DU2, const INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB); //-- dhgeqz -------------------------------------------------------------------- void LAPACK_IMPL(dhgeqz)(const char *JOB, const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *H, const INTEGER *LDH, DOUBLE *T, const INTEGER *LDT, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dhsein -------------------------------------------------------------------- void LAPACK_IMPL(dhsein)(const char *SIDE, const char *EIGSRC, const char *INITV, LOGICAL *SELECT, const INTEGER *N, const DOUBLE *H, const INTEGER *LDH, DOUBLE *WR, const DOUBLE *WI, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, DOUBLE *WORK, INTEGER *IFAILL, INTEGER *IFAILR, INTEGER *INFO); //-- dhseqr -------------------------------------------------------------------- void LAPACK_IMPL(dhseqr)(const char *JOB, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *H, const INTEGER *LDH, DOUBLE *WR, DOUBLE *WI, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- disnan -------------------------------------------------------------------- LOGICAL LAPACK_IMPL(disnan)(const DOUBLE *DIN); //-- dla_gbamv ----------------------------------------------------------------- void LAPACK_IMPL(dla_gbamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE *ALPHA, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *X, const INTEGER *INCX, const DOUBLE *BETA, DOUBLE *Y, const INTEGER *INCY); //-- dla_gbrcond --------------------------------------------------------------- DOUBLE LAPACK_IMPL(dla_gbrcond)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const INTEGER *CMODE, const DOUBLE *C, INTEGER *INFO, const DOUBLE *WORK, const INTEGER *IWORK); //-- dla_gbrfsx_extended ------------------------------------------------------- void LAPACK_IMPL(dla_gbrfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE *B, const INTEGER *LDB, DOUBLE *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const DOUBLE *RES, const DOUBLE *AYB, const DOUBLE *DY, const DOUBLE *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- dla_gbrpvgrw -------------------------------------------------------------- DOUBLE LAPACK_IMPL(dla_gbrpvgrw)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NCOLS, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *AFB, const INTEGER *LDAFB); //-- dla_geamv ----------------------------------------------------------------- void LAPACK_IMPL(dla_geamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const DOUBLE *ALPHA, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *X, const INTEGER *INCX, const DOUBLE *BETA, DOUBLE *Y, const INTEGER *INCY); //-- dla_gercond --------------------------------------------------------------- DOUBLE LAPACK_IMPL(dla_gercond)(const char *TRANS, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const INTEGER *CMODE, const DOUBLE *C, INTEGER *INFO, const DOUBLE *WORK, const INTEGER *IWORK); //-- dla_gerfsx_extended ------------------------------------------------------- void LAPACK_IMPL(dla_gerfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE *B, const INTEGER *LDB, DOUBLE *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, const DOUBLE *ERRS_N, const DOUBLE *ERRS_C, const DOUBLE *RES, const DOUBLE *AYB, const DOUBLE *DY, const DOUBLE *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- dla_lin_berr -------------------------------------------------------------- void LAPACK_IMPL(dla_lin_berr)(const INTEGER *N, const INTEGER *NZ, const INTEGER *NRHS, const DOUBLE *RES, const DOUBLE *AYB, DOUBLE *BERR); //-- dla_porcond --------------------------------------------------------------- DOUBLE LAPACK_IMPL(dla_porcond)(const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *CMODE, const DOUBLE *C, INTEGER *INFO, const DOUBLE *WORK, const INTEGER *IWORK); //-- dla_porfsx_extended ------------------------------------------------------- void LAPACK_IMPL(dla_porfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE *B, const INTEGER *LDB, DOUBLE *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const DOUBLE *RES, const DOUBLE *AYB, const DOUBLE *DY, const DOUBLE *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- dla_porpvgrw -------------------------------------------------------------- DOUBLE LAPACK_IMPL(dla_porpvgrw)(const char *UPLO, const INTEGER *NCOLS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const DOUBLE *WORK); //-- dla_rpvgrw ---------------------------------------------------------------- DOUBLE LAPACK_IMPL(dla_rpvgrw)(const INTEGER *N, const INTEGER *NCOLS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF); //-- dla_syamv ----------------------------------------------------------------- void LAPACK_IMPL(dla_syamv)(const INTEGER *UPLO, const INTEGER *N, const DOUBLE *ALPHA, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *X, const INTEGER *INCX, const DOUBLE *BETA, DOUBLE *Y, const INTEGER *INCY); //-- dla_syrcond --------------------------------------------------------------- DOUBLE LAPACK_IMPL(dla_syrcond)(const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const INTEGER *CMODE, const DOUBLE *C, INTEGER *INFO, const DOUBLE *WORK, const INTEGER *IWORK); //-- dla_syrfsx_extended ------------------------------------------------------- void LAPACK_IMPL(dla_syrfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE *B, const INTEGER *LDB, DOUBLE *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const DOUBLE *RES, const DOUBLE *AYB, const DOUBLE *DY, const DOUBLE *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- dla_syrpvgrw -------------------------------------------------------------- DOUBLE LAPACK_IMPL(dla_syrpvgrw)(const char *UPLO, const INTEGER *N, const INTEGER *INFO, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *WORK); //-- dla_wwaddw ---------------------------------------------------------------- void LAPACK_IMPL(dla_wwaddw)(const INTEGER *N, DOUBLE *X, DOUBLE *Y, const DOUBLE *W); //-- dlabad -------------------------------------------------------------------- void LAPACK_IMPL(dlabad)(DOUBLE *SMALL, DOUBLE *LARGE); //-- dlabrd -------------------------------------------------------------------- void LAPACK_IMPL(dlabrd)(const INTEGER *M, const INTEGER *N, const INTEGER *NB, DOUBLE *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE *TAUQ, DOUBLE *TAUP, DOUBLE *X, const INTEGER *LDX, DOUBLE *Y, const INTEGER *LDY); //-- dlacn2 -------------------------------------------------------------------- void LAPACK_IMPL(dlacn2)(const INTEGER *N, DOUBLE *V, DOUBLE *X, INTEGER *ISGN, DOUBLE *EST, INTEGER *KASE, INTEGER *ISAVE); //-- dlacon -------------------------------------------------------------------- void LAPACK_IMPL(dlacon)(const INTEGER *N, DOUBLE *V, DOUBLE *X, INTEGER *ISGN, DOUBLE *EST, INTEGER *KASE); //-- dlacpy -------------------------------------------------------------------- void LAPACK_IMPL(dlacpy)(const char *UPLO, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB); //-- dladiv -------------------------------------------------------------------- void LAPACK_IMPL(dladiv)(const DOUBLE *A, const DOUBLE *B, const DOUBLE *C, const DOUBLE *D, DOUBLE *P, DOUBLE *Q); //-- dlae2 --------------------------------------------------------------------- void LAPACK_IMPL(dlae2)(const DOUBLE *A, const DOUBLE *B, const DOUBLE *C, DOUBLE *RT1, DOUBLE *RT2); //-- dlaebz -------------------------------------------------------------------- void LAPACK_IMPL(dlaebz)(const INTEGER *IJOB, const INTEGER *NITMAX, const INTEGER *N, const INTEGER *MMAX, const INTEGER *MINP, const INTEGER *NBMIN, const DOUBLE *ABSTOL, const DOUBLE *RELTOL, const DOUBLE *PIVMIN, const DOUBLE *D, const DOUBLE *E, const DOUBLE *E2, INTEGER *NVAL, DOUBLE *AB, DOUBLE *C, INTEGER *MOUT, INTEGER *NAB, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dlaed0 -------------------------------------------------------------------- void LAPACK_IMPL(dlaed0)(const INTEGER *ICOMPQ, const INTEGER *QSIZ, const INTEGER *N, DOUBLE *D, const DOUBLE *E, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *QSTORE, const INTEGER *LDQS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dlaed1 -------------------------------------------------------------------- void LAPACK_IMPL(dlaed1)(const INTEGER *N, DOUBLE *D, DOUBLE *Q, const INTEGER *LDQ, INTEGER *INDXQ, const DOUBLE *RHO, const INTEGER *CUTPNT, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dlaed2 -------------------------------------------------------------------- void LAPACK_IMPL(dlaed2)(INTEGER *K, const INTEGER *N, const INTEGER *N1, DOUBLE *D, DOUBLE *Q, const INTEGER *LDQ, INTEGER *INDXQ, DOUBLE *RHO, const DOUBLE *Z, DOUBLE *DLAMDA, DOUBLE *W, DOUBLE *Q2, INTEGER *INDX, INTEGER *INDXC, INTEGER *INDXP, INTEGER *COLTYP, INTEGER *INFO); //-- dlaed3 -------------------------------------------------------------------- void LAPACK_IMPL(dlaed3)(const INTEGER *K, const INTEGER *N, const INTEGER *N1, DOUBLE *D, DOUBLE *Q, const INTEGER *LDQ, const DOUBLE *RHO, DOUBLE *DLAMDA, const DOUBLE *Q2, const INTEGER *INDX, const INTEGER *CTOT, DOUBLE *W, DOUBLE *S, INTEGER *INFO); //-- dlaed4 -------------------------------------------------------------------- void LAPACK_IMPL(dlaed4)(const INTEGER *N, const INTEGER *I, const DOUBLE *D, const DOUBLE *Z, DOUBLE *DELTA, const DOUBLE *RHO, DOUBLE *DLAM, INTEGER *INFO); //-- dlaed5 -------------------------------------------------------------------- void LAPACK_IMPL(dlaed5)(const INTEGER *I, const DOUBLE *D, const DOUBLE *Z, DOUBLE *DELTA, const DOUBLE *RHO, DOUBLE *DLAM); //-- dlaed6 -------------------------------------------------------------------- void LAPACK_IMPL(dlaed6)(const INTEGER *KNITER, const LOGICAL *ORGATI, const DOUBLE *RHO, const DOUBLE *D, const DOUBLE *Z, const DOUBLE *FINIT, DOUBLE *TAU, INTEGER *INFO); //-- dlaed7 -------------------------------------------------------------------- void LAPACK_IMPL(dlaed7)(const INTEGER *ICOMPQ, const INTEGER *N, const INTEGER *QSIZ, const INTEGER *TLVLS, const INTEGER *CURLVL, const INTEGER *CURPBM, DOUBLE *D, DOUBLE *Q, const INTEGER *LDQ, INTEGER *INDXQ, const DOUBLE *RHO, const INTEGER *CUTPNT, DOUBLE *QSTORE, INTEGER *QPTR, const INTEGER *PRMPTR, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const DOUBLE *GIVNUM, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dlaed8 -------------------------------------------------------------------- void LAPACK_IMPL(dlaed8)(const INTEGER *ICOMPQ, INTEGER *K, const INTEGER *N, const INTEGER *QSIZ, DOUBLE *D, DOUBLE *Q, const INTEGER *LDQ, const INTEGER *INDXQ, DOUBLE *RHO, const INTEGER *CUTPNT, const DOUBLE *Z, DOUBLE *DLAMDA, DOUBLE *Q2, const INTEGER *LDQ2, DOUBLE *W, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, DOUBLE *GIVNUM, INTEGER *INDXP, INTEGER *INDX, INTEGER *INFO); //-- dlaed9 -------------------------------------------------------------------- void LAPACK_IMPL(dlaed9)(const INTEGER *K, const INTEGER *KSTART, const INTEGER *KSTOP, const INTEGER *N, DOUBLE *D, DOUBLE *Q, const INTEGER *LDQ, const DOUBLE *RHO, const DOUBLE *DLAMDA, const DOUBLE *W, DOUBLE *S, const INTEGER *LDS, INTEGER *INFO); //-- dlaeda -------------------------------------------------------------------- void LAPACK_IMPL(dlaeda)(const INTEGER *N, const INTEGER *TLVLS, const INTEGER *CURLVL, const INTEGER *CURPBM, const INTEGER *PRMPTR, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const DOUBLE *GIVNUM, const DOUBLE *Q, const INTEGER *QPTR, DOUBLE *Z, DOUBLE *ZTEMP, INTEGER *INFO); //-- dlaein -------------------------------------------------------------------- void LAPACK_IMPL(dlaein)(const LOGICAL *RIGHTV, const LOGICAL *NOINIT, const INTEGER *N, const DOUBLE *H, const INTEGER *LDH, const DOUBLE *WR, const DOUBLE *WI, DOUBLE *VR, DOUBLE *VI, DOUBLE *B, const INTEGER *LDB, DOUBLE *WORK, const DOUBLE *EPS3, const DOUBLE *SMLNUM, const DOUBLE *BIGNUM, INTEGER *INFO); //-- dlaev2 -------------------------------------------------------------------- void LAPACK_IMPL(dlaev2)(const DOUBLE *A, const DOUBLE *B, const DOUBLE *C, DOUBLE *RT1, DOUBLE *RT2, DOUBLE *CS1, DOUBLE *SN1); //-- dlaexc -------------------------------------------------------------------- void LAPACK_IMPL(dlaexc)(const LOGICAL *WANTQ, const INTEGER *N, DOUBLE *T, const INTEGER *LDT, DOUBLE *Q, const INTEGER *LDQ, const INTEGER *J1, const INTEGER *N1, const INTEGER *N2, DOUBLE *WORK, INTEGER *INFO); //-- dlag2 --------------------------------------------------------------------- void LAPACK_IMPL(dlag2)(const DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, const DOUBLE *SAFMIN, DOUBLE *SCALE1, DOUBLE *SCALE2, DOUBLE *WR1, DOUBLE *WR2, DOUBLE *WI); //-- dlag2s -------------------------------------------------------------------- void LAPACK_IMPL(dlag2s)(const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, FLOAT *SA, const INTEGER *LDSA, INTEGER *INFO); //-- dlags2 -------------------------------------------------------------------- void LAPACK_IMPL(dlags2)(const LOGICAL *UPPER, const DOUBLE *A1, const DOUBLE *A2, const DOUBLE *A3, const DOUBLE *B1, const DOUBLE *B2, const DOUBLE *B3, DOUBLE *CSU, DOUBLE *SNU, DOUBLE *CSV, DOUBLE *SNV, DOUBLE *CSQ, DOUBLE *SNQ); //-- dlagtf -------------------------------------------------------------------- void LAPACK_IMPL(dlagtf)(const INTEGER *N, DOUBLE *A, const DOUBLE *LAMBDA, DOUBLE *B, DOUBLE *C, const DOUBLE *TOL, DOUBLE *D, INTEGER *IN, INTEGER *INFO); //-- dlagtm -------------------------------------------------------------------- void LAPACK_IMPL(dlagtm)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *ALPHA, const DOUBLE *DL, const DOUBLE *D, const DOUBLE *DU, const DOUBLE *X, const INTEGER *LDX, const DOUBLE *BETA, DOUBLE *B, const INTEGER *LDB); //-- dlagts -------------------------------------------------------------------- void LAPACK_IMPL(dlagts)(const INTEGER *JOB, const INTEGER *N, const DOUBLE *A, const DOUBLE *B, const DOUBLE *C, const DOUBLE *D, const INTEGER *IN, DOUBLE *Y, DOUBLE *TOL, INTEGER *INFO); //-- dlagv2 -------------------------------------------------------------------- void LAPACK_IMPL(dlagv2)(DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *CSL, DOUBLE *SNL, DOUBLE *CSR, DOUBLE *SNR); //-- dlahqr -------------------------------------------------------------------- void LAPACK_IMPL(dlahqr)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *H, const INTEGER *LDH, DOUBLE *WR, DOUBLE *WI, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE *Z, const INTEGER *LDZ, INTEGER *INFO); //-- dlahr2 -------------------------------------------------------------------- void LAPACK_IMPL(dlahr2)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *T, const INTEGER *LDT, DOUBLE *Y, const INTEGER *LDY); //-- dlahrd -------------------------------------------------------------------- void LAPACK_IMPL(dlahrd)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *T, const INTEGER *LDT, DOUBLE *Y, const INTEGER *LDY); //-- dlaic1 -------------------------------------------------------------------- void LAPACK_IMPL(dlaic1)(const INTEGER *JOB, const INTEGER *J, const DOUBLE *X, const DOUBLE *SEST, const DOUBLE *W, const DOUBLE *GAMMA, DOUBLE *SESTPR, DOUBLE *S, DOUBLE *C); //-- dlaisnan ------------------------------------------------------------------ LOGICAL LAPACK_IMPL(dlaisnan)(const DOUBLE *DIN1, const DOUBLE *DIN2); //-- dlaln2 -------------------------------------------------------------------- void LAPACK_IMPL(dlaln2)(const LOGICAL *LTRANS, const INTEGER *NA, const INTEGER *NW, const DOUBLE *SMIN, const DOUBLE *CA, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *D1, const DOUBLE *D2, const DOUBLE *B, const INTEGER *LDB, const DOUBLE *WR, const DOUBLE *WI, DOUBLE *X, const INTEGER *LDX, DOUBLE *SCALE, DOUBLE *XNORM, INTEGER *INFO); //-- dlals0 -------------------------------------------------------------------- void LAPACK_IMPL(dlals0)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, const INTEGER *NRHS, DOUBLE *B, const INTEGER *LDB, DOUBLE *BX, const INTEGER *LDBX, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const DOUBLE *GIVNUM, const INTEGER *LDGNUM, const DOUBLE *POLES, const DOUBLE *DIFL, const DOUBLE *DIFR, const DOUBLE *Z, const INTEGER *K, const DOUBLE *C, const DOUBLE *S, DOUBLE *WORK, INTEGER *INFO); //-- dlalsa -------------------------------------------------------------------- void LAPACK_IMPL(dlalsa)(const INTEGER *ICOMPQ, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, DOUBLE *B, const INTEGER *LDB, DOUBLE *BX, const INTEGER *LDBX, const DOUBLE *U, const INTEGER *LDU, const DOUBLE *VT, const INTEGER *K, const DOUBLE *DIFL, const DOUBLE *DIFR, const DOUBLE *Z, const DOUBLE *POLES, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const INTEGER *PERM, const DOUBLE *GIVNUM, const DOUBLE *C, const DOUBLE *S, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dlalsd -------------------------------------------------------------------- void LAPACK_IMPL(dlalsd)(const char *UPLO, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, DOUBLE *D, DOUBLE *E, DOUBLE *B, const INTEGER *LDB, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dlamch -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dlamch)(const char *CMACH); //-- dlamrg -------------------------------------------------------------------- void LAPACK_IMPL(dlamrg)(const INTEGER *N1, const INTEGER *N2, const DOUBLE *A, const INTEGER *DTRD1, const INTEGER *DTRD2, INTEGER *INDEX); //-- dlaneg -------------------------------------------------------------------- INTEGER LAPACK_IMPL(dlaneg)(const INTEGER *N, const DOUBLE *D, const DOUBLE *LLD, const DOUBLE *SIGMA, const DOUBLE *PIVMIN, const INTEGER *R); //-- dlangb -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dlangb)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *WORK); //-- dlange -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dlange)(const char *NORM, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *WORK); //-- dlangt -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dlangt)(const char *NORM, const INTEGER *N, const DOUBLE *DL, const DOUBLE *D, const DOUBLE *DU); //-- dlanhs -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dlanhs)(const char *NORM, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *WORK); //-- dlansb -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dlansb)(const char *NORM, const char *UPLO, const INTEGER *N, const INTEGER *K, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *WORK); //-- dlansf -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dlansf)(const char *NORM, const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE *A, DOUBLE *WORK); //-- dlansp -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dlansp)(const char *NORM, const char *UPLO, const INTEGER *N, const DOUBLE *AP, DOUBLE *WORK); //-- dlanst -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dlanst)(const char *NORM, const INTEGER *N, const DOUBLE *D, const DOUBLE *E); //-- dlansy -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dlansy)(const char *NORM, const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *WORK); //-- dlantb -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dlantb)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *K, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *WORK); //-- dlantp -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dlantp)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const DOUBLE *AP, DOUBLE *WORK); //-- dlantr -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dlantr)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *WORK); //-- dlanv2 -------------------------------------------------------------------- void LAPACK_IMPL(dlanv2)(DOUBLE *A, DOUBLE *B, DOUBLE *C, DOUBLE *D, DOUBLE *RT1R, DOUBLE *RT1I, DOUBLE *RT2R, DOUBLE *RT2I, DOUBLE *CS, DOUBLE *SN); //-- dlapll -------------------------------------------------------------------- void LAPACK_IMPL(dlapll)(const INTEGER *N, DOUBLE *X, const INTEGER *INCX, DOUBLE *Y, const INTEGER *INCY, DOUBLE *SSMIN); //-- dlapmr -------------------------------------------------------------------- void LAPACK_IMPL(dlapmr)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, DOUBLE *X, const INTEGER *LDX, INTEGER *K); //-- dlapmt -------------------------------------------------------------------- void LAPACK_IMPL(dlapmt)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, DOUBLE *X, const INTEGER *LDX, INTEGER *K); //-- dlapy2 -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dlapy2)(const DOUBLE *X, const DOUBLE *Y); //-- dlapy3 -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dlapy3)(const DOUBLE *X, const DOUBLE *Y, const DOUBLE *Z); //-- dlaqgb -------------------------------------------------------------------- void LAPACK_IMPL(dlaqgb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *R, const DOUBLE *C, const DOUBLE *ROWCND, const DOUBLE *COLCND, const DOUBLE *AMAX, char *EQUED); //-- dlaqge -------------------------------------------------------------------- void LAPACK_IMPL(dlaqge)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const DOUBLE *R, const DOUBLE *C, const DOUBLE *ROWCND, const DOUBLE *COLCND, const DOUBLE *AMAX, char *EQUED); //-- dlaqp2 -------------------------------------------------------------------- void LAPACK_IMPL(dlaqp2)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, DOUBLE *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE *TAU, DOUBLE *VN1, DOUBLE *VN2, DOUBLE *WORK); //-- dlaqps -------------------------------------------------------------------- void LAPACK_IMPL(dlaqps)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, const INTEGER *NB, INTEGER *KB, DOUBLE *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE *TAU, DOUBLE *VN1, DOUBLE *VN2, DOUBLE *AUXV, DOUBLE *F, const INTEGER *LDF); //-- dlaqr0 -------------------------------------------------------------------- void LAPACK_IMPL(dlaqr0)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *H, const INTEGER *LDH, DOUBLE *WR, DOUBLE *WI, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dlaqr1 -------------------------------------------------------------------- void LAPACK_IMPL(dlaqr1)(const INTEGER *N, const DOUBLE *H, const INTEGER *LDH, const DOUBLE *SR1, const DOUBLE *SI1, const DOUBLE *SR2, const DOUBLE *SI2, DOUBLE *V); //-- dlaqr2 -------------------------------------------------------------------- void LAPACK_IMPL(dlaqr2)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, DOUBLE *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, DOUBLE *SR, DOUBLE *SI, DOUBLE *V, const INTEGER *LDV, const INTEGER *NH, DOUBLE *T, const INTEGER *LDT, const INTEGER *NV, DOUBLE *WV, const INTEGER *LDWV, DOUBLE *WORK, const INTEGER *LWORK); //-- dlaqr3 -------------------------------------------------------------------- void LAPACK_IMPL(dlaqr3)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, DOUBLE *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, DOUBLE *SR, DOUBLE *SI, DOUBLE *V, const INTEGER *LDV, const INTEGER *NH, DOUBLE *T, const INTEGER *LDT, const INTEGER *NV, DOUBLE *WV, const INTEGER *LDWV, DOUBLE *WORK, const INTEGER *LWORK); //-- dlaqr4 -------------------------------------------------------------------- void LAPACK_IMPL(dlaqr4)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *H, const INTEGER *LDH, DOUBLE *WR, DOUBLE *WI, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dlaqr5 -------------------------------------------------------------------- void LAPACK_IMPL(dlaqr5)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *KACC22, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NSHFTS, DOUBLE *SR, DOUBLE *SI, DOUBLE *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *V, const INTEGER *LDV, DOUBLE *U, const INTEGER *LDU, const INTEGER *NV, DOUBLE *WV, const INTEGER *LDWV, const INTEGER *NH, DOUBLE *WH, const INTEGER *LDWH); //-- dlaqsb -------------------------------------------------------------------- void LAPACK_IMPL(dlaqsb)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED); //-- dlaqsp -------------------------------------------------------------------- void LAPACK_IMPL(dlaqsp)(const char *UPLO, const INTEGER *N, DOUBLE *AP, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED); //-- dlaqsy -------------------------------------------------------------------- void LAPACK_IMPL(dlaqsy)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED); //-- dlaqtr -------------------------------------------------------------------- void LAPACK_IMPL(dlaqtr)(const LOGICAL *LTRAN, const LOGICAL *LREAL, const INTEGER *N, const DOUBLE *T, const INTEGER *LDT, const DOUBLE *B, const DOUBLE *W, DOUBLE *SCALE, DOUBLE *X, DOUBLE *WORK, INTEGER *INFO); //-- dlar1v -------------------------------------------------------------------- void LAPACK_IMPL(dlar1v)(const INTEGER *N, const INTEGER *B1, const INTEGER *BN, const DOUBLE *LAMBDA, const DOUBLE *D, const DOUBLE *L, const DOUBLE *LD, const DOUBLE *LLD, const DOUBLE *PIVMIN, const DOUBLE *GAPTOL, DOUBLE *Z, const LOGICAL *WANTNC, INTEGER *NEGCNT, DOUBLE *ZTZ, DOUBLE *MINGMA, INTEGER *R, INTEGER *ISUPPZ, DOUBLE *NRMINV, DOUBLE *RESID, DOUBLE *RQCORR, DOUBLE *WORK); //-- dlar2v -------------------------------------------------------------------- void LAPACK_IMPL(dlar2v)(const INTEGER *N, DOUBLE *X, DOUBLE *Y, DOUBLE *Z, const INTEGER *INCX, const DOUBLE *C, const DOUBLE *S, const INTEGER *INCC); //-- dlarf --------------------------------------------------------------------- void LAPACK_IMPL(dlarf)(const char *SIDE, const INTEGER *M, const INTEGER *N, const DOUBLE *V, const INTEGER *INCV, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK); //-- dlarfb -------------------------------------------------------------------- void LAPACK_IMPL(dlarfb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *V, const INTEGER *LDV, const DOUBLE *T, const INTEGER *LDT, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LDWORK); //-- dlarfg -------------------------------------------------------------------- void LAPACK_IMPL(dlarfg)(const INTEGER *N, DOUBLE *ALPHA, DOUBLE *X, const INTEGER *INCX, DOUBLE *TAU); //-- dlarfgp ------------------------------------------------------------------- void LAPACK_IMPL(dlarfgp)(const INTEGER *N, DOUBLE *ALPHA, DOUBLE *X, const INTEGER *INCX, DOUBLE *TAU); //-- dlarft -------------------------------------------------------------------- void LAPACK_IMPL(dlarft)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, DOUBLE *V, const INTEGER *LDV, const DOUBLE *TAU, DOUBLE *T, const INTEGER *LDT); //-- dlarfx -------------------------------------------------------------------- void LAPACK_IMPL(dlarfx)(const char *SIDE, const INTEGER *M, const INTEGER *N, const DOUBLE *V, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK); //-- dlargv -------------------------------------------------------------------- void LAPACK_IMPL(dlargv)(const INTEGER *N, DOUBLE *X, const INTEGER *INCX, DOUBLE *Y, const INTEGER *INCY, DOUBLE *C, const INTEGER *INCC); //-- dlarnv -------------------------------------------------------------------- void LAPACK_IMPL(dlarnv)(const INTEGER *IDIST, INTEGER *ISEED, const INTEGER *N, DOUBLE *X); //-- dlarra -------------------------------------------------------------------- void LAPACK_IMPL(dlarra)(const INTEGER *N, const DOUBLE *D, DOUBLE *E, DOUBLE *E2, const DOUBLE *SPLTOL, const DOUBLE *TNRM, INTEGER *NSPLIT, INTEGER *ISPLIT, INTEGER *INFO); //-- dlarrb -------------------------------------------------------------------- void LAPACK_IMPL(dlarrb)(const INTEGER *N, const DOUBLE *D, const DOUBLE *LLD, const INTEGER *IFIRST, const INTEGER *ILAST, const DOUBLE *RTOL1, const DOUBLE *RTOL2, const INTEGER *OFFSET, DOUBLE *W, DOUBLE *WGAP, DOUBLE *WERR, DOUBLE *WORK, INTEGER *IWORK, const DOUBLE *PIVMIN, const DOUBLE *SPDIAM, const INTEGER *TWIST, INTEGER *INFO); //-- dlarrc -------------------------------------------------------------------- void LAPACK_IMPL(dlarrc)(const char *JOBT, const INTEGER *N, const DOUBLE *VL, const DOUBLE *VU, const DOUBLE *D, const DOUBLE *E, const DOUBLE *PIVMIN, INTEGER *EIGCNT, INTEGER *LCNT, INTEGER *RCNT, INTEGER *INFO); //-- dlarrd -------------------------------------------------------------------- void LAPACK_IMPL(dlarrd)(const char *RANGE, const char *ORDER, const INTEGER *N, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *GERS, const DOUBLE *RELTOL, const DOUBLE *D, const DOUBLE *E, const DOUBLE *E2, const DOUBLE *PIVMIN, const INTEGER *NSPLIT, const INTEGER *ISPLIT, INTEGER *M, DOUBLE *W, DOUBLE *WERR, DOUBLE *WL, DOUBLE *WU, INTEGER *IBLOCK, INTEGER *INDEXW, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dlarre -------------------------------------------------------------------- void LAPACK_IMPL(dlarre)(const char *RANGE, const INTEGER *N, DOUBLE *VL, DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, DOUBLE *D, DOUBLE *E, DOUBLE *E2, const DOUBLE *RTOL1, const DOUBLE *RTOL2, const DOUBLE *SPLTOL, INTEGER *NSPLIT, INTEGER *ISPLIT, INTEGER *M, DOUBLE *W, DOUBLE *WERR, DOUBLE *WGAP, INTEGER *IBLOCK, INTEGER *INDEXW, DOUBLE *GERS, DOUBLE *PIVMIN, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dlarrf -------------------------------------------------------------------- void LAPACK_IMPL(dlarrf)(const INTEGER *N, const DOUBLE *D, const DOUBLE *L, const DOUBLE *LD, const INTEGER *CLSTRT, const INTEGER *CLEND, const DOUBLE *W, DOUBLE *WGAP, const DOUBLE *WERR, const DOUBLE *SPDIAM, const DOUBLE *CLGAPL, const DOUBLE *CLGAPR, const DOUBLE *PIVMIN, DOUBLE *SIGMA, DOUBLE *DPLUS, DOUBLE *LPLUS, DOUBLE *WORK, INTEGER *INFO); //-- dlarrj -------------------------------------------------------------------- void LAPACK_IMPL(dlarrj)(const INTEGER *N, const DOUBLE *D, const DOUBLE *E2, const INTEGER *IFIRST, const INTEGER *ILAST, const DOUBLE *RTOL, const INTEGER *OFFSET, DOUBLE *W, DOUBLE *WERR, DOUBLE *WORK, INTEGER *IWORK, const DOUBLE *PIVMIN, const DOUBLE *SPDIAM, INTEGER *INFO); //-- dlarrk -------------------------------------------------------------------- void LAPACK_IMPL(dlarrk)(const INTEGER *N, const INTEGER *IW, const DOUBLE *GL, const DOUBLE *GU, const DOUBLE *D, const DOUBLE *E2, const DOUBLE *PIVMIN, const DOUBLE *RELTOL, DOUBLE *W, DOUBLE *WERR, INTEGER *INFO); //-- dlarrr -------------------------------------------------------------------- void LAPACK_IMPL(dlarrr)(const INTEGER *N, const DOUBLE *D, DOUBLE *E, INTEGER *INFO); //-- dlarrv -------------------------------------------------------------------- void LAPACK_IMPL(dlarrv)(const INTEGER *N, const DOUBLE *VL, const DOUBLE *VU, DOUBLE *D, DOUBLE *L, const DOUBLE *PIVMIN, const INTEGER *ISPLIT, const INTEGER *M, const INTEGER *DOL, const INTEGER *DOU, const DOUBLE *MINRGP, const DOUBLE *RTOL1, const DOUBLE *RTOL2, DOUBLE *W, DOUBLE *WERR, DOUBLE *WGAP, const INTEGER *IBLOCK, const INTEGER *INDEXW, const DOUBLE *GERS, DOUBLE *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dlarscl2 ------------------------------------------------------------------ void LAPACK_IMPL(dlarscl2)(const INTEGER *M, const INTEGER *N, const DOUBLE *D, DOUBLE *X, const INTEGER *LDX); //-- dlartg -------------------------------------------------------------------- void LAPACK_IMPL(dlartg)(const DOUBLE *F, const DOUBLE *G, DOUBLE *CS, DOUBLE *SN, DOUBLE *R); //-- dlartgp ------------------------------------------------------------------- void LAPACK_IMPL(dlartgp)(const DOUBLE *F, const DOUBLE *G, DOUBLE *CS, DOUBLE *SN, DOUBLE *R); //-- dlartgs ------------------------------------------------------------------- void LAPACK_IMPL(dlartgs)(const DOUBLE *X, const DOUBLE *Y, const DOUBLE *SIGMA, DOUBLE *CS, DOUBLE *SN); //-- dlartv -------------------------------------------------------------------- void LAPACK_IMPL(dlartv)(const INTEGER *N, DOUBLE *X, const INTEGER *INCX, DOUBLE *Y, const INTEGER *INCY, const DOUBLE *C, const DOUBLE *S, const INTEGER *INCC); //-- dlaruv -------------------------------------------------------------------- void LAPACK_IMPL(dlaruv)(INTEGER *ISEED, const INTEGER *N, DOUBLE *X); //-- dlarz --------------------------------------------------------------------- void LAPACK_IMPL(dlarz)(const char *SIDE, const INTEGER *M, const INTEGER *N, const INTEGER *L, const DOUBLE *V, const INTEGER *INCV, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK); //-- dlarzb -------------------------------------------------------------------- void LAPACK_IMPL(dlarzb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const DOUBLE *V, const INTEGER *LDV, const DOUBLE *T, const INTEGER *LDT, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LDWORK); //-- dlarzt -------------------------------------------------------------------- void LAPACK_IMPL(dlarzt)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, DOUBLE *V, const INTEGER *LDV, const DOUBLE *TAU, DOUBLE *T, const INTEGER *LDT); //-- dlas2 --------------------------------------------------------------------- void LAPACK_IMPL(dlas2)(const DOUBLE *F, const DOUBLE *G, const DOUBLE *H, DOUBLE *SSMIN, DOUBLE *SSMAX); //-- dlascl -------------------------------------------------------------------- void LAPACK_IMPL(dlascl)(const char *TYPE, const INTEGER *KL, const INTEGER *KU, const DOUBLE *CFROM, const DOUBLE *CTO, const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO); //-- dlascl2 ------------------------------------------------------------------- void LAPACK_IMPL(dlascl2)(const INTEGER *M, const INTEGER *N, const DOUBLE *D, DOUBLE *X, const INTEGER *LDX); //-- dlasd0 -------------------------------------------------------------------- void LAPACK_IMPL(dlasd0)(const INTEGER *N, const INTEGER *SQRE, DOUBLE *D, const DOUBLE *E, DOUBLE *U, const INTEGER *LDU, DOUBLE *VT, const INTEGER *LDVT, const INTEGER *SMLSIZ, INTEGER *IWORK, DOUBLE *WORK, INTEGER *INFO); //-- dlasd1 -------------------------------------------------------------------- void LAPACK_IMPL(dlasd1)(const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, DOUBLE *D, DOUBLE *ALPHA, DOUBLE *BETA, DOUBLE *U, const INTEGER *LDU, DOUBLE *VT, const INTEGER *LDVT, INTEGER *IDXQ, INTEGER *IWORK, DOUBLE *WORK, INTEGER *INFO); //-- dlasd2 -------------------------------------------------------------------- void LAPACK_IMPL(dlasd2)(const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, INTEGER *K, DOUBLE *D, DOUBLE *Z, const DOUBLE *ALPHA, const DOUBLE *BETA, DOUBLE *U, const INTEGER *LDU, DOUBLE *VT, const INTEGER *LDVT, DOUBLE *DSIGMA, DOUBLE *U2, const INTEGER *LDU2, DOUBLE *VT2, const INTEGER *LDVT2, INTEGER *IDXP, INTEGER *IDX, INTEGER *IDXC, INTEGER *IDXQ, INTEGER *COLTYP, INTEGER *INFO); //-- dlasd3 -------------------------------------------------------------------- void LAPACK_IMPL(dlasd3)(const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, const INTEGER *K, DOUBLE *D, DOUBLE *Q, const INTEGER *LDQ, const DOUBLE *DSIGMA, DOUBLE *U, const INTEGER *LDU, DOUBLE *U2, const INTEGER *LDU2, DOUBLE *VT, const INTEGER *LDVT, DOUBLE *VT2, const INTEGER *LDVT2, const INTEGER *IDXC, const INTEGER *CTOT, const DOUBLE *Z, INTEGER *INFO); //-- dlasd4 -------------------------------------------------------------------- void LAPACK_IMPL(dlasd4)(const INTEGER *N, const INTEGER *I, const DOUBLE *D, const DOUBLE *Z, DOUBLE *DELTA, const DOUBLE *RHO, DOUBLE *SIGMA, DOUBLE *WORK, INTEGER *INFO); //-- dlasd5 -------------------------------------------------------------------- void LAPACK_IMPL(dlasd5)(const INTEGER *I, const DOUBLE *D, const DOUBLE *Z, DOUBLE *DELTA, const DOUBLE *RHO, DOUBLE *DSIGMA, DOUBLE *WORK); //-- dlasd6 -------------------------------------------------------------------- void LAPACK_IMPL(dlasd6)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, DOUBLE *D, DOUBLE *VF, DOUBLE *VL, DOUBLE *ALPHA, DOUBLE *BETA, INTEGER *IDXQ, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, const INTEGER *LDGCOL, DOUBLE *GIVNUM, const INTEGER *LDGNUM, DOUBLE *POLES, DOUBLE *DIFL, DOUBLE *DIFR, DOUBLE *Z, INTEGER *K, DOUBLE *C, DOUBLE *S, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dlasd7 -------------------------------------------------------------------- void LAPACK_IMPL(dlasd7)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, INTEGER *K, DOUBLE *D, DOUBLE *Z, DOUBLE *ZW, DOUBLE *VF, DOUBLE *VFW, DOUBLE *VL, DOUBLE *VLW, const DOUBLE *ALPHA, const DOUBLE *BETA, DOUBLE *DSIGMA, INTEGER *IDX, INTEGER *IDXP, const INTEGER *IDXQ, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, const INTEGER *LDGCOL, DOUBLE *GIVNUM, const INTEGER *LDGNUM, DOUBLE *C, DOUBLE *S, INTEGER *INFO); //-- dlasd8 -------------------------------------------------------------------- void LAPACK_IMPL(dlasd8)(const INTEGER *ICOMPQ, const INTEGER *K, DOUBLE *D, DOUBLE *Z, DOUBLE *VF, DOUBLE *VL, DOUBLE *DIFL, DOUBLE *DIFR, const INTEGER *LDDIFR, DOUBLE *DSIGMA, DOUBLE *WORK, INTEGER *INFO); //-- dlasda -------------------------------------------------------------------- void LAPACK_IMPL(dlasda)(const INTEGER *ICOMPQ, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *SQRE, DOUBLE *D, const DOUBLE *E, DOUBLE *U, const INTEGER *LDU, DOUBLE *VT, INTEGER *K, DOUBLE *DIFL, DOUBLE *DIFR, DOUBLE *Z, DOUBLE *POLES, INTEGER *GIVPTR, INTEGER *GIVCOL, const INTEGER *LDGCOL, INTEGER *PERM, DOUBLE *GIVNUM, DOUBLE *C, DOUBLE *S, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dlasdq -------------------------------------------------------------------- void LAPACK_IMPL(dlasdq)(const char *UPLO, const INTEGER *SQRE, const INTEGER *N, const INTEGER *NCVT, const INTEGER *NRU, const INTEGER *NCC, DOUBLE *D, DOUBLE *E, DOUBLE *VT, const INTEGER *LDVT, DOUBLE *U, const INTEGER *LDU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO); //-- dlasdt -------------------------------------------------------------------- void LAPACK_IMPL(dlasdt)(const INTEGER *N, INTEGER *LVL, INTEGER *ND, INTEGER *INODE, INTEGER *NDIML, INTEGER *NDIMR, const INTEGER *MSUB); //-- dlaset -------------------------------------------------------------------- void LAPACK_IMPL(dlaset)(const char *UPLO, const INTEGER *M, const INTEGER *N, const DOUBLE *ALPHA, const DOUBLE *BETA, DOUBLE *A, const INTEGER *LDA); //-- dlasq1 -------------------------------------------------------------------- void LAPACK_IMPL(dlasq1)(const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE *WORK, INTEGER *INFO); //-- dlasq2 -------------------------------------------------------------------- void LAPACK_IMPL(dlasq2)(const INTEGER *N, DOUBLE *Z, INTEGER *INFO); //-- dlasq3 -------------------------------------------------------------------- void LAPACK_IMPL(dlasq3)(const INTEGER *I0, INTEGER *N0, const DOUBLE *Z, INTEGER *PP, DOUBLE *DMIN, DOUBLE *SIGMA, DOUBLE *DESIG, const DOUBLE *QMAX, INTEGER *NFAIL, INTEGER *ITER, INTEGER *NDIV, const LOGICAL *IEEE, INTEGER *TTYPE, DOUBLE *DMIN1, DOUBLE *DMIN2, DOUBLE *DN, DOUBLE *DN1, DOUBLE *DN2, DOUBLE *G, DOUBLE *TAU); //-- dlasq4 -------------------------------------------------------------------- void LAPACK_IMPL(dlasq4)(const INTEGER *I0, const INTEGER *N0, const DOUBLE *Z, const INTEGER *PP, const INTEGER *N0IN, const DOUBLE *DMIN, const DOUBLE *DMIN1, const DOUBLE *DMIN2, const DOUBLE *DN, const DOUBLE *DN1, const DOUBLE *DN2, DOUBLE *TAU, INTEGER *TTYPE, DOUBLE *G); //-- dlasq5 -------------------------------------------------------------------- void LAPACK_IMPL(dlasq5)(const INTEGER *I0, const INTEGER *N0, const DOUBLE *Z, const INTEGER *PP, const DOUBLE *TAU, DOUBLE *DMIN, DOUBLE *DMIN1, DOUBLE *DMIN2, DOUBLE *DN, DOUBLE *DNM1, DOUBLE *DNM2, const LOGICAL *IEEE); //-- dlasq6 -------------------------------------------------------------------- void LAPACK_IMPL(dlasq6)(const INTEGER *I0, const INTEGER *N0, const DOUBLE *Z, const INTEGER *PP, DOUBLE *DMIN, DOUBLE *DMIN1, DOUBLE *DMIN2, DOUBLE *DN, DOUBLE *DNM1, DOUBLE *DNM2); //-- dlasr --------------------------------------------------------------------- void LAPACK_IMPL(dlasr)(const char *SIDE, const char *PIVOT, const char *DIRECT, const INTEGER *M, const INTEGER *N, const DOUBLE *C, const DOUBLE *S, DOUBLE *A, const INTEGER *LDA); //-- dlasrt -------------------------------------------------------------------- void LAPACK_IMPL(dlasrt)(const char *ID, const INTEGER *N, DOUBLE *D, INTEGER *INFO); //-- dlassq -------------------------------------------------------------------- void LAPACK_IMPL(dlassq)(const INTEGER *N, const DOUBLE *X, const INTEGER *INCX, DOUBLE *SCALE, DOUBLE *SUMSQ); //-- dlasv2 -------------------------------------------------------------------- void LAPACK_IMPL(dlasv2)(const DOUBLE *F, const DOUBLE *G, const DOUBLE *H, DOUBLE *SSMIN, DOUBLE *SSMAX, DOUBLE *SNR, DOUBLE *CSR, DOUBLE *SNL, DOUBLE *CSL); //-- dlaswp -------------------------------------------------------------------- void LAPACK_IMPL(dlaswp)(const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const INTEGER *K1, const INTEGER *K2, const INTEGER *IPIV, const INTEGER *INCX); //-- dlasy2 -------------------------------------------------------------------- void LAPACK_IMPL(dlasy2)(const LOGICAL *LTRANL, const LOGICAL *LTRANR, const INTEGER *ISGN, const INTEGER *N1, const INTEGER *N2, const DOUBLE *TL, const INTEGER *LDTL, const DOUBLE *TR, const INTEGER *LDTR, const DOUBLE *B, const INTEGER *LDB, DOUBLE *SCALE, DOUBLE *X, const INTEGER *LDX, DOUBLE *XNORM, INTEGER *INFO); //-- dlasyf -------------------------------------------------------------------- void LAPACK_IMPL(dlasyf)(const char *UPLO, const INTEGER *N, const INTEGER *NB, INTEGER *KB, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE *W, const INTEGER *LDW, INTEGER *INFO); //-- dlat2s -------------------------------------------------------------------- void LAPACK_IMPL(dlat2s)(const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, FLOAT *SA, const INTEGER *LDSA, INTEGER *INFO); //-- dlatbs -------------------------------------------------------------------- void LAPACK_IMPL(dlatbs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const INTEGER *KD, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *X, DOUBLE *SCALE, DOUBLE *CNORM, INTEGER *INFO); //-- dlatdf -------------------------------------------------------------------- void LAPACK_IMPL(dlatdf)(const INTEGER *IJOB, const INTEGER *N, const DOUBLE *Z, const INTEGER *LDZ, DOUBLE *RHS, DOUBLE *RDSUM, DOUBLE *RDSCAL, const INTEGER *IPIV, const INTEGER *JPIV); //-- dlatps -------------------------------------------------------------------- void LAPACK_IMPL(dlatps)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const DOUBLE *AP, DOUBLE *X, DOUBLE *SCALE, DOUBLE *CNORM, INTEGER *INFO); //-- dlatrd -------------------------------------------------------------------- void LAPACK_IMPL(dlatrd)(const char *UPLO, const INTEGER *N, const INTEGER *NB, DOUBLE *A, const INTEGER *LDA, DOUBLE *E, DOUBLE *TAU, DOUBLE *W, const INTEGER *LDW); //-- dlatrs -------------------------------------------------------------------- void LAPACK_IMPL(dlatrs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *X, DOUBLE *SCALE, DOUBLE *CNORM, INTEGER *INFO); //-- dlatrz -------------------------------------------------------------------- void LAPACK_IMPL(dlatrz)(const INTEGER *M, const INTEGER *N, const INTEGER *L, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK); //-- dlatzm -------------------------------------------------------------------- void LAPACK_IMPL(dlatzm)(const char *SIDE, const INTEGER *M, const INTEGER *N, const DOUBLE *V, const INTEGER *INCV, const DOUBLE *TAU, DOUBLE *C1, DOUBLE *C2, const INTEGER *LDC, DOUBLE *WORK); //-- dlauu2 -------------------------------------------------------------------- void LAPACK_IMPL(dlauu2)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO); //-- dlauum -------------------------------------------------------------------- void LAPACK_IMPL(dlauum)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO); //-- dopgtr -------------------------------------------------------------------- void LAPACK_IMPL(dopgtr)(const char *UPLO, const INTEGER *N, const DOUBLE *AP, const DOUBLE *TAU, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *WORK, INTEGER *INFO); //-- dopmtr -------------------------------------------------------------------- void LAPACK_IMPL(dopmtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const DOUBLE *AP, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO); //-- dorbdb -------------------------------------------------------------------- void LAPACK_IMPL(dorbdb)(const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, DOUBLE *X11, const INTEGER *LDX11, DOUBLE *X12, const INTEGER *LDX12, DOUBLE *X21, const INTEGER *LDX21, DOUBLE *X22, const INTEGER *LDX22, DOUBLE *THETA, DOUBLE *PHI, DOUBLE *TAUP1, DOUBLE *TAUP2, DOUBLE *TAUQ1, DOUBLE *TAUQ2, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dorcsd -------------------------------------------------------------------- void LAPACK_IMPL(dorcsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, const DOUBLE *X11, const INTEGER *LDX11, const DOUBLE *X12, const INTEGER *LDX12, const DOUBLE *X21, const INTEGER *LDX21, const DOUBLE *X22, const INTEGER *LDX22, DOUBLE *THETA, DOUBLE *U1, const INTEGER *LDU1, DOUBLE *U2, const INTEGER *LDU2, DOUBLE *V1T, const INTEGER *LDV1T, DOUBLE *V2T, const INTEGER *LDV2T, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- dorg2l -------------------------------------------------------------------- void LAPACK_IMPL(dorg2l)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO); //-- dorg2r -------------------------------------------------------------------- void LAPACK_IMPL(dorg2r)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO); //-- dorgbr -------------------------------------------------------------------- void LAPACK_IMPL(dorgbr)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dorghr -------------------------------------------------------------------- void LAPACK_IMPL(dorghr)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dorgl2 -------------------------------------------------------------------- void LAPACK_IMPL(dorgl2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO); //-- dorglq -------------------------------------------------------------------- void LAPACK_IMPL(dorglq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dorgql -------------------------------------------------------------------- void LAPACK_IMPL(dorgql)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dorgqr -------------------------------------------------------------------- void LAPACK_IMPL(dorgqr)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dorgr2 -------------------------------------------------------------------- void LAPACK_IMPL(dorgr2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, INTEGER *INFO); //-- dorgrq -------------------------------------------------------------------- void LAPACK_IMPL(dorgrq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dorgtr -------------------------------------------------------------------- void LAPACK_IMPL(dorgtr)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dorm2l -------------------------------------------------------------------- void LAPACK_IMPL(dorm2l)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO); //-- dorm2r -------------------------------------------------------------------- void LAPACK_IMPL(dorm2r)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO); //-- dormbr -------------------------------------------------------------------- void LAPACK_IMPL(dormbr)(const char *VECT, const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dormhr -------------------------------------------------------------------- void LAPACK_IMPL(dormhr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dorml2 -------------------------------------------------------------------- void LAPACK_IMPL(dorml2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO); //-- dormlq -------------------------------------------------------------------- void LAPACK_IMPL(dormlq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dormql -------------------------------------------------------------------- void LAPACK_IMPL(dormql)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dormqr -------------------------------------------------------------------- void LAPACK_IMPL(dormqr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dormr2 -------------------------------------------------------------------- void LAPACK_IMPL(dormr2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO); //-- dormr3 -------------------------------------------------------------------- void LAPACK_IMPL(dormr3)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, INTEGER *INFO); //-- dormrq -------------------------------------------------------------------- void LAPACK_IMPL(dormrq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dormrz -------------------------------------------------------------------- void LAPACK_IMPL(dormrz)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dormtr -------------------------------------------------------------------- void LAPACK_IMPL(dormtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *TAU, DOUBLE *C, const INTEGER *LDC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dpbcon -------------------------------------------------------------------- void LAPACK_IMPL(dpbcon)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dpbequ -------------------------------------------------------------------- void LAPACK_IMPL(dpbequ)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO); //-- dpbrfs -------------------------------------------------------------------- void LAPACK_IMPL(dpbrfs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *AFB, const INTEGER *LDAFB, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dpbstf -------------------------------------------------------------------- void LAPACK_IMPL(dpbstf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, INTEGER *INFO); //-- dpbsv --------------------------------------------------------------------- void LAPACK_IMPL(dpbsv)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dpbsvx -------------------------------------------------------------------- void LAPACK_IMPL(dpbsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *AFB, const INTEGER *LDAFB, char *EQUED, DOUBLE *S, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dpbtf2 -------------------------------------------------------------------- void LAPACK_IMPL(dpbtf2)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, INTEGER *INFO); //-- dpbtrf -------------------------------------------------------------------- void LAPACK_IMPL(dpbtrf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, INTEGER *INFO); //-- dpbtrs -------------------------------------------------------------------- void LAPACK_IMPL(dpbtrs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dpftrf -------------------------------------------------------------------- void LAPACK_IMPL(dpftrf)(const char *TRANSR, const char *UPLO, const INTEGER *N, DOUBLE *A, INTEGER *INFO); //-- dpftri -------------------------------------------------------------------- void LAPACK_IMPL(dpftri)(const char *TRANSR, const char *UPLO, const INTEGER *N, DOUBLE *A, INTEGER *INFO); //-- dpftrs -------------------------------------------------------------------- void LAPACK_IMPL(dpftrs)(const char *TRANSR, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dpocon -------------------------------------------------------------------- void LAPACK_IMPL(dpocon)(const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dpoequ -------------------------------------------------------------------- void LAPACK_IMPL(dpoequ)(const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO); //-- dpoequb ------------------------------------------------------------------- void LAPACK_IMPL(dpoequb)(const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO); //-- dporfs -------------------------------------------------------------------- void LAPACK_IMPL(dporfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dporfsx ------------------------------------------------------------------- void LAPACK_IMPL(dporfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, DOUBLE *S, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dposv --------------------------------------------------------------------- void LAPACK_IMPL(dposv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dposvx -------------------------------------------------------------------- void LAPACK_IMPL(dposvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *AF, const INTEGER *LDAF, char *EQUED, DOUBLE *S, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dposvxx ------------------------------------------------------------------- void LAPACK_IMPL(dposvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *AF, const INTEGER *LDAF, char *EQUED, DOUBLE *S, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dpotf2 -------------------------------------------------------------------- void LAPACK_IMPL(dpotf2)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO); //-- dpotrf -------------------------------------------------------------------- void LAPACK_IMPL(dpotrf)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO); //-- dpotri -------------------------------------------------------------------- void LAPACK_IMPL(dpotri)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO); //-- dpotrs -------------------------------------------------------------------- void LAPACK_IMPL(dpotrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dppcon -------------------------------------------------------------------- void LAPACK_IMPL(dppcon)(const char *UPLO, const INTEGER *N, const DOUBLE *AP, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dppequ -------------------------------------------------------------------- void LAPACK_IMPL(dppequ)(const char *UPLO, const INTEGER *N, const DOUBLE *AP, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO); //-- dpprfs -------------------------------------------------------------------- void LAPACK_IMPL(dpprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *AP, const DOUBLE *AFP, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dppsv --------------------------------------------------------------------- void LAPACK_IMPL(dppsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *AP, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dppsvx -------------------------------------------------------------------- void LAPACK_IMPL(dppsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *AP, DOUBLE *AFP, char *EQUED, DOUBLE *S, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dpptrf -------------------------------------------------------------------- void LAPACK_IMPL(dpptrf)(const char *UPLO, const INTEGER *N, DOUBLE *AP, INTEGER *INFO); //-- dpptri -------------------------------------------------------------------- void LAPACK_IMPL(dpptri)(const char *UPLO, const INTEGER *N, DOUBLE *AP, INTEGER *INFO); //-- dpptrs -------------------------------------------------------------------- void LAPACK_IMPL(dpptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *AP, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dpstf2 -------------------------------------------------------------------- void LAPACK_IMPL(dpstf2)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const DOUBLE *TOL, DOUBLE *WORK, INTEGER *INFO); //-- dpstrf -------------------------------------------------------------------- void LAPACK_IMPL(dpstrf)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const DOUBLE *TOL, DOUBLE *WORK, INTEGER *INFO); //-- dptcon -------------------------------------------------------------------- void LAPACK_IMPL(dptcon)(const INTEGER *N, const DOUBLE *D, const DOUBLE *E, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *INFO); //-- dpteqr -------------------------------------------------------------------- void LAPACK_IMPL(dpteqr)(const char *COMPZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO); //-- dptrfs -------------------------------------------------------------------- void LAPACK_IMPL(dptrfs)(const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE *E, const DOUBLE *DF, const DOUBLE *EF, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *INFO); //-- dptsv --------------------------------------------------------------------- void LAPACK_IMPL(dptsv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE *D, DOUBLE *E, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dptsvx -------------------------------------------------------------------- void LAPACK_IMPL(dptsvx)(const char *FACT, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE *E, DOUBLE *DF, DOUBLE *EF, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *INFO); //-- dpttrf -------------------------------------------------------------------- void LAPACK_IMPL(dpttrf)(const INTEGER *N, DOUBLE *D, DOUBLE *E, INTEGER *INFO); //-- dpttrs -------------------------------------------------------------------- void LAPACK_IMPL(dpttrs)(const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE *E, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dptts2 -------------------------------------------------------------------- void LAPACK_IMPL(dptts2)(const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE *E, DOUBLE *B, const INTEGER *LDB); //-- drscl --------------------------------------------------------------------- void LAPACK_IMPL(drscl)(const INTEGER *N, const DOUBLE *SA, DOUBLE *SX, const INTEGER *INCX); //-- dsbev --------------------------------------------------------------------- void LAPACK_IMPL(dsbev)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO); //-- dsbevd -------------------------------------------------------------------- void LAPACK_IMPL(dsbevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- dsbevx -------------------------------------------------------------------- void LAPACK_IMPL(dsbevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *Q, const INTEGER *LDQ, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- dsbgst -------------------------------------------------------------------- void LAPACK_IMPL(dsbgst)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *BB, const INTEGER *LDBB, DOUBLE *X, const INTEGER *LDX, DOUBLE *WORK, INTEGER *INFO); //-- dsbgv --------------------------------------------------------------------- void LAPACK_IMPL(dsbgv)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *BB, const INTEGER *LDBB, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO); //-- dsbgvd -------------------------------------------------------------------- void LAPACK_IMPL(dsbgvd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *BB, const INTEGER *LDBB, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- dsbgvx -------------------------------------------------------------------- void LAPACK_IMPL(dsbgvx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *BB, const INTEGER *LDBB, DOUBLE *Q, const INTEGER *LDQ, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- dsbtrd -------------------------------------------------------------------- void LAPACK_IMPL(dsbtrd)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE *AB, const INTEGER *LDAB, DOUBLE *D, DOUBLE *E, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *WORK, INTEGER *INFO); //-- dsfrk --------------------------------------------------------------------- void LAPACK_IMPL(dsfrk)(const char *TRANSR, const char *UPLO, const char *TRANS, const INTEGER *N, const INTEGER *K, const DOUBLE *ALPHA, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *BETA, DOUBLE *C); //-- dsgesv -------------------------------------------------------------------- void LAPACK_IMPL(dsgesv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *WORK, FLOAT *SWORK, INTEGER *ITER, INTEGER *INFO); //-- dspcon -------------------------------------------------------------------- void LAPACK_IMPL(dspcon)(const char *UPLO, const INTEGER *N, const DOUBLE *AP, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dspev --------------------------------------------------------------------- void LAPACK_IMPL(dspev)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *AP, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO); //-- dspevd -------------------------------------------------------------------- void LAPACK_IMPL(dspevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *AP, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- dspevx -------------------------------------------------------------------- void LAPACK_IMPL(dspevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE *AP, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- dspgst -------------------------------------------------------------------- void LAPACK_IMPL(dspgst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, DOUBLE *AP, const DOUBLE *BP, INTEGER *INFO); //-- dspgv --------------------------------------------------------------------- void LAPACK_IMPL(dspgv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *AP, DOUBLE *BP, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO); //-- dspgvd -------------------------------------------------------------------- void LAPACK_IMPL(dspgvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *AP, DOUBLE *BP, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- dspgvx -------------------------------------------------------------------- void LAPACK_IMPL(dspgvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE *AP, DOUBLE *BP, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- dsposv -------------------------------------------------------------------- void LAPACK_IMPL(dsposv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *WORK, FLOAT *SWORK, INTEGER *ITER, INTEGER *INFO); //-- dsprfs -------------------------------------------------------------------- void LAPACK_IMPL(dsprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *AP, const DOUBLE *AFP, const INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dspsv --------------------------------------------------------------------- void LAPACK_IMPL(dspsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *AP, INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dspsvx -------------------------------------------------------------------- void LAPACK_IMPL(dspsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *AP, DOUBLE *AFP, INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dsptrd -------------------------------------------------------------------- void LAPACK_IMPL(dsptrd)(const char *UPLO, const INTEGER *N, DOUBLE *AP, DOUBLE *D, DOUBLE *E, DOUBLE *TAU, INTEGER *INFO); //-- dsptrf -------------------------------------------------------------------- void LAPACK_IMPL(dsptrf)(const char *UPLO, const INTEGER *N, DOUBLE *AP, INTEGER *IPIV, INTEGER *INFO); //-- dsptri -------------------------------------------------------------------- void LAPACK_IMPL(dsptri)(const char *UPLO, const INTEGER *N, DOUBLE *AP, const INTEGER *IPIV, DOUBLE *WORK, INTEGER *INFO); //-- dsptrs -------------------------------------------------------------------- void LAPACK_IMPL(dsptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *AP, const INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dstebz -------------------------------------------------------------------- void LAPACK_IMPL(dstebz)(const char *RANGE, const char *ORDER, const INTEGER *N, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, const DOUBLE *D, const DOUBLE *E, INTEGER *M, INTEGER *NSPLIT, DOUBLE *W, INTEGER *IBLOCK, INTEGER *ISPLIT, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dstedc -------------------------------------------------------------------- void LAPACK_IMPL(dstedc)(const char *COMPZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- dstegr -------------------------------------------------------------------- void LAPACK_IMPL(dstegr)(const char *JOBZ, const char *RANGE, const INTEGER *N, DOUBLE *D, DOUBLE *E, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- dstein -------------------------------------------------------------------- void LAPACK_IMPL(dstein)(const INTEGER *N, const DOUBLE *D, const DOUBLE *E, const INTEGER *M, const DOUBLE *W, const INTEGER *IBLOCK, const INTEGER *ISPLIT, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- dstemr -------------------------------------------------------------------- void LAPACK_IMPL(dstemr)(const char *JOBZ, const char *RANGE, const INTEGER *N, DOUBLE *D, DOUBLE *E, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, const INTEGER *NZC, INTEGER *ISUPPZ, LOGICAL *TRYRAC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- dsteqr -------------------------------------------------------------------- void LAPACK_IMPL(dsteqr)(const char *COMPZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO); //-- dsterf -------------------------------------------------------------------- void LAPACK_IMPL(dsterf)(const INTEGER *N, DOUBLE *D, DOUBLE *E, INTEGER *INFO); //-- dstev --------------------------------------------------------------------- void LAPACK_IMPL(dstev)(const char *JOBZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO); //-- dstevd -------------------------------------------------------------------- void LAPACK_IMPL(dstevd)(const char *JOBZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- dstevr -------------------------------------------------------------------- void LAPACK_IMPL(dstevr)(const char *JOBZ, const char *RANGE, const INTEGER *N, DOUBLE *D, DOUBLE *E, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- dstevx -------------------------------------------------------------------- void LAPACK_IMPL(dstevx)(const char *JOBZ, const char *RANGE, const INTEGER *N, DOUBLE *D, DOUBLE *E, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- dsycon -------------------------------------------------------------------- void LAPACK_IMPL(dsycon)(const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dsyconv ------------------------------------------------------------------- void LAPACK_IMPL(dsyconv)(const char *UPLO, const char *WAY, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *WORK, INTEGER *INFO); //-- dsyequb ------------------------------------------------------------------- void LAPACK_IMPL(dsyequb)(const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, DOUBLE *WORK, INTEGER *INFO); //-- dsyev --------------------------------------------------------------------- void LAPACK_IMPL(dsyev)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *W, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dsyevd -------------------------------------------------------------------- void LAPACK_IMPL(dsyevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *W, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- dsyevr -------------------------------------------------------------------- void LAPACK_IMPL(dsyevr)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- dsyevx -------------------------------------------------------------------- void LAPACK_IMPL(dsyevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- dsygs2 -------------------------------------------------------------------- void LAPACK_IMPL(dsygs2)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dsygst -------------------------------------------------------------------- void LAPACK_IMPL(dsygst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dsygv --------------------------------------------------------------------- void LAPACK_IMPL(dsygv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *W, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dsygvd -------------------------------------------------------------------- void LAPACK_IMPL(dsygvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *W, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- dsygvx -------------------------------------------------------------------- void LAPACK_IMPL(dsygvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE *Z, const INTEGER *LDZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- dsyrfs -------------------------------------------------------------------- void LAPACK_IMPL(dsyrfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dsyrfsx ------------------------------------------------------------------- void LAPACK_IMPL(dsyrfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *AF, const INTEGER *LDAF, const INTEGER *IPIV, DOUBLE *S, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dsysv --------------------------------------------------------------------- void LAPACK_IMPL(dsysv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dsysvx -------------------------------------------------------------------- void LAPACK_IMPL(dsysvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, DOUBLE *AF, const INTEGER *LDAF, INTEGER *IPIV, const DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- dsysvxx ------------------------------------------------------------------- void LAPACK_IMPL(dsysvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE *A, const INTEGER *LDA, DOUBLE *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, DOUBLE *S, DOUBLE *B, const INTEGER *LDB, DOUBLE *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dsyswapr ------------------------------------------------------------------ void LAPACK_IMPL(dsyswapr)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const INTEGER *I1, const INTEGER *I2); //-- dsytd2 -------------------------------------------------------------------- void LAPACK_IMPL(dsytd2)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE *TAU, INTEGER *INFO); //-- dsytf2 -------------------------------------------------------------------- void LAPACK_IMPL(dsytf2)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO); //-- dsytrd -------------------------------------------------------------------- void LAPACK_IMPL(dsytrd)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dsytrf -------------------------------------------------------------------- void LAPACK_IMPL(dsytrf)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dsytri -------------------------------------------------------------------- void LAPACK_IMPL(dsytri)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *WORK, INTEGER *INFO); //-- dsytri2 ------------------------------------------------------------------- void LAPACK_IMPL(dsytri2)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dsytri2x ------------------------------------------------------------------ void LAPACK_IMPL(dsytri2x)(const char *UPLO, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *WORK, const INTEGER *NB, INTEGER *INFO); //-- dsytrs -------------------------------------------------------------------- void LAPACK_IMPL(dsytrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dsytrs2 ------------------------------------------------------------------- void LAPACK_IMPL(dsytrs2)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE *B, const INTEGER *LDB, DOUBLE *WORK, INTEGER *INFO); //-- dtbcon -------------------------------------------------------------------- void LAPACK_IMPL(dtbcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *KD, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dtbrfs -------------------------------------------------------------------- void LAPACK_IMPL(dtbrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, const DOUBLE *B, const INTEGER *LDB, const DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dtbtrs -------------------------------------------------------------------- void LAPACK_IMPL(dtbtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE *AB, const INTEGER *LDAB, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dtfsm --------------------------------------------------------------------- void LAPACK_IMPL(dtfsm)(const char *TRANSR, const char *SIDE, const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *M, const INTEGER *N, const DOUBLE *ALPHA, const DOUBLE *A, DOUBLE *B, const INTEGER *LDB); //-- dtftri -------------------------------------------------------------------- void LAPACK_IMPL(dtftri)(const char *TRANSR, const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE *A, INTEGER *INFO); //-- dtfttp -------------------------------------------------------------------- void LAPACK_IMPL(dtfttp)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE *ARF, DOUBLE *AP, INTEGER *INFO); //-- dtfttr -------------------------------------------------------------------- void LAPACK_IMPL(dtfttr)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE *ARF, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO); //-- dtgevc -------------------------------------------------------------------- void LAPACK_IMPL(dtgevc)(const char *SIDE, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const DOUBLE *S, const INTEGER *LDS, const DOUBLE *P, const INTEGER *LDP, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, DOUBLE *WORK, INTEGER *INFO); //-- dtgex2 -------------------------------------------------------------------- void LAPACK_IMPL(dtgex2)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *Z, const INTEGER *LDZ, const INTEGER *J1, const INTEGER *N1, const INTEGER *N2, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dtgexc -------------------------------------------------------------------- void LAPACK_IMPL(dtgexc)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *Z, const INTEGER *LDZ, INTEGER *IFST, INTEGER *ILST, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dtgsen -------------------------------------------------------------------- void LAPACK_IMPL(dtgsen)(const INTEGER *IJOB, const LOGICAL *WANTQ, const LOGICAL *WANTZ, const LOGICAL *SELECT, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, DOUBLE *ALPHAR, DOUBLE *ALPHAI, DOUBLE *BETA, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *Z, const INTEGER *LDZ, INTEGER *M, DOUBLE *PL, DOUBLE *PR, DOUBLE *DIF, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- dtgsja -------------------------------------------------------------------- void LAPACK_IMPL(dtgsja)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, const INTEGER *K, const INTEGER *L, DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, const DOUBLE *TOLA, const DOUBLE *TOLB, DOUBLE *ALPHA, DOUBLE *BETA, DOUBLE *U, const INTEGER *LDU, DOUBLE *V, const INTEGER *LDV, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *WORK, INTEGER *NCYCLE, INTEGER *INFO); //-- dtgsna -------------------------------------------------------------------- void LAPACK_IMPL(dtgsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, const DOUBLE *VL, const INTEGER *LDVL, const DOUBLE *VR, const INTEGER *LDVR, DOUBLE *S, DOUBLE *DIF, const INTEGER *MM, INTEGER *M, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- dtgsy2 -------------------------------------------------------------------- void LAPACK_IMPL(dtgsy2)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, DOUBLE *C, const INTEGER *LDC, const DOUBLE *D, const INTEGER *LDD, const DOUBLE *E, const INTEGER *LDE, DOUBLE *F, const INTEGER *LDF, DOUBLE *SCALE, DOUBLE *RDSUM, DOUBLE *RDSCAL, INTEGER *IWORK, INTEGER *PQ, INTEGER *INFO); //-- dtgsyl -------------------------------------------------------------------- void LAPACK_IMPL(dtgsyl)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, DOUBLE *C, const INTEGER *LDC, const DOUBLE *D, const INTEGER *LDD, const DOUBLE *E, const INTEGER *LDE, DOUBLE *F, const INTEGER *LDF, DOUBLE *SCALE, DOUBLE *DIF, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- dtpcon -------------------------------------------------------------------- void LAPACK_IMPL(dtpcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const DOUBLE *AP, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dtprfs -------------------------------------------------------------------- void LAPACK_IMPL(dtprfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *AP, const DOUBLE *B, const INTEGER *LDB, const DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dtptri -------------------------------------------------------------------- void LAPACK_IMPL(dtptri)(const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE *AP, INTEGER *INFO); //-- dtptrs -------------------------------------------------------------------- void LAPACK_IMPL(dtptrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *AP, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dtpttf -------------------------------------------------------------------- void LAPACK_IMPL(dtpttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE *AP, DOUBLE *ARF, INTEGER *INFO); //-- dtpttr -------------------------------------------------------------------- void LAPACK_IMPL(dtpttr)(const char *UPLO, const INTEGER *N, const DOUBLE *AP, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO); //-- dtrcon -------------------------------------------------------------------- void LAPACK_IMPL(dtrcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *RCOND, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dtrevc -------------------------------------------------------------------- void LAPACK_IMPL(dtrevc)(const char *SIDE, const char *HOWMNY, LOGICAL *SELECT, const INTEGER *N, const DOUBLE *T, const INTEGER *LDT, DOUBLE *VL, const INTEGER *LDVL, DOUBLE *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, DOUBLE *WORK, INTEGER *INFO); //-- dtrexc -------------------------------------------------------------------- void LAPACK_IMPL(dtrexc)(const char *COMPQ, const INTEGER *N, DOUBLE *T, const INTEGER *LDT, DOUBLE *Q, const INTEGER *LDQ, INTEGER *IFST, INTEGER *ILST, DOUBLE *WORK, INTEGER *INFO); //-- dtrrfs -------------------------------------------------------------------- void LAPACK_IMPL(dtrrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, const DOUBLE *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- dtrsen -------------------------------------------------------------------- void LAPACK_IMPL(dtrsen)(const char *JOB, const char *COMPQ, const LOGICAL *SELECT, const INTEGER *N, DOUBLE *T, const INTEGER *LDT, DOUBLE *Q, const INTEGER *LDQ, DOUBLE *WR, DOUBLE *WI, INTEGER *M, DOUBLE *S, DOUBLE *SEP, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- dtrsna -------------------------------------------------------------------- void LAPACK_IMPL(dtrsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const DOUBLE *T, const INTEGER *LDT, const DOUBLE *VL, const INTEGER *LDVL, const DOUBLE *VR, const INTEGER *LDVR, DOUBLE *S, DOUBLE *SEP, const INTEGER *MM, INTEGER *M, DOUBLE *WORK, const INTEGER *LDWORK, INTEGER *IWORK, INTEGER *INFO); //-- dtrsyl -------------------------------------------------------------------- void LAPACK_IMPL(dtrsyl)(const char *TRANA, const char *TRANB, const INTEGER *ISGN, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, DOUBLE *C, const INTEGER *LDC, DOUBLE *SCALE, INTEGER *INFO); //-- dtrti2 -------------------------------------------------------------------- void LAPACK_IMPL(dtrti2)(const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO); //-- dtrtri -------------------------------------------------------------------- void LAPACK_IMPL(dtrtri)(const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO); //-- dtrtrs -------------------------------------------------------------------- void LAPACK_IMPL(dtrtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *A, const INTEGER *LDA, DOUBLE *B, const INTEGER *LDB, INTEGER *INFO); //-- dtrttf -------------------------------------------------------------------- void LAPACK_IMPL(dtrttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *ARF, INTEGER *INFO); //-- dtrttp -------------------------------------------------------------------- void LAPACK_IMPL(dtrttp)(const char *UPLO, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE *AP, INTEGER *INFO); //-- dtzrqf -------------------------------------------------------------------- void LAPACK_IMPL(dtzrqf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, INTEGER *INFO); //-- dtzrzf -------------------------------------------------------------------- void LAPACK_IMPL(dtzrzf)(const INTEGER *M, const INTEGER *N, DOUBLE *A, const INTEGER *LDA, DOUBLE *TAU, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- dzsum1 -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(dzsum1)(const INTEGER *N, const DOUBLE_COMPLEX *CX, const INTEGER *INCX); //-- icmax1 -------------------------------------------------------------------- INTEGER LAPACK_IMPL(icmax1)(const INTEGER *N, const FLOAT_COMPLEX *CX, const INTEGER *INCX); //-- ieeeck -------------------------------------------------------------------- INTEGER LAPACK_IMPL(ieeeck)(const INTEGER *ISPEC, const FLOAT *ZERO, const FLOAT *ONE); //-- ilaclc -------------------------------------------------------------------- INTEGER LAPACK_IMPL(ilaclc)(const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA); //-- ilaclr -------------------------------------------------------------------- INTEGER LAPACK_IMPL(ilaclr)(const INTEGER *M, const INTEGER *N, const FLOAT_COMPLEX *A, const INTEGER *LDA); //-- iladiag ------------------------------------------------------------------- INTEGER LAPACK_IMPL(iladiag)(const char *DIAG); //-- iladlc -------------------------------------------------------------------- INTEGER LAPACK_IMPL(iladlc)(const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA); //-- iladlr -------------------------------------------------------------------- INTEGER LAPACK_IMPL(iladlr)(const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA); //-- ilaprec ------------------------------------------------------------------- INTEGER LAPACK_IMPL(ilaprec)(const char *PREC); //-- ilaslc -------------------------------------------------------------------- INTEGER LAPACK_IMPL(ilaslc)(const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA); //-- ilaslr -------------------------------------------------------------------- INTEGER LAPACK_IMPL(ilaslr)(const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA); //-- ilatrans ------------------------------------------------------------------ INTEGER LAPACK_IMPL(ilatrans)(const char *TRANS); //-- ilauplo ------------------------------------------------------------------- INTEGER LAPACK_IMPL(ilauplo)(const char *UPLO); //-- ilaver -------------------------------------------------------------------- void LAPACK_IMPL(ilaver)(INTEGER *VERS_MAJOR, INTEGER *VERS_MINOR, INTEGER *VERS_PATCH); //-- ilazlc -------------------------------------------------------------------- INTEGER LAPACK_IMPL(ilazlc)(const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA); //-- ilazlr -------------------------------------------------------------------- INTEGER LAPACK_IMPL(ilazlr)(const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA); //-- iparmq -------------------------------------------------------------------- INTEGER LAPACK_IMPL(iparmq)(const INTEGER *ISPEC, const char *NAME, const char *OPTS, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const INTEGER *LWORK); //-- izmax1 -------------------------------------------------------------------- INTEGER LAPACK_IMPL(izmax1)(const INTEGER *N, const DOUBLE_COMPLEX *CX, const INTEGER *INCX); //-- lsame --------------------------------------------------------------------- LOGICAL LAPACK_IMPL(lsame)(const char *CA, const char *CB); //-- lsamen -------------------------------------------------------------------- LOGICAL LAPACK_IMPL(lsamen)(const INTEGER *N, const char *CA, const char *CB); //-- sbbcsd -------------------------------------------------------------------- void LAPACK_IMPL(sbbcsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, FLOAT *THETA, FLOAT *PHI, FLOAT *U1, const INTEGER *LDU1, FLOAT *U2, const INTEGER *LDU2, FLOAT *V1T, const INTEGER *LDV1T, FLOAT *V2T, const INTEGER *LDV2T, FLOAT *B11D, FLOAT *B11E, FLOAT *B12D, FLOAT *B12E, const FLOAT *B21D, const FLOAT *B21E, const FLOAT *B22D, const FLOAT *B22E, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sbdsdc -------------------------------------------------------------------- void LAPACK_IMPL(sbdsdc)(const char *UPLO, const char *COMPQ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT *U, const INTEGER *LDU, FLOAT *VT, const INTEGER *LDVT, FLOAT *Q, INTEGER *IQ, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sbdsqr -------------------------------------------------------------------- void LAPACK_IMPL(sbdsqr)(const char *UPLO, const INTEGER *N, const INTEGER *NCVT, const INTEGER *NRU, const INTEGER *NCC, FLOAT *D, FLOAT *E, FLOAT *VT, const INTEGER *LDVT, FLOAT *U, const INTEGER *LDU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO); //-- scsum1 -------------------------------------------------------------------- FLOAT LAPACK_IMPL(scsum1)(const INTEGER *N, const FLOAT_COMPLEX *CX, const INTEGER *INCX); //-- sdisna -------------------------------------------------------------------- void LAPACK_IMPL(sdisna)(const char *JOB, const INTEGER *M, const INTEGER *N, const FLOAT *D, FLOAT *SEP, INTEGER *INFO); //-- sgbbrd -------------------------------------------------------------------- void LAPACK_IMPL(sgbbrd)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *NCC, const INTEGER *KL, const INTEGER *KU, FLOAT *AB, const INTEGER *LDAB, FLOAT *D, FLOAT *E, FLOAT *Q, const INTEGER *LDQ, FLOAT *PT, const INTEGER *LDPT, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO); //-- sgbcon -------------------------------------------------------------------- void LAPACK_IMPL(sgbcon)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT *AB, const INTEGER *LDAB, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sgbequ -------------------------------------------------------------------- void LAPACK_IMPL(sgbequ)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT *AB, const INTEGER *LDAB, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO); //-- sgbequb ------------------------------------------------------------------- void LAPACK_IMPL(sgbequb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT *AB, const INTEGER *LDAB, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO); //-- sgbrfs -------------------------------------------------------------------- void LAPACK_IMPL(sgbrfs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sgbrfsx ------------------------------------------------------------------- void LAPACK_IMPL(sgbrfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, FLOAT *R, FLOAT *C, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sgbsv --------------------------------------------------------------------- void LAPACK_IMPL(sgbsv)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, FLOAT *AB, const INTEGER *LDAB, INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- sgbsvx -------------------------------------------------------------------- void LAPACK_IMPL(sgbsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, FLOAT *AB, const INTEGER *LDAB, FLOAT *AFB, const INTEGER *LDAFB, INTEGER *IPIV, char *EQUED, FLOAT *R, FLOAT *C, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sgbsvxx ------------------------------------------------------------------- void LAPACK_IMPL(sgbsvxx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, FLOAT *AB, const INTEGER *LDAB, FLOAT *AFB, const INTEGER *LDAFB, INTEGER *IPIV, char *EQUED, FLOAT *R, FLOAT *C, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sgbtf2 -------------------------------------------------------------------- void LAPACK_IMPL(sgbtf2)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, FLOAT *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO); //-- sgbtrf -------------------------------------------------------------------- void LAPACK_IMPL(sgbtrf)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, FLOAT *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO); //-- sgbtrs -------------------------------------------------------------------- void LAPACK_IMPL(sgbtrs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, const INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- sgebak -------------------------------------------------------------------- void LAPACK_IMPL(sgebak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const FLOAT *SCALE, const INTEGER *M, FLOAT *V, const INTEGER *LDV, INTEGER *INFO); //-- sgebal -------------------------------------------------------------------- void LAPACK_IMPL(sgebal)(const char *JOB, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *ILO, INTEGER *IHI, FLOAT *SCALE, INTEGER *INFO); //-- sgebd2 -------------------------------------------------------------------- void LAPACK_IMPL(sgebd2)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT *TAUQ, FLOAT *TAUP, FLOAT *WORK, INTEGER *INFO); //-- sgebrd -------------------------------------------------------------------- void LAPACK_IMPL(sgebrd)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT *TAUQ, FLOAT *TAUP, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgecon -------------------------------------------------------------------- void LAPACK_IMPL(sgecon)(const char *NORM, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sgeequ -------------------------------------------------------------------- void LAPACK_IMPL(sgeequ)(const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO); //-- sgeequb ------------------------------------------------------------------- void LAPACK_IMPL(sgeequb)(const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *R, FLOAT *C, FLOAT *ROWCND, FLOAT *COLCND, FLOAT *AMAX, INTEGER *INFO); //-- sgees --------------------------------------------------------------------- void LAPACK_IMPL(sgees)(const char *JOBVS, const char *SORT, LOGICAL (*SELECT)(const FLOAT *, const FLOAT *), const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *SDIM, FLOAT *WR, FLOAT *WI, FLOAT *VS, const INTEGER *LDVS, FLOAT *WORK, const INTEGER *LWORK, LOGICAL *BWORK, INTEGER *INFO); //-- sgeesx -------------------------------------------------------------------- void LAPACK_IMPL(sgeesx)(const char *JOBVS, const char *SORT, LOGICAL (*SELECT)(const FLOAT *, const FLOAT *), const char *SENSE, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *SDIM, FLOAT *WR, FLOAT *WI, FLOAT *VS, const INTEGER *LDVS, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, LOGICAL *BWORK, INTEGER *INFO); //-- sgeev --------------------------------------------------------------------- void LAPACK_IMPL(sgeev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *WR, FLOAT *WI, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgeevx -------------------------------------------------------------------- void LAPACK_IMPL(sgeevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *WR, FLOAT *WI, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, FLOAT *SCALE, FLOAT *ABNRM, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- sgegs --------------------------------------------------------------------- void LAPACK_IMPL(sgegs)(const char *JOBVSL, const char *JOBVSR, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *VSL, const INTEGER *LDVSL, FLOAT *VSR, const INTEGER *LDVSR, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgegv --------------------------------------------------------------------- void LAPACK_IMPL(sgegv)(const char *JOBVL, const char *JOBVR, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgehd2 -------------------------------------------------------------------- void LAPACK_IMPL(sgehd2)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO); //-- sgehrd -------------------------------------------------------------------- void LAPACK_IMPL(sgehrd)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgejsv -------------------------------------------------------------------- void LAPACK_IMPL(sgejsv)(const char *JOBA, const char *JOBU, const char *JOBV, const char *JOBR, const char *JOBT, const char *JOBP, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *SVA, const FLOAT *U, const INTEGER *LDU, const FLOAT *V, const INTEGER *LDV, const FLOAT *WORK, const INTEGER *LWORK, const INTEGER *IWORK, const INTEGER *INFO); //-- sgelq2 -------------------------------------------------------------------- void LAPACK_IMPL(sgelq2)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO); //-- sgelqf -------------------------------------------------------------------- void LAPACK_IMPL(sgelqf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgels --------------------------------------------------------------------- void LAPACK_IMPL(sgels)(const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgelsd -------------------------------------------------------------------- void LAPACK_IMPL(sgelsd)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *S, const FLOAT *RCOND, INTEGER *RANK, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- sgelss -------------------------------------------------------------------- void LAPACK_IMPL(sgelss)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *S, const FLOAT *RCOND, INTEGER *RANK, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgelsx -------------------------------------------------------------------- void LAPACK_IMPL(sgelsx)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *JPVT, const FLOAT *RCOND, INTEGER *RANK, FLOAT *WORK, INTEGER *INFO); //-- sgelsy -------------------------------------------------------------------- void LAPACK_IMPL(sgelsy)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *JPVT, const FLOAT *RCOND, INTEGER *RANK, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgeql2 -------------------------------------------------------------------- void LAPACK_IMPL(sgeql2)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO); //-- sgeqlf -------------------------------------------------------------------- void LAPACK_IMPL(sgeqlf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgeqp3 -------------------------------------------------------------------- void LAPACK_IMPL(sgeqp3)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgeqpf -------------------------------------------------------------------- void LAPACK_IMPL(sgeqpf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO); //-- sgeqr2 -------------------------------------------------------------------- void LAPACK_IMPL(sgeqr2)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO); //-- sgeqr2p ------------------------------------------------------------------- void LAPACK_IMPL(sgeqr2p)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO); //-- sgeqrf -------------------------------------------------------------------- void LAPACK_IMPL(sgeqrf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgeqrfp ------------------------------------------------------------------- void LAPACK_IMPL(sgeqrfp)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgerfs -------------------------------------------------------------------- void LAPACK_IMPL(sgerfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sgerfsx ------------------------------------------------------------------- void LAPACK_IMPL(sgerfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *R, const FLOAT *C, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sgerq2 -------------------------------------------------------------------- void LAPACK_IMPL(sgerq2)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO); //-- sgerqf -------------------------------------------------------------------- void LAPACK_IMPL(sgerqf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgesc2 -------------------------------------------------------------------- void LAPACK_IMPL(sgesc2)(const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *RHS, const INTEGER *IPIV, const INTEGER *JPIV, FLOAT *SCALE); //-- sgesdd -------------------------------------------------------------------- void LAPACK_IMPL(sgesdd)(const char *JOBZ, const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *S, FLOAT *U, const INTEGER *LDU, FLOAT *VT, const INTEGER *LDVT, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- sgesv --------------------------------------------------------------------- void LAPACK_IMPL(sgesv)(const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- sgesvd -------------------------------------------------------------------- void LAPACK_IMPL(sgesvd)(const char *JOBU, const char *JOBVT, const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *S, FLOAT *U, const INTEGER *LDU, FLOAT *VT, const INTEGER *LDVT, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgesvj -------------------------------------------------------------------- void LAPACK_IMPL(sgesvj)(const char *JOBA, const char *JOBU, const char *JOBV, const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *SVA, const INTEGER *MV, FLOAT *V, const INTEGER *LDV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgesvx -------------------------------------------------------------------- void LAPACK_IMPL(sgesvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, FLOAT *R, FLOAT *C, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sgesvxx ------------------------------------------------------------------- void LAPACK_IMPL(sgesvxx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, FLOAT *R, FLOAT *C, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sgetc2 -------------------------------------------------------------------- void LAPACK_IMPL(sgetc2)(const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *JPIV, INTEGER *INFO); //-- sgetf2 -------------------------------------------------------------------- void LAPACK_IMPL(sgetf2)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO); //-- sgetrf -------------------------------------------------------------------- void LAPACK_IMPL(sgetrf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO); //-- sgetri -------------------------------------------------------------------- void LAPACK_IMPL(sgetri)(const INTEGER *N, FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgetrs -------------------------------------------------------------------- void LAPACK_IMPL(sgetrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- sggbak -------------------------------------------------------------------- void LAPACK_IMPL(sggbak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const FLOAT *LSCALE, const FLOAT *RSCALE, const INTEGER *M, FLOAT *V, const INTEGER *LDV, INTEGER *INFO); //-- sggbal -------------------------------------------------------------------- void LAPACK_IMPL(sggbal)(const char *JOB, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *ILO, INTEGER *IHI, FLOAT *LSCALE, FLOAT *RSCALE, FLOAT *WORK, INTEGER *INFO); //-- sgges --------------------------------------------------------------------- void LAPACK_IMPL(sgges)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *SDIM, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *VSL, const INTEGER *LDVSL, FLOAT *VSR, const INTEGER *LDVSR, FLOAT *WORK, const INTEGER *LWORK, LOGICAL *BWORK, INTEGER *INFO); //-- sggesx -------------------------------------------------------------------- void LAPACK_IMPL(sggesx)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const char *SENSE, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *SDIM, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *VSL, const INTEGER *LDVSL, FLOAT *VSR, const INTEGER *LDVSR, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, LOGICAL *BWORK, INTEGER *INFO); //-- sggev --------------------------------------------------------------------- void LAPACK_IMPL(sggev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sggevx -------------------------------------------------------------------- void LAPACK_IMPL(sggevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, FLOAT *LSCALE, FLOAT *RSCALE, FLOAT *ABNRM, FLOAT *BBNRM, FLOAT *RCONDE, FLOAT *RCONDV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, LOGICAL *BWORK, INTEGER *INFO); //-- sggglm -------------------------------------------------------------------- void LAPACK_IMPL(sggglm)(const INTEGER *N, const INTEGER *M, const INTEGER *P, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *D, FLOAT *X, FLOAT *Y, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgghrd -------------------------------------------------------------------- void LAPACK_IMPL(sgghrd)(const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *Q, const INTEGER *LDQ, FLOAT *Z, const INTEGER *LDZ, INTEGER *INFO); //-- sgglse -------------------------------------------------------------------- void LAPACK_IMPL(sgglse)(const INTEGER *M, const INTEGER *N, const INTEGER *P, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *C, FLOAT *D, FLOAT *X, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sggqrf -------------------------------------------------------------------- void LAPACK_IMPL(sggqrf)(const INTEGER *N, const INTEGER *M, const INTEGER *P, FLOAT *A, const INTEGER *LDA, FLOAT *TAUA, FLOAT *B, const INTEGER *LDB, FLOAT *TAUB, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sggrqf -------------------------------------------------------------------- void LAPACK_IMPL(sggrqf)(const INTEGER *M, const INTEGER *P, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAUA, FLOAT *B, const INTEGER *LDB, FLOAT *TAUB, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sggsvd -------------------------------------------------------------------- void LAPACK_IMPL(sggsvd)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *N, const INTEGER *P, INTEGER *K, INTEGER *L, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *ALPHA, FLOAT *BETA, FLOAT *U, const INTEGER *LDU, FLOAT *V, const INTEGER *LDV, FLOAT *Q, const INTEGER *LDQ, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sggsvp -------------------------------------------------------------------- void LAPACK_IMPL(sggsvp)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, const FLOAT *TOLA, const FLOAT *TOLB, INTEGER *K, INTEGER *L, FLOAT *U, const INTEGER *LDU, FLOAT *V, const INTEGER *LDV, FLOAT *Q, const INTEGER *LDQ, INTEGER *IWORK, FLOAT *TAU, FLOAT *WORK, INTEGER *INFO); //-- sgsvj0 -------------------------------------------------------------------- void LAPACK_IMPL(sgsvj0)(const char *JOBV, const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *D, FLOAT *SVA, const INTEGER *MV, FLOAT *V, const INTEGER *LDV, const FLOAT *EPS, const FLOAT *SFMIN, const FLOAT *TOL, const INTEGER *NSWEEP, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgsvj1 -------------------------------------------------------------------- void LAPACK_IMPL(sgsvj1)(const char *JOBV, const INTEGER *M, const INTEGER *N, const INTEGER *N1, FLOAT *A, const INTEGER *LDA, FLOAT *D, FLOAT *SVA, const INTEGER *MV, FLOAT *V, const INTEGER *LDV, const FLOAT *EPS, const FLOAT *SFMIN, const FLOAT *TOL, const INTEGER *NSWEEP, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sgtcon -------------------------------------------------------------------- void LAPACK_IMPL(sgtcon)(const char *NORM, const INTEGER *N, const FLOAT *DL, const FLOAT *D, const FLOAT *DU, const FLOAT *DU2, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sgtrfs -------------------------------------------------------------------- void LAPACK_IMPL(sgtrfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *DL, const FLOAT *D, const FLOAT *DU, const FLOAT *DLF, const FLOAT *DF, const FLOAT *DUF, const FLOAT *DU2, const INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sgtsv --------------------------------------------------------------------- void LAPACK_IMPL(sgtsv)(const INTEGER *N, const INTEGER *NRHS, FLOAT *DL, FLOAT *D, FLOAT *DU, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- sgtsvx -------------------------------------------------------------------- void LAPACK_IMPL(sgtsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *DL, const FLOAT *D, const FLOAT *DU, FLOAT *DLF, FLOAT *DF, FLOAT *DUF, FLOAT *DU2, INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sgttrf -------------------------------------------------------------------- void LAPACK_IMPL(sgttrf)(const INTEGER *N, FLOAT *DL, FLOAT *D, FLOAT *DU, FLOAT *DU2, INTEGER *IPIV, INTEGER *INFO); //-- sgttrs -------------------------------------------------------------------- void LAPACK_IMPL(sgttrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *DL, const FLOAT *D, const FLOAT *DU, const FLOAT *DU2, const INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- sgtts2 -------------------------------------------------------------------- void LAPACK_IMPL(sgtts2)(const INTEGER *ITRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *DL, const FLOAT *D, const FLOAT *DU, const FLOAT *DU2, const INTEGER *IPIV, FLOAT *B, const INTEGER *LDB); //-- shgeqz -------------------------------------------------------------------- void LAPACK_IMPL(shgeqz)(const char *JOB, const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *H, const INTEGER *LDH, FLOAT *T, const INTEGER *LDT, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *Q, const INTEGER *LDQ, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- shsein -------------------------------------------------------------------- void LAPACK_IMPL(shsein)(const char *SIDE, const char *EIGSRC, const char *INITV, LOGICAL *SELECT, const INTEGER *N, const FLOAT *H, const INTEGER *LDH, FLOAT *WR, const FLOAT *WI, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, FLOAT *WORK, INTEGER *IFAILL, INTEGER *IFAILR, INTEGER *INFO); //-- shseqr -------------------------------------------------------------------- void LAPACK_IMPL(shseqr)(const char *JOB, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *H, const INTEGER *LDH, FLOAT *WR, FLOAT *WI, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sisnan -------------------------------------------------------------------- LOGICAL LAPACK_IMPL(sisnan)(const FLOAT *SIN); //-- sla_gbamv ----------------------------------------------------------------- void LAPACK_IMPL(sla_gbamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT *ALPHA, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *X, const INTEGER *INCX, const FLOAT *BETA, FLOAT *Y, const INTEGER *INCY); //-- sla_gbrcond --------------------------------------------------------------- FLOAT LAPACK_IMPL(sla_gbrcond)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const INTEGER *CMODE, const FLOAT *C, INTEGER *INFO, const FLOAT *WORK, const INTEGER *IWORK); //-- sla_gbrfsx_extended ------------------------------------------------------- void LAPACK_IMPL(sla_gbrfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT *B, const INTEGER *LDB, FLOAT *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT *RES, const FLOAT *AYB, const FLOAT *DY, const FLOAT *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- sla_gbrpvgrw -------------------------------------------------------------- FLOAT LAPACK_IMPL(sla_gbrpvgrw)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NCOLS, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *AFB, const INTEGER *LDAFB); //-- sla_geamv ----------------------------------------------------------------- void LAPACK_IMPL(sla_geamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const FLOAT *ALPHA, const FLOAT *A, const INTEGER *LDA, const FLOAT *X, const INTEGER *INCX, const FLOAT *BETA, FLOAT *Y, const INTEGER *INCY); //-- sla_gercond --------------------------------------------------------------- FLOAT LAPACK_IMPL(sla_gercond)(const char *TRANS, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const INTEGER *CMODE, const FLOAT *C, INTEGER *INFO, const FLOAT *WORK, const INTEGER *IWORK); //-- sla_gerfsx_extended ------------------------------------------------------- void LAPACK_IMPL(sla_gerfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT *B, const INTEGER *LDB, FLOAT *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT *RES, const FLOAT *AYB, const FLOAT *DY, const FLOAT *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- sla_lin_berr -------------------------------------------------------------- void LAPACK_IMPL(sla_lin_berr)(const INTEGER *N, const INTEGER *NZ, const INTEGER *NRHS, const FLOAT *RES, const FLOAT *AYB, FLOAT *BERR); //-- sla_porcond --------------------------------------------------------------- FLOAT LAPACK_IMPL(sla_porcond)(const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *CMODE, const FLOAT *C, INTEGER *INFO, const FLOAT *WORK, const INTEGER *IWORK); //-- sla_porfsx_extended ------------------------------------------------------- void LAPACK_IMPL(sla_porfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT *B, const INTEGER *LDB, FLOAT *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT *RES, const FLOAT *AYB, const FLOAT *DY, const FLOAT *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- sla_porpvgrw -------------------------------------------------------------- FLOAT LAPACK_IMPL(sla_porpvgrw)(const char *UPLO, const INTEGER *NCOLS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const FLOAT *WORK); //-- sla_rpvgrw ---------------------------------------------------------------- FLOAT LAPACK_IMPL(sla_rpvgrw)(const INTEGER *N, const INTEGER *NCOLS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF); //-- sla_syamv ----------------------------------------------------------------- void LAPACK_IMPL(sla_syamv)(const INTEGER *UPLO, const INTEGER *N, const FLOAT *ALPHA, const FLOAT *A, const INTEGER *LDA, const FLOAT *X, const INTEGER *INCX, const FLOAT *BETA, FLOAT *Y, const INTEGER *INCY); //-- sla_syrcond --------------------------------------------------------------- FLOAT LAPACK_IMPL(sla_syrcond)(const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const INTEGER *CMODE, const FLOAT *C, INTEGER *INFO, const FLOAT *WORK, const INTEGER *IWORK); //-- sla_syrfsx_extended ------------------------------------------------------- void LAPACK_IMPL(sla_syrfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const FLOAT *C, const FLOAT *B, const INTEGER *LDB, FLOAT *Y, const INTEGER *LDY, FLOAT *BERR_OUT, const INTEGER *N_NORMS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const FLOAT *RES, const FLOAT *AYB, const FLOAT *DY, const FLOAT *Y_TAIL, const FLOAT *RCOND, const INTEGER *ITHRESH, const FLOAT *RTHRESH, const FLOAT *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- sla_syrpvgrw -------------------------------------------------------------- FLOAT LAPACK_IMPL(sla_syrpvgrw)(const char *UPLO, const INTEGER *N, const INTEGER *INFO, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *WORK); //-- sla_wwaddw ---------------------------------------------------------------- void LAPACK_IMPL(sla_wwaddw)(const INTEGER *N, FLOAT *X, FLOAT *Y, const FLOAT *W); //-- slabad -------------------------------------------------------------------- void LAPACK_IMPL(slabad)(FLOAT *SMALL, FLOAT *LARGE); //-- slabrd -------------------------------------------------------------------- void LAPACK_IMPL(slabrd)(const INTEGER *M, const INTEGER *N, const INTEGER *NB, FLOAT *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT *TAUQ, FLOAT *TAUP, FLOAT *X, const INTEGER *LDX, FLOAT *Y, const INTEGER *LDY); //-- slacn2 -------------------------------------------------------------------- void LAPACK_IMPL(slacn2)(const INTEGER *N, FLOAT *V, FLOAT *X, INTEGER *ISGN, FLOAT *EST, INTEGER *KASE, INTEGER *ISAVE); //-- slacon -------------------------------------------------------------------- void LAPACK_IMPL(slacon)(const INTEGER *N, FLOAT *V, FLOAT *X, INTEGER *ISGN, FLOAT *EST, INTEGER *KASE); //-- slacpy -------------------------------------------------------------------- void LAPACK_IMPL(slacpy)(const char *UPLO, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB); //-- sladiv -------------------------------------------------------------------- void LAPACK_IMPL(sladiv)(const FLOAT *A, const FLOAT *B, const FLOAT *C, const FLOAT *D, FLOAT *P, FLOAT *Q); //-- slae2 --------------------------------------------------------------------- void LAPACK_IMPL(slae2)(const FLOAT *A, const FLOAT *B, const FLOAT *C, FLOAT *RT1, FLOAT *RT2); //-- slaebz -------------------------------------------------------------------- void LAPACK_IMPL(slaebz)(const INTEGER *IJOB, const INTEGER *NITMAX, const INTEGER *N, const INTEGER *MMAX, const INTEGER *MINP, const INTEGER *NBMIN, const FLOAT *ABSTOL, const FLOAT *RELTOL, const FLOAT *PIVMIN, const FLOAT *D, const FLOAT *E, const FLOAT *E2, INTEGER *NVAL, FLOAT *AB, FLOAT *C, INTEGER *MOUT, INTEGER *NAB, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- slaed0 -------------------------------------------------------------------- void LAPACK_IMPL(slaed0)(const INTEGER *ICOMPQ, const INTEGER *QSIZ, const INTEGER *N, FLOAT *D, const FLOAT *E, FLOAT *Q, const INTEGER *LDQ, FLOAT *QSTORE, const INTEGER *LDQS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- slaed1 -------------------------------------------------------------------- void LAPACK_IMPL(slaed1)(const INTEGER *N, FLOAT *D, FLOAT *Q, const INTEGER *LDQ, INTEGER *INDXQ, const FLOAT *RHO, const INTEGER *CUTPNT, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- slaed2 -------------------------------------------------------------------- void LAPACK_IMPL(slaed2)(INTEGER *K, const INTEGER *N, const INTEGER *N1, FLOAT *D, FLOAT *Q, const INTEGER *LDQ, INTEGER *INDXQ, FLOAT *RHO, const FLOAT *Z, FLOAT *DLAMDA, FLOAT *W, FLOAT *Q2, INTEGER *INDX, INTEGER *INDXC, INTEGER *INDXP, INTEGER *COLTYP, INTEGER *INFO); //-- slaed3 -------------------------------------------------------------------- void LAPACK_IMPL(slaed3)(const INTEGER *K, const INTEGER *N, const INTEGER *N1, FLOAT *D, FLOAT *Q, const INTEGER *LDQ, const FLOAT *RHO, FLOAT *DLAMDA, const FLOAT *Q2, const INTEGER *INDX, const INTEGER *CTOT, FLOAT *W, FLOAT *S, INTEGER *INFO); //-- slaed4 -------------------------------------------------------------------- void LAPACK_IMPL(slaed4)(const INTEGER *N, const INTEGER *I, const FLOAT *D, const FLOAT *Z, FLOAT *DELTA, const FLOAT *RHO, FLOAT *DLAM, INTEGER *INFO); //-- slaed5 -------------------------------------------------------------------- void LAPACK_IMPL(slaed5)(const INTEGER *I, const FLOAT *D, const FLOAT *Z, FLOAT *DELTA, const FLOAT *RHO, FLOAT *DLAM); //-- slaed6 -------------------------------------------------------------------- void LAPACK_IMPL(slaed6)(const INTEGER *KNITER, const LOGICAL *ORGATI, const FLOAT *RHO, const FLOAT *D, const FLOAT *Z, const FLOAT *FINIT, FLOAT *TAU, INTEGER *INFO); //-- slaed7 -------------------------------------------------------------------- void LAPACK_IMPL(slaed7)(const INTEGER *ICOMPQ, const INTEGER *N, const INTEGER *QSIZ, const INTEGER *TLVLS, const INTEGER *CURLVL, const INTEGER *CURPBM, FLOAT *D, FLOAT *Q, const INTEGER *LDQ, INTEGER *INDXQ, const FLOAT *RHO, const INTEGER *CUTPNT, FLOAT *QSTORE, INTEGER *QPTR, const INTEGER *PRMPTR, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const FLOAT *GIVNUM, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- slaed8 -------------------------------------------------------------------- void LAPACK_IMPL(slaed8)(const INTEGER *ICOMPQ, INTEGER *K, const INTEGER *N, const INTEGER *QSIZ, FLOAT *D, FLOAT *Q, const INTEGER *LDQ, const INTEGER *INDXQ, FLOAT *RHO, const INTEGER *CUTPNT, const FLOAT *Z, FLOAT *DLAMDA, FLOAT *Q2, const INTEGER *LDQ2, FLOAT *W, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, FLOAT *GIVNUM, INTEGER *INDXP, INTEGER *INDX, INTEGER *INFO); //-- slaed9 -------------------------------------------------------------------- void LAPACK_IMPL(slaed9)(const INTEGER *K, const INTEGER *KSTART, const INTEGER *KSTOP, const INTEGER *N, FLOAT *D, FLOAT *Q, const INTEGER *LDQ, const FLOAT *RHO, const FLOAT *DLAMDA, const FLOAT *W, FLOAT *S, const INTEGER *LDS, INTEGER *INFO); //-- slaeda -------------------------------------------------------------------- void LAPACK_IMPL(slaeda)(const INTEGER *N, const INTEGER *TLVLS, const INTEGER *CURLVL, const INTEGER *CURPBM, const INTEGER *PRMPTR, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const FLOAT *GIVNUM, const FLOAT *Q, const INTEGER *QPTR, FLOAT *Z, FLOAT *ZTEMP, INTEGER *INFO); //-- slaein -------------------------------------------------------------------- void LAPACK_IMPL(slaein)(const LOGICAL *RIGHTV, const LOGICAL *NOINIT, const INTEGER *N, const FLOAT *H, const INTEGER *LDH, const FLOAT *WR, const FLOAT *WI, FLOAT *VR, FLOAT *VI, FLOAT *B, const INTEGER *LDB, FLOAT *WORK, const FLOAT *EPS3, const FLOAT *SMLNUM, const FLOAT *BIGNUM, INTEGER *INFO); //-- slaev2 -------------------------------------------------------------------- void LAPACK_IMPL(slaev2)(const FLOAT *A, const FLOAT *B, const FLOAT *C, FLOAT *RT1, FLOAT *RT2, FLOAT *CS1, FLOAT *SN1); //-- slaexc -------------------------------------------------------------------- void LAPACK_IMPL(slaexc)(const LOGICAL *WANTQ, const INTEGER *N, FLOAT *T, const INTEGER *LDT, FLOAT *Q, const INTEGER *LDQ, const INTEGER *J1, const INTEGER *N1, const INTEGER *N2, FLOAT *WORK, INTEGER *INFO); //-- slag2 --------------------------------------------------------------------- void LAPACK_IMPL(slag2)(const FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, const FLOAT *SAFMIN, FLOAT *SCALE1, FLOAT *SCALE2, FLOAT *WR1, FLOAT *WR2, FLOAT *WI); //-- slag2d -------------------------------------------------------------------- void LAPACK_IMPL(slag2d)(const INTEGER *M, const INTEGER *N, const FLOAT *SA, const INTEGER *LDSA, DOUBLE *A, const INTEGER *LDA, INTEGER *INFO); //-- slags2 -------------------------------------------------------------------- void LAPACK_IMPL(slags2)(const LOGICAL *UPPER, const FLOAT *A1, const FLOAT *A2, const FLOAT *A3, const FLOAT *B1, const FLOAT *B2, const FLOAT *B3, FLOAT *CSU, FLOAT *SNU, FLOAT *CSV, FLOAT *SNV, FLOAT *CSQ, FLOAT *SNQ); //-- slagtf -------------------------------------------------------------------- void LAPACK_IMPL(slagtf)(const INTEGER *N, FLOAT *A, const FLOAT *LAMBDA, FLOAT *B, FLOAT *C, const FLOAT *TOL, FLOAT *D, INTEGER *IN, INTEGER *INFO); //-- slagtm -------------------------------------------------------------------- void LAPACK_IMPL(slagtm)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const FLOAT *ALPHA, const FLOAT *DL, const FLOAT *D, const FLOAT *DU, const FLOAT *X, const INTEGER *LDX, const FLOAT *BETA, FLOAT *B, const INTEGER *LDB); //-- slagts -------------------------------------------------------------------- void LAPACK_IMPL(slagts)(const INTEGER *JOB, const INTEGER *N, const FLOAT *A, const FLOAT *B, const FLOAT *C, const FLOAT *D, const INTEGER *IN, FLOAT *Y, FLOAT *TOL, INTEGER *INFO); //-- slagv2 -------------------------------------------------------------------- void LAPACK_IMPL(slagv2)(FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *CSL, FLOAT *SNL, FLOAT *CSR, FLOAT *SNR); //-- slahqr -------------------------------------------------------------------- void LAPACK_IMPL(slahqr)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *H, const INTEGER *LDH, FLOAT *WR, FLOAT *WI, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT *Z, const INTEGER *LDZ, INTEGER *INFO); //-- slahr2 -------------------------------------------------------------------- void LAPACK_IMPL(slahr2)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *T, const INTEGER *LDT, FLOAT *Y, const INTEGER *LDY); //-- slahrd -------------------------------------------------------------------- void LAPACK_IMPL(slahrd)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *T, const INTEGER *LDT, FLOAT *Y, const INTEGER *LDY); //-- slaic1 -------------------------------------------------------------------- void LAPACK_IMPL(slaic1)(const INTEGER *JOB, const INTEGER *J, const FLOAT *X, const FLOAT *SEST, const FLOAT *W, const FLOAT *GAMMA, FLOAT *SESTPR, FLOAT *S, FLOAT *C); //-- slaisnan ------------------------------------------------------------------ LOGICAL LAPACK_IMPL(slaisnan)(const FLOAT *SIN1, const FLOAT *SIN2); //-- slaln2 -------------------------------------------------------------------- void LAPACK_IMPL(slaln2)(const LOGICAL *LTRANS, const INTEGER *NA, const INTEGER *NW, const FLOAT *SMIN, const FLOAT *CA, const FLOAT *A, const INTEGER *LDA, const FLOAT *D1, const FLOAT *D2, const FLOAT *B, const INTEGER *LDB, const FLOAT *WR, const FLOAT *WI, FLOAT *X, const INTEGER *LDX, FLOAT *SCALE, FLOAT *XNORM, INTEGER *INFO); //-- slals0 -------------------------------------------------------------------- void LAPACK_IMPL(slals0)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, const INTEGER *NRHS, FLOAT *B, const INTEGER *LDB, FLOAT *BX, const INTEGER *LDBX, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const FLOAT *GIVNUM, const INTEGER *LDGNUM, const FLOAT *POLES, const FLOAT *DIFL, const FLOAT *DIFR, const FLOAT *Z, const INTEGER *K, const FLOAT *C, const FLOAT *S, FLOAT *WORK, INTEGER *INFO); //-- slalsa -------------------------------------------------------------------- void LAPACK_IMPL(slalsa)(const INTEGER *ICOMPQ, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, FLOAT *B, const INTEGER *LDB, FLOAT *BX, const INTEGER *LDBX, const FLOAT *U, const INTEGER *LDU, const FLOAT *VT, const INTEGER *K, const FLOAT *DIFL, const FLOAT *DIFR, const FLOAT *Z, const FLOAT *POLES, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const INTEGER *PERM, const FLOAT *GIVNUM, const FLOAT *C, const FLOAT *S, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- slalsd -------------------------------------------------------------------- void LAPACK_IMPL(slalsd)(const char *UPLO, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, FLOAT *D, FLOAT *E, FLOAT *B, const INTEGER *LDB, const FLOAT *RCOND, INTEGER *RANK, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- slamrg -------------------------------------------------------------------- void LAPACK_IMPL(slamrg)(const INTEGER *N1, const INTEGER *N2, const FLOAT *A, const INTEGER *STRD1, const INTEGER *STRD2, INTEGER *INDEX); //-- slaneg -------------------------------------------------------------------- INTEGER LAPACK_IMPL(slaneg)(const INTEGER *N, const FLOAT *D, const FLOAT *LLD, const FLOAT *SIGMA, const FLOAT *PIVMIN, const INTEGER *R); //-- slangb -------------------------------------------------------------------- FLOAT LAPACK_IMPL(slangb)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const FLOAT *AB, const INTEGER *LDAB, FLOAT *WORK); //-- slange -------------------------------------------------------------------- FLOAT LAPACK_IMPL(slange)(const char *NORM, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *WORK); //-- slangt -------------------------------------------------------------------- FLOAT LAPACK_IMPL(slangt)(const char *NORM, const INTEGER *N, const FLOAT *DL, const FLOAT *D, const FLOAT *DU); //-- slanhs -------------------------------------------------------------------- FLOAT LAPACK_IMPL(slanhs)(const char *NORM, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *WORK); //-- slansb -------------------------------------------------------------------- FLOAT LAPACK_IMPL(slansb)(const char *NORM, const char *UPLO, const INTEGER *N, const INTEGER *K, const FLOAT *AB, const INTEGER *LDAB, FLOAT *WORK); //-- slansf -------------------------------------------------------------------- FLOAT LAPACK_IMPL(slansf)(const char *NORM, const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT *A, FLOAT *WORK); //-- slansp -------------------------------------------------------------------- FLOAT LAPACK_IMPL(slansp)(const char *NORM, const char *UPLO, const INTEGER *N, const FLOAT *AP, FLOAT *WORK); //-- slanst -------------------------------------------------------------------- FLOAT LAPACK_IMPL(slanst)(const char *NORM, const INTEGER *N, const FLOAT *D, const FLOAT *E); //-- slansy -------------------------------------------------------------------- FLOAT LAPACK_IMPL(slansy)(const char *NORM, const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *WORK); //-- slantb -------------------------------------------------------------------- FLOAT LAPACK_IMPL(slantb)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *K, const FLOAT *AB, const INTEGER *LDAB, FLOAT *WORK); //-- slantp -------------------------------------------------------------------- FLOAT LAPACK_IMPL(slantp)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const FLOAT *AP, FLOAT *WORK); //-- slantr -------------------------------------------------------------------- FLOAT LAPACK_IMPL(slantr)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *WORK); //-- slanv2 -------------------------------------------------------------------- void LAPACK_IMPL(slanv2)(FLOAT *A, FLOAT *B, FLOAT *C, FLOAT *D, FLOAT *RT1R, FLOAT *RT1I, FLOAT *RT2R, FLOAT *RT2I, FLOAT *CS, FLOAT *SN); //-- slapll -------------------------------------------------------------------- void LAPACK_IMPL(slapll)(const INTEGER *N, FLOAT *X, const INTEGER *INCX, FLOAT *Y, const INTEGER *INCY, FLOAT *SSMIN); //-- slapmr -------------------------------------------------------------------- void LAPACK_IMPL(slapmr)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, FLOAT *X, const INTEGER *LDX, INTEGER *K); //-- slapmt -------------------------------------------------------------------- void LAPACK_IMPL(slapmt)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, FLOAT *X, const INTEGER *LDX, INTEGER *K); //-- slapy2 -------------------------------------------------------------------- FLOAT LAPACK_IMPL(slapy2)(const FLOAT *X, const FLOAT *Y); //-- slapy3 -------------------------------------------------------------------- FLOAT LAPACK_IMPL(slapy3)(const FLOAT *X, const FLOAT *Y, const FLOAT *Z); //-- slaqgb -------------------------------------------------------------------- void LAPACK_IMPL(slaqgb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, FLOAT *AB, const INTEGER *LDAB, const FLOAT *R, const FLOAT *C, const FLOAT *ROWCND, const FLOAT *COLCND, const FLOAT *AMAX, char *EQUED); //-- slaqge -------------------------------------------------------------------- void LAPACK_IMPL(slaqge)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const FLOAT *R, const FLOAT *C, const FLOAT *ROWCND, const FLOAT *COLCND, const FLOAT *AMAX, char *EQUED); //-- slaqp2 -------------------------------------------------------------------- void LAPACK_IMPL(slaqp2)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, FLOAT *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT *TAU, FLOAT *VN1, FLOAT *VN2, FLOAT *WORK); //-- slaqps -------------------------------------------------------------------- void LAPACK_IMPL(slaqps)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, const INTEGER *NB, INTEGER *KB, FLOAT *A, const INTEGER *LDA, INTEGER *JPVT, FLOAT *TAU, FLOAT *VN1, FLOAT *VN2, FLOAT *AUXV, FLOAT *F, const INTEGER *LDF); //-- slaqr0 -------------------------------------------------------------------- void LAPACK_IMPL(slaqr0)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *H, const INTEGER *LDH, FLOAT *WR, FLOAT *WI, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- slaqr1 -------------------------------------------------------------------- void LAPACK_IMPL(slaqr1)(const INTEGER *N, const FLOAT *H, const INTEGER *LDH, const FLOAT *SR1, const FLOAT *SI1, const FLOAT *SR2, const FLOAT *SI2, FLOAT *V); //-- slaqr2 -------------------------------------------------------------------- void LAPACK_IMPL(slaqr2)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, FLOAT *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, FLOAT *SR, FLOAT *SI, FLOAT *V, const INTEGER *LDV, const INTEGER *NH, FLOAT *T, const INTEGER *LDT, const INTEGER *NV, FLOAT *WV, const INTEGER *LDWV, FLOAT *WORK, const INTEGER *LWORK); //-- slaqr3 -------------------------------------------------------------------- void LAPACK_IMPL(slaqr3)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, FLOAT *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, FLOAT *SR, FLOAT *SI, FLOAT *V, const INTEGER *LDV, const INTEGER *NH, FLOAT *T, const INTEGER *LDT, const INTEGER *NV, FLOAT *WV, const INTEGER *LDWV, FLOAT *WORK, const INTEGER *LWORK); //-- slaqr4 -------------------------------------------------------------------- void LAPACK_IMPL(slaqr4)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *H, const INTEGER *LDH, FLOAT *WR, FLOAT *WI, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- slaqr5 -------------------------------------------------------------------- void LAPACK_IMPL(slaqr5)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *KACC22, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NSHFTS, FLOAT *SR, FLOAT *SI, FLOAT *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, FLOAT *Z, const INTEGER *LDZ, FLOAT *V, const INTEGER *LDV, FLOAT *U, const INTEGER *LDU, const INTEGER *NV, FLOAT *WV, const INTEGER *LDWV, const INTEGER *NH, FLOAT *WH, const INTEGER *LDWH); //-- slaqsb -------------------------------------------------------------------- void LAPACK_IMPL(slaqsb)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED); //-- slaqsp -------------------------------------------------------------------- void LAPACK_IMPL(slaqsp)(const char *UPLO, const INTEGER *N, FLOAT *AP, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED); //-- slaqsy -------------------------------------------------------------------- void LAPACK_IMPL(slaqsy)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const FLOAT *S, const FLOAT *SCOND, const FLOAT *AMAX, char *EQUED); //-- slaqtr -------------------------------------------------------------------- void LAPACK_IMPL(slaqtr)(const LOGICAL *LTRAN, const LOGICAL *LREAL, const INTEGER *N, const FLOAT *T, const INTEGER *LDT, const FLOAT *B, const FLOAT *W, FLOAT *SCALE, FLOAT *X, FLOAT *WORK, INTEGER *INFO); //-- slar1v -------------------------------------------------------------------- void LAPACK_IMPL(slar1v)(const INTEGER *N, const INTEGER *B1, const INTEGER *BN, const FLOAT *LAMBDA, const FLOAT *D, const FLOAT *L, const FLOAT *LD, const FLOAT *LLD, const FLOAT *PIVMIN, const FLOAT *GAPTOL, FLOAT *Z, const LOGICAL *WANTNC, INTEGER *NEGCNT, FLOAT *ZTZ, FLOAT *MINGMA, INTEGER *R, INTEGER *ISUPPZ, FLOAT *NRMINV, FLOAT *RESID, FLOAT *RQCORR, FLOAT *WORK); //-- slar2v -------------------------------------------------------------------- void LAPACK_IMPL(slar2v)(const INTEGER *N, FLOAT *X, FLOAT *Y, FLOAT *Z, const INTEGER *INCX, const FLOAT *C, const FLOAT *S, const INTEGER *INCC); //-- slarf --------------------------------------------------------------------- void LAPACK_IMPL(slarf)(const char *SIDE, const INTEGER *M, const INTEGER *N, const FLOAT *V, const INTEGER *INCV, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK); //-- slarfb -------------------------------------------------------------------- void LAPACK_IMPL(slarfb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *V, const INTEGER *LDV, const FLOAT *T, const INTEGER *LDT, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LDWORK); //-- slarfg -------------------------------------------------------------------- void LAPACK_IMPL(slarfg)(const INTEGER *N, FLOAT *ALPHA, FLOAT *X, const INTEGER *INCX, FLOAT *TAU); //-- slarfgp ------------------------------------------------------------------- void LAPACK_IMPL(slarfgp)(const INTEGER *N, FLOAT *ALPHA, FLOAT *X, const INTEGER *INCX, FLOAT *TAU); //-- slarft -------------------------------------------------------------------- void LAPACK_IMPL(slarft)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, FLOAT *V, const INTEGER *LDV, const FLOAT *TAU, FLOAT *T, const INTEGER *LDT); //-- slarfx -------------------------------------------------------------------- void LAPACK_IMPL(slarfx)(const char *SIDE, const INTEGER *M, const INTEGER *N, const FLOAT *V, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK); //-- slargv -------------------------------------------------------------------- void LAPACK_IMPL(slargv)(const INTEGER *N, FLOAT *X, const INTEGER *INCX, FLOAT *Y, const INTEGER *INCY, FLOAT *C, const INTEGER *INCC); //-- slarnv -------------------------------------------------------------------- void LAPACK_IMPL(slarnv)(const INTEGER *IDIST, INTEGER *ISEED, const INTEGER *N, FLOAT *X); //-- slarra -------------------------------------------------------------------- void LAPACK_IMPL(slarra)(const INTEGER *N, const FLOAT *D, FLOAT *E, FLOAT *E2, const FLOAT *SPLTOL, const FLOAT *TNRM, INTEGER *NSPLIT, INTEGER *ISPLIT, INTEGER *INFO); //-- slarrb -------------------------------------------------------------------- void LAPACK_IMPL(slarrb)(const INTEGER *N, const FLOAT *D, const FLOAT *LLD, const INTEGER *IFIRST, const INTEGER *ILAST, const FLOAT *RTOL1, const FLOAT *RTOL2, const INTEGER *OFFSET, FLOAT *W, FLOAT *WGAP, FLOAT *WERR, FLOAT *WORK, INTEGER *IWORK, const FLOAT *PIVMIN, const FLOAT *SPDIAM, const INTEGER *TWIST, INTEGER *INFO); //-- slarrc -------------------------------------------------------------------- void LAPACK_IMPL(slarrc)(const char *JOBT, const INTEGER *N, const FLOAT *VL, const FLOAT *VU, const FLOAT *D, const FLOAT *E, const FLOAT *PIVMIN, INTEGER *EIGCNT, INTEGER *LCNT, INTEGER *RCNT, INTEGER *INFO); //-- slarrd -------------------------------------------------------------------- void LAPACK_IMPL(slarrd)(const char *RANGE, const char *ORDER, const INTEGER *N, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *GERS, const FLOAT *RELTOL, const FLOAT *D, const FLOAT *E, const FLOAT *E2, const FLOAT *PIVMIN, const INTEGER *NSPLIT, const INTEGER *ISPLIT, INTEGER *M, FLOAT *W, FLOAT *WERR, FLOAT *WL, FLOAT *WU, INTEGER *IBLOCK, INTEGER *INDEXW, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- slarre -------------------------------------------------------------------- void LAPACK_IMPL(slarre)(const char *RANGE, const INTEGER *N, FLOAT *VL, FLOAT *VU, const INTEGER *IL, const INTEGER *IU, FLOAT *D, FLOAT *E, FLOAT *E2, const FLOAT *RTOL1, const FLOAT *RTOL2, const FLOAT *SPLTOL, INTEGER *NSPLIT, INTEGER *ISPLIT, INTEGER *M, FLOAT *W, FLOAT *WERR, FLOAT *WGAP, INTEGER *IBLOCK, INTEGER *INDEXW, FLOAT *GERS, FLOAT *PIVMIN, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- slarrf -------------------------------------------------------------------- void LAPACK_IMPL(slarrf)(const INTEGER *N, const FLOAT *D, const FLOAT *L, const FLOAT *LD, const INTEGER *CLSTRT, const INTEGER *CLEND, const FLOAT *W, FLOAT *WGAP, const FLOAT *WERR, const FLOAT *SPDIAM, const FLOAT *CLGAPL, const FLOAT *CLGAPR, const FLOAT *PIVMIN, FLOAT *SIGMA, FLOAT *DPLUS, FLOAT *LPLUS, FLOAT *WORK, const INTEGER *INFO); //-- slarrj -------------------------------------------------------------------- void LAPACK_IMPL(slarrj)(const INTEGER *N, const FLOAT *D, const FLOAT *E2, const INTEGER *IFIRST, const INTEGER *ILAST, const FLOAT *RTOL, const INTEGER *OFFSET, FLOAT *W, FLOAT *WERR, FLOAT *WORK, INTEGER *IWORK, const FLOAT *PIVMIN, const FLOAT *SPDIAM, INTEGER *INFO); //-- slarrk -------------------------------------------------------------------- void LAPACK_IMPL(slarrk)(const INTEGER *N, const INTEGER *IW, const FLOAT *GL, const FLOAT *GU, const FLOAT *D, const FLOAT *E2, const FLOAT *PIVMIN, const FLOAT *RELTOL, FLOAT *W, FLOAT *WERR, INTEGER *INFO); //-- slarrr -------------------------------------------------------------------- void LAPACK_IMPL(slarrr)(const INTEGER *N, const FLOAT *D, FLOAT *E, INTEGER *INFO); //-- slarrv -------------------------------------------------------------------- void LAPACK_IMPL(slarrv)(const INTEGER *N, const FLOAT *VL, const FLOAT *VU, FLOAT *D, FLOAT *L, const FLOAT *PIVMIN, const INTEGER *ISPLIT, const INTEGER *M, const INTEGER *DOL, const INTEGER *DOU, const FLOAT *MINRGP, const FLOAT *RTOL1, const FLOAT *RTOL2, FLOAT *W, FLOAT *WERR, FLOAT *WGAP, const INTEGER *IBLOCK, const INTEGER *INDEXW, const FLOAT *GERS, FLOAT *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- slarscl2 ------------------------------------------------------------------ void LAPACK_IMPL(slarscl2)(const INTEGER *M, const INTEGER *N, const FLOAT *D, FLOAT *X, const INTEGER *LDX); //-- slartg -------------------------------------------------------------------- void LAPACK_IMPL(slartg)(const FLOAT *F, const FLOAT *G, FLOAT *CS, FLOAT *SN, FLOAT *R); //-- slartgp ------------------------------------------------------------------- void LAPACK_IMPL(slartgp)(const FLOAT *F, const FLOAT *G, FLOAT *CS, FLOAT *SN, FLOAT *R); //-- slartgs ------------------------------------------------------------------- void LAPACK_IMPL(slartgs)(const FLOAT *X, const FLOAT *Y, const FLOAT *SIGMA, FLOAT *CS, FLOAT *SN); //-- slartv -------------------------------------------------------------------- void LAPACK_IMPL(slartv)(const INTEGER *N, FLOAT *X, const INTEGER *INCX, FLOAT *Y, const INTEGER *INCY, const FLOAT *C, const FLOAT *S, const INTEGER *INCC); //-- slaruv -------------------------------------------------------------------- void LAPACK_IMPL(slaruv)(INTEGER *ISEED, const INTEGER *N, FLOAT *X); //-- slarz --------------------------------------------------------------------- void LAPACK_IMPL(slarz)(const char *SIDE, const INTEGER *M, const INTEGER *N, const INTEGER *L, const FLOAT *V, const INTEGER *INCV, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK); //-- slarzb -------------------------------------------------------------------- void LAPACK_IMPL(slarzb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const FLOAT *V, const INTEGER *LDV, const FLOAT *T, const INTEGER *LDT, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LDWORK); //-- slarzt -------------------------------------------------------------------- void LAPACK_IMPL(slarzt)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, FLOAT *V, const INTEGER *LDV, const FLOAT *TAU, FLOAT *T, const INTEGER *LDT); //-- slas2 --------------------------------------------------------------------- void LAPACK_IMPL(slas2)(const FLOAT *F, const FLOAT *G, const FLOAT *H, FLOAT *SSMIN, FLOAT *SSMAX); //-- slascl -------------------------------------------------------------------- void LAPACK_IMPL(slascl)(const char *TYPE, const INTEGER *KL, const INTEGER *KU, const FLOAT *CFROM, const FLOAT *CTO, const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO); //-- slascl2 ------------------------------------------------------------------- void LAPACK_IMPL(slascl2)(const INTEGER *M, const INTEGER *N, const FLOAT *D, FLOAT *X, const INTEGER *LDX); //-- slasd0 -------------------------------------------------------------------- void LAPACK_IMPL(slasd0)(const INTEGER *N, const INTEGER *SQRE, FLOAT *D, const FLOAT *E, FLOAT *U, const INTEGER *LDU, FLOAT *VT, const INTEGER *LDVT, const INTEGER *SMLSIZ, INTEGER *IWORK, FLOAT *WORK, INTEGER *INFO); //-- slasd1 -------------------------------------------------------------------- void LAPACK_IMPL(slasd1)(const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, FLOAT *D, FLOAT *ALPHA, FLOAT *BETA, FLOAT *U, const INTEGER *LDU, FLOAT *VT, const INTEGER *LDVT, INTEGER *IDXQ, INTEGER *IWORK, FLOAT *WORK, INTEGER *INFO); //-- slasd2 -------------------------------------------------------------------- void LAPACK_IMPL(slasd2)(const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, INTEGER *K, FLOAT *D, FLOAT *Z, const FLOAT *ALPHA, const FLOAT *BETA, FLOAT *U, const INTEGER *LDU, FLOAT *VT, const INTEGER *LDVT, FLOAT *DSIGMA, FLOAT *U2, const INTEGER *LDU2, FLOAT *VT2, const INTEGER *LDVT2, INTEGER *IDXP, INTEGER *IDX, INTEGER *IDXC, INTEGER *IDXQ, INTEGER *COLTYP, INTEGER *INFO); //-- slasd3 -------------------------------------------------------------------- void LAPACK_IMPL(slasd3)(const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, const INTEGER *K, FLOAT *D, FLOAT *Q, const INTEGER *LDQ, FLOAT *DSIGMA, FLOAT *U, const INTEGER *LDU, const FLOAT *U2, const INTEGER *LDU2, FLOAT *VT, const INTEGER *LDVT, FLOAT *VT2, const INTEGER *LDVT2, const INTEGER *IDXC, const INTEGER *CTOT, FLOAT *Z, INTEGER *INFO); //-- slasd4 -------------------------------------------------------------------- void LAPACK_IMPL(slasd4)(const INTEGER *N, const INTEGER *I, const FLOAT *D, const FLOAT *Z, FLOAT *DELTA, const FLOAT *RHO, FLOAT *SIGMA, FLOAT *WORK, INTEGER *INFO); //-- slasd5 -------------------------------------------------------------------- void LAPACK_IMPL(slasd5)(const INTEGER *I, const FLOAT *D, const FLOAT *Z, FLOAT *DELTA, const FLOAT *RHO, FLOAT *DSIGMA, FLOAT *WORK); //-- slasd6 -------------------------------------------------------------------- void LAPACK_IMPL(slasd6)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, FLOAT *D, FLOAT *VF, FLOAT *VL, FLOAT *ALPHA, FLOAT *BETA, INTEGER *IDXQ, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, const INTEGER *LDGCOL, FLOAT *GIVNUM, const INTEGER *LDGNUM, FLOAT *POLES, FLOAT *DIFL, FLOAT *DIFR, FLOAT *Z, INTEGER *K, FLOAT *C, FLOAT *S, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- slasd7 -------------------------------------------------------------------- void LAPACK_IMPL(slasd7)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, INTEGER *K, FLOAT *D, FLOAT *Z, FLOAT *ZW, FLOAT *VF, FLOAT *VFW, FLOAT *VL, FLOAT *VLW, const FLOAT *ALPHA, const FLOAT *BETA, FLOAT *DSIGMA, INTEGER *IDX, INTEGER *IDXP, const INTEGER *IDXQ, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, const INTEGER *LDGCOL, FLOAT *GIVNUM, const INTEGER *LDGNUM, FLOAT *C, FLOAT *S, INTEGER *INFO); //-- slasd8 -------------------------------------------------------------------- void LAPACK_IMPL(slasd8)(const INTEGER *ICOMPQ, const INTEGER *K, FLOAT *D, FLOAT *Z, FLOAT *VF, FLOAT *VL, FLOAT *DIFL, FLOAT *DIFR, const INTEGER *LDDIFR, FLOAT *DSIGMA, FLOAT *WORK, INTEGER *INFO); //-- slasda -------------------------------------------------------------------- void LAPACK_IMPL(slasda)(const INTEGER *ICOMPQ, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *SQRE, FLOAT *D, const FLOAT *E, FLOAT *U, const INTEGER *LDU, FLOAT *VT, INTEGER *K, FLOAT *DIFL, FLOAT *DIFR, FLOAT *Z, FLOAT *POLES, INTEGER *GIVPTR, INTEGER *GIVCOL, const INTEGER *LDGCOL, INTEGER *PERM, FLOAT *GIVNUM, FLOAT *C, FLOAT *S, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- slasdq -------------------------------------------------------------------- void LAPACK_IMPL(slasdq)(const char *UPLO, const INTEGER *SQRE, const INTEGER *N, const INTEGER *NCVT, const INTEGER *NRU, const INTEGER *NCC, FLOAT *D, FLOAT *E, FLOAT *VT, const INTEGER *LDVT, FLOAT *U, const INTEGER *LDU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO); //-- slasdt -------------------------------------------------------------------- void LAPACK_IMPL(slasdt)(const INTEGER *N, INTEGER *LVL, INTEGER *ND, INTEGER *INODE, INTEGER *NDIML, INTEGER *NDIMR, const INTEGER *MSUB); //-- slaset -------------------------------------------------------------------- void LAPACK_IMPL(slaset)(const char *UPLO, const INTEGER *M, const INTEGER *N, const FLOAT *ALPHA, const FLOAT *BETA, FLOAT *A, const INTEGER *LDA); //-- slasq1 -------------------------------------------------------------------- void LAPACK_IMPL(slasq1)(const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT *WORK, INTEGER *INFO); //-- slasq2 -------------------------------------------------------------------- void LAPACK_IMPL(slasq2)(const INTEGER *N, FLOAT *Z, INTEGER *INFO); //-- slasq3 -------------------------------------------------------------------- void LAPACK_IMPL(slasq3)(const INTEGER *I0, INTEGER *N0, const FLOAT *Z, INTEGER *PP, FLOAT *DMIN, FLOAT *SIGMA, FLOAT *DESIG, const FLOAT *QMAX, INTEGER *NFAIL, INTEGER *ITER, INTEGER *NDIV, const LOGICAL *IEEE, INTEGER *TTYPE, FLOAT *DMIN1, FLOAT *DMIN2, FLOAT *DN, FLOAT *DN1, FLOAT *DN2, FLOAT *G, FLOAT *TAU); //-- slasq4 -------------------------------------------------------------------- void LAPACK_IMPL(slasq4)(const INTEGER *I0, const INTEGER *N0, const FLOAT *Z, const INTEGER *PP, const INTEGER *N0IN, const FLOAT *DMIN, const FLOAT *DMIN1, const FLOAT *DMIN2, const FLOAT *DN, const FLOAT *DN1, const FLOAT *DN2, FLOAT *TAU, INTEGER *TTYPE, FLOAT *G); //-- slasq5 -------------------------------------------------------------------- void LAPACK_IMPL(slasq5)(const INTEGER *I0, const INTEGER *N0, const FLOAT *Z, const INTEGER *PP, const FLOAT *TAU, FLOAT *DMIN, FLOAT *DMIN1, FLOAT *DMIN2, FLOAT *DN, FLOAT *DNM1, FLOAT *DNM2, const LOGICAL *IEEE); //-- slasq6 -------------------------------------------------------------------- void LAPACK_IMPL(slasq6)(const INTEGER *I0, const INTEGER *N0, const FLOAT *Z, const INTEGER *PP, FLOAT *DMIN, FLOAT *DMIN1, FLOAT *DMIN2, FLOAT *DN, FLOAT *DNM1, FLOAT *DNM2); //-- slasr --------------------------------------------------------------------- void LAPACK_IMPL(slasr)(const char *SIDE, const char *PIVOT, const char *DIRECT, const INTEGER *M, const INTEGER *N, const FLOAT *C, const FLOAT *S, FLOAT *A, const INTEGER *LDA); //-- slasrt -------------------------------------------------------------------- void LAPACK_IMPL(slasrt)(const char *ID, const INTEGER *N, FLOAT *D, INTEGER *INFO); //-- slassq -------------------------------------------------------------------- void LAPACK_IMPL(slassq)(const INTEGER *N, const FLOAT *X, const INTEGER *INCX, FLOAT *SCALE, FLOAT *SUMSQ); //-- slasv2 -------------------------------------------------------------------- void LAPACK_IMPL(slasv2)(const FLOAT *F, const FLOAT *G, const FLOAT *H, FLOAT *SSMIN, FLOAT *SSMAX, FLOAT *SNR, FLOAT *CSR, FLOAT *SNL, FLOAT *CSL); //-- slaswp -------------------------------------------------------------------- void LAPACK_IMPL(slaswp)(const INTEGER *N, FLOAT *A, const INTEGER *LDA, const INTEGER *K1, const INTEGER *K2, const INTEGER *IPIV, const INTEGER *INCX); //-- slasy2 -------------------------------------------------------------------- void LAPACK_IMPL(slasy2)(const LOGICAL *LTRANL, const LOGICAL *LTRANR, const INTEGER *ISGN, const INTEGER *N1, const INTEGER *N2, const FLOAT *TL, const INTEGER *LDTL, const FLOAT *TR, const INTEGER *LDTR, const FLOAT *B, const INTEGER *LDB, FLOAT *SCALE, FLOAT *X, const INTEGER *LDX, FLOAT *XNORM, INTEGER *INFO); //-- slasyf -------------------------------------------------------------------- void LAPACK_IMPL(slasyf)(const char *UPLO, const INTEGER *N, const INTEGER *NB, INTEGER *KB, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT *W, const INTEGER *LDW, INTEGER *INFO); //-- slatbs -------------------------------------------------------------------- void LAPACK_IMPL(slatbs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const INTEGER *KD, const FLOAT *AB, const INTEGER *LDAB, FLOAT *X, FLOAT *SCALE, FLOAT *CNORM, INTEGER *INFO); //-- slatdf -------------------------------------------------------------------- void LAPACK_IMPL(slatdf)(const INTEGER *IJOB, const INTEGER *N, const FLOAT *Z, const INTEGER *LDZ, FLOAT *RHS, FLOAT *RDSUM, FLOAT *RDSCAL, const INTEGER *IPIV, const INTEGER *JPIV); //-- slatps -------------------------------------------------------------------- void LAPACK_IMPL(slatps)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const FLOAT *AP, FLOAT *X, FLOAT *SCALE, FLOAT *CNORM, INTEGER *INFO); //-- slatrd -------------------------------------------------------------------- void LAPACK_IMPL(slatrd)(const char *UPLO, const INTEGER *N, const INTEGER *NB, FLOAT *A, const INTEGER *LDA, FLOAT *E, FLOAT *TAU, FLOAT *W, const INTEGER *LDW); //-- slatrs -------------------------------------------------------------------- void LAPACK_IMPL(slatrs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *X, FLOAT *SCALE, FLOAT *CNORM, INTEGER *INFO); //-- slatrz -------------------------------------------------------------------- void LAPACK_IMPL(slatrz)(const INTEGER *M, const INTEGER *N, const INTEGER *L, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK); //-- slatzm -------------------------------------------------------------------- void LAPACK_IMPL(slatzm)(const char *SIDE, const INTEGER *M, const INTEGER *N, const FLOAT *V, const INTEGER *INCV, const FLOAT *TAU, FLOAT *C1, FLOAT *C2, const INTEGER *LDC, FLOAT *WORK); //-- slauu2 -------------------------------------------------------------------- void LAPACK_IMPL(slauu2)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO); //-- slauum -------------------------------------------------------------------- void LAPACK_IMPL(slauum)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO); //-- sopgtr -------------------------------------------------------------------- void LAPACK_IMPL(sopgtr)(const char *UPLO, const INTEGER *N, const FLOAT *AP, const FLOAT *TAU, FLOAT *Q, const INTEGER *LDQ, FLOAT *WORK, INTEGER *INFO); //-- sopmtr -------------------------------------------------------------------- void LAPACK_IMPL(sopmtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const FLOAT *AP, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO); //-- sorbdb -------------------------------------------------------------------- void LAPACK_IMPL(sorbdb)(const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, FLOAT *X11, const INTEGER *LDX11, FLOAT *X12, const INTEGER *LDX12, FLOAT *X21, const INTEGER *LDX21, FLOAT *X22, const INTEGER *LDX22, FLOAT *THETA, FLOAT *PHI, FLOAT *TAUP1, FLOAT *TAUP2, FLOAT *TAUQ1, FLOAT *TAUQ2, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sorcsd -------------------------------------------------------------------- void LAPACK_IMPL(sorcsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, const FLOAT *X11, const INTEGER *LDX11, const FLOAT *X12, const INTEGER *LDX12, const FLOAT *X21, const INTEGER *LDX21, const FLOAT *X22, const INTEGER *LDX22, FLOAT *THETA, FLOAT *U1, const INTEGER *LDU1, FLOAT *U2, const INTEGER *LDU2, FLOAT *V1T, const INTEGER *LDV1T, FLOAT *V2T, const INTEGER *LDV2T, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- sorg2l -------------------------------------------------------------------- void LAPACK_IMPL(sorg2l)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, INTEGER *INFO); //-- sorg2r -------------------------------------------------------------------- void LAPACK_IMPL(sorg2r)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, INTEGER *INFO); //-- sorgbr -------------------------------------------------------------------- void LAPACK_IMPL(sorgbr)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sorghr -------------------------------------------------------------------- void LAPACK_IMPL(sorghr)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sorgl2 -------------------------------------------------------------------- void LAPACK_IMPL(sorgl2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, INTEGER *INFO); //-- sorglq -------------------------------------------------------------------- void LAPACK_IMPL(sorglq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sorgql -------------------------------------------------------------------- void LAPACK_IMPL(sorgql)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sorgqr -------------------------------------------------------------------- void LAPACK_IMPL(sorgqr)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sorgr2 -------------------------------------------------------------------- void LAPACK_IMPL(sorgr2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, INTEGER *INFO); //-- sorgrq -------------------------------------------------------------------- void LAPACK_IMPL(sorgrq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sorgtr -------------------------------------------------------------------- void LAPACK_IMPL(sorgtr)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sorm2l -------------------------------------------------------------------- void LAPACK_IMPL(sorm2l)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO); //-- sorm2r -------------------------------------------------------------------- void LAPACK_IMPL(sorm2r)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO); //-- sormbr -------------------------------------------------------------------- void LAPACK_IMPL(sormbr)(const char *VECT, const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sormhr -------------------------------------------------------------------- void LAPACK_IMPL(sormhr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sorml2 -------------------------------------------------------------------- void LAPACK_IMPL(sorml2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO); //-- sormlq -------------------------------------------------------------------- void LAPACK_IMPL(sormlq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sormql -------------------------------------------------------------------- void LAPACK_IMPL(sormql)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sormqr -------------------------------------------------------------------- void LAPACK_IMPL(sormqr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sormr2 -------------------------------------------------------------------- void LAPACK_IMPL(sormr2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO); //-- sormr3 -------------------------------------------------------------------- void LAPACK_IMPL(sormr3)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, INTEGER *INFO); //-- sormrq -------------------------------------------------------------------- void LAPACK_IMPL(sormrq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sormrz -------------------------------------------------------------------- void LAPACK_IMPL(sormrz)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- sormtr -------------------------------------------------------------------- void LAPACK_IMPL(sormtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *TAU, FLOAT *C, const INTEGER *LDC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- spbcon -------------------------------------------------------------------- void LAPACK_IMPL(spbcon)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- spbequ -------------------------------------------------------------------- void LAPACK_IMPL(spbequ)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const FLOAT *AB, const INTEGER *LDAB, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO); //-- spbrfs -------------------------------------------------------------------- void LAPACK_IMPL(spbrfs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *AFB, const INTEGER *LDAFB, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- spbstf -------------------------------------------------------------------- void LAPACK_IMPL(spbstf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, INTEGER *INFO); //-- spbsv --------------------------------------------------------------------- void LAPACK_IMPL(spbsv)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, FLOAT *AB, const INTEGER *LDAB, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- spbsvx -------------------------------------------------------------------- void LAPACK_IMPL(spbsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, FLOAT *AB, const INTEGER *LDAB, FLOAT *AFB, const INTEGER *LDAFB, char *EQUED, FLOAT *S, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- spbtf2 -------------------------------------------------------------------- void LAPACK_IMPL(spbtf2)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, INTEGER *INFO); //-- spbtrf -------------------------------------------------------------------- void LAPACK_IMPL(spbtrf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, INTEGER *INFO); //-- spbtrs -------------------------------------------------------------------- void LAPACK_IMPL(spbtrs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- spftrf -------------------------------------------------------------------- void LAPACK_IMPL(spftrf)(const char *TRANSR, const char *UPLO, const INTEGER *N, FLOAT *A, INTEGER *INFO); //-- spftri -------------------------------------------------------------------- void LAPACK_IMPL(spftri)(const char *TRANSR, const char *UPLO, const INTEGER *N, FLOAT *A, INTEGER *INFO); //-- spftrs -------------------------------------------------------------------- void LAPACK_IMPL(spftrs)(const char *TRANSR, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- spocon -------------------------------------------------------------------- void LAPACK_IMPL(spocon)(const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- spoequ -------------------------------------------------------------------- void LAPACK_IMPL(spoequ)(const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO); //-- spoequb ------------------------------------------------------------------- void LAPACK_IMPL(spoequb)(const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO); //-- sporfs -------------------------------------------------------------------- void LAPACK_IMPL(sporfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sporfsx ------------------------------------------------------------------- void LAPACK_IMPL(sporfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, FLOAT *S, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sposv --------------------------------------------------------------------- void LAPACK_IMPL(sposv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- sposvx -------------------------------------------------------------------- void LAPACK_IMPL(sposvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *AF, const INTEGER *LDAF, char *EQUED, FLOAT *S, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sposvxx ------------------------------------------------------------------- void LAPACK_IMPL(sposvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *AF, const INTEGER *LDAF, char *EQUED, FLOAT *S, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- spotf2 -------------------------------------------------------------------- void LAPACK_IMPL(spotf2)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO); //-- spotrf -------------------------------------------------------------------- void LAPACK_IMPL(spotrf)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO); //-- spotri -------------------------------------------------------------------- void LAPACK_IMPL(spotri)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO); //-- spotrs -------------------------------------------------------------------- void LAPACK_IMPL(spotrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- sppcon -------------------------------------------------------------------- void LAPACK_IMPL(sppcon)(const char *UPLO, const INTEGER *N, const FLOAT *AP, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sppequ -------------------------------------------------------------------- void LAPACK_IMPL(sppequ)(const char *UPLO, const INTEGER *N, const FLOAT *AP, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, INTEGER *INFO); //-- spprfs -------------------------------------------------------------------- void LAPACK_IMPL(spprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *AP, const FLOAT *AFP, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sppsv --------------------------------------------------------------------- void LAPACK_IMPL(sppsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *AP, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- sppsvx -------------------------------------------------------------------- void LAPACK_IMPL(sppsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *AP, FLOAT *AFP, char *EQUED, FLOAT *S, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- spptrf -------------------------------------------------------------------- void LAPACK_IMPL(spptrf)(const char *UPLO, const INTEGER *N, FLOAT *AP, INTEGER *INFO); //-- spptri -------------------------------------------------------------------- void LAPACK_IMPL(spptri)(const char *UPLO, const INTEGER *N, FLOAT *AP, INTEGER *INFO); //-- spptrs -------------------------------------------------------------------- void LAPACK_IMPL(spptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *AP, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- spstf2 -------------------------------------------------------------------- void LAPACK_IMPL(spstf2)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const FLOAT *TOL, FLOAT *WORK, INTEGER *INFO); //-- spstrf -------------------------------------------------------------------- void LAPACK_IMPL(spstrf)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const FLOAT *TOL, FLOAT *WORK, INTEGER *INFO); //-- sptcon -------------------------------------------------------------------- void LAPACK_IMPL(sptcon)(const INTEGER *N, const FLOAT *D, const FLOAT *E, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *INFO); //-- spteqr -------------------------------------------------------------------- void LAPACK_IMPL(spteqr)(const char *COMPZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO); //-- sptrfs -------------------------------------------------------------------- void LAPACK_IMPL(sptrfs)(const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT *E, const FLOAT *DF, const FLOAT *EF, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *INFO); //-- sptsv --------------------------------------------------------------------- void LAPACK_IMPL(sptsv)(const INTEGER *N, const INTEGER *NRHS, FLOAT *D, FLOAT *E, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- sptsvx -------------------------------------------------------------------- void LAPACK_IMPL(sptsvx)(const char *FACT, const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT *E, FLOAT *DF, FLOAT *EF, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *INFO); //-- spttrf -------------------------------------------------------------------- void LAPACK_IMPL(spttrf)(const INTEGER *N, FLOAT *D, FLOAT *E, INTEGER *INFO); //-- spttrs -------------------------------------------------------------------- void LAPACK_IMPL(spttrs)(const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT *E, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- sptts2 -------------------------------------------------------------------- void LAPACK_IMPL(sptts2)(const INTEGER *N, const INTEGER *NRHS, const FLOAT *D, const FLOAT *E, FLOAT *B, const INTEGER *LDB); //-- srscl --------------------------------------------------------------------- void LAPACK_IMPL(srscl)(const INTEGER *N, const FLOAT *SA, FLOAT *SX, const INTEGER *INCX); //-- ssbev --------------------------------------------------------------------- void LAPACK_IMPL(ssbev)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO); //-- ssbevd -------------------------------------------------------------------- void LAPACK_IMPL(ssbevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- ssbevx -------------------------------------------------------------------- void LAPACK_IMPL(ssbevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, FLOAT *Q, const INTEGER *LDQ, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- ssbgst -------------------------------------------------------------------- void LAPACK_IMPL(ssbgst)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT *AB, const INTEGER *LDAB, const FLOAT *BB, const INTEGER *LDBB, FLOAT *X, const INTEGER *LDX, FLOAT *WORK, INTEGER *INFO); //-- ssbgv --------------------------------------------------------------------- void LAPACK_IMPL(ssbgv)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT *AB, const INTEGER *LDAB, FLOAT *BB, const INTEGER *LDBB, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO); //-- ssbgvd -------------------------------------------------------------------- void LAPACK_IMPL(ssbgvd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT *AB, const INTEGER *LDAB, FLOAT *BB, const INTEGER *LDBB, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- ssbgvx -------------------------------------------------------------------- void LAPACK_IMPL(ssbgvx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, FLOAT *AB, const INTEGER *LDAB, FLOAT *BB, const INTEGER *LDBB, FLOAT *Q, const INTEGER *LDQ, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- ssbtrd -------------------------------------------------------------------- void LAPACK_IMPL(ssbtrd)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KD, FLOAT *AB, const INTEGER *LDAB, FLOAT *D, FLOAT *E, FLOAT *Q, const INTEGER *LDQ, FLOAT *WORK, INTEGER *INFO); //-- ssfrk --------------------------------------------------------------------- void LAPACK_IMPL(ssfrk)(const char *TRANSR, const char *UPLO, const char *TRANS, const INTEGER *N, const INTEGER *K, const FLOAT *ALPHA, const FLOAT *A, const INTEGER *LDA, const FLOAT *BETA, FLOAT *C); //-- sspcon -------------------------------------------------------------------- void LAPACK_IMPL(sspcon)(const char *UPLO, const INTEGER *N, const FLOAT *AP, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sspev --------------------------------------------------------------------- void LAPACK_IMPL(sspev)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *AP, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO); //-- sspevd -------------------------------------------------------------------- void LAPACK_IMPL(sspevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *AP, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- sspevx -------------------------------------------------------------------- void LAPACK_IMPL(sspevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT *AP, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- sspgst -------------------------------------------------------------------- void LAPACK_IMPL(sspgst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, FLOAT *AP, const FLOAT *BP, INTEGER *INFO); //-- sspgv --------------------------------------------------------------------- void LAPACK_IMPL(sspgv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *AP, FLOAT *BP, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO); //-- sspgvd -------------------------------------------------------------------- void LAPACK_IMPL(sspgvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *AP, FLOAT *BP, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- sspgvx -------------------------------------------------------------------- void LAPACK_IMPL(sspgvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT *AP, FLOAT *BP, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- ssprfs -------------------------------------------------------------------- void LAPACK_IMPL(ssprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *AP, const FLOAT *AFP, const INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sspsv --------------------------------------------------------------------- void LAPACK_IMPL(sspsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *AP, INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- sspsvx -------------------------------------------------------------------- void LAPACK_IMPL(sspsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *AP, FLOAT *AFP, INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- ssptrd -------------------------------------------------------------------- void LAPACK_IMPL(ssptrd)(const char *UPLO, const INTEGER *N, FLOAT *AP, FLOAT *D, FLOAT *E, FLOAT *TAU, INTEGER *INFO); //-- ssptrf -------------------------------------------------------------------- void LAPACK_IMPL(ssptrf)(const char *UPLO, const INTEGER *N, FLOAT *AP, INTEGER *IPIV, INTEGER *INFO); //-- ssptri -------------------------------------------------------------------- void LAPACK_IMPL(ssptri)(const char *UPLO, const INTEGER *N, FLOAT *AP, const INTEGER *IPIV, FLOAT *WORK, INTEGER *INFO); //-- ssptrs -------------------------------------------------------------------- void LAPACK_IMPL(ssptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *AP, const INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- sstebz -------------------------------------------------------------------- void LAPACK_IMPL(sstebz)(const char *RANGE, const char *ORDER, const INTEGER *N, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, const FLOAT *D, const FLOAT *E, INTEGER *M, INTEGER *NSPLIT, FLOAT *W, INTEGER *IBLOCK, INTEGER *ISPLIT, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- sstedc -------------------------------------------------------------------- void LAPACK_IMPL(sstedc)(const char *COMPZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- sstegr -------------------------------------------------------------------- void LAPACK_IMPL(sstegr)(const char *JOBZ, const char *RANGE, const INTEGER *N, FLOAT *D, FLOAT *E, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- sstein -------------------------------------------------------------------- void LAPACK_IMPL(sstein)(const INTEGER *N, const FLOAT *D, const FLOAT *E, const INTEGER *M, const FLOAT *W, const INTEGER *IBLOCK, const INTEGER *ISPLIT, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- sstemr -------------------------------------------------------------------- void LAPACK_IMPL(sstemr)(const char *JOBZ, const char *RANGE, const INTEGER *N, FLOAT *D, FLOAT *E, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, const INTEGER *NZC, INTEGER *ISUPPZ, LOGICAL *TRYRAC, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- ssteqr -------------------------------------------------------------------- void LAPACK_IMPL(ssteqr)(const char *COMPZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO); //-- ssterf -------------------------------------------------------------------- void LAPACK_IMPL(ssterf)(const INTEGER *N, FLOAT *D, FLOAT *E, INTEGER *INFO); //-- sstev --------------------------------------------------------------------- void LAPACK_IMPL(sstev)(const char *JOBZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *INFO); //-- sstevd -------------------------------------------------------------------- void LAPACK_IMPL(sstevd)(const char *JOBZ, const INTEGER *N, FLOAT *D, FLOAT *E, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- sstevr -------------------------------------------------------------------- void LAPACK_IMPL(sstevr)(const char *JOBZ, const char *RANGE, const INTEGER *N, FLOAT *D, FLOAT *E, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- sstevx -------------------------------------------------------------------- void LAPACK_IMPL(sstevx)(const char *JOBZ, const char *RANGE, const INTEGER *N, FLOAT *D, FLOAT *E, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- ssycon -------------------------------------------------------------------- void LAPACK_IMPL(ssycon)(const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, const FLOAT *ANORM, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- ssyconv ------------------------------------------------------------------- void LAPACK_IMPL(ssyconv)(const char *UPLO, const char *WAY, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *WORK, INTEGER *INFO); //-- ssyequb ------------------------------------------------------------------- void LAPACK_IMPL(ssyequb)(const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *S, FLOAT *SCOND, FLOAT *AMAX, FLOAT *WORK, INTEGER *INFO); //-- ssyev --------------------------------------------------------------------- void LAPACK_IMPL(ssyev)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *W, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- ssyevd -------------------------------------------------------------------- void LAPACK_IMPL(ssyevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *W, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- ssyevr -------------------------------------------------------------------- void LAPACK_IMPL(ssyevr)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- ssyevx -------------------------------------------------------------------- void LAPACK_IMPL(ssyevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- ssygs2 -------------------------------------------------------------------- void LAPACK_IMPL(ssygs2)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- ssygst -------------------------------------------------------------------- void LAPACK_IMPL(ssygst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- ssygv --------------------------------------------------------------------- void LAPACK_IMPL(ssygv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *W, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- ssygvd -------------------------------------------------------------------- void LAPACK_IMPL(ssygvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *W, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- ssygvx -------------------------------------------------------------------- void LAPACK_IMPL(ssygvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, const FLOAT *VL, const FLOAT *VU, const INTEGER *IL, const INTEGER *IU, const FLOAT *ABSTOL, INTEGER *M, FLOAT *W, FLOAT *Z, const INTEGER *LDZ, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- ssyrfs -------------------------------------------------------------------- void LAPACK_IMPL(ssyrfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- ssyrfsx ------------------------------------------------------------------- void LAPACK_IMPL(ssyrfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *AF, const INTEGER *LDAF, const INTEGER *IPIV, FLOAT *S, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- ssysv --------------------------------------------------------------------- void LAPACK_IMPL(ssysv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- ssysvx -------------------------------------------------------------------- void LAPACK_IMPL(ssysvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, FLOAT *AF, const INTEGER *LDAF, INTEGER *IPIV, const FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- ssysvxx ------------------------------------------------------------------- void LAPACK_IMPL(ssysvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, FLOAT *A, const INTEGER *LDA, FLOAT *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, FLOAT *S, FLOAT *B, const INTEGER *LDB, FLOAT *X, const INTEGER *LDX, FLOAT *RCOND, FLOAT *RPVGRW, FLOAT *BERR, const INTEGER *N_ERR_BNDS, FLOAT *ERR_BNDS_NORM, FLOAT *ERR_BNDS_COMP, const INTEGER *NPARAMS, FLOAT *PARAMS, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- ssyswapr ------------------------------------------------------------------ void LAPACK_IMPL(ssyswapr)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const INTEGER *I1, const INTEGER *I2); //-- ssytd2 -------------------------------------------------------------------- void LAPACK_IMPL(ssytd2)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT *TAU, INTEGER *INFO); //-- ssytf2 -------------------------------------------------------------------- void LAPACK_IMPL(ssytf2)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO); //-- ssytrd -------------------------------------------------------------------- void LAPACK_IMPL(ssytrd)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *D, FLOAT *E, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- ssytrf -------------------------------------------------------------------- void LAPACK_IMPL(ssytrf)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *IPIV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- ssytri -------------------------------------------------------------------- void LAPACK_IMPL(ssytri)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *WORK, INTEGER *INFO); //-- ssytri2 ------------------------------------------------------------------- void LAPACK_IMPL(ssytri2)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- ssytri2x ------------------------------------------------------------------ void LAPACK_IMPL(ssytri2x)(const char *UPLO, const INTEGER *N, FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *WORK, const INTEGER *NB, INTEGER *INFO); //-- ssytrs -------------------------------------------------------------------- void LAPACK_IMPL(ssytrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- ssytrs2 ------------------------------------------------------------------- void LAPACK_IMPL(ssytrs2)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const INTEGER *IPIV, FLOAT *B, const INTEGER *LDB, FLOAT *WORK, INTEGER *INFO); //-- stbcon -------------------------------------------------------------------- void LAPACK_IMPL(stbcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *KD, const FLOAT *AB, const INTEGER *LDAB, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- stbrfs -------------------------------------------------------------------- void LAPACK_IMPL(stbrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, const FLOAT *B, const INTEGER *LDB, const FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- stbtrs -------------------------------------------------------------------- void LAPACK_IMPL(stbtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const FLOAT *AB, const INTEGER *LDAB, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- stfsm --------------------------------------------------------------------- void LAPACK_IMPL(stfsm)(const char *TRANSR, const char *SIDE, const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *M, const INTEGER *N, const FLOAT *ALPHA, const FLOAT *A, FLOAT *B, const INTEGER *LDB); //-- stftri -------------------------------------------------------------------- void LAPACK_IMPL(stftri)(const char *TRANSR, const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT *A, INTEGER *INFO); //-- stfttp -------------------------------------------------------------------- void LAPACK_IMPL(stfttp)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT *ARF, FLOAT *AP, INTEGER *INFO); //-- stfttr -------------------------------------------------------------------- void LAPACK_IMPL(stfttr)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT *ARF, FLOAT *A, const INTEGER *LDA, INTEGER *INFO); //-- stgevc -------------------------------------------------------------------- void LAPACK_IMPL(stgevc)(const char *SIDE, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const FLOAT *S, const INTEGER *LDS, const FLOAT *P, const INTEGER *LDP, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, FLOAT *WORK, INTEGER *INFO); //-- stgex2 -------------------------------------------------------------------- void LAPACK_IMPL(stgex2)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *Q, const INTEGER *LDQ, FLOAT *Z, const INTEGER *LDZ, const INTEGER *J1, const INTEGER *N1, const INTEGER *N2, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- stgexc -------------------------------------------------------------------- void LAPACK_IMPL(stgexc)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *Q, const INTEGER *LDQ, FLOAT *Z, const INTEGER *LDZ, INTEGER *IFST, INTEGER *ILST, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- stgsen -------------------------------------------------------------------- void LAPACK_IMPL(stgsen)(const INTEGER *IJOB, const LOGICAL *WANTQ, const LOGICAL *WANTZ, const LOGICAL *SELECT, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, FLOAT *ALPHAR, FLOAT *ALPHAI, FLOAT *BETA, FLOAT *Q, const INTEGER *LDQ, FLOAT *Z, const INTEGER *LDZ, INTEGER *M, FLOAT *PL, FLOAT *PR, FLOAT *DIF, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- stgsja -------------------------------------------------------------------- void LAPACK_IMPL(stgsja)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, const INTEGER *K, const INTEGER *L, FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, const FLOAT *TOLA, const FLOAT *TOLB, FLOAT *ALPHA, FLOAT *BETA, FLOAT *U, const INTEGER *LDU, FLOAT *V, const INTEGER *LDV, FLOAT *Q, const INTEGER *LDQ, FLOAT *WORK, INTEGER *NCYCLE, INTEGER *INFO); //-- stgsna -------------------------------------------------------------------- void LAPACK_IMPL(stgsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, const FLOAT *VL, const INTEGER *LDVL, const FLOAT *VR, const INTEGER *LDVR, FLOAT *S, FLOAT *DIF, const INTEGER *MM, INTEGER *M, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- stgsy2 -------------------------------------------------------------------- void LAPACK_IMPL(stgsy2)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, FLOAT *C, const INTEGER *LDC, const FLOAT *D, const INTEGER *LDD, const FLOAT *E, const INTEGER *LDE, FLOAT *F, const INTEGER *LDF, FLOAT *SCALE, FLOAT *RDSUM, FLOAT *RDSCAL, INTEGER *IWORK, INTEGER *PQ, INTEGER *INFO); //-- stgsyl -------------------------------------------------------------------- void LAPACK_IMPL(stgsyl)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, FLOAT *C, const INTEGER *LDC, const FLOAT *D, const INTEGER *LDD, const FLOAT *E, const INTEGER *LDE, FLOAT *F, const INTEGER *LDF, FLOAT *SCALE, FLOAT *DIF, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- stpcon -------------------------------------------------------------------- void LAPACK_IMPL(stpcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const FLOAT *AP, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- stprfs -------------------------------------------------------------------- void LAPACK_IMPL(stprfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT *AP, const FLOAT *B, const INTEGER *LDB, const FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- stptri -------------------------------------------------------------------- void LAPACK_IMPL(stptri)(const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT *AP, INTEGER *INFO); //-- stptrs -------------------------------------------------------------------- void LAPACK_IMPL(stptrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT *AP, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- stpttf -------------------------------------------------------------------- void LAPACK_IMPL(stpttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT *AP, FLOAT *ARF, INTEGER *INFO); //-- stpttr -------------------------------------------------------------------- void LAPACK_IMPL(stpttr)(const char *UPLO, const INTEGER *N, const FLOAT *AP, FLOAT *A, const INTEGER *LDA, INTEGER *INFO); //-- strcon -------------------------------------------------------------------- void LAPACK_IMPL(strcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *RCOND, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- strevc -------------------------------------------------------------------- void LAPACK_IMPL(strevc)(const char *SIDE, const char *HOWMNY, LOGICAL *SELECT, const INTEGER *N, const FLOAT *T, const INTEGER *LDT, FLOAT *VL, const INTEGER *LDVL, FLOAT *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, FLOAT *WORK, INTEGER *INFO); //-- strexc -------------------------------------------------------------------- void LAPACK_IMPL(strexc)(const char *COMPQ, const INTEGER *N, FLOAT *T, const INTEGER *LDT, FLOAT *Q, const INTEGER *LDQ, INTEGER *IFST, INTEGER *ILST, FLOAT *WORK, INTEGER *INFO); //-- strrfs -------------------------------------------------------------------- void LAPACK_IMPL(strrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, const FLOAT *X, const INTEGER *LDX, FLOAT *FERR, FLOAT *BERR, FLOAT *WORK, INTEGER *IWORK, INTEGER *INFO); //-- strsen -------------------------------------------------------------------- void LAPACK_IMPL(strsen)(const char *JOB, const char *COMPQ, const LOGICAL *SELECT, const INTEGER *N, FLOAT *T, const INTEGER *LDT, FLOAT *Q, const INTEGER *LDQ, FLOAT *WR, FLOAT *WI, INTEGER *M, FLOAT *S, FLOAT *SEP, FLOAT *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- strsna -------------------------------------------------------------------- void LAPACK_IMPL(strsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const FLOAT *T, const INTEGER *LDT, const FLOAT *VL, const INTEGER *LDVL, const FLOAT *VR, const INTEGER *LDVR, FLOAT *S, FLOAT *SEP, const INTEGER *MM, INTEGER *M, FLOAT *WORK, const INTEGER *LDWORK, INTEGER *IWORK, INTEGER *INFO); //-- strsyl -------------------------------------------------------------------- void LAPACK_IMPL(strsyl)(const char *TRANA, const char *TRANB, const INTEGER *ISGN, const INTEGER *M, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, const FLOAT *B, const INTEGER *LDB, FLOAT *C, const INTEGER *LDC, FLOAT *SCALE, INTEGER *INFO); //-- strti2 -------------------------------------------------------------------- void LAPACK_IMPL(strti2)(const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO); //-- strtri -------------------------------------------------------------------- void LAPACK_IMPL(strtri)(const char *UPLO, const char *DIAG, const INTEGER *N, FLOAT *A, const INTEGER *LDA, INTEGER *INFO); //-- strtrs -------------------------------------------------------------------- void LAPACK_IMPL(strtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const FLOAT *A, const INTEGER *LDA, FLOAT *B, const INTEGER *LDB, INTEGER *INFO); //-- strttf -------------------------------------------------------------------- void LAPACK_IMPL(strttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *ARF, INTEGER *INFO); //-- strttp -------------------------------------------------------------------- void LAPACK_IMPL(strttp)(const char *UPLO, const INTEGER *N, const FLOAT *A, const INTEGER *LDA, FLOAT *AP, INTEGER *INFO); //-- stzrqf -------------------------------------------------------------------- void LAPACK_IMPL(stzrqf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, INTEGER *INFO); //-- stzrzf -------------------------------------------------------------------- void LAPACK_IMPL(stzrzf)(const INTEGER *M, const INTEGER *N, FLOAT *A, const INTEGER *LDA, FLOAT *TAU, FLOAT *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- xerbla_array -------------------------------------------------------------- void LAPACK_IMPL(xerbla_array)(const char *SRNAME_ARRAY, const INTEGER *SRNAME_LEN, const INTEGER *INFO); //-- zbbcsd -------------------------------------------------------------------- void LAPACK_IMPL(zbbcsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, DOUBLE *THETA, DOUBLE *PHI, DOUBLE_COMPLEX *U1, const INTEGER *LDU1, DOUBLE_COMPLEX *U2, const INTEGER *LDU2, DOUBLE_COMPLEX *V1T, const INTEGER *LDV1T, DOUBLE_COMPLEX *V2T, const INTEGER *LDV2T, DOUBLE *B11D, DOUBLE *B11E, DOUBLE *B12D, DOUBLE *B12E, const DOUBLE *B21D, const DOUBLE *B21E, const DOUBLE *B22D, const DOUBLE *B22E, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *INFO); //-- zbdsqr -------------------------------------------------------------------- void LAPACK_IMPL(zbdsqr)(const char *UPLO, const INTEGER *N, const INTEGER *NCVT, const INTEGER *NRU, const INTEGER *NCC, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *VT, const INTEGER *LDVT, DOUBLE_COMPLEX *U, const INTEGER *LDU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE *RWORK, INTEGER *INFO); //-- zcgesv -------------------------------------------------------------------- void LAPACK_IMPL(zcgesv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE_COMPLEX *WORK, FLOAT_COMPLEX *SWORK, DOUBLE *RWORK, INTEGER *ITER, INTEGER *INFO); //-- zcposv -------------------------------------------------------------------- void LAPACK_IMPL(zcposv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE_COMPLEX *WORK, FLOAT_COMPLEX *SWORK, DOUBLE *RWORK, INTEGER *ITER, INTEGER *INFO); //-- zdrscl -------------------------------------------------------------------- void LAPACK_IMPL(zdrscl)(const INTEGER *N, const DOUBLE *SA, DOUBLE_COMPLEX *SX, const INTEGER *INCX); //-- zgbbrd -------------------------------------------------------------------- void LAPACK_IMPL(zgbbrd)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *NCC, const INTEGER *KL, const INTEGER *KU, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *PT, const INTEGER *LDPT, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgbcon -------------------------------------------------------------------- void LAPACK_IMPL(zgbcon)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgbequ -------------------------------------------------------------------- void LAPACK_IMPL(zgbequ)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO); //-- zgbequb ------------------------------------------------------------------- void LAPACK_IMPL(zgbequb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO); //-- zgbrfs -------------------------------------------------------------------- void LAPACK_IMPL(zgbrfs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgbrfsx ------------------------------------------------------------------- void LAPACK_IMPL(zgbrfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, DOUBLE *R, DOUBLE *C, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgbsv --------------------------------------------------------------------- void LAPACK_IMPL(zgbsv)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zgbsvx -------------------------------------------------------------------- void LAPACK_IMPL(zgbsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, INTEGER *IPIV, char *EQUED, DOUBLE *R, DOUBLE *C, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgbsvxx ------------------------------------------------------------------- void LAPACK_IMPL(zgbsvxx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, INTEGER *IPIV, char *EQUED, DOUBLE *R, DOUBLE *C, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgbtf2 -------------------------------------------------------------------- void LAPACK_IMPL(zgbtf2)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO); //-- zgbtrf -------------------------------------------------------------------- void LAPACK_IMPL(zgbtrf)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, INTEGER *IPIV, INTEGER *INFO); //-- zgbtrs -------------------------------------------------------------------- void LAPACK_IMPL(zgbtrs)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zgebak -------------------------------------------------------------------- void LAPACK_IMPL(zgebak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const DOUBLE *SCALE, const INTEGER *M, DOUBLE_COMPLEX *V, const INTEGER *LDV, INTEGER *INFO); //-- zgebal -------------------------------------------------------------------- void LAPACK_IMPL(zgebal)(const char *JOB, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *ILO, INTEGER *IHI, DOUBLE *SCALE, INTEGER *INFO); //-- zgebd2 -------------------------------------------------------------------- void LAPACK_IMPL(zgebd2)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *TAUQ, DOUBLE_COMPLEX *TAUP, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zgebrd -------------------------------------------------------------------- void LAPACK_IMPL(zgebrd)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *TAUQ, DOUBLE_COMPLEX *TAUP, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zgecon -------------------------------------------------------------------- void LAPACK_IMPL(zgecon)(const char *NORM, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgeequ -------------------------------------------------------------------- void LAPACK_IMPL(zgeequ)(const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO); //-- zgeequb ------------------------------------------------------------------- void LAPACK_IMPL(zgeequb)(const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *R, DOUBLE *C, DOUBLE *ROWCND, DOUBLE *COLCND, DOUBLE *AMAX, INTEGER *INFO); //-- zgees --------------------------------------------------------------------- void LAPACK_IMPL(zgees)(const char *JOBVS, const char *SORT, LOGICAL (*SELECT)(const DOUBLE_COMPLEX *), const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *SDIM, DOUBLE_COMPLEX *W, DOUBLE_COMPLEX *VS, const INTEGER *LDVS, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, LOGICAL *BWORK, INTEGER *INFO); //-- zgeesx -------------------------------------------------------------------- void LAPACK_IMPL(zgeesx)(const char *JOBVS, const char *SORT, LOGICAL (*SELECT)(const DOUBLE_COMPLEX *), const char *SENSE, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *SDIM, DOUBLE_COMPLEX *W, DOUBLE_COMPLEX *VS, const INTEGER *LDVS, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, LOGICAL *BWORK, INTEGER *INFO); //-- zgeev --------------------------------------------------------------------- void LAPACK_IMPL(zgeev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *W, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgeevx -------------------------------------------------------------------- void LAPACK_IMPL(zgeevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *W, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, DOUBLE *SCALE, DOUBLE *ABNRM, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgegs --------------------------------------------------------------------- void LAPACK_IMPL(zgegs)(const char *JOBVSL, const char *JOBVSR, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *VSL, const INTEGER *LDVSL, DOUBLE_COMPLEX *VSR, const INTEGER *LDVSR, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgegv --------------------------------------------------------------------- void LAPACK_IMPL(zgegv)(const char *JOBVL, const char *JOBVR, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgehd2 -------------------------------------------------------------------- void LAPACK_IMPL(zgehd2)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zgehrd -------------------------------------------------------------------- void LAPACK_IMPL(zgehrd)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zgelq2 -------------------------------------------------------------------- void LAPACK_IMPL(zgelq2)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zgelqf -------------------------------------------------------------------- void LAPACK_IMPL(zgelqf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zgels --------------------------------------------------------------------- void LAPACK_IMPL(zgels)(const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zgelsd -------------------------------------------------------------------- void LAPACK_IMPL(zgelsd)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE *S, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *INFO); //-- zgelss -------------------------------------------------------------------- void LAPACK_IMPL(zgelss)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE *S, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgelsx -------------------------------------------------------------------- void LAPACK_IMPL(zgelsx)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *JPVT, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgelsy -------------------------------------------------------------------- void LAPACK_IMPL(zgelsy)(const INTEGER *M, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *JPVT, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgeql2 -------------------------------------------------------------------- void LAPACK_IMPL(zgeql2)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zgeqlf -------------------------------------------------------------------- void LAPACK_IMPL(zgeqlf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zgeqp3 -------------------------------------------------------------------- void LAPACK_IMPL(zgeqp3)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgeqpf -------------------------------------------------------------------- void LAPACK_IMPL(zgeqpf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgeqr2 -------------------------------------------------------------------- void LAPACK_IMPL(zgeqr2)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zgeqr2p ------------------------------------------------------------------- void LAPACK_IMPL(zgeqr2p)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zgeqrf -------------------------------------------------------------------- void LAPACK_IMPL(zgeqrf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zgeqrfp ------------------------------------------------------------------- void LAPACK_IMPL(zgeqrfp)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zgerfs -------------------------------------------------------------------- void LAPACK_IMPL(zgerfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgerfsx ------------------------------------------------------------------- void LAPACK_IMPL(zgerfsx)(const char *TRANS, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *R, const DOUBLE *C, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgerq2 -------------------------------------------------------------------- void LAPACK_IMPL(zgerq2)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zgerqf -------------------------------------------------------------------- void LAPACK_IMPL(zgerqf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zgesc2 -------------------------------------------------------------------- void LAPACK_IMPL(zgesc2)(const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *RHS, const INTEGER *IPIV, const INTEGER *JPIV, DOUBLE *SCALE); //-- zgesdd -------------------------------------------------------------------- void LAPACK_IMPL(zgesdd)(const char *JOBZ, const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *S, DOUBLE_COMPLEX *U, const INTEGER *LDU, DOUBLE_COMPLEX *VT, const INTEGER *LDVT, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *INFO); //-- zgesv --------------------------------------------------------------------- void LAPACK_IMPL(zgesv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zgesvd -------------------------------------------------------------------- void LAPACK_IMPL(zgesvd)(const char *JOBU, const char *JOBVT, const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *S, DOUBLE_COMPLEX *U, const INTEGER *LDU, DOUBLE_COMPLEX *VT, const INTEGER *LDVT, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgesvx -------------------------------------------------------------------- void LAPACK_IMPL(zgesvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, DOUBLE *R, DOUBLE *C, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgesvxx ------------------------------------------------------------------- void LAPACK_IMPL(zgesvxx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, DOUBLE *R, DOUBLE *C, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgetc2 -------------------------------------------------------------------- void LAPACK_IMPL(zgetc2)(const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *JPIV, INTEGER *INFO); //-- zgetf2 -------------------------------------------------------------------- void LAPACK_IMPL(zgetf2)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO); //-- zgetrf -------------------------------------------------------------------- void LAPACK_IMPL(zgetrf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO); //-- zgetri -------------------------------------------------------------------- void LAPACK_IMPL(zgetri)(const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zgetrs -------------------------------------------------------------------- void LAPACK_IMPL(zgetrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zggbak -------------------------------------------------------------------- void LAPACK_IMPL(zggbak)(const char *JOB, const char *SIDE, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const DOUBLE *LSCALE, const DOUBLE *RSCALE, const INTEGER *M, DOUBLE_COMPLEX *V, const INTEGER *LDV, INTEGER *INFO); //-- zggbal -------------------------------------------------------------------- void LAPACK_IMPL(zggbal)(const char *JOB, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *ILO, INTEGER *IHI, DOUBLE *LSCALE, DOUBLE *RSCALE, DOUBLE *WORK, INTEGER *INFO); //-- zgges --------------------------------------------------------------------- void LAPACK_IMPL(zgges)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *SDIM, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *VSL, const INTEGER *LDVSL, DOUBLE_COMPLEX *VSR, const INTEGER *LDVSR, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, LOGICAL *BWORK, INTEGER *INFO); //-- zggesx -------------------------------------------------------------------- void LAPACK_IMPL(zggesx)(const char *JOBVSL, const char *JOBVSR, const char *SORT, const LOGICAL *SELCTG, const char *SENSE, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *SDIM, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *VSL, const INTEGER *LDVSL, DOUBLE_COMPLEX *VSR, const INTEGER *LDVSR, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *IWORK, const INTEGER *LIWORK, LOGICAL *BWORK, INTEGER *INFO); //-- zggev --------------------------------------------------------------------- void LAPACK_IMPL(zggev)(const char *JOBVL, const char *JOBVR, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO); //-- zggevx -------------------------------------------------------------------- void LAPACK_IMPL(zggevx)(const char *BALANC, const char *JOBVL, const char *JOBVR, const char *SENSE, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, INTEGER *ILO, INTEGER *IHI, DOUBLE *LSCALE, DOUBLE *RSCALE, DOUBLE *ABNRM, DOUBLE *BBNRM, DOUBLE *RCONDE, DOUBLE *RCONDV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *IWORK, LOGICAL *BWORK, INTEGER *INFO); //-- zggglm -------------------------------------------------------------------- void LAPACK_IMPL(zggglm)(const INTEGER *N, const INTEGER *M, const INTEGER *P, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *D, DOUBLE_COMPLEX *X, DOUBLE_COMPLEX *Y, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zgghrd -------------------------------------------------------------------- void LAPACK_IMPL(zgghrd)(const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *INFO); //-- zgglse -------------------------------------------------------------------- void LAPACK_IMPL(zgglse)(const INTEGER *M, const INTEGER *N, const INTEGER *P, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *C, DOUBLE_COMPLEX *D, DOUBLE_COMPLEX *X, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zggqrf -------------------------------------------------------------------- void LAPACK_IMPL(zggqrf)(const INTEGER *N, const INTEGER *M, const INTEGER *P, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAUA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *TAUB, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zggrqf -------------------------------------------------------------------- void LAPACK_IMPL(zggrqf)(const INTEGER *M, const INTEGER *P, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAUA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *TAUB, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zggsvd -------------------------------------------------------------------- void LAPACK_IMPL(zggsvd)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *N, const INTEGER *P, INTEGER *K, INTEGER *L, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE *ALPHA, DOUBLE *BETA, DOUBLE_COMPLEX *U, const INTEGER *LDU, DOUBLE_COMPLEX *V, const INTEGER *LDV, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *INFO); //-- zggsvp -------------------------------------------------------------------- void LAPACK_IMPL(zggsvp)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE *TOLA, const DOUBLE *TOLB, INTEGER *K, INTEGER *L, DOUBLE_COMPLEX *U, const INTEGER *LDU, DOUBLE_COMPLEX *V, const INTEGER *LDV, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, INTEGER *IWORK, DOUBLE *RWORK, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zgtcon -------------------------------------------------------------------- void LAPACK_IMPL(zgtcon)(const char *NORM, const INTEGER *N, const DOUBLE_COMPLEX *DL, const DOUBLE_COMPLEX *D, const DOUBLE_COMPLEX *DU, const DOUBLE_COMPLEX *DU2, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zgtrfs -------------------------------------------------------------------- void LAPACK_IMPL(zgtrfs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *DL, const DOUBLE_COMPLEX *D, const DOUBLE_COMPLEX *DU, const DOUBLE_COMPLEX *DLF, const DOUBLE_COMPLEX *DF, const DOUBLE_COMPLEX *DUF, const DOUBLE_COMPLEX *DU2, const INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgtsv --------------------------------------------------------------------- void LAPACK_IMPL(zgtsv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *DL, DOUBLE_COMPLEX *D, DOUBLE_COMPLEX *DU, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zgtsvx -------------------------------------------------------------------- void LAPACK_IMPL(zgtsvx)(const char *FACT, const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *DL, const DOUBLE_COMPLEX *D, const DOUBLE_COMPLEX *DU, DOUBLE_COMPLEX *DLF, DOUBLE_COMPLEX *DF, DOUBLE_COMPLEX *DUF, DOUBLE_COMPLEX *DU2, INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zgttrf -------------------------------------------------------------------- void LAPACK_IMPL(zgttrf)(const INTEGER *N, DOUBLE_COMPLEX *DL, DOUBLE_COMPLEX *D, DOUBLE_COMPLEX *DU, DOUBLE_COMPLEX *DU2, INTEGER *IPIV, INTEGER *INFO); //-- zgttrs -------------------------------------------------------------------- void LAPACK_IMPL(zgttrs)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *DL, const DOUBLE_COMPLEX *D, const DOUBLE_COMPLEX *DU, const DOUBLE_COMPLEX *DU2, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zgtts2 -------------------------------------------------------------------- void LAPACK_IMPL(zgtts2)(const INTEGER *ITRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *DL, const DOUBLE_COMPLEX *D, const DOUBLE_COMPLEX *DU, const DOUBLE_COMPLEX *DU2, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB); //-- zhbev --------------------------------------------------------------------- void LAPACK_IMPL(zhbev)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zhbevd -------------------------------------------------------------------- void LAPACK_IMPL(zhbevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- zhbevx -------------------------------------------------------------------- void LAPACK_IMPL(zhbevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- zhbgst -------------------------------------------------------------------- void LAPACK_IMPL(zhbgst)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *BB, const INTEGER *LDBB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zhbgv --------------------------------------------------------------------- void LAPACK_IMPL(zhbgv)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *BB, const INTEGER *LDBB, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zhbgvd -------------------------------------------------------------------- void LAPACK_IMPL(zhbgvd)(const char *JOBZ, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *BB, const INTEGER *LDBB, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- zhbgvx -------------------------------------------------------------------- void LAPACK_IMPL(zhbgvx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, const INTEGER *KA, const INTEGER *KB, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *BB, const INTEGER *LDBB, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- zhbtrd -------------------------------------------------------------------- void LAPACK_IMPL(zhbtrd)(const char *VECT, const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zhecon -------------------------------------------------------------------- void LAPACK_IMPL(zhecon)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zheequb ------------------------------------------------------------------- void LAPACK_IMPL(zheequb)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, const DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zheev --------------------------------------------------------------------- void LAPACK_IMPL(zheev)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *W, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO); //-- zheevd -------------------------------------------------------------------- void LAPACK_IMPL(zheevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *W, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- zheevr -------------------------------------------------------------------- void LAPACK_IMPL(zheevr)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- zheevx -------------------------------------------------------------------- void LAPACK_IMPL(zheevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- zhegs2 -------------------------------------------------------------------- void LAPACK_IMPL(zhegs2)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zhegst -------------------------------------------------------------------- void LAPACK_IMPL(zhegst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zhegv --------------------------------------------------------------------- void LAPACK_IMPL(zhegv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE *W, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO); //-- zhegvd -------------------------------------------------------------------- void LAPACK_IMPL(zhegvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE *W, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- zhegvx -------------------------------------------------------------------- void LAPACK_IMPL(zhegvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- zherfs -------------------------------------------------------------------- void LAPACK_IMPL(zherfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zherfsx ------------------------------------------------------------------- void LAPACK_IMPL(zherfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, DOUBLE *S, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zhesv --------------------------------------------------------------------- void LAPACK_IMPL(zhesv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zhesvx -------------------------------------------------------------------- void LAPACK_IMPL(zhesvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO); //-- zhesvxx ------------------------------------------------------------------- void LAPACK_IMPL(zhesvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, DOUBLE *S, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zheswapr ------------------------------------------------------------------ void LAPACK_IMPL(zheswapr)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *I1, const INTEGER *I2); //-- zhetd2 -------------------------------------------------------------------- void LAPACK_IMPL(zhetd2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *TAU, INTEGER *INFO); //-- zhetf2 -------------------------------------------------------------------- void LAPACK_IMPL(zhetf2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO); //-- zhetrd -------------------------------------------------------------------- void LAPACK_IMPL(zhetrd)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zhetrf -------------------------------------------------------------------- void LAPACK_IMPL(zhetrf)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zhetri -------------------------------------------------------------------- void LAPACK_IMPL(zhetri)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zhetri2 ------------------------------------------------------------------- void LAPACK_IMPL(zhetri2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zhetri2x ------------------------------------------------------------------ void LAPACK_IMPL(zhetri2x)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, const INTEGER *NB, INTEGER *INFO); //-- zhetrs -------------------------------------------------------------------- void LAPACK_IMPL(zhetrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zhetrs2 ------------------------------------------------------------------- void LAPACK_IMPL(zhetrs2)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zhfrk --------------------------------------------------------------------- void LAPACK_IMPL(zhfrk)(const char *TRANSR, const char *UPLO, const char *TRANS, const INTEGER *N, const INTEGER *K, const DOUBLE *ALPHA, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *BETA, DOUBLE_COMPLEX *C); //-- zhgeqz -------------------------------------------------------------------- void LAPACK_IMPL(zhgeqz)(const char *JOB, const char *COMPQ, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *H, const INTEGER *LDH, DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO); //-- zhpcon -------------------------------------------------------------------- void LAPACK_IMPL(zhpcon)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zhpev --------------------------------------------------------------------- void LAPACK_IMPL(zhpev)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zhpevd -------------------------------------------------------------------- void LAPACK_IMPL(zhpevd)(const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- zhpevx -------------------------------------------------------------------- void LAPACK_IMPL(zhpevx)(const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- zhpgst -------------------------------------------------------------------- void LAPACK_IMPL(zhpgst)(const INTEGER *ITYPE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *BP, INTEGER *INFO); //-- zhpgv --------------------------------------------------------------------- void LAPACK_IMPL(zhpgv)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *BP, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zhpgvd -------------------------------------------------------------------- void LAPACK_IMPL(zhpgvd)(const INTEGER *ITYPE, const char *JOBZ, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *BP, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- zhpgvx -------------------------------------------------------------------- void LAPACK_IMPL(zhpgvx)(const INTEGER *ITYPE, const char *JOBZ, const char *RANGE, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *BP, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- zhprfs -------------------------------------------------------------------- void LAPACK_IMPL(zhprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *AFP, const INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zhpsv --------------------------------------------------------------------- void LAPACK_IMPL(zhpsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *AP, INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zhpsvx -------------------------------------------------------------------- void LAPACK_IMPL(zhpsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *AFP, INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zhptrd -------------------------------------------------------------------- void LAPACK_IMPL(zhptrd)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *TAU, INTEGER *INFO); //-- zhptrf -------------------------------------------------------------------- void LAPACK_IMPL(zhptrf)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, INTEGER *IPIV, INTEGER *INFO); //-- zhptri -------------------------------------------------------------------- void LAPACK_IMPL(zhptri)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zhptrs -------------------------------------------------------------------- void LAPACK_IMPL(zhptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zhsein -------------------------------------------------------------------- void LAPACK_IMPL(zhsein)(const char *SIDE, const char *EIGSRC, const char *INITV, const LOGICAL *SELECT, const INTEGER *N, const DOUBLE_COMPLEX *H, const INTEGER *LDH, DOUBLE_COMPLEX *W, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IFAILL, INTEGER *IFAILR, INTEGER *INFO); //-- zhseqr -------------------------------------------------------------------- void LAPACK_IMPL(zhseqr)(const char *JOB, const char *COMPZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *H, const INTEGER *LDH, DOUBLE_COMPLEX *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zla_gbamv ----------------------------------------------------------------- void LAPACK_IMPL(zla_gbamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE *ALPHA, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *X, const INTEGER *INCX, const DOUBLE *BETA, DOUBLE *Y, const INTEGER *INCY); //-- zla_gbrcond_c ------------------------------------------------------------- DOUBLE LAPACK_IMPL(zla_gbrcond_c)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const DOUBLE *C, const LOGICAL *CAPPLY, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK); //-- zla_gbrcond_x ------------------------------------------------------------- DOUBLE LAPACK_IMPL(zla_gbrcond_x)(const char *TRANS, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const DOUBLE_COMPLEX *X, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK); //-- zla_gbrfsx_extended ------------------------------------------------------- void LAPACK_IMPL(zla_gbrfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, const INTEGER *IPIV, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const DOUBLE_COMPLEX *RES, const DOUBLE *AYB, const DOUBLE_COMPLEX *DY, const DOUBLE_COMPLEX *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- zla_gbrpvgrw -------------------------------------------------------------- DOUBLE LAPACK_IMPL(zla_gbrpvgrw)(const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const INTEGER *NCOLS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB); //-- zla_geamv ----------------------------------------------------------------- void LAPACK_IMPL(zla_geamv)(const INTEGER *TRANS, const INTEGER *M, const INTEGER *N, const DOUBLE *ALPHA, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *X, const INTEGER *INCX, const DOUBLE *BETA, DOUBLE *Y, const INTEGER *INCY); //-- zla_gercond_c ------------------------------------------------------------- DOUBLE LAPACK_IMPL(zla_gercond_c)(const char *TRANS, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *C, const LOGICAL *CAPPLY, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK); //-- zla_gercond_x ------------------------------------------------------------- DOUBLE LAPACK_IMPL(zla_gercond_x)(const char *TRANS, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE_COMPLEX *X, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK); //-- zla_gerfsx_extended ------------------------------------------------------- void LAPACK_IMPL(zla_gerfsx_extended)(const INTEGER *PREC_TYPE, const INTEGER *TRANS_TYPE, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, const DOUBLE *ERRS_N, const DOUBLE *ERRS_C, const DOUBLE_COMPLEX *RES, const DOUBLE *AYB, const DOUBLE_COMPLEX *DY, const DOUBLE_COMPLEX *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- zla_heamv ----------------------------------------------------------------- void LAPACK_IMPL(zla_heamv)(const INTEGER *UPLO, const INTEGER *N, const DOUBLE *ALPHA, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *X, const INTEGER *INCX, const DOUBLE *BETA, DOUBLE *Y, const INTEGER *INCY); //-- zla_hercond_c ------------------------------------------------------------- DOUBLE LAPACK_IMPL(zla_hercond_c)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *C, const LOGICAL *CAPPLY, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK); //-- zla_hercond_x ------------------------------------------------------------- DOUBLE LAPACK_IMPL(zla_hercond_x)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE_COMPLEX *X, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK); //-- zla_herfsx_extended ------------------------------------------------------- void LAPACK_IMPL(zla_herfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const DOUBLE_COMPLEX *RES, const DOUBLE *AYB, const DOUBLE_COMPLEX *DY, const DOUBLE_COMPLEX *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- zla_herpvgrw -------------------------------------------------------------- DOUBLE LAPACK_IMPL(zla_herpvgrw)(const char *UPLO, const INTEGER *N, const INTEGER *INFO, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *WORK); //-- zla_lin_berr -------------------------------------------------------------- void LAPACK_IMPL(zla_lin_berr)(const INTEGER *N, const INTEGER *NZ, const INTEGER *NRHS, const DOUBLE_COMPLEX *RES, const DOUBLE *AYB, DOUBLE *BERR); //-- zla_porcond_c ------------------------------------------------------------- DOUBLE LAPACK_IMPL(zla_porcond_c)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const DOUBLE *C, const LOGICAL *CAPPLY, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK); //-- zla_porcond_x ------------------------------------------------------------- DOUBLE LAPACK_IMPL(zla_porcond_x)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const DOUBLE_COMPLEX *X, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK); //-- zla_porfsx_extended ------------------------------------------------------- void LAPACK_IMPL(zla_porfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const DOUBLE_COMPLEX *RES, const DOUBLE *AYB, const DOUBLE_COMPLEX *DY, const DOUBLE_COMPLEX *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- zla_porpvgrw -------------------------------------------------------------- DOUBLE LAPACK_IMPL(zla_porpvgrw)(const char *UPLO, const INTEGER *NCOLS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const DOUBLE *WORK); //-- zla_rpvgrw ---------------------------------------------------------------- DOUBLE LAPACK_IMPL(zla_rpvgrw)(const INTEGER *N, const INTEGER *NCOLS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF); //-- zla_syamv ----------------------------------------------------------------- void LAPACK_IMPL(zla_syamv)(const INTEGER *UPLO, const INTEGER *N, const DOUBLE *ALPHA, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *X, const INTEGER *INCX, const DOUBLE *BETA, DOUBLE *Y, const INTEGER *INCY); //-- zla_syrcond_c ------------------------------------------------------------- DOUBLE LAPACK_IMPL(zla_syrcond_c)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *C, const LOGICAL *CAPPLY, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK); //-- zla_syrcond_x ------------------------------------------------------------- DOUBLE LAPACK_IMPL(zla_syrcond_x)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE_COMPLEX *X, INTEGER *INFO, const DOUBLE_COMPLEX *WORK, const DOUBLE *RWORK); //-- zla_syrfsx_extended ------------------------------------------------------- void LAPACK_IMPL(zla_syrfsx_extended)(const INTEGER *PREC_TYPE, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const LOGICAL *COLEQU, const DOUBLE *C, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Y, const INTEGER *LDY, DOUBLE *BERR_OUT, const INTEGER *N_NORMS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const DOUBLE_COMPLEX *RES, const DOUBLE *AYB, const DOUBLE_COMPLEX *DY, const DOUBLE_COMPLEX *Y_TAIL, const DOUBLE *RCOND, const INTEGER *ITHRESH, const DOUBLE *RTHRESH, const DOUBLE *DZ_UB, const LOGICAL *IGNORE_CWISE, INTEGER *INFO); //-- zla_syrpvgrw -------------------------------------------------------------- DOUBLE LAPACK_IMPL(zla_syrpvgrw)(const char *UPLO, const INTEGER *N, const INTEGER *INFO, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE *WORK); //-- zla_wwaddw ---------------------------------------------------------------- void LAPACK_IMPL(zla_wwaddw)(const INTEGER *N, DOUBLE_COMPLEX *X, DOUBLE_COMPLEX *Y, const DOUBLE_COMPLEX *W); //-- zlabrd -------------------------------------------------------------------- void LAPACK_IMPL(zlabrd)(const INTEGER *M, const INTEGER *N, const INTEGER *NB, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *TAUQ, DOUBLE_COMPLEX *TAUP, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE_COMPLEX *Y, const INTEGER *LDY); //-- zlacgv -------------------------------------------------------------------- void LAPACK_IMPL(zlacgv)(const INTEGER *N, DOUBLE_COMPLEX *X, const INTEGER *INCX); //-- zlacn2 -------------------------------------------------------------------- void LAPACK_IMPL(zlacn2)(const INTEGER *N, DOUBLE_COMPLEX *V, DOUBLE_COMPLEX *X, DOUBLE *EST, INTEGER *KASE, INTEGER *ISAVE); //-- zlacon -------------------------------------------------------------------- void LAPACK_IMPL(zlacon)(const INTEGER *N, DOUBLE_COMPLEX *V, DOUBLE_COMPLEX *X, DOUBLE *EST, INTEGER *KASE); //-- zlacp2 -------------------------------------------------------------------- void LAPACK_IMPL(zlacp2)(const char *UPLO, const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB); //-- zlacpy -------------------------------------------------------------------- void LAPACK_IMPL(zlacpy)(const char *UPLO, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB); //-- zlacrm -------------------------------------------------------------------- void LAPACK_IMPL(zlacrm)(const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *B, const INTEGER *LDB, const DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE *RWORK); //-- zlacrt -------------------------------------------------------------------- void LAPACK_IMPL(zlacrt)(const INTEGER *N, DOUBLE_COMPLEX *CX, const INTEGER *INCX, DOUBLE_COMPLEX *CY, const INTEGER *INCY, const DOUBLE_COMPLEX *C, const DOUBLE_COMPLEX *S); //-- zladiv -------------------------------------------------------------------- DOUBLE_COMPLEX LAPACK_IMPL(zladiv)(const DOUBLE_COMPLEX *X, const DOUBLE_COMPLEX *Y); //-- zlaed0 -------------------------------------------------------------------- void LAPACK_IMPL(zlaed0)(const INTEGER *QSIZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *QSTORE, const INTEGER *LDQS, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *INFO); //-- zlaed7 -------------------------------------------------------------------- void LAPACK_IMPL(zlaed7)(const INTEGER *N, const INTEGER *CUTPNT, const INTEGER *QSIZ, const INTEGER *TLVLS, const INTEGER *CURLVL, const INTEGER *CURPBM, DOUBLE *D, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, const DOUBLE *RHO, INTEGER *INDXQ, DOUBLE *QSTORE, INTEGER *QPTR, const INTEGER *PRMPTR, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const DOUBLE *GIVNUM, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *INFO); //-- zlaed8 -------------------------------------------------------------------- void LAPACK_IMPL(zlaed8)(INTEGER *K, const INTEGER *N, const INTEGER *QSIZ, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE *D, DOUBLE *RHO, const INTEGER *CUTPNT, const DOUBLE *Z, DOUBLE *DLAMDA, DOUBLE_COMPLEX *Q2, const INTEGER *LDQ2, DOUBLE *W, INTEGER *INDXP, INTEGER *INDX, const INTEGER *INDXQ, INTEGER *PERM, INTEGER *GIVPTR, INTEGER *GIVCOL, DOUBLE *GIVNUM, INTEGER *INFO); //-- zlaein -------------------------------------------------------------------- void LAPACK_IMPL(zlaein)(const LOGICAL *RIGHTV, const LOGICAL *NOINIT, const INTEGER *N, const DOUBLE_COMPLEX *H, const INTEGER *LDH, const DOUBLE_COMPLEX *W, DOUBLE_COMPLEX *V, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE *RWORK, const DOUBLE *EPS3, const DOUBLE *SMLNUM, INTEGER *INFO); //-- zlaesy -------------------------------------------------------------------- void LAPACK_IMPL(zlaesy)(const DOUBLE_COMPLEX *A, const DOUBLE_COMPLEX *B, const DOUBLE_COMPLEX *C, DOUBLE_COMPLEX *RT1, DOUBLE_COMPLEX *RT2, DOUBLE_COMPLEX *EVSCAL, DOUBLE_COMPLEX *CS1, DOUBLE_COMPLEX *SN1); //-- zlaev2 -------------------------------------------------------------------- void LAPACK_IMPL(zlaev2)(const DOUBLE_COMPLEX *A, const DOUBLE_COMPLEX *B, const DOUBLE_COMPLEX *C, DOUBLE *RT1, DOUBLE *RT2, DOUBLE *CS1, DOUBLE_COMPLEX *SN1); //-- zlag2c -------------------------------------------------------------------- void LAPACK_IMPL(zlag2c)(const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *SA, const INTEGER *LDSA, INTEGER *INFO); //-- zlags2 -------------------------------------------------------------------- void LAPACK_IMPL(zlags2)(const LOGICAL *UPPER, const DOUBLE *A1, const DOUBLE_COMPLEX *A2, const DOUBLE *A3, const DOUBLE *B1, const DOUBLE_COMPLEX *B2, const DOUBLE *B3, DOUBLE *CSU, DOUBLE_COMPLEX *SNU, DOUBLE *CSV, DOUBLE_COMPLEX *SNV, DOUBLE *CSQ, DOUBLE_COMPLEX *SNQ); //-- zlagtm -------------------------------------------------------------------- void LAPACK_IMPL(zlagtm)(const char *TRANS, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *ALPHA, const DOUBLE_COMPLEX *DL, const DOUBLE_COMPLEX *D, const DOUBLE_COMPLEX *DU, const DOUBLE_COMPLEX *X, const INTEGER *LDX, const DOUBLE *BETA, DOUBLE_COMPLEX *B, const INTEGER *LDB); //-- zlahef -------------------------------------------------------------------- void LAPACK_IMPL(zlahef)(const char *UPLO, const INTEGER *N, const INTEGER *NB, INTEGER *KB, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE_COMPLEX *W, const INTEGER *LDW, INTEGER *INFO); //-- zlahqr -------------------------------------------------------------------- void LAPACK_IMPL(zlahqr)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *H, const INTEGER *LDH, DOUBLE_COMPLEX *W, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *INFO); //-- zlahr2 -------------------------------------------------------------------- void LAPACK_IMPL(zlahr2)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *Y, const INTEGER *LDY); //-- zlahrd -------------------------------------------------------------------- void LAPACK_IMPL(zlahrd)(const INTEGER *N, const INTEGER *K, const INTEGER *NB, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *Y, const INTEGER *LDY); //-- zlaic1 -------------------------------------------------------------------- void LAPACK_IMPL(zlaic1)(const INTEGER *JOB, const INTEGER *J, const DOUBLE_COMPLEX *X, const DOUBLE *SEST, const DOUBLE_COMPLEX *W, const DOUBLE_COMPLEX *GAMMA, DOUBLE *SESTPR, DOUBLE_COMPLEX *S, DOUBLE_COMPLEX *C); //-- zlals0 -------------------------------------------------------------------- void LAPACK_IMPL(zlals0)(const INTEGER *ICOMPQ, const INTEGER *NL, const INTEGER *NR, const INTEGER *SQRE, const INTEGER *NRHS, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *BX, const INTEGER *LDBX, const INTEGER *PERM, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const DOUBLE *GIVNUM, const INTEGER *LDGNUM, const DOUBLE *POLES, const DOUBLE *DIFL, const DOUBLE *DIFR, const DOUBLE *Z, const INTEGER *K, const DOUBLE *C, const DOUBLE *S, DOUBLE *RWORK, INTEGER *INFO); //-- zlalsa -------------------------------------------------------------------- void LAPACK_IMPL(zlalsa)(const INTEGER *ICOMPQ, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *BX, const INTEGER *LDBX, const DOUBLE *U, const INTEGER *LDU, const DOUBLE *VT, const INTEGER *K, const DOUBLE *DIFL, const DOUBLE *DIFR, const DOUBLE *Z, const DOUBLE *POLES, const INTEGER *GIVPTR, const INTEGER *GIVCOL, const INTEGER *LDGCOL, const INTEGER *PERM, const DOUBLE *GIVNUM, const DOUBLE *C, const DOUBLE *S, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *INFO); //-- zlalsd -------------------------------------------------------------------- void LAPACK_IMPL(zlalsd)(const char *UPLO, const INTEGER *SMLSIZ, const INTEGER *N, const INTEGER *NRHS, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE *RCOND, INTEGER *RANK, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *IWORK, INTEGER *INFO); //-- zlangb -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(zlangb)(const char *NORM, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *WORK); //-- zlange -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(zlange)(const char *NORM, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *WORK); //-- zlangt -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(zlangt)(const char *NORM, const INTEGER *N, const DOUBLE_COMPLEX *DL, const DOUBLE_COMPLEX *D, const DOUBLE_COMPLEX *DU); //-- zlanhb -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(zlanhb)(const char *NORM, const char *UPLO, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *WORK); //-- zlanhe -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(zlanhe)(const char *NORM, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *WORK); //-- zlanhf -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(zlanhf)(const char *NORM, const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, DOUBLE *WORK); //-- zlanhp -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(zlanhp)(const char *NORM, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE *WORK); //-- zlanhs -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(zlanhs)(const char *NORM, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *WORK); //-- zlanht -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(zlanht)(const char *NORM, const INTEGER *N, const DOUBLE *D, const DOUBLE_COMPLEX *E); //-- zlansb -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(zlansb)(const char *NORM, const char *UPLO, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *WORK); //-- zlansp -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(zlansp)(const char *NORM, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE *WORK); //-- zlansy -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(zlansy)(const char *NORM, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *WORK); //-- zlantb -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(zlantb)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *WORK); //-- zlantp -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(zlantp)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE *WORK); //-- zlantr -------------------------------------------------------------------- DOUBLE LAPACK_IMPL(zlantr)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *WORK); //-- zlapll -------------------------------------------------------------------- void LAPACK_IMPL(zlapll)(const INTEGER *N, DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE_COMPLEX *Y, const INTEGER *INCY, DOUBLE *SSMIN); //-- zlapmr -------------------------------------------------------------------- void LAPACK_IMPL(zlapmr)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *X, const INTEGER *LDX, INTEGER *K); //-- zlapmt -------------------------------------------------------------------- void LAPACK_IMPL(zlapmt)(const LOGICAL *FORWRD, const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *X, const INTEGER *LDX, INTEGER *K); //-- zlaqgb -------------------------------------------------------------------- void LAPACK_IMPL(zlaqgb)(const INTEGER *M, const INTEGER *N, const INTEGER *KL, const INTEGER *KU, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE *R, const DOUBLE *C, const DOUBLE *ROWCND, const DOUBLE *COLCND, const DOUBLE *AMAX, char *EQUED); //-- zlaqge -------------------------------------------------------------------- void LAPACK_IMPL(zlaqge)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *R, const DOUBLE *C, const DOUBLE *ROWCND, const DOUBLE *COLCND, const DOUBLE *AMAX, char *EQUED); //-- zlaqhb -------------------------------------------------------------------- void LAPACK_IMPL(zlaqhb)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED); //-- zlaqhe -------------------------------------------------------------------- void LAPACK_IMPL(zlaqhe)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED); //-- zlaqhp -------------------------------------------------------------------- void LAPACK_IMPL(zlaqhp)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED); //-- zlaqp2 -------------------------------------------------------------------- void LAPACK_IMPL(zlaqp2)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE_COMPLEX *TAU, DOUBLE *VN1, DOUBLE *VN2, DOUBLE_COMPLEX *WORK); //-- zlaqps -------------------------------------------------------------------- void LAPACK_IMPL(zlaqps)(const INTEGER *M, const INTEGER *N, const INTEGER *OFFSET, const INTEGER *NB, INTEGER *KB, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *JPVT, DOUBLE_COMPLEX *TAU, DOUBLE *VN1, DOUBLE *VN2, DOUBLE_COMPLEX *AUXV, DOUBLE_COMPLEX *F, const INTEGER *LDF); //-- zlaqr0 -------------------------------------------------------------------- void LAPACK_IMPL(zlaqr0)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *H, const INTEGER *LDH, DOUBLE_COMPLEX *W, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zlaqr1 -------------------------------------------------------------------- void LAPACK_IMPL(zlaqr1)(const INTEGER *N, const DOUBLE_COMPLEX *H, const INTEGER *LDH, const DOUBLE_COMPLEX *S1, const DOUBLE_COMPLEX *S2, DOUBLE_COMPLEX *V); //-- zlaqr2 -------------------------------------------------------------------- void LAPACK_IMPL(zlaqr2)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, DOUBLE_COMPLEX *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, DOUBLE_COMPLEX *SH, DOUBLE_COMPLEX *V, const INTEGER *LDV, const INTEGER *NH, DOUBLE_COMPLEX *T, const INTEGER *LDT, const INTEGER *NV, DOUBLE_COMPLEX *WV, const INTEGER *LDWV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK); //-- zlaqr3 -------------------------------------------------------------------- void LAPACK_IMPL(zlaqr3)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NW, DOUBLE_COMPLEX *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *NS, INTEGER *ND, DOUBLE_COMPLEX *SH, DOUBLE_COMPLEX *V, const INTEGER *LDV, const INTEGER *NH, DOUBLE_COMPLEX *T, const INTEGER *LDT, const INTEGER *NV, DOUBLE_COMPLEX *WV, const INTEGER *LDWV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK); //-- zlaqr4 -------------------------------------------------------------------- void LAPACK_IMPL(zlaqr4)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *H, const INTEGER *LDH, DOUBLE_COMPLEX *W, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zlaqr5 -------------------------------------------------------------------- void LAPACK_IMPL(zlaqr5)(const LOGICAL *WANTT, const LOGICAL *WANTZ, const INTEGER *KACC22, const INTEGER *N, const INTEGER *KTOP, const INTEGER *KBOT, const INTEGER *NSHFTS, DOUBLE_COMPLEX *S, DOUBLE_COMPLEX *H, const INTEGER *LDH, const INTEGER *ILOZ, const INTEGER *IHIZ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *V, const INTEGER *LDV, DOUBLE_COMPLEX *U, const INTEGER *LDU, const INTEGER *NV, DOUBLE_COMPLEX *WV, const INTEGER *LDWV, const INTEGER *NH, DOUBLE_COMPLEX *WH, const INTEGER *LDWH); //-- zlaqsb -------------------------------------------------------------------- void LAPACK_IMPL(zlaqsb)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED); //-- zlaqsp -------------------------------------------------------------------- void LAPACK_IMPL(zlaqsp)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED); //-- zlaqsy -------------------------------------------------------------------- void LAPACK_IMPL(zlaqsy)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *S, const DOUBLE *SCOND, const DOUBLE *AMAX, char *EQUED); //-- zlar1v -------------------------------------------------------------------- void LAPACK_IMPL(zlar1v)(const INTEGER *N, const INTEGER *B1, const INTEGER *BN, const DOUBLE *LAMBDA, const DOUBLE *D, const DOUBLE *L, const DOUBLE *LD, const DOUBLE *LLD, const DOUBLE *PIVMIN, const DOUBLE *GAPTOL, DOUBLE_COMPLEX *Z, const LOGICAL *WANTNC, INTEGER *NEGCNT, DOUBLE *ZTZ, DOUBLE *MINGMA, INTEGER *R, INTEGER *ISUPPZ, DOUBLE *NRMINV, DOUBLE *RESID, DOUBLE *RQCORR, DOUBLE *WORK); //-- zlar2v -------------------------------------------------------------------- void LAPACK_IMPL(zlar2v)(const INTEGER *N, DOUBLE_COMPLEX *X, DOUBLE_COMPLEX *Y, DOUBLE_COMPLEX *Z, const INTEGER *INCX, const DOUBLE *C, const DOUBLE_COMPLEX *S, const INTEGER *INCC); //-- zlarcm -------------------------------------------------------------------- void LAPACK_IMPL(zlarcm)(const INTEGER *M, const INTEGER *N, const DOUBLE *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE *RWORK); //-- zlarf --------------------------------------------------------------------- void LAPACK_IMPL(zlarf)(const char *SIDE, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *V, const INTEGER *INCV, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK); //-- zlarfb -------------------------------------------------------------------- void LAPACK_IMPL(zlarfb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *V, const INTEGER *LDV, const DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LDWORK); //-- zlarfg -------------------------------------------------------------------- void LAPACK_IMPL(zlarfg)(const INTEGER *N, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE_COMPLEX *TAU); //-- zlarfgp ------------------------------------------------------------------- void LAPACK_IMPL(zlarfgp)(const INTEGER *N, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE_COMPLEX *TAU); //-- zlarft -------------------------------------------------------------------- void LAPACK_IMPL(zlarft)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *V, const INTEGER *LDV, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *T, const INTEGER *LDT); //-- zlarfx -------------------------------------------------------------------- void LAPACK_IMPL(zlarfx)(const char *SIDE, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *V, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK); //-- zlargv -------------------------------------------------------------------- void LAPACK_IMPL(zlargv)(const INTEGER *N, DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE_COMPLEX *Y, const INTEGER *INCY, DOUBLE *C, const INTEGER *INCC); //-- zlarnv -------------------------------------------------------------------- void LAPACK_IMPL(zlarnv)(const INTEGER *IDIST, INTEGER *ISEED, const INTEGER *N, DOUBLE_COMPLEX *X); //-- zlarrv -------------------------------------------------------------------- void LAPACK_IMPL(zlarrv)(const INTEGER *N, const DOUBLE *VL, const DOUBLE *VU, DOUBLE *D, DOUBLE *L, const DOUBLE *PIVMIN, const INTEGER *ISPLIT, const INTEGER *M, const INTEGER *DOL, const INTEGER *DOU, const DOUBLE *MINRGP, const DOUBLE *RTOL1, const DOUBLE *RTOL2, DOUBLE *W, DOUBLE *WERR, DOUBLE *WGAP, const INTEGER *IBLOCK, const INTEGER *INDEXW, const DOUBLE *GERS, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *INFO); //-- zlarscl2 ------------------------------------------------------------------ void LAPACK_IMPL(zlarscl2)(const INTEGER *M, const INTEGER *N, const DOUBLE *D, DOUBLE_COMPLEX *X, const INTEGER *LDX); //-- zlartg -------------------------------------------------------------------- void LAPACK_IMPL(zlartg)(const DOUBLE_COMPLEX *F, const DOUBLE_COMPLEX *G, DOUBLE *CS, DOUBLE_COMPLEX *SN, DOUBLE_COMPLEX *R); //-- zlartv -------------------------------------------------------------------- void LAPACK_IMPL(zlartv)(const INTEGER *N, DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE_COMPLEX *Y, const INTEGER *INCY, const DOUBLE *C, const DOUBLE_COMPLEX *S, const INTEGER *INCC); //-- zlarz --------------------------------------------------------------------- void LAPACK_IMPL(zlarz)(const char *SIDE, const INTEGER *M, const INTEGER *N, const INTEGER *L, const DOUBLE_COMPLEX *V, const INTEGER *INCV, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK); //-- zlarzb -------------------------------------------------------------------- void LAPACK_IMPL(zlarzb)(const char *SIDE, const char *TRANS, const char *DIRECT, const char *STOREV, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const DOUBLE_COMPLEX *V, const INTEGER *LDV, const DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LDWORK); //-- zlarzt -------------------------------------------------------------------- void LAPACK_IMPL(zlarzt)(const char *DIRECT, const char *STOREV, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *V, const INTEGER *LDV, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *T, const INTEGER *LDT); //-- zlascl -------------------------------------------------------------------- void LAPACK_IMPL(zlascl)(const char *TYPE, const INTEGER *KL, const INTEGER *KU, const DOUBLE *CFROM, const DOUBLE *CTO, const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- zlascl2 ------------------------------------------------------------------- void LAPACK_IMPL(zlascl2)(const INTEGER *M, const INTEGER *N, const DOUBLE *D, DOUBLE_COMPLEX *X, const INTEGER *LDX); //-- zlaset -------------------------------------------------------------------- void LAPACK_IMPL(zlaset)(const char *UPLO, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *ALPHA, const DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *A, const INTEGER *LDA); //-- zlasr --------------------------------------------------------------------- void LAPACK_IMPL(zlasr)(const char *SIDE, const char *PIVOT, const char *DIRECT, const INTEGER *M, const INTEGER *N, const DOUBLE *C, const DOUBLE *S, DOUBLE_COMPLEX *A, const INTEGER *LDA); //-- zlassq -------------------------------------------------------------------- void LAPACK_IMPL(zlassq)(const INTEGER *N, const DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE *SCALE, DOUBLE *SUMSQ); //-- zlaswp -------------------------------------------------------------------- void LAPACK_IMPL(zlaswp)(const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *K1, const INTEGER *K2, const INTEGER *IPIV, const INTEGER *INCX); //-- zlasyf -------------------------------------------------------------------- void LAPACK_IMPL(zlasyf)(const char *UPLO, const INTEGER *N, const INTEGER *NB, INTEGER *KB, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE_COMPLEX *W, const INTEGER *LDW, INTEGER *INFO); //-- zlat2c -------------------------------------------------------------------- void LAPACK_IMPL(zlat2c)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, FLOAT_COMPLEX *SA, const INTEGER *LDSA, INTEGER *INFO); //-- zlatbs -------------------------------------------------------------------- void LAPACK_IMPL(zlatbs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const INTEGER *KD, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *X, DOUBLE *SCALE, DOUBLE *CNORM, INTEGER *INFO); //-- zlatdf -------------------------------------------------------------------- void LAPACK_IMPL(zlatdf)(const INTEGER *IJOB, const INTEGER *N, const DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *RHS, DOUBLE *RDSUM, DOUBLE *RDSCAL, const INTEGER *IPIV, const INTEGER *JPIV); //-- zlatps -------------------------------------------------------------------- void LAPACK_IMPL(zlatps)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *X, DOUBLE *SCALE, DOUBLE *CNORM, INTEGER *INFO); //-- zlatrd -------------------------------------------------------------------- void LAPACK_IMPL(zlatrd)(const char *UPLO, const INTEGER *N, const INTEGER *NB, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *E, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *W, const INTEGER *LDW); //-- zlatrs -------------------------------------------------------------------- void LAPACK_IMPL(zlatrs)(const char *UPLO, const char *TRANS, const char *DIAG, const char *NORMIN, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *X, DOUBLE *SCALE, DOUBLE *CNORM, INTEGER *INFO); //-- zlatrz -------------------------------------------------------------------- void LAPACK_IMPL(zlatrz)(const INTEGER *M, const INTEGER *N, const INTEGER *L, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK); //-- zlatzm -------------------------------------------------------------------- void LAPACK_IMPL(zlatzm)(const char *SIDE, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *V, const INTEGER *INCV, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C1, DOUBLE_COMPLEX *C2, const INTEGER *LDC, DOUBLE_COMPLEX *WORK); //-- zlauu2 -------------------------------------------------------------------- void LAPACK_IMPL(zlauu2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- zlauum -------------------------------------------------------------------- void LAPACK_IMPL(zlauum)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- zpbcon -------------------------------------------------------------------- void LAPACK_IMPL(zpbcon)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zpbequ -------------------------------------------------------------------- void LAPACK_IMPL(zpbequ)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO); //-- zpbrfs -------------------------------------------------------------------- void LAPACK_IMPL(zpbrfs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zpbstf -------------------------------------------------------------------- void LAPACK_IMPL(zpbstf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, INTEGER *INFO); //-- zpbsv --------------------------------------------------------------------- void LAPACK_IMPL(zpbsv)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zpbsvx -------------------------------------------------------------------- void LAPACK_IMPL(zpbsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *AFB, const INTEGER *LDAFB, char *EQUED, DOUBLE *S, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zpbtf2 -------------------------------------------------------------------- void LAPACK_IMPL(zpbtf2)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, INTEGER *INFO); //-- zpbtrf -------------------------------------------------------------------- void LAPACK_IMPL(zpbtrf)(const char *UPLO, const INTEGER *N, const INTEGER *KD, DOUBLE_COMPLEX *AB, const INTEGER *LDAB, INTEGER *INFO); //-- zpbtrs -------------------------------------------------------------------- void LAPACK_IMPL(zpbtrs)(const char *UPLO, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zpftrf -------------------------------------------------------------------- void LAPACK_IMPL(zpftrf)(const char *TRANSR, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, INTEGER *INFO); //-- zpftri -------------------------------------------------------------------- void LAPACK_IMPL(zpftri)(const char *TRANSR, const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, INTEGER *INFO); //-- zpftrs -------------------------------------------------------------------- void LAPACK_IMPL(zpftrs)(const char *TRANSR, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zpocon -------------------------------------------------------------------- void LAPACK_IMPL(zpocon)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zpoequ -------------------------------------------------------------------- void LAPACK_IMPL(zpoequ)(const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO); //-- zpoequb ------------------------------------------------------------------- void LAPACK_IMPL(zpoequb)(const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO); //-- zporfs -------------------------------------------------------------------- void LAPACK_IMPL(zporfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zporfsx ------------------------------------------------------------------- void LAPACK_IMPL(zporfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, DOUBLE *S, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zposv --------------------------------------------------------------------- void LAPACK_IMPL(zposv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zposvx -------------------------------------------------------------------- void LAPACK_IMPL(zposvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, char *EQUED, DOUBLE *S, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zposvxx ------------------------------------------------------------------- void LAPACK_IMPL(zposvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, char *EQUED, DOUBLE *S, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zpotf2 -------------------------------------------------------------------- void LAPACK_IMPL(zpotf2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- zpotrf -------------------------------------------------------------------- void LAPACK_IMPL(zpotrf)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- zpotri -------------------------------------------------------------------- void LAPACK_IMPL(zpotri)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- zpotrs -------------------------------------------------------------------- void LAPACK_IMPL(zpotrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zppcon -------------------------------------------------------------------- void LAPACK_IMPL(zppcon)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zppequ -------------------------------------------------------------------- void LAPACK_IMPL(zppequ)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, INTEGER *INFO); //-- zpprfs -------------------------------------------------------------------- void LAPACK_IMPL(zpprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *AFP, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zppsv --------------------------------------------------------------------- void LAPACK_IMPL(zppsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zppsvx -------------------------------------------------------------------- void LAPACK_IMPL(zppsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *AFP, char *EQUED, DOUBLE *S, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zpptrf -------------------------------------------------------------------- void LAPACK_IMPL(zpptrf)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, INTEGER *INFO); //-- zpptri -------------------------------------------------------------------- void LAPACK_IMPL(zpptri)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, INTEGER *INFO); //-- zpptrs -------------------------------------------------------------------- void LAPACK_IMPL(zpptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zpstf2 -------------------------------------------------------------------- void LAPACK_IMPL(zpstf2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const DOUBLE *TOL, DOUBLE *WORK, INTEGER *INFO); //-- zpstrf -------------------------------------------------------------------- void LAPACK_IMPL(zpstrf)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *PIV, INTEGER *RANK, const DOUBLE *TOL, DOUBLE *WORK, INTEGER *INFO); //-- zptcon -------------------------------------------------------------------- void LAPACK_IMPL(zptcon)(const INTEGER *N, const DOUBLE *D, const DOUBLE_COMPLEX *E, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE *RWORK, INTEGER *INFO); //-- zpteqr -------------------------------------------------------------------- void LAPACK_IMPL(zpteqr)(const char *COMPZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO); //-- zptrfs -------------------------------------------------------------------- void LAPACK_IMPL(zptrfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE_COMPLEX *E, const DOUBLE *DF, const DOUBLE_COMPLEX *EF, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zptsv --------------------------------------------------------------------- void LAPACK_IMPL(zptsv)(const INTEGER *N, const INTEGER *NRHS, DOUBLE *D, DOUBLE_COMPLEX *E, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zptsvx -------------------------------------------------------------------- void LAPACK_IMPL(zptsvx)(const char *FACT, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE_COMPLEX *E, DOUBLE *DF, DOUBLE_COMPLEX *EF, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zpttrf -------------------------------------------------------------------- void LAPACK_IMPL(zpttrf)(const INTEGER *N, DOUBLE *D, DOUBLE_COMPLEX *E, INTEGER *INFO); //-- zpttrs -------------------------------------------------------------------- void LAPACK_IMPL(zpttrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE_COMPLEX *E, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zptts2 -------------------------------------------------------------------- void LAPACK_IMPL(zptts2)(const INTEGER *IUPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE *D, const DOUBLE_COMPLEX *E, DOUBLE_COMPLEX *B, const INTEGER *LDB); //-- zrot ---------------------------------------------------------------------- void LAPACK_IMPL(zrot)(const INTEGER *N, DOUBLE_COMPLEX *CX, const INTEGER *INCX, DOUBLE_COMPLEX *CY, const INTEGER *INCY, const DOUBLE *C, const DOUBLE_COMPLEX *S); //-- zspcon -------------------------------------------------------------------- void LAPACK_IMPL(zspcon)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zspmv --------------------------------------------------------------------- void LAPACK_IMPL(zspmv)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *ALPHA, const DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *X, const INTEGER *INCX, const DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *Y, const INTEGER *INCY); //-- zspr ---------------------------------------------------------------------- void LAPACK_IMPL(zspr)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *ALPHA, const DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE_COMPLEX *AP); //-- zsprfs -------------------------------------------------------------------- void LAPACK_IMPL(zsprfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *AFP, const INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zspsv --------------------------------------------------------------------- void LAPACK_IMPL(zspsv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *AP, INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zspsvx -------------------------------------------------------------------- void LAPACK_IMPL(zspsvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *AFP, INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zsptrf -------------------------------------------------------------------- void LAPACK_IMPL(zsptrf)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, INTEGER *IPIV, INTEGER *INFO); //-- zsptri -------------------------------------------------------------------- void LAPACK_IMPL(zsptri)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *AP, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zsptrs -------------------------------------------------------------------- void LAPACK_IMPL(zsptrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zstedc -------------------------------------------------------------------- void LAPACK_IMPL(zstedc)(const char *COMPZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- zstegr -------------------------------------------------------------------- void LAPACK_IMPL(zstegr)(const char *JOBZ, const char *RANGE, const INTEGER *N, DOUBLE *D, DOUBLE *E, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, const DOUBLE *ABSTOL, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *ISUPPZ, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- zstein -------------------------------------------------------------------- void LAPACK_IMPL(zstein)(const INTEGER *N, const DOUBLE *D, const DOUBLE *E, const INTEGER *M, const DOUBLE *W, const INTEGER *IBLOCK, const INTEGER *ISPLIT, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *IWORK, INTEGER *IFAIL, INTEGER *INFO); //-- zstemr -------------------------------------------------------------------- void LAPACK_IMPL(zstemr)(const char *JOBZ, const char *RANGE, const INTEGER *N, DOUBLE *D, DOUBLE *E, const DOUBLE *VL, const DOUBLE *VU, const INTEGER *IL, const INTEGER *IU, INTEGER *M, DOUBLE *W, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, const INTEGER *NZC, INTEGER *ISUPPZ, LOGICAL *TRYRAC, DOUBLE *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- zsteqr -------------------------------------------------------------------- void LAPACK_IMPL(zsteqr)(const char *COMPZ, const INTEGER *N, DOUBLE *D, DOUBLE *E, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, DOUBLE *WORK, INTEGER *INFO); //-- zsycon -------------------------------------------------------------------- void LAPACK_IMPL(zsycon)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, const DOUBLE *ANORM, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zsyconv ------------------------------------------------------------------- void LAPACK_IMPL(zsyconv)(const char *UPLO, const char *WAY, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zsyequb ------------------------------------------------------------------- void LAPACK_IMPL(zsyequb)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *S, DOUBLE *SCOND, DOUBLE *AMAX, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zsymv --------------------------------------------------------------------- void LAPACK_IMPL(zsymv)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *ALPHA, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *X, const INTEGER *INCX, const DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *Y, const INTEGER *INCY); //-- zsyr ---------------------------------------------------------------------- void LAPACK_IMPL(zsyr)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *ALPHA, const DOUBLE_COMPLEX *X, const INTEGER *INCX, DOUBLE_COMPLEX *A, const INTEGER *LDA); //-- zsyrfs -------------------------------------------------------------------- void LAPACK_IMPL(zsyrfs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zsyrfsx ------------------------------------------------------------------- void LAPACK_IMPL(zsyrfsx)(const char *UPLO, const char *EQUED, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *AF, const INTEGER *LDAF, const INTEGER *IPIV, DOUBLE *S, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zsysv --------------------------------------------------------------------- void LAPACK_IMPL(zsysv)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zsysvx -------------------------------------------------------------------- void LAPACK_IMPL(zsysvx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, INTEGER *INFO); //-- zsysvxx ------------------------------------------------------------------- void LAPACK_IMPL(zsysvxx)(const char *FACT, const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AF, const INTEGER *LDAF, INTEGER *IPIV, char *EQUED, DOUBLE *S, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *RCOND, DOUBLE *RPVGRW, DOUBLE *BERR, const INTEGER *N_ERR_BNDS, DOUBLE *ERR_BNDS_NORM, DOUBLE *ERR_BNDS_COMP, const INTEGER *NPARAMS, DOUBLE *PARAMS, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- zsyswapr ------------------------------------------------------------------ void LAPACK_IMPL(zsyswapr)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *I1, const INTEGER *I2); //-- zsytf2 -------------------------------------------------------------------- void LAPACK_IMPL(zsytf2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, INTEGER *INFO); //-- zsytrf -------------------------------------------------------------------- void LAPACK_IMPL(zsytrf)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *IPIV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zsytri -------------------------------------------------------------------- void LAPACK_IMPL(zsytri)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zsytri2 ------------------------------------------------------------------- void LAPACK_IMPL(zsytri2)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zsytri2x ------------------------------------------------------------------ void LAPACK_IMPL(zsytri2x)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *WORK, const INTEGER *NB, INTEGER *INFO); //-- zsytrs -------------------------------------------------------------------- void LAPACK_IMPL(zsytrs)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- zsytrs2 ------------------------------------------------------------------- void LAPACK_IMPL(zsytrs2)(const char *UPLO, const INTEGER *N, const INTEGER *NRHS, DOUBLE_COMPLEX *A, const INTEGER *LDA, const INTEGER *IPIV, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- ztbcon -------------------------------------------------------------------- void LAPACK_IMPL(ztbcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const INTEGER *KD, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- ztbrfs -------------------------------------------------------------------- void LAPACK_IMPL(ztbrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, const DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- ztbtrs -------------------------------------------------------------------- void LAPACK_IMPL(ztbtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *KD, const INTEGER *NRHS, const DOUBLE_COMPLEX *AB, const INTEGER *LDAB, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- ztfsm --------------------------------------------------------------------- void LAPACK_IMPL(ztfsm)(const char *TRANSR, const char *SIDE, const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *ALPHA, const DOUBLE_COMPLEX *A, DOUBLE_COMPLEX *B, const INTEGER *LDB); //-- ztftri -------------------------------------------------------------------- void LAPACK_IMPL(ztftri)(const char *TRANSR, const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE_COMPLEX *A, INTEGER *INFO); //-- ztfttp -------------------------------------------------------------------- void LAPACK_IMPL(ztfttp)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *ARF, DOUBLE_COMPLEX *AP, INTEGER *INFO); //-- ztfttr -------------------------------------------------------------------- void LAPACK_IMPL(ztfttr)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *ARF, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- ztgevc -------------------------------------------------------------------- void LAPACK_IMPL(ztgevc)(const char *SIDE, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const DOUBLE_COMPLEX *S, const INTEGER *LDS, const DOUBLE_COMPLEX *P, const INTEGER *LDP, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- ztgex2 -------------------------------------------------------------------- void LAPACK_IMPL(ztgex2)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, const INTEGER *J1, INTEGER *INFO); //-- ztgexc -------------------------------------------------------------------- void LAPACK_IMPL(ztgexc)(const LOGICAL *WANTQ, const LOGICAL *WANTZ, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, const INTEGER *IFST, INTEGER *ILST, INTEGER *INFO); //-- ztgsen -------------------------------------------------------------------- void LAPACK_IMPL(ztgsen)(const INTEGER *IJOB, const LOGICAL *WANTQ, const LOGICAL *WANTZ, const LOGICAL *SELECT, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *ALPHA, DOUBLE_COMPLEX *BETA, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *Z, const INTEGER *LDZ, INTEGER *M, DOUBLE *PL, DOUBLE *PR, DOUBLE *DIF, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *IWORK, const INTEGER *LIWORK, INTEGER *INFO); //-- ztgsja -------------------------------------------------------------------- void LAPACK_IMPL(ztgsja)(const char *JOBU, const char *JOBV, const char *JOBQ, const INTEGER *M, const INTEGER *P, const INTEGER *N, const INTEGER *K, const INTEGER *L, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE *TOLA, const DOUBLE *TOLB, DOUBLE *ALPHA, DOUBLE *BETA, DOUBLE_COMPLEX *U, const INTEGER *LDU, DOUBLE_COMPLEX *V, const INTEGER *LDV, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *WORK, INTEGER *NCYCLE, INTEGER *INFO); //-- ztgsna -------------------------------------------------------------------- void LAPACK_IMPL(ztgsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE_COMPLEX *VL, const INTEGER *LDVL, const DOUBLE_COMPLEX *VR, const INTEGER *LDVR, DOUBLE *S, DOUBLE *DIF, const INTEGER *MM, INTEGER *M, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- ztgsy2 -------------------------------------------------------------------- void LAPACK_IMPL(ztgsy2)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *C, const INTEGER *LDC, const DOUBLE_COMPLEX *D, const INTEGER *LDD, const DOUBLE_COMPLEX *E, const INTEGER *LDE, DOUBLE_COMPLEX *F, const INTEGER *LDF, DOUBLE *SCALE, DOUBLE *RDSUM, DOUBLE *RDSCAL, INTEGER *INFO); //-- ztgsyl -------------------------------------------------------------------- void LAPACK_IMPL(ztgsyl)(const char *TRANS, const INTEGER *IJOB, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *C, const INTEGER *LDC, const DOUBLE_COMPLEX *D, const INTEGER *LDD, const DOUBLE_COMPLEX *E, const INTEGER *LDE, DOUBLE_COMPLEX *F, const INTEGER *LDF, DOUBLE *SCALE, DOUBLE *DIF, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *IWORK, INTEGER *INFO); //-- ztpcon -------------------------------------------------------------------- void LAPACK_IMPL(ztpcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- ztprfs -------------------------------------------------------------------- void LAPACK_IMPL(ztprfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- ztptri -------------------------------------------------------------------- void LAPACK_IMPL(ztptri)(const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE_COMPLEX *AP, INTEGER *INFO); //-- ztptrs -------------------------------------------------------------------- void LAPACK_IMPL(ztptrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- ztpttf -------------------------------------------------------------------- void LAPACK_IMPL(ztpttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *ARF, INTEGER *INFO); //-- ztpttr -------------------------------------------------------------------- void LAPACK_IMPL(ztpttr)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- ztrcon -------------------------------------------------------------------- void LAPACK_IMPL(ztrcon)(const char *NORM, const char *UPLO, const char *DIAG, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE *RCOND, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- ztrevc -------------------------------------------------------------------- void LAPACK_IMPL(ztrevc)(const char *SIDE, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *VL, const INTEGER *LDVL, DOUBLE_COMPLEX *VR, const INTEGER *LDVR, const INTEGER *MM, INTEGER *M, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- ztrexc -------------------------------------------------------------------- void LAPACK_IMPL(ztrexc)(const char *COMPQ, const INTEGER *N, DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, const INTEGER *IFST, const INTEGER *ILST, INTEGER *INFO); //-- ztrrfs -------------------------------------------------------------------- void LAPACK_IMPL(ztrrfs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, const DOUBLE_COMPLEX *X, const INTEGER *LDX, DOUBLE *FERR, DOUBLE *BERR, DOUBLE_COMPLEX *WORK, DOUBLE *RWORK, INTEGER *INFO); //-- ztrsen -------------------------------------------------------------------- void LAPACK_IMPL(ztrsen)(const char *JOB, const char *COMPQ, const LOGICAL *SELECT, const INTEGER *N, DOUBLE_COMPLEX *T, const INTEGER *LDT, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *W, INTEGER *M, DOUBLE *S, DOUBLE *SEP, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- ztrsna -------------------------------------------------------------------- void LAPACK_IMPL(ztrsna)(const char *JOB, const char *HOWMNY, const LOGICAL *SELECT, const INTEGER *N, const DOUBLE_COMPLEX *T, const INTEGER *LDT, const DOUBLE_COMPLEX *VL, const INTEGER *LDVL, const DOUBLE_COMPLEX *VR, const INTEGER *LDVR, DOUBLE *S, DOUBLE *SEP, const INTEGER *MM, INTEGER *M, DOUBLE_COMPLEX *WORK, const INTEGER *LDWORK, DOUBLE *RWORK, INTEGER *INFO); //-- ztrsyl -------------------------------------------------------------------- void LAPACK_IMPL(ztrsyl)(const char *TRANA, const char *TRANB, const INTEGER *ISGN, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *B, const INTEGER *LDB, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE *SCALE, INTEGER *INFO); //-- ztrti2 -------------------------------------------------------------------- void LAPACK_IMPL(ztrti2)(const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- ztrtri -------------------------------------------------------------------- void LAPACK_IMPL(ztrtri)(const char *UPLO, const char *DIAG, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, INTEGER *INFO); //-- ztrtrs -------------------------------------------------------------------- void LAPACK_IMPL(ztrtrs)(const char *UPLO, const char *TRANS, const char *DIAG, const INTEGER *N, const INTEGER *NRHS, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *B, const INTEGER *LDB, INTEGER *INFO); //-- ztrttf -------------------------------------------------------------------- void LAPACK_IMPL(ztrttf)(const char *TRANSR, const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *ARF, INTEGER *INFO); //-- ztrttp -------------------------------------------------------------------- void LAPACK_IMPL(ztrttp)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *AP, INTEGER *INFO); //-- ztzrqf -------------------------------------------------------------------- void LAPACK_IMPL(ztzrqf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, INTEGER *INFO); //-- ztzrzf -------------------------------------------------------------------- void LAPACK_IMPL(ztzrzf)(const INTEGER *M, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zunbdb -------------------------------------------------------------------- void LAPACK_IMPL(zunbdb)(const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, DOUBLE_COMPLEX *X11, const INTEGER *LDX11, DOUBLE_COMPLEX *X12, const INTEGER *LDX12, DOUBLE_COMPLEX *X21, const INTEGER *LDX21, DOUBLE_COMPLEX *X22, const INTEGER *LDX22, DOUBLE *THETA, DOUBLE *PHI, DOUBLE_COMPLEX *TAUP1, DOUBLE_COMPLEX *TAUP2, DOUBLE_COMPLEX *TAUQ1, DOUBLE_COMPLEX *TAUQ2, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zuncsd -------------------------------------------------------------------- void LAPACK_IMPL(zuncsd)(const char *JOBU1, const char *JOBU2, const char *JOBV1T, const char *JOBV2T, const char *TRANS, const char *SIGNS, const INTEGER *M, const INTEGER *P, const INTEGER *Q, const DOUBLE_COMPLEX *X11, const INTEGER *LDX11, const DOUBLE_COMPLEX *X12, const INTEGER *LDX12, const DOUBLE_COMPLEX *X21, const INTEGER *LDX21, const DOUBLE_COMPLEX *X22, const INTEGER *LDX22, DOUBLE *THETA, DOUBLE_COMPLEX *U1, const INTEGER *LDU1, DOUBLE_COMPLEX *U2, const INTEGER *LDU2, DOUBLE_COMPLEX *V1T, const INTEGER *LDV1T, DOUBLE_COMPLEX *V2T, const INTEGER *LDV2T, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, DOUBLE *RWORK, const INTEGER *LRWORK, INTEGER *IWORK, INTEGER *INFO); //-- zung2l -------------------------------------------------------------------- void LAPACK_IMPL(zung2l)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zung2r -------------------------------------------------------------------- void LAPACK_IMPL(zung2r)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zungbr -------------------------------------------------------------------- void LAPACK_IMPL(zungbr)(const char *VECT, const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zunghr -------------------------------------------------------------------- void LAPACK_IMPL(zunghr)(const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zungl2 -------------------------------------------------------------------- void LAPACK_IMPL(zungl2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zunglq -------------------------------------------------------------------- void LAPACK_IMPL(zunglq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zungql -------------------------------------------------------------------- void LAPACK_IMPL(zungql)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zungqr -------------------------------------------------------------------- void LAPACK_IMPL(zungqr)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zungr2 -------------------------------------------------------------------- void LAPACK_IMPL(zungr2)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zungrq -------------------------------------------------------------------- void LAPACK_IMPL(zungrq)(const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zungtr -------------------------------------------------------------------- void LAPACK_IMPL(zungtr)(const char *UPLO, const INTEGER *N, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zunm2l -------------------------------------------------------------------- void LAPACK_IMPL(zunm2l)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zunm2r -------------------------------------------------------------------- void LAPACK_IMPL(zunm2r)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zunmbr -------------------------------------------------------------------- void LAPACK_IMPL(zunmbr)(const char *VECT, const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zunmhr -------------------------------------------------------------------- void LAPACK_IMPL(zunmhr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *ILO, const INTEGER *IHI, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zunml2 -------------------------------------------------------------------- void LAPACK_IMPL(zunml2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zunmlq -------------------------------------------------------------------- void LAPACK_IMPL(zunmlq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zunmql -------------------------------------------------------------------- void LAPACK_IMPL(zunmql)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zunmqr -------------------------------------------------------------------- void LAPACK_IMPL(zunmqr)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zunmr2 -------------------------------------------------------------------- void LAPACK_IMPL(zunmr2)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zunmr3 -------------------------------------------------------------------- void LAPACK_IMPL(zunmr3)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zunmrq -------------------------------------------------------------------- void LAPACK_IMPL(zunmrq)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zunmrz -------------------------------------------------------------------- void LAPACK_IMPL(zunmrz)(const char *SIDE, const char *TRANS, const INTEGER *M, const INTEGER *N, const INTEGER *K, const INTEGER *L, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zunmtr -------------------------------------------------------------------- void LAPACK_IMPL(zunmtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *A, const INTEGER *LDA, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, const INTEGER *LWORK, INTEGER *INFO); //-- zupgtr -------------------------------------------------------------------- void LAPACK_IMPL(zupgtr)(const char *UPLO, const INTEGER *N, const DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *Q, const INTEGER *LDQ, DOUBLE_COMPLEX *WORK, INTEGER *INFO); //-- zupmtr -------------------------------------------------------------------- void LAPACK_IMPL(zupmtr)(const char *SIDE, const char *UPLO, const char *TRANS, const INTEGER *M, const INTEGER *N, const DOUBLE_COMPLEX *AP, const DOUBLE_COMPLEX *TAU, DOUBLE_COMPLEX *C, const INTEGER *LDC, DOUBLE_COMPLEX *WORK, INTEGER *INFO); xtensor-blas-0.21.0/include/xflens/cxxlapack/netlib/lapack.tgz000066400000000000000000131517621456314707100244010ustar00rootroot00000000000000‹CiRì½ër#GÒ*;Âáðþ·Ã?+öœˆ@C4/#ÍìlbfÈA%j¿Ø£Á&ÙP¸Ìå;¶ŸÃáGt^êÞÕÉI+bWC »*«*+++³*/õçõŸÆÃ»áè—o¾ØgssóÅÎŽ ¿»üw3Úæ¿ô}wS4¢h+ж;ð}³±µ¹»ûØür]2Ÿå|1œAW~—óœrPìê*ç=Eè¿”Ïúoÿù›ÿøÍ7GÑ8î‹s!?øì›ÿÿEðßÿ‚ÿð÷ÿ)²9ôäW¬ñ¿á¿ÿîùæùMoëû»q\ÿu9œ '‹dóësÀbãÕÎfãÛèÛïv^õ‡WÃYòêüô±?¼öŸÑ6V­\/îúv^l~#v¾h¯äçO¾þåü×]\Œæ—õ¼!Þ÷øØÝÞ^ÁÿÛ»/v¶/¢˜ÿííÆæÿÿ*Ÿ'þÿ§þÈõÿWÿŠõߨÜÚ†5ï­ÿh3zZÿ_ãë½¶×;>tÛ¢µ·×êï—ÄáñÞY£J"úó}cÀ#ø;è5»ýª8ªŠ“ª8­þ… ü¿"ý¼kšPêÝAU ¼Î>þ‹ áüKP;ûø'5 …ðÏ^£±Oÿ¶ñ߈¾Gø=¢ç<Ï´Q…+ô~8î½°òïA÷ͱ(sUqptÒ9h D÷¸ÛþKå/!j5Ñiž4[ïÅlºD%JâÙ<™NÄV}«¾Y†ºdk:YÌ’‹å"¾ŸÅÞ,ND¹X@éé•XÜÄ¢7œ\NÇw75à¼ð´5ã똀ˆîôC|{ÏDKÄïB2C1Ÿ^->g±À<„ºw³é‡ä’›<›$êØÖ žLâù<Ž«80 ^¿o ÇÉÕt6I†b/žýãÏUëít< /§b?žÀptZt›oEgqY¯üpçàS¯‹þh8ÎDsv½¼'‹9<“(m½köš­A»gf£‰©ùèÚoíª‚æK‘“S‘¢5¯’DuM_›³Ùðs¨«½v³ãP]ITD™IOÌÓH>Í£>$2@"$Z V’,MKK~§ÁÒw…îc áö¹]ó¬Q’ø¢*gQI"Ž~îJ …ù=ô––±AƒYüz²œÝMç1~}Í~Î|EÀfËbNk Õ—1>™Î“EÂkc(–“Xògq;„5ôI$¬~‘\&Ãëéd8®]Œ§£_ÐìmAËöÅ¿á̈ÿ3!6üÿŸæ >øøoí@¿9¯Å¿Õ¼U¦¡E9ÐðÿøF½Ëþ@­Tªõ…Î/v†­ÂçŸÜÝkxò½z[©¼ A°‡ôÏÔðþé¼…9Ëê„ÀžE܉>6ÙRýVo¿²ÆàÚ àê9ØQíâs –gko1½«ã«…àÉ…·'øö´JçTÜÂ6-.b1™ à/×ñ ¡,n€«Ââ>ªÁ?Óü=­‹ÒÁ”“邈l~;Ö Õ“Éeü©ŠÏ&Ð ‘à€Ð9G¢½ÄÖž¤»xv‹Ì».7jí@ã—SàúÉhxÒÀÀ'·±XΓÉ5w'f¦E}î¼…oÓ;¤ë90ÆÈý¬‹K(È~1LÆóz™ñ1€ª†Â™òG°H€¢‰µÃ`\ A"ÓŸÅw³xŒ+¾DÉíÝ8%‹ñgäþÃÉ5 YrˆÆËÓ2UEÖ?jrÝ4ë¬6lSíÏÄ °,tj1™ÀÊ}›ü©«êôÐT¦íh×p:£‹Úír¼H k¼+!Š@ÔŸMï`G\ò{KÜ3>Ä£ÔR d5{¶Šb)´‘•¨e³ÅØtùZ<ûñÙKþ¥a6—w—Ðöå+»Ôz6û˜Ìã—ª’,Y7ÍEk5j.Êl¦`æ°töd±pƒÑZ FÅŒ2äŲºÁjð¼šMs  2Xž³éÇÚíðçé,‹=Mg—ñ,³»ÅMÇËÛI-« jŸ’ƒ=’oÔ`¥HcÀõ4Y’Ð! cNsSslõœØWx‡TŸàN©6ç{uÆV= oÏëÀÕÿöÀÂ?G²ÓuÛ°Æ—ÕŒ]™Z<¥º¥“*ràüš§!ÏÓÍKvUf™nˆ_U\Ûžä^:-Û 'XÍì3cÙe¢åj½^¯òà§°÷,€6ÆÓɵø˜,nl0ÄgA¤Â ø9.´_¡Ö€õ¼¥&ËCóF}ú”,œ.}¼Í ð¼3fáo¦ ŽÞV¨g_øR$òîÀš¾ç§³_æ `ÄÙ(„Ñù“+û)aã!…8¿ ‰ë‚¨³éœ¶…4(¡8=’‹O2ˆv|ɉì€5/¼]àfgö:g=ò¶G$Üì>¡P| ½XL¥ûŠ-˜WοIÉv“^ƒHˆ_ÿ)Œý+°èÆñðº`\j£„ŠÂ_´>þ"\‰¹Œƒ%,À"î‚ve¡kaÑÃZd!”~,n¢HjP= # ŽöîõPˆÛMC²nFBq{rOÉ+—Apýyy ;°yUïgÉõM ³6ˆU¤jcZc”‘ð0Œ …Ò¨0J“¹D)(©¸9ä 5H²< %Ë.]Ú8.ŠX@!à-ô3È$cFÓ‘)¤ãÉ!}­ôT²´ÊGG×ñœïð7(?“¹Äo]xR¥6n z'¨ Pî$Ô+ÔŸ] ¼Ôì° €ÓšÞ å`EêágP§.—#˜P%}8«·ƒŽv!tx»b6BÚ¦‹ÿϦóÔ m0Áñ¶ÝAΗ ¾z#u(8sÐÞH£ÇœøÈ›øI ë%ù 5ÿé­_ÉPëÌ¿ %Ýh±ùO-Y-Kу JÀÅÚÓÏüß()â@W‹€GÍóR£ÚÁ å«%>š\ñûk±YtV ¢à,^,g²ÏxPr ý% Š•É.¬`e,Œ*׿ƒº@½ü¶¢UõtËR¯E­!Ñ:zÜâ×e ÚºÏçË[Pu}œª+éÐ:ŽGÀàÕ!§Ù<ùw½)pkŒHŽÆ4öa8^Â`ÊU2›/xßR@°j2¼ía2ñl†›K<ŸãÕÀ,ÆáT«¡B Œ†÷°óvo¯Ó”h¡‰²)<€w˜GP•çËѸZŽiš5íoTÂÌ{-a&©Ì?”§:âfˆgn"ÁËÀ ÙówF.ˆËä’NÌ" øó»x”\%å¬[¦us@Üd:ÁEF˜Äâ HÐÝ­YWKñbäj#ü‘ë,ƒyHñA®Ÿø*žÅ“‘}®N®þ­ñOy)´_—÷BuÑ¢£qÜ”yc¼½Ç‹€ž&º€»™ÆRs|="u ÜdgÖÕË­­ÚîNUD››ß©),ⲃ“álx PgîyÚk¯ƒãÎÑY‡oBHý‚È#äÚ¬¢âÝØÜ¬¶Oú•J©ÖxþmÙ]÷²>bk6«žg 0"FÐáxf-ÙÓžO§wÎÔ7mý;)Ó%"üåÓÏérrÉô¼‰g'Ï#P‹cš™Ï6,z&L÷ª½Æfã}ÄB’h àcÝ}fmî–7Y€ÔƒAO¾?iöšGm皬$KþwõýNàŽêÝYw¿× >j¼}7xWÇ] ä“ƒãïÛ½vÑv·*þÑîç5%@[0ÁõÍö¦‡kx³ÞˆvàC] lks]Ù8=Øy±ùâ»Ý­h÷ÅwÛß~·»­ý¥n0$ì8²ü•wËÕm¿…Èy#u d cj‰Z(;÷Zò‹èL·Ë;NkN;ÇoZît´€Ôš‡Ç½ªèœžµ{?VaÂúƒfo€úêk”3|Y&2Å#˜ÂšÝNÒ_ù;ÿêœJDƒlêÞwëÿmžÃ¿€%ø÷¬ÑêÓŸ>¾9‹àWvðžŠAO¨üåß‘üÑïü)Q?øëñÉ Êt_Ås¾ƒl²~½wÖyËæê[¤ŸEêÙþÙÑÑ9]¶MUEþôÞ5qºè LDvÕAûèDJ©„Dþ†ƒ¼ƒÙƒ•¬§*ùOœ³î(vmžÃäþŒl†Òþ$Ùxy!E‹ Ûç0w]?­N³Ciõ[ÈÇ[ýšÐÏ~¨é­þÒ§/ýÓ,Y[$JÁ“» ]m¤ E^¡È+¤Ø”ªwuUVš=`Q=Ò7°s‰zg€·e\Ý¿hÜ+©pWMw§ß¦'ªFý¸WÇ_oá×Qfý~ýS§þéªúßêc·~Íÿ}Z¢œÄz³ ÂÔRO2!4¢ ˆÈ€ˆv+Èv’‚BßLöX©éQd¢DÕ—0'Ý}€¢Êé2ý"•”ñOiaØôChMlÊ&OÕO¿1½… Ð`÷”¶ùÚ”°Þ¶g½n¸w,ÇFÌìYjܸ}ºÝ ­ñ« qj¿Š¨4ñ_ÉZQªí¶ü.Uv`|Ç…¼—‘¬È¥R/eÍ(USïÌò=W5{œö,èò9³á¼E¼*>ˆ4e€ñÜKžÃ,ÓGº0ô}kËIõfØŸÇn;4°=uäæWÏX}V5ÇVPøT¤–JF?óHîmŒ¶£²"á„8—¿,ï¿£iÀ¯à× p¥yC“Mœ«Õ^ŠV­ö|Zž*!1»Ë£ “†Ò¨oÂPºÙCé®3”@w…MÀ†â=òDBøô¦ 2#š¢7­µ‹åøš/*-z÷9M t&0E’xÚ[²Ä7Mûôýè,ï:†5w>PØRsÕzÚïª§ÎÆïÏוÈêJdºÒý]Im‘xlsW±dÜTWBMU *I¹­à¬vT‰ZƳZÛ´fÄmœóŠ®Aœn„À Èf>¢œš¹¨ÖFm@m´µÑ=QPe£6ZÚ(ˆÚ¨j횩ͼ|ÑM꥛n8J’#šOÜP}'þ˜³äd݆S·aÕõÔÈ›¡ÜŠæ%ÇRe“Lמxë*8=ñÑz­žx%Q™øÈ™øÈŸøb¸ŽB¸Žî¹GÖ~­'¬×oÒ0ðŒ!ð8PÇj®cgïú6¥Ú›qæÎdSñZۦߒ)’µ;e¶™/g¸Ûlh–› QfZB·êŒÔn:w°º>äÎK´Rbðzp¥¿•‚ò‚ßV@‹²%±(ÏQ¢¢Õªè!5 ‹GÙHî)Èø-­CìÑ:’ß=‰=%³…[M{$ö Z×!v@bw{ ö(@ì^+E‰Ýk+ g{”"ö 4¢‚ÄÄ‘'L&ñŒn=^Š ¡R½šMoµJ²æFd;šÀê±^Éã·°:sÊ9ÞfÓÅbz«ÜrÏBkŒã-:,öv,øœ7äA¹”ù¡„⫸ëmÐÙ¸ó.’ï\0Q OR ½r€üî ÎHV_ä;L¸/Qv_ø•‡…0OÑ9o àxÁ¿e¶ä*ýH~¤G®¾‚s„vº·xïžEò,&ËaI>èuAä4áû¡˜ÄÅe2‹GŽŸˆ˜/oo‘L ¬¸ˆã‰˜ÅÃÑ úâ9}Ö¶ Ði=‰(ÍnGÇAB‹º!Aˆ\Ñ:õANêC´NBäBˆ2!¸h?¸BGÏ9T³Vl ”C^’¸Hñ—ë"ÆKU—ÒË”J’3Í$F7…!ºüÍbŒ÷µàV\÷}l­ï1~ÆÝÝø³²ÄŸÂ‚NÐÈ‘ŽžÅðz˜³´ ÜxØ:ÅÌ­m³bæ+|Äèê,hý‰V îy Eøci%EXzJ¸·ëõÓQª™¿l§¹ŽBø5: Âdzúl–µ¯@ƒE;(èÝŠ~Dª‘ìG÷Kô#}HžjÂRêÌÃŒ*ª§Š|¸bÅFA¢ 1Ÿ¨~”öÚªÍH¶YA‘Ø:«6òVm±¾ZfòŠïùŽ?’-¿Þn¾|ÇóÏsDàèLñi@²ê'³GéÝc ›ÞD²7ùg9èMê~Edܘ”SËTʵ¡c†ôQ¹U¾à)¿Õºß‚´‡qu‘s{b`ŽE´aNÖèý:ÙÈŠrå +ZYQYQ6²²îC ¬€Z‡¬`Y±Vô (ÐB„HYª/Y`ìÁ£×J@)3Ý ’ž¯A f™ e#§8.£õqpåâ2º.£ .£<\¦N#³Ìݲ‘ã«’Þõ\P•GåVi®63D}Ø~#)ñ)JmNAÈPà=QF‚Xþ1Ѓ(«aµÝ²¤¶Õv[G¯¦5ùßÚ®÷‹û¨íJénß_é–}ˆì>¬¥ø+µ½ý¥Ôö RÔYiÇïµFHm—¥´Ò.Kþ¾ÔöF1ùÔSÛù\ß½-¨4ÝKi/ØKÿ&Ü¿ -,@›ÑÜSa/ÜaK_ñö/ÐåõÕõ¶R×YLqöÂSîg}Q_irƒwÔõÇêEZYOQe>›¹—Í—Î|G¹‚"ÿØ«¨êšø·ÝÅñ^AB«£8û+èñ»¼®Ê¬Î—ø ­ ›v‹N¹7žû(ËêÀ+J¼=V/2»t)³‡ŒÃ.Ó„oó¾> Ý­ÛšóFjåWkhòeA‹†ÕÊ~J†§^&/å&”AdY ¦Qpºåìñj¦4t»këÞ©9,®;Ð £;*v\ðtg\©›FCèŽÒèö°µ>º­ùŠö3©»€Þì@*rhâÀÏ9O( åû Ò 1Ê[ˆ¡*ÙTé£Éš¸*±©šlø9GxTz¥Ñä |Ãå–žÛ«ð®æÙ{îà_Ís mõÄn®þá‰u¹­Ë[Þ!ºÙn GûëA7å-èQ&ôÀ5¼+¥ÒÛ>½Z¥oîõA}_}ÿÞ h‘WeW?c|aÚí§¯³¹3Å•ëôu¶!O5Ö0t©TäF‰º´B qOªt {Õ{Ü(å_'Iÿ¦Bü2Cz0îý‹¦ß~HkY³£ögS´EÝj¼­=êõì8ÓÕbÎHÚÕUþAncÍ9Ž,nƒ†o§­;ÙÉ9»5U¦Ø)y°ŸN›m‹a»[íŠG÷xxT`àѽ¥nmEg”¡ÄÒ=÷™¼Œéò‡·:LVŽúK¡ÙJâYïYU<ûÿyóŒR•Qߤ­`ž®0^Û¡s‚I×Î¥VTiV½ï8½·»Cù½'cÌFFïÃÞ–ú·YëÑ'’rR­;•«(ò‘9Sé;¼>d*q0_£ÿöd¦ú_p21ªÙ#Ìf6òÒ]®ãœš ÓñYè Q­7Ÿ.=ž®M1‹ #(:£Ñ—žÑ£Z±9‚‰ c$rç4zàœb·×žÕGƒ=«é1¬tq“|‚ýõz2ÇPl“ŸRô™Šžt Õ{ø†­7³ßG:›ÐNY,kÔ̯Ày›. ­à4¢i 5³šµ„ËÓ‰G\•  yžÉD˜^ –x­ Ë L`àQzN}—doÒ\›ë„DaÛ#µ u"‘u:’†­×SNÔŠ¬óŒq>äÁ†{Фk…hu QµãØ% û¨£èšå 7I>#Úªð”ŒZH «D[qÊ>I ”93éo5QaZ‹%% ŠuÈÚEtdmk9Œ&rP{Ä*Ñó^ˆ&‰ÓGKôPTg@µ‘­r/â­k”Ók"°""k¢Ô d¯‡ÒÅ=§ Àn#—§6Ì¢óýèœ|­"¹/…å¢á:ENÄNñ€ "?ngVì€k©1Öü@E#yŠÌ`žö׋ç)òBzfΚó} ç»KJ”Œ'm#ЬG3Ï3µžŽB1=-R,M?”¦HOKˆ_ã)ï_u_éÈT Ô n_Ç Í±(#‡¦œ<ÔmrÍ!Û£â»x¸È üéMøÉt¾¸›MѶ.™\¿ä,µ¼Døòe,¦âzc#ãÌjG:´ˆ†@ëߎ2‚í”C,¾‘Š˜h–÷¡^J*ž_8¤·|\ðvû‡«µ”tü?‚Nó{  •ƒããQ]ZW‰µe²€f&7‰š'$±p…ûüNÝ n¶ ²0I,LHÐQ!Ж֒ ûTê:FÑá=Oùq6ð•ý?•;±Ù†ùj%¬óUÒמ£-©ÒOk¬!Ùõ3¥ÁEôÓn #Þšó¥I …uæÉ@r gJ3æ§µ¨eÌTÅÛ RNU^1»Î_þòÍŸç3Þ G¿<¯ÿ4º¸œÿ:«_}6677w··þ}±»C7#þMŸhwS4ÝQÔØ›íí­Æ7bó ô%õY¢a9tå—ñp9Ï)Å®òÃCúïåóŸþÛþæ?~óÍÑp$ŽûB§ÒÂgßüø/‚ÿþü‡¿ÿO1ÍÁ '¿bÿ ÿýw¯È0Ïÿëhz[GËý¸þër8N0­Ñ7¿>,6^íl6¾¾ýnçUx5œ%¯aÀOû#×ÿ\ý«ÖÿÎ.,}ýG[›Oëÿk|xµ÷ÏözÇgƒƒnöÃýþi¯$ÎN:ÇUún·õ=ÈJÝfFkµª3„À¾< 1 þÍ3Ôi£*ZX²%ïd¾NypZ«‰Nó¤Ùz¯3¨–>Ä3ÊåºUÊðÞ-…)XÅ|zµøˆ^^H¹˜Ü”™É%g2=›$ê”M:žL0t\ÅŽh@ú}k8N®¦³I2{ñì—x®Zo§ãélx9ÕÉÓùS·ùVt—õzM9 u§bÌ4Š©6wíDmœ"P4Uö/“†¬õ®Ùk¶œT„ˆiù6”ŸÐ%HØd¤wådèÉ ä)kRÜ@™ÙöK¢‚Ûò/ß áwÕït¦ÅV‰»EÎJÜ=úñý $ûYqò(âדå Ó£[é6ù9Ó¥=]ªÔ¹Æ óÂÎqª”Oƒ“?W­Ìõðê9'¬§DÖ¾ý+¶i˜njUQê¿_–¹¨‡è8]ÌߥåÝLô£K}Œgeq‘èË2SÆžXΕóYr{7NF ¹b<ô;¡Á‡*]k³C‹eœ)Óïtv‹ÕT^PO1³üwR©¼S¯>’³c—„“ÙZv@zØ]›Öϱ¸™Rid*1Ǿy'©ª¦áIðëÖÉS0«À&P~H’ûi• "¹òšG89ÍØm(ЈÙÊ÷ <Ñ*<­Òaèuò!žÈœ¼Ÿdn?BÀÈòŒPôý .³|«ßØ8‚ÁùYNØg>›J‹›áB&R»Ž'ñÌ µ‰§/†Â’ÅKxñаWÁµô"W q¾ÖÛö^oßdA—ôƒ5J€¹²¤¡’jY•‘$é° ƒ8öV˜…¯[à(Ãñ|ªZ§­%;ˆÉBÔ'Ñ’ Çâ¯&Ù±èßBS¢¯ä{^ë¸&Ì;Rhû–yË¢b c“/z˜àÓÉ7G£ål8ú\ý+"å°üö6Ó”üPï‡7à ]¶É-å‡éììFw £ù¶D †Ñ?haÕþ(©SŽÇd¾Pù™ëâÃt\˜ ‚‰¶ëb§*îîêâÛ[µï n÷ã»…h|÷ÝfY¥åþ+wjäh°t¯(S4¥WúõÒpˆ9ìQ2áq¼X0iÕÅÌ»9¹œVa£ÝLLLÛ‹ï0Jë¤yTÛÙÙ®"ÖnbÀ~2¢µµcÊjÜ x§ÃvñÙÛ *Í~x¸„åC‰Ì_Æ‹a2´_ÆóÑ,!Rщ×5oã™nšì—©ظë!}ªäîzc¬4ÜDãÏΞ½D6tÊ<ج‹W^ÉŽ.ILÚ*);Ô•eWd”çQ9(ÅÝëXýï˜X‚­·,ÎEŽÀFÓñòv2÷à"Û P6èÞY‘nгéGîYÀ8n­5ÜáV Y€÷¬>WiãIÌùé/ ’ëJ]'Søñ„“Ú3§1©G ‹-²õÀ~[÷}JU•rþõf5(CÐ^›Lpã‡ýßÚPhæå°Úë ‹né³o¡å«£³a(> µTKr1›~Ž/_é—Ç—ûÄ5Ú6” ð\;›½î/a¡;ë¤zIω‘€qÀ¶›Ö1Ýlgä“[í6”áœ÷ ‰v^U)´+4y)·äž–ž[XŠÃef–]©(À@7~N¶€½ vÜ2aëôêÀŽ8±îðCÀ85`Öv¬À‚ƒÀ;’b§$À{­PX|·ÃO¥Fµ[ÖíÂL¿Òoé9±¨óå µwÆÂ±f9A”ž0zè<]…ÍÞ™ƒÌBW´WÖ® G–s–Ð&޶ô»á|Ï£1Lnq3›.Açq¨`ìuÚuŒ^+æ‹éÝ܆P"©s “—Œ9n—œÀ² ì•ê†][µÊœMµ ¼}Ç@Æ<ºJ·R‰$^|hý}àkØ\î1«eòuêîQÛ9.±áíM}ô€c2ÑÁ`¿×˜ü. ›æâ¸ ®ö®»ß¼ËÆ%xx|`m„¯q|+Ñ„-î¯êÒ>Z ¢çK ²6ëhÇ8ÖgšÌÇkVªs†.¿ˆÎ|ø¢Á"ºÎñÛƒ–ÛùÎñ¸ô{ǃæ Ý£ƒª8Ø?€‚ý³½*%Ž­ŠÃªètð?Lë.3»ƒÌ{”çko#*³UÇ}¬ ޲QÛÜë·É¦X}ë¸ß¡¡ñVŸ’ÑWÅ›ªx[ïVxC#Xþô»0ܪè¿;x3àäš]þsŽº¼Lg]¬‰î£Õ.ü‹FŸøo‡ÿ7óªCY¶Ô$ÙA  ußt³Øþ$å¤7ËÉÒVLeè$‘ýNó¨¥h´}3ØuÊPõª*–Ó›¾>ñµúH~I8Q@\øm•«lÌS•^ÞUÎ…š‡3xÚàrßc½vo¯Ó tïS‘ƒÖ0 a (ºwÐí´ ` ("Ùª 9dÙÈ Ë)‚ˆGËmÊxìë‹3ÅêÉ:ÚÐwší›È‚^ŠhZ}ð›p¯®UŸužæ ‚0¸%Π„¿€áø&‚JKQ¶¥&`ZO¦ ßUù(U4®ü*[©*½³üÛéFZù5vü²cíS¨ÄÈÀ‚*õã^ݧ+Yãí U(¡„&ehKZÎìÂw~:ûgNíÞYNíFj"xÔÎZ«úßr»ß*Þû†ž%Û4Ž £¡𲦑Ox¼èJâßÃ>«Šš¼¨×圜ã)ø]£eáç”×E É·ÇÀ EcwS/0Þ¥H¬ž-)ªëpò9}{(Õ*ŒcŒïjÎk‡ã‚I×{¢n\º0é4§iL7m_× V´ìDáÌõJx“Ï®yD.ÖUC°Çâùˆe[Ž{/>‚ø¯y¼Å#ç9nøÄ«Ô˜ßÆx*0ºÁ»>Áç‹áÄÊ jðk¹}©´ïæÉx:1¬ 79»@xzD2A=♋YyôàßÓTÅL'@}Ì¿ð‘õíP¯oñ8yÎÕhG˜J 4¶òÓ:2ÐýcT¥Q{ÚJß WRB#‰i$AQÚ QÃ3KårÒÂyÜVûÝ ÙðÍYÕCôi쇋H»ŒY(ôfwCµƒïax8ãîà {ædUψu‹N¹ooÖör|”ÙnH”4,ã’n^ÊY²t9³G¯6Uí»~ÞÊPfÝöÙhI·ïù]èdôÞåRèÀE@Y­´¬,^е7<•Dnùh=Z^ÏP+²r ­ôa:¦äre2Ý–ìS¾²ñ˜“‡e¯í) L‘€$µ!¹+©Ì˜9Øß×ÖyX °"gÓOÉ-’”<;¨ªÅïw^w¥Ï>A–^ 22 ÒL¿,I]fÉǪ֚ì'ÔÔ„®Áme­ï mäV $én§Éoå¸SÛ®³ïsÇMÇ'‹ÀcõýåТì/.ƒ;©íe%)˜÷ÓMS…×s‡ém3R"Ǫ¼ƒÙ …D~ŽéÙ†FP­!å—?éAIu‰¢V9ÅVÄ˶ËÃàûNê‰×ùå¹Ì]‰…'SXúÔ©…pÜ©è«#£n…65ÍÐùÚÖfj¦Õm†Pˆ«©\a¢ËlËå9'34ß û°·—g™é¥FµKÔŠ:ÄÎ<ÛK¤ÉêÔ†Ú_¹Q ­á ÀÄ>dGç]<~¼¬^Ã;¶©–̠ݳÔ$:(°5<2àß Gânš >†®xÈ+ï$°ûˉ¹‰@#|Æ|Ïô l/¾fzÍín¦wÌÖM<ú…Ðl~ò9#2uj4]N\ùãü2¤_S Ñ‚[ã-U8Ú4²Ú›„Œ‡äuÐÅx ½ÓÃF$á݈CN/K6AKŽõ µØpm`•§©i[¾uXždžNm‹AÒ ÔÎÀÀp^lâ)óá#—Óc|ÌS<²€BÎÚÅC#õº~9Ö~xˆ>ˆ 9B#âEV7ÃÉ%ºÅ#Cq¯¤ÚÝ÷¯ŒZC* ò¯–À¹d/KåãP:¹¤R›T È ™7móÆ%h½œ©¡0.i#àÀ¨×¡OKÒLÍ¡GU–ÂÙl‡žÙO²%r…„^J+ÈÓJdP 9£9 ý[þâ“gDòZZ‡ ( -wxò‰óÛȡ߶Z ѪbéÕ¥9+lA˜ìf¾¼àýÓ´Lñ–’ Ñ9 N2U†X%vüÆ[[ØÏì}Em²‹éÇáìÒÜ0úKD[6§!ßå-=uRõ¦äñt”šm$°þ„$XZó[)]$רß2éR̈JÔEzê§{áã‹áøò\¨ÖnŠÚ^ÕŽ5oÎq™7kM<Êpd ô¹Ÿ;Fˆòô,­Z,'©Úx‰ ’ NYj®Š3(Cg(Ïx.±Õ3hLKPöìiæB"ƒ%Óº3™>áÌA\ˆ:ÜEÀ)>“±‰Ô©33QD[´–Òª¼:ûsJSóg¬Mäxôá(Y¾ä"Œ†ytæ<¦³*%FÑ\8ŽFÉ’Š:¡ Ýd&ä” 5 µ‚½§Þ;t°V&e/Sh°1¡$©ŽÖ&üIk¾#¸·Ê³VÌÅpô˽–Œ”pò׋™‹Àr‘(Xo½X³›¿\²&öw¶Zþó–ËÑ:«¥¡V ­¾Ë®ýQVÌc¯—ÆÊõø¡ôr­™I½ü(}Š‚E].”ª\SWü%’dâ5[&ßvN za)“òi‰+–q¡™2›(y]t+8gràxôƒJÍ¥µ¦Hå"³6H©ÐB õÚtQ»¦ÃÓäÍ½È *`gixh}à҆χêÌ@IàˆÐjX*dUÆ‘*ÂÜ%%8ä@s—³Óhee•®Â¦©àô9­¥ª×v§ª¸S•Ÿl42[ G*Sf…+K‘ÑÔÕõ$âú,´Ú<Íî,ßÝò$>§¡a&dÄx –:­ ̶Èû&£‹Ö™§F|DF6ä‰-ë«67«â/*Ñçô*‰/ѸUÃt– Õ0G®Ñ \éUÈÒhÅ­žBM§“¦!ÌÁøk¶Bªôr§QTzU}ñWÁv]3&u ïR5)Y¥ný2x'lnsËEj`n™áâ&eo2ðÁCpf ´>“xWI·k üôºï“e¨ý"ÿ´BäÞ"Ñp•»½u—˜©ËTuµG|Ç:ç\ˆdcø= ܯªî™àh£hï`™éòióbïêU䞃E]ël9(l¥rÓ~` –ÙÏQ4ý®øJ¦"ªø¡ë¿ ¾(¯AªòÔ4$ çñFVrG4UÊdŽ÷cµ{³ÆŒQ±ÅZ>_,Î5O¬i¦¸U„)’„‘æŠrlÑ~ûU¹â^W¼ßÚþ"üq/ƒ?®Ã¸¿WÜËàŠëtëyaú!À ƒz®+ÝzLµ'yíÂúJÅå·–4ßµ «,ÕXÆ.WRS"Kbòµ¨šòJa«[o¡ ‰ÍÞ^Gne‹xs%òPq5ž"¹ì5Sa&ž:ÏÐiXCþªqý`·tû$_§¬Ü„k §º*ÆJGÝ–°’agÆÜQ# 1w vÑ”ã‘w2pevIsÑ(R‰j\bÝn?«hø´) @ž ª0s•ìYAÇ‹»åvîniÉeož´€'-àÏ­¸{Ö‘³eù;Ô‘½A¥p<±“û¡ µaí¬«P¬±i­Ö"ÖÙ±RÝÎæ§w­Zc­}+vß›Uî‹í[Ô¸µs­î¤)gï\¡z–@±QtóªÂM+ôGîæ*ºró*´u%oÅÎUxß2ZžÚ¶vVm[²¯þ®õ%EõBûc†mxR ³{÷‡R u±¼ëûÎ@\%“d~ƒNN×Sº•¥-jD°!RÕÚ¦e­zã÷€5ïfÉD¸F#€d­•F'LË‹iDÔòüɤ"Q¯©¡{ªÄÅtq£¢gÊ× Ãù4Žœ(üë Gáo¦Óe\¡¸­ºþ"UÂtª‚tÃȆx_8Cƒ/í2ÀJYn46’ÚÏÕŸñH¨YJð ŽÀÚ?×~Y–ÿö:ùÛk ¬|[ýyã—±ÞV‡&oB“Ë3+fŒâr9“‰lÄJ‘Wéàä< NÞ¬3 ˜d…Õ¿¸Y(V$jÀ!Á—ý†×L=ÕÛk¶éåˆPr¬T ùMŸúMçÑôiõÈiøàй;qNä©tó ÉûÖMWôÉ ÕoÕîríY›§ˆòLMœPõšN‹¬ö$àöaêøôG/85¶WªTÄŠSò€J7Q ƒt³yâ"rÂ|ÂCäɳ˜µƒ-"*hü§Šb‘WO´zç†q΀œB¤Ž­·ÂÑ¡s;¬±wïØÐtFV46´qtN0µeòï±} $¡|,Tˆ"&t;î8-óüX+BOµЩ7Ëñøg'¨Ú;.žL“Ø_ö` VëÒÿ`êÛ2 :]&£_Tœ3èûÝt>Gt7LÁ‘ þ3—$[)ĽOÅo8"2q€‘Ê‹ü(ˆ³Éfý¸É|´]ÄÓ9ù+¹Žó‰§rEN(©ÍÇœ@L1kŽ2uƒ†±Ù"D^áoC+ÇÞÙt ðÙ>³)ùA¸V¨e‡yJø³þà9¾š´ª¸1#°$ç”æŒÇ·” Ó@Ò<{z§M<(“òä„ÜnT¹Å]ÆŸ(Áaãåaô9VÝîÑ@&iÂ3g6—êD¨_漈.Q 9=|*­ìË¡)u{6@$Ó„†QËÞ;NI Œ©·]zëØ7¾ß£=ðˆ6Á®ýœ6Ç=k_ÄyÑ7*ȯ͋®>‡ ÖšÐCŒh޶^Ø”5€} ¨¬`háx–Vr=$ÖiE†Àß³éG7X¦Gç~šŽî™O øâ¬›z±!Aöåî½ßs^ª±b˜öÀ;ñaÄïÜ1ÁGÑdŠ00>Éd’Ü$èA ïÔ‘’†ÇQ&· ÌŸ…¦ƒÛ>>Qúb¿slË•ak% C±¸D";^íèíÙ‘˜ô…l‰˜?|‰sHH—èyORæœBEò‘£À;áíéÂ`AY³%Ç}á6:µŽ?˸? © øØ ùò‰#KU U Zà 5)Y6~üÑ3 ‰˜™©uÔÜàÐ ÏŽ„Æ}a8sšž_¡BØËQ“ØŽ(¦ î ™S#‹uÚõ£ÚÁFhµ?‹Í[kÃR²q;>™”Ã`>&‹y¸AIëÕvòÙ€\A¡røzß–ûgGäÐd©ŸðïâØ? (fÌï^3èÀ!DªyôMi†‹j¯žnuê±QÚtªýt `¯•‹½àæÜ¢•…­­õ±¥¬˜SÑf­ßkáÌBÖÛz8ª#PUºÎ>DØåÏKÐ7@Ú$ýÇw¯œ.1©sÉÄ£Z,á½VÉSk-N’àOMh,9ùl ?Ãüü¼ñ˲,† XBU èŠB=%‚e±¾4Ùh¼Œ*?¼,äŒ!’‰õê¬ Ã.ó«@U·²í¼ÊÛáÝ÷ëH¥–æ¡ðQäRZp¨÷JC¾`*Ÿ®r?Ùu†Ieƒ¤ºSDxU‚ëÑ¿‚à*%Î5'OHS³ª5k ªªb€x ;ë¬t¾£²½Ñù`ä °g(ÀvS€­‚»ô Ìg-6ƒL%>Òlíèlc ®£3ô.¬xPÅHV\å–$?FF;ód´³bò®×Ù¡7%Ïv¨ºx’gM{ÛrŠHCéž6Ö“£²Ðó»añ ödX<ŠÎÌvï!˜±±ê!3%-‹ä¤5P]Ï®¥YNÁ]Å}åþ.gm÷qdº=gù£‰t/*Òmü2‰ŽÄ:L$¢OË@ÈF0(Ø5^®êöl™Žç±b¤åŠvNKºËóâ1Xè´þ L]†ô@ǨðO¨†æ.߆",|òÆõ@^x'âœâë[‘ðõIèrÆJgiåž_Vµ© 9&„‚±%œØ&¹–èmP-S ˜Ãty)àYjó¶ž"ù½×b‹ÔNj*¤wMû„(HW¦¬ÜWŠJ0ä•ýK·²K6¯à¥£=~÷ÈâÀ9°§F BC¿–œº×OmªÖ9CNóÚ“Ù;8ØpÎò;ÑëÛ©üEäçºË]á+ÇéL$–Ž·êVPÊÀ¸ì¹iˬ·ÕÛ äÁV:جeã ɧ=¼Òb¹ @:7+g²cyG³Š<Èæ(kYኔ:öNNàCÍ¢¬ŠP ”‘nU·ÙÊ+òÂwêJlÑèÀoðÉÑÆ‚R¯UM­œu?ý_,£oڧöØx—Ê&þÒÊý7ò} +š­r ©HK>·"“ëÛJkú\Ó‚81/Tì,á.|b<üÓ1¥[3µý(ÖQ7 e"›ʰ Þ–ÄÀe‡ö(²š ÙÏì@z€eDc0ÂÈX"#vj¿gË‹àÒÑAÅBy<ÔŒ†w€8c·ž¹TTÞÑ*fä¦Å­8v|ˆàÒÍ$:'.™!®"@ÓÏ4®ZË`9ŒBHÒQ)q!‡ç¤ï®â\üú½2±B ‡Ñ «ªß(Œ†ÿa4ünâ?DOñ¾Îç)þßúcâ?|©Õ¿jý7vvw·RñžÖÿ×ùðjwã?À®›åqã¤ã>œ|¿¹DJïçHíO±²>V¬‡£é%gnB…“Š‚ÙêF¨f€BËi–ñÑ1žoŠ7ñ…ØÜªŠþá;cBºn¼œ>u>V,^DW‹1iϋ։j¨Ëhí%îÆ"âù"¹Å¸ËÒ¨v”¹¡+•<¿¦yÉQ‡ºpTôÏ_&6N(XBiÔ&ò°„-…1üæâ3=$ÓÞå\*ž¢s&®†hpœü»ÊFáˆú¡ÏƒÞåù>Ñ'×È‹ÅÖØ%y#àR2ùPj–ËUËdØ‚I 0™›6‡êh‡æ¬t1U!o–ÛvC¢\ æ’\;æ„…ÆôœÌü ÅÁ1Îâ_—óÓñ¬-ž5Ø öøÙK!Ûó#Ià+EËv;ë€àž+‚><,4ƒw§KÁêâ‘4d5’¦aÍø û1¶ ‘Z"Ê•Þ]CÇô$°Œ„8³"3 1F§<äC¾Ó·æ‘ðqÐì«á£ÃŽ¡Ðô£<Ü.Ç‹Ý fsXÿNo|Ž?€€â6è*.ª¸) Ã^]è ~ÈÌM&¶›ŠŒp—|˜â•Ù%yEŒ«!þöZ$øl„hŸx+ä£;­ÉdÏFá÷’'+Ñ“hv$yŽê"î7ž>•°ÕaÛܘëÄ ÔÐô=ý”YÝeB9PÈ™›8¬iÂÇX±ýÉf(Õà"b×ýy)ÌÎúÖsQ*Ýõ½Ó»uKOy¥ßÇ)ý·õI'´UŽéì®Â}7õ´XVÜ+¼Ó=T±®–3dJ~8$Û³‹ø ˆ•Í~›ÿE›µ}1²Gß<è~ßùÏñ Vÿ¨Ó=ÓÝHË~ü>È1‰£+¤Ð~óûvIlñö÷éPS­æQó<{ðýNó¨õ.{´­ýãryÏòήÊVªZUÖÊ[aøæùÉU©±Ðß9¡÷{ý¨ëÚÞ<8j¾¥û“ªÍm¸ÚÕ<7€Þn‚#.câØ.Hª_"‚Sçå%jG?Ã|ô”zo?ªË¼åtêz¢óšE[Xœx+Ûy£J¿sVÝ`WsóOfêÐ s({x’ ¬¸Ûåí3ËZº­ôZг$…'KÌ*à-Ã"oOmɵ¤r¿³´7Y~Äîu•z…føý~0Fí¢ôÆ )Ôzm¤îŒ”U0WºÁ’™>6´qfU¥ÒÎå,e|¦5ý&Œ4º8b]ä3jGˆçŽ…gˆG¾ 4^Aéˆõúc’ñÜ©[óS0ðçeò!Q¸ÀÀÎ %ã bä0×Þ±Ý+rËRÑÔE§È±‘åùÅ=0“XS~™ûÆýI6¬Ëõ(d²h3.ÏRs©(n€[Ö³3Ty17Mwªó‚Äü{RÃè .Öž3 `td°ö)2Ó®”èÜóa3‚t޵Tÿ+•wE‡ÐšN~^^ç$»ûfˆ…F’ È>ÏT'4¨kLú’Ñ˰RE×™MÑæ{G¦ÕfÛéP±÷Y¹º‹.Þ•\@|©¾Up]ú¿-’ØOðJCœ#=4žeQ¢)™{NÅGÐL)ŒÝh¸œÇd z5ž~t(Ælv?>3O}1ˆúbÈ|æç€ô½å„“®0$‚¤,ÎQ*¬È DM.¨ÅŸN8‰Êöf`“AÝ ,С ®¡Àyømñ1Iúˆ\ž‹X'(þщÕ…÷ÜPŠ%,±:þ\ "eüJw.f»¸q”ûrÆ!¶ýGüëò7´ÿh¼h쾈0 Ù4žî¿ÊçÉþãOý1ö_jõ¯¶ÿØÞÜö×ÔˆžÖÿ×øðjwí?Ú§g%‘eüÑ£4½ãZÝ}´Øí´rÍ?øÐ±°ÝGôû¶ú@± „-ºI‰€ª‹_4¯8Ê·° DJ|Kü¯ci:ùTù9Ö1¥(n?dd’Wà½åå8\s@Ȳ”·2ž\²å ^¹“ òVÒMæîz97ðÇL†öZÌÓrŒU}ÍÕ½?¶ŽMª«SN¸Ø’WdºGúuUŒn`Tä%½À´Í_¥,0Ï×x«ÜÑšc8ºñéÞµíÑ$ÂÑŽ{˜ÿu¯””+¤¿Ò*ý\æðË9€TÐí“P7ªX˜{%qIÌ +³d´`$^`à„ÅGôÒÑ'j:ùæ|xEø—fïà-RƒÂ2•gs%Ã9kAáQ†Ó¾æ;æ>ÈÙɺ€lb¶QBWâc Ê Z:Íf2RÑŸóÌDþP™9žŒ4dó«sf˜D:S†{A]8i†Ÿ)Ãó¸I3¾%…kG¡6U‰&RiÔeå¢Ǧ‡ -¤a›Ï]tÍ´B«`?RYL?ZnÓ!öë4É[]ŽåƒÝ$×tGŠ63–}›úhIüU§U,ŸÕ©! ’VEÃ7ÛÁ-š¢2í›N^RÐ/j¥JžàÌ7º$.Y,Š5=…sÚó‹!@IÙƒÖ#µ!´ƒnéAK§¢f _ÆÎC¦0x2öÈÈÈ:°" ÀÈ*£°MÆŒ+@I}t㊬¨ï¾1ËžY…Ül½§´íùþÉy|ãþ9ºá ’“ù´3ËF(`laÌ´JÈ’Sù×')™Ñ@ç`ÊÊ×Ýê°ïgm›;(øoéb7Z~„´lÓ[ZØFæ´aT„2A x¯uXÓº‰¤«Ðà <9ò.¹t©ÿª*. ¯?j‡Õt˜Qûvg«È0I9bc—,¼ÒÖá 2}ÚàЕüË¢<¹ñËN©ü]îVv©ôÕ•¤N‚謪í[Y÷œ œt€b-Ùc—g=´Ò@.Šg3Êpzi¥X*üaz¸ªÔ÷L›$YyÊÿÜYcü1ìf§HØ”Û+”ñŠu]ún÷N—T„cº×T”‚ôd÷AdÞ½†´>›}¼­à–ºW¤þâ>샛V†ïÃù|y«ü*KÃ߯㎮`8ße0œo×f8zŒT§¥"g0œŠ½.¿MQãw_Ÿï`(¡4*B,¥e…v!ÚìÉ*… S¡É¾*—ÁH3éÁÉ^pO‹±Ì#q¸«‘1n‰Õ4¢Œqhêóy"Ä ¯iD+y–j×´J‡š×Ðw»{ºäxƒÏ´AÈ|¿Q´ßßdzÿ¸øWÀí?6_¼Øzñb'Âûß/žî¿ÊçÉþãOýqì?¾Èê_iÿñb»‘Zÿ[»Oëÿ«|xµ§ì?öÍ$`"V¬úhs Ôšâ ã…rß>ÞÆs±ßÞÆã*ü^A¨{7“ëá¤*~œþûT¼K.‡$öÙ€‡sh¿—Ä—ŸQRÈ3©çöȶùvåX€RXºŸŒÝ§¼Ñ8¦.™}â¯G'ƒÖÁ@tñ€*p’úd“2ƒÙ{$;˜ûšÀ`«æa&0dÿ‚`¾ž ÌÄ·‚Áð* q;åëK¾Û¼L>·Š;ŠË¬ì½±¶2˜Aa›™õ fŽo3³¾ÁŒe§£lfò f7·D²ÓËäê oÎ(þmëm±€K(|¨¯w„ÔiI0´½!E À֡ºQ57¿rbæ†Ð€¶)ŒCÃKßpŒA©Üshâ´ à«êzž/bEŒ>ž?Bºž$@×x.3Ã{u1žN®qfî€~"[þñgÑ l‚¡Ì¡æ¿Î% Iã¹õäÉèèat´|¶×i‹“^»uÐ?8î³>:ž }®:8Ã5t¡âóÃ~Z Û"ùú9p¾ÊɆaY%e™"a»¹¦HïÏŒ)R—M‘ÕÉ2Dâ&Ô y°%ÒïÆéÉéÉéÉéñ,‘žL‘þЦH˜˜`ÿà¼Ú]û¯ÞL ÙkvûŽ X·÷®o‚5ßðWøÃi0Ü%劢‚ðÏ9þ…Þ´{=xJÿÚ ¢ràü«Gú-R@Ñ›cí"ÖY<ß<›4•]&Œul°î—ô ©EZj½1_ï‘ PRã ôSþȦ@Ýq‰Ç¾–¬*‘Ü"ÕÅê¾Yª®tëˆÔK¦7óÏóEL!­AÁ‡32—‚‘Oô?ÞÄY;¾ºJF êÌòzèÍâKŽ œ®ãX£¹@{6üº€UËáR¾1y®®d*Õ©†1DFb¤M¤‰YIOÌõ@ý¼K]̪ÔŒ£zÈ6!%;"qÙ+? ò•ÊÀT) ² ·dáwVá@¬àòZ&;ªNÈÖj„R°‹²¾A"­Š¤×ù&:eìdƒ±Še{DÎçuهnjW¤sñ¬¸è70Z+nÑäëÆ-&[|Þk“T öúF ŽJp‘,Ð6Nwà³ïIû&Ò2ìÄŠ 4”åÒ¶Ó¾%³äE|GBIx–fhtÅÆ¡_Ñ1¤HL.¹ ù!íµØÉÓµWÙ0úV‹ü<”›Î˜µØ²¤í!È¼Þ ~Èí¼‘Û·˜w½vn稀ÚzŒ ŠÝcT“WœÅ€ÄCÙÜ:>ëªÊÖSçQ„oÝdµ}Ò¯ŠNÐkÃ_üó æ]Ä?ý¡;¶ó÷Ù3ùu*®›t°uLÞî}_•ÒŠIEøÛ„¤{@rÈ{XÃÊ쎙F±O†¦®¡)/C4àãD†ò˜ûY7ýP–Mg?T•˜þÐzmz%[ðD‰(åWÙñ«5†}¨ø¦`VÆïÒu©&P¦¹¬§Ð*FáÊC0áí½é‘؃]Û€'.hÃ˶¨Êð…õá#v׎Kö/ƒæ)™£±:Ë‹Ìïo‡ÂNÕ¨žøÈÖš½PµV°šæáµûñ: éM¦²Òîʶ›3 ÞUq7^ÎEC‰ÉÜjt\Å´ÀE1”ÎÕð¢e9ÚPð%½½ëKèRˆVUü‹0W®à×sÜ©ñËðA,ïô„¯ÿQVª’Û«´ë~ÈÙœãHþûÕiÅNCSU/ãÉV C‹ '[ç üN”<»ÀK2^x`p)ã*¤!ÏSG°öQ§“&v‹1`2æÃ ߢnK[{Vé2'1K)YTíãÖJã¹ì™qº‘ÃO…²À~ê$|Þ¿×þ°´Þû¯Ïß›î ¿¯ú¦›ºm˼S»×¨2¯Å…±ñ¾̱è Êú±áÚ¾ß̽'3[ÖV¶3²-îlòÇÝ2„²dÎÂL?´®Æ˜±_´GdÜLƒME»«ÒN¿·qüžpL»ÿ‹œy)ÓH1–ÕAãX3£hðÌûTØB¶¯PÖ×6Ö†SYÄáb/5±´RÞó €bÆv¿uI¯Q™,[o[\êÛ˛ԗôVX§FÉd«&x›\Ù'b¢Qæ[ µ'R‡Ä‰é vÆ QùQÅ,h¤î£DTÖU/ãÑ,Îù w¸ÀCyxG¶ñn†×ÃdâôI˜í~Ð ZH5£(iûÄûx^jd_Ð qVh´”·%W†ð*jyL£È…+%8þ»á¥á漩ÑfjÙ[(Û£‹…|ùs²—ÎÍÂsù”åq\çK›×^qÚÏ0÷1ïsew–¤¨‚œ D^ †J@\ÙPÂJÙj2%³Øp©Œ‘_²®I\QäÎí‹î±’ égÍ¢ιý=Å%á^; }àôtÌ3k©Éƒ·iÆÀÁµ€<Þá0® ŒÆS´¡&(k~,Œ$Øà:¨\1ß‘R[†hjæÈªR4´$BGÀŒfÒ¶cm©{"ž::Ñú\›XÆIéè ö¤WZ”~(§t`™­G´žDùÝ£ì¦!ùÓÞNußLÁ•{ê=`Šlþ'¤>›±­~ç‹Çº ž}˳=t ¡ÍW¥‚‡ùÖɬK¬“+ŽªÏ:Ôi:UÛx 33x>ر ´OëðF#Ü4ï’l*š–B)ßEhˬÜsrQ­ö£Ð¶#´“Sò €´œ^±ÉG:+És {ŽKi™EV‘¸ `Gº2=°·QÑ9=Ý/7¾´-LNóÜ͹ |k8NþݺêÖ¥µdÛYº«®B´º>J«ŒÅ­WG®J—.ܳFóý¹¬Dchl<ÿ2½»zo̱՟ٹ«ÀÇóÿúôÛÅÿÞnlno7vÿwwsçÉÿã«|žü¿þÔÇÿ달þUë7z±Óð×ÿöÓúÿ:^í)ÿ¯s}¼Ñ>=kï¯ôË‘tœÃ±_ öëþ~Úëîc·ä·ŸºÇ½£¼ªº Ú´ ²ôêo1÷³õâ—ÿñ#˜.aHѦ-ÆÿüËF0Ï2Û’«DÁÏò¤Ëö s–V6jâ5+A‹Â)KZTá=Ä-ï‹9×±Gàb¾K_hpÒOÅngÄÈÆS0»A‡”$O+X±`W± ¾åWË#PxNBùžßÛ1Pؾ¶Ó_q? &å÷‡f³:X7öÅè¤Ò]•¾TÔí«#H÷Ó6°·ÐÁ+Pƒ)»äÌÙ*sé¸ )´Xã· Æl·.¡*oa‰Pú ŒnäW—ò6=uùBÄÄ^'/ @ÁXº¼LÑ‹Mî¦Êü™Cð_ÄãéG´Jd0£á<ö4†“KwBÙH÷Yªš@=<`áV¿åh *N‘rê„Oz‹¦2X»1®£æ. cãÅÆ ÁÙÚ_Óü<^,(ÇÁ%Ö¾ÅÍòfúÑ2™Æ½á.žáEú®bèvØ'ØÏU¸Œ¯†Ëñ‚›ŽFñ™‹ŒUô°ÒQ¤G°Þ çsÅHñìP|¼IF7@·ñš!Æûr6b²æ;Ž!™¦Ã $ gÄŒF‹ÆVºÃÞÓv-7Øâ>°Å`ÑÌÇs†E¾ˆ4}ñê$ƒÎ èÏu ÜÙMsõJ«sÎ tK#É<­‰Ê^Eädƒ±ƒë)w§nÿì=,ÐvJ(Ö&0Ž9ó *íìw)S#8:Øì•멹h±'Ñʦó…i!^3·Üö°…½é"•­cEs)ø³˜B\ê†zx!ÒT—"-×á‰GÀ•nÏ HùñÁ‚›ÎÐ̆æFéIag²Â>×b•ÛõC=®Å*§ë‡û[‹U.×÷¶.îh-!MÃý­èjãeý0k±ÊÇúaîÕ"ía] ó¶«õ½¬mÑýû9X?Ø·úánÕ«<ªÅ*§ê‡ûS‹{¹TgxS÷ß¶ yS¯éH-¬ ìs–ASp B >d† äX’ á>Ã×M“PÀÚK§¼ ÇñÕÂÚ|^¡N¡tH뙑·e® çâKÊ“Åþ³<íKpÞ€ ƒ`Þ<{¥8"49C5¦ª«ñÐHÃ05- L±-?Î q¾À´°±'hÑ«ø&üÀ&¹½PÍìxØg¨¾I9£ÖHE“ùEl㽯´rɧ)&1|øÜ2_Ì33.ÑžÙÍ šŒ4èPT;‹ç@ &ÆœÈPæÛ€F{É dÐX W+'ßB«xM4?TK‚RI0(}¢d±±¢'¢®PEÝ÷r9ÒÍZAu¤gîgvaFÁ4kKgµ¹×ÚÊI`ã.¯VÁåÅbƒ‘"ƒë«PZ™ë«u¿õÕºÿúje¯¯VÞújå­¯VõÕÊY_­§õõ{X_~ŒUå)ÿC¬ ò è"3HæÜèëþ ñAþX/æ‡XöãA?„<ÙáDN½x”@ÿÐ)Yæ $ÇT§VÜ W*š(ý_âxœâë˜bx“9‘µ6JÀëðL£¬«¸mc¢ÈpÈÖR¢Bû<‘þo8[$#”™«È79és–tv(p',[n‚Í"ªoS2w²ç,/%\;€‰ñ˜rNa çajÊn˱ˤW²ÜPG§n AÎG_x€¥în4òlÇ®ûÄßhñz²æ×LèývØQ:$ b±:rth¹{u˜ø˜‹žŒµÔÕäèœlÛ%'Ñl—?ªO{ ¾^|¾‹EIŸñSüs ge>¢OŸÇ«í×9•çmsBèT*4åö—Âýg(5=”*S'sn.™àA£Ôø- ó†³dº \øk|žÂcJ#JO>Á«ÊãädÎîñ¬þš#5káÚêœ÷I oD?Ÿ~úY5Ù—~®&²‡¾”ËnñZî'uH§áx†è\¡0ªIܹŒ?™Ð@DDš°®DôÁ.]{ ÈZz´TO0jçË;Æö,Få6F­íxšOó5ˆ{ÁÃAþ©kˆQ÷ª/©¾,[;׎:û¡G].ìyŒd’üeF^vSòäÛw8ª«$_êC&¨…ö—⯃¨Ïa»x¶ÀEóÅ_B§°Yã¦w¼GNæ(@&©ðKŒ½w¥v­Ô¾ƒÉtœ:;¦Ô¸<··£›’öU¶¸w;}«³ÿÕ^W/óÂlUý&e`§Q ‹˜§2¾T~ xÙD¨OoS¨¡ŒÑw³„3FKaQ 1ÿH]\tâ…@×þ~¥Y•}®47ðª×QîRÓAÚ( NÊá‡ÎÄ–·ÄãþÁ˜n6kC¸wÈdOü E;ç»;4Ð«å •h}%NÛû§Ål¨ä !m*óÀÞL÷¿ÄÞœ!ì­³AgHšëîÒŠÔ2véàž^|¶¡¯±I{3$˜ô‰DK1$Ê( órUKÿÎίµ÷ðþ_pçWÊPhÿ×;¿'ßZÛ6([Á¡ GÐâpôY=Ì@]‹‰;—¤ÑV™c›±~5 .”ôIèv–´ŽdÄ– E0dÇW벂E¬•¤²ÜÖ“lÈ"éKI6üI²y’l~ÉÆY¼OâÍoJMv·ûT.+Aç“r+Ö»´5ó¡HVžÚaðKZZš^ùõuÓiI*[tJMåo%I)£²ðAkeN-³ºyLs ï(¼@lV-dÛ†vlù„™FfñÌÔmq8n Yñ+9^‰[V© E]4=_qÏ$‡–Êp|=Á⺵CïQLJÙh/„ýÔÙNé’‹|”çŽWºU®Vg|ŸÏD§OÐt‹u< †Éå;´Þd!¢«Që}ú•6Tç_3 ú Ðm<«ñäÀ37ž ¢3)%tš?uº½óŸ½ö›ŸÈ²,^Šnb"è4j4qb]Zµ, ¡q'ìe¹Ïý|‰‘QÝj$›@CÝi¶ %ÁdêÉѳԂ•ËVü×ývÔ:Ì“‰åty1ŽkæpÚj]Bjïã4ôý,'— ]Öð¼z¬ì¥åmxë7MÆ,Æ“Él:¡ÖõõÖ|yw7-¤Lˆ¶ŒI1Á]@Ú‹v‹xöARÇÕr±dj)çRû^»ÿŽè!Bz8JÅbPA[Üö, Q²’í:±…ôa“GóÄ@õ‡ø%p8ºMCÏx¦ÅÛ#Y`xŠkd0äz‡ÌP2ëº ôŸ0Á£àÑ9³oÿ“6Ådâ½ê"ÝL’_1ì…•ãíp ãCö2N(4™*"d½ãνhÙÖÄO°~¢òB•Ÿ þå"IYD= #$õ|J»ùœÇZ?ôÛD [H oÆÃk-JpLß|^~ˆ#‹øöŽæð ó—ÍþK«ˆ¯_r䣰ښZÆzí#=‘÷â. )ÄQtfüq5Ïã,f%Jªã®ÞeQžY?÷D.Ö FîÔ[‘œÃ‘÷ÝpäuÖ‘,‡Œ˜îÀRÊ´ÊÞÈ€YËüà^±Ì%ˆ¿‹M"Ý¿½]€uV"÷"ü‡‚ŸÐe°Z¼"”÷EguÐØÝÂT2¥ù½Y¨lɧ@ª Æ*`³ÊÊõ¾™7{¼ÅÅèP2·_=Ý×.þC§?âp‘:pçû`͉2p¢Ä¼ˆ!:HSf´â½´Y„)9´ì¬FPWûÇ„W ªSÖIÀ|™>Á`là~†}E™Š—¼%ä\³úXÃÃÔô…qgõPo¸N@Vm£ %ç¾ô†ëtj¹7)‡Õ†ên]ì}Öò 3à6å{#Nhj­á8cÉöY*2> TʺÜfÖ0ݸ‡/2PqY°Ç‹ ¿íjRþT£œv›¢Ç@ÿSqM:‡¯†:—%mKi`.ZaÁÜÄ =¹—»Ù£0å—OŒ‘Ò *V¤#pòPi¦²™XØo¿ižu06¿Õ®r)D¼@#Ý ²|v;=°Øÿ‡û$olN'¥p_ίàÀÆ*›«êT¤±^ª±ÍúN~ðT'2•þ¬¾ÎVi¹=gº|Á.¯w!õ°hGÈG@HÎ,4úAï¬?pF+µÐÈi×.8rÙ Gr›Zcp²E98µìÍúÏHÁ¡½ÐJ åŒ J¾ $bèÿÐ>=ÃX‹úËta5¿…zmÆq6ne掟?ž´«¤dʯ8ûü­K,2ÏÁ[N~6hR¸–~`@ƒƒNGþ¢ª¡³—Oéå‡Þq÷mU­¼ª8ëöMP›%¤ª×NÓÁÑî)3%®mÁ¬²ÇóOXº»ßy¨¯›žƒRrôO{9o´0_4/Gvb è~ÿ§7'(\ÿtŽØnJø†“œ €#¸Ó˜»o÷ôØi®ÎÝŸ­ì ¿”IFÄë 2»Xzð!,¯HÙÑ"¡4ž¢9;Ì‚‡ª2@‰µ-¿ÑEº»3¹=€µ¨ƒÁúÛv=ͧS)°ŠŠ/(­N7Casª½v{hª¥.Z#ˆgÕ·cÇy!âðHHIÒAÄ»ÌCæQêŒ'^ÉI[p ËKÜ»³ž#6(·xÊe86O¦h¶!©c1âÄXé&ÌäãÜöÜ¢“¯ËSR”“ošyíñúÐÄ{XÍ…·‚V @ ņ¯Kç žj:ÓOš œåp§|(i.€†À‹«˜F¹KX9À5uÅ»^Æ\S¦g±,ø±&)4XìPæ«Y…_SÑÎ/zùÌBX*‰e&SD†·@·2Ð{±÷ÌŠ%Ó ÖmåÖu2?åì oJÖ¶¨­¥²e¦_¢\NrhVv'Ùá@œqád‡Rýír>e¦p §|ÊNàÎø”™¿)#áSfò¦Ì|OªÆ®_cEº'UïÛ@½Ùžô cõ®¸âœOy™É«Tÿø¨dµÙ'p‚|aMC˜ºT§€­4 À _ª¢“òéÞÊФ^DRgJ(`w£ŠC¨Î¶D‰ã 6^â½vU”ž‹ßnà¿eñžuCdõuà—uòçžyùëSjÔמ-uvÛ{š­³ÐSÕ/yv¬Bþ7ÈjVKÖIPyÕi,åôNÌš”Ò:ù¡—(C1si­ª/gSÖÞø Ô¬´üôwte´´~¢OЙ›CÔP^§U±Ž]ÎQuôõ¨WeØW‹düE#hJÕüM:Þ[£ã_—ošÐÞÊ>yrŒ'>jÞYNïà C~V‘ äÊQé^óÜÚ0]Û-¤`ùŒ×†´f·ÆTš£]só‡n*[ “šž*:¶öÏ{ å)ù‚v@›âÓ-ä[d Ajã]±!]‰R¯£"èÇQk.˜Dë}Q à>’ìŸÝc8ZG„Užk°‘² Qj2 u8C=tßÞ#¢Œ="e\Ü!ÈŸàÇÒËêa™}%”J@ª•ö°„béÈ`ŒÚü`!–/ùëØa“•¦‘6"²=DSeBGY椫˜cJG1‡ÆÓåü³§d¶D[,ÖqÔ€´Ã ëÒhŒ†î9Ó)Eð½Màý­§bøaš\ x¢b°PˆÜª5"•Â.äe5g«b<öÿ¨:¬W¾®9šÎ%iÝ;»Y—ÍsôA!q# ^Ø ?çð I«€&L¬ÀnÙáÁTjûÜyî>ä1iÖÊ阻ӉŒ”lVß2Ž™¾ö&˜ƒz¹ †pá3Œßl,|¸²²^‘]pÕ”nÑ£0ž :¡†1Ò¶¹æ.š9Îp{îÎz®ÜEïu üÛì¢ù‡\ØE‹¤@;/’ÍÎÿ5ÿð[äÿQù¿/»/¢¨±‰ù¢Où¾Êç)ÿןúcò}©Õ¿jýÇ—ÞúßÜÙzZÿ_ãëÝÍÿÕÿ¾”—ï‹åU•ÂȾD0Ùž.g ¹%’c•eR§‡¦†ÂÊK UµÞNÇÓÙðr*öcÔpœ¤Quc¥;ý“¶ÝÚžÙ‰¡2S>)ªÔO{¤#ð™”kàÙÌLV"&«müj¥(rü+ˆ”Ç–€2±×اœD:F§+Qñš<ãv@yL–N¹º* ¼“wÁ`éTdxöt>§÷Èe·[»ø\£ *så€cÛ_Ƥ˜³«87F61à †Q'—X€F±ÒMDô¹ô$#_qºÂ&ï¸&ž 4ш y¦ؑт)^-€Dï[éܫƲœ$ Sˆ+*¾N·BöLuŨŸ?ßñd¯b¾(E0ì5Ñ#ƒ)–"r ™L‰U'‹çŸ“Ÿ¯ƒ>'‚O=vš ;µ‡ !+ËG~Š@ãëçùÈOòlbýLùi>Ü'×}ܶ{Dn–ƒ8Ûa×ÍñA7±ŽŸ x `^†!ž†©”@ϘõÁ¡-Å^9Y!ܘH¹cÎcÇuþ¡ÙBè““2Dq_ÙËÜÔ!ïÏLênõç÷¶(ò²›ãÌuè}™N·aÃfÞ(’sÃN¿Ás˜xÆ“ƒ#7û†€ž:, E’h~¶=ûë¤\ñSè$žy^x~ݰ›ªƒC9‡O2Û„š “WÞ4è ëæîpƒŸZ½nôÀú5»mN|ô9'Úÿ}Ó”Vî‚äç±–·`¶7E¶ÇG†;E¶»F†?E¶ÃF¦CE¶Ï†ò¨ÈtŒÈsÆ0ŽÝ*™AgÕýνX08ÌtnH{7ô¿ç†\kpÛn·PÆ93ßÊè”F4.âC*§GzP¶‹„ Þ$ú¾âÛ¬Èc Ì|óq–ÐÞcñêܽÀÖ]êF섬ÏÒù½ý^2˜”Ÿ¶wÀ˜¥ÌËŸþ÷E®~èãÞÿ|ú"GÀ÷¸ÿÙÞ~ºÿù:Ÿ§ûŸ?õǾÿù2«Õúß~ºÿÝÚ}Zÿ_ã#·>ïþÄL²W Ø5…Œñ3v0áYóJÇØžôªpÌò³AH;ø7d¶ÏÆû™^,Ú (íÆàMbۚǜۤàe•4RÛ“Ž]ÇÖ.ž gê‘ïµͰ Ýiµäß7æ‘ü›CO䎱ÖÕ ¢¤ðáߥ崤"ë>Âáš—oç 5($›\÷Ù7s(ûrξ™kV*ó o¶*•wú¹ïݼ¸£®Ü÷î®mÇ“œzV²CŠjì¹´©,~s¤Jµ˜%À}ÊEq§ÎË‚GRæ  xÇuˆe>ÀSw­XËc£FÝÎQÚ`Ël„t ó²"4qÉê¤ê(Ðh"ÖŽ¡ì«/…Ê{\‘†Î-ŽtUI&JòA™tUn/h€J)@e¢ ¨gj…µ²½+HEÍæ@ض¦¢ƒ[ºT H$-H Å^nF>ÍI®¼¼Œ ßV8)p•¢·ˆ'VZi ½L«Ö«=ÊïH8x s¢V7æHQ#4%Ý2+µ:wŽz‘Iu‘l¡ kÙkë záçònŠe£ôÇkeÙäoGv§/°å³רÙwØvoVßd‡¯±%Œàe6£m‹Ð†™äÙøëMŒJËW*Akµ…½\±²ޱ ;ªŽÜëâx¡Ó›“rûö\M†Z¯SÃzB¦>]jWÝLgå`–™3ÔäöT³§Œ|7v@]º á`èis $$Îþy‘Ôõ‚¶Àû¶s™ˆ‰·7²|:¹OÒ¶Œ±0$@Ö‰°/%pã|á Z­'éŸ ¿v`âU<}/>j‘ /™¥V{b›U[†»^hXÃ1fXM ^y9BuÒa {Ÿ,dßv‰(Ýu‡×sÌh¬É?§xý³ØÊ¹­8+^ã° `-š©ôÊY,Å„eæ@µ Æñ\ZP$× žË鸈¡ï±ÛÛVÄD„¹‡Ó¢g¥á\Öê$Ó¬=µ–\[Ç,cú«¤äòt§ЪºA'Û¶9ˆ<'ÓUÝqî*)ÁøKûÂä?jš.€e&¤àpÒ7hÂÍÁ.#ìzfêª.Áé?G€÷dŠkX´qõ¨Ÿ­T†êˆò ÖCQ'·ÓKœ±HÔØÝT{òhz'×›ÂM*Ûÿ—½woj#Iâÿ¾ýa‚AâáÏz#$±°XÂŒg.î64X3Bbõðc/î»_>êýèn!^«wÇ€TU••U•U™ùË( «[8ª˜îkÒæ '2«%õ¦Æ2ʆE-‹+È¥AÓ§%óæwÅ)Jå 5ÊŸÆ 7Dá·FáÆhøçìšvãµ¥£U°ŠïÅÑ $áÏÄáÊtòy¯©y]¦þ˜ùX’ÄT§ß¼`ðóЪ;„æß`â¹O䮺önÁÖ_w½….ÓJû´®±AÃÅuXóF¬ª¦þ†wllÈhlkæFNmz¸éâdÀþ vwM§.½1L7˜:Ã)DX®*èð‚öJaí©K6TI\ÿ„¾,YÑÔï<œÓ–í²…Û„®y^h*½qç’%YRˆÞШ£?W^>´ÒˆÉgQ9Ÿ¾fPkª”qD•n "Ê6Q`‚çè²LBEÝ>€ÖÔÎwŒúšt2Ý J ¹1 &¡¨¢iMmÓ¾é¶?Ò,=þP;Þ`ò`Y` 3êߌú]¾„v~«Rî u}F¯ËŒ€&Ÿ£«)Ó3&?ÍÎ'ÿ1ûßdûlz @QçÍÐÔ'ªw›ûSÏTùÙcCw3«¬™šö¿ò 5ÉDÜD³f€Ñá‚"x/}RØü9»ÿo©¶òýü°Â¶þœôΩ³©dÏ?›Ý^bf‘×Vµäêó¥êűbÂ"N{ç°²N-u&çJ«dîƒ+ênŸ÷ÙT š"ˆ%¯Šè5–ܤ½¡ѵ’eEž§. »=UBk-— õl('#ñÅîÑ]áÑ¥Íæ¿pþ×ë¶o"kLå@^YnD¼„ˆ —VzaÃ2ï)Ÿw´,-Rޏ‰*eÎ컇ӊgá¨Zñ˜9µ}ÇFÓ%J"/Ãv8¯¶1N ë !¨©ªAØ€Æ"T”hs´CÍ!¾ü³HÌ@C=‰’‰¨-mL¼¤°=eWlmÎFS’[Η"b3Þr†#gRÓÄ ›¯pebo¹¬–xHÉðëPà8=³×˜¯ZÉ>]8Ш|¡qŸÌ®q·¿ßÒ$9¡sÖ$N…O¥áV’J]¢»ÊÝdv>Á„ãCœJ×)ÍrãTÃÖýœ‚°öÒÂÑÎN¹(dÁ§.…â”§¿v§S¼HÀ8oƹS0΃ñIq‘4ŒYy}!È%ð§€Ìט"f´Õà¤Å‰ ‚éS`éC‡Jš1îW5ôµÄ}ßúbï8©l*¸yë+ƒ"ü[[e"RÔ­ÊRÌ wW£,TÃl §Íö'9íQ&Å í$ ?í%½t†«øëÁ¬½‰ÜÌ6bÄR´k‹ì&6],;Ðé%Q­r‰Â„‚v>:'£àŠ9·:ßà6æ\³lõ~wûƒËŠÝ=®"z—ÁÍÏb9^]Æì†“ŸðÕ%ôsñÞ8°ìsã§„’ÃFðSt –"dxÂHlDZAx¯NœhC;&)„jõÄV8š[ÄÉ!¢ÛòaƒO'fG»àÓ6 2 Ød¶_fž{Oùï¡ÍªÙ¬`ÚÓaA1YXG !³­Ku¡D—ÙÛ(¬šÛ›Ñ ,\`k3iF–Ux`xše‘ȶÀf²²ª>Ââ[›º¬¹`nÇWQ›rÞ »€îÆ{ßîÄ›o¶½hûN¨»›Vfuô¨˜á݆y {Ùò+rs8\Ç9SqÄõ°*7ÃÃ5œWmWœiúá9JT×+hDÇhzÔ(××eŽ›J|¾Q´½PB­W¸®—6ƒ(L>0”—oÇI~ OG¥Ú¦ïø2tî…í,ƒbm7÷Y{©2‡'çêÝ7Þ©«÷qoø×:‚ƒ^ôñÈÔW}QáE×E < ²4—v²Û0Þi'.Ë™‚wó¤f®d§fnÞojæ<™l ²× ›F! ˆ‡sWe¶ã@¶#«®ØdŒcÐt{Eº·„ÕòÉJ\ÝÁ ˜èÁf›èn¸óf6¼P 6.‘—y›ý¢hH~6·8ª‘ÓøŒBijç±ÞZá üŒØu#jÝîfçMV7ã˜CužŠ!8ÁCA±äÞP¸Q;±‚{¼Vt#:bÂw?•BèܼY¯Z íËvf^ ÁÙ•Ë"Ër¡¬KAØÙè£_Pc„N=ç2¸û°wǵ½ôæ&”ágïzÐ&o{ƒAÿº7,'¿þ7JÞö/{tÞ3 ö&Pq§Ÿ^~£Ìµ™-2áhŽw"Þ5KwÃÛ5Û”Õ U7Ú&þµytÒj6š§p8lï<¢q7iWËg\.õ,PŠ—WNŸ@'6ïäÁs17áb.do¨“$°Ì›ÎU*|àx…ÖJQPðÎó­_1A†5¿Å¯âoâ€þ&÷÷®À¿Æ…PvbN+-§…í+=Þ9ìÑI,Õ›PLæÍI'ì1öxLQ:l”úŠlNüNÀÓ3ð¿uÅŽiÆEEFôXw¥¯ý5«“˜ä‡‰—ŽKéídEt1}EÔ—<£Ûžíêľ’̆ÂýÝ<åÃâþ ÃÖÕe(ö·MùÔ¿3=ìµÄÝ´<ñ“,WŸ¡…Þmªˆ@Ñ¡¡ Ÿò’““jg~Gl04ûvJÈ;ãuµ¢ZÄWƒV˜¢ "¢ËM4ÎËUØç—ÄE'uHçèÖÇÃ*ØMÆÑ—™KŸ=7¬15d6ýÜÍ&Nw ßpbCѦް§}tÒOxx ò Æd ÞO8 áKŠÎ÷eÝûKÄâ^ zýº½N‡éX]#ÎÇE F¬ÒxžWWÐ8êè¬M 2¹ï÷§“tp%»¦GÔ¨N(ÕI jÌìa€©•éò¾©ï ˜za\jAéÇE¦N§6fnpj5¯s›•D¨_ð"~"0ª½Ä™e _‹Qý5ŒZsb¼iiê§‚»âM 2—ç›&ø.µ³Šà:Ò W6õÔjhƒHÔL,-í€JËöÌ -< ºtBÓõo¸õõfƒiR[¿Ð'[µÿ´šíÎÇÿ4O;ûoþÓ¤BÌÝBW‘•²!ó’´PÌ2 }SP$àÇ5Ðéqô±¹‰yñk„£ßWºŒõœô/g0€¨ÊpËAÚC·ÿ/ ¨Y e”ࢠëıN<$kÒW`>³ƒ:z wÁsàõ@#›²px5GŠ*%^DÉÒ¬D8æŸF_trµ%ó²Ç_kuÇU³Ç‘ÀrnF ”IK‘]ĸÂÛÈ«8:Rø'飤bÑùŽO ³ñEÊ€¬‚Q”.tÂ_Õc `*)‚~ðß÷ü=èwñ»à7-‰ý,ö}Hß5l}!ïÂ߀ï{E÷ΪOª¼¹àÞsáz¿òQÔ»8¢w.œ·z¾9u ½“0¼O}|œyà»3»í.Ž×]vßV÷Ýaº3ºïÎ]—»$÷œhÜI w@® ,î$ Ž;>L,îEa¸Gà¾ðíÅq·ïrû>ж£*]Ðvc»0Z¯Ê>ÉC³/p@ŠÙ',ûèÀÙ@ö†}.j½ U/Í-Åë=”zwÜs±ê#õjRäÀÔG°éÝ×3ê³a铊ñ‡¥v8E.«ÅO%l‡y#мíý€ù"8ùÆ’¢×»!ì›°ú‚P1pý D}©ÀÀÕOL¯øÈòÝV+ %>¤Ê‘c±Ê;áh>¦àá×Óo· ûʽÞ²x† f7MmçrS¥7=È]ÿ&û¥BCn†ÅHÞ¿±º²®º"7+%ìý!^} k°ErþsoŒþ¹>Æ€ï»ìeÍÐ¥¥Ÿè•…‹JÂ.Ç®ALŽZømi»$G [­L·$?_ÿógR‚…²Di5J" ü:Jü²²b_Ï|¼Ë+EŸÈ3EËQ—YMG¨Ëô«¶U’)Y´FÀp“f#¤‡Žº3`5n£V6»enS¼UEO ¤jÐsV˜ «uWýñdÊMCŽÚñýò«c`'RÓk¨#]6íIŠb#þª =wR(§fµ÷`¯@ç\*)¼…aþÉ?OÇpèý 4”S¼kLÿ :‚etúŽÕ²á¥}r)±Ô¥˜Ë£Vu°1pÚx¤“ÿާ¥!ÞYN½›‹O%Ío¬NÜìjòÏ ðOs^½ÊÊ‹Sv«™X.Ò12$AxGHG{ʦŸÅkú(v^£È‘ÏCúuÊgAìþõ8íMÉ×jðc¦ÂW£¡Ÿ á<å¡d“< DŒ€[Ú« ?.g·,íËÍWɾâ¬\Žæ† ÞO{céšuWnà Òî‚¢‹Á‘1öüSµüsƒ}ƒ­ui¨¸X&*ÉO¼e•þøþßõÊÿW†›ÈÑ_ì¼ÞΞ¸ÝBU·ã>´}ù|"´½?<7´V:Mþ€!é®ÖÊÂc»Ë/MÄž4úÂ¦Ì #o8è†bPW—J.ݳÏnhûƒ"±m_‰WÐ6Ãâˆ[p‹"“ßÄi‚N•ÝêèÕlL®„Ò€¶÷¯Ó±Š§êÍd˜Kpãþ[ìÍeož :¢iλKKQ‹ìÒÁ=½ømRŸc“vF(éà‹P¯‚L”±!+úVÄÚùÕíExÿ/¸ó«“c`ÿ×g‹«ˆàái)ØNRrñMÞä©¿¤$\ã·ÐõksCä¤'Š{‡3C[G œdKœÂðÂs¤Ò£M•Šú‚1“h“B³­-XH³¡°Í‡ÒlˆøR³Yj6O¢ÙX“w©Þ<¸zS‘x_WV¤¢óUF«Ý.g ±”{; þâkKê6N=ªj_“Š«NÞP>•&%UÂ5¶W޾¸6Bu0ú V&Ã; bè Cˆ cïÐ.”NGz#5¼aÕ2æ‹Òl±0Ñ•©Ýg*ÒxýSŽíZtÍëJop=Ãäº1Ó¯PÃ{C½2Ñ^û©µÒM)‘!W˜OÌV«ì ÊB§nÐTt ƒ+£7'B‰h+V¥jŸþUÉû¯±AýÈm:^çÁÏìœ2RÎ"t¸Í­$¯T˜-´@Jéh9[V¨*Ž)2§å·ó&ê²_#Ý*jâqY(Ñ—+.¬EªD{n=ª=É3s4;¤ëÚb†ÅKAðö>~`l&ýs±ó J—ëh"È mðÜúuCûVÓáçþx4¤Úìm··£ñ4Ù;þPo퇉œtöÍnó¸í-‚%rj0' ìéX_^ͦ3––•LixÛÙï¾%y¨¢< #BC6Úõ[\è¡f%êÕlˇ)µkP€ÕŸÓW„íBˆ¨œ,‹7}h€õâ— ‰c WÈÈ!à @V8Ÿ°À£âÑú`(Þîã{C8H/™¦Ÿ†ýÿbJ@E*Bã 7ƒþáò2èÃŽ,üñ²Úq'Nz[ã ñŸs˜ ÿ!K’°ºð'Èá—@Zf=Žq„´ž/ iŸ¾e­ ßšÝ}’„-”„7ƒÞµR%CCF&_:1PÄtšÞÜÒ‚\zXlñËÐÂÇVo«¹ é‰ðµ± %®L E&il±JJ²áö¹Ë<=îš:8 eŽ^ZXïå&|ål¯];Û«ˆÐ6lÿ)™]½Ã´™ÜT뀚Yœ*¶¹HªØ'›$º*,a0á?ó&‚3õ«•âÕ cé†Sf<©«A(˜Þ¡i_ÙüÝþ$‡SïÀlƒ1&ÉÀ¯ELÑbš ­KÞ‰x’CçÉìIâ«ASÆMÀdæß`07p?é¥íˆz|BÀCùצ&‡/Ì;£…Â!LÙ½ÜMG1ƒ %Ë^zHݵoÙ–”ÃrE6×F10;«ÍÊú!`vŒîX}‰â9êŸAˆ{*t]®3ÖM»öå‹ÅŒ®idŸ¤\‹T…!UÜëœ žõ©Á·«áC÷²tÚ’'0›­0a>¥pz²»ñ^èò{͔˥XrošíZë?íÎ]æ5ËâƒÆÑ‰ü N?ãh1Ä‚HÄúC@Zâó8£Â“æÙ:Ç¿¾U/{ì4ÁÆæ£&›W—…¶‚U‰æCÁm«ŸðÁŽÑWøs7›Á (ü²œ˜-ý9£¥&S è/˜ý8ŒœH¯7)¿1£’Æå·fä²»sbã;%4Žg f¤wÊïûŸƒºÛ>ä ±Œ–NfLyßê^Úb7;qœ{œáŽ v­ªL„ü1кyw9Œ‹æòÍJäûCæAv/ˆŸ¦úƒÙ8U÷fN>c,òeŒ×þÚ=Ïw,3 Jжp gØÑ_É'Ðiû ¾s,4NeV3œÿôÞö Ä+ÔÓÈtFoÐÿ{ñ Á×2¨’õP¦¥üÔÌêæQèPSVQgÃi€î„6õyò7›Ó7”ËùQ8/ó7ù›—é›#é›+:Ï2}³îòß#}sõ¾w™¾9˜0cæOß¼[¼7 §o¾¿üͼyÁLÈwÌÚüøùšŸžf@cÀ¨’}=Æ=,3°è§ô† R›NÚD¨]™iš£K£Ì‚††Ró lêÞqÖ´—õffÍ‹ÕÛ¸S½Ù©­×Hm-¨%y¡#ó“蓈§¦¨þGh4|“îÙKï¼½Y¥å.S&>Pák¥.ºãDiTZ>Ê໎3“ròm…vC™™ÛߟMbæ5#WUIOjl—§Iãl&rU7:%“gœ;$/#09ëàóøÎ™¤7¿ íp6Ñï.©ësOæúQõOìKÅ’ºZ]¤¾S6ÉÌ2”É|ÇÈÍ´@¦PÊ%g PfHsáOœCGdˆ¯ÚޏÔ8ùêÃñ|´;>m{GÈJÛù y;ÍüÓ«êƒ$€+˜ÿñee÷eµ §èÍÊöVµºÌÿö(Ï2ÿãýèü5ûóæe»Zõæesw9ÿãáÙnç<}{ÖQä,î+é:¯_8í!Ga-šý/I4¡¬ìeãÛÑ`4î]Ž’½}謼€*6ÌLo¸kzHÄsÿEóùIv1«… åC¦Û3ªÃ_Ts– ²T5 D&t®ì©Dr7ˆ&4tk–Ð]äÙ@§ÿBnï—Mw„ Ë-{B—„/tYxHg放Ô%åM-ß™Çë6t’ wÙÃø¸þÎ&ïÎæôh Qm ÑU^Kú^¤âûŒzŠû£îw án£Ö¿ՠ+l…2‡R.óîLg¢Ê³•6¥¾'e¦CH¿¾Èº¯qA^ƒÕ¹€`ÌÁÍbGÙnhž7_Ž/ç{—çKç;ßåøÒyÎw¦cÜY†s›ò¨3-[súsÀѸ¸;ËûYÿâ/‰º€ÜM-SïûI©·-|&ôBà\ý‡6YysOÛFlþT­¡j•UÆNО…ê ‚%²•j¡Ñ~T$qÕ2;½;#WÍv¦#ûñY²/PYÐÄxj¦éX®‘ìg‡¡Bõ§ìÃá9™QEèÜL_*ŽZ½««ôÂÐp$|Âd Ê :éÎ’–cö}[ùQ·¸×Æ9+›·ÉáZˆ©bÜñKt óÍD‰°È'"‚Äá£ÁJ¤orSYà}k»#šð¼Á8X>OЉ ×Àêmúm¶oÓŒû«û&ÿ™VïßIç;¼;Z?4Eéð¾ä ¾?Âó"ö§7ÉNÎ;¦»]…±LÁ«kðëzR±9-Þ§].YÁésÅ# šq;¤&â îðd]z—9¾µÛ[8yŽ·œZ‡øÇá×–O£‚í¨˜S]ŒÙq#ÃF¬ à‹DhP\]H\žñŽÝŸ–Ü£ LjDܳºÛÝhøQ"%‚ãœ6ˆ?«Æ0zÕ}¸½$ϰ1œuXvnÜ77MF[?`w}¶ªF¢ÂÀDî‚N*›Û¶LÞ*öâ ¬bö˜¾È¡Ï%=ŒlF5¯ä=Ãe³KíL¦Ê\&©¬E@ä=èñ•i᩸7§½Ëo|:¾B'ƒìînņ{è­;ðÛö¦»,EíÚ°×>„Y{ù|,ûÿøê¹Øÿ·—öÿGz–öÿú1ìÿ4ûóæÿÖööfÕÿÕÊrþ?Êóݱÿ£›îÒþÿ7·ÿwÞ,dÿçÔ Úÿçµþo-­ÿKëÿÒúïðkiýÏÒú/Ÿ¥õ?YZÿ—Öÿ¥õÿY[ÿ‹ÿtË?—Úu2]·ö0J*«AT§û¶,ó?\«,îZЄգ¹ÿáï'ìj€WìðÑ!œLñï#r?ˆ÷ŸüªÒ7ÎNðbû·ø8œîDÛMrŸ=ŽÈƒÊVIp£,8”5BXn«â½q_nÀºVm¿}&¯Ãcîª\F½…Ý*ÇæE7ñøsÿ訬œ-à°õÛ‰tºˆóExc4N;Ý£¿¥SÆÒ'ãÉ}2:ožÞ'cOå³P— $þ/û¨JjxuUM»Žvnš±]¢»ó"yQ¶.Ú;‘Qeu§<â_/p#&§ˆ>B“ã^,6\*i´öx1ä”Y^É6ì6’œV]¹®Œj×Ñ…¡"8UGãë»V†@ë°ÆèvÆu®#-sn-Nê»?P9'v˜óÝÒ<ð[Ä¿§9fŒƒ¡`À Õõ‰éCönË ¹³D|`Ï Æü$Ü“€ûE¸[•¸Xñ~Ïôâñ¿Oô†çu$è~²íÈœ™’»ø39]ß-âÑÄEwrš’ˆ_ÓNˆ»QVÜÝÁÉðÆAO§àMÉÇˉûYù9äéäý¡µ%××|w\« ˆy€ãéÜwbŠ eΞí{‚Ôð(ÿVéß-ïë*}]¥¯«þ×[ôõ}½µå‹‰x ‚2‘Á•Ë_¦Ã‘€–ÎK¼ÔBáçB¾,B*ýã;ƒ¼kÖKPtç:™ ‹Œb¥€¶¡vÌÊ3ž|nSââà›¾<™,*ÆÕ²¤ÁÚ¶Àf®{.{e%±õ™5è§˜æ† Ác>9ͪöóZÇæ­ÂÏ5ÏiK–“…èþÖ•§Ã*µìp‹º§À2(?=еºØ™‘‘‘ ‡Ÿ7r\ò‡Ø]pzàüÀ ú˜Õi}÷d6ÏÐôŒø/ezªö¼Ìð äG.Jž‹àËM«\¶. ¹ &.ì4ÈÏ]ùñ‰Jòü}GB1ìNhúâ^~+Ó+/ǯP4)à]è¹ú¯Yî‚7=~ 8#®Ö×+>GÍšÖ×+¨ÁCÛ ].øFâ8,Ö5—‘Ìaq‡EÝ ÉVŸ@=IÐEÎ|Ni[ÕLátâp:-·(!^îmD®²•Å.êࢠ“ê˜àáq ¯DºÐ‰0Ím JÆá¡?Kî4vöËÑqs\Ý/BCpH r;×%ÕõI=Ì÷× º¬&sx­ÒšÉŸÈxÛÒFrx”§è°˜âÍìD¨$ÆŽè÷êP­¦¸,ñ _ˆÈ_ø0ìa›œlH¨Ü’úÂ&{«¯ó…ZÀm~’ŠkYlE/³p¤ÂsOµl ËéîmU£îýD¿Dg 9·H«G¦™NðºÝÏ'µ ¨]þ)“[&ï@Û@þEÜWXÊy¬Ò&©vúw#bäC5ÒEÛr¸»…ÜÝ*‹c¥w2噆¹BŠm•î] =Üø§èpŸiÚ ô”Î*@k-i¾¥›* ïxšX_ïˆ}šoÍØŽNKéªX&¦óƒ–"JêO³I[EH™WO¨°Eãd'& 2_Pj ²Í|Œu¤R)$ÈY{價×WæRh3ÖãâÙeF3Ÿ?ªa~$Zw9B–¸pþÆÛ™Ã¬DN&S,íôüú¼Z~æz‹ÄçR‡\¾ú…üIó!†oÍÃð­ûaøÖÜ g]@žƒ•ͬ¸„„Ø%| Š Íþ|þ“vGGÊûÍn|ƒT\÷…4¼ß¢ÜD¶Ä­XlŪr¯ÁµÖSrœÊJä,`,ë´Ð -/³+ÕM—€¹oEêÌ…rË?Ï?êÒ¹µÈÒÉì3ý÷´Z†‡?¹Ãj¹õX«¥Í ƒ©‚]‰ óh äýðxkn; ¤d\Îxœ%xæl!ÆÍ½d!Ð5¯[·ƒÞE]•vŠ­JÛÅV¥Øoº ®;Û™«ÒÎ\wïÖGÁ+ŠùŽI•Ýû9'UvCªn Ê>Ûtáì4^ÊÛãðä\þ³]Æöá§Lj£1ëÏž:æ]•7œ#EÈ•´èX²ųe y÷RZ€çÈmÝcà¡>&Ñ.¶Ž?Ö|F¼Õ/p¥¹ÐϼÍ.HîEùå(åÌr|cÎwãY+Õ½]kÏkȲ{õè=ºË-}ŽfºÐóígÅd<1oòh+·g‹Þä…/ä ýû?^f_nò*?{P2‰·QÇ:ºÐqÀŽÿŸ<›øÿ­—ËøßGy–ñÿ?ôcÆÿ?ÌìÏÇÿßÙÞñâÿ·v–óÿ1žínüVZ$ÇMW¤Šïò?6T@ãm­SkX±8ÄÙHæB ¤K"‹P â!`„K\ÿœð]zœXQs`” ~k@ƒ“ –¤¶ºzjü9ÓGoåGøy÷’ët˜Ž{•@@LC©ò¤'!ÒÙae°šX¢c†Õ ®ZDÝÛô¢ÕO'"ô’©ä_ ûÔoRºöWèÓ’yï³â”?¥ò¯ üi¬pC~knŒ†ή…7‹z _,ˆs0_¦cÇ×÷o‹m€3o®J(1e¢SNÊI#Ý(;!IWc›¡gNuGqæXسqB°ŠrPËIÏj¢òÈÕ“(ñ!¸&\“JÄ@®€I& bË=&p€]E``Ûó´m¤À$S) n­ …0>@A€3P>œ©¢Eß}…€.h= %„¤1ªY rƈ‡ˆFˆq8Úsã$ä%Ü)á‰ãžÅ—sE<Ï\Ü:>h6¬øÔ¤Õ>>m–EÇ µ†.ißí®ÿ?š3$7T/¦s–×D~Ü,Q˸æGgfÄmãବ#jëݳgQ;”«È©rf‹#¨::¢ýMÉÊ£idÖt^:¥DÛúkãÀᔤ”ÜßqX-®–ٯ츯ÈHÜ’ÞR2xðÒÞ&DžãŸÜÅ‚y»ÌÛ6ƒy‘‹Ñx^~çÝžŽæ6,7´äP†lºü¶«°ò½šÁŠ„ðJ6é×þW­Uq¤CäøË¸OuÞg?Zå[¨IÓÛq:I(Ô)<õ^Î.È t¤˜«<ßqÛœ ûS6¦j*†ÞE»$lG ⼜”*+p hñ ˜ú«ðÙp]|Š¿”5•/Ÿ0‚.í]|âcžjX‘j••§Ç®Gp˜¿]ÂùçB*’F[pÙ¸„Îô§ßÄží¡¤3×ÃéÃ2e¶¬(¡özÀ'°¥muaKG e7 NšíC"¯t)ÑF:ý}¨ÿö+0}å[Gò*ÅpØÓ˜ç&µ,Û‰ª_µ«†óã»3p¨³p2å ËÞÄÒû!OzýîâÞóýžBî2íÑp}F.3|ËËV¼ÃúÚ©NkTÓðöö¨EWÕòØIbØ:pÛä‰vtдÈGE{'_´çéGžhïÞ£h“ÊoˆD¡„fC˜©Î¼Èš îö›y4ò[aºG„#Š~«0Ü—îMÓHø‹K«£KV€,ÃH /Re¶d Û(¡™­†~ ê÷\†þé·[r/5_ÂâZøïdñ/' wÚŸ¯Ëêróæ&½ìƒR?øö«óÆ ¿«m~ÆÕ ðÍ'ÑÍ'1‘ƃQèõzæëzÿ|„¸nF;Ñçðˆj,#òŸÏÙóÒ»Iñö“msÂ2†…&³[´ö^¢¡Ö]œ]FºÒAŸˆ3ªá´×‡¦³èš²åv¾å¼áÉø]óD’Oœ¹Ž°&ĈšQ¤>4ï^£‘Iá2‡ï]JHËKk¢è7ɈŒoàx­Éý+l]²ù+~õº"ɽÞä¯^ËVÓ²c4V¦8µi'­•Œöó<y¢¾4N~±nú\f{z_ôÞ¤H½-lÌÏ1þ{¶|Øìð ‚Œ3›{F~Ø,ÉäNAX¨îãÛL¾ª>,dÔúŸƒ$0÷Ÿ5÷ÿº÷œÏÚ'„‡´öûæ}]ä(¿ˆ/äq)@U!£àÁqrŠBÕƒºÔũĢ˜8òÑéà&„ØGMåMÂç»{{Þ…ïÄY0í#.ÏKNÝ2 ›ê¶üìöeêppZ&¦ñ9«ÁŒè·p³«ÅMi¶8ªÁ4TQõåôP=X¯$“iz ëU2Nû tN>ÐÅ5QJjã‘ ¯°ö-/w²'1'ùcq?S^dt<.._©WÞˆÐ,Ø8ØßÀS¯½M„Rs¦„zxnlo†éÀB„tB/ ¦&ëF¼Ë”cò»¢i:W‹LÛÑ‘+Cô÷;W¦Š›g“ü©°óHc±óìÆÂoÑÆ"ˆÄÎOȈ—)Œ×÷bÆ»ócÛÿOhÿÛ®lnoWv+U¶ÿm/ïÿåYÚÿ~èÇ´ÿ=ÌìÏ›ÿÕêæË-wþWv–ñ¿òðlwí-¡S¶ËüÕÚ«,€Å­{ß}ïpm®nV6ÿ±€m/ãÒ̳êÕǤW+q]sšôZòØ:1ÂlU.pêɹ¼‡Ÿ)зœ\õÇ“)xø „×½5KêþMŸ“F¸&§é„a4@/6¾\Æ[W2ÎÉmH•Cùˆ…CH¸è|–‚ÏÛFÖ•tE†þÊVƒôb4Ä›q„Y¢ì+ª@¼qHÈ“}†¦Ø"€š06´løqÓû+•0Áv9ޝ»£±7C îMÔup°ŽÆ2< r*—Ñ-V +±ˆ¶£QÀÖÞ€XŒÓËÙ×TYáÅ<" DÜ¿ÁI”J&ô0?mïâ›,êQ‰×øÞOpŠ Üíß»±t’!l… X ÓŒ\Í·‘¾J€mï÷¡kƒo ÌÞ:æcޤx24Wø6<`n$ÓdŸÞÚØØ(·}Ûê+)¶iÄrúŠ–á¯ëøµaúL•­*Ï,X(¬ºfÑ*–j=3Ó:ß0«ê‚ö!΂09–wëíæ аwħWé8Å—¼ ÞN&d~[„{yá·}23IûjÀ̤ ¬&(Ó¨J1Æ)e‰RF×É Ch>õ8q®cž™ßa|)•tòïäO"ö§’W^ù@„é Žë‹q”×X–¬ýb®¨ÆÁtq³²[ Zg'!ó,-¸l©·z¼AÍ=)ý¹Ì{‘Çz%µB“M2*JÙ(ˬÛ3(ÛM2ß×ó¨Ð¼°"Äy¡q¢v'¼¨8ƒZ{ ÄžójôÎÛfä ·ŽØ¨ëE¶ÎâA.¢DÞô.)Mx[l]köå$öÖØeµ¾ZM\Øü:OvtK"aÓŸô'Sáe©‰`tv|#wÝPayx0|¥äSÏ¡¾õ{¢ô«XãN(:Áë(Ü"ÿÐßêwé[üï´*µh޵;å© ã y *–ïË'Ô*Ìm$™¶üÁH Hgƒ£:NÖŠ…‰¾yªL¼ó0rv¸tH˩㠡ÓÞÔ7 %E0›}½„žE„ ¨Z¨F–ö0±ÿí™z’`…‡(S0"&ü^g‡R<1ÞÈlo‚`3 2 èÊ`Cʇð SÙ ÕÀŠ…!]ÝÓCõ;þ³¢Šà˜qSWëXLüþG²²a•Iõƒgi•ÉФên‹|‚®Üž¨Ü|Šu¢Á{ÔäDûweÅ© 9’CÙÂqòŸ÷&¬já+ûÍ®uhkÎ2ÊÉ'±ÓÿÍÖï' X Ê2+TtÑÇý;Ùëîã>Ág.<õM¿©àOãl;Ÿq<ëÖžÖ¯ó·•ó¼+DFv™Ýq¶ˆÒî6Zoj,Â\ˆUs‰A¹ÓãN1.Aíüegq?öqã¸ãÒÀ ý ø·Scä^8Š÷Êâ[oÊÉA9éÀÿkd§ë¾9ª}¬ˆŸUúÙlg†RiÈœx{îý¡Ûì¶kp¬0Q¢yÛ3$¡U;j¼•&ßÿΦ¬Ò»‹×2zñÔ.µ:BÁ5j0˜ÒÙ¥LW~.!â!Qê•Bt’Ëôª?ì;$éýI‚H.Ð-Q=ê3¹¦O© úã»øëä;é|þ5óÂbÀ¡ª¨O‰ò…Yȧ¤Uܧ„ÿD+¥BxÀSPŽ3 &«ÿ!à.â´ÕJn›qµ‘”ðËJËØª>Ø›°‰×üJUßhž~´áK· «2ÐJ:[N¿²-âg«žÿ‚è5ÏÅC£ý‡Èó£ˆ1ð ËXÑ¥Ed*ÿud'xµâ?×ß­q9Ü¡ˆ7ý}¤ÿ–Žp¾ã·¦”lÃÞÿ3ÈîxŠ ]P-AÅÃ'{&vÒÅâÐà)qêv6¡3ÙMr9ú"ÓÜn‡='•°jÙm‰¬Ä ½2œ5Ó[24ÙK‹.ÄÓN)ÌNP ²–[±»é½Àë*³[gÇ%±À:ß{Û;§ÓåJ^R%^uU㪆ã¨S[sŒÈ¼Üôið÷¿l†ÆRtŠ 'ºe‹áüÙ\pÞ¬ ø%4Pl‚ê“3J”¹M~5ß0Á«ñq ì£ãd~Ÿ9NI‘)-6PJ aѨø ‰ÈDä3%°®V¶ö¤Š¬ù,|¸MS¯Ä%|‡ iKëÍ)ÝnÆÌ&£[(º§§›{á5&šLz.:ήW øOúïíÃËJ²v„£wMB˜L?]µ¬UÛ/"ÿ+þâÃj?ÝxSƒM]£!‹^ˆë8˜2×8?ù‰#É;†»ryq 2æ8a ˜SBÅ3–«6¤c“Rý•œÅßrAýNt&qµÝ4í _­I­)ÓaÈnœŠ JzjZÛŽn®EUkï(÷Œ•1ó`†>ˆ½k >šrŠÙ^óv’Ëe ™ /ÓñÕ`ôÅòh —õlï¨?m¾Ë i0ý€Xù“}¨…çVaøéŠ¡Á³je7ÆbjËÁþÆ7„øgB:šß™Å¯m™ _韱l‹Ê¢ðË wŽÿìŠÏWPåÚ›µFm­³v°†¯†“£ìíO)z©G7¤½Ï£>^®Ðƒ'´ƒt⺉Ká(¦«&ŽºšøY@ÇoV]ÎÓð?EjÔ¼Ï;‘ñÃq=|N²ÿÞ`&ï²v&2sW’ãõpº1BxjèÂУ›+ ,5Bp|aøeÓad K ·­9ÌL± ¹æ3Ÿ™é}.šøó¦)‚mЫ…%çoå— Æ¡Pw˜O|´ÚÍŸÌøâä8î|PÔ{§ü<à›Jï­šE»+±…ÛªÖ•knÆA¤™Í0 ©Àx¼¹SCÔÖh|hiúU£ˆÞ,O;ö­ÕÖòE+ÿAÖâo½Ð¢2gßAê¸õÑÿä·Íó´ZñÏd”šÛµö™á« ý]Ýa¸Çòÿ½¬>¡ÿïÎNek¾Iþ¿ÕÊÒÿïQž¥ÿïýþ¿4ûsý7·aÎ;ó¿RÙ]ÎÿÇx„ÊcûÿîUé†ÔðþÝ+'ûåä´öá=ý{ÂÙþæpÞÚ¨Ð_PÆ1åѳø-N,~€¿|êélޝT=oyZ5“õdÚ›ýTÎÏøj úUõý-|7Ãÿà{ÓÓ›^¥=Ë 3¤²Ìâ(vŒÏœâÅ,€4$Haò¹TyÕÇô-0Øeø‹ª®ˆwq⿺Y1ró‰ð‘ý®Æ`mø5™!!AfV¢•F¿«¯†™„Ê\äWî˜. )(_©·üÙ‰N,×”kVÎ`Þ`O³†óæÙf` jò³ÁÿÏÿ?ÿ#I£XåQDB3K"f–DÐÀÆRn18Š q‡äH˜Ïb¯«)úØoXCf8º‰ì‘<PÔPcH¿ö+r‚ß@«w©¦!ü¶ `òïd¸òJ¯^7ô¹,±‹%þ…%䨖’ä$Iá¿YEý·¢ ÈÆ·ª”"ñ¹b©Ò üæR«JY$>W 2[. ,¡Èl©ÿ|Ÿ·™ ,¡ÈlÓaŸ·©P„–Pdv2H|Þ±£W.9j$¹L‡£©sˆªCu÷>Òà·(y¨ø^nÅ"ºý}ATpÒ îÛÅInoh}” ƒÀ}Ë4œÔÍÃ;”ï¾®îìp¬ÖwbÙ«ÎëpÍ\8Øß¥ËëˆXö‘A#‚íTŽCµí´s@·NÓ°®Î[;úò ‡ýO}rwÖ ãÍCMg%rÁr\udNèÕz“ºð v'&Ç5éÌ–ûŒùʬ¾ßÚžt;àée5O6Kø]Ùl¨a´uÕè1t;É[ýÕxtÃ÷(éÕÔub’È_m߃Bw„ ï‚ˆ¾·×›eݦìÞŠIX2»­^^«(¿l: ­D{ÍÌÉh~È©+É‘ODÜ÷µfëÔmpˆ“Ñà%Rö$ÕürD ¬ã $ë`–±r˜›™]Uä÷PLsÄ+¹ãZL ÀÞQ*¶Xë<·ÙÄ\šƒñ nj7½zz7£ÕS§w<škõô§†q>p†Òe£vxm†Ù8ÇrÛv—[=d¨QžpÄäÁ×ú\‘WëÕQÎrëΟ¡sÏ…¬™0ÿø^™î¸2û›w`eÇ^a1åKô>s•=²WY½ÄÛÑ“ø¦žYcE³×X{.³>‰näÆ"«än¹³Öf‘/Ã6Š/©ï ,©Õà’Z$“ª½oŸGËÿo|ù\üÿ¶—þô,ýÿ~èÇðÿ{ ÙŸÿYÙ®ºó¿º¹Ìÿù(ÏvÇÿ¯³WÔÿ¯E?âÛýÒ?ÐxîÇ?Yþ¼ÜãpÿÁΞá?袭Ÿ[oçø.]ç#úT®ƒb0—®ƒúYº.]—®ƒK×Á¥ëàÒup>×Áû1Z‹+eÒ W¼m™0žµ+à¦þ¡a¨I à=í߀à9»Ecrg÷ðÖ$kJIAÏkÆeÖ¯c’-ªyv#à –E½W:Zk¯¬¶ëeá‡Ò®[Rm·ý|0ºøkÒÿ_ºaß´‚ÂÇÑ@Ïø¿°*'ÿ¥0:x*™L@£»üU@ÓiÆ$„á ÈÅÅ ¯­íʱ^ɪL “`²IfŠøwhblG¤A…h'Ô(IÇcæøŽFxt§ò¼BÔzáû¡/|˜b{ÿ÷ ü»ô/]ú—þÈþ¥…ó.>¦r0«æ`ÞÅÇTfå΃¹ô1]ú˜.}Lƒ—u…†/æ)JØýþÃ~ç÷ŒûKÌNw˜‡xù[çÝGñów¼Ñ|w|rJ>Gí2¨n÷‰í:! ·3@—ËL@^Ø/•Œ¿eüytD~©õÎÞ¤¢&g!V‡8ܪí+Øî@Ä÷¡zîÛýµ)H¤c*×K¿¾àËÝð[ò¢,, ë„Pj8M°4‚NŸ R/¾á»dvºb8KQV½JRH¯òñdÿýƺv¯{®n¹ê]j³ù¶H n :s£ÍwЂu¿çqõ¥!ÊqõUm7h¡äÞ´ ¡óÀAüV 5;µšRÉkŒx¥+eÕªˆ—(üÊüEË®#\YE üÅ9ÝBިݔ§ÑÅ:Œw•Ðó>l'í€Xû£lžfåôÙÊŸ>FU{8?oÐÄöϰpÜ›|éOâý„èøË§ÀÙPþq1ºL­vP÷>zJŒ‡˜çMSýºh(ókð<;š]¢ƒvÂ'm¼l2ÍÈ Ê.‚inf‘WÄ|zÉ ð®{”Èã}âT‡ûjÛ‚¯Õ¾ºïënìoè®#уd°FçíŸ$»Üb!÷&ùj%ôÅGž G^….Æ]à#;²U³G×™/{Ï­ÜII0Öá¥2]¸xª^B¼þ«þZÿ|Ò ¹F:,Ç«‚¦35õ©Èï"YjúÃ4½‚|{‰Ž„|‹&LGš ìYJËãË5²6ø’áßN?êž×¥ðv, 'µ˜®¢|Óʦ/¦°š³y“W1.¢%½êhý±fùÝg8íô)Å•Æ(ÆÃZÿœ\áÇh8ó4ZÁ5Á8K½z ÿ¬'g«¿ãu=ù¸ú£ÇP3‚-£=bƒ*Úsq5FÃ?g×Ô2ãcàë:v&Òë¶üšX¾jªp,¤E0Û¯Ðe˜Í3 ¸Š¼©k€£ØŒ‘~:éätUun5÷£ö?W-ŠÐqxdõÀ’Æèö[Ñ3RrÞƒ¥6¥QRs÷;”Çlè Â3Í“5\µÖýU‹Áš¥ÇðaÐ Kh¿zQ¦’‘ØÝ]7Ùßýž³V‘etcªE²ÌÛèã<&©³ßRÚ9ÔsœÞô0 Þ8²TIid|.kºÃ•µ@5-åÏT«àpÅÆ]f;{o—Ù¿Õcúÿ‚‚õlü·–þ¿ó,ýèGûÿ>ÔìÏ›ÿ•êËŠçÿ[Ý^ÎÿÇxx¶Ûþ¿ ¹ ®xÇv®ñ'øvOê ¥ûoñÇpÿUÙ5A¼è y×®¢¡ëv€÷Ø(øèøÊï›ô<ÙÜ*'Ý÷¦I îB¬r±ëêqø2®µƒq[ixÞÕº) :w´g°hrŽãñ<‰¡™I:Á$é„1N/ú @hÖ:öfŒ¥œhÚVy#if•Çê2ŽRÚ'¯$À™iqa%ò…|£#7~×ú ¼„úÿã,lœK•Dš{Úy#m‡ªÝ”rý| (' •0ëlmeEûzã¦;}ëOtÊ×F/tèvŠÈ×0¯YQ"ÍZY¾Ì(HPº)!\µ’bwo¡­ ý蕺lô‡cìúiZ,öqœþwÖ‡ƒ•å÷:yQá¬èÇ/^Ʉ¿:%š/´å·iÖ3Ÿg5§ã¶NqyÞÔó¹Qc%Òã¬EBðAÇ€ÚB†A°'«­Õæû½I\øÈW³­DHȉ¤oØ¿˜ïW,I怕­©Æõ@¯û†dm#B¥)^·'ƒ ÒáYáøpº<(¶œ˜B`9ésQÏŸJá)(Ù7f`uµ-öߎtÒ3Þ‹ø¥ê—îìv?N`hJlQtÁfÄgÔ¥9Ýʽ M(·Õ–ÙЛr³méËÉ»ZwŸÿ­ÄûYk¶ÏÚ°­S®Ì> ÿµÚð£ñÝùp¦eî ©9ëníl¿”lÙ4g¾æÎÓüpù™Iï#÷‚ÓNó4wºÖC&j~^9šÿähþ#œ£ù‡ÈѬ-„ŽO>´÷Â,Ck3îE”¥L$dM¶&Ë8MFzñ®ŸˆY¼Ó|v™˜å»´5ãÛœ0òÚŽ¾Ý½sgØíŠã‰ñ æú È-ÔX²ÍÔή‹‚(m%1 ;9Ô¤Ù’å^Àëhb¦ùì]6âfvó°ÔìK}ÅT*(¼õk!å•Úî"o¨ç´_½Bè6–¶ælÛOä·ÕÐã—r†øIÅ€L»ZÂkaÛbÓßÈ}†7%Zþ­ÉƒŸ‡ÅG} cÀm ºÍÓ>¥€J‹¬k­¸²•°Ø" ƆLy/>Àz?™µâ$~Ë¡0uxïìø©Q¢-üÓ‚ja{4\Ÿ¹­Œ7Q^âˆV~(Ëó· wº€S¡¦¯®¾-Úú°IØèD¼åÖdv"N£ÐP´òû£ä%Ò[l2úäõÅ=ö"Ï^ï¿’Øp8-t[«Ý+¸ ^ŽÈ`”|%ÖirÑ›MRŠ‹ô²Â’²G ÓªRòs5ùý…=ÿ蜞±äŒè9¢RÞÊž¹.4šì2B àA„÷a§Z+&mµ\0œª6±ó|;#Fj5C(µÖxÉ EîìðîÓà³wɵZîŒc {þ3 ÜHhT™·Éݨ$òQŠ•3BÓîÃdüœØQ3,”+b†5íégOhÿ«¼¬ì¾¬bºJÂÿYÞÿ?γ´ÿýжÿ=ÔìϵÿmoU^ºó¿ZYâÿ<Ê#”Ëþ·ÿþƒ‹ÿÓ¡dÛãßhük·è'݆S»2­ÕçmûCµt(ºÎ­‚,ߊÏQ¶®j$›™í ÚÛ´§SÜæVÜÐ#/³'èôkøüRx"è¥.3M‡Â] 4ƒþ9öÈß×Åõao`òëO'¾^…)×͸t¨É`mÚ4‚Dâ^^5F}]N.>A‡È?ªáÇMï¯Tšë`\¯ñÞH†}¡Ùc>þÙüuÂÝ@ʱ²^ê—ÿ\yÝAðÎý¾Ú(ý‰Ñ¢Ÿ¡óç \à0o ©Ð‘ñT’ã˜'è-¢·ÏSøÿôK WW ìÿŽh%½+ê„°@ ™zó€ ÉNaÍJtMä~LR9`HAòf#'®yN¹ †çbÈêQKÎgd {Cò%…3 Ú·Ç@³‘°'Þ É·ºÝ6Ò[ólùÿ‚‚iÌ|Q µ{ÃÒ MI„·"—µ<„“#«ŸM .v=úý߸v(š·××sÙž©&´K#]£`3Ú±f”‘†Uwh¡°êäÕ8Ã0ï%¿iwÇÖ0ÙËGMæŽ@A6W$ülƒ*$I+8ÓM¸‹ÐÔ•Þ £“ÀûEú‹j)'—Í3æêÔ(‹n¸ÉtÚ–Š1@nbñN«žšN7T§Iî´Ñz“uÄl}CÎSdŠ+2×ìZ)[ æ¦Xع-’Ç :XX\œÀÐyù‚¢€…ô73tõƯʖ³·ÁûO£Ùàg7I£œÛOn“ÕTþíP"´Ýô%Öe×ù:9z•èjpšÓFüK¿ÂT|Kþ—ŽGþ›ÿNÔ›¥þúÑ ¾­·ßÅlµ>Œ7Žtábk`ƒ.WY‡ˆ+…So–‘öVÖû3«>œù4+b{iCýŽÓ 3[ÂAçÞÍ–Ì&²QÒ­wÌ^É[½c°{¡ó)íJ.&~V#RÜÞ.>áÁãl§ æ0cj»·:[ð͵XKÜ{sO§ÓÔ­OGFƒ]lÿJ ªêM_x@‚†Jð`ãšUÕG‡Uô<ñ²¤$Æ£ZA2ÖqRbîqÜÕ!If^Ò‡BÁ¼Fã¦)ŒÂ1.ÑRè´Äný¡;ÒЕí 7EQî†Xþ½|²н»ƒYjÛ³@Y#Š–LÓÛ®Õܰc)&0¨nÜV߀`B_AP3?Lº»9jµ=j»y…hºŸ[3†½xìIÔÓÄ;%^6#ÃÊ]ØÍ>ž[Œˆ`Ê¡˜™ð›˜†4J»vÛ¬hPžŽj5A\ÃN©¹‚–&<äÑïfëTI)8Za ó”””'³ IÔ„:b™3ôeh†6J"SŠúË»,\µtÂ$?<˜‡Nü[;f"ʪµ|üY>~ŽŒ j7±ÿ -«æ,ûÙ“­_©l†ºZ DíeÄ[lŒRHÚ莘+¹fT*¡Î‰VpK‹-G bºße-•B¾Š.•j¤JîÜ•CŠ`på¨TsW¥qàÊÑ(ª•ƒ~·PdÉV‹Ÿ¾•ô±e°ñ"cÿ?`AûÿæË—[•Ý]´ÿí¼\ÚÿçYÚÿèDzÿ?ÈìϵÿïV_n¹óëåÎrþ?ÆÃ³Ý³ÿ×ïÅÀu¼ÌsÈ{”95Fx•w.#Ø{7é$ÙKonÒA~ö® ÿ½í ýëÞ°œü>úß(yۿ쑆h:ìM þN?½$Hí,·Ì™>?çö%@ÈãÒÝœ Ì6eõÆruˆ¶‰m´šæiÒ¦ô”ô™ue¹tƒgéq7?ˆ¡ë qØÓäfÄ–A6^ö¿wè%·”ûE:éâÛÒkI„'æóš@:®ãÄü^†³†tœÈöš8ÅÄr ½ì_]¡MŠâ…3Îù7Åy¿á´Ž˜: 2 ºVe Ê¢ñrµ±RUÅÀL´ lÀ~Š]Oz—Ü¿Þ;$W:’O Š·P//KË7Û8)·A?¼AºöA®ñ¡þ0×õðGæVÀ¯ä€=ø–Tˆ[ƒ>Ñ>1“ÿާ%ê Iå'ã“¥ç‰]áÒódéybYzž,=O–ž'ºž¥çÉÃ{žÀŸµ=Ä+htöd þÒE"Gí|b7á²ôFùA½Qê÷åŽb*>O D‰×äÑîGç—EüVDÛp92ß«ë÷xBH÷cb.©ï¸–þ.ž‡Tæ×d8gDð&ÌÆ›WWae,ߥµNŒG,²ÿØ;^ºÞ,]o¾ ׫yã{c-KçßùF”ö ÉX±T•ü_r–¬¥§Ý奧Oò,=}¬ö=Ž«O}éësßåÿ3y ûÿ£º½ÄÿœgéÿóC?†ÿÏÍþ¼ù_Ýÿ¹ósk‰ÿó(ÏvÇÿ§ ŠÃqý¬ [øqçþÝoí7N- î^ó¨œüVN ïÉ ÖÒ9ÏÌŒIÝÇÈÓn/—ã>"qü(@!h_ƒûúJ8Æ-XÜæÑ™ÇQ&€¨[wñùïÃÿ¬[meHÿRÚ_¶Y]:k6‹ªÔWûü½®'Ï¥§«z®èÔ‘´Ù^.ó GÃÉ·››-Œ$ªšö¯A\Ðz5a3W÷âÓlÌ©öN ¾¿LI.ÑIbðÍ´Ç¡ÌQa$#ò·'lçk˜"“ ‡ùþÇêéjé j4Žj0Sú`2b z¦c´³©ãG*Iœ¶ÍŸ •´7M&0QÈíÆ¤€“±Ç§šéè6¤WÓ ö\Ѷÿá,9”y 4¡Žê>ïMú™Iô¡ŽqôLvÈéB/Fãq:¹±‹‰0߆ڵñö˜p’:ôÑsÅì[ÿJwga™L±¾ëLàÎ#4y“Ü4ØúJT*Ç—=]¦êÄÍOp|ÃqÁÀe#Éo€Ÿ‡²KLÉvL ÂbaÒp$Ä`áF ¯ûŽ€`eT“Ÿª¡(.Š&%XÂÅD–²ÍA—Si¡C<Æôr6NWÔ2ñæC»qÚõ&0Ò°¡ßÄ—q:…ßvsÑ~¤,¸…ý _ Cºhœñfd\¹Œv23%YJ®ëûA¸Ãþßä˜å–=R¿¹.Pâê×Ú6ÅT›ônRµ0õ¬Ù _C¿À4¬ðÞ•pËB#I‹u±Æ“îâ¹tñ‚O«3ª8v—߸7þ&Åïk[—XÌÝS„ÛL84ƒY¹‹ÉâYwCi¬ü 3Þ$`uR–jGs’˜·xUX)“ÒºâM_š”}Ó‹”ÄÊŠåì,ÓƒsFnÁ ™ç$›&!IDÍJLˆb Θ)×£ÑeÚ SFC(à¼gˆR/-ɤê`Œ/—MÉÆIÿé%ŠÉg賅Dzy_þ* %´É˜„FC¨ö¡ ÐOdž+ÉÌ‚.;H•‰aL´ç:“Ñâß›7ï´’†hàh8â›w“Ð œ±ð 6N±=´ËqGQË‚¾ð©Œý¤gcñÜ423M=ðŠÜèóV¶5‰hkSËè¼®nyžnwqt³Díß6•~9îçö/˜‘ÂYí}ük8L?ÝÀá ?ÉæÄÕ>æœsT9ó1–ß_µåU³u¼^áú×*¯H‘ú-FC¬‚P 9Û ço'·(»íµ£èšO?g}UnËÛûÜO`“à~Žùàû4;Ubº”é6ô×Ó‡/ÈK—äsw©Ÿž§„»kÍdtãðÞ"§Xå 9IÑ¡ Æ©”1H ážÃÐHP¡uR^®ø,ÅnT_%½«)^¯p{aC(³wþèê*¹øçè‚Tø¯2;!OQfgä©Pl6$LîïÆÖ¬ý'p \}‹‘ÚÈëdã´óaCžŽy`è„‹ê=Ò¶Ï£T”?lr9cþ³)zãiÝ9Ñ$Y6©‚çfÙpî\4ûTëý‡ýÎï?ÔÚ§ÝSþy&“€n¥ÞvÅÕü¿Žþ‰MNÚÜïtðß3úì-~Ý:Î>­}€2¿!-Ðøg³ ?ã «µ1¿Žt4mèÿý¼JÃcЉB:‹qÆM[¨dïÃ%C¿÷ÐFãøxŒYÓkïÄÏý|ÛÁ0Ë·Ýý÷ÊÕ€rqfAJÕ8ít÷ÑLÿ¡}ð¶C‰ªêµ½ŒtR÷œf«UÛoŸÅYÍlì— §Û"re÷5¿ó:Ór¯÷Ó Gæó<íé› U¡åwÊ)ÁÔ¬¦î¿ßX׉(x>¡7!çˆW¿°×YEº§º_Ê›®ŒèÊ ’O z+"ýTÉJ@%‰·9Ua?Xƒ64$L[´*‡´ç2›ãb륨š#½Õ®ÿ.œqàå ;¶–$ó¹;òÛ,’yÙA”2*·šèšé+üžI^.Áùº?â‰ìŸ¿É÷^ý3¹L'ãþyj)häìó´w[5Ýÿè“Â0MÑÔA×­ðÏí¨ÏNW²"s²'" …‚KJ0EØ1Ù«À±FkC ÕJÖž'R£D@5‡õÓŽ.KAœK—Ur#i× Jæ¹å|0ºø‹O/WNØ>p÷üw5À®mß¿•±w|¾á“/#º¼C9knj¦`ìŽX{ZÙV'-Tô0«Ž$h'×Îm°É½fö¼×m=¢Ò &除8Gù€½®3šÁÃd¢Ó{‰iÿ´?¶™…ÚÉZÒ^e®Ñ{Áûf8J^}©Bÿn:¹}Típ\6ƒ™•‡˜Yâ‹(±)b*!™ÙJÚðX»À3éNÄP¼&%Ú¦­*IŸZ'C_Š´ÌHõC·kôø}ù ƒ—¬c³lþÒv• ›ù¸…8M™³áNú#÷oÅA¦†Š×ª-‡¼ábÌo&<äM/”&J®¤ÕHÕŽ?ؼ!Ý$?"BíáV.Œæ™ ò~¶XMÁíwÒ5ÃN´.pç˜â%kŒ%—å8ëiâ =•L?hPf²[]òq¬!ïnz*¤¯g'˜ÕlŒçÏäÿÕ3©ÿ[õºÆ99Y!„žñŒ0–=³±ttÁÃá› ù†1BHHyñ²ÜÒG ̪OÎà)btÒ4DPeR3™iäŽäš$#ç&kùïzÑBâ}#“˜LYG Ð^‡6éÿ|8’‡"›kx83bXNÒñÌu&îW&ZEoFhºK{cØ€µaT¼ZÒJÂ+4§òœTê˜_ BÛØóàØclOÜ: ‘lÛm…c# …û½¼âu¢#€F†û]?†çéøšî‚íÅfÁæUJ@Ò^k¯¶ëá.pßdà´jt ©wRüÆé쥔šN÷ÄÌXbbÊ-‚h…³Ò¼ŽÖ*FÿµtØ›œåâ{û-y;šMÒO£ZT¤9ا{Ó³Wæõ<ù3 zNnÖv~źþžzæÐJ‘¼,ä>îíŠÿ%øsŃìaPí¥ Õa²R+æesŒÓÖ”T!gr‘7&Ýi½ïÀäIQÊ‹‹Ù ª‘¨$Ú}âåsL'}ÐC£’ªù$6x2Œ_ˆ£†¬Ì’[TOHÚZ@` hkŠ·MýöyüËMsA“!Bø¥ÞFFcÛjnòË™pdå%>[­ö—Ò$¾šÊu”WUÖÊ~c&™Â‘8Ñ~¶.$|¬8ÌHX×Ñ)J…¢T¢>ú¾½µ}n0bó‘’¼YB›rÆ-(ŠtÃTb“¤Œºò;sâ ¹ F敼–Ë”J™n™«Ü‡áå(9ï àk]Eç³O%æÞôNìM/:/œÙálLíœI‚ÝÈXQLÙ wQAûðQÙ¼IG‚ÐrÎòü!.ϾvàÐÀ«Ë’.¶Æ ëEà8!$9ð¡÷¡e¸ÇC=vüÇ×'Ìÿº]ÙÜÞ®ìVªœÿu‰ÿø8Ï2þã‡~Ìø‡™ýyó«º 8ó¿Z]Æ=Ê#Ô0'þãc$T¿î~0$~u©uAÊq¾/~žCâdî1òÄŒΠÍÕÍŠ>3Þ5^„‡g±°©•ùÑÖðL§Ëð’;„—|\Æ—ÜS| ù;)fö’qzÑÇ( ïå§•'¥ÌJœûºÁÚJ,û+¿ ÀÛÌ:ŠS͸ýiZ4p%§g+a4"‚iÄ‚h(ØÅm‰Côk½š)$ýz 'gp ¯géD¬H… Àb‘§X”çØöFeS’Kñ‡ ¼ú"9˜áåé Ô+q‡'è‹Úà´/Æc-€%|Ñ1IoâöIN߬ë2¶'yf±=nG—±=‹Äö\ÍÛS.ÚCJE¾Äí¡?ã y¼±oæZáH¶'MmC³+Cû/^I§›KÞ8õJ\<ÑK>4ã,"êÍè‚"SwÉœ¦Ÿ¼A#6RËÙ» ʽ@ô>M’ÅÖ» Ó3 ªJî!ª diOõÜ㩬Õè«UËxªû§aÅcªXÊ»6µžˆ÷lØkµ› jÅ‘@jƒP žF6¬Í ;{aöê¬`¯Îœ^-Ô«ÜÅ}Î>íË>ýpÑo58Ú•-–ìËaV¦hTWq\-µ×ñçJÙ$Dú>¯¡}î“^Hƒ»¸ZÐì`Ž©‘cƒÆ.å…Ì©œ"¤VÛ?U7¸ žQ½ÅO¡ÉõYkÐΤ}²÷/ƒ3eJ@aOì(_¸¥7Àj5Ĩøép4»¶U†çaȧs ’ÛC àФ Å«lˆpÁ€C{X,àÐ$²Œ=¼ïØCŽ<\0ðpá¨Ã9CI«žLýC9XðÅH\½[0èðN!‡–—ÇÛ¼xCX¤S4Øð¡†ñƈ3t ƒdò‚ ….þš]1ù"4Òž`xá2ްha]üÜ?Û*¾0n¢gO€Øº·0Ä2ü°+¾_†!>]â½Äòd5J°Á‘‚þÌ"û~‘}§È™_ÄmJÝ/b¦aˆÅUš~sßiP$‘(IvS°¢à«þýÌø½ŽÕÃ_îµ›hÄçÊÒ“ŒÓÜqËϧùÒwá8M5ZO§‰±Å‚5 Ú\kâó,ƒ5ÕçY÷útܦ«•hÈ®¢s™Þ¦ÃK2±C ŸWúÖ…‡y:[m‚]Ó7Ÿ†Ð>l@ikNª¹· '¥†;ᣉ’ËÛ;À6܇ܦ¶ŒjYù.áÅ]²òS5šè'±Ì[÷±º©xшÕˈÕeÄ*WµŒX;bUŒÒ2fu³ªJ.cVcœ¶&å2f5¦.cV'fµ X-›ž¶šD–SYdŠ*3µðö ç1o-ãpÄIg„î“_ú“T¼…˜Ü-hVÜb-6Фˆˆl„‚T›ä©äჀd`´O49°¾˜Û¬è ›CÙúí_N¸g­;èáËÐàçœÈËÙðEfκ—h#HòZF£˜ßÊcAöúW¡ÿï}à_ÝŽ$ÊUéµ6¹»»:ëì­élÅÿ~~Fùß–ùŸçYÆÿþÐÿû@³?7þ·²ýrÇËÿ¶½µœÿñðlwâÏØ(ÚbUµã]¨·Hcñ;ø­¿j%[f}K¢Q¼’çRÁË‹ßm‰PQ¼_‚h\î½ÄܶJ¢üg§$´¿™@¹ÈˆÍÅ_³bfÏî-d6KQXðÍO@œ}ÅùT€TNUX§ñeòc«P±>eý4ìAVƒ.SÙ×É ws~ÙÃßù#,Ï~Ñútd…Ó-7r©]Ù-˜iZ]} 5Öœˆot#dÑK8¥Éì"pôþsvWetzÇÂ*±¨Á'øÄЂĠÔþÿØ5”¼2÷g˜º0–CqÑÉÑPð=[dÉÃyÂÑ“p,NÉN]0d¥¼XȦËÏ ó²HìfðÕ@'Íï ò°x‹²ÞuõÔ±f”Àë‘‚Ë2^KFUµ WAËq0ªª%½š§¥cÂk ÇþLÑ·ßvâ'gÞÞnÄ´³Š>ÇM 3¶Œ=Yúãh ‘ÙLŠÑjåD¶Îx …MèUùÏîןèãÎÍâV騮ÖâBä©X–,ÅdYJFtuæÂNx;æ&øçǰsOcØQcØÉC±‚æÃŽÃÎ=ŒagCŠaÇÃÎ2ÓÙ3CŠýM2áPÌ”tO!AvLÐ"a?–-HòÙ\ÏH;¤m=¨é*2XÈRAáP ŸŽ ÌYFlظµÓOy0 _»Í½ §|?,ƒã1d FÒ”·w?8r@†'ßã§qŽfÅd`h‚íWäŸyON¢Lu£6¢¸Q¦á¡C;ŠÅtÈÐ8¿‰UÈ1ñó´³Öxâ S $P¬ö1ÎJ«Ñ€q¯ÎêÁäË12~/ç ý¨5j@ä «9n”9;ó¼’Sµì ‘–©Aê’Q¤cq1Z­Å1 %qÚûOOµå–Ÿ#ì!2‡ /ì¡¥ÃZya?Hv|’M²3oÆ«§ ¥X¦¼ú;EQüíR^™_(ç“Ö\1áÔï{ËÑI7:!-=‘Zè Ç}=1!µ0¿|ȱsåò!»n j?HÝ~TF ¦%<¤ö.ä½`Æw”6ìì¥ Óí¸ -,–O”¬N®’fxÅÃOÔ¿Ûà útMyL?Qð„R9Œ[Øßè̳ø ®h™K8^óàíxë…³žf\=¢xÀ… ÷¸Ê·åž.ŒþÞ)ª"“E£)râÇT$Y R8¨¢€²«.AºEžâh;ŽkÆ“†o³ “tÛ¼E¹î8æR´ë/¬mé~£¤Û÷ƒ (FjwkÃîÍêHæí„æhgž9ªûPpŽvžjŽJø¹ÌÑLF<¯9Zà0QpŽÒ±Æ Ïãû tù¹ðÆ^§\@šÄ ed]F”’Âä»äf ¢Ô >–Ú%7'ÔTjK¾·-ŽiÀq®HT&ʃ/ÿPA£âBÒõÜYï/ù둬:o+¥4 ä­FŠS}BwR_`Z‹œ 2c§†dçy7yŠºu&.©ÕIˆK‘­”³“JL£ $#“µ2¥Bˆ7š£²u2ßê2â÷ÙEüÖ•Tö伸Ztã¼™‘†ƒˆ¾L’‡¸iLH¤bÂBºÙ`Y|P1ýÆÕ¨ x“þM ô§dÛpfűx5Ù[]-­WVÊ‚©{¼Á(Üf˜¥”J4iâ·—R´P Þ3û^Ú3Í?]92˜q“L¢;Þ° ßΜ(:O±ôåe!½=!ñÈ9fĈ-°:z‰˜c­ eÞs[¬«…­,ÝÁ¸@³óPå{«µÕB“Dæb(µÙaOòie¦þóúLN„“[õ:ÂoL3[M?ùc„Õ‰—’ÚÆ?,G •˜6s~Óô8Ë÷í#uY«™5Þ7NÄ Ô.Ó¯² Pî ÝÞ$„\Ë”¦_@uÊ&ò}žAZ´Ï$ÃM•-¥8R º šïðMç!Å ü KiTDîo¥^CƒœWðJŽ^zÛŒ¼‚µ$Ö+Ö€Úƒ5‡¾È”+XªxÅšÞMï2E¦´±ÃLÌ$C~’ú;"Õ ¼"teÆ«}˜®C;¹Ø®K¼uíß̬|·¢ødFoöÎ'À}8\é\µ q¿~Ã#wg¾œWžÅ· Y¶—­ð)ßlÊÙšr¶XS¼­âï ¡d*ðmVà÷_XY©´Wuî¸à«íÕö¼¸gZ‚3=p&¿Œ4ò @8ÍŸÞ=Êi‰ÜDe"7ÁOÌìQ?³líT - Êä aÄâò¸OV"n#½¶FsŠ7i óô$0O§n»æÁ=Åé,W1¤._3µcã b¯ÅÐë’$gWQqÿgc‡ÉÛ*βêjÛçÃùåïÚ¤0¼\¤I!ÉøÎ˜ôtxz?<Ñ#éO§ð«OŽhWÝŒT½(¢ÝÇ%¢Ýw‰hÇ©yõ™|‰p÷Dwf jÒbŠ‘¬“'û f¨ÚŠKfÓ¥1¤•Ì!͈Ý6ár5+ï! ®l§“×Y –¸{KÜ=ýÒwo‰»§{²ÄÝ[âîѳÄÝ{:ܽæUÀÃþ2ôÇéeY)8ÚíÙ[¢W7‡ÇuöZ7¦Ÿ{„eº/Sôy Y±—Ѐ ‚ázDô¿æßªÕ}nÀ±ML¨ò*¼±`y€ºkpÄñ¯£åãk»ð„“üë¶kÚ–Y[”xAá+D*ñµ¢hhtj}0xE— ÌMU=œD}ä[â#fÀ¸½»3,â}¢!.€øîï }˜'ó†¡!óKì¢B?dá}".€OXPè—°„Î3,aÌìÌ67á°òG¡Ð»÷6ú”{)Çv½gJ¤xèêßÏGñãß Hñ;}LüÇëÉÃÀÝÿ±º½µÄ{”g‰ÿøC?ÿñ¡fÞüßÚªnyós«²œÿñðl·ñºìôÛÝŽuµPÇŸðO­uòÿÜ?­ÅU"'üA„ð÷NÅ1Jc‰î˜Ä¢oŒ1’u H„q¬«á#¡Ðe#tkæ‚kÔˆ¢Á9x‹$><±^â–eC-¢¤‰ %Ùñã5vóçj<Å€D)e}¼8¿§ä‹ƒ«ÐGÌ “,Þ88Øïn(Àǃ®Vt€ ËÆý{9æˆ4”Ým4þ‰é¶Qƒ‘•—²°Ýöúã¤T+×Whd`Ö “é8§áv+|à˜†ˆ@@¹Î!ƒ"p”û¨|—£ÓûÿcpµO2>Sù?ѯãýjwõÕÕ·0…êôç)ý)K1ÊÖ{ªïŠ·¬\9§Kÿžr"Œ‡ÆB’xO%ЈÅ,®ÁóÔ+¨WìÜím^qt«‹g ˆ± ÃDžéÌ={m’£f½Í&ÀØþp2M{ˆ¬ÐMSQ„p@…_üíT‡#§nwœ,°P]—¹óAJcT:hïŸÈ(õ,`;^[’¢øTÉåÈġРBs)畤¤ÜÛÑâ×mÉÆó¢·PCžÛÂЬsšØY[‰f#m´´À¡ÜÙäð–’,À¥l¤%,áNCùJ—ÍWŽDšdÄòf® ÷•HªÏÏz!îÔççÎéBܩߙ;õ ~ßçm¾Éà£$j(n0’ÜÜ~êq<Îez…ûž¿Pš4p Úm`$žnéOÄ£P•×䕆å2ÉH„.½êAr×>ÁÚ¹>L¯óŸSºÓV½;O§^çÌ·EYtŽtêÛiFßL:¢›†ô0˜S±átt"–“„MNÌÓ~*Çáµf,.Ôüײ=&1*2ä°Â?26 ÖL+eÀøDY‰À†*©9?QýЋ›|„üDŸ[“¨ÛGÇË´OQâ}~åôO„u»Œ¾P¿É=s '–^1·Ê&žÂê²¾Z «3ëZhf‚5Ò^iï ï­¶-,*¼×äÚ/ÔL·wÜy‘¦D{€È† õo²‚8 L}·/ª¬B ëvæaV6¬Û 3+´ƒþQ„[[æögnu6­Ln™ð\] Ÿëog«¹Ð£ #K¥’QëŽ8‘^ . ‡ª §,z&ŠšÄ IпPgíù}ç !Q#¬}èÅö¾³±B½Vè#¯,Y«ÓéÆCADiÂÙt-]ѳZ-µëk•g_BîÜ rgëYBî¼Àg–Té©öþíÏ( w`Š§Æ…/{Ê ?|€PÈÖž.• }œ$|ö jö©üùší¢„¶'m` ä„•œÙdFS·/ Ëå š8DNý|Ý^«¼b"2 ˆÙê6$›*_ —Ç©,¿,OS2X~;Rþ R~'Òþ·½`ùÝ`ù·Ð?@*InÊ÷IäE¬¨xºµ7T¹Œ÷óä.N¬_Ðô? Éé@ 9ᢢœ2ÄF 0þÜ?-‹ÕN+.ŠÈ¡”ƒÀ$¡—“óšß‹y—à#BX 2$Ui/%L“L\¥7%©k€ó8 ÀÙÀ« ¹é…pêh]‡îY&Ýj€®vi; ©×ÖóÛã;<š-ëdö¸ã÷¸S¬ÇÌwüw ô¸èq =¶·[.¸/U2âœâµ¯_NE¥Ä§¦/—ų‘¹/rc£¡Üh…ÂÅ£`SÌì—<©¬$j¬¤ÎR}œ¥® ´Ä’­0‘ºù@KÇèBÀ#j-uó‘–|ID!BùˆŠÖŽ+¬†DDaEUö%§Í€&ë–')ì¹î{´ÝØïµý×¶ü× ¼&ç’µá›EZ<§äÉ[aM,=­Y8è&7DØ[UHy¬úD dB{U”{$°„|p„Ž…“Âjð=Á#°&é¢ Xµ¸ûNxEÖBAˆ“ ˆ0Ìw©æ]v4c'Áoª!>Kµ!ŠË/Ö–°'1·bS.êw“ aAË…t_r墓‹º/õl¹¨Ç增%õl¹¨Çå"H6$õùäÂ>Ù |*¹8™ÎŒ[|ÕÑJé¨miš xJ5$è@*Ú¤?׳â[,Ñ_È’"0ç€p@^œ¼:Êéá$ÅßÈ"\³Îv+Ú´âò=‡éÇ õ–cF5hdУNx†9Rº&¾ÛŸö9XÕ':Š>hŠÍx¾O(3Öœ¬#äwx— ÛdÃàÄd‡ááƒèÚ¼G5¥¤.øž¢^LoS@.Ž‚³⼌w<6¢x×*ëMqEáúÁ¾½÷*µžôyI§Í’]A²²F¿™:|ᡬæ¥É#RÉøÀ‹Æ‹²Ã-ñW€il±ÿ5÷% ®"¢ñœy»U”·¼ âˆ®§û§\1 Ôîc\– çXsõ#h€MPþÂcEáåÙ£•$ì+é–ÖI:¸žKÖIŦ‘ïDgV„BÆîâŠÅb’‘/¶|l[_8"’Ķ.[d:fó‹K‹tŸ6"75ø’é èA09Û#\¼}ð¹‡ÅÆ:àÚ}×ýi'â)€±BþÐi-$ŽE(Äæl*gè®UàyÌÞgL÷øL7ø¹–ÊÂÚÀ#®ºN¼QôAk#ˆ"F 3G]BIjm—=fÓ¢mÓŒÍäÝȤÍÀ&7ókB¶”³EпP}ƒÚbPÛ¶¸-¦¦¿´¾(¶ÚÙ}÷‰}÷BÙé{l)š·ï?ßi¥g1#¡ç?špŽæxøR±ÁOq4÷Zè^X-¬¨à öSMf8ï~pλd4˜ýèçÝLf{-¬È=æ©x]ñ¢úF 9*Ñðƒî2"ü +þûó3ŠÿÞ]Æ>ʳŒÿþ¡#þûfÞü߆I¿åÅ/ñçáÙîÄŸ©„R·ëÎÑß> ](ò{áM:_8Â[Ž‚Tk Åw·$·¿ÏènîV±ÝÚýì"»ÏŒÈî³hdw0˜ÛÇÜÔñ½÷Ë¥æ 1”øy”\õ9hÚ ?QZŒ?§“[DÑ^'%Œ¤û_:­ØÝùоøŸ¸==éˆ_[ý G¦µZ_ý*£‡Io@N‰SŽ*scµäfæ·Âcæ7ªÝ¬úf¶Z[ý†ÆÔÕoRÒIJìäH6ähúßY*BÃ3eu§0¶ÊOF÷±ß’>E8í¶!±Aã‘!˜)z(¢}¡3—dH4)&½‡U‹æY!pâmükrT¦JÙ¢?ç‡-–ÁÈHXÒÞ…ØWÖœ†ê‰ø§P¸žàQ¢‡ôÿgïÍ›ÚH²½áÿŸOQoǰA#íº}#$[6’AÂnÚ7îÛ! °«-$F‹—yæýîïYr¯Ìª’2¶«fÚBªª\NžÌ¨ßšlD2¿dLÁ‹ÛÕèó‡„ÏGª=H¶xŠÐñÁ¼ç‡HHáIÐß!á$²Ñ$L0 K¢;“ $,$ Ï‘âË\\Ö-¹ìN\–Âáè.ƒË†#…Ãá(18J ƒã̇ÁaÄÞÉ  ¨ä˜CM¥.Ç?~\ŽŽsŽøÐÿ“8]ˆå«"ž÷5bG Ðñstœ=?|»ï}¾( GÏÃÇ‘~=çQÛ.‚ç[„ópT–JÓTl6å¿lÊ˰¾•-Ø© !á_Ó„"I VÜÏ¡ì'q‹!¥͹-žÙ†[æ$:aŸÌ“.É9—Fp¸SòÚÉñzcý„ø:^o®wÕá?¥Þ0d2KëÄ›Î+ÉÞßUøO¬êk•ű„~þõËÁþâܱŒ(Ã;·¤ˆ jU”†ñ€»uàtKZW´öž\Ý\?€“¿6ù+/oJõ!›DTE{«Óaõ Ufs Æc±Q0Fƒô4 XJùNÛ<§\¾RÃ"Ôšk(p/OÇýá„Ôº QäEÿò#²ÎgaC¡ƒñgZ~u‰ “‘Ä„ oŸüÆãir¹†» =» ª¤å’/( }£áTj‰¤¶C±ƒIþFaÿá#Íò gô‡_ÔJ†¦ HÎ~:R=3usâ 5 &Çš£¥S¤2ý1 Ý8±ÖEÃ9%ÿgýåhü"{ûK$,í{v¥mÒ¼’«™å9’R¬1Y° h£®ƒØq5©¦g6v«z(`B­vëŒÐƒèrq„< û/ÎÛ'âþ]p†ÈU<ÜmÄè)€5½Ü‡ÿ‚YÒ¢e`5{ .}4Íhká=]þ¼áv4ùá&?Œ Eß8¯jL¢ÆñT.ƒ€FôØ_Xä2ÄÙ>|æ“/7™PAoÚí§ŽOó€ ’H2+!“r “€y«œ¯Ê)㪠E©JíöÔ¡”|uø§K­P1l*HœñõJtNžçð·ÌiwNà+ü“ÈáwXïýi^ð§bØOóB?-ˆü4/ðÓ¼¸OÅ`ŸæE}Zô)ˆù¤ž Ü™Zß(á Ü—¾#8¨”µT Ê@‚* VåÓþê‡îêm åÜä?6ÄÆíƹF…â{*ÔÂ@O$]£ŸÆOu®Ï ”ÄxÂVøB›¹™ëYÕY=´«5 Ò÷ó"-Pªyñœ6`™£fôk´šÓÂMMAà¦&_Ó;žÍbã™õ˜Qg<›öx6çÏæbãÙtÇs9A©wÏÅP˜èÕÆ`2RÚ¦_Œ¶–Óô]Ã2ýc°L•© (Gë§krjñœ Ðd‹ÎŒí¤Æ®ÄuòðB ×)Í &J\§»à:…h+¦Â`DÔÛ½‚:ù0æ…tJ#:•€NoDù[:ñÁs!‘ £99k¶áÒrhZ˜Æñ¿fñÍK››äÔ‚V£ÏFƒô¶y ¢¬(Ð €¨ 븠6#ØÛˆUû£Î£*ÿ#¶¦þò,OÚ}[†/,ÕiU Éf1«Ð^ʂ§ mÏlOA·¸Þ#?AÕ‡|}³p¯øáêÃî#º |ˆ.A¯"=\ ô*g[ô¬6û‘ðв ;´òm¨‘¹€¦ïE&û6Y÷R]´>vv:šzY¿Ù}”¢Ojq$k‘ž-дª0uyÏj „¶r51p¦uR»«Ëýóï¯ â|y6AcÔ áJEäàžòV uÑ©‘çýO£ä ^¿â¨5Õ&U…(@ºáQLJò~˜\'—ýáTŸO`hžzÙ”Ükl›¿@ 1¹K?Û’Ï g€¬‡›v¹ŒS’~’½k„ÅaÝÓçÑ–|Ô×ãYŠ´d½÷zºÆ2F>Y)û5Ž>BOnŠmâË4¸­íQ¸¤dØ¥Ø$òÄVºÛ:QGtj͘–"‰ÒEs{’Òz }—OzëÂEJüÙô˜I­^šÆ}»Ÿ²X˜ßl–Yƒ¿¬êÈ$³ÎŒ°–5 ÐHs O7@žnAò´–A.™¿|¤òn`òum\ˆ€ÈÎ~’ë{)Öœ›Ÿp¤—L±fqŠ5%ŚŠ&íº*Ú7úŒÎµ´®âë¢ËFR”¡yº*v>Ñ™¨gmZj1iÕžÒþc¾1D±…vèç¾æ¾/ ËŸžm˜ uxS™èÜ"ÂË]š¦ÝXƺÍx‹‚mÉÐRà¾3Œ1 Vº­âôT+¾¤¨wãq ¾‘±üË÷ü›çE±È÷Ì ËEVÙÏØ{¯¢BÅ8ëÇ’Ÿqµxï©ôJTúÇr _ߖЯßê2ñ_?\Õï²þëãǵ]¸ÿñwêOKüÇ•\%þëO}iü×ûšýyó¿VÛ!üWkþ×j»åü_Å% ÿõÅA½â·úPèLd««ug«ö°ÑZ¡°Æí8DuàÅh¡KøE9¯¾à u"Jk×¹àZó XaÐ®ê¼©Ì pÂE«ôÄ€#Öi…;‡JŽØslÕÅÀpöAôN¦¨I˜Àùe€Á—_u<'©³ö¢èt}ý´¯ÿ‚ù"*ž¸0Tßb³ùÐH( ¦rªiM ŒŽ’mÐ/ƒqÜ¿úšŽiDíÁè³ ££›£Ú´g³F¿Aõµ½Î5Qü@z²!’o0øj‚x.DóÛqüIoã Áˆ6Ç¿q¬åç„0G5€”S Pa¸þštnãËiò)|Ý"@4' ÜÂ-¨E¿?£¶þÎþf¿§‘̬q+ˆ‚˜u7Ä>]ÞÄhòX°ðÕ–û6Á¼nӛǜkÜÉìBE²¢’ǰ1Ð?GOáx®]SóA4èEU–n£‚« 3Ô_wUÎ`1¸›…Øðer‰zO1ìYb¤ e•¨ž± ¹° 74Ê„rsüCÝ0":Qùðå6k)„9F–°‚*Þ\wØèeT™è^šåˆË¥1†ò@ï$Ê$›Éqž->Ò”Õ ¸–WèYúÀ(Œ-úß *¥&iL [ðÛoK=UÝõ$ÚŒ¦ýlŸð?Ø3ø‰Ïöï$æfżP€ÂÖ-aSÁi…|ªÔö¨†í*ü`3Ÿ‰õï6Và!Ýþn×÷à7ÊfܱhD K{C>RMÖĜǦ iCN£Sd¾…+€AÁtL =_%°2àdŠ¿ô±ùUÕî!´éi^aûHàï'{\ÉH-”KàTùñ ( ü·Fܬùàü×gé¢Â‹cfÑrŠp_çÿæ*âS})E|ÚYJŸvEø.»ˆÀæüèGWñp4%XT›ÈÑ8A{ìªÐõ8–q3ºJ®V¶ßÌÙí>%F­4Iì×ÅDä˜^`ñz‚¬íÁ#Cç`1˜¸ XacNdßq C¨gÛRªðùãèFÏ3¢ÜçßÝyù\„ƒS(—§©9±ÕN í­*톖Žl͉7Mµ¿6‚4ñÛób¤©HWl)ú´Õ^¦ø6— wžŸy—›òR-¥»ü(EÛŽ}Z°Éš؈k>O@Ÿ Å»7áTawBè4k‹4í.ŒrüŒÜ|ÉÅÝçJÌK#°ÙRÙhày‹:QÞ$¿a:·Û¾.=mçŸ²Í ” °™5Þô ºHÞákº‹wI@ÑV]­Õ´€çPƒØÞ°â0 §q«±x€¦öŠ–V…Тڋ½ÁæÃÍGª¡Okým¤™_1ˆl¼çkx`x…‹ì”‚¹æ#àäÒ~´èeÙÆWÅþ³[ÚVt•öŸŸú2ì?÷4ûóæ½ö¤–šÿõÒþ³š‹g»cÿÁà«<ûÏñ"f Üë;±mÿ3¿+¡î-ÓN´Hv¿û5uîf.‚!Å¢úÃÒ^ô³Û‹:ÀôF}+Üz¦zöl›o=»SF­,[Rgóâëf§´%•¶¤%Û’¢C98Îl݃ªiƒÆêœf"=‡ßU„ç)Ó…—kï3ÑÅ ¾N+å“ã‚êݘi.ô[uÄae­v§I9Bí‰ [­ÒI”y‚yJCeT*KC¥·ˆh9E”†ÊèG6TRB‹ëd‹S뀕q;.UbK>Ønîlm?šDtb—'Êvïr,Ì/‚‘”7xÚ2ü‰'/šj§³–²aóõxšÈ„YoûŒ=“¿aÇÇÜó rTPô:8n¼èÖež†•U=§ØN“¬ƒÇjÓk[¥§pUØ¥G1¸ÙÐèžCì<èüa®ÕfÛjä·lðµ c¯ÜDË÷ùá°/1þ²¾W^"E¤FчÛ„Ãø³°wçS™Ÿ5RE- È°#-Õ[c?ãÈ-¬nY¥Å‰!Œ¹óB nv¦‰^ŠÌþñj)Ú™¨VŒ¤8Õodòd:ñÒÑS7d³¶“Hƒí·PÔêR§JM0l‡ÐÙiÔ(Ý` k†¡¾ñHÆî Ô >½Î†ò æ^Ð…T}Xô¸·¤9ýŒ{Õ`¥KIö‹–ïAçrKßI£Ò„"åpÞ²NylDˆ´ð7•|í–àäÿ±o+cÜv=,õÌa Iîh¹D{~¸…$¥0x/¶N$æ kO~M£ÁøpÈäKµÔÃià4™l’¿°Ø‡L`½ó £>ÐfÕ!l/7¾™ÄÎ°ŠØ yg÷.íQƒtÊ !c¹bˆMwŽÂ¡Í¹Ær$<ŽlŸ¦HÁaJûF²—l$0¦À·ŽáHªÓ(²Ã·*kÞ[bÕ3+ɬéŸ&46o×ÏÖß’®Æ(„ò&K5$k|ˆçQàã)ÐP^A¥—B1§9L.®@­«‹ùÂÑKyK)¿°èŒŽAr®8¤=Ã"éæï±åÚ–\ؾmV)äçVt6ɨíA`Fël+z[ÁRª8Hkœ‡ø‚4ÙVIh#rhrØ’Î~tÞm<×(JßLàw“´xT@ðÐÛ ñÀLøÈ£áß³÷èuhþ¤©öØÛl57BŽoø ´i“]ÍQ¨ V#ŠOË‘~~01øùÀcÛÜcÍNŒÌÍHÃÎÍ9>Úmfã00>®gdºq6µg€çÆŸû㫌ÂWqÑE“oÖcÚS”g‰\ÈœñÊ]À´·¨bß(3<œ#Ñ»ègéM(+^·'SÛ°ïÀªÐñÏÖáÈØA +à´Šj?Ýoæ´júþõpð?o—þ_+¹JÿÏŸúÒþŸ÷5ûsçÿ“§Ož¤ð?—þŸ+¹x¶ÛþŸÇ§°ûµ-,ëøÃÝÅ¡S»q¶’ 'Œ¾ÌçM–×ãSáú”ü[1µc ƒ.H3ì{ã=‹ŽÑ%³€7f[´?ljh8»¹`wLt€ô¸e¶M·Ì‚.žºP©aÈq÷\º›¡C½°K¡R–C© š+=ûLgBå`e–c¦€§ún’aå¦ g‹Þðdpÿ{”\ikú1´fªYŠ|Vû¢^Ci¿?‹†k¿Ù-ì_ŒŒ°ò54 ò¸ñ54‹ðº†¼ð\‡{r6l/àlˆÑþxxèíyÑ+ò|Âq »?0/%'°J)¿êôíE¥†ŸÒçð#<('Óò Û$o°mé F6¤ßpøû}…œÅö†k¶3˜ô£5®"cFî`+ñy8!ùÕèUÆÆ»Ä¨üýço«÷¿Ä°|OÂótT~{NC~Žá?e®wLìí »Ìðu“8ˆEóÆË¿’Ž6ÙðýVìW¦†ð9ÅÌ@/f«/¦ø©‚º9Ô¬5HÛÙòè–Í`û¬P{Y µoUe´½tqÈÌÄå Á§A aô[.Ý(|ìëM5±"Ú}ÚjÕ— •À Ðo 5fšT¹úQÐP{€¾½ Taïó^Ú·!¨mæ hmýßõCÑÿíî”çÿÕ\¥þï§¾LýßýÌþ\üßÝúãTüwýI9ÿWqñlwõGú¿…¿K5 ]Ùj@AÙ¦ <šCØæ°ÙR¸6СÞýk±¾RX€7~|m`öÅ“v­ÊQÄ«#ÞIÜž3’¸]Fÿ0‘Ä¥Úø§Qßk¤áÊ9W¤ÝùR”Á¤³1ÝðólUÚà‡Ж«u&§{'ªäW0À'\ž çb!~9ákQë ,kÏX&S„ßM‹~t¯e¹áX®N^÷‚F3Ý…¹B±$ÚARh¤L#ÈÓ6*öEL½ZnÀ”•ÔPÇ=m§Âž‚ÓÅóäkf´pÈ“ÕÊȈx±³ 2…¯ö½ÇCéÈ&bo^V°”/:ÊíRäÄq/ÒdAù)´/y" Š„9FPÔÔ X%ŠoAVpc…`!O¦ £éúmsX^´Ð+6ˆÝ8 >CáSSàï—³ñGj•miªÈð"2/yÝë…kJ y¦"V–…¥…`¶÷VcBö°ˆ3l÷2ŽßÜ×@`“[À ¹!ˆ à†CBÒ« fg#x zÔ}æIéý_Í6—áå#W(‚)R†@iL. ™#70B®¸ÑAB"à2zÜV! ö=/Z(³Þ•°~~Ü£§uÍ5a.¶ŒÝ­P<…à8BÇ\ä><ºÒs[ÖúÑB~V­û¯È™Mm1¡ï2¡ZJm’G‡cð¯æQ½âýdâ–ýwr? ì¿õ§eüÇj®ÒþûS_†ý÷žfÞüß©=Ù­¹óûI½œÿ«¸x¶;öß^%:ë6:=y¾èt_ô´-¸‰ŸMÛVüfâ«q‚‡ÖÒZœi-ÞÑè6ö-'W– ]œaLÆ!2,Ê<ŠË´+7+\ɦåŒéàSÌ u”¾BYr6¼²~’Šë|bM¾N¦ñ iõ“á'(sý¡kA­bQ ôéRÆAo*¡¿ G}z+:%Ë<é;4¢iϋӊúëÙ`A ˆL~‰jTžÏ ^0—µ-´Ñ`‚„ú¨óˆ8íMQk~ÈèAŒ²õ÷E Pk&Ú%¨ ]vhÇ”©FÉV¼UeúzJ‚æ\ â÷…)1ÐÐôŸÿDM8Œ7ÖÏáOÑÁz Ý¿ÛÍ–ŠÄ÷·Ú_n6¹£vª)êÛ±ëÛÑ©X…©Ú=Þ¬p7Páïp\DãÕàôâOVNaÂ@Š&ÀsÂØ3‰.¨/ª±òç/Ñ%4—¡Ü%pR‚ÖKœƒ˜ àcØwÂ¥fë0SÙ®äÂAS–šT;Ĭl*@ôŽzT6 páqÒ¦cµ`®×lc#pê“Û\?ÄÚtoüæ<¿Ÿó<¢|‡.+Dì¹káD2ðÔ|Êö/I7±wxÔÏ·¸ ßÊ‹†,ÊDiômÃUÝ„Û9âŠÍÅØ|Ü7N»¾©H—½Sô'ÂèÀâìn§Ý£ßðz ]ÏáÎ5äVÚìKüâP¹ûATü¥àÛW£³“ÞAXiÕì¾þƒ¡Ö½ýc4¤ÒÇË*¯2Íjßáï?z­w‡a"6:Ý6e­ç7øIßzícøì… nï)µ«Œ‰súÊùÒêg¨ïLW:OSöç‡Ð©ãF{ÿ…4X¦]î¨é6Ru_ËèÅ\î‰GUqΡhÌðóðŒpùϺ=ø|ÓiŸf˜²ñÓ.5­Ù8¸ÿÆ*Ñq™Þ‡†qÛv?¤/í[VÀi¼ï*†9>‰)ÃŸÄØ= Ù¯¤]‹»1>I¿Û´Þ͆×ÿGêõ”dgƒþ4e%vmÒ|[Ä?²&Áq 8JÞÏ0±0‘F`ó+GJòBä´â+”¬½Tµ¸¨Bµ[gÝ7‡[FkŽüŒ´fMBùòQÈb9©1à×Ûçb +@¦‹­.—jõm3:½ ÆN5ÐA`³Q™£:þeÅçðæÁè.Tßþ‚õ¹vný‹8*/ŠÇ§ªWʨÈž²*Šú: ÖçwS4X•Ä#‘Oœ©LÇãÃ17†Š(D»y çñoîEßÖ¿™¦¯Üƒ$üžÍÒ3vltëayÈGKª²}NÅ[ó!P¸½Ïã)/? •ד†¥3 M =\«~ÕßO©ªX°c@|„%;£/,DTÄ) Þ„(³ÆhlRÀbÿ‹>«Ì¦¤`„ÓœÎþG”Àü¯j. ˜P?ËSи¶š¬Ò6ÞµñH u`q° ô÷&™›hé'Ø5ÒŽŸÜn¡%½ÒìŽR¸õŒé>°ö£çоmúÆÝ6»Ì*[’#dÓ%] ´ójô™<Õù•â-•B|±–¦$j)0=9ÝÎ6·sSRÕ¨Ë ¿¨ƒã–·µLq{¤£†Ã”Í4S6ÓLÙ¼¦lZLéiyàÜbƒf€a›«`ئ}ê¼s/ê~öHËeF?„#:íz<Ò ™Í…xP[£ü³ÝÞÅøu³l¾´¢®?j¨H¿ƒ¯œÆÆ‘9IÂ6EÛüKÙì åÎ ÛÉQ¿ˆöpvØ„eý?ÿqÞkVj{íjmŒN˜°B¤Œ·~÷:û“˜‹¥oˆ‡Q–϶KbÓ‰ª8©½ÔœZeо3Ù]òtLò$ÃO•îš P'“@tƽÁŒš>ŸúÎh¸9ãDRþ ÷Ëõ.s<º5£4öÜwÚäËGøJ‹Žp±RÉʧ¥ÓÝÀõÚçÉA¦ àFÖD˜ž$…( Ï/Hd/¤S8èÈw/¤¶iümLC‘RÍ®³½ä0 2Í:µé8!”óQÞwŸ ªP“ø’ü}# œ&«QÏÉÖ‘^ÆÊa–¦¦µI:3ÍM2DËëiçÛ§SåîÔhÎM Ç>|Gjw ìǸeƒzöS«}=§S=D`üý»Žm¢Ý“v\ÈÈ5Íá>nÄï¨ÇTn•cX²mÉĨ¾œÞÄ¥QvüX@ ð/~ÎðØ¡R xOý‚õñÇ ÆeÜÌ&d¦Í4µ‡ÂF B€ îߌf(§m<Ã8ÆÃëU|¯(ÃGÛ ÊìðéC.¢Æ$ŒX:SQ„²r7Ô­‡,ô›èàg:ð½M 9h H Åz «S0¢X ZÛjY°Sb<¬Ñ$ƒÅƒ¿Œ§ƒ¯©ðÔ÷£Ñ•›*:9ù@‚Ð{Ê•ˆÖ¯ !ZŽ¿u©f y(2K‘£ŽoL¬W&ÂE_êüÓˆƒì)–T(j¢Ë5T..pqKªNìHÕá©fAn¤jWÎ$#Çp`ís¹›žÌül,¿Õ¶×‘}ëëõ^û¸×z_þ_:ÇoáÏñë:íâÎËä¬[á'60C½uÖ+µ 6R±ä)×Y­lSqm³•í´rá©&Ú™Ø0"ËAÜwT—YÄý‚|l‰$Æ$€£Ž8mÒbD€Ä£étt£0˜IwÓw2¦xþ¯Ì&3šÓtœ‹ê9„C(¢¦aÞ9«`´å_uûЉÖ~Õ”¤ˆ® #„“.ÿ¶Ñõírê2sÊÀl»K]Zã[ŽoÙÉk€K mÅÚµ_³3'q”=ÞÐa‡'ßßÅVf[f¿eþo«'zN+¦R l3“TäôÞС˜—.AÔÿæn]f ;4'μÞtã×i)Å6 QÌ‹áöÔ?î꟮Ž5—uc;„ ‡/MKÓìO8Å Œ“‹+9.d.¯6öøùŒ!ñps¿ß¡/ÂÃnõPW›ÜAò‰¤CVg£:}úÕ5ü÷„?²B±U²! { ,\NÐW\q²<}Z~£w:g/ºUZ®ÑvÁåuøƒçðÐú‚ùOzðâ…uû fovª¾ öý“?³‚×ǽOôû›N»Ù͉z?>­¦¢ß{\PøÅž¨!&—Ü=w°Ÿ«†sþÌÆ?Uq>T¿I@¿½¹1ý4'¤2o´ÿ}§ÊÇOEðÏŽÿ8ý®ŽO¤ ¿ïd’ƒ#=Õ,%G¶ÒMã=¼Ï*´9$Ý^Äï“á·Â_þïíý‚ ÎKØ3cãFÒ L‹Œ7ɪð› Œj¤ØÇ­Ï1ˆÓâØu;ޝáÔ„or¡×ž3«ìE§Ñã)D§‘ Wr#¤Üí5¦ìD­iUøçÜ–ö0³ÜñàuÚNjÄk¼ý›NíߺéßDàq»tÚ ùþOùÞ;‘ïÛêÿN08í$Æ«OR¯šòTؼy`§…ŠpÌãYŽAÇü]Û($=ú5¸S(:ˆÓEºÕŠv‰Þîb;éHÇüqP&}aZ„ÒÜôA®®õ£MǺÊF.àʯÑÍh³QŒi¡V^ÂÌáIbDMùä*þáuQH õÀˆð~‡—/Ufuè è]Ÿ Ê)€IåÄeòÅC’Ò% >pðÕ0»zˆ­§Û|:P7‹ë ¼Nª O zqÍ ~6¥±ä¥x!œq,¿zï¨7»9ù|¢G§Ìf0Öü•Þ £[›«ë¢yÑ£ c¡tB&yÎ$FÏb_3Þ °8-ëí€/¾É ó¨¿B$Z˜AEKóÖÈHÌÉ:.“NÀVjôØzSéÝpAõÌÞÈ:¤¿»ΓΠ¯ÔîæVbòG›dW KQÒÓ“þž…šàLÓmPóäÔ†ãiß©ðëœ3V6Æ¢n‹’È)Ç£þä·šÇÏô‘›'¿Pàié% ¿0¦«jãÿC/œŸŸïE‡Ã â_¡h+gÝe=h(k=B‚Ž“÷ïc¤·ØH¦DsQŠ´¼ U0M#šoYŒÞRê°‚“©‘·Šv"4öЫ6þ'z@²Í]µTo}Ãî‰mã‹ûŸ^tr–ºàYZ¾-žMOÒ,.¡JenÝ7o‹n¯Q´„y[_÷,›…«?qñ§­Þ?ùüsÅÝw‰„™Ee&å´J$e„T²q‹W|×8¢Y‰[væÑ®u“¾¹‘Ï9“Ÿ:82Ôõ@çî ¸uðM·ì‡mµ¯ã?o g¡íbÕúq³t¥‡'=5Ë@É"õ¨‹¨%ï)¸-zèW,FÜZ¸–BÖbhä,\-ÝXën8E~¬ªŸYKr¨Q™)p¯àwø_(ÊÚûÒ“’1ºBPž<Í…x܇֥vÅo ÕUˆyš)>·Ú½:H®9Zk²z¡Ö¦ ·¸U-NÜÒ!ÿóˆ„Y W±g#U(õ¾2üWäcñÎf;ÀÚÌ“PDZ_3ɵC„"´» ´P‹ëŸ\¤ª&ã|=¿R±Ó QG˜8k¼±ÕÎpu„ònnDn{¤e¡ñìt½kgªtµÙ€Ì‘ígUöST…âŸ@ÌBiƒðjÔFöÄ-ÏJ͘ôå˜öáC´gƒi‚q#MÙÐ •Óµ»÷–XTv˜A&rÀŽ(ÂoäÐ gE&|†$R!Z¼Ã}=‡øpÙuVJ•:ŠÛsõ˜æjMücOU@ëL½Æ³ãõÓœµF/ÈÔÿJÄÜ›Kxñs”î ÊÛ¡e2úrû5:FaŸêhCmxt¤ôÙ¹™’Ò#Ê9ä]^öOþ›wÛÄî’Ý8fáÚ:jEîÖ‹Swývzë—ålÈB‚DHU"·öÚÃøözÛ¾mnóí4ÈmÞ|+s›o‡·ùcÜæ%©3wûvæn3×ä.þ¾§Ìýž†'=,©m w¯?µåÏÖ?Ÿ.gë?ÎœŽ’HÖöoþ8—`(¸=ô,F?ÿæ°(á–.#´Kyª˜ŒpW–8Y>K8Ç3Ž\j«øðfŽfpµ‰*ÆQ´½´7OÍ8 ÍÌ™›{,vÐ%å$õàI=/&´¥E+¬ÆñM?!¯I«uJ¶ C“è=oQÙ‡Ðìm©Ž ©q²jÃ4÷úc@óB÷ðy‡ç»:{—ûн¯4æ?{zW±¥Ÿ=ÃЬ¶úûÎØ¬. hjX”•)jÊÅiËS/'Zæž^î‡,ànýX:Jlv–›S¡¥­eâ½ZnaŸ ŸÃ…¸††=X66¬ÿ:ù†ø¯µ§µ'Oëu -á¿î”ø+¹Jüןú2ñ_ïgöçÍÿÇ;õúwþ×w¶Ëù¿Š‹g»‹ÿÚ»Oü×øõ¿>,PמÔ5ò€ºâsƒø‹Àuż§¿=V˜ê*ÚU»Î ì*žÁrL`׈)ZâXþX8–ðJâ÷©Qi«˜èŽ&0^h8dÂhVãÙU•ó ûœL$÷”И%4f YBc–Иw„ÆüoÊÚ‡+C0í™%¨¢úºäûhƒæü™^î¾OhHªL œ×êb™3…êøÕW† Ûh”àxØÆÇëÆÊ„ïˆËEˆ+!â¶–šxd^µ\à´**Í3Kçeiq#* ÍmEkMDüzñ­j€­›åjE>„6i”žPŒ¿.ÂfK㯅G¼ÄZ5ÂBB”l0~­"¤gðß¼iW ðÍ»µ5z™¶¿ÿúäϪ» ;Žo³xƆxK#¸õºüýMçy.’[³[ÍCt“Àmá‚¢—SuŸO·o^D7‰ãæíê‚n%€Ûp“árÜ–áv77è¤j¥ç&Õ‘ª9,uÝgU)ðå¥ÒXwóàéb œ¸oŠ—üæ6 ºõ º=d´;£S8Zx¿Àk°¬ T–HË®3(kiš—°dK„%{.`É„§×Üuçb‘ 2|Gø‘-‚Ì(½m—ÞI7eµ0aF„’Û‹ˆ+ÇÛp4ßÌl·Ä3Û±06˜1sÚš&?/.XhýCµ|‚„X›k«„ÚÊkA jëyA¨-µJÍ_sh×ððœç'§Ì :–ûªÇms~Ì+‹0)¸«»Â[õ¾ ¼Õ·@·úžÀ­Xÿ› ýS¢[- ݪ·* n%°Ì³æ%‡Ž<-p5Ÿ?X„«ï àjõøVd©{–úîp¥$x\)ëŽåEÇ‹nä(ó +°q4Œï,ÕÊ;‹d¨n+eeKåt×´1mæïôý!KI*"†‹,•,åV~ߘR)'Úv>@)“ñOŠàDé»sA©½øRîJxß0Qޱ\˜¨<"f Dù‰èΨU HŸRÏÉGÖÏ|T¤\ÛY§¹d²üÉa!â0‹4EQ¥èž˜-jz@Õãd¨Â‚9‡Ô<Ñ ÆSX@ð{C œçæGtÏvEÁ³XƇþ·c¢ÿùÙGâ7…y+À\ˆ—„ ˜GÑ4àŽÐä§ë\ç¾åÃÞ•¦s ç`PãŒ(iYißùœ¨Lý>V½÷3c{Ž3cÕ…°Å^]„É¡&yi?”M, ÅñºŒœC§w|î~’äAž$ÑÉ\vÓhå¡Ò>Tî(ù<­ö?TîØ‡JÝu9%É}‚9iÞ3gjÎå-iugÏ•°Òw;nPg6k‹LÍM…"Å·­P´¥&µ88­¶ÍÓªýîÝ­{}¦ÄÑö<€)²»’#l›O“ Që·Ÿ!‚{\Á¼—çZóÕ¢§i="»w9ü¶³i!“i]©…Èubn§Ÿ6+ ¡ÕÍŽL\Ç´Y7s=rdÕ΋îbRê}@ææš% [2÷ަ·ÅŽg9‘v÷Ö?y·Ëà–£ÉÅõ“o¡3×3µå[ÙlžZ@7䜛:ócÈ®ì¬dÿCç& @—ˆç$ëÕÌ3Ó|G¥;ÜŽÙKƒÛýœÿ¼g£Çw2¸Ñ ú®¬nJÔü1¬nOViuKÓnG­nOîxðXÕÍúâÃC/áÐK8ôáÃ_O‹ƒ¡g›÷– l^^….ÿýË7Äü¸¶³ ÷Ÿþû“ÿy5W‰ÿþS_&þûýÌþ¼ù_Rß}âÎÿúã§åü_ÅųÝÅ?ÏÆyòöl>ø±ßw¶jý kÜŽ“ATß®Õ<½/paAëNñ÷ˆï©¹À„ˆÏ„“ÏÜ+Œü‚hJ."Üq€eÌXºýItÇÃhßú—Ì*òqbû?· <ús/ýf.=ƒÑc1iªxm*’C¨À—¾M>PÉ«  5§ðù?Qfx·Vþ× õ?Q´ ü^·©X|i>ÔÝ—põCz2»PÃ…*a¸—Ü Çb!)ÌfiíòZû•µ˜ÜcB}&§¨ZM®ÉPD2É@`ÔV©Ýð(Tˆ„36ê⪽$ï@`šÕêÌnÃäC2í„i4&° å6á¦1àõxtÃй8¶U„”M>‡Oåøçrº{4΀¸ÛÑÿÂßï<ãÁñ̓qœ¾LLs…Ÿ`ëë/ „dø©µ¬­ŸÖà‡õfpàùÚV?1|:F§5&êdª@É™'IMkL†ÓÕå+¸¯„«ÈX`‡.©†<Ôl ½é8ÐúWñ´Ÿ°U#™¦"²2çòs|É ¾çD +º³QÛkßsæPâ”Õ<ƒ)¥ºô`†X?¹f¹/Y‹¶†ñª ]êÈ´/6~"¬¿Ó(ÏU£¼6ÆTÀÿ,Ò_c)S6c”Ø•ÔþÍXüÉaW0AÙÃ|û6ßÌ"úÔ ¥Ìî3ù±Ü™M„»‡Y€Ñ<*<º)M{ùj6˜êÕQ‰fW³±!w糇å B?‹> ˆz©×OÌ÷? Aã£óÔ½er¨² i õÄ{”tâ“`÷]7äÈŒPŒ“Ð/¾Ibs{,jØBUZ¢ú]‰QKÍaõWõÄ"t­¶%N,BF›ôob/½4%@±§”© Bé%ÂKºOÜ¡w4 xèÔ¹6Èk­:wvúzça¤X!¿ïTOÙ-ÄÈæ¼XùøÛk[Œ‰UÏ:ˆ+pÿjt@ÿv·úçBà+Öýp%wë{Nà¥æÇ­GØù/«"ÐuÂCâCßç"ðß‘(ü­ÎI½ gæ¡.Ú¡ëPÚ.áó >ÏêžÎÏÆÿüðô„aô[T‹ £Ü8{‡¶þ³n/ .qÿì]—ÐûßtÚu=!Pü;€Þ/ì¾Ñì[¿|^]øžË  Ø¯áŽáñC|ÈH–+ 4„žo¤Q·áó¬{¢fq¨{M—¹0Ïó1e”üÀ*ßhmÐŒdÑD`DLEZãÒ`«)DºI ½XB/Þ?ôb>±¶ÂO,_B ~—ˆ¡}€ÎSF;S1­qádßI í§ÊMJþÙîlзpÒ(Ç·?•y‹èàä0³‹ ÖVt Ž/Fpºÿ0ÀS4M…Â^Xkdbm¯­tHp(mÍ 6V%ÃË1-ʤ|‘lqè¦c¤ ˆð'¡µ†¼¯nèâÜâ ˆR´rD“úË€Àð¹d;»+‹"hz‚/eÝH­– ©¨´æYBj)g:rW‡Hlé¤E¯Ë·ìHå: “=ò„ÑÈs¾mxK¾Ag÷k)7J]'J»N8¶òŒ3_⎇—ñDpD¤`wvµˆ¨YVQã¤çà¶áÖ3Þ¼Ô †& Ü–Y4¶T6o¢<±§'G: nŸOɧžã dÁÓœBv¶˜BÆï´™7ýÉæŽ,Enÿ‚â…&½êG;—³Û+r §b¸æ2« ÁÝ*C°\:æ‡`ý°L2tÈ F⥠¶Æ!Åý4NÌ&'–l*c}ÊXŸoëS` Ao§Z•Žk©©#¹U:Š‹SœÎÙWYôèÇ` PÅ À²†À‚ ²Ÿ /£Ë0Ô“)ÂÛ¾G¼ÐÍ’1öúÓ=óÙ‚ÿÞòäÔ…–·*ÆeVÉqŽœ¨m–BñœïetSªÔjÁ&4×+ÐŒ5jGós‹X¥§Q¦82ÎÐ;"ºÍÐxÂLBMšàÙ”GÅ^¹`çk7;o)“ÕT´&ì­¸S%˜wGU+.ã´kÍ6Ü5ðçî;íHWëZt£ÄRÖ7¬ôÿšÅpÄÀ¶O& f]ýf6Á,ˆ¢1AŒ¼œáÅæ,êœàªLð±àBk¡ÆiGQ]r±ìNÛ€¯ ìÙpÅã±|‡6Ô0c:3á‚É¥i=™±ÌŽÿr…¹×Ø·¼Ð·Å#ߎfcÜʤW“%›Òp³;Çmc`ÌŌϋ_¹- ØœÄpDˆaÑ¶ã¨‡Ê àƒ8ælUm|5}ù„M‚[=ús¸…ÃiØß|=žBgðåÑì9#w»póq‰ï4ѨYÇvðŸÝð0-9\vî^ëÝaÆÐYQƒŠÎ-ˆH·U½É„‚  ¾Ó›’Ø…î4ègÚ$Ã2oP!—·ìàBUX¥&5` Ͻ!†0(m’†<Â1`î´‹n÷"«…‚„áu 3&ý*9/í¸/Ù/±µÄzm×óZ÷4÷5‰!Ÿžãê!^'äƒ,„Rbw% ’k˜–ù5^—†»"KRÓ¦“¡‡Ñ¸2®3õ:Q WÖàÙþGÁXzqÚê¼>ÛäÒ2s¤‡a®0Ò?óÃHU‡üM*cNŠ9Å…9.CNËÓorú´Œ8-#NeÙy§;óEœú„mά„{ í´Ãwéð ÅB”<+V‰Y1ª{B³E"Îl8©XUñæ¼1Ue¬êbUŸ–¡ªe¨êOªêY v@ö× É÷Ëú.?–Õ ò p9o|,ÊÃ!Ø£Ò]È—{ºÒàX…Ä»r·ÄÕ™¾ˆ£½¹sêÐÇ|ÊJÀ–E ï-â6r¹“Œ=˜ˆ[ÅdÝw¹Lfùá†&Çã†&ivv¹Â¬˜¿ø1¥˜«x0í“ðÈ>Î ¦UѬ4´j˜ñIo$°+…š˜¤*óK#óOxH`,þeèd:ùC's2¬¹*àÁ•Z~(ƒ+òËŒÿü× þPâ?w—ùßVs•ñŸ?õ¥ã?ïköçÎÿ'OwvÝù_Û-ó¿­äâÙnÇž×]ýñYãLPìÞ,£6﵉´öølÃ/óâ&a´* MÂè[ÁvÇic-yƒ#¦¢ØDц‰ã-žfé,õ‚ÁœÏ†ßŒ>C£Ù~~ãT½YB£r³9ܨíÝÀ!}¸F>šýD¸h¹f³0tÊ—M9þÍò=Çü®Z !˜9ÅÎE ÅÐÊpófmsjLf·ñø*鳯ºh„Ù{Ù†þmüïQryaåeQm¨²¹L{ŠÓB5ÆÄôq5¢Òð’Ž¢†SÎÞ«ÏÕìrj$ëÁgÆñõ€ƒeÍ*°¹þ±Òètßá@Ð7.?Ÿó¤»úš[ù„—(žÒŠã½Ý¶új–ãt{ž”"ó¹9Ÿé5á70Å^2ýO>Ihå‹Êǵh‹þ÷¢R_ƒÐÓ‹ E¤ÁMu(©{Ø¿üÏ$kÇFþë£ñ*ñ µ¢ÍhÚŸÁªû ÿ[_ÁOp±x‡6^¹l3°¯û'ûˆÓ´Â>Á"òq#ÁeëÙæWøGü¡ö|ƒ›ø}³F‘•B›?â,bçë†~¨:¤—¹vjÚv¬Dvy%ÞÕž=4ÇKùþ‰¼ ·©q|ò"Ó™µ°÷íq£Ë©:ºGÏ3¼dçõB½Sv ~&ä5r]…ÿâΈÒi;­Š,îÜBWñüõ•ã¯khàk¬fEZðMíž¡¯Ý0Æ`)ïBÅ« Âa(lÃç$5ƒMã6ñ)º>@{6_m´^ôÕF˧þSÑkÒÄ.Þ V“Û²laXËííà+µí6ÐPÕ(”qä¤ð ñõÔj¤Û8öô5Q›tÌ7Ч8ÕV¿šZà£ê~؆“0¾fñ¼|nAÅ.0ÑÜŠ][ÿwýPô»;»åù%W©ÿû©/Sÿw?³?oþÃdß}œÂÛ)ñWrñlwõ©Œ%†þï¸T¦®%·iܶ¤ <*® tYJmàÒálRj¹e+âåÛ*ÛvJÅà£ü®ñG ü¦¿ƒrhªzvƒA'€Hê-Æõ0ð;\6– W%¶F[ãA¤ˆ.5È?‰y¹ðèìÇr_ë%Š~…Z`®¤M~Õ^í7U!Aq1üêû_ §óq](Š›âól‰ ãLMñâ ž®ˆû+ÐH?€€ûÅÖ©xtoH·«nÖ¥Âk¯üïDÆ¢c‡˜E-Á8ÎÆspŠÇ½Õ¨ÁÉ™cúËò+n`–BìÈ`ÿ̃ªOÕß-êŸÉð£þÛe uɈ~íœ<«™QC§‰á»5Añ9¼òÄñê ÎÏ„‘8Š.ÇÐb‚öd½¿Ä„ƒ[ îrt[¡ÚÔêíªâ¼Îs¹¾sj¦ÕR ªÑý1AFÍÞ ¶`+£HlµL òM‹ó#‡ñAoû£©l†n Òm¢¥ÁN$ØŒg—$³ðÁò²Q#D³ Aœé4Ý.Eb³„÷«èEú•k²<êÄD7eä78‰¶åš*¾¥¢šåÔ~Ã矲²N˜deùvDñk†!]¯þ?x„”eÿ¿Ýy(öÿÇKûßJ®ÒþÿS_†ýÿžfÞü¯Ã©üoµÇõrþ¯ââÙîØÿCøQi/Ɔ ‹4¥—€q}S/¥l»›³ÁÉÎÜy¾ÈßW^æÉ@¯ƒõ®LÅvŠÑNÔa~æ:d ) ÷7Û¡€< \k©ô€ÖŒÞÇd‡[®Í_6Ö0É™ïkëܲÍü~+ÿÒSß¼\ÃÌ7"ñÍËEßÀ\«ôU§¸„µßŒJžmWÝ¡óU6Gž(ó•‘%Ç- Z$Rã¸õ¾ògÊY±ÿÄJÜ#ž­Ø9B{9lÔünP©×-¢h‘åayÙ /#Xâk´ÉÛú¶¤F­kÅêÇ•yT ê¯nÖýOJ7L[:NÎTûUhŸ árö§ ªY~9 ^–’O :qx6 g‰9˜}ŒU!Ó¯"7̽xzÍÄÒ!Ä&ö¾h¿~{(ñ)ý)YÈâU“¯ aT¾ïÜsÊ’£—Májòþß42”´:ˆx³Ó Ÿ’ðiN:› » "g1Ì*ÒƒÿÎ^Ÿ4Û™ž󸡈xÅÓ“ºøD`ÁÞ˜jO&ÿXU²Þ~§Û®‡›«’{ðséöÌë%?-!¨2å¾B·S@Vü³y¶ÿfy·ÐA6ÅÛ´…¼^„D ¾Öò†¡u¦HR§â 였ç÷‹I¹Ìåó@Õwô‰9Ùù&>1[Vƒ3¸"«ðöè“òPgüÙ-¨t ¸Æüöy «i«q^Fk~òɧð.•êy@R™VWš ;SYÍém¦i^ª ÐBþ›ö?'šZ÷S3Ä-Ø~ÚáeM4úØÈœ{b-ÛªcX5 ß4r Ê÷_ÈìIcš±Öš‡åáê»@vµÊ$9W‹×uàƒxÄæQl¬0¢:ƒÞi˜+Õúþ¾É ¸æ ¨F”*S¿v”õÚ±ÿm^i•'QvÀб@¥½¯.¯j¼jˆu?þó™ƒÿ¼ÙÁT²X€Wêq»!fCC饥?\„Ço$£Ú×FÑ”°€–ßFAýp>—9F& iݘ)ZÓ“=QÒÜŒ’mØÊÓFÕÝk ¿|Ðø¹#¼œŸ}¿­n{} µ{ŽÔ;¨Rr7k‘½Ûµë" ·Äíô,Ý#åö[îg=IŠÄ»9KFI>¿dõ8Íf›*;Hj‡bºž3ºf‡¢¥¹UFzHRêIý“ûˆËøüJjS³ý‡ù™@ó£â^—Ý,§Ëh1¿ËÈq½”}÷>ç÷¿”g^ÿ ‡×Ó‹ÖýÈ»›|4 š¶XŒÂ…R3(‰ŠRüL¶HKÄZ·ŽÈŒ£‹!õ«k¿Àe—áxHÖY “"† d.ìe,Xða°B´iðòµá’»/v6øU]>U·½¼ËƒôN .Næ:¼RsÎ˶™¬¶Te _~PKÀÙÃ|ò ]Ýn¥¸‚• æMisv2s’°¨{|¸%Þö »/•Ï*®ØüèæKš iÏMµkÁ[J»i™+z¹×ñL6é¨xzÒcqk€álj€JÒÊrv®s Z…™•þÒœ’ý²É`žLP/›Y¹?øÒ$r†R4 :ôȽŹXv¶³gvJ<÷Kñ©`‡C‡Ï¿ˆ)`@`=5‚ÎÀƒ¦¡wÔB#cÚ9.ÏëÍx²öf´ýÿþÏn‰ÿ½š«ôÿû©/Óÿïáÿ<©o§æ½^â­äâÙîúÿ¥ðRþvRHÇ¿ï ±—d¬fw.’ö@:/ÿVˆþà=þÎÐCB²üi° ŽÚÖ/âxˆ¶ý’iÜåã,×l®ƒG‹»†ð‹´#áwï4È>ƒ?ŽË  Läx šh¢bƒ¶Ÿá<˜ë1è6]F2]À¾7Ád-B—ÁhÛð깟AòaI{ úª›ÃkJýhø ºå­Ÿ˜ï ÂèãÃö,‚µ~¿î`?"ÀŽë6\+æùu¿@:‹9{ž^[)j¸Ô‚çÿ¾ý4Eª]°rNö¢–\ÙðNåo¬4Á_ÔLúÛš"'Òe“öÜþp4Äü¹´zŠ>IÁ ­´eó&® “)âT¿‡Õvt•\'´ýs3ÞmEã8°"àKsö7Tò)¹dÿ3ìÚ}h¹ŸMÄ:¢ÝÇðþ»þûq|QöÇ#x¨¿µDI]^oP§|%2ß"^šmÿ€)ˆÝ댦qT{úd•˜÷q³‚ç ßS:ògð¾*€ðkþ¾¸çZ éì°}Bžiígá…Å:Ü`~ÿ­£æöxç]†œÚj-ÍMB"i}ížåŠ6¯ëW£‰~n˜Õ±ê¢ëW£Þi÷l în½†NBtwƒÚŽíýaÊp9U÷y_ûÊùnM ~lMpÀo¦ €Y*<&•G‡·“d0>ZÓ6ŽL_$Myœl)_¤t_í‹ÔÊñEjá].vg¤–åŒ$^ÏðFjÞHâéÀƒ¢%°wÛfŠ ?RË÷tÚ‚))ÇŸE<’Rgy$ÙÅ›>I™^EÚ‰(í>d»äa¹~÷¡¶rËwÛïÄv“v1ÿ!šÓ ¶í(ß«ÇÍê¾IûÉœ3í´ÇŒÛÌ\OF".>7†9lÖCÓf­K@!~^›uËä€Ѻe­Û›bd¢Gj †L×-ÓtÝ ˜®U7¼a§å»©–·3p¶@Ú$ÕŽ$2úäsÿÏÃ(Ág5OÈèÒ"ׄ ±£!¤aéÎp¿Ó^+P­fó¬dX©µ–Ö19Áym ·üëÝÒ‹]öŠH¥ºˆŽÊ‚ìAô޶óhgÃ}8m®ŠäŸqh 2\DieZÕTsœŒ24bð<‘•§ Þ·Õæ^Œ„3Võ²blŠ“žÍÌrCtÝtÊF=Jð ¶AÀÛ9@GY=wZ&r€£`žzΟӆ‘º6™V­ôñg´áw%3»­HEóž—MÞðþä[!B w9 ´|k›$moÇÉJç™,­×g‡{¼Ó7ÈÝh@þE]¤î¯ ÅzJ:&óšïЗzÔmvÄg¤X³W$|I2诎ÿ5ZÇø|G¬±ÁbÎ:}Ù2Oèý:€Ÿë&ítÅì§´¶¾^÷¼ç2бBH£Ln_/ÅÀ“~Yù¼.VmÉÉA+O~g«ôå“ýÍAj­5ü¬G’ÌkˆÕ ýeN‘_ø Ö¤MûZÑäÛõYee8£ü4ÐZßÅeùÿŒï'øBø_OJûÿJ®Òÿç§¾ ÿŸ{šý¹óÿÉ“Ôü¯=.ýÿVrñlwüdØW–Ö¦„ô’­Z½gÏý‚pu뙞4VÆ/'ƒ½•ñk…N3ß)Ô–C½°ßŒ›Y«š{Ó¥Åò1Ë1k)Ÿª6Œ¾UºNv¢”ÛJ>¶æƒê²½m,¯Š<„.¿“YDž)¿LÅHÅUÄodQD ”È÷ï²:< oâBsteÙ”|¾ ž=-Ç+Ý*¡*Ü8pFÔ´ K«Œ}–òr§ËŸß©Àv&Xš÷€ã1PÚâuç±ÅwëóÚâÝIòwË\þÊÔ7çÛBÐdГ B¿óÕT‚{­ Z©?¯-Ägɳsh#‡ÊîPÐÎAó)hæ0íz5p»}»Æ¢F Ë¢Ak‚º•e²ëE»õo¢uô·÷¡X@ÿ÷x§Ôÿ­æ*õ?õeéÿîeöÑÿ=IéÿËù¿š‹g{JÿwR*‹]?¦ð¤Ô–ÀRXjK `©,5€+О”*@çù <ùu€'¥ð;Vž¬X hëÿþW™ÿo5W©ÿû©/Sÿ÷ð¿vvwSú¿úÎÓrþ¯ââÙîêÿRø_AøöR ([uw-à‚™=ïY˜«eé]ü¬Rx/(ZKÔÉÅùÝè³!·Š*ÊJýà=d£$<¯•æ£Ôù%™þ5VÊÙ?+eÇÊGéL€2å|ù(K,±R‘|?Šäå%IDM¦IdŒò} ´{ ¥^ΘX(?âùRÔÃ&êTS|ž-QMœ©^<{b0;â*ôÐV:žZ±Ìy*g^G§€ñ$ÆŸùÕ»*Mx[' ÉJé'Ë{º½z˜«{ÈÞTÒë^¼ò§ó3™¡–×ɇvn'‘ØITʼnŠe~' NÜòÊ£e_VF'o:§œé’JÀvjf´´'Œº¦¨îuåQLNzO.&abtì‹ÉE4%݃f.zœî`f?¼ïl¶6[ÍEÈ`v^ ísÒ2©—á¦4Xz¬•–I2Jã·Xà2-c¯s6Ø“.‰rÙˆ|¸¥Z÷_‘nuRFì9¦WK©§ùû¼)“º? Jcÿ}(ñOê¥ýw5Wiÿý©/ËþûMâ?`Ö?~œòÿ¨•öß•\<ÛSö߬øÒœ¾~hðÑ ¥¸´—àÒ\Z€£Ò\Z€K piV ]Ð|Rš€K°óü÷o.ZUÚ€K0^¥ ¸´Ëq}86à“Ò\£Ò|/Fà“‡b^u8îÊ/Óþ;¾ž|ÃøßÚÓÚ“§õ:°%Ú껥ýg%Wiÿý©/mÿ½¯ÙŸ7ÿëw§æ½Vâÿ­äâÙnÛ»G½JtÖmtzt¬èt_ô´!¸qDÀ¿­“ÖÛjÔįYBÎ9>ÿv»ð8ýËÒMwNCrýa›‘#ìH|mV¸/뙳ª¤W¸ßsYÅaŠDÉ ò™0Ç ù0ã`FGM„í‰&_'Óø³Göé Ã6Ç Ud"Á«¶²D£ÙðŠï\7ãD܉'¨Ž˜R J*«•µ0­GDÚ¤¦˜f½fž°z·ñ%r«6=Èã¤î‹êÁžm¾yÔy´‡fñõuKMúµÒécÕšóü=¿¾~¦_©œ…Þ¿0öÝÖæ2úÆWñ8ÏÐó¡@Y†WBòþ¢01n5J¶â-6V¥Ü ,KŸÑKR7Eç[¢ Açƒù¼¸ãÉûõû”ÓÁ=ÚÀ;Ò Ô8š£ùGžöKË÷1Qè>ùÛ t>9Y?^c¾ßŸèù [Ìç³î‘îøÑ:~´%ŠJw—FO F»ZÎo ¯ˆ;¨ÏÜúßHZûýYòû3XÁÇ£ÏQ"šdYny”?÷1_í4_¾*¾Dë¶2Ö5ç`²fY4Õbg*È4¹›Kà³æ—”&ö¹ÕƒB>:çéŽØn:j‰}ÍÃÇQ½°ÿŽØ:®ÒE)²œ/,ç[\Rš,¸áRù’ ´?{8Ð7¤r'ºBž3v(Ú»ˆc´a«¾}J©Ï+¯Elèßhºéå>ãÒÄöÛh]GçgÝ7‡(û±úsf¼s9c؆D؃±*!`ümõEÇ¡ÑviÒ}àuøý0™Î®”‡.&–S‚p@i®BýÚäö­•ê+Ì,D”k†emÙg_t»HÈ`ÚO¹¤¨'±](Øæ/nFPCð¹ÿ•¤æÎLkóÁV :LÔ¥á•KÂ]8çÈhDu)»$ŸbWÒA Ãd ³á­À ¤7ÕÉ ÈÕH@U&¯lNVîþð«"1ÔÒ@e èOat>ŠJå"[|]D5`1 ÝúºDÑíJo&ã½ÙæÞ½O™ÖPøh¸Ö€ ‡xþ¬Ý8—óV2ƒiyÄÇ[rUK¦ˆy‰£4ޝA.Æf¬iÖw^Á¦‹Û^¬YîÛ³èqÖ‘ÆÈéí-„Ï?S8µáÎâÀ·Á¶ý‘Ù4¸¶j»e¾b^t3ÛF@Q;²¨ôA²¸ËNç5[r޹ ïÐçYxx÷_¿éœUцð’œz^5z‡pÎ}îçáIĽ³î!|âÿG‡5þ¨Ó9úœ¿ ể7í`çé,Ã’½ÆÛÃJ´ã%a–{ŽÏõ©îlï¸ÑÞ!-iïz½*ËhMaצÆùÉŸÕhÿ5}\+TNt… ]âIïWˆQC¶Ù«P=ê·µhƒ¥Ö럗àHu«FÃ0ç¸RÑìC?¥„c¾å2CnCâYÓ‘È~éì‘ígd(gœ'÷eø3ÝÙw “ìWvÜWw«NFó{Þ=*úòÓôËÍ¢ïÖ¶Ó/Ÿ~YQé^]Ý£^q¼lfÉ\?-`òÈÚzÝÝâÁó:h±ûÈKv!fd\¬`|I³Ìؤùjznz­ãÁÞåià¶Ž÷)V‘9¿ž±nË=ßkûÞ×Ta];ï¢gl8þ;tp3HÒÆ“?ÊÃÕèv0›D5íÆu`RÓî½®x#€a?¼$ƒÑP¯¼1šôú×Ê'Êzî°†e¿[çWŒßëø:ÝÿëS½:éÃ¥£VP F6صùÀ„IG1Àöàã-~S‚MÝzÃÿäx4ºfÃi2@ÿçÛ[„Ÿ*çZ?þ«øŽ…ƒx‹mÏœÇiÇH†ŸÄN²f€pAzÝ#lHq`ͨ2%˜åÒ3ZBYìÍþe\P-–…$è62¡"膥–^P ‰RNÝR*1>¨’':  r<}Ðåà<‚‚œuÁZ”¼Rц ÐøÁ0Ò!¬(7r kŠ‹‚–~3C—!sYB::4 ¿º”„‡Žt7_7‡†7„+Úƒ¾NÑî•?ÖR’ý0ÍæcZGfûçRvJŸ„gn•ªmúÁÜýr2£ ÿ B\4ì-󟮪žAå®ÐbÕ¶«Œ€ñ¦•”[ÔaÏy^Q•Î@ª‹I!ëF@á-¿‚Ä|àðt«ŒähÏÓc€ÑÛ¬+^‚Cßš»—D¾íä,o?ɤ´g¯‰ø4]Ë”5ý‚óºÉ4µZžxIÌ”I=µÖ…<4ÁÖÖïÜÚza8Mýβ©ïJ͑܇¥³6ââ @YmÕÓJ H‰ßµÐIP½B‚°´‡¤L»Àl#u$½‹S…¬`kALýœþûWñõÕ:©ÙŒÝèiÅϺ±”ˉÿøòíðÿvkÛ»»µ'µ:áÿÕ¶Kÿï•\eüÇO}Yñ÷2ûóæÿ“í]˜óÎüßÝ.çÿJ.ží©øs¥£8<}sx’!ÞtA^Pq"*D8§qôcƒ—…nl¬q£¡‚Ò2…ßPÖS…t¸ýGZÂèÃÛl ‡6Iíë¨K‡Eq£ÊžœFëù?†q–ÖV´Ï'3” t,œgcPR1ŸüOÔ²M…O¬Òa³Š¹é—}Äÿ㾂/QiÁ„ýXæ8ž±àwX§®D?¦ :ú²»Š]€ð€™p[D!ÈÁØ#’ ð6±B_r í¤‚¢¸¢‚QE`ô‘Ñöç窛XUkàˆ8·¯TØ…îSP³œŒœ˜‡åĦ“Ïuû¹ŽWj½éyÙ® ¥ìç³Ý~6Ûí—l÷Ønñ`óqæQ^¨ù¢Ì£%šß-Æ|¾ðò(/ÂüNÁå‘PVEN”°¼çhFÁÑrëPh&X£3'ŸŒm{'ëRzãx*Ä•£>C =‹q\©ÀÒ‚'•5y庵»—C~OJ5õó@"ŒO•WJ¢dÂA™œÓáz4ÀÝsO«ÿm©"ÃÝÒáA ‰øçË_GäïH¯•¿« ¡CÐv¶4cd]©£·*ŸŠç-Å(“š<)¯â/…‚˜Hñ¢5†¢S©kH™yFž‹4yð•Ôr³[¦ö8ÆQŒ'!Œì×å©uš•›¶Ú–PÓ¢¶?©î­;Qa0œ¡ µ¹Ë.{#›„ ß«BÏ×4² ßÔb¯®“xp¥4vðúGE¿œg“鯰]<š":Ædú pè6KX¸éï‘Ã Š‘I éƒi¢ö®Ô®•Úw°1 ŸR¡É¿ÆÓÊ•4“AÿæòCEEã«7»ýòœ}+âøês^íe!ºTÝ*†ÈeŠ ïešaüEf¡î¿ÇДñ)À;Œi¢B>»]Ä<”ñ•ô1F2­Abli¯‚þ¸”ݱäw4÷¢CEY¹ÍÁ [¼ŸöÇRC°(5p]™hüJ¬p 1¡f~y¯yf‹­ÞÖºeȵ— Œá¬°?ýÿû7kÿ_Vl"ÿDßÖhœŒnR¤Ae<º'Ðà5!, !æ]JyO# Wí­7dz¿4ÑQ®hÀ±Žx©á 30( NÒùž4*³ZãÞ±YÛö…hm«i¾À-ø˜¼j¢?„hGâ\íÉcêèµHB$ ]´½™ŽeN38’©À³7ÓÆýCìÍaož : iλKKV ìÒÞ=½øm–>Ç&íŒP”À YŠQÄ OÖªJú·v~u†÷ïÿw~yòíÿjçwä[cۆÖ·+ýK¨±ùUj Æp\‹iu®߀5†ÑáóÕÐ;QR !<ÛÒ:‚#` ¼ís€™aibäc&Ñ&…¦/¤Ã|’ ùÜ—dC…—’M)Ù|ÉÆš¼¥xsïâM¥ÁA0_ÖTÁ/2ÄOívƒÄ-Ef¾qwü#--®Ý÷UÕiI*,:¥†ò[IRÒU፱=´Ñp–™Ä„ÍÈÅðŽ‚A˜BKÛtŸaD Ç×0RC´°3Jù¸pX'3Ólbn&¢ÑVà³l±Ot-Õ•þàýh “ëÆ|¢†÷‡ze¢½öSk;%$?òYè¯%PÌV«ÔxÁtJƒ¦jÜB5 îíh"0°Xˆè(RÅjŸþM¹ÿHýר(ýðm<ÞäÁßl+ÉgBJ8nüuÜêtÏÿjuþ¢§µh/úãCLŒ-®J’ÐæUï *qœ–ÜÎ=„á³_#Ù*êŒÂžQfrU%GSVL[¡øßrë©Q=¼JŽS£ÙÅ ÞÔÊi£vÅ©½/á¾÷U .•tµ‰úêôbþtþ­_74°?%ãÑjWF®Éìöv4žF¯ß4ý…œt÷[½ÖëNj¬ŒhàŒIƒ‰YÇŸw\Ϧ3æ–µLnxÑ=ì½ ~¨#?´SqÑÁ®ß¢B%+Q¯céá“=ïA RŠ÷`…#›F©2/Þ$UŽ¡âïq©€žàªg¬C†åfAA÷fx<Žß‚·{¥}6€˜èà=/? “aº**PÆóþ ú‡ËË ! r@Â’ÕŽ;q€Y &Ä_0þ¢hkaVå_þÂ’HRâõ†(BRÏgà´_³V†ý?Z½Câ„ä„£Aÿ½%;ÃuŠ­ˆýé4¾¹¥1¸"?x±ÿÒ,bóK†|ä?¶¦¦±š»°žÐê.TBˆ#(PürÝLâÐbUdÃís—Áyzþ, zÍ…{k½— ~ËÈ·=ùv‹ÏH†›uL6°ÔaÚDMÖ2 &Ãæ¶‚ÍEü·Hžüû³¨e½©PœþC@dL‚¥M„[¦•˜tFµ7åkžJ§Z=Q£7f‘ÒÀXJÅäùNâùíóz¯V\Œ¤×%óà«Æ£³ñrϦ¿Oû½œ¦´öx`Œ1±Šôh”x-â-¢I¿èÏÄW0$/ /£<«}Ž¢«Qe®Óš€É,­ÁÉÁa•Á¶¢LÅSÞ(Åç2Ÿ¯Ö0Å09|~Ú-.¶k¿QM׃Ë^ú’ºk5Þ²-)/«5ÙÜ­¨ùUɃVg`µY[¨qBCktÇêK8¡HÿŒ‚¸§BÖå:CÝ´[`+_,bàÁeÊ~ìôÕ>I¹©ÚZ:‚~þEïéÌáÚÕð"½,¶ä Ì&+L˜1œžlãn¸z£¼ îzv5úڂЮ $ìZ.l5ŸoŽZˆ€ò~Ñ(„tJ:g$(ˆçÃõt‚£ƒwö/Y}³)„ûµì¬²ñ•í¼w¼*RY7UÙöÖãìWÜÎÓ;uý’'DÍ=³U£´Üž1\®`—Õ:ßñ°HÑÖù!›>9³PïϺozgVïq¦ê9íÚ{.ªa仪9:'j“Ó^ÏÿÞ»Š-©ÔdT-.P⮿ûúÃÓ7U`ácú´Ðá=Ô|)€áÿ:ûóä°JÇJñ'Ž7þ~·C‹eFðGCþ…Ow}¡«óâ¸v{ï´{&ÆõH ŠBㇱí¡ù½¿ŽNPDÿëœr­‹`ø '\#SŸ;ÏUßiÄÏí¯ûáÑY ”œXÌ`¥Tç}TΛß'Ñc:Þ¼ž¬˜ Y4B ›û‘z¤sænš—(©^ÄÄõéÕ>†Ž¯ÈØcÏÓRGêúÊxí™ÝBýZ BÍèY¸<ã}!Ê‚BÅ’”ǽ„·—$„â´ˆÁ»žïÝRÏ ÚÛÛ»#]¬WúqV x. &™KáSúdDWÃ1€ØõàãØ{v¯ž§”™ƒŸ~‹ß\–}ÃîÐ4«yßÓ})„ë¼z:£ëô¦5H~¸Ápá,Ë[Ïû°3 ¨¹8Øii’Ûl•Q¸â­¢tW“˜ßi ¯þÙ%“7ŒÅPäqÈ£¯~ÑÌŒá»_w— ñ@~’–»ô#"ð#ÈÖ¸ƒÎæ#bâØûî~æ»VÎ’Œýã¨blHÚÍšK¡`âÊB"ºfä% ö`GV^ÙÞŽ'[I8ùˆ7óH0ñH0W‰|c×}#?U‰|õ‰çÕ¼L%òݤßÍKT¢†Á“]%/O‰z÷±Úe¤)ñe)9÷¤)Y$K‰Í‡ÅÒ”H•ªµd¼&.1ÀÝu’×yciA1'Åÿâr0R^VÓ‡@¬#µ–F®¦+øjÞ*jq¢6£Å|@õÑ$»¹á÷Š6vgþÆÊÓ±FÙÍÍz3µÇÁ÷Ô3‹¡…-ˆÌVýd0¬¬tþª¾wš¬iµ®8_dÊTß`H—^ÅY±ÎÑÄÀK…èe¿‚¼—bùbŒ—-üË™¹3™-‘²ÊûÔð¬I›ªí`¥­ï geõg!eö³èQËŸ;IÞ®99’øKCÜæãv%be£øJˆ;6_*AF`þiŒÇ5 ž©ªfBÌŸÓ¹dèõµO4Z´ì2¤î²Rpññ¿Â¦w€•ËWÁ„+ÛUßTLõ™©Uóbgb*ýÁ¦_¶p%@ I±U›×=ï: €Ö0°Wg£æÃ“ú¤¨Âø_µ=´HW£Ê¯Q…íøïZô+üÖñ ƽ%•l!m[Õç=¹XЩÃË*FHjZ»å!ωP~š^  ]#;TaV ËZžÖÅ¿¡ò¡Eðì]Ö]”…w©2¦¦¼³ñ‡Jc}ßMÎD#}"ÊX9”&œ—U­®4ó†…µa ã1¶ªcÑ`wzˆå1u”[Yc»s4öživÔ€:rÛáÈŽˆ§˜§k ÷§(°¸¸û^Þ´etCyŒ V˜ÆÂ´Lz’<¹L‡P×r£S• :7þè¤ 0O©ñ!í¯«6½ÃÁ%ë$- {Ž<¬&Âe‰¼‘‘ãÅ™s7¾´Å>9aŠ;-×0Ï Q%€,vA*ÎCJŽx–”)ƒæâ_-ßáÐçš­[ßÕÎÞEНÿõÐúŸrôó®þäÛÿge¯úrãdDˆG6¾©DcT Ì\à#®ŠbgL`RyH;ô˜ÑÓ‘tg£ìK"lËrk# âÁh6ùjc†ŒgèÅçÙ!¼Âç]t ÃP™Ñˆ02o¸‰žy£¨ÿi”\Eð‹ÄC!ʪÑ#™ÚÉñ4a_TŸ– V•Ë8Û5LåO3ŒÃvŽOý;ƃ0áÌ?CÃDÌUà¸JkYµµxs 6·óÌÍͻʰTz^©gæìmQ 9‘ј€ògÕÛ^­‹l{yš…o¶íVyä¾WdÛË3Þ¨–âÁ Å1ô‘öÉBÛf~úë3÷Ò»0wã\HMûm6ÎlÕSæÆ™½sIt^f²óÿü«~/ @Šåÿyü¸¶³ ÷ŸbþÇOÊü+¹Êü??õeäÿ¹§ÙŸ;ÿŸÖvëîü¯í>-çÿ*.žíNþŸÓz%j[ÒùYã¸McFf²œ­ÚšHór×d1Q¤ ÊJS5qÿjÄx<³ÒÈl©Â·ãd€épjÑB—‘'3¿Lv椵ÇÅ2˜Ù%/m ŒVÅ;¢‹Ç?D&V¼¾ £S|÷Ô Å”¾"íKtƒC¦ðE„)‚(ß]¨ôTTf%§pDÚ¢ýþˆ|ºÎlw¼M·MöllyO¡ð=lÞw/„ñj`¼Óe£¼:ÔÛrŸ$D×äžûýY$bhg··~;Nú™-sMÌ.¨z³„F¥¶wSnÞlÔö†0 Õ|c†Qƒ²)ÝßÌ‚¨ÿ­Z P3'‘%ì_ŒÄ™¡r³9\Ã(Ihê’0׈Yh‚ÙwÙ‚þmüïQrÕè&»ñMŸBqÍrd ª7„ÑhÇ·>ä ÉÙ0þ«'aó)é©r1€Šrññq|=ˆÆšËG 6a¾À¸“&_qݼýmY>ôËÏç»›dXiç­¹•Ox…’Ý¢æ;u{¾øà¶Ø9rC|#å;±ƒ|Íû§›,¦‹Åˆ®ÉþX‹“¹DéáT|2{qèh>iG2hå‹J s:Ãg>·è/*ñ›„sùâÂì•d>Dì‹J²FÁŒí4¾QEÓgQ+ÚŒ¦ý,¾Ÿð?(’ŸàbñmÀrõfv`,ŠOö-«ûY@S}ª 7?n$¼’<ÑÍâGÒ*ü†“ûï÷•O°èЯ›µ5Šuž@1ëŽÅàb”{V x¦ªŸ8eØÂ!m`* ÂÝc „#z¶Ôœ@DŽ<¬ˆØÃªˆH$µkz+D@ùÄ‚jô*c›?>yÑð”?wÀ¦>þ–âJºGâãyUxJ.+T§Ýò‰5¹‘#äô«GúZ|PõYa#è#ÔöºÉ†ýޏaÇ]ǯ¶vRMûävRõx©žÖ=Nª§>þú } Z–ÜI@çß1»7'÷~E ÊFºðçñoü{¯*˜¯n8L> ¬‹:‘žÂ–B8©“±7_m_CßÚü×ÿÏÞ›6·‘$¡cG8ÞïvøcÅÆ‹HAJšÍj#@Òph’¡Ñ®ÃžÉ&…àâб/ž‡†âËÌ:ºªºª» JÝ»#’@u™YUygyS¼å´µiÃ,“VôšÞDv ¤štН¹úö…JsÌc)484î°Ò¼\/qN|Ur}[IM2„é‹MM–‘œÆÄ½|°K¯ìÔ«~ðx– Wˆg¶ Ä5!~td §âCQ}×®êîW¬ží•zÕGó˜úßëMÑÿ>¾Wêîå)õ¿ßô£ë׳ûóö?löÏíý¿·_êïåá»ÝÖÿ¾ÉÐÿ¶J5pêYX@vôÁo hƒÛfåÊR\HÜNÕý4[¢68¥–]µb˜&Ñ~HŰC†bXÓÐQ ë˜:b‡bX*ã41Yߣ5-5Ä qÀfAMK½JGâVjÏH»ˆT‰£ .¥ËI™<9n¨‰™’2ÐSG²þÉûXgƒ†žßÊ|¿}ÌåªÞjoGRÓ˜ù‰_ Ç—NÿÖr³Ós|-:CÍ–,`ÀtÙ¿æ1OëÜŸNᬽ–~7ëQŠC@8–®›Å&Ôp\¹zLàH@Øœ3Ö›£4Ð}=‘ÏíèCÏ}¬wt =2”•—ç ¥bqÓ9g ¸¢¬VÐkI(M ¥)¡¨)Á£×wef:ëuþ‘©÷?†Sá˜óƒÇ¿u«¨¯ýÍÈtJæûדӬt…mL‹v€ÿµ1šÿ|¿ƒiö„¥à@ü<¿/‹?£—;}ÕQôοñý=X&8ÒÉLÄ/!‘¡äQ.ôl2]8ZØf‡¤WxíW÷;"d-k s¸íÃåøZ`‹&Ï-#ožÀoìIUˆ¨;dÓ°"T÷x×j#X17\ ª“~œ¿b?J´YÔB †]©‘T¿÷ ïƒr¨èM¾HÑ€{’‹ä<1æëAo–•ŠÎ%-Qô^£8õeÚцB¨P'J2ó«ãĈãÕ_x”͘]N`ÆT›nˆ—â,Å|$ÿÀ´î†_;M‡P½[U”·ŸCy6ÕGï}Ó4f PMX6,Ž„qMÀ3ç7¨ª€w–Œ‰ Aƒ–Aþ¥AùÌ"gl蜣êÃrÉnÓ„;Œ^¡ØÌ ñ°I•Yõ$yHˆù bÎ%{ØKbbÃsŽï™XEº ' BÒ^‚¤=?’|·¥;æÊËÚ±HŸG5>'“FÅ_^RÀ’:‚eŠî‡_4a‚¤A ûóO®ê@mFà “ZqÔ pγã+¤¿ÓÅÛt'zOk}†Þ2èâWu~·ñèhÖcà¡õSì÷)ž„êÜ6­¨nwŽŸ¢óÀ´·23_ˆK­¤GÒ"·ÛÇÍ´O‰¥–þزˆKfï ßVd´ÈäùôøÀmõ¬&FV?¯%¡ö,Hƒzä§—o£½Á, <&RéY’rc rÿowð3IbÅŠÿÖz‹¸øôK ÑçpˆÚÚ¸c:ãO†øÄ„̱+ûƒ… ÈI…ñ¡0O§Ö/Œî‹»X•ßìn/é@3®?‰Æ¨;MQ±‰'kÍ\Ó>¿@t0(•zf/œ/9>x*:qÅ8ª“ ö'‚Á4Ï3pâ&…=Š{öàŽÎoE=Štó40¹1Þ™ý®›wÀ£Í¼cy¦)"ì™<ÒÈQý ¶¶Î÷pÛìÊ#Tü¥EÕ›™$žžÛU])t°rv.@ñi†'CrØ­ž ºýzùñ_õïë/¿ßÛjÆø¯½ziÿ»—§´ÿÓObÿ_×îÏÿÚßûÞÞÿðW¹ÿïãá»Ý´ÿw›p­êyð0SÏÀð ýÛ… ø(müïÏ?†RX§Ýö6Û YšñǘLÀ{@¯ Ûó b‘b-ÒyþvEÌû.'`A˜ô‘¿ŠÖy΀˂@ ˜bå#Uœ~™ÎbÊì8üPb8³I#ks÷ •)”xl›©´R¢HÕ ù·6lÞZR™VÏ ¥ý@Bcwƒã6—Ëd`ÆçÍ=ZVž·ÁÊ\þyŽ,ËןÌäHNÙx„ 3ª(*(¦òŠ;bœVZð_2Öj”f‘4ºêµòM¿fÕO0$&åݤiéÂ9gdMßK»!lDzØŠLó.ƒ(ë°.ãéO¤¬«£'Æ€ þU©vò@È UÓo0šÅ“KXÎ,ª‹oÒöV6«_Ö1Ñ?ÄD9Eß‹ÌU¼LGÐrºün`šAAãlPøám ÷:.½×DƒÖ1ƒÓɬº‹Kà þ†åë±€ê$þHÙT?Å“ë!âÀÌU+f­=èOÉÚH3œ .D éúq0f¿öo¦3TP Ež¢Æ“Žáï~¿ Ýãæé]¯…¶ wP÷r€6¥+Oï6îÓU…Wå 0ÚÝùq·Î~øž¾??ÅW±œúÊ ˜EK³|ý›LµR´>½‹ºY­-} Š“úÅ?߃ã·Q¯]eG§ÀºtÛ-øÃAžµOWb"m5º¿VY©²Š)¹®²GEÍ™ÍF»ñÞ¿VžúË?-þ~U¶Kϧ¨¥¶q@mßWõÍ]È’Šj`[W=¢i´ÅÆC2ØàÖM/§hÑPéÍN“¬¨­ú—Ý'¤ä†Wþ¢“Æ/LB@%ÇQE|S•/$ºJ®¢ÄÊ̪ð3Ý0eÎÒhqü“•XfºæIX—üs]뺋LÉ-ºìõˆ­=®s§r†ÎŽëã!ÿ Ò¼[iM‘½ã)ÙÕ¯;ÈþRE•ì6}x¬bz˜©7ÜÓ¢|ҳ왳äG/t2k>ac<Ç)h[’Θ‘D ‚i‡³a›£a¬ÂäTÙêÿ製+3æšFGÜĘgɲ"ð ]ò¬ÀDV¯É«y¸ê{Œ2©_ Û²\5ýÜæ)|ihÙÆ°¶žsLF2öÎ?a}ªò1,»râ¯Õ¯Ûtp餱ŸGf@’J¶+bÐ_D¿|ìýj¼:¿ÂI2ê§—ñˆàãÉU<3áa.jÕ‰}ûèQ÷ïÔ„$Â-lKT«ÂWÛä‰ïôgzàŽŠmz‡ŽÍï(Æc4ž±w2ú‹@ƒDB£H"éoÆ@nˆ>blÐí`xÅ£ƒîøáÓ¿€A°—ëá¸O4z7ŒÐÅ_)þñŒ} ‡äŠjÑÛþåRŠI›°o½«Á Íè_]=›Î/€Ð.gUîñ+£ëã`Äñªu3°ú˜ Š“}°áàOÌ&žMïwPR§_ÿ‘üÚÜùq£] ììÑÔ/Çó!Aå2|ì_À~ÄÚw8£ñç>ìmòk…9Ê_åܤÕJMOÌ ö&|ò)fŽÆŸ{@I2R+Ëì„'5nLe'’‡ùv]Wpwï`פ\#ÜhÉG ÎV7‰]Ú{e?=i<[Û·u§Oü8Rq´HUH°¶§>ú~P†Ÿ©$óóŸ¬A»8èÌØ$p˜žjãT½fÏÐ;W/îžà ¯y´pTÕ&Y³„áP1©×ôú$DÕ;„lÖ¬]Ý$}XÓ•Ï-è X¥þSÓ´ âõoÁ€šk¡%ÛÀ¸£±9C¼êìQ¤­²¶‚p–³®@ðTïNG Qv'4˜ê8LB¢-"w!WÑ¢­¢®/ûÒªŠ˜¼¬.ø(H³[8G¾ÛœÄ-Ÿ¼™sZÍ™6X%1/2õ wÞJ¶]Íñœûè¢pÂLr% "qàf“ñEãëŽïŠN l¡ pïðOЧ`:æ¬IãDað.9œ‹¡{öÐYôß«öš'-ctü€Ü–5jn<Áƒ#¡m:¹Úìo‰WÕ¡õÐ}bàí8¤oäX™ô~¬´=;7B2|ª³ŒKQï$çéÛË7¾Z¿ç´GOcŽŒä$¾öø£„N{+ Ó^÷ôw í\ë¯'ÂYebCtÑs&8œÐ@\4OÚ| à ‚Qt´é]8%:u²ÈÀêЦq™é„žcê°Ê¥‚¿9ˆæå§ëå¨àÝyMt•E™ÈoGY–$H¿Ò*™DÝy# ¬ªV{ÛOñ®€ñ‰ÁUðÇÑQÒcÎÕ>Ï£ø˜rãf<¾ÒómÈÕO?à'‡TçB-'ÙY5²jñ_ Wf\‹8—$åù0É<WDÕb×-èÆ‰ÈA|¸…¶Ee£¸D[;n8èZ,[mÙŽ¤0-'·‡4ÞIù±EK‰ŸÛÚæÒ6E"šè'ï%x&<ý¾º·-Ѫ£º.s…;Vã÷‚ûa[ckèõE3„«[]ØuhгÏ8pëŠÞUsÝ6Ív2ÑAU Ÿ^EQ/Nø¨ª’îðšôNج8%m0gξ¥Ð}-:¯ðvÛõïk»ìû1‰ÿ;Îlö‚Zík­è”Âd-iÍFñBoÐM5èš Ø‚wU;éÔŒS޾T'fQªA”4à‡Œ–ÿ„BôM‰f*©y$¿ž$¿Fù}R¹„rr¥r åäÚ·ÛÈ=ô"ýnß­ó¥U$:xL¸ø’rñÀ×ö™P‘P¡Æm^ß5õ¦o*?¤§Âkj.ªCþe”9—®Õšï‚°Ùc‚Ç`^,ËfW5é6-ÙÒ Z_á÷|s ½>Åí_Ä7ƒeÖüëoò½W%s(0–±¡¡/hT½ÏyÌC"@â}2È  ÿpÛ¢6P"ûô§ìS<ÊD‚w¤Ž@AIt{íõ»©fÉõSî[ÎóЩéðqß´ä6ª² «–˜ÏEë)•œÑ÷T€äÕNK42އÃñ'„àT]¬U\²Ô\|g{më/îœ[Š´¬")‚M´«‰bœIGÎÉÀOš,Ì@%(3{÷Ý¡ÝI¦¼7q0¸ˆOM£Ó–ië›y|—©çú‰wèóKÒ—˜ C6ÚÆ"ÏßoGé2¿|ùôy•íý§À uÿ¹]á?Ÿþ°e§WQ°™»ô1¶’µ;+ <§}*ë œ³Ûùå¡®À­3B=Þ$¯á"qäwaÚ%‚Ë‹¶­ôiÀ›çGÂ'•YÍ„ÎvÉ<ï! °YZóRÎ'ò&ÕJ†•7& ÄþZ×üỗî^6tO<Ð%ƾp}”éxã©Õ%q´I—p•ÀóÎ5Z¶–B–oÌð‰‘ÇÏZ‘s‘e.0äi§4d²¶9M࿺øg4–ô»'ŽŸ<:ö'ic‚Ž÷³é¸[Ò1+é¸Rpý6ré÷y6ý6†~Û‹Òo»¤ßÕ¹^úÝ£Û)¶Ò@2Ch–,Þž—¸‰²_ø(ÝQ½B} ?9Ëè uµ,>Sþ)pŽ6ÁkAè…²o#è“ )¾*)–°CHº>B{ÁËwcž©ó"tLüå)ÞüY”&~!Þ ì²ÿFë¾96íÅ‘uYxŽ ÏYóÏšþ 0г/9c´ó§<]–`îW1*¿=¿îfóü@§ÌÒY蜑)zÒØi°Ó'O©ITšÄöv›4‰í,Mb›kÛ¡šÄh•šÄ«DiV´¬JlÓd] ­©Öñ)¨JHm yûšj‡«ÓìAUbxót‰ÁÐ-"ö2lë,TÓ.,Üå¢k)lùÆ ѺšÚɰëR?†³†´t‰ü\ Ð%ò†y„ KÌ!ä@Ù%QB龈R–S™õ †¡¦¼ét~}=ÀøÃÙðKÒÍí3ÛàKÄŠˆ×ª"x^T!M*‡œi¡VÎ6 ™dÍ?½ÿ±?b”‹ÁÐxÒ÷5¤K¯µ ÄGˆI "˜-ϨH  ÙÒ á,ÀIÓÓ4ÑX„‘Ù‘qæ% íHع{Ê£R,ÓeUnY§a1ð»àå¦FŒy$ÐoïI•‡òGiâ©_W?3ACmŽé_чËV:Á«þ^ Y-Ø=ßB;OŽ82õlRp4\«#_fFóÔÅÍòîÜqööDäžÕ-踷…öë£}섉°d½¤jÒk© mÞ&-µ%ìÞTäŸ=…­š¥-çsêМڞ9Éiáœ"`Ö ¹×¶£>—gAŠQ¦î0X¸Xs'½æ•ßg?ÎÔñFp ¸×6ìJkŽï¾Àq+Fêà8˜­•R—ª»nQH¹yúqXD®¹wDIbÄsê| ¿0eoOîL1Vjµo)§ ù,ð+ʵø±Ká»>ÜTž«Ésýds øóž˜y~„m¬}kc­ƒwHSgê’ dÎL–ÃÁG¬b§f3 ¸[×™ÝÍøÚ@Ü2<÷¯ìÄ}£åôòî<±ÁŒIÓ@˜iÂD¥¾£ÇØÄéјð`ØÐÙÄÁ÷»ùùG'w¿FZcw‹ºKX¡ÌwsÙ$×1NŽq"­\'Á¯Ð,¾” †Ýˉàyâ„›Þ›Q¨ è uliq.u¦RÆÀ×uõØÑvy.²?幟H{^ávº¤ža-Ž£d££§^ï­à"'ؼywî§ fAþÌä,”ë¤_I¨=(KQäa-sOH…Ý\ ¶Oy=YMaõwD{>œ °´çoKþëÈ(-·=OI×A<…>õ\Üw_H{6ä¢t>Š|“£âæ¥ìD™»¶¾C¨ ¼QL¦ŒÙ9FùP–0ív…olúG$Ÿâ8oR¹5^ð,—ÿdg§okÁËæ¼Â73›ý~cL¹(2¦-.Q:ñŠb¸¤ˆ›þZ Ç`pè±ùZ¶Œ® ؽuè,½“/ wœú&ˆ«ÑW!®JaµV7GXJa•žÕ «Z‚3iÒCzµ{qq?™Ý–â¬ãÙ\q6UÁ%‘TzÙ,ðâ|Íb+¯š÷0⨬ط¦Û{•"èJÅÏ5£¶?ÅÏŽSüLmr'B—ÁÛ? ¼™» „/´ȶ%<¦Í,˜Ë[^0”ê@Ⱦüá.Á‰s,|>¬ôµ󨾲 ¤¥¯ªR‡r…õëêØõûÅœËmÓJùÄiôš)Ö„lë§m N핈5m×_•X“Þ~“1yœq·™¢ëCúÝ£ÐUº™Pv‹È+–JÁÚ„ nß–dUÌPøå¬{1ŠceÍc3 .%Ù§û†ËaŰzϲWŽÞ£ é/àj^BöÊ‘›,&-o«š–6%/ñ{AÔ`דñ-üà¼|¾Ôèeõ׬PV$K¤øîo¯© 0°š,žERë¤Ã£#PFK®Zâ dM볎%Qeó©Y8˜Ñ/ÎŽ[NžƒË>ÅUˆÃÅtp–¬„2jûTÍNðÙ,k¿j2«æfpŠušÀ‚UÚO£­ÔaÀ¥,j{%,êjøSsšÕÒ,äÑþÉ<:¬¯;Ÿ\ Û&z´ëo¹ýÙmØ’Úûp3ÿ| µ0ÿt$Ò‘‡wÔÔO··ÎDP¸:ãSe\ÚH›e¿UW¶º¨í[Wÿª‡5Ù*4Ãn(Àæ.Üz+RN@—yH@AÏPàUàúAñz~÷2ü `èº: ub)US›oGªVÌ·O˜ÄS”«ºS¥l%ÇM•–Ãräš·]ZKŸÄ!÷åþ6çØ}'p§Ù®äJNAÂáÿf6O¯œˆo®Î´Û ÄåÖzTuèÛ½ä #L.Òý[C1céAÚN\wºýåá ÛK9K¦t¹,ÃYÒ¡îÐÔIMïÁ"û”1~s‰…¹è%å¬Dan'Ƚ•9A–ü•z–PXq™\ƒßÙC/Ãä• :ƒ?K VÅŸ• ÈþX«­¬&%ãàoÌØiwffÇmˆ>w)Æ„v€Ù=Ø s'aãS6š5¡"àðv‹˜å-®žoý÷¹‘”·xy‹—·8=å-þP·ø2pþ.o§­Õ6ª2LÃ'l«.kj`,}5…í§Æë½i,\J#ii$-¤m$µ»Ø4C—ê»4u= õ±3‘÷è3è0¯,+ædýÜ­f…γqNX^»#·ÎÆv»H¢¾RavhFÂ:“„XÀB n«òeÎíÑlû•ä cò[‹Øã‚ô$Y03—•QyˆZ}x¯Ý'¶à9Å Óߪ\~BáìÆjì쬸©-bmwÂ8ÜàÎrcFf÷ý ³;+lyg¡Æ÷ ,Ñ^§Ý²s[Éj©‹ÅG–Ž °Ú¾Úgï‰Ì’a-éËÐÚæ“±Ú•w¦½ZàÝ[Iþõ––®Qu™æg`o)ùÄš{KYZyØ3nä[¢õT£ ¸|L›_š! ½lÞÂÖ™Dub›Ž}E¬‰$µ0Ðï[ _§’&Õ2ûãWM ¦.õ¦šl§/_[5éhâQM:ø°pÕd;¥\hoˆÝJÚïÃü~2«‹µòñ¾î"R|Ûê¸ö2ê8÷ññ(UsŠÍCµ.É®¶yÈVûJ|@çøÄíÒí­€,´kƒORLdAhI‘“ú­ˆO1Æ<”ÅWd¬µX‘±¶ÍtmG[Å©âð„=W<‘pUqH!-å»qß.—„WƒÙB'ÜLC© æœáL蜎UÊ Óë°•ïõåc²™Í«¿Ñ&[”HSåã=_UR ^X,G]®,–£-0sÓ;tË© ZY™í[™ê¿dìi3ðRžÍ–gKi¶”fKi¶”fKiÖ|¾-iva'’qÆ·ÁWåJRʮ˸•<"̪-³˜wɪ$Ðuæ·'ô Ví6@uˆž†hê•E]¹,x^ÿ0ЙJÁÀ<º“çÛe(B¦(id¶ÐÛ);öcŽlæ¨;V¨pØÚ ¹‹™k5{¯Ý¯Ï2M¹4W鱺}\b›s`=ÿ•9zVBSþ ÚâO5}ã²)ºQð‰äu¥ÜZSâ(Q€¬å(@–/â>¤ûÓ= fÂð}Hdè UJanŒ–R¯f»5n²ôõ˜ù‹Z —²>”v?–¢6Ò:È1m÷!X³+‘-!’… S¹¸ÐÕø»°bdq,Z52W©ä¼y~AÎ_, /He$ó €§"YÁt{æm–nÏ|'…-šnO—bð¯€t{)^uÓ3í ÊÙ„\{ú¿©¹ö8³ê Üíe²©'ëáu¹º…çò[eªèÇ"©¢Û9iG™&í?`ªè·zZrÏ͹>˜éÆ3켫Ê/n½•¡‚Kg;Ë’à7~NúFu^ëÚ=gõbaÖ$ü‘vp„70Â7i§¿“/ »TÉöØztRz`þj ³jšAó¼<Ö‹$ 'À¬s\ä«nûòU—ߪhÖN¤zÓêû0áIØÞ(TÈÌÆ@˜\U°’™é‘P'$¥é=.^×Ìë2Ä匄Rhk²%ªš-c¹gnãýËBE͌ʒf%'ûs²Ë‡qåèj¿bFv9ÞtíYV‹Èl]GžÙl­Y7ÂùN‹é, ›}ÅWÄWçE\^_Á%õéúÃ!š§áY &]dÀT™•¬c³î¥´(?ȂԳäÍmàÍ’[-ÌÔ´÷FWc6½ìñ"\.ãé´?ù¢^@Ñæ¸ÛlÕŽÎjõ”õ¿mD*jxpü6êµå„þ ~] Îf à÷ ¶Kÿç«ôreØvDv¤®üÃ{Ù4C8kÑQm—ÕÑamesÂ,YV-ãV«pÍæÓ:¯uÛ­ðùðÆë…Ñ æ´4Œ,šìijùdÄÆw³Á-œIIé8©Ù©'{wtùšµïë$V«ÎÑy¯“HâGÀóÀÔ|{Ô=<Ô·Ã_¾ÛÄg؇%ÿù¬öûåM<ýX»^Ç»»»/Ÿ?gøóû—/èçîÿ›ž½—»¬^¯_ùýÞ^}—íÖŸï½ÜûŽí®c2ö3ŸÎú˜ÊŸÃþ|šÑš]gA‡/…©ŸåùOÿí?÷¿û®Ý¿d']ö^n&üì»ÿÿíÁÿþÿÿoX—óóŽøßø?ðß·šü‡äóÿ ×~­7í_óþ¤LÈ(þî_ÏŠõŸ^ìÖØûáÇ?uû×ýÉà§,¸|ôGìÿ5îþÜýÿòE}ÏÞÿ»/öËýßíÝÞAç¤w~ÑÅõŽgµëüÜM¬4ǧÇï€uÁ¿LÑpg‡µ JÿÊ®&àÐÙdŒÌ*ðÇ“qì×ö¶ ™Ùx0e}6_Ï>õ'1C*ìßÀÏÉø#H"WÈÞ÷Fƒ5¼LÏãÑØÅ8®âdUGêû&ð•×ãÉhÐgñäÏx©jߎ‡ãIøÏÃx„ÓC­DÔxËZ³«Zwư4ëÇøö% Hu›×j¬ \+ÉÍü$¤)|&YÖèüèíQÇà‡.`'FÕ[Òmc2é í`_aÛŠ‘iž´O[Gïõ& u™Ÿƒ ßHFÆ_Oç“»1Ï¥òš?üsºtø›’»çt<œËT*}%›M¿Lgñ-‚Xùàáͤ~¨£¾.é€ìÔŸ>Ä€Ü!{Ä¢‹/;‘”ïïé߆$À¿hñ ˆIŸcàžUýj&³ðnwƒcÒ1ao“ñ'`áfñäòCç Ž½Ì§@U°–ë>J‰X12™òkv ÓnÁ=mÚ§œFïâÉí|ÆÓÊð©W1éÑ”ÍGƒŽ?¡ƒædÐçRh•æÐ“ƒÞÝßÖøjø`>¤ˆ£Œ@‚úHMÀÿ1–Èê Ü  ”)iÈ•è•T#@ð–¤1]ÖÅiæ´È­²A-®U‰0Æ“+ÞÈ2 ´6j8Þß_³]11Bi‘Á¹Xÿá8…³À;H:!Q' ®ùû%a³Ku*‹Þ+¬Á5Þ“Á8‚õ`º¯°û%êv®çCZÞàoÔ YÝ΀/o°Èé‹ó  t…—Å`8Œo€ºÉYïåïV/ÐI¯2¨È­4þ [hø…R⇭cSñ‹Ô_Äpòò+n_q?ûd?Òi.{Nw õU@Žys^ŽçÃ+ÚŒZšjÐ׫xt>åè3;sæ‚ӏУ÷çG¨ÑÒæ wþyçM•ÿNïýQç ÕP&=m€Z.Ù›ùè’ß>:»Ò9ŽºÇͤãvã½£—£Ïñ%ìã‹a̺°cÅöÈ5œÇSu"a¼Ûû·€Ž ±r0¾+4a„ª¥Ý´ÂPP˜Œ2HòàÁ.Ê~eÏ~Ž<|–EèDï{÷yú݃Ðw¿7ÕTÉ…šý*iÏ8Þ*ì gâžTÙŽíÞ.tTFÿìÒóƹ,c·k’€_†<Ùȼצx`Œ«¦~t–L]3 t%‡#Ù›Æ6gUqo<©øÑý¾¦+›“‰t1Á#l»I4EÎöI5Gtñè™ðë÷Þm¾z/÷1õWkQ, ÿ{¾÷²”ÿïå)õßô£ëÿÖ³ûsöÿó½ý/_¦ôÿû¥þï^q[ú¿Ã VséQM´§Â¥_‚2/ûÍrÜ—¤ÅtÒž%߬ú°ùs£Óhžëª> è:Æž4ï #¦Šh;G†L@qc'i»EÔŽ½ ŸÐ6w<¨ˆ™mļÔTZªJ#hÕRV ù"R)1±›¶¡Š„ µ) ;&.kªš9 ý‚¦Ã ö#|Nj$iâÄ€.‘uÅ#×EõMÙ=~ÛF½ÝåxôÇü„ ŸVÞ‰ýÀu¼%W›šsýôapù¿A¤ÒËøn†zD6િÛÁ¨r[m¥õCU.ÈÊÛ¤FêO¾(­¦(½ôÎTך­„PíT>Ѥ±Ü’iÄpÏÒ`}¡&ä „ûi4íŒ@ÚŸÁ ¦Á[ ž×vºŠ§—ñˆÔ¤‚”âý`r£ZµP ÂPØGº§&$‘™å:$Õ–cŠú\&•‡ŸÐ”½ÛÞþ¹J¢ý»ý+îk¤©Q[»®ëºwñåàz€€ºãb6â5!GòךÖÛÒwõ^™Š˜''¯µokApX@åzŸÔë]|}–]è«¢ ªïû ÝJ ¨z?Y߬ix)XÂîdc} {Î`4¶F„œîŠÔ»ktKéC'ûé@ï)ÔKêBiUØ,5ïÎmÈøHÃèp“>- ô|ıôŠS‡9$~àœL𘢃ã²?"âxö‰Ñ¾-Ú‡[VÄ|-›f´iF›¢]kÅÙ{´V3Œu;ÕêúgƒkZ"§*ãö7ÿ¤tJ™ ‰ 23'I ©ø]ýáFÑÕ§Á4Þú)=mrO§y¯bÚyۦȼ¡/ߤ{¬6Šk8mIذ ùG"pE3ÉJ¸¢(Õƒ›¸ÙdüeÝ®¶4€tE'ÊBœsšRäm Õ”•ËÅ ¡É`‚¥+Ér¬F·2ØÂÁáçÓººgµOzÕ^óÄ,GNŸ¶·t¢o<Á „¾PÖ¿ï>1¶Ð±þ&²‘ˆªþ`4M6ŸÍMZ—ºÑwª‡ŒkÞXˆS…íœ?¼qíDuÄãÙJNàñèR#§Þ È©Wã=Fë?Á¬C^€ƒ¦ƒpMÛbÄ*„â$-ó€<ÖÎ ì~3`îäîmÂ{út=ºïc»ËÌ3&à áãkH„üXä0\‹ïÎk¢+ ËVÑO)hɯä~S$|œ¢ò?¸ÑœT¯’È¿•ºÓ&dáͬ„òânÏ<ã…—˜L¸<`%myw°dÆç»·1ä¸ö§ø:Æ o¥7ãñÚüÑ3¦¨š 6ý@ÆTž©¥tà„x4‹yºo‰,ô'§š¾æÝý¯y äŽît ÛÕOº|gx“ŒPÐ^…JMƒ„ÚóŒ‰ÕÓ`GÂz7³0WLôõ}BÜ‹«.³x2<ë-FLÜ ŸŒó!'!¾Ðº8Mç\ëÅ­&‰Pµ|ï½õbÛys¥êïHP\ET%ñ¹Sß2޽‡ù¾½0¦sÀ¬SuÐ _©$øÏá[tÀ>}O5í.}ws·¿ *Þø½j’×›ögƒ) VR#sÿQmº1ÌÈ€ôýÛØ)7ˆ»š58¢R‰T@råÃù².Æ"÷¡0ºQN̓Ã.Ö[pG‰+¡£*IôÃø`aäòБ*‘IÎ7°»˜ÄÎExîÄ©›ûptc®ºAõÏdp'ÍÒ<:3Õ/ŒâòU ä8”>„+w·8Uî šF7­ Õ‚ãD£SùÛG†Ú·Â›Qº³ÝÚî†ÀàLÅ)vIoÔ7”¶Ö¡ÙåsÉ™Š˜‰˜¤Îûv(–[ãKt9!%·‰ÖÉÛã¦9~ë¬wÔùGóWôâG—ÿŒøþ£›¥-ŽÎßñ—߉—ßñ—ßñ—ßuýzsÊåA™K€¸14ˆ‡Á¿ôŸ°Lt›­¬x§óF¯Ê£ëø3øÑS³­Ãß:¿vÄÏ^F?<†H…)Áþ'æ­²¨ÙÃð\Š:YÝDŠìëüzÐòc‡PÉ ³£Ó®Œ®ò¢“¬ÙF‚Ã^›â¡2(_5ISÜW‰N©ªÈ·Yu꫼Æ'ý8#W&Jß’µi(Ò¬*ÂX«"3QUsç?ÏøßmøÜßQWtäušRKtøL¹vGv¢Ÿv[£è°žè-4L«ÝüÙG¦*º«Ú¯¥W±€ëQ3tyÖ9w‚¥˜X?Ѫ«Q 0ÚA2=Q›<¬Ä7tÂÀ7´fiÐDÉWoÐM5èš Ø‚wU;éÔøKÚ÷'©NÌ¢TƒÈhðΜ#nhk’ïºé]«1ËwÉ,ßi³|w’îÁœæ»(ÝB›'?¼“|œèÓµSײ衳W-:9¯URÀJ~=I~Ír„Kùì%ëK~M:~‡ãö֭Ȇ“ÊgãŸBʰí3¸o·ÏqKtø >†íŒ¹½L¿ÛÃwëI¶|¥âˬLwL«Õ#B^tÈ¿Ìt×jÍ·iÎÒÝÞ‰J€‘,_ís¯ð{~„£Áåø øÍøf0¡Dÿ×$xÿ¯‚ƒ¼ˆ ¤’èú·ãùˆÌ)‰¨ˆy€•' üs7®V(Q‰‚@ð)¥„Ç“  "Ct{íl~<ÉMÀUS=‚š8’tÐHõ@–TղƢ­']p½Ž/ÿäâ+ÎI‡ÄàVðë >]‡Ãñ'„àTÝÐU\2Ò€|Ão‘šy¤<>ª9“cfþæ|ùßno€Â8 í`”½Ë‹”¡¹LC®JÈ4 ò$/Ðÿ‹m;ƒ2ñZ˜¨…VQa/«ÂƒöðI•+çž=3ý_Év$Ön«ÊÚ¾Š»¯á@v§úSPŒØSmËÕùŠ€3ÂLLå(ÚÉΟ½Sg©ôú tFIvÒ‰FÛYZóNÎ'’ó¡Aà àéG<œm[îñüsÄÔ…0Dæ<í©oˆSMj¬D3Uô½ïΊ­è@»„ÞåÓÄ^6Mœ<C~ò ù uøH@vDÐ¥?à§V—ÄA']f<ž®ÑÈm)jó>¢"š³0¢1(6‚¡$\1/ïv”Mi0µT­–Am âH&Èm?˜ÜÈpáè¸×’ú 87—:3×NþÝB‡íólêï–‡­ù<."Oø$"]of4[”¾NréëE0}”ôÅ}=ô!ŠÀ\ að /ƒ)»äJ’÷[äWHðBœÂ÷ÙôÞxpN¡½(Y·K²^;}ås ?Ó×q %}=âcs¥œB£§ðc0eo§P’ü#&ù% Þ]‘Å‘]Ÿôø»Hãýz–Ng8?wåV{}Â,*¬ý8›5Day!ç#pÅOL³.•º_Ÿ^@ãoÐI;aÉ‘Rl:íŧ“µ7•ñYð„…æbrX˜²3éÕ&ÖÄŠ½Kš]Ò`e–´(Ð’Àž×g•(}É´s™òT½ÁÚy­³µšÒx=¯`z±O‚v˜)MwÃ(nJkçì5{’ŽíÖ3¢e2†'G€-ƒȰÌMÓEÖ¢í`-Zg¡Jˆ,xºoÝ\B[ŠÎ|c-~ÓŽI±0 „.¯ ’gK@Ìfn š 1¥e]øãè ¤FíyŒÔè6|¡EOε“·Ð‘û<øÈí–DÎ'‘'4Gä \£²ƒZ6•”Tf>‘Êî(E`®…°C jËs%ÉãS’üäBüÂ÷ÁüBžöwMd¶'dU#«$kõ¬›ÊÌjÁüBIeøÓ2Y©¬d’!´@åþÇþ`ˆI¶ìS$œjÞŒù±©Á©æk‘'U.$kÕÒ5fU1q.>I½è{<–õåy¬xãõÙvÇþÒU>Råߣ€âïôÒ®·þ;9˜U,ÒKª±cNtñWx öc«{jÉÿÄàprH‡ãO¬ã/Nß=‚CëI /fä]虜ˆÿ€3~¯ŠWRÎÌŽÛüȉ2LãûâTàòÌÅêÈ>ucû@%•Â`öÆå§’†¦‘¾¯!]ºØ!>Ê@ d äÎà$ØßÎ4"t]Œú0öÙ5qoÛ1Löíó˜8î¸î){ºzÐ…z*~ú'ÆÄ™qÜ£ •x^|A ðO;ƧÎÉ1&2ÊÁ¡aF‹Ž·E"–e-&ZÁR¢U-$uV2ŸvÈ55fáÙ 8íp€x="ã)t›àªÇoX‡Ho9.pû˜[®€NÏF;<ÁH»c<ûIç˹77§F‰Ÿ™Ì»sŒÛAp{.³äÜl·±Æ4ð‘@šogÌÁMгãÅ=Ž"”7P$ÖSïæÌ_5“¹§{ Z[h¢ƒžDçÇQï(//ç~îI¥jϧTe¡ºb×Ò+ø ¥T]ÕòÃTÍëX¼Ou¢&ïis_bIþY®rA›¯‹ç;}Ïd¢¾n}|o=úøÀ•„9²­PßÓôñÁ\0û½~ú)uòæãÕÉ#]§ôÙê«P,3¦8Wz{û1(a¡Œ-¤î×=<¯º?cÑé#ȱòð‰çG0ÛÌ`‹Š’ÏÔh°ØÁ±Ÿ:8îËаÌVlhÈ:gës¡¾ÐFÆÒº lå,W-¶ ~NWiZûf|h¿ãM=¹;ñ‡‹Ú”ˆÖª;ðE§,t¶-Æ ­Hé°vTïk4A7yÚåçò³(Ý·³N°¤ÓкÈ3H‘)õçéoJóÛ£R3&QšßVÎÍØJó›z½4¿•æ·Õ™ß¤§L׸"t^ f…­BZ¬|[êàÜÛe` KV!x]¯ýÓÎÊîm†ù3¤v°ý³û$CãàIÇÆîÁ@š—‘=PtK1ãè¦Ñ¥Œ€…ÍvKØçB,jù¦»2º¥´¦m¤5­ŒnÙ\Kš;4–mXÌKi£•Ä 3–•#ƒ­Ñôõñ5_‡Ù+|+2¶ˆ¹ëÞŒ]‹f'`YÊ[µ«ÐÁü †«ç‘û<{ñPߢ1*ý^iyTrNÆ$JƒLqp抅’¯±|13ÿ IÁÆV+)2g"6÷Ü6] ¿ZïÓ´pŽ2¶™¦ §ëî¤VÌFœÎŒm†•h%ÂÆ‰¾Ibef¢ Ô>¨ˆÈ`[Š–Òm½–¢Ü¼häEû>Û¾ÔÈË‹ÖÞ°¼hT{†ŽenC*s¤áóäH[JÔúZLK“X\ä*Ó®O»VˆòtNRü½rµ]z ²2íÚ&˜ Vc*“®9žG$i”I×ÜÏRF†Þ’®ÝwhGŽ‘AÜ`ÁFWÒµFŽÛ61<^06Øõd| ?8ƒÂó¼Éâ¹Ò/—vŽ’é^”ÔYÉ’ÔZ”'hoøºOŠZŠäù¶RœMš…-óÁÏúóÁý¬¯vçƒ[^_½¦|p÷­¸.sÃYO™.dQen¸ô³R1è«I—1‰‡pý²tìê“Ç(•ÑC.˜ÙÑCζ›%D–éæÊH›2Ý\wS¦›ÓŸ{ÜŒ­?(ÓÍe<.óÍ"<Èý¥›[ÎøæŽðyäÆ7W„ÏfßüSÈÚl4%óüw¡S)ÓÕ•VÃM‘K«¡¯Ei5 $¡ÒjXZ 7Íj¸´TV&±3ž‡˜Ê$vâyLIì~ 6Ú.˜ÄníVÝE’Øm¶E·Lh·Ö„ve(Ò¦É7_OMiþsÁì«7ÿ•9ò\ÏfZîÊy_·­nsä‰áÊL®NÊTy*U^iH³Öô ié—K{T)¯}»ö¨l9-Ù{eÒ>mn›. •Iû<ï?¨A¬LÚç|\ú)“öÏæ›Åʤ}kHÚ—úÐÁ·Y­u^cíèüçŽõÙÐê»hDëÏ€07 ]«0ÏtÚ‰—N|5Ž-X ½ý}®9 ¾« f< Zw\ÆòNê¿wó®[ó–5Å´¼Ò~¥”€Õ¸HM®Ö¦½P½d¦:Ò:Qü½8Ž•ôÑon=¾öÈzWñt0öO.àdI7xˆÜ„ªSo»5{Êào×{ú #6@ôºNŽfã2"jy6½/µÝ3Ô5 8C\¾SÜÈÕr¾“FÏS=ÐŽG»¥¬&õØÝcoϬÄRLDA*";­šåX!b{þ¸ù3–mìw»"ÞQùbS Ä›½­<*‘{ÝT™°ÏßS:ð ÛÒÐ_ñÞY•'ÚJp`±Ýüà…Y;éÔä>±çuÒǸ|5ò5ßõ¯r¤w®‘šp¬Ø×Œ–©ÙÓ>=V…Õ¢“óšÜøµFtXÓ>$ŠôÑd®2¸–ÔYõ›CÜGŠOQ-ínÂï´ÄQ@ÖpKM<¯ ‰n!£˜û/ô”cÅ٧ͦb6ûºoÄæøV®À«ÒƒÖ{GXã›ÚŠòZÎÒB»ù‰ÔûП²Ûñ½E‡óÛÑ”»¹NÆŸ¦5äxƒÄè5üB­“R¯UÙõ`Âþ„ òsD|³Ö™)·³Êà:éÇiWëì†ý‹al`E˜Žj¤wp×È/&À³J”vòmgÕˆNýï³üY6¿vz®‰µ¯µ}"¼&º†¶[UÈ7½=je›ñŠèw5»*Þ¨1þt㈸wdÆvÊ΃!DðÙ^îÌùÛiÖq+“XZŸ”’²m•’ѦV©Ì/뺥öSø/çôb;ñR¿Ô^^¿ÄV¥bbN-ÓeJÅ6g»øç‰˜š€“ÚpA8ðhBlN¹ÑDE1—ÃEln?tSxI‘¸KÒ`^ô¸TB²)Îx˜Vˆ\žA…ÔhË}²ÜZàã‚,¹ìƒ×{©ˆÒ®î[ü/}¯²ÑL§N;× ÇÊ®¨äˆ^Îe¾—q™÷^“aÓŸf±],C¢+"g4ŠèqƒQEº´áð€Ã$ëðZ.ìÆ[þÇœQÔ ! Ãn(ü&sb¬X.ŶÏÄ–‘Óü¹ýê¢ÉÉœ˜N›èZn{5‹mßÓRS‡1ËöeÓ'Osä-8}×èÚä¨w8LŸùšg/ÆåÈŽèz?ŸÏf9¬6sÝümÎq%7Þþ+¸ÿóyï•\ûn ÀÁßÒ+'YüÛdÌ=Î^NsWšu1³ù»Éåñ¡Ðy*ËI:fúþ¹pï€lIp²kâþX†W[ŽK[®Ä‚D!攆$=ceßÂJ†|ÄBE$æ”’Òt]رm)¯¶…w»åC%¹Û†Ó*sÍ~#¡^iû¨ŠKE§ºTä}8¨Á ÞB–´ä 6l|¾Q.Ǩ…vKØ–Èòr :\Ö)žN͵£”°ê$åŠÒ-)6ŸQÊíÓQcù&Áí§éPÅq8wèç9ºR}¸÷uÿ¸#BB¶Úá ÛßeÇxþóàäâÜÛA é»}UX´sŒ»³|™ŽùŽ(è‡~ò8 óyøeŠ4¸®ïX¤ wõƒi±*aao´™§ûLp¤Í˜ €7†<‰Î£Þ‘;¡…[·µdJîÅïûn·~õãýú7·xÑ[~ñN}³‡Áx}ÎSåãdqW¢ôkxA{úä{-/s%'î‡Î+94Vê÷Dέnèü2Ôø¤ôÛÏVúuŸˆ 謸Š­¢„ÏeÏ')‘7'–”±5±\k ,b/a96V¸¼§— Οå3ÿlyU8+œ;tYi€­ Ù¥áþ\@4`ùÒA!i9ËGš'Âaì)ÍBä vÿ´ƒ-Ì °Ug Øâ~ùƒõ£f«±¨°r +àP€·M,Ζ¿2‹åβâ/È,ë ["Åå26¶.d8›†ðõl%î`l1+``+Il¹„ï6[‘û6[<)¸âßÝÑ™W÷žK6=‹¥å_Rýn¨Ýõ$r›žµÌl˜º“=J&֬í&²º#»`X$­õ: os®D‡ßÿg'T)PÀy9"ɾ pv§=áÏ2jr¶4GúÈ 8‡jÍ íà@Í9[01½G¾H©æS‘™«hFûEöÿCó’‘=+ΠH^ôÕ2é¶!%ƒ3ÒÕ2¡ÿ}‘­ÿ=¹ýov‚ɯÆÓô~ÁÅ*ïmR.úíÂñ,ÄOŸ m¶^×ss³P³ké|å),}eËSY¯cñ>xx½åö²KòÏr• Ú|>ßé{&7õuëõ—+6ìÕ믡ØðJôú½§rHÍonµzýõQ©Û7¯nßYŽy5:dÆ[P <¬¢¢"[ÈlðÍÔtNÎ!ÇÊRÓ®¢Ü–$ÂhªPÑᄪîË‚±p1èû4'…UßßòɆO~…G{ÚµkY³Ñ*+p;›®^Ô/VEÍ´e,UºµÈÆ%:X· j¡pæ.C¼ˆ÷Å¢9Úù³J{Uï+²W…±joYö*?»ï-$Ýòë¬.é\¸.#i^S*ÔÓß<>S+à÷¡ÍH÷'­fL¢´Ê­¦›%¹•V9õzi•+­r«µÊ-%IŽkaj_«D´X ˆPÀ9ß|h§á­ õ(-¢î(˜"Q»ôCíÖÊ ¢ÙVÈ"ú249[†¾çM¦9©Û؅ͳ–.n+uD©'ß*XÀŽWÄ»„‘-ßšWάÏÀ¶¢À™oØÀVÎl®qÍÍ6,š¦4‹ÑʃL7þ´l½¦°E a¥,y‚Í`KïØµJz‹¥5`YÒkIqÕGÑM÷ÈŒXEÓª±5‡Q•f©¯5Œª´Íx&QÚf„i®ðX$Ë—3’±±ÕÊ=ݲâqãeœ`®è>­< &*ceåÉbE} H{$ÖŸÀœflí?Ël€RXƒágIqà«2ü¬”ïO·õ~r¨5V@íûàj §5(Ú´jTU&ÂDÏÜ&T&SÃçI¦¶œàôµXŠ2&±ŒU¦h[0E[1 Ô9Iñ÷jeΨô”O™¥íáíJ+²õ ¥{ ¶ž2i=eÒ¶ ±6ä%mÃk$mn¸ï`u$mK®IÁ94rœ¸y0/Pìz2¾…R„½Éæ×Ò¯—F’ggK0¢:Z2 F‹2 eM_E@J“Ûxô¦ŠÍ Tq¾ùà\íéÌ¿™ôq?§[Ÿö{=éãî[ ^¦’³ž2•\È¢ÊTrégµRÑW“`.cäf)ëÕ'SZ*ã‹\0sÆ9_Ø,Á²ÌQWã”9êÊàþ”9êøãÖõ<+Y™£®ÌQ·p0Ðc2Ï zæ9ÿ4¼©òÄ,Ôæ‰ó Ì¥ÌsWš7Nh.ÍŠ÷#ý•fEõziV,ÍŠD76ªL}'ž‡ÊÔwêyT©ï~\]껇2÷.ún³-½KØy—²h¶A.al|À$xeÀÓ&J9_SOitÁìÛ0 –ÙõÏfô6:»ž:JÓ\™7ïñЉeÞ¼ôã>™WÞ¼ÒT–L¥Œd+MNÉó(…±¯ÁäT¦ïÛp!ªLßçzÍÆ«2}ßæ¯Êô}âyh©¤Lß§ž Lß—úÐÁÝF¬Ö:¯±vtþsÇúŠÌ\õ]´sÝLbØ—‰ë®ýÑx¦Û¿LÜtâ«9ðÆhgJhŽhððÇÈ5´ÎØUŒD3ž­É;.ay÷¦?õß·y׬y»šbWÈÑ]ÒJ%ƒ S·¨}yF^Ïà£$S‰d(þ^'M€AôøÚcd¼Š§ƒ‰°.r)%KÙ‹gÈÍ€óèGÑÀ•G˜{ô/ÊÁú.‹h¡Ë¢ð5á0ªlž™øôáBñ¬31jwÃmÒ Js¬ôàÙ€\gŸàƒ 5SN´ÞÔ’¢:P†‚3'ò½ÕÍz+%/¤5Î~Y0—o^!%eĽ‡ ecÓÛ}ñ`º3À¹—ðZZå^ÎÄ@þVÖQàdÝ–ÆA> ^ú§Ÿ¼{§‹õv`oÍÚI§&÷‰=§¨“öóÐ’)»›ïúÎs9Ò;×HMlj$ßu ÅۧǪ°Ztr^“¿ÖˆkÚ‡D‹>jÌ•B×’.«þø!÷‘âCTK»›ð‹'-u7LICp]<Å{ ‰nA£XH1ô”ÿ›ÅÙç̦b6ûxºoÄæø kœäŠÑzïsº³~µ[ÑvX]giÁÝüDýÉ¡Ñ]Ùôîg€5`n_ÆÓiòE½€ûú¸ÛlÕŽÎju¹“)À·¨Ó®½=¯¿zmëF Ðu[ è@÷ö‰LÚÄWéeçqÔŽ]ùG¸¬I3PÔ¢£Ú®8tV5'ä³ä^çb®ùÑ|Zçµn»>Þx½0ZÁœ–†‘E“x6ŸŒØøn6¸…Ó%1—JËx=Ù¢¼k¤Kà†ïëüª¾ê÷:ÉsÇÊø•'Ýw‡úvøËwó û°Î?ŸÕ~¿¼‰§?×®×0ÆîîîËçÏþüþå ú¹»Çÿ¦gïå.«×ëß×_~¿·Wße»õçÏ_ì}Çv×0—Ô3ŸÎú˜ÊŸÃþ|šÑš]g‡/…©ŸåùOÿí?÷¿û®Ý¿d']ö^î üì»ÿÿíÁÿþÿÿoX—óóŽøßø?ðß·šü‡äóÿ 7o­w7Œkÿš÷'ý\ÂñwÿzP¬ÿôb·þÃÞ?¾ø©Û¿îO?­`Áå£?bÿ¯q÷çíÿçû/¿aïÿ½/ËýßíÝÞAç¤w~ñÛê}…½i4[<ï4¢.é.¢ÎÏÝ„{l¼¡_àßãÓãw7ñÑYïè˜L`8ÛÁ—àŸ÷øþé4O"øò ÜÌð%þ›m4̪éó¶³ÃZ `¢eW“ÁÇxÂ&cäãcV?¦ °ýÚÞ43¦¬Ï¦ãëÙ§þ$f¸ ú7ðs2þ8¸Æüâ 0ªƒ5¼ÀÏãÑXÔ8®âDTGêû&ð²  Œ}vOþŒ‡ñ—ªöíx8žôç=ŒG8=6¢Æ[Öš]Õj¼3x¢ñÇøöµN°YQ«±.pÊ ¯4&7óÛx4›Âg‚‘hþÜè’Ž:)hk¸“,ut~ôVoÉYyMŽIB áE [q5–Í_!âÔ“É6&“þ×\]ãáTضbÉà IP ñóMò‘ø™Ë&C4OÚ§­£÷z›F…ƒ€zl¼©XП“ìQÔ @×?1þz:ŸÜ§1þúš?üs¾ÛØ|OÙìCÌZ=vÝGsðo’mÑø$ßèûéx8—Ÿ÷é›aü;š~™Îâ[¤7«b ˜.Sl93iÀ¬ÞËz@!~Ÿ>Ä@õ Ú#í\|Ù‰Øm6|&}Oÿ0Üü[ Þ¤5±¨£ÉdVÄ[ÛwÙîÀÑÑ9tTIu´µ½}®uÔÑ;jº;jú:ú9 £ß>Ä°Þ F‚¢µãñaªè`‡_ÍGƒƒ]>“AßP\ɦ¶ÍýîÎh'`°O0˜ŽocÖ« ªƒ­× zOÇèD1ã/ÆŸaµÃ/J3Fàá»^\¹bÈ IÓSržàWõk6¨±¤®OƒiÌáÊap$Ýw­á•›oœøBr–ŒætUZDV#R‚‹I|9€(R¶Lõáfçž"·ýËÈ7Üá‹È8H4ˆ%DOëø_Ì» îaðà®N'Ü47ãwH²"8?r/ì÷šÚ¶–~–öÉäGár"1`V éyÎÀä°W§<ÎŒú¾ÏMi@ËÍà}¾ÄsU*Ll_Ãäñò&Ê©lÀ)}p‹gµD„83åao?-«?¼I- ¾ºV  v%¾‘(–{g?˜‰¹½$¢47ѧ¾<54ä¿Çéân¹‡ä€88Ñ£<8Œ3Î uBt¶|盎ÕMÛvÁ˜ßÕpIß P-ÐqÃÜcs¶bŠ#2®5þðT#€êVÂÖm×uýq÷¨òzcJŸÓ©½¤ï‹älåGô\`/åÑlò…Ÿ ¨‰Ϫªw£‡é‡ñ|ˆ¤¨wdÜbñ¢9šÞü58À…y¢†m¼¡‘‘Ä­9ëFž“ÁèH>@Äï∊1¦ýHå"ŽG®·ÙÓIe³7°!èêÐ4›ÎIYH­y ò5_!¶R žá\Ÿ¤¼\/Çwb¯ ¸ø xäíÂX“®ZçGµkþY£ËE›¢u5*tœU¯\0Qü)}Z‰àæ™ôGSäš·¬öçÔž¸#ùJåÜ׸)ÿ¬5nŽGÌoè^Ñ^Ã#ñ¢\®[ô>òÉdsÛU¸éâZUWê–Ò{Ð.¬ˆýý5Û°&»ÈàÜRõÑ66Úzè9gYü4tþE8OSd$á 5†cÖÅ}Fcë•Jø©ÿ:ÌcýžHidt@7q¨ÆèAòb‰â“OG\¼öt‡7‰‘Ëf<%㸑ʳfjâÆbpEÈ ®Q&ñݰÉw¤ŸHZ+Q.}x¬ØOlœè‘¸¸Ù7†·HZЕ4=¤éŠìy§Ý9iv>qæL]&¨«hè·8Q)žTS’·†|¡-ç‘# \|¹‡Uëû—X<äê#Ø„Τƒ`Êu§cŒæòÈd™f|ˆ°µ=œé@WÍl„4—@HsI„4ýiúr` $HÊ;¨¢¨˜+è¡8i‰©òÈ?¨Ù/£\dÖ~¦iIi?Y­5õž)ŽiTJ˜V½eUðö­ÔƒæMs»›š%»w AQvï Æ{J3{ÒàY Áëû4^î„ |—˜¨ÃmD+ãŸÔÊüïØ©5ÕC¨“¶îëFb‚46­Ð›â’£ñEÛZjé` DLe€œ¡a¶K“TÞ–C­€ihs’ŽÁ¼: UÑÆûÐÆûï)MdÉ×iO`»we†j–•l£Œ) »Lb¨xG®l‹Ÿo|:†Y&¥<³¬4vןÌ—Ü*5ݽnU=³AE‹ôê@O„Ÿêµ†+Lµõ™[šØ_©lê QZ_h‹ü])ÑÐiÁØ€¾kÎÞy:ðIì× 'dR¡+ŽyEëÜA]ïå}å-VA8ü±œ¸:¥~ÖÞ³&[8yÞéIñÃêËñdOïFhlÓPÂIã- Þý‘¶n…LÖÀ±t3ÌæWŠÎ(V{jH"ò6œWh];|~[Gå¹ãêLïDô«w†}Õ,j%ný à2úÌô–¸áÌD¶xqx;¦K$EôÙth«á¥`o,‚.¡W^ÌËP­G°@d,pÜÆgàðÖ Hï…Ó’  D·<½í‡@Õ'¦æÁöEç>x²ðÃý¶ÿ'HlÔ/’Z–ÕäÑDñ¸våŽusímGB‡ß/&ï=Ë7™¸ÒÑv„ó·)kÇ—…o@4˜}Hë™W™ÜV[Ïègo‹[oÿ G0ë_Ðrc  ¿R[ë™7‰Ç¢œPÏb ŽÇºf†ŸÎúp¶Î †FVʳH|^ÑoÂ-%Ž›Ò?7þׄÉÏEôàa·qŸ@ÒŸ™GÉûjrn›—“»¹Y\§˜—›ã|$·#ÁÅ\Ñu0^»Ã#øo¯£´>µN%"¯ /~ˆˆ+—ÎzacÑíêô¹¾uW7ÜP¯Ð"K’Ãõ|˜R¼ü ¶3à;p€¹’+>ô¯HÚ€My øØΩþÝêe Ž)‹ÜÄÀÚ½b D÷ûÀ,Zâˆ4áþ¡ïèF<¤‘à~j3´ÙK7 WݱÄÛGâp2§Ìtoœ–PtÐ2É×>AwìpØy‰Û}Åg;FUM—ãàY“âNâbB{ˆ{jˆ]$v Æ x»ñ0.Q W t…ó©ÚdkBÖHÓ7î"¾ìϧþnfä§DŽ}¦tNáŽLY3Iù”°K€# ëÝ @´žO¸Pš#4¢}R>V>Þ§ó¼ïÅÆ|½ŠGwÑ=íOú·@ÞÍáÕáÍÊÓ¿DG¢Éi£Óhþ»j„YÛ=zºK­1‡ ýe8•ʱ[tdq'amøÖÉÛã¦9ƒæI ¤Œ*ŠÇ­*‹N¸—pt‚Ò \u'¿Á7âu‡kqtÒ‘±ß.g^òɦþñC Ñn¼Ç8® ä’¡o0¯&Þ&} ?޳ÂÌ`ž¼ùé»·ßdt˜2GŸ#(h¾™.9f§Õdø§Þl5¢·GUúyÞ©bœZ»ù³hô@ïPwUßk³íÎ/„ ™6_ÇÍ·G@áUüI`‡Ÿ7ݪ°}ˆŸÝªÈ’Php†S|Ô9h5S;ÁgÞ¥ ’@ ã¨{ÜL:$4«Œ/ç3⦻3ØÏÊK\…~ =ƒø“)³@pÊ ÅU RsªÁQÒ€ÓwÒBD4è}`¤¢‰Òð>í¸SM•|Èw |Z{ÓhujÉ7|»¥¾¡çôëbrµ[|.ÖOôK5†ÕªöºˆÂ|-¨²Âžtû×pâFƒÛù­ÑTµ¾¦é™ÜtbIf,å9 Ä£òóNŽ–߈°} u ¥O8ìµLľÁ•a£Vp°`“ê¸õáˆÒ½K¢8¢rÐ×ö®±šœSñÉb {ö"Œ|Ýõ¶ßOµ™.û•çö+­Ã¾Auo@0ˆ2¦÷Òñî›Ð—H½œÆR+’ð‰F»è5âöM£¾ëÜU8!1€ý&cü‚AG0"iû«úˆá%l|qxÂê»ì¼Š«éLI²Gø·"î/ Nù%!ÕôeyåimaþÀá~~õŽŒhe8@­uT#VÁ±@@fö9ߺèJL‘nXmޏ± ›_.§n»kÃx;MøÑØJVcÿÓ•BE1åGgîé/ˆÜ½bÈm@®ÞvoµÈÝ[¹œÛZ1rU§‹ 7Ÿü`:È;—,ÀOÎÂ$To°¿ËŽ=‡%<¡ôp±³­mõ6ßßMÚêÇàsÿÙhCîfa{0Á—þÀ·/üÓ×çÞtÌý…kŽ/w³vìU¯„áØ·>…­kwªêóáðIÕÚ2NÛĦ1Qm 3œÛQSDdH‘:D®Û!• >%uìéW¹Ëõ5æh]Ó–¥uôGî\ŲÀ…S «£–« ¯$‰¼Ú˜r¼'kˆðhhþ¯‚†ûЉ’Òw7 ç[Æå­æ‘º*]L“>i<îhÒ‘š§<öø„Ø3ï!Ç;Ê¼Ì˜Š—æ©m¯HmiŠƒ2®)»oëôÒÑ?rE+ ã½hžC!æ!jP|¯?ÑN’ô×ÇOÌyó?âk‰®Â²nƒ.òÎÞxæÛôä $K¹à£žôœñ3𳀨JsÿÉãˆGƒ[²p¡!ošk)³µ= ãX¤ fŠ$5€:»•tÖ ëx”ù+¬ùõ¦±ÌJg†RæÅOjŽ%îxÐŒ°I-`Ò\Içk%îüT\g-VËÒ‘‰%ŠÄ"?\'žxæõ±åÆ,úà9ÁüŒ‡`tßÿÇÏ|ŸÉϼOóïužà{?óC¦¬Ãþ˜9/žç‚›üþL0µØúÇ¢ “‡ëCÝF=“cªïú!ô>ÍîéàÁWS³¬×],“kÏ?L8Ãïeòb‚}ŽgFD÷µÇêæ¶®$Ig峓 Ô£»é`8YZJ9{ÊêI²8ïm›‘FîýªÓÈYùßÖ’jüo/Ÿ—ùßîç)ó¿}Ó‘ÿmM à²÷ÿËç»ûû©üû/Êýßí©üo«K”Nó3zá|gô;üøý :„™Èß~'ù!k²!:BäwÈŸ:3›ÑÅæ¥«Õ·\]1ÑCÒUsŒFö ÀøKÿ8ûÃøö6VágÿfرŸûÃáà¦?ª²Œÿ=f?®ú$èýÒŸÂÐA|õ™†¬uµÌ5î&ƒ!f£ûÑ¿‚Ì¥¥à´XÆ=}NY«1òêyç$PÙ>m7ÏA¦Ù™w¯»)<`ν„>ý¤˜ìÅ0º3ôÉåXâ2™úÖ’FçÎc¼™¸Ïµ@+1 ‡šø#I˜¡÷×ÏŠ~à+ý=Õ`kñ«–ûYéÿ˜Ì¸h @Mk0Œ?gdÔZéÿD &d¼p O¹‡'F¢f¼Î±‡Ûþgt(±üÑ~›8òÂT¡ì6"ÀBÓŸoŸÁ™+=Go8ûˆyõyç•“J|7ÝËÅl"ŠAÊu¦Ÿ¦’ò¶Ø|$œ9uÉö/èd»£4^¸ÞLåÃàRº_öqÕ2/˜áWÊ:pP}„¦TfŸ: uRù³®‚škªE6tx7£ŒX“u–ÄõGFØèDÄMþÄ’׃р¿$43d´HB”Æw…S_²õd¿d”óà ^}}¬ YW¿à'[ß[ÇQçýïÇç£7¿SDÌ4&›Z¿·ªÍKÐA1ϰÍ€‘€7ÐOŸGÓé—X*S<$ï+Þ@F.MWs@ òƒ2xh÷Ñ ÷Óà26C‘Í›~-96™•f“¥2m¿û™ó0hQN7ð¼Xy™A›SäqOЉ˜‘#Õ¾}‹8ÿ0þdeOUW2?öAð5NAp|hÎÆñ¸6¹7= ªÄ¥È%b”Ì]èUˆÌDü(±X$Ûq©a>¹Œy€2gÁ(æ,Ig¬ØHÂBr”®"=é*2“IJºÚŒ¤K¤#]E.ÒðD¤Ëf!]i Ò¼ü£,$é‚ÙG ¥ Ï;š›tôÜJ:ÊòòŽž/“rÔ—m”å%5G]$×hxšQ¶l¦Ñ¥“Œ._téÔ¢ f]<¡hP.Ñ 4¢3ˆ²¼$¢)MüùCÙ*Rˆ.™=tñÄ¡Ëæ ].]è’™BWq3?¯á’©AW7ÇÅ‚Ú×TF.P–—4d¯ddeK&]:èò¹%—ÏþéOü¹tÎÏå—·ØŽx˜Iæ/E²{.‘Øs¹¬ž+Mé™Êç¹Údž®Lž«LãœÃsé;Ý™;Ù2É;Ï—ÌÛ¹|ÊÎå²u.•¨sáòP¡!ùx®7¹&–4­21\CŸíh®÷•ìîìF^•°‡GÓ9åQ©¸yK”C47ßãm¨¶#u>5z‡#昡Ô&¨ºãIÌ„)1*¶aŠêAhO®‘‹&2ü(þ¨Áiavp5Ÿ…ÆðžÆ‘¢HÙÍúò¤ä 0>-Ü©h…ÂP̓STds+’Vs i¶¾ˆ¤7j"{RbH\jo-™†uX—K¾ºTÞÕ…S®ÊíÑÌÚ_Í€ýÕÌØ_ÍrmÂþZ:µî¢Yu­„ºÁ¹tW‘F7•Dw™ü¹9ÙsY^ÝÉŸ;—-•>WËœ››+×N+•âáirS¹qmÔçfÈõ¤ÅU[#'9®'#®ýzF^Üìd¸,/nªý©pYv6ÜNb*5ÛT*sÆš¹NMm¬fpíþÇy teÖÜ”uÑ;w&Æ6Rçú\œ\Ys9;Î­šž ˜äÒp&žSTI´D'&‘Ü |!‡24K%¤IÓNlÍädÅÛI"•.iww1&9C¬Dn•ŽXyÜcõpÒš¦F‰´¿®ÜŠŽHÔ©>•Æ™~Š,Ÿ:CR|hʤ‚Ù=­”žj÷$öLRø¦œØäU“J&¨F Lß)ú±’xfbÆ…©˜é…ý ;ø#á¥%ðGíh†PV‡Ÿ*û ûFdÕ.ùÒô6C²ójGJr†,–×WOæ+: K雑ÇW™˜ò³ù2ÝoÙs|Gê4ȇ:rÿTÙ®-æG'<üzöåh_9¡Â[ÌðÀìÆ±é¬3öºŸ¯í…b¾„r=pAÂþ±”µA€ü²RÄ>¡Œï“>€EBþc‚^”épá´‡i*WwBP P ùÔ_U8 ¦Ü1Ô6"I¬¹ß–ndÎ6iШhGôóù÷?XÊ %ó®ü©gw¢à—­-³ùNæ“Ra©þ©{Þ£áNÉAM‚ÔUü91ï)Z40 9)‰Ž8‘`èN9PÐ7 ¹²ù‡ö$FÝ*ÚñW­?ë„©³»L¦3>5„¨éµ>¨¾ÚÒ;•l\r†ZÔeö=‘L|¿ªÂÊ­4ÉÊõTÝ=¸*à9‡Wʬoa/ûëùDßgÀ¡<™¡Æu:û+PèŽaàè;Ζ¦(šÒ¹>˜Á.eo&„Ád@æ¦Ô¤ÓMf•j.§Ãþí凊ŠÓÕN'>í=ö×·Êü¯ú¾z••¿j)ò¿_ÆPÞkx–j¹Mê»é¼ï©©ÌóIŽ,íñçqù7“¸?#˜e Ào=ý¶PŒGé¤Ì1G%7c“¹@xrKÜÒ]ë±!»op_66_±#Yy †¿Oûé@³(4p%N]b‰NÌèeþš„üµÆ=Åœ³µûPÞÿpLÔÙ3~eUþù¿þßúÿW…§È?¢¿¶èDŸÔ¹ÝÁPw“Ì=R¹|"¸½¦œ…ZñŒýPÒÝnT…_m—¿4wÒø¯k¡«Rè =†- ¯.™\Ò¶ÏoéŒû'w]ù}&XÁÜê ]àÜ¢øSö›&H‚¨¿|A ½žOÈá ðA¬!]ïŸgõÒŸË`çÅýUÜÍf¯Èíá4‹ÞÒ’Ô<·´óN¿£õÞ \Ò†Ø.r(=ø·­ˆqó+í…ûþ¼ù•äè¸ÿÙâÚCx(-9—£_~‘Ê<‡Å*ÂyÓKìÖD%œ‘s£¤uè œiÜ:¦¸`ûB CµçXe™)øm'Ñ%…Æ[#¦+ˆ³¡àºuq6ÔyÉÙ”œÍƒp6Ææ-Ù›µ³7/õykK2:Ÿ¥{œºíµ]ðGyê†Á_ÒÜ’ÒÆ©G æ¤ü¬S •ÅIÉp·¢ÆôÍI×Z@ÆÈÀ©À»á7 æ5†ÑbA·PL™âkÀÔèR¿ÊÈ*íÁ‰‰T¦I€5ïEš°ŸåX°ÅÒRKéoÆØ\·zÎzšx”œLtÂ}j\§¤)åM¤#ü5Vã»ÕXæâD§4hjDÒDreŒÝT0‘U¬îéŸTˆˆÔM´Þ?ÝÆ“ŽøÌLÄ/éÌæ„×Ü{¥‚!a"œ%‰i2iU‹}á‘ú¶<äó|…•LÌ׈7¢±?z‰`4NÕ§qs‘ª¸=NÆÁ}äœ9ž_ ãÄ¢/KBHÝ}üÜLâæ=]í ‰d(CieXšóêO&:r0}LÆ#]Î1f<™±Ã“ÞAëÈÝÉiç¨yÜ=>‰R‡`…\ôM·E<‘!r×óÙœSËV&5üÜ9êþLô°‡ôСüZ\€?3Ç7 ÐGÎJŒ›€ÙM:y4n€ PŒ_QÖ6 BÌ'Çiñv@aôp^ÜàQ!£Í“Ò#dXAÝ ëNðÈx´zãm?iŸHJáÐg³øòÃhð/,C¤ºòôñ¶?‡õáñ2À,¼ò°guãN­¢zÚâ÷ Ø ¿“%IX]ø'á@\ÖZôA„¸žO@i¾d Íߎ»GD ûH o†ýÅJP¦?ze ÄÃùg³øöŽpp•Šèç¿ þÈ-¶¦¶±Ú»pž ³#ÁÄUéࡸ°á4öV¬"'nÊ]å%ûgÑ‚…ÌU³0§X¡x/·È¯0×5+̉8ZÍö“Ù5%LëÕ0/Ow¼Lyº¿³]"]UvŽräà?AÅç´ *ŸÙ°rsFY9­ƒ7ô˜2ý…ä´Žœ%å0éä/¯Lø»´?ì—YJ `âç áÄèÒ¡QâgïÑš èb¿òø+ äͳIO«þ‡W­§4MÀtžÖ`phà}&JZšqÏø¸ÒÃä«5t6L¢Ï ;m†Â-LÙ½l ˆ ‹º»˜„Ša/ý…–kLÞ2-)¿Tërºf¬¹¾8m¶Z‡H†¢-ÇX‹7ëNÐú´ŽøJ¯ËÇô-Óœ©|1€ÑM%ž1%)Û"Uç‰/luNe}OŸ¶«áCzY’¶¤f‚6̇¤'Ó¸ë_ErQ>ÖR‚¼•#Û×›ã¨Ñú=ê´I™w\4Û§òƒúéïClˆˆ°/ñ¹¿mÀÓãw¿¿íœüvþ³zÁ¹bkê<°5}äd3R|ÈFû FΡÄô¡áscðÁ m­ðçËìŽ4X@ãï«LŸé3ÕM¼ÇòîÌvaÕ—,û¸P¹G}Fž¸™ª$þnä`.^!ÒÑUÆ, ”y¸xë:Êò~Èñ2CÔ°ÛlíÉJ‘ï³ûê+=†V<Ì*wøMV‹´r¨ ‰‹Oƒá|+E™Uõ›|š ž?ñÇK{ýUyn6’BИpBëøOö˜Øωr"XLeGÓ¼ýDFTïŠDDȘ‘­XŠþpðoî¶'?¡AU!ƒ*šä°TªFÁ4Í8O:ÍÃtïEª\êÛ×Uñò^Ë\–U.WQå²,ré)rYO*f”E.“%E.÷Vܲȥ0²Èåêª\®¡ÄåÁâõ$ W¼¼ßZ—›\ãRKb1K’*éiÉ9‰ç†«òä‹â[2Õv­òƒLð@™%.½Ç ¬.„fJý œêáIÖ—ãf–¢òÛ\hÜì² ;K”•d‡òb%ÉLß‘õ± Å’¨õ{úh¦û(KeúJežŠL,òp“ýI †iKøÂšBïQI—¨t—-^8²`UHßÝØ/Ë .Xnð½ZŠ8ðýUcô+Š/2³> UÑßñ‚É+÷¢÷’UƧʠ¦¢ÌbÖ=Gª~2ó´¨A0ošÈ˜H•;ï¤;7Ï׬âr+¯.W>›þèõÿf—{k)¶@ý¿ý½²þßý¾ÛÍúçM.±I®3h¿¤Ä¤´[þy0ôÑ…ÌQoKq[¶cIGY¥àªÚ·ãáxÒ¿³ÃöŒ"q5ˆ«Lþ¬{@©º;†¿\vq7—Et¡ŠkìáÅ×´qñW­ô˜ál‘,¹JWcËÐUáQ+鸠ŸT5éq„éŒF‰b-íŸG^y3™ÀÓ(íÿ‘‡µ¬ì‚È9“ÕŒÌò.—˜pœ ¼Ø•]Tªû‚!TÚA䫘æ–zQ{@þYWÍ$ùÊÜAÊ­”¿eTš°ÒSÓEÚhðwl0P^ÎÔ6ü‰ÑX³¤ZÌZ¯¤]îÇ#Œ3¤Ð)½0E©6>CïpíŒù‘¥è1Ý ûù8ðxe9 XôíuÈ£½Œ#J?¨úSž+îRVŸ%•Èï`Ì~íßLgT.öý)9tœŽáï~ËÒbþ0•n’î¤ÿ.j/c<Ó»ût!ã‰:éîü¸[g?|OßÀŸŸâ«XñYÞ›òÁ*Ó7¾ÇùÎuß#“…ÿ!Ÿ…w>þ÷Î?]éDwtÚ­Š›7«ì}»áríZÄñ¬Ó«²f÷·Æ)ùÉ4 ºÝyäü£ŠïÓãuMktÉ•²…jˆx=Ô„0¦#`ü©ˆÒ˜o“ñPm7Ÿ/`Ew1;Íô?{Bixå/:jÝ®g¤ô㨨(„+¶*Ö$îd,ðêáájÚ鳩uŸâr»äÙ'†>ë6M¨·áEÝVŽ ›ﻈu(0Ódë´hPݽut°E5ùßI;ܬž´°(±ö¶çÕ1½:v^%j eë¢C°„kA!ÔDz!B‡ÛÖ¨ÓJ)} ËiРOD÷Ëàí¹£ij÷QK_·Jf12®q¾ñxŠñæÁû¼ün(¸ébR'½%drZ¡B™ 9ÎÛ˜ö@¬8–ßëôMoıֈc³{dÐOå‚¿ƒÓÇn¢*H§ÑÛ¢Ñö™ið*¯?&yßðvSû1Û¶T[QöäÔ£ W+ åËr“¿IêÃÔ;BR:™SÌM\8øÏ¦hn,EžÙ 5¨bQ݆I”mÃ$ ØTCt]®á–°E ް^í—$WÚØÔnÀuw­Üð<†üÿêÊÿ+Û•ç»;Ï_TvHþ¿¯åOò¬åÿ?õ£ÉÿiõgËÿ+;»öúãëõÿ¯vKþX)DͲ«ð ÿ×"¡æ ¥þ«õ¦‹úqÔÑÇád8Ãðb¦LŸDët‹$´xiq¥‚kt1ÆÍ•X=M Ún¨tM@zŒw¯ €ÌX†+c.È ƒ›áÿLG—ðnt]GÿŽ&E;<– •\Z+ëï‘¶Öð¹…å%ú.áø4H¡Py°B¡)&?Cþ¬a²Pø[³åhª…œZ '´«§Ü‡«,Ò4׸7<¥Æb }Å#j šK( ®G“BµhWžª*¹25vŲ ð=Köþ»)zßü›§÷ïü#QH~ÿ·`$ _„ŸQFœü êa›>3nÍ9·€Ár¦ˆê™Dä@H/§¥=xCÄ<¡8ÝsL½o”u)ŸWœÎòó‚ —…\=*¦ø2 |AÉàežEäï>±ô!Ê:ùo¿xž¤ò+–ûjÚCŽ,ùxY¦[¥œ¯ÚPâ~öÚY~9qNöà ÞQÞÔLw&uSÀ»åw™âq;¹]ü-#fÀ&"àꆆX®É^IäbÑJɺ³ÄhÒ^ÄŠæšÓ¼*•ÖP¢ÚxÖ}VŒtõAâ[JîwM’ì9J>¡ˆ§ßßΤ8FUD´!»y¼Áòb\±Ž¼˜Yìc!/¶dÁV¼EEœÝ7ÑôʨÞܸ#ídýsHñ«–í%Á’o,÷Ø|G>Ù÷±%‚ÇviâV³=rv#ðª‰ÇÁñ¦Ò‹{D„r²[5’Åõ*bšƒšÑø ¹( 5–6ø'N‘;9üø|/#¥%´yìI±Ø|£^3¬ÓÚè`’fû|U#Wj9öô‘¶78^žÖ˜ó¾ 5Ý-+™—d‘øÉðôæ’œgƒ9ÌÍïÎÓœY@SÒÂ6éŒ6'C­’íaE•”sç24`Öà†eô‡kýS?†üvõ½Èÿw×òÿ'zÖòÿŸúÑäÿ´ú3åÿq¥Ûë¿ï¬×ÿS<¼Ú-ù?z;¯åÿ?Žü¿s¸€ü¿I!Š×òÿUÉÿwÖòÿÉÿMz\Ëÿ@ù¦@×,1 €VÊU#Œ_¶„ àÁ:€•)¾{-À2òÿØÒ󹌒Œ˵ÉɛͲS0šêmøìuºÍyš~À×øFõ Õ·B¼_ 濽`¾søíóû*”NÇùx åÏÑòŸÃ á”D–If§UC³c"%«¤?Ï¢geÁúoÆø_‚ŽSRCÔ¾X4®†òàt1%BÔÜM¨]ýL£Š4œ ƒ£d¦íƒEx‡Z#i;ˆ´ç¸&qµT¬DhÕY;ûV$|alÝ«ïÔž¹©¿ SÀ(%¤Ñp†„Û›˜&@WãSàïu‚ žêå_‡Þɸ–ÆñïÓ$lC©TÙâ`iOŸ¬ˆ1 dJì“)8Þ8®mz¤þº7ÒéÈß„YŒPbeîjeô›ˆ©’9ÞŒCèz°‘ÃP"½Kê;– •„ÓøÚÃ…ipE´üúÌVa~WWd·¬µy¼y\ÛP^˜KÑAÒÒ ¸^¯ì…ÕD©>â݃cÙE§ÁFáy;`cxu‹ûE¯VøGkŠ·¤É/¡øîã˜h7­aIß”:B§r©Ž §•c©D§µ)j§(Z@•¢ò·ßÖ÷¦ì`êôè«]SÎàW5 …ÃÅ#h”=’¡Á k¢€GSNÇŒN¢ÿZ+}žü1õ?£ïÿiwgÿò4ÏZÿóS?ºþçqV¦þg§²Ûë¿?_¯ÿ§xxµÛúŸºÿ‰Q2.XæZš 1DO« âù),ªª'Š!èàÌ Y!$¤½¬üñÁ,c) \¦¹9]-r=¼ý4½äb¡»§ò&:Iª…w…*ÅÈFA¦¬Š…™X¿/aäü󔃄ó¯ÆôȪ()0£wìͺH’ˆ½·Ëö4|Ìlôq„Ò  ÿñ4.ì‘Y¾K(U“ÁÇC ´¿¿ýþ&ü(¯*à íšcúQ—i;(:T ÏÌMœ×p\2B^“Ó„^ó¶"gF†‹MŸ™ÀŒPA²sZ’ü‡.ª±¸gYåj•Zp£dm«fÆ&5Î21”JÊp¨H°,~Ü2ïãõ+Qþ?Ò˜ "5æÑ}0ŸÃ’¿dU8vô‚(")ìßwãÜÜd{¨)b@¨21sbÐÍn@]Œ6Ðãnr¨wOz¨rƒÜàÃSŽ¢ÃÜNEGIw<¿ã1aùò?X{öZß?MŠàGA­á@nçj+òÇÕý¶ú«E@¡\—”)Ë*4_¾…'§?Ó5ct•^ìX M5ö%k÷î}C>¦‰ìZ5BàhùGO£ëz€î®ÙW>.BsÀýc]^üªœºTå(=Ž¡Ëᙎx¿1û“žßËÄDUD¯|œlÙz¡U{ psâÅq¬Üz¨;nnf@¸©þêÙª?Õ^{¬'ÌÔ "à*³Ìœ‘Ú‹áÖ™[tOg,Y+(£Q€ÔÉ-Z=Ô7gm€¸< S´˜bIødó޵úeR5+Ч/’ÊÙ·H*}yËÒЂ„vЉePЧåú£+¡´¸bcL'!Ì0½ÇÛ…ÖῈ‚¬÷fW¥¬–h%k‰1£¬X;ÔuÉ$çNš‚d^£ŒaÄ£ökŠ^ŸŽ+C½›è`[ä\²[Ú—½é piw³2!¿“ ¬€=b® Hp6¼#ïGœ92ŽæRS4ú ´"¹¹)4­ºrÒõBC¨ËÒ:Jå™Û {h“>„i²J­ÔwÕJ-Ûk'ÎôÒ‰„£÷]¸éhŠ6Ë˯ÂYDåÞjÑ! ˘®P« çÄ Šç‚(Uò¸0[›Ôò4ÂaÅeò1Ê‘Ò.´î˜•ÖHNÐ[±Iô6"¹ÍEŠì6`ø7a°KbßÒÈÐC‡Q¤½ÔhqGsYÓçiwAµÇ+…RývXsè@[ ¨MO™i¹%…ËÔÌÎÚtîj5 …vMwóh´3zCÕŠéÍñµäyŠÚTÎ![ˆÙ² ­9ã ±¤Vå^«šÄð™Ò`Ä<çüN©~4F‹ñ2ÕæñÂþ§3”pZ‰_SôÀõµøéSÿ;ÿnüÿv×ø_Oó¬õ¿?õ£ëgõçˆÿóü¹ãÿ·ór½þŸâáÕnë}A) e°ŒÓ˜[¼³ßš`(¬z3á"Ç^63óÁ‚ò¨÷ÞV;Õ=CŽL£"*Õ´Ë8ìbVžXÃ\+pí ꘻ì¢27|TÆ@0:ÊUEr»P8"³C-QµTêi_§3úé­ü sL q]l™®‹)ªk%ÅÂRlÕuš>™&*J4oj.K±~éêÞ /FW£¡ûHh‹Ø w ô,®J3¿:ô¹›·–7ﯦ€1à…TŸÝGñzlé^8‚A妖LjŒ®‡Ÿ!õ—b  #§Ú ¨1ðœ¦zÀtÊ¢K‘¼ÅÄ’{¬¸1’`c1vÔ—Ùˆð3j|ô}ðÔ² —•¼¥ù¥Ò, ÷n²¯§k£¦÷µµšØßBM;QYš(1ÇÓ LˆÎØnùºˆé99:éSê•ôZí]†Ò;é—¿ßÙ“ÒHZ\Æ&7’&?–d‹O=­B —`kÓוâ¢>‰o^f]i6'lbŠN¡»Ö)¤?šüÿãùàïïÅÿkçåÿïižµüÿ§~”üÿÑV¦ü—äÿæú_¬õOò^C—ÿÕªh¼ðÎßn}ÿ€àÆ{øçmÎeÄv†;ânžýëŒÆþOè÷«ÁMÎã`ó° áqAOž¿Kô;É—°4¦_àÊû# ‘Ø[ÃÅCöu Lh4}Ä!f *¹š1ŽÖW)Èý æ9!¹_À„Ãñ|Œ‘=\Ÿ_JµÒ×2RÀ9PÇ%ß;ÈU…q Éw  ®vÝ„›37¹€—7ƒ‰”IÖ‡BN¾‰ˆØÔ«FÌ. ÓB:‚ÛûòJ õe6üÏÝh6¼ô* €j'ÓÛOp(«›öõõðr4¸Žï_[YÚ"K¨*”æêà‹èLc—ÑÍQÆ–ÞM|ùkéùçTÀ9ôÉh ¬I×§$’R\œ„kDÀ9gKØùàZ9ñ(Ñ'&šßï1bŸcŠq}æ˜FèL;Ó§øÐƒ´É]'5»û +‡³.–Eiô@?ömE ì*¡Ba×ÉSÞñ>¢‹Âó]J0*¡ÖC™ä$¨AÌáw2 ]aë¢í×øêM,‹CŸ8|õF¶š7®¤i´·eé-ö‡0¾c5"-HÓ/•J•΀ÉA/EÜbi’HoÅU©¡°Mé~m u¾y›™jôÂp£~dо8Ú7ÊÍ¥Ðé—›i‘Á¸"¥)ôž/j ŒÜhµÑ‡ÞÑAϯ ê#+"E.·CBk¤;)Ï·‚¡yF3¨(JFKZ¡¢Èèåòš"ьû¤ŸIâõhĦ:F­½­èØôËQŽ^©¥×ŽÏÙ_ölýÝzµ#÷5Ú"½Ä™;oE•¨ÿökŒ&ª»ñfü¼òX¾„ ¸çö€êÔÞö¤Û›ßKïÝ?H Õ}´ÀQ+UB%ÂBþDéÄW8Âï8œ''Aã™ç·ÔuRÄÞ“Ë£°â—mõR»;¹ÉºieÔRdQ~Ñ{½Dêm~õÖ‚º-8Ó1GœÅ™Ô ¾­_¤¨Z¨4r-ãì*º€ !]~?²ÕgšÚ)§®e7¾ÆZ¼Êµ`iH©¿Úéá`È«Œ%É>@ ˆw»ÇTºZ¿$I3;‰»ÓÕˆbº!Õ½zèã£zP“q[4Êð¬Y¤®àjÕ'µàÝÕsÐÕ&X¯XÎÿÄÄ'NŠnŒ×‘òñ¡ºY@}r@‘ú!NU–5ÛéÝrx4»Wþ-)Òc€åíT#«S•ÌNy{¨º§qçÜ'Þ•C íåļ’?ˆ:4º]ß.¦ýçÛöØïª±÷ºñƒ^¹)Ù¯±fr!¯»õªªw·óJIM{&éû;{f}nq‘ô¹òN¸>s²P0e$P<©q±©[ë6Øzø¸ü=З_hTô¤è_6ž"`×$š ç!ü åm[Q uêóÛáÍœÂØ!(&¶H:])}Ì5ÔlxywÁÅ›͉QÎ^Ž®q%¥¿×— .>¦e{Ác-™†ªŽÇ‹HW9F e“1ÚRTƒ†ZEÎ}Dn^ƒŒÉt2D• ͨqxKHÁˆp Iñ-bRâ­mŸaVÐ1“1n×›¸¼µµUnyM;xE Ãv¨>ö¿&³ ÍìbÈ”Œé³Hp=Bq1‹!{t`eÖþhpÆfBÒçVú\e ¤BÀ$™ëWDH4Ë¢„Ä› ¯†³!fZµ§ß‹s9×ȼãð†¬=x¼j)ãµ"oÊ€3¥4xñèÈ•ÅKŠþ\·rÁM×3lÊ f~wñ Ú1¸ÅmÁv¬Få¿pñn3ñ'_1¶côïè/Û¬é/Ú(p}CÅ›1Ú5ŒX¤³!–}p1í3tÑÛj6ì8¶ìð*ŒRhEÕíÂ_EIw4¹~õ8[&š÷ð_|ík…˜Ò‹$6_"/â`š[°ØŸi²¨iðàæ{lNo߯ç 7EË„ìe{[g²k Íz²É±ùåÓˆ(phzß ­^. º³%Ø E¥O ÂJ^‡C¤•4»¥oD#^«¥üD⢥ :/¤¢—""¹j¤’dw©¥óóR‹ Ž$˜1&1ˆ†~Q–š°…Â&?¿;ø‹R«ˆó¹Ãuy‡«=+Û›¦ÊÄ–Ø~ö}øÕ/m-UíìÿÖR>Ï•‘×ßV‡yñ×%ú:桯Ïé+CÄ \aïmçà u÷‡Õ½´ê(!¹#ê㲎8íî¼'ù 7„€œ¢$‚ÛdO9!º:\žéf5 Q艠êxÅPq·!??E nJÅ1ÃŽ¡wMØøÚýÙIº"5YâéA °Ö{bfÔp ŒL<“FÒx~€‡ŠD(ãw욊1€]d~ kîï©fy»jÂ&5þËÊòr[7}s3%øáÈþéùWÖj¶£z‘Òj5üTS²¦Ù=bgÍU,&šå~u¦91_2ÈX\ì}”Lš˜wŠŒ[ÊvË*×ê;šs²SÚvàv""¼3yŸ ¹ˆÒÞ¹ÔT'jª?5Ũ8´9Õ}ä“yfì !º#b#Ô‹œbZñNJ³ë‚ž"l¯?RÓ;—š*~jÂÉóSÓoî®JTÓdé+Ä wË{3€Ò”™ºôFíÏ{Ò*hâG\`§Mg3ÆŽý¶Ä1å¿DT,çÙþ´ï[Üüw# ï…cáz÷ØMò?&ý¶’&ý¸ðØloè\x±dÎ3û_M™³aàT¹…üS¹“æË¹ØTîÄ7ê4vw9f"ШʊºiËÓ}'e:õÉÜñL¦¨×sœ¹[U%tz²;™wJÖNG>m³ÇFÊÍd_b ÁI?› /¤]¬Œahö4<ÍêçÝ r¼{ïñbBM(™Ã­ ª_0eA¨+NWš¤ ]Sôo˜4µ%«l‡y•êxÚ±³ëuYÆ2QåAuïI:õ6…îÖ%?s•»˜| V[r4:÷@,e]_w‚Áø–È”:]¬yíÍ/+æFL‹x´†¹\ÄûÜcÐ\³Ì=¶µEщº ŽSzŠA7¢È]-È‹:Ù÷ôR’vºƒ¢Ìó ¯,ɰºFÔâ}RO†›ýAWú]3”zâi/‚äJGûÉt2¿¿¾"ç¯.X9Þ—S–£tq<Ÿ²óÕܶ¦„}‡ýFa‚Ýâ½ä/Æp$ iô0H°î3s3(?yÍV€ œ§+÷»;ŒLÆè£ÁäãnB;Ó¥1U‰<)z[ºÃ-–¢|ÃhÉIa0šåÁ$ÂÀgƒÆc˜˜ì„c qa¤&Ô`9ñ:„!¹Áœ_¯Æ2s˜ßóÒ‹·P¿"Ÿõ4’$'¶Épx‰àÞws¶Táã@.Œ>Œ ð°#6u€C¾U”îè×*s!™âáMú Í&&‘ ÀͧÁ/çÃÛPà—²æ0¡²õK‰\£1Z5N::ÞF wq7¿£Å2ÞÀÂ6-Q ¨*ºŒEËâÍŒ\ø˜}6Ì6Ð3€|ý Û$@æBœ}œ‹áçá$ ºp>Ä)@Hå¢ïv»[îQ·ƒ›ÓÆè*êʥܣ9ro€PPÒàò’|%Ê¢†‚ÚË‚ ½ks2„¥ó‹] Pzi¥œtœ#ºƒaC#³±eÙh }Ì™žeKkMç!­ñì ™Íñ䑱/€_ ]3/\l•äÑ„-»;ž³áMƇ|Ô‹}˳« mù†áÀ^øÓ[®vx鎰Ӌ´QX:qÂÊ͆¿Á ¥»p„Ã˻ٰ¨ÎïÃÓÖ^¯þ¾EMÿ2Õ4º3Opåéz9¼²‡ÊÕa/¶uØAÆbÿ ¬ííO“#0D©>`ož®‘vHrlæÃǘ(üu:3Ü^…söíô† YLX`’ª}ëdí¯â/Äy±ßµ:òFWî@d޲ÈÁ®Ú3åC+ŸÖ”¨Ù:DŤµm&Óh<|ºœÃ¦1¿ºÏUï›h«×9=ØŠW·Dâ@5j6ì ƒ–å+ªŒýªiˆ¸*Ãn—A#8$aEÑŽ?º²mµãñ&¢ Ñ9¼,–™jFF)8øèfDƒL«±µQ {(~?ާ_$©? Ñ…n€Ä< –`%à.QZ 4I”ëX ½|‚³ñ|gœa2ÆÜÙr <Àº+v©nE«ÄsI"ÆžZlŒj£Þ À\j[QÃïžTjN‹µ7b&Došn’& f£ï^ð¸BK‹Vû˜ì¦ÚæÄ¶ ZkÃsÉÓH†o‹dp¦ÏÙbËÑ_& X]Ø9D(,=w€ÞJJÓJaþ-’ÅëåèifCƒuS_Hœ³±Ê€k|‡å[ˆ¬QuÂáûû]ñ:Àj·_Ãmkœœtþ„S³ÚêuÓTˆ3ô¾Ñ…ƒNG ‰×ñ¸oˆOüÃŤTÆ6hÞ?ßÿÅuþ …p¯z ÿÒß?Þ¥QA‚÷í^˜Hª­ê®áßTX«µªF¿Öįm¨¼ÝOœ6ë`›–ŠçŠ´¨8^û§Í‚fEçiò>Z5W(A‹7ÁÆØA˜-Ф">ôùáèxç„ÏFu¯ýgá ÚÂϘ2Þàó´utÒ¡Ï&~vÕZu?¥  ZÔŠaµÕƒV?<ÈÐÖÑA~`-*®lgs{±DL(í¤ÓóŽH&Ôþðbz9ÔP¡4©µ¬Òpb§ý ¦C 82ñt|éÙ:¬6ºŠÌ ’Un?µÜЧ\:»´b=Ù6³Û“†DË6¥Ç·Ç|=î¤ö¸ãö¸“£ÇO=í1{Ìv”„;%CöMÀ‡yÅDãÀŽ*¾)œlm&Û9^СóEÀËüâ^¦grP¿™ègQ…ÕÑÇD§ÅLçnš@æö\€ì¥›77Ùon^”RPVZ)ˆÅÀC¡Þ¦õ ¢á=Þ.´£ÚÉ,ô…M“LoA]´$Y`ɼçíLªÌp#;~M&Èjþë™ïÕ¿¢Ëáüb6²$Ÿ×£ ]W×ÀÌ“*!¹³õâÉo~3Mnõй'\[¿ Çc¥§ ªôD±WžK{Â*·j|#œK½š¼C“ߤ… E4‚þ^Ž`×|WÓñxúÅÔ:ÍùèÙ*áÐyqà˜c’Î@fÓ·œ&í}+ÚˆZ%®…~xÆLÃ3ø+zFFc1ý»mùˆñ7*-tö[•ÃàTâxJJ÷à=,Ü_+Žr´Â†‰`«1F(¨•6MXt¸DÞZM÷?µž~µ×“5éùÀºQ6ø ÚDƒ¬B ©PêtòÕt4D$é‹OìH:™ßôS Xwݯ­¹ã«ðÕã{@â¬Çl½6–ÌÆÄyqðœ›LEŽQРÔ:Åï¨âØ]¾JÛTžhÌŒôÎÿ[TÏEýÕk¼Î N1£Ð³&Ó®fÒËÒ1uZóî°ä— E¡G*Cx‘ÒO@¹ªWæôñ] û®šQ‹Íä5É¡ Ëï3‹õÁQBm]±ý £t£´Mÿ7/…æÈáVã›xžjËÍS-8O2—=OµÐ<ÕÜyª¥ÏS-ÊCNYk»«dlÔ3Íúàtr9M€&F­çë)ÅTCÓ]Ò‚Úx›3`Îcå{ز! 1”)Å; A9û722.È·‡©‡ÀÇ(Ÿ¬'ê¦ >gÓÅ¥Ü § m—¨¥¨nSQøªâß[õQ÷áê¥Hyƒ 5Ý'Ǭ1ñ_¾> Äø/»;kü—§yÖø/?õ£ã¿<ÎêÏZÿ»/wvž;øO;»ëõÿ8W-ü—Y0pèèŒXX˜%Ÿ@0áBƒÙcvÿ@|öbŒ‰ .£.R××2Ë ÈðŒ?H¦nÌWšeæc ÍøÚ›†hŽŒ*%áÉ/kœšàÔ|x* Ÿÿ!BXAÁOL5àåff Ô(¿gh_ZÍòp5VMÔ,¬š¨­±jVÍkEA4p·½!ZÀ\àØW^zøJ‹ª쟸K‹Èa†0¯þâkj…"ÔÌ:¨/Êíó-yÐm,la –Þž~Ñ€çÉÄæaºdÍ#zkâøë=¹ñyh¹¥@ôüdÈ9ØÐG„Ìéɞ؄/Ün5'hµ®pÚºíá.©5*ÎÇL¿FÅyjTœ5ZM>´šhî«¡kHöTñCæ¥#å¼fª;À¥»¤¢W0k“¡‘Ê^H˜J˜­_òi—0jžÍ%?¾w·"»•ÕÇ9øŠ¨9EàáäÐ="µ»Ì.öòòýŽW#ÆãÒXía‚Ö0A? LÐã éüe È8+óâ!Ÿ¼eÿèå¬1€Ö@ß+ÐèI €X0£ Y¿Es†—c¥q?ŠïRÞ˜w2ñ­RÔP/%•Ì!c’¾›¦Ï…jt‹Ý¦DÿaÑ·¢o D¹Pãà2±Æ)ùÙà@ÀeÍQ‹ ¢`­ Çpc¥pñz*#÷¸RjÁÈΔ ­Mü,¹ÄôLx'wW«„è÷7hŽÿKŽê’@™ï»†nBˆ ¤”Ÿª ÿÊuÿ®UÍ`A#wá*²e0)8—õ‚ðê/Á°€éÞ}üô”Xçˆ$$;A|,½¦)í&å»k#GÝ©…/ÌÉ“¢Tk4œëUSMZ‰sg–`[a„-xÇJ=kK/cYØ­èWò<ÖJ"ku•Q‚f9%þb1þáµ_Ï»øë¾Õ/燋‘Ë_´guËßÚõänP×¶‚¸ú2²V°JÑÚ¨xȾ¾0Ý»¾Ð‹/C÷z9 õ-L÷Öµb>\œîÅ77AæòѽÁ¶øáæ~&ä¸h ·†ŽsŸ‡AÇ©ÿ'BÇmØq«ÛXp ÀÇéy¾?¹šø<Ÿ- ,'>%6×"sÌ\¸-Œ?—f.¥Kõ?Î Ì\Ö[ð&¯ü s©s‹έÑ䜾­ÑäÔˆ¬ÑäÖhrC“ÓR´´lWJã¢'9p“XIún’¾•¤æ&©%I8ug&îu.rè€o¨5·(5O¢3äÄèX ¹n':H¾kO¯ÕEáü~¼>*BÍ M³˜žäï¾ö7,~³³‰š»™¢Ü€‚/ìô @þêæÍ !;t¼ A âÃ1_ú‰|!ø0™ª?ÁƒpÀÌ/îd%ëqÇè’Y*ÄÛ³0¤ ^‘¸d¸¡Ä(N…õË -èñT â > =n“Â8ƒV“lˆ(¢ë·!¹whí‡=zëèÀñ£72Ć„ü L¡&8öÏLì6-2N‡KÔ{ Æ´{ #y³ê±›®Y^ÁvƒêF‹(SÀQ ‡À1ˆþ±Y±É%Ö&$7Ó-3­ÈÝ@w ù!/PdTð7r¹Æ‰üÞq"“ެQ"¿_”H}–Ö‘kŒÈ2F¤ ¤¾ˆŒÖ‘‘û¬"×‘ß ž5F䉹»F¤æÍvq‰)¨2h°mB óÕ!F²!Â*#sÃE!ö2¥ø<0nßb¤jB‡ /,üɈxÌGÄc™JÊH³”NRû6£úë1ØÊ6¶Ü³ÍO {)÷Qöq¢XÛTÕÌ „La($3p0æÚ®H&Bd> Ó@´ ”b#QºØÏ/²”ñˆ{¢¬4ÎÍJìYÌø aá*{&M4ŸKf&’ P’ÿɯ»q¬DraÉ]»z_á÷ã½G°ª7¡²@ú² d^[\-U%IU‰2å¼i¨¨‘qìü—]N*Pê‚‘šƒ¹\£¤®QR%uçÇEIÝÉFIÝÍ@I5TiJ–üÔO ú ü×Ϲþke÷ÅÿñIž5þëOýhø¯´ú³ÖÿÎóx×YÿÛ;ëõÿ$àLü×> 5…È®“ ‚™­  ºÏ<8Þ}™ÿíx1[× ¬Ä<ùAXå,HÆ(êjC޶ÄZõØtÁT} ¨O uÊH§ è”qN—‚9Å?ÓàGûO>Š$’‚-ŠÅ08ƒ[‚?÷`xE,d<¸>¿1ùµ´ˆ8‹ü+-b Þ"Á-.Œµˆe$p‹¹°y vE¢Za)êbO!]3úŒ®‚>ÔMÌ`î?f„ñåae¸Ihmùc¨ªy£å,E5ñ³ÖT"ƒPKïoé|Ѧb[‚F›­MÞÔtˆYùs:Âì]ÒÍ,¼I€eI¼ÉкÉ=™±êØâá(”K72×Þ° x6‰ÎöàlÒŽAZEó6Ôº2Û? nMtº–·Ó~¨µGÅOû‡#’­1À¾ 0ÁB惴 @€)Ĭ̽šÏJ nno†ˆE1Îøƒ ;õ+WŒ7»Q–¿Î×.Lª`gF³ dÓÁ&ýôF8S4í¼dg}D3ç£ÚDp ÆÎ焲ƒa#¶A?Œ`޶Ä/èBn¸²ËÁ8£©x(bCœ5Rñºt„3ଳ5ðÍ::5¤ŠÌ}=€:?98nU㷥÷éèmxÛÙ¥fñqJ€Yz ‡7. êEh»‚1,¥ Œ™u˜=*XUŸ*têâÛ‘¹sï+C‡ÖÑ ¢ìè˜RY@R¿d ßýÊÖÖ¥ï -g°œÖÔÜê> >‰It Q³|™5Ç“?ÑY5gDÍé2Ѓ[Ãæ0ô’ðú¹šM¯£nïè ¿÷C}1@_Vù"à[@|Ir<ïÅôBÿðŸ(s$O¯°Tsïmï ÙN‘gzñ[4ä %Ü{„^ÉDo‰Ž÷à¿ÔÐc¼(.Ä“|nK¸&馎‡\>'ÏtñA•ìŸ6›U6:r‹ù®0]`ɯ1]ì^,ŠéR­ÕWëÍêQ™ñ]°­A”íâ+ÝGòµnœ«D~MFV‰˜½} ø»@UðÈíÒOÔvñ›wVWŽK³(,M>TšEAi–ĤY’fQDš|€4‹âÑ, GD£Q)ÐP…m3!ÇÒ(¨ÃcàÉ R2@CÜ“@C<¹AC^ºyûdˆ†’ â ^$í5¸l´{Y09¬ÑBVŒB÷—¤‹Lª ¡Ã÷T, ½Í`£a`Ö·h!ÙâÛäGùÈ`>Ì>ÂÜš´_'_–n9É\œö[¥ÅáFÌ‚ø•âM¬Jü0#TI¤Ñí¡X4>P‹· Œ*’T”Çaĵ,ð 1ð £….<ÐÃ@)úQ^PŠB@ãX*EÒQËhu!Ä >+©oµ5þÄB’ÕâgÅŸz{<ÌGó)JùL¸g}k¢"Ö8O†CÁǶˆñ)¬H§S˜dö‚³ ÀÃÎth™ ´xž…0Îýöh>0‹‡bY¸POˆdáY,‡c!l¦G±ðoCš:ñ@W ͆ÿ¯d››tgC‡û/Ÿ¦c©íÝrý¥5ì ÃL<ù"8þ¶…¸9ÊÆÆhTNÑé1é±ú˳f•ûvAŸÙzÚÔû8xAß™‡²×X±a*ñÖ}볩 fG6`Gè°b5MD0ý“¡<3FŸ,Â‰Ë PŒoÂLßú€wÁÄ“2 ÈË ˆ$e}ÛH%¸J©•I³ƒñ qL)doõúÚ'äY{f¼s†ÈHܰ[ådNrvž9ãëÁ™8èï%«Bî±RÎË,+ì^ áãJjÙ§—EÞB¼ 'AºRü‚-*ŠBŠ„¿ûù`<˜\l—¾Àè`á\#1É–‰1¥ËêТ€‹¿ÚìñŒ¤ó÷ñžÏûAAxøÛ¯óå¸È™d&) S+Ö:î †;Á fØ1"ÒÛ*GËÑ/Þž¡à¹ÞÙô…Bš*[ïQ%½GFËß_K²ÄJ ';Ûžùq€|SöÕÁADrñsjˆ^,M.»K’KÇ%—ÝU“Ë‹¥Èåy¹tLréxÈåy '/r’‹µðT£+ØŒÐRl0»÷"xd ‚roø°6²‹Î‡@¼Ü¶!EÖÆ`è¯!þA‰ÿðõQ\À—ÀØ]û?ѳÆø©ÿáqVÖúþ|g'vð_v*ëõÿ¯vÿXÃZµQmíÙòD+7b”Cd£êp.p7PoG|V…âŒ?·O†®Ïp 'ø£¶¢H¢H¡É”zŒdÉt›f7B…d,=f¦Él{l@ƒ8³Þšcák¶ÆÓ$&HW!q#“/ýBTEÇÈÿÂk|X ºÆÓ€k¼×ÊÝR0ã¤õMbåª0G׸¼i $ãÜ’|‹¡tÍ<Yè ˜B²–‚›¹ìàŸÅr*¨®Œym×Z`2-rIY%HÅÙZ&qå1¾%Y”$‰yËñ!zxÖjüH´%ÛDë$âÈC›¤ÃŒ„qF¨aKÁŒ%¦ð– âѽu JyÍÅö‚#q>”¦µÃKÃiÏBÿ¸ >òfÂN¿HÙ £;´á>Ú˜M¼#ßL;AˆR<¯kø)O‚4Ié '½=iw›ºô%¶€¶ÈG­`vžæÚBx£MvÈ-a¬DþÃS“ å™”¹•ÃäDïƒ ´ÇGêðvtQ$ÏE½ˆd'ÆÂ5–5LF#sƒÄÔe·r]&¯ÉCì˧lË©d…¬°4üÞòt–4:z"»/HYŽ#qêG›oYôýÄZHÁ*ì3û§FÝQðoÐÍFŠ(¿~æ| Wõ*RÅí`4Ñ}ÅÆ@‹äÉðA/‡L"D¢‰-ùò_‘¸„Íå+väá°µŸh™y©™ó2ââõMŒqL&¶*ËNÌO^¤ïºzA‹€¹ØEßzQf^ôG/’Ó”Y£—AYb dô}”ñb¡©AZ+ÐG ôNÑä—È £Ðá#L`@ÑÇtâÀÑT £2]÷·y#L¾B«GÑ¿£¿ìÞüEæxNA½›12#vfð"¼áŠ4;&§Ðn×M9'$½Òºæ1Ü*£±b´È3su­Å)¼ðê@½áÈÖ;» d½/š /Õ÷Ñüz€à“û/ØÚŒù;ó×Îߨ…Âh.º²~7-½F©n5¥Ö†¨ÌʾFl "6w‹ñ Ó¤Å?1R&Šn‘—ŸßŠ @f$º„CíªÉÒKÁîXYqÖ’¡Æä“_‹j­dò=Ý&ž}o£’²é Û“àê¬yê’& ‹ì±è WK­é»‚ÄŒ¾+LÌ$èŸ]Θ˜ƒ &&{Ém¹µ„01÷tLÌûÕ XcüÉ xYSš³äbI34ãb|w‰\m eMÃW—¹¼AJá‚v ,$ÈeâgïùºÍºPت®GcÔì‘|Ï5£àÝkÒ«¹ü=ô¾Äb`'»£6F‘Ø5øAâ0 ÑEšâ‹¼D¢÷–­±x>]±ék ‰94 §a ’®å”JÎd°Ä5ËÜbá+1Íï7Ь„0PúP{:7` èåîVoÅ[L%¬ÓNçЄgÑÑÜz$k=Á¹šM¿ë%hí|z‡v5Bžô XhÓåqj.peÝ~ n×7Ó…æ€9È-ݾ€† p, È®C- jDáKY¼,F¿¿!œœ’kFbˆQ#Œ²êÅÌNJÈ+˜²±Û5Õ¯¤‰,ë7 £"3ýþ{ëljÔïµF§4ÃúŽ$Ë2½™Wî)­è0‚DR0èÀ¢gsƒ¢Ç„ÂÝ0°p7V†»!°m7€ÃÕó< n9j½Ç÷áR@ZDáÀÏñÙŸmt@ݲ…©kÃ鶤ã|¸m:f.þ í±BÏše+¼Yo%a\×8¹Ü¼GÇÉíu[U/7e H?©À5nî7w›»ÆÍ‚¸¹ü’Ž0¼¥‰fKÇ Jo¿i'„| %¹…; eÖ“¸I¬$}7IßJRs“vâ#bÊeAŒ’g4Ÿ‘^h[³=`5&Å0„3€‡ á<Àð螘FꟘ¯äïšöw?ÁÕ!e»ve(ǤâÜ(ǤâÜ(Ç¿¹yˆrìÁk~ ʱƒ¤Ê¿F9þAPŽuˆY»‚9pó Ÿ‰A7vÐlTÞJÉÛkÝ·£rîZ9Y‹-Aß*2ŠBÑz¡‹L€ ÊCïžq±ßá7•0s¼4(ôjªJ†v¦$wjI>´hP”h·1NR n4·%ˆ-¦ßƒ„"Ú¬<TýP0é?˜t{ ½†–„´†þÉ࣠_- MZ׉,A¸è®vw¥Jµñy(´¼ã¤âB[°¾ãJ:ï›”ü- )‡ÙdO°É-öo |N=+ÇÞÚõSJ·Î’nÔSLÿOÊÁ¯óÙÆ “½I2û¼Z¸×Æ"óõº–ÙëZ¾^›(Tèu-³×L Ž®rå€'®—˜q{^cƒ³·Édt;˜Ý{ÔÁ?-"¸Ü¤ûÒ£°Æÿ§a‚óñÄèß.ÍøðR³6¦5Zø?-|þàÂ3´à‡›;ù÷ þÓ‡ÿ¶p8ûÒ Ko= Ü..‡óÑLùl°’ûU*’xd˜?FʆÇIÌjóô’ù¾C ¤7‰°S]]¸k9ki£â@·æáxèQÊ!o¼¡¢G)Àè>*°³4Ü,®,6a½ãEX/?.‹–æ(ìuLO³‚q±š3ÑÒ£ÀôÈY@Ƙ¤Œ‘RÇOí(ñM0ñ›8žz1°”Íb—VJq‹ÜÒYƒƒÜ{bŸ „Ë‘È#8àðJvËþé6ï_¸+.Z^pg+Ý•£³Òg˜%FâdèQdB{\¥ùÛëÐ…n¹¥Ð@œQIZ¤" ÓÆ#ì×d”L{ÄßÍÙŠ:!¶ ¥‚–ÙÙêÌl¸©ÌÍÖsâµ5 "àÛhAŽá–µ†h½ àì’MyZ> k ´¼cºèk·<(ò"oó²ÀËià.¬#&yãI…i6|í×TRÙ:¥ÈÚSh/!Vý¸¦%?šøÂÙHXSÒÌY÷µèç&ì.gm6"eÊ–Ãwãádz¥G:JÆ6ˆÄÒbù‘ÍV‰¶XOµõŒ"…ÄXgùÚ(š£š›¸<âñbº„ZÇH‹@°tü‚ñ/ò^æBÇ@Y˜8‘/lÌÁVö Ì¥R¿7jA(dŒB÷_$¶EJä‡(_˜^Ï·}-(Ȉ·'’Å®¯Ý¯ÀêIPºkÒø¾IÚŒúcU@÷]bÊ_,3åžø)Ñ¢E¦ü×§üeÚ”çˆFñÒ×î_S§\Û<~°¸¿¥Æ°lRâN|XžXüÑã?|_ÃøÏŸÇ;»ðþ%ÇØYã¿?ɳŽÿðS?Iü‡ÇZýY뿲½Çöú¯Äëø/Oòðj7ã?5š<¤áØn»B¶ýrô¡ýY6¢)¤HÌŒ¨°³ß1 °êÍl4†ûÐíR¤¹ý1ø¨ìH < Ìaµ=ž>ÁèYAôÀѾ ¢¤Ìø‘öÏÃÙÁ?ܾßEG°*ç›ÍÁìïéç¸Þ!ŒÔõôr8Ž ¾ˆ4p>^¿2Ÿd‡ŽÊôÿ÷ÿ¢{øç¿+bœÿ5¼ 0–(ºDƒÒ×h#ª•î-Y~ô•Kc1c•¨oÂ! šBlj¬ÚÏmõ3Ì%½ÂØ#¸µÉÒ= L/à>XŠÚD?æþÓÜh Ð9«=p&þˆ—¿bòWh]Ød »vÊÕOÃùë!í¡@ö$ÛÐÙ`„FìC8lI¬ˆ "ÌLvâžÌGó[ ”²t×–xøw“Ñî†8Cw”ï+ãi(›ÿ ¡%‘û¹Lr_8PPÀôü–+fyéÀPaŸt –&ö°Ñ’ ¸]'ë*ôþ¤TèqÁ×èK¯dA)¶ÅTŸÌàE¯³2Û,JèÝy4GdHÑ(D,ÚÂnDiX R*$‡!}ŒÑÚQ¸$¾_†.]4Ë #\´*ÎÁ|Љw4ù\¨K…ËM Ö"Q²‹aS,gŠ.‡“©D‹ánÆù·* -?'¬µêC¡„†àà[+D5Öº¹hᜥb ånÓº¡$÷—ÕŽnºãfó!hÜÍÐgcC‰LÌ\…¥D&R77¤$QFl::3ã%èÚz)ø¾Éµ8eˆj;+@ÊÖš±µJÈìvÖàµ# ‹Í3x°¼igm»ã8V Ip,Põz µBüªUno"zK»h"d‹Ð5¡í°òÔ‚Ë$8lŒE<8Ÿ~f-O¡µÙ.Þ~ÂÆH½ѽç²þÁÍð¦£K©°‚¬b;™ÑÚVk{Ñ áŸïKhDBìüDŽ’ŽVžUþY¦.‡p²M螺äkràôòý3—.©hNÿ$="–8çzWĶÿs°µ6€§1!Õè„j¿»ÖÝ÷4Pµæ€X}Å ,ÿ(µjs-É‚ñR0Á\ §?ôùSq‘ä“`2tN%dÍ!þÙ9Y£¹ÑÜ– 3hauˆa¯"ÿA) U;8'Ó‹uZe —™JcKæ¬p•ˆ(•[FÂ=86pù’…ÿ=j¾›ÅZ%Hú‚pÈe ‚JEtÿ|z{;½Æ³.F0eü‡Î,8‡†[³²ž3d*8…9B¡R‡Ì!·ý~ó{Ôò ›g”ÜbÌa3xÝåŸ,Ф؈S„°m¿o÷pó~×Dc*^†­ÿCíX­‚ÿì¤4¾UÛ…$>ÑÅâ0;{ïÛÒŽÞì¸oð½N¯ÓU˜8bwO`,ƒ…“vãi.¿<- W? œ˜oÃ3à^,(ŒEÓ!,ŒV›=­IPØV*á°ºE“Ó“…O“ ]sƒ\´µ¼ô7ìˆùÑ.”ð€Qä”P`–é¬2Óà´qTè‹ðRuÀxåf€À’&d˜·øf™¸#mÎeÖŠ›ø®\Yw쬶‡)•Þ–ª´Ïubœ¢fYý\+aàJ|×# A/®` ¯à®€B,x‹“ÿä¯T8…·„(‘¨yÞl´7[ç¹ùò„­ÆŽaÙxaµYg¾.h¦±"·p×Kl9¥­9:J#\Ûð ln„ŒïäûV›’¼æf«­"ssÂ/)3}b$ss‰Û&Ê6Qž°IòÛyIb˜¦Kš¡Ë885idTsb „ò:„ÊÉñPÆ-TÜR…£Ñ´ÆÉ7$ûåH;CÊ ef& ˜„‚•Ÿ9DéR„º$ˆÒ=îÕÐA¼LßW¬•'°{† Pd´ ó§HLäm55º ß'DA8›Í¯ß‘I™éWô””’|8¿R.ªŒj·:ò1‘ÚþÌÓÏØp"Ÿ¥+wùËW´$&U—ÖÒ OrwxÝÇÄEÉ¢Ù[ØhãÑ6½rþ”&Ô{ÒŽ.ÖÌ¥,Š¿Ä²/Ñy¶œ’6sÒÓ·Ù/8“Òc¹Én‡5¢5kÜ=³duYz-îs÷MšÒnäóû9°Ÿ¯pÿ)}¥ÖäÕôÏ[˜¼zòb'ójª3ß>%[ž†*ùhHí-{Ó›ûhå+B¤Õä${Œjƒ‹¿¿ f—¶ßÄ=Z[R$å{wWêœdîJmF÷i{Ç«VH6¢Í¶"tÏÎùLeîöBÛ˜a hpPY›š1+®½ ð)k{AÓþïÓìòÚÿÅ/ã/+ØÞÐþ/Ž×ö?Oò¬íÿ~ê'±ÿ{¬ÕŸiÿooïÚë?~¹¶ÿ}’‡W»iÿGp (Â>)ÓÇYVCš,µ±…œaÂ3Õ*éÆ}#ÀÊ÷maÀ™ÏC2!©qç³æó÷kƒœ"GÆAçá·­ÿptih}RßÕ˜þ¸št£¿³·c!‹? ´hF˜&8¹¤""‹öÅ×-¿jEõ„XŽ"ìËü°Bó²aÔG&zÂÐPXO°_Ú‘-Vë1Ï-c-~‰Ðò'ÊÁ*]v8rI©VúJêlU×íýÍè‚¢RSlDGy®ÇÛÁL²ÚÍZai×°DHn9¢_'N\TÍÆN³¯À_{¨YNÀo1nÏÝøv0NïæÐF9cUòÖÇ_ÔõV†nb)Yé ºþVvXMÈœ±¹dèâ =QX # þ‘ðʦЪ'1Ó£ðD0Rˆ…y‰w% çmé>™Œ›2YÈTé« k$±ãºÃø%jI®É°ͦдx„†Š4ÿ³©ˆOÊ4tÏá×GÔís&)4Èüz3]Œnç…8á9Í,¡[œ… M°¤«IšÅ½³ØUªÂ«ÌW ^ ÑäI\:)ÂpYŒ ðëY^˜ék¾ô=;}ý S ‹è(Rþî“°Ö4<¼ø8BÅš²Ju \X›™Nˆ¼šQeBRHÚ˜£ÄFíÝ%#´*EW{ÁaAQŸ„Pù䵕¦iNÈœBÁ|©S8d†õ°×*Á]ΣÚ®®OÕQ°àÄBS«1¶1H_'¥´Çê…$QÿDÐVn@+ÂpeKëóplÆÍѼ›õ;£?þN¨îÂêsû5¾z£zñf›_½‘s¸”Iq2¤ÔŒS-¦†&NÍ–×dÐc+‰›ÍÊ4ËT¢ ½BN^ùËlt{ »4Ù %%z8ïž¡B1÷†³éª­“Wižœg"B\MÀ`ÙkÄ&!¡¸‚Æž1#¡¡L‹Ï‡ã鯿‘Ó…ÓãÓÙ „OÓ“ð˜Âºá3ù G¦ö±¸h•)9i½”t6$h:Nõ½SÉ_“ðȈÇí4Q?ŒŠZFV­ºÖ35?'+˜³V,´ú¢YýÙkù66âbö³Å§ò,s*ÏR¦ò,N•³à¬œ…fåÌ7+ÈÇæ˜•3cVÎV0+gÖ¬œ³rfÍÊ™V¾#\,(oðYºUÊ+¥q‡Ôξ{ ›Ïïù N&ÝÎ'Æ–¢³Èx4N÷¿›DÿÍf|ùúobà€58ãœjú å5¦ðOáxú ¸Ž·Ó›¿ÑÍ£ 'Ñ\îc+0]Î`”ô©{|Šß`4dû™f/42}p$Ì”T¥É²„È«.‹Ç{ï˳óþ¥°sƒ¦ #Ät4ÖÌ\ 8¸ÕFµÓ;Ò"8vÞ÷RÂ/.j äpÌ1 —1QÿhŽ ½¼Q&&/ú®qâfP3®™\Ø‘ïd¡þÈw\¨0A/Ó±ø´Ê¬/Q¦nêy@:Õ†î,4tgá¡; ÝYÆÐ…‡î,ÔͳŒ¡; ]j™)Cwº ñqbefY“…MHz;7T5eÁPyËŽÝ0\ú8z[(‡ê.‡—.Â7ÈÏ7àï>ü]Ö“ Nw"cÓqðCþîEìÌPhLwfw–QÜŽIaµä·`}ÛÙ϶`5)Xƒï—ÂáÅxËØÙœlí,ƒ OúžišizÙY9§Ùlå´°…5§XØžÁMƒEpµ¼nkºõ[e›x¦mê–y ˜xM©6\ȵZR0+á˜ÊE&¢ZÅc<'Põ…œMoÛ®j›T~Bû«º(/¤’žN4³‚Få–s÷vxƒ¾j¤â6ÌŠVïTð½‹U Ô#,Ê0L‹ÃØ…$+õÛL%æ8‚䑪æ8Áôß”Â$:5XuTÃãnµ84šdVÏ*VÚôÌz’äÔ|o·¹ºÊ&g«ŒAÞL3j¤'!(#¹¯BÞíO"VPo ©PÚcý'i>™GJ\]«×Ö)?DTETR€jô@ÒUMÐý¢,£û9èÊ3\”eÕ`Õá”—EYl“`gÕótŠ‘DR³KªùJ õÎO!gYrfWz–Öüg_Û5ö5®!húÜÚôqýУÛŽçÃïÿñåÚþëIžµýçOý$öŸµú³ñ_Vœõ_©<_¯ÿ§x×bØÂU¼ ]kÏ= ¹Æüyð÷ dxº€H™ß%@ÿ‘ 8-ÂÆ£ÛûM¼Ð„)@΢fþ•yx4-óABÖØ!͇ýØdm¾‰ýµÍ_/øW(Ä"šöQ…ð…íDH¥,PHG©áÕ¨ÍxŒ–‚3 2‹!uM]'{©bÍÌ£ád~7ÓýàäHëºOd™G-ÚcçÄ‹ƒ$6¿@yUÚ#úå¶£N±t‚ ¼J›½’kJ³é[wÐ5dÐÁ¦n†µ0R¢oÐ0ó2¬¼†3ô´Ê$œDƒ¨b”f÷b¬”4PÃ0žnf¤Tæz9:b…5¡E¦¹M (ÞcÀ6dG”6œÆ“×jÈÅ6$@Ãv™7_™õ؆m[0 ùЂm9ŠR™{C(›{fïfɪ! D§až/:‚–¶†'2.ïÎ펜dAœNä\mvbꌬð§Z1ì gV~ÖËÚ[¢1¸¹¿ì8ú‡ÄÑ]D“QX¦+¨0ï¼Õ|„…½I3ÒC` e*!uL@ͪ Òr ð-=4%ûX¥…©¹g‘¹ƒO¤>´Íññô"@XÔ\¨­¡øàI/5#ñ@­ñþX ‘ÚL`Cƒ͇~ùUû~Í ~Ùs yÛêè Ô¼”#÷©s•&KšuRpþ -'ÁCl9uû¿ÿÌ®¾û¿Ýݵýϓͷ}saî 0Ì’õrÌJ t‹YÒ–®mfd3ë7š5RÃù;ÚŒ±–mNÎUƯñ/8”'lÎ y`<¦¼«¡^±ÊoË£¢º‘s;&,Óñ^Ó›2Ää‰Á×!ÒB!ÀÒ:¢¥EÙ0 V¸cm³Œe —p°ŒdyjS{ö°©=Ë=µ7KMíyxjÏ—ŸÚ›Í¿7p–nôé¥ÕÃKüŽà›fâ( LRN’–åtŸ‹é®ÙÓ}–sº;'útŸ-5Ýʃaå¦Í`eìྻa¯ŸÇªM£p„m°[Ñ÷oú»TìíQ·ÛžL‹ÇÛXn&¶Q* ¶~%h†˜«KjSM›— (¿¨ió÷6þW'¯´KU¹y˜=1ÓDÕd|‚"“å#Z£z„£–Üë•óÛ†’švËTméx)æŽKÇZôJØžÔlÃÌ|†‹¼ɰ¿%,ýöfM\f³ýf&¶-¢ïRbëRHUÒ#ÌtkPÉú´¥ÛÏèBoëŒÈ®M4HÂ5‚)]š-÷èö?³ÿ¬í‚Ϫÿ_ÛÿüÜObÿóX«?‡ýÏî®kÿ³Žÿü$¯vÓþ‡sfñ[kûŸµýÏ£ÛÿÁ…ì²r fHÙÿØ€9óŸ£GÑS“R6ÿÁܺô>·ùOSÄÖ=ÛÒ¶§™XÎ4£k)„Ð¦ßø‡­~†?h9Ó!Ë™¥}Ú¢–iD–3¿åŒi%DÖ-ÛH7uj#Ô€‘@úù¥š:‘¹PàiÓ „섌¾ôü¦N0ÿñá3d™ÿøÈ¾ZbãŸù|‡CÖ)±åO±tf‰j6þAK¢|æ?Zæ<&@‚Ŷ"°4Ó@ç‘Þ¾ ›¶ç,f Q-įšeØ_GÌ´…hš&@x˜m !¶´ [ØäòÚB43@à:KÚB„¬‰<¶'«¶…xT¸ºˆÿéŸmD´¨½εs F…^Ã9>Vl82û1m}†sÙ¤þ4¶>í%m}ÚOKßk[Ÿoo듆å¹i,nëãõ_°‘ƒf곆Ç{ x<=aèóæ2ó¹.O¾#3Ÿ‰°™è¶ Ëd’e R-\ [‰m ò`ÓÓd9Óµ\ŸÞôçfÉé~ÓŸ «®›€UWßZV]6ó1­º–3óQV]k3ÛÌgõ?‘™Ob›×ÌG³ jû3ùÌ|ÒaÚ¾¥™Ï¢†f;ŽòúD8…Ùf>BSóôf>L–gæã‚Zâ­WRœï·Hiz4X4óaºÄL‘ÑÃf>¼5üN¯FWMífK¡áxÕpA܃í|[¹"u'~«¶D÷„æ@0õks œnÿ3ÿ|ùÝØÿ<_ã<ͳ¶ÿù©ŸÄþç±Vfü¿ç/vw\ûŸuüÏ'yxµ›ö?Ýþ~!:~_;-ã¿}ú÷D»à ®Çôñ‚ãÀ“¿Úh¿Åt=ø÷sÁ?}üìËxö™–DÁ1¤­c æ±+Ú{[íT÷ŒÈ<½É„§Ü¼É‰ç_³CÚ?³JSº„=’¯ªÄŽHÀ)耇(K˜&!y‰?;vÖ…ÌN Ü¡t+§Ó÷˜²ô ÜóR!¼ý,¸ÄþéÖ ï!­I„ýrˆ)§sŠÓ0oQX”$Ú )s“×$¢¹¶÷i"u*`´ ßKhŠÔÁ>ÁÓ'÷~S‘ota .j Z=³”]Ã9‘Acx½Ûh@¤D»º^Ü¢Eë‰!¤Œ)âˆðkT¨BíåüSÄ?X¥Ñá%\€I‰Jèö7¬(Åbk„2t»_¡Ö6“ÔPñ×IÍé¿T{КcÀ· œŽÇÓ/¨ŸœßÎî.nïfÃ9êAæ7Ü»ñ½â:^_ßm6Èþ£ì±âÏ;(íÝ>J„øw¸ž£µ“'Š da˱=÷-WJo·M”ä´Z+T«È×uKmg–Ù¢z#RcŠ¢Ý@Ñï„á–†ee—ÑI8]¥bœ¬s‘³aŽ b;x·ÿ-ØnÊê˜G©"ìªä´cpj‘\ü¢¥Þ+•*ÑFÔÅ7Q] ö:šlš<ãW¯L=fÓ!±Þ²¦þ÷”™‡ip}l6ÝéW“/†Ã7Ë’’$aóVÅs®Jꊒœº(£œ}xêž4…¨r ÒHk×[–L$†ŠSdÿìx«W݈‚|‰µþD:ÉíìDKÒ\sŠkfÓ[AÆ3ÀÎ]âÃ3WÑž°>ÝÙIÒ%CIÀ£ 4*0Tèw£¢à^¢"NΪ½rÔ…ó–+DÍ0n”ã{ÛHÊBjV›hrd¤›W&v¸úî.wr: ÈÒÏQŽˆ˜j\ÉÉt{J/MV•§¥ˆøu¿R,–ð4Ü ˆ@?H¡6Ý~š`‡ÇÒÐmgÒHèáx>Åâ(Ú1êž0Ý^×:í“<[R©| ³[NJ½ô|ˆZ*R_‘-fƒ>+âp|sIääàP c@ ÛãÁõùå Õˆ#ˆ¾n‰™›O¯1jó-p.x–C}M´œÂŠ5žJ7òAXEïÇÌ‹VDý,ŽÁ†PE}:Õq¦l‘…?R0HÃ>—8Àrþïÿ•Gþ³g[LøØBàÜ©3¤U„qæÀeÈÑ SìÊxp{Ë,%ÃXžƒ¿‘5À—.ñB“óð.0ѱ´@;,ïKÞ³_èÌDBí(qnš%.²ý”MØö¨ûA)6m$ž>{á­F·a:Å!•áÛ^[Z”ýÖò†|õö=õö3ëí‡ë=ÉWޓÌzOõþC¢O?JøiÓ¢ú,Ôc’ÓHy'eËöŽ݈Ñ]Ý ;GËm~wÎÆSz—ÃùÅltÎ[¸˜¶hïàÆkJÚż”|S{îªi‰í1¾.£s… CÙ1Jé‡r Ⱥì’Í”žÆùÛ˜ñÖ’ñÒCszÆ x½ÅÄoeÛ£š¶—©/„â"#›åNí’UF;¤[1û$z‚½ŒØvV”bìœRŽW(2²¼|ˆE¦w_›“WXÖȺT»å"kK—º7À¯zÊVï!A×H \¯´‹›¿ôf‹–œ¿(m:ü•5‹T“`þ“ÖÅVßüÕ î¬¦K†¸Í4þ&ŠA[h)is¬ib‰´d$è—‘3œ €éÐì$- s4Æ%Ⴈžâ´›-h=c[˼¶ÖZy}»¼~vyŽ-¶VÞ‰]ÞIvyŽ­v†íø®>Ãܱçΰ5a§_Àv<Þv3ç6‘…+fŽyT á¸x—ÚOWúN}U ½Km¡kß¾âx¢ <‘!\ƒ´¤Æë–íÝþ~¶e{8íálz>œŒîð2»6› ˆZœ´·£d‚6I¨=V®ÒÀŠ9|ÙŒš/ƒij-3Ȧ¿r=¸ø„ óÝ#ẎœÌÝMÂ-I9qK BBc W”¬ºÊ;h÷‡ö¶e ’M O-=Iwp5D®]“To%ÌçKô·8©b jKÒ+w•¶–¾æ¤·c©Ãá0€3!±”m;Ã\†i+Ä'3ÛK…,ß„M['hÇïÙ¬H¸èpíI…Ûí—© øW"Öü—š&«Ït¦öÙ6ú ÉÕy’<¦á.3_äô¶‹÷BfquË(¶É¡{(½½}ž¢Ãà%Qåh­Fìæ^ˆ5á~ ¬ IA›Ü:1O‡óècÕ±©Uïb9yZÌbäðöÐÕ£Q&Sùjÿ}TÙ¦ûkÌœ ®ÿë¢b!të#²RêW7ÃsëˆöÉ/È¢' “ ¤×÷-¨2ÞŽŽÉ¡sCUkL°“zöc={Äû'¦Á0ÒT•'$xÒ®cûwÑ:,Áx•ìÑ1)7÷Þ·zõÖ©ך6n(7֤ÇXw18FRJ‡2;i¾Gš¤1CnrhÉUï`ÂU×2ÝW`?ûŠéÿqóÝø¼Xã¿>ͳöÿø©ÝÿãqV¦ÿÇËÝŠëÿñbÿú$8Ÿ-ÿ…Ø_ÇÎ ¦2Áá" îH¥éTV{¾?çÎâ&4á‘®­ÚAä)¥Å)•…a H}+ªßÒ!wŽÌ7c˜’• àô{ä|’`gß9pŽ·Ã÷…Œš˜“¦†7Ú;;è¼/£NjðÚp­i²°'c¿Ò­íƒí²øL•a¡”'¶òòÙàüf…‡ï;töË ›‡‡¡·ZãÀÑßjŒüºË 'Xh²2'ÜCk?øl7{ôÙ=è¥MÏië¨ÒaZù‰®Ì\°ZëÂõ©Þ¬%`±eyÖ WVƒ¾Â}Æ–Pzœ«XxW£ÉÈ*’ò¢)¨áïUÂ?m£Ÿ¨ñâ·eŒ³anÕÒ‘ðr[½ÎéAb´¶\Øþ1Þѱ̰—|ˆý£Ç>0¿ù£Çvrmþ˜Çü±½¨ù#0^^˜ĉ-¡uQ¿Tˆºq ÿyÀ~R$äéü5 ;*}$XÙÂ94ñ¶mX¤pjÛNmÝÑ4v\…c¤0«ˆ \-Ù6„t6Ô ntÖ-ûÌ}¿ÈÄ‘Ž$[ZCÛÏ {228ccGmD “â¨Èÿ M¹HjQ4ŽN,ºVbø«Ïn Kc*t¤©SȬŽÄàbëû ³Axý¤ ÚPÁñ twx7³)+Zö v?X[lw‰ŒÑb«ù²Ì=´Ñ{Ö˜~ΰPÄ>o‘z¯¢À”k¤¤ßÃìƒU³|–¢ « z¢ÙvUÕœß6†ûÝmpk:aï²µ4ºmFqR;¼ÛáÉ>fK¾FòžÞc"};|»ã˜Öí: BgCOÿm6h,Í)BÅ)ºãɱÕýå.æLwxKÁJêD#bMàš:ÑÖT¨)-£!À…Kƒw¬É9 \w†Œ¡9€¡á]¸…»hÃÓ^¹¶ã ¸ú»tævŽø[25a³}ü˜{ЙŽK®Q*0»~hò[ šœw¨F–Q5GîcêΘî¤ÍbŽí6/ÚìVÒì´,Ò@uZn-ÍÈ»:C´ˆÓ†+ÃZr1¨Ì°‚_ðênÁÒnð*6MZ!És¹È7!Ù†Lf.ö(°ÞŸoËvjkü…¹ ”ü»â3Ok“ï# ÷¸®=WÙd¥*âÕª’ØUâÙ{9ÂŒ@yK à*Ž}A{ã˜A¸ˆ  p°¥vLÄãÎ7>ŽáeÂ1àè§q /Ó¹†¦˜oãPÏÁ7döÐSÕàwæ1ÿ«yÌs }Õ9è«ÖIùN,Óéò«qЛ ö«7Âd$®È˜Bøó¬F€Ïî„6Øjã9ù¬1¼Jß|V§ü‘’eªZT¬‚#X#žŒ óùù–Sa9Í\÷Mú¿¹êÙÊÍž™f~~¥¹KòÒ9–*ÙåàXNƒ 7×je•—ɳ˜êÛáåöŽt;3üƒU lÕú –¯olS!㜶8©ê+V ¢ íþ7ÆÕU³öGä%€l!Ðl3TѰŸ¨[öB¨è¹zº(>íçýfði»êÛ·³ù4,Þç½ËäÓš›ï¼Gw+¡)k¥@Q~Nþf÷4þ†7ç3Ïì çµsúXcáäà&˜¶’y2€Ö¬€ÏÀ6¿Ãf§­¼êC9jæŽÃㇳkM¬œN ãŠÎllòŽïœ~"mìrï|ä à8öpØ€(óHæ¹"<_,µ:Ý£G#¸œ\Z „òÍ3#ùùÎŽ„üN ¯ÊØ OJõ­t‡ˆŽNEEt­©}R›y›¦Ö§nø);¥Sòüù4¥”EIUïRÏn6[ï˜ö.ám›¹(lÇGa»¹(,Åߪ­çù¹Âiþ_·ÓÉwãÿµŽÿóDÏÚÿë§~”ÿ×£­þ¬õÇ/·cÇÿkçùzý?ÅëÝðÿêÁI ÷I¾w8'¸‹áýpÿîžõv½_–  H»Ÿ—§XûjÉV ¤IxYŒNÝQЪ µ%×P£à§÷xmÞŽ‡çÑöN9ê¿MTï‹ú{á¼Iž;äãÕR,S‹ŠæÝc)°R†oÖ¾ð¬ÚoÈ?NÕ•²¾UHàÑpŽqìeÀÄ$AÏ“ÁXš×ÁvxÉBÉÄŽ_³Ærng#‰ŸÄÙ¹›K°÷Æ©ug$~ ZÒëJ£ÿ‰jRüôí ‡ŒÈBÖÈé^-Ê`æ¾6c1N³5w lMŠ,¢_¢ƒÏ”ŒòÀpŠK e‹2]Dºdp<‚!þòiHvoØìx“@qÜñÉ>Èg4!{–û@ ™þŸ»ÑlxiÄ-xƒ˜8Xܳ÷èoÂõÙ®(u|% Q¯g1éì’IÃrB1ü9öfY)掛qÑ®¢0Á(é×wãÛÑÍx„vnGIÆ>C½ÞFt5›^ÛƒèÐ!£0ÄhRâ~”»¹Nc'‘Z"d½²qw¼Ó”‡6Ûö‹ð6[6ðôáãi·îj4›ßFó;h£êÊ‚U••ÜUV|UVÜ*çC$ép¸?zH0×<à7¯i‰£ßßD#ügRF7'øÛ¤Û/ƒ¹¹ún‡³‹O0[@#dÛ™hÓ·"ùcµÆ_÷s´ Žp¥ŽöFüZeÁvPÛhÿpk’ê°%h3­"WºÜÄòT©_E'+Ù Êúö#ºôõq¤ïà¶-·,¥.²›{RJ)d M›­»nOU¾£Gß_ çïæþ‹ÚÚ«õV¿Õ,*­ }å˜:z)êèU%£ÄÇBR ùwáÖËÜÛR@Æñ·5Ë~B›d/E Rú,’Ù¶XZ ódi`ü ób(¹•Ê –£wÕîÿ‡»Á4l ±„œ`·Ú?(D;Þ}·æÉpdvË‚e_¡5ñ¬š+0•„?ZÂ2 ÈöŠ­ƒ“-Ü+ukSæõaëLpͤqªÈË1ô‹™§þlûÙ ûQÇ>–v7ÌCë!ÓttySH¼*,l y7ºø¶õÛ»Ùw%¸…ÌG0m‰$ZlÓÚÒçA€)p›$S'ž Nýæ°@)ÞaIE¯ü4„6c¹_ *k󆳩¥óôÙ\Båûd=µ"ÑSß4"öØŠãÉAmvhcÂÆhá¾­øÈ_Ê¥P XzÐÊ&¤?|‘eÜT¹EÒf¬üÝOcê- ·Ñ«[j2Çü9§E ?×(6”ª±´UR‹ð ½2œ,©MË£ ÂNofƒ<©ÁøWzcƒÊV·ÍáÖ²@*Üf}Úá9zõÐd6°4(M›)Ò85›EÓöX\‡D8û¼’¶ËÅÌçú/’à‹ø'If²´U¸!­R[¥ëfWóo¨ÿ‰_Æ/^V*°- þgwg-ÿ}’g­ÿù©ŸDÿóX«?kýïl¿ŒŸÛ뿲ób½þŸâáÕnê:‡p6÷:ÕV— Ÿ:o»æqÜ8„ð¿ÓÃ|‡³´fÿ€ŸðÏáA§ƒ°Ðøoüµ('¯ ©ò}+àiM?I¬SuñMuA4Ç)×rR ”¿ŠV¬öñH0„vç0ù3˜Ÿß§´G‡–)Lf@ÚaM{V~ÕD õÚBš)Xz³HS³•'¹› Þ ôÔ|?¿’|n ôÏðp;šÅ _¤ñýÅtxu5Âø:·RzˆHk‰æŠµIb)ø—€i¢óéÝä’Õ%zx“èÍ$î€lYÅ\´€âèV_V2sÕoÕ[[÷C cUvD0Jú¥¨h¥ïQúR©—d)ôB‰÷Dâ·ZbÏ%¦¸z%®¼eiHfh\}"P|œÜr4Ún±dÔ&Ó‹qÑϨî+´æwç^UQuZ¨ô‚W =2u6ÞZ‡®å)u~‡Ëöéü>žkß?Zçg¢ûeÂúÁžå ‘µ'žÕ¥Â{*(䣹ð ?¸1! _ ú‡o¡›v ŽÔÌo\ºE©aù°‚aù°Å%¹Ã‚<•ŸÚ7¥’!KO!†Áppñ)éÛç!î0z) £6ô¯ÍÁ@.X{Lж†ø¢HÛÛÙ–çb:› !˜\ Ø%¬Jð´=!…¬ÖÞ8“>ð’ý8ÝÞ]*y¤ˆcèqy¿Á[CúµÉí+Â8ªÛޝ0½{F+ ËÚ2œÚŒ&8ã)¥ÌÄŸbØRCvCÆñõj[ð³c\™([K£KÓ+·„‡P9žN ƒ„‡ ý#¦Åï"«©^ Ó’  „»š_Ãý P•)ö8þs0¹WCL4Uãƒþzð7l’T.’ÅW8UäªYVå¾jÛw¥¥_4€l½‡A‡Äº„ƒ‰iŒ/‚KÓ±<‚’x–fÄ^a3ž¬ÌwEî%¡‰¼FÜ·7Ñó´[4{…ežeÃÚ ­ìÞ©F ðoÙżí¤6@Q;«0xh½Çûg†8¤UæÏ^xzöÞŸ¶zeòN’ú¿ÖY¸“75º½Î|âÿ«‡1Tè#Ê’‰ÆÙþéØVä¶z¨~ ì5¸jÛ@ÀçQ¯ùHÈj¤UklµÕ†¹ÍÞ6Öö!½!ÁØ`oâ7ïMþ¼k“ò-hnÂË/Apf3“9¤y‰Hëš—ÈL=´/Ñ^k"9+åÞ£Z¢ g‘žÅc³ÌÒмbOæ¹3+˜¶Ø¿t»+·ÑŒ]ÈÚˆÆÐkû’.Œ…ì9Ò– ³‡¨f0ÂOÍó2dÐß­±Lvëø¼`™£õk……Úìù²íy³©Âþ?{ïÚÜV®´‹í¤*•Êû=©|D¤ÊEÊZÔÍÞÞž )ÉJe‘”ìíS'§(Š¶Ö˜"5¼øòÖT~G~F~bú`XXR%¹jÆ’H Ðhî§_›Åk"3 ¤™@]'OبW–Äí`6Q(2Ò9ÿÞµ…qõêáí$˜w³òþ$ÜÛYoÜÛYiWC,ÙÇ¢µ¥Ñ6‡Õéûçø¾(Ê(: 9Gs räÈ€ç[±Bî´ð™V.bèZ+mŒF·b6œ†¼8ôöi½1j„òR’ h†tËl˜ÕH(áÕ ö›™‚Ëbt‹XÙ"£ ¼åo^ãh ­¹„Ê>%D‡µü¶ÏDx%I'Iš¾s´FÓþ ò"–íƒ6bÓ‰…Ë„75üx"Zä©ÀïuÔ|$ºÆN?¥ØÐ½œ¨kEüõ;n3øËå ïlÒW·BÄ3á‡u«Û)ÓN+HàûV苟Ž׹︻¸&ôSñ*0µ¢üûCDÀz_ìZÐ%4 'ó8…Н ÂL-Wáü["êVÝéV=_«Œ†RR/»M«—svÏbQÝ¥27s‘us¨uÚáÛ>,Ö4Ö4ç°f`qùÒÌË—ˆ)M—„Wph\ü~ÛÕ<Ë=ls̳íåͳó§4ÏYól{ióìüQçY<§ŠÜJóÙ$Éç‡nñÙ kRA»z¸& ´û¶àWÄ•ÜýùƒÚŸkÐN,omꬮà××”õÌn|‡¦È>çl‡RDš)Í£7ÈN®m}šZtûÍpD÷Œ(¨sП¦ä)¨„ÊVBIY‘DòÕÃeâ”'1«6Ým@o@ Ó|ãeÿ^OöqÐÂ,-¤;YD¹cùmp±Œæ-Ý”Nº¯åDÒtŠCû ‹O4çqÜŒ% {4©<ôÖ™k@×'×f»uÉ$ÞI8D™®¶)Qd)ˆ«× ôˆõ’&XøÖ¾»Dk2DNêÙôŽ#’KrRŒY^ÈË`Ñ©¬éªWýÞ¸ßÈ‹+¦èµBG„ô<£ÜTÄÕll\6h>,,›ë{ÑÖš¨Nù6¤ýY•%ØM?®äj¶¡ÀàaŒ÷§Åè«Æá†<ÖзöÒ‹ðÓUiÏÅŸ»á0£o!âÈ?}Ÿ¼jºý´(Òº)ÃFЭ£,ë”8ôQOsʦ/‡üsÝÙh8á[–kä€K_t)xþCäh{.?Yƒþ;7_;Åi}Å ^–×ìÁ’ë7.Ópš™(zÖðuµ‚¯¯Œ-ä&]*-êIîD{}þhÃT‹‘qŽ"A_Xþ­÷a»g…ö³Ymi~LöíH“™BÐË·„DtpÊ!g ±Ö/ïÆÅC´®(i| Ž„ØX|ÐJÃËÜÊöƨfÊ.÷Kc›´,çÀk $…RûS#™ã7;šƒ^$¤OáýZ̼ñ¦Ù|BëdÛ½—MÕ§6›»ªn[T0ï cšÚ# {Âîš§YØk{ {pޏ5m4õ‡®‰¬è5³€y0Œ¥l6䨵,ùBÄoçéäÛzRùí ãÇÊ©&!„9ôÑð-áy‘ufñ͉xÜœœ'’SÞD)eïÐØ—9XñAh>Ø ¸'#¡öå½Ô}¹ K]ÿ¡Ati­Äw̧ë埮B*´rÕzNºØx¤âå¹g¨®/òOØþŠè÷ç²õ!ðEÅ&ƶÞDÆðcÍø¿Éׇ Z ÿãV%XÅÿ,åYÅÿýÒOÿ÷P³?3ÿc%ØÚrç°¹Šÿ[Êóݎÿk_¼qúЬU:Çè1Ò9¦†ß¥Ç×-Z—;úÍÉh¼M Fk_´©P4q¥û[-R”¼ôE&˜’PæfùòG¹éI’XÂ~ sm"´uê›b1Þ áÕ !”WwÈ©¨\»S«1*KcÉËi©ÕW¬Z«âg\é<9„2rÐÈ“Q²üïÚ•#DÁ ·‰¢€ÔÍŒìItw6½95öË$c'bÓñ @“cÂtþ6§ÓþPáÙ½á6&‰¤È›{ S*¡­ ¦Zmccƒ¦6ÉÍ–‡­ILó41ÍÇ¿ö%ÄpE¡P÷'çÉRá ªsÄ7©_çÉr‘ùeIGR@–t”+dÇ{d‡ìðÚˆ/%ÉÓÉ;¿éJÝy؈¦G ˆ¨üæP ñò‹°’”B(?š…£ º¾˜~®9 ö’þPSÉ{ò›%ãtÔUgWb6$;mˆ¹G¾ =+å`âèóàï=úÎQtŒ§U'çNItOÞ•’@ïw¾˜; 7žŸpÿ»b¾‹c7igà¥ãøêL¼t b=^z/2†-Œx­7?âÙd#˜#‹Ÿ6Ûq!Æ×G·.ÊŸcvÌ ôÌô}¶á¸mhN°¬ñr6Yz´‘Û5#Ë<}™¯Áæ:¯áKÕ$£i eˆ÷+8Î͆៳˜³<Šƒ„u›×Hñ)†ô´FðØýÜb»gp…!(*/‘ZÃ;[ äѱ0®L·»ÛÅ‘–â"ÍTôžË—Ye |ß–S¿–©f`±â©wA§ºc…’zmý%©ÖèN5éýöÝÁe°]78›4üÉ5Ú«®¹ös£nòkôm"Åš—À5Í´†ŸkÌ3Ï—¸+ìLd7³WñkeôÞëEŒX@coÄ"çÑ[Ë<´žf{¼ª‰¯E¬u|‘wŠ H.XÃm>ú [LÒ剈‚dTª$‹RÔ³-ï…ŒŒKLE*g{Î䤵nï é9'q„=×ù/lµÌJYº“ÀÕ5øÚøý¹l¼½:7}—wÖ È êKÆße0,šàD&^¶$Š¡¸1à®Pa¬¾í6G¶ýU–Òd\Y bÑØöøW¬›ðKs8wæqGµ/î33åêYÆcûÿ¾?™üŸ{+ÿßrž•ÿï—~LÿßÃÌþ¬ù_ÙÙÚbù?wWù—òðlwýpÒ~SÝï”rgMT6L›T¦„1’&“1³„þý“ΛÈÓ¬dó[R:O¥ÕÅŒSqÉÛ*Û§å`ý€Ñ±¿[ ÁÙèí ÆEtn.P#¨NƒY²2\êècýëÀõÝn‡org6I–?п5ÓH;"ïõ'²ÿ‡fBÑÑÐî ’èÙô5B©v“9„åäTΨþ¤7o•á>f 'ýh0}C—çù¡¹Þ#|Ÿn‹ÃrÁ†%áÔá¨û’†«>Á°'¡2§Í&h$cDL_®ì.òúµhCÏÕ]K æ$´þjÖ#Ì8´àf6íêžÏ†áT@;uî¼K‡é½>ç`%ïVÌKI‡aë.‰Œ†•ã+4üzH‡3N¿l‡—ª qd2ºéK×ÉëÍüÉ^÷sÓ‚×bdLÝŽÀ˯lÛ'ÜFå‘Ù§˜(#JÆ™s·Ýp,ÉnIÆ­g]¥CÍt32/ײô* à+â&¢îÊb±°}{Ç—nuì$CàGI\Φ&+@ö0OâçQ?ê›204žçšåvêÝ È! ú%îJ}9H[$ážL¸”°€‘L<ºÒb´’“(»æ6 ¼'  ð-f %ñ—‰ýy‰%Q9Ô­î 2ëXJNaI[ª$\i( š¼b‹(éRÍi’ ¢OÏõçÁ„aFŒ¤/×òÑÂòS{ÒØ_Jëiz¼}ãa=ØŽW©I×#”ÓÉ©žK˜2³¸Û`J”Ü1r"™KÚ[9àú‹9ã{-+²7«,Ï[(ÐÓËòœ€YyÌ<ϸ®ÌŽ1´7Ï䎊tIgßæFóM-A&¹ºL ÔKîüѹN©ù£=]iƻ¬‰÷ÅÁƒ]vTgÃ_0~=‚Ã"§£z~pìÃæµÏuý÷—L&éK»¿Ð2hpyǨ=6«SÄEí9á'}IåæZÉœh]f<búpøÓ¢£^@HÙpbô€’°äsæ• ´7¢ ÖÀâHþ¦Ï!«ëV׬®X]°`‰UÜxõ/Ø- ´?JÀö÷ٿ艅 Ä1ÿÚ:œHDzìì“QFÈ‚›+ÛÞÚÍW ~«CëëÅß´s{ŠÓNûOníp4ŒŠÝôlDrJ|odq7ýî ×2Ø/¾%’‰6&k7jöa½RØžRê(X®)Ûp=6ÌÞ—ý^w6I&3å4zø¿y鬩Ñ}ã~jKâWÿ!Žš ºH¶×›Ù-ÂÛ|"b‰GåÉÃdöñeF¢$\Q!¿Í¾âη?°—<뺆;±Åò–îX;î÷êýFµù¶SÊ{S<¥u¹ïyÐ<Ð…£œkD^øðƾøÊ1Ÿ‡üÞn‚À Q|ýš/b…e@è+X"Ì滤€¨Å/)dßÌuóÀï=ˆ$"çåñË æ¼É ;˜gÛ­2ÏåžÊù/?ØU•ï ôa¡P –‹x¨É¾çH4qÚ͉2¿p¦7NDœf°h”p©DNn\C¼ð9>w » Qʨ7ÜÖ¤­Ê¯yE/PésTz‚ î™ÍÍt°L ðÍzMÂÀU¹ˆ<¦%¦ûrÆw߇_âcÑ„Í0fch3™÷f6<3@‡6n0„ùÓ”* bBG$ø0Gã1w¢ïr°L(ÄÄH ëÇvä¸Vù&>TóßËÎ}öõ5ïì.SÚQ aa>e[ˆ EÜš?$K¸ž{.1mÔë(ƒkŽ ”«(”üÿ1z2ñÛÛ+ü÷RžUüÇ/ýDñ5û³ó¿mîÄã?¶6WóÏv;þ#Òâ#Õ¯ÂÿzÁ‰qMyâ.žp‡¤ŒnQÔ‚Ñü5%ôÆXé¦ä[òGu”/€Œ: 0v“¸Å2¸q¶Ûí0çþŒ: *;¤±õø÷üèzW€ÖÛ z$2®þÁÉ-7g[9OÒ6—nfÚ6ºÏ¤‘ôËÆ‰YŒ]RÊ5ïçKºæØòÓ“Óå€ËÝŸp¤§n‹‹‡å°McÐ}do+§BÚæG²­«ÜGÒAoû4l^ÜWÇE>½"ÃA€NÍÿ–’N° ë”p²¥ƒ’N"Ë;=Œ_ù û•¿Üɯü“Ë})}ñ¸sxU|Iä*Žb‡<^à8ÈÛJ·Y…_ÖsÉmàÑ¡ƒ›N *ãÑÑH]_ÐÅßÕ;èS¿’Õ.\›–˜îþÈÝ%Å]Bv»UN:«¤™Z'æñµø!¯»öe‡c*ud#_ia. xUá?7ͤFï. >Dð $ÑA,;g™RU1áPTŽu+ùWÅ“(º)6NÂÎÃV÷äa«/”‡­¤O}¤R·îJx¯¾…ÛåKz‚U“žËzn1õýkªû–n°T¹Þê2×–,Ê[e­Þ W3’ªÕ9Ða­é,PÒýiÄp :ãý2¹«*›§Oêö܈±7JÉTcÌoÙHþˆª§@D­q9VΚöÍoY™Ë|©u™ž+XXÔ­öý¼ÒêkÔÏ+q¹EÄÅ×}XóQáî²Æ5rÎ…JÅ—-ÒWþ:˵G ’Ræ ½Õ­ùº¤øuI‚ò¹-œÌ v•íïÿØþ¿É“ñÿí®ò¿-çYùÿ~éÇôÿ=ÌìÏôÿmn•˜ÿo{•ÿm)Ïv×ÿ—3Š¥t‹Žµîók{ =ðòüIÚ¸j1¿b®k£s2¶ÕR£¡ÓbCãIJ4j?ŸÎPæ$,Có²'eZ¬½ÉʪFò£˜{D!ö„©œæ«{ˆÄ6Þ¬<ƒÄ6Ï|6¹ó¸ž üžÊ{I‚ãK¹±À­V÷˜J'%Eºç.Ç;+¾wfdfHwÇÙâºòÆæ&¬(³¤›‹@Įª%xdý óâÏzÖ¾ÊqÔÍ]gDÕùÔ©OÁ¨ÛÔÒ¼h~×WŒd£zؼP&ª¸M~ŸòžÜÑp  ´Aç½Ïh¶’8©û0có‡´É€5©²££Õ6N[Æ'CoüšlfÒè¸4 %ÿÙÔ C3+îÇ^Þ›+.Ã}ZËŒB‹®™QhMŠmJnžbô]É@~H·"±›Øáe<èSº >ƒäˆeâYkH›æ`Šœ°p$2GÛóuÅÏŒ Ü(EËÑË‘¶hà¦x.€U܉ْLŠ;xšµÄÖÑW*èWú5Y÷°\¦+\¢0o”` ½E¤¤z凂^9sÄ£Z=ˆÝ1E+°0ž#êc½É,*¡»±Y¾Áx»pEOh1ê(5‹¶nv»~&. ¦ƒ¢½rPÜù±ìÿ“ÊS±ÿo­ìÿKzVöÿ_ú1ìÿ4û3ïÙÜÙÜvç°½·šÿËxx¶;öÿEÔÇÂß}awüã—±õ§zÿ.æüvåoeΗ§Ž4›Ð]Lù›sòƒüfüÊʈ¿2⯌ø+#þʈ¿FüeÙÏ}ûzI%oétWôÝÍÎû§Í£·óÙœÄÕ©k«¡¶¢pø6™òªEÞåR4\æJQ=%SœŒÙYý‚ɳ3œN´ÄÅRN±mùП\ëHY ãw®Û˜~îG£ø*\Z ûêgÅ(TF^Õ@â‚”¿ºuY|=º,^¢­ñ¶èº÷fðÀ›ŸèÞq5ùZÏK3(ÚÙ-ÓÆ÷ø¥ä>^Ÿûy÷Æo‘ré·XèÞïdó'>ñKÁ…f“x/¸ÃùBôWY‚ä‹¿Ë*¾"ùnp5@öõà€¿•|¼dØzU¼&m~pÆÙ0{~ÅlZŸgƇví»Ýç˜wÂÅåû¦ž˜oö‰;N@_'õ“cŠyfb¬±y'£pb ô³È”sÍJ‘>1ÅÌM‘0=ÉÏNö 0IEÚ<Ýñ ü¾›<í`åä‹vç ewŽÎ¬ nŸ{9—tzQÒºnN¹À XÄOúº^±†© “”šÀbx%¾d¿`ز}¢K”%–õ²%åJŽåºìƒ9µ’d¶Bw^Fò$È÷¼ê‰¹:ùVÆ„+[9É«tø^Lvz{}E¢yóò¡7ǽù7Ç ’½;¦M+1×ÌyÖæ»Í/Ù­Íä9&æf«¬1 g¶G? O6Ù· {‰…”’§È©’Ì¡gÌ1ÿDöÆ\ÿÖÄO ñʺ«¾=î÷»íqA\wN˜Œ¿Ï»ÇÑ¡¾ 'ä=lvŠÞ¹$hÏʴ鵤k Šööü[£Ñ˜zY7'×äÕUÕŽOá|©ËÎÛy7ÔÄ1D.ì,gGUíWaèËßZc-¸ëì<øtkMöE®M6Q&ÄbS[,¼Û.>ÁEú—üØ]hwöÌô µø&{žêÆvî™ð»sìëiã‹\Ù[æ¾›z™GÜŒYþ*@ÞuBÌ© ì%èñsQ¼²ñ‡yØ®üm‡þïú²ÿõa@ àÿ*Û•þg)Ï ÿ÷K? ÿ÷p³?3þ{gg×ÿ›«ù¿œ‡g»‰ÿû½vêÇÑiícIœ¿kœríø $ª„õÃß—ÄGüýcÊM0ôxî‰ Wãx¿ >Г b²,“˜ùϼ'®Ï•lÜ“â‘ÆEâßgÀ «„'¬*@¡Qóc[3ˆ…ËÈ;>ðM°ág`6Æ1RNî’Ý¢7¾†‘á/%„óMG‰Éǰ iˆ÷"â@9Àµ4ðò›œ˯"òÕMFfS1'ø+§ðERaºNÒèŠl"~¾fœ#ås6èó½°xëPì_¹mi`%@O¨¡~²ÎBA¬nôŽrÑ2îÄ´2¦»ämB<"”L2òÞc“ÒeDǨ×x¶Aí2ZY­™­Ì…ƒÂ”"ºïJ[>º+¼“öZøé­C#|ÚñQ%Ëgùh<½áÍ‚|…zœ-ÎZKŒRÓWaGø£Iâz4¸Rð8ƒôz2ê…$þDç=‚PºÐT]øÈ×0â åŸúãþ°§w à¸ûÐÜ`J¿‘Õ”ÅÙ$aòT–sšóÝn¾ÀÝæü¾­"â’ïz͹ÅïÅï9·Èx.:'þ>`¼¾ŸºáÖ4@X?÷_‰Ð2]Ò3úôÉ{­½¡Å7ý«ã ¬;Tì‡#®B¾f\½ß­îñ,>nù’8m*3_V*ùM*Œ}ü㎗N7NßâŠÕfçcŠŽÏJ~ÒBÔ›‡ôoë=Ú@1å¦èj¯å¬Õß6Ïáçá»vI´ˆLë¤ç¶võ ÿ¬¿=©¦Ä`·OÍôÌö÷v¯õïµ¹îµ6Ч´.w&ßkÖQnï7àg»sxÔF6ã¨ñæ}´ÏZo»3×þ„¯ƒ u/T’¢yH¦„¾¨šÏ’°dê³É^T€Ïò -ˆ(q¸'y¾LçÁÔ Ëm¿ É¹<æ»Öº cÒ“í9O§wç;ª澡ºJÉAHãJªµ¯õ+ÜEÍ?Ê"¿K»®ú¥ësˆ$wš:[/ûö§‡coÔà{YïÙùšŒ {É´ës²JãðdÜJ¯æq°Ý£Õ»€T´/d0êm JHïMU°ÃM¦]˜²Ñlä…êËlÛÝO Å…ÃðfvMJX¡ÍBïÔÕ¸Q ^б“|Žuäw¼Îs³á ¹jËÆË÷ÊSPDÖôwÕú;IĸÓ62­p¦ÝÅÓ-Nc +*¡\ û¨ÑtÇ?¢.ãÖ#^ËEúrò,Ñ`ÈŠ—N@D{š³î 5ôeÓNÌó†>‚‰C=‹É•"b¸Qi—ƒZÌ7¬ïÎSõâÈ|4¡‚M3–ˆª/0 Ôõ×°%kϘ}ø?Œ³Ú¼)€Ødª;ÍcóÅ&{¶(Ù´<øhÁã=‡ŽÒ®©Ã¬ØéÚØˆL¾sˉn¶)Z3‰Z%½jNd¬fmËÿ7xý¶cÖ+‰võ ³ ŸÒä÷¬>Ø)†hÓˎoÁfš„?7Þb¾“#‰4B`•].]n‹b——º4Ú'¨Qa|O¬1öÈñ1 \A®äéqܧ?mëçííxt;Æ“Äà‡Í¯¬YCûŸ f¶¹Î [3eÈ"Ô™râÑèìãEE¬ŠËU–çÉ{s·qöé„[pG~âHÛÿõTòÿloî®üKyVþÿ_ú1ýÿ3û3óÿlïìÅòÿT6Wù–òðlwýÿ9´®|Ñ`K  ÿ¬¯ð‚PŒUü–£pç;ʵó?ÙÄ÷¨Ð‚ƒe` Hùµj¢È]õ'|O!§tžM(C^ÍzÕ'!é†ÎP`”‰Þ¸=­¼ø ÐYû!nÂÁºtf7·l{ì^Âì@*Ÿ£.å;¸…Ã)´«ö§aoCÔ§œkxQ™´bLTº¥Ï°ë’Cú*üŒwÅE÷êêùdv9w{Óº´éz3ຸ ‡˜ÓË"-phÀç×aïZ(b~áô:û(lÊx•*ýúïè×ýòËM| &|P®PÓ{£Ù€¸Òë‡_»—ƒäÙÀ]÷¿w¯ú½ð=šc¡~UmC:VódÛøªÝo}ñe8ú†3z8öW€‘`dYFV€‘`dù%#9ÖpÌù”Hy^‹-ä´ŽXcGúk°&'‰@PÔP+!"Š' †’Γ^HBÖ€41=]PöÃï¹.&˜ëN‘Ëð{<œ|š¿!­„ÚͤÚyjWŠÍb±â¬Ê@„‹¿¦Äù$Q]¡J >üƒNx¨ù‚ÚBÜçBkƒý ó½Ù€2ä™0 ÿ³¯çŠq(ÎæZç‘Õ *C Ú¯ÒÌ&Æv‹zØW§õx^âPÆO†#ÑqDßÚgg—Ð$„=†™Åø8G¿11àI<á.{‚7’ NÏ=‹cÉ“ø˜ëÏ1!Z©3¢eN ÙÞy¦O‡Öó¡u· ‘P=ïŒðWO‚v¸bþMœ5­¹§%bÒ²²È´±Ô˜pçž6ÖìõÎÍåN›zò´IN#*·‰zÞ}¢ž:-êæ´¨/:-ê¾iaÈ50CMù’üÓ‘ë„ê[R|=b[_‰í=‹í šúKBS¹ŒÇ²ºÏ¤÷3hïKâE~“ §ô÷¹nƒ®q?8ÙÆÙùaëß âeßWøgKãfÓõ÷„Œm4gÛhPuøƒ?ÅÉ·BÝÎyÞá ðÉßî¿û· Â=ØW Üvý"è\Y€æM5><žm”%¾T* æ'-ã“T€oÓŸ¬Š$Þ†¾ñdp>«;Ÿ9 ¥rë¨W°:k¥_å(½v)õr©[D_ÆP?ê]Mÿkš~ºIè Ôo…’~Š(i/JŒ½ŠŒö5—u¡}•ò»–ýeÝú’$ÄMýÆóÍÒf܇)'¯±¦D °¥— ¶4ÅÖ$·|$ëšd}’;é3ba úA6P]÷ÀßÊCµ‹<°öTäzàù¾y.ü½YAÏWÐóô|IÐs>@ÄaÖ|ÀJSëtn Ŭ¬ŠEé|ÁÛKT~Yÿ)ÁîûË»kDûÁ>ÈOýY ]štH2?ñø*yˆ5}´Qi 4\•wâ§À1ú§©þÛ'y·Àrô1Ïý¯púbçÀW Pð¾ª~U¬’zé ÀŸÀŸ¤$&kˆ>õPÖI8xrÑ6þÿû“Áÿo­ò-çYáÿéÇÄÿ?ÌìÏšÿ[[{žüŸ[›«ù¿Œ‡g»‹ÿÿ ÑVµùö0Q=Ã_àŸ‹4«íÅ9hV øÿ«¶;§ðûI<„@†$ÓQ±oªDm22` ›>¾Ä½(’<4fÁ™˜“(…·Ï "óÿ?¿kh«ÿ?p˜ÁY»èÄ$KÞ‚Á¢`„ HDý»¹£ º:sD#¦€Æ‘Lëô£6€`OèZãt?"Ý;Š—‰Ò¢ðNu24?D:òVTÚf”#Ì>ý<0zš!¹šQÊxü5‰R<Å%^=ÆPôž Q}Ý|*nûÒ _ŠLŸ‹óÿ楾¤/AŠõF™Àž°ä}¾†‰Œ%¶tB° !àgBð„C–š?S0 žeÙE³|ù£Ü³a8å1±ÙÄ-à>Yñ¾YâÏeWÏR@ègÆÌ[”•g^ü¾I_Çž_8wÖ£:CŸŸû?7zJÛÔkÍbžæ¸¥ñÌ¿ÄU]ÏR½§LG&Úû»ãÞ5 Ä'Ûü»mû4ÄâpÓâ!NÞ-i3ÄÕv«.žéåÕåäÑF ì^ÒMÔ} œŽ°Œe­sÙºVT¹:d í÷ð¦k)@tÊéõú·¸Á2«pÖnðÂP¦Xö q,°ú1>oö)ÆÐWþk·tii+0*ßÂ+Xæa * …QÈþœIAôÍzÉ‹uòIâ÷8cÄ_Ý¿J]þ%ÖDɮ탖 'r§foè­òaòÔ”d¡n‹³y«fúOš»‘pñ¯Î_‘Æ¥Ö,Œd½t{ýR¼5XA¶&(c„NJÐÖè#zlžÃfAkÊ7¬ÎÉû€z=Z<`Àq`„“ ×›É@Ï#ªÙaM™þ”^ö æëC˜\Ÿ`eA-²?Á¸ Q)J7ñ³ö38$á¢*á’¡:v8 Û °ú÷íâuC¼xÞûQú/8¢ý››þÀ )9î‚ –”ÙáýhüÛKG_ü[²Ñ'²l‚Wˆéh íŒôOs±c_ÀZ«Ù -iï-z2:PU—_Áa¢ÞX¿[Œ]Gë”'„WF¸‘ôyOÆ¡5mï'÷䓵ùÂñ¦FûYÄ"éÌîñz©Azvý1Ì»Û÷çf_œÈ>›†ò»Sd,ÞfDjOL ¶äÍå„ÀB+~‘ùScoRžÝ¶’ µ”vX˜¾+Æ™­ÂELjC%ÓÑ‚!ŠQœŽ|¤†ÕÌá @³qŸ{«ã” iyèŽmT3Ø7õHF0¾²æ˜Rèúß1=ïÔÐÓ«ÿÜ^LS0ä¬ _I@VÁ8 ¾ÀëÉ^Þs¦î½¢ªÞI‹ÚىꡉøÚ›'‚8ÿòaD0X4èåh¦6 KþMnÍ+gšÊŸ(–Üx¸Eædá7&§Ž61 ,lbRñÇš@›,ÐÓ!kvâˆD¶ T%Wˬ¹Šy¤˜‘j£qXË øSÆtÛ’¸¨ò—f$‰Ç]rÚ:¹åß}^‰R,ÖäÀˆ89äõZšÿ ´ßqAB©Ìîv¤Š¨wNÞ)tŽJâþo¶ß5êt¯L£QÊ¢’ü: ša4'p'.äë9O",è©ø{E´ìŸRËÛÓ‹ôÀ–T&«ôóûí÷U‘6S5’Ñ£3O†½$S¹·x’äyéQãcxvG%¤KÍ*ªÏñxƒ ¯ ñ"õ'š&_öšÊîÑï²sD€Ü1¢$!’Q ÉŠ(Ùq+äŠ(ÙskÙ$gHñé6î<‘$±è%ÉuTQ]·½)ßwqŽ¡TøíÛ©Az,½o#Š?Þ¦wÈyŸ/½òœSoT»5IÿéÇîÕ-›ª{)zj¤T2úsž€ “ÁºY/ìw.‹òáÞ/M8‰ÅÜ-~‰ŽæÇÝ7!(%ŽÑ7 ç¸MA–Æ¡ ë®Í3uä‚tAòMÕõ,z{ȬÅg’ÉIO£ð‰ŸoÂÒa­Äm‘/DG¤Eé¸oÿ»ßA †¹£1Õ\ÿ寱F/û¿`dO,@‡õYS´ÿêù"å킊_4ŒOÎÑ…s¡ÔV{&pq<Ô¸ŒÏ`põÀ/|´Š5úIbÔ`‘Èñ–o/ŽTé%yWC% n-IªûÕ²"¡ìH¨CŽƒ:°ã ¼×P踩ùÚ¢xœƒ3‚ö£p§nì„mˆe¤ê%s¦Çe¨ý„’Ší-4B¥° ¼$r‡±Éýµ†¯+j2 Èó]Ä~4\ÿ6ÞTAÂõ) :VãS ¾ið4ä…´9ø«é‘8EºÓ:×”¤*"^0#HaM¾§ ç,¸Œ­ù#¿ð,Kê¦=¼¸·¾wãeÑ”Â"…²E±ÿödJ‰3s_ˆI…y±?áÌ÷‹¬hµx¸šHYˆÜØ,%®N@Öý¶=ãú—÷¿ˆ¬+`¢áH é‚çàT›¢.ÈkûVh¸o”,Úê¡|Ô¡Óf§Þ<·¹›zìÈÓ®áæ}x{*:§b+M¿´OþÎÊ{ŠÐÙoá¤oDPÖ>2°7LËΆ!;ŒÎ/Ýd DÛ|í™W{Ñß>óÎc²NÚ‹z½ýŽç~c-àuµ°c‘è=7jµ…ÞKr¦l‚6Ê¿á7‰:k#ë'ʼ‰Òë«^×å±íT\6٢ȜAÅ’òìÑÐ3Mž¤3»ãïF®žÌ{YS¬Sñ@ ~ª··ƒI0½$^TjÁ—–tkìå˜p Z*›âˆ×ƒk2KõfÁ‡¯#µQ¨ˤEí¯3ä–ãmM¥ÅÛ a½•ßS¡åÈYˆî?„vkÓ}Ç}EÔ\^rD­fŽ«w¡312ŠCòi2“¥ø¦šÚhø™ –Ò¡ö£þû''ÙN$dvǰ¢mIÚ¢ñ¾€#o}¤¶Ò:BȬ+´ª,³¦ þÍP¾ûèÈó…Ñ· Öpl«ÝQKKÑîJ…ßà% È7YëÎz½ìN+AVÞ—=ŒÂG!F÷(î•cbTU_Q¹¿¯¾3VŒº\1â39ƦDÓ`œYZKÉRaävE%’»äÎ;ë£Ô¥ˆÿL‰9ÿsnÆžL1þ{;ØÜÞvƒ ÅW‚UüçRžUü÷/ýDñß5û3æ°µµ·µëÎÿJek5ÿ—ñðl·ã¿ß¶;qq¸ß1-v î×L«]~Ã?¤¥Y=ø`x'DnûB¶‚ í£´¹²l.°ÍFnësxÒorT”6À‡9¯uK¥VÍÌŒ¡®ÑŸµøÍmÉ’ð¡À­+ŠDQ´'¾XèòUÿSÙ>¹aü9ðnþ'[Єãrп>¿ƒ6èÞ\^u‹5ø±è˜»ÂÛÁè\+ö‹?¢2|AÂdÖ»f$徸–ÙÀ'Ý~'‡¾À§*wÁ¸×ݯP GœÛqÿk8šMèæ2<Ì`ã°F»Xü½Ø¦ó»Z»ó¦‡p„âv饷ƒ^x=ô'_¢š ÞàHK'ôpÚýIV‹Àe RAB”|¯X,”ƒµâIñO"ÇÐÃûÝèÔ žôÇ_û hucü-âšQÄ«4@µX|s5ÍåÇ7W­VÖµ{nåqíî±ØŠý¥ûdC±»Y¡ØÝû Åî&†b[«F_;;£ÕÐæ.Þ&^kÌEü!b¯«:”ªæL”4©«¹R‡ï•›o ¢->G¼t¦íNÜ^ çØmå.äÃËH M*‘D*ÆÕîq5f\WÓŒSI®˜¯¥X°mLFôÍ#Ö£Æ ‹PÅí0ó)aæÄÝ;o7iA58}¢^¼R_b¤\QË »ÑÁ3 ²ÌhŒ\1ýz®€Šu±>GH…UÇ÷À¿ïbqþî Ú¡DRïÐÛ‡v÷)Ç8ÜáõFhŽ¥«8öaSð´Èpš<ªàÿðKZž¯ãj€çúŠr¶°&ú[ðgóC2ŸkõzòHµª˜ ¨úí G'$EÜK”0xŸ¢ Zç]ðö‚~¶*ò§ú»ó6MV°l÷[§ø¯ 3¸·èÉ£·%'ˆà^ìèfŸm&îŸ6ê? €” Ü”<Ì s‚ôÄuÃ[îþóûÍLúVC$øè?78NÑGxÀÛªó‚ûk\ AðÇÛΰr~¨u¨?*T«–Rëe¼Öanœü&O¸€Æñûáíù€æoÛ{šç—ÃBŒs¸^¹\´C<‘ ±””V©Iˆnÿ m)Æû˜‡Æë4ó°=}3 "w|´?¢ô#ÜÇÀXñŽº«q…ý ]ÿ®"›µÑ…c¥»“(­…‚.°þºA:–´fÈÂtœ‰T¬‰Ð·´™—Âq®ÐÅ,-'ò<ŸÐ~Û\‡bM<•h½Šn#å{ìHwþ6·×Ý †í{#ü±ÀuwðUg›Z`†ãÈv$­<ŠÔ@J»cj¾L.Ñ0ØNÑÿçòÄÊUJ‰ÄÙ,qÃ¡Þ ë,+‹¨ÆRÁaF©b«m­Ãt)ã~Wf¢é¢ÕÁ&”Æ‚ƒ£µ= ÅZýjnÖŠðš±666à× þЇëòGE}7,Ó'C£Ï”´¥]ל,7pðÑš&p°1í cŠð Š@ç'ꡘv¿È%¾aXf@!x¿( h‘:ô†Šè>0®±ŠP§¢«E/¦üÝÞu”@ªÄ½ÈÒpjs&0’W]™Ùϲ dúå_ Øç5> ë?q’@½…1Ä—³¦|œM'á•:&Oå¡“-€|¥bœº8›`z©+LU0}C{*ÕM§£›Hjª;d:Ù­Y~:º•Ö ƒkÐ+tþˆºu;èb™є&Åd܉ã>aM¾\ xh]{^‰"ïå‘–štg”ÕRçTŠ_.Ë5oˆÎ„¤;ü ‘¿íÃ?Ã)‘GÐøax8·MW²cÜÿsŽ£7T2éX›åª!ÿdx`ÈN Xý€¾ôå°˜³Ettæ_WTà_]ÀÇ”÷Èta¨Ý£ä¼7ÊVG£ô ¾Q¹ÅBT ^5è?ÃŒi¶`Íœ~ë÷‡Vú®#ΜuTDAOaAU<÷)£ ëÍè*ü„ï’s4|8)  Î köÛÕ¹7šÚŒä•;€?‘˧Ý5mË0YîÑUì—šâ–¡¨ï‰©À%=’BåŸ7e•²Ä¨¤F¨$°ðzðϡݒ–%ÍVýïÀù^8üxtndà id  ‰$zrQ%qûÆùYú?è+)œøMŽ3 ì°ÿM‡â׫¨–mŠ®/Ѽ„`k3–ëbÆ—±ë› ÍÁ?J߮ÞB|é9EÝ4VÃbÊ#Þñz’Z¨h±0úâx2Ãþƒ)^F½Ï‹Nhl>|ŽÀóüéÁ)aºš4#|XÙp1€BÂ; Lc^š¥aŸ æ,°Ÿe ªDKœÁtÄÀ¢J R\@ÅŽ˜K-®› ñŠãÁi¬Í2–Àj4¶˜>¨ô"LX «Ø×QˆI0Q°Yòz£«~I+@ƒÑè–çÁ e¥‹´-—ïü)1]Ð/xRVŒ©òˆ½²AÇµŽ rC¿ª†«oÆkÔUÃh×ñÌc|Y‘.²Ø‰Ú¬ÓiÃsvñ˜ù%7}ÝÅ3nÚ(Où8˹Ç~ì¾ýÂÆ@ò§AÞ‰– 9®º=Ã(âˆ}ÿ§ÿž8]>öJ†Æý޲æ£_ä›Ì˜¦³_Í,Ï …Œ €ð 9yMµHar£`e­^×A¯èô&ÃT=ŠT•ÅÐVåW¨…s ëc<4 9ùÓª¤ë<1ë1Œ Òª—Ö‰Þ‘¾{ÎúH®Äð¢ÎÛ¶ømêð[/£,—\yÞ|T®¯Œ}¤ß¼•õæÝMqM”„WJ®YîØ-£[vÌÍ86Zf|TN6Œ™OMõHp1_52zÉ6ù‘û½’@MÐò•³±‘XÏWÏ' 9_y7VÅ{ŠÕ·³Â„ ðö‰-®ºI÷*%÷=ZXk'¡ë»Y3é…œ!¾Õ¾Þã‰F¼‚¾V‰]À¤¤i.›w_c¬æ˜O&‹Šîb…döºþ"Ü]š¡|«<< £LË7³Á4Dæ*¡IK¼Ðrth–OTœ¬i%.¬kˆ¹T|õ… ›ÔÑ–/‰ÓzV–F1‹zŠ?âj-(Ë•“1ïš„Þ lƒ3?q¬ŽüÐ!@t a) ÖPñoU:F z ûß§¤¿‘²˳ÍÕV5Ð;T=ïK0a¼õ­<ˆêsèaäÏ´ÔÒ)ꨗZéðúßà ©™IÚª×:aÓ`€FÔN fÜâ¹DN©xdI†Ò4”ÁÉwúg6¸rN?îù€.ö6>œÆ?Äl"ÅØd>Æå›”4Zî8£ŠŒ.£Ð‰­†GÙt›)—CÔR’ò—uDƒx&–ˆ¬Ã­ŽÚ'¥¬®óÚN¹¬%EE»Q¥òI94?iUí87ýÈc—s¤Æ¦—¿D÷œ°Í‡OÛx§yÒ1Ÿü=ÇÓEYÏX^[Uߺ«;CKn¬·ÅNŽUWnMnÝ<[“L£Æ$ac0J`pP¼ù4xï²_Ï‹I«ê~•7£Ÿ#}0é úµR`Ú\¯@ ŽQi¶ØÖ_>ªpŸ ·È¶èoz…r-<ûĨ¤œFUÃ:zƒF‡ùzhÜM&À§ëU²:ßlut_:I%î%+äžG‡½é(ÒOâLB´WégÅ nøx§ÐåÏbA9")~mþ¥$æ(Æ)¡E•¾‹&“¿ÞKža¶7¶úѺ«ŒƒöJ¨-u¦E‹Ÿ ¬Mu1.Å$.A¥Ð+êÛ‹ÛLU¿*¬ÝðBö»ÒáÕñ8k™mÅ+x"ÿ›-Ù¨„-õ ìÒ(µqøùznJ°)rŸ­&è¨Ñ~B½/©3L¹ ÐýÏZ‹¸WZ"¶i6²¨X…5˰Q{ý¢•ƒW Ÿ\ Òxâ‘Øü\F½/“$–°"Ÿ—Œ?©ÿ©]åÂwà•Q‰MÞ+›ìgoô$(®ÝñT»Œ2dqÐÿäŠ"ÊaÀrÈB(•¾cméušm.±ë ï+²æ´ˆ ¶œÖ, $ßsÉvc=ðÔ¼ñâxfxƒ}Cæ_/*j׊6­x/˜±­ÓŽ<~©óÒ‘s~:bÙÎRGÍ¥d«]¼W±I#¨äÎhlÙ!¾©M—Ñõ &âQ:}tMà|š2|9-ѿ٠qª6|9MÜÌåÕRŒåQ6¦'$|qNfÒÊüøäÌ¡ùTÊT }J_KS0½T| †2¡³Å»r)çbÖʵ-W.Z±|<΂u\}˜5«Ü0¶Š9V,«ž±^Ñi1÷‚ÅgK½bÅó'Øü¸u¹/í“„x)*{x*›hé´¾cOË,ØrJ;YÆÁ`7¾4.OŸOÖæÍ~/¦ÉÇké¦ÒÌU@šGÈ6‚–K)®«´\y¤Î<ÄÚça¿Š"h¥þE½?AÚ:6ÿs'Ø,ßFRË•ÿŒ”dÖšó˜$bg!ã(? Íw 2õÔlÅ=¶<§r^èüž€@öC’åÌš.Zhn~”Oê»W ŸùlUî†òY—y–‡òa^™3øŽVÞÇ¥°?Ðþ¼ ißì(U׃üI­ÇÆ’»äÇî"X0·´‰k§áœö’ŠSë^l%[[O÷cÅ#“8ýY)å°™ú˜ôdA=>ß Ùö“1}“¡nÝöSå\íºoÈÚVž–‚éÙÚytLæAæ$…èèGïÉ[»OÊ£õÙËér <æat10Ïöæ¯ æIZ±öžšÇX«L5c®åJª_9«: Ÿ$TÏÖÞrP=[/–„êيǽ¹Myy'TÏõ÷¹P= kîIz{ºùói€|¶7ÓÜžÛÛ+Ͻ|äÑÇ{òY*Ò'ñP³<™CÍ‚ˆmï­ŒOçsßs›yJ žÅ`»ò7?Ê,*°>ãŽÛÉ¥`x¶·Ãc€w1^Ó„Y7ÚöS÷°TïÇÃCw’&ÄÎccwžÜ‘~Û‡¿ØN?Ÿ¦#w¶÷¹³¢ç»ÈûOÝ?Ø~±ßÃrd«ƒ'&È þøÂõcô’°ÐI€á:ÙÞO›-r ׿”¿tËs 5¦Ö‚Rûòƒ UñE …ºÅëw€Rq¤/ÓØzÂÕåu*fÀ e/s ™ÛÒPVŸk³ dc–zõuä{‰Ú˜C“p;–ñÆ{A ®³&®¶}­×7Ë'iòß s&ŃS¾;‘6XÄ –ƒLy "#:ƒ»þžéMíÌŸ™ àË —–™€;ã;w_'ä'Ðuwâ6¬Ÿuˆ] Ö=Ž·`.Ç[àwš<8Øpç®øÁú|ž9‚oV³˜o²ùµ³pþrrŒioœü³œ?ßc F&¡9}w bø`0Ä…"ðÑc‘°¨ A—¦»DÇ»Mˆ;Å%¹dž]!µ$6š9² ³l$õKÑOƒ)înÚ  lÿÞu2œ{q¹£ko7TþnrT~.t¢¡Î߸þårªUâ…щJ#N(*%ןrlýHÅÝû@*:ªbE©Šó!“Î¥"wçÉ qмœ­Ï fT+šTêæÃ2’(ê—æ[ûì:z ÜM¿Üã~Ž8¤[™+œÙNC}æ¼æÎV¬JËWg7û‘íxë–vŠ µ'ù(‘À;*Rì¦Ûaóá"×ù× ?,R-®e Ùv 4pÉîËÉ9Ö»û;^ÿ„ɤSš\Væ ‹ª<Prw÷éÈrrGˆ7£z÷©¢&àh–“_‰r”Ðlçæárô<Êrwï=©Í©ÔDgã“,z¶ø,c.'–ÙÜ}ñ(G:µ·—\í¸“ &z¢­õeÚÖº—êUÊk»~äæÞæ|'‡Ÿ}n݃dÏ¡ÙK?Û§#;÷$œ—Å7pÉ«â{ÌéªÜ^ÊÑe•ƒÍŽ­€«<ÉÐö2ÏQ{Ûs‚­ò¤~ÛËĆìíåZííäZÝK’ª¨/f¶cú4z<ÛqÄžü Á žÞ)[¼?µùûƒš-x´v@ÝyøîåØ_¯ /HlS˜€x™zÚ{±èé^R FŒ)Ú v-AÓØ{“û#Cö3 NÄ­ ÿ™ÁÜ»BœîåzE|½Å'pz±½B8¥Ý§(Cs¦P30JùoTÔ•îè5ýÁNjû@N @”5“Öw³Ì‚p'z|˜§¬¬€OK>½Ø¼ði¯d)/çJ™|!=sCZÚ®ù"~PýyQO†ñô邞’¯yq·lF¿£d9LÇ µw¡<š/N6°ŒìiÚh>‡É1˜Ó‹i¾Ø—•ÌéžóÀÅŽe†rJ9½|'0£›óBžôÂüò©"œîû¨ö·€7ùš—›«“Û#à^úlb.o–‚wz<2ÞÉ:çE°'f“×d’Ó›íËJêf›êlZð)aúmý,¸§'l/yé÷¼L?ü§#¡^î, õ2åh“'§&ÚR2ysæýþïµ·íŽYí?þ‘ù º·ÝÞ—çÿ½w}ùùëÆ§ìó?›››»ÛÛîíîÐÏÍ ÿMÞØÁ^°»WÁ{c7ƒíÊöö?ÄæC4Æ}f¸“BS¾ º³IJ9(ö);Ü¡þ,Ïÿô¿ýÏÿøÿñ“nOœ¶a/‘~öÿþ¯ÀÿÿüÿùHV;–ükü¿ðÿÿîù¢Ïÿ×ÞèfWÒþÆŸ³î¸;œ†Ãþ?þ|\ ^íl/*/^î¼jw?uÇá«{èðê19ÿpögÍÿ`{g«âÎÿÍ­ÝÕü_ÆÃ³½}^kžÃ6tH»lþG§µ%qþ®qZBèâÓÐZQ­!À ÿ­Õ8ÅlÌ%ñ1y/o|ä½[©pïsª×å²hTßU÷ÅÕ8DœÓx4Ãù/ ðÇá1[•5(f'¢+&£OÓo˜ì%¸û¹:ðW8L^¡>|> ¿nà®Øé‡ýɤß/ak4!ýý~w~‡aWÔúã/ýAÿGÉøv4»W#qÐbóÐFÖ¬¾éÕÆƒ§9úÚ¿¹„¯+ éz[ÞØí^wЋêøóŒ]×*#çþïÕVu¿sØŠ8±\–©7;‡oÍ‚xñ¹©_µ¡:wøš€°R¿jS$}‹~ªæžž¼k~0Ë’ ‚@ÅkôgMýJÖò>¸Õøš¨Ýøë»ÙÎ8ä#yÍNÂ)`øMû…Pýð3 Ow0ëOJ4D£[ÔÆáë%££ÝŒl—È úߥMkþ'HÎï+›†ÝaùªJþ”MQð ‘ »ôoJ@É i†¤¿¿. º7—Wݵb­ø} ©½5ÊHÛL`®ÐÐqÙÞƒd°¿¥$+ |&# ¯ûÚª5’?z4 )¡!/ ḴIZ10Ï0¯Å³æ³K™™&Åh8øñÊ)|‘T[lòW6å8_3Αò¹•7• ‰&÷È.}å¶©5ô?¡¦lTSÖU’3Ì$‹YœGã+ )ñ‹7] ÝÂ’ê’ùíµØ”4A¡ÏCs8£ˆNfÐUeìšX¯ù/ ?1ïˆ3%“ÌhL%MJ—£^ãÙ6Ëldí>Y»·FÖÌFV­F>‡€%G®=]\ÈJâ*ɧ­¡ÀËOsÍ|ÿéPÀÄˉÏéx¡Mv€ˆêž†1‡ˆŽ’ …“ÿŽ÷xµlUß4c¨mÄD“Êåé5¬3ƒÙÍå&¶MÏ)¡i3LBÝ ,4èæ>¶‡—dlÙzXþ£ôáÄ !þ‚°â›î÷‚¼ýç_¯Ã½þãU¡ÒThª„þ ê7á°0äú Û8‚ð=œ2ÿ{£á”vì=OÈ«þd:ýÐs1‡húÝ+4µDÃï°kC’ú -šë¤^›_¦j,Sµ™º\H¦jsÈTm™‚}[ÉTÍ#S—9dªæÊT-Q¦.SeêS÷ÑŽ l“ÛA8û×#Xÿ¿üÂÿ$“œI¦om‹¿Û%ìý¸?‡¬/î¿«µ;o´HÖîA$k,’5ÉšÉ÷’DA #)bqI´e°þ‰gX.K®ÒƒßôúCjí^ò]Ýw¥ þGWîá¤MÐöOoâ¨FíøH¼bØ@´=|”ê‘zLí Åì…¶˜~0~ÔcTG-jÔ É]HtÞµ  ó%¸Î˜† £I”ªéuw*>¢ÔŠØ·úFBŸ›ªÏqŽ GS˜O × {Æâž›¤|Ü`J¿‘•µŒÐb 9²\S èÙÔ ‰œÀI¨Ÿ6ÆMyìjÉjf­)Ü*ªJ4ì¦,y: R*ÙdÖ…iòi6 ikøˆ„¨–"aèJµV\w %ÂÁ ÿ¹;$å&•ß*¡ä߯!Ìç_À«²ªÞ|†eaz}+D8`]ä÷+ÞáV“Oõ©¬ô—‚ŒhßÃPúW(þú0te:)\…W$Iê½ØDl¼rêÿF­6ºØëØM\-ìTH=“Ê«—¿ z•S¼ú'ïØ ßùÂG££—]¹ªòÎÓ£@$tÙ—Ç)œ™l ?Ñ}ÌÛ³öž™äáNM°×÷ñ˜GòÆïgჹqnœ¾­ïÛçaº¢D®¸É§ö‹Ã}‘ê;¯ó½Þ<8¤ß·Ž=GôÃï G("ofÃû‘ÒÖhWO”»àð´¦i}Ï_§¼¥=»”fã=BìP(áÏNë $¥ ~¶;‡gÀ™6ülÁß[µFÕûÆ~o6í‘Y´§0G´Bßéº O\>ÅmwܽÁЮIts ±Ä–z¥ìR°jÓßÓ¡ °É TÃý®6,õ盂Øhžv6 ’úÆikÃyAó{"Ý»_䪥\kˆY4éqcLz²=tz—^#É6Ëo¹å«é¶cj\ÚÊ.1B8ù«ï¸ÕQÕFòöN­½x­ת¥Ôz¯õ+ÜV=h„à’ß5ÓÆJ3ׄ½ Jl4=l#G(ËuAZRÿºùÌ'³ªÓ°¨¨Óé¨ÃïÍŽb7ü}6¬ón?ßèí92 –Dm®¼ðo˜e”vOßóa³ƒH?O¨[L“òÄo‰«Í1-Ž/T‚à%‘2ðBxFÝz£9Îü4œïsúÞŸÂcûÿ¯Ä˜Ïÿ¿³lmÃ÷{èÿÛÞÚ\ùÿ–ò¬üÿ¿ôcúÿfögÍÿÊÎæî–;ÿ+•­Õü_ÆÃ³ÝõÿÌ HØUá‘Û®Ô1 ¡ô#™F£¾p`k#xÚÐ V½‡QÙ OÇsΖå“w%þõßѯûå—›ø2’2ø \¡¦³Ñ¸Òë‡_»—ƒd Ç]÷¿w¯ú½ðγÐFõ«jÒ±š'ÛV—ðÉ·¾ø2}C1ކ+ ŠUsTYUV@•PeTYUV@•PeTéöú9Ö8 Æ JtZ\‹-t4Ïä(¿Þ”ç38ñóláÆCê°DB±B_ÒY‘ÀIȇ&b1‚’°~²*yÜØ* ~ÃÚº|3©ü…¿|¥Ø,+ÎJÕ¸z@¥xt…f¾À3Ñ:”ñ!î•L¥JVKOÝ:½fu°Ù:QÕÛ€aÛq! uþË 8)í|bl1¸‰…DÙ¤ây‰C?AÉxŒ‹~2éÚ9_ÇýMI8°2s +è7&< '¼Ü²x# 6õæõÆU ¸ûƒïAØÿxØR. wÕVõäÐr¨%% 66×a‘ߤŸ©~"J•6J–£D58?H·qv~ØúwéaÀºÇÚ¥à¤Ó  Yªk«AÕ Çž>Qȯ é-á]''¥8¸QÝ÷ï´ñ6 ÂûÞ–=.4Xò¤‡ä’Oˆ‡ge‰3•ú¶ùIÝø$]Üļ‚q„+ ‚×Í[ÞOëêS5X ëÇÐ)Ò¬=û¨; ¶çURÅ1^§ïkxj³]Ìí xý˯M8(áúìÔf7;gåÕSÕ²¾kÙ_Ö­/ë¼î_¿QsZÍÒÌ!’ /!´êÌvôqÄ –¦ØZ€ä®d]“¬/@ò…AÒœzICý~~×=ð·r•÷÷ýÁ¡ò¬ÉÈ- ©×wRThŽái¬¬ŠÁþ  €¦Ã-*Ñ:6J<:ßva)³þ šŸÍ?Ø_24ÿ`–‘ú³d¾Ä‚é+¨XORÁމ+æBAÐRA…îB¦î…;9)°7…þiªÿø`dC›ò¤”ð §/°&Ä^G:4¼¯ª_«¤^êF"h 8a¯LÞ(}»¤¬“×pð6¬ž\ÿñýã?¬üoÛ[«üËyVñ¿ôcÆ<ÌìÏšÿ[•­íXþ×Uü×ržínüǥηªÍ·‡YZ}Š1”Ôý3, ÿ\4àÿsPÑàgý‰´;§ðûIVI_IùãM•¨­RJ¦Ätƒ˜bü–lä¡ñ‡xœI ø$e¨"u2Š¡Æ›åÀcž+öG^Æu,7ä¬À¬H1^·`Pȇ_<(äÐÆî#Ë‹×Ãc_L`~õ¦àØcŠñгñè{xÓµNtnëõú·„œh©µÕ|£(¬)–½Bä,­|,„} 3ÿµ[º´Ž0*ßÂ+ØC` ² …QÈþœIAôá>%/ÖÅá»¶Àïqƈ¿º•þºüK¬‰’] Úª– UTº‹Û1œ"qöòt•d¡n‹£lªfÀV"e‘pñ¯Î_ÑñF-ŠÎ;èöú¥xk°‚lMPÆh05 ÍM.²£K h³y»­·(ßÕwIžp£Â¡ç¥±âf„“ ×›anXZiD5;¬)÷¿N¿…=ÎK+Hü V<²õ'1'*Åv£z²ÿ{áYûÙZ‰Zd˜»6O¯Êh§@ìD‡ö©ß6K<Ÿ9;ÅÈMF7Ix“ÆgüLõeoìµÍj¨d؉ü. ”Ž“m:š§££‡¹nðÙTÀ´‡…á„V·óÆD/AZ?8Î.úª.¿‚Cp½±ŠÖ\Ekþ„iÅ÷¢´âžJÉáG;Q=4{&d‘O¿è5fF‹’÷  …Eƒ?à}˜q0¾9ïÛ±¾‘¯þÔÏ‘*¬&b%yM¾à_ÐÌ"»k“5qÿîßþ;&0p%6‹Xm«é Y8àçý_wq ’\ÅóXñ<‹†ÓH|o?¶1sNI{4øÊÖºôæq—¸]ÎS:ä ¥;H‰£<ÁKÔ#ö¨ñ;QàÉA‚6îÄ·(øcVLé]4ôUúÙí1Ekû³¤b[¡˜ ,(/æˆÌ¬x†f “aCZ © Á”•¿hTñìÜxS.oXÓÉ»¾ËŦ| 8X|á/ï⫈wZçš¶;b±•ÖÖ^ˆÄš|UAr7,:YÅ×TŽtBE—ö{”qûy_¨sq€c ,J.ÅU'ÃÌ0ŽPØŸðGõô¸,‘šÍŠM‘ˆ¤DÖ‰>2+¥ß¸’ãÊaNä §ÁÂÙC6êƒSlŠº ;gì[¡Á¢uŠz¢=ÊG:mvêÍs›5©»|žvØ‘ñð¼=S±µ™BÔVôå­0ßÂI߈õ«}Ä…|Œ®©Z§Ï–Õuü_½™'’Nì¸`Öüë©þþл òqÝ^÷áÜο±ÖøºZû±ˆsËwS¤%¡™ˆ'O_’i:;“ñD™’î2¨ëòØòq,lQdQΠb‰{öXè)'5ØÌî$^ÉÝ“¼%©)ëT’ÏOõövðC̆á”3ž[H‘%bëQuR©¦#[Ì-øŒ#Ú‚†Ê¦8â…áijŠéõþ#1ŽÔZ¯‚$UY¡¢3J”CDÍ­ž¥…ˆ a½•ßS¡uÉY‘L]~k3úÖÐ\­ ÂávrŸŒÆd¹)ž1~&W—µåGÀá,ÆîDŒeXLª‹?hNƒß°·Ö7@jH!­#˜ú±Rí(`™5<-ÿN ß}täùÂh‚Ûa.^Ûjk0øì¶¦î?0ÈòMÖ\[¯—]Q‚ç½Ú”<ŒÂG!F÷(î•%3f*Õ#EÕWT.<ï«ïŒYR—³$.½16%­âÌÒ[tÖþ-ÿð°+*y”Ü%wϵ>ÚÉš~"5PúÃO(mÆÿNÇyÿ›ÿ[ VñKyVñ¿¿ôÅÿ>ÔìÏšÿÛ{ÁÎ^,þ·²Šÿ_ÊóݎÿõÚÀLüq˜jwäGš½Á¹¿pT.35ÃÎ7­D!¸gsÞ—æñiÈ€ÔÃùâ_Í€×(®Õh þšÊ òÄç;ºÁKE£ú-ÉU<âû˜ôøÇÍMÃÞJ,½mǾ«O““ð&à]? ¨´¿“ƒ€ðDgÅâïÐä*ü†:qŽèM²‹ÜÑ› 8x⢦yC6ý_QÜáìö áÕ]Ń%ìV@p߇âÙ}„3:±_9Âw _„±…-䢵ì°El×C!"ðøàÉF^eE^ÝoDàÕÚ†Ë~»åM²-a}ƒedÚât@›Þš èüÎ+l>J’D„ZØc]ß?KºAÜL6®I6©¨Z—Þ: ¨“ݥĬãy!Bi˜? %6-“Ž4=E‘^ÍÆtÙö0Úò@ãàåš2'¾“$IÃ+ßv˜÷må ö¾DÞ'½Óše‡… <0Âõ`Ížu¯Œ¯×ƒR¸æ¬qN`þ•í,qaƒDXir<7 _+4b‚›'Øô¬i^™š*ÌIöûæ:éOýÁ™î2¤È!3;¨€⚣ÏÜõÇì’C´P”kÜ “j-;¼Ð¬ Â [-ÿjÚ\!&Ÿ+qX ôÿè¸òy Ê'£«ðSÈ'‡F8¼êŠãîìÓMwX‚CÁ` ÝK•8c5~¨q½YïœYÙüÏRÎHp¶Ä ýŒ Þ¯Ò¿ <×Ϫ‡M„Ÿ!ÜçŒ~?JéÌZ±. ødø„ÃчÇx RèœXÓþÃU„à6ˆJoè´l¥ ŽÑ}™<šÄ]Ÿ¼»°p£ºÿö‚`Á­Šü©þ?ùïöa'M Z§ˆ2nà –îô | ©=‚¦œTa<é"#°õ1ðØ‹"Ž Hv„óeóЉ&a''84³²ìùàdTZ:ÔôG'ò³²á“ßÿ€dP‹2>Å)Cžû,2·ÙÌPnµX‚ç K¼pŒ¢~¨\þs‚Œ5è÷ ½ëA @ׄµr™›Ù(`/Ä4®³ÓÊ‘Èý!r³×‡x¢Å`IPƒÐÅO1ÂáT*^¤>¢Š‡áÌV×p2db &èÑ›Ù`¹à£ýNÙ& Â{Œ¯FËžj ƒ°1Âx4íÊ»ßá´`PkB·DHÇbIEÆ‹Žn±U lÐ~5¥Ù¢ó‘Ê8ÐÿNQÑGÁ?*ÿ1 :ÁšÕMh±ælãO¤^çi¡¤aŸ×ùb.8ú %u©šŸý*Mû ˆÒªÌ:À€è2mZ$–g¡”&ç˜$o;Ñå&v$¾D‰RLžkæsmx%º&-´üDFeq|ðÍV apÄ«[ÓÈO/¿¨Xk?hâÄÝ\fÂÆÝ¥`C)¼Œ f°XVâ9dçIg¾á &ãcöð+^lŠcÝ x¨!å˜[õõóùCQß÷Øå£Šü>ö&!'m‹áüÞ‘Ôš1a„Nu‡Ãð:ÄËÞà\3DÜ©Ÿ†>Ü~»{× ÇíÃ9ñ©0p²Ú2 ¯ŒÌF/O›E4ýA_)F…CFê[9`Dªl£> RUXýЈÈò´s®%ñ¢K¦ˆ:ûÏ8ü|=ÅZþzýÛ>¬ìÈÖ6FF–HÎZè'ÂjÁxAï³$‚§’8¥øp£R<>(§fd CÙ`·”c DcÝŠì燪—äð(äB~Œa—Ã(l gÔz?²G?1 ¬ù±vDÓûŽÝ'³K¢Ð WTM-ÒªÅaé‚^ß_?.§\yá<ºf…k’0ÀˆªßóQ‘ 0U—^D•óΨµh]¤i"gìå2¾Z&½ÌýòV)zùvĪœÒï¶;ˆ&À<처•ĦDñRaÖ“–Uµ¥—i÷÷¯¾Žfn>Ìjw‹&Ž_Ž@ÁÝ•¶ì8°V?—ƒQïË$[]ð3L wÅØhoU;‚ñA>¶s……w…ø~0'ç(9Zÿ“_T=”·:ÆB©,ÞmÊOŸ·n le¬h bÚÚ¶æÐ°OG•õFZÔ¥ó4[ž9¤S·l›T*™”9Ì{'u.èÇQ“:z-#]g½1¿¢$ôš&µ­‰h…×+Ž[ lî©:S`(Mx%Å©’²á¨`-Ta2ÕW¡ätý¤aÒÍP³„£i•=F¬2­«ÅçÃüÕ+ׂõY?3†§ÞTûζohDÖèˆLÑnð‘M€Îfù(m„ÐÀM¬ÆŠë©|&³eæ¤1ƒmçÑ`à çç¦ §6²˜z0§ ÌuæV ¹ù¨(‹³ŒñÝÐíðÚõ »»q&z–v&”µä7M»_@í½úÚN»Ÿ5&£®91Õ™øÖxê…láüàtí¸!‹- )[ˆ²6“=TykRW†Š*½YBý0­(y‚_}X‡Í4UBéjßJºxjŠò”ûì×Ó¤ŠÜRøar££ØZÅ*™KÇÙÕñ†ÆŠxN“7µ8ò¯^IVEUãkŠÏØŒ2Å‹¥Uhž)Fs·ËH"ý qö¬çà°– t®ØÛw¤|ýIþ .ÏÅH€ÜOµør¦¤²³à¾˜ªAíÎ5ÚfÏ©›Óí(Ž-g¿³:½»ðIß×팕ÔC8Y bÒzxõ‚K`­€cÍ—~ÿÖ:‰[9ŒÓ!u6KÔ0•95×Ù,þ ñ^|ˆzÅQeNU–SÑ-ü[ !Û<ÆR/{†Wì% ¼CÖ$È!_G7£) (*ËÑúqâ|´Š@僄š{¶™òó"!ûe,/…Ý‘o"Á¢}ƒ›sEÞöÂÜÒþE‘¦î´%©åˆ *DJá +”[üT¦]€Âž¯º\®ã–9Tp¾/‘ ø9úe¦ƒ½›ÑíÂû ¿.U 8ITÜ«õpœ$ž]£Ek-Š:[‘ý1þ.z»æw‘êG†+î£3§©´Ž±’¯ÞpEÝbI-.u¼–›R…>¾C•u½˜£qø94P{ -F—˜@é¥[‚‚ ÇœÐí#qŽ‹;´öÀl ¶£’@á ’6i½áÍÀ‰TÖÎv·L—¡ §~—¡Ça˜ä.¬óø #°õœ.ÃÊæÊg¸€ÏP&Éâ‘ß|âKæózmŒ#ø»ñ$‡9œ‡óؽÞCà ›ÅpP±ji"ëÁ]ȤZÆ‚{·Œù c‰FaÁ¼Þ¾'w¢4Qí—3« ׳«Ž{°\ÑÚâœÊs¸Ë[uå\Ž{ÐqÎ鬸¸ŸeûŸêgÉyµ‚•wp^ï`cÝìܪ‹&ëP*áGS‹Ú?“^²$¿`€&ÖÀИr *­iKƉ̉Âƪe#±‚¹ X"CeòiÅßÛ-¸Å^½Ðp•’rþÉ1x W`2Ümå\¹Ճ˗Ç}T\¬üà4|b¸Øî=„0xñDü€Ng_<Ð7þÕß×ù¼¼ïßú—«ÒåÀòþùiP:{óþ±'Íù§Jؾ?£^ð2ÑõWÙô»þ*yÜú“¥¸þ*•|®¿JÉ—Ä2‡ß¯RJñëý­œ~ÓÁýy.¿Îž¾Je™ž¾ÊÖ|ž¾ÊÖÃxú*Ûy<}ÚÏWÙ¾KJÔN+zýÏ’õ—zŒü¯ýÞhøˆù_wv‚­mø~ò¿nUVù—ò¬ò¿þÒÎÿú`³?kþÁæNàÎÿJ°³šÿËxx¶[ù_a¯7nϪ’W Ôwõ ø«yÚ:)‰”9÷$Ÿ.sg~ÝÚžvîW V½‡8°§§9$$õ#… AOt+K£ºß¬à9ívÐí‘• ?:öÃAèMÿRln•Dûè÷(‰Ä"IgÿC KBºYç¦Öé⊌Á÷dÉILEë{!HSVÚ7hÁ´³(Æ¢?™† ÷'2a/ùÁdTÒ6‹ÞUHÎçÈ/§SÔ"‹¦³ŒÎ&*±¡}¦Ù8/Ï1ÛìˆÜyøQ>jàGêVeº«ä÷ÃNëJ0:Ôí¤$‹—˜cÊa^K¼c¾¿ªkkœÉÍÛ$ë ÐÒï„£ ™äž‹ %ðÓ¤¿–#/nδí[h!ˆ8¢·ú”™2orv6Óˆ±/º–ÛI1 ¼÷&L¡ðó¨X‰ï|ùo±l‰sðWÌ‘ÊL„¯ªFô2âVZ©IfKñ–ä£nâÈ-87³Á4Äœ6cö#à de%Ñ3Gœ#×8 ‰â -ÉÓÿ¬tžœÍ™ÁIa›Jq©ðÐÏLéy`K[8œöǽkQ™qgªù5™Žg½élL ï#~W˜Çë&ú&.M¢¨eFŽ2Ýí ŒSL5Â5T%%ž›NQ—T¾åË/+²w-x®W‚j½yÑ©4“•’RZe%†ä”Œ*!£›&2¾]çÏÊHé Rör¼"SÛ}zÉRbªœ½*U]hW/ bËÛ‘§z';.í’Tîî1AâIõýæ(4“…Yyþ2Ó ÞKÚ¾X"ÀŒ´}±4°m¸ õrgð£Õk{íæ±~‹§ÞCuôÞSï©eÜXÌl|N“Ti˘o¿ßaK‚;!­Íû×}h3A¬dëZ¡ÈCÔ¡Q³²/›sòÎé•ÛUåHQ„Óà?a…ïâÞ t˜q:"Îtt놸°Ý»IþQ'D‚Æ’Ž$u±f^rƒW'S8²”™ážw#n^S¹ãIpuËľ@°#Ü%ϵ†^#þýt$ýBiäWŠÀ4¦å„xŒžô£6ãö ÖóCþV㛾ɖÎz2qß!Ã;ï3%Þ ¬E?·æ¡ÁðÖy ú†:ŠRß)¥>~ Žk“åи†ÖÀ5ˆpûšñ»kÛ^ÝiÂZ±ËU© =ÏUðìéÂ\‰¼~Ñ€ª©ÎZÁs¥Í­á¯8µ3=7¸\­<7ÿÇôÿôÿœ]>„ 8Ÿÿg;ØÜÞvƒ Úwv·Vöߥ<+ÿÏ/ýDþŸ‡šý™þŸ½J°åÎÿ­ÕýKyx¶ÛþŸÃ³óšÇGÙ6»}ª”–?~»ŸÈºà¯øËzôe{@j„GãKev<‚ëDôonúƒüì~t‡â÷î`~Æ+<þ=úÏ‘ø=¼ê’}Ï$tÔ@ Zaÿêê7iŽ¡ÔÍ K•MoVÙ\]‹ñi17—Ù¦´ÞXάÄ6ñ¯õ“wú~½#šxBŒ[’ýM‹{”H’H¬Ôa Áu5‡»)¿/)±]í¹|Míã”Q–Ï %ÿfH!õO€opÜ zxÅ~?XnÃAxIQ¢]¤¢ï;Œùs<-à•j!ºšz×ÐU¼4>:ËS]}ScMç`Ðh³ßÇöšhùv¶b»]wñ®³¾¾ðL™èrºMðÂ]Ÿmlœ$¸k êÛUNЦá›ÜÀr€–.e,ñÐ 'ï`1£Õhåp†=%ϼÏ*&EßpU§ÌJRÈï†f†¾¶Üoà}Z2pÃYžå"÷}Z=¬O¨­¸5×%oumøß,¥N r½*ßL;Ë7“F–®‰P½Ò²IsÎv½QÜswüY}½AtùÝ$&-¸`’ cFˆE…( S¿à÷•Î}1Ø—…·–¶’>$›ÖÇêå3X«ÈB·^ÈÆJ9“òÁÍV­„‰fÝØ 0‚´áü4À;ÆT(úf $}U²ÀûÉõh6¸¢kàh=ÚxÞ¡ˆÊo“ˆ;›¤1Ö!X ¾*ÙOìe’"®€@ü÷zG{‘¼¤U¤¿9—ÏÊï”:í4z¥Oû¸x ¶mç´QûСýþ¯Žü¾«ã]×®4zjdŽlÓUmVeNÍó“’¨ÕßÒO¦c‘󓶺ÉÌë`KV]>œû\giN/ŸBÓ¨žìÿžÜ‚Q¤E’êhHU0GA¦’’Ÿ­‰uþ”º}l{ñr{ðêoDüq0½â^<ë–1ÛUç¸||uxÿ…@y›¼u‚q®“â°‹ùëlÇ›`Ï›@ÓwüÕ1×jçß›Ï%ÿ:—æö¤íMzݲ|u¦ÅžÙuxæisÛã›KißÁiÜýÓvHT­ƒÓÿð´ÛhtÖõðý#oŒˆ~ïQ<ɘn ,ÿUR2Ïþ'#«¨SóȪy”·¦ìÕãÃdf-É“yÞä§”ör_ëÍv¸U×ԲhhÖcmxzC›sdm~›Kˆ—ݺ© ÝˆçòOïDuç*ƒ­¥ * mŠ"®eæ•ÚLÉÕðm¨°îd|ˆz‚üPé”—ýi>ú«ú×DôÍ¡ó¹«@Œ3IÓ>Y3¦¾ Œj¼œÙÄè÷uŸDí!ˆ9²ÃUSˆÄ2=‹@²Gimshºñ”ɬ½ã{EÆäý ŽËZ¹ª)Òýú^6ù¿;ݯŽâ‰áfŒð~ ¿ªÐWƒ•eÑ)¶B›¨Qðó5ünø£+àeÑ,":Èœý ¸‰×¶‹û›Å}3Q,ñ9âÓB©€£6ócéuj0­PjâŒû>îCì纛â™ÓBj{»P7{{îni«¾±6Õ¹hÚQ|ÔÔËÎyây⸓V„§¤gQ– «Ã¼q×µ\‹ÚCµ,,Ÿ—ƒKnç\òØÆ„Þ\ ôÊh:ãô> U6*¯uÒvÄq[MÓÁêdÀÙä·lªÁúdÕ€£b»úæð¤ÞŒzlʼnT=ª¡«ÓMC\Dæ°:ŽžHK¦¢Î¨8ýúšqÁ·®Ö8}[à’ê»Ô³•,Ñ‚<,r}ùuQØùªd(ÝŽ4bhJ¸´pÙE¬qU§XYœÍbÄeDžÉ÷ ÉØ5c¤V³Çx,ü××ÇÀ(üW°ìîU0ñ Æÿn¯â—ó¬ð_¿ôcà¿högâ¿v*{wþon«ù¿ŒGîÛ6þ딸ÓÚÇRö^Á¾ü£•žÀŸàj"Ã{ÚYài޾ö DR¡^8?⮲ç¨$³›ó€ <Þ«–>Á(>pðýáE‡B¨M?ü lE_9ß–Äè}c˜ ´$¿ì3ô#ð9œÝ½ Ɖ™MCæ ƒ±¥aê¯Å³&Æ{«h ³•£áà‡~‘T…ÅìÅÆ\Ñò¾ˆõ,ª(ÿŸ¨«ñàñéÏÚ"¬$lÎéPÀ¨0.Â3¼!!ÖcJnªC…’§™vÛO™&ǤXÅé»ÑŽÆ3+˜zj —d;b¹ âíˆQHªbµÃeÞ÷pZB# 9I%±hh€N6K)½GÐñÝAlê%¾¸½¯©Þ7âÆxî^aֽƭÙ/§â3[Ô£âçÏÖˆgÐÃao0»’¹6L ESBQ¿êO¦ãÑ¥!ÏÞ«°8òŒb¾ŒÅ¡Œ“^H ¢i˜+ŸcÆáÙ;(Ñ–±›wJt¢ÆÐÚ¬IÏ5ƒÖpmFá "Н²1™|~ž^ÛÌ$*Š‚æh¥Ø,k–Œ½áPïîúöÂþ°÷£Õ,4këÁZ±iMEÎWЬ¡4蜓ð?û„⣾Ù=Vêêaó" ŒV#įAs­”ï®ÐŒÎ¦†ÚÈdÛÎÕ+†÷±c 8B'AèQnn›¡Ô*Éz™>É|{y@üíºLäS8žLyéôÑÀ-h8ýñxd]%q*ªLãþ€®ÍšŽdG~}až0\Be£PcmähHsKti”+kO%UCD%Œ×|ÃéõøÔ 2ÓÕ¾ÏýW"4)ÈAõæŽEUeȉE@"B †îl‹S¡$2Wáa1ÕûTFÑGÿ¡Í²dÀO¼=î·Y2 €›iªä~Ñ}¦S`J%¦Î˜'Ù‡LüŸÐvúþ°KÇÙùaëß%Ê"û1EÙfm»NÆÉzóàþíTÏéç{ taZâYG4êht|ú®ZO-™ÛÕfË ¾kÃQŠÞÝb£iõ ÿ¬¿=I»þC¤ã|ºCJ whÁLîÍ~£Úü=‚ò‡ÐÓ))4¡S-¥s¥Ü8 Êí}Dt¶;‡g ûçÍ·øÙÆ1ÄPóM _ï3UG"øð>vXGP5>W‚B¨ç#Mƒ–­a  Bó·ûó2߇¤zå eÊ‚|¹‰!”ïoz1„É ?$=n«“xžN/–$#È–[~Ž";†ÛÃH€¬sxo4ñæ~zÁ3–Óg†¥¨ÿM/%"ºvúV£TÙM³ŸÏ9¡6Wq³£óÐ}$í  FÊ–;-„ê÷‹Œ~çËrx!²s èQ‘í™#ùHf”´ì(^ºNµø}Cïã«ê*Xÿ¸ö€ðܱy]5î—ÝOIÒb÷ùmc0z×hJb2íÂ2­¼•X^Îî'8ã…Ãðfv­°™…Þa Tñ¢‘¿”I>Ç:ò»4GiK¾Ÿ±%Ò¨¿#÷"§‚ªkmŠÉ‰.Äíà”I æÓ¸ÑIfØG ²;þu7Wd!m/З“gK&ë¸:bA£ñŒG:˜B…´™E¥ÉÙ‚¨O±5B1Æšvpø¨ÅÃú®œ«×/æ£ lš±üDT]Jn$l.´ßP‹ì&ýG! ¬u ³Ìô¯vœï>¥-峌ŒŒRŒs<·›Xõ³g¬pÙ¼§™üf];¼ê¨Æ?˪ht…M”½åÀÊü¾¤Œ¡Ô†èšK~‘ÿ†]ß„wEJ}¯î°O±®!±Äy^YñØ0˰é¥$OwXJq˜tä ¾M” 'Ãp Ò.,ªœD–”;C -ìr­ñ-ÎÜ †ŒÅxb-Ó6à…ÙK-ô±×f¦Ë¹½Ëåg4 984¤@·ƒ:®´oWdËÞÜr‡Öî¹½ÞÖ?™÷=p š†qŸ£-Ëðííxt;ÆÃáà‡=8Öätç}ªBxå4>ŒA’dêŒuá„ ½‘¢@whðèÿgïK»ÚH–6¿Ï¯ÈÓóÁ4`ßë¾î3b³eƒì–Óž3oŸB* ÚB¢µóNÏŸXr¯¬Eb±ÝVnRUT.‘™‘‘OØËš×]X}” ãú¤£C9ïÿ]–Ýšm±d2í, ‰îýrñý¯˜ÿÁ9ÿݬ/ÏçZâ?~èËÆ<Ìè/ÿ-ø/…ÿZ_æy”‹G»ÿؽ/ˆ8èH£N>ÕJ³-!¦¹æ†¨fí82P$ô† 9 &Ù}@4 ™ôÎC¨Pýx’ŒÑ²O¦È”?a1ýµK’û ñLМ%ÉzkJöm”Œ©1ÄU2èóâ5û’£3Ð}”r>ES<¾%˜’§IoM´¦â&F@Ûà¥ógB´80&.`ísa/8ùcÔïÿ<™MÇQoZÃxbáA³dÈ›IK”À“Y’Þ¥P2Ä ùÄ»ÑTªÓÕÃ÷5þõwóëÎê¿×k2~°Ú ¢÷ˆ½Z¥'Ÿ£³Á-Áa‰.ã/Q?îÑþʨ~UeC9NñdÙjâ >¹‰Å§!ò‰œ#¡F¼„-!BKˆÐ"´„}G!¯5Úâ?åä]ü–+Ìþ|O±Ÿà÷zPYÙd¿¢´ŒÇÛè;ÎqRF†é>í••Æ×‚Ml\: ;…1˜¡IÍîÒ‰äöš¤ñF Iög&ï%ždޤ0H¶„ ó uôo­¹!J?F[‚“yÙ  /10:¹#£c YÞ‚¡‘1Õtæ;ŽŒçÛeGøùœžÀàæ-;0‚£§3÷ðqTMî'>¶œ´’—>Î(ŽÑÇ>­ìá“^K.­²ëF+wx´ìáѺËðhÍ38 q]‘ã©?) äϤ§;ò‡‚?²;q g~h8óÎûß]XóîÁš ¬9§]$5Kpq'õIk }~è³,Ó^ℽô±¡.?O:é[á!mÏPJŒü¦“þª%¿j¹_¥!Tª›.½UåûIß ëâírS7ªÚÉ€ó}ª\Ö«Ûê1ýÚt­˜bcÒ KªqÀ˼+s–)o÷(¦é'¯´œ Ádú›ŽóUÇù®å|×ʃÍscÀòÙœoÿrÕŠåu´ÀÎüëë!‘--²µ€ÈFF£Þç¿›ó©9èþFe5¶Ð»i>Xÿ¿¿Äï/ñûwÁïó'èæ½Îx~³¤cþyãÝØwðk¥·hUä7@›ƒTÜ€õ”Ž ’qÁ \&‡’p}@PÚxà;®TrÝDeŸ’^f“ør4èÓn4œ îD¼µÇ×ãxû‚Ñ/έêœ9J9ÍÇ h ¦ƒ§õ$#ŽÀïËvÖ®ËÜ ÈN»k#õ®ª¶çR¨9¯ÐÔ‚¨]Cû‰?üKèi@U۵̊¤¢4tç÷¿Cašº™\¨e€E~€…Ý%)Ó6Ó®Í1js"+v—¡?æåÆŒ¿bü‡“ÿu³±Ìÿü8×2þã‡¾ìø‡ýEãk£¾ñÌÿÆúrü?ÆÅ£ÝÿÐÁ´fûÕ^`÷}rÿãáülç=4·»”[﬜øøG<ª:~ÿþ£J’-C7ÜS(ÉwL¢³Lß1Äê>½Ã‡ÕdL ô¤Œ+ÁN —dwÓa~¦g©¬9w P!ý‘Ñ'­Ê[áv™3t¥cBW&  =Üô–Ž_A)ÙÈ_ÙË 3€ ;m¥1_ªz=¨3æ‹NÎ !3ÉFì”Ã×)„ý!ÊH†ý¤sv\JÌ12vuÖœš³s‚K8ò,‰#¢Üpûb(O4‚nàߎòøÖt+Ã3ÚÂv,ü‰QþÊ’=ž]‰ÙkÞA ̃[Ñ!$«£<ì©XR JÑÝh÷Þ™L“üWb`-5 S!½æ‚K…©|Ëâ|<º‚F'£ÙDüt1õbWüבñ•p‰PP%LFðâZT×Ä«qtµÚí]^%}‚1™’%ÿM7Ñ øyD³Èc è$†âpf¥Iz¤§ªaU¹'ÓøZ£È Â+ŠGèûUêAn¬¨w)fCVŽ>³6ŠŠ†òÄÿH!x+QUÕÁ^{’\\E¢…@-ÙP5ªü€ÆÀ®…æéc.Θ"ǰp7ÑЄ /—ÉÅ%CË -EÔëÍÆQïÖ†õa¦rqGzƒQzeóHï‡ aõIá4p ˆ%²ó)÷ÀØ ¼)îжD8±DÄ£ƒ>FUfCNd÷«ž¹^>¼Òž>háþ(æŒÑ—Ñ瘹(Ñ˧·X2ö,TãTÎLïø…†–ÌÆ„µuî»'½ø;O¦¯r>Ø‹J²Ò?=´|‡ªC7#ô&§è¡1´Ôõˆ£,Ta¸œé kq,¾W¥Îík&Ó |¢õ»7€ñÈ1SœáÚ*OMNÈ0ß ã«,“Ëä|j2bSÑXº{áeô€ÌU.Ç/£&Ǥè^µH\Zß3{¥Ò·*`CïxnæãñsFm'1â8Hì‰7³qmo4L¡8ûãÇ´Üà¹Þç˜S”Oo¨·­öN­abƒŽk +„ +S4¼Uí%ê8¾¥±ã3åÂå« #Bqɤõ’§;^05`ehÌŠ4k¬iíjDÊKØ@Ö“]ZAžL`Põȶáf‚þzA¶£haÊó?“©è®‰]X8ü-š1ºÍÁB$8Ý žN_ˆŸÙ凖9i&ùT ×äö Ê?Nzéá+uí'–uÊ„çà">GT& mÂfziMlüëy¥æÑõõš¨¯6þ›„Ù®BõõÍ5¯†áꙺ½3EÞsf5õ©ÅN¼Š®¡œ¢ÛjŠ7£áª@ð¡´/àÏÛIÂæ[Þ“Ñ`M4¶äÊB…›WT¹ø Á¥í´a}+«PÚ&Ãw•áÁ–µJóH7²ì«¥Í°úÙ 0Lj¼úI. ›Þåb\롟¡°kâxgûçîî꿟Ãu)ãxÇÚ†‚…]ÿ÷¿Ÿ“¾â÷\Gñ"hDÝ(¼.N¶BÛN àü³ˆ˜N2Å ÷FC²çää•Äq¼ú|kÓjVëÕšm+Sðgû#u–¥ÕÆ— GÃUeÞ&µ‚ʉa‘IdS–‘W“«¨¯b‚Û2ª‘`jrE”¾‚æéc<2kGmVždÈy¼Íë.©+ðÞè ›¾?£i:ò«éÅ ¼M0œõs2 u027ìy‘öáwJ3€ê­×w°g"˜PÎU»Q ø„;ÓŽ´T1š Ùõ§¸÷3$öž ûk¢øÈ滌ç«`¾Hä;|)*°=9þ?¸¤Ü—´à%(±u€@ ‡3þ•WR}Ñ"Á­ÀÁ!ð'Hå0ˆcœgÄDÏ“jÖ8°%È!A[¨0ŽB,å2’|Iþ@‘äEÑÛNȶóÞÒÑÛNȶ-â±£·O\ Fo}~þ\]Ð}4¬_ªXÙb8°YÎp.Ð[d=MG¶òÓDãÞ%ú\DÈ–í?P§“` G»Œ©!s3»4Õì¢"Ÿ¼ªYM×:Îü*]Á–¬ òUÒáéÕôF“wºþÆ&¡m‰¹»’³X§jpjYÇp>œ_bQáß6¡Ç0ªnýü¶r…„¿ã©dž¦:QMÅv}vo£ŠEg“Ñ€Ö=ŠT›Ž°)FÛ@€®_Ì<Ü2jáKr9Ë&yazh6°F\9Rdî ± 2`W2ä`¸AQ€µÊýï¨væ¬qÐ+7I+èÚ ±Þ`*IE ¬‡ª-žÆ¿Ç#þŽþ®ý}ö·¨ŠšûçãÀ{åóctãµÂ$òd'ÅÂMº,NIM±(ØLB@PðÊßG›uz†qVɶ&׃¨²ƒà²4õUäµP£0àýáôé¶9lÉQ…úô]z›]0×~b³é’§›È‰÷DÚSçbÛH9”›/§ð¸å~ŧ¢1Ôò5ú¨ô¨)w¯° ‚òíÆ°Ûøáþo#hÖZpkó?7ÒѦa'S^á>ʛکꚀ[i±C tþ“8 fyùè—'ÏþX“&ÍaÕ'˜É§šZåWQ²Ðêm!vuÊ’¹ÏÛn@é µK'?SíÊÀ²QÑÂF•i{R¢ÉdÔK(Lœä|¨$U_?RqÖq¢:F‚o?ļýƒ5gÌAüÐî8ßQGó«ö×Í]Kh†.)^¶ŒMúñG5•AÊ5¶ Î‡¶ Y^> "¦·Ïd šÃÒnÙšr—KmJ³bÝÍ”þ¸Æ’~%¾`¶[éä}žÉÍǹéù  Þ¢±¢75ø°YGfOãè$4 Œd-^slW§1ñ#öààÃÑí3”QŸ´$f»OâS]ÂOÒ:”unÝXI(*xnÝ"ªŽã …'ÀWŒš&Éç¶'¡ô$¼dOÂ?+*”Nî!’Épõö`^9lìsW$8>š|CIç–ÌP9«¸TñNYÏ£}²Ÿ®`MÉ ŽU‡ê ³¸úw”þw¼°¹¢'T[¿–ÜIÿ4H•Zåt,—TI&i5«¯‡ÕlISôO§)j %}…L1ŠwÜŽ¸ `ûP4xn7”¼6ø¹½×éîØ÷¼íëN£!y–eÖÑõµð›inºãM4štÀ~¿wùp×W'⩉£ .ZÄÆóÔ¡ãÁ¿àYäC ¿îH¥Ó<8Øk½b^üéQëíujâ¤I7±”,•‚áîÎïæŽ|Y0û®³ c‹!N¡{{{ïTܦÅÙÓÚ>àŸûòg÷}>[Œ|¦ùÙ•?äOIþ³gH€rÅv ù£m8€ZG‡ïa"~ÿ½ÉãüÑA⫱¾å×Öü?9d²SE± ÿwߴ޲ ]‡ÐTåHƒ²_-ƒç8":˜j|r@øâÀøñI„º¿“Iò Å%ä=–S‹¹I„dòSÆ:Ôä)2þüÐ|¯¹„rš{çrY)Taþ0ÔB¤Ø¨Ê2ÄZX©9×k’¾¢óDFÑbªÌ𨍉M‹¨}¨¿ˆ§6s‡êã.^ÝÂ[úK OŒé[ZOìÂ&$/Å+ó U\>$þÔWƒŠG‘dËWT3:µè¦•TÓͨoÑ~4ßúÒwO¿$»ƒÊv§ßeÏÁ¿tG>§?SŸÓ¦ÿ|NϬg­oAˆl‚PP4é‰ 5NŽ‘ÜéäÀ£B±^âÁÑí|Aë« ©¹àWùõq_÷oç óÆcj–V›¨ZJûásŸæñôfÝ•ê…w‡˜s¬êä’cì~´j«U›W~—Qi]¸­ü’ôÖ‰Œ϶ Ô‹^íI pDYÒ®&Ù Jödw˜¢aÓ´ShüT,F©ª« ©9ó„æÌÔSf–~µø65i‹à4˜.gɢЂ¹R0ì}´µB-aJR½i}×ð¿óßþO'æ¢ÏeçÒÜ#üÿË/®JÃŽë¿ {WŠŠ‹÷{H¥F˜=®D…í ¿ßOèæ“ë“cu‡VX‹,¬û{I²° 7XȲ 40ªvß.Þ:¯M vÉ„Äd5íÕ7OëšQ Æ8zP‡¤ räSïÚG­ö±5DSÓ¼¶QòµoìWÖÝW6r^˜[d€™¬]Ÿ«—+ôƲ†°RRÿ)a´Õÿ*´Þj÷'¢’x¶¨0•Ɇœö #r‰Ñè²—®cy§ÁÌ&êh†&ïÌÑÕ,£k}M½QQ5_ð§íÕz•ÁÜC‡!ÇŽ;çÀ«‰‹ë”'Û˜CnŸäY»BäÉØ]³[Uüp+êƒoÕA+Ò0ÐÑûèüfÒÏ¡[øy*¥´:·¥ØÊåM/xHæ¡VÊæ—gš8ùÒŽjÀÎî ú7Õ|㱋&ˆ`òWÕx|ð`•¦³k5yŽb/õ —âßÄ›æÑ¸q°qªg:{ÜP‚§:¤UIYKYM¢Kè®uà\ºŸ5|õfœL§ñO8¤*Vð© ×Ñ#†®Y)- ôÿCÕiœ]Yƽ`÷d3íe”1ÜZrrðvOCðüVÐlYv tØqšR·¥Ý˜’ò-_ÝñùtuD̨>F×­Ãzé¤M+{¦’k®E,š­åêl8樊­Ú·µ}ð‚<=Äö5H.ÂþÁçïHcè­Kc9Ê[Í\éà SYùÃÿ¼l»˜i]nOºLÝ÷/øÇSö:‡ F_L÷: ='—œ8Â-)•ß.W÷=·,Ðêk]À}n´ýƒÔàµE{Œ8pO–Ë9ˆ&º…’gZ™? œ°KþÝ5¶ž 5ÿ"ǘÕÇ}<‰MΠ銂øl©S¤u|J[»_Ooê¾ ëàè9T_igÖlŽõ Ps­³¶`:B²ß+ki>çÅϸ‹F‡õ÷^¿'S+ÚŒ‰ytŸ­ót*[÷®Õ@Qn¦–sš{ÈÃbê†GbÐtkûM0¾t‹f;ܤ·LH6‚[ÇøWЦ„u޵lQäüR[aÜ “µ%­H÷»²_CEË!ûTI§äÓó{®îñ*BW”×ÁÂûhϲ<=!L£òß’2‡ï±$ym`´«D¬8Bp+&ñüèÌÅ#Ü•ö ìAÃNQ>I hB¨–ÎýŽZƪ+¹öëK:Q¿2¡áÈWªå<Æ*&¤Ê~^1Uµ Y×£Ü; ·k>gR—•¾0|ýVÌ`‹À©šiŠS&6M4«»“ž#Ac;ˇ Nä³Àµ”^¸îè\ºT!Íé¶do~ëËGʾMÌ^PÄk{¨çëì–é‰Yõ©5A·s•H—:@w+2][+¾[9·Ý…Ÿ¤áÕ;qôNl¬§¡îÁ˜ç·z‡ˆœ›d[äÑlöË&›iEk‰!JO€ =NÎíM¥}¤šéÍ#|•·ŸXN’À÷{OÜjÙË6—DtÒ3¤êØßŒo‰2unÁODfd4fM-ýš}†‚Lš,Õ4Ís0xªÖè/jK=CÊã¬ÊœëŠë"‡MÆó©I/]-óÁþAöxKÏ}wœø™õ²¦°R“Wùi+05e´JhÂʘ”îŸF{cÝw²Ý«ö¡5¹=.«¶nßðÆ8šdÈaW²&L¿]Áö{0Âv¢#‘|n Sÿð˜Ý}'¶´÷óЭ>hÍç|!ž >üPAï§ó ˆÚQ(ë j`ÍnN«¼§Š.m’^´å»ß¼ |aÁ/ƒÓ›)—lÚh…å òMÎdô´µê›»‚ŽZtªh!BRrßdÈ}C÷bQò¥¾QRC·Ê¹ùCó=MÍ|‚Õ’ÆøÇ”7;К[ëNS:_ë³ØS+„8Lq "í{€‚$òö¡yö‰yÞqy‘|gI$ÿ]].ÿû—¯Èÿ¾µUߨ„ïŸÿûÖÖ’ÿùQ®%ÿû}Ùüï3ú‹ÆÿÆÖÆó ü7–ãÿq.í>ÿûéó¿K¯—_Uì#kí7SùÈàOD2ø%-å7KK‰b–¼‘KÞÈ%o¤Ò°%oä’7rɹäü:¼‘{µZS ^p H>ÀšÖpFLÌÙxo`˜ñ‹ü çH:¶A½J©(tÏø Ìl‡!ZI§ ß3Ñæ?”÷ðróKR}µê—âAL+‰6—<ˆÇƒs¹ýA:lL©l# IÕï 4Ï”DÝ3µ–*uJï–•Ò[ëa.‰5ãš]ªÄ:»‡v§=ÿ’Ðñ%t”ÌSÿ4¦Á:çŸ ¦Ýº³×)Ðr,y³ø»lf-¥²Ým'¼‹HŠªë6$Ãæâ²IZ®4×<ü™Ëàó•v5‹. nË<‡Ó˜(Å|Ú^|Ó‹°KÕÈ/G8Ù}$Táü¥H¾%ËCa…0xÓµÀ­®Ö’Â)›ßš¶©½¾5R4#%Q½à¶CAðuDlÚV@ŸtŽÑ Àt|r½s\¨_‹!LÞ2/9XžŸ}§@ì ªhž±u)òÛáË>U)Á-æqŠ1#I>0¤Ë.äcØå[M &lž0:Ec‚°A6s˜!ûð–‰Â$ÝW{;GÄ’ŒJG{Vfôz­a\…`Þc9µ(KV†¸KÓƒe·¶æ;hî <Ãv´÷[Çæ{•Ë#ÆfI bó2…1?˜á {@¦°ï‚ðKÕÐ}9d_KV­%«Ö’Uë±Yµ¤²í òBÈU5Mä¢u«Z^Ë€}§óÅ„^â~8½„Oë÷ õí“OÝ'«ú,,eÂÕ‚£(w-›ŠfÏý\1Cé>tÊ33uÞZ˜eù=¼HÙùÙ=:w ÷à¼ôi ƒ ª A†Á'¡­¶ŽËþ­³fìùÏœà™¼Uu¤7¾•ïC„ ED1˜‹h6MÛô™Y,!är“|IÄ…äXÖsò’¸Äi^FæáagMEhX#±ø¡³^Yƒ'EœÀc!4\ø*$Ñ\<”Ï"Ühù¡ì"Íž.paŒ³ åfckCËИue%kecÝ|›^]D9 t!ª‰Í¯H5a ó{æPå×Üa柴Ë|£V'Å<%»ã!¸'ëÏ×`ž°µü.ÌÕù:¼üA:`ˆ¯¯À+ñÔy3íýSCl.©!î“âÙýQCl}SÔ[Kj}-J !¬Á“ÓRvcië¢ÈôšËÜù&»Jú6óѳʼn,²x{s-JSœ.É)üËæ¸˜4¾þ‡ÍgËøïG¹–ü?ôeøjôÿúóõFÃÿõ%ÿã\<Ú]þ‡WݘG¿¿1?lãÏí,†˜€Á Žæb\( Y`X ÷…äXÀ›œS&cB«Áv……ÎEe:" &!B‚Õ~Œ$êÓX0+¦¶ pÚA?Ÿ bÚDãÉf?÷í`8„!cyC„È,õ¨Mså |>ˆ®ÎúÑÊöÊBÍ“7¿Eê|+Ý@2ü\9^Yy]]i®ÐïqŒ¿¨ðëÔ{xßFàåÛöë¿ö¯o¯8¥úRË,Ð1܉¢ ÐøþV°ÞmŽè¸Œ>Çâ,†û¯Çñçd4› neò lDÄ“„•cBb@ôÇ÷ïŽ:û%(¸Ž¹Ðð/TÜaéFôbÿ¹ ˜¼ª—¤ èO¦m¸¹Œ‰§B£Ô¼@u[L:šßÐp×]Žn ;.¡©©#Lëû¼ )F|¯wOŠïÁ»f=Àaפ¢nß ûÁ=¨¨"[éü°,ùA @&逎 ƒÎƒ6™Â@!(Ñ „ø4 Yt²F%hL(ÿÝjT¦QB5r#|Â1TÉ '8ûb„1£fEø¡øÑ…]apÜD¨˜™‡æVØöÆIž2o{Ê|ÄÑÚªÉx,s|õÎåhO>™)–Ã1dØ Èò¨vìÙ^zÕß^cIéê/õâLW‹‡½|å¸ÊIÿºy üLÁ7 =ÞMQ([ßhÜÉñû÷y!!o³[£ùö-ØloßæÔ) ƒŸ7oxó”`þ¯÷: Fý¿:±²ˆuOèG÷$ç<õ>Ó‚ßoDGV$ÆExç¨Ôý©€‚ã'LŒ 5´M¿:ZÛ˜ŠÏo³ñ±©8†òXüì| k?v~+ýìvÙg=P¯ÕŠå!½°©)†ô@ÃÔ/™‡^Üúò—(e'ÓÄöŽI5÷Vá Rt+Ç×}d„1æ°Ã¶UùôbXƒÿ}©‚f†¼Â¤ò6}°M_og}-Ÿ†Æ[WV©;Ô£|_è\ã­Bãgjx˜À·ê,o'B)ÓEÓ9xޱƒ˜£U\VeVæÕ‰|E9¹©Ç¶ÝǶsÃéU>µs”~Ò-Bö KW~q×h|ßê-©~‹Þ."B4KµÓãUxÁÁµLOŠ;£áŸ³ Th £ä ž×†«ˆxRTBýr§}ª–ÅêjæÅ"Ølö•ršØ/`„m©)j&ü‡OQ¤g»¢ôAFp¹N–ÀÓAðõ N UųíQÖ`¥7•­Oh‚Ë(‡Ue‘áé¸Àöò¥‡ÜƬ‚ú‹O5øÿÞ‡œê™ÃR=ó1ŸyáäBwENGÐÊ@¶ÊÑë¤Ê¹ —'=5lXŒ5– Gl^¥šCäž +'#n]9 å<äM‚+fªÜXh¹ÐÞ´ÊnÞa•xX••+*µKÊžÉJ^h2ä<Øvl„œ—k»]—m[\ÀÊR9롲 ’=F¬‡máÅã~Îq²@¡ço«ÐèšóEEOdÈtº%ýPv E&, 6½KXÔ{¹ø¯é·‚ÿÚÜZ_â?åZâ¿~èËÆ=Ìè/ÿõ­g©ü?›Ëñÿvÿu´ÄÍuýˆø¯£%þëîø¯…á_>úkç;CÍþ*•†!Q‚à{ò“‰ïc aGm8ºšÒ/ஹkv›ïç5_’›ïçU>]ÎçµÄyÍUýÀyÝÌë«£¼ä—…ø®"@W1Z,֕㔘²ŠD•=¬&ޢɷ}/ .ò÷ªëðP‚»Þ2šëÑ\‡µ{m7ëý"·Š¸x‹8v—/Wâ…ð:*ðâ®/äa´¹ÍìáùÛwUÆ-“ÂAèÄØûÓd<¢ê¥ ‘xrÂ$žN™¶™x”4 þxµg –Íp<ÁôPT"L;êÇÿ#E\1_L˜ébÿ=Yo)@щƒr1–Nøp:š\Eêz»­H Û«ho»<"úZ}—ÛÀo X¨$@Ëœo†:ÄoηOß’†äàZ„³8Dâ’ø|j¸K‚çEEîè6A3Vßn?Ug…ÅüZ*ðtXîD˜¶>LÕÅ-!qJÄë5SÉG5È29P¼ÒU€e»àÜYW§¸ TýÕŒ’”y>]qQ®+`ƒ¯ÿ‘ºOަNrqi '#óHãÈk{4 ɪlo(²ˆÍÒ01ðPøØÃûœÏçƒ*Šïl>÷4ð&t£„XÝ;L謘óÌneÜ‚ÜeJ°K2ß”0Wì݃Ë9u)1©®f¡ìTîÖøÁ§òïºã‚–Ñ]¦ò…GPx*×U¹©¼17GeŠÁ­´Ÿy>ìõ¡­÷ú‹OO?ÁKý’7@æˆ! œ˜ÖX/PÏœñ¥…ÒȲNAaÔ°ªÛSƒ€-–QKÏœݶ(Rf·‰ÒåæbŠùG5¯ÔÍ{XóSðmKGÝ¥¼@КüÀöT1ûn®‘ªŽ4ƒ“Õæã™¦‹LV¹Ûyf«mò[Ë,Š6v$sÁÑä€}(ò=NVá-¸EjY„‘.e¿È)íÕÈÁåôÎ3–§§óÎXeµùg¬Í;ñ…—ņ^Í%6üŸx9øïÏ]ÿÝxö|‰ÿ|”k‰ÿþ¡/ ÿý@£¿˜ÿ³žæÿ\ßZŽÿG¹x´{øïm·p2•Ìßœ€ ÛŠ‘Ù:2)A3Þ'ˆÌ^BÇç…Ž›ÎQ§þ¥ä²_æÂ‘0[2 ÁÈ?ÐOUÚò˜s•Ãb>øù‰BO(Í¬ ¯D2yLÝ1W;/Ê>6Ðu §‚±Û¸õšÂó!@’ ¸+_^Vü]%L:~´m}†ŸŒÆŒ·>¥V‡—Å ãKÙ&¢Éd† ÍéHœÙ¨\<ŽJß|Æ´:\Êû–Mý>½½Že‘&£Áç¸ÿ"—Ø|»%|ÄÝ>ZQ^Ü·™²Aóš•ö>Ö–ßV–-¿–«ï‘ŠÌ!b³”ë¯Ñ%'¬_ƒù¸{Ü'÷N*YÇ=ê˜'ë8Ç´Œ“àØÚ=lG½Oš€À5G0Í69&“‹W%YI'}6®«ÂI^¯»áÕ‘«æît–h/ÌКáïF‘Œ;.ß¿Ïô.ø›åÌw Ì³Ì ¿èÚ–Q-°I¿U|*ÇÕ•[­—BK ÷"Ó„]dÎW)ص}ïŽw¯;ØJ¶“[™ Ÿ‚@TÈ)ëz¶Ð½±‘Ýþ)Ê| À Nþ‘…›Ûo¼æö»&¯¹Óh·ûkn¿Áâ,’WùÕÉ#öÝ^.þ«ÿÍðn,ùÿçZâ¿~èËÆ=Ìè/äÿÜz¶‘æÿÜØ\ŽÿǸx´ûø¯Ý{€y[†µu¶–À°¬ë+ÃZnG- ½Í`¼øƒo L¶û@“ÙX2†”†“eQ´ÎÓè~ãâU2ès±¯Ù]Á€RΣhŠgÀ×£d8…âà£ñ4éÁ>~*nè;qdÞŒÓÕÃ÷5þõwóëÎê¿×k’6?XmPÑùˆZ¥'Ÿ£3¢|…ÙJt‰úqG¡ŒêWU6”ãO–­&Îà“›X|ŽnPƣᨄ,ñK| ‘°Ä.ñK|`öܾ·1¸}§1¸}ocpûNcp‰\âèµFÕª^Þ¥‘õàôÈó#oQůø¼~)³: ?ÔXÁÇÚ++¯…œØÐ>éXð±P-û›ÔìŽã^Ùn>d0!Éþ|à½Ä“l# ŒÐ–BâÐíèßZs£ .CR•;eu¹“«Ì[›ea ´9cvẹ̀ѹUZ?Ñ.«Ïæ Î[¤Ô Úaµî̭׎H÷Õ"zíØW)í+­×Îð žÇÕëV¶^+ßQ¦j·Êªv+Wµ[¶j·î¢Ú­yT»5·j—xâ$㉠Ví€F·–}ÏýºwFtSË¥vZ¤þÊwçÉWžö‹±!à¥ÐÞa1!¸zCFeO¬,û‰°™ rëæ¾§1FkF]ñE“Ù™Ü nñ^0uǰ§–^ÓÁì †÷çJûi½š%†èÅ¥¸õ+äçÇ[—ø<üþl U#O?t¥ëµý£ÛÑÞ ÃýÜ89›±‡úLm¿£ñ'±]âÑnŒÛ?´PÃ^]›ô&ÖYÒ[øvÖû„ÇKÝ&¿âpÔG÷*Bü Ù£)VQM “i2¥7bÆY¦óIÎÕ(G=œÈA ÇD…q H£SïË…ƼÇ0®ÐúÚ†É|6!M¥-|6š û“oU¼)VáƒëÑxÊ3a'@õâÛx\…M`z£ñZ;£OzãäZõ)©œJ4Eè6|Îà/Ñýk¢þLìÇgb}k-П°S ™G曊PhQ€,b‡-ÏüWGþ~¸÷<-YyXòÞ2WHÂîcÆ$ÔhË,û·™°*!®rgÒ²>É ^hsIê‚.]ë£Nà³–÷™z:@á”Xåeh‡Ä;¶vàeÒîµ^™~9?ÒCòtámàäCýyÜ(!ò³ŽýaK~ز>\†…|a!4±ú›ŽóUÇù®å|×Ê õ`Õ\<ÀC7DGKì, r#$²¥E¶¹e‰¼Ï0”ÝeÊ?0 ewÞ8‰U2]`©`gÆßXÁZ¸¶Wø“jMþeFnÕ<ÓI?Ôqžêk¥k9µÜÇÒ15<âRÓÓýÅØ|‹Á1âSÄZÿíÅÆˆï88fîÖöß,LÆúŸ¹øç¬ü9¡4»KãÆ|ùfâ?–üŸt-ã?~èËŽÿx˜Ñ_ÿñ|>Lñ7–ãÿ1.í~üÇ©ÿëì«K>s¥'5qrŒ™—áøÙÜßɘÿˆœ3„D™òûMºŒI]wޱº;Û«¬Z_‘`ÿZ$ر²çkÚ¯ˆûP:Áºð°Îh‚j!ƒH¾BÐIެp›ÌšrjBS& Mt¦’›ò#Ä¥ìå€ðE„`‚j-¾ Y óÔ8¡s¾Å€±qAlsæ 02&Ã>ßÏ%DX¾Ø­¿ ¨B6 ‚æ£RÅh‚dŒà²…RXÐêñlØ_ Å áãîËhp¾:ºŽ% |)*0GÿŸÀ©sîKZð”Ø:@$‡:oã_y%]F“,£I¾N4I‰˜ˆ± ³p^Œ¸…P8q¶ˆeÅ2„bBakèÉpä+(ÂÉqøsuAWÓÚùRÙdçàüËê"ñ=²z¡satdMEãÞ%X?çMÅ–í?PgÍk¦2Dø$^Âi…Æ„%Q!'½ªYM×:Îü*]Á–¬ ²Ú*鑪¬¦-`r«?4°I@E.ðw{Mf L¡'ZJÊÿKMÎ ‡»þ ~`‚¢#ª‚¿ãõnž¦:QMÅ¥ìÞF‹ÎÀX$³Š0žSPl0h{±¶b]ëÕ<Ü„æºÛóKr9V™â½^|M»‰†•9Ø» 7œr6“!›öƒ$¦hˈúßQíÌ1¡ Wn’>ØBІ¢¡’ý5“Šùɶx*öÞw~#Füý]ûûìoQ5÷1fÀÆ{%¶ŒŸkloŠ<1J±p“.‹SRS,B”Jp$ ^ùûèocÎ%˜`“LÄõ êÅ>n|@–¦¾Š1•jÚ(W9ÉÎpæsÛ¦70Èf=Ôï&ñyèXoŽÝ Xš )®F8z½Ùzp˪[Ã1ñ”^v“ôdÒì!Œ­s˜Xв'—ˆ2l¬tš‡;¯+OºO`ŒÐMl/ÂNÞÊK£Àß°‹À¯ë5ÎóOXÈÉèÊ¿ÎÎÏGC÷Œo±Àô¼¬;µ9• v(¿ËsãX›Ž¦ÐÒÃÙÕ¹ö´Á&¼€QóÂ!M~å­q^ƒ[húÀÙžZò+Ø+´žÖïQw¤Aô‡y-×T†Ësº} ¢î>úåÉ3>ÖäêvXõþR0ó @lfȬ àpÐóÔª³BOCO}´…ØM0O/Gß쪖g7»ÏAí¯GÜ.ò¨=ì«!ÕV~W–Š&p)Ç*:LF½„¢H·Jâ&(Öž/Bû¨\„ö‘¡íu†Ás>Ù¢ /¦v#úGæëˆ-l–*Ô*ÙæÖ‹j \ì&ª/ª'íRá$¤Â#@ȇè/Ò1oáab‹«E¢Lfã˜Kÿm*ÍÖÊ]àLž`u ~1ü>þâ ze«Å_U„a;uáqìC&3ùLË?4ø®Jß±LÞñ'ïx¾ÒV);e+n™çp2ic¢L|ùµÍФrdÐËq ëËDÕÿ*ÈÉ.Ó§ vSéIsÂ3_:Ê«¥ƒßZØ©½¾ñHºÓ»æF9'9ŠÓඦ9)«~ ‹1Þ[Z)8j5µÆ‰eHØ7ö£…?5ˆáºÕÞ¥Ÿ^8ÔI“¿¾¯Ä-²þR¶œ>n|TVÙ·Å eît±©[X©Ò·X¯auLßÒ*ŒÃú^ÄÈv#²¸ˆÜs„Ý1´(*TZ´åß?GhÑóô³¥C‹þm=k} Bdó…âd¨:”È‚Qþ'Çuwràåµ°û?ø£;%øXî-;À÷åUÈ{_ÃùƼò˜¦Õ® Yf]UÊ?Fùí"©®T}íÿíüÑÚ ‘êŠ}r3Yµ­Ø!ò«v5/bé_ù¥ø¾ Í›F¨±>gk”ß:ýºñ[‡©X×`7æ½cÝ5ot×i¥SšõgBêÀ4Š4,ñx9Œò2‘‹™®(xïCdÊ!‘ƒ]&%fÝú²¾ßx¬ùÛ¿WnÁn<Õ¾]Ê©®Æµ‰^Ik/±P†£ÓjŠ#;þk|>ùšñ_›Ï76á†Åm®/ã?åZÆýЗ‰ÿz¨Ñ_ÿõ¬ÑxæÿÆÆÖrü?ÆÅ£Ýÿêìw­ J»óºk¬óæ>ýÿ¶Þ·NJD€â ðÏþ^§·Ó¿á,¢+vHV t«ñmn „ |Ž Ô×v„æsÃŒ5Ø9hî´xCÐ0’½ƒÆ®¯3ëÙFMtß¼^³]ösÅq•Éý#cµ¸G·e7É8rçŠÂÝ(¼BMqWûæ×޲U†Õd×Þ~ *+['­˜¯Ó ×{®¨, "¹B5“àFGàK IͼLc‚õ @—#:·Fü ;ÔoÔ!Zo¤ÐSj¶0äˆ[á3²š:à’*>‘Å‹Z‰[ŠÚÒÓ7ñdJ€NƤŠX"véN¡')râ=q×P³pBLPµKÈ2>ØÐ_âA1úB°½k"Y‹×ø0ÙÜ%Á>¦Õ‰yÙ¦Î9]“eÈ {)ŠwICúJ¹xÀ~[JÉ —ð}Y•þ‚K†bxœ`+L·9q,p“… ð£2CŒIa²Šã"Urk”Óx.n6ˆvxèЖæþʵÐ.vh2îÿ*0¼àN‹:Éâ#™wu^ÍÓÑpã ã¥q¦ ˜¶ŒŒ° ×ÙÚ¤Ýb¯q1BMr¥ìRÄCØåt ùä÷MwìßCwì¯IQéÁ•1ð†B4!8½K U襶GÍœõ¦M„{wm‘Î÷ëîFA…?á,–Ro¶ôƒ}:JæÔ©A©8®ÓtEÜH.½ Ëº€©R îš/‚€ˆÔUl(ôÓ¢t³œÞC³œ®±¤t³ yEò‹Ðâ¡.UöM–]ÁÐR Š0žª»/m)§•?«¢‚ýÑWäl^1 “þéQçxOaAµ­gRÀk|•4'ÿ¬z ‚µt]lx¬²‹®¢ 0±f}`”Ñ@¶ ³CÓ½BõZåòUenþŠ9ó…ÙBt”‘†²ÖÜg,&ÂOD©8;}'Ö Û‡] ÂÅÐyŽçÜD·´EàÈt–jØÅh:îd&ã†Ô”pÍÁ12Bo’‰„g"Ü˳O1lÂV [ŠDg³»K‡li™<BC:³ÝðV71-ǸG EÎ5IrQ-f­ MΛIï9¸TCD¿6ä‘ 1”# Ë@ž)^ƒÃ橉¦ú’\Í®,“6>×´ZÁ®e̽4ÆM õÇÚ#¢ÚB»S,ºü:k㺽[yØ{wyBð{ŠöcD\ö~¶c—±Ë,ÛчܢÁ×Há–,$æug/·ltÆ‚(Qi·AyÐfe÷ÚλãöQM´jâMM¼…ÿšÝ½šhÌ.þÞû.BêŽ:{ðÿkîïÕùGƒ~óùéÛì®ù¸{|˜Y'rˆhZ·y²WÁ–™Ô×<}ÿ{Mìì¼£¯÷OjÒü¨I§Ò=búšÛèök6_Õ øÏFJúŒ£ñ²Û€¯©ÛÒ¥ÑÃPqïÛjÖKÉQ@eW$=_!E¡#EøS1¼ÊϪâ)Jmi>~ ¬¤‡/,DFjlžDæYÀ >¯$±—‚¢‘ÿH P8 /Ü 4`}=ýðié‡u+¹Ð·¹@Výn1ÈjqÞk¤Pç¡S»ïУýFP€ù•…u±ß÷ k5åk;ð%ÈJ?jµ÷ÊÕ¦Àá´}2 1$Æ΀N†è˜Óe7kâz0›ˆº®5 ²Ó`4ùK9Acï]O’ÁhhF/0ö-Ýè<ƨ,‹sß^e\áG¬Ïø8}ÿ3¾O×jwdö^Þ®[Óm} ÈAË©p³5ÐR Ÿéu¿á6¸o9®Ål8Mè­½¾ÆXoŒÆžÌN3£o‚ÇN š"}‚½GÒÇ@zœ›¶aÕ+âÔ)¡Lp©#hé6 —7貯«$3©f‡'ÖÙÕ*áNÔÙÕ©#ƒ¾2‚…,·ƒ!wzÇfƒÈ–‚»ð6.HÉPéÀ¯UèCþ«Y]Á§¸4à/Û0 à½N)8î¿þXUv¶["Íõ CDsÎÈ"ÊÔÇ5t/wZšz´G ž‘Œ‰E #‡x¤íDñ?¬—¸Ûì÷Ù{—–ãnÄ †J)¾J7>»S7RG=Ïé(ÔŸî h—eŒms¦9Ë‹bñØUˆyÜqUMâìkµ§ÛÅ!L¤-­÷”ç?ËOºÍv¹õÞKuËü+î±m ®=mÑ> ½î®Á|†ð)$ía· &tN³D½Ê®zµÓ;ÞÐ CŽI™ NñãÄlÕÔR‘•ª~´÷Æ1AžÝ*„HÛÀ ÐýÙXrZ8RºCáfYÜЋ6ª¢9e~ésR÷NðØ Gct³¡Â •Æ›š£ïVÌW{kÒÞ¡oÝ>$ãoá7ѽÇ×}ôjo4ÂŒ¡.¢dè”Ië¶ê–yROãiØ i{ðy[:È$² ׸ñžÓv®½+VZ‚üó©·º¼z'ŽÞ‰@ˆŒ'Gz¾9„<$•Sã0ÿY~Rkƒx)^z·Ó2ŒXófµê6¾´ªp³é—<Ëꩲ«ªÖ«Ræ•{> ÷S+ë8Àµš¢.© Ph§·µè¼3M¡ýãNÚ³}²rÏÃD>ÃÛÀVÇÈ‘TYÞ4àÌAA3’»å©ê”PŸX'ÈÑ0„É·`<}H£2ÃJ5Of˜Ñ6q«ÎöãÚX¢¯À\ÕçÜ]äݹu˜¸|[Útò lW>Tk¾Åþ†RyåôŒÜßËB2‰í•P—ËÜX¸. S< ­Œú¢®ÎXÿí[ìútûJÿV}=cÝ䉒ú™fJ.Qûi]qu׌ïA9’ÉUk·69~v´Ø7PtNp€ëQ·¨ÜReˆ2©¹²òºê/âžV Á»ÿz†6ñ¶4Wl•¨×‹lCíØR-‘—äµ¢Ù fÀâ7î\üF Óö^Ü·r…Z8AGóVζbç2ç®ún½l§ÌåzÖ^X?B†«:úH›ýÜ:Çü”ô,ê>c¹áj¶ãÎüþ³|ˆê€ž§ÔðÍ °éìßÔ?,À濼øŸIS.þg³¾¾¹YV'üÿ³z}‰ÿ”kÿóC_NüÏ%€Êÿ[Ïõ üo®/ãåâÑžŠÿ9U¦ÐÞoÇ{»Åq@9†~×P¨X Vã` öðãíön7OŠºçö»ÎaÍü‰  Aèx“ü™#(3öH…aRÑ¥C@ÔŽ¢ãí›è*žˆÝøê* Xt1€=êëh0H.¢aMü>úï‘xô#ò$Ù‚ÞD(A'‰ûÄŒ˜²´–[¢73¨RcÝ6êË_VV©»`ÙeÊ«f•Y&þµuøþ µÓ:mÄS±xÐ1oø”Ô}%~‘(*£˜Ù iÔ_Éé$U8^uºKHÖƒVYÑTVR¬ìŠue·’üc;–óRgj¨È†/ù¶‚õˆÖp+øKxñ_B…€.&î+ LÜ%L Ðñ`ˆųÜD=aä–´D×dQûz”«#båot=š6ZÜÂ’¬!µkî¹vn:½Iõp:‹ ßwƒ!ìš[X)›Åï«ý¯`]Fx®CGÀçÉ 9C|ÕÂò\C7ùÃpÖ×8¦bÒƒy^èÁH³U « F7Äc½h{AѰïö£áÕÎj…W×uƒIÝ*´¬ªi'ÀO¤büpŽ®bBΕqè”c`«y¤2˜™ëz”Hž}+ÈD\Žn,Ø/ªó5Ø™ V1(¬ŒÐ!ÓØ÷ fƒ)¿š³ND¬.-QÞP#bnUEÌwM&júE!Œ³¤w‰ù>S÷p»ÏÆ=©Ítn¼Úš:5æf4 [&:rÎÐÈyâ"q¬Šå•ÀM-§b¸Œ¾ÐHGHü *2 [÷ÍbÅ_ƒž'‚e1Œã¾"¥¥ Ðjºl½¦Ð ŒŸ[³ëNIäÚ#·|ö ¿ã Û£)ôPª 'qžPAšM×Ö¾+”’B¯ûÚ+ÛE—~S¹õ»nŠžOü§mýƒÐG¿BuS 4)#âS:|UE°Þ=xµ|ܪX8tK9¹…™ß±HÔꢫjÉ $B+«ê=Ýœ3LUu`é„n&BU ©ü\nYÁ©ÙO‡ª ;7?4õNQ©bñÀԻƤÞ1uÞHÔ#¼±©¶eê‘CØíþn1EQêCPÅBQ¨w @MÅžúUî:s 6[Ùä64À"¥º \9ŸðIKGõ]÷3rv[‹Õ >ç,`¡•?k Ñ)Ð/n^/ôóç]©­º–OâY¢ãä¦&£§1´ ¤DZ°ü|®;ïˆP½4õ÷\蘚]skA㮓XfP²äéyZ§•µ÷7”Ô‰³ÕA‹ºþí¤ö¢ju¬æžNtBAO»\Ù“Õ$Kø‹Ô¼êómŸÖê<‰}GžB8’øéh êϰ\<™"ÄdúhèK˜¸é;^#‡4 “5·‰^»R«VjÝÑG})“¿ÆÓÊ:“AtÕ»¬èøÁ¹ÔÂ××Ód©¢`×ãUæEÆ_TZ4¨þÅ8†¢ŒïؼÂؾyiÞcv7_ÐYÌ]ÉÙ‰ñèD¥9Hö-­UP¿e7{ÆïÍbO·¬šŽæP†5^O£±Ê‡¹hkà2.ëÄ:Sð…ØÜ,?]Yc?x°´¾ 57ã4QÆÿ×ÿ]­ÿ¿ÌXDþˆþªÒèg½%uØ×ã„óõJcQ1Sî˃x*0€µ»Ò¬I r—š˜¸W<¿p6w©î =((N ¬ŽNfWœY•ó&“4”­níòaê8 ȉø M;2çê϶¨¢ç2ç–:á¡åýËtiÏ>g× ¬Í´pÿ#Öæ což:ÃÒœw•Vª–±J×ôòk´-}ŽEÚë!‘@§e³”kDhºëº¦j\¦Îʯ¶ ëÉ•_m†Bë¿9Ø;ÏP :4š âU㜶ޮ!µöñ%qk·²sIRýÕ…ü“p²ðÒo š ØŒ‡Ÿ“ñhHoׇ\“Ùõõh<»ïŽ·öÂBÞwövZÝÖ»vj¬ÐÑ£=h`µˆÇŸ¥vœÏèP´¥š« ¯;{Ýפ Ô‡ÃT±âpßï´B„–•|¯ÃûÐ[=š`@SŽ_P‚'PBŒòd]¼J¦:ó5LPœõ¬2c“áœÎÓ ÿ +<Ç–áí_é£~hL´º{¤ ¨ ûƒèB›L-¡Ñ î‹hFŒ¦Óøêšú O@q¹þÒ(âã—û(¼mM c=va"}/Æ]AÒˆ#îLüã<Lâ¬ÉJTTÁÝ}—¥yfü,Ê+æ"Šuž+d‹eªØ®K»Æ{$ šÓXj3mÓ Ð4ó̶♕"~뤺˜K±‘”ʵ†ÿP?&ÁT‹G„kðV úNe€gX©¨âØ©kЖ˜"¬¢—jžÖyŠ‹‘èFP2±7¾º?ÚOß¼pÛ?äýo¦)/€ÛX«O‘ÏE,Ñi4oy$¾….ycãÌKp¯vÔ®–ÜNYž€É,íÁàÖÀõ ËŠ6yKJ+^ìÖ°Í0Õ}á¶³J(!.¦Ý›E²êd ¬F¨8ç¥o¨ºNà)÷$åM­®Š»&¶oµ=èTf›êBõˆêZ«:N]²!øeêg âšJ[—ß™UM·®óÅi ܸLÉ-éTÝ”"U¯¦£ècÐÿ‘¸ =‡®†ùei·¥v`n³Â€¹Œa÷äîf×Â,”OZA7]+âŠv8§k’:º^ÈóÌ;€Ý½ýæñR,KP}À†âh°]à%í#2äýÙïéx‚ÅîG÷“¼º9…”Æ}5ÿG6>²^ôL°Be^ÖI½l}m+ÿ¿òôLÃ<âò÷l5‘¶ÛsºË7ìòJÚ–íìò dg–ªýQç¸{äÔGj©šÓª]²æò5L´á¾jŽÊÉ7ÊÊ©aoÆAºŽåÀü¶|á%¿ kwvö~;În¼75Ú9þÁY»±Kñ·ìûÛ4æ%69—«wtø>gz98w‘jpôîÁ6†sÏè¼k¿Ê®Yë¼jµ$»ÀRñ gŸš8nwš°¿–å ôÉÜÔìL¹Llì”ÇoºŸƒÿÀ»Û»{¡øÍy)Ù‰†½û[çH¦ZÞ×VYBölFu(~÷ý÷h…ÿqŠÙ×›2›3ü†Š“-€é©Îí×{ºîÔã§îŸ;Ù½³€”vù€Ž8•ÌQ¥TåC­\ÀÕ¾CÖ…Á— kW£R`6ø#É3Œí0½(çàÚ«½µô\¢ÇGTmànåá Ñ\å<öÒ-¡y,E fÕ,[žõ|AÞoeMÛÔmŠèY‘j}%‡®»¥ï—mï.ÎÚ|2bƒ¶‹7¹À}FŽ=«ûbÈò@F-ì‹{Ýt>ö}`Ý-Ûùú~"Þ/Ýùæ5/½97Ôñ^«æÊ+P€‚PFD^õÓ7çÔtz)̶—ª“) ™âÎý!j½\u_€Ç4–nqW¯r„kå*Ûìzó“’ýß ðÇ~3ISšè$k\Qûší¡ïþ\Á’Md²_H2“'¿?±Bý‰K7gІRÒa`ù’edæÊ ç¹¤iªÈí‰élÁT™™42“o¨'6ý'Šso¨GŸ-J½¡žýWú٢̺‘S­\œxC?»9y7Bi7Ny7I»a«bÙ¼Ê7éL»ï23qØDÓþŒÅ®5ÈÑâ¨gÌ…Ç›Zz7šÔ„ï1*ýd€x1Xà,ªÔœóF/Ô$ùÅÍ~®la7æ/¬ÚeÎߺyO¦ø{×â¢ÌÓgy¦BÇ?Q2˜-MÖ¾sý¾,å´5Ó)]yµ\P'QH¿½Ê«b)=œ£ˆ•*`PýJê^JåË)^¾*g[g’²Y1575ŠÓB(ÔÙ¤ T2§ØM£Žäù})ž´žÈšòÞŒV»:49¬"Aã#<ͨ$‰d¡Z‘¬Ï"k»M$§,?Ïn+‘ì½D`ØP‹a/êÖÞ³L2ÓÆÚ„–9oraåÚEÃÈܤx”}WFÅv%qM¡ªv5„Èç‹cˬÆäpÞƒUœâˆ#C¯æj¡OçÉq˜ÞˆHªý´žb…RŽQa²©ú wü·*~†Ïðsî8OHK¹–²|L5ÇÐM=n[ RûÕ_ÒU¦8}ë„CBPÅÚ×V‹ö¶áÉ’ÍMeE»3¨?à$O8¥¬øA¥¹²ãgÍAm$ã60©hç!5ãᩤ[!㠨ǂÔ×j’šÍRgo™rNÜw)ö›ðŠÂbxS±·êö®­8×hŠó¹Ï—ì^w)H”;¿Äºƒlóöˆ-¤ô²eÚÁjUª2A,cóC;EŽ3½C^*Ͻs«.ÏLÊ7ö ofqä¥ÜO`ʸ7)?P¦õ±Òzt6ê¢M äÞ“ï{êUÍY„¶y.ý5vÂlbÿ˜Â)°ó·¶o݉¸üšbÀç“Ëš@ Bü{åEíM•áÑ xXô%ŽÚXb— ŽÅç°Â7œ<ê†\-„°AáÓ‘BÍP2â gˆfd0šMn]j‚ñ ál¦© iŒ’¾€Oí±½Õ¬©l+¡ÀŠ  ÑͧÉõËÚE è,FÖ•£µÖç;§õ8°þÚ~ÎþÛ ²­yš ìW;óA0HÆÚvš·¶ù“ ›lV†¡Ü…Md$±J’±1~ì5/§¡Ë¬yE»®Å×<‘¿èM…¥·ƒ…Ï•YõŠ<ÌúÞªÅA>5¨#-“s®š™õ ¿Ï]IoÂÂUs!Ö×Y5ó·å¹«fþ²Y&ç‡IøºLúñ•.;ÿÇäó×àÿWù?¶¶ê›ðýsäÿßXßXòÿ?ʵÌÿñC_&ÿÇCþ¢ñ_ßÜÚÜòÇ}}™ÿçQ.ínþ®BÝuãòN@åóHy¯ë cÃ$ŽèŠûLçÙØX«We†ˆ»æ™ÂÊË3Q³¾ Fã¨?»1î( kZXózœ 0“F=]í2 ú_ñ0fÎöž Ÿ;S…òP¤¨À^Ó9ìØÇ(_iÞý%ìVrSüÕJ¼à`åI-UôÍMy8èKÓ¿|’|Ÿ‚m»MîŽoJ6EIÎlr.(R@äÀ¦·)®’ï“M¨¸²e 0(G³ _'ŸG”…ù*ž^ŽúøÅ-,㓚"2%{)Ž¡t»ðÿñÊÊë1ÚŒØÚ„·È[R·<±êv,*HV\• °ÄDJ¤~Q)6©j³a2•”Ù¢¦¾±h£UE9ŸM>ðòE(åérùF·|ò.™|)ŽX‹Sž.—%65Šó)æmAr˜‹gÞ~~~¦v›ç=KDYÆy[ŒËŸ¿íü‚5*Ó(¹ôºK‰º7ѧÌÃàO6>Ÿ»£þ¹Ôî¤î¶€L~÷×’ß]1»¿öˆˆm!”cV1žç³ëë‘·0žfx÷¢„óˆÔéZ”ç½fÖ1º\¶wYwF»áSÀå ÂyºM6GÎ'úB=sƒ+šU&I±[ùTû$W8^mœ¢8«? 8ò_ÊßVÁý”ÏÑßPQÅ'¹²­fÑb™åFñ/ Àø¯,tp]ô·/È/ôSY謒>­ûò %}OÕè_§¤9ÍËúçò•—šÍ]Úr=úÍ„®­®<>s÷áðÔaeq€çÓ¡—žÙœèiÞ€M„zløjª™Ò5e8KUBJy^§ƒ5è*¢êªˆŠê:¼˜^béYõܯt¢…=\g¦–<.Lç¶}¿l‹•ö¶¦hjo«(gUB¶ 13ö¹ËT¥§Q󾙥ÿ÷6G®æä¡œF3}Ž$ᇡhežÞpW(¢ü8B‡ažÐý*þšÅL#M&`Šöa¤o| Cêaï‡Téj£ZƒBê½Lj‡ì[wšB~s¢ŠìÀqæ* Ȱ¹vœUvѸË&^4¹¢DN>™ñÌΨgµêqSIO1qÙ)ìï‰`"¹ ¿„ Š [ÈØ­$È]9¿_y,YVˆÃÛÀWˆ„ÂÝȆ™&¸iïtîÅgĆ‚ê~;Þëüží8øðöÝû£ â9£çàk4÷Ú'êÐ(3˜QÞ–Sš;aÖ‘?»êg#ðŠ‚: /¤°•¹¢ ¹჊œþ÷~[ãÅ`+¡P–ù]²#]Âq)9q,Y)Ù±,Å‘)úÙ­ô³Eá%9¡)Ô¢ðtÝi,nòÌÒñPŽ5 wXa Ã]ŒVÈ”À1`¹}) Uõ «÷ ãŒkÿïa;ô pwÏ€m(;øêtŒÌÔ5W“¬éžˆ@\ˆ ;%ÜüyQ 6¾¼ü®ÏŒ9‡Ö lØ}ÎNX×=žÓñ–µÑõ}_ÍveRŠ£›qB¾Æm6YNÓ@\­¥íLáô(Ú@"γ­¦ª@0uí–<0Ðg®jf¢‘.ÅFN)²mÚIÔš5,•`»†ï§”ÁÕHïÏ€"bº'ß ²Á=ÿÿò G€ œÿo>_žÿ?ε<ÿÿ¡/ûüÿaFÑøo<Û¬?÷Çãyc9þã’«®wþ0¦§¬e­ê~4W*†Ëºœp.ö¶OQ]Ûe[CÙR:K0AÖ…‚D˜NÎÙrÛîømÙ›œ@öT€y {ýžÑ×p¬0Á öͯ5íP€ShJ–‚l![?õK'O­3'¸á”É„§Aø€»1ÉÖÕAÕ¼XˆGAìÙ ª#/H$"6`ƒoÖ‘"Du>`nV5¥À]ʾr­t)§Ö‘ÐC@½¯™[“ŠËä8õ5;ùn[žÏØP Ìo4¨Ý>²€s;DIl‡¸'x‡¸„‡(òàöoPûcÆé’}¹.¡Ñ”ߘö“ê0#×k®6h·¨<½kâÝT'`6Ýâ£J°SUýGFC¸û@†ñVF²U?è<˜ÝEæJ59MU‡ªÐ‡§u›H˜¹,UH¹mÏj±ã¬§È oÒY+” žmœÊC@ž/\FýtR#î¤ É-Ø ~e÷¥pæ4´,‰Š³‡¿6¡ãUø­ÿ„™ÌΫÃÑèÝË#mMGú¸$rËËê§\ÆÒ'Ó(!š*D!JÈ$•¸‘ 8'B–ªC[ÒÿËÄä|\ãœrQ®ðö¡hs_^+øFfO8u‹MWzÉÓ‡«QkÓ÷KÐÆY£AŸ•õFײ¥LUе%Úêk¢­0ùØ6¯Ý…¨«ùàVG󃬤Í`K™ dåß— 1ËY_eË)² "« áNiUà>tR²ÊBVÙr‚ «‡!ÁD`ÉÇ ±ªoßÓ3Ë^Û"­ÍÆ*‹ÖÃØBjö´e8 _KáÅœ)Ë>Ož:æâÅmÑNµ·nº1¼vòm6…ÑÏý{ÐÏý5)*&—Òвx¹r’ÔÅÔ³??üΛ ‰†ßyå.âÐwÎLŒy8¼4:Ì)BIž[:·áæáyØ;oÖŸ†gJš䕃á¹%-jÕ ^{—7WXªYr¶x,ÕL£ç† • >ÄO9˜*eÖ¼ÓteLŠÌ­amËcOï¡‚§k,)]AfíðR.ûÒËpÉà>ÛY*xò S™RSûi¬±ý8ÚDI] ɹ!äü¸ªÙp« =¸²ÝpREGŽz¡Æ’‰UÎRœô"¹vGŠÈscy&õä¯ÚGW¥£'9™«SÚž‘ÁUf{ѹ…½4϶”ÓÊŸUÎÿò'"ìx–R]‘R­ª?SZh…ÝtheÒùˆðUÒ5ûgjîZua«ÖÔ{éb˜Lg}­IDAãd«ñ@º ¹¨^«\¾*´£ö퇄ÙB¤\[ÊZóô™ˆL¤yLëN¬<÷À¹ä|ºÑà&º¥³ˆNUÎdùo蘼ºj¶¼‹ædäÇö¼&èú±Ȗº$ÈlLuš$-“ /©]4¼ÕMLûµÍ^À«è,)$ÕݺÿH5O¬Ì;h#©ÉÇ€ªkLcd¯íiQ¾ÚTµÎÜv,AÎjÝ+Ÿ¸O¥íû†qÑ4%…àÊ*=߀ÓêJ¨ý,}¶ã?SL6p:œ³/SPv.¿p?«ÀþzÁ¥ކ¦@X€y"M“Ì‚˜#PÄhÈžôhša–dŠ1æŠc£´1Å#ˆÂò¤Ý–ÍlH§aã/SÏ #eíݲ~2»À¥ý¡õsdr“ß'q›'eT&t¿&Úïpµ÷åCø3ËMÌÅÒ< Â?P •ˆÉöä}à>Ë©©ˆï±œZ” ЩžˆÊ*!pÐÜyMÏkGàßl +‹Ði3%B)(T·– %’ÒáRäþ\á F'° ´Q6ú`ÎЃâh…òhÜ)‘Æ]2iÜ)•F —F*PB=¶ª×‡Aº2óMè¨çµ–tì@ÖÖ@PŽÄKЛõD Öyôƒ…O„Ò’ÜGøDV3ZÛˆ»ÆVÃH3«rF&ڵˈÉð0Œ¡¨ «ð˜…¾cp•La7ÌBöÇ+šÂŒçP;Ë´ª¯9A*C ¤`u‰üDOZOrò„ä—@·¸ÉNƒà7º] Ï5±ƒ[x²? žXUzÂÔT²†`ìŠWV^õʇ)IÑRc±1¸œøŠrˆ]¥[ÌÌ8œ4bW5Kjy‚«›é@¸‚òÙÐ¥óŒíKx›âL¤¸8äP)cI-’Øúu~pR/þçABÊÅÿlÖ×77ëÏê Äÿ?Ûx¾Äÿ?ʵŒÿù¡/'þç€òÇÿÖ³ÍgþøßÜ\Æÿ<ÊÅ£=ÿ3gPȆPv,'°LYbÚöë¼?yÕù A†é|¾4PŽ æª¯ õ3Ï®)_ÔXkTC/R‚µ3BwÏ™w½‰®À–Û¯®âA ~Fƒh(^GƒAr kâ÷ÑÄë¤1VÄô&šÀ«;IܧƒŽ¼P¤µÜ½™A]ëõõì äW-ÕN‹VÙeÊ«>•Y&þµuøþ µÓ:‚Íh{/à5›+JJªðƒ¥ôRJ˜­§FÕ³ý Îè Ôð!™\ï3B*³‚]y³J/Á¯ Åuå¼ÔËÄPòN ±ÚXþj…s /¢K¨ ®;Eu‰;v9G¿^l×ä&—Ší©ð.AGÂcx-lL‰i4½4ÉáPÎUô%¹š]“ ñ>W Â×é37ÝlV A4‘iŠõ‰4Ÿ:'¼`£1ŽÕV¹ò®_Oªò° ãÀäy·Ú|º§rz+Z³¡<º³·¯Ÿéd{0XÕ~¬oE¹Lz*ú©a­U”ŽsŠ(:0y}†¦'ŠuÃúk)ò\œqÖA¤§SQ¯_O ‘;^Õó«£NìE€JÉÙØ>ŸåÛ&¿LACЉ®‹„’>ò࡚û脾UÓ ’t`5©3,Ç…™Q:+4ZEG»o]$0º|L´¸k2 ^ú¼ö<Ñ‹ÆD«-í9'²Ÿ.›nÂK q‡LwK21o~ ôoÌmk× ÿþ„wÞ¾Á^Jí݃žZ]&j53ªZÜG`õcª §6;îrI8Ò8!¾`´Ð‘‡:òƒ¨»Ýßh†;ÆO/:ýàÕv/'fºŒâå„K‹;FLß9Xzþ`Te䤒•”ÌPbì´RáÑY™?Š#£ñÐV“GEû¡ÐêPež€è@Šyb¡½èü¦ …A;åSâÅ" ïüüàªfàH´Úg󃟦 i»[BÚÖá¾ÓW¤ÍÐöÈ»¿")À0±Û­ê<ý;>½Ž~èM«3]qÊË1¼Çñõ êqc(¿Û \˜uÔj™àäØSÉ/bd\4¼ïˆÔk½ž6ÍÞY‹hN4—žEq«ëÂ9ÃY»Ûv°vᆢ‹&âsV<6gMc¬aáòk-Åøuï†Õ{Í›z‘£¶ì\\Šõ´¢2»Pö ÅJ±Wó³Ü'ÓkøüÚÚ²‘Ì@ü Ï—5-€êæ¾ÔØê]³Ç Š!'Ûp2£`#†ëÅ©ïŒÆOòÙ/®ÐÞ$vâÊí£3 mF;ÖiŒÎ|Hž7X'Eãx‚Î(ø>ŸpšCMú,ÿPšÜñôgcråË²àšŒ5"W†>Z‰”Q#Úø±p8ä>ƒJ'•ïàjÒs«_˜¢?“¶·*Nµ wÎà´hò&e—« [C gòmÕj£ýKàÆßÕþþí_,ƒ)¢„Á”M!îÄÑš#m•Rå¾SKQÚÿŠûÝÑTžˆ5­_Õœj„ötfá5XK¸ô.Ì:›Æ¿W„|µö2¹'D¶½šÇRQ¢ù³ *D>GEÇ8Ôi2ï§êŠçÁå'p=–[¾û)Ž‹h-°ÉñÄ'äQ…68§5[{ýùÝAº µY·I/|¦ ^ Ù÷SšAª5…ú—fœ4øØàLû txšAHÅ6Ä—t~Î÷é‘ÄÀæñpÝ]êŒÝêD¸v"Á*ÄØ&ÓË5k{?•TfÃjúLµ¢õ¨Ú’!˜¡Ò¬þL?«| ñ¨˜ˆÎHócµhý$¥P(†<r{ðjKœéƺ9€‚¦ŒÎ@¦·†%Dž&º{@©E{URõÔZy="~9z‰1Àèâ‰éI=rOkíF Ÿ ¦àpx5¾m6Ô Ö×;ô'³Ù:Ô[ÿNhÿyÙÖõÏî™PŸXçR¶ëŒfIµ¯pŒ¡ÈØ)ÃŒaM f.XŒSÃ&Ò‚ÊÑiäphhwk1“†°ñfÓp[ÏdŽÁBÍ4ã-î¶á×ÓÛkÐa‚§œ6#Ë7Ž]Ø–µ™u°Yþ™£ûP©.¯YUWm¿ïTeUWEN$¼èh¥M†ÄÊÁÇâÐ,ªå?Gcº¤ãzÒ  OŽQ(ÝPºóI^M5%Æî0I0D&­Ñ?­ÚèÀÃÕÁÞV f»?þ„ýáÙ¤BD:•?‘ b5 ~q9T™w¥vZ>‰g‰â…›š©•â/†½‡”Hë¢ÓÖ‘´ÄJ‚òñ2ƒ¦¢ã-žÙ5·ö4î:Ás”jÉsœ~öŠt¤ G¨hØ¢.Ò0©½¨Z;ÑFºž =íreObT“,á/jPóª;qjt^C°V`Ï úÕ«ðæ?aW÷3XO¦¸éŸL Át k>}ÇæÕp‚›®$ÅÄm’Íã•2Y°0°›K3rLþO+CÜüOÑUﲢ㽬ى‹Ý?½ÒH¿Ÿìqõ" «æ¿Rr/õâ16h®O8—ªuT ¾žæ\J}$ œŠ~fQì3Pý‹qMéÌô.-À+ŒMè%·ÄH¢ã :‹¹+ùß©Àvªoi­‚úø-»áXQ~o¾{ºeÕt4‡2¬ñzÕ뢭#ÈûË*{ƦèúÉ CZc,A°´¾ Єi¢.~æ%«òñ¿þïjýÿÕ`†À"òGôW•@„ ¥Ôí^u=N <@â}†´Ú>¦•â©ø]Ò]iªÌ¸]~h"×¤Ñ ÓËÙ‘Tw‘¥hs+cÌ®hŽûÈà,Ûj+([ÝòŒÁÔq@AâƒÜÐN þl‹*z>$@yFiyÿ2GÊŠf /\¸ÿks†±7ÏaiλJ+UËX¥ƒkzù5Ú–>Ç"íõH Ó%fºd#*hÕxœ•_;ÂëÉ•_ïë¿ÉÁpž¡x¸ë V…™Šz·æZBåEEÂÕ6ªLòSu€î@‘3hHm*-kC¥Å†âcC—˜&›jìk$Ñ"…çì¾”eCeÙð¥e³´l¾Šeã Þ¥yóàæMEBf¾TE¥ø¢Âtôj'ý<¾9•§Vü%m-¹Ü»xéW§-©lÓ)Õ•_Ë’R€Ó°£Æ=6h r‹ˆh˜X ¯(k{kòAʱA¸´ Å«QTTP…Ã&®=V&r}š9–¢NX.8`•UKU%\ŒÆ0¸®lò2*x443­…°ž:Ë)y<ù˜sÙ”že€Úq™«Š:šJ ÏÁîꪅŽfl°=,w¹œ/@g×ÝÇÈ6µGÙøj›TÕ"Œ [‘šmÓOÞƒl:¨³ýÑìl¯šs ;¾L)Bjíã úf’œÉ•OJê¯âQÇ@E;© „àÒo š ØŒ‡Ÿ“ñhHoר§b÷ÝñöÁ^XÈûÎÞN«Ûz×NM‚:®· ¬ñXDœÏ:ÚRÍՆ׽îkÒ‡êጶ´0²2ØÀ}¿Ó ZVò½¦™Ãúa«GóÌhêÏñ bÿ%¬¯¯K]¼J(Òæ‹ œ*T@ ™!36^Ü6…÷ +<Ç–áí_iü…àFb÷.‡É_È ªEeÈxÍ ~8½ X‘%°%ëwâZ[ ˆ?Î`0üA'Bòô„?Áö—çîde!ÏyV‹Õsšvy›73ì|hu÷H6PöÑ…6%(UE õ½qÄåt_]S‚ôSA—|r—c…·­©a¬Ç.L¤ï%˜Ä$¸M<90˜ÄY“•¨¨‚»û.KóÌøI“…çÃ#·9{,OöìD $¥9ÂrŠº;4àv&Ÿ{v¿Ã ¿!Å<ó-Ó݃†bˆ‘·/@_ÐaÁ gòÀ+qs’¼“â¥nØ37°ž ?O±µv£óXà¶¶¢æ>V5¸gºŸ•zÉRÂèµw5ùRŸrÚ›i$À‡kû̓îžîZø=}¬ƒdòzò»UËö®Å¬,·¼ýH°׎&>o¹£ŸÜàÒÒè·ÓÏÎø Øô>‰K0Ž:'M4}e¡Þ$ºGk k>å³6̹;Hþ›Ã楂™¾–ˆII3]œ @»ê¤Ñ1e›n6œ&ƒ´ôzî>ë{¸<÷¿?&3S,©ÿ+¡^Èè/Áë)Ž ›Þ js“f½øßÁÙÚ×2<û¸!wMÞ7ÍÓmúî;<ÓzÃ…+Ìȃ+j¡«ÀÍU¢ßȧ•‹¡¾ÓbH„%â¨Õ>ÞsÇVEéèF'Û.P3«aêëÎ7–Ò½ i,ŸÜÇÊòšMÓo¦TYA³®{tûÀ•hŒUy¯—‰Àÿ;?Ï‚¼¡D~ ¯QáF)‘k´Y¾6wÎ¥P"™BúÎç“Ý{‘u2>hâQt9 lÃTÒLÿ]m䱨‰Oi@¦:>uºYÃy‚Eq " 1ÿo¯÷J…×xWo‹—ïÌ.å‚v)J/°¯ôyçyBR%F»­b;5y-±ÃšÇ2 —Œ¤»ÿE¡ÛÇ»ÇðK àêÊÌu±µÂ 1íà}%¼HÕ®÷dÓ$C¥ÔJžò÷¹'OÉ'B!ø›Š GÃO«è¼è%èé †ØšfOÀi_ÛSö®Ãj_¦}M‘#§qó«|Žª/˜ÿ£ ‰¸¨®¶‡ê¹` ÓôÏy¹D‚™ŠÊþ=$ñ¸sdÌàqªj"'»y¨·³I¶9‹G6…¶-ÅeÓž3›ç[íí¶õ.Óî³']áκ^{‹i^V<­GéËÉÿq] @¹ü[[õMøþ¹X¯oÁKþÿG¹–ù?~èËÊÿñ@£¿pü?ß„Ýñ¿ù¬¾¾ÿqñh÷ò|h¾ïvl-Ø€·r±7Y¢ÙØ FSH'ÈØX«We†‡»æ‰ÂÊËQ³¾ Fã¨?»1ÂBœ kZXózœ 0F],tY¹0æK-‘—K‚[¶|È៙à!•½Aånh+CÍJ\àuª¾G´Ö€—C_ŒÝkS@3-·¡ubYí¯PX„~ë+ôS-ÿÀŠGë¶³”Èc; ]²‡ƒÜœ™4œž×A½&¡Ý•„GS¤‚&¢¤h$VSÕ`|Øb 2ë_\švæ;È¢Ô\ 8Ñ™ÚÙZű…Y3óY-µ..LmÙªêz‹"‡Ô'° úL‘º )¦1Ÿ””’sw‰‹"Yäøÿøý{(¹,tà¼?kÒ‡ž8|o¯KwHÓžu¶/çî¸â,ržM c|ÃÖ¡ år ›NInUó·ÄÇQÏ›²­Ò'ÚmÉ„… \DÓ ‚²´ê«uáû2°Jú Œ'ÐïV½Zê÷þîºZ…Ò@zÝ‹@𕉡Àb©ûP…¡`²€O¹ˆ ("Ò "VñÍ·á6ìRÁ¹ž¦¶ a/UȨ́ꓗºœöWôÉKÖMýùî;Ñz‰¯XÅFsü¢Ö;ž¶\—©ùøåλö›Wüài _¾‘?—7‚Pïa÷ãV5¶³X·Û¦—ɸŸ¥6²/ip£·½ªãçµvF½C•V›ú?£ÖÍ®ÚÕ8x÷¡ü`Ô* 3 ä8؉e•y£á¾©{æ` ŠI(="¬ö†¼á9ò„~jtÝ;È6ŸÍmðIßÙp;&2E#-ºêv^î=R0$2Ç„ªz°Þª½&V_6¼aáWq@ü»ånìŒÿÇ?Élû§ýÆ×ðÿü¿›››KÿÏ£\Kÿï}ÿïCþ¢ñßX¯o5üñ_ߨ/Çÿc\<ÚÝUîh·ðþîÖÄ^M5ÝC_ãÕ]zçM,\:—ð\þßh~WæÌÝ›'Ë/tu%ø6Çy Š#Æ1&¸œXÉj_{n`ÑdâHJ2&]u(~j_ùC˜ 3 ¢ûy’\%жH•:…eb¢Ã‰hðÛÊÊkI"ÿ›x)ŽÚÙœí3ÎðÊšñÝä’vv9Yæ2žäïÀeœn‡ÜÄHŽO °‡óeGr¶ësç²³e‰(›'É£<¤²F‹$KZ°Fe%œ6ÉíPå|÷»MaÊ-&ÃNá•ês[{¢1Q†ËÒ·Ivœ¬<…šÆ•=mÈz™zëÛ å8ßìòÕ {«iÅÇ×ÈÒ0äø 9#¥`ꉼ¼©Öù´æ –¹—eË¥ÆtN#žéOvsHÛæiD»åU 5¢9ÄHªf=sÇ”hÂp»y:lBQÝ—ü9»|ô÷HÇ»RH!aեÐଠ»•£s›”áV–c¯l9Vë©’ŒÎÏW/ÍžUÊÈãNæë§uä"tβdáA)þ?{ïÚÕF®, Ÿ_Ñk¿Ïzâ+¡M.3™Y $ŒqŒI2œsÖ^šà‰±Ù¶IÂYûÇ¿u‘Ôº¶Û`™¸g¸-•JR©T*ÕÅD>¼¥øðŸ² %°Ľ¤Béu%©cÊT£nŸæÅlˆd؆©¶A/À‘·ˆ¼ °°HÚs%°uy¯ZLìÓÏË£xJJ ²(AíF˜hjþÛ)ÔŠð#V”‡áµvp–/úi*"U‡ç¿U£YÿD²/ø$4.Á¿ð›.(ò”2Ûùb~%B¤Kó ëÕˆÜÕ¹87ÿůUNÅÂUšÐ‚Ïë\€èV°8DdDò®ZZž4‡Kݸȣ*Gû±Œ.Œ1¶åXî \Ã÷.­wøV<h mv&;Áqê îi°&àL.2ÉÞ˜! ÑeQ¦UAûôýºEDUƒ ½ŠüÁŠT(ÖBÁ¯þ}©Á¿ ø÷,*šUE!ë)*ø((!Iä@1!P|¾Ä‚Å»©AñCP°›JQ§>69@“œ†»3ä™àÎ#$Ž/„Ã5u$É㵞ÉTI;)e-ûÂÞöÁsn>hoWDì‡zK^#xà p´‡‚ˆ÷PQ à¼Í•|Žå"^DAEŒÈQÑužuîàöæõVg§NZ…æRìê;’oýþ{v±¯‘Ë}÷Í[邟ÕÌâFž.mnô6Ã(Šø\ÊÅå¶Îÿ=ÿMN“ .t Èac!\³¹¤æH¼€ûµãì=ÇýÚq×^À—ZùaëîU :~ö¶jùý>Å–=8ý,“¥À$"&–_VkÛôËR.i!hפ¥Kz7ÇlmHÆouý·Î>6néHIíÖö¬Æ&m4b2`AS]ØÞ&£„¼@}‚w– ¢Á˜És11Ä3ËG8+¢f%j–cË…N:  ‚ãÔ‰(¨8u9í åi<¨ŠÇ5ë uèîÝæH ~WWÃî4]mŸ`ªLb„éÖ±c”¬,ø<%²GÂ#Û.ýè¢oÑ«×b8ë4¤$ˆáFøMJZþF¤“Ùþ{¹,›<šo™5T´¥…7™ˆOöŽ5“ïWÄ÷’ÐÓà˘¾±ºö Fþâ1ÕUÜÇJˆd‰ØhAà,Ì©tl]Ÿ~î0îsÈ!ОO>ëúf–øÉô‹í ÈÖ’¿Ž¯CÇ‘ê¿b«0JRÌN·¦ÍN• ?Æ8kYS#íjôw¾8‚öLv ÞX«Äò¥lÂåedØ*¨oëô§oáÒMc@â¼â˜ n¸€§ Åú¬ÛVM?Ôµ«~~ÈôoL~Xc~H[ ÐóðByžÊà„4¤Yœ°]5ˆŸbE4Ë5bøTõûrE:ÉWø<ï猢‡wàŒ7ê újTuö•ÈÇiÔwÔ —9eÖÂÓPN™¨¢ñf—²…ŽŽ^¨s˜©EQFoçôó;óTÂ\qÕâù¦WQCn6«ª¬6}›‹Ý¦«!Àn³uù‚‡ÑÖÂŒ¶-!±phK¶ü1è„ RòÊûÑ?†ýßù#²ÿ{±²ÿygeÿ÷S?šýß=­þyëÿÙÆºÏþoÿáA^í–ýߟý‡ÑY™þiÏ£3ýó‚iËoõ·€­ß›šôÒzÜ­Ç癀„ƒ`ÕÆõèô¢º×¿>¿„2ênˆâYa™Ëdv1>Kó&jÖ;Úàé~ÓÆ-èQT@—â"SžvI«û²#q =ŠPœH_P&‰†'øi2"ÃVE´÷Óñè¯ëO38Xýˆo²¶„OmÚŠ 5Ÿ~N{Iט1Ú±cL ÿ¬¥ßSñ©º:U9Çeú Ö\uÒ|E¥É‰€$1~`ÔJ¾$@éQ£U?\YF®,#W–‘Ë´ŒôÚF"lk©gEH °FëÈ ‰ññçTä§“Mõu’bcœ cºýIt˜L¾  É9cG¢<0ØN2ÌØ4Ò¢·Æc+¹š­UÌc|Þ¿}A²…¯ë!ƒÐ‘!)‹D«b\0¬r§0*–ŽðHükQ©«ùþÑG2á¬%غ#>cv¹i„åKXAæpNN'IóíÑeæ0C81^Àq]Óq«¥22Àö/M6–…~ñ×eÓ$÷Ö|­?eÃ2NÈÄ(#r¤ªjg'TEe•â$M禽>wcK€‚®²$‰&ÈxqHýV ¿­%‰¶wMüã þ@µ<ÚÝ}®JpÄ •#¥}S/g3 UJÅR£êg÷Vš@òkAKS¾é¤¾Hÿ ˜Ö:1@iFj|;R˜|qMƒPs#)ñ¬.V®¢Q®ø;µ"ÓhMl‡AÛÝ‘q@4B‹B\,µðGºà³»ZY+¡e¬„ÁÈX ±X £Ç¿ZæJE{ˆ•À‰‰VjZÞ• ËW—H[ @êÕi9ö­†˜Wƒ*qëñ™®¶½ µIÁ%0ÖbÀÊ|ÝiMXÔzH³Øû̆æ½Ý|»Ó«D‡Ûï{ÊXÏ Ÿ bÊ.Ñ×À6^ÊF\ Ûò b+Q“ 7wáú¤”@ö:ðï°·Ý wQ +â¦erÄÞŠ‘k@K]ø£{ð¿_Z÷zaåßV\CPx^‰>ìá¿ývÐtaká<`!+ÚŠ®2†jA„‡ã°Uïü©l?ƒæ¶ ¦"Š«f3z±@а.LÃá!ô¯ÂÁ2L5ï…Ù†©byK©æZqÆÛ»ð‰ºƒy×íyÚRæ¾¾¶ç (šN‹´K"·‡2oAòß"%."æœË¾ù8['èú:MÕÿé-‚ßìYØ“zóKÔ© Çã+èÄYrŒ8³ ÕÚ”Ð\—ÓR(,¸èö>{h!-“E­iØú÷¢â“—5‚è`°ï{H ±nÏÛƒ¨wý¦%¢m70½-‘ñ;q6Л*IèìSJå…]dáRŸZÒ(œ$BQ™¢Ã۔ɀâpãaÆPà±[L Zèq8a³ý„kÝç!dd[÷X‡y¼!GoJ?‘HmŽ=Äoiˆ=i«8oP°ª,Œ÷|öÅ¢Ñ×’¢Áïï¦!—c ¦*š¹Ì,³ªh9Z‹´U1b8J¤‚9V ô~Ôî·_Q®AbLöø¾€ÚM{å’«ŸÍTÆ7ºz ¼ÄIŠoZËÄ,JwÛZ€¦<¯Ì&hoÜ‹ªR9Š–¶×Ano/H`ÍÌà‚NˆËBÏ1>Óëyý‰j³ ß ÙÝÒCïu´]p/5 ÇÀje? ÌȹG¥šU«Óü౜c‰Òæ6¼ë_ûZ¯‚‡ho:O®"¿~Ѹ–æñô'òLky[òc×=l/TNÿR¯Ðá±ôW_Bg‰p¤p/®…ÙnνV==6ú&ÈÎR—Bߊ²¬¢Y²—g ùmçó÷À;TøW-[|í­×ß\—G䦠¯¸t‰yÄ&…T\æî†AjÁWRàý ÛÌ×èb<<›º•?°V”.p°–[BØD ¬ºÀÑnÉ­ÓI&ŒM8gÄÂ9ƒŽWBãO?‹¤T¶k+ …ÝáÁß#Ò¥ø)}ó¿qY-1N>wú•χ<ÃÓœV»–4/í}>*‡hy$†I%­ôl‚S¢:HŽÝŠ/ ¯Óœç¨¥Oº´aÀ±—³ï)àHâ,éÌ}Äo¨#9HB\‚ÑTNí¶ÞÓë”Vœ[é\´Ssh§F´S›C;¾ž”ì—–#?²¾16¥ÁèKa óñ©Sc-]¶NCfRfcÁf'H¥!å¬ÐŽe½|t«V 1*X[¾qìc—Ò½žZb¬Z‚ÑOÊL\3÷ˆ Èó{ô¥wÌ¢gBR€YªIs· <¨•†‚[%ÆNÈ8U±I#REùE` S«¥¥«P[ª (o°èn&º‘tÝÕ¼±ðïªøÚ, Ä? ¶Õ°ÔîÀ$ ÓÚû‚Íl¬ÛÅCB޶+wÕÎñÃ(#öIl+«w–”×Ú*_Ó$㙉­¦6³@{eê@Zo‡0?˰4ÞŽ×žŽ†ÈÙ¦õ†ÙœšmOϲàh*´‚U½dúUã[·#[¢BœÃD ‰ÙX/¶B±i«'Õá#}ÍZÅx=uѳö&Kß*ïÎ5}«ß­º”6Ò·Š›q¥oåøÿ‹è[‰ Ÿgë[ÿ@ç…yúV`ë핾õ^õ­-â ¾uOSTµ«{$?í•WZWçø°ÒºÏãÓº’–C£fÒoîU ]ºÆ5´º Ì,}pÛÔ—WÚוöuq¼Ê?”öµ, ÙŠÈ{оÎ& rÎQ¿~&-_ÀPËLøÑÕ³°_vxÃì”- ­x“¡¤}!Ž^{BIëŽ ?¬¤}±RÒ.¢¤-g*iË?¸’–ð·¦hoSÒÊ…ù´´­yZÚVXKÛ )©taÀÇÐ3u¹ÂX•ã*ûôq‘¦’S賕´©Î-°>7C¡-¦ÓгŠÿöS?Zü·{Zýsó¿Ö^‚Øk­ÿÚÆjý?È#D*3þ[w+;ÿ뇃.œ4ZükN{""œ÷ïš–i`Ñô°Ý­¿azX_P2a‘†1ûݪá„(sjÿ®ËÚ¨Ôjÿ–‰ýËÌ ]¥r]¥r]¥r]¥rý¥rEé„0úŠAÆ@¬LrlwhÝWH¼*:»žd’2Ò€€`ÀXoÇ\}|5\ÂHI™9$ ]$ü‘QôŠoÆnóúãü̃aÃTñv©Ý1‰Ú q¡h,J1GÞûÚ÷°ù10 x ‚)õ#5¬Ñ¿¯˜!ã§S¥Î~¦†$þ `Ë‚™>½ÆÜ6æpa»²ÛÔ˜˜1´&+‚¶È+’¹Q‰‘X⃜o4Ž’ÉdlPÌ%œ%ð¬1I†”k„Nî(EØ^óéƒã'<ŽÁ¿,Šo•x•x•x•ØAƒ²Ê|ïÐæ„@óÆ<óå›g3”\øŽ1ÎZ»VòÄ:c=UóÃa…mQg%Õ…{˜BG·áí%¸môà{«x]µ½ŠHFEÙ{Ý­%†ìB“Õ <Ï1ìÔV}»ý>ÜIõŒ‹ù°yð¤ÀL.Dˆ,o¿[«¦P?nì-U—zE±štì¹Û!(¿I(¦•²åÚáXm¥~FZTt#ÈV„Ë÷{"êÍÖ¶>©¤j|ò‚¦ºå /ÊˆÏ ékVî²™ƒ|Îd„Òœdjýù„,ËúH{»ÏkNŒ:ºD¨€†µšÔPƒãá0‰À§€yf:Ã_ñpçÓ N!‘2Säù€¯Ò¤§ã3í|Uö§Ò:e·á×þÍÄÃÑÙå$³bÑ$åÛ‡EIGséHŸDêñÇ Ô´›03éù%W8À¯?]P€9SQ¤Ø-qµ¬whøùKƒ”jjÉbÁmd{<“h¤â OÓ£j»ñ …mQÚPà=Çù B *øPJZX¬˜³a<9Mò¹ Áœ+œ½i2£L8Lrö˜D‚Ðò!ö©Úw=¦§´Ëj£¶ÇÐf›)š`ù ¸åÁcÜeÛVÙuŒ fiêqì_™·O”®iW6…Yhüêóg:yh«ÉÌ¿Ãù‰ŒY!·“6Ù·¢Mpûc¹Ý %ó/$šfÆ ðµŒšC¿«PÔ¤TÑi¶:x5(NªäEë\’‘Öÿ° UœV?ÓÀio ’äL0™ÔfþzÄT{&o é±×¢H™€X»JnÒü§î” å°T(Ö¼m¨}äCÓ r4 ð$Š*ΞË}31Cjú,ѯ4ûæ÷¥œcöCé½kÈž¦—ÝSBK{œf‚‚ÅÔ”=F+ÔíŒ.Š h2¿°¼bk˜ÖúÍÕ7ÇW7潇¦äïãv0Â<Ë2M„ÇR§’¶ïº‰“ý.%”-#z<…Ð;ËV¢ÛôÉãwTHmfÙrKÄÒZT·M¬Ý»¦‰Í"éÆ8Mø{!jFQåèøÉiƒ3гçµsh’Êí3Œs  -uxû#RÅßbY·«”‘˜VµÌ9,Ww!3Ét¤¥\ÖÉ}ñuŽE9Äñ—\éˆþè¾W:ŒpêrþåŽüÐ^ñ¸©JÇ”tåçSÆ]%“AœÜ{ØÈÉÊ{ÈË6|ÌáÙ2Aá6uo Òͦò”Ä-fb ,ÁWØ<»›ÎÄ̳MûßóÇcÿ»Êÿü0ÏÊþ÷§~tûßûYýsíãçë/\ûßUþçyxµÛö¿o‚ùŸW¦¿¡ç±šþÞ9'ô-m}ßÁ® TjYÞÆkln{‚öš­­ ÛìV»½ØŠä›t ÷XlLS(XP¨ôø-Ò_/+ÿõÒ`ßOìUæUfÚ* ó* ó* ó* óÒ—oÀkYïÂÿ ¯/[ý¶¯‹[ ÷Þ°¥ðÎö›°~øÌ·+ã\”—þkÙÛçηÍ}óølsßÜ“m®¶9”síØqÎ5™M'-dë2ôŒ´'¿¡¤Ä˜ ×*®µdp`úa FÓdØÉì°¯¤´ÉcêøHr&ï©£ðž: ®/OX3+µòôÈ¢sàßu têÐ!ŒMhÙžþØ#å™2îpŒ:&Eó³u·0æiøíÓÉI5GŸO@Vù,‚àÂ4‰,SŸõâij© 6[0œÊÜ7ñ½†ÿv¯m«D®ñ[²´9wº%{°©‚ WÃËÄÇAƒ Áˆ×ï )3jŒGšƒ0©HÓË·O¤$ ;${ÚRŽÏ|ˆ°À©´SoˆÝƒ¾7·…å¤ìÑXÛ’¯çÞ×z»ŠÑ5ç¯wb«aÒ%¤ò­÷ÖöZ»ºÀЇóÁg´ñ¼íŠÇê¯FóW<š¶êe¨`mµQHÓ [Ã{á Ÿ_ròу0æaf·{fÞÝGÂ40z+YKjˆÔÏþº†–í¶©%õ¿Œ]ó%³àÙÅÔ$>‘[”…äýý-‘ÑKú"ýûk;cé2ÍFx%.) ®Ã,kþ¸Ïœ¸·1¾|óËŒ/ÁcÚýçóxeÿõ ÏÊþó§~tûÏûYýsí?7ž¿pã¿>{¾Zÿñðj·í?›sì?W†ŸÚó†Ÿ?„ÅgÓ´øà˜O“­'.1BË,õ5CS¼ô¼jšnöšpúÓ¯e»H;©ýéòL¯’ÓÁùú%r¸ò%›iüd¢‹”Í‹: þ”=ÑPé}Üé¦I>3J¶z KWXKúÈ̵§t«ÊAü +0ÃÓH+ Ì‹FB&ý蘸ÖG« ˆº¨="MŸÞ œ~‹Ð Ý§e\)›9ĹæY!5pL#|ªc›GPjþø»úÊQÝ4j«†ŽÄkù`¦&ü{³|´¸ $áÒk;—W³¸ ùØ<ë±¥ùlÇ õßu®–ÝÂ’‹Fn0sm¾$}ޝ‡gD('‰Z±&¶W bWEÏ9=7þW%Å+C9‡-PõåFþšc0 Œ0w¤–„È3HuTíïubr¯ï…Ç«¾G…zÛûåZøæfë ·)•8Aã.•Knۂ̓ΟŒlähÊàºDƒzã°Â™P+eäÅIx$&?®M}%»Ð}zsþ}úÂW¥¼ÀÒRn^$…¬ÁŒÍV³©:’q„¤àpºÓ *<üD1uhÚø<7]ð¼-ϳ;«ýb—Ò·àŽdAiv\+8è^%ç=ÿ.ÙLõ'®Ÿ¢X¦Hèî"oò‘-À LZ®’.2¥{×gǦY~’ñ_ _ˆøï.ã¿ü[Ëø¾(á.·êd”ì¤Eo-ãWý2þ ’ñÍPºKH¦âÍÇl*nÙ×îÃôößÏ76VöŸò¬ì¿êǰÿ¾—Õ?oýÇëÏjöúߨ­¯ÖÿC<¼ÚûïÚ*ð´PÒÜí»×ÃAµ@2_˳nÚ­¶Vñÿ}JF ç5=½‹ò)”p³–aY.[¼X‚eyϲ,ï,ËZÓ„•D­íúV³ý6Újîo·›m9ÕÊxkŸ$@£‰Š»+€|dcÀ龸ñvõ'´eïÝÞ–½÷#ز·Ï}zsy‰‚ÀéÊ}eÈž²©>{óKøµ!䊜q[&À¦e Ùœÿo‚Ãè´™²VQŠP½G! ûZjÈ_'“c¦SàËgl×.ÄC»,ÿè¸ú+Û¸½jD¬Õ¯â¨i1H"º­^y†ÁÞ9ɤÌO1 ˆÇx`¸ ãüŽÆQ2™ó¸ù å¯I2$ØŒè=Å”Ÿ^óì²ë¢ÁjWÞó¼ ´É¯ˆ\aÉl-Ä·)Vß‘§ú±úPzz$FîÁ¸zÜâÛDÄ©¡ðp\…&æ6Áášo0©(Õ^{»½¹wcbòµðjf ô{âI°@ük#¤ìǵãçº “?Ãêjî#g6ÃjÿÖ¡øšµ;ÇâaÑ_‹~† 8AçBî\D/™E*€O^Wò´S^ µsÀ664½sY úÚcÖÐßïcëÿ¿Ýƒ ðúÿ—µ•þÿaž•þÿ§~Lýÿ}¬þyëãÙÆs÷þ/^Åy‡W»«ÿŸ¿ß®´ÿÆsWí?>÷>†Ó‹FRÓÏÚ•Ê ÿ«X2«X2÷«_)àñY)àMb|œ ø‡ÔÀÃnkxh|ÞÈ5ôÔ+Åð2Ãß) Mª²Ÿ(>M³¢rÚt(TÍæ&°Q9#B¿i/_â 9èˆs±äð^d1<«‚0uþ¢þ‰†Ê¶¬ç«+¸rÉ>«{ʯÕß ·•î5­eÌ@Í¥GÓÜ¥G¤Æ¸ä½9"O#­¹$ÙÌ&IµÞè/94å×÷BžAÔ„NFR] YT'Q*ì'ÓE:å £´2RþÖ5ê%)Çy)X¯GTß'ãߊ’¡)iJŠž«˜D-OûûLG'<Ðãï6%´†¾’改>mœ˜ïÏjÜP ­rû\êauA3w–×a³‡Î»ß®«Ñ@VRýÃÚ·4j:“•í,qdÍå» 4ÊYˆþúºÄuÝFÖ¢;:J“Êè ÂS´¦HÌÔQ2HÿøXR^`ëMåº×ÞMwÞ ´“o3[´sª~u5¼‰àˆ¿Ô«÷šíC8ÒãiﯲŽ÷ï’¶µAéò¦ç@.*Éc9ŠùtŽ D¨À²×¢¨û%íu|PhvŠÊL•´Ö>³™¨Ò´ãhèpÞæ…Ó@.ïN†øWÃp÷C‰`T‹iç‚L.¶Õ8«ß²·wnGňР„ãíx¶zòàÃvwmm펩{TIùŽé¨’B«ìø‡QIU—©’ªæQIeaó¨¥24XºJŠ›¾½FªçÒIi…– ªê®œ©êwÐH­{H•LÀBÚ95Re2¥`§… Vª]}H½m¿þ#Ǥ—m¶jRÑc÷DªTVÙ#1_ù$ÆhaÍ #g u+ÝS>eÑÚ§<ʬ%éž`ŠìþwfŒC?í'YG~šœåi¢Òù¾½FÊЇÔHUsj¤ì~æÒi§í´nNU5vÛ®Zz§EÛ¯º®ÏûÕ[k­Z®ÖêN$|gò]¾Öj$|W­•Ÿ”ïWkVYxi-W-½S~UÕÐtÝýâߊ†[ºÊ£…úªV–¾ÊÐ<¼Â ÈêûÝÕUj é4(˜‰sÚS.ä˜Õp»¥Z«;]USnIF&ÇË7¬¶"fŽŽKÔ2“¬ë²'þöº®¹“²DMW‹5]­Z͘¼š®(ó<„›NýUôiÁ¸’Ѐ!*Θ„?¯tEÌ…ôaò“­@ðÏù÷[vÚ'ͪϫţ9áfýxr/Ê=õæë¶=šnÏÑlˆJßS·÷¸”{o„têÉèî]ð 2aý\5K?—?æ.ÆIkýòs9õ/ð˜þÿÓïàÿëõÿöbåÿÿ0ÏÊÿÿ§~tÿÿûYýóÖíÅËgÏíõ_{ñbµþâáÕnûÿjÛ{»»sh{=4ðÓ*€ù<„#?º˜”öço¸õ]ùa†‡_šê›é,¹Ä yÀà$ÀðÙ‹«^Â@hèë;¥‡?Iü¥gx^·~ö÷{ö¯ÜúUÕïëÖ„œ–¸¸`“Á§ tû…%<61­Dƒµd]ƒÓR"õŒÆD¤±&Ú†X,¶"É2¹b È@‚·‰)ð#{µóxÝÖ¯½aÌV®€ NyFL‹¸Rb±«PøJ„F«Yý¨æ¥±„yi¬1$ϼäu°ŸëaKûóu÷ìKé¥l†»ëŸ~¿¾æ»ä`¾'sy\ô3vZrßù'|hÐ?|±µÝ>Øÿ¼¿ßn¿ºGð«Uß|‹Ÿ 'ç’žáKðð&{•JD±qÄs÷–`D_nädÙU6ì* ¸?wë6òÖýÕÔÖ¥ƒ¶Wøa^Ÿð®é) Âm|í »Æ#ô"Oë„|SQ®•’kå>ØÃtI˰|C~²$ SQk 瑯“9 ñ÷£Q/œú÷,1Sÿ¶ÑC:¾ïÔ¿ñ½¦þݸ¿Ô¿V‚BNJHÐ÷ŠvÖQJ‡¨Z6o'ôTˆF"+!›d=(ÒP6øs'}áäÞgñź$슒¸ðƒ$‡Ù¤?š¢N‡ *ôlÄu»“òŠ´{$ "ãªL¡©eM´zaw[= ª•«sVT·ù™v#™—ì'½9™ÝîѾ#'ÙÛ²Qä\Bú`›ÚDºÛjÁUçR\Õ^5Qˆæªñ÷¦:+Çïò«Ý ù-ÚžJ<«a°99´÷Fò$ FZ~Y'³ô~ÙégŸr5« žõŠÈD¡Ô€•åM2.ÞKu\¶ äÖATã$©‚ißâ<0^rwXQIQN–Ê@Œ'XAD ¿¾W¶ª î‹Êž:z èUc¯J(uj™iV%kÈÌ¢Ë{XL’äFpŸ¤Ëv)”v¢%ˆƒ‘) Ä( ´ïQ ù,[ø•sE·n&_Æç÷% 8Ì&áþvYÕË839“üBC(ûõ[Ê~ýds<úëúZÁ²¨‰}Rq7ô ¶ Vf2]®• “üÈÛ†'%*Y«7xž·®?øÑÏ󭥜ç¿Ï&þâ^7ñ_Wçy“Ù·tI£u’FËŠÈ<ü´«{Îá‡o9Ç­¹ËÃg~Ä#ÿvu— ËK9ò—sùËw:ò/ƒ0ó‰H¡ÕlDªG-µW®ÝžTkyvõymËý9«Iÿ„d´ïÝ’—¦=(gkr¨ê¨rHÓK{ð2¯ö §V@*Ês” –& Ÿî çѼ̡=È%²¼ ‘å×<ÚƒÖ’´ßç"á·{½Hˆ×J}вÔ÷·©?à‰Í–cu¶@‘ÂJËÀí.ë ÂO¦ÕØ Ôêmµ ™šýÍæìc^eDõ®Êˆ% ºÉ#Ò‹ôôo ³Èu}ð °}Q³¦0‘ßÿéÐð~ʰÿ¶üj÷áp ÿŸçÏVùÿæYùÿüÔáÿs/«®ÿÏúóugýoÔ^®ÖÿC<¼ÚÿŸZN  !ÀHïmyuº½ƒÞŸíL_!QgñtšËNèùèü•~7#™CtQ£Úcv9¢É<åäDâ=çZù"­|‘V¾H+_¤ÏiÁ £Å•SN&áÀÄþK–*såÈÄ“K"›¥p]ÚcåÁ´ò`šïÁTûÎ.L TK„ù‹†ë­²[¦X,Å)ªS*õ@ºoDÒ\\•hæÝ iE¿ß­Ðb1ÒótÒqHqú™­'ª“8Žz¾>ÏóK±{/Ðø&‹¤Qá(úoITŨú fÿe½ÿMé.£jyaÚ"Ì&Ih•4G~6Šf‹[ÑC#¢¥ÿ¢Nc¢)rõwóÃÛåm—a.…»»™?l0Õ _Ãíé‘ábÿ!¤)φ—}æ“+yÑ£6µYÁ¨­”d"hî¥F+¢ûó I¢<ö+¢ÜA?ϲbá'µeiÎñ„‘åEé|–/¢’=¯eKZs¾u tÔx¼&.ð4‘9šw×ü¸±þÜ7žÊv¨Ét•£j念%þ_‘xUp ¹Þ½ ~3Ç‚§§Ã»ÕÑ…Œ6ÍFï;u컩-’‹öþ75{˜åas+/°Ç-6æçÛàôñ¹¥¹ºWÒZ僥N’å8‹(˾ߤÃüT8ÏØîõ|:Ô­V@Ðjå´ZK´ìÆDSº eÆ…ž“#ìÑ Zw•‘r‹=JPBªi­{Å@æ—‘j‹ÉH I=RTšcõ+J[’Î"R àZN)’’N9r{%¢rH"J—¢+ µtɤåHCQ檼¥4”Ѧ- ­Žø?ÀŸÝD}²Ð"çý»œö3d!SoÖMòh¸ºù5\Y–uµ¼¦u?Ä£ÙÿO>û¯ý_íåúÊþçAž•ýßOý(û¿{[ýóÖÿÆËõg±½þ×_ÔVëÿ!^í†ýß´¹êuëíÃnEìô‰vO¼Þmuvêé>ÚØîR‚ÓNœ?"7‰ú†e!ñ O_YŽR=²ÏDž\?!ü‡7:v„ mÚ€|Â-Em-ŒB‹Qš(8ö¥KGáhÄä3ôZF[²5óM·œmQ%mì‚ZûÁ10sÞYb¸Dô4F#£0ñ ²‚°ÉN[É;F9,mõñiÛCã±ÀÝ$ ÜKÁP†æˆðþ“Éx-~{ àÇFßž±®m §¦¼ $Jé ËŸˆ‚eÇ"”Ž"b˜ˆ¥àðÛ5¹“•Ù£j‡‡Ñ¤5ïÉ!½Í0Ò–¯ £f“fÏ15§™÷¦´œ Zó–méü¹o˜ÌŠÝp¯n¼ †¿y§§Š´£1rç¯Ø®@º‚…jލF)>(3Íd¶Í{âžäX&kOM›yb`—TÖÕrÚ*)2:dзÒV|1ä|³Ãv[›y,mÎ;‹ †ép¦OL·”x½± qü¢ÂôúN #šô/†£8{ž·‡vĸ;OFÊxñ0B 1\UÚä­ù9*æ<”õÁËX3TÔ»dçkNZæ¶6o— ír\|Z+°ÒéÅ€µ¿aÑõÏ’é)ÁøH£Ëö|Yq ýÐ/ &Ùd_ö? FýÉiY™æ+õ6tø 0JühLs;MØÐýÅ]s»˜N¯/ɉË!³ãU.ÆMUBXH°Ãû°Ï6÷œ±(¶&v6µ¯3ìÅe¾ ,æÀ"íEVÅMQ¶ J/-YFëàÃ6PCû »_oIÚh7¶¶ð-½ )Ù½Ý=øP'{ô6†/ÀKÄZÆ ‰Ãê&V]Ü«™9樮àÝ^D,ͬœìÉ7a>.fP. ¹—LŪEƒ«TÐrÐê\ŸêÔø\N=2ð¢íûôVZ@ЇE1Œ¡EIûšžHGFŠìËtù­¼+¶â*(óx£K®•¼êÛæBvò ‚Æ hy”ѱ¤ÈòP𜇦ck?Çœÿ™]~/»¼Çß´å§9¹W›|Ôá,Ë$?=5¡‚áßz)Ô¼Š âGd_¤9) cBL‘ç)ðllÊê” Ücq&v@ ©ä[S‹´Ÿ “ó™Ô¶|JFpØ*uK:"ÊG È^úO¡C,_}µ'‹™rir $­à÷læÿyÒ£x ¦µÅk{z0Å9Û†Ê%øÇVvÑÓ¨fGv, }+ŒÜ4çþ©Tä€ç•×Ì R¹ÉØÉ2$Ÿ©"¤Û–%R PoKžÚ<Ç@­ ÆœUHÆà­õºGÛk,´ù>¾]³«%_’QE«ó¦‹DVÚ3'wÿ`«€Šx!9së³ÀhßPì5]?W4qÖ– ®VâWk¨vÍ*^ÇôºšnÙN{i)§rMV¶l_ÔÂ÷pl¾ë’"gÆŽgpwo48Y“&Bíl° y^äèdRêÐÁð §J17 ”gs`g€OAWÒ>x»ÀLñŽ7@T‰  ä¥Ýûè /2n~øáË—*ØwžVT«5«Õv\¾MÃíòܦQ+p«ìUSÞôµ?§iº˜°†‰9 #§9“à öÆÏÂS¼™wŠ7¿Ëoú¦å1:÷3Å›:u¹Sœ¶ŸSìþŠBóž‡mÝÛ8úþl£]›?·ó9Gí6-Ç·`±j}ÓéwN’2Õhêx†3¿Ï3ß Û¨Ýãünê$}×ù5Í7¿^†á¼ôAJ¦ãÌóí$˜Íû•`6ï*Á-•ñÙ.žf[aFt;¦6·å{aD&²‚TçT¦…URk+¾3¿Ê$‚<üêh©üj1"X¦“›–έ4d—Hw“‚lÖ³d)h3k—|xÖÓ®•ÔFi«FËc1·‰–Ëbn3ÙK=M-6Ùt¤Êšìœò‘ùÆ&¥‰»¥ž«.IQÄúÀûÓùà/IU´·„À;ã ëi÷(Øn{ïVŒ.žß´ÃãöTó›¾öï¨IØ+׿aŒä‚ QÁb'Ãï@¡vÛ{‹sÀüT°© Kiûß“ ”´æqŸ»ŠZYtwGÓ2èNŒõwb@’\—Áƒ<îíùŽ{r9<4º£jêûÂ2yÐB„0Ÿ -xäÛsŽ|w$„»©°˜R–£Ã²©nÙJ,ü%i±–DÕLWþÀ 9ëÄ«¬–޳Í×aY W qÖÆíŽŒn‰:­ïBË—µrÄð¸å’ÄÅ®ek¸²ˆðŽ*®åaIíwdP€E®Õð°‡À{a;ÝÁ¡îð ³;¹˜„ ¹®§eO›EŽM°ó<R­±‰iŠKÇRrEÊ]ÈK–¡ íQÁhÅ5š@ @EÎŒ#ö¼ö/OÎú‘ˆ7=U%8öTŠ®ÄVŸ*€2½¹Ö“¡t2L.£ÂÛövG²àzé4Ãí•%ÊÞIÑ=ÎEÛ:Z—×P–Pyš~ téàÃL€ü¸g‰â_ˆ(¶-š¾¼.ÕK7‚ºtC“ƒ~ g7ãs¡'§ÊK§5x íSÄ¢>ÏÙ`’œÂäd,`ÂçU$x•ïÔÒë¨CoÄæÔMÎ_E›kµh<nò£·k@^˜% Í*Ñ?꣨>ü´:»¸$4ßj-ò¶ ´‹Û)➎é?*Ña³¾í®EmØä'°çcZ«Dñz!þíåcFÏÕÕZT{W«µç/r$;þMÕæ‡Û~òJEÃ6ÖÂhxcÇ;LËNŒÂ2d:È2ÚJK¹ðÀ0e-ôÐe_æ…w¼Â0Š…\e6ZM¨úŽ}1F>01Éyô­^[ßï<Š_Ìuë"‹]ìqÂOÙEâ=!a’é;{KLA5(4 ãiÑcaƬTkQÒãÜCÚ¥D˜Ö˜ßÛ˜ûÇtâÁ"ï ÏÔã…•¶%wPo ÷<>ȽãíýØNŒÛä`x>Ðp@˜×jS„Á¢—ýÉg!1Œ§Bæ(Z€ÑIƒÓ šØÁHaí߸識Šû‚B2"/½aÙI¡I|0Nóñ+@SLDËñ+åÜÍ@Wí?¢uTÖÿó5õ A—àWûwÜqÚ ƒNK¯œ×rwŒÙÉ•!æÄÌckÆëaôà¡`ÇŸ'v@‚1sB88IšäÓ‰-pêØÃÌ­I—zìáÍn³Dž†ú¡‰è§tFêSd«ÃJtrm„hâsÇtÆåñ°3’a”ä €!˳æä¹ÝYcH"Ï­È).>½¦ÑÉ­õòLcoáiìÜÇ4öœiìdNc/4½%Lco!y§Q¹Ë;ËI­-ebjUHbÔå³äUQîI_‡BäšÔe ŠJ†³{˜g6ùØsƒß©ðc·é E¹:J>Ð/‰ê‰“V·ôÚÖ±Ct‹Ô2Ô«N¨W:?ÅHŽ?QU¦·_ãÁ c§I ˜ò¯b*m¿f,þ2:;I®€ð04ÂùËÄ}ç&<U¬H ý˱€ÍÃÎSj¤huØxê†B<ŒN‘@(6¬¨ÏUðžë(jÙôb|=¤hŒªÑ  ¤ $Æî(µ›zfSÀlXb#qƯrˆ9‹_f…`¼phekkµçGßNkô²kÄën•wÜ5y—(‡Šß´³¢¨;#ÕÚ:¶À+pÇsÁ¹C@ô¥$W‘¬9–:“bàâ“£¹à“¹ñÉÂ~„nÌ\ÐW£m®6 g_O2ëÍAª©nç¥uœÁoÓ¥º¡çœf—,Ž`ìÞ\‡OÈ@þ׎`ÒàØäjß "›.kñÀ÷û§x=² ¢Ê¬OÆ,Š×E|G\†á¨âÚ_°0Ž7?$0x·_‚4®ƒÒEI}j¤åè\€NÂ'âü„O%;a²Û:`Ç28°þFVm„ªöìª=»*?$¯–g À¸Äب¥F)>Ò@9

ѱx¶<áØuàš¸ PyÖ ìÆÉù@ž¾+ÈžŒÿ5«UÅ?·¢>ø°§Î]‘‚ãGççˆ@“{ð†Ÿ«Õ1.Åh¶ÕvzÁC2͵° P6}=ÓÐÉ—v•»[/éß@}ãÁGˆdòW¥<>y°JÓݲÔc^±M¯Ø^áf0q«y4q´´Lw›õ%xª“WZ•”µ”Õ$®†ÓѵÀ Kq£Ñ䫟Çétš ñˆCšbŸ‘zÝŸbäÑu*+¥Eý¨:ÊÙ’eÜŽ–q[ªi;£ŒqmEÊÉAà§£ç‡Æ‚e˲«@§ý®£J­K[™’R.ßÜÉùtuD´h>ÆÖ­³{¹I{¦‘k.G,šmåêt8Æ·¨Š­ôÛÚl¿äO÷Q¿ÛEà@øü²x ÃàËb9Z\\ˆùÃ`UYùý½ê¸ j]nºL½ƒ—üã)ï:Ç F_L·á;@Ÿ“KÎKá–”Êo—«wÀšÅZm­ ¸ÃJÛi×í±F`ÇE„YŸs0Nt eî´‹ŒámЮÉð÷t¨ù YžÂ¨>>ãØôœ °(ˆ™·EJQç§´´ûÁ÷¦î;mYwP‚cçP}eY£9BØ/À̵ÍÚ‚éÉ|¯¬¨ù ¢ÿã:ÖßÛEü¡LÝh32æÑ‰¶ÎÃ<º&~^›¢ô ¦s{h‡ÅÔ Ä@uk;Mp¾´F³7Üän¹ì·Žð¯è~˜~Ø=Ò²EÑæ—Z ãJ˜¨%iEn¿+ÿ5V´2QÕtºA{z~ËÕ=ÞÆÈC¸å5°ð>Ú¶_wTé|­Ïf`M­0â0Ä)Œ´¿%©·ͳOÌóŽËsˆê»K¢úy/—ÿýË7ÃÿþK}Éÿü(×’ÿý‡¾lþ÷‡éýEýãùóúó€ÿýÅ’ÿýQ.îí>ÿûñó¿Ë'+Æ©x›ªµÓT„ãKºw÷"Aÿ[Sà`T81%üXý]œ~U*xn»ÇdxG3ù>ÞD‚÷%Ýä7K7‰b–|K>È%¤edK>È%ä’rÉùíòAnG¦tMmx5Âþ yþLhh´áôž„“ô~†.ǃ0ò"œ#™ ¸ÉéÏDcEÆ<é=Ç-P_>ÝåþP‹1…â"r4\$ü¾^s °0-ÊèÊéËŽ£z–žÑ«”‰BóŒo±ÀÌb£‹t ú=hþ|†ï†jÁj¼„Rü†¡ÁhzÉoø¨ü†0´Û0ÃF†JI`©~gDì1û—äðêlæˆX²zù¬^o56k.V/x,§_‹Õ«Ý|ò «×áö]›ÝëÍa7OÎwHÿõ]°xÉ¢/‡ÁkI•µ¤ÊZRe=6U–4¶íþ]9«†Ì>.ס¦ ðZ¬A/fé÷CÔ%|®.¸å!  »¼{óȺ<•«66\{ìVNïÑ-ûKAK–%²:þ.ˆ¬d¬ºj*Íô­ò‡Ã¯HR)´(„ÎáÂæ¥zíS- ¥¾¡T¦ù-Ì(õv{É(%Ì÷KF©oŸQê>©2pÏÂ2&œ-84rËb‘±ùe¶ÝÏÝ“þàC·<ÝRwÏŠ®,KÚá…¿ÎOÙѽg'­a.ä‚YŸÝƒ–Ú:Øúîš9Îç3=s:€'öVaÔ ßøVn|Ä ìˆxÔ ²‹ÁXD£ièÓgò^dQЖ›$A"‚#dzž“lÄeëÉ:` ™‡4„7k*šÃê Œî½˜íÊê<÷…Xw᫨“<„º¸ ¨=‹¸ÒòãÓE,D=,paಠéfc¢ecÓÐÀwŽO%oecÝ|Î.¢œºij¯Èauó{&ƒPåׄ`柉Ë|£f'E'%›ã!%"óÏ× “°­ü.tÕù:düA‚Ä×W ‹x¾‡¼‘öþùž-ùî“ïáÅýñ=<ÿ¦øž/ùôµ(߃°:Oަleiï¢ÈõDÔeîÜÍ®R„“Í|ôbqvŠ,2Þ–ŠŒÇß;ã„Íÿp1i|+ü/ËøïG¹–ü?ôeøª÷õÿú/ëAÿ¯?__öÿǸ¸·»üoz ˜Ìÿ<ˆ1?lâÏÍ,†˜€Áàƒæ"Y(àU`·…¤UÀ,—TR&IB‘Áf……ÎÅ^6"·õ'1‚Õ³y̧‰€…K2¦ì®C+hç“ABK^<‡<ëÏìÀ6 cyù‚8*õ˜Mså |>è_œõW6W¾Þö¾ñ[d¯·ÿÓáMåheåmu¥¹B¿S„1þÖVµñëའ¼o#òòMûõ_ï†o®8¥úRË,Ð܉¢,ÌøþV ÜMǸìß$â$û¯ÇÉM:šM·2ÿ*¡ì$a刅Ü#8xwØÝ)Á²ÀuÌ eÅ¿T1„¥•è…û³ ˜¼ª—dè5fNø|™5…G©y鶘0zß0pÓ]Ž>Cs\‚ª©!Œö}ª…€ßëÝÐð=x×ÂDØíšTÔÍû"<¸¾d "³–å;ÈŠüÏäÐ`Ð~ –)ô2ƒÍH<€ÏœÅà kT‚9ÁDéß­Fe”«‘ž€âÀäþp‚0 S1jV¸€eß¿¢˜¡+ n›ðòÐt ›^W)°çMÏž9þZi{4§£Á·¿¾ ’É'3ÐrÄ!;U^”3æÂKïA›k,)ÔÀ‘*Πµx¨ÊWŽ¡äðo›mµ7 êpÓÁãÝ9òü9:8È ãØËÖFso<·½½œ:Å¡ësBý5˜¿yL}‰ù°Û`äþ›÷ðó°»ÿ>¡Øí½¿€þ~óø~£0²¢'õï}RóAGOh¹k6Кþ~s¸¶1'|žßfcZƒØƒòøù¼{€Ÿïþ<|v³ì³×Òby.,mŠa¸ /µKæAk_~ãRŸ¼Ît´½£ Fºí) @@ rt}†/Æ)vh¶*Ÿ^kðŸ/UÐhÂ0UTöÂûMúz3ëkù4üû3Þº²ÒîPò}±³ˆ=… Ï8ˆðp|{êümB)ó6Ó29zöðqB«8'¬DÊ ,|Ë›÷òåämºmæ<†Ãª|êõaø¤[„ì–®ü∭8ø¾Õ×4¥úu,zK¼ˆ«,¥§Ç«ð‚-‚S•_†Ï.¨S¡Œ»!OðŒ}4\ÅÓþ'E%Ô/wôóPµ,6W3.A]³‡¨`ëÄ~£bK Qƒ ð>D‘dœÇŠÒT¤Áå^T8 XK Ñ×/8,T§ÏvFY•ÞT¶>±.£¦W•Es‡±|%üµƒv¹;xõ—Ÿjðß½w9Õ2û¥Zfqšy!àB7ENCPÊê@¶ÉÑë¤É¹—'=è6,FõK#6¯RÍŒ.rO…•ƒkWC9yƒàŠ*7š.ô>oh²Ïî0K<¬ÉÊ•tÆ’²G²ˆ‘º $9Ï&6!çåÅÖn×eÓñ€²LÎz¨¬B²ûˆõ°-¼¸ßÏÙO(ôüºŠõ®9_TôDv ó釲ƒ2¡L°èýÞ¡LËkËÅM¿ü×sÊÿóâùÿñ(×ÿõC_6þëazQÿolÀ·~ÿo<_æÿy”‹{»ÿ:\â¿æº~Dü×áÿuwü×Âð¯ïý5?ø«TʆD W?•ŸLüÝêv¤Ãù3Ô”~7Í]Ú|?8¯ùòÚ|8¯òr–8¯%ÎëÀyÝÌë«£¼ä—…ø®"@W1Z,Ö•³)1e‰*{4(XMì¡ã·y¯ .Ú÷£ŸûûÔµÇh®}úÑÛ¼nÐñ©Þ/r«ˆ?·ˆw‰ðr%þX¯Ãò/núBîD›/ÑŒÞ~û–Ê¡eR0ƒX–`•šŽGC4=cT1âM®CœxÓ)Ó&“…’eÁo¶ „ÁrŽ&˜ð‰JSÞéè,ù_ÙÄ|‘a¦‰ý÷d½¥E' ÊÅX:áÃéhpÁµ·©ˆ;«èlºÜúZ}—«à=* Ð2ç›±ñÕ¹÷t,$×",˜Å>’$çSÃ7=ï,*¢pD7 š±º·ùT ðk©ÀOÐ`9¸at½ÔÅ-!qJÄk5SÉG5È29P¼ÒU€éºàÜYW§¸ TýÕŒ’”y>¬¸(×” °Á×ÿHÍ'{S7½¸´º“‹‘y¤~äéÞïMÅB²*ÁŠ,2²F"æ {xŸãù|PEñçžÞÀnŒ«{‡ sžÁ­Œ[» vIæ檃=¢{p9§.%ÕÕŒ"”ÊÝ?øPþ]7\Ô3ºËP¾pŠåº*÷1”7ææ• X×Jûñ˜WáÃ^Ú{¯¿üôôÓ ¬°Ô/yã>îŸXÃ1„ÓV`£ëæ™Ó¿´PêYVÇ)(ŒêVu{hð°Å2 `é™c «‹"cvU–›‹](æ¥^i›÷0çðmËFÝ©¼@ЖüÀþT1cn®“ª6£ƒÕ³ÇsM¬r—!óŒV›ä·,–Y-ìH悽ÉûPä{¬âKpÕ7ŠÌ²#]Ê‘CÚ?JÉÑéôÎ#–g§óŽXe­ùG¬gwâø.‹ 7\˜Klø?ërðß7]ÿ½±þl‰ÿ|”k‰ÿþ¡/ ÿý@½¿˜ÿ³þâ…ßÿëËþÿ8÷vÿý^{,œú$ó¨÷§ Èö_dL!ÅŒŸSDf/¡ãóBÇMã¨óþÒrÙ.sáÈ#h-™2ƒ`äè§*my̹Ê81üü½BO()®„­ Œ­DêwL´1èV;‹Ê66Ðu §ƒ±Û¸õšBò!:’ ¸+_^Uü]%L:~´i}†ŸŒÆŒ·>%­ÃË…ñ¥ÜýÉd†ÍéHœØ\<î&”Ê ”ßÜ`.åýÀ¿ ˦~ŸÞ^'²H“Ñà&9{@Æ%6ßÖ„ §{6Ý»¼{6^<½}Þ…/D¤xÜj[ÆN¾1n}Ô÷û¬›Qã~ê•;Ö' â5ÍÍÜHôŒ'¿Aˆ¹¸Œy"»$ÆÜ–ùˆÈáÛ‚ô–G†r(jM9²ñÜÔÈdeÖã])ú#¾Ê±h¶Š ­Öqß:hG]}Ìÿ‡yS'NçO­xæQŠ;¡›+XÖÖo÷nÈÛðD³Ê÷:T•-Sߎªïˆ•;§©¤Üx¯À„ûc;¥æöö“*µhxx:˜Q{úS9›j8þž%“éxt«»ÞãBâËvÃͲÝ0˜F”µlú­‘RØ/7m9aHAÈ,F;^ŒÌ>–]Œ2Ýr³(Ìâ_¯ÐE¦9S½P½EZ”•:ã‚"6F0p¸WÈ` rcð0ÁDŠá_NHÒCG1|PF«Ì5pC£uíµå‡¯ØSs þÐä4RáhRSïÅ$®ø^è§\‡Aìq½F~q5è6a8Ê0Ĉ`¶"•jˆÓÈK5Ëòªyx1½tuKR”­àÆJgµ^uºÄ´¯zwr~žž¦Éðô¶fž¬t6ŸÖ«+gBû|‰Žg‡î“Ûï+YBê (ëÀÇhÆIXl-%6û§Ÿ4?ë`ÚlÚºL/Rœ–d%tØ8± '½n†7‡®˜»Ã¬Ï^¢5Ãß8Z—_þ ÀàoÖv¿ëaždVø¥ÀÍoñ‚ª·Šr娺rëAù(µp/rNx Íù*ÀdÛ÷¾öîuÛ*bÀwã/³ëSE Á‚ Ve½Qº96²›Ã?h™OómV8gY[Xß¾óôí·Mž¾C,ÜýéÛ/A´8‹dJ~ó~‰ û&/ÿuöÍð.ó¿>ÒµÄýЗÿz˜Þ_ÈÿùüÅ/¿„üŸ/–ýÿ1.îí>þkëÞ`Þ‚ ­òÏÖ–u}%`XËm¨E€b±·Œðmɶþh2KƸÒp²ŒˆÖy 9K&)%JN§b6!ú׳»I< ñÈ„^Àz}z©8]ñä"ï6qÕÿ²nð´ð*œq±¯y7¸CJ9ŒúS<ñ½¥Ã)M¦é)¬Ò§âs m‡goˆ¹êŸ^ÒÆõçO»Äø¤•³ôJŽçÇgg?Of'°<ÖP¡#<Æ!AQ:ìc9lPOf¡NO/…’!é'ŽÉ{ãxuÿ Æ¿þi~}½úëzMÒÆâ« *:Ÿà€VN“ô¦B”¯0z@‰.“/ý³ä”ÎA¡ŒêWU6”ãO–­&Nà“ωø4}F ކK| ²Ä.ñK| %c‰\â ºáæ½uÃÍ;uÃÍ{놛wê†K<àøøx@O!´²zMx—FþÕ£&˜¼n¿ãóú<—Ì~è}ü!<|~*:++¯…œØÐ>¹ÛàãŸZö7©Ù ¿rè|È`J’ýáÁ{‰'ÙF*¡-!@bOîêßZs£ ž£KI³î–µën®awmË–+°ìŒ£;uwç6oýD§¬m›w€i?'3›xwnwìAîo-bãŽ÷XbiwºZ´#=®·²m\m.ešv«¬i·rM»e›vë.¦ÝšÇ´[s›v‰'Þg<±Á¦±èÖÒ¢ïÙ¢¿q@÷ÖˆnÒ\°#óW›{ž yE àùhï¸^ 타«7dTöý‚•å$T³n}¾„ï©‘›QW|Ñdv"— ƒ[¼<ß1¬¸å¶ê`vÝ‹ûs¥ó´^Í’]ôâR\Î*t€·.ðyøÙª8F hJwëÔÞ@ÝìOàÍP0\êÓ“oaŸ¨•Ù~üIìô/ñDi+Á•!uZ¨Æ~^M›žN¬Ã¦=øvvú ÏŸzM~Åþè ÷_ájïO±:ˆi˘LÓ)½ ki™ì'=W½íp";îÂÃ!ÌÊ/ ʼ'ЯpƒìµƒùlB:›J¿ød4žML6"4ñ¦X…®Gã)„Ýþª—Ü&ã*¬›xÞp:AÛÉ™š;Î’Éé8½VmJ&§$Mº Ÿ3ôKôn’aMÀªm'9ëÏ×"mñhñ ¯ 2SÌ|S - P€Il¿ý¹Íuåùá‡{Oá’š÷–…B¶<&a Ö]µï12±ýÝà“VÙè…§ñÁd.¸ák}Ô|Öò>Ó0O'ˆU;˜xgÁÖ‰¼Lú½Ö+Ã7ÐFHDzLž.¼šl3ÖŸû"?ëÚ¶ä‡-ëÃe\È÷âàb«¿é:_uïZÎw­¼X6ÍÅã;´"ºZbw‘1‘--²µ€Èç–ÈûŒBÙZF¡ü£P¶æ C‘`&Ó– Fhü]ÛŠÖ ¾ÂŸTkò/Ós«æ™nøP×yª}¬>Örk¹…!5Üã‚áéþBl–±1SDh¿ŒŒ)¡íÒ‘1skÛ´0óæäŸ3óçÄÑlÝo ÿñ囉ÿøeÉÿù8×2þã‡¾ìø‡éý…ñ¿<ã?6Ö7–ýÿ1.îí~üDZÿÓè›G=s"ïÛ5ñþ¹Fà?øÙÜ쾃ß÷ÉWÿˆœ3„Dyê;MºŒ ®;GŽXͽi¬´¯ƒH°}­@lXÙrû5½m‰ûP6Á¶Ù@+ÐÍB‘|… “+þXaÌšrlBS&`Mtd’›ò#Ä¥lç€ðÅ)Á(¥-è¾ Y ãÒ$¥c¼>ŠgよåÌ9`ß|˜Ïü~.ñÁ2ðÅÖþ2 B yØ€ J£ ’1‚ËJaA'hdzáÙZ¤(þ)Ÿf_öç«£ëD²ÌÁ—¢cÔû£ÿ?r¨œû’¼%¶ÚÔP‡ï­#ü+¯¤Ëh’e4ÉW‹&)16aΫ£± 'n± ¡X†P,C(<#}ߎ|ߥ{ŽŠïQ˜Í¬¯’M6ŽÎlFÜ#˧§ACG¾V|z ¾Ñ¹†R±„eþÊ™;£©Á 8‰'xš¿Q³0a*ؤWeK¥­£Ì¯Â ¶d•OW ãEª²š¶€ÉøˆÎ@•€é\àïöŒÍþ™‚N:µ$ˆ”ÿ=’–œžwý7ü‘ „C=BHdzá<ªz¯TÅ˨r-fØ?·’0{NÁøÁõ=M´¿ëú¹æá&¨î¼Ô/éUßñßÈi?=M® {7Ñø2„÷™¢§'‡ÈÍtÈ‹€AšPånýýÚ‰ãlA }NÏÀk‚F™0& îß3i”1´ŸÔËS±}Ðø=ö*ñŸþjÿ9ù¨ŠšûÓbã½’[FZƒ_^:vW<¥X¸I—Å)©)AK%J¯üçð?Æaœ!\0E•LÄõ šDHºñYšú*†^ªiÃ]å@8:ÁÑÑÕ9 àºÍNÑÖ›tÖçÁd½qx;â“*8¤¸a8=¡õ·Ü ZNïI¦ô²Ïé©L¬=„~vƒ úÀÉäᆕ­vsÿõÛÊ“ÞXI#†õåcÙ‰×[íç(8…öãDñûz»6³(r2ºrú²³FôaÁÐ<ã[,0=/kãsNA¥Âöåwy¨nìkÓÑ4=œ]°;l!ìì `ŒØ§Â¯¼Õçkp %8rØÃAK~«ŠVûiýÞ¢î5²~ßÀ±åÌxd¹Îu]™÷Ñ/[·õ±&'ÄýªÀÏ?*`±<³B‡ã¡ÒS«Ú UGp¶[ £ñôrÄQÑ®¥yÞ¶ûüzÁõˆU#àã›T–­ šÀKÁ!¤üã+~üÍ”—|A:ž“XîÔ…ûÒ‚ ™å†f}¬6èÜòû¸´rŠÒ..÷Ú»¹¸×XÒïÅ#™-Âîšò>?šøŸÕËò±ÌññÊññËJGeöˆÈŽi|nžÃ±E„®F™°ùòSpåÈ —ã¬@¾™‰Åÿ] c_殄Zw…cè„Â0¬êƒß›çI_ßxÀÝñ]S¨Ï“CÅQxD×4>¥cÕNq1f˜&n ¦<±Œûf#Ç~´(©f»M,Ø­Îýô¢¦Þ7ùëûÊï)ë?)³Ëñc¤vUlFœÙ·EÅeîH ÜŒS·°Q…·X¯as oiýcÉH½‘@© ."kbŽˆ¡;F EHÏýûçˆ@ú%|¶tÒ¯Ö³Ö· Dª/NCÕ¡t ðþƒóÞ·½ìvûÇâƒt£DßÓ½ebm|_^…¼÷5œoÌ+H1­NÝpëªRþÊïIÝp¥Ú mÿoçÖŽ¨èˆ‰ )vh×ɪmÅŽ´_uªyMÿ•_Šï<áМɆësj£l˜×ñ× óÚBb£Í˜÷ŽeؼA`Ç•ljôÔ ©C4jè4&âñ2åå5¢€eR£ø½¸µ/C‰Dš¬˜k¸ÕvÙÀ­ùµí¿ß+ «°—LõN/ô@µ#©0³f£÷(­ÕÄByŽ¿­DHvü×ø|òÍĽh,ã?åZÆýЗ‰ÿz¨Þ_ÿõb£^óÿ,ûÿ£\ÜÛÝø¯îNÏZXtºo{Æ«nîÐ/ðoë õ¾DØ1Þÿìlw»p;ýϺb‡dEB·ßvà–ÀÓþ›„ > °x=ûkº6‘‡§‹V‰+Ï´§o’É”`š&ŒI±DìÒBO84*R:äÄ{⮡&cᄘ i—e€z°¿Ä^ÜÃ@}×Dº–¬ñ!°¹Kbv<¤ªó²Is¼&ËöR"Þ%Äç• rñPý¶”’A.ñû²êýg Åá8AEL·9q,˜’u¬ï‡,dÆ)8P‘ÂeÇœäÖ(Gy. 6 TxèЖæÎ|öµ10ÞŽd|ÿU¤“Á;¥ÎÈ⣔·´¯fƒiŠÐ¶ñ„±Ð¸?Q¸J[FF؆»UÚ¤­ÚépÑ>MÚÙ¢ˆ †§ËAÜÚQß1-²s-²³&E…m‚ócä …X !p2N/1`u¢JºGãœNg÷nÙ2úðÞ¯»U" ‡³À^¼aÓ÷yè@™c§e£¹ŽÃº¸ñ\zr—Õ·!fF½5_ ©ÁØi8 EiÍ߃fŽ×XR¨tµHþ,LØÆdK‘@l6&ã›éÀ--“‡IPª3oµºi¾¦°>$r>J’‹&BˆjU€lrÁ ÓÐpÎq¤ úµÑTˆ¡DXÈLQ!ì7MXÕ—ôjveyѰVº¦© :cn´1®{¨yÖÀ[ÐbÑå×Q×í•xž·æý¸Ý}—'¿§@¿e/ àt9hºÌ²~È-||nÉbbÞv·sËF7`ˆî4”Ç÷Ñ©Uv«½~wÔ9¬‰VMìÖÄü¿ÙÛ®‰ÎÇìâoôj¢Ý;ìnÃOüsg»Î?ôƒ¸Ð÷²›æãÖQ Çu¢=”Kë5ßoWÄFT3‹ã÷šÇÂ×ïèÇÛíý÷5é­Ôä~Ô=À÷š›½š¤Bßjí7ßd3¢/ ŠŒ´‡åeë@‚"åmai4œ0VœÈû^C5ë¥ä(L²+’ž¯¡ÐÙ!ü©8_ågUñT~ŠZ4?,Òƒ‚ 5 O‚ð, P ŠWyXÄ …èPä?`çÀîÅp;ü«¯‡—~XkÉE¹Í…§êîôŠñT‹3aü„/Š’Úz‡›à»‚BÃh+ZXoïR¿±fS¾6#_‚,AøóÃVçh»\m:ˆý“áhˆÑ/&FtòKÇœa†ÙëÁl"êºÖ$ÈN$€aå¯äHÊÞ¾ž¤ƒÑÐô,ž`ì[zýó °,Î}Ûu”ýq…±>oÀçüýÏø>]«­‘Y–yës]`Tþ3Wûbƒ¦Sáæo ©>Óó~ÃU¸diF×b6œ¦ÜཾÆÅÙé=™¯fNßOJœø3ÅË’ô #êqlÚ„VS¬ˆc§|'Á)ŽP¤›Ô]vq—¿®Îœx¤“í¿·Ž»V `¢Ž»Žô•)d¹ í]áVÚlз¥àb=…u r3TºðkÚÿjVWðÇ1N øË& x¯S ÷ï?V•Ÿí–H“>èàP³“gä@åºê㚌¾—«-M=z– G`ž} ‹\F4H߉B}Ø.q!zvÆ[}¡äI°4†.ˆ ‚»Ùoáæ¢Ý[‡’Ë÷¥M#¯Ð)xåCµæ{ì +•7NÏÉýõ^&˜KlÏ„º\æÆÂép™âilfÔ5uÆŒø«ï±ë{pÛWîoÕ×3æM(©i¤äužÖ½wÍì=¨dÚªµõ€*ǯâ-ö ˆ#àÚgHÄ-·4"Kj®¬¼­úÓ„¸§™Bð꿞aM|Å=ÍÛ$êõ"ßPol)Md„ yšà^´"Q¿qçâ7J¸¶÷¢pßËjâÍ›9;Š—ËÉê»õ´¸Ëõ¬µ°~„Wuôºý¬ŒîCû”ô,Ú>c¹‘iöÆùýgùÕwž‚î›IÓÝ1{SßD$Í÷yyñ?’¦TüOýY}ýÙ³ú‹zñÿ/ž­/ñÿr-ã~èˉÿy Pùýÿù‹çÏ7üþÿìÙ2ÿÓ£\ÜÛƒøŸcå×lÿq´½U”ãµ÷L(¿Š’ 4êü?þÚìlõò¤¨{þê¼ëî×ÌŸˆÀ57ÉŸ9‚2cDQø ]:D½V4^¼LÝí_%±•\]%$ðê_ `Áù¶?¤ýaMü9úŸ‘x›žõi[È´ÛŸ@ ºirFì†y!Kk¹%ÚA•붇^þ²²JÝ5Ë.S^mœ0«Ì2ñ¯­ýƒvëuëPtÅâtƼáSÒö•øE¢¨Œaf¤1ù¦X’*ì/‘:Ý%$ëA«¬h*+)VvÅz2 ‹µ$ÿØŒ…ƒå¼Ô*Rñ%A-Xh ·‚¿„ÿ%TØñÂ1`â¾ÂÀÄ]"Á¤†€N<˜MUáq[‹ö-Ñ5YÔ3ÝËÕy¯ÚŸJk¦Cˆ>a¥ ©ScV£Ql™èÈ9C#牋ľB&–W7µœŠÞ2öB=áîŸÑ¡Ûb¿oþ´<‘$‹a’œ)2Y-ÕeÛ5…h`ðÜš]wJ"×¹å³oøoØMs…Re؈ó„ ÒlB¿žP·ö÷Á()ôúLo±öp¾©öè{n¸‰Oü¸¦Mý_p†&4#…ê¦eRF<¬§tøª(Š`½{ðjù¸Uq—ÐU,èä|Í"Q«‹¬ªY3’­D¬ª÷tsÎ0UÕ†¥º™UÕ«òs¹e§f?«‚nßüÐÔ;E¥Š;¦Þ5&õŽá¨óF¢âM}V-ƒPýèÁ­ÞŸ&SÅ¡Þ1U,…zÇÔ öÔ¯rÏQPm‹$®¡Ñ¦-Õ$ìòÊá…'MšLjlþºÍ‘}Ûš¾É9gþâÔLè½ÊØA.§–wf`ÝÔOvžü&FHÿÞpM?Ƶ2N•ŒŸÄgØï¥å§tÚ¸¸ÞµÖz:G‡¢AgIô~?¤Vö£´v¿¦AH6ç¬éËš@us_jf‰ž˜\w:¼<&†NË9ÓIßD+z!|Æ/Ы^©£Qƒ¾IìÄ•{6JxÄ:íÏ´ï9F·‚Òû¢4èºCy¦O°%h_“{ŠHÛ1Ì‘þPó|× ÁGYìhX#rfñJ¤ÓWãºPRNÑ!¹ N5Ê•,…¨áâI&äòê¯íbo5½Ò é*wŠÔ.¤-Šâ´ï¢-î'J{Þí­7v€ö|±Ù¢(<ûN‘ÙBn󈜰ZuøôPV (£Q½à¡\¶³_G+3öÏ­øfX=6RzŸ’dñçTчڵa-!0Ñ+®ªj¡Æï6¸–CÀ ½o!ÓéQ.FtGRL 3¦ <œ‘GÕš]\¥Ž+ #hQåv‚>Ì»Ä}Èl`oMp:; ¸TýV[Ö3Ì`V¾O{\Œ>øTš²ÔN¦Vží?Ý5Núu™h«­Mã.XmGSKAåbªs©õîPq8µ°wC3úXÇäгד44SôQvŒ‹™qðkJ¯^Ñ[\”}ÅÒYUîPÛQþ6mJñÎŽY—;ÍÝüö™ˆj‡§Z«ºZ5¶Z]´¿›Ñ)æ¾Ù©V¸éÓÑ,²Wè÷ýI49”¢•¦ äÕä eö<'ÏI§Z0þ´Ú`ÂyÕ³G?%Œœý-(HÈÐÊßµ”(è7¯žä]Á2_Ë'ñ,ÑÙSdU“{t–|1ÔdPÚ.°öÝ­ÀC‚ÿÎ@ÕC\¬á¦Öìšµ=ë»N™5É’§ÇotÖ^Q"'NXu÷ÆÓÚ˪հšo:Õ9=ëreO4“,á/kPóª»æâÆ·÷Ó°Vçi28Ó©á)Ä%‰ŸÇàËþ ÓÈ“)RNL¦?…Ž`B…¾ãyt8AW3 è3X'zN f³`>Ò9H})“§•!6ý«ÓËŠÔ³F*.vCüô†A Irö“ݯ^æÑ¤ÔüWJbŽÓdŒÊìªÐ&8®ZˆøúzHÈ}$ œ*/Ú0ù¢Ò¢Aõ/Æ e|G ðlcïëË…fwó$Ü”œ»߉°4ɶ¥y êãkvÃñsüÖ|)¶µfÕp4‡1¬ñÜÚ«”˜‹j{ÙîN­ó_ˆÍßòÓ…±™5ÞC–Ö—¡Æf&0¼³Âôÿþ?«õÿ[ƒ‹ÈÑ_Uš ý<¸dn˜ózœr_éDJçæc°õÙN¦#Y{+ÍšD,÷ø¡‰ €Å³g4­ÞÀ@É¡R¨u|t2»â䪼©orKCÙêÖÞ m‚«ˆÒå#7¯þâ9Uô\æÙR§C4Õ™ŽûúT€3jEæišÄÿqót†8ÏdáÎ;c+³Ë˜±£ó{ùùÚ–>Ç„íµHÁ†R-唪»N iªfßÕñÔÒ"Ã(é¨SÌ0„熇Û9Ѫp ïÓ[³üïYB#uEÇoT™Œ†×`Ãh§‘óÁ™Úþ¶¼xd.ÀŒ¿þÛç ,k‹Ýð¬žDY¡æórè8ÿ¡¼¾ôr–^ÎWñrœÎ»tuÜÕ©49ÔäKµªœž/*NNÏv.’F_r(fƒž“Ë5‹—~uèUe»QAS~-¯J.â8."Áì4Z°“IBä‡,†g ¬•©†¥ˆÂ8äe7§˜’+‚Ð"Bfk¥‰ubO&RŠ:oúyŽã&YÍ ZýÁÅh íÊæZÒ)íÕ(Eó"Ì­ÎÔJ–|Ëg¹Oy޼{²ç:µáÓI6@½Ë¦ß¸†›Ûƒ[y,„0'v(:Zm‰ž³Ó µG6¶¤_‚ 'ãUn(øÌ%R6'=†vó¯v«Ó=þ«uØÝÞù‹Žªâ¥øp™A $Èü¹vk¡…àåàZØ]t‹ËùRÛ¹O’«ïꌲ!Gv"píVƒþ+{±Iãë¾§NïÁÀPB$f'ƒdÕìg[o×¶L…|I8Ü­l_’t¶Š[Ü(”(µ¸'` šØL†7éx4¤·ë“²Éìúz4žJ£Ž Ñ–Œ‰:¿´ûLÉøFÈùŒNyÁ`ª¹ñ¶»Ý{K&Ñ@“Øb¿€û~G }t´ä{nȈ‰ØæÑ¼¯T}“¼¤lO`‡ Êæx•Nu"l9 &8ZfÆšÃ9î§SEÿ¶yôCÚG–î_!v”‰‡³Óäôr˜þúµ¨ oú3¨Ž0ƒ”Øq…’õ<ñÈO­ :Ä_'Ðþ¢Hfy*ËŸ þåA$9]È›¥r‚>ƒ¥]Þæ ¯?´zÛd h ;ƒþ…ö,˜~BƒLÝÑ ØŸN“«kjC0€3ŸËé˜zŸØä¸KñUlÐuß…±ô@ž®»‚¤OGüšøÇy0I²Æ+QQw—a–å™þsbY±0·¬#£`–Ùe{.»ì¯ ,tB§hÁRÛ&-6¢ÑSÓ¶¢¦•"~ëdɘi˜”赆ÿPÌ?AÁÈ‹‡Œk‘ôðV ÆOå‡gðªé·âÈ©Ž(k  KL"ÒKDOS<Æàu#(ØËbݧ»/]ýÇö†Äî4Ø#pÛË`µ‰#2²ßÄCKt”¦`‡b;æ4É®i0/Á•Üçd0 ½ZBp±eíLfáþk§7,+zY<XRbˆôâMÛ1SÍ×UB q‘ó–^J’Ÿ'K`)¡âœ²îRuÀSî™Ën­®Š»&6oµ‡èTŸêBõHRjZ«:N]²þeêg âšJï—ß™UM·îÖŒ£ \ÖL/.XÝu–vU¯†±ô1ØÿH\ЊÄ?Ëvmi-¦Ög®Z¡Ã\&°¶r„³kaæÍ‡ç¹Î`¨®ÑK;4Õ5É6]/¤†æ5ÁÖöNó¨¬ÌÒ#”d?‡jwtÉmÐÏwË>¿õ1zg·UưVÏ8âñ©õE«Uò•Ýà•ëkÏ ŸòA5œç"cþš®&B§>'ÔÊ÷úò [>–í,.òusBKÕþ°{Ô;tjý¶TÍi/Ysùfêp_5GåäeåÔ `Fƒ †u?‚™pùÂáJ~aæî¾Þþã([y»5êˆq†olRü-ûþŽ9MŽþåêîä 6í¶¼‹Lƒ#†Û›vÌ-ÿ¡û®ó&»f­7ðªm¶’ìKÃË.FW½þ¨Ó;l·²<‘6YœÛýí6åüÍωáÝ­íXÌ輜îûÍãšèýÑ=”I™wô ,£{6%;¿÷×Îúäc¦ö¦Ìû ¿¡³0?2Õ¹óv[×ZüØýóuvë, ¥€ž>b#N%sL)¨|LËdï¯É×0hãlïªW ÌèÏ€†ò†µy¸öf{-«Nr|DöFîV; œ™" ÊÊyò•[HóX@BfU.[žõ|A’på^GÕê8ÈáM¯H×¾’CùÝÒ÷Kõ»S´º­«o‹û=Þø‚¯»=öÀF Ž1/Y¹dÛXîÆÐ"³oYÐ÷ÿ<&`ÞôÊ|cÍïé6W^è@yyoί>=ë4Wœº/¨–)ŒrÒGbT}¹2êyY¨z×ÌräÛ¶V¶ t¿æ‡eN uÀûú’þ…5úI.º"E›í´±ïþèÁ’£drjHV•'>±8ˆ¡7g܆RF’l`^ŽùRpdfà ç¹¤¡@UäNŽÄ0GG4AGf~ŽÌ”ê‰gþÅ=Ô£/"%ôPÏþWølQ>­ä@ËÅé<ô³ñ“Í#–Ìã8’Íc‘d¶)–Íæ¡¶/ý!dë]fŠ›Á:2zñluutFêC£G ²[ Zœðw—æy8Bí-vkN±y%˜¡›üBç>Z¶ÈóY-FÒtÁÃÁ<oYÌ—yv.Ogè ©ŸfcËÂõ¶»ýÊ,£µ-Ö/cys]ÜV4T_wåM´”}ÎWÐìçJ3j–%m2ÖÊd¡×¦h#ig’8ZñE75lÔ‚DÔé§‹Œ2çäMc¦´™üJ—­½÷"™mùyÞûò¨Ô$ÌÃÆs £Uwa<»Î¶åÂë %ôêy¥ŒË*t¤ÌMŠÍÙß©ØûQ\S¨ª] !ò‰îØ“«1«÷ Ãq§ÈíÈ1¬¹¶èó×yrŠ:bÀê<­tVj7FT˜%«þpk¢ò³¨ð6>þ[?Ãgø97œ'¤¥ö§²6ªjŽcÊçDFb«$ÙkéÇžst]r,±,[|ùÓ`ј8Ï’±ðÑ’ó`Ñ®µý^o*ã¶¡}:¨,ÍsN¥™Ž¿Ï^×eáTºènØ×™Jóð¹Siþ\Z&A‰ÉNûÍf(±óLn¾ÿ¿ÌÿÑXo<¶ñüEã9òÿo4–ù?çZæÿø¡/“ÿã¡zQÿ¯?{þˆßÿëõ_–ýÿ1.îínþžÝÝ e÷Yåó6«æØ0‰#ÎÆ)Åk†y66ÖêU™!â®y&„0‚òòLÔ¬oGƒÑ¸6[ .Ü kZXózœ0“F=¬v™‹ýok4¡­Éþ@üXý]œÚ¸í¹ÓV¨5~A¾ lBŽ7íä+Í»2½„OÂÊa ¿ZYH;Ù¨ ’ñB²)éê|É¡ý—oBÆïcp7iÎaÞMI›(išMÅþ‡„Øôï&ECò}R…Š8[Öcg4Ùðuz3¢üÊWÉôrt†¯QÃ2Œ¨)ú¦d¯ÄnŒÃG++okDQhscëí¼µ-om·¶ŸXu;ä,®JòW"!%Æ>Œƒ”a–TµÙ0Jòì PSÛXÒª¢T»å¦ª ôD¬+ÿYÒoÔQ[uº£¿6Ì-ôÄd-ƒÞ¹)#Tè@Lé š]®&LS›Ôºuek8©¼0‰2lþbnB1§>O<]‡NÔ¼oÖ6Å»M)oKÈb—ϧ–¼|~yº\bÑ͹¼Ë,_–Ö"˜§Ëe‡ :r>ß¼-Hs‘ÎÛÏÏOÛn“¾g‰(K?o‹qÉôâ _°Fe”’ËF¯›”({SÊ þxã3»;= —ä=ƒÞÝÉôþV2½+Ž÷·±-„È*îó|ª}ÝùæÛ×\ï^ã¤f•IrÕ>ÉIŽ'§(΄ãŽüWò·UðIÿåsì7VTñINn«™E´XdYÃ(þ%ÿ•…ŽN~çöù…~* UÒ§u_B~¡±¤/á©ýë”4G½l.[yÙÝ%-×€Óµï•Çfî>=Œ ,úï|2ô²=4›=Œù/§%DWÔkäÌWM…•e¬HUâ;yt§3*h0¢ª«HŠª;¼˜^béYõÜït8„T'ˆl–4,}Ôm!ú~©Ž•Φ&\êlª¨dUBv1ùõ¹Ë;¥S󾙥ÿ 9‡ÝžfÕ¡LGãÜNn’ÅèˆFüa(Z™§7Üy :*?Ž8^E'tÓŠÏ&êO&à“žýÆ00^;¾†ÀÃ"ÉÑÕbGiƒ!Í‹^&­C¶­;X!£9õí@ofŠÈ°©rœ¹ÖÖ¸ö& ž:¹¢DA>™ñøÎd5÷qII'1qÙ$ìï‰"½ „ J[ÈØª¤ÈD9_y¬Y¾ˆÃ³ÀWŒ4Â]ÑÆ™!Xµw÷âÄ3"CcaomwÿÌÞhØ{wpXƒNýˆÃzrÐ/j¯ì*Ô8¸™;!àW©%˜…àê†ß†Wpb=ùtž±|‰/Sœ¡ƒÌ'‡úb,©EÃZ¿cDÏw@ñ™{yñ?°@üÏ/ëËøŸÇ¹–ñ??ôåÄÿ¤Œ0ÛN©god:½'RÇ$o½Ï©Ì öäÍ* ¿*וóR/¥7@ÉG8u€~ÄÒ±üÕ ç^D—PA]wŠê]Ø0¥b»œ£\/¼kr c‚ˆK…w‰ ÂKÐï^ ‹K"?M/MŽ5”sÕÿ’^Í®¢Éxx­*áëô¹™ÖEH¼Lßh‚Â}ú4¨Îú.ØoLµÜ­¼«$דª<0ÂP0y~­îÉš^NVÅl(ßì%è T«zïë›BQ.ÓSuÚÇZ«@ç$Ptaüº› wÃúk)òœ›AÖa¢gVýÓÓäzJpÜñªb‹âh tžŒí3V¾mò›ÀŒ-d›¸ýòCrŸ†váP tâߪ9°šÔÖæEšQHPß3oÂc„Zr“Žf¯:Pï78)„ãØ’ Ù“”Bk¸y¥jò îûIÝOø@õs‚‡xX‹>=ôÓ+Ú¹H†É¸?2æÓ¢ÒŸÜ¬Pfx–žŸCᨢŸñmÚéø0N’Á¹ªšiQ/²QD‚EùøFá‡8n?©‰³Ñ Ox 3"šÈ;§Å€8]]e˜†^極¯I¾zÕ™ë«ÇÎÐJ:¼©ÈªÄE£îÛÔÏ~£¤ä¦Ь2œ^'&”T ޲AØ6zî5šŒú«ÙŠ gš Ñ= «ÃáõÕ¦i¸†JŠu!ucaÚGPfø&©ýzIj)VSUúçÓdìÜnÌ*ÁÈÌÆ²[z8Wléa$¶TÞü8Ñ¥fºŸèRA±‹ ˜JÊÑ_4ÀTбZ|®SJ¤¥gF Í!¯jÜ•Š:•BòbO³ƒIu©š4 &ûyïñ¤p=_›·8wQ»¥Ã¨>µ1©p«jåÏÃs—ªsO)€ÆžYÎε,^, úαÐnjdDNt@Ïqûi˜Þ±»0¤Å®1{EèŒvFÞýyH…©­·ªóôŸøô&nýCkZéŠSYŽû=N®ýSV†Ú}[¡³ 3•Zš‰©=”ü&Ff£†W}õZ¯¥Ú{"k-¯¥GT\<$zépNÌqÖúÄv%¬u¹áð¢Aùœ\£˜5,h¾¤_½¸©¯yðñyÔ"ž‹KÁVfÊ>¡h(Þ缑+gz ¿ƒR CûQÞS$¯PEÃ$ôeM  º¹/5Þ{Ϭ:£bhÛm8™Q8‘ŽÁõSÍ~FHòá0Î… o;qåžáöºv4Ó·{ð!ya#“ nOÁ÷Éø|€CZÕüCYu×p6ÓF¿, ÎÏX#ÚÜÐ/}å``ï6»ŽX8ì~7`rÛJpð5¹—«_ð£ÉÈÚ[í¦4hºÊ}¤tZ4›“òÔU­^…û¦Ò‚Z}ÿ¹ñOucÆ!Àæo–ÿ”GQÂÊf‡w%ˆhÍ‘ÊJ™‚ÚÖS“S¸/‹ëàÑTžš5­Sa¥Q51‚Jqy fn½4³Ž°ñog‹B¾Zï>¹'G¶›G`Q¢²¹+DyúŠ®Ùt§áý,ØtW.]»ëamÝ÷>%IãªO…b»® sšÑõÉ¿;Ê„¡Vó6†O‚Áó$ïçÇ‘fEj«¡¶¦±‡>Z8‘ñþ7EMŸ¤b®L:oçûôºIb`uA‹xo\2u&o5(ÁbæjPBeˆ ðb¦—kÖ^ÀT2z˜¥­i?¥QëQµxC D¥Yý™~Uùä'0=Ñ?¡‘¨)í')…B1䙑ۚW3˜M“Öͨµæ0½5d"òôÑ]-J‹ªØ¯j ìTͤ×#¢Ž½*•øŒ.ž˜VÕ=ú¸f1rØ5:Çëñm³¡žV°¾`€lëpý_8ÐýëUG×?»ebmbcÙûl4zªˆ{ÀtWöŒ×eH3¬!ÃŒ‹ÑmØRP9¦z ½U[L²!lèZÆPÝÑ#œcäÚÒGÒx>€mLøõôöìYãà)Ggä#'‰‹³–ÀÌË?¯tš»ùk–T;ì8ÕZÕÕ’ ORÚ˜Ó!1wðñ:¨HµÂMŒà™0Þ'Ô:Ƹ´Ò´!¼š<²J'ŒbîaL ê£ZØÑÁ‰k/½ÅŒ‚ý +Ì“I…¸w*#EÄ*Züâò¬ ¬3ï Ö‘Z>‰g‰ІUÍÌLÉCøC¥íÒiëh[ bƒAyˆœ™ª‡¸ûŒÒìšµ=ë»Nñü¥ZòœmC{Ö:Ô¤$T4Ô¨ `Lk/«VÃN´k¯ÇHϺ\Ù“Í$KøËÔ¼ê¨q¤ç¬øƒ³‰jUx ‹‰Ÿǰü¼‘'SÜ6˜L Á0 ~}ÇîØp‚Kµ4 UbdÓ€n Ö€!SÇäßãieˆÛgƒþÕéeEÇY#»!~z£Ñƒ?ÙýêeyVÍ¥¤k:Mƨ<°œ·p\Uþ˜@}=¤i Š>PÎ EQ3L¾(†¨þÅ8éOéìõ.àÙÆæ“ i$Úñ$Ü”|šˆïT>Õ¶4oA}|Ín8Þ•ßš/Ŷ֬Žæ0†5ž[ûcuT»¨6°ø€¬b´elV¯Ÿ âô§5Æ$DKëËРO&êâgž¾*ÿûÿ¬Öÿo F,"DUi2D(S`n×ðªëq åA ¯E¤7÷18œn'Sñš¤·ÒT©u{üÐDÎI£ÏÌNgo£ÍA»ˆVE¿\9±øèdvEcÜGI`Ù¾® luko †Ž6ʼnrå@«…ú‹çTÑóÙ˜ jo•¦ú/Óq_ùDý™Â F'ñÜ<áÎ3Ygx óÎØÊì2fìèü^~¾¶¥Ï1a{-$R0‰É.©D+­šÝ Ç Ð›q_ ¤ W‰_À¤y8Ï0<\E«ÂlF§·æD[BñEEBà6ªLTuÀn§‘3I-<-/éņâoÃ5M27Õî øVO¢ O#X)/‡b.ÊË!áK/géå|/Çé¼KWçÁ]ŠÄà|©*JKñE…éÙNîùRäPÌ0øKè9¹4¾xéW‡^U¶4å×òªˆ5¾ã6› k Æ‹(kX Ï(kíí5y@!åØÀ^š…бհ,*¨Âvmš<–¢Îkžã¸VV3¨Vp1CG»²ÉΨý¡¥h^„¹Õ™Zi‡”oQ€Ìs$Ó”=ש Øõ.›~#í@n… ™H‡¢£Õ–è9û7 RV{dcKú%Øp2^冂Ï\7es yœòªâ¥ŽÖH@µAÈ»vk¡¯{lwÑ-.çK°_d'tŸ$WÞÕeC¸mNV‹c2îTj‚Nÿ=uzðЈa•Ï0¸¿6„`”©Ð‰ºm•0'cÅp>#¤4A5WÅo»Û½·¤ä*y_†KZÀV!ྟ륂ÓÐu‘ï5e+ÝVxóæÙÉÚï%Qð@ËÖ××e_¥ªòû¢Šè3CP†ïΡ*¼OØŠpfoYž­…p7 £í‹irz9LÿäœZT†Œ7ýÔûì …)OâPP²žÒ&É´u‰ýuæõËÈ# þõ/ÆÉAò,[ñyCðm^w{ý¡ÕÛ&KØ@KØô/ô\MѤ*ÄçÌ{‡LN§ÉÕ5µ!ÀY5ÉGi9H|]ÈQƒ«æ¼Ðt¨Ä{¸‚¤—T£®LpÿÁ$ÉDEÜ]ØX–gúOHà]pNŽÜØæq_Ú`ÅBDZédÈ‹ÇÍï XŽ>‰KpSŽ']4}îc!Ñ$nGÖ:|Êg[˜Cwþ‡¾K3m-’ú¹˜_oI§cÊ>Ýl8M¡ôÊ}n>ë»»<¿ß'3éù—tü•X+d´—àù{õM¯uX¥Y/þ5Ú![;Zf„û'#ä"£Ãû¦y£2ßz‡gH»ìQ¸ÂŒ<ø·¢&º Ü\õhó|Ò¨œ õé!L‡­ÎѶó8j¥ã¶5ùv‘šYŠ©¯;ßXF÷&fA²|r+ Ès6 ¿UReͼîUÐmW¢qVå½^vÿïüÜò†9<¥4âJ)‘ÿÁô¬|mîœß D‚ƒðÎçÐ{qq2¢gâÑl9€ÿHÒöa*!û~O;yìj.SêA#çN3k(M´(NA„!Ëÿãív‰¢ðïÚmñôÙ¤\ÐÅÕEÖ•><HªÄè·U §æ£%ÂWóX¦ã’‘ˆ¢½Õþo ¼>Ú:‚_Ð}¬)0ÿÄóNXˆiï+ EP¸ȧI‡Ê¨•<µßçíd$„ˆ…MD g §?î?­âæÅiŠ;QؾmiöºøÆŸ²V–~™É5à;±úU ÇÔÌÉQ ".ªkí±z.XÃÑ9/¿G4ápÄØ¿‡ÄwΫ‘N£Y5ŽUMä`7›v6o6gÖÈfŶ¥¸ÙóÑ`óx«w»m»ËôûìAW¸£®×ÞÞdš—iã{OµñM^NþÏýëñ¤˜?ÿÇsø~Éÿÿ(×2ÿÇ}Yù?¨÷öÿ_ž¯?óó¼¨ÿ²ìÿqqo÷ò|ht#Ë»¬Ö[ 阬ýÙX9öÓ&ÈØX«We†‡»æ‰ÂÊËQ³¾ FãþÙHl%)q2H¬iaÍëq:ÀLu±Ðeå˜/µD^. V¶Ô|ìt 3ÁC${ƒNßÐQŽ•»À9UÍ`¯¡!‡*.[ئ}f*nCâÄ>µZ¡°>îs_á¾öÐÚOXñ(b½ÃYâ‘y,§l²Õ)Ÿm;´LîrmBä–¶ >Õ‘yÁ‡X uÁÍ#ÄÅ…l±ÆÜKéÄÎHyø›÷hm{¯qõÜò8é:¼t 63©5ïLeI—ÇÛ²9ã]…´wgßk³OC6º$(ͶYENx¹"áðÉOè’åã̤Þô6*ÔkRZ ^I3hòI bKU ãó[Á@ÿæ²³3mAæÅ韨ŰU[H”)3ŸÉR›ãÂt–­z¡¹·(¸GõrÂçà6+2–ƒ#Å4æ#ã†9wG¸À“EGPrYèD gè‡ÆØ?°'¨;$\ÏBÜËi=Î;‹œ‚“nÌŽ²u”hmTÐM‘­LV¬ù[¢ê¨ñMÙVé½ÙÉ$…`_DÍ ‚½´ê«uáï€`•*ôxQ`â­zµ&Ôï üÝÝ Êéu/#EhVZ$†J4jä‘÷¡CÁdŸrPD‚±AE¬â›oã/lØ/¤‚s=MmÁÂ^©’™OÕ'¯t9í¯è“Wl›úó­w¢õ _±ŠJsvS­w³?PE"ý$”î–þã"¯Gdv‰¼>¡ßƒ6]÷NÀÍç–é6¸Ÿ„·6Üäv‹Œ~ш¯ºí—Û+d£ôŠÌn¡j­ºR³§eõeÃë~ CÄ¿[[Õ‘…òÿú®·¢íýßéYãkìÿÄò?o¼¨/÷åZîÿþЗÙÿ}¨Þ_Ôÿ¡ã¯ÿâ÷ÿú³åþï£\ÜÛÝiíp«Ùýݪ‰íš8l¹'ÄfWw¹û;obáÒ¹„çÚÿ!ìeÎÜíy²üBSW"‰osvŽÁpÄ8Áì–“¬V¼õö€E“Ù)«˜Ü¤CðSïBÑfè!³'`jAÜ{ž¤W)è¹N§0MLtì­ þXYy+ùâÿ¯ÄáCï4gogìÇEÔ€`pÚvV6Y»Ëe¶‘¿ýâP¹™œ I$·ΗÉY¥ÏPÈNG”%¢lb$[ŒÚ•5Z$;Ò‚5*£”xž$·AÕλßlºS>1¦ ¯TŸÛrxÓb¸$ì|˜dÇÕÊS¨I¤kÙ#‡¬÷¡©·~ÐìvS¡œm7»|5óÃ[Õ4é“k$yr¼…”Â3}ú^®Tëü ´9Hdîe©¹ [ç(ñDêèÍ!U›G‰¶æ"U‰)Ñœ`…ªÙdÍÜ0%T×›g#QrHëŽä·Ù⣿G:£Ø’B梬ú¯×Í™Ó.º1œIb«’bdo“2ÜÊ2m/R¦ÕzPªÑùùêâ%Û¶JFyyÜÂ|ý´Ž‚Η¬‹[‘ÜÙ&V… »a*ûŠ,{ÔŠ(Û®²"GÅlPúTªˆþA(ˆ‰ËaßÀ$é$²žµGΧdiÃaY÷3¦àžÈDà 2ŠÒn.úWo+CÌ8µFÿ{[iT៺6DdÆz‹ }Ù79‰ôóoÙZbULû3pØnð?ðßøæêÂoRÛä&åéÆýJ²ž«Ñçmëå"ßùv~aý7ø­þ2]ålQìz™<ÃÞäÈtå臒7¬{Z$åá=k·^e­*£¶¿킆Ý>­kí¦O¨ø˜v©Ë÷Ðé‰W0K·‡4iîä ÓÔ2pºƒ>+v™XöÖeoÄè,2õ šÂ‡".ÉPq襈_Îh¤YT+BœÁþ»iÀðß3Qu•7yWUKÀKKÉ’ˆ@Š+Á‘“pS¤„,)q XMKJ\‚”’-«)¥Tmëc(¢u†ÈTç¸:™“tFnR”ÃOÚè$5ÆKk=Sy’Þ˺ïƒü(ƒDdUý®³]“4o›muªe(`∊¤Ž¨IB XóCÑu¦ž¨hò‰Ï`1ä3ÏgîHl°8L¡Ù>xÛ¤=‡Ö}€ tÀ~óøàO ×ßÏQû Šâïî¼É{ÍüȈH•>n½;|]DI¥Àw…e™—G` <½Ú‚l|Of,yß@ðÂà.d7ßh…$ÏÈ„rßsDeëˆn;PkÎÒíFùR9ãÏÒÓO*ý Ì@ףɩ¼¯ö¶á¥ceÌM¬èæÒ¥M¹Í6 L\Ó>Ömr´ŽÀMªb}bU‡c´‘ ¥~F@-±}]ñ&&Oó»óüKÆtcü0½L(Èöμh?@ha!Z5ÑzZ÷‚ñTHô|ºC8M2 º*i ÷“>è‘H!>ƒÖaŠ»šÀò]_n¹ÒtÐ}‚)3™ “¯cÅjèXyò¹ITdlw \Eä‰/âå+©Î&©”ü0œ¿(G+þ®¶ÿ^uË+ÊRóTE3Zö#xÍ œœò~Æò~Aú¹åå’W¾ð^î rßD"›z§±,ä ¢Yf ±²K²p…qz(0‡Œ*p{òŠØÞŒf‡ŸbUÐÙÎÀlcdúM¬x*ŽVÿë» ÊÐŽzFëtV묒_/1¶Z^Ó( ýYŒQ@Úž;ÈO¼^âEå ßp¹97lUô·Mú5Öqé‚K@Þ|Äì !qÈÓÒêv«û0'k<´÷]ãã!K² ?qÇÇ4Å€=?ÂX¨–S9#!©4o$ì¬:ÆO¬­§ ðéѯ;*ÒB¾ÆËùøÈ(kx‡‘ñV/A_WƒyEÄÆFÒšmÃå‘2¯ãYE6ƒ¨¶ñG.U5*º8vñ²ªQ0˜zåÔ¶ ž_yL¥’ëQ5«àåšW[CéaV?æ µæÓRíé ílÃq!2Ð6²ÚŽ’ÄΡïÙòŸ™áÜà%/£¹¿…ËÁÿCø¿%þçQ®%þ,üßõþ¢þÿl£þüE€ÿ[âçâÞîáÿvbø?æÜYBÿ¬ë›ƒþÅDA³•GýÍõÛi¨øÜI$Öztž‹D!œTÝœ O/W÷ú³ó+¸GŸþùÞs•L/Gg&©¡]ýV ÏšvÎ9Dƒ‰«lyÖ1¬ÈŽÆ`¹7Z¡-ª„$:aà§ÉŒ ß*©áOGÿgÄ™‡+TJ?⳪-MkêORƒÑé'SK:¨¬#Œ#aøkÃ|O·Oôá¨NE¦¯ ß¨^§°+*MGM€I"Ù h'7 XºØl7{Kdä¹DFÞ322ŠDÙ^oÏ£G Nçí9ô„Zb0^$Ë[õ‘`p8»|Uˆ~Ûr‰:Òá4Ÿ^‚®C&ªƒÆ1óiÁ½[“áàôö©Š©mdŽRÍG¢¸H>q€¡¼lÄ£IÐofXÂVåS퓜0ä°ìŽÅ~Lßt^ôJþ†h£¥³eè‚Ê`Õ.k´€«õ—PHü×Q*•9:ø}Î-©S!úði´Ð¦¤O#%-ÒêKxªFÿVóJ:'Ú®lgaí>qüT>a’ œI¶a dŽ„I|å¥MÊ(\BºÂ¬J”+1½á4]'\"Î 6Â,ÁXW7Ê^ Ëd4¸IÐ9¿L“+ªÁjÜN Yy¸þëjã×Õõb†Ìéé%mìó«7G'Èä&uQûýé%&¬ÔÈ·nr=èŸÂ`´Ö¨3¶l°¶ñë†Uj§à,nŽXåþXô’ñ º‘œÓu(ï‡ö ™¦Ó& s+òÜ‚>¶’ëéZÍ]Áß{ÃÑ—4[øª×ÌB}gY&B•zAæƒÊ°ºr„ÿ€Ó¿&V 7Áô'áôÒµßxИœn"ðþ|@åXNNÇIÓõÑ‘æ¾Wtrf:´¼p?">ygn|rK§&“X"Üpš!µ$,d/G#ÚÇçLrËn5Í¢ðGÝð·¢Fà*¥:¢á¹ŽyG®® ~˜3s”‡7k{jóü wÕ£Ñ5Tâ,OF®ZP9kʈn{jF ».6®g‘Ðø§M´^ “ÿžø613ÑK°¶¬ûZCÝzÃõæ8|'~µÒLÑÄS˜ýŽ-™2< ·l 6'‘Í$¹qoDèM/¬"»—vÓÒžÂI"·*Mqx¢rG°8œå8¥˜£ \xˆ€‚®¦6 'L·Ø×c@NºvÉÆ¸Ç.\Îãñ…zSŠDíçø*~C*Ž$ºâœa<À«I¼ÃË—¾Rc!«x†w[æK?èf?óàSâ~ö-Ì[¥ÆPK´Cm¬·Ðû¢ÓDì„48°ñ ÃU ò…ù^‡®öœgö‚Œ}¼ -&Gyøz®çÚ›í5^V”V2p¦Ã‘mú5½¤[Ö‚#¥(éÚµL𠳨ª}ÆÈ™, ›½»bÛ¶ŠòŠMù©eÊ,O›(þk£=)ò¡iﲞƒÈ(à»Ì¾å–N Ÿ0ŒÊÇëÛE¢'¥Ëk•oW×K9Þóaï2%ÛÓJEu·ŸÕÛ3º_‹š™ˆZš°¼wXmy55åV¥ÌY dÞ*y8}ìñ‰½×Ô*"¥T=[ÆËwªº@¹ä™‰)OZ÷Y2afÛF†ME>r_AsãžX•’žŠz0¤í  ··—i`­\Ep A%äqa䈯ÉìD€âÆYÏüjÙôÅ{Ö,¸g€âøçAFoåxÌá¹G•¥'W½Jó… sI!J˜_¬¯gp!MÊϨ¯_ Z7LîÏxòOóTüUñòuëÎ4¶—uŸý¥ýÀ«3þ€úò¼&6|‘UátÜÈyKN·ú:d|7ù@~j;#Q~+ï=È»õ@ÝyX¦Åaòåkà«%2"êò¯z°{ëÓ(ìÞíšG‘`w:ÓË"ž“.T=³§‡sí ¾T>ï'˜i>‹ËÑàl>ü·FéŸ ïØ(¹1«ÏD¥pÄ/…Ï$c"e“qu‡A+,¹íOÿVigÙZ‡fèRÑ¡®Ýøs,ôJýgúæŽJÔÅ8ãxaóë𵌧6]íz½Â7ÆÂQzˆ@’jÒ™.#s¿Šv„¤éøo‰åî ^YmÙ®€ ¨{Õú¡ j[¬ JËî#þ„*RÂ$äI5å8±ŽÌásúØØJp4]Êví4Èv¶«ÉŠÿ¡3Ç—zÞÑÍJ:¼©  â~3>½pl˜n¼H`úeÞv¬øÃ ZiÖ­Ü s[FÖ@…½"öD½.3î><Ô]¬‚®À 1$*^˜zÃ#²Š€cþ!}ÕÙ;ñL: ÐJ LÞnMcuV¸tÒ#@¬ªYKU]Év€…v$2tL¯Q/i4VôÝ« Ú~eÖÓP¡ ŽÝÍ­ŒP1²»VXþ¾*ßC+—Õú€Å]Í­–+”Šh=¾/‡¡uÿþ,/ÈWÖ+’{œGñ]y÷íJ¯ ·¸­n"¿©:òÌ-®µµæÉŽúÝÉ­A†Gù³< þx8ì"ó¸ýbÆ]³Ööì Án†uãª}§ùNªÕù6¬È–Ä]ȵšä“˜Ž$ÄÑA@ÊÍO S/PÌǼóX_7ázÞäåíɪvkO6b½b^œµ'+ÏÏõž,g˜gO–ÌðyþžìïåP´' ã~g¹'û {²mRqæžìžµ™ÕYÝ#kïérg6X_,wfëÛÛ™¥Ëšitïÿ±÷îMm$Ißèÿû):öœx­+F—ÏzâHX̲ÏoÑ…ÄHÂ6óáO^ªº®}‘0«wÇ@wUÖ-«*+ë—™%ƒG—®•›]FÍ,qÛÔ×Úµ†vþz( mQP²••+ÐÐÎ& r¦¨h?ËçüDT¨å &üè*\Ø/xÃ<*ZZ\ñ&A‘ûJœÍö…"×í~]‘ûj­ÈK‘[LTäpE.ÕßöŸ¢½O‘+çæSÐä¶Ò4¹­xMn+N‘¥Ë¾5=Qß+P­ìeÙ§³ 4µ]T}†S›*ßë|”¾Á|zßÀ£ú¥ã‚Týjg†DW>WÅj‰©Bh™Šâ}oS ]1ÕË­V¬\d¼šG‡œÄåxæ RT·gÌ>ŸÓØ ÇÔbã²H{k¾ôjoCKJZNm)pµ/Ò Üz´é"PîE¿–»HZnàÜ7µ‚8pqp1Yl©sµ.Nûj©Œ—©®V̽eað/R\D°o× t­¬Rý¢V¶ýåYéµÜG‘êXiu‹†ê¸Zy°êó:RþÆ4$X­â·h*~ÄŠòzuŠß¢Tü-OñûKŒâ×¢/ßÛÿXJßb&¥os´¥oѯô}©)}µÓ¯›öXÄ»y{·vóö´ÃÿÛäò©ø{±öÿôHÏÚÿÛOýhþßV4ûSã¿V_¿¬Úó¿úòÕzþ?Æ#Ä!Óÿ[§‘ÿõãaN-þ±ö§=áNôûw Ë<0oxØNãoÖç”L ”³ß¬Ž‹2'‡¨àߨaYuUí¿“Ã2Ñ¢Âa™9 ëP®ëP®ëP®ëP®?G(W”]¨R_Ñÿa¶ÍQ-•É_ygO”K¨ôB D$è6VÊñš?¾ n ¿‰ˆdpQŸal"$‰üŽ~SôŒïÆ.óP„NÅ¢äíB».=µëâј²¢Æì[HXökßakdbè A¸ZêQÏÞ…0H(çO§ k]þ& †t>0 Á†ƒÝ¿Ãø6fwa¹²ÙT˜ѵæBe+áQiu#¡ÅG×ÅÑ8'“±Á47pØÀÃÈ$R¸QJ¹¡ä‚wzÇÇö­ð4bÿc.G}ëÁëÁëÁëÁ~ •uˆà•»IKqæõˆæÑÕl§ÐÙŽ‹/ü@h­';—²xBcEVóãq‰!€¨Ô’úÄýÃ#BGâ/»Ûõƒ&Fœ:óÔwqo^l¿$SQ€àn§á)a^‡^UM¨çüa†}Úªí´Oã)}¢q2_m+.pĹÌ.Ĉ,ï|Ø(+ØÓë—+ÊK­"?Nzí¹ÙqT~•TLt²eÒá@µ”}‘æ3ÝpÀà´ÁýžX€ZóŒÕ±ÏJJÏOæÑôŸŽláIð9A½fí/#8IJå3:'£*¥8'‹:ÙßKˆ´¬÷´·É•´âD¯£)Däîðã±–“ ª³¯fø+“©Fø+®àÒŸ@ÅI_$ÂfŠ@ ðIEé/µóUnØ›JH Ênï½û)ˆ‡£Ë!ËIfƼÉ>‘M%m¥ò‘>ˆÔâ³Ü©j&ŒŒ:?BeÉDpã»O×ä|N¯©QQ䨆8ZÐê~þh°²¨Z4e1a ²=žÉj¨ b§OÕQµ]ƒÂ‡6)m*ðžÎã|H¡;•Ñ;–&+FtOú!S¾²)˜c…£7 g*‡YÎî“@¬4„|ˆ}í»¼)í²ÚŠQcÅÐF›9šhùPÛÆôàÇAnÙÀ);‘ÁLM-®øgæâÁÒ5íʶÀ‚VÞ|þL'm6™z8€‘1*dnÒ&P+ÛgÅv¦Ìs¬xÞ`Q]3ÀgéQ‡~–!©É©¢«:x3(Ž.Êd=ëÜ¢‘N±UœV?¢3€Ó$Þ!„á¥XdPþnÄ\{)ï "êØkq¤ B¬Ý57©Hþ‹.çx©PÌy}⫦éi@~Käsœ-–{fØ…w–Çè7¨ù´ð‘ãÌ~,œºèubv?ZÚc* &SS¶¸Œ²yB…ƒ4cXÞÁ‹9ÌAkýõíñí½y+¢]ôp;a¬eDÂc%§”6†·æá„Þ¥ ²EdP…â<±±ŒÝ¡¿<öF9…‰eX(¦¨H(¨<¬ÆšuŸLC{‰¤+eô÷BÔŒ¢Êѱ7“ÃgÈy̾Ñ4$•Å£Œ³ -|xû ¹âo1­ÛeŠJL³ZÆ–³;—h:ÐÂ.ëì>ÿ<ÇŽ¢8âøCÎtƒDo´ê™ý+u1ûtÇõОñ¸©Jk5ó³)â®’¸@\¬lyØÊ¸<å!ëâ°å[^<ââ 8Üæî†`Ýd.W,n-&¦À{àŠÇ^wÔHÄc¯MüïÕÓÁÿ®ã??γÆÿþÔŽÿ]ÍìOÅÿV^V¶\üou=ÿãáÙnãßÅÆ^Cãž§ ý}pLè±¾ï9<´ Àˆ‡…+4‹¨;ôïC: ö•I,zÞØÐ[KŽ ½†E¯aÑ? ,Ú‹êK ϺŽã¼Žã,žug7Žó µ†£O³kdT ][Ù`Híb"4<­N Z«ÝЋڊð›tÕöTp¤ŠÊï•*¶÷^ ö²"`/-öjb`¯ã0¯ã0›ÔÖq˜×q˜×q˜×q˜—0^>H×BèÂÿë^.£„~|ëâ¨àî;Fïî¼óP^øñ#ß®¸>*¯ýW¯‹pÓñ·ïžþöÝŠð·²W(ÇÚÁj¦ÂbÕ Åá9ãÀœödCÊSâjÉEDÆŽ¡á(?¥h‚ÈÎ1Jj@ûYàŒO$fò~tގ£»› ÖÏJ…„<=²(Ä+ïo::uèÆ0YÆ Â/û¤?‹pãqB4¿ØtcìºS¬G)>_€¬òY¸Àk…iXpB±¯Ð¨@"—ÝAÚx߯û¯øÚ6 %pnAšæÊi–lQ n 6Z­^f}œj0#¾ø=e´ŒñH3&U){ù Š”t‘d›Zñy¢ZàPÚa5ÄîAßÍma9áx´¥íG‰Å³ò¹Þ.£{ÌôùNËjã©×´Y/}k³|’&à W²6|~3ʸ6ˆÄ×<~±@Tí¾w÷‰,è~•‘ZEj—ÜAɶZ…¥¤ö±i¾@Ü!{vÄ'r‹„2‘¼â ßeeô”>þþÜNºL³?—äÆÖY,«~¶/¶‹,ßý#`ùÄÿ9x:øÏµÿÇÇyÖøÏŸúÑñŸ«™ý©øÏ­—¯_9øÏ×›ëùÿÏvÿÙLÁ®ŸÚóÀÏñÙ4Ÿìói‡õÄs%:`™)S2Äâ©£ª Ý4ðšpðÓoe¹È; º<,ãñmØ\  ]"4+߯™Ð'³ºÈÙŒXÔ õ¦lh†ú6hCÌužLòá(ð@HW˜KzϤ*ݬ²då8<ˆÄxÄâð`h4.2YH¯‰‹=BZ¹ˆ¯ó:ß i2ø4ð:åôCBcŸºRÈÃ)ðYHA!•‡Ï¨Ãô¨RøÇßLçVŽÂè¡ÕQ^[µêèD¼pÌGÃ>šôW}´„ÈU„Ëw.x.Íf~NüX|l)è1x JÿM_;à- \Ôyƒ™ ú’,Öß /‰W.ÂhÒ>^1n¹Jz@éT'_¥xW] Ú9,òl.×½W b@ 0*¤FÈÓI5ÔíïUȆ¾ß_µ}JÔÝ98Z.¼ÀSÖyã°»-µ8±èN•P—¹ÁÛ‡Gÿ&ŒÁHÕ¦u ƒZý¸DaµJ"Ôié ~\T});×z3ýFýNªÔb`é)·¯C Bx0cÃÕPµ°„Žä¢»ñ,wɶJ".ÞÞ_M<û5„Cªñl?PkjjÙYˆèá6!.Ç鯹ÓX…ÍÜRˉC‘ø}@kžã]Hõ¯uÛ«¸Ao—-!Ƕ ZƒâæmX «F «Ø‘ÿ–ܨª·Q›ÊÉ™eX·yÅ 6WË‹–&žÀ Áx9—†yÞ†ìá^\Â辟=voª†¸ðK¸fˆ¹ð3è¤Üø½tnü¢ë'ã¶Å¼ «ßÛÅJÒDñfæi¦íÍKž×öðÁ,CÓ*™•$*»€¨¼Ay5‡[$,󜊪Äú“Wz§Ñm?Áe¶5ÿEQv–˜côêÅúãmë1­ù÷²è-ÚÒEõ£‰`R‰²,8i#¥H¯_8ºw¤Uà 8¼(_PœïúqÄž`¨5Š ê Ûµ’%E™µsj½T; €-­ýÒö”5 Ú‘díßµ}o• Ìã ³ñ³a*î1ÛzZ,wZ8c¢ÿ•ÒV¯ˆÙâ/öƒÛî0ˆ ?±5uxÚø;5æoÚˆ‰’ÓÈ̵œUÿa§Ò·à#¹©·– Ðý#”œ÷ý»dSéP\cE1M¡¿óØN[ÎýœOÿÚÐyœñÐ…Šå°#ß°±¯6Â` GŒ>VxxÅ%TDaN­‡YÖ’ãyz/nFIGYtF¤¿« &L²Èâ-퓨z´6įӂ‘'x¯UQ²G¹³–š•(ƯcÚÔ9JHy¤’:нIŒ“¼EGà—¶Ô)hY{~vYÛRÌËŠ<Y›†ìÕÜ`Z¬‹¦ýåg‘µ½wAOÛÍÚåý’Ú$æßÍ(¿ÜÍô½FßÙ’¶ ¹éY•XPÈ êÈ-+e5Jû¤oÛ p¤oÜwD²t <^T7¤ïòâÒ·ªN‚®Dô¸Ïåy¥oá-a=QV?QœQÒÿÊ&{{6ú»œ.o¦ì&ýò"û Æ®œ$ÀóÆø{>Þ乺ô‡ág“Þ`˜$ã1ùˆLÊG¶ /jÒrõt)àC¿qÙ<Ë/âÄü×BÌRþÑó_ÿ½Å|ŸGpwÁ:JHy¤’.,æ—ýbþ+óIP½KJ ñ惌[øïê*   à¿_¾\ã?çYã¿êÇÀ¯dö§ÍÿÊæ‹—{þom­í?åáÙîà¿«kÀs?¤>ªÀí{wÃA´@ßÉ®jV[ËøÿÝNÂ>¹/CdÆ]×ý7(ÿôW/ÿ‘ü 7« 0s­Äë% ͻҼƒ4j6 YUÔÚ©5ší÷A£y°Ó&ô›úɉ¹/BàÙ0rÄ+ˆœ1jêtî½­ý ±íÝűíÝÛÞ®?=`ûôþæeƒþؾ¶+`;°êã¡Ú‹ô(_ÈÁ-!mdtäÓgÂ#¬JKÔƒþß{Ò)S%ÎŽÜ¡ª|ö´xÞ…“{n¦SX/ç.„"CÓ XÖö76ؽl¸°Õ¯å¨hÑIÂÝ­žy†>à9²¤ ýNN h™ñÐp Æ!ƒp2õã¤.”Ê&áªÃJ#ZO®æ§w<À y×{íÚú Íú`NŒ~I8åŠÑ1~¾CÎû~ˆàÔsâë¥ õD0ﱎö¸Ä÷¡p\Cþâ8 Ì"Þâšï0’(åÞx¿³¸÷dbð5k¦gõÖ? $–@üm+&2Ù ëç¼ –Ñz†Ù£x€Ó@Ùÿ¾ùšÕ;ç~ÒߊvÆQq¼ÐÅYp=eÿE}²˜«Fy‰TÏRÈPmljzã’4õÕ'¦ª_Écëÿ¿­@¸€þÿõ‹µþÿqžµþÿ§~Lýÿ*fÚüßzñb³êÜÿm­çÿ£<<Û]ýúκÖþÏCµÿø¬Î} G…¬L¹xõû¬J)Í­æ?˦ç_{”Y{”y˜Ö}­vÇg­v7ùñiªÝYïN+w[Ó»CùiW×# ¬ÕÁËTûœÑtvLlâŒ&XÈÒüØÏ䨦YŠ¢Û‘Ïší eEðdÙ>ê*ŸyYSäßì”*r… ¤F’\½%ðÓ«ôÚE¢DßFAÜñ¬êVIË ª®ø&Zñ+P¯«ÿÈÀó }áIó((!5Tóü­Á?Nò…#q•YxîÒ–£­ÄæÔ5g+YÔ‰C‚ˆîþ[5[€é>î6[;ÚMa mOÅ0kìi™/·õàVøPïísïEVÉ$šfÉq™§Ô%±_tLeµï–¡¬S'aü 5à‚ˆoì:ù«[QÇ\U¿jI“üÏD&°zÑnªt#X»g½F°ªÕ—cX·Ã•Al$PT¦[A΢‘w†ÌµäÓÿlZ¬LÓånæâ<üéKQ°x]M¡“îÛ¶‡Ùá}€ìlU.yk2 Þ¶Sbšíº×& ³A"ý­' 漬ïá<ëÍN€³Á—0ÚÇKVŸÓþ€Å+e(°d¨Õ—&l3Ïø€Í<ü–þ-Úæ€²×—£•Aø%É(H¹¨ô‡!lm sZT°ÔƒÃFŽÊ€U5À]( Å5üV™0ðú+'øf*œp»àã¹iLIQq;Þï½%€UEâÌfi/ÿ¶?°÷¬¹dì‡F窈 yëã_ú O±Yjæßn«s®YßfÙ±ÓÔ³B­µ³ol}¹fÑ×6Áòuñ!]³­Q€2{¢ù¶buŒ˜sMžDPžUšÎ³¿#ÃúÌ.ãGVk5LüFKS!zídòuU¿iO_0¡”ꈳ±\â½ÉðL%„¡ó'iŸ(¨h {¾¼bU.ØçuOZªÆÛè÷¹ËR›MBi #PuùÑ4 wù¹±RöžqMaGš©,ÙLfÉh¾Ñ_<å4Ö”ŸWž±UJÉu±•Iu¥Ä~6§ÁA6R™‘‘²—®q/‘P\ÉÊÁz>ââÊ*¹8Š™¦ñsùw“©å±àà ‡!êñH€'züÙ¦ ×ð¯¤CåUŸ6NŒއˆ¨ßP - ¹}0õ,u±,fî,oãYÌî:ï~»õ.%åß­}K«'w ªàrÔ!mî!,•Dû¶{4!âXøÕ0û(PՔϚÎàE»KìYóÏâC:å,¬þ榬ë¦]Y‹ïè@*Oª¥/ⵈÅL•ˆô÷%åÅl½J®{ëÝtÓ:¡~›Ù¢ÛQµÛÛá}güƒ“n­Û‹jük¥+bÎ¥“Ùÿ˜¿i§ý¥áú¼j<¾bÖ'+ÑîUo¾mÛ]¡)÷Õ†Èô=•{OK»÷NhA—¡Ÿ Þ¯ ¯ +')è²;àEß *×?þ®†ýÓþúìýþ7×ö¿ó¬íÿêG·ÿ_ÍìO›ÿÕW¯Ýù¿µžÿóðl·íÿµM¼ÝÙ=¶­êø×Ú€ù<†!?õº”ÕÛóÆüõ—>§ÿ1ŒððKHC}?…78 C`èœ|¶ÖªÐåY=ø:@ƒN²£†d¿¯Ìû¥MxVƒ~¶÷Ûô¯ ú£¬ß× 9-q=Ä&ƒO×hê Sx ËÄ´ 6 6V©DÀŒY‘ú†(;Ö¹ÀÜ^°žl “É›€t!`Ôqo?²=;÷×¢íucÀ²zƒ¨—pàBX,¦XÆÎB¾(l"°Íi‘ô,šú†¦¾Á”Õ¶~AãúG³r÷ìNê6Á|Ý5K_­‰ùÙ•ïËàAÓzk'8êìl7É <ì û-‹Tø_ø£Nÿá‹ÆNûðàDZõŽL¼ÇPƒéÛOéGç~´jÛïñOT-Ážè•D¥4¿u·¤û#šnãR–œeËÎ2‡µ÷K7o=kÞ_L՜괹ŒÀ³š€g°DWUV⇠îÁX£q•'ÎõÅ[)À–Püƒ}L¸ ”à;2‹%‘˜ˆ\c8–| È.XHÁgF¾ø¸¿—¡÷·Ñ•UÇý­¬4îïÖêâþZÑ 9"!QßÏÛ!G)bT²y¡ÇA4ZXÑéø\'¬ ˆAYç¿Ô 'ˆðˉ÷(òÐÔ./™ ÿì0›ôFS”ÕéLaÐà³2‚Џf7RÞ‡vNü‘k\–ñ3µ‰V+ìfGOrejœåÙ-=Ìîq £âZÒÙmmCr0œñ°aŒ" àbÛÜ&bÝ–“®œÊqe{ÖqqêÈ¡T‚%NÂT 5œ6â±qT9DªX5Œ¯8\1Ù‹{1Õ¢”"L•T3âˆ$ ùµýV®‹v‘´ìÉ£ç€fÕ÷ËTG#O51ƪ\ƒèò.V!Yr+v§¤»u) vƒ%ƒ‘) TPh¯P 5òE²0ð;j,S…÷n _îÆ—«œåauûlÔÊJbür:ùņ¸à×ï)øõ³íñè»Oz¡Ê¢JöYÉÝÒÎ@,fæ²Ë¹2Õ${åmœ wÑ“•ÎŒrú¡âŸÿŠƒÑÊb¡]—÷ÜbeÍŒÞÊ2f*Æ‹+os±b·:KmæiÂ<ÓðBëê&b†­ømÅ/í}Jd²foì‰ÞºáG?Ñ·–r¢ÿ>›ø«•n⿬OôæbßÒ%Ö $–;yüi—÷ã{Úr\©+–gùýKØÕ]†,.åÐ_Ì|è/>èп ÆÌ&~ ‡–“ˆQ=Š©ýbuqV­fÙÕÓÊ–ûsR‘þI(ß»%/MPLÖdQ Ô ZÅ8eC&ýÁë¬úƒ¬z©G(¦è,]@6íA±’Eð:ƒþ “ÐòŠ„–_²èZKÒ|ŸË„_Wz™PÙ|,BËR ¬n[Ä3›-%Ì·ØÙ"E k=—»¬k?›–+£–Õ3$j÷×<›±YÕ凪#–Ô5ÑIY*=OKÿZ‹L¿¢Ûk Ù žŽ s'ÿmÙÿTWa°ˆýÏ«êÿÿ(ÏÚþç§~ ûŸ•ÌþTûŸÍ—ÕWŽýÏËëùÿÏvÇþ§šÑ(aç7y[BGÃîa÷ßG;‰¶B"Ïüá4—ÐóÉÙ+ýÀfF-ÐÏA¼‘‘ :¯½Qõ)ÑPö9‘xÏф֖HkK¤xK$kÒ¬­‘~ k¤ c÷7²Hò%©þñù¹Œ˜œ½/«“°ab¦G ’™Ý–ÉÓ°¿-“²VbS&Æ’t@žòø@µ\3kc&~|ÆLÕïlÍÄDµ˜ÿÐêºP\KU‹¥ØG ]øëÁãù27&Z‚´ë!-é÷»šÏ9z–F:¶)N;“ÕåÀu2;PÏÖæ4»ÕÙŒo³|äN‚ÿ‘L•Ê¿³”öëýÿjºwé­ðX Óî5IN+©uø·ž7Klÿ…ˆ’þC:…‰¢4ÎÕ=Û¥»µËêÓ.7…Û¼ë’?9ÕŒ¿ÞÓ=ÂUü7}œ„*MÐu¸lC¬C> ]a‹>ß´ ¼‚ÞZ)ºD,ê#PàÑüT@IÈ"Ò•—Ip~¨¥™b#Ó‹Ô!0"—F>+ÄEåL‡¹@KÇ‹u§‰Ë£y‰ÍëåÏ}ãÉl;™Tó.ÿ£MòÿâU΂æŒ÷Nùí Sžž#Þ¯þC¿äÊ4 ]uØØv[›'íê·5éu˜%bs—+αËÍ׿çÛâôþY¹î•µÖLù(L©³d±’Ä”EßÞoòav.LCÛ­NçC]ÔjňZ­¬¢Vk ¢–]˜(JµLÐ)áÁžœ¨õP))»àÉJÈ6ÍX ¯èÉìRRu>)i>¹GJK)`‘Ú’uæ‘‘²€«¥¤@Ê:ÅÀqr앉Šq2‘šŒ®<ÔÒe“–#‰órAy(¡L[Zó€c>ÛŒú¤¡yÎü9ñ'HC¦î¬fÑru²k¹’@vÕD”ÝÓ}4üßÕäó÷Àÿxñ[›/×øŸGyÖø¿Ÿú‰ð+›ýióëõæë-{þW6×ø¿Gyx¶ø¿wˆºêvjíãNIì’ôí“x«Û:Ú­©³¾Ó‰üM{nv÷à “·=Æ{Õ ‰A!dà(hꂟ '˜0è¹ßCC,yû‚¤üî þÑ™jXaškòíyP‚- ‡ÁVPoÕŽƒáàs1$?ÝFۦλ£àÙ?mHd!LŠà6œ mŒG‘}£B ÂÎõ¹\þŒ!ƒ Õ…kðæmÐÞ^÷ 5øœˆŠÁE8ë¶Kœ±ƒ¾´…ÝBÍNËJ=JAŽ Á7 á0eH Bø½Q¹|q_.TM‘ˆ@aþš™ð³ü&‘_äޢߛ†”º|52"é4ìÞiáŒb ˜RñŒoƒgm",©ƒ2¤±ÁÀq¢ê3xÑÆnËl‘%T9²„Š£±1Ö1W§%3M#üeÀ¤ÞHJDÐ1–Ò ¤á*aÅ€c‹d0¸‚ñ$ó¼1ŒwC}L0êÃjô l!0ñ¨OßXÖQ²z„ÐÄ:<»{FõÞëµÓªAµ€JÛ6!ßÕMUm#¾ -®ÂЬ‚ƒ0]zNF|¾DSe„mh¬˜m¸åh‹,j´± ÑÜ5+†YÎ:JL—˜žúh„}¿€x:9¢°ÍúcYÉÚG°¶zÿ´í®ñ`p· ƒ{"ÔÅ Ô›!Þÿ7œŒ72ÕoŽú1ìÛÓ×%¢£Maæ5!SJ Xþ‹8X6,@é( k)Öø‰å„ÜÁJ¨¡ŽQ‰ÃÝhÒ`Íû²KéFÚòzI1ãÍÙÌ!罈¹.cáÖÚžü ‘Û<Øi“|B¨çÏ=7+¶Çýšñr€Ê=ü4òŽ9Ž$ic\®¿`ÿq f®ÙÅëø¨Ì4Ül›7É}¹„™k½‚9óHÁ¶!­å8–TetÊ¡}.¥-”™(gŠ 8nmø1µ9ø,7øá¨ûÀ¦¥ <€c†ØAnzwGš?Mz7ÀÔÁG=OÇÛ];âº;S€Êxé0B‘Qun”Ú äÍù9Ègë<˜õÎË8‰(›wáR­h‰$'&F»k+ùçÕ|LÅtö±díw˜CFþËpÚ‡#ytÙŸ* Ρqú5ä$¨öMïÓ`Ô›ÜDµ#Ô~¤è†ƒŸF!i¨§!ƒßïQ6·“éôî†ì0.†<éE×E™&ËåcÃõ£yÂHÂñg mísz\ÀÀÔˆ q0’2n‹´9‘ziÑ3Z‡w€ Ú‡ƒZK²D»y|Øhà[zÒdXz»sø±Fèô6º2ÀkÄjB'‰3ì6bݺ?QÐy@U—ð’¡³¿pùAí ±åÐKsÂÊ%w阭¸¼àìÌ‹=×ÇZAÐåØã:žºû£¥ÞR ƒXT$-RÚWõÄ;ÒíP`_¨Ë¯ò¶Ør²ä&¹Xù¨mÛs¡å™õA,þþ$‰¢ƒ§•守©gZ5Ä} ¨ÿ…~?9½•o"úiLVŠÌGÝβ€ùê4…Ї?õT¨yär´ F?Oc’Õ kŠ‹nž¼ðÀ†&¨\¢®)7À½7^ZHQ~ë¡Éjžö±ax5“Z˜Oá¡ÃH £z$²ȳ­@ŽþU‡ÖüèÓ¾LšgÎa:¤áÍ‘ ‚ßêÿóÄKñP&T¹Åk{x0À9ÃC¨Êø‘vÁó j;zÌ †¾nsÿPFì€g—·b]ÌI­'WO&"ÙL¥!­·L¢twxŠ@™¼-WÕæznæò²DÒov@i£Û9ÙÙ`9¤Íwòíª-üŽJZžw5˜&2Ó¾9¼‡ªè¡äØY‹ŸEFûB®Ø°ýë¢Ygmâ|¥˃‰jW-¢âu…^—ծ픧R9™«2³…‰¦¾gÍÕwMSäÈØîáŒõÝëN椈ö6؇<þ¯Œr´5Š;t2<ÂJ]æú‡òìríòŠtIµÁÛ~dˆw¼¢LD…/íFH‘p'ÄÏ ˜À”Á†ÝyJ=‰J­Z¥¶+ÅE nS‹Fé+Ç¥²=T5jô¶¯ü”¢éÊÂê&^Z¸BU#g<¾ßø™{ˆ·³ñöwâmߣ$ zg5C¼­s—;ĪüU±ã,ˆ÷,ËÆÉê–“ï¿l´«éc›¾rT)¹²ÀÂQ‰JßvÚ‘¥ŒÊj<µ‚5ÃßÇ_3æߨe£ºÂñÝÖYú¡ãkT6Ûøz 祇 ˜Œ3΋I0Û«•`¶*Áœ,u)â² 5<Ŷâ¢ÅD˜jjÉ+YˆÌÊ VMÉL«ͭʃ׫D&Ȳ^,u½š –)ädf‚¥¯VZe—È“‚ì¥gÉRÐvÒ.ùøKO»Zˆ6J[9â)|é Žf–ò÷ ¥ê³¼%f!‘h¹KÌ"ƒ½ÔÓÔ|ƒýHGª¤ÁÎ(™ol‰4q ê‰0ë’E¬\¦ÈGIª¢ý%LÞé“XO¹'±å¶÷Zè*éE;kÜ~Tü¶¯üjö‹Õt"\ã9WÁ¹¸`¾“áwà‚¸rÛûó¯€Ù¹`[g@— Tùß“ æ”´ÒVŸ‡ŠZI|÷@Ó2øNôõwZ€$».c šó¸·ï;îÉéðØ ÐUS߇–¹ÍÅéËМG¾}çÈ÷@Fx˜ ‹9e9:,›ë–­ÄòÑ_’kI\Í|åw®qa}x•Tòã­lé: &Pw°ÎZ¿=p¡[¢Në»°Äòe­ ,ñkÜrYâbײ5\ILø@×r˜° »ö;.PP‹L³áq+Yx¨éú¾c¾\Ik®1¤#ßÜ+Kª¾+[,±wˆ@VY~ ''ë'öÑü¿| ÿüïJ\@,àÿåÅëÊÚÿãDJÁL ÿœãÏséh­E?âIt’bÉyÜÉTóʕʓóÉB-j¿„dÑ]…  [ÎÏÍ1‘Ôg:‡cÆ£'¼튡ÀÑãÁàaÚQm2¸fñX.vTÜ6UMÛ} 2ENÄ|Î¿îæ¸b…D!ùCŽkNYº9n1.!÷yŽ[;O\9œ2äÛ冃O0¾?ˆŒS£rÒLö¶7˜¹ÝRªRVé»ÂÕ ûÚØE&|Òݱt1팃h¨(tøË0,O¯W³jvήǗ4\ªxa5‹n1îoC2o~¿¼ë3¿S\©þþ*0·°ü’8•¼SbÚZ+ÕóoˆèU´–ùP)ìÎ+…ŒiPç]ñB&µƒ‰½¿ÛilȯÍ+äë·ÏŽŸ•ظ›îÈJ• o!²Ë…!ro8sÙôWoÝqÿúnBM*iuÞÅ*Ž ç\ã.ýyÄÊd<”h°Î©WïFØCî¹;ú"žØ1ý{Ä ¬áŒZwx‹ß…µAér5ßèV]ªî˜ÝŒâw3}ŽŒ§³(°†j‡–cÌ+²×”„+%ôŒ8Ë,ö|Rç• 1N؈é¼BmvšƒCÍáf»o1:HA³1W e›ÅŽO°¡;ŠJfÃT)œ;•âΛz»É1º¸ßËç9,*Œ“âòŠßŇ#õ!û.ôå—ñ×°M\ Ç_Kö¢âôò6fÍ…Þ ,ÅÈ9²Vyjc4™0~#g¤0„zLgœÏ;#éõHNè²,“ %NíîSqjE”Géôo¡‘ìÎ1’N°ì ›e$»säÑ*F²ëŒäQâHvãF²»„‘ìn0%ïHF>ë²y»râdKáX8O"µú2¼Bå’{ä×i 4¹!•ƒ|$ÌY.9ÌÛ|ìáÁo‘ÿ°D®`A^.ÂO@÷K5DK«eznë"ZF*jØQ\Ãt"~¾3*9þD®Q™ëþ¼C­ÿ }žIi˜ûò¼’¼ßr-þ0; oý0´3ÒùÃÊ}g(<(•¬]IóçË~̓Ïs*$êèàñÜõix<õ‘GÈá«ÈÏYð0­Îxäjlz=¾’ß²’NzUôh R}÷A¤šo½ú¿^ÁªÃI7~ D…Ãóx›=/UGòø™rV]ù¢:4ýu0ä`ˆ-½•ä‘1­Uæì²±IFÛã™îxW/§ý,Zì>hc´èb÷aƒ)ýŽÎÛ¬›N1o¡eäþ°)Õb"y[:¬^ˆWÎÄ+çOƒW4ù~ÌwzX[ΗÀ-çL)Ž[Î}Ür®s ªÍ©_Ç“ÏÓÛ^?ÌÆ1裫R¢kƒ¼Ã7rÈèÖæw’¨I=_É‹t™< Oo¢"ûET(¥_búƒI"B^¨”Úyk ‚Þá$è‹MôK/ˆz6¥˜@M~Ǻm2wá=:.íƒp6 ÍVM»eí¨0щ¢LQ Êâ}«§»PåÓ¤‡òïh„“ÉØ” a.áåÖ$ÄúÐI™Š'hh ëÙÙÿ™T.Éšïú,<èìˆChâŠgÀ€ÞÓ»>R§WwCâýû¿ð»d’AIéÙzB»\÷.I=‚\3äÞ2 ©”666Jí7”ù¯gÒ#÷åàRhð^îS,ù•¿5ûÅL»*@ñW‰y8B2*Åe‹í)ŠZÉ}Ÿöö j7ÌÚ·EÊjA´€¯x$sa3®zƒ!ˆWùr;±ú˜÷Ý݄ЈFƒ¡åì_Ó~ Ådb TŠÝµú1Ï;düáV:ø9˜ÉÙMÓ`’Ú¤,õ˜Z㼯âåkæpNWª w”Ûì¹5ùnÕܯr Ͻ+×'¥:†Ø’á!6‰ön­õ.‰,~'²/™ìLÕ«Ù}Ä6[µóNµÄ?ñºõÿ9ÞÞíàO¼¨þp²Óù· à»ìãMq3Þ|×ìwñ'ü8ÀÀnÝ¢U;NB.ÐwLŽÀ(þówk.yŸÝÛÆÿvá"OgòÁVÙìÆ÷/Lz)¨¡A1üÀ ;ð³{Ø*u~Y/ëø2sJÁqíÝV¹»spÄÿVùz_nÅst­Þ¬BÒZ£R¡é÷*ýŽï·™à6SL¨&Ø*;Ç»ÍwÐUnz‚›Š7ÇÍ÷í:¼éVÈœ`ù~/µ {ìõô|£U;ÀA$bÐYeúJ¾ž‰³ý^ocýmó@'gr:”ÛœéÁ.³›­CÌQÉî4»¹ÛÄȼmöÞŒA~¾‹£ñÊá•Æ.æj§»ÚV9ºÉ9*›n–Ü4áf§(û…_ÚI.Óžj5Î-rç¹óTrnéÞÇ#·Õì8Y1–àœ‘#ÔðYª3ò¨Âþ -â¹î@:<Œ>7S[ôRJš*TÅq8Ó€NS‰ˆÆ¥qT6ÉÕ¼œR q3žÈ¤€ ýç=íø-˜áº+FÒã:4#PÚÖi=ç2L³Bõ™Ê®yo áÏSTĽØK@µšÑI‹V³=MÓ#›Ê´ŸÉñ×Ï®Võè÷33ë«£Þ²óØøñTµ¶ªÚyLÕœzéý鉠WC`Ò­¨ïŒSçÏ]ý3p n·Ù>Q·Í+Æ”ðDš~Ü¢6r: o§æÂmÕzÛß]àÎ_7ÕòRþ ¨j¨uñÕ:<<ò-Ÿ—÷£Þ œ £KD);N}* f'CpÝûa8 ®Æw£KM¹M€-œip3¾\Ý3ä†U)o¾^Ãéé‹Ð錿zòHtŽLÿ†u+zw‘ÝòM°fxñ!/BYK¯ÊâJPàGF"I5ùÃvMo‡ƒÙ óã—ÞÅø §¡¢5t)Þ qôµw?Ua¿P “ÕÃn‡jÜá11R)OˆßU‰ÚÕó×Þ”{TS®"d-9üqG1UƒðÛlÒO.)ök|7¢Q?kveûnzß7w7Z,@䨯!°Ôƒg^j!°‘¼´éÜæ_cô{÷‰¸C§eQâ¾s¤:§I~žðdÀ¦*ãÙ5¯«Ámo: r•àÿUvm„f(VÙ¯6B÷Ѻij] Ç0H°ß²¡ IA/¨|«ˆOã«+›Žˆ^9ßn¹&/^íáÝ5HÏYúÉë`›ŠÙRJ2“ð¦’ì÷haBmQË騦B¢ âÍH¬ãh—AlÞ†Þox8‹÷ dVñ°Ä2¬jÕM¼ú‚‘Û+©¥Í“4×AB¢¦Û2Èçs¥¨Ãw§ %qÝÄÙÐ[e,Ñ Wš|ŒòâJ´¨'¬_Qõ:‡r9(SZAÒÅÌnz’U>j^rÿ8èºHºÖO×Wnr˜S>ÄNh£Šp\ûÀÇ4¸Šö7——tý§‘,E‡çãø‘Œ˜¸šP;m¨Äve½)lÇPOY|Ux5t:–Ê÷ñ"‰M„2a)¡$æbD(ý‰Ù_µRñŠ'ô6—™Ëza¯ swåLßÜ^Óæ#,9ú¸ãê÷Ò©_¬G¬CfÚzø>à94ª«Wýðälj§¨h;‚Ñðsï£]&wW¿îãµW÷a¹;¶%Tº*ÁÁ£ðÛ HS±/6^Ñhä“ñ-I&ã»O×xÈùçàFê¬þi8÷™ÕBÛ¸²ÕС޲÷5Ú:ᔃj íK¹B >RÁ1*è)ÑùJN^šmˆÊ×ÖSƒ£%ñ¯ ¶**y qèë%dRlÙ{‚o´cg€4vrÆÖÍ^˜4¶0ÿì÷Íx­HýMYc%›a˜™Žg½Ñeor‰—u¢ÌÂÌLó*†i¬‹¼ø]üBÏ¢w±çhvÁg޵vÓçŽyò•Ÿ¸ rHyx5i©ÎxGèô‚ón¥w†þNñݦ)‰cî¦Òò]¢Jêg¨™éðA‹rz­ßüÚå{|Pwî­cà»x ÐõÎ9ºý 'S£ ë>'ˆ¹Ò õd«Û#ÚE±&^ÄÙitçÿ«%òÝIÙÃ$šøÊh¢¸›5ö5ºŒÌGèzr0ú2~ §tú\^jòîÎ{ÿZ9("ÂÜAìÿÿ’ƒÌž*„šP·¹® G7e½ipRh”„—²“àº7e)ÑõBÉñL"®×¡¬Y#Ÿ§Ÿ'y[W|R© “q8…HÞ¨hûiðܳG8Y¼02S£R¡"Ä®]ßUx I¨XÙÕP eƒ¯¤å—#:-®Es”ßkUoK,MCPbÁ’ÊÈì@‹?ºØ£h „7@0’EÎf’bsHˆÖ >U …j{‰(–1_бä'ýëß…tLºÀ/Ñ|Pô5SXè¹øÌæì5XÞm‘¹”_“û4º(¥Š?Zž²7}éíj,w¾õCá5P`Eí0ž‚g‚¡·½Él€ö‚ر>Ç—èbÊ.ŒÂdmÄ/ÅH¤]„YÓ§…ÕÍféIûO{ü5è+@Ç×qʪÑÐÆað‹{Ï›aþʦr• ¼œ£ºMmtsáeÄh ˜Ÿï T ȇYÚîQUõ6È1wcúglþ±Ii;k~cX°ÚªŽ¾–{yP¿Ñ£~vÊŒ»Æ+J<4Oƒ€c.÷\²û½*ú]ª€šmÌWõh3ì‘ØÕ{TNŽŽ§ægWï½È:ŸÎíŸÇÖ5 ·ê1m>·Ûœ‰ŽÝìçS@{V`É•Wžw¯=¸}ãŽä-©b¤ÃQ?ä|¿lÚ5&ºÞʽ+9VÎOØó…ôˆ„ò«aPùÕS3ÛœE8ºÔQÑÕMÞ­djnÓk{–µ=K6{ä"‡ûÚã ú3ꆓ›Áˆ4¢®1odi‚ºéܘo+Qaùï!_EœCÚJ?IÊízL"ÒÕŠ3Í|†ÊN8.nZT®—Å7ñU ^µð•Æj÷¨Ûy'ý“¢ê"Ë/й;¤ã ›ÉM¯[kù¼º-wÚƒdœ& ¦F´9<þÁQ,Çž ýÈ_zB´ ¤†ô8^ÞѤ;’~\²ÈÈ™¶Ñ}8ŧð·é+¼§EDƒî@3fã|ËO泓go ªv”4ñ½¢”Ç£…Y[V1fV9¢ ÈÌdGਙ´’»ríb%ÿ¼ê8xg0A„©¥5Tµk2e§Ì&´€9P£à;¿åc#..‰a£±ÒɈ‰ã-r «€§ßR=Ø7L. ì¨çÈOZtî€élrׇƒ$-§ ‹­.чç M4gBÒäP5³WC»»+å‘< XúÓ@ëöÈ‹.Í?Í nÙl«–ÎN†«VïÜÍüZ³}Ú>ÈK,ÿ©¢wÉ'Z™DQª­¼j¨bˆc0^ ïî±Î£S¸ºZ˜Ûopªãà=?šÿXÏvËn„”ÇëWU÷ÏZ2·>ÐËêÉÑÑŽ¼©õíà(ô•‚ýÚq‚ïLf©ØjÄ"(×NwrÁVŒ—Æ…}Æ9ð\ªÃN\QŽKB²[ÄË$‡ó‡o#ÆÙp•kÚ¨áÅ~ýXH‡ÝÐpmEÈ?N©û.3²´¼žã\å¥8°s¼äÑ„y¼èÇ‹ÝâÞÒPL÷––ÙšÈ,ÖRmrr'x½þÉÔÊñ²S¾Õ-1 ‹¤:³÷2mü EÁUÕ*άàÂmù‰¶y8€½5¶‡'Ð¥¸B B$ÿ5c!ÐÄ›"RÐq9ÝTÕ7v¯ÕÄ%ÎÇ™Ž M´EöbfŃÐÍcos?Ù:t££´ŠÀ?å€üÎT|YLeË€±Í‡F“-=õ†ÓþŠÑæ*·Ù¹][M{‹ ]B›%ú·êm·ÉJ;r¿Ÿ9‚ÍÏÆÓP5—¹úl9êxy «]fðI®Í6„¬à‚÷‘¯öÆR…ï™®Ï˰÷(½¡("¥ò<ŠªP¾‰SåZÑÚ¬i1*º"CĹ޴Q^¾´ÛŠóiªá m©IålΜŒÜ# y¥[.$9áÞNlt±† ‡ZŸb.:p1œ÷¢C×ÿ‡_V£\@ÿ¿UYëÿçYëÿêGéÿW5ûSõÿ/`æÛó¿²ùb=ÿãáÙnêÿwNÉýüyɼø(½ÞÊ ”\ÂÆ›ú¯.'TÀ{nªOû~ @Ä—´2Uàè…ÕôªkÓ”õ‘m]¼çÞ‰ì0ns+å šBõ˜KC¿s*ÕFä›Ò‰Ÿ ý["ðžb0†=TÕz¬ðæAJU/½-FJ{!³g CNÑֲŪ·ü4.1²Þª¹ôë>÷0æcS¡MUm;9V®ÑÎ8ίØ6#éz¯†‘Àmó„N¨V’ìÁ&š_S<ÜÀZ2 ­×hƒIACûÂÙízÞS„¢~“ž|8Â4™Ü»¢ÓUÓ±çàŠ˜†—ÍÜÎf9tæXøš‹(¸Ü ôGžî~*ÿz;ø×Û?~‹¡Ð²)䪅Qù¼Cç¢cÇX‚ðAuñÖ Öµ¯“ÁlŽpá\ÊAQ»{y7×^:ºOÿ“A¤yá»ÍëÊ C“ÃÙMï`Xu“Wrž§–‘’£ õa%ùdNoñ˜ÖìIqàETG½­&E%镺0#Geۙʖúp9·ânRï?š‘.{Ó¶4%—R½i?äòi‚Ú!? öÉÑ õP˜#M­Žêg3.õx2»hÜ'X+¹q}| ãF©žWÓî\'q=^Ê+XZSûâV¢ó170ƒnjMhË&œ‹yZ4Ε…ߔ짓ÐûT¤³"RÎ}ƒÂùÑ? ¬ BÂZ0„£ µ¤ªù‡^Ëc±ø½ŒAæw‹Œ Ò~Ãü¼¾ g!€Ú¿Ãd’žñÕUÙgƒN¥ã ãMx9 µ˜Z‹\*tKlG’IJ¥½~áû](ÍÿÏÿ÷Ð뤵v÷`N|€ìNÙË-nœ6à+AÙåñ‹§-h< [€tzñØ‚š]@ ƒ ðÒ¹ §ƒ )3´³Bv¼ ó‡ôÇ£?ï[äe…h]—nIã“AU>-`´ûàf0¼d7·¬Bí]ÀÔ@*WÃq›’ç]¨f gƒþFМ_Ãa˜@(¦|mÖ >ÁFKVx—ƒOèGzô./ŸOï.f“^VÂ[w¼ñE·’ÁÇ%5H@ ,SáÍVÒ†ƒÏ|>ÞFž;+“:üõßê×íò¯›%aI‰/ÊUªz|7¤^釃/½‹á=Ýñ`®Ão½Ë°O.C ŽòWY7¤cTOÔ­\À›¯aðyÄ1bGãÑ2²†Œh„ÖÙkÈÈ2²†Œüp‘l«(: ®”HDÌ; )Í|cøHV«äÅõštµðçÊ<,hÊ~‘è“ä~1úƒûB1¤ü‹zÆ|¸Œ8°aXÓ(L{%~8YL~GZ1¹Ûq¹O³ä®ÚÖ 8-^ vêiîÍPл§s E†¸üM„®§ÓŽNˆâMÀ±y+/¢ëÑIZ4S40¶íÚ¿É/É·¤"lnRæ`Ò¼¨á^:ÍÐ ¯‹2¾Ù½[pƒvŸ¬-aHS6ît6Љ~cbn:…Ïm|+, ëlÓó”•ÒEîÄ>ú Ge˜ä‰ÑÑg†¨üü3£3ÇÔè µh`Q‹›IŠÄí²ÛL(yM‘îRˆpm}8Ùéü»ôxHWZ€²ÚjQþVë£Pôò[ü?k8ìªà°íd8ìÁ ‡½L¼N³ˆOy;6Ê*¤[ýMS{³FÔ>¢Ö‹5õÜñ€”pX?2VÓôÄ«Œûºã¾vQK êêuà.KYßùÑ·NNBY?!wß}ŽÛe¡ñEº_ü}àÄã²þÖÀúrXà`.X&ã#•m¸•y'çð·FwäÄ“Ó3¬ó«9bL¯ìÌO±Rñ‘lF$› ÜŠéׇBÈéò¨þZ>Q¼y\ùöX¾–¯åê…Œ•&›Vsê²L©¢ë’,ÎKz”ß4{cûqÐìX¼± S±ù,+nãÒcäsq‚r äâ€e”bhØ;‹DÖ ²ž.…¼Ùæ:¯f¿¹'€Üãd²xÌ'‰<ñ€ùÆß1oâ¿¿=ü÷ËÍ5þóqž5þû§~tü÷jfÚüߪn¾xåà¿_¿^ÏÿÇxx¶Ûøï3©‘ëÔÚïw¬SÐi þC56ülž$¨Bkõãî!$:ˆõ$JZ$tÔ¨˜5T<*® ’R';÷¢iÌx$’ÃÁˆÑãá~(šÇQ ¾Ÿ0²üL!˧0¬}¼¸Ì -G*z™lÐrÌ¥…õ|.ap}ÈvªjƒN)æÊ=¡s¥Ç בBý=”x9è‡S}rˆB¬ëÍúqÐÄ陪QÊxdÕ‰$úôj|7r€Ð§ž Á{Ý^•Ç·¡¸…AfÅéÉÿz .‰…4¡¤Øl• ÓÈaf›'øWlM×(ð5 |ÿû£ÀO[æÜòE:=IO#èaZ/ßJl¶˜X{ž#¸¼˜q–pq3cEÑ&Ô›ô¯EÀ2}ãÀ:ÿ *eÀdÚpû”—mZ•q^Â2(Ñ=V“µå¤yûÉm`S4Pnv9òž×©Égz+>^—c—€Ôõ ××aŒúŠËZUÞ ‚Ì þøï þÛ¦k„Žmþ†ðb“àR¨Þäo¼øÍÓU§²«X˲ªw1…¥ ·UBfÍÆC˜®PJ$˜€Ê\±†ðÇ7PÉH„î÷Ã[rJbŽ ÄñW2˜aZ-þôãpÀ+©¶‰þ§Wº0¶P¡¯ƒKXUaP¦:îÏ;Á”>D©è—"]DáwDÊõþ*ýuñWJf6Ž……iS±;ñØ­¼¸âµI…DQ]ŒšªjÞJ¨[‘pá¯î_J  àkì’)~,¹µÁ ¢6f<Ïê&c3ôžW[äuX²cnL´ ;Q#Šòu3Æ ÑïßMHAÌ#u‡1}Âöæï¼#˜hW°Ê hNÑ&#¨ÄÝà³ãg ˜#XMÔ¡æ•X,B+’ÅZ~ß,ñÜfƒGŠƒ3ß“Ù0"±qq0>“{¬0å­1×9£¢V‡‡aðO–S1ÿ1®Á±¶œ ÷*¨«n?ÀñꛀJjÏ{Vr…ÐÕ»þ:„ƒlP£>ïß—þ‰#Úon¡ èßï#–ä™öãxòëËHü?[¢Ò"mdWˆÙxõTqæô…ÏÖ-XÙhy³GL[©à(Ð(öÐèSS| ·Ù*VVgîä=­-Óî‰íoòó™?)xí§Žå’0²í£¢â œ1ýaYR™4"£ªYRÁ‚­g¹¢0ŽVôÍßC.Ã^ŒðÏ3m?’ò¤Y·’=M„,gpÑqz­p¡;:²©&4 Syp òÙVü cÆ04%µ6KFŠøAX’ËÄ\ŒÛiÎ3æ•èÂohjÍ»3´ô@'$ê‹&Ï#¶ðþBû?ÎÑ(â*I€Â7«'oè–9ºä‚‘_«ð”ñæ/U>ä¨À]€³,kÙ×íaРÂQÇIÛ¬Z+ÇÍà!C»3gʬì¢ÜSg—gTùÝÀ**~ˆ?d0û!¥ ¢ù1˜DÝ©¢Óddc±ôüHP}Çk4§y(P_àôÓ¯µZ;Í÷ ½ÇŸÝãn)8­ñ[¼ïѧviAQ-xCùïðf½•t£ Ž8¡0 ðH€B݃#XT÷àÿð_ûø¨Õì&kó[­RF«€øRƒáxлT‡ÓÝø. þnVÛ‡Gÿ.éÆxc4ß‹º5v»p² ??â c³J˳%hÔÑœ„Æ™‡ù;ÚðU)Äí*¨O&LÂ*‚¸"zÞ¿gK$¢¿šD“ìüáŽcÍ9²š‘½ñë ³Ð…AõgK÷Ë~`Í̇`æ ÝòL;gÈx¼½×Úå”XԜ̜"YýýŽóÍÏ8nEë¤0U°6pÍh2›6”³ñ¿\0¯¤´!pŒXðÂ!%¥£ÆË1kè)¥>mioNð áôÄ»sr-Ty”A{g°Ê¼fk«¯UƒìVÞðÌyg|¨dÝF%ع4v°?ù¨˜›—ksÑ0M,vØ¢aXÄ^81–ñf ¾ßÀ mZø„n{o›T æÒ‚~àq]BePo幊.ó*H3ÈÀ„ÂÜI‰˜êÚƒÔ¤‚ÞÎá͆V©4Ü‹‡ <ÜBßm¼«ÁŠäÿwAŽ7@w›„/-ž<‹A¸¿Ú”¤»“ˆr “)â9}F rg̉iÒâ°çy¿©®Hú²F¸b!þÛ ¾cëÃÂ4Å0Å.ÝuXv%æ~eíÇÉæ-®}Kà‘(––!È™a‰­N â!ŠCÈA d¢ÑI€z‚ ²4Ò1;_ƒ|Ø$ ˆöeH¯tØî6Û'æ¸d‘µëuàX¿? º‡Au3¨y\µ–ðCDü! I3öªŸ3$qàz§U®iYÉ`úøç©¿Pq[æ•5¢ï;ϼ+é¾ÌŽy|ij¿û@Sî˜ÄZö¹mÑ©žÊ%>“š¦},[>6KÜ'ýJJ3ä^_öf”뮀«¢Êy׎,…ŠÁåé£Í4q$MmŽ¿™Z2oȧQ.N›ŸÚííð>¸ fìD˜ä ŠˆÃˆ©ìää>ÜÝÞ]Ü;Ì$‰AºµÞÁ`­WÝ´W­eïh«ÓãïEcKaxe4ñý½è§éxBjÈ›ÈmãÑ'ºlÔ°j¿–Áîñb3ØãÝãÀlfÔd~På /ᨾgmV@j H!­=´.éÝ©Õ#‡iòxx"Zþ]M”½·çù UÁ®ƒ1[r›‹¸¥`6¹Â¯ DIÆRl–m¡ Õo°žŽ ‡î^ Ý=J‹UI¦º'©ú’ŠÕô#jVÚ%¡i ¡‡ÿÚóÉ;6yzJï¬HÜH“EÄžîR)÷â›dÏ;ãÕ {k™ÈêìïaÞº~RÝþ÷Ótötì7×öò¬íêGÙÿ®jö§ÍÿÊË—¯_Úók³ºžÿñðl7íßwABéþûȶü­Å™âzlp·6*OÛ ˆÕà`5„ãT¥âÊ_Y$¤às™îf‰ï$Æ`®PNI²uþE#‡¿&XÄ'ˆ»‚©Ï®µ|^ FhìÄÖ`ÃÁÙ2a0ªÃŽïx{x‰ñxð<_‚ó?…-² a xÅ­æóBM$`Zá¼ön..{…záÙRvÞc§6}É »ùB­@¿çQ¿µä«~vÊ­bº-Oáu½øo"nQ½`Ôê[)¶B'+D~á'ü)Áu†à^÷¾„ÁEÉo'á—ÁønJ±ð,‹=‹F7H pÂ$é@ŽŽºw¬x¹…‰ ^èö7Ò$sZæ¤ÜŠLB×iÔJ_èB¥/ÞæÑÔ£>œß6s<45™ÅIWã2צ³ßÑtvËYµ=ÁvŠ«_tËZ2›iØônÈNï ¦‘hÝõ…†»ËVe=a¹Ä|\MÆ7«íz< §ŸÕ¢ÃhÙdØ­™dW·„ÿJZ}úîhï>lÃ~¾[kI­­{BçÔ„½~ùD£Ÿ%¦ ŒÊµ ý íÃÿ+øý»ßY5L]Û‡ôuü­¥õ5ÞgÞxkgóÕœœÒN~tñ¯˜«xàûñé’@»ËET{úí¼qØÝŽï¤æT¾º<0lÝz7)\¯tÕ¯:PÑ! ô÷ûîÆÖœÈ].M÷[ìân3Cw³:÷â?³1A ÏÄ´û+öfˆ{A|1­¬·cEA+á[»ïíÑ¥nŒ|®‚'Iƹ?àWë"‚îLÌk¾Õß‹¹Õß«Ð݈æuÕ¤EŸö\‹qÙœ™+„(ùÇÿ¬š|œÚcµ¼‚zÒ G_§ÊÔü5|%«EÄpÛãÑwŸ8ö x.{†—“ãQïPŸ¡½GüÊÐ ªS‰¹Ë¨ªƒ¨Ì=Ä”·igâC~”½D{Fb 7T_Òrž˜SëcÕ¿eZ†¥š^ͨΠU•x¾:_©Uœ»±(%Ý|ÆOßñ1zö9Fnnþ‰ð¹ôYN„ÏÅJ þ³'Ãþ¾ n p$Ø™ TØ[ÌW„cB9`gÄïŸÜ^J/¿®xµy3*Ávmp0¨FØáûû§¯õ˜¯"/üûSzÜûKºœÌw÷¶/1î1o›µËû›¡èÀä‹qŒ†ÙçVF1«à©@DEA~»[ .JÌPŒ˜yj„ôBZÑÌÓÉ%Í8ìrOÙÈžhÉÕ7«ö8v•Âr²4‚jZ¼ç¢3ó)à‡jÂt6 ‹Ž)K†ÍO*0ì¹Î[Nyÿ–§f:üê›åΖ·•4Ëåw¶<î ü´Ÿ8í=Û[®òæs þ[ò´—Ür‰[öË´†§n4û± NḬó?•ñ¿9RvL5o™ˆš¶ú.´Ÿa׎âJy`%ÅÈÝ-~I{¬Zx juva#Qž„­‘´‘¨Ú³Ã= +{1;âšh;âîŽHR”³#¾H•€ˆ;âžGL‘=»¤g–P夈2Ÿ¨I9@¦P§ú !§]–2Ò^†]¡®'La¢¬D°´\º¬HYçS7‹{…LÕÔó¦•k,©rqR¡Pë¢÷äv³‡öáó´ ?¼Èº­èÄÂjàôöÔ`5þãËj.€ÀlUÖþŸçYã?~êGìhö§â?^¼ªnÙó¿RYã?åáÙná?N#øø8 Û{ìî+ݼÏé¿}Éàö} Ô\0’eùd¯/Ë9ûûSå›ÍŸ,¦®kvÛyÒ1ܳk˜¤Eǰ”ä‘o9é¾ðímŽ!yB¢à«ºöߌ'ŒÑÞR×ï¢ÓOq³OG"\¸›ê¢ß‹»u¾ep/Fè §ct¯0 /’²þ˃“ËùB!zîoCQÙéxø%¼4îã B"°:zY JS7SYi¶Þ(|žS=ô°ðXc„ÌÞÙcr®!'ÈÉBÞÚÙÃùhù?’v ³Éø>bŽúÓÈú²ža ëY²îÈú\YÈú\é‚tôçbut&l§¥*¼ þÅÀ´’ÜøKƒL„婯Îeïª<õÎéRóÜô8+L3Ï-¯šÆÊÏ|è\³ß^ ÔŒá¶ÜŠC‚`Ÿz+Ø´ùJ¦ÝÉðαžç´ :¬Å\?¬kWΞ`r=ÌÉ« µ¤ª’Ôw¦)*솔asä=Mò¤Ý,“Wÿþø248 kð6hÛ>L9¿ëµô7+¯ä=ê«räÿEV!ý÷ƒ¸Š&Éþü¶óÇ»p•bÿ;Õ\«:…‡êÓÚ‹ à?£È‹tĤþjÜ `Jb¥YÐÐv!§…O`öÁ©à¢!¡%wCn“ð? gŒö“MÑÓŒÏ|Å#tÁ¿*°sBúR½¥v;µ¶ôÔåþµwšï— a‹Ã¨-ý‡³¥$ö%1 %î/Þ÷(Î3Ðq N/——[ÜqfœŸKÀs][¶’é=Ä•å\ncèIóK÷ª˜âI‘©¼Ã5¹—„öV,É—q44Eš%X–¦kË9þš­­] ™|–DZ\ù…ÒGصÏfÒfæØ9Íù´Ÿ±,S¼ºh’~Ž:‘9€å_},Â@ > på-3Ü›´Ùï­Ï¹‡Ç Hí:í°`¡ÚºWýx +ok¾øæÓÔ\æÆ~Ûà7ªv¨á÷ÒÀè$_¸÷x«0À:ùÐvÄ2°ñÉqd¢§Ý¶ÒšØY~L(*ni5Eô-H3›r5aŒ“õˆ{i¤¨ÕLy®•ö?l¶"r¾jñÀœð-:.v_'‹=†1ãRÍ4.Ë—Ìh³l°€Óï‡ 0ïÿ/ŸŠÿ‡¯¶Ö÷ò¬ïÿêG¿ÿ_ÍìO›ÿÕ[¯*Nü÷—¯Öóÿ1žíöýci€ eˆÉ-#î{Ðj®ñqÏ£ãä`È1#7lÀWЪ½/ZÐø[` tdÝô-.0‘Hȯ+m&9ÌÐË'ÎÈËÎ?"Úþ¼Ã 3üGÜÙµŒKÚ¥àÏñÉ‚›Þg sí>¸ /¹M·¬9ì]Àú€T®†cz;ŒfPÌÎ}8ØÎ8Î)^ã‘ l "Œö‚O xP—]ÂÁ{ÆÑò.ŸOï.àPÔ‡A52*œ‚ 8™“+SÔÀ¢ï¯ýë@Ò†ƒÏ 4߯©sV>€U”~ý·úu»üëfIøÁå*UuÍÐ+ýpð¥wA>A`i]‡ßz—a€ñ"¡ŽòWY7¤cTOÔ­\À›¯!DöGkÀˆ$²Œ¬#kÀÈ0²Œ¬#kÀHáŒ`L¸J‰Î1yg!rý4Ñ9–2ü<Ö}þyGA`ˆŠì :I„ŒÑh#°¡R ̇ËÁ‹=>}¿cî(½¬]u®7}µÐ¶ÖÈÃ_ñ.XpH/ˆ:>@ýžÎ|¼ø{‹ê:!”™0`EÿŽ‚y›:æ" kŠGÁ‘˜©û@xÕÆ–})nMµèÈ¸Ë B;4²§‹2¾A¤kn0¶—¹ÎMÂ!@Q–{WØNôƒN@§°Êï{7VlÜÉÊÇdFîèœ,ª4'3wæ`ãμ|Ü™—‘U °—¾,´9 P¡Põ°ugn¾6X@h£âkË}™ùÚ˜_ÞÉó¸|íJžú\pu3+W7“¹º©susQ®nú¸šOŽÌ¥Ð’ÉE)±líaÓ(dz©‡;›kî\6w>q\gã¡ÀÎÆÙùc!;ßÝM0˜WÐg2ôŸ¶Yïa $¨ž8&ƒ‹;Öx^È#ÜAoò9x×»ÆÛ‰Fxۛ̈ ¡= ­êOµ‹‹}øz×ÿŒwǵï2m}8Ùéü»´4°),Ü–þÉ?~` jcnêÂá½uÿ¾€VKÈÁv>l”^Mˆ²ú›¦öf‰ý®˜X'Öxlˆó6Æõ¢9ì8ÿá™î¾î¸¯½1¼c£‚j%ñDmúÖ!ÃI(ë'Ä<ã»ö& /ÒýâÀ•pŽoK9R•«>uŒoócÓøØ´>¾“Óx„[£;Uå9ì ;'§–5dL°Qì,@rËG²‘l.@ò¥Ó±Þ^žÞHÇG-ð×r {Òw7²¡Æ TŒêrõ$eD±àIZ¸¢åWù’øSMYå2ZRôl3_Ç›±éÉØ436ÍŒk8ü¿†ÃgìëŸb$‘x1$^I×7žšÏ½§ô˜øÿoOÿÿrsíÿïqž5þÿ§~tüÿjf:þÿÅk×ÿçæÚþçQží6þÿÌÂÿƒ˜ðÞw:mÁ' "B4O Cý¸{¿ÄZÐ&ÐGŒ‡½6ð=6ÐÆ7^Å.{?²À¥q¼„”¦íaÈN¢Ïµ‚x†Y¬1á79’z­pq’ðs`Ò¯Ù;yÈ'\Xñ'ÁÍ!ý§wÊå¼bµá%[ëä#fƒ!0UÍ`¯´¤ëóߌÅ@ tá7tšÀ»3â™-9ç:/±¯†/´ÿc³¡Ï5 k+6«Ýš±Zh?Ìéõ눀k°“d©óRåCîÜ]#‹1oöÅJ³J0hPá8¯i›U¿ ‚{IcÍuÒvà¬ìšQ¤ZÍr‰q–³OÝôä졦'gó˜žîékšxƒ‰'?¥®¢©ÏV[΢¬MNÖ&'®G­ÕÚi¾Çk¬ý¦'§5~ý@ÏÕÖ`er¶r+„iùjýìK˜%T qŠZ ™„ÙÃM¢à å&iþ¸žÙEÇAÑ\Enêf(4kqÌTRÌZ^êéµÏS´Ãñ'º„f“€Ó4J9mÅ 8m›Q¤m}aRe§y †Í‹X ¹¨Š-^Ñ>ÁÜ0Çrxºnby N°=í4ª™ìG<¤›õ,hN¤WîUrM6¸8[;Þº6g¹Ø‘€yEª×Õë®ß)R]º"k…$Û„ƒµa lRk«„ïo•;(OÅ$!ÁŒàìoiF ãÿ'WÓ§‚ÿñúåÿû(ÏÿÿS? ÿ¿ªÙŸŠÿùúõkÿÿb=ÿãáÙnâÿ;G»³{Ì¢wíÊìGÍÓb®Z øç ž%lÈïv:HNÿúft`¾À_}ÚðýoȾ„t?^Fd‡ƒñ%â~YÅ(ÔóVm»]%`4Â%H°€W‡ÐÇ B¾ /‚Í­Rp¼·»¡+7çBógqùOㆃ&ף𛠑 ‘ÂÇá0úwê׎ ß÷AòßI(¾çç¸ @?žÏrÜܹû0‚Á ²”@nG(‰›WàÂûé,$X ƒ 1;âgX)úU^-ôÇáÕÕ ?@]¹¸G&V¨F¼žå›$€lÆF¾Zœ=74܆_ðLð•Nåô%œÎÛDú} ‡’΀g™Aň2ÙÊñPüñ· f㎑¿3ÐRø8¼_ãej4°ËKÁ`#Üà 7•JÜp[/]§ñ9ÛuˆÅB/„íΘUxg{1ôY—y·úÃ@ŸaMYFÿ³îNØ·xø‹1àÃqÿ³NÅFÀ5$p#¸¹Î–˜Lgk ããì;íx¯©X¬”·Q Õ‡—O Bö2ôQ,s°‰Â2H·A⺵‡»®ËBÖ˜Û!ï¾a_ðL½T¨€¸¡4°»ýk4Ý™FýC] õšÜõgD´ FÏÀhFM‘ö`Ž ˆ{ Î`gü­•Bb=‚™ÔOóç„™Ô7˜’ 93‘ ˆÛ Ó‡ín¢9°oú¸âxÃ&AìÄ®yé’Šzæl =s¶Á”ÜžAƒèσô°ÜMiŠk»,C‹1ÞÃ/²¬Ó©œå`ÊÍÜUÔÛÕ&¢­yœu;';@ Ì®åq€wX”¯þ0Z‚ÂòHk‹’"ÂMïÈw—Ñî! ã’Q9¸Òç¨]e®_^„î!æðÓ‰DPtE im˜ÎnÑï뀮‡{ÆN;ÓSb : C7 ­ ç;üÚ»§sÂ'ª±Uƒ(ˆÉwP.‰eqÎñK»,ù²E¤ˆ%¹!´Vg&Š@ê13)q$ÂøG4y™„N5ÖÂÑ}ÔÝ´“5á8¬ÑE!ȬÀ÷ƒ©E`³ï ž¢JŒ´â(BÄ`X¤EèAíL!ð¿ nîn4Á ·´µ¤?áA› àOó±"|ŒªzòA«.>ܰcœ-s¢moƒ—Ig½óÎaüNÖ"›âfÒÑï°½“D>“SÐ *E“êÖý˜X5øŒfµfÍ|dv;;‰u£–¤ÜvvÌÝÚÄÚöáI»[ šðÿýºÁ…÷kÇ;ð/ï;oÆÎÑq)hw;;ðÿ_{·SáUúAîsÏöã‡è¼qrÛ6Ò!¤pÜqít'ly{hqPSíìèßðcû~ì2”‰¤–’PÂ,ÓT«—„ûÜFó ö>Þ‹îÂ0Ϙ±!G|Pö’LæÖ&Zùªã)ošYÉDGBM’”?GŒB>»àOé:P¼ËÃéßb/ª×+ŒY¬TxX„_è%Í]¨Ô²•‚`r Y(X$gq@Wpj XújDp ÕûÅÍ{–5oJòcƒ²áq:ïŽW‰Ç!Ìu¡ªdú3D…h =¬°Ü#îÕö6~êž p¯“ZÓF £+-ŒÆ#„º+@<ˆË$%N8l#ªt†wÓ µš!Ú'b¹#¼©ö_Á³Ûé`8)þæe^OrÜ» íŒu1ÒíTöy³hï«ðž¿?Çò¢V5Æêd–£ cç¿0{_ÃÐæ>ŽyÂwÑ.\5;\ƒU´ÆãÛàn4 Q‡q{‹G¥þE/\°P"Ø•ô†ñŽt^‡„Á%šBâ Q‡óN-(gFý¾€ aïêBò=GEçh‰qRpÈUQ†/XÎŒüôZñT0ÛÑ‚”B¨¤ºöt*xlÀ‰ jsø5ãÇÕòüq†‹3þR‡Óµ`Oü|ž—¯Y£ÈR7²ãQ:2Eª(N8çÂbRÈç5™õ25{Âp X²ªÒ aú™'ñHxyÉ:4—òÔ9¤ÂôCÑ|Ì·=z‰!ô¢ˆT ¬d»€·6ƒ¦`cc‘÷MZ%ĆœÒ¤‘fîØŠea9ÔþQ1ª°¿oΔDÈÔ÷åf°ï«/<ǾÅž³}Õ`Ö}­ úÓÄdûûök(óEÔGû&ÌÍß[ÚEY.^APláÌ)BÔýØ›\U¼SqYwøG,¡/6Õ'wM7ª¼¯Wy_lHÜÁzìï÷ËÂ7²8?ˆ ;ºÛís¿Â'jøËŒ“ Û‚¾½²ñž£DãÝ‘kFms¸êþŠù†>{ê<9¾yõ ¾IyØhÊûE±«¼Îˆr |C ÝúKÌ’…K‡êC«ò>ïÇ"i’áD$úJõ?n*Úp˜]çCêÔrzE^Ö®oéõŽRZ…F=óKŒ¨¦‹uÇújL W”Ø€eaKèI‚õ:ðÕ´ *y¾52•±G')E'¼I§ ! j%Ǭš²^†ýIHöZ÷Ê ·'ï„`c«—waOmP P ‰Eu}måƒÚŒ}&¥–L;Å;–™ މº O>-u?Ô§ÖΆáè«9†$ïa.Ñ ”=¹½D½m¤ §;¡ tÀ§Þ`dÔ)Pœý5‰«b`YXÄj[pt=?*HÀÓE2S\³òERjÔp“¬kù§½ä½? ºˆšu&³ŽC'ý}²€‡æï¹3¥§.Þäƒa¸Á÷$o­ä$X °»–Ï›ý.äD\žà€î@,Y±(%żV”#0ê4)ãn!L9аçšJéLCÇC×¢2ªuWDªx£íóx}¯8Á±ïˆÑ½çà¦è×-Ö `,?^Á˜‡¥(Å7&Ú¥ÆÉÁºJ^9„˜#w«œ1Ý‘ ‹ßÆaêúX Ÿ@®]x¸Hctox†qý{ÉA.Ð…yîc¾dŸA>ÂTÊΜ–ØþëRö@Ÿ¯o‚Q½TÂÔpšA1Q¬¤¡ŽÙ µÏ QT' Ye3fËä…’Æ™VJ®Q¹bFš© &õ¯ÞØåøÉ¯6Ò-Œw{€ç€Ñ÷ÈÜ‚eÈSG­PØÍÛ;DððM"`5F%†‘øñ‹§*•4¡1ÒÐÉNˆ1²:'PAô…§°úÕW¿šAæ}h_Ûbm ·Kà̤ý²-]Á¨KÞ(u´Y;òq%îLe!IU^¢¸˜ICºVÊ‹O7c¦I˜®|T¿?™¨ ¨=s&m¬KçÒ¯‘‹nÿ1ý²øö[[kÿïó¬í?~êGÙ¬jö§Í˜ù[ŽýG¥ºžÿòðl7í?ŽO½æ¦åÇ:ƒû< CfËÕm$FCPZ©øk‚ýÄñ© |`€ÉjBÆ3°­'”é„(‰nÜPBg>>íÕ¤±]¾¸/·] {LÆã#å÷œI >_âöEËð¤Á³o_Ƥһ g×cJP¶PµÕD‘°ÖPëüwBî’mÐ{¤T ìµHÚr’¶žim> rðÎóŒ ry×§Ãÿ-´þnÖ‹4ah2- ž92  1³1Ú}4lh˜&(dNB¸ê¨áäj±‚}T‘ýVÅ¿ª* å˜nÄ@âkB32’†dÈS3E4üÊd&ñ¿™¹ŠÒ Ù¬®›˜èF-:…§eßòü'Úµ< ×ð_ÿ)v.ŠÌq!z.ÆW Ü%Y$ù·Ö‚T¢­›«d²Q1FÍ4W™ÏFÅÐûÊÑwlT|>ì5Çõ5Û†e^—‹±”¬x­XØó%îàŸóšóË ð ÷ÌÞÏì°]ä!Z„™a#÷¹ôYl1jÕªb,ù\ Åâý·â7`U`ŽÁ½U )ý]Ž­¢}?Õ@òo Âø¯¨´ws2kÚzf²+]•Ž«i±bSH®4Öô ä*Ñ¿FMº×g©”ÕÈÇc°d®¨JìI0bò, ŽÇVE(ÞØgµfPßÝH@QùÝ¢D°6hÈɸbx/]×:Ž@mõmÅMaáGÊ!h)¸¸›%®ÍÓTYòtÀ+ ¬•cS$×ݺùt$Š-«¯\_§ýëðÿgïM»ÚH–EÑïûWäíõÞ²¶ä©›½½×“‘‚ÂÞz—% €r ‰- Ûœsî¿1äœY¥“í¶ªÛ€T9FFFFÆxEÎ=C¸wzã5ć(%ñúÖà Kæw@É%^U,Z³,{ø:¬j|éõu7™°Ëú´ëÁ ¯W«Ã¿—ðï•5é^¾­Ã·õW(z/áÛ—¯›{égËépðù¢Ôûœ–Ë!ÜDïÕ+yMrÁ Çwr£Ëš‘z'þ?dGYÁAá_/ñ/üñÔ^áGüñ¼z%þÿGòùñƒ˜rÐRÒ*DZž9\i†!ÿƒ[ŸkãòÐüüïiiþÖ¨îl,¾÷QÌj,®Œ(§zF;¬fÌÐ Åhdbñ€Œ¶±¹Åfïù×߯K8È/ñë(%Qà _¾EU\y6UBy¦‚ãýÚú¡ùó÷~\ýß“ÿ}.ÿ¢g®ÿû¥[ÿ÷½ò¿ãž÷õÿõÚ|ÿ?Å#yOÿœÜFcµ[)αZq ½%#4Ì n®L¼£2Ѭ]!•¢ ŽßÆ2©ã>°Úñï+ö JÀYÑj §ÆbräÛ”Ç\WŠéM±•ˆ ­2“Ɖ+M‹hL×íÐtÃ;xÊÌ…â’3r7fÀ”I^¥ƒ—;U6¸–ŒOG鵎ELFhÄ5hã'#;¥TÇrµ%”ÿâ–&qÓ•»b&ý®(¨â¤åQE/Ë  éze#,ûÏS÷2dëYÌV)ï^Há" Κ-õ4²GlIRuÙeå§KbE¨´«Xww_¿l)Ÿ| sƒqF·é…ikÚºVÌ” `Çð²dЂcî¤XUë©ò.,Öœ{B ާÀÃHsÕ#ï÷ÅÅS: ÌŒX_ŽÚ»©‰`òàƒÄˆg¸aNð¨C}Ÿ\¤—K´SbªvTjbÛg²ñ›±J½èZŽÁ-Û| ‰_Ch+süÁ¸e °xôLÙ¨\šV¯zÓï›åRp ËTEÏɳ " ¦Ú ì]Ãjž§ Åï$a7t€âñ T’z» ìp(5/ŽFöþÚµ F T*4'+§ß_DЬà ê(õ­Ì'v%ãÐúhãºÖf°æ^Ë%TªA,Íí.æqEçqEïkoáF EXßÃXÆbn6TVJì€Y>îAë0wEr×ËTú‹[~D Û¡ËË‚×Ó/Ï¡›eWl€ÊXO­Þ íÏf·×ñˆ4™îdEuÆ=Ýr'b®ãÒÄÐÂÄ3Ü ÍIœ!´ÛqGÒ÷¢v;ž±Ž3—™ìvÌHC žbv;îH§A5Ãn'n¬“G2,Ôœ•f<2j†fFw ˆ\Ȫè)l‚thä»EnK'¤Næ:WÜîéqƒ“4Nä„§õ{òÞZWÝü[²s‚ð¦äΛ0—÷nÃ8{»:¦ NOYªfÄåŠ}+G>PÊ ðÀÃà±^Vfݱ’éØš¹·Ÿ¥§Ê´¨§bÄaZk?¡¸L>==ýëÅžfú¡„kQ3ͽ£|õ÷±•Oh8ª%òÆ`Ëf3›É¶í Î\f6dåµ';RC÷mÙèRXŸÜeí`80ÂéDÎ yþdÄHiÅUÒ°°³7É8{2›1g’sµ Ðާ ¸d › HÔ_˜[XrÚ»g73áø‹øÏŽ0$Ôd%¹# “IhˆÍžžÞŒX”Þ 8ŽÃ«ò• ŠÇ7H³çvÿªÝp,îüDŒW훎ŠSoïàÕ,{,öN'Òü1¢xS0òöæ®,7-š·.ž3º™M§uŒtJCÇB|‹êu9üÙ=ŒŒè‡5¹f:â7›JÀE=Œø-‹††Ø²ÎÆL†Øw´ó`_ÔŽ{F#îév߯ü*3Ø}ÿÖ-a\ƒò^FãÅÆMB#îûZ”«1ªØÑ 2V–x.êlf¥B"EãG{†è¾%º5ÒŽ‘NªSéÇo´Ó‘·ÏD‰u@è¯RŽ~ó¥Ã\‘è0vG$Ö°ù¬âZÞó%¡m»€_i³]¸Â$ãp¥ñh;¶ÐhÍ€wµÛvü:R.ü³›~ÿ™eaç&V5æNy–ÿf˜2«?4ŒÁK83UKoË}ãf9Úy%%¸ á<{†Y¶ŒDSÌ ªä&ŽAÆyÇçì‚@€”+Qß&Öª;Ší95*×Þ÷K.oÛÿOFg?Šýÿ«·óüÏOóÌíÿéÇØÿ?ÖîŸÿëÍ«—oüý_;÷ÿy’‡w»kÿßí¬ynŽÀóÀ=´ÛØŸ!oûÜFÿÞ¿Ú‘;q¦¹}LÎ Íà׋†ú‚.Ífû¸ åÙ kûôP†Ê%#BÃÝ^ÁÝ}”ž¢lK+Ø©T—5yhõÜ¡5ñU €N'$¼žÀ‘1f@¼eñ'^¼ÈþO`Áº³8R…ÒžÏC1Ù~Û@;Š=$Ç!ìmÓ&š¸h«ï=›Ž þ•Çø$(y¸«àÕ™ÃB•ª½Ë$u+Ú¢DWì¨Û! ÊnÁ_…m÷Í‚Ði1Jà"5¦«&¢o`» ÙóŸ2»¸qyÀýÖ>ߣÿ© l² žèo¸Uí6f¢ ¹ÈTb@dƒP D{PÛó‚¦ãpóp$ Â%²Põ´1ÊåFÖIw(®5¸sà¦åìÔ5Ì1Æ»(Uzäõ»Œ 6f@7ÏÏ«wÙº522s7°y½X#õ­M0THÉÆ¾;‘|j™Â˜ù –7ê±GWY”Æf•ó‚ÿ0á“fQ 6Cª©·i’åFQŽ6QjÂü†‚“fßUØ, Ðòq‰þÛ,Eß,Õ4¢•Å&®3ê×Yóˆ¾1²þ&c@STŤw¼Çü¬—ªXx“Ú|¯(Œ/î+i¼¡ˆÃD­åA™ÔæTœ;¬ýþª-§U¶P”'£´'ÄØw¬oÇipÂdI¬x`æ\EFPoÁ¦{ü=Üke†·=®Ãw€•uÜþîéb—¤8Ü©ˆ"Pul<ïv…Äü±Ùh)IþL9¸ó4†¬Ì-ɲ…êà0d×~®ïð‚ô`™µ1¥v ÿÑÏfÎõ©µ»Ù ËSóA•³2µN`Ý©“¸³ñþa5ÔÑÌÞ;ÝÕì!JÅ4— Ç2«ö>¨ú7Kûûƒ§{¾‡‚îá”B¹Eý›Ý©µ¦“eÔÑ=¢` Ëjź5k&…×Yòé'*Õ*ÍÅš›³¦I‰ˆQeZ•*S7…¥n¬-òÛwVúIý¥!ÎþÜ$eMµ®ð?>u sÞ'ƒ„,¡bÌVÞdµüƒAz™’«}ÿÃÍÇCä¹Iq³ê'—SD ”iFÒ./“#1òSç¨ü=TÞë—ë˜D4y…טTˆ¦LG'C`òÈ¥‘FqZ<2ÿ$²ç£€Ã#l])QÅ­X~'¡Ù ˆÒ1‰§è­:)㽄)–› ©a´Ä§Þ²²á'_öúz‹¨ó¼å!—nIõ“–}‰@B®pO¶Ü‘Ò’+kÿÍHÃ|Sv^Âl GÛKÈ÷[vÆÜ|õWµÓ,.ûu±:θ3F4ÿŠ­4ו±ºµ*åu0\üRø«ÉùäáÒz˜Pm ¾Zä·ª°W‚„¼#èè¶ß‰UAßgåt‡NLf™(™[œ†‚³œ—Í8ù3-ð•˜] j>µ$:I7Ï€RRò*—2úD1¤‡V&° I3õþ^¤·M©á~lj©8çþžkI,ì²îÃ?úH6#ªe?à\0~×X`ù¬ ¢{à %§£¤‡ÈIÈç É×–Sgk7øÊYüwQŒÈ ‚'»ô~}‰ˆÎ‚št†ÍÛ`hcw…hšDe Cë¥ÈØ}CJ~>X(ˈ7ký6¬@€õ’]ÄÅ`>m:îò#KGâb©q¾£¶ƒ¹ª %ú¥bA‹g£Ì²R½Š)³Z6þã"•qƒÉqFvY8• xy9»‘·Ã0kÚ[8ªÆf\ü„Ä[VÙeª¯6òA °ù7óÇ÷™4ź¢,Ü´$.»Qê∪IŽÞ×îêâMqÂ6BŠbÆße€r»=z³vž¸ûæÑý',.Ê?OvmâŠX¦žyÅq‘06zkèáÁ¹Å‚¹™V¤•Bm³8¹™:.©#1#ããú!G& ŸQÏ@ªÈWnÄl‰ªlÉß>tãè­Ss¹ jVQïý;¼àºeV3ïßA—1‚j#sÖI0s¤Ÿ®´0¦Bõl€Ë×VéÝÀ™Ë-®fÔ-²É}^ínó™¶ïu«‘6#-z·\~öÉÀÝÞÕfG¸^=œZ&) Ï4’å.«›È_p~—ÃþÙ8¬ü‰EÙ¤uÃZa iC$é8î¿\Ãý°Î.'žUfý5iÖ/ÝIMC?ˤ ðkkK=*Ròá=œ¿ÇA/ÔžÓ›Oü&ÂÖØS¸…"k¯”d….YÕŽ{ÓÒNYÞ÷КCi ŸE‹I>'¯qÜ«\üŽÜíWFxµôa#%#.¡@™8Ë}þ†æQ¤Ú’Ö‘Ãë3nà÷ôµA”@M^qêâÔ qêS'6“ÿKÏÍŠUßÍB:øRÂ6°÷M óô]¾nölБÀÂ,ûuxÉjm‘~BÛ[ÄÛ—³}u¤ä2³^”¾®Õë.é’5¡Æ‚lAׇ­k¡æk‘žã5»]½'KØÌ ]râ­ÕÕq™\ÆÐðÀèÒË(ÌwÄkÉ«À*ו‡sXÔ+à4x¤8Žq@U3Ù|êSò 8²ÕŒ¯¬!¨ÔëñšUh5û–ÁÇUƨ³:½b¯Ç¹ð‘­7¡uâ¿>Èvße|Ÿ &Uř݂‚ݧ­âõƒ‰Z­lKúúê…_?‹óóÁh¯Ú;hqZùìïhùõ|€²ÂŦ\*ñ‚Çn³lB‡`#¯]€hh›(zò9²ñáó1/_Ê™™hÀÿسi÷Áhk×@ »³ Ví’æä霷áDÖ¤}‘¼‚Ë™hÒMŒÙ¯Tøb|}ï´¾¶î“æ[)aaüð;|¸JŽk9rÔ"Sӑ袃®d–¢£HT+áPyQD 'ÉbŸ–«ÙŠNÂьЂeòeÎWwÓ˜ÈnqªÆ„$ÿè$Éš[K~3 ¥{Ëb\c²8Mc’‹®Õìm&¦hV¤ÏÇpž†°±I/ø_F•+ÂѯHúúëŠdà=3‚4Ò‚Zø8TE¦~fѨ"J¢¾Ð&?ƒž&¯~†Ä×¶Ô·TÝ"Ú_ß“ÓÿChmê5u>æLõ®Ú›Ú ¥¾YDõMÆ•ÙèMÅMd UîtýIÜY]ïj­‘VÚDêÔÕkÎÈšAnù*ž?´Š'†ÂWïp¿,=†û>o0~ݪ§ï)8§P%$Û‰8w<¦‘]yªüq/ÞÓ4C1„zG£Éï-º™ÍÖÅÖ3ç eiŠpRöå×ÿüsi‰ i‰šƒÐ-fj‰ÌEß:°Rã¥-2†Zí…¿R97ì&~Àòqã?¦?JüÇ×/jóøoOòÌã?þÒÿñqvÿ´ý_õöEÿñå‹óýÿäA¼øÍhüÇ0¹ú< äß% $¯îÌ!›n@ÈA=N²BA¢Â›ÜÖ+ _ÃÊ ‹ñáŒ-bÒ ÿ8qucF †ðˆ¹º‡‹±¸wœ¦ç)ÌTÚ»pè—ow‡‹(Î!ïì†0úÝ °ÐŠôâ„t‹Åwä([$Þ‚MeCfj Ç°ª‚àOñq† …v#*ºXVB\ž*v¹Q ÍòùCW™_UPžFIo²½}&Þô"&IQÁXi7} ²a§¯{¸°•Üô,±+=ief$K¿e7œ¥þè"î£Å~ôöõ™² )’WÙ×áè¯1,Y2mÈ3öÇ;½ÿÓ&ˆP2 /„ñªŸoúgb€ ŠDï»ïAÉÄNŠœ—«:?¢,““QåE\}ÈD‰:郉•´Ú^?èšPIÅ#"¡±#E&Z«ˆœ F-*Ô]ߎEêù‘òÞ=(ÑêŽÂñ1‚¡L7:äyôž¢÷4)y¢oýê W/h…Bù9qü¬H«@Šš.9­g…óñ™DÅU/cV2ì^Óɨ&ð %´ž(6j©ÎÌ—ÈÐoÇœeøtñ`€¢Éç ‰ läb›ûк52BÂñU4Þ¯÷9ÞL8ÀìÉ´À±¢æL¾®'_óÕH6q™j •&VÑHîP›·ʨT\’#d¨äÞ¾þö!=*0fÔu2 á!ó£øJqf‘ú\Y/]hð¨p³èå»T¼~á ‚ŽMeC½å¶¢u-ŒQË…šø&üøÞ^‘&2O“<œa‹À<Ç1Ø·ùg|PÆ+†/&®Íï&?Ž“Pv.x–‚8NJ®”™‚ÍÎLÇþÉ«2¡™®*SyfsSÂî1ÃöÎÀÉù8ÍßLÅ×£äs4>=(§Ï¸±™ý•qÇ1¥BÞ:à‡€ö®øÑUÎ6Ç_¡ù0þ ®ýÿø‡±ÿ¯½œÛÿ>É3·ÿÿ¥ÛþÿqvÿTûÿ·/_ÕBûÿ·óýÿïvßþϲÿow6÷l/€•Šh­­Ìýœç‘ýàr-žÐ%`¥Ä=Ïè°Ç©›ÇNîf¸7$ÂY4o^á$«Ú[1êba(Kcg4^ïM²”c€å+0wøÑ¹ ´5¸¹:áÆFéÅ%š-ÃŽÕWd¾à‰S*XÄÈÊ’ì;ÓiáNÞ ÝÙ|”c‚3ÎÙ|l§»™)> ?®ÍüŠƒ]Å\G`ájæxŽxxcð ê±AÚŒ§i¥r>„Ί ¿Êya†)aÆžˆ€ØàßUï[©Vië¤ÚEmÿÉøÿɬð#§Ð” ÆY&õOfŸc¿—s¶’q<&ïÅŸða…þákëíNä›eêþ 6î*ñîûu2rˆíïVcõýÚ¼Ûæî”tw6›wÕîÏdЮË5˯òÒ¯ÔkPðW4SÎÞ[Wòd&>“ýüÞcÚÏ/ít– ™æô¦N–‰ó²¤Šé¬ÈXZ™ÍéhdÛ74üIò`‘"K=qÕRÉI-‰7 ÖúY!‚RhnžCøt%þžÖ¸“~¼H+7€"M.X_å#åõ`œàã›Ô£WóP®:çªþfYXW­}o¼óŒ¦ `ý1pÆîª%™õ$_kï£a>ñ‚¶™¡ŸT°Áy™ä˜ˆS%¯”oŒýÜèö¨ ·Uâ8Éšd»¶ÐÀMa˜nYB'–ÄÃy‹pâ)p}È•”åT©¼‘Y+ðApÐÑÆÖvV]áˆsÌ-GêØ5`Z+[U£S§ž«µª@™«¨‡¥¼U‚:‡Èó=j'ß ‹±°)€Éø1Ü­^=¡»Õò}„Ey¼£¹ ]£âœF– ÞÀ/_>ß\Pìj,ŠkŸUB. ‡Ô Á”Ï¡Ó\©Ð@Š=yûÇåçœ~W#¾~ÂXCߛ͈£åbÍAL |§ÓÛöXšã¨_%#•iPi1›%yì)£·Ž;é"ƒ™e³lÎ{²¾¹=ë Y§ùb‘ÓüÕ,¾ ™Â†¨k‚-lh=ˆ°áÇà¦ø,Ü“øý±ø€÷ÜÉ?Z6³Òzf%Ï “ï\d;Þ¹´-¦™âTê!JO&jx1ƒ&<ñüDÆ„èºø bˆÅÂbˆÅ{‰!m‹12n¾á>Ç…eÚ ~VD®áò»–^XÓlýã ’3€èñþÒŒÀÒ–eL•Ø2 å;“0’e¼-*Ë(*£P2Å)²O.QL’±X+"ËÈ7õ¶ùÂ.¨|.(jº—i´H¦ñc*NþxTÅIíE†æDûÏ<‰¤åI@©xÂۥϣÌFL=†¦HsA ÷ûPz—8–VkžVï*ÉUgÌQöaå&ÕûÊM2Uu.‡O‘qÏ2Ù¿…ˆ%*@̤2ùÙ ™mçΞQ{ãõk<–ÿ×8I?Šÿ׫7óü/OóÌý¿~éGû=Úî/àÿU ü¿ê¯ëóýÿïvÇÿko½Ù.‰½æÚzE¬7ßïuVÑÙ«ÙýX{ë­õÕ.¹"m"+?>UÄÇVÃÔZƒ×âc‹ãÏímø§,tdJ™F³•×èÌàsVÿ±=Îài¿$ä¢R‡Ýqgç1}`Ñdá_2Z:\¹"¼(3嚉Ø3nØ®e±!ÐJK÷2^U»FÄ–¾còÒH(„Fõ›%žµú±U’Óã’œçB®´öÓÓàà~Aï±–’¦À¸³c×d(ÎSô3‘>agÒùpâ9ºt%ç䪑¤ˆ+èâ3v“ç°÷×&bã°åBy ( bWû³XmÀZ9à`Ϋ[Ïû‰RŸG£îT,3ƒA÷²úˆ¯ä F¹{h§,{7Z€Ù7àô¿âoÚ7âvaá>mÊoñ#Wä[:½>KC•=è4¼â©ÁªÁðÒÃ=€½OñÒ{'žuž-+7ª†°ƒþmÌCNUñA¯±bÕ8N. „ ÈÙñ¦žÁÏ]”nF§/³pc1üé§,âø´ì íOVµ+|Å•9ÞÀðØ·ñûÏæ÷¸A»ó`áqé/{cñ_ÉhˆÁ`´ìÈ"­Q…&;ŽT& OÕv7„!±Ð–2×Xhx Xy’DÚèÇ€”Öç$ñpW";¢†¡G†Ý%\¶Ÿ³jrבó¬Äs÷¡3,æQÕÚ‘Úaú£4>¶ÝþØ‘ƒçCÏ ^‹Ó|'ݽëFb GtaWÁV:¥0xv6U¸»¯átû\vR,ÉÓús™—z'¬¸Ôí쯫Cïî½›¾{ï¦×Ö/ÎÍJ;p§vB­"Ã⎹¹Ä-…œ)Le–ãˆjoMÂf¶ê(”½î&Tð ìˆî k¸Å{}Ø~˜>/õHÁiÏP‡ ï ¤ìft‚úxõoI›–ôF§—¤fãÌzêA=ªÓÐM4rZ}lÍâ϶·3@C¾ªHhÑ¢CÎ_ÔðÁ¡Š|¡®3]&ïœlg¢ö& ³Õ؆&Ë7v+Á±üO“ÁÚ4J5“Þé¥]ÔnFí+IUƽ+Œ¾úz™BUoó‹¯i¿ïqL›â˜€Š&Æö9äÌ0£pé‘Lö¬H!@rŒÎ”é—„±Ãƒ‘R—2"§mÏ‘‰A([:²‘Ï™DÓŒ½Ã«I¹n&€êç€Ì€ÈgzW3ŠÝoWl9ÝS£ÖÂòŸºXM 1’Ã×”£b"Úwî„ö;¡}ÇBûÎ#¡}Èÿ xßqñ>œÄ#"~羈ßâõÌAüÎ ~ÇGüNâwÄïÄ{ÛFüa:ÈöÊe¦°Qèl[u!ÛÉ {0kÞÿܤ£ Æ­{È…•ÞyaD˜/Ò—è)d§4Ÿ0s®Ç•í±#ëÚU©HN²H’¯„‹TñèP3z–Hy %yüŒ ]Ô“ÅŒÊEHMâQ>'D)Ʀ†­°ÌxÓ²8ï¥}¾ØÁÆ"v‘üÓ“O6_̵€ÕÂ7–Qwú·yG‘„aÖ®d©Õ=AÜñ@܉€˜hÙŒ0î<$Œ;ã–žt6Œ,îÉÃd=uÓž¦Ê²ÄP‡vÐÞcp'‰Â72Ùa°à{~3BÂ6#IIHmp1ŒÇ‘‡ÙR±uïÄfЮzýô¿’Îè,„’ÄQÐ.SÂÌÆUïnÎ7g {̧Ú?Ióøê§¾ud˜ &l¤ô­rËv9½¿’¼êþÏ·ÿYüŸÛÿYú¾áf¦etÍËÇÊebÂëi­vd³ª±ˆ ¾xìš•îæÇŠØèìlÿ‰ú–õ Ô ´w«¬ˆNóýf÷cŽhv%k0ÂM ÿµáG¿¢ª¦ì™®ïˆÍöNg»"ö¶[í}ø½ßÚ…íV6ØW×°à§­ÈÄï÷&2ÀµVc{u“Ó´µéov*X¯xÎèfŽ—Ój¬7cÊ–û¤mn72ÃâèX8±v#Z…†k…Úa•@ê5IõK´²„£“³{…üMù[·ù: æ)yl×’ÓáYÂúŽé)mi‹˜?¬ä„cXobÞ%A‰Fø¡84Ô‚ÂBÜaAÙ–WVõÍûÒWº»g>³Læx»šRR³÷¬ýÌò¤ØK&À$K1_È[¬®Åß²Q‡ôE9Üý¶‰S½n ?Õ)Z“)mŸ(üÿ1-l[ñeg9/ “²$AoGY"ø¬Du$”ÃXMÜí¼hMAô%jB.JبZý¼6ƒðLS"@½öË·Ö6gçdê~l±¡9¡dI"-OE½Ìk±ö"ÒdÇiÒY9õ6·ÍÌÛÛ4ÃìˆwS…ZŒ‡ŠSe+’è7ìUÅ«IÕHSQØ0éA3­ái‰¾itüÀ¨÷zçÀW‘½º¹2T V»Ðî(9MñÊaJðŒá­ At`Ï©–!4|¢“¿ƒúj«e¹rÂñïíR¹µ|0ou¬rdÒí¾jÇVnkºR=©)Dkb® *¡EÒJãr¨ù1› 'è¶áîÒ;?Oû©Tã¹*Vàfÿ ¿*┲yË ¯~#–jd|ÝO'㥰£5 W‚¬Ð;xÁ¹dÞ¼&þõ_àOúÑÁŸm¿¬·Yn«…Fðòcg±VÙê”IþOšÚÜx½Å0,¯[92Ä.*gCy"«f•ZNrññ.ø˜l!8Æåv”éÆÓ ¤Ö¬9Ʀbд›ª-£Š?TS Ð_w¡³y£y2r»œã£$ïH Ydt ÌNâÍÝN‡š®IóËŒïeÀõiúßj¿è­p/Ús{¥çÖŽ¥-qg††ñÍé3Vaå[ çñ:û•?ËNl–‘Ä9¡Õ¸‚F‹LÛ[Y^LʶZ!:›¤‚ÄÈÞVñNŒ;ÜÃSÀ.úIâRWÌ€^‰Qq’ ¬À¼  bD º%Á€ønô»‰ :Õ­®ÂfIÞ¾ØÚ~SZÉ…n´tØâ_$3ѯgÐ#_€s €¶C¶ýj|˜Ì²B6|vYÝh žˆH9YAIG·âz”|I‡7®ê]q­®S’cfqbàTv×nI¬Rw£áp" *†gZ€sõëHŸ´?Å›\WKö/m*7'¾D‡äÄ>ÑšxS ®I^š>ÑwÕOèÊüÁ?sQyt蹉å"lŸÍøÊå;òÌ©“È®s¸óÌåÓôÈ~Pþ2dwº´Ñ\\2r‹v־ȤP ¶¤*{&³"s=Úò”Ĺ )YFÓç è•ãy6#ùXúI%Œi$Žq¨àõªå¬µý¬aü ÂUÂÓŒóج¨¦•,ë÷i'W¤K“¼%LC˜"'·‹1¤™1ƒ"+m¼Å 5‰ù8“‰!OŒ»aAçXð‡¤Xæ~bƒFø…Xðǰ€˜~øKÑÍ~_° ËÏkdhæf1÷óºÛãøýgôÃø½}=÷ÿx’gîÿõK?–ÿ×#íþiûÿå[ø:ðÿz;÷ÿ|’‡w»çÿõ'œøvV*¤°;"w¯&&:hn6ǯ#üó(Ï©†9*éåuÞâë2I‘zý¨+—qæ‚'æ£õ~Y²ù7ÐyýEíE1¬˜aÄвݭŽ4‹ñæ’àÐG4a™¾XÓ¢Ï&X¸i!Ô¹Y~NÂsuBb‡’qØÖëÚŠ¹3ЖÕä1¼æÅîK+h*s •»´$G2ßì^ÞŒ0t7§–úA…£……Mõ£K.~*aVíH”Œ8’FQe¹";•&7ƒèÁ­ªóá²®Í3<;zPͱQü9OtJ'ô'`O*VGÊ–euÙþŸ–åŒ@¡?ŠS/Ò/‰… ¿™ m#M+QEFá£äìæÔH¬E!Ï µ$2À—7ï?—9ÚŸ › b §w¢ôçQ>Ñ/;€¥ã‹%w,ÜT;˜%iŠZ­cþ±SG˜/ÑÊw¬ÂÒ{Y¥•ï›YeÑ5ã¥MVd4èn‚þ&ØH‰ø‚!5± á’t3!ã¹b_Œ?…f>¼¼nßè#€³:*ÒÿGîŸLp•U0îoqчHÃ@¢}ãà®GC@¡ Á‘Ý«%»‡ä‚NñYz¿¾¤ýCàiR~½x{@W§ôÕ$‰¢öÃMEÐêõGIïì6¤ Œ«â4b§?¯-Àd< è~±¶Ü^¢1Ê/؈ªë´‚¾4°±zZ¤ ;ºßGD8z¿¾‚Ù’$`>Ã1'~ÃW›';¶ 66‡£_Øà(ÇãÑu_¦ÚOTNŽÐ2 +úTÀ¶C½ï'6ƵJ­©ñ¼gÚÙGþΆyò N't…OÛÀˆ8£*ÚÔÙ5 Œ›õvDþä>qœ%m‚€=º$À=\²áeãKîÀ>ºóp§•võä¶ÚÖgyEò}öÑGfµ˜i·oóN+²zòí4¹žhG!£õ<*ÁZÆËŒü ´hgÐÓà®C[”À~ÄymÀV4'y@÷Ûï7Ý­×;ŸHâc¦pbJHÃ×)—â$ðˆÛ,²çRù‚$XÜ› -˜-,öM6<¢#:F„&cD„:ÿÿ+©¨—5‹*‘׉q:)¸=±Zxðúg¨¼zÖÊ’XÐ--OÒ+Œõà\8m¼!^)c|BNêÉ¢Ó4Þi`Í'5¥Úp¨´‹Øx$ŸÃ¹ƒ¦Zä9ŸôS<¾ð »Ãᙌlp•Àx—‘Ts&1= LÐéæðkµ¥0©-™ØãµÚBÛÛ¢t©ÔÆœ‡x«p÷S ç´ðŸ(ñˆph\¡ÕQr×v¼ ŒœëÛåjIã1 jH'%gCÊû­Ûâ1x™ã XÑP¤€ÆSã¨ùnpIQ¸3ŽŸ£ý*šF[Ø¥ÃZVÁ‚-Ň.1ÚhÌ´î<.f Bã-f(’ÑúcD¡QÒW† $/²B Tši›&bIJN›x›:„¼[üZämKÝÈ-&Ï)Fà5pšcŒ@Ó‚;8ÇD/Š¡ÇŒ@êzÍÈu¶½`øêŽÄ|‰+âñ0§uå|W[NûCy3Ká^F;ü“ Á×¹OM}”N.}x%4‘®ôa Žpt™¨ ¢´¹I—úü8_^3 J„‡h–#f/‡—¯+YÇqµò}ú5°ªa ßó.Cb4*P÷aÜ*“K`Ò/.yN*—} lbEž§Ý«ø…$,VVƒÈ«_Z(Óá*#zè~Ê ûX}¡DC³ßÄF ³(q„0—)‘$šÉ™ ÈÒ%ß–7DVWBÝ`±X3p²Tj!‡šž›£2ÑŽœGÎ)`‹ps°ÛpyJ# £³VöN:¼“ê V¾ð6r¸zw¾ál³g¼ÿϬ­f¦n9 gŸôÍýçœÖ’óÞM¢¨ˆ¤srël¶ëí¥æÞîújå“ûg˜wi¹V~þœ&…VÚx§¨àÝ‚È%¿¡ 3_è{¨Dy†1Å ÃÁŒ)ÎÓFSâ›']^½fPø>!²‚ŽAË„5(„FTIOqszu]­PÚt4àÙlFšî»Z}™ÅQ«± ‡Ü—1þõgç…8 ÇcÌ~ ®‡)U÷Ðò²xû®'Û2†Ìîðw­"ìùå²èXì@¨Ï6Ù_ÓÁÙð«bàâÝRt+vH ‹¿Ró±py“=¹ ²š0îG㕽A‚Ïñez>É` ¬Ø oÞÕ^#SUÚC¿Xù…¹TeÍAã1}%&²üYk}éõ ºÉÁdîÒlJÙÀË…öÞózÖú¿ZíôÝÔü—“Ùmt¶ÿôCëØòë-[ÈP{õÿ"`ý5Íj"Æ«k0ÂsW % ‚´WôEV€ÝÚì?z2É^Ï…†"Boi)§ðÅ(éñݘMz øÉÍ„))ÌCAŒH¢¤X”ӘЫ‹¬xV#ôԼ϶•~­×„¨—3QѯBÏ›°WSÚxãµQ{´Q{‘ßFÍ3À¯ÿÚXȆS^à¼^ ¼y•Ý€[^ंjõß³xã7 Œô­ê¯ßdp7‹°VnõÊã%ñ/ZáLg4 gìô0‡‹UZº$]±<n»7¸åiÃ(åmf;òl`ÍT\Ò^ (Þ ºŠe7¡Ñ; #ùÆ+¤‘ñ¢ø@[@†É!œ9É(Ã…œ¾ª“žâ•¶Tï¬z9<Íìà\ùãõ:LDøaøæU•z³ ó§`wãÉèæÎ€ºä»¤fý6“Ž7Ï=Ø™+i•HÞ‘¤Î"\"BDMj¯¬è”³²ZÁƒDM [yaDpãÄn o¹ìêÎá­ôƬÂëñ(‚KŠ›±Ûäˆ@T\y@·N¯} ++pN!¥‚El÷`V˜dåtl‰ˆÑüU> <»ÕŒ{Ps¯ñгé(ùÿØÄ9ÝZ’c¯tǾ•Â$ü€£Mq(ˆî”R¦ºGÛøO#Fhô/†£try…A$&¢¹ µRAT|J€–l OoŠTW†:m%_’¾x©›Ù5œ'†hnl‹Û‘T­lKó øx;N¡…/xLDýe(Ä…%Uü£þGµúÇ«· í0"ìöyx’ê³® MÍñP£b¾P¡Ë®GC¾T™½@L…¤à'Éiï†c§KFl¿Ÿ‹7 H.Ù”ˆç&YÃ%ÜE?½J'ÀõÑDä¶ÍÊh¬òu4’OŽÔš'€&ÞnQØÚS˜Ò9ا"F^ $ù2é_3ôñhZ‰#z$éR€8gÞZ|µF‘: h)6], 4p梽ÝD³÷P¯ WÖRëªÝ ßq”û̾™ÒyƒíAE¸CÁ9¶OÇN}(_ýa·"ƒøÞ\S|tÈœ8Ξ¨½Am[í]ÝçÆ—Ä´µkå.0/¾9ú\T¬|†SÔœq|š³¹./˜ú+Ôœ Ïæ,/œMƒ´åÚ0bªÕVá#é‹YbäDÖbke}ÊQd™H$t#B{Í?÷×;‡Ðu£Ýíò¯£Hßyajbö¡„ìÙÛal"Qd¸zEËÍÌaiVwv):ͪü½‰¦,Æ ß{ëÝH‡³F­‘kVa½(b üˆ†Ã™ù…ˆ›þ…Ýï£ñ_xƒ*w!ZPa…,Ÿí™Ø ´þæ½´ÊEµkÙjሹ°$EÁð ´ “Ým¼§xÞ*ŽУ"7ªÆè‡Ã …åúŸKU/!+†Š3¥õgÚ½”^ò¼g §âM«iò¨x0•)O‚@)dT¦à§÷Å ¼ ZB»4¨‹ƒ$äj« =øæ},£ß#…c9rB§0U䔣°Ý²žx Ø!k¡¦ÇdqÝì£1V¬ÛmC7LÊ€T»ÌÁ᜞i¢·E,H J3ƒ´,„(Å¡Wf™"þÅé—20ÈÙ0XV‡.‹"P‰ÇÁä¶äœ9ÙþæËL' 2óºa8Ã^>Õ˜Éõp„"uO—<ÕIïô¯¯¨ï@Ñ8°?H—ÝÈÄiƒWéÞ¡Ìý–lIĉ"á-SFóº\q‰e|žr¯ø44¾ŒÁ¢¯o½˜.þ¶DbK[¹yzæðå•Äó´ÄvˆjÑÐððåQôÚaâÔÎi§]åÅ/ÙŒ2!#·[2_ÙW5Ǧ6HG·ôœ8rÖ¯D§F'[l<ÄÀVm<#Ä„ÿ5{ª<‚"ÝgÅQÊ„+ìjÔCD\©?QÁ†r´|§l'¦“ˆE¦ a1›ó<®¬ ÆæÞW\U,Š…Š.±L8ûü9˜ò3)@[³w[~xÙ !<]¨˜a@UŽeM'é…¾¹ýS_ÐÔåsŽŒ£°&Knn>õ}hRö½CºEÉ’Y°070MyÏÜQ¿²†¼‰Nl>díÃf¿Ô'dvòm5úFìþü¿„ZHmJÆf'ÉY†„ˆ,Ù)Zmø ®~ð¶#ã „/åê¯/á¥*cÐjÜ-´RÉ9Ì$’ DÄ‘fhàZÜ@œrÒg)\ô'èYŸ„(„‡|±3«š½–röÖÙ™sJúƒ‰ ¥¦n:¸5@:žM²@• "[pĦ¼ƒä\%’g !!J:+YLœq(±sÆ- c’g–‘©$‡0¢Õ¢\P²÷©ë´ŠG–uB¨eÙ”÷ùHUºî/J®õŽ7ÖuQ“U} ñOl Û¢óp*dŒ(éZ.Öµø«»b¬-"x§òåo,†÷—¹ ²#^ް«ìˆNþgÿ Zí'½Z€Ñý{2ê/‰É$(Hí"›'•5-ym¡³©žË…´( x]þpP $^êœÕ›‘Ãó©x^kÎS¸^W_Û€?¹^oäduàŒAkk=å~Lü—~ïøâ¤wõåáƒ@Ìÿåu­þrÿáIžyü—_úQñ_o÷OÍÿýúMí•ÿåmýÅ|ÿ?ÅûݎÿÒj¿_il,‰n§ÑÞ£üÐm™b¿"­ÝÍüZA¶ ä3½ÍöêAE¬¬w¡Ò!ò¸«‡/–›ÄûåR­oÔztdhjUÙ±°äîCoÒkÉÕUÒGc•ÞE¿7›x™¹@[‰Ãá ÅfzÖ#õ‘ÝЇÞFÐÛY­ä˜YÊ‘Ž'3uS àt·4æö˜òfãÅÉÿÙþµ¹ÚìŠ6j¦C^vØœˆfY¢âIŽî”p QH!Ÿ‹›„°‘‘Ì:§±R’mS¤œƒ)éÉgÊ®ö–Î<¦dÀNlŒªLЃ‡ÉÌÀ³Y½ËïZaõz'ãR£L¿¾aN“dÂ_Þêd¯ÐP¬ÊB7«Öcÿª@%8Q.kØ+2Áø-}©#£À7 ŽÁƒ\!.”Í?d¶rx­-)±rzÕÃdQ‚¬¨HaÒGƒ|Ê8ÈŽu'˜šsèu‡ˆé´ì] ›ñ„}sÏûïâìfD•P†/M•(ÎÂÀÊ×Fyµ’1ÚA™Œ†nNÔÞWÀ¶Pœt˜D©½X£%fÑ»„¨^'—ÐÞå°Û…†—|A[ ›ºúâäHÖ‚-ÐŒ81#'¾ÖfŽ"¹‚ÞÏì mLqh5ß^ û)JcnãÑYä`$3r ÅRÔ1y–£Ó% P 4ÅÑ þ†Wu«ÊàE§Œx¨¾ö¿°©dªB[s6çÞD¶Iò-í¨€èL#3M ”oJt7¾‡Ø ™oM4 €ºPÁµýë(L`šRÒiçæúŒìitu쇳!ûá‘ýp‰ëßÙ‰f“WG]¬ô{:P§œFaG…¼ÇŽ8[0g)›ÜL1Éf+ïšÌZúùF÷·WŽ­î#×ãîúönEì56Ö•yiFæQŠ•Û„{ýø.ù[ø¯ùëíú o­Á¿õlp`ɇ4‰æüjÙ““ïszŒ˜DÇmºYr‘ !U"ìkVûk²¸¦Ô¡u D)S‡î5ßÇŒ°#¹C³á1CâеïŸ8´;=[h`eM¿¤e4j¯iQÈTM.PI¥— e¢Òà7V¥;{•ÕgÒ:8Ü7°æÞ–¦×ÑÒ™†ÚÑÒ™öV‹‹Óxáicž´øÐÛì­}»ú>¤eW˜c7V°­ÖâÖ>|D«½ñ«!ç#m‡£~T8Ì«PÓ0ÏIQ™›¡R‹Ÿ…Æ ÷OR‰8ÀÃG@Ëiüd᤻›ÉGÖ%âðK+jÎ/")3t¬J>PßI¶œŠœ¦.wÔŽfXÔ·Elî„'KÐðà˜:'XœÊd¼YE}¾±»Ó"êÆˆ¦ÄŒ séP[ò_¨ÛZ[lV‘ 9„†ù›ŽŠ“ÑO 5jÔRq<öiæ»ò?âિL rð²õò6iÁ½X–ÊEˆ®1{z‚q‹Ëذ£.1­ªXËô[~, ‹ÇÇ å|KþJ[r½Ú\ü@Yzç[ò‡Ù’6ª¸8:?^ÿ>{ùòæ[O±Ë÷à=xÜm~·Ïáí¬8ïK 2<"æç³5Äùž¦ç ÷ôãžÜEöt´ÓùFw:¹ã©/4 •èÄþ.#±’ô}w'Ïÿct:œŸ>¬øü?Þ¾z;·ÿ~’gîÿñK?ŽÿÇ£ìþiû¿öæí[ßÿãõë×sÿ¯'yx·ÊÜýöjÿà“ª³ºÓ^;^Õ.!¶?ÈJEä°(чmôìC‚¿š»ÍS§ýgµ\ÖînëPÙëþ¬­tdøB.)õé.)?¶CJãz”ö1üæ…ä6ô·tH‰äb¶-2"¶/ŒxªãHÌG³CØlEy¬(„§Á3=UbF!°glï”éÎ,ÐsI ÀM -›ˆuÈ”ÑSv!ßËE—jÀ.°²Eë Þ˜8MËX#h”„ÊqåºÔ(CwéàK -–K«å²tLYeœ ËÊä\g£ñóÜ Â<À{®½-ŽV*­Ç·ãIBŸ0ê<é3MÈa•8¯±x ’v¾í!FEŒbe»p— /,tMùR7ZrU–Ü´Jù|s‘¹uxc×—-(ãù¸¡k%Þ¢×™ÉUDº”,±þÞNæ++kûyìåßN.We_¤×Ù à…±/ÖÁìÆïÂX °dÆ„•°Ùt"97 ­NÔIÈΰheE%"5ÔýJ3–%kŸ1)ëƒi˜”ÅÉàé•0‹£mÙ{cËïEìh1­~攪 Î­Š†”œïsuk¿ü¯wé¿Þ]¥ƒR»òyñ¯¾ÛA“ û)y +K²•¿³¦­†·±2Ü7,À¯q”{Õ]kßMŸ®¾§UPËR1nB:Ã*…[év6` ûÔ{ÑDó²¶Ý*ÙÝÒÔ|ô‹­¹rÚÓÙÁU.ùјý㤋$gBäœGc“M¨æ¹å:vR_`L`»×nÈ5Ü EŒt§TKòRÝb¿×é—á„óÖ ”ÝYc†úÝ…Ö‚JáÔG–zÞ>_{¸“d$Í}e ´^XžW;y­2¡Ìò‚™6!iù¼ªv,(€4ÑsÎê•Ø Ó«äDlÏ¥4– á9”m¦ôFy#¬Å¡„‚9)ßQ¿=7— "M©ø7½î’)‹•60«ÀŸ~†Ñ‚Û¹¾ÐÖŽ&ŸTXÓVG66ÓZdµ÷àÆÛÅ ¨Û;Sì~·{À86+âC6ƒÖh¶?¶·¹kïtàWW‹dcÄãÒñ˜Ü1–s¯ñq½$^fXÜf[=ÏèúÁ\c¬6ƆBjwW6·|Kj2¢Þn3›Îõ~ Ë飈åôQÜrúè–Óžo¯M6ÓÅM4m)A 5¸ª¢Åûº¸¶Ø¯ØõBPÛ÷}¯¨4’.ïzJpêÀF:bõœc¶·žÍì9 iØ=gT ,Ÿé¸Æšú¸Î¬« sLšÅt›f‰-9qnôé'3Ääå‹ÎÊ…áuIcI„Ï×x²–D¼SçOÃèn]åa—´{í*µ&Ïë¸Òqº^±UÕq—øs1ÓT@<Ç›ú‡¸²ÔS´Åtµ9¶"C UºRàÐ$‚ÖõjÍi¼æäsÈÚ½¸Sþ ÖÖVÿhk›§Îþk{g7l¼nØ?Üj.¸ÔJTqž%E•[WùÆ)J$ux rg:âôÂ#¹DuäÖ^߇A£÷µ£œ Ú®—P,É çȨ2æ­b!%»‰Lžu8—èû8±×oaîõxám™¶ od3~²v¢P±2EÌß îX¶æG9Î¥ð6xˆ7DãyP`X¶ß d®q07×ss_Ö\ã °r˜y±ž#A˜ªŸnsq³¹xÐÑü0†s»‰¿ƒÝ„9: ÛMü]ßþã|üí8káà,9{(=p!ûZímíÍÛzNÄðçÜþ㉞¹ýÇ/ý¸ö±û§íÿׯ^¿ð÷ÿ(7ßÿOñðnòÿv6öŽQØ^[_+‘|í¸{¸».3/Ê¿ ÃåP§ÝÙܳsßÕdu§µþ'°I«A ¬PnáÖÚaÑVÖ;c˜1Ìáoƒ0*üf¥½¶GŸ‹¶£+¡€Sªàôa8ŇrxÜm4ŠÄŠº›ÐÊ&|–lfíèx¡ø†¿~¼ú©IwCf Ê$fnó3ÅD)£Ý”cèB›w} ¡ýš€YdAm)‰Ër±(:rÛX›-ÙW;‚qýû[åÐGù!H‡%+GÑYß“ñtÖå¼ÿ FáÚRZ(kb¡ÈØ4Û ‡¶•$.XcU±ÀžgC9FDz…Gšæh•ïxØ¿QY{{ÆJñMZp¿É¬¾”éùÜž«×x!ëd_ð†x°ÜcrÃŽŒÒœÚ¶4ìí3ùF]6Ç:œçŸÆüÕc­,£|Ê@à´âç+ówéQlLÔPs s¡`y#b?{| ¦³Ä ÿª÷ S¡` :ó³_Ï¢Š½„@Íûçä ‚‚³ØTì̵Åp2q‹öîæ=ÌŸÅ)]˜ ý[L³©¦Qõ… Ž“ÉDYAŒ¼¹‹ó4韩<}θÂA³Ó‰q8n ±ç%„5ºJÎR10.™Ò*)¹·zBšôú74ß3zMHЄƒQÚUo»ÒàM[&ÂÔÔhñÇ;ñlMÄö8}'i"¼YÃ7kÛ“àMß4géE2ÞŒ½·¨z¶ŽEÖq¸ös@Eà£TŒ«&Ç6rG½ï*ht³¡Ñ•c';<[2æÍLïº/ÉÚ."Þ ,êD†<¶aÝ ß˾n¦~f0³3ЄSaÆŽFéÅå¤z V1½ͬÝ.dWB+?¯ÿiFgY¶~íêÉmµm'÷Œæ¦Îsšá›]!ÙV¯m)Ó¹'³Qqì–ØÖj,ZDC÷3Œ°T—Ê+n„šœÝÒð,evïæ§³>cö6˜Nn'i Ô&í§'’ØbÏgpÚã±Ô€ƒ‰2ûÊlÞ²<‰uZZfTàÌŒ ƒj§–H]³\ˆ"t´+#HfŒN‡#8'ý[k*ÎF»s,9;L÷lPÙØ 0+nøÊ>nL9{9ÄUrÆ¥Ù8Rádr2õ/Ý¶ÄøRenë?ôU§WSjÀÓoçÍ ’~J–:!x _¨Ž<¼n!ž#GŠÝv1ã ø´<®Ë€¶µ67ƒ>LC¯²‡ã›þÄdÓc~hÌ©L–DÇk@š”Žy²!Ü{8#âVð5afO¡/1lŽˆ^pb#°&C‹Är.T®PA¾óìæTwkqÇÔÖUïV&R–µ Ú¸ô¹(M[©àÁbãwjDލëif Å–±+qút(D؉N>eV‡Î¬Ü“G£œœØA%J˜ö–¬Ú”|›XX¾W­Úà9 G~ð.q[Qð¨ë¨ê$3“z„Jx ¡Ééëíç²JBn.æòhÇ—,u™“í0Ò"uñÑç³u:°]¯ÅGâ¼Ò²( ̉ö´ŒÚhþŒFÇã2'”5Ï-: [ÔÄœ%ßxCÐõöš¶“šµñé(=ÑÌÛI@ÁÍ…Ûõô@=¾‡<30ùðÒÚ"k™ OI–^º=}ê!ª&–}>ñáéh<á¡!D] \ZY.[ ;–ËŠ0WºØå¶-å'/W`æÁäÅ·¹Eœ `– ¹D;ñ[wt3ž<~ópø÷o€¡C8(üÌçÁ` |J› Bê'ÇHW¬ÏqJ{Œi:s°ßÊø?£Ii€V&ã~ïêô²ôlýzœöa`Ö¡Ãî‹ßÞ³ö8Þßì}µL S¬Ë|#ð«ø]öúWC˜ài2Bà&È›pOr«ˆµŠZt‡6C ç¢Ýl“o>ïqú£†2º'øD°%’åEñ›ßÐIÂK™œÉCY×¢Arm锂ùø})D'{5—µ=ä™&G3 ÃÛúôÐ=‹¸Õ»BwЙ:ÒÔ£+£í‰`¾¿]œ!"0ŽÛùm(ÚŒd¢†¼N½tô¿ÿ»Zû? 8DþŠ>±wÞxx€¦w ]]Pø¸F×"í…v´ä—n%q„ÂÉaìq¥±Î¦TP^x\é‰Yº¡‚ÂýÑp!Xu|sE4îˆ&FcûF°‚±ÕlHÁ•Ä÷ºˆÈW121}@9u‹lÈ©«‘”¹öæ5µu~3‚fŒ\š®f,Û¤úpÏ"á\„- ™ö¯Ädpdzð«9MÌÀ (,Ï`¢ìDqöÀn}þÀ[!‘ÂEe ÁR ˆºë–¦\ÑNŸÓ¡/ÓqÖ£ Ó![‰²šé ÍC<”D§Ò;…{§·J0Jþs“ÐÁPÚmtÛ{¥—2d™®—ƒè~ ä1ÌÁ«B]bÄËŠ L>xªZò掀U±v¨v@8ÌÆT‘Žò±˜*j|ÎTÍ™ªïÂT9›wÎY=:gUj,k÷·rYñXß”GŸvÒ8ÀoE’òà„Á?BFMGJÑî:dâ²¹¶`)ÿNL\gÝÖ/ÎèÆ¯½Ó…ëC…?Ì6=»éõ--ÜaTŽ<‹¢#âeïJ_~–•ŠU“Yуö •²Ò#h}Ç”a¡ÒtpªÒ†BÈ!kJ ÔÕó ÑÝÊÞ_I9-]½^CôÎ'Z?äjÞJ@ðPóVfg"ûvÏÚ+ØÒ°‡æH`¶(ð$=Å@#$ž)©`þ+ ËN|ÜŒ© ÿUn"Ý"ÚX¶7ŠEE @œHã+¤É͸¥r؆Sø’À‘ÉåtЋ#-@[ŠåÖÀ³™1iÙç/k¨NK¶€ÜrR--»zÈJ1#¡WQÛÜPKp]顎 Æ_{±D®g½ 8õÇc`ÌŸ!¡B˜Õ^¼€_j)ðÔšà`ÊÉàMz¢Ytõèx“•ýï‰tÑš·ö—|åòÍÙWµ€Ééå ýÊöMÕ÷½/¢n?…•ª1"è/,QÑvh©Å8bŠ ÅŽÚL.-Ým'¾X{ÐQ $d 5ž ¯­õp˜³±”Òiž%§ÀŽ!¨—`SëŠ_G©5nZ1qú`Õ“‘íŒ@c²E¢CÿìÛñ§‹µÿSÿÒ³ZЯReeÄ ê]¬+‡· È%Ý†éæ…Õò¿Ð+ qOOŠ1P›:½Xzˆ/–þ¦€€‚f/iDèìÀÀ©‹ûÍÚh¼ájÅ|­Æ§6¢ 1qË£€Uü ÙãD®¶»<¨"¶+âàx¯Ûè®WÄ‘úãð˜lOé“l%bÆ}¸…†ßðãp»Ù®¤ê‡ü뀭Á﵃N£›c™½v„ï±Ýª þ} 8}$ko7¦5€E ðñ™ÓCÅf»Ñ:æoäßø}v3ë»{±¹ÿ~ýc£…®&«ãiöþT¢Ö¡pX¥]8¯^å[õï·aêjYÐ9¹Ù~¯>3úQþ=¯öÎngGWYiì­ìškû8Íõ@ó9:TPe&ÉÚºƒp%o°¸å¼“+vvf6(«©8'C9¯wgbܹ;¹)½Ë ’˜¨œ½"ŒJíÎ6 úš ·V·wÕdåÑÌn}´›è²}ì| `[òûœ l:Üm~<~ßÙùÔÝÔ¢ò†ÎŽñÞð òÙ@ZQ…¦,†>|å̾xmÍ>¾ÉoÈ‚~[öHÏóå±€EÿÈ[S¶:é7»õ ©õ ‘ø.»+]˜ÎÀü5𻚂”á8üÌïBÇY­¼Ùý×ufÏV`x.ºæKvÃèçv5Ãä RL‰8W8\ã`¯£Õú%#ÂÁïí°§[½cúû8ï$2Åêxì°ÓPÀ??}j¬­}‚ó©ÕØ^Ís„\Ý„Òt€³šm•}s³ÙÛjd‘ wEbÜQè¦Hsï@w¤E:+»–TP;â%ã­¢PX(Æ WZF­·€äFì2;Òˆö™°Tµp9QEIm΃úê¯õ—¬¼OâõïßÊêv|}ÃÊ[cÄkAóF84q›¢§À„d™m¡£éþC¯9þª±æ?4"Ù¼&¼wOmSŒÂâ8e)ä•:·#rr¿(/E‰R–ðÅ|AŒi¤®bXc¯Ž2ªeV1\¬YÄà-ðµ±·†£Îz›Y5ó{w æÅ^>‡ã3Žt—M´ÖW1ÓÆ^Þ÷ÞYx5•® HEØÑÒ8”´¿+ÇcQÒÈðóÐÓåqôÛww£ŸWÐD•‚›³F÷ÞÏ%’-Þ^'A,(Ž‚„…8[)á ? kMúÐ×¼pB¸ìò°ù¡Ÿ¶?ê`–ÛŽ“s©Ê±*ŒKåìœì |è ·äWŽŽ_ÆžËÙEfaŸª%?Ô` ÑYÆf¯ŸeÅò¸,üÊ9òi*¤ÂƒMFÒ²ÿ¥¾888X¦CfJþÊÎ6Ky¨®zB‡pGœØ`a¢•Z$\†`ýp–^àj¾×G5ÄÄ2faqÙØŒ™Tc)‡`bëï`YÄjd¿Z˨&)hä ÊJ¢4TäŸX[ÈQ0Àof$£]³Ë¡S>§5õ‹áÞ…’V0±ø>53¡x˜R&5Ÿã€ÂÜ€š.¬¹­g‘}ÔÈýc×!Å eÙÆ/¦ÖŽÆ.¥SÑ‚œA‘½µ2GªD·v@­©<‰Ñœ³E°’–ˆÉZÍr€9]Ó¦u#ì~¢é½ôµ’× O(îvú2J¶@Žâ9×Ë80d¡¼p¥N£1Þ,–8ƒEqRÜ›²a–¼mÌåKŸ¦É%E—Éé_‚•¬8;a¨„´ËÔI‘©Ã!6¹ãÖˆØ ¬p&ó3‹í^°!RÑ9“±ªf’c¤Õb»HFA„û€wärÜ#ƒs©µntP‘®¦2‰Ñî\bW˜ä Ðð^•¹Í(ŒÀ1‡ŽñÌÞw­™eµaˆpëäÜPòV!,”Aœ9Ù‹k"ÜýÙ ûÐW›²}Ë¡? Pá/.6é/®sßÁ_Sw2µyd#Œ'‡–Š˜ƒ•Šô<*ŠžGÓvÃQ‘Ýp·îŠï=áÜÝp4Ûn F ŠÓ›Íºîé'çö«Ÿü‹n8ÊŸaÏ=âž5ÐÐ-Û€¦?gسGö,/Ž‘Vݨ½ëßR2»8N.Û{Ø:a´­¸F‹O¶roï'7Ô†[#E•R³÷“ Z(] Ñd»ŸôÐ*ùëÐiD†4’VzÁÄ%±Bœ(¼óxY¼ßéîˆ7oÞä·¶KH0ñƒõÒÒEH‰…{‰ÇÕvW¶–5ÚLºk¶@<"2¯ˆ'ýs>š$ úÉÏd>U¬'òò—;ß9Ò³ghËÏŽPˆýë3mAÈ„ðrشɪ)èî\û鎂ƒZåC9.³‰7©uÔ®ª¯¤k‡â¢zúÝÞè"¡°¿áDûvv%ªЇòoKh1x6çoßÂöF7‚õƒ&¦lä㱩D °{Ðæ9pØýã6ð9LÄ%Ún¦lî@y:#™ÃkL?wC¢çûö½»ÝÆ•wøÒ{8mÂ$+"r÷!P–Ї¤ÀšÔs@QÕ¬š—À¦ôáˆê¹#âz³ˆ/P<¢£¬ù0œA…DÀàÓüa~ ™õŒëˆÈ¹=]äÌrL4qÊ“4›ž³¨=Æ”D^ŠºVb"1^ÁŪ| °!¥é#©qsÄ»2Þ¾?][œ‹ æ™Ë²Y×°îPé{K²Ÿš×ÄÉä kQmÖ¯#]gsÏLÉK8á'†ùésøñÿ¯¿\Œ¾>pøBñÿÝüïoÞ¼Çÿ~’gÿÿ—~Üøÿ±û§îÿ7o^¼ô÷ÿ«7µùþŠG± žuÑÆ~{µ‹È8λßwø¶£Cƒ¯î´ö²UåÙù¿x|úúÏŸþà L©þ¢ö¢(¬ü†8ýMãÓ‡xfŪ4žø}æ¨îVãøç”ðæ´-TD6å‘¢9éÅhøur)Ű.y'5ÊÏé÷~™½P~ƒË—¹É@–¿±¯RÊyÄ—,Dlçê˜UãÒR“‘'½“´~NùiÔ±…’ñuLÎÊÆòTEμGÒ%¾×ÅUÒŒµ÷!6¡Ýu*V8€ \IÅŠ¥©ƒŒr'ØÊÍÀ 9%ηŠâü}Â7?zÜæØlÅÄíT° 7³jÅmYEH.·x%+ ³FC˜Íe È d­B‘Ø16j í-MÎz=ôÏÕÉ¥ 1‹`²áˆƒ¸OÂfÙexâ7Ž"ØÑbZý\ùL‚„RŠÅÀü\ÝÚ/ÿë]ú¯wWé Ô®|^ü«oN5<úîA“9&iƒ‚’ši«áÉÀÌ…ãE[€_s£üg ^µ,™T»3£…Ø· Þ#/í›ëkt¥=ÇÁÙn•"TÐÔ|ÄŽ­¹ðhçeÎi˜¢w…ì—áqC]<%ylÊGN6Ï-×±É9 }¸×r 7hý.žÊï-–…|Ú¶Öd‰ˆyƒlÖ÷é'ŸxÙ‡k†÷Ö]ÓÁ“©< rÐõŠŒÐ9»yÉcèÜÆòë0Q·e-ŽÔÙˆÈq]ñ~†Í5KÉ.êC•$u:Ûô‡EäÊülÓ²}ªË»3¯p©¬œÐÙý~pºÚtµöµ?¥/ßS¡çïrlª4èiò4çÎ>ðûÐ*§C‡W|çn¡ï.BtåIïê˃_ÿï"ÿ«ÕßÌïÿOòÌå¿ôcËÿg÷OÛÿõWo^¼ñöÿ«·õ—óýÿïv?ÿçzcû£ðÜe­ÝMT¡’¦‚÷ýf{õukÝÆà!•=,*é{ùóg¢œKúbÒ¸Øå‚± ‘(çŽBˆ†($‘oÛè·#Å9”Ç=¥„%î‰d„S²3r*ÇYD‡´ÁTš@ “ãYBT¥„η6vÍ¥nÅò;Ñë__öHß`µü7¼xœÀž>Ý–Õ=ŠUYèfÕÂzÒ”+p¦D(Á÷g¾UVÄ7úžãÖòx9¤_ƒ£³‘ŒSå#‘€!q⹺bÁß×£ô ÷þ­Î·w*}•Lê+[Dwˆh?EZysÔÍ?Aë\KÛŸ¨ÀZ&ᕦ]•Œ&7#ŒÐÛû ˜Bf2ª 'Qj/Öh‰'é•õš^u\Í%9< ¿†Ã`ìÞ1O®V^Ø‚Ìáƒò£“þðô¯êx2º9`¢ä z?c \$Xü¾ŽE«ùÛøöêdØO1ùÓío<:k‚=Š~513YÂ$_XŠ:V±R­ˆLºÁßÐ6CÂ)iÊ© |–¾ û_Xb’¤Ð‡Å+=õ²÷%16£ˆÎ42ÓÔà,W²+÷áˆ,A ?FZÈÅÇN¾B“¡c4É=FÂ(§™ æµzÈC±½s¬St»ÅÚ±‰´[°xS«;í¦½šrí,2{ £ NX`[(úmìV|?Ê^剌V¶/0Ž–…1ˆ-K…Æ©8g;sœYÒm§¡ö}†Jg›=ÔŒ8lþ˜¹ž;n&º¼à{÷å †qækÍíõ6bò¼÷V8ל%žW’NIÚ1¾¥'ë$˜9­È°Ù6 i’óóô4EjPlN˜;q†ÅÇâ.9‚›#¤mplöÓ~ÏH…ù‘–yöDi|sRÆ£çbÔ»Z¢Æ}äpª£nÅqW¢\lvúò]lÅ¢B°ýK°0U  þ‰Ä’d¬¢mâú{â°(â²zŠ@:ª»,\>tI€‡× —áö¨“ÜQœKLõøu”N&0MNSá´sCÎg¦ºÆõÃÙpýðθ~¸Äõï‚ëDº%Xé÷LžÒGÒ~Å‚Fîxp}­ˆ£õŽÔGhA!­|áÒÂè "—Ì Í[$âÞáöʱÕ}äbÙ]ßÞ­ˆ½ÆÆºÒòÄ5xî~’.ïÜ•·ðÞ–×Ûôó0 «qÝÌÁÖ;À§VܸZÙq·rzŒèñ"ý©ìâ9Q%¾fÕH’Ö‡Ô’–2–¦ùþ åµQI®ÆU’«wRIr™n"³•p¶Øk½Û¬h_Vé›ô«$È—¿¤D‹è(¤sÄY/ǼõÈ·/^¥;{•UªBÿ¹?9fµÓ¤{lIl£«löhéº_ºWú¥_˜H,O ÍÞªÊ5ßø5‘ñÀ™euõ{¤Âa^…šž¸­Éäš2l›_“œ/xÛ``ëYE ÑE}Ç ÛyéÏ›ôô/•ñ3=×Ã1埰ƒÇ!ÎlËáãâ" Í' ° ] ð5‘ë29Ò•èüÆ/‘¢—]´‘£³çˆt2SAôS]~“K}iTR/) c+7`¡d;˜Ì‰MòàŽt=LYEŒ>µ{èÎ0{O¸`§‘½î7¶ÅZó øvP¼½à€[ï#h¼uàmÿpX%îY-l)§—Ãx/‡Ù½Ú½š^㨅+Iǧ@ø`’¢ØLJ†2DxFÀ'Û0"ƒÞÙYªdb:‹YCîÈŠ=¸×;‡û.ë«›+¤P#‰âîj¼hïYPÜ䦯Ú)m/´Ë†© ÒÆÊ¶×u¿wÊš‚”üÏMBÙ¶t²¦èÉ·Þ)pƒýÞzœRR LfŽþ¦—IÿZ…Xç`ßJÔFv”ªŠy_eñŠ…à¸r[‡zý…!a¡7ç,»AØ^o§c5&xóˆ¡#,¶,/JƉ:Ìó™6ñÞdÉê;#ŠS1î7À±Àú¶Hä#!ÁÉ"ªbñª´]Ò…HÁ|®qMldGë gkþ&2²ú)¡çƒZ ®‚lun¾ ƒ]ùÀS-2ä°eëål0ÒFÄ^dì"(·d&X6cˆNÓŒ ÙÒšŠµ¾A'¸'áÇ¢°(h|°ÞÍ÷ÜßmÏÁÕ1+*›˜ï¹ï±ç“B çäßg³~@Îy+¶K°£óàq÷ñAÞFVp‚´sbÐø¹7ûü€Í­ø·Þ³wôÎ÷ìãоè?z2%jD Éì#ßÑÀ³ÿ¡çæñéÃZßÁþÿíëúÜþ÷Iž¹ýÿ/ý8öÿ²û§íÿÚ«7õš¿ÿáÏùþЇwû”ø뜶úÿ@:¯ÏÚÆ\í?óó7QûGÂ÷åëý&½þôXƒ÷ÕëÜO¯Oº³¥Ò?`ü±f;Wæÿ"Ê|Gµ=eZsmþ/ªÍW׉B‹Óãdéñ%šëØ&{ö©–©]ÏÈX’}ÌÎuïsÝûéÞgê²O?™öÝ °D6zJ…üÁO«ÏQ«æê»´wz®ðZüX*î™g+5Èßk¶¤4>˜+ÅÝ”ÆÖbzê {Ÿ@a<“vîTšÖ™å9nú©Ú¹éz߃˜Þ÷AG3WÞú@™+o (oÍ1ð#*oàñõ¿çãoÇ Ü?gÉÙCé ékµ·µ7oëu8Ã^ÀŸsýï=sýï/ý¸úßÇØýÓöÿë—o^¾õ÷?˜ïÿ§xx·ùß:{Ç(ij¯­¯•HvsÜ=Ü]—9wäßÀ\´;›{¨ Ž0 ±G»Œ;.à;­õ?÷É|¥xC+AéÀ1#B§s ã‡áãml¯h+PoïfA¿WQÊ…“9„¦× û£wÍÔE†¦ÔÝ„V6á³ü£`3kGÇûÐoó=L`ýxõS“nc̺ÍÕÛž¿­z;šCX*lÚ´ôž4{6ÍÌ['[š­¶©¢9CdôÏ–«ýÁ˜?]ÿžÓÕý”ï+%~ÈÕa‰áËÎõë{R]¿v(ÿ`2PÐ9HŒrÓgª¡(XiÊ(˜`•äS L»¬¯ ÚD½H¯pkHu»Ö އý•Q­g4ïØˆ¯¦Æ%3®Q¾ops­^ãÅl¬ãEÁ›Ú9TÄeÅFpÉ-9vÒýqÞAØ´°{ÏäuéëŒ%jxœ“ ŽµÞ„’Ý ÓºMœ¯ QMæ±1QCÍ÷åQ4‡IbìñU$˜Î3ü«Þ7Œö-è´|~=G0)ö5ozœ¢ÂJ{mö£‚þ‘›Š%“^Úסè4‰¢=¤;ró4p &ÃÜóGÉó¢â'™ÖÓá Zœ§IÿL¥‚qƪ˜Í‡¦JŒÏqúž—£Öè*9KñªÏ¸dÒû©Œ‘Þê ©Eîõoh¾gôš  G ¢´«ŒXv¥‹¶"‚©©ÑâwâÙš}ìpúN^x³†oÖ†7'Á›&¾iÎÒ‹d0¼{oQòl‹¬ãqmb €ŠÀG ‡WMþCÔõ‡Ží*ht³¡Ñ•c'Û[*åÍÌiº/É‚&"N ¬dD†<–± Ñ;¥—“ê%€©Š95γ² ºY u¼þÍfgê<ÂtgÆÉ<©ϽPÌ'ÞÍOgÏÃ,`0ÜpŒù¸9Ó~z"iö|†ibŠ7€ŽS®5™hQ6ƒ—NÆç:ü¹ê`b“¡š¤ÃŠÐI(‘|ÄépçÆ¤kM%¾Óf7"g‡ ø ªâi ;!¦ã×Â%WY)‹Á<½XšÍ` N/"“±ÑõCŒ/U.°_u %ý<ý†€qb*ᜉý”ÌBð6Jxÿ@LC¯œÊ¯lò«Œ1cf¹£K¢ã5 ó6y²!Ü{8#:Üñ5afO¡/ñ7Žˆ^pÀ!°&C‹ÄrŠ*®PA6íìæÔd•6Ì$µuÕ»•©ídmAƒ6+q´™BÓV*x°Øxã‘£jÅzš™B­,q[Qút(D؉Ná8eV‡Î¬Ü“G£œœØA%J˜ö–¬Ú”‘8>¾†œ­Úà9 G~ð.q[Qð¨k™ê$3·e„Jx ¡ÉékÞç²J iîZæ®hÇwu÷‘í0Ò"uñÑç³u:°¥¤Åvá¼Ò²( Ì„W×´ŒÊRþŒvÇã2§:D³)üc¾e¬¥æ ÓÁû£2nºpÔð—K1šÎQ£HÕHv’î \J[Íö1ÊâÊX4‘¿Ök˜‚îŠlå¾^¦H<í›$Q² )áÂܱD䚥í,4«!üÓOÉ–bwÂq¼N]ÕɼŽÍtÝ‹ÖÔ¼ª¹iUÍaù@ûXµ®vé å²Ò8%§*|ó.ÑÈš¿øïÁÀUª³/½Q ·œðúîkbåa ¥'šy;I(¸¹p»žÞ¨À÷b:º!%:CÖ2Až’Œt{úÔCTM,‹ç®NMCCˆ:HZJ+ËekaÇrYæªQ»Ü¶¥¸!£ñå ÌÜ#˜¼ø6·ˆ³byŲ!—¨¾¿uG7ãÉsà7Ÿw€ÿ:„ƒa€ÂÏ| ÆÀ÷ pÆO¿K0É´-ÀësD¸cšÎ%ç·2þÏhR qĸ߻:½,=[¿§}˜uèð°ëâ·÷¬Ž÷7{_-Èër†ßÈÇ*~—½þÕ“'#^Ÿsˆ{’[E¨½PÔ “8 ´úPÀ8/åèf›|›ÈäÈ0ý‹QCÝ|"Ø‚2Éò¢´Êoè$á¥LÎ䊡hè Ñ ¹¶tJÁ||Ⱦ¢“½šËÚ$ïL“£a‰MT0—ÁCc¢35ßýY—}ïÝMcÔÜè:'½ï{­µ×^W[Í&A)¡±^‘*BF}¤/(ÖÝ#å:¹i`5ÊÖ6_R[g×SL<®Å¸t5cQ Õ‡{ɲl‰€%¶ ƒ;^„7ØÎibAAyƒd'гvë ðÞ‰.*c¹,Å–î*‚­)sÛÓ¡/ÓaÖ£ Ó![ ²šé äJH‚SœBƒÓ[% ˜F]Gt0”(£{§ô\æ4*Óõrħ”<†9xUH «„x^‘!`gOUKÞÁܰ*&ÑùˆRz\‡Å˜*Òƒ1UÔø’©Z2Uß„©rwÉY=8gUª¯’³ìM¹¬x¬%Àѧԥû­HRž:aðCšQÓÁô£»N3qÙ\[j+&&®Ý°õ‹ :Fk_aÎUîëÇa¶ñðz0²´p½ yEGÀoÙ•¾Þÿ<,£%ª&›{í6*f¥G<ÓúŽ9à ƒùË©J !16@Ö” ¨«çÒ 2º•ΟQ8-]½^] ÎfZ?äjÞJ@ðPóVfg&ûvÏÚK@iÀ!Űi› ˜­ <‹O¯G`½¡­˜T0ÿ‰¦æ®Ôai±œâ&&â‹D"Ý"ªà-SÅŽ¢"&¡Üóp"%—H!¢Ïšq‹å° §ð9‚#“Ë)þUÈE„¾ëЖb¹õâÙ̘4Wó·5­N>¶€D9)È–†Pd¥˜‘л¨MT¨%¸® PG㯭Wéµ28‡S?I€1_AB…kV[_‡?j+ðÔšá`ÊçÑø-`pE-²èê‡Qñ&+û¿é¢=ß;®20øÊåëÙWµÑéÅ8þ eû¦êÛÁ5ŒAwÃJÕô‰– h;mØÄ8bŠ ÅŽØÌ.,Ým;¼Y8è("2Jf“+k?&Àà –R:Íat ì.uZWü‚0J­qÓŠ‰Ó«žŒl'JÈt‡ýáMÿ¿ñÓÚÿÊâŸzV«úU¬Œr˜A@½‹uåpC÷àYÕm˜nÖ­–ÿ‰ÎL{zR Ú2h½ú2׫¿IË9AƒK'c:û`aàÔE|³Ñ®Vlï¶WÿØÂCT&¢“ÅGæ^`܇Ð,¤E:î‹‚;…€$øè€ ~W´LHƒEb­µ¸ ñ¸(Î#c•CÆ_+"Ëâ!ж[Gœò¤"D·ß9ª5*âD}èõÉP“¾É6æÌ½]4€†zûM´;šÞã?]þ³wºíúQŽIóÎ ¾Çv?¨*ø¹}"kc’9 P’n¿KöäPñM³Ußëó/ò3þžÝLã°SïŽß6>`¤“fk»ÝwLØñTDíBáp4‡p4^"µÊ·ó?nÁÀª«mAÚfë­ú ¬èù9{^­ƒÃö®²Uï4ú0«æÎ1N³Ñ01ßsV‡ ªTy$Wk8àVò‹ç ˜ü‡³»0³AIMÁ‘衜7,gÆ<*wÖs†%gNÒ£röV1ŒµÚû$ÿk* ÛÞ?T?ñG3»ö8n¢ÿÆ~ßù"À¶äï9xm:ÉÊÇ$XPoñf®ìq“«kVëó^šo¡Ñ"·(LH¯‘dªýN1©B8l'¼wÏiSŒ–Ø)Ká—ÔIè’¾D9îq“@D¬Œ€%æâQuïzu’Qå$³ŠahÍž¥Þ‹zk˜ë¬·™U3wb^tõö9ÌŸ)p¢ ¸£µ¿Š¯6†óöràå…wSy™Ú‘lTˆ-—C™ûïb«Ÿˆ5!Í]{¾VC‹þŽ‘Í1p­U)Ô/+Ç€Â0—HÌx{¥¢qì<,(àÖV ‡ù5kÒ¿¼æÄÉ€f—oÍR´ÿÁÍÿ•Ö8jM…¡¨¬ãµ—ž3È’_•G[D#ÏBC5òœÛ‡g)X <‰àøÉµ7Áz<1ËUºhl&çubÈýÓÓYFø·$¥I4¿˜Ú>»”7 rÒ0ö¾Ê©‚ÝZ—ZS©ÁÒ«!,(Ñ•HÈ•[-DG¬îióº²z æ,ó23J¦%}Ðp§ó7Ržïr ϸ^øP…òb`:†˜¬P>Ë ^G„¡H±azȆëñp™Ëœ>3ÜK.¢Ó?«Xv:ÅXñ J¢ò¦ÃbØDšÃ÷"d¯²™ìÉ,nyÕ‚‚@Eç”ŪšÙMWqØ'ºà kÙŽD{äÕ¬î5ŒR)ÐÕ\f/Ø+ ƒ Ö" !Àå!‹ÍŒ1‡Œñ¼ÞYóÊj9À™!ÞäÜ3òö ](ƒ.8s²·&ÔDõ³ö@_PÊö]…> 1ÂßZlÒßZçÖ‚æ¢1µybƒ‹'X–ð‰ØK°Á:ÂpžΓy¸pRîÖ]Q\°&Œ¢LØ;Y ¨Q‚^ÅùÍf]Úô“s‡ÕOþu5=ÊgOgÍèÕ-Û MÀÙ“8Ë›C'c U7vlã&&+ŠO“Ù…ñâcC[Å‹¦WhÀɆ@îüÓ5µáÖˆQʤ´æ£h†Gç´ÀE42þ2q‘}¤Ñ]jâ’X!LÆJ‹*BX9 ov)‰kM—丯îDu?JË*Jªy;X¬‰ÞÈ3Õ›°¹žl2¹2nmíw3/;Ÿ)äáÊ;ñß/¢ÁåçûÎþ{§üßµeü÷Çy–ñßéÇŠÿþ@Ø?ÿ76k¯^zøÿâÕÿçal÷â¿¿ÃSµ$Ž÷8×÷ÞỺá(g÷vϽ#XšãdC òMØ9 "nèwÃÀ³‡j ±‘1‚ÏX$·€1è #Ç)'Iމgʶ>_MãK8†G·:îò©ÔÛ›˜ŠV´£ ‚é ºƒsŒ2`„T#¼—I¯1}sSc&’$•‹GXMg×S =1ø»NLôAÄé”ZOk´]³øR†H6½j‡ñªúâ°Æ”"áÉPØ-Èà”È»MNÿ\KfÓëӆ׌.¡÷!/Ây4†ýi''º>Eý4ÅÕôö Κà€Üºff&UŒ^‹¥¨cÀr5Ò >A))ú:^rÆ.è‚-ãñçÉè3‡‹ÇÒ‘}}*°ÀÅîçZzŠ!Xid¦©±òŠ Gò–pŽHˆ v”äÇD„¤Ò‰ŽZ  +1>ȺQNÅÈ iÊ,æ€=HÉéÔ ¼K×}òZšFg°@ãS ýâ´ £ÑïlÈs|xHTç}»Ì˜Ý×ýfBO`\Õüì|t@kñ8Ë¿ìµGžPX ?E=?f[[Öžæ…»¶P[ µêÐýÌ‚G„Åj¡‘Òñ!PX•¦ØÕŒñrwÌL-™Žì™_¯…†M˜õNs¿Ñ¢áÈ£f,Ênó[ôØŠ™ª"•^2QÁ<.˜ÓŠŒßb¯2-tvŸÆˆ½Å&¥‚Ûx,í.#{:1Vë#èt„!;\ WÆ{¥äúSOŠóéà²Jû€áTG¹! `RKš5¹îb;ìz„c¸®¡ˆÎbbO,;ñ¬Ç§S2G Eýuy†Öî9MÈ“î¦Øôh…÷ŽJ'^†9>SCžNü˜Ý*×§Ñs¨äpy=± ÎR Ê"ÃSQk@…b—ö'@ÅG1‡£#ŽO{dì¨†ŽžÍÈÙປ‚ {1/úZ~øµ,`ê函¡¹Ž'ã5œT|õ\„ñ`MÁ\ethbòNÆÝ_¦ñlep1§kÒ Mu ½…à¯wgøëU¹þÝàï ײÃ.Ì]I )‰ ±5˜ôü nSåAÛk°pè­Õ~ûǦÅ{ ³3ŸãfT‘š)ZĦŸ¸7ø¤‹Â}y+v®Åötò8RçbW Š 7±h€Q…«ì%0àH5óжc˜ÿt¥Ç òÕ`êàÊg÷ÏÇÌf2Äê¥W “5V˜pÈtœkSÏR_™ÃÛÖ7Êò|¹ÌèÜL+â¤ÑV á ·Ò‰]¹´Ö.~2¼®.ÁÞþVßê>0£Æþ!ìIýMC)ÃCߊLòÕì‘ö{¸ïâÿÊP´¸¯ñÂoÝFØÒŠë8–íX–ÓcÀ¿+Ð_s¯NwúìÅÒ=-êšF^iäŸÖi¾%³vô‚&¯¯ïÙQMdxª‰»ºªq™£HFéã, WÃ,o6‡ Œ.šœ4…eƒhD#·¦$VŽW`dà‹Óe÷°lÙË&Ï=)œÖ_%ÑBKŠõŒÒ~i`±<g£~2³Ÿ—~MäkÐ. ««W ½¼ ~ kµ‚Žw [“ôŒ~°J'ïûÄJ:ƒ·¯&´5óÿ¾Žáð‘ÑæíDcNl\V:&áwºáoD Ë´‘%b6ðG$˜e£ÅýÂJ-'`¥0ÖçE$c®\Mbäÿr'Nß`/¬øÛÀæîv=@ð_Û„n…ÌhÔxß`¬ ‚‚F7œèA©õesÀ‰PPɤ4Óèj48e4”-‹¿®#Š~ªƒW1¥‰n§Àèçh/DA¾0¹ Z ]D£+ò†ƒ¯è\f˜ÅK5C1ˆÖXÄ`An›>•5¡t-eC¯IC¦@[Ì”Ú"®œÚbüÉ235Ë—ccŠn>½<‹7m«JÞKϨNŰ͟3fZŠU>¥Ô¯E\V„\J–ÒÕnþŒŒq3ðV0§elQêd•å×ãMÔ|iÖSBÂ{gÈØ“:·ö%å¢ä¯›úô”W`U[¶^^ÅmÌåi>Ͱ­ -P–ÚÏ·@~hÚGÏ/lž²”%¦¾ òS] ¡‚ž ëX 5…‘K2ô3¡_ËÄÝÈЯC§ 2dc‰‹žKF껤`ïñš´Û}lÂö£âm7qÕrÂ?„+©UK&ì!W1‡D —Ff¸R-yµ%¥[²pß#¥[ž©_Jç S Dù«'–.0ÚªØö|yxï–å3ïñü¦³½z¿^wðÿyõòùÒþÿQž¥ÿÏ/ý8þ?‚ýóð¿öñÅÃÿ—Ï_,ñÿ1Æö”-ÛãÖö~àƒ›ƒ*oÛ.AÒcûå0cÁÇŽ¸ ÿÕ÷æ86A'þŠhãŸâNFµÝÉHÛbýVx¹Ü†~J'£@lkË®(`¬Å§úMÛµ$K€€[Äï(dÈ0o{ÍsMª³EËù¡|Ž³Ò¶(qÙ¶)lÆœç¹$„‹ìÒ}D›hÚɆùÇdü`]QJ”ûo»¬’m3¥ÍÖ¤¹N'z„¾Û‰ÞòUew…™^VŽW^cÄãÅ1ŠØ"2ðL¦Ñðÿ³‹ïañ=Ëç"UܘBä{H9^# <ªÑ_ìà”TD\ªl³K nš7í%½ü %9&‰Ÿ×knÖ;„ùÎÞb¯­µO·k-Ý“n?ßüÿÈrNpLü-ׄ*7ÃFóü Àý›ÅFÿÆ »&×+ÐDÖ«rð;&Õ›ô]BÓPòKÓ'“OÚäY&f=FW£=´ —àM´íä]ã¨ý¦j/Ç›¯[Ž7UÙJpAÚÏË`(m–,…*B®Z^(㣆^ ²:¹bÈìX4åmoÊÊHò.ù!ŒIù¶rîá^‚Áê•(pÁ¤Qœ›Ù6`Oõ¦²wªdr¨»e…ŠÅ¿èõ‘ŸŠRp†c΢ Ä…ñÕ–v] $×lËÆÚ‹¬öîÝ;Ã:pÜíÖ; N2•}`Õ›­­}8ê0ˆQEi‘Zà¼>VïŠ?ó`錞s4wê¥yICvÀqîuêûJ,°wæ×9½NM²WßnmT˜|u*Òrô̤UïÙ&úA’w¸V¦dZCódßÀP¦‘ÓÊ96À"×ØÑ °ÜEŒùËñaJýB¢d‚?u—SŠz.ÌJ?2“J0I´|urµDܬa®¯x’v©Ée)ÅŽH3Ð]q o>&2‚Jç*o¸aü÷i@ñ žaÐî÷aeSZ@?OÇîLéŠé,û+&úó+2­´O^T8lØ‘§QQ°EöüæˆD -ÛwlwÙq×͸ dß°-_=¿ïØîây¡ü.<èòžšœ.•W.(<⼸ûy®" •è˜|÷%G>è¼Má‰GK‡Èߩ㰶n¢{ò[<XŠšÇKßzZS¢ŒŠfþ$£ˆ,˜ÉHóÃßǤ~ s×1/Ýû|-¼ÅÛNÛØšcœaƒˆù¼jÁN ʬ~jxáãÏ^™wœ0àŒt)\Í‘ˆò²µÒ.A"/¬êiï¾zjí¤"@Û«0´ÊŒTˆ¸æÄÎÚ—íôžˆBô€lÎ,VWß}·ùÅ@.uüq1Ü‹þþö@¤Üý|&šÜÚÅ•Rœit_MéŠê‹TÝSCR`'m‹YÁðáWKÛfèþ-¨ÿ¿ùÖúÿMøu©ÿ{”g©ÿÿ¥Ÿ€þÿž±®þÿùÆæ‹”þÿÕÒþçQuVÑÿwÃúÿÀIžûØêÿ® s±hKµÿÂÏ/ªöÿ‘Ôúóc‘~­V¿ûuZ}Ràu•B¿ËàcÍv©Êÿfª|Gy=gZK]þÏ­ËW\|¡= iñ»YZ|I–ö¥†ÝìRÃþ4ì?®~½›V(|cýz÷Ô¯çèùrp«:àA®¬TÌÑóå*‹÷ñ=)‘^Ñ…g{‡]x×~Miw©)KMé÷­¶š«)í¦Œ /ù3Dë¹j«ùêÎnHÝy¯£ùÅ6©³,¢³4d¼Îò[Ë̦Ç×ÿž%7ýnIãa4¼/=P!ýoíEmýÅ‹ÚfmC¬×^Õ^-ý?çYêéÇÕÿ>öÏÃÿ—Ï7Ö7<üß|µ¹Ôÿ>ÊÃØžÊÿØ~ÓéöQÖÚiì”HÜ$³+k p«ý®£õÀÎ(ôxü܃öÿ>&/ð-|³U´!JØ3™—+* zѰÞVk§ÓçË«þŠrONí\tJ˜‡ÒëÕ›{PY˜àÑ;hå]ÑfÚ²8&ž?†›oa`þöÇ&Ü÷ ¶!YÐe¦ÍÏO« &ÑÄH –ÊñGã±Áðl`S(¦`[I/v»—XoÃx–xÛÇŒo«©ß*ñÚá—ìuê•xqÙ¿Ñ‘ºýžüÀ”bž#¿, ôEyô3a1ÉæóGáP¸’Üæ‚UpY¬*m G‡ˆ/}¤¹VÓR†!$D³ bÜm2‹.¥µ¯hG¬“™T)]èÍl:X»ÂKh¢|¦T‡PAL“h›8iI9S* öÌÄoÔ7Ñ)Ôð8‰)&AM´¾ˆ’r™ÓÊfœ¯ÌI€ƒ މjŽu~,bÄ/8 k|¹LÃÈ ÿrpƒé°>Ô¯çQE'¢¥flÀ99  ÖÇÙl*6tÕÒN:WÑš<`€ c8Óš»&Ì]9ÌWŠúl0‰f2ý(¦ZCi8‹£ÑP¥õrÆ•T1;M¹†ÃjþŽ—o µçÑ0F±Ã’Ü”O‘Îlëíž rJŠ£þL©ß›p|À J‡Ê0æPÆhÂSS£Å~+´SéÄhŸb‹‡à;ٙ\J½iâ›æxŸGãÉuâ½EåÕJ‹4G¾C;‘·CenƒDlÁΧñùÅlí6m sï:g¥8u²•6÷ñú0«Ÿ¹ó¼ãŸ'óÝØ}õâ3 wó˜Aþ0Ë•Yn¸ pÄÁx’‰x¾`W˜5ˆeÈ%e§”‰\e3x>謉||˜v“¶Rm”sÒÒ$éÀ‘Èãút2ò<ÝZS #Ô¢ñJäì0—¨&>,`!ä‚iý>ÜQ•ÍRB‰'9 ¦íÆÒl°©pÚ&™¿’n"¹P9’pJ›,×J  wƒ ãÄ}ÀÑ3ŠÉˆ"½<†[Ñy!a²È'aã‰Û.æV¢Ÿ—p_ÆC¬ðk<‚ièSéÖMÞª ó‚Ò—ªh{ È4î B6„h„3¢3_SæÒBub#ä:"xÁ¡Š‹5›X””SÒq…ŠÌBi’ÌžÚºÜÊl ²¶ZA6[a°™Cº¶*x~Øp㊵B=-Ll¶ªÜVÔô„Hw¢ÓÑæÌÊQF™úxa±§êž:ål»• ÅíT­Ú”U–ˆ_†©Vzöš9ºóšõªÜVpÍÔÍIu’™¼7@:¼¥¡É雨e•]×Üs Ÿ°È÷uïí0$#Éñaêq6\Ú˜Ö®á¼â²(a¢ÖÞ.ã2ª\ù;Ú#ô“2çsë¡å~Ø‚ŸDk©90ŸŠïNÊ”/>5j•Vr¼N"wE¿¦Ê^ôÄÐy(àB¸×lõq¡,ŽŒÅù{½£Ž³Æ#EµoqDZÈz¤”Àe'u¿+Ž6ßz­†ð/Lô'[ ÝÇ’p U'óB–˜éº—œ¹‰£ â+ßÍ[}ÕºÚØ7H)q †)0Uác™±DkE¼•ÑPîŠe> ’{K§ÌÇ_ÙçB´³wóµ6Ýjr´0TÙÐmÈ,ì]W1HßÐÔƒ;£Ím`¾OÎ ÌHÂæ7~Š6#™¨!o€S/üß×jÿ«…À!òOô­ÌºÉejiWÐÕÕådktW*îí¤ê—Þ‹fâsu¬Ö+’Ãèp¥D'³E*(oA®äÄl][@áRi¸¬š\_;¡‰ÑØnh­`l5›¥¶J8yUD:©J’¾ HuTåäýÕH ZÛ|Im]O¡#B¥û‹á¨>\¾HŽ` Hüú+±Üñ"¼ÁvN 0 Ê3„ ;Qœ=°[_€?ðvHÄpQËe)¶ˆ°tWlM¹¢eGÓ¡oØaÖ£ Ó![ ²šé äŠM‚SœBƒÓ[%˜F]Gt0”ëíú~§ô\f¹*Óõrħ”†9xUH S‰x^‘qegOUKÂܰ*&Ñùˆ\‡Å˜*R§=SE/™ª%SõM˜*y—œÕƒsV¥ú*ùàޔˊǺQ}ÚI=¶ßŠ$å©?¤5íü¯Ýuš‰ËæÚR[ù31q톭[\ÐßZ»##Ô§uÓ0Ûxx=Y¸^P¸¼ˆö#àíJ_ï–A…’_“ ̽ö³&$ž¹š´ìaMÍüåT¥ … kJ ÔÕsÐÝJçÏ( œ–ްUÔÅàl¦•F®:®Õqeæpf²o÷¬½”R ›¶w€Ù  À³øôz4ÖÚŠI/óŸh:aîJ‘–Ë)nb"¾H$Ò-¢úÝ2Qì(jg`%€0À‰”\"…ˆ>kÆ-–Ã6œÂçŽL.§UÂ< ºÄC[ŠåÖ‹g3cÒ@ÍßÖ´:AרʉrR-ÈJ1#¡wQ›‡PKp] â Æ_[¯Ò…kep§~’c¾‚„ ׬¶¾nÔÙWxjÍp 0åóh|ŠÖ'¸¢Y”@ô‰¬½_ïÎk‹@á~—¬¾¡â›f«¾×ç_ägü=»™Æa§"Þ¿m|¨ï¡sîv»ï­ÌÒ©.ˆ,R<Î!—H­æìa vV]mzî6[oÕW`E?ÌÝÊÖÁaû@WÙªw}˜Usç§Ùèµëæ{ÎêPA•ùŽäj Ç€¿ä Î0ù)gwafƒ’šŠ3p’0”ózw&Æ»“›Ó»œ ‰ÊÙ; Ôj¯©`k{ÿPý@6Íìع‰nû}ç‹lÛ’¿g·buxØüÐÛ>øxôNW®7tö÷†O+Ÿ½H[ªÐœÍÇ‚/œyÂ/­¹Â×Íü†¬µ€Â¯*Âé?rFj/ ý-oOÙæ¤Ýí7Ú7¸¤Ö/Dà·ì®ta:ó÷ÀïjP¦ÇáÀg~r8ÎnåÍŽçΑ3{°ÃsÁ5X²?·«&g€â1¢ƒ5÷êùBUœ VïÂ)z²}@d1ø»ÿˆË^½Ó§Ïý¼#ÑÛÀóÝlêØ~üø±¾³ó1§ºm…•}úïìÕ÷·ß¦|§Èf@¬ÂÃ(ÌüÓlÿ¹³‰ax‡¬ìE:ì@ÿ¼ê%¡åÙa$ïb—9V¸+ÂRëÂEF†¶9>KÕWŸVÕ'Yù˜D ê-ÞÕ•ÙnruÍŠ^cl6\sR84Z¹" ýÍš7#¡ÐaÐö8 šç…¸ZŒdÅWâbj…œ@-é¢ÇVQ ³£ÁFÅßBm¸iÁæ‚á½ËO˜b4x§,ERE TMNÔåêÇq[ÁÂ2â´˜ˆeÔU¬tèÕIF•“Ì*†¿6“z wè­áõ³ÞfVÍü݈yÑÕÛçð¢¦À‰.à2°Öþ*6ß Þgõ|€w,¾MÞì>*2Ž¢ àw±ÕOÄšÖ·€ =_ÉÈTGùúê*ÜÐÓ`uõÔÕ#&ÍkuD‰¤ž·WQ*Ç)³„â„m•p˜ïÑ9´ÆNë¢æÅÊ€f—¿Î¿´ÿÁŠû¾,Û^·´ÆázÊ&|O%xÕtU]38^°-‹ŒÚ>XKêîœ3úà{Îê†Go9NŒ2忥; GV6A²h×Ï«¤9׿t»Ý×ÙdG¡¸ìÂS̓Hµ*èþìo­dKT:Ê–Žé^8jb0B]Å̲xQ^RFZ@‚hÒ$R\Á”ÏG&’l„©2É>²_ídT“ä,ðE*A‚&ò]x!y–^v~½»º™s†<¿¢”´r…QÈÌ„â;JÑ Ô|†J'¨Ò(»ã¶ž¡"›îËý3ÐYCø·$ET4¿˜Ú;»b r/öóÊ©ÝZ—ZSɺҫ!,Ñ•Hr–[-D/¬îi uÌ#æeC”ÌGúÀànço¥<§å(žq½ z. å…àt 1K¡<•<‹Ñb§ô ÷â¡2—#H}f¸—]D§ ÖR°†ítŠîÿñ ˜2v•5ÎdfñÒ«ÖÛ´¾ZoíT½£«jn4]Åáo8Þpz(]û\uDsÜ#/Su¯a”P®ærcÁî\)b˜œàÖÒ𲔉¢fFæ˜C£xfo¬™eµàC%r®y».”ôΜìÍ 5‘Æêì†q>ÖüÕ¢l_&ècÚ!ü­Åý­u®øg.~R›'6¸x‚h Ÿˆ–¬S çIQà<™‡ 'EpánÝÇ=á\\8Y ¨Q^ÅùÍfݪô“sÉÔOþ}2=ÊcO cíЫ[¶š>.€³'p–7‡Ž¼@«™$—Ûi‘p(.%GÑ\=hWO20Ü’]ÿíÁÑØÜÜ ŒÄld>^OTä|}*j)$7Ýë\ÈKòêüæˆZ\‹-lIq+Þe¨ÍàØ .µx9¬FŽ…Ü%ë«/¡t¬Ð}¯«¡Û~¸E-ئfU}uÝÝéù ù‹¥ÂM«ïGƒéyDñžà<Ø%ïÒ—ò“*ZŒWqöê•øB¦ðnîh<6·]­kÚ<æoÔ_e#•ÓñL\ ýaÌÆÌÎ"Ïç…rÌù‡Gsýxξ‡²Û¸òp®¾’Y m¸Sì}JåžÆUkRÏD©&Ö çán˜M®pD΀6òÆÃËsö<ž“¬ñø+8ǵ_9õ£ûþ<×ýïÃqÿ{‘n.(Ú\T8)é/NË”Išž²ˆ;æcš.%/[! Ž{ïÂQþžVF)ýlq&ÛŸ“=iÁ³V%9Z©;?ݼÒÒú·ÌºSuç§Ýa31^×dre|½Úï:f^à?ÍÆ2šû7}üøïWŸÏ§_î9ðâù¿_n.óÿ>Ò³ŒÿþK?nü÷‡Àþyøˆÿâ¹ÿ/6kKüŒGñ8sò~xÛþhqZRúîIÀmußbI¼—aËSëô3„-·¢Òªvç&ñöâšú{´Ðà²NÀbm‘„Ý¿Ùçf붯âÏ“™8ŸN¾Ì.¤“Ö%Ï¢zùý=.³É¸vš[¡ŒLù„ýŒbްZµœ±Ëkàâ;JMFœ >Å#ôQ’—ʽcÏÁÌø9–ŒŸb4,WÆS ój2™JwöÁ(™ˆËh0N´ç 6¡]mºË•?j¤bÇÔQC¹låzìÅ‚\¦%ÆIÖ‰œ3{Õò*j"| ¬ƒãÍVDÕtÏ ª}e¼Uª‹! nÖÕ‰Ô¼}°×)8o7ø²5/nd™qÝt½Ì¸.>¾ò¹ɿ¹C!Šò%Û…ÿT†×Pq²à>¦ù`š›Fü°Ñ®8vøÅ½©òŒý³r}“)|§qt_öëíúSý@öë"À]|;m$ô#SZ¯Ð‰·ÂY ¬ü³BæÛ&ìÅ×ÔN@€Ïäúw[¥–Ò ©2VMGYàVP¥q<sJ+$sV^â`#åì4­ÙY7Í'Ö}ë@7ðÿ9lÜõ0’Ñ0îûûÒˆç~Õͱ µ,çi |ÐÒGðF_0Äú£Œn­³}·e„ô@Öù"PKq08Ž—¨' p<ÎèZv96£B¸Dó¥A¹î iÆß‡„âfßûz=•Ô˜“ìÕìØ$V®8¥R&lêåûBMÌOsŸõ;o‚ï33´fNPÜà ý6¢«ÓjM¾ òrÀea xv+Š…dÙBÂì-ÅßA†—·+ÓHçKà.ÔÓ|&ê “€øÀ¶`?ü ïó«X±£ÿIngS¼.µ# ·Öé|¬Š/ê ’DŸ±"·ÿ3 þ®Kˆ>¾kùÝeu9ÓV,ï¢ÅºXäóesW”e îåïÂyj75ÆtJv1ûnÂK@²|ÙͶyáDñ ” a¿µËæ> &Y6)†hìf¶º›Fˆ7„»6FìMkÓ¶‚7rW¬yÆD¼mظÙÈÙ†µÌ}ðÖwÍ7~Â}9g篮µŽk)q+iÚàñòû´Ð/Ô8Õ0Íó×b[•7îÝ"ãV{½‘"•60úª#6g¢;àW«8vûƒú¹˜×Ø7Ž ø,†69ˆp(£F½d¸SÚu™×€Ðy°<ìµÌ<vÃtzAöaŽ€§yGÀÓ{< ±ZIÓÆÓ…ªQ§…E΀ݯ<ÂsQà†rË@­VGšøwuxƒì lˆ×—Õc^%ѪLßè\`޶®P;ñçxhÂ3º¥¸‹òz_ª»þ-W“™¹’™{ÒJ¢®f:”6AA(c’\`ÈÄ1Û¦F± ôÙ¢ðÑD¼P¨8¦x˜€tÙB`¯T²¿–lûtr-5+‚¤¦rÎpë‹gI4:«à]0áÉɨa(VM806¦ƒÙ'äU5™&E%M…®>í;f3y-Ìq^Öí—t-O£35ðì÷|¿5-X"Ejö™#4 Û,g™/P6ˆ.9úA'çä…çï²9Sri øcÿ7ŠÇýOÑtúØÿm,íÿçYÚÿýÒeÿ÷@Ø?ÿ7Ÿon¤ìÿj¯–øÿc{çx«}p|Ôl5OÁ®'IÉwXÚì{~Z›½°Už—EÌñB6è^Óâ¦ðr/=S蛬0)À|¨¦V“;YÄzmtWÜÙËVaýXn_ßÆÚ¬u’×ëG˜Îp(J­“§µòjGÅ¿f1b?F“ƒë'®¦Ò)Â8QQˆ¹OÔ-ƒÖÅàs"ÍtX»‘¼i+/·Ä‹O ܲƊ°Tp…(µŠÐ©UœJY¯©m±¶ Si%R‹ÍPî\9w eò‘ER€¤³Y+G?•hÛ Wî^[-ïÜ4Æõ:ኲ]ãt% Qøƒ´d™ƒ CÎÆÂM•F"ßùNf†PÛ'ŒÜ %×T$5³ÔLŽì씑ù©óhz–Üô£›Y4ƸYg:±üCÄÆ ržŸüÄ[”Q-ªäìÏcYŸ¨»Ä…,±õH€Äo‡­ÆîÅÌëë­ÑdÕ̉Ï{ß©¿i3³­Â«t?†fÛ@©Ûá@©Ûw23“dbHæ 4y•Ïs¢âI—MXÄ\ÔQÄ#×’À‘Á‡%Z¤†·á¬¿½­ïÐÌ*š½**1QÇ?Ò.#yä¡YÁX½ÃÈ+¦Ž.ÚM½ÛḤÄÙ¼ņÈr=F±òGÍ T›ÎÅé%ÚS¹³È(aõrù™jɯgÆE*ù•,?ÃÂ>mŸ{Ftß±ò^g¿ïøÌ±Ö[!s9¢¥ÛŸc4L§ÛÓÇ» `:ÂO‘ݺã0’5Ú_–âDçqäW“)ºWôOïWpùß«W/—÷ÿGy–ò¿_ú±ä„ýóð¿öâåFÊÿ÷åæRþ÷(b4òü8?öål¹þ >\ ûþJ¯Émø¯~x¸×“Žœ‹¶‚:Mààó®ýè’ÈúÕ4‰õõß /”ÛÐO)‰ÔNš¦]Ë{8à Ä—+ÇÔ~Å Ÿ‹ˆ3rVvK¹^ÄÛ%.Ú^ÄØ’mjVæ*I é` ©QQ|§U(ÿ¹D9€·Ë*™á6PjÌ,i\ºÜæAÈ/õÇpKå=Á„²žs©Ym_LFQòç­ë±¤×îwq¼ºún•já·½Õ=ø^I9§<ªsª1Ý%33yY³„~[I+”à.„‚V¯DÏ ¦kPÖDj=«7OŒ«Ãï”1ÿ¢×G~F’É|†CÃBÅ…=iU/´ÖmÙØB{‘ÕÞcIK§Ñn½““·±Þl}híé‚Á+…E«A·Ýì,ÃY—'A'áœðú‡FéQò{ñëœ^ 'ïÚ«o·6*LC:Ñm´·öê÷%|fã9#þj÷â+9–Ë–há§f9s«’†6ej¡ƒ]À¿XæxU¼Žé!ÖÓ)¸RU)ö!ïjI¬8#ZWf ÑÅýØ…¦›ãÃT0a“KçÀ:æX\˜CLûVÄ*û3‘ûÕÉÕÐy³f„â¾ XÅfYĦ¤Ç,Ä!æ„|’d¤fÐ"ì¦ÿJ7Œÿ>µ¼VßW8ã…x†\ìû¢ÿ²«f–'C¸3å"»HgÁ¬_1Ñǘ_‘i¥ôÛ¶;»o ¯`‹„ýæ, Ä2 -ÛwlwÙq×͸ dß°-_=¿ïØ\ Ó¿¯ãÓ?e"Ô)ÁÕ7‰eˆ'®ÀçE0…ðÔ<àt©<§!ƒÌÍ^:t˜\¿Š5›’Æ#+OtÞ¦ðÄÌ¥CdÕqX[7Èù­Šá Ü ™?){ÿš/T4—ˆ U˜³x”è÷ð!©ßÂÜ7Ô[7°ü>ǺŠWÛ+ŸßóyÕ‚”Y¡„ÕðÂÇŸ½2Ä¿QÊÈTÎ1®àˆyÁL2g™ëU{_ß9e¯0ÂÍv*7`!‚𓦠k/¶Óû ÑZª9³€ûw;‘_ÌD.œ=<&ûcÑß߈£ tajj»Ü©È€JHcIôå™îé )­“ä̬`ø€“ž«ùáÌ­`ç?–APÿó­õÿ›ëKýߣ±«4ú]† k¶¬%\ÆÏþÊü$ÈôϪÍWüp¡e éñ»Yz|‰sKûw¤c¯ØúñE4íK]úR—þ½èÒ»iåÁ7Ö¥wA]zŽN/WÙ¶Š¼âü°ÎbŽN/WiX¼ïIa¼ðŠ.<Û;¬è»öChE»K­¨XjE¿?uÕ\­h7¥L\x™Ÿ!*ÏUWÍWmvCªÍ{Í/°áKýdý¤!׋ë'}ýŸ±â~dÌ…ôµµõ/j›µ ±^{µQÛ\ÊÿåYêÿ~éÇÕÿ=öÏÃÿ—/Óø¿^[Æÿ|”‡±Ý‹ÿË›N·RœÖNc§Dr‘þQï°Q1@ (õ€£=ôhVXõ½Æ¿É x ÛÂ(K[ÙÛéq<¸>ŒÒÇKH§hm¬·ÕÚéôù~¥¿¢œŽãn Æé¡ôúGõæÔÅÓX™£wÐÊ»¢Í´eq±sÒ?†›oa`þöÇ&\I ¶!¹§e8ÆÏO« ŠÝ ÉÑ4ÜÎ6…b ¶Õ{a·k‰õ6ŒgI`}Ìx@MíV‰¿d/B¯Ä+ÇŽØh’>íôä&¹)¼%·ÄTCѳҜQ8ä«$÷°`\«JA]sàDÀô€‘ DIÔAglžMn“Yt)µÍ¾¢Qê*š¢V µsÀtLkWx9J¢`\=l„¿1N&nÆg|ã…¾S¯„r*RÒ99<‚ Ê–K4°Æc„/>Ù0ð™låó€‚T§¯©¾ÖOžÐÉÕ„‡„ëÕ@íUäŽZ–½#<`^[ Þƒµ•I*(š 0¾öÖ 0¥ÿ‡(!”w‘¯)ýQX]úP.»Å×rŸÐ6pûÔ<·èd~ç¥&¾`Ý0BPLèÛ+B'5kpA’ÓiüIGôþÁ¢PLd³®a©Ç4å|×W¼ÚÓ“F§œµÞjO…ªöÝGwO“ WÔÌÄ•×ekcÕÖ\5êB—Û¶¼Vg4þº3÷&o¾ÍBâ¬ø^þÚKT‹'GÓëdö ˜Ð•ØNfOB7Œa¡ð;Ÿã/‚±}ÒOŽwlÄÆ i8`áFC¿•ä¯é¬4FE|2\ž^”VWI<‚Y‡{CE¼•ÑPîŠ@> ’{K§ÌÇ_ÙçB´³wóµ6Ójr´0TÙÐmÈ,ì]W1h¨Ž45ÅàÎh“ ˜ï“s3D’° †ß†¢ÍH&jÈàÔK'ÿ÷ßµÚÿ*@!pˆü}+³`lr™ZšÁtu5E™ÀÝ•†Š{;©ú¥÷¢™8-é¬Ö+’Ãèp¥DžI“/Hå-È•R˜í k (\* ‚U“ëK¢q'41Û ­Œ­f“ ”pT ¯ŠH!£Ò_î‘¶™Ìþ± k›/©­³ë)¥UâJº¯±È‹êÃå‹dF¶€D¿[Á/Âlç4±ƒ  <ƒA²ÅÙ»õøo‡D •±\–b‹KwÁÖ”9óOŠéÐ7ì0ëQé­YÍtr„Å&Á© N¡ÇÁé­’L£¿®#:J‡õv}¿Sz.³È´A|J i˜ƒW…:ˆç2o àTµ„ Ì«ba(­ÇuXŒ©"ÕÕC1UÔø’©Z2Uß„©rwÉY=8gUª¯’óåM¹¬x¬%ÀѧÔû­HRž:aðCšQÓŽÖúÑ]§™¸l®-µ•?'³ªg1G[í?Š ŒPŸÖ«ÔQ–¶«./¢ýøÁºÒ×Ð<k9{F–ƒ’d“åɽ®!lYÌ:‘x¦Õ!s†A–,óV•6´Bân€À)‘(ÐYÏ^‹ft+?£(pn:bWQƒ³™V¹Š¹>TÌ•™×™É¾ÝS÷°I±nÚÊf+€ÏâSÔ€VŒÆ¤¡Áue'¥&¢eÌšRÅWLĉNºETz[ÆŠ1E= ¬8›’K¤ÑgÍÂÅr؆gøÁáÉå'«²`^]Eè m)æ[/žÍ–I›/[ÓŠiÒb«ÜUÞ6iKÓŸ2UÌRè]ÔF2ã'§c…ñ×Ö«tõZœÃùŸ$À¢¯ ÉÂ5«­¯›\¯Wx~Íp 0åóh|Š6¸¢tϨ—“•ý߉ˆÑžïW¼ÊhPSQ^Œã¿PÊoª¾\ÃxtG1å/…j úèÄ«KPÈ6åa±GÐbLlf–j·Þ¬ tT™Ê$³É•ÎÔf b)¥òF§À˜áRW©uÅ/£Ô7­Ø9}ÄêÉÈvX „ŒyèøÞôÿ?­ý¯,þ©gµª_ÅÊ(‡YÔÀX—7 •U݆éfÝjùŸèBƒ°§'å%^¯¾ÌÄõêoÒV @Ðà’ÄɘNAX8ß,DÓ™fÙÂk¯þ±…Ç©LDy4'ªuà QdajÜi W8Lä`Hí^#­ ¨ã;«€f.Ts(u@BËÌnX©½Î\n«ÇöE¨nVâ‹/‹/Øäe@ÝÐÕúŠãV{]jà\ Õ¦…ré íª"™¸·/+tMާŠâ‹(œ~Ò~ŒGçî‘EÁÂ{dÛ¹Š‚6#ñù˜ B2÷ÂMVmf!Í,ÒE„Ü)°ˆ$Á×@Tp€¸¢¥C:Ì,ë¯ÅÅ`ˆÇ5@yt>y¼«2þú c} íÜFEl·Ž8âGEtû£úQ£"Nä®4î“i"“]ì|{»h ÿôö›hj 4½ÇºügþîtÛõ£œ®vNð=¶ûAUÁÏ}€èY_Ìi€bcìtû]2¤†Šoš­ú^Ÿ‘Ÿñ÷ìf‡Šxwü¶ñl4[Ûí¾c°ô¦B¸ ²Hñ((‡p4^"µš³‡-ØXuµqèÇÙl½U_ý0w+[‡í]e«ÞiôaVÍcœf£{Ô®›ï9«CU21’°5›ø’7XD8oÀ䵚݅™ Êl*ÎÀIÖPÎëÝ™wîNnNïr‚$.*gïƒR«½O¿¦‚­íýCõY{4³[`wÖ&z&ì÷/²lKþžÝŠÕáaóCÿmûàãÑ;]!¸BÞÐÙ‡Ø>­|ö"m©Bs6C ¾pæ ?¼´æ _7ó²Ö ¿ª{¤ÿÈ©½(Pô·¼=eë“v·ßæT·í±*2|6 ß§§~§ W>JÆ·’¯€·4¾X¤+ñƒÅºÂ@: UÙ‹/sØþyÕKBK¸5âHÆ.s írW„¥è… * Œms|–ª¯>­ªO²ò1‰Ô[¼³+CÞäêšU¿Æ.Øl¸æ¨ph¸r-ƒÃtþfÍš0Q”d¬½•²ëƒøZŒ`Ä(GQ8ôÜÝé¢ÇVQ µ¢FÅ]B͸iÁæƒá½ËQ˜b8p§( ’,E XIN å`ÇQ<!¢2¢v˜ˆeÔU¬tèÕIF•“Ì*†¿6€’z wè­áõ³ÞfVÍü݈yÑÕ›çð¢¦À‰.à2°Öî*6ß Ùfõ|€w,´KÞìp.*NŠ¢2àw±ÕOÄšv¸€=_ÝÈ14Gçó:yˆ ÏÁêê;©µG ZÖêˆI=o¯¢T0ŽWƒg E‡Ú*á0ߣKfýÀEÍ‹ †e‡½Î ¿ƒ‡NIûÏï¿¶×-­qä–² ©Ý+Õ*ïiÁcHÖÓÕx¤éð<¹˜W`¸öyZ’7æœaÇÚsÖ4„ò~!”®²™ìË,ÎxÕÚY›–Wë­ªËRUÅb¦k8L ‡ŽM ¤kŸ™Ž¸ûã5ªî5´b)ÐÑ\+Ô™S4¼ûD8pO©¸%d"£!fÓ"žÓÛ#3§¬vÓ¼"A6WŸ·öéB(îÌÇÞ“Pi,ÎnØ›¼º ”í{},@+„·¥Ø ·¥ÎýÿÌÅHlñÄO ,añ@‚T^€<)'ó ÿ¤ôß©³¢Ð¯§šý' A?5IûO«7¿Ñ¬K‘~rîˆúÉ¿¦ÆøÝcèÉÃa¨™¼Zز½Äô±8†žÌÇPÞ:Òm¦YQ'\i§ABš4‚”lõpõ ]=ɨ_ôz{pt 677ÓãÐ;˜?;»WÄ“í8_ŸŠZŠ¿ÈÍÇ9Wl#ò²p:¿9Ò‘GbËGRœÆAjË56\ó—.›È¹×£Tºd]@õý‘®pÖ…¾p]-‰.µLuuQÝé…ïžþbê™ ¦çRx¢ÿàPRò.})?©¢Àx%g¯^‰/dÃÞè6áÞ‡ Æ#SÁµÕšv Í3`êFýU¶)9ÏÄš Æl…ì,ð<>'çPœwH¤±ÕÄë»;M+¯äê[ µÀF{!·Þ§t3×iü´&ôL”jbÍðîVÙä)5ž¼ñp<¯ÅÆÃ¼:ç$k<þúÍñÆW~øèq?ÏÛþû𵷠å÷ „\Py?RÄ,ù¡é'‹œSÌ:¦âRå³JD¯Ã“»0”¿ßuQš9a‰øxÔþ”ì9 ž´*ÉQ:ééÖ•O •m™E§*:2Å{Ëé¬Ûˆa¬&“+ã–Õ~×1£÷b³ûÙ¾»äÀ~üï«ÏçÓ/÷œtñü¿/_Õ^.ãÿ>ʳŒÿýK?nüï‡Àþ¹ùkÏç=ü¹þb‰ÿñ¨NþßÃoÛµÊiû`¯ã¤iv3÷aUÕb9|—Q«Sëô3D­¶â–ªvçäðeèÓA­½ÝO\hY'`0µH¶^ßl,Rá½”Sƒö_»Š?Ofâ|:ù2»¾FX—\êågô÷¸ÌŽ OàReî<2Tâvw¨¸VQ¥¶sy ¼ªñЍɰt³Á§x„®2òÊ´wìù9w»’q—‹†eãQwªb3^M&Sé_=%q Ɖv`Ã&´ÇG·bù–§b_T¬h:Œ%w‚­\½à„ßNbZ‘ç<—Ö ‚Ë,Ó›®¿uÈÙ‡Š5»p‚ÞoîR3'q.Y«s–V¢‚²l0qî!¬d&½ÎðÉ3jÎJkK&¿ÆQöX²²ßÞ=G-YaÜg¢ÚÅ|×Ú\Ä3ÎåºBÔv…³ÊX¬àá»^ >+×Ûˆƒt0ÁBbxÃ$Q!Ûe<ÆøG‰r þBB=ô®djy¶&Ñ`Š‘€&2ò-Ö¢£ûêÈP6(F}Ѿò2’üÈÃÝKœiDi² #†²3Ò9JO~ö&ÖnÛ7ðÿ9ìßõ0’QQ0{?â™áIËŤ²Uö¼î€œá¾w~×Ã¥*O߇%Ìð Q*k¹’ª>?Ý^vÞØyÃz÷m§àŠÕ[“/¨9)º­êèGœö§C¤5aÆà!m Ñ Y9Û{ Æ»û…ZZwߤ×ñÛÁÃŒ1; äjŒþ»I´j¸ºáÜaùaKwb¸¿™ SÀ` >ÈÇ—W’@P­—Ì ÈYIèh·xl‚jï ÿ_`ø‡1+î¢X-ˆ,ˆ««à&JÂå€ÜÞà0…É0²S;6 i•ýµdÛÀ¾KöžA¢æÃgI4:#ØMxrÒmÆŽl„iÇüñ„LÉ&Ó»w3 xŽÙ” œ´n¿d:àaº‹åžýž•™}^u&5ýÌáÂÙP3 /+µöO3AGÇí\§w9ÊïQÉò?Žþç›Èƒúø°”ÿ>ʳÔÿüÒ¥ÿy 쟋ÿ/7^Ö|ü¯½Xâÿ£<ŠcÈÓÿ(íO+¨ú!)ÖR‹Sèùiµ8!=MåU5 èa–Z˜o¤…Qù9Qàci^ Äýþõ/Å&áiaTê·=‚—c+óR†Îåpuoõ8¥cyÛx<˧))® YT9aô¤¦ø•YB|#Å‹ëaçžãŒPYvµ\]ŠÛE™#ôºÉ —'ÈÝ´·”{~ZùPè¦Ã@…0”sY"8C’°×Ê.›eòΦn)ß ¸WÔXIž­(Q:I&–ŒaM:&Nà¼,ÛΆ·âõïb0ººã\ýçnðæó)šñ·å W’¾’XšöKP¢˜„/§qC¿s62Ô9Ó‰»¬Æ"¹LBû)9N9I’-©{|¾šÆ—páÑYPNƒ™™Ie&ÊBç²âìëŸ`vLôq‰ s…]ðm:žŒ>sFÜx,¥.è~ ìGÈ̾¢l †GfšsÅ|Î}Sk?Ö<>FòE¥“«è4¦„ ºÚåšì°a1Wˆ›ˆÊ²úÅŒ+žÔ‡üƒ)dÿ4:ƒŸRD§…T6D‡ˆ ó/†˜cû9¯´¸¹¶lÃîë~3¡'0®jþö>ºYÖæ2€ã1Ç„rÊ J€òe·ü˜mmY{:+$aujÔaî Éš¨ÐHéXèÝž¦ØÕŒñrwÌL-™Žì™_¯…†M˜õNs¿Ñ¢áÈ£f,Ênó[ÑZ?Y²amÞÊD9ó¸`N+2¡½Ê´üÑÙY|#ö›T¾øÙ_H,í.#§Ñp$´uN•y:ÂÌuNCr¼Hq¾¥äúSOŠóéà²Jû€áTG/JÁRKš5¹îb;ìz„c¸®¡·>ÅĶX2ȬǧSB"…¢þº0£Æþ!ìIýMCØ k1´/üÛ£ÄEïáz¼‹ÿ«˜§wp™*š~¡Ûh[úYtÒúŠÔwÒ’ú³Ó|ûãxh‰ -¨¸«”ËE2Y5nd8%†Y÷œ Li7›lGÀ2CŒ_çæÁx鲘®@”]£ìIᄌ…X- ϶žQzÃ/ Ì#–'](*`3ûyé×D¾£Žeuõ*P¡—W¡f;ziU(×”i-üš²ˆÑViˆÉ±Â”ÀÖ­úцlo”_ÇpøpÒu”\MJlûP”.+ãâwºáoD Ë´‘%b6ðG$˜eã%óÿÌ ì(q˜òž­œàær5‰YCü7ÊàôvA+þ6°¹»]üWÀ6Á $ó„Íd¯4ìQ°‹^v½P½ðrã´‰” ”ÇŽg1J{äõ;CòdäR² sm ‡±åèôÒfѸ#+©Igp¡_#¦c5i=T1„­òA£½ Ñf­  ÑN1‰ƒRëÿ6Êæ€3 ÆR @îj48eAõæ5ùë:š‡§\z˜ÒD7ƒS`ôFƒsŒEHn‡“(ÁH„ÑèJå{ä̃RLʶ`ªò|[K¹Bâ¶éã‘LJ×RÖ Òorï€ zTl±t%ÔqåÔãOVàU³|9QW{%œMNM'V—¼—ž3b²:ÃqD1ÓR¬ò)¥~-}]È¥d) …±ÍŸ‘1×iÞ æ´L»:…Pl†F“ž¨ùœÔU?%T ¼wöi*wníK*ʾ¿nêÓS^U9lÙzy ´©ê,OóiF¼ÖÐ¥£üý¬ ”‘J °Ú:8ªš ‚òfŒ ™ÊÓߊû©NTÁ?O…u°„›ÂÉ%!úѯƒgân„èסÔ? !rì9]2Sß% {W¥Ýîc“¶s»y¨«–þ!\I­ªX2b¹Š? ‘\rkáŠ?%¥[â¨ÿüJœÞ/Néœaj¡(õDÃ2š¾6´ƒè/ý}çñü¦èÜ?½_/€Åý6×kKûÿGy–þ?¿ôãøÿ<öÏÿÿ¿xþ@–øÿc{~ü—N2²ö·m— &‡ß >µ£yØüPÛð_ýðpoŽQàa+ UWíÅ2 Ô~t#mrõ[áårú)}ŒtTwÓ®e>°ÉbÈSý#ØèÐ5ll±ˆ{QÈ^ `Þv*Z(ÆMÅJ;ÀeC–F%.Ú^$E,â ºŠ^ª 1É*é–CÛøbŒ1&çD[E‡“Ò0œ—¶Ëeé´Í0–3ÛŒþ0qüeµÇaó@AþŒÿä`%šÈFU~‡h y7H%4%ï3mW2ù¤ ›Ýì~ä™NïQ£û#´X ½Ò2YugÑ” b½¼PÆ }dur¸àìá)+SÈâ9›$-¿·• ‡Ì$V¯D€M¯’F«e:“‚E¶ÐœžrجìÞŸ&Ÿ#kÑ<'¥¬ñ}t@²×˜÷”Z>»)›pz‹Ñë#28º€`Ú„d¦§œENØ zù¨"Ê›¶Ú²±…ö"«½{7·.èh·®å¿!÷ßfëCkÎ8LvZGZ\–2)˜0"û8Í0}æIÐÑ=çÄîÔ?4Jây†m¶9sf2 þœ•’â>Ì´áßnmTÇ;i7zFÒ*‹ÅW[DÿXA¡\¾H+Q2-¡i²o\È%×´qrŽý¯È3vF´|xC`þr|˜R»Ø±Óù~§ô\˜•;~T{âáˆ! ¿:¹ÚÒnÖŒ°ÚW8I{€¼€ìŽlùˆ45$°Þ&_ià ã¿O ñ Ùè÷a%SZ0?O·îLéˆé,¤Pûš‰>ÆüŠL+­»kÛÉQŽL<ÏF·ÖTµhÄ9;Ì«€‰K@X¹`Z‹wTe³”P‚QGƒéÙ±4,Á@*œžKæ)¥›€H.T.¬œÒ&›¹›ÈÝàÂÀ8q_pôŒb2•H/áVtþO˜‚,òIØxâ¶‹9´hÀ§À%Ü—1A¸La=Á4ôÎ!Ó’ú™üd "æ¥/UÑö^Oñ[£ !áŒè Å×”¡v PعŽ^p¨âbÍ&%åÔƒ\¡"³ên-žÚºÜʬ¯²¶ZA6[a°™Cº¶*x~Øp㊵B=-Ll¶ªÜVÔô„Hw¢ÓçÌÊQ9™úxa±§êž:ål»• ÅíT­Ú”=˜ˆ_†©Vzöš9ºóšõªÜVpÍÔÍIu’™¤9@:¼¥¡É雨e•EÙÜs Ÿ°È÷uïí0$#Éñaêq6\Ú˜Ö®á¼â²(aBÞÞ.ã2*Vù;Zô“2çíë¡}~Ø‚ŸDk©90ŸŠïNʈ‰éQ«t¿’ã•«Ì;§è×TÙ‹ž:ï\÷š­>.”Å‘±!¯wÔq–ÀXc¤¨ö-ŽH Ùˆ”¸ì¤î7"pÅÑæ›@¯Õþ… eK¡ûX®³¡êd^È3]÷’37AxA|å»y«¯ZWû‰#%ˆÔ0%¦*|,3–h`Ç_|²`à*µýçÁ4†Fúêìëuå \MøPpH¸^QÔ^Eî¨u‰àÑ;Âæµ“pme™ŒŠ&( †¯½µLéÿ!Jå]äkJTÖD—>”Ý„êb-÷ m·OÍs‹N^L^jâ †Ñ #|v{Eè¤fcí.Hr:?EŠF|Š`Q¹]O¯a©ÇÀ ObRÕ e…;l7¦Gº=}"¨Ú÷1ÝY0þºŽè`(ÖÛõýNé¹ÌdV¦ëå8ˆO)! sðª@×ñ¼"# Ïžª–„¹#`U,L¢ó5¸‹1U¤N{(¦Š_2UK¦ê›0Uò.9«ç¬JõUòÁ½)—u£8ú´“zl¿IÊS' ~H3jÚù_?ºë4—͵¥¶ògbâÚ [·¸ ¿µv#FF¨Oë¦a¶ñðz0²4p½ pyíGÀÚ•¾Þÿ<,ƒ %¿&˜{í6*fMHy«2þú ½ ßFEl·Ž* "ºýÎQý¨Q'òW$÷ÉH’ŠÉ.ǽ]´Q†zûM´ šÞã?]þ³wºíúQNW;'øÛý ªàç>@ô‰¬½_ïÎk‹@á~—¬¾¡â›f«¾×ç_ägü=»™Æa§"Þ¿m|¨ï¡ îv»ï­ÌÒ©.ˆ,R<ÔÍ!—H­æìa vV]múç6[oÕW`E?ÌÝÊÖÁaû@WÙªw}˜Usç§Ùèµëæ{ÎêPA•úäj Ç€¿ä Î0y#gwafƒ’šŠ3p’0”ózw&Æ»“›Ó»œ ‰ÊÙ; Ôj¯©`k{ÿPý@6ÍìØM¹‰nû}ç‹lÛ’¿g·buxØüÐÛ>øxôNW®7tö ÷†O+Ÿ½H[ªÐœÍÇ‚/œyÂ/­¹Â×Íü†¬µ€Â¯*Âé?rFj/ ý-oOÙæ¤Ýí7Ú7¸¤Ö/Dà·ì®ta:ó÷ÀïjP¦ÇáÀg~r8ÎnåÍŽçΑ3{°ÃsÁ5X²?·«&g€â1¢€5÷êùBUœVïÂ)z²}@d¸0ø»ÿˆË^½Ó§Ïý¼#ÑÛÀóÝlêØ~üø±¾³ó1§ºm…•}úïìÕ÷·ß¦|§fížGŒÂ™Á?ÍV ñŸ;¦1±Ã¹‘„;0^÷’Ðm2’{±ËH;Üa)vá*£ŠKÛŸ¥ê«O«ê“¬|LÂõoëÊp7¹ºfU¯±6[®y)­]‹ŽÀ„þfÏœÐPèpg{îÌçB|-F¬b”+q1µBN@–tÑc«(…ÓÑ€£âl¡>Ü´`óÁðÞå(L1¼S–¢C)ž"’&':‹röãø, `ñXÌÄ4ê*f:ôê$£ÊIfÃa€I½ž;ôÖpûYo3«fþîļèêís¸QSàDpYXk£oé³z>À[– Ó&ï v G Q ð»Øê'bMHû[@†ž¯f䪿£Ç|}uîHèk°ºúNjëjˆµ:¢DrÏÛ«(r‰ãáiBñÀ¶J8Ì÷èZc·uQóâýd@³Ëaç‡YÚÿ`E~ߦm¯[Zã°*‘d#L“Iö‘ýj'£š$f7(R ’3‘xì ɳô²s)îØåÐÍœ³!úůvݸ[A,2s¡8ŽRxUŸaýt:2µ; 6Ÿ¢û²Aÿ tVþ-I!Æ/¦vÆ.ÅXÁ‚œ´=½2GªÀD·Ö¥ÖTj¶ôj Ht%’åV Q «{šÇB]³Æy¹/%ó‘>0¸Ûù[)Ïi9Šg\/ƒ¤ËBy¡6FCÌR(+iÏ"Âp¤Ø)=dýxÈÌåRŸ.Æ%HÑ韂õ¬c;b€xLˆ@»Ê:g²@³xéUkƒmj_­·vªÞiˆU57š®âð7W8=”®}´:Â9î‘—©º×0j¨@Ws¹±`w®1 LNpki xYÊDQ3 #uÌ¡Q<³·GÖ̲Z°"ˆ9W¼]HÊ@zgNö愚HcuvÃ8kþê Q¶/ô±íþÖb‹þÖ:× ü3?©Í\™倱'†±öèÕ-Û MÀÙ“8Ë›CG^ ÕLËí´H8”F—’£j®´«' nÉ®ÿöàè@lnnFb62Ÿ¯ˆ'*r¾>µ’›Üw® Hä¥ôu~sD-®Å¶¤¸ ð2Ô†pl—Z¼V#GH€bî’uÕ×Pº ZÂÂ1—µh›šUõÕ…w§ç7ä/– +­¾ ¦çEdx‚óD`;8”¾K_ÊOªhS0^IÄÙ«Wâ Ã7ºM¸9" ñØT|vµ®hó ˜¿Q•ÍTNÇ3qˆ1›3;‹<ŸÊ90çiÌõã6û>ÊnãÊǹúHf-´á^T±÷)¥@xW­I=¥šX3œ‡»a6¹Jh#wD´l±1oÏ#:É‘¿†sÜû•c?ºðÏsßÿ>œ÷m"qGñæ=H7mÞ“p2S,izÊ"îšiº”½l…d4:¾½ Eù;X¥ö¶H“ÇíOÊžµài«’°Ô n_© í@ˬ|™]H'/¬KžEõò3ú{\f’'på47B™ò ûÅaµj9b;—×ÀÁw”šŒ8|ŠGè£$/”{Çžƒ™ñs,?ÅhX6®Œ§*æÕd2•îìƒQ2—Ñ`œhÏAlB»Út+–+*ÔHÅ Ž©£†r'ØÊõØ‹¹LKŒ“¬9göªe TÔDø@9Ç›­ˆªéžATû Êx«TCÜ 0¬«©yû`¯SpÞnðek^ÜÈ2ãºéz™q]<||å…s“s‡2BåK¶ ÿ©<®¡<âdÁ}LÿòÁd'¦ ?l([óânTji¾°å>Y/“‰}§q”=Õ¬”âße»È0m_gÛN[ ýÈ”Ö+t®p~(+ÿ¬2€&ì•I>±¡€`ŸIùï¶²-¥-Re¬šŽÁ­ Jãˆþæ”V‚I溼ÔÁFþ ˜kZ³ón::=Oàû&ÖA nàÿsغëa$#aL.ö¦ãy‚ª›ejYŽÕ¡¥?à›¾`øõ1F ÝZç.úuËèè¬sI –bdpŒ/QOà†0ÔÑ5´ìrsFµp‰†Mƒ$ò\Â[gYß;{e–ñ½ó»^ÊÖS^L²dK%Á.Wœb)ë6õò}±6槺ÎÏü7Å÷™YZ¿ë)ºÚ®Öä *6]fª€£·b\P–-$ÌüRtbxy»2Tè¾né’}Ø1<ݸh2ݲXs úÀòM¿Š³úŸäv6Õ¡áÊ;¢`lÎÇú¡ø¢.(Iô+bèû?ãѨèﺤÀáã»&‘à]V¥3b¥ó._¬‹€µ>ßwEY–à^þ.œ§vSc\÷¡d³¼ë&ü·Ô!«˜Ýl{N¯@)Ðö[»ìa~áÃ`âx‘e¯bÈÆnf«»i„xC±kcÄnÐì6mw!x#wÅšgèADÀÛ†›œmXËÜo}×|Ã!Ü—sxþêZ븖²_÷°’¦ /¿O‹CS Ó<-¶UyãÞ-2nµ×)Ri£ß9¡:bs&º~µŠc·?¨Ÿ ‰y}éñÏbh“ƒ÷€2jÔ @†;¥]—} Ë#À^ËÌ#`7l]÷ G@dæxšw<½Ç#{ •4m<]øxêOÿXÑE#@ZÑ-µZ,UhâßÕ`²O€°Ñ Þ_Vc ‰•D«Fn}£S…9ʸCíğ㡉Þüé–Â2ÊûI|©®û#4kMfæNf.J+‰º›éHsØŨŒIlpÇl¸Å2`dK#T8>j¶¾ß;€«ÓÒ>¯ØóÓÚç…,¾Òà®[b[»žüû1d&'K9aËÉï^/\iéÖô­<&ð}8¹þ4Š0µ*™]É×%„ì²­K‚mˆö‰Ö³F738DsknRÑ ­ô'¸uÀE .8JM*`šrQB¦ÓøÒIã`¡‰š´ ÛÐȇMiÆçp7Øà‰%eq¬M‡]»¹"y‚-ã«71IÔUÓ[]Lß„oVÖ­TÒ⯄Ìóq×Q|tWváî%qŒm€9m»÷XÖ<\êd£isë®÷I )Ÿ74è–šhFòþ8¿—:ðk“§™ëgË«UZÃ×\ÿöìº\’ªBÏÚÉ–ß.ÝÅî±ïŸ¦Ãàþîrÿ{ñâù’ÿ{œgyÿû¥sÿ{(쟇ÿÏk››¯|üßxQ[âÿc<òwî[í’Ø'?¯Ö–ñòÚ©ˆFEÕÿMÿÒåpo‡ØÍ,Ešq÷ÔåÑ܈×7ñ(F>:p‡|^­•åíçkïPB˜†òîPëíd4™†¸|¢²Æ¹]Uucõ«i<Â[b-0åuO\ôÚ%ýhíÏWû´Èe,þ[^¶;Óµ¶³ñMDû†ÖYŒÊ!œ}Ù}tI/A8F¼ã,¶F&•Ü”Z‹ZD%x )ÕE•ßš/Û# I|ÔiŒ{…¤À êŸäϱg%q–Ç.ZÓÑÃþ–ÓQÓÓ ‡ó錠\Ä`17¶}ï!úU¡ÑÁü|U¹/ïæ0ÄáŽàÓ‘ƒ !Fk a»£ßU‰·XâïXBí뜨ÂÿæýŸí‘‹½Õ¥4ˆ¯ L•þ €°ÞêRˆ¯UäNõÕHÏýoY^‰a“À9Ï(ƒv¦–è4ž nVÔ Æp[.%yàë †4÷RfgJ—ÛRnúUá$Ôøl6ò“›ˆC©gC¶Žö‹>ø{0#B{­tõ-j—ß5€¤*¯J0¨@öèÍä¡ÔZÛµ M{ÙÔŒŸ·dÅÆgþ{ôé3æf4y®") Eb\ÉÌý/R}ˆZºûñt:¸Äûûª©O9±‡—ÇÖMmþlEH—ör·Âç­r[9o[á~ˆV'* í(´®W@=Y\ÿÁ´e4Ó9Ñ,Q@p¼õSA…q+Ì›‹ãúäÄ«ö˜OT ¿*нRï/ _Q^~¯¤á©Œ†k7IÛAUnŠ@lògíôY–NŸQÿ*ªá.»ë𙔀À™˜[RO#w§÷h4¸ å:!ç_)Ú^$ˆËF‚S;%§E5¨WäüO¿íaçd§“‰ â¡6UX Þëö+Dæ&^¥o'ÜDÐý†êääæ*kÌ…œsfAã3à/ec<úßù IHñm—š¼*É£Ô}*HÄ©¹KXdêœà\NkM—ê/a`¶þ>¦·YûêmšMk“¨q§n!x;ŸÇwÊ ÏÛ™=ogÏ9oá¾R'iK–¸â¢d|ú‘x”æ¸Gz¯V%¶GÍa"Ŧ¤-*‰3µàﲤN)‚^ôðü!¨ú Dõ·—MÔŸ¼÷öñåâçË£˜¿?–¥›c ¹B'äAð„,¢ðB>ï ÝÜvNJÆO}N6‹ê¨Ä þ|;91×§zØØN˜|^º³¸èLzÁ“4x¥ÈŒ ¶]f…Þ’Sºª%ê"3OÌõÿA‘ ”Lê—ÐLVÐ>>dc©rמ+w¡+›~R$«(E©Kvñù5‘Kè!\fMÁZÌÒE.¡‰´ä²ö÷/¥Ì$Ïž¹óvö¼ó–ÀàþWê"íŠiÉi3ËGFÌ«Å<;’¶Ü1¥‰ùâƒLñénÀÚ÷?û7_šûŸ¯W÷?_æYÝÿü¥sÿó¹vÿÂý_}÷:pÿóíjÿ¿ÄûݽÿÉG]ïl¶Z ”ñúfõç¾¼)0³Á׈.pU1|§¦øDAp²ß€„µA×Gf·¦ÖGétFwÒ("L;C¾³Œ×çLŒ˽íÌO"væËr³Íˆ¬'W)äÚ¥ gÆÆ©^K¹ÿ»¼ü¦g*áþÛ¢¦u“]B±ÖMîL»ãX“¨$CÌl†qYéf]u¼7·ŸìH#t!>•þ¾tçŽshP;8"âüK«ÔCÞ}týsƒ¨¢™P Šî§¤„œ“èë`<ŸR¨Ly¬e¯mH,GÚQ›QäzÊá “›¯Ñ†’yÞË‚ÇJ5¾E$úRòX@`·?Lä-,Y/gÃ,ªöm° OXJ^%ÐùK$Rв%ã"ãž@ ÃÊéûOæ·‡@}éÝ`îj9 ãéðJ˜¤ÀÆÚ°7Wè ÙbÚûŠÑ'”Y~ª…þ¾J&ÉZt¡Ý%Ã^,ì6^ÛÜÜöîøLÃ3uFÑ­÷z€f€!Ñ„fg_^sþ#ØW(3Ò±}E—`÷z“þ­¨¼-ŠÊûß—Óq]Ãõ£¢]Þ)ë†þϧý£îQ sÌbžN"ߌŠH¾ië"u4  GÌO¼ÓAÞFÎ^ž 41º—rk°ãÑÿ!ÊQkì‰.’†2ôxv ç/°墸:–Eåu°¾,àÏý}Ylü^)m¼‹!Âû|x[Ckõ€ˆÜ¯׃è oc°6üû÷^@+tþ VóµH¥Wo8 ¾/ k>µ. À¯{à›#># C¦JÛQÄÈ|íØ .ÀpõGDƯ㽃h@eô sUý¢©.oò‹çÊ(º`àM°C{5¥ ^/¥t}Zñ/.I°©\=ÝÓý4|ûïž®±,^åÆ/iüÈÎT×aÎ}Xy·5ý6¬i¾kª>öVlQì´jnòôÕê3ryév>·é8Ùom7?í5á{wkï íêlXíëÆ,d%¹›­Ú^cöæEçxO• \Àe8E¿|Jÿ2_ímìœ?‚“2Ìcuø·˜t&3Í?DåÉk€Ê@nN¼ê Õ¹ƒÓøn~÷ÊÊ™ž£c,œ2=›j»Ê»ã7ê~Žýeu¤Bh†ÇRŒ²¸Á×F¬ßýpܜ팿~ÞÝ}@û*àükøïü÷þñ^¬€q€×=Âè29·uµo>5€CBÚW법‘eÞ®uD}k«-öO¶ŽNšÝ.|®Ÿq&g¿ )Ž“Ü+ŸOT£g9×!„Ùz@‰œ*cqØ÷Ããf×穨l¬»3eÃb„W¶6ž½Ì¡e¦ý­zqsLÃaQÌ+(.àÆÃƆéH˜Ðш—v¦ÊwœÑ-ZD×™“ØI„T‰÷|P?zúïŒØT}65)êÓ­±êu«¸•*µÂÔÍ^\§Ð†ˆêû^ Öªµ¿ J¦G`¥7Š0’"ž²á7±†]Þ†ÐÅL;žeøûÛX],cúí­‘GœiÜxÔ"hö:Ë~ë5»a!™×3L +3Ï|öAK[úÀŒíº×Uµ‹€ÿóF«Ùþ¬OØVð -H¨–™Hîóõu{óþþKmÞß—Ú¼¯…7¯ãM|«¾uø(Ü¥õ—ÚðT9½Ž fs±êŵ÷þ¯\ko–­EÉY”m̯ŖܡÖ'31#áï¬QS«é‰ä‡»[e$~È3uºµÏ[ àOlÔ'»Û“ô÷Û?—AÍ—ÿå}=„°AeVÿÉÌê–íùi,Ïdw~{óóY›ŸÍÈŒúÂ¢Ø‘Öæ"QÉä‰[ÙœéùlÎtBÒ.'ªrP‰ é¯f¢–Ç÷S§ Çk‹U‹+ƒ4?Y›ÖBƒ´Ä„¥MѪÞs¡wÒìVxèü,VçÆfÅ›?p‚Wæ¿Îf\h`–k¾´iYÕ{Z£òN–­¸Ø„¼“l9†­šj3æ}NVvb ,m!VõV¶aáØ†÷MŽ‘•mø¿ôqì¿÷?Ñýï×+ûÏ‹<+ûï/ýXößgÚý ÷ÿë·oª±ûßoÖWûÿ%Þížý÷ šÇ­ý¢Ø+"[Q“aëø·¾²ßµ];ª5.NX²þ’æ&§t{pHãšcxù4½s=Çí-w ü *úãû†–’õA%ñ”öˆÙ·qI*MbÅñE ž5¹žÁ Œ3‡ýSf`=¹ùŠÑg’ÞG}´=°å1ž\”;AQŸ`tK³î„}ú(^¿’¹<)ÛTënæ¸È~¾c(ÜR…[d®K)¼†¨oƒi„fœ7·_<Ì=YxA©Ñœp@PFrTáXA·2Fð2@Mvs®Ì«æÁÍyQÒ1\s†fÜÎ#»æ5¯8-GQŒGCNÒ:—KÒ»þ=˜ßÙ€`P4­èê4M«ú-»þP®’¬•lª¾Îa]Ë2o rXãpRÕu’’/{E0î®pòñüw-¦ù*mY¶ìãƒQÂQ€ùÇ1RcD:¢fm'ÿ‡V 5Οeä?G~yiJCïÛC?¡Ÿ—%H{è6™1ãÛNê[½ :â*ºFÊgÔpŽ.Tˆÿáæè?˱W¥AÿüÛOÉØy ùI é•Á¢ANÖB¾)bÃSä Z4ÉÔâHÕu=ÊÆø*¢¸zóQŒäÐàÅýÛb¿a¨Nþq6Q^÷ñÌÎ,pnIJOU€,¶ *A¼¥µÎãµÎ½ZçV­¤Z E¢‘Ç3 yFy :y<žå ¢~á²êK ËÊŠVYê£\Zƒ 8²æ™•“Þš—æ9ÿ~.u'ž°î‰¤zy.ǰ׭uð× 9#)ö”7ö\Ħž {"bóàNC<:†`ì¿<ì…-ÿ_Óô³Èÿoª+þÿEž•üÿK?Fþ®Ý¿pÿW«ë¯ãñÿW÷?^ä‘'ŸËä}:n7( HŒ›Í“Æ•:_IýAf§&»ü ³‰>gâ7q^”²2Ë¡çŽÌ’ ~†z&­±T‹dlŒ‡ü+ÊP×Ãñ71ö¢y£·Æ,º^xÓH2É$šÎ‡,R«jYBô«!,§¾U j¦R‘£~aßó€ø$ž‹£ 8³¬É”Ö÷Mº Ä-6—É-,ƒ8¢ÖH…h¤Ïôó¹õ3}¾8 Ú«. ¿,‘ÙX¼  ¿_h“¢IúËpÐÿÝÍÿGWë? ÿ¿ñzeÿ{™gÅÿÿÒáÿŸk÷/ÚÿÀþWbû¾®öÿK<¼Û]ûßÖæzNvšäU³YÀŒ¢3 üsØéîmÑ—Žr¶IôlMvÆi¶?íÇŇ_Ehš ?íË å‰li—± †Àú®á¡DÒt¸•ËîN~˜ã¾RÆ€œìxvëãñTeº¹àÚIWîÑ¿æ0›wÑìv|U”Ø'y9=ÜÀЇ„Ê]öãªL€£†@Þ¹±oª»ôoÉÄ4ÂÆäËËá¸ÿE&ׯ¦'šDWó>ö¬'®¢¦¯šˆKìÚ6ˆR˜VI_p–~ØýñD©{Ì·µ¸sÒ¤(=f]82cÙbI @,J†sÏ3÷d')=ÛlÌòóXQš¥ùPO”±§-ÂeÙ‡|môÜl"* “f-Sº¶XÓÖÊ¿•¾i·˜à+CÆ4ÊúU”è&›Ô–`Ù±@w< tM‹Z8ˆväÞ´ñúSr:•ìÁ/U’»?¾¾.=v[â¶7—h½Š¦³Éø‡¾-ìôOôÃbÂ|r²7é–Ž: ¨ïÆ-ým=ymÁ‚Áx<þ€)…퉙°zCg|ØÑ \”wp¼7“˜?5ÏÛ1¶UÀJù䘀4½–Ž±Ê«þpñVXàSXf8ú*¾öªo²W½íT¯È=/‡·±¸²Lº'`F S'š…ý¼ñ–Ü™ßäÛùᾬ{rbxÃYz>Šé¦ïƒPåtüKR-û™Î.Ó"Uÿ¿/LfÖœkn,lÇBÔ ŒjƒÆV•cãòùêZ2œÇ3m¤||fOU)ù»¿Ç’ÆOáÐá8)Sy®ÉÇP,öÄÐ[/ÉpWvâN}‡+²7ä¬÷€¡‡åÑIáq(O£·iA ìd­ß85>åë;hãYñw*'Bû(J&©ƒfГG1Æ+RžÂBßÀ6'*ï€ùÁÑõ†7ãÉ`v{'®{ƒ!¯‚äU(Å£>%Fq\ÁU§cƒb:¿”K0ü?ɤ+`Ìù$R>8˜ßríBe `}s‹YùrÄSâ¯O¯R=íÓ<º‘Ár0‡¡Ìõˆ‡Êàÿ ™ÿp gAÂ=•co³ðØ 7ã£ÖI«ˆŽêô÷¨HÞ.Ÿ›'ÿmï¥ 3Pà ‹ÒÌæ0Ã̓­£=üs´G¿âO‡]zz´•h§(@(ja²¼4¼Wë’¬µ×Ù¬Eg¯Eß:{{•xÿb•ã:À ¿˜<® í¤Lù‚„|™ÕݘväÃNwëF}¶uToÕŠœ¤(ïHŽþ]Z{œöIroäûÇ+ß­ü{ð¶ˆfpΖÓÀs™.œ¡h„•ÙÖò‰bÒdü˜Èaˆ9oôë|AJýô~ªª,š6(§âiéè-Ö°•MH°€Ï-Ààrb½È øÔ6ÓHg…zA€X k¹•¼ôCº7ÂíM[zA%”¯úåápÐmUÒÛz¨ÛÉZùwc0)ñØsëÓ>¦dŠ÷™Œ+Œó9ñŠåÖWEQ’º].œW)骜ç0Ç÷â -ðnÅ1Å@‡,Ú9ñ¾huè•€Öõÿ­dd›ˆ‰wÊeq:ø7‹ätäÓÁ¨ä7yHÁ1Ëi§˜vr0’`fÖ©o‹'ĆZxÎzÎd¨æƒ)–åcG¤K%Šû”Ñ’0 Yur™ñ $‡RR”РdeÃ2ݪæùú–_ œ–©šP¾ÄC1åUÙjBúJ56þë¤åÒóPÍóGóJe a(;Æá«Šú[¸m:æô² ¿X­ e9XGcÝ)x¬:j¡.5ã&rÇ‹QP”hNjŸIoôšãìÁ*ÐYˆçtÍJ? gš^,Q²!_kÿ?,äL}f€ìhØS0±\É~µ™ã·tmO.qN¶-ýÚ[ƒ©:ê[¸Vè%q˜rŽä’ =áh|¹ÐbÌmé0Þo½~ì:¦ëEß”3»„!mÝ–ô„,gçXD¥Ÿ¹R£kQ658ð8ߘ“€¬šÏÃk¤¥m› qü×õv]¦81OÔ0ÎJA¸/ÁÂw\^"\õY-z‰…¼wĨáK*ÄP«ÖËÞá•¥TÕ¼õ¾½g»ýÊÂí=)HZ-!§G œ|•º/ÏqNÊŽ[ã~LžSƒÏòÊìzâ¶åA˳•økê¼ý:žžS¥IàrÙÆC áQ„T#‚®ÝOÆpÝánƽ9žÍÆwZ±©·ŽRßÎ&‘u¿Yk+œ¹9»îo_¢çá,ÂÂÚÜ.Éf~Ùìy7ן[r!…@l˜˜*V6†§ÕâõÒbH+ÍyæÁö/& b—eh¾2¬¿EJH3¯¿$êÊ0ß]–@Žc‹ÛªŠêÃVUã#Ó2)ùmØ ÍëúÒàé,è7o77©?qçxµ'¦™;ûÍ&#ýqÖW³qŸC¬§ÐL 4’š.¨!©ÖÜÃCxœ]3v]Ì5蕼fc[ˆÉ ¢Xà|×)€ wÕ0ã¡ßô޾3ü!î¢ÉTMLAp¡c¼wõ¿pðãgï²6þVy:œfäÖe[C@ G%™£)‚•!Bólÿp2K³`®æ*žé×+â ÆÓc£ ls UgÊßÛ”¸$›K¥?"‘‰8ͨÆãp¢@Ÿ@¦ôÐŽê©ä'FÃD62èU³PM¤dN'eEŸÝµ;)?ø­z2Í¡ì%㈋f9Å.R»(MèÝ…¿¬Ùø¦4jåtMªPRµ nÊP*üû½i¤‘Nj;}]͉v¾Ù”ÞTZ®B&³5òÚ¼Š¦ƒ‰¶¨ÀÓ=Ø"p(bù4‡¨#ë‘n‘ÔJH¬ž˜fƒ¡hÇ÷¢òfݤr$‡±æº‚ºv¶cMa»CU }&q'΋qºæCŸ…ÚAt¨(®¬Iߨr á6³’:ï³dý*ä­c®‰>¸[›&üÊ÷×}\ÿßw?ÿﻕÿß‹<+ÿß_ú±ýŸg÷/öÿ}ý.žÿùõ*ÿÛ‹<šcsüßqüŸãîZ@¥Œú1‡)/«”¶÷µÙ\9³©œ|ü‹¶ôd(ÄÍC1äÕ÷[ô·} 3Û£_‹œ‘³z!o”+?·2«ÝO@d¬®W*‘fxЗ} Phb95Kwæ”ÅXà£óH_hF•ZÆÈm™QH:=.òç…ÂU@üT eå—Cõ1y(ÊášqÖtHqþóÂ6åÍ4-¸{ŠºíX­ÝÀw=%KO{ÌbEåü|=CÅže¿C”ï±aý¬Ï¤òìíÞrš&µÃ`‘w2euRúCÇèÀÒÚ$ú×|0aço¬oÛÀ(÷ýŒ“”¸jÇñ½ŽÈN÷üD¿<훢ÝÑ T¼æ£5‘ƒõÄ¿DQ˜ÿ‹üE>¿ ÂÞ!ü¡7XrŒ.ky(*?ÐKü¬òÍ_TÔá«yQÌ™ÀH‡=Ê0ÝÌnE›c#G‘ `ÅxÓq+þ‚4¼6&x|õïh2žÂOÓˆ´Sz1r6ž n–+=Ò:r3¼ÂÖ‹*ˆ—’Èí¥™ S€Ø,û®rýñh:˜*ŸeTŠÁYzM?èÞÈ]&Ó¿t*±ä®nPvW"Ž£”~“ˆú#]ÿm˜ßÁµ,D“޳dü»4\ȵ€á|BC,ÛÊàŸq¿?ŸD£~÷¼5Ï4êS*9ŒoCûEaùÀha ÁÊÒŒÁ¯ Wsßb°’.ŠÉ~kİ0³¿ÑÆ/­¸`ð6?Þ“qG!†Þ3Þã4)¹…†¸^å¾S- {@,gZ•"½Œ,(ÓùeIwàn0"bñ÷ª}øÔV÷~¦Û5²Oì ´ O³ñ ˜x†¨«$[[ô»š…1=>¾™>¯Õ°éM+¥¦ü–Xg*÷ªí–¿ŽÓU‡_‡øi§¦U`3¶ªéåÈÙ-¡ÎXœn‰\ŒÆ˜.ºìÅy(‡Ñõ WˆTpâÝΔÓôsÜ?rÎF+v‡*AgfóÉetµÌõ#"ºï¡ÑÉ5¶>ímž$‚û°î{0Tÿÿ¤+6ȾYÐý%N"U@qüËXš*ô'úe™²ÑÒâœõôyŠ]qX„\tD:y?`îT˜iðÀ1“ˆ.­LdŸ\²©6×ÿâ5¡)ºÁ‰ B-[^§ã hd¿µ·öx•ÍœŸ”i„|ʨÉË(ùvÜÂ;Möˆ_ëì Ox3ȹ´‘oªy¤Èº©@*“ÔãTV÷z–§ù|µàÜÿë Ã=íÛéøO$ln «ùÄ=ã÷k‹¤° ,½‰ó-“äÊŽi€Dc«öeÇˈV/æÿ«¨ ÖQ™ü-8÷­ZÀw!pä*q0Ô b¦ÆnëöˆY ±qq¤n1ëk•EFŠ̈˜á Ag»Ÿ=Rvn£ã æáæšE>>äÁa ÃƒŠK`xðï•0NªŸ‚…&Hàå´µÑ鉡œ.åE¨î7ãìáÞfY¦ƒlàöF:*_M1PSYVýË ð*QI[s&™™ÆE/ &ŽŸ˜u«P€9*ŠÑxTÒvX—_¥ÎǨýrsåõk*r´lR~”EÚè°ÆØfA„L+NÒí?º5.»È*¤[NÖ`ôóà+´\ލ‘Ó˪ŸjYÕ·äe5¼¥× {²xàU< ü±oádâa-p[S«=ýNå2Ã=¤/º;¾çwÑô°}¼—xš/ÕU9îuø^ L@O'¾­Ž¡Çõ… wôç»×hÀTŠÞ%Æ«Á…™RøÙê—ÕR=ï·ºçöå½ÍÖæ¨CŽ$Uõ¿yÖàRòªÞ)üwAñÚÈÃ:À. èœnkó}‘ÿÖèïÞÑgë~œ}1î÷@‹Kç#¯—OJ.õ€º Æ·¹¬ëiއ¦Æ´ÄËi¡ë`®‰Å®•Q.tæD±Rø§~(ùCækgêŽ[;±Ê†_e‰›jïUÝG]6{÷Ò—ÍŒâøz<Ñiœ¥úåÐÞã/_¢è_ݳ!‚¯­°:ŒR=OºOŸt ÒQŽ'µ‘è4[.A&#^°¶•Å>ÔC“†”Có“šÑÂè ûzQtéºÀ;ê×Sü…_Y¿ÒUSúžÏcƒCJ#/´X5™pÉß6H$Iè Ç2ïÓxrGÿwIšxŽ\}ºÔ–M0èµ8ü¿OEÏJuýºj¦/ÐTèRKÞµÇYÁ祢Èñ#äš|·êæX‘Ujê4z¾·ûæsÖ©72D%PJ29'™3±²‡È½o v­ÍÊ7ï"Áî§ßÚ–k¦ZS´- ¨¬ô¾¬N–llQ|N •J#ÄëQq¶i=¹êÍzJBFÊ’À¬’`HcbIc†B>kºÆ(³±#ú:ϧÃö@ø¨Ï¦á¦ZàYÄÍŠFŸª°ñR^ªp\Ü•3ôNRcï·Æ1×øÜ&wXùÖ2&8Úž.jôb©ðÇÕœœÎ%og×6'̾Å4bŽíÜ¡ì³ò´@3Ž#(MòP‰•i#1˜¡ïUR—“$i5»Ú-[ÿÖûAÎC¬S2&²~oÄ.Ž”7%Æ’cÖÝù.Ÿý!ÆsÕýŽ9WÂvü¡=%ŒÉ$Ý½ÒøWòrí3–CËí0ƒwåb¸]^磌cb4ö2Çžéê7tUåL¹h4z(/lùù]âB‘°­ÍnK AýÔáŠGšŸé–ÉÙœ½dl7v™ç¤ýÉšN;†FñXÅ&æªôð¦íã·æOúWyC˜Mzƒ!Ší¹viwm/«Èq ôÀ-é5ìôi—–²Î>Ÿs–²à<'Þfh©:¢É–‰çƒ^—À[ …]Ïþf–Ù·ÀØÍ¦M¾¤öt P®ÔÞÔõñ±=«W¶Ä©J¢fãëëXˆtÑ›NÇý¡ŽvCŽù´õç3Ù{umñpzœO.J¾9ãoÎÔR„¸ÈÌ/(&ûÌi'oƤDs_²ÕZÞ!ú¿©M?ù?Ç)M“ÉNÉ6’?»ÙnKæi$rRGz–/sj$¶Û†fæ >Zåo·-JÞ¨ûAk:«Ýh¦‚D^X&A|ttz{Íõ àŒGŸE!ˆé3§ö²³gùäôÇ÷?Ü9Øu¶ªåU)½?lüUh†'Ûµ2Ú%œê‡U^ñ¬'WÕ=ºšÖ‘¸ŽÌ(îtјD×qMDžð,ù6˜:nÙ™†ë†ÍHï;vÈqcˆÿ¹ÍÏ[{{ä^Åôy¦è[Œ rcæ@©ŠÇ(Õ²ÛÕòêJÞ¸¼a«°€ÄNvêGå9ˆ.é.ÿÒΡKË1_N^ÓÙxüEnKoþуW;ð{š‹'§Züó¼3— ¼ÁnþÅ=3ŸÅ¹2c†½ýöVQ\lí}ìžÂ§­æçí®¬ÌÏ€ÕÈ%¯¼¾¹Îõq–ø¿ãWÉÚ7•âªPƒðõwüúÈŒèJ¾‘;ðàá_þzP»Ué÷Y9 «tòÄ4 S¢À¼ ðÿÚ1ü³ßJs͘Ï`³†IÛEî¶±MªÍƒsí¡È{@pŠ~ù”þ-›ßAú¯nvµV<ÍÃæÑ~7M·Úª5ÎÝyPZåê ËqxÔ òI^åÈ\ð¼.¤oüº|ÂRuã ˰òÕç´¾üèK5kg*zðrhý}Y‡ÖvÄçñÀÚ–‡0ü¸/Ô5 Šç׿Èÿ)¶¬lï$úJêàðFÓû¨Ïú†þø*‚Ãx—ÊÌóéœUƒ›ëˆ9kBB ý8ßkcd,ÕM;?6µ¯ä3Œ1eÅrþ21ðw‘„‚•ZÞTgYž‚3‘‡-Њ™/Glûg?MV r›üE9ø´+ºÌ–jW8ì¹þh{ч΃°ÃR“ùÉ£'ÇàtÔÃЊSR8\è ºmsˆ‰ârÿVá͹ž xøüFd tÏέ;1‡!¶Tq°åü9àÆjwœŽƒ »³¨µúÈy Á<~µä¤ààftÔ{ÌýÚ(¥k“‰ðë²qp2_ ÖºUc£à¤q)eCÓ‘+-ˆÖŽê_“Y®‡.1i)‘UÝèÞÈ56dÇ"ãÉd©¯h¥¿âN@|åãDÄж»]±fh3ÜÏ0UÅS©ãÿŠ«ÈœP¾‘ïdÚòrºâVý-q¡¨¹ÓŽ|AÅY~Ó~­`e}ï(áýÍš¾ÈkLsÕòƒŸó vc#pÎpŸÖ‚õª)õB•ÜëT©,ãî8eøPByÝ=ç‚Ýæ3/Q®Õ4Õb˜% r|@ ¼ÇÈ–ïäÝŽnª¥6塈)•cåt7‰tÔJ7"''v† yk¥Zh"öÆ…gSFweÉ9pUž”`M!ì‚*œ]5½Ó+h7T A…„ˆX}ý„ÒŽûj3A /°¤øÑƒídÄѰù»JXñ©™0"Ï®‹mÁ#7ÜÙ@Ïìî;_ì³ô}@Ú°(•çkàò+ö0˜>´ø °'Ï@ªàÊñQb¬š2“\Ë=P°ÂaU`…ˆ(u'xQÖ†ÑX©k´åïfÌ ØÖëéPF%”NöŠZiƒÉˆ}oðìü„wš¸7;DP°s`v±“ûA­ˆ!möëdåÀ=.®T*õí&U•»Ç`â­´Z$˜' %Á$N™4ãz¸ËïÝ êJ4¥]ãè»ËÉS*”:M} Þ×ó%0„"§FÖ³¥°ÝÄKšB8ÒYö[c¿ÿÔ·Æœû_ƒÑÏrÿëõ*þû =«û_¿ôcÝÿz¦Ý¿hÿWÞ¾}ÛÿÕ׫ûŸ/òðn÷î¡ ñuÌ'p`î7ÛÍ.©.·ñ¬Ü¦‹\ð¢Žßê*ûB¢¤ˆ*í"f…N¹¶Õ› ¤*\¥cH»ùÕÚÿÜl8Vz½@¼`šÁ;Èô u¹ŠmÍÉÆ|ì%“¥×¢Nö÷Ä»b¡ÛfrÔsÜcºzµãžÓ—“e³4ÛhPEáQ+ƒY4QFŠpŽÙ (œãX†¶dâ²Á’ݵ´ß§œUÃ軌5¼˜7ºŒ&¤¥–¾²Ûî$ñr ã/(—ÞõG*wŽ·ÊâƒÒªËX=ÿëð©¢sÙTðGªnVen~¤ÍðÊÓ|:—sƒ‘8IèCZ÷TŠ_0I0ÎÅ*=ËÞ}§mÖßëm×õšÚñÕ_Q¨•¥» ü˜·Ë )µø4q~bìmuQàuqØAw€í¼?PfAe¸‘]9qº’í*–;¡ærÎàZ!œÆØáìGª\r{:’« Cv}#bû¾T…ŽðŒ"2¡+ÆeD·(ýžÐ}ž×ÕVÛª¬ )’˹! ¿¨ Æ2OIóeòÀ¤È0»Þ àûü*¢»bæ[åòUqEV‡¬HS]î{ñÇ­MïK4й«Šÿ|ÿ(ˆÿüø\­ºZ­¬Á‘ìªØÆðù °º^fHXÜÈËó±:Wv÷Rn>‰š4Ýõú·Àg”®¢ûht…+Å{E†¡›ÏxrnÃ&£+‘iQÐBλdv¼|•*#¨Ë‡iÖ>&õN]¶•1¥‰G`V•)ÞIp]Y—÷eu TЕ5vZúAAÿ€MƒnÑLvÌ1¿ÐC:!†ðgû¹²oëV»»-ËÝZçja]—ßK•4v…ìO)p¥lŽèÆà£´üUM–v*˜9 L ®—žô3cçn.æ(þœù“{Í~ì¥@þÀZþP£gx… èI®ãš²&"4ãêÎyݦcoÖšÁ‰a¿ÛC.XUNe›/'‡§R¿W“h»q!›¿¿j¿2ÆEo‘[Ͼõßó”C7«E•]vgÇÐùR%uëË£ÀÙú;·¾ò<^r÷ïH»øV`cÚÕÖN`÷¿K9åú˜Ý¾nG½}Ìî÷¢»ŸgfÑî7ó·h÷ïm xøîÿ}ᚈ„§o±Ýÿûìþ÷黟}¾“w?¿OÛý k÷»L˃’BèIBÿüod39¾ù8ÿÞM‘áÉeæ7®O¶ JcöÛ@=_­lE¢P1Ï‘Ü|Ç+S_|Sž åÄ«cT¸¾’’mÆ3aªWE-ó¶)ê$É %%V•(|Ë!lfëü•=+]%Lç×׃þeœ`6f·J`@M ’Я Œ ŠŽAFq€Š•?o•YHÈS'=<ŽÛÕu»_Û1ªÐ}<ÍË ¿ÎseE–À«h½›ÞÀuC>’ô‰ôf¿Jüg•Va{V›˜äÞmÕDûHR',)B{àýyelgçkÉbŠÿ–àµô©7Î'‘6Ý8 ëÆSúªøÅN¾'V©Àš fAi¼*/ôÍgQ}ÖžïŸÉóLNŒaåû 5Û{ ¿!Çÿgúã§ñÿy·²ÿ¿Ì³òÿù¥Ëÿç™vÿBÿØúocþ?oÞ¬öÿK<’?rý:ç9Q#¶ªJÿ þ‡ýÖ +¬ø¥Ó®,éÇóó‡ankJÖÕ*`l6‡œ€eAÏÍ“š430sK¸­tΕÚ \éJöd®–.”ªVüW'âhNðŠŠµ?rÔ;¥W×sm³³–…ŽO¬\û§lÏž Ö™Tã¾ÀèÓí`60f¥pwÝ$ˆÞåä÷™ ÜÈVT˜"S‹ µ±Re}·Ùé]Å“Öz ¹C}ƒÉ‘qrÖª>¡ ápŽÈëÓ:ÝF|¥@üÀš¼KÚø÷Ÿ¢ ?ÖФÎåë’zý~Ñ à}ÿÉ ä;꟬ã:þzÕq2þ¹ØW¨&1o±Wˆ+U OJË‘PœÔÛõåVSªbU§] L{ƒWòpÏ~N*´Äk‰ŽhhV®¢z.Ñ×jz_ ÖÀ¸KKº“Äê»ñÕ|8Ÿjh‰Ó¡)ôwÁ19ÉNyŒ0D˜WXÌÝ:jf¿õ¦,ÂÛÑÿP¾ºÃ`_ƒ‹šìúÂ{Pv–•†ñLï6u—Ç8ÉÈvwQo„99bù7t vúAX‹o’½íçCíÍ£l^è‘SD¥D˜–9š ¬]F×'Ehœ ‹Ì¹&CÇýˆæ¶»}´ÕÙ9ô¸Œ†ãoʱEQŽ„ÕRÛ~Ábš¹F]ÆýL&g©úI߸s–FF‰u,Øi`¬àci` ''Ø©n¥ul»Öú”ßÓߤ±* ’Ä;„UY.\Z ¹:¹lIãc—¾]$OœŒ‡¶wðTŽ i¾ ia½d©Fo‚¡b¸§LÍ™ÑëÏ8„“" vw,z_ǃ+•ø¨$ùnáu¸ ¥tœM¢ž °L‘¤L¬M÷9.Ôm…®§®Æc壨Ù?TÝ{Ü %sˆüV ß!î’ ;¿r;PÉûëzf¤Oí)×–‚?™!n¹ªSF×tº7bý¸ Ò 9tÃÔ‹¬‡gÛ-,BÖh0šé,çÔe¼»¼ê‰|¯€çj…Æšú©_ó øµž¯[N©Ž7âàûxèͧ*5´p…Å>…xž{±È°xà«óÖþ|ïÞ”ô[ÁŒG+9n æ ÙxB§ë9"ëL!'jÌ#w? é€ÛVyÓÔhÖ‹®Iyœðާržjú£tÌ8˜‹<;» ÔߨF§À¶Õ7Œ…½Àx¾Ûq{Y×3}g ”uÈ®Å(B'E+U ¬Ç‘˜1¾,¾Á}Šì’r›õTÞˆ—C ëoÀ A÷OÛ„^T¡µû¼¿xvpWap@¿éõëâ³Â{#ñðCŒœë‰<Õ‘zmæÏŽ©ãsI>t&;€êàK^œåó]2¹ÃBæÚcÍ=Ù›cIÉŒ0Kfñº†La•™áâ“­¼æì1¢-´0¥yËÔÃØÎª gEñ5â4Ù8‹HqEêÚ¬½ç­Áø@­_ìb´±«=Â}(@Õ¼×'ßp¸¥lFñíŠÝßÒ¶"yäÆ YÄ̲üæEÂ`tâ2Š]ô_Ɔ¥[H£ïö—dëFçü§¾ýë<Žýçkõg±ÿl¼}½Òÿ¾È³²ÿüÒeÿy¦Ý¿pÿ¿y¿ÿ]YÙ^æ‘L€kÿ9©í?+»Oú‰NÅÌVóÐrv “êRv íhr‡žê^æ¹ÿ1ÆÒòÿÓülãÎç\}4êÿ$y{_™OŠK›rPÔáò(¬Ù™r8‹03­¦äYkn_•”îLˆ2à–‡Gÿ‰ÃUQ§¯X¤ä‰[q<#ŽàŠjÖô5^Ä1åd¸÷-—'ÕšAÆŒJ±âX2bÆ×–“`ÕTɾúãÑÿÎoÐOT6‘«ºíZP’zÐÈÚƒªÝƒ”!I Mb>n„u5œ`¯t,©%ò¤[°]•ÌMä5&¨a€«õŸæ¼ qÖ ] ´ñPnx•„‡”Qâ:ú&æÃû©¸ìM(=›ÑL)Å”œÅ»Þ4Í F€ö®7b”Ò>ÞµªàŸ:kËZÐ=Р–o”êùúâ†2'QÀ—‹ed²þlHçÎ+Tý>›ÌG}Šmìãìö.B Þ7²]rÔk¾æ«Â! éª×¯žY¯<µSéeð{È$í«®VÌS1aƒ×jòÑ5›n¾_÷h%ÉÞà?*ú+éc} jÜö&w¤E‘*6o^õf=|»Žs†—Æ¢+¥¢ÑÝú¿Æ„ÿÝ?Žî§¿ ¡è1¥qÉ+eù„,Ä<•½E^¥l9“‹„›ÅèqêØ\¾ãæ  §ÄvtI*Q1§|Ѳ†µªNQÝ%ÅÏjôi¬í:Í«¥JÖPáDÿ*[ÿsSíÿ4úŸUü¿zVúŸ_ú1úŸçÚý‹õ?Uxéë6VúŸyä±èè>W9±G7«jx³ þéÐü7Àïàh¿»ß=?ØZ…òsBùeQ%¥ÄêÓ³¾Göb@ÃíIÔ†Ù©å$°Ôˆ{TJʬŒ‘ñ€0à„ –åvF ’ŽTÏÔ‹š1õÔùèì×Ò™¯Ólö‚A)aÎîæè˜²AE6NVÌÕ`ùk$«]F³oQ4%jP@5^F?;ô(”jŒÌIÑ»OH„¤ ×@+ñ×Io0ÕÑÐÈ™‹Ž;€¬ìRôMPê0HˆÔB{ry„à2‰|†$N¸ÎÜ5LHoGÄË]Ï@U÷­ãpH{ÉÉÁHcµbR`8ld5@mh:Ò·0u»*>Y-Ë0Ä'«•’ŽO¶§Ü8;J)çif‚ƒé„FCÁådZØë‹ÆÕ©ý…P¨÷YO¦žÆÎCÇ0T™I]¨'„»ü¸ éðŒtBSòàce·Æ멬‰VáØ”[vÃeRàxyÑchƒ¦Z£QÔ) P‹ãÌbœV^´ðô>¹Fd©¤¶)q»Ž=~ÀŠ!•¦·;ÚrƒÓÂÓ¡dvÉZ ùþˆ#Î¥×QÙòö_Yj  QÜT¨ÏКh<Àø¬à|ª\Ǻaªó¹[^P…#\-ÙN¼’i(!;ºòìýÎ÷Ê7Ü0hšr¢–ç)žjRá¡Ü‰º8Ë ÝËÏð8úŸéOäÿ³Òÿ¼Ì³ÒÿüÒ¥ÿy¦Ý¿hÿWaÓÇîWVþ/óÈcÞÕÿtª9q|p°uâ9ðIµ*ü·Quø\‡Ïõ ´«£éù?%†ÝAÈí,rˆ…W‰bÏ#?Ð %Ë´rjÕ6ä"вÁŠ¥èª¼È°\ra —Ðu,?%é»~ ¸Ä$×,(Ž1Ð:¥+¢xx‹u9™ôµ˜ '_ip47UË[ÉŸ®@§Åý–ßÉÛf-.×¹OKÕ6 þÕ¾ËjR'džh(_'ø'²Íz&iÉ6©Éz I¬‡q‹pðåö~·ü€ÀöMo¾gš˜5kÖÌ€ˆOÁC…i«ýÆAðÂ1EO‹cü xHÁ“øWÀ_þñsµå ì”ÃÞQµ5ëWê3VÓW“u‡ ëÐî8oÂ'Àǃîg>Hu)»>%0$¢cÈ÷®þ}ç‘ë‰ËÅì#=È5^ çjp ¡Uòu;N)þ´‘¯[ªoÌP«ÂO¢D¥­ËÙŸêözûоâ‹t8—skpÚŸÞPý¨¤†ˆNÊ Ëàw`ç6+Vìr,¢®Æ§º‰€ìl1*Ž×î?Õ£‘ìdDêW»Tµ×¦áÈJ¦…ün ˜ytª¬Ó_¤5H>Ž¯Ï‘XwÖoD·Õ]£%Ù¤¿%¬Au×äRuÝ¥R~œyÉIÙ¦¡dDªˆÌå"ðvuíuJoðF´¼òÝ’võöÈy{dB¶hˆ.n+`~›î¤Ø7#ˆÓB½•²QÑ«†µþsü*ûŸÚ¨ÀNä÷úüˆÛD¬ñ.w§•¯UüWUõ¦ Û~/—Ãç Qx*xäì~UUo4ˆ#Ü>.ˆšlËLxžiÊÛŠâ0âÐG”&]²%³&@Ýp¤ dè- …cÉ´^çÙžG`y6× Ü6 j-ÅiÙBT>]­ùHÈÉY]+jÏeášÑq¥ƒðy„ÑvO%xÙS†ýÀžÊA›žò¸ÝSFŠßÌm ¶uÿ·p+©ãý³Çùç ‚Â]¶Ü9æ½îüŠòÇGèí|¯ü ol¯ü‰.d·È àÀª&Õ‡‘@_“° ¬V¨×rvá¸[cJçÓÃj5\I‘É8i ‚ÐÉ hI5‰|HfUSf$¦ßz÷þhÂD;æÌlóêC“Ú&ÉÞ6Õ'£ ¾ ÉË#úÉ#¶éÊ“ô“1ä·Ëô³šN?ÑVÌpÿäaþ)hL=}ÉÔˆ¡OV™x"‰t‹Ÿ¨â.ít[ôIiŠ°ä« ",­g–ú–RXÚ@aiÖš¥{)aé ™ñ,ÂR#MXj °ÔxRaiý!ÂRãÁÂRã¡ÂR\²…¥¸(µ¬°ôœBåÑœ‹1µŠ<œkU¿XU DÉ,KSõŠäêU¿XUÉeÁ³¿;ºÉ<?¹%K;û+1æLmqÞA² geád;ìsrÚ–Y4ä’ÂËŠkpY_ÀñÊq»yRêæäß–úpÌ’ñä,Ç]^.ð@wOÜGÔ9"r°Ê°$ßf\Íû:’ Ò3^>ŠÞðþ¶ Ö0˜=.—Ñ ¿Jw rHf'Ûj}Å$b›`NÌ@L8rFêÝ6b"Íz^hÕ.K1Ü ~¢¦(窧ìUVQ¯‹€9UÑC0ë墨”)¹QIEòKs’åÑ–ó¥Â¡|ÅÃ:òb³ »p/sæ <ޝæùľj¿ú€SÙc×¥¸h2ê]¬Þ5uckIR!4BCÇ¥Lì‰uÍô€×vA \æ °LÏx‹(0ªK>(Ge¾’ ³`ƒ±;‚…36((\Àm,²¹Ób‡áx®Êªúœ…ÑE¶?ăW|À Û`ør|o:ß1¦PMîÎfËâÔøíReÍï_n?Šéü²¤w­&èªvÄ2íÄZI‡}üDc€]•>гeF4±.Öœ&; YÏhçBù,ؾ ÄY™!É@mi xrØð3bnɲ¬ýx¼S$ÑÍ[ø[Ü98¡õø„ºHbS[/û…)ÀÝ“PéígœÌТÑ÷û 0%™ØÔN%ž:žGý ±^fHñEü³µ÷Û[Å…q>mÏì¢ë¶½Œ£vR08€´{x­ôY)wâŽÊü:ÞÊÒA9©³êÈuÛ¬ç)«öæÃÙà~XB)8q_®é/ZT+.4ú9I¿éÆÞ0ܧ~k"pÄô‹u+܄ Ž4!bÁ&¼_„¥ Uý+…òý@^§öo#[ÿJu;ÆF¨—¯ƒ½t•†¤ÐÅó;ê/ $ÒBð`FC6‹U©£2>æ)Ma„o“Ç/,|©$hy"*j"Ìç2þ¨6=S?ùUCÚà%À‰B²Áƒ;Ö5ªÁpcm«±¶n „8ȹ6|ÈØ"”•U’„Ã8}j‹R<‹îXÓêXÓîXSu¬™µcÜ·¦¬¥a›ß fÞ¬;=”Õ ó6„ï²Ú†Öv—ÁZ–â¨ûû_u[@ÝãçCÝwBÝã'DÝVuß-‹º¿/º¥Pw;Œº•õçÃ]e³"zJ,N¼»TÕ–UwyÌVP†œ ;[ÀA[õ" Ýß? Ý­Þ6³õ–;Ü v¸¹€XõÖrõ­õ~É…ˆT4–ýÕex‚Úc8žR˜ã©¤°¤â1{¯ô´çFœ(=ËSJ`y¶˜éܨT¾“J <Ï¢ž‰ÀÁQJày*•eѼúŒ˜ç)%ð)‰b[W UÙd(…%x…ÖÜ–[ÜÕÙºeø ·ªôÇm¹õÊnŠ‹њÝ¡F°f;¸Íl_§MÚ’3q7žÎ½h LÛ¦ aâÊ ûs@ Ä2¥Í®¼¯Å¢%šm×Ñ¡£]G^?`ßÛâï<¹Pé4J—®¢ÑXå¸îǼè’PÙÁ­¤¬;}Œ8IDäb{«{ô©,š3@"€}9÷¿À«þøŠ$‡EqZÑ×h(6D½U묡oÉüþª'/™Mç— a‘rÎگɼ³8Ý9gm”‡EzDËçRÉê¬ GSKù±)òLlìV9¢½t±Áø™ÁÙÃq ;#ºú`¤‘}€îy±½¼2-,ÓòO»z&Xw½ïƒ»ùÝâ”EŒrÓ[™ ؆Ãt"º*S«ºî‹aÔƒQ¥TVC•¡J^r'òcÃ!4S9ƒwUÿSæ$æZ’½ýMÔnþ0Ý´AìÖ­Ò8m¾ÐÖ“tÇšÕ¬SéùšâÙtIåÌx+Ù€F8“£x49…Ê5JÛÓŒ¦÷íúaì×ýÐW Ý'ÊM»fgw]à Œú„M{›ý]¦\±äˆ7§7¢,ÝY0¢,“QУÍêÞ' W=ªÏ›«­“OÛÚK >7Ý1 F³hÒ¿…ÙAÎDN$íZœÎ9l´ 8›Îäx¨L9»ií4Àþ³]<©§ÈÛN£ÙŽ£‹=R¶¡ÈÚeWÛdع/kâb]†ŒæhÊ£+M:¾Ð7Uð[4qpÔ>ç¶ÛÌ})~‘Éä+ˆ¸Ã\Ñ´$σÓÐGù ý_ÿë Cw´ÄÕKv_ƒ,U>@'ñ_ge©Ï’{}ö¶ªÛSg@ôc!ØiÓÓB §‹fõÔ*Ò¿ki=å%>•€r߯“/SŠ¢…ù´Ø®¯©½wú{ï´Ì{/kâ7/ï›ýþø^fÃÂ_ŠæEß{DÆ8¦9õÕ!1Žäã/1£#K³èª(.ç3k/û7ÉQí¢aÅðþ³(¶€(Œi.û·ã1iVH~Qì5ð¸ÎGöÅ/àLæÔ¶Å^ÿÆ{Úñh–¦dÖ""²$’„=R)($…;‚ÑúØRÁÐ:r9µ/´x^báË^ÿË·ÞäJ^ºë[‘bä p ƒA=̦bÍ ýˆý‘ÖO :â&wÊG¸’ÂXpv›ìª<ÆwÀ8K?¾¨WÑw8´£þ$H„}=ß¡D6Ñ= –dµªéTâ9ÁR§òr`<™DÓûñèjŠâ¨,°KÓaÛáwa¬Dãu#(ò튒ph S ROq~h±œØÅ #íR»LQ¹ÖÞ,£dÙê–/(¾Ø.~«xÑÄtòI«¥Æøþ‡;{P§¡¢©Fû]ÔYVHm‰ßNé«m‡»üã~¨4ž»TÓ.‡£ÝU‹¹)pëHÚrâ•}3ò9íüSjÐ]Ù¯E>DA:ñR]SEO‹‚A$&<ë'«l<š yx Û«²‰ŒÊ*Ób|0_¼Š1»R5e@hIÂS”HBóm0" ØzWNB:_]iÅ (Ô´’‡COK´ÝG ,Èw(÷^ÇîáI&? Û˜lð‘ŽP(…]Ná- Þ×Þpù;a±]Xšœ£–V‰œi+([ý¨ (ËMl}Ÿ]ÓºO\iì0uFñ0²f,b‘ïó#7'Ì2çP*壆ñ ·îÔÈÆ°Lìú‘|Í'Õ®Sg÷ ö“Ù•©û46)2" “ââ9–Wà žÑØÆê" …-Äõ†îu l™pI¡‡Mèp£¤’: Ã"xÃÐ<‚è’½R%„iBØÈEn;ÖÜòïM™[8­ùÝ—u*e p¦ýBz/U°(`MkÙª¦Óm|ê6!â´Ýž_CÆ@q‰|âÈDòêù¿ÇÝáIðsÇ¢¢Œ‹ ©ÃÐU$IJ#ˆÌ,-&§VW>2þ,ê¹ÌâËmRº“:/D« D"1wû&;¥¶_–%Ó]¢šJPLê_ÊÊz&sùœ"ï¿©Ö|:ùy(õA(l—ç oz#5ýV½LÞ'‰·zgXvYñGíšQ dg“ää@í¾ÍÈjrn“ø P‡¢Æ)gI'ÍÂ)‘ZW3)ñÄiKOJàd-« èøÉm‚ANRÁsPݵ$˜˜#Ѐ‰çè•^à† ‰])ùaùZJFf÷ïBïî&n :ÚGãQiî5¹kcÀA|‘›AÓÇáºjá ëXÂê…¨¢’|4\:ÒŽ´´,8zf4дš²–Hfõ¬Âf„ŽÍeÓÇÜ]ÞÁ¸|#ilÙuuø:°½hé˜î+ê¢Ð‰š´zjê­Ã\zwáT¦Ï¦i§ÀûZê$µ˜wª:]¸d§Y‚dÒðqã8~ö±ùŽSyÔʯ}ð…ðë·ãáÕ4â”?Çð'uã%Øå (FãKivki7Žãu:¸Ce½K¿ÄôöÇ訋tI ƒ )GeŠŒa·CÚM)ÕÅáèƒrh9åé BÕ¬îº&ú!Û^Ç)£}¤'XQ.p4žÜdÔ£…æP÷Çü -O†UÇ–e•žt>"  (Ìø³A‡˜F¢‡7gZþ®¦ñ5Y]Ðø¤L¥_xNˆÏ&g?•+³ëo>Y¨¢ I™ý7s9¡æ 7)á‹K<ÑoXéÞÏ ÅÏgGFÉ»b‘Ĭx—lB.¤[Ó]ÂÖívÀºØ3‘Ù˜\øUlÉj MSr!nI^hH–4ÅÅòdÖÍLò¦¤ð_eJ.HH%—ýË‹ÿÛlÅ¥]å!ËȘ­xña‘ÁVl7c€†kÊéÊxF§º ±(Ë›wÙLʶ2šOK–R#_d"W0´)؜ৄ—´õ~Éjêm-2õ¶’M½­$SokyS¯Ké,œH¦sY|—±ëI£0‰]Ò(ìŠ^!âºÈ2,¼ ¶X¨a¢ø0›±´Ž*.b$˜ˆÉ@ŒwÙDLëÙ’¿,ÆlI–˜ˆ ‹LÄ­0KÃK]JÞÂA?«q#q!“‘X®L¨LÅ)SH³÷ã0ãÝbsò3Yˆeàu<;«Ìü<Ò´klÉÆ²æ´æ”|Âic.Xöhä÷ç·{Vܰ©·à…p¥æ ˆ‡2YMÃ……¦áLÄįQRŠÈj¢œò—02™‡›£'0ÂæáwÒ<ü>‹yØ5B­>š‡¿|Ὸy  yþ”ØL—‘†ìÿ,ó0†i&£B^Ùkä‚Û‹ ÁñÉÉb¦¸ý/l .ìÔK;;Ž>(‚ʆb–à%ÍÀµÁg´_¦.ï`JBö;{&‰AJ;õ[ŠÓ&ÃSÃaÛþìfÑÌi5œ†á˜&+•Tƒ1ÆòzBƒqåÃTR˜‰ÝQš±¿éØæ†Á¸´Ø`\Zh0þ¼»fjËW;ÚXìhöž‰‹0¥¿Nõ©¬Å»R|b¤àí-'ýã";ñÿ5ùiâÿ¾]Åÿ}™gÿ÷—~¬ø¿Ï´ûíÿwo^¿‹Åÿ}ûnµÿ_â‘'˜ÿ÷ð('Nkín·H.ˆónb$æv³(¶ñ¼Ü¦ÀðãE Å¡ò–¿HŠœš¾ªbà üá%øöøkD'wÐU»©q|Cvp‚xØ´UìM—ÃÍÿá¥"è¼ÈÍGCÀGêûGAy– ¹(¼Ÿ¸Ÿ õ΄É6œ8R3ùÁèwÈPa¨`…ñzˆŠ׬ۀ¶1£6L #ŒÓã Å&þ®âBCkÐäc8Y³XÛÎÚg (»P–×Çš,~ŠYª JŸ1GŸŒï¸mƒ€—i¸`Oö$†Úò€„›åm$Û•á­g*P¨ÓÜZóÑTÆ{¹‡&Ã!òœ¢Z`F*¬mò{S' %ô ešú5ÂÏ—,ž®däè«hÚŸ îUøuò˜Óëk²h[e# ÛÅ£H +Ìe&qñ£K³'O›NšmÀqSµ½Þ Ïk‚gaï툭§e\Ô²Øõ}Úì4$¦½;EÞzS\=[Ëhƒ‘“eVlu䳈&œæHU¶sƒâ`Í¡‹ÉK„<È‚ä€â?”+ ÿ§Œù¤ãXe/R6Sç ÈÇ…ü« uÒ%  -–" iÆ:T¤]„Dš ¡ÈÈÆ¼ç€#'H©$2´HÞTôúýù9Á-ïF(Åm tŒRéëñG"Fö–³ÉÁ€Ç67ý7ˆÍ”´È=aœá+ºs ú¬÷û…5íÝïeÜïYÇ–‹±cÑƒß ;(ªõº7@”ÜgøžuÞÖÕK&€=ø<Ä×x#o0‹&¼H!(xZHR2ap;`{¹Dµ€Ù-f5°;ûï¶T›pÆLÆðG‚"„^„h h¢xâØ(>“ä1S wP´]áòÏG0"¤n<ò+íõ‹¦[âL¹ªfâoÇ“ùÍ-O¼‰ Ž@›Ô:62_6ë §Ë†‘˯©O¹iµ·–?F?Î稓ö›P?ä¥y)n'0ÚĸŒEºjÀ¡ú¼ák¬¹&ÞÕfs²M;ÌL¡ã¡gÞ–ž²ÌâE–Y´®.Öpã³{³»`9Ñ N£ ö;¬Z¨jnÝô&WÄÇKìÒÍF”¥ñÓ|Bd€y_~ô¤Èõjéý[Q–x»»ñðy}yh w³÷upÿÂY×ùôD›Š@ß[½Ë1¥1rÈÇš\©–Ö_ëÎ$À=ê ïoEýG4™²Šµ-³8¬]8”zS S0Š¡§5†,ghÐc¥‘Ö¤»xKªsŒîf]I,å@4ºCkÿd|‰ÇoïÓ ÌÄj\#gJ÷;Ußdõ\uMô®Æ÷3yÉ aù™F“¯=âmk·HTþ_Ñv#ÌØý½É,L.pfj§m˜¤jQTÞ¿gNÏÚ;¤"êßÖ`„l*X¾‘Å{™á9 á}Å‘¼¯ÖSÍ–Vìo«BZäï#îÉ:·k­Oi:21Ëü‘ŽYŽß°2½{sµžÖâf­[IkßãüQ߯y mZBXñPÌôÍã=è Æí†:ð/bQ§ÿá‹.ü^u·ö`÷¤Lï Ô:+ŠóäÁÕÐ4Y/Š:ü­×±9œŒ~Äà¡ñNíúY'7ƒ(êõ^«ýë`½¥„t€RQþ6z–TUZf÷&½Ûðß8ÏÍC ²µ…ƒ,UíÙÀaI›¾Pp¬€ 8ŸH/Û‘…íÖ]ÃÖ¨°EæªýÝa©õÃ6f¦Ö3èxðqáfkß/½u§\Of•3]ã*QtSRvKbâ6e—–é¬ÑÙäȹ¦*ÌC“@¬øS‚¡|4‰®€“éÁ¡ˆ? å.!¾÷u<¸B%ððònÊúžË1üs3é]aÖ=OÍÕ¦ó«+Ô&hn ¸XÜFÛ¹fº¼¶fÏ5?†ÄQ5¨ßÔötF¯£Üxá V¢ÝŠŸ’6 ¹Ï“ÁJÇò’‡å*QnqWÐV 9º)ļHò2ã ê¥„J˜X³h`“F¿|ƒ‹ÕuÛë‹ß¶·qaKìT/.„T••X‹V°n-¡óÑ]¯ ÇRé*º%F¤ÛB·1 ç}P™)6ì°¡œÌ-àZÓ!˜¯à—-œåæÞñÞ+=f; Üû—s½¿YÓÃg_Îð\CÎÃnEkVİ@!†WçE{›°©«)ïœUõEÈI}£aà;=)\PÌHsÿDö‹žJ/GŠaGzºžÎþtq,ÖÆ½ÞáÅu<ž¯T`é\vN£0MlV\’جÚÑ=SºNŽËès·¡ ÝWR° ÑA=”Y)`D(ÈYv5T‰&:1;à l3Z1}©a’IKÐæ¬^Ÿ¤´t£l‹SÇý–­›C}ëæH'f¬ÃR=ât‡-uHŽU8ˆí\«Ø*qÒ­Qt3Üàù/¦c>­,Ãã–x6µÃ"áó]­³é„ô|cX Ï¨ÖG³¹Ö#¢ÌŸ`•†vç£ÙȾ`f æ™M ÙY¼?-ä(àȘ ~õ{x÷Òª‹@Áºh@ÓÈš3ð–s "÷ãI9«¢”]-Ok<þB4¦G™³prïPéhÙ´!T|-t{"Þ⣸äúTã,›#jWEÜ[C6E’‰æ€°Ðc®po;áûÿtÛˆVØ €àªîCwJUôõÂëþ[°9aÓ¡jø¢6.T$w¶,huÏĬȆõS€‘!Í£l‰-oœ;Y`È´Á¨^®æݘñT5F#Ã*Ô1ÊÎf¨Óêº#F1ózŒ\ûŒ„ؤÁ¦Ø^3éõ)C̾÷0YÜ´,✒wÁÜÁ=Æ>8…ò8ÙaT¨ÕÕüöcˆ^õzMÝlx ”Z-Ü‚äBÛ¤dÕ ô´îéS¶äÆ‚ØÚõZ× Y^!²T~„º€+ÕêX­ÆÕøAbø¶×1/ù7 ~ó-7€åÄBe8‹‹+ˆá³Ê».]@/%ŸuGCuce¡Ü (¸ÁèPÁ3šӲß@zžð¯Oø6pZá#švêce`„8¬o¥ó¥ú-8£(¢¬Íš«c ™3²r{¿[ó\B²]-÷'会9wÀÂqIWÓÖÃ+½õ½ÝKMþôvp힌‚±u˜y— µ–·‰6‡Ä?:‘ݧê÷ɈxÉ}b™Îí“×üé`øÕñèÕ4Ü|×H¯^CÇØ¥¤Ã÷HOPM³–7¿%·†'8ù˜Ì/Üå TXç­†‰uäËŠ!s¦nL±ŠV©x¹sª!º•ÏW 8õ%Ì@t(«IÚxdA^Y‚}†·µéë¹X+H½ˆ~“ _ËbçH‡uƒØñÒ¹ßbàzºà•îbHÚ<«falEmá<‰‡ñ¿‡ØÓÙ·1ó1ýy˜Ñ–{ŸM}».PE±¼b³ª.›ÀuH•¢ëë¨O7>éꧺ¢År‰D€¨z,±î±?É4ŠpÏÐ÷2Ñßõ¾D€r{Å= úlÁñóülÓsÀS€ºçÍâ6Ý0ÇwH_ö ¾JíX€w½ª}PHÛiK+}·c7ØM[ij@cø¯ÿp„D¬ç¿a¥å¶w­}ˆ³Ýsèw€FhV‹¯åM§Û9w¤yû;l"õ¥ZU G ‚¾ó+’£¸êåôɽ^K>+ܵLZHoÍ1cŠd]ÂÄõKX¼„•ó—-9hÇÝR¤¨ð/WYÐÜ+ò&övnWë‰<l8b›®ÔÖFYh²MÄ&Ïb³ÈG€ü£Å í^冫ù°ºIÄ7·3ä~¶]Égv;Ÿ TÇÑèa€ ò&½œo"éÂ)Áåò=0H?ï§Ñ¿æBM+q$ž·¼#‡Fß™TÒc.\ûšÄ¡|¡ç®“Tÿ–ÔJ¤¡ ŒG-4ˆkmÝ…r$#†Î¢™;¤'è@ŽÜßÐÜHF†ËèZõ¼OÞ_cmÃ.ޢߛ¤w=“±T¾[…= 'P%OÐ%ü阠ûdU瞨"ìð4Õ¢-¾Qpš“@Na:KUxsån ZݾZõ x¬ÛbãG 2T¦`¥4på <©Oª Îç7ºUMKp«±ëø5Ø?åô†¡=1FÝqH5::÷¸4÷š)^V³ê¯²ÍÙ1ž‹´ÌJuóšç©Ú!âÖ­æÕ¬ì„'L™ÕÌçMš[SX}£â0CXã÷÷æc“¦é‡;kVì*ßÏS¾6I« Ä ‡<ÈÔŸ¾÷ÒîX)²xO¡>|ö[O%¬ö¶µ¢&PEa ÌŠŽc>'M ãÅþƨ–ðDbâûÀTÚð, OB$ šöî™$ñS~¸ñ¸**\kQ/ø.X€ÕÖsváÎÙEòœÁsaMÛEú´™Òræ.Íœ Þ B<‡H 9†¢åž¼Œ¿‡ä¨•8»MÞÓò¬ßPõ€L2Æs–œ¯øðJ— œ»"•‘6]þH7(} £ï°Ž>iŸ/)+Ï=«êÙضi+V[ú¿ÆÜ€C<è¬#8p[±p!ò5ý‘VUúÚ*š¯þhÓë®G!— UR•ƪ*9~Z}Ï#ÐrKgd¦$È”œh‚œ) ÍLÙ vŽÇäZ-í(+¦;*¦ o*Öß)5-[-Ï›œU‡ðž’,åµ×¾ˆ·¦mÃ;‹SÈñ“ا°ðl¿ÑEdÏRös<ú‡­Ctv»ðeAë%B[ W)&<©Ê•# *iS¸ÎG1Lu·Vü½Á½ÀÆðP®Féx°ÈO¡I8§q¶YYìuD0¯bЧHQŽ2éÅÖúSo0¤•kÓ*1 Úéß6±¯DÈ¤ó•¢ :x‰@q¼1“ŒÖâÉFLzicçաוö¹b–D6·ÂA·Ø,=о_î¦kõmYÑfXßàø[•71CprŒÔîüMOüãb´<çãÄ™T–ø/o7Vñ^äYÅù¥+þË3íþEû6~õ­¿ÿ+oVñŸ^äáÝîÅ9ªæ0â F\¬EMÆKëÖŽé¢Ckþ9Ç¿çKFsÙ(WÔý¸ØÃa^ ò<™Ž¯gßÐþ‹HÚ†ý9W|ë6Æô±a4°Úýd0ÄÐ0ï“þ Ë~™2»rþiÞaÒULÍ€]"8L-Ç@)&L7ÇÀ1í"­sŽ?&K(ç9Ù“z,ŒŒCƹ#ňE®Ñ}©fµ»4”B®£•}À›9£Rý¼”•8­VdÕ´Ÿ¾skÔã0Ú¶î!¡"½Œú~„Bý í7†Iв?àU«3Äáéàn …·ã\MB8Ä©yèG^XòÌ„NªÌ®ô5Õªx‚„az2ð¶ÔË'd­8Éwó'Ðk¯Im) Ð®ŠíŸÀ]9ÿúÆ^zŒž‹Ï[ÛG›²ŽøÆ»Ûöˆh.5 ~7#ˆëkô’UËz…Êb+¼Â6{±¥–.†^|ñ”<„6Œ]ñwŠªeés<Ú#ç)“ͨùu& kPƒZ‘ÂÚ§DFaÜv¹5ô~±&ß­GÑQÈ<­ã]Œ­.Ç_£ð¾qï'Î*^âüûdŒã¯dÃcÇÛÐ+]Éžÿáö1Ó’-wc"‚tXM¢{èÚÀ,¤äÍfÃC1 {#[¥-£öá”7÷˜|ŒÝäGÅ>ÉÄt@àÿöÞu¹\Y\3³ÿŸ‰ù‰81±M‰›EI¾ukEPÛ”(JMRÝrï8q‚’JvÙ©Å‹Ý^?æ9æ1æ™ T( .IQVÕZmIuÁ%‘H$2_ú¾y&X° fà« …F•JŠ#-ðŽSùÙ`Uöc¸*Z›´4"a”~ªåè]îIîÏÈ÷½Š¥Y1`1œ½®½еW¥’8]Ûû¢ä9›ÿÑÖ|œ©Ã«Pp‡­þ¸€V¬bAÿŒ€T,çÑ­—{ê¼@«ž˜1`‡5I™¼õV.ˆÎÛ¡E†K¢à9­âÿ>”†W’5Ñ1ýÀlÀ®ƒ²„¯§ŠMan`Õ›ög|Eûÿ…¨ãt’žˆ dÒˆ]iyü¦?žx PÀ·’÷6(]þ7ÿ ~÷~¥ß!¡.Z¤š€&2°!_©ÂÝ m¢¾âòô4ñz«DLxó¦£O˜­’…;!¼5î€rþzÚÇüˆyD ×Ú¹æ@^è§åD C1³¡”­÷š5 ª©ˆT³} Kžšá½¥eëí+©jÈ’RƒßøH*½VѬ!í`q¾ËK´œ©a."±q„Ñ4ÇäU…}…óÛØWN–=V²I‰03þÛxð³ÏüßÏŽgß¼ägßê9žE¬ÜçJ @㣪&Ogˆ!ƒO‚RÁ5õÏÑë¨K8ãK'Xš˜"R+”c|.æ çåÃóAem˜á!h±C #Z…šÀ$,¸‰ÛÚ®Ö^Là¼W5¡ˆ`Èu‚{€®ÀÞOs…ÿ Ûäßg2ÃþÖÙx`³ÿèCô ñÞÿp°æÀÕI5Öã³ü¤RËe0—··0ÙÈi.6%!–`ÅÔ–6K½¹ÊJÐ{ø\'À)]ñ½)³€Üá=ƒFÈÊ–%dHGB0¢™ž¾ûŸx³FBtF|PÅèÁ‰|VØo"%E˜!” 64}^%Úì@Ä‘ÐSùï¬qpÊ&¿-(A!§êY‹®ØŠWØv‹÷·ÞëÚ–÷f§ÂŽgœ€™*Ødn(<°ñ mn8ŒÃ2Á[ðŸ°ëMòÆ)˜ÚWy0%lP ÎÎ5-ç"ø«q‰‡ò#Ð?•à€ßu÷Zƒ-à?züšÿ_¿ÿÃÒÆ¼ p|ÔÖSçQ¡id;Ùß2ü¯\t´|>žžX„Î÷½ï¹2¨‰,Ò â€6Gšz¾3\6a³N*Jl=)®L'WÆß¢üÌòLrÆzF»{~Ö=¢d²*g QY>BK+ÞÙœƒ¯gT”ÂÌêhÌÚx[Dê`¼ [ †´—`")W°<®J\m„áOZI?&uŒ'Óùö@‘Ń©÷}ýÓ¾mùSе`rÿƒM ªŒ]á­+ºU¢-/8œ!tÊ ÒâhŒ[Wñø7Züym€Ê5äýR“ÒÀÎÆ|”°?<"Еgå‘•9¤}8ThÛó¤eÏ>r0¥9 µ 0%Ê"¥åQ¹h7{/ä¤V{bj²&í²tú;+sšŠŽ×­ìoo2$©Bllš³9‡7³4\¾) ŒŸgè`ñïÖ~ˆ1¸å-a Úgí­Lã ÌôΗ’Û{…ù ® ó§¿½ÅNÁ£œ„OЏÉÍ,}ÄšŽ>xØuç“'‘ê!çq¶IÎèdrï4Qš>aÁ.©´3:“Ãz¯"¹+ƒcŽlgÕB2½G‹¡ÈÇdÛÛCœfºë‡ÁçB"£¯aùkF  ÑÆ2„6\’Œ(Ågm¸×L̳ŽN‰¦~(á–n¥Üè‰r“BðÔ^lPZÍOXWÃ.Ù›ª/˜ ¹t­Ò„ÔØÎõvAb/&ó°5öwíM$ÎLi`ŠZb¯ï£>q\úŠÚ!ÒȦ$f•üdùÈÂ*=¾©lZùDÆyAŸ¢2“‰c ûöˆõrIùtïj@OLA|œh.u*Ž …ãŽiõö¥,‘¤‘tùˆ›mï-<ånFªƒ Ê^ð?^DždlU=ˆ¡Ù ¤që4ß ä‘ÎR.Su–´¹é¹ÚA›®þC÷ÕýƒžgNoŽù÷‰kð(QáÉütçä¤*“èD…‡#b¨ç®)’N܈Ó‰«°e2-1ôÔ.׉Իµ—ûé.=þïf]âÿvvv‹øŸ•\Eüß³¾Ôø¿åÌþ´ùïí¾¬Åâÿê;EüßJ.šífüßáãÿžH Ÿç±¹®u ô{¬H¿ÃÔH¿¾%Ò/ gZI¤ßÏèw¶ß=kõŽâÓ¯ÊÂWe£¿8&Ï^Ü@°Ç5¸å_PÚv;›Î0FnxÈpçø+Ó˜Çâ €âï÷ÃP·çJXƒEà`8øô f(â‹øÁŸ:~ÐÏ7ï³"~05~ð‘ÃæÞ­<,liqaaH—‘®&)> ¼XEÉsã©t ³|"­#ݬG= ìëaA_EÌ]O6æ‹·õáq.É¡]ìr{Q‹9X¸œŸgìzX\×h¸5Ë@ki}]\øÖ(®[9#ãV¥5Z“Æë]Ã`¬ !ëk9(‡«QT3FʦuÔ\TtVÖ¬x›SV¶°­êUž+ˆéc– ¦‡‰ tùcÆSÙËI²Ê°öëÑRödUz•>•!x*°ñ‚‚§’Dé#…IÑ£„x—Ã5‰wQã?‚ko]â?¶wv ÿïJ®"þãY_QüDzf*þ“W«Çæ¿W/æÿJ.šízüGóÀ+±ã³}Lþ|YaÝ#Èýg…½oœž6èïó&¢>("@b×"@ÔöLš¡,¹Ÿi$ˆþn+áA4RŒù³Dȸ—ø3{øç 0õAùÀ¡Ãë1ml`ï¿Á„ÑÌŸLáy W $7œ˜ mÊó>oþ®(4dÖ-ý½A¶;ÈÒ9„*Ç£¿¡,ʵ‚î>a‘†€“!ûŽ’/Pi‘vîV…Mf ôsªmUe•­M¬tÂÛ&\CÙe‘Ÿj‚ïǼ¤ »Ö‹‹lä6‹Ò±Éæßìhþ†À—=þˆE¸Sbgí¥K+p•´d%ßÁ˜ñ©w×uQüÃÄNüšð›ÐPI™û±`’CLI f:>º(Súá€ûa|oú'kþ'âyÃï²OèzC¬V´R0k¢üö? í”3Z¹ˆTˆ({ß ’ÉΑ‘çA4@ ¾Ú„*¬hìÿÕÜî3¢Æÿ`›œ:œg¿|*áý ƒ‚©—ü‹Ã¯#W£ªöøh‹S‚¢i85±à0Ÿo 1Ž…Âj9u{9±ÑrÕ±(*¡µ-øiúÆè‡ñOúòÒø2Ñ‹~s Ù“B¦ñ©–gÊYµ€#Ñ᳃¼‘_`eúÊ *üÏ5V2 rkyæ§±D¯ÈhJŸÏ;J(¼.}ˆ!ÞqúEvžOAY“$@<èA­£ Šy¦Aƀ˄ÄßQAÙ :MR‹Z‰çѲ\‡žÇ ëý)3ª$¹ÁƒX«Ç¢Gð/aþÁ¡‰ÂR¤¢«°wg¤zà-¬gІ·ù_;¢ì¸®àpZZªoìw­ó üD…ÿä¬[a\àsE±}ÖA…„¯ÕÝz‚[±{ÐB›MKé!ÌùQ¯áÑ™ÅÅæÚ:ÿÀ+88ë6Þð3¼¾)ú*˜j0É k)×B.JîîÍ_‡g½i Š{péóŠxÍÖ§ûT”yŽùe"ö£ûI0 £4ìHMH”Ä>ÀÃM€jé¦Q—PýôÑFôŒs€|FrLyv„)‹ñþŠ9$Îö1ƒ¦Åû*¤Lqû*¦¾<¹÷¯P6!•j€ÄœˆGÉi»žÌË(¹Yô×’-ÒKÉݵ¥U‚±¶qóu’×¶TL<ÓR8ÿÞ[D~ÛÓæJ œ’Ý0¥HrÕ…¸RòB’·^C×EK9¬mäŸÙø²«×¸ØÂ­V‚ªýíÖ3ñð<Äàèœ< "$ŒZõ¬S?I6‰yyI,æ#æIŒ'-;h…“•¥ |Ô³%ÿQ(¿É?²»‰ hË/ÌòÞ¾ û{¶Ñ½¨[Eνð2ôÂËØ û{Çð_ÃîW,/†ûµUXfª4!Eïè%ícó9¡¶°ÌMü¯oR › ×Yd\øzŒ ÷!¸)a½ê Îß,ÓHíoî—ã uðÃÑ•ßl±}± ÓMT{·¢! eÛ/FÞYÒòèe9®ÊË‚­ÌÌ„êJÇ?;(‹¯wgÚ]Q‡-™->ˆ‹w\öÎ#^ÆôÊ äolZ¸"Æv:±Bñ%t¤z²ŽäØ¡/NIrj*˜€Ì¦=¥©J4´¶uF{6­H°ˆP]*ßÓÕXm ´âUíP2Q…þHçC*j¬c<›OCs©g.Ýl!šVl\l«wÈ1–…s]•žEh&¥gúT¡ôh䡞l–°\\êíÛ¾zÂ!ƒ6dˆ‰GÕ‹Â}ˆC;²w0EQ²tð©©Lhm’âH©¨BÊïC”òBYS³ŒžÀ¶à–G£)¼£ ¸”è4(ø2ø¯÷¦–Þ#Ë,ÿe0îm–˜¢ÑaÊø¨æ¦æP}¤-¡±,«Z£d›*Ò(Ïn‚±=ü0ÚÆ¤¶iÒK@(-1m“E §x3]ŸÄ…’+ˆ[¸vY˜¼)ŽWX´AR‡M¥*†=çL’Z˜D7AþÁÄFV%ÍÂØ&ÕåøWe§Ç£Ký)ëßfÃiåë óI}?ò6UŸ…ÚþQ’Ê%h+‹ÆÏì’M±¹…Õ¯cßZó–æÐýÙœê?‹6¾•}Äã Ü…q–Ål¢ö‡3±y.(·žß¥Æ&µµ‰ÿ|ù²ˆÿZÉUÄ>ë+Šÿ\ÖìO›ÿÛ/k^=žÿ³Àÿ[É%T-þ³Õ­•X¼Ò¿WX»Åÿë ßû~ûÐE§~ëÿ³‰¿\&øóÏ:§ö¾ùÇy¯ƒ?ÎZðÑ{üÉÿn_œâßð3¡˜³Öxâ›ïZø//ë/(;À0ÔΟg€†$ä±€TKj}½ƒPD¶}ó 2«ÌO*é.T!œ±}1tr,Ü´ƒrñðƒ¨Øßp3öÔÞvÞ®RÈ+ˆ_ìT‚_ÝU”èm`”RØþÍÄÃüÄŠúÛÄvYK@&5ÿ¥6Òß±_¢!À—÷/Kb,6óÙòiÙB"‚æ˜ ¦Áýà˜þ$?@Ø ýóo1ÐR©cþ&3€TÄu!J[X&nò:ýáDP¾c\+Á•QiŸ1“ÏùÉ>fMFƒoáymlO`Á÷1÷ÓÕâ1™r¤û&€™·Å‹Úº ÿ5ãÍïþqHa¯ýëϨf¤ôÊÞ €®û>›þ¸§Q£ñôó»„@· ¡F†ßx+ým\òZì}ðÍ|Úc”'o A+ÄïÂøÞð)šv¿j§Ö!üt¢À}ýÇÊáì;¢yàH"˜4D@Èp²Ñ<ø5,‘cx¶ð×îús$XÌÄWš+ˆs± [©Î{vîïfô2AU•Ú-“áCÃ[%îCw˜ìŽK¤9Îx:>l™ÐA ,ôx¯þ¶-fêñ $—–r,Þ•-Üæ-ì%m„v×'¼ºo0GWx£gãù˜£C L›B -,ÕyÍ[”¦ÉáòþßÓqßä; ×'õŒ0VRo8 „ôÍ `™™Ä@~ ˜“3|{'ým/|;),™Öš„8ß.¸oAj}ÿLhFéˆÚÄ)2ŠXÇ“#ÉæßDPCâÚcµ·¬åf˜ªö®÷–uÆN™Sä»C„ù=²EX:ˆöX…bþ A¢Ðμ…ÒÁYhG-¹(©P$Qˆˆ‘owàh/„²‹^I—Úˆ ˲~¨¢ªYJ¡gW¹ª¤—Þß6¯‘­ ,éå¨5í#zb ÛüM BHåÝT*Ç‘QXAû—U*ãŽoðÉT,]’äØc6|FZù±X5þû N¿ð¯¹>€XX\\Llkj † Q 0VSù¸Æx°þfŸ>³Ó*ÔBT«Q Á ~Nœô—–2d†YÞ‰t¶ÂÏíWñc“¤Ê§F‡Î›SÄ`Rðì“¢b»d õeDlÑðË9~)•2¾¶Å‹°UßÖ†J¾ÖÜ +!¸Í; )‹cÌW ^õ†ÔÔÁ¡Åwú}D³Oâ$’¾‘™ÍM…F@ÅMG£¯ì~À‰J§~•/&³+ÁWQ\-ÉB©À×5Z ˜Ÿ<“CmãºÓð’ˆúˆ(žÿý"f¦ò½\Œ ¹ÖèRÈ£ï-mÌ2Ôr£›÷í¨û\™rž!qÐw:ˆ±‰º hé]qôb6¡®ê@HPª›jKsû0ÛmÜ ƒ*_Êí{ŒJ'r¢àG  R„^K[2H;ÃøZ£ JÀ&VO‰KêÇWð&è 0çÔÍÈÄ¿ÆÅÊçW1º©TYß§ïp'+ª—Ýþ$:2wm4D–/Æñ*ËGœ„ªà¦·‰£½Ódй_¯üéwßR*JBiT{Vš Iøø7æa¹ÏÀOµGµ ý³¨oœ}SÞÙÇN©vÙÙ‰Ö[¥Ñïl½-{úÇfÏÍþ²ÿR6­.G@)€â‚G;òðô’Öº{düK´!‹(•¡ªò—*°h¸ðlõo¾ð9Ìi„´‚¦Š}½œCj«NôVÅ%Ê><†;äõI’ÊM˜&ŽÖ|j"}úÄœ®U®ü¶Ç[õÛž”ÎÉtS›ñÒ§þø l~ÜŽÕ”½vxN®5JáM¶P3†D³¨äHcÏÜÐn¦†v—ÕP4néŠW*7ª³ˆl–¼2èap´¶¾©jdh¶UúY²ò XZø4ŸÜΫQý ßà ÇÒöØV@åˆÁØûU®E߀ôÿß{¨"++äñ~Bؾ0ãàjF:ÔÕÑšS\Šg”­Ûnð½kñÖ<$¾¦_ú›ß‚ ®7`ãôô‡zt[±#ó•U1%wâ³É0`§ýñ¿øWa­ývë—öQ§{ Þ±ôaeg1ð…@¶Þ§ ¯jõ³ô1 ¨—÷˜¢ [1-ŽQ·;îœýYÁ ضÏ=w_`u=¦~ÀÝæ{ùãN+žž[áåDf=$,ÖË£Î~«!´vÎzðC¤âκBõÚ“ãâ6ïe»sZOh´öZ¼Ö¼g.y;àÐ%ßÖ]ÑOtöÒÚ¡˜ØD¾£ Ö‚w££B^Ô´ó‡ÒÿUmõª€è‹²áM kÆRIÉ#9)Œ¹m· ÏùA=öA'ùƒmóƒY=ôÖâ­”¶îÈ’ôC†íEGÕå¢;¹y»fóøž¾h;¿xeùâ2ù“7æ'´ –4p Mllh˜\•£7)«)_ÅÈp’Â5}0"’ÃÕö‘¥cŠGò¢Ä^WèE…m Whøž˜k ¶j8“ãÏå¡d}ôÅ8ú=jŒbÜ#„_ôFE†tÖ< !}Ñ´¯»†æ·>tlÅŒa&Ÿh*3Ñ™8"z(é…µ$Ù¥ÐÕØÉIV£5Ã%]úGžöQèJÅ9 QÞódT o<´RB ÆHSÒ É'ÓZÔâØŠvTm#ø•—*¯pÖ‰†u¾2ZÈg”MNÙ¦N¨ « žÒ½íhä§Š3"´xÆ ûQ ÂÌuZ2Ô…¦©§'Oé’ k–ì¿JÐ3˜Î Qµ‚×h&MÚŒ£`3Â4f‹Ì]cÇÄÝ'f}¨¦ÀA&ô€Çã_á©ðiÇaoá Ph@Eo™!è‚ÇÐùw<1*Kxü ðöêdçj•eÏZ©=p˜¿¿°»Ê¹2±j½PoX礣'¯Œèž¶c9Žphí; ›Ô`ö‹³_ÜÊ]FWʇ–ѵˆóÌv(Ù‹ˆ«TlƨèhYØ fŒ¶.:F$i:IÉœÔ4¿Öªß¤¦§Ó[N «Ñ¡Ì³­ eШQ¬¹VŠu`˜:6Ûµè®$ÆvhÌŽÑóŸê¬³hÌÎ9ݳ ZgÎAÛÉ0h¢§õ­myà ¶‰ Ÿa£T‚0,·ÇEgˆtí‡~Ht‰‹ÄD#&KàËîÍb´œ‡` ü>B8¾ +}H—È‹îú-fü³üL6ªñÖàZv(§e p\Òh= —LÑ#±÷§bìò/W¹ÆNÄÀ 8ÁMȇîfìHŸ%/k¸—'áoÙ˜3¶[Ã;cÙŒêj¢¶k}¬ñ1ìPK¨á Û V•ÝšöÊ-/3pQ %“•OÊD ÞI‚-@åKm<*džÏ2þu6Ò¿Z4éÁà¢ý+7í_¯#íËdµkbgìMÓ$DØV“R¨{ðû8ÄéâQûB4ŒZõ&+éÈîÄi÷žÓ®†ÿ‰'ÈçU¢ÃqJ: ¸pncAïu5!žKáT¦¥ ý áVé7˜`Õ²Ià:­v µ0Ìy[… JöêRO1‘½o¼¿y¬°¡o‚ÉPïÞYÛöÒø^“¸&>Ee­¶—2BÅUF·îo^'ìoÄæ$uoÛ,U³×tyñ{º>)k›1YHÇÕ7§†ïy™Tü¬ta ÕúBúDZœ0ŸËMäÑÈ ÀÁ1û ±Ÿl†˦>ªÔnšÔnZ©Í‚{^6µÝ«gÒÛ×v r CKä|YÕÔmcðÄõf!shÍ—šÚ|9—ÞìídÓÞ¼íåhÎåÍÛv*o^–íדQœ½Œ›oỡ:ÛˆïÞµxk¹kIÑœ½WYTçËEéÎnåÙ{e§ž÷::+Lÿ ÉêYC­‹N Ì„¾™ï!aѵ ϰAà¾ÄjªÐº7àÔán м2†"^ýÓôIC=z°Johé†’ïæ‹P.#¸Ý™Çy§„éÎQ‰0Ï`Å(«_a²½Éî,2œB.÷Í7)΢ËÖ&»›°^£fË3’„ÌKãÊGónYœ…õšN m„RsµºQÈCüñ\/ÿ£¿.ø;;¯Šóÿ+¹ üg}©øË™ýió§îÕ=sþ×·‹üo+¹„>eà4"üîi«Ûü‹‚díàì"Q¾¨°?z¸#4Ð;¦‡Ð¿ÜE˜ !!¤Q@Üe4 €{<´ G¡ñ“cï¦/q‰%B÷ÁˆÄV£Al¸Û"18h_¡&j¶Á•D€!XÿEE¹ÈŽraB‡È,m\¨_þÑSÿú+úCthiø" qØ-˜ú°ƒ 0Õl½²¢y\ýøå›€à!Œ ×#ÿö6€£Sº ñõþõö³RNRYñBd€>Vy3»¦ƒM”8œdãCUi›·©`•¢¿O%Gð¡•2”'þc§Ûíð(¿’O|„ñ¬IĘˆ€4Œ ÕÃúœ—Cà‰)!!´àHYðƒGcï¥v0œødÿÕ ’Á´WS°Äñ,k)ggïúw³;^п-–´ œÝ[W£étt'^ÐÎð ÃÝØ—Ç‘Úô4 †…žðsðc`‡GÐë‹%¬A ÷fp@^ú4îß©í³A(dNÈ<—ö1€swqs2LQîÝ À)u:ëS9v”TÖŽHöP`† }Òd;v|!•\×Áã }üÝxD×Ä}|ÜT¾sŠ‚ÿÍ„¿°ð ê_\Xýù*âľP¹}Û<ÍéÏ0oþø£÷ò•=ÿèAVSˬM ¢R¸i³QÑ~2ÙÌ1ÿ1|RŠ[´ôS.W¼¿u—£Oÿ³ÎJí_J’BpüÕ‹ªÎJþ,Å›–ê 4€M®.oàð¢»IŸ5ÙAôŒÆê!þøzý˜;¤qŽŽ¬#É Çû%¬0ü¨o*`¨]┸yl>”ìVÞQÏ9«“QeœÑPiÿüGìÃÑÿ/.„øÇ'¿W™Ýv_Î0:$E)BíÞ\XŒ¶7 S½£‡ä€O‚Œ˜hX.6@Ž,µcว¾¥Or« îrâĉõçlà‡»Â*Œ¦dƒþXjŸ»–>[ CÞçyPDlq¸ÃA¥ t*ÙÜæsÖ†1"í=ñª5)`ʘ¨þØ.kæY]òÓB—„iÛÅ+ù2¶?¡¤ Ú#'Dó~iŸ©¨%„‡qÜ9j$vSˆ¤„oÿúBtá¿}‹;lž&Ï;ö ¢˜£6–E8àp³79 Þë¹ðOøžô°Õèöâ8("h%VÏF¬­à"´µ„²¶sŒÀûÒê‘d$øcÇü$øã¥å‹à×ñO.R8jñO2 ~„#‚ãhd‡ã ¶Ú¾n}õý{Æ Šù~hŠ;ÁÙ½Sm”Mç‘ø§8#à~9ŒÏé ÇTñy™EY¤(’ç_‰€‘pº†¾7**òÅQvŸ–òJ>‘ Í =tãÇí­æ6a³€¾C+¤qZÊñi…}õÑ{U«þ‡à$ÎçïÏX£‹í#‡æòÑMdýPMTR3‚#ÏË7½âÛ«DößÉg£#{" €’$V9×38%¯òäTÙ;€l7Ã%¡`ñ¹ËQ– ÌQ×>,SFH)WÄQ&²­-j¸&—½oÙ5Ÿ\ƒ`ð¸%ZEoµ[ü­h¯-ãc±ïŠ*©|б~ hdû õî-ƒxЮ¢úö\•8¾¡j´oâa`¾v« ÙÜÔYTnjÑëíVôg•ù¼£?ïľ/ðZÛ-õ3q›|ÂŽÍwNæ4*àÁ'dÂS§âÔÀ‹ö ™fÁRZâüÀE‰46{!·2¦Ö²¯¿·/Ï €\{`œš9F¨£MóÈáà$œ# °!qHCèHï@œ¶l‡ðŽå¹0óvœÐ}B†y¶3u[ ðÈk¥mxö"$¼¥èg3è®Ê—nê&ŸB"ä’S×}&BæP‰¹³fä•ÏQ$ía›€ ht H ‰6 ÉG“4$…ôUÓOËÀȆÐOË ±Cþñ3:Xv®#:X™‰ÕGi°ž:XW‰&e‚ßB®ëÄ%¦M`v\³“"0;¶) ¡Bˆýã;B\†À|eß×ùftÚ2m£ÛQgtÇ*0;1i¥.¢%’÷ÍÂÉ› 1ßXèëY¥<"}ås·Äìd•˜¸ÄôÒ5/Ǭ½ÌôlJˆƒõ£ó¼1!Úöÿžr™yÿCœW'àèÀb´åÑ9^î? èñ½ðZãëTÐ?qÄY@"ðÍHØ%‹¾¥iÑÖ³Œ`3  ÌÓŒPa¬Ãï¸(ð ì5E„P΄AGë®êø¥åÖì^î4u;Líúæ&lÞÅqh´¦‘ˆ/u¬@»|ãØ ±xgKß<ÜpáFŽq]°A?¼ÑÒ¼€hº˜ñ1NÅŽšgœ3å·œ'q£s|«¥ßŠ!!à7œX²>ÒòsÞÁwúd´rÜ%v"‹ªVHóÔ²ÙcVV;5`ÙóÅ߉ïû,åX÷~ÌØþ©Hü›–bÓs€ÆöTÉx7ÆÆŒ‚³ñ&z,“c«Ñ-,ÂÁ1F\~Y§SRXÊðlã«‹0L[}à.†ÂÕF‹ñl_ÿ¥z"zt ~vÅÏÔ£ !$Ò®¹Ò„6^²Xmo×ÂÙ¿Ík3#gÚ-‚ŽäÀwSÔ¥z²ÍcdD›Žî·nF߇º\“ ³8yLL8&² ¯w‹^±Sòk+½^ éÕ"ŸqÐù‰J0´Ö½[-„N¸ê©7mh9SA1·d×™³ MS&ˆÌ¸|-„æ„flûB$&ΖfÉ€¿!a±ïP\g´Ëo× »|D“G±Q«¸òQµr&óg™ÉàdÆíS‚¨ ßÑK6çðjŒäøÊrŒäç!ž"ýŽ[g8)f³”/ÖP~îYMå^ÚNð*lÖC>pK°þÔmˆ‘u/§=7+™™ÌŠÑ6¤™uÏc˜F Ýs/nNwŒÁvêÔ—0nQ½n„í5„¬ÊÏ2[ØÅwúí¦ŽÑN®1Z{›Q}ÇÆ»‹¶³/_èvFì茸tc»cÂ'Á/íæÇ% Ý—¶¡~•Ó$œ•ÌÌFfÅî«Ï÷N¡Û±]×$ã4ï—0 B×.W³fƒõCùYf#½Mèn§*'Ûµ\c´öBwÛ¦þlÇÒ 1Ü è7¶XƒF¬QÀˆ=ÝKÇÿºYü¯Ýzÿ³’«ÀÿzÖ—ŠÿµœÙŸ6ÿw½º·ÃÿÚñŠù¿Š‹f»‰ÿuXbç­3 ú×a…)°å®'&((FûD‚›‹\Gy‘¸¶«ÞzcqñÂ÷ã`Àê5ÏKRÒÜ;qx|htÚA$&ñÔv˜(‚õ GÆDvÑk–3P8²–C1yð¼"´.w=‡ðê¨d¢dÉ>§€[EïGÅ¿IÀV‡l6ÀJúYtvãã9ýI0ÇŠ`_@û¾Ž*cÂÉðW!(¬˜bæ.w€_Í®œ3ûC„5ñïPŒ@îŠ6/·x§D‘·Ú[W?¶Ú1 ÂP¸$ó”s€Þ…:ùaÔŒ8ß~SÞV‰´Ò‹õ{B]ÜõÄeâME`ÓàNPŠ¿üÉ׉ ˜Žý¾@ãú·?%B„A‚n¿RLïíuÂK"ºÍîˆPa7øó±?‡ñ zпžÎúƒXG 1ò](üþéO®}œÑøÆ‡t€zÁÛ{×ÿÊ?å”úÁ0€^Lfw÷t’¬Å¥»ŒŽá~ §Dö`úùΟ×UÖœ²ïÁ`Ààt)¸Œîøðâi·ïœádŸx¿oØMð)˜ ˜­þÍÍ/“ÙÕtÌ»QÀt4qŽå#f)­hRRðûçàÏØbl|%f;€z y—ð·áoìM «Â¿êHÈ&Ä]Í!5¼öƒoý«ÁvÛðìögÿï>Ÿç øLþ*[†°4®Â®øï>û:¤ãÃÑPUMYƢѡ´Ûô”Ó²{ìÅÅ‹·|TýC 7ôšö¢eù`¾'Àd­; ˜ƒ•XzEýŽ«>ù+ òëPmrù•áx{Û„š‚³í¼8í”úÿ…ýº«” ;‚VE¬ù,PŠåk Ñ•£¹»²å©9ÐàÃfœO·Â.@/ƒµ,‘î±Ï}€êñ9-¸H~¾ýæ\ˆk°˜â©y½ª…­U3ª­xZ[zhùsâ3­±.§®xÒZ:"0tV(몦 VØ|Ë«Y† ‹³ p—T/`BøŸ¸ ù¦!B™Î?àB~"–ÜÙ—ÐÉ”“Z%·äK¸dpZË–º›—{ûálˆZ%i:â[RéͰ^„óÔ[1äfÈ;ßqããyY À˜º?~a]øISðç„}B:’†£ƒ´ÙènýŠŠ©©[ÇÓQŠä"®m³D€]ÒZùHmtnö !ø ÿ"I(X@7JmÀ½9±`4Ò›Í6vlŠ¥¶Ì^ó?˦̶Å]ò”•#ÄVÛܬ;0@bl§ü-ðÚ°¬ZqÛXëìýÿ¬—Øi³ @Šm¶¡ ¸áÙür”³7 X$­óÛQO=o3?éÈ"©À" Kù'–‚ ÷àÓu^T)@á…í¸.´¸v:PÉ,ˆÏ‰„ZøP*Hb¦SªÄÓŒ0M'±" 3¿”Ú0!pçÙa ·ºp·ÀDY*&J…õþ”‡|À(ø%D¬ ”A•øþþ@Ish­â@ÔQ’µÔ¨ÈB¯P–©nAåU°z‰@/03Ýö.™K@\NÏ÷ÄO.—š?÷ñß&ýè$òçøÀxò’åì$†ã.‚b„‹ñ$r8E÷'ÙàÚ\ Ahj÷"©-·/PCáÿü£&þ:—á­@´n/)‹§À$M09ðÂÎ!g\ç}êìî„ж9,ƒ"ÌØ_b©Ã—ó Ö(H‹ùhÚÝžôjÆqj¨œŠù~Bûò#àtzï ç %qâçïôó¨—uË_èX t ›UEd<“@ãIá·¢þ¿°>KóBï4öÁˆÇßÁ…· /pØû¶•–KÂãiK žåáà„H8^„÷£`ã¤BÝ<æ0;øó¼ áÈܼ£ûI0 _(À-]*Ñh¦£?ìXF¥DŠjµu$sÜŠnÓí÷GUXâ]‡IÏ+çMPh{LæikãQã¦!¦¶þ> ®¿ “ hC÷£É$à\T5˜àèw 9u2EðIÖSðèÊ’Rû†¹Òz"ç`is@ˬø±ϾgF=‹ÎÚ#˜ÉØÅic#{ÅHµ]ô/ŸÏZÙ³¤d€I¨F€ô… ‡PüoXC'1ë›>0`r¾h½ˆQ“8ä1Oûa6¥Øü¦ð4àOXn`aéÄ;MùR;Úí#y»ÛÞ<ĔՖïÊD®ƒ®ý•Px¸Î…ƒGI=:|*“Ò_aFJOöÁ¨Åv¾E&‚ݬoÉ&º_ÝÔ ‡ÚAvî½M22‰ç!Ë’“Uà­¸FSÐD“Œw¢îXÞâDQß²¾§4W®š¥ÒM ¥­y¨™@Ä$‹Í PMaÔÆÃXj÷I"‰ÌÕ >§O_ Cœ±a×€þô¦SøÄ%O;«äIZ.BÌ0CÞH=åMÉxˆ¿h¢&Û× ·zè{n*bä>f˜Ì¥ ’Dó_¡¨Þ¤›<Ãdœ—>mþœŒhr› Hwùm†âä5¼46× ¾²¹ô¸ú®KeTåá„ <)3¾ãמqýžò—âO;ûô¿¥ÝoŠûü9~¤M)ØoÐã¦íqHu*ê>O hòf“˜ósÞ)ç÷‡¿—À¡ƒ#Þ–ÿ¯É8ƒX.UÕl«ú)'qê·âMs%LV¸˜19˜-ƒss(rf€……bÀ €0ýÉ„L)D44ÜÍÓpðÔô`H[ €oûÁ~ßÜüPeÀ‚ŠÅˆyüÑDJ$-(>L™tåó57Od|صcâ©}]: d ÄÛ5ylÙ{0֋팋–ïØcžÃ€gÇ HŽYF²l(Ó ºßÙÍ'!S#ú_.‚ ¨.¶~–3„i”lZ()b±‰Î9e6}hR:5nÿu2¥¾¸p¼•5Ç|,©vXDI¬M©ï“£$t ‚¥ÝÐhèÕ"•.¦ë’* eïÌuD;ûnHKžAçMØ5-Û °øDb»¶J,Ü‹ás°CýÏ„G²{ФyÚq§è”“ºLdꬫ/DüÁ6)”ˆ®R_®¢œ\úòù€¾5)ÊØ/Ó*S2Sd´¥Ã!›¶1çŠÑá"¤@–¥)FÓ2§L Ia¡¹Ej²n´ØÕÉKÅlô¶—»>y¶m–—§qyÄ\äå¥â1z»Oz‰òlŒžñb8Ñ7Ë,aÿã*7‘ÎݧZ@V Ãpkm}ϲž˜Û\«YMip.ìoú{2ºñ;„L]S–9J8öó’DmD‚ ß£mxßgœpe‡E‘S¬?Ò=Sw´¸—õøcé™÷1—ÚÃ],•¥>êàÄ~‡€ã¼Í᣿è~'¼°4Š¿Ì×Át €™SŠ+ÞfåžH¡³'b$€Z¹Àøsñbì…ýKìn¸ã»pú.º©mÁ•0…è u®¾’Üi‚š²rhÝ×zù­ö؉Úõ#´ ‰gÚË$6ðƒ~Í?EÇá…äa‹zÊH:äÕTž“{Sy¼‰Ìš{eSAC MLUÙêUÁõ`³†Ö׿ûv‰Ü„ò³Ø¾;Q6¤®€žø#¢1G±ÆÈô ˆOrjËÍuÄpŠ„Þϰ=U¦‘£”=·£ÙðF‚µß€÷ê²(Fñß¾ØßûCí{u6.ŠþkæcL1†„Ä4ó&zžNC;­Þ~5ÔäÔ2ï%–a7z¤ÚÆù ¹è_ÌN. }¸µœ®ØÌéZ€åœ.ûÆš.h™°ã‹Þ‹L“zŠ m»×”%l¼éÊjÊx]Ó>3€ôl÷õ÷íûq1=hON¤MÉØŒ¬ÄvçXPRK2Æê)C—‚½W[îÐ%àÂÔœcW÷žüØ5ÇÎm‚/¸ 1t¥£«EïÕópš¡Fo¥Ó\C×6tÙ@½ênfÚ¶1“C{ÁHDce¶ª2‰mÍ¢æØp<2’éâ9ß`Êf:Zdt™ÃF)Œú ÏÍS(Hv®5ß2GB5 y½¦—Oä÷âc0Àdù*ªq)&Ü Íd€ìv¥gVc H®Ærïp6¬˜`®Q¨—èÀ˜…¶ºæyŒÃŠ<•V¶;ñÍL:l,‹¶œ19­CÊz»Å—eÛÒèÛ‘Ðð î–±X–Ù°e™c׺ -k€êÖ$hSÆ2Y’6Ú¦Ú6Õ~”8°¯3 l†M¨±a Ͷ‘}íY[v9åÍuY·"Ù‘lHǰe&Œm&ÛC–YšeÀkrHije6H[fc“˜’}×cJkw³c.—<[žù÷;Üì§ë[ÇÂҎмmœçpOLùxLЬKÀ?*äìoÐÿãÓÀêH°ÒVaý4Úœmĉ1¸‰Èe^ɤf—T;Ruñ°£þ:S!·æ§ ÝÅC’1ÊÁË °WŽ€ÂÐuuÚ6SˆØ4‰H 4VpŠ0ÆB!š +F@²ØŠˆ–“ ƒÞbÇ&å_*”çŸo\Dtç—¹£¶Ú²èw…ò'e•ö¹°Zœ\õÚA&ÛØER0F²ÎwÚüПѳ„~gŽ0. ±ÃòEKëãǶbC”0ÄügK{zHº¿—Œ‘Ýj~zb¢ÅŒêq%e•”Ç÷7AÞ—¢X -ÜoÒI7Žþjáx).¼tÿ¿6þŸ"ÿߊ®Âÿó¬/Õÿ³œÙŸ:ÿ_½Ú©ÇóÖŠù¿ŠKêG‰þŸPI#P}•ÂÃ3¯‡©wºßN‰jËéÙ9Z²g'³k ’ç´C k/ÍQ𗿍ðÒ^šõ÷ÒeòҜʑÏêË@÷AÜqª¹kNÑ]£"šŽ„˜»&£§Èš\2ƒ×(k3F3Ò¼.§Ëy” ±ÃßÍÒ¿4‡ù+ ƒÀ€§•0qÕ²ý§…¿‚=Ä_Qx*Vä©Ù÷à`áSôYðG§Ú#–äxVÎiân†'èeÐ{µ /CäJ°Ñ-Ùa ÓpÑÞ‚ÓÔ1øÙ¼º½¿öVcÝ?ÊnÝ?ÊaÝ×í¿Óµ±ÿ¾,ì?«¹ ûï³¾Tûïrfjü?êÅí¿ÛÅü_Å%W¼DûoO‰ÿ?lá9ÁËÂò;‡å7—Å×bÎ=Ds/Œ‚ü墔׶Û[GÛ.ßeʈڹ켽4;o¯°óvÞõ·óö7¿—hDã'ÚUÛ[^̪ZnĹ£aAxº¬‡å©'VKrÙ êƒzÀZÓsµ“º[Ö M"Ú*?k#éÃ"¹[60ІýK´ŠÊ*$jZÛ’ΕY~v"ÁTRK˜ŠŒL÷yß¿Ð>°f2vÐ ©h‰Ò ©Ùͨ yÃ-$53m›H6zÕÊ!-ñOûù\mäÊ!qÚ[±Lš»a<ë¶ñÌ2Be}€ËÖF…í‚aR[RO€øÑ+/Ȧ»â¡ºÈ=T­„¡Ú^ÌP]dª–1T™s`¯›ÑW³ì XϸE—.âWžs½¤-öÌÎÂì_\$|a¢ É!ÍcN†íPCÙ«&˜“{E°øÏ{iöÿÏk„ÿSà¬æ*ìÿÏúRìÿKšý©öÿÝÝ—1û1ÿWsÑlO¶ÿñ.Î[g„T=ÔI@ÔtÛPNžЇuDú 93§Ah¢f( €þ|HýùP€þn†õw3|Èú*W½|´!”ëŸÝ߃óaÌ£ïpkÌg$!Ùö¾j1ÚlÅ n^dõ«ªoíAjÅ·¼mX|TªñN Þi5/×yò!”Q¶ª°†ÆVt#'ŒhÑXDÖ„bß%~5ÊhðC·˜ìø¤ì…ÇÎGÂØEîr’aŒ¬ØEÁ-1ù%ì(£4$#2úò«£˜Âôb¾è0HoGbÚn$«]Šû›†¾>…AÚðIì#Ò«?ár‹gò' G.~éñ —péñèÇ™v°A-E9ãPl·ˆ)…©±ßmTŠL8ï OÉϊȤT@û=.íIïÎA°8|“‚=tb¾ËæCjbîd¥Îâ(Å Aéxa±éŽ&Ó­“p"[õfåFá‘G 5L“ ¢)õ¬Ù9™<&aï|&×M3Áu£F1í9ΦÀ†¿¿§l&˜: õÅPóX8—¿t´ã° #d¡+8S(àC05މZ@K§#n×5(k£ÂÃ4 Ë+ çFðõÝ sLÍ;¬œÜ±Ï0øØzE¥É+Ët¼$!”múº`¯˜ýèÎë´Æ{µ46‰#•N(õ„?zC]Àäд˜•-VÍCY‚'ÜòjOÕ› m9±5YLvÙȱ€]"AÑSRáÀÎ6ê\lOÞŠ¬¶zUüØ™À5äwH*yqº)>d¿P¥››uÛWbîØd‰?˜.‚JTø/¢[%I)d½íÅÅûiïú#íéþÿ5«þ¿•\…ÿÿY_ªÿÿqðß¼íWõ¸ÿ¿À[ÍE³=Åÿóÿp ññ# ×îÃZ¢ÀEþ¥9Î ~HÃûPàÁü'àÀφ·Z~|féd?[ô‰Ë›VEDgñò»¿]ª÷ÿ(Õû¿H:‹ðã ‹îÄž*þZ ‰RK™¹)ÍÙ{Ú„h´¾§dЦ‚‹)f,æ7®§ƒn¾ih¾ó˜#VëQËÚ#*[-&½G®æh¥$÷(xúà›=ÊåÙW Òœüy=ûY=Na{u8……s5¨……g_^¦g¿pê'9õ=·¯r˜C6¿'¿¡+äÆ×m”½­9èlÖôìÄ*÷p-ßq¯A:fòÇë0‹ÖŠÙ¯2*|Yxâížx“NFÁoR§óJùây;Ø3K$ÿ¹æ`F¿y"¦§g戫:ÅÅmý>ÆêË È †Àžiái¶Î7ÅÓŒ¬ÛœÏÑ}[ø™å5Ÿ9;æë‡<˜¯ê¥ûo×Çÿ[à?®æ*ü¿ÏúRý¿Ë™ý)óßÛñêü×íÝbþ¯â¢Ùžâÿ}'Uº^§Ñîvt?°ÝlqünW½øÚ¿À+ ; çj6%/ð;8ìõFìÛ$2T6÷OÙŸý)Üéø¿?¾þÌüáÔGþáÆý8€?÷M–$¶ií|ÖòO«#ê¶ .ÆE]{›ê¥¯Dµ¥ú¨ß­£úƒÅƹóÝ9œä·òx¬ß¥y¬ßëÂcíðXÏé§¶xŒõ¡Éá©~çôTë¾j’D¹êV½ÕÑä ]¿Ðéþ@Ìñèº ¿Ì>õ§þÖ”k›-7ѼTßä\Ö³R6/¶ÅÆÞ<ˆ¿y`©Iw̧völÈøX„fgßCAsÝ¿óÙíxtgz˜àÐk‡¤õÏ#3ε٠¬T©-ªÀ~&_²¢«à<°Ìb vÜï&ø=çuñ¿3¼¼6'èåÏæægíÍR»ìmüRg¿º†^m \HÞÙ6zìN:ÐFÔ…žt×™xt¿Óë{œÿ¡ö¡^h©ö¶]©½=drÐÂ]ÿ›?4š²×þ¥^Õ?ÜòàSõÃÑÍͯòÕæ­1H$pnE­HæXæŒ%Vgp>P‚KmN¬7*¶ý¢Šœa¹™ÚË¥¬^ˆ,ô:¤`D;=þ"œ˜Ô‰B´a×€£i :É+3ŠðœñœBÉff’5bôT¦ZØHG»˜Ö0½ÞJš²•Y¦#[ !íWmŒñ:àã“ÒÊ&ü3Á­Xê²g°(2><Áûz1ÄŒ\‰ö},Ø+Ÿw•ðF|E¾ñ9­1H£ëðú3¤Ï¾áúóÿ¦F„Dî ŠŽ¨èµ,&<"9@‚½›q(©£†V) JÔ ‰9ÚrÚöÇ7윸Bˆ!þUñí§à› †ÿwfÑ7µ/«ÑÑÀÉN¡aêE÷[„/ó wÍcµ:«m³Ú«íŠ7k5Y–&æm3o‡yò±Wã÷êÔ묾Íê;¬.ߨ×XÝã÷uno³í¶-_Ú®±mm×ù}Se;;lG¾·Sc;Û©³m~?ö*¿vå«»5¶ë±Ý:ÛÝf»;ü>t£zø‚£ 0˜4ŸGƒ› ÐÅé|LÑ$×èþ½ÿïQÀg/—Ë»\*×7dxc4èO¦´=û¾š¦•W„ÅÐä5``¥·/cÒîÈ*²#wEfg„“UGñ,uG5¸zƒåTt¥7¼´¼½Â%ÔƒÚîHl¢rØwŸÝ¸ŒãjÆ*´Žsýõ *2òòº?iŠ634M‹Dkü+•õ‹· ÿ½iÌ5uvpßÏg±Ñ›Æ />ÁùLÚµN{±Ñ›Æ”/œýbj)mWgvxÅå€F‰š6ÏÃK õ+ýCš`~(%…ñ¡þm$YÆ%E‡Ð‡ùò5ÐdÆÁ‹P)²+¾JФVš€\ý2›P”bÄà8mbZ–ؽq=•¯%°D~ò§´{І*ûÉNÂÿK}¤‚3!ç>Ä|äÂU€1ñ'b>r|8Awk–ZÒ*’µì[r.âÌÁGš§mñ'g>Ò|Ìv={-‰ÉZvó9£rþãÌÄÙ‚FW®ð'_eøB£+Ó¡ÿ÷”åXˆAËI]‡w#ñáZ†£g K±vÙ—cír.ÉÚ•´,kWÊÒ¬ÿm,ÏK\pw»àncÞ î÷c[pyÀ‚ëU¼y\Kg–´àò)Ä–½à²øjaT8åpÍgq´ÏB¹8Ò4÷ìs1Ãâh™˜™Gs–ª‹ãÓ]àâ—s“Ë< VõʲÀ¥UdYF=½º“ºÀ%Vd_FµAÅ•ÔXàžoþ,„ãk¾;åÿ´.À•ÛÓöw»…GoÝM—ñb•0˜¸aiËbùmí=lœ6.ÅsW¬E¾–КŸ1æ?tÒéA"˜KtQFQ`VŽ|~ nÙ04NÉ?pÇ'ÞÚ«…­à|¢ÀÌ@›NϪÎ6Dëèáÿ¾]Ój nïà©‹àÉØã+Ø”®_àŠçE†%¥ó§Fµ"4S¡Œ µjú¨z0‹ªžÝF{/.¤³ÁYsëÂ^³ªÔ‹ïëõnúàA*&GA…ØKCõ±‡­ÃUã/×4®á¤°§šB–:;ræ¡+çžÀ‰Ñê¢DÌaùFhŠEúF…ðÆ«%ÐçFÈ[ô «›ì‡ÄÓ,é‡YN¬Õ±¤³&É4‚ˆ‰Äþ“ÿºÇ¾r:|EåÚÅЬȽ΀¯ÿ¡?¡¯[I_3†ìÍö¸Vm~ίc…õÔk러UªUj¹à£°öòñ& Ÿã¨ ÃÀ`gξôŠ èW­Âò9pÉaì´Õ,b¤OÜ5‹æÕèH†-ò÷á-Lj$¿(ô‹y–ÑáW«ôµü¥Âÿs>HÍÔA’­°·Y`§—Ú1ò„{È’ª|àhØÄ$ ]4Û`5p3_˜ÏÁWó¸Ý£2 l€ƒ 9 \pI,Ÿ›¸ŠX±Ç'Á¯, Æ¬Š‰0kÇ“Låž¶›s²·ÊJò/{_·l]Šì ·<!þK2ϵ°¤ ‘í°„e–þ;oØ£ÿJ«ëWB.0J{øêšsº»Žÿ¥PgAkkYÉü>vÏo¾È”¿bþ‚U-4õDÝ ©ÊeMêc9ö&©ËÅ&|ŽV5ÃV9H` ^žŠ´˘ô,œg'‰ÂX§Óº îJ´ˆõé.SyÙÊ5´†‡\S›—kj9ö Zæ$+¿Âºð8ƒÈ¢}ÈIŠ ˜8É“š8Ïb±%pŸ­MZ(²f FÒ™QùwÌ|Zúþ“«C{lø‹.W2*ÊÞc˜*¾V¾nð–Ùó–nºÈR†—Uø8PÖ“ªY±ñcýÒÕ>Ü2fåÆ7£$U÷tU–òã26`ÍeïÑÌkÄìy›<±Šm1źy«+_×ÒÜRŽ‘s:‚ØT¬À±ñH›Š§ïØXÁi]ŒMÉã•TåR7è…¡)ÉÐä†äŠÑi]öáZÛ“²«1ÉÇÏÞȔꥊšu]pMtöˆÆ¦u14­çba“ƒë¹X\(Jಖ‰,Ö·GEJÍ”úÁ”šflˆÃ± ´ª­U±ô*¦QEqP"|.aûPsÇÒ¼ôµÌ†j\iB¹fOK̯®»P–ÏBÒРA#žuFîs銳©üŠæuÔ† J—GÔñIҚа =¦ïÕ±#Éz¼€d…Ü¥)=B®ž:‰Z2>¾?c=À‚M³æ,¼›ÎHÅèÕhMå¼VÖKJoÙ¼¼9pö•åàÌ–B‘ÖÜœé¢n7Q¨äÌ £Ë 1„Cª¡ L¨š°b‰É¶eyË¡üS´Ç…«”ŠV«Ê‰T#-E|Ý“ÁÌ\0DYÀƒÙ^B´B²ës9´’Òj¶cÙ%m²¡d>Ná,FÎ ¦þ5Gƒ ;v¦¶÷9¸b™óÃûÞuVì}™WfY”ºðZºô^„ÄNŽR,$vÆr,–³ÐUß¼æd·øéٓӃݺ°½§ j¬£Ã…P\]õiê—‹f±uÔ/—&¿Òú2‡²èÔ[ªàÏ*õæˆÙ4̲ÚYå¦>å\̼úeÛsøæ,ê,K1@HNBþí£ùapÓw/íäI°½–wqŠíB—2C¯ìŠ®`‘¨l{š¬Ä?ggÚÎ:f`¼W_ö†„e Xq`ù¼ɵ‘ÜHŠšÊäÐÍ74T_PZ+dóKâ˜8$lÌtŽ!´p†ç[¸­5(ïþŒeæt—Z±‹Œ7û–Gsà3zëkB³©FÇ[ªjDÙœ¥êñÙ–­Níà‘uhÚ ²k%lq¢r]çvmï§t,„ V޹®ýÉd­v„ÀÂékþd`JóóH.9Ùd$É‹€{ 2#£Ø‡½Â ƒÜ\¥ e ²¥ÉCgÃe«Ó6²©¤qvÖÕQ!<3£,E€Në°GÚû”U!J%ŠQ›ö©«žì­çëÑ@ètµ·-2AdŠœÊ­`:%@ÞéŸE«´,ŽãsHƒDí<±ujWmÓþRö|¦ŸqùøÆ(°¸Ò›´PA”$fE–“#Ø£n ×g}XGgN7Ý×½¡0¡$žuy “nUÏúÙ2-Üó˜¯Ù£2l»B‹lÌ`¹¨XiâT–cÎà+~Êz“k\VgÉHU’rE aè¸õE6¿5ù|°G±gxK°hðõ=©£™­[ª½Lþ=¯ecîþ$nSR4÷ÂìU—K'° Ù˜'ƒ­^\š+{¶ª¸ÚUÛˆ®½jÁ—GkI;Ê·p’ܽ¾ëªB~%a] Q (özØêµµ·yÛ_&¶Ìbãš2-:0þÕŽô0ó©ÞÈ2gûŠfèËÔ@È‘Æ.±œ­”×.%g…f‚.xˆ±ÝÞ²› ÿiùsÂŒÍñBIIÀxŽá£›,a7’ay ד–[ì]ÐvÄi–¦l4ªí£*æVJ9oã T[½j£‘ö: §!zS|Ëg/|º¹éÞ°hV'È^ÜÒ¦Ô C =ä•R‰‰õ&wK=  Ê(瀸qžŠÁÐJœs0`¶xM GìZ¾S(d›V‰Èv9Æ0çÎ7ziC—8n9Í9*ö)&)\ 1¹äB™ö–\dò®ƒ¸Ì´æ[ftÓŠƒnZ;ÅBXbìØr´3\ ­Œ¹Ú•PŸI5ÇL"ÀâDÊó)ó|bBö6ìê‡ùÀ(ï,ÊG ´œ2šþ d]$ Éb0´W¬€dŒ·Áu‘Àeÿ3cŸ¤ýæææ‡ [ι°“y0«ñ8s„rzOæØl"‘!ôqì_O«Òò´TÓZð¸:Øl¢vSd¦èʸϯ¹,Ž«ßC×x¡'ØÇ-÷r<§´?«VŸ`t-´ÜZ @×ЩzŸË)›~Æ*³&Bا‰g†ŠµO+qùŠH ‚1Z‰«ÖEì{s©-¤lË“÷Vm!ÏR<§É7“HY’žð&Ÿÿ¸\ŸÇÊï°F?ÂÚïÚ¼¦š k9/öIk´V´ 7Æ:-ñ1jñ) B7TèÍÁMŸñÉß2tô;ÛÄÌQ`¡³gÖÙ”9Oû,ŸÃ|N“Evy¾-6¸Ès,žÒ?^λvÎå!Ï«Š¬§s<ƒc<ËâþÐý`á_³¾p‹¯ÍânëA|ÌVà¥Í·Q½´s äõܶ®~§•š1n±Â¸p®¡@.¶¿k+óº çÔ²s9óÈLPgsŶD~Ár>ÕŠv^¹Næ¾Gw ZˆI%{“ö5y–Ë÷¦omÎì´^X2[X~ïŸ}NgF&ÈíL9e_,nZ‰…ÐùáS‡˜vá`[y&Ýlð×°ÃkZ½<÷-ª"shtsésÉyˆ¯Ï=Lí̯Ñåµ@ÿ…ÌÞŸ´‚ !‘[WsÇ‹«zZR¼xár"j@^—{Ù«à¿Å ¬©nnwXªù‡_î v¹¢×(kñwãoyr[²Ùý½Ó+¡V ½-ÏËs½¢ýá¿7;G½‹NtØþhx ôjø%/è?þQ\‹¼ýûþõ×_ªÿó߃þðó}õv uÔjµ—;; ~¾z¹‹?kuú¯úËóêµúîÎöîËú.«y;;»»ÿ`µ%´%vÍ&Óþ˜7åë ?›$¼Ç_»M"u……?ŸÊõ¿ýŸÿû?þ×üã´ÍκìRÎh¸÷ÿƒÿWçÿý?ü?øûÿËVd£×ëˆ_á‹ÿ—ÿ÷¯ü/Ñýÿv=º«öïï~õ_³þ¸?œCÿÿú…SÑûu·æ½®¿~³ûk·Û¿. ÃÅ¥^bþ/qö§Ío§þò¥9ÿë»ÛÅü_ÅE³ýðì‚kZì¼stÐì6ÏÚìÝEû ¿à |.¡q.Î[g€ñiœ”(e°dom±Vã¼qpÂú³¿ƒAÐÿ`ãÑ ¦2+}óÇ“`4dÛÕúS?˜°>›Œn§ßûcŸ3ö?ùßô-¸ñoÀàq1 ¾UAèùá?™ø~Ú>?è‚ÛÑxôÙ¾?þêüåéh0÷oFìÐòaâ’vã=kMoªU*Œ_íÑ7ÿîŠ?®s¦ Õ‘j•u¯ûƒþ˜5ÆŸfheà÷„Vrð¡ÑiôŽ:‘¾QK¼Ól÷ŽÞ«o0ÖËŽ*iŒÇý¶:b$š6C-ëàìô¼ut¹é½ «hœÓ QEðëùlŒžWþë]tŸ†š±±?‡”Àí[03 Y[ø`Bl$'¿°¿¼®üa0›ˆû£1OX0¼ü¾ÆÒJe2NÐOþdÊúW“Ñ`6•ÕÁ34çò•/ øß@Ù]:þf ^àdÆ×Œ€³H0D¶á¿ñÁ¿<ô'×ãà~ÊùNéh¬³±¾†C.^\§»þß%ÞÄ‚=ollTp|ù£§/ _/î^˜[“RìÒÁ+56*—@)Þ‹ {qFE²Õ´Õ¤R‚¬¥¼³–òtû‚ ° <ÿÑå;À02ê c7þp4õ‰x!sààÉq*qÒw³;€a›Ý ù˜ÝmT  ìQ‚Æ1L+'*3 òR`úÊ‚Þé\©7h:$&! ò¢ø(ˆL6ª 8+N?ó elèÅs–å]N‚ÉxY>ŒØ/œÂóÑ3¤2Œ@0¼ŸM7"ù±©A3u×ð6ðÕ‰8±+_0-q¾`Óþ„“8þÊ¿Q é_qy&Úâ(W½|´yÕ4o1ÒxÍóŒ÷·?ü4‰xßO…„P‹‰ÏYk“¶ª¾ŠÉÞòb–¢µO/[ðeËÕ(ãK$¿œ‚ B4«Åö@Øo Ã$ùd€9Ø?÷XÿòçgÈÿB£…`¢–2ñ§0`ÿöÇ#ÉçzÕŠÈîƒä¯°›€s .–¥öf©É¶6̦YÇbŠi›´$©D3ò{0ñúlÀ—jN8lG•êù²EXŒ0sCZNGc½ þ5ÔÚ§¥ Yñv4àM›¼Õ^»%ÄÁ¢€Pd7¿ðN‚-'÷½ßö‚ßö¾üê(¡e–Pª·¾lÄŠù‚Å 5n‹f7I»þ§`ú ðÌD1æU`C_ï7H>a”A•©ÒŸpyÂç%MSeàQU‚ÿ>ðÁð7âKzœ4Ñ«´àë ’›ò"AŒO€Ûpch®ý8{ñ+ÁD†ÁÖJÁÏ…@û·¼Èá5ÎMþÒÞ".U:ç{»;ÊuÁDµæ¬}TQáϹ:=Ò´«ÚÛö˜W­–kô6ÌCüSSwdÝ­×Þ„ §ToÑÊšpž¸Ûרï6"Ï×WóÈŒ¯ôèoÞY`¡w³á5("JÍ­³÷M^„Z3bPJC×%ïp[{Njéή„Æ­Ôc)ˆÜz–’šC.-8ç]ÛÌIÕi¶»Íƒ¨ N‰ Zh+Œ3*'ÆïžµþõlÚÇ]wÚŸú¡f+­z~©ü…UH»¢Â!¢§ŽÙyú†ØIæ"®AwZªmО‡ ­¨uØNе¨Þ9<ã›髎ÙùS¯Fõä)&lh»G[6ÑSñŠ@•=@ï¤þóÃëà¬Ýk¶/bÖc™ØñØ|à¬DXßÏ ž=¬¬^sÖ³ZC¥žI7uò¶Å(y;FYΊõ8e·sPë’^’*eB¨m& ÔžEϨ˜(’’Þéòß9'ä‚¿¿§lM&_h¥Õˆ,óÅçìÓ‡ÚK7;pù«*ün·&ñÀ\Ód5Û‹ÆõÄâNÕÀ¿eüÆòŠ~Ùþz”E•ÿ±›‡´£¾7Ôþcw@Ïšð×› üe^h4ëúzyhÚ pÚÔl¤¢†› dPœž¹ÄŽç;Õ-c«‡‘aô ¯ö$ÈgXsû‰À_qªzìñ;»=ôÖ[f£ÃS¯Îùžä©ÏàtgyœEƒÏ'bk²Ê"–/d[À€ù€|Š\p9üûÝ4ÿ~·ðïþýõ÷ïw3ù÷—æØî¦;¶ªÛ •Ú1§6æ% ß¶eÞÿŠíüúWþ€³ŠtpŒ¹4™Ì®¶Bÿ­Ã½‰2Pkà÷o‚á'¥ý‚rÂß]¥’8逕Úoã±\¾ª“WõìªeN^ºU }B–ƾ]áÛE¯îi³ýs¹vܳ‘oÖÃŽcÆJ<;œÅœ¦û¬  Âtͪ&³ºÍˆæ´®ŸiÖõÌî=Ï4«;éárÈ:Üo‘£5L†ãC#¼»èóIòYÿª‹„VWj¢#T£”æ]Ôibs]í:l¢äqs±ÚËl4Lð Åèiu¾J±ØÆØÁå¸Ëà"|‹±ËmDÎ=ë¸h>m\ð<:›íþ–7 4Œw³Æ»3ŒëößéúØ ûÏj®Âþû¬/Õþ»œÙŸnÿ­íìÆÏíó—\í¿=Åþ{XaG…Ýw»ïCM¾‡)öÞ£Üg½zëdê•g½>„§øŽ5´âÌcýí¥Y{…õ·°þ®¿õ·÷¸Öß^ªõ÷Ш:ƒ™3nÿ¸3¯¨áȨ!ùàÀg¥CVô Ý0Ì92»÷Ç[‰5?W ©»e R¢íïÓ1â¾¾² 3éÃ,¤­#‹…´!ö-¤² ³äåéÑ•š=4’*¿F{` YRÓ©é|ÿÈr˜%›eM£h?RÍ¢¶sù,‚1ÛihÉöbãd¡£§÷=o©SBý¨, ‚Ùq²å+í-å9zÍÉÚÝqζ¨âÔQ,kcT¶6IiU“Z•~Vh­#Ëi¼ß÷ìãmDbóÙq”ƒm  6|±ÔCY*nµœeÊQËcU}·¡lR¬Š½"Üöy\šýwrµ6ößÝzaÿYÉUØŸõ¥Ø—4ûSñ¿¶wk;1ûïN1ÿWrÑlO¶ÿv÷cø_]¾‘ÀûÎ\.E„°PëæÃ;ä]I¬ð~IT–Ï„ÜÝ_² 9«ÍÀ"„pòãîÎçûøkvÕÇ pö=˜~f_ ³Ï$‡M™÷7Ù¦Ì_(lÊ…MyÝmÊœM×1L›­s‚…Í…¶2ˆ0Nö4[úI¶ª‡3\„5aFfí+õF2¡«P'¶Wðá¾Þ€´Pî}K,w @™K@k”Aœ1 .FqÝ'ef3Ùç÷Ý eîrŒ—•8îý¬¸eûS»lAR(l f>¦ïÚÈ^¶_ a6̲»`XV¾”¿Êxr uÆH‹WߝТøszødOÍ1ƒød­÷LO&®Ÿ8†=ÐI&02´þŸ”ë€*‚Á®VT–ù¾ï }g¶èw–%.̉^ö  '¶Hê|­w!=y`¯pù]8§Í…äÕ’PF6¤¶(G ¯·ð&äìjËj|¼µQÂez¶4óiZø¾J‹ç†ß$òã|ãâº+ ã?±²ÁªyæùâuA[NÀ«_KYNt£/f;ÊH^(>`˜cKÞ±Ëá®\q‡¬—|3rÚS0kß,ì[Ý<§’Ö¯°7õŒ½qàCé%Æ]Þf¢¬.ñ¿"—8NO1\d°´»Çç8tƒ¦»l‡nºû?{\÷ÿ®Oþ§WþÓj®Âÿû¬/ÕÿûXùŸ¶_ÅÏÿ¼|UÌÿU\4ÛSü¿Eþ§ç’ÿ©»–ùŸ"‡ÁBó?uÓò?u‹üO…7÷ xs×1ÿS|ÎþäùŸºë’ÿÉ&-Ÿ}þ§ÂËÉžœ—óÄݾÂË)/% Óaó´ñþÙ'cŠ¥Ê–Œé‘1-3™’’©H†´BŸi‘ I¿• ÉÙê" ^.'j&²õÉØº;S‹äGEò#öÌ’¡Š;'!OŸ9%ž4RÝìi¤ºE)ãÒýÿ?ÖÅÿ¿[+ð?Wsþÿg}©þÿåÌþTÿ?ŸþñüO¯ üÏ•\4ÛSüÿãþÿ" Ô"bÖ;T÷ãÓÈãòÿ˜æòÿX¸ü —ÿú»ü?>—¿ì€âØŒ>Éæú>ÎïüW¿]ªûÿã*²dY„_Xt×úT9Lj)37¥9{OûÖ÷Ô‚ ÚTp1ÅøhßtðÃÍ7 Í­ó|k=jY{De«Å¤÷ÈÕ­”ä%Oüç‘r¬ˆoXJ²"¸A^‹Â×}ªñ Y£¼JN¿þcÕ>¶û³7¶8™ ×:†èÙȬ=Úië0^qÔÚ% ÓÇ(0g8À²ùàù:ý—éåOJo·w~ òì¹ðP}ì(1š0ËÎày<‘³{"?®‡'RóÿM×ÿy»°ÿ¯ä*üÏúRüKšýió¿^çóÿmó%—\°“ü=ÿù° Ç Bhs;$/Âç(<„Býˆ{,èÞ:bA+¦Z+t‰}Eè± 6t/ ºWÀAÞÄõ÷&öV­ºžÅL¾Á,>@1‡¹€«Á¼i0F±vsîJhmZÒ ·Œ÷¬2_Y¦o²· Üé[ƒ\šSRsC¨EÅñª­µ^h$_ nµmñÐP¥ÕR¨úkF j÷iê' T‰@ôâLTüÓjªMµsj×£1—§÷£!zC9»N]iB5~áBØí‰­°«Ù^áT䢛!ID¾øü”8ÛªOVuĪe^– ÒmyÍÑ;_æp²8àKœÀLõ׳Avçë϶»?;©ý1ܱþÙ±,ÿ€'¸cY ô: *{>"íº‰ôrÎAÖ£W¹pÚóõç•»?¯sz&÷ß™æþËìþ¥¶sÔ…P—âRÈ*¥²;mÃQ…é§íCû&Ÿt2ü¿ú€Â'oÜé^‰'&mñ ,ôç[iMŽüÉ)MŽŸÅd)žê¼~×éûð‘öêyEw*åêËì|é!²48a…Ñœ¨sÇ/åËiÞÌ&|² –슒Œ]w˜ Óƒ>ˆ½,ñ>Pð«ÄÕ'1Ä(áe®,,1DÅ’EÀ{éäïÕœK®—5ĬC^êjÈ„>ú`z¾±Ós!´t¯õÚƒu¼¼L]÷r2u= F¼: P¯çJÁòBÝ-·ë©0Q†®ïäeèzªN/JNV¸Óh¹®.žŽn]¼ž®‹'鮢í®8Æô Æú+Fê"â–´ É@;‹ŠC+¿Ukrç,‰ý:1 KÌGB¸³s0æÎX’=Ç‹Ò|Ô_Ï­ÅØ&¯=|1ªÒJo Ú›Äyi¡˜ÐÝšÁ¥žNºØUci<¸]KMÖ;†E|µ=ÿFh‘|µ°ßuQ"AÞŠE¢¦Q!$Aêúž&¶çˆ<íeO^Óûy’×׃/=þwòÿø?«¹Šøßg}©ñ¿“ÿ§îy/·ãùŠù¿’KªL‰ñ¿çŽøß" Ђâ{×2Po­r)ÁXJÖƒsõÒrõŠ@Eïá]A "„WïÔJCx7»!w…¬Õri,—/–CH-gmÓ EÅÌèzþø®E,êE=q7¿ˆE}úØAî,2k•ª¤N²Þ³ù²'1·ó€¹r(¹¾y` ê ùГ2(åèdÆø!––JÉÙÙµ‹bMÉ­•ƒv «Úá`-;¨5%½VŽ&D²::¨1Ç“Œv5ÝÓ ~M‚ñÀÂs0j51¯é31±• sÕ¦¤z=½ø×l+B2-Wøš.š’[ù hW«ŒR¯µ ‡;mßS‰ƒUâ\ýXZ[B®7¦'gKˆzMüìÉEÄ*¯(N¶@ªñ¯,!y!³Å¿:Bò5$?U4¬ñºlÊ-3þÕ®oQ± ˆH4’OF”Mƒ?·$ÓÈzúVgQñ„ñ´Ë,wðjŽt•fG×>8ÕÅ ¢QçOêÉìÚåvú¸l¶È{*ÂNÚéG‰8Ížu±Wd]\ÛKÿ¯Oügÿ¸š«ˆÿ|Ö—ÿ¹œÙŸÿ¹Íç|,þ³˜ÿ+¹¤Ú’ÿٱު‰ iyŽ)¢C…VöèPLÝxºÆ‰"{õŠíßûÿ7ý~`ÊÚI‹íñ¡E|èúLJv9>4œ“‰¢á[I¢Ö—¢¡¬“Ѭ†|ú¸UECpËМQ]B é羈4•Q|Éq¦ò-g”iô¼r*§gV¬V‰Ej›žb°)¥9 ´4ˆjhå)û ¨$BRO•ÔFpÆâP3†ÀFÍ£‰oka;µ…ºÙ†žÚ‚f-\@"N•“Âa/ÅXO𘎚¯óŽ`Ëgætpåªá¤öÔf Ä–Zqz¶NkòFkwÌdwJ²Î¹»ÿ:KwSuÆ3Ž‚øÐ[ãŠèµæb4®;˜[š‚:›eÎäK zººÔ §E°/[b°¯»íE¤ïBQg ¶Zl£ÀŸ^ðt½Sôš¸sÀg%.ÖC»ðsáͪüðá}D˜Ùã m*ûÀÀÚ(Ú²ÚhB—Ž«­£ê©“SYÖhÛäðµxDãcàËf™K)-}n°²ÉB9X« ¨uK–´öý<À±+ µQyE¡±”œäø7}à—‹ýšF§eFº¦ ¸$FyÌݨ ‹ëd‹ŽÙMŒAÅ e×(§›c–aÚÉaÚ)"Lç»ÔøÏûÁ`mâ?w_ñ_+¹ŠøÏg}EñŸËšý©ó—ÏûXüçnÿ¹’Kêû³ ¾ªÁrzÞja’‹Ë k¶ø¿ñþo·Ë•¡"žÓî§ER¤ÒesØ órZ¢4/1Š“KHÏ÷Á7ȦßG2Ðî›='\æYx«þTݦWã/ÙG&ƒ "a:{Eîc.Íïg2Ìî÷»íC-Á¿ûS®åü¾ÙÁhÀ1Ô¿êþq(ãê[W?¶êñ`rÓ©†í¸ëüI ÞcP1H ‡Ã¨°ïŸƒëϪ6¡x¸>Õ~ç÷'³qnŠ(fwãßûÃxýC>0H˜%°OP35Ðcøiú9¹šK­¨_ø(¤3yåRî€Yµ˜¦³!ã-ó·/õè›öÕÎ.«æûSx“O ñ÷q0úCÑ8¨ C?ƒáµ õ•?ýîûþy}Í'N¨%kHÐa«ÑåDø«qyþC8;ïì­w†òÐ;¿Ï‚ë¯BèC&_'Ý€ökU½˜‰&–is¶Ñri¬ Úhñr®xñé%¦VØiáÝ%Í«DùŒàgåÞ†ÔÅ8w„\Îy‡7”^·è~Ù=,ŸßØ"f(Q ›8fV5/šDØ* |ïÀúª½ p²ÿ£hüG¡ªxåú¦ü“Ô$êËfØ›:oæGµ7|Jˆ[å°º8Í…¾ tkXмª·9­$LöžÈúƒ¿×£ßëø»Ðp+ÍuZ£¸úüt¬Qšýçn}Îÿ¾|YìÿVröŸg})öŸ%ÍþÔùÿ²^{·ÿöß•\BçÑí?§{wÖù³s(ù^Â1ßKL(5(®$6š=Ö&EƒVÁ³qð)àßàÔ{†¢ÆMÿ~Jg:ˆxâþñŒS¡^ójÙLJ–H|·É ‡$ïÁ`K9i§‚/KTU®SÁœ\‡=øð“0ì¨çÐNaôÚR!¾ëËDœ­Ck  ¯q]ú¨JŸ”¼ÊI©¾Q©V«ü—Ó YX0œúŸ`'éá£S¤CóV«Õ^çâ¨ÊYƒ³ç¥µÜ·ŠÑë²tRjnT67€õîøpßð[Møðÿ)¦¢Ö«å]£Õ…j®8§&WÓÔêà¬Õìª)ɬ$šÚ3é %,40^LêÇâÎ ^VÅÄÅäŶÕb籓»·" ÷ºLcš)‰hèߨ_ÑÙ¯Ë,ÝN9ûEÏbá¡­Si¸9±w_ŠË¡/G¿OlÝ¡™I6²*;‘öT>ÕB`~¢! <~Fù)ƾ8œ€™K¬Ò.¥1%5{Y¶(‡5Ç~ 6ƒ*q옽£Ós‹LÎvI˜%èD–„;MzI?™(˜´-ú žðÃp µ!/,±Y6ÙÕ¡QŸˆ‚©j‘ª8ê]ïÏXŽèßA¤JS»ÃK9»b—¢uFÜÇ‚êîðg¥Uí¼Í¢ÃBÇ®8c²¾ 3Äâ'ôòý=ùˆ¿ˆ¬Ã”ƒE±ñ I]’Ãm†;!MÛVºÅÞ¥þ×EÿãÁäx{·¿ÇDÔ’Â?ûöC%ꛇ2Ðks¤lœ¯Q"ºý2•WŽáÌM3sÝtæ(—4Ý£¯rIf’<ò*GÜÓè8šEêmêæKÑÍ×öÞ8˜Aâr[È`_ XÈÖÛDöS_ºýoº6ö¿Wµbÿ¿’«°ÿ=ëKµÿ-gö§Ûÿj/ëEþçGºh¶›ö¿^’ýïÙý|–ºži©3,+ 0Öµ]ƺöŒu›¼àã ÍX·Y9&Ú±bBk?ÌX‡eêÆ:Y³«¦ÂXWëVa¬sõ»0Ö12ÖIƒÝrŒuí\Æ:Å:°rc]{>[ËÓ2Ö5]‡†3LÓz\=z½3”Eï ÓÛs2ÖÍÉ@kh¬ËÈ%fÛSždg¦ŸÍX÷Ø;–âZä¥Úÿþõéjmì;Åþ5Waÿ{ÖWdÿ[ÖìO›ÿž÷Ê’ÿc{§˜ÿ«¸h¶ëö¿ßßï—„Ýï¤Åÿ»€xxÌóÁÿíàA€ÎÙŸíCþëY ~šêWt5—õè÷‹£ÃÂthÍ‚´I°ø‰ êŸ&ž-%b‹1c”Çàh)ò@5í¤%Ù/‰&æ2=rVcþ¿fœ ®Æ}8ÿÙgŸü¡?æ|aµ¹êo¢Si߃égNøz2»’PÜ “ ~ïd¢»38ê&#ñ ¸GgtÐì µ3–|ï ƒo±0üËÏ—†¥VÎr5òÙp<ào U«¸È]…6Z®J.ÔJûj%Y태/“ „QâŠ!U=á¬ÀEKnà¨y`÷:i•O.Ê^ÕìÑ—-ΔâPµ˜‡è¸ñ4þ†Y/ÀÛ÷Á¬~; x…oÕç|n}•½r°õ¥òvˆ¶g@’ö*_¶¾Î6~Û ~Û» †¥»Ê—ò×Á†ºÓW ÐeÊÝ„hú¢­“þ/ UðÇZc'8*]ßRýVäè¹yTåG@÷û˜$ è~?BºF ‘²S–Ÿä>–ÜÈpIáK9”iƒòWÏ!“Ý8k!éí®E-°–I¡ðœo§lÛâ v‘3 îÉnà2ñ ,DÀj”D'Åõ\N¼&Y ˜›8[EÁÄwÊÑçLÙq$F¼ CCy 5%cˆ¾Ž²´èŸïtàgí%>›ª~µ"RÁ\ÁÉîû±7LƒûA€ºŠZ޼@–:f; Žâ˜ÔjF“iT­¾¬b=±zö¡žý—Ur½¼ÎT©­–±?è_“V&ºÅUƒÿ/ª]rÒÛwx èćÎQ÷©‚ÓÏcòy4¸lƒÎ Î7|Üo|8ø ýà“J™m\ª öðy4ãß]ù8ð\êç#’€c•Û%ˆI[E¯¢˜­¿‰æUBB, îRÓØˆÉ½¯—/?‘B³Ñy„_wOáð*h¿Fß'ŽÎgìr˜Kmü;„Ч ! ¨Ï8¿ÿ)’ þþšh%À## `š¢·x)C¢Án €x9S}äÎåqp\!jVˆˆV§”ûܾ¥ÄÃVãô@öÖ~ÞžÇëÉ‹6 ³oäó£Ñ;™ëcT|€FÛô»ypŸ–ÛÑͤsûÍa0 8‡rŽ7fXää£ ·'(Ub/ºý[®0CÈ40•¿DÎÇ|êÁ‚AêS¹ÓÈߣªt‹äFõýQU0!åÃT‚›T»rwœŠÔ<¦_/YÚÜÈu’ìQêŒ;© Sæi®+µM —-{!ɹGàÁAÜëÁT·*BÙ>éß(l(Ôe¾;±¡RÃNÆrsëXúhŽ7c·áShg²3$ÍJ+{†±èD#YaäQIH%>ÉG/±:蟳,îeÒIiÁ¦—tê¼Pèbö]QCì}v%7q±Oä8-8ã$‘c×FŽ—iäØÉ‘ÑE÷ûûýy]tºÿÇ_ÿOaÿ]ÍUøžõ¥ú–3ûSý?µm/îÿ)άä¢ÙnúŽJzzw»×‡ü nßOáõ™Ûë¥|—:ËZ9{æÉϹ*ÅÕšác~(°H›éópßè‹3»=r„E7ìaÑ.k~‚@-'Õ…Zsg½-œ…3@^…3 p΀ÂP8ðÊã (,ø…‰|G’¿(‘ÙçåŸ?©]ÞF•Ò̬’áiYÛÓz¨ØÒÕN®Ì†®y.Ç\4ûÿç5:ÿQ/ì+¹ ûÿ³¾ûÿ’fúùHsoÚÿë…ý%ÍvÃþÿa_æß…# ‡êñ.ä= ÿsÙø·«Þz[ùyaûq0ôfÍuAAq TpÜ›G‘TŽ×=Ý%ÿø;þñÁßÁ¦nhœü€/"¿@¢€u3˜ÿ¼ÐJiL5~ÿìó*ÈÒMùÈxMƒÑw=ÙÈ}<µ„øO~ÜÝùüµkå¬<$`Þ.Àðff11ÞiÁ;-£ò\.ˆÑø†<‰§F3•eéØŠÎtåƒq ݬ¨å‚vE)Hù°õ¢Š-[ö©ë BƒX4¤WÂC%/ÙÛŠq „ä–=Í—„M«"%ÕRæ9UP rœ*ч™Ü¤2¹¡C&_~uÔ¢‚ÂRY•‚¾„gT†pFåf£ªÛB·/³Ù~‡‰½h0”)Fsž]ÀдØíxtgζƒÏ£?ùúÃHÅIÍ.67?°Müþlm¶à† ž{ Ýgcè@Ì2·ìãé–ÃðhKWNlWÆ·L¾&·“ × öP×âꮥH sÞýáhj¸ry€Ì—>ÂKGÖò,Å1âtu5_Iw5¾¹Àê~(Çí1er W…¾ ô=,Ò¯¡78§O#th uÓ\…;c•î äb«Ëû7¿·?¯,îÄ!o@eùç ~"Ï J†y'6o‰á•O¢LÌìM2˜‹Xé¶Iܰ@h:2Ü#sõ ’„Ú\0ªO𣡯ᇠ­–ɳÒÍ~6â⺎Ùól®ˆ]?ŒE¶w•ÈöÃŒ'#lÅ*EòÿÃD)Ï6Rœ7¯T+¦”ë[*“–.L2-¡™Îö«7jNcVF·œ+h㹂Cç™”ê;ÎX0›ãÇN?ÕÉÅ”Iñ1·›äÃÜG Šk /Ýÿ³Fç?v ûïJ®Âÿó¬/ÕÿóXç?¶w¶ãç?¶‹ù¿Š‹f»éÿ9Rü?òÈ"rʦð|žÂóQx> ÏÇâ=…¿£ðw°Ç^‚OãÿgïÝ–ÛH²µ±mG8ž{;|™ ˆ)©[3ÚàI A‚3¼øÿ‰Yj…ARk;ìçðcø½y®¬@QÍ4*ºI¨<­\™¹r¾åFô‘+Ù08ïnVÿ¯?ÿym«uÝk˵\dÚ[²ÿdÅ2’ãi«ÿŸþ4úÿ×ÿïólôÿèÇÖÿŸÕ¿\ÿ_ó&£ÿµÑÿÿ‡W»¯ÿ¿´õÿ—Ýÿ³ëþµÿei]•ÿåFå/ŸŸLåi×µšÊ¿³Uêl×Ë/Oð©åè1+´¢#Oþ%N1÷3ð ðD3`Å=d‚ìŠ2qR[|¹jdÃe)†ÛLéSµ^ÞúÃucê+„4Ø5”“ê§r¦m˜äiÜó4ì9šNŒ8pÔý˃6:òŽ|£#ßèÈ^9üw°Ñ“gµÑ“oôä àÓ\•?Ru÷‚Óƒí“jÝ×ñZ_¬¬@ç2§¦2£ˆ¶¿Êt•† ?¶Ù¸ö5ìa?QéNcÊêÓUîŠð­»õE‘â=LØ0µúuó—ÝüÏô8úÿiãgÑÿï¾Ùà?ý˜g£ÿÿC?–þÿ;­þ¥úÿݽzFÿ_½‰ÿù!¯vOÿÙPù.Ž{G}pzy õ›WqÝ©ãFAˆÁE·½Á†Ê<«bCå…PS³Ž‰ PΧm%\“ažeZ˜ìÕ ˆKdAäƒuM — ÃtÁf†]Ë…K…ñ4þœÌQÛ¹ÉeœÀ¹Yb"m×ßžWêo;ŒqÞ·¾¯¿•ŽßŸÝÝ%3tRåz£QEÜ.æ¤T]ÐŽÕ? ¿ÄwJ/áX˜ߨUFÏ„ýul’vvLE›ˆªáïè¢zûµºJ¢‹EæZžÃGÀ)¾v> P”Üb@4ú3+ÿÇR³ƒQÿX«£ÏÎ4p“/TPa`A“{ÖKóÏCIÄigžEÓY”BcT>™ÍªAQà𠆏Žws/c‡ì'mÏÑÇq$•µûÁÂü/XAÙôlVÜ@½r®´à¸½¸Im„Ë,"†â¼UÆeQ›D5…J0º€…ëK«ÇÇY2áP­KQêaq å?ÛÍ ò•Ïc¡æ†Pk¤Rˆ„YÛ©õ7êù$XßÖ¥] øÖoÞ[’¶Àj_î;0ß-KXY’Ø´äšò¯ü^I›¤¸V?(ƒ»Çþõ~÷ÍË@½ëÚ¡šû=X@ÜÓ÷° ë‡nè6Qds Ñö2ËŒnÐþM§{ÞÈ;×Sñß_Ë|Æ5w ‰2ûVÕu¶£/14“¨Í‡Ñ—¤ÕêÅÑ4ÇÉäE¹¬—‹Ü·Ü[ˆi„ 2*ËAÇ60s¡¹‹eÝmqbÛ*qý=â%Ï’—ÔN‡Wúe8Åó{ÝÁ­vÈ> ºj”np}°¥f[­$:Õ“mºœ×ÉJPuº…â—°l­sT;ɘ q°hb#v#=@“ Ž°1¬Jý­+v¦šè^IE\S‹ù\¿u|ç„Þ úœoiPª5Bï†ýFÃ{Ã3xÂóžÒÎÃR‡hI‡z4©µ³~í<Ÿ~´l%×]Ò„4Kj«!â©?·55 6CºMŸ¸$2|å6Ì ž›ÆÎu3áÚ\Ž)²6c6§Sò‘@¢ Bn³”|ü˜Fóíøíc%†Ṳ̂¬ZAÚý˜9ƒ’ܨ,º¸ßÛß åË4þˆKâÅ´ð¢bSVB†ìTæ]±d‘Ç)½]Çðº™[«:²M xDd)¯‰{…N¾8j:Lö\4Gž„¬‡8´FNEW;ÃÁ©„§sÑ?zKâ);Õ¡²GÎzÊÍÎÌ%ȃã¯iœznjøœ‘F9$Âø†H¹Wà)_©Ö+Yt¢%ñR÷_“5rª ]Ohbè½¼ˆ¿· M¨úF~õH?.Šnò°,xóvñÆ ÝwòdÓû„»-œ†6Y«–†ªEUx1³K„zd[ÚHÎK¾y¸°Y«MõÏ-:|y.3Tn>ª»i€ˆÃàv?EöèËÆÛíÚÓŸÅþ»÷fÿñcžý÷ýØößï³ú—­ÿF½ñ*ÿõúÍfýÿˆ‡W»oÿíùößÎ~E´÷síÀù×4‹æÕß®+âËoìÁ™çìÁí}9!@YeƹúéÃȲ$úÍbï£ñ:–âžm)Nçѧn%‹1Vï©‚qô»o*DVâp¶ýñ0­îbÐÂM}˜FÜ2g‘mv_[[éšÔ¸³–Z_›0§«²ô1Êi²±ãã±ìŒeS¥.sËâ÷÷Gçç:¸¸ÿ1wÃ4J+b´ˆ°7wÃù0Ï’éC|Lî¢ñ˜†¯Äsüd’̱¸î¶Õ熾A¶kÁ ¸vƒ¯1Üajœ°Ù-c³Úû²acáκþÆuiQ~Ž8ÈÈ»vOgÑç8Y¤ÄüÊtÔÙâhlÆ–uµU]žuyeÌIã¯Ùu¨ý-ýA›~{ŸÔµäÛÅ=£>-Þ°É7Å]zÎ0þÈá®`÷ÛûÛªeÇᙆ7˜ {;8'¨h‹¿¼{÷Ÿ*õt[5ÿq1›Í9Dhe}‡| gFL›ÿ îOÍË'™®56FëuŒÖx¶¯»²;.‘›R&”ÊŠŸ´eW¼ÊÏ™ŽQiýNœ¸ñwÊ fåñ:~†Ur\£Šô*é¨U²±Íoló?Ð6Ïï|'½,VÒ•þŸa××Fý6†’öú]üÝëŸù²"ºí|R®eào·ŸÅÀ2}…~]/;?¥¥ÊZû;Pàß×æÏ“¯íþ0Üm)†ë Tb dxùAÛú÷ªNûÑ}<™°ç±øòë9™Ê~ÔwüP:4•D›,ªûÀîÅZ’©} ^ßnÔ&yhÛŽP¤±i‡‚ö·8„ü Ú‚¶ö'hg,R–7AûÉÞÙj½’Ð'RÐ:–vØcú¤mþ~o„vðöÊÞ~ù¬7B»ØêúJׂ‚À¹l¤JºïKáØÂ>i–ºm¼”ÅÛwÖUõo¸ç „Éq©­þ¹ÕÊø6´kïûµzh&°ãv(z˜§C6¥1Ý|¶ *SO9nˆ%ñ¢“Àel8IQõCvý.ñ!±Bõ€P €{º’rÒ:¹ŒÂç¡.ä>ŽÌýÆÑî.ª]Ãå·¬#J·½ª ÓÎ0ý{[/>©|k¯ïcâÖ¸¤¾Œ— ¦ì"‹ZßèÏ”ë‡E,å‘Õv¼“߆ÞYiãY®ŒùpQj#d)/º<ÃJÐdÉÜv¼`²ä {L>-îqC| Û¨¡I>»ªQoŸ®,ÒåV€ýÝî©Y–»Žès\‚ ÉC×»ÿŠfIÆÑÄÄ·ÿä5wª'I¹ìù–yÝâÉänÆÜ=6w9s¦J3YúßU5oü‰ÜÀÜm«e*±ŸÂ©ÍÛîÖ˜ZÞ’VžÛ§Î,kÍë—>¿»ÞÖÙ‘]ä]ï˜®Þ WjÎ-» kI&¼ß-f3ŒGAý7j6½#K.Auh©?ùØÂ©¥#k[ÎzΡµtžgÉ’3«r­æÒ¥:~Ì1³½qÝH/ö•hºÔ/Ì RŸæ¯xI·s'ÖrÏæA&Öq"Ú LùuÛYç±üR$àò™¶Ù i‹þ¨ò¹åŸàR&Öõ*Ž ÉÈÛKŽ[˜¾Ûœ¾_Él%Ï,‘ëù¥?}µ‚ô£?qN{ºaÆ[™;?ï/€ˆpßú“S5ÿÑÞG—x÷¦}Ý Ý&rÔH]2t+«‰W{˜ÖÄ“Þ(ãi3 U RÁêÈ4Ûß¾ÚÿöÝ v¿}’ešYåç¸K>a3Ä#ŽöÃýœ½ mÐövhmrCÜ_aGô*À2þŽèm‡ÝˆÍ¾lÞ…¹Å?Æw‹ñ\5™H¯ƒqyé†Ã? ›¥.ލ%)ñòSKÎ^´Lô¶+'’LE½¡m=ùf¿ôFâV<‹Æhp–Xuht`Ë ©¨‡íŠQ¥Ò’ñõÏò²H2)gMX©BN´*±µ½岰טK„wnÍkzïñîʼD_ïøSÉøgöþØþ™ßûqü?g;?‹ÿçÿçG=ÿÏ?ôcù~§Õ¿lý¿Ú«¿~ÁÿÙøÿ˜Gý®ÿgw§$ÍN¿_¡_7¤?8ALË“ÖIE´P,ƒúð¦ÀÒ¯Cá|ÿ†a`àŸüë¤s|ñÔ B<ŸÃ©SVÿ„T!ÃR‹iÀÔCjÑÈ%‰,’ Jü ÙÚs±ŽOgÀrÙ*qËŒËããóÀ\•¸SYLáxa ÏSÉ9Æ“|Dâ{ 2£3“£e çj”½W~ $¡•(4®Ý'ÊÙ¨t [LbRÉË20~÷³ãéÏ…~„¹A@œ$?ÂÝ$žŽcåž"U³,®aZÒ„ýùzZÊq¥îãÏ‘EÇÑUVBÔÖ®Rpq¾{°ÅG‹;ÆÊf=)8n=%·_Cãþð÷Þ‰[­­ìCSúpS†¿èßMåÝØöà'NÅÚ¸ÚHî·/ÈïD­ß½:ª‰·ÆÌLOí q~aTö 7ÏzGµ·p‚¹°™ÇU¡šÓ››µz“à Ì4ËzåÁ.qú^¿[ì˜Zà”›(¢E‰"7Y{¹â¾D5ÂõÁvµ¤­“9-¦4…©1ƒ2püx G_³k,žO«S .,å#Z ªÖé3hõ¼Ä±«¤Ÿw°p`Ãý”J‘Û&Ú+j4,Y‡$æì‘aÍ‘—‡NÚ ;úWÂÍû£ýæ™N¾<S#/øªÕ=Ľdâã.i g4l†ëáù×ËÌ[bާ§¸@w0ÌQqÆ`ÐõqP “¨ãÒb¥Sà ØÆ_T¿CJ ‰óSG#RµNðWÇmKÜ8¡¼z6Ä;›sZ'®ê×ò\vƒ)FçB-SH¡‘ìý¢>òÔæu)GáÚ² Æg@ß;\œœƒ†Ž û ¨!3½òPÂÔº·˜°_tdêmÏ.&©LCAž8d—%ZêÌl:ûE‹Y{À - žpàMFœ ÇMz7‹§JÝD='ÕP­ì)öûxô¤ÚŸ‰N³èw8Ãîâ¹\Y-N‚‚#Ç„!1öàÁ©è›(h©Â‚Ç´)¨*j1ü’_w Çÿˆå{ßWÌVê¡}ÐsÆ„g i»š«j9Ó¼”yF¾¼CûÔ[åï2M2Ã;µÀ9P/3;…ùÚª :§7S¥Œása¨ˆ PN‘(Ëìt®Ú‘(G¡qÀb8ã±EÀ¦ÞZ»ÂMGêoD|ã µrLmŸWÔ¦×=7ø½ÏN³|ëJJ‘WRtJ[øz¶4žþÖòMñZv* é\a-¹¿}ÝÔ(1’Gg¿?l Öê"`MqÿUÔ÷ukÊ™Á8[‰‡èÚ”{DзÀªhô¦ëM½,9šîQ:ÑÒá‚2`â¿ËÁ-*³¶$ª{5s¨HU©:œ ÉÝp×EsF 燊p‘ù×i|GR ¬hJQƒÿx½…Q/n– [#áÒ(Ô¸àô#çpXE5”ä5ÙÅ?ÑÌ­ƒ’é(‡B›8¦¥Ì!avAòÈ–\õê´çƒ&ßÉf1ôûà-î ߀0Ü­¢¯™ÑÝo| ójj<¦ý³GÍvZ4$~MkÍ)nöóŽ# ÉÜeš—¬p¸ÌÞÎ,Xãœ$³ú—£ÿå=Îј‚©™HÞÍ{Óߎºûg”ú-Š)€ …".lx¦ ïСSÒ^Éò¸m ¼ˆ¸Ñ¥ ªnW´ˆ\Áö!zÉÈ^±ž46q÷å)ˆ±ŒþºbfrÏ.È‘E­¿Ç‰¼nR{àwUð½ap¢:¨2IÝQÝteÐ\¶3PXCêà†¾”Ža ‹™ºÂŒ0¤˜™hÀD±…=ïÐ’â[%LˆYôÀív1Ñ|Éד8Å•]ÀdlزHŒ¦hBAУ®_ÈÑóðîxd*Ø*&ÔYæžœæé”ó—{™²$“WGi«Le#²ÚÂÃØïj«Dݳ¿ õÂ:·‡žC®^ª¦`t|·ÍP—.‰ö7[…¢¼!4Ðc»nh ;È”ËÊ6aÊ)zô 6A7„w!º‡Å¢%èŽ`ÉâÌ–fÑýp6 0õH¬P·NŒ³Öj,!{нu2 ¾9’‡ªYÀ…OVùDìÃÑ5dýîp<}û_á£h¨álŽ[d8$ 7,ª=œ¤ÃÔ Ñz¾Ñt•ìmeÛQ†û^Ý÷šGQ£ÞÆØ\eç¨ù¬öâsñÁlëÍñ}2ƒ³ì‘"ÉÄÉ[(ÓÎŽã ‚ƒä8¹£´~T6eíÌYô9‹]]Í¥‘h*¢wÒ<§Éb&¯82Ú¯)ýÍ*â3.ÇH4v1Aé}dNÛ_¿V«¿î½© Ö¿a¯Íg&Œ³yGMŠzÜ£á N¢Ãè#Gë»#Ðu¬2ñëÞ/0‚7»þž‰2qivýܽ;>‘øÎ‰>7Ç[>çtøYÂKά…þ‘¢õ¡ oÜ aÒ±¢xbÄ`ÔCèË+\z†s8éI‚«Ù•”HgA;þl2b?ÆóZ™:™o«¡¾Ê¯ƒr<˜w¢n;ñÐÀ~¿‹¤Æ¤e9pažŒ03-÷°ÿ¡x´r…ÝÙýqÔù1— ç}† S§P6 )íb~3bø7ÛGë D<8߈XѦ÷‹Í¾¯ŠÆœÒÒ|›gfpöHŸ0U’;8Åüʬp¨ šÇ¤¤fGÕõŽÛEÝë›W£"X?´(º“Â4Gq9*Ò´b4­EX0ýÁEQàk¨°Áõ¬˜9qž¡èËfEìïW†u^Ã9yÿ#NQ·xÒƒ1f ¶än#¿»½|Þ9!#-¢Dãÿ“ˆŽ©ÍƒƒF]/àóöáüèP°oõ/ m|õþ´ð6¸FUzÔq6h_\"þÒáÑþ<>ƒŸ-üÿc8÷)º³ÃEõtz4ŠN¯ ?®±ÌÿçøáàêrÿP’$`‚î]tûGêû@ÖûÓýƒóË›­p´æzѤgͣεü>%Êßç1ËùçxFE@õw œîƒË¿Wäé%/Æ»ò÷žüý*ÐÒ7Eô°0Vöä¼ùÙµoG÷ž_0CNÔ¯¥ õ&”°ºS_©<®èJáTIåK´‚Ùåý÷Ù¿]~†1¨ü)ŽÒ|œ´œ`EL¶Í¸;½“Yõ?d{‹·„:€1JäVî&Û•¡º®×°Áþ}'œâpÂ]»>´Ê‘|‘®à3)ž|5Î$F¡€ÄçõP¨mÃÍjJ>Ϥ}ìÕª:vçÿP“ÁQ}PÝwñý‘î>’^ÂVâU*sÅ‹ÛÅø>ä,QM¥,-å#5G(5›*<©þ#Ýè¬:Nªs›|š\nû­dj”€·Q:Ï’5ÃEªl/‚ù˜ŠOÉ­€ܧToTZŽ%…C1¼½•Œô¢genÎod_?²_÷Â3TËÁhUUã­hpU׫´l^ïd[öéG ¼iiг‚, ¼¨–f¯o‚§IŒÚpri€û¾É+ì+ƒªÕ¢ *X¼²öåÁ¨~iÕº¨ˆo "Ýr¾pJ—N«â·â^JT^iÙ®º…XÜÀ$a^y„cã+V_T$½x&³êy5PSƒNóÀ—¥«P šZ1¤¿N±J»ªDfªzþTp¯4ÆÅ9œD„9Ư7b9;Àˆ8e_“IPïFÈBÃÑç8EÍ@ELø|!õíd{¾s²¼Muv¨$ ÷ã}›´ñ¸|QgF»K9Tlò%ø5ÞÄh²÷OqŒÊ!?TžÿÒdr—ÌÐÃ7á²¶DL>´¡â¥¡xˆà!ñÎó8«eß·5ùE4åÍΠO3e”Õ–mÉ,TžÀ_šdÑÐ!}ØÜ¹U!/†x³øÏRtŠb3QE^õ•Å'*¡ ÷„°4®p‡¦É—h†/tKP‡¥žËφÓx4þ õÜÁí"e>’Ì*#)‡¿Ãùñ¨0@or;˜Tà†2142»‰ÛµñX+¾Ó’‹NZSÛ*ëqõõ£%µ¼>0*`¯Ç͉§- ?A§(×Dõf®—" (‘-רÂFÜ‚Yðê×€ \¸×Á^É·àBÝi…¥f«–ÿMéå u¡°O[ÓºT]↪´ùð‹úRÆ›nÎåÅ+†¾püß,¤Ðj¸0 ’K™Uæõð耜ñ23)«8:@òîˆÚE·¦hÍœUX!ý ôžg¬JõB×ÁcGÖ±d&øQ¥7B$*MOSh¶˜Àþ–NDZ%¹§yg¿Å­Ðr®¢Ä5ù‚bþä Õ"]=¯•Ø2Æ}&TTPR¼*ì>£*lô°77jè- çÕ1ì=ó*þ¹˜Wq«Æiõ6šÏóÚ(qÑNë¢,0N,!ð-«§ÃqÂɲ…IšÌçÉ£ˆF÷á•úWÜ3èDëšz1™BÀuoN»ß/<鄽n«"´a¶¯‘yÂë¹Ý/7 ™>;8\Ó¸×fK®Uqä§s}¤‹saxsÛªÅR6 ¦X/#m$ v«©eD‘f¦DFK Ã"ŽùõÈ×Û}ó>i³sª!íM~=êî¢ÖèZ>h‡FDýÅ„Ók€¼5‰¾XâHðì”÷¹¿Ÿ†Zh÷XåªÝ1ç{õõ¬Úzy3Üû-ž’ÇùïSt‡‰þÐé—("V£%tõ:#Ë ;0Š#¡êÌãpâ7f«ø•kJD–”d1qŒ’~ÌdÎÓ­@)Œbб 3­±Hø‰={¢‰jf”­ƒƒ>zίÎoÒ(„ù0_Œ›{v¨Ìnt*áGõ-ø­gƒ-¥¿Ñ°º87Õ £á2Ù®ã)Í Ï¥¸Q6˜IgC©<€IŸ$ä\¹ªFÜ¢ù&É`:€¨¥tß?ÀÜ—‘>¼¾ƒ…Gñˆ¢`d¦#kö ØTî´ÔG?¥p&2‘0:£¢ðC+2š‹8Ën ÁAÁ9Tê/R›úN?j*ÆÑP³¯ç¡0åu%ßäØÍÈÊ,$äÃÛä3R™Á¼å¦ Røõ|6ŒÇÈåÓÜâ)öpq«ÜÃs…¼Î¤&g©= œõcoE^ŽàÊx¶'Z[ÐîIeA£žJ [¸Ì[»Í~I[FÅ/ªÙt·N%UV_t"f ŠËOPc ²fbý³½‡…Ðé½lдD°’äœþ•4±ì{áßFù±] “É’yžÐgUqÍé {M/Fß½N¶"\cøRgûuùå¯Í®%‘„OÑe Ÿ¹U$pž“xØ#骧#I‚ õ£4TÕvo»Îg-jáJŒ&”hµä%%Î\þ½$^4_ýBC8T ùâ‚~°Œoå1$]Ez¸ý³ ¢`°Â–¸öJ¢öq8N£ZÅüûZ_âzUÐGBààAÖ‹³ÛÏ ¹¼Õ³x*yC·|žãÇÏ6¢A¡'ùa.E΃ ÂáêÄ2Öº!û¬RÞ8 Âs"\”mÔn¨ïœ2GÉ}„m>…ƒ9?R*·áç$DìèâhûÛDZá»*ý›ñý· {=­ò%•Ä(RѪ=ÂAá„SíZª¸òÏn•è$¡M„&É„° ¶!wž*h+Y²q2-Í 5&¥¶Ènr•[ôÉU›Ol1ÿ„èÐʧlfl/µ—j •ShÅ"ûûÙv–9<ô[YR ßmÐí·ÙÜ><¤w_p ú£¾|»Šv÷ðÿ ‡ÇþþÖÁAnYöõ2M‡¨ùùìgP24¡mYCy+8²˜)Tµ å°·pÏÉœÓ/wË"ãêÇ=²ñ ëá1 uMfsë6+J­h<Å;ç8žÏÇQñbeÏ_„­á3!üƒI·³ÂeÎèå`då!u ~<èТÎg‹¼ …aOp/'£ƒß?¹”¥(\Få¥õѶò)è==…û›?ˆ"2›×ÍKG¦.x´ ¯ú¼ÂûÛ¼N(QÁ«†‰÷v_Û’ý«Ì ö·¯ ¿Ím5ðé’«)žñ„…Ž`© *£Ëdà¸çÃßN&h|Ê¿²™U 7µÚe*ÞZª™“ù¬Ø†`mgÙâ…'ª»êN„Èœ+7Ú»¢UßóL^ßSƒ`wS’•¶ˆ¦¨ñ¸Ÿ çñbž/¥ qæ|òo‹j~ALÂùº…ø1œ½¢ z_Åh–L§”²2wC*ÿ8ü»l)ˆtXSÀí‚[KS1 µ²NÆ{+pU Ó»‡t­®I!ø6Lå§ÙLTñ*œ>íÃ+”“á—­ó¿Ê·š­ë/6›ÑÖ ú»Øpbš)ÉÒV’g:´ÖSC¡ùÄê'ú)X6”p/%µò:Û¹>’o”=kÊà{‹.5Kºê™Yr8gì9IB×w3ß^É»?¾¸ü·dÄil/ðÂv½ºG‚`IÐ_¤ Ôw­ëÛËÔGÆÕ›<[ŒXq)äÐÃh ^ùv4æÛg–ܧõ­Ù1â„ðT «ÙeUÊ•cÅ Ze «¡h3YÎ^PÃ’o‹¥ìÓYB¦.Q’!cLð¾órÏÈ9ö0ŒÏ/»¥¼Õœn„ÜøEúå3P~·% =Z*(å„é|“›ÛˆE ÏGÔш0F0N„‚Hæ({Àz$´Ï¿‰Ô‚ÓéQ$w”:‡ÓM\^P ò~ø‹Û¹à ©›]öWÎ"%­Çkj™'²lü»;n=ÿŸéqñÿë?þÿÿûÇ<üÿ?ôcãÿŸÕ¿tý¿®¿Ê¬ÿúëMþòðj÷ñÿë%;«W‡ÿA†½þ·Âëð@ÿ¤äª 4ËÏèó'#ð_—ÂHûB¼'ÈÏ¡ ¡yÿµ«á‘e,[1xSñ™ÌFºtÊöÝ*Òm–έl©RÔ-îl1Â^CUn©7¦´¾uRÞâ6¶NlßlEÆÉ“ÅÊØ¥h’ S×ö){t ¢g‘Fè\¡Bð£ÉôãGFfÕ …_ ©#€‹ÙP+Ùȇ 3]£tÆ“ytŸ½ç_„1Ó;©H"-òØ#h¹õûH¥œ¬[0þ\îüJ¬4»MÆB^6¦\(׾ޢ;à ‚õõ "5\€Ù"¹‹F tnÀfÉØêI¯ž3zóFC½ˆ¬)8C© cHh©­@áÈÉÆîµ$q¬KãŽ?œæ«À/+'¡™„wßøÈjþmáÌè"ƒqràŠä·ë u—ÕÙ••î<øµutSÙ­÷ò»Õ ´ó-ˆ/ˆ¨òß¶E­d-*®WƒùT{ jÜ|Þ¨Ï9¬ŽXe×Îf+¬çZi9,¶Òß4ßdTNÈl6—íûsݾ¹Åýç®;£[aÅ\Id† mx9Ý]jÅ*°Í=kPTÚŒm°qG¶É}' óÆnþ¤<Ûœð7»Ï2[¸Ìù…Ý%Ó™™½¼yÊó Ѭ°E½Ú–ìâf³Y{z¹¢F~EL(üƯh— ÙI–Ýõ¬N.ãxl4~?éãêÿ?þoosÿÿ!ÏFÿ÷‡~lýß÷YýËÖÿ.Ìñ›¬þïÍfýÿˆ‡W»¯ÿk|¯ðBrð?¬ˆ$üÓkÆ3íã¿ûE¦ð"#¦âOËó}]d­^TOÏQVB?›ÓYcõ0T¥J9ƒÛ/sæíW­z“‘Iñ$GCcFß³õ›[ßüÈŠ ãäsŠù¦èE—ÊÔ;:±j&ýˆ¬¡Eë@&âD¬2/D?ÆÀ¾¨£šÃÙŸŽ¿•Æt¥ñý„¡·1ÑÝœªR±¬*‹K( ÆêÉZ–…âaê(™‡«e²¤¢6[m _ ‹óˆæiHÁÆÙL+<ÃèV /f·ŠTeÂYeÔœOEåØ$„CYú!™ªl›:9‹Pû)w±ß Šà1Ä‹‰#K ÿlL´BדÙ;½ðsýɦݒ”³!ÚyyUnì.¤IÕT©É4ì²ÏG²p?e½3Íå%ªêç%¸¥í ”ÍKWöÕúNiŸ|¦/]Ü—@\i&’0W”Ù²U¢£µM@/åw;}ÂzN%æÉ}DåM®5qKÎ æ¡ ÃÏå˜YRÖÀ°Éu¦p†œkÍhf(èbÉc†¿¶ë†cΩ]AÁ óGjWP0èÎ`)gæ ׯÄb ô»¤Ãä·ë–=¨å°îSSâ^¨DàœÎŽ“/uÈóX¤Œ7É ¥÷Ìä Ìn¤du½Oa!÷„¯y]Èž€úpâtC/Q9=¹gYEƒÑH'U&È˦Gf^+Åæäó¯L]K“Ggøþy—=é¤á´Èrz¶˜®…k6µ7@‡z/ä¤ÛÈ5аîJÝù¼ˆ’ùNíQf`FL£äb”-È#Ñ(ê§Ê„ílS™}>³]Ö¿S/ù_Ø#^~ª×õ“½ºü~rœŸÒŒ«¬ØÛôJì&ðÆ¿ÑY–à;ÐP®#ŠMàÄfœÐÌäèÕ(3Äåð¶¢üb‹Iè|ãô«…ì—k´¿ÉcAGÆÉÇfÃt«f?ìÉéS—Ó¸bg',ŲÐ,ùЧËy(vêà^—NZ ”Mg¨ RpoY>"3ˆÃu¾ àÐ> µïâÞ„îµ¼†‹Øž²ClŦ¡Ó!E!»˜"¹ÈÈè%BṧnµsXíôàlr¥NN5Øëªw0éA^ºIgü vS%j…Ò]ÃÊã»t_¸®xp`M…sÇ® ²±W·â­$éé±Ò‚º~ò‚R¢tÂð¢çTÜ!›#9'$*™°jö°XÚ…õ©ÙgjjRõC=[‰Fýg QßÐH9ò÷ÄGnv˜Õµ Ús!¥… ¹ mù„¨ÖW'äàÚ£$×ñJž•Û8QöêcQ‰«MS:G¶JŠªhN.|NZìl`ˆs™R¬Én¦dT“ÐOÒ?B!ŠÊ,¡h&…¶Ívíw„/ên߈È¥œ:[eƒˆ$L÷ÝW:ˆ@.^Œç|Ü3†¬]…Œ—ÿ›žPNëLkë:õg©Yw¨Hz„oJN½„â«e¨^;AµLJíœSë䧦WºÀhÖs¤û)òþu¹'Ý%]qœðøuT•<ƒKÞþQ¿©2ö*¢ß¼Êïìñtµ×<&<üè½ó³¾:S`9I{„²N?;Çô3¾Â¸ö.²í¬S”3µµ» ðŒÚuú٨Ȱº »\~*½À`Ïšç ÿ8¸N~_ÐΪ)ð ¦ýæaEÜ\P&¼÷G­î!ý>?¯ø òò‰/t+üë=ýîaVÇ›~÷èoðûªsÞêúû‰ô.:§ïà õ-þ{z]º1œ¹I†¼ÈÐS íÛ‚“´  пït€âLÖ‘3“«.˜.7ƒqZN#ú®DK³Ž+jii–&d•IÈKPÇÝÂü«~úŸÕ;F¼šÓ1ú®$^t_T0oïÝ”¦òœ…S8ˆÆ*ƒdMòú­gé :ÔìX&±_ ÎøiÙ‘–¥FZ9/R8÷¢Õ¿ŽìY'5»P,~œÂÁï@Õâ·Ôa®˜ 9BQçÐú#œ’ c``x»¿ò˜›^ åôÄO—à¦yÖúõP­öÐχw¨wWÙŽSwøxDÓ9ü ŸáJ?9¿:¡©ÌÇ)¼GgúKYNo\Àð|<”ÌË%TpîÚ­è}Ój‚Nh$¢¶ÔÞ×!‡Z,ï ÷€ß¦Ùœ"kî[^N€S+œ¦¿G•ð¹YuË÷8ëLÈà3ªÕÊóØÔÀjË_ÈuÔÔ3㦔¦âqZbbsy÷TWà«Ý/7%‘‹¸àðºpðzˆctT£½Â’°¶üä z‘cä,4« .¨ƒ™\_ÖÌÞÊÝq÷À‹ÖLðj±#«ÜèšNãߢªe¿F v3Lj,Jµúñ‡KYáÄŠÊo=ñ„´‡8³vÁ|ËX¤œ`~8xù1N "³tèe£HåHþµ‹2Þ{f„eùâ¦Ìgûß|THÿõÊ:3 (=”øT4ÙЩ9KòØT·ënQü»¯ü©’mÎèö¤M‰D«z¢oYêöWÀ©„<Älâ?Îr€•†Z•È|*' [È«”ÍŸâWÅyÜÔôfN[¬‹Ó ™6¾…µvW4"›[É^Z+–Ƥåí»ÓcAÝ-Pw\oÚÛ Å¾¯Àðñ¥=—•C\G¹*òcÛ y]æ­è!íw{H—ÓÊMù‘´ÈšMyÒ7nܪì#wfE{¾Cú`ƒŒêŠô ²ËC'ò†ú“’õUõªPs‡’J® t•TAÜWÖóñË )Þo^yÅ|!-œB‡Oú3âÄjCýäÓžöU¸Ÿ’9Âue=ØCäjIÉŠ¦uq¹‹;÷ût°Í¦à´Õµpòu[ÐÆó¶€#ɶP¬‡È´¢˜«“Á&²UŲ,AU¬Å?„r²$SíT*3î”hKkg:é=œ›DÝÛÙÂwˆÞ–šùkHi÷/_êU„K¿Ù:lÁ×nâp˜ž$ç=†3ò!á£Qz˜ÅéQÉ4õŽEv˼© §¦Z‡­™ðBäÍÝþœÞ(ÎLŽ‚µÔfÂå×J–§|‚\ÑP ¶f:Þ"!ZÁq±Wtà{&½D=Y1ð ^]󯣇ˆŠM¶xõÌb˜*‘ãÚ©±}ÖÑÚŽkŰT6´ Þ¾Ä¦hÓÐ|J·!d/cÅ(Z«tsSç ï­*’'g2 At»&ö'Ó°Y¯‹åôY8®Oœ@NŒÖ¥bù¬È6iÓcdªX,„êëþÀæoMëZØim ØGu{–çš{‡. ¾n;°1q½E0Óò&_ÈÙ¬óÚMî<ÝäÌÓ/zتÞÚ™å¯ÑêX:SKäfå%"dLÕJ«$8W…²Vóä£Híü²t¶‚Sç\ßo+K°ÖškUÅ!›¢Ú­ _UNÃ>Œ6&\ZÜ¢Nin|péÜa1^ûo²|<Ž&÷·0ü-Â[±ösS‰ºØŸ7/ Ì—‡x씆¼ÃS/$0z¸v©§/‹€¦†R‘¦ÖMÍeæ·'³66À¬øÇÅØýyð^mâ¿ȳÁøC?6þÃ÷YýËñ^¿Þó×cgg³þÄëÝÇøné¥7øü‡ü‡g Ÿß`0l0¾™‰6  † ÃaƒÁ°Á`Ø`0l06  † ÃaƒÁPÀ‘ †\âl06 ÿ¦ »7 ßðÈj6 ü÷ƒáß ƒa·Ðÿ˜l:ax€ojû¬y¤}Ör*꽂þüx@‡ݽÊØaì°vø';ä‚ÖeÎ è»cZõG¹ƒ°Â‹äH(®ÕÊî3cTPüçé`;SÁÛú®bW±«ØÀUˆ \…ØÀUüAà*:¼7ò ¸ê~ÁÚUz*&[žæÊµÎð'HyÀœT‹ÏçëK K‘0„ †aùûù„»M}PÆåÈ_<Ž HǤcÒaÊm@:,ÞÙ€tl@:6 ÏÒ¤ƒŸ HǤCdÒ±é„߀tl@:6 ŽeŽÝï Òáâ?ìý<ø¯7ñß?äÙà?ü¡ÿáû¬þeëÿÕ^c÷¿þë›õÿc^í>þÃ^ÿD3¹ òÃ`Mðߊ£oo«b7” DžùÉçˆÄ™ðî· -T ä‚Â]`¯E‰¸`)Èz~ hÂ@¡„BÄ„ ~„]›ÛL&(Â}ŽH+?‹îª£cRµNðWÇmK K˜,€=x'ôlPh†‡kðm¨l6™ÏäŸ$ZµL!ŠPC¦@A úE}äÄo9…ÑÅk›Õ`ö è{‡‹SƒsÐÐqa5$b¦W öÃI{ýbYAg“”Âùc^Â!»t(ÑRgfc35•%ÖÄÐÜ#98ôŽ2<;ŠÒ»YÖ?{¾-–Ú ¦¶´èףö8cª× ¤V²<îæT q*ÞGÄÎ[TPp»¢Eä .°ÑKFöŠõD ½‹»/OAò´·®˜™<°;!Ž”®¦þ6'ò ÀAü® ¾7 N”@U&©{ ª›.Æy(?ü˜D$Ü=p̆;y7„aH13Ñ€‰b {8@ގ„˜E0Ünm(ÿŠªIVÍÖâšóÄhÍð=êú…­à[hd²FÂ’¬Èó)§y¦\ƒLY‰F’É«£´U¦‹1ÏL[xû]m•$Ô¥ù&Ô ëÜzz ¹z©š‚Ñ)GºtI´¯¸Ù*å ¡ÛuCkØAÖ \+@9E@>!Á&T÷ƒ,ÝÃbÑŠtG°dqfK³è~8˜z $V ¨['ÆYk5È=eƒA±ÊhºJöNßêÖA”á¾WD·Æ½æQÔ¨·1vWÙ9éË{¨/̶ÞTsD·˜‹“·P*¦7ÆAÉqrG@WT6eíÌiõ fÊ¥‘h*¢wÒ<§Éb&¯8çR ~Mc¨á3.ÇH4v+ 3Ü[e¿6~­VÝ{SAKÃ^›ÏÍfEìïWÄÁ‚÷9<„ÿ½¥Û?<éÁǽAó¶än#¿»½|Þ9!‹8üÀ€¢>!³´á¿æÁA£¡“^Á^¤NeÐÆWÉyºU1.úäp ÿÕ¡1}ðçñ™ÌkЂ9ïœì¬L‡:Eõtz4ŠN¯‹N¬GŒ Öð‡üppu¹(I°÷÷.ºý#õýA &øÀ™ßÓýƒóË›­F`b‹€‡ž,” (Ä DžK ²€gT„EQW&ò ‡¤9]þ~há9 „ÐAðãâ°€ zºý@oþ=á…1Ù&S¨‚z²ă2 À©tdäh’Ê  v}h#¹"'È´O¾'ŸP0bN«e¼Ú3øFÂÆéÕª~(’þ¬œ(« ÚÒUšëZƒN5,'x8 ¦ O¸vBl¬Î†“êÜ&Ÿ&—Û~+™åßm”γdÍp‘*Û‹(âúSr+ ÷)ÕÃT –¢ÐÞ?‹ÞJFzÑ{a^ÈÄùd_?²_÷~ ƒTU·‰U]¯Ò²y½“mÙ§1ð¦¥!;:¡:zîA.ÓO“µàäÊ÷|#ŠWØGU £9®Tª¬}i0*_Zõƒ.*à¨@·œ.œÒˆ)‚ŠßŠ{Quz¥e »pz&‰Æ¾ØUØ{@C4öV ‹¡k Ì‚â/1.JW¡4±Â–CÁ†/1D•Kd¦ªçO•EãâN"t›‚®7b9<¤wOk ú£¾|»Š˘Réÿ [áþþÖÁAnYöSEÐçÝ~IT±®|J†FØ"´±-k(oåG3…ªV¡ö³—TPÎË LÜÒ˹ùá{T‚IôL”ZÑxŠ÷¦q<Ÿ£âÅÊ^«¹Â;~ø-F«og¤œÑËÁÈÊC*-ý°IåuF·è!e„Ég6q€ŽÊü©1ý“KYŠseTÀYm+¯†‚ÞÓS¸¿ùƒ("³y}мtä‚G £ªÏ+¼¿-ñÔ¡™¢· ïí¾¶¥ÓW™ìo_~›ÛjàÓ%×+<ã É™RE¢Àq/^x;¡Äáù׳*á¶Q ºLÅ[K5sR ŸëÁ­í,[¼ðDu7B݉™ÃÊ~áîŠV}Ï3UxYLQ ‚ÝMIVÚª—â­ý~×ÛÅ(<_ê>ïÌùäÞxÔ¨óÝÜl¤zÄPìŠ2J}£Y2¢Œ‡VíìM‡Ê?‹‚àÉäq·Š¦¡bje½‚÷Vàâ¦7嘪‡I©õ6Lå§éýUñ*œ>íÃ+”“á—­·¾Ê×ü ­¯.VýÑvú»Xùoš)ÉÒV’§þ´SC¡ Àê'ÚÚ-;@¸—’Zyí\É7ÊžE`p½E·%]õL9œŠ3öŽý ë»™o¯äM_ \eÛ2Ć¿4öxa»^Ý#A°$è/Ò¢ê»Öõíeê#ƒ‚êMž=A¬¸rèal ¯|Û‚ xòm KnËúZì"BÀ«…Õì²bàʱD- …ÕP¤”¬g/¨/È·'v’9…«’¹F”d˜À3'atê¼ä3rðÜ*‹„Ô"ÁT¥RºÂßW(råÓI“Ðãr@õ¢Œ¹VÝÚÎ?%‹@ݸ ?!‹À"Ÿ‹@S!3 \-K9†ÔR$êw$¼œDð3ôdÚ«€þ¸.1Wlbf ¨¢Îe@¥²Ø y ›Xˆ»™ü¿1ÕxÖ˜G~,uL@ ÐH¢®+ËqrÏéÒˆ¼Û%¿«ÔÊ“ÇÂ>³QO½²1K ÂÉÂÙÓ(pÔZêŒE¢ü4¼~Þ¬ÑÏ›L?þ˜ͪºåÕàuòfÅNÊx)ÕÉx2Ø+}þ o%;d††¾a³'ÁžS àû×c2¢ë ÈUô>©æ8Xð³œQÓ6žªoŸŒ´‰FÒa8¬ w õŽ×ªÃakHnviGeIŒ^ˆ½NÖu'MßÒLç ©Û ¿…l§ÇÐïXQW˺Rùnýðõk1H¹ç†£Ï ƒ"X(0„Œ+dÏ9?º0LswÂÊQ!“ dØ6¸¶: ÎÏÉ1Àl·ƒ\Ü8~z¬m-™¢¦Áéù¢-ëi…Wìvÿ!J#£IÑ#DÕ±Œ4sáчqŒÓ„ÑYõœ1Ýa:>”žîO唲~Ô¼Ü Ê#sÈh¶ä×6… ôÙ ÌWQU'·J<ºèÄmSXA™A*|.ZZ%;ÈvL•ðÁv|#¨J›kèd^‘kø]ÔM}“BÀoRȬ&‰GàûŸ9¶‹l¦W=þµœþ/¾¸!ÿ²çæ fB³‹ïI±ÏQ” ™YŸÅÝ3—P©%ÄwO9€Î"ZGPrkÍ!ò*P[ †Ü2C äÜqz5 í^¾î˜3I^·tZÞŽ·z'ð›Ø™¹Û«G:Rç­ ™ÄY”¶Ø«E‚¥RH¥¡gX ñ]¹}Î[ìÄ;ê´zÚ½ÀKlK€ÿê ä÷]Ú:¨êîR=í›"ãôû‡|N-Ÿuág¯ßìâ_Tygÿü•Û‡X[~Es•¯o ‘öÏÚØÔÙX}70y‡gÍóÀº•ßgÛÉÁ´Ý2“Vˆj{Ñ9}¯Qm@Û\ö]é÷º_"d¥²¬ ò ßoÂTÞ¼?:?¯Ø˜¿ºuúÝ=~O¿{Gý‚Y½éwÏÏú÷Dáuk?æ‰çÁ¬Ãã–‚ð’““ x3±ÆÑã陨£*µnw@ ¬ÐTX˜P âÎHm¡†M1òÈB²ä _1z”áÉhT±»BL1-µF‰)×hÀµ[zØRcÚË–Íi ßÕé|x÷@6& w϶9X¼w£í%ñ>9Âuzr~uþBc¼×Ã{t ½”å4ÛɵT2§—PÀVo·¢¹Þj‚ôñ§¶çv(hË{E¿l[Q`Û–›0$6)ié…‡ÔG»0êlBúº‰U7fˆÜ™&ʦ™ÄãÖí{-҆ώ¦=t1lØ¡ïùÍÝÔŽiO‡éC˜‘·¨ùñY¹¥¾dÛ.í(mxÌGFÈëKOCªÉ™jÉÿ=]~•E9Õ­–u¿Ä£ùÝnàêäæ^oq%èÐë”? 4XÖ1>`¬$µÏ©Ü¨„ìSçá…hÔwX– Waتü:n‰D…ªP!hU ¥ßÕ°bªé|G 4ªhûj¾D¢3ë„ñ¸áÁ(Ù³³J ÁZ.Uþ !0@˜æ*ÐÚ˜™Ø$LPI¯’ñ8ù‚;:‡š 8¾Sٗ雩 oBsj¡v{UÍÏp¬Âv£& Ø\büeí…TÇÝÃbò¬Žy4¥¬±“˜ ”pŽþ&B{¥áN{7^Ð-õ6q·¨0HeË5¤ŠWƒK#&jÓÕ\Ë ©†ÙÚÎyW3¬-yl×·†a$BMw²ãPè}LheÄ~ìr?’,&ß±¡½ZˆSãÉ(¾rÊ^™k‚JêJ­rÂCõjƒ¸>&lNû*³ÎË .Œ³„³]£´ÔQ{•¨ºMm_3¤â/g•ípo‡…oµœ*Úÿ½­(»+#O²@´0ö¹Q¹E¡(Ž:'P™™–FÉÅ=¬èÏ/<çlÔd¨Ð A¼´%°Z•æ}»Á¨¯™¢s¶]rèß«T@ñKÙÇVÅ2 w‹%}zºEÑÙz.1<ÕÆ¯OØ.³\ «‘ÈopÜþR!?¾'LBÏ C/sZÒþ%yBr®œš Š)Aµ+<æ•„ Gµ3(Š/|3=—ŽøöCq±]>ÂhØ¡h9’!jÚò‚øL¸ \>dˆ߸I¸®cpéhlQCKøU飼sž­NŠ Š~« sp“£ÎIåÇ5ÁåœK¤‡‚fr‚Qy"#Ñ6½l[7¢Þl¼¹ë¼¹›÷¦?Öâä's¥É›'íoÀsãá7q“¥ís|a‡”÷tàõ‚%[ÜŸ4DM¦ù ¡VPúM™x.!Dç_’*{¾Y±{lU fù^ÎU6‹â £cQ°27TV4]Ir̨Bš7öõ¸IáW9¬*Ѱ¡y—Å+,\$¥­Ñ³2¥¯QNT’~,NB®(x¯¡Þ#©?ÿ½Ý%ïå¢ú¨A5çΨôˆ(+È/íat!ççR !"¾Ÿ$„¶Þ*áHÛe—ðüQ/r¢’ß‚h;‹RdjNŒ'Ñ—Â.ÐNÎ.†ó$a„Z©`ÞBÐf18ÛUh¸ªŠŠâ%Œ;ºèÍihc¥9Þ®?e[ÎΚ N¡wÕ>…WwÍßV¡LCíB}™f!\«œ)x …%óþÖ’”lfß¶‹7V)n¯€r$Œ…›"߯r§·t[ÛùmÉÒV‰]){uvYÐI§aÙÍm»/õ¢uŒ±í÷}»±O?´n{1O˜~Ä©|Û$öK²ç{Ÿñ-oè“dRD÷c8GÈ8 «¯F©ŠK“KâxD²¹(ÍgÑ4å Ü{Ϫ» X}#+î…¢x;†²ßJX€ð)[\²MÇC‰KÄ5›’xù„¬´] Ÿþö_Uׯ”SôyçCKZ²¡ W\“+¼èÝ]û]ÿ>¢Ÿe°:¹ŸfÑú‹îCu5º…Nd¨o`Þ2—¾û8ïà6È÷§|øîõŒ{±â¡Ñ°n FÎi#…uëµe‚uì W´7õ w…Fc…ÛÂ3tU¬¸W._•ùhæ~=Wnô-´tØ—d-!äC^ü½Ô®™ìÔÖ²Q7‹$£qÑs³ö™ª:™’9/¶ý+v€&ŒØyª4"ò‚Ìú 6iû•£™Y ˆ Ï%qêªN²óŠŠnçöáí"ó¬¤!!Í\- å,#£Ú2šÞa‹K+®óÊê8]ÂÚ§Î1tZ| YZ+Ð.´¥ûŸW|×)¾›-¾«‹7,„)a·0ùʲ y•M](è1ôHmMˆE>+4– ̰݅By{.þ Ó­Œ½œÓÏ7í{·e¿£ñð+Éx(6*,"•WIk‡³•ÇÒÔpH Üc1*mÍÃÝÒÖÒìò>Æ&˜§ì´2òeùN+z`4A€äöG‡˜‰i‰û¥·2­òÉÇd^q»dÔA\VìrD{· ¢ÝÎõÊÒ=Ú¢s*Å£m½í¬pµ=•—½m½Ùl©Owó/ãVk¼ô_År»Õ UŽÐ2WÐF¨u8Š›ÛušÛ}zs»Vs¯r¬ó”†Î)T‚™àÌ«š(aªè.JÓáìkE¹)Üü>ƒûÅÄý‡»0gNžˆHç¨+ Z´‹«Æ%P¸ís‚iƒigËeð¥C„¿4§‡<;ªr¨¸Vqï 2ûÏäyo=v‡Ç”tyÞ|^ÀõNyf}÷綾V§y§øÊkÀ¢Êê Áiz×kzåõÓ´½(ÖÃÁ´·ü›U–Æ•ôȲy(Ÿ°Z=ãSÅØäàœ­e½S·pIpZAävƒ-±{ß2ê²õ³z&¸%?zF8rúrI˜ý×o—`<†¾Y]Šù—WŒ†å×o!‚-®z×wžë@–sçÉˉcϯ{ þ‹¾zV‘´Þ³öl§­þä“EÎSàlYe w›ÿ—:GÌÌÔŸsS÷? lé×yWêÿŇÈ[hf×¶\Žè=Jä‹™I ã“ÇÔÅÿð]œ”ªÐ¿éZçC¦JYùÕé’f_¹;­Qr¶RCª0™€"²­Ô›:„¡J5“PÚš×ßõ.Ah¬{ ŸsäžEÿXÄ3¨È‚oh›ÖÝÛhÙ×u"æX'Ut‘…ó:×÷Dšã0±V@°.Peó³¯üŸ¢§i´˜‰ÒYsÐR×Öýõ>ïT3d§Vô0ÎJ?¶8 }@ãGÌp•“£ åçÙð6A|~ŒDôûUªžd~ë8@ä˜åÄZ¾œ¸Ö¹è×8R‡Z’ÃÜ‹èã çHô¬”Y€diÎæÉžy€¯c“ôÐ2r3–©ÊíàÍ  jÀ>j×9ŠëÊ q¢È¬ÂœUæŽ/’”-tdHîE)ëÃ÷ ^ÃŒÒEš„|RÑ‘YøH'ô+ùøÑÊ£ýõÓUÆ&b™®2”[(ïz@±Ìо™9_6ÎQ®S[Ÿêž"̱sÅA¾‡WUz}G8Tuâª*V–ŸŸ¥eRðh ¸O¸ç£i˜ãݲNJœŽ‘-:-¿4<t¡K¶øÕ*V—“@}ÄØ $^¼¨ˆLÏz%!3è_tZbXŒœî;¹¥Bô°Ô©T0’ÿG²–æz•xÚy}Öéd)PÖôXAq/u Ìë!¯B^áé½VI‹—O.D»£8ÏxGp€±†¿¶gr¯C…«Tù҉6“¬&z¥;¥(Òéi]—A$Hõ•'ÚôX#°¯0ÑÁ>óD¿^}¢oÌ —(ÎS¥«Ê3–¯ àE¦x£™Â†¥²€Èr¾MóžŸ#ñ™&_°²6@Ë›µæ_¬ÎâÙ¸  óÌoVLQÐú¡Á®^¤9há,ö%qÄÀFÔ8e¬A‚6Ski®gÇICsÛ|!ÉÜþNöÄ»‘èK—U¨#ó*¦Oû¦GÝownÄ(ÂÄo˽²\ŽzÂe&à;ñˈØ;‰Lbk…T–n˜yâÁMèqºW=å¼¾()†Ööý]q²BKXáøåûI¹qžÉô«JùGȸ)™L·‘ (¬ÉdóÜél«…Ì0ÛX‚Øò>šüqJc°,Évh©ü¯w}b×·i-ð™½lásÂv¼WÞôPM W½IÖ"‡–Ó ×WúÖVky¯àŽ›žê5ïrZêY&× HTƒ•¼¸ÂZ*³(±ÂffΗæ°,³rx„XM[N&`f¤W}zù2'îr<8œ[ èd‘Dr…'hR~f–Ð(ˆ÷õšI¯ƒÁ óîL,³ºÝZÆ®8A'ïȨ6ƒ9 f:¿Õ+ÔS‡·žÜõÆÚ ³WµxwéõÖ…Ýõ•YÌÞx —-)¾&]ˆäk6ÛDñöÊÃo¸…nA¿|Ÿ[Я¡[Dw‘*œ5oANau *¦0ùôé%¯¸ÒÜ>ÈòÀzNøˆ[ó„ã £ÝÝ»ª »­|±r×ÚíI¤^uãXïx“]ÆCÎ9Þ–ßæäîÓÕÇ›w!2|ÃñæRaùñ¶:êKi¾`Ñ&µÚÞäO¿¹\Ëáñ‘¶ô²³l\ÄÿA§Ø_/WÐ[‹ƒOY^ùÔSóvÒøÌk3ÝY€éäQòÄSï[º¾ê©îðê§^xcYej‚ç¥bD{äÏÁ“O:õäÆqø :!W%ôëê§žžÍ›gU 5vžQ%TäYïž„”bDí úD¤Ó°ÀKžn|O>ŲCq}ÅŽáî•J¯qrŠàÁP°ˆÅºçç ý]®,{®CV<Ó9+ —¿X÷´ÏvàŠ,ï…¦µÕ-¯Æ}–®7µÂnÖ;yŲÃ70”•ØéfCL¬{‹ç?…Å ñó³dÑa-žù¼߸©åŸÚ«°òº¼À Œ“"Ø,>÷ožºí¯u–he+ö;OWì{é¿%8#)¤7‰Ì$é ÝwþÙ–îGæÿ®ýwÌžÞ~— àÅù¿á߯wüüß{¯^mòÿçúßþçÿøÿã?·wâ¢'þ¦Ö~öÿ ü߀ÿÿøÿþÿV«²Ùïwå?±Äÿ ÿÿïÞ+ÿƒùü½Kk˜8/ªýc1œ '˜â?þñ¨Xÿó«ú/_~}õçÞðãpÿù¼yìG®ÿï¸ú—­ÿúΛÌúoìílÖÿxxµ÷®ö»Wp¶Ñ1ÚÛ/‰«Ë³ Jß>¬ˆæ>îø³‡é„.0ÍN“Ç}¸::T²Jµ*Κ—̓¶•\]¥ .Q¾®d"vk»µzÞuK`rI‘&ç_ÐÚŽL‰)˜1°&ñ­s~Õð¤ïG“ fY*Øw]‘þþ`8Ž?&³I<ûÑì·h}­Xß&ãd6%â0Âhv l¾góQ­¦+kNgñ¸=éÁŠLÊNþ$š³û…ÎÖ"E£V³Û¡>jê•Ä–¾‡2WÇpwð5Óþór1à ,øÏwüðçÌi=mÇñ-å§Føúø!r0»#È\×M±H•ë'f̓b^'¼øÌȉ=Ù°šÕ´j©‹TéøôæI瘒ìU<¿"¹æÅNꪮ ±«9xHÆQúÛWùjü_ìÇPW[[}±Eeñϳ­3ü@ykåN¤rú>F4 x4q^d$oSYj…åLèiÏ^MVõŸïˆ[dí=oagvé,»ìÝ—{g¤·MœÕy:% ª·kê"AõBÀ] îí•â²J³BPÜò3µH1ëÔŠ 4oSàëyd²+¨ åœÐ:•³ëu¿ê^çÐ}Q8­ õ÷åî¹Ä}ÛéïøÒQ°>à¢ZTƒ"†˜%šˆƒÿŽœä¨æÁí¯Ô+Ñڄÿå_rÐ'™RÏ$ÙtN¹wÞy×ouz-–²æ³(}@´a&ïB¦G}F.>yÄ xk¯ÝF4¬çVew%ݓòŒd.Ž£a®ú‹lžv|õ^¬ÉLk§Ù}D²Xï•Tìréô3]ÚQê ÷ÕíèPñ“Šã°yT±Ô˜2éÑŒBω]ÿSö × þýî]%gê¯ÿØrc(ƒj@:#Ó “X¾L\ª•nï¨÷q‹­ÕáGlSíç¤. %­ˆÓüœV˜’&` ©¢Ô™|œg=_~ƒË2kRñÊÚ 6õðýôš*‰fp`KÒ5~X`šŒY4_Ì&ÈÓ ,§®µ˜”ˆ¦v2LÞûhw2Ê„ˆò 3ãsSïÂ2ð–œIÊ+ÐN=8ü¨Þ¼ Ge“/pkO“/ë}'dBBžok(´'`ܺä@Nöƒë ?䯭Ï`Ü\c6TÌßmµw–2¾Ï¸‚^oâå2w¯Õb׉mÔÝ䦼6[|g‘Ñ“ßènÄӈP@Áˆ=S¯ˆŒ±ú¿€ÛØi:3éY!V§U“ËfeÚÞØPºØ>©ž*¬ÕƒÓ-¨úD”·2ßb õ˜Õl ¯™…¬ŸþYFœv/C>1öžJŒ]&Æ©ÄÊB‹Ý6Ò#‡”pɰ›C†½2øV Åœá/SþÓËij™8zûÏjÝpõÿÓŸFÿÿfw£ÿû!ÏFÿÿ‡~lýÿ÷YýK×ÿ›7;¯3úÿ7Íúÿ¯v_ÿiéÿ›—Ï£õoüÜ:âäçˆÔ `Øï«¾ÿ9”ö—¥uÕõ—ùêú|M½R `-MýwÑÔ7/íºVÓ€w¶Jízùeã9”àY˜óf…Vt¤e1ÍNÿPO`vtKñÑv; f_ñ-õ¤—«ª¶/K±Ø¥OÕzyë ×UJ×WÐiÛ5”“ê§r¦ÖmOò4ÚØoké(ÃÖÛ-ªœízVÐ>oôÃýðF?¼Ñÿ¼úaŒvü7Òo»Ån¡òòô áö ÊÝzŽ>„ùÓƒí“jÝW`Z_iq3=‡ÛÜÔwTð†iô :ßP˜—&EFÉk}Q¤â Ó¨#ªÐ µýƒ´À—Ϥvõ¿_ý﫽þç‡<ýïú±õ¿ßgõ/÷ÿÞyÐÿnì??äáÕîëÿnëÉÑx£~v0QõçP—¸3k*ƒÿ¾QËç'S;u­ì]è %+plEëÜ8·ÚMpO$õDob^“ù0ž¤f–Ýgpž,ï\•ä%ÅþÍÇ_y~—TÑT gÑÇh†)UFîˆÎxDv5ÊsWŽ(—¼­Ò%#Z…(¡åûW[—|í´]¸HÛܳ ÷.ó|fÇgdet9ïTêån{£ÛÞè¶7ºíŸ^·½ÑkoôÚ½öwTb—h1ùÚYõi‘úú§wB*¤—÷Ÿìmü÷ –Ê¿õcëÿgõÏ?‹þogƒÿðcžþÿýýÿ÷ZýËÖãÍ›zÝ_ÿõ7ü§òðjwõÿÝú5…K탸³ßÁÛËù>ª‡rð?ü`±Àƈ»<¹>?÷ß7/û Ž ‡ÍN¿sÂÏÑûƒN>êßP8Öûóf ‚nEœô®./wµ o]W@4é@ƒÝ]øzpÑmoÐf2Ϫh3Ë$ÏPær«æ¾cæ®›åT3®8EΰžEÅ<›Ù‰× §Ød“GèNN|dÛ=B7eúº­~ëÔ¿r»ŠŒXhU¹YÓ·ÀDç‹yÄZãé+Ge1Ëâ|ÄÈKi$Ó’jñx+•9ñ„ñEöë¨EJ÷0“V‚ºÇølŸ‰CAHU‘Æ÷CqRL+ÎÁj¹')åøNDß3£ZJkÈeÏGÊ–ƒëk"sŸÏ#Y‚¾ª‰«t1a‘Ì Øl¥Ód2" žT Æ“Qô;**eÚ%«4V¬tW0ÎÇáý$ž/F¬°t“ϧóhšb kã8ÅG8ê(k'I½]–IÍùÏaùÇ3CNRô¯®„ƒ¨!¥í2ðüÀÁ·¤Û+Ý–Åå,¹‡¥ñçÈ«)XÑU©ŠÁü—®è® ۆ馜9=mRY—†™–y¶1ØÑ`è·ñD™ã†·ÉçÈô0­ÈÔ”Ib禜¡‡yhNìüOv'€Ä%“Jëàsç¬4 væ×¦EÕÈüKœ"º°/É-ZbxSwI€ùg–?6¼hŽP¶™¡Æ6ØL­éÖ”\ÁŠ©Œ}Eö’\sŸš\ÙÎ~}…ºŽ zˆçP©¬j¿€ü:W°Fгá:UòÉ`×Yda{ f+E(IØä6“··TÜr“F?÷I2pט%¿ÇÌþ–æT‡?u«˜¢ªõrft¥ |Š$Ë]׋ bó‡¶k3D‚&Òë8hMöõð)}Íöt’¿õx}‡ÚøLT"™FÏJqyëÐXÕÎοW+~S,À¬Ã½Rû,¦ñçd®<zóÅìQ¤Ñ?hž•u³ð´rÝÉ8‚­æ·á!-ÀøŽÜ/¾àym•*«5J¸“è~ß³’ÞªìKmVƒ%]‹gd³žÅ· µ,$ºt<‚ãZvõÆå¨k?Këb"¨ 8vÆcÝUBh„+.×4šc7vj~An¤D×Ì^pf85Èó£¦ÂÒ˜•.7¥nõˆ<§ËÉÖ,IYÚ©:kfeá™Ìž˜å,Ò’’¬V~oYpC{íÉGÕ>ô³Öï^ѤMTñwx1]*þ‚ÿxt#É+ª%ë–j·ci@×ë#Áá` Ÿb…¾dÝñå:êw´ ²QÀiIS.«ä[ÃZU¢1vó;#ˆ(I£d‹e‘Íü\óYA*$sõ%Ã[y'8É$ò˜ü(AÃrŠ4ð:5¨óî&³äâÙy}‚rI„¾CÁm§ÂðJrªðeºRvÄåÿöUëÿ·%qûld$9lºnº"›]L{ÏWÊ^Á]wÛÄRöîœ`êR¼DtÅö¨ûÉPÝ›à‚Û¢äãðwÚˆÉmBr¿ËÖåD:ÐåQde`_kd“t1&FJT7— *DØÂúø(åÔ0I&˜¿E$“ñWçt—WZÔµN]rBS|á^y É×߉úËÞ‡n¿D«ZªWè®.Ö\|Z¨‘_ MWëU®ùhî÷JjÑ— eÀZ迎a:ćE2qiÓ óNi,z½áfÞÉžlõÏ/厺&"À—dö[:ÞE+‰{[9‚ãÅŒÃx|rR‘ò¶ò×°àÔxÆìà ŻÅ"ÆÑ|Î &TqÍ¿º:¨Š­„ê©8êÓø:ñø×-y‹qö ÑÇnÖ¿|?ú}wÇ&œÙñÄ.x‘Nbq>œ¨ߟíwÎ^vŽº½ûƒ‡,x¨å:‰ÖëÛ?Óã„]t”Å5èo‚/‘ÉÎáNÅò>Ù)òÃ=XRé×Sâš*\;šôÿ´ºÿJ@Øk:ÍN½"ÿ¡J‡=]N:‡g—gôû’~öèçÕ9k ëô³ûr½HÏ×È'ï!¬Ã+¨ôðò ]öÈ÷œ–ef«xΞô`T .ñ—áòÏûÔÝXÏùFvð²g{º8î,Rm—D·vô!àÓ­Cé}+஋™Ä÷µó ºJ¸/w½wÕßÒ‡@v½gp ÄΜ>² ®„À‹W4ÕæM`"Lëm>À¡6¶:*¶Ž?¼„wå‡Ö€÷ë8âzfĬ©¥ÊÐÍfp°æ½íýºŒ¢$=0ÿåZmaR<ñ”FZ$JÆ~$Ç\ôg"%:,ࣱ%’u–o/NèLí¸ V|…kÈ*_ƒgGP•'žf~ñŠýQP½³[µC/iÁ!o‘ · Læö ÓF¾÷’ šwa2è“ÚY¿†Ô.«¾Ò¯m»I«Ç\ioËo ®âØŒ)ãôÄæ+ôŠñCÑŸ™ ©ãä% o®–êóÿgï]›ÓH–†Á³±±±ó}7öc½ç‹A,@Ûs< `,û‰'N Ô²8F ábÙïïxÆþÄÍKUuUuuÓè6š1=#ÝUÕU™YYy«,S…;-ަM)hR¤ÍÉó›ÛÞäbÊGÊ´¬ …æI§ dbÞêaÜ*E@†;$‘;îE¹ã'žÌ@†Q©b ⑪ „˜ä§L-›]—ßÖ‹ÙlvP Œà4’NEXâ;]wÆÐŽÃ·Z¨E&\¤8•JÖ}sZ™˜À×Éþ‘‘/^“ï‡Þ–Š.K+•üLŽ6u¨–aS‹œZÏp5cíè°P#7e´XÜð ­pγdÐå3,tÞ^jT"³ä ÒæIѦҒ„çÝgL%Éd3B&îÒÐI9B'›q‹ah¥òOü‹ñíÈœút@ÃpÜÿBiÚ6¹W?n×>Ý“#HÛK+G2S„¬#È—"ˆ1î‡Ås–eW’ðÌŒ·ƒãí;â_l‘zi+‚çíç;b" «â©8AˆCšÿy/0¤£ë‰¥#ˆ§æ÷¦’WF%;*y•F4Vüà·9n;™aàÚ¥ûc”k?eCŽoKOã}¢£Ìwµ•]˜¬œñ#¯«s+¨"~ÿ£n fk^«Ø}ˆ­yÖþ¯Ò3ÚÿU\íÿx’kµÿ뇾Œý_4ûÎÿ­RyµÿëOºx¶;û¿J¼ÿë,'>Ò.®Z³ß+䇇ï•UÖ7t€FËwà2)Û* R¶µåN¥3ùùQ~.½í¨ÔÅ€ø! +…àF»f‚oâfØdNÆìÚžŠÛÁìJL‚ÞJLÏÔDjÓùžL}éÚÓQÎØZ)þ=_Ò“kÌê1â Ô~0¥Èý‹àRmÔ m?N°9wn*¾åïÊø½ ªXG‰J¹B¡iäe$ ¾af&ñ;þ›oÞê§ ãýçsïgÅwzj¤ˆ€Ê}¼Ç…¦T(ëo2Ã%óVQ£¡ü”JÓE%¹NäípÓ(©Š¦ßK’úŒn£–Ì4 ¢’ϬFÓe+®SpýÒ$÷–$¬o?G0ûâÓ{Ó)ŒðBvéKöäã#õä{´'ß“{òé‘zò» :…2)9õ'lƒ?f·˜I˲lšŸ Üà/:+`ÅêªHF£û•H÷åü×{¡l²ŠIÜ–ZÑ×¥x-M÷…`… ¸µ|m¸T~©.,g Ë”i×èŸVNtŠ5ü¿mÁß6,pã#ü}‚2Q_]Ÿj*¸Ë·â`›%ø+Ãß&6õ¡p¨ÓçÄ~Þv†Ÿ'Íw‡ðYkìÞ%8®v&Âlò53µ¼•zȰfœá-¶,ÀR õ-£ÊÇðéÇèÓOøôß7ï¶t¥O5û 5‡ƒsUð ¬ùµŠçƒwÛÑ»á Úv\ùûP¶Uk­aÿòX¾ÕÌ5]­·\Àþë Ç´‚7{eô ¡;‹QÇo];3‹lb—äÓN‰C>jkÍ"[Üò¾:j<Ùæ'€‡¼ýD!‹Cë"Cg°ÀK³ë8 ümáÕª½ [µË"›7k—¼[µËhš2GÏÔœ¡y‡P5]oHŸðÏ:1gã>’j­Â÷i3>«cºŠ·•îa ²ì?ýëgcÿÙZÙžæZÙ~è˰ÿ<ÒìOaÿÙŽæÿßZÿñ$—lûO¥‘ +ùÿ~î‘ ¨¾ÿ´îˆçG1ÀZªÆýAF~~ úÖ¡½ w€*T2Ü‘åìB•†¸ &”„ C€ÓéÍ7rãp^gƒ›!nB4[ÃA—zó–Ò“î‘}‡wšR¢Íâ¶Ah@ûg±§ï69 ›Š~fÍÕû,E¢†ìHjã%ÎqÒ±Ó;í{k aÃL¾¿´=†7ªOÑ×ïá³öÌ[;© ‡¤2í5,ÜÉp/Ñ©xà¬ðœsÂs µÕuï.9a'"Øó ¤©a¯²÷Ù+PC‘¸†™ç4TÜ!T’†PÑC¨<À*j(2„–Ü+»äNÙÒZCï•}pûÊ2ùÆÙÃ7rÖÖÎ9Ó—üž†”XŠÜ.ÙžŸËÚhÖ·÷ñð ÑXÎÃeâr„¶ M µM±pÒ*L.q(ZóUHô§Ÿ¶L<ð¾jÍ̈w|³Öqݬîïé$ÌF‚i'µ´ÇÊ-â–Æ†µ3±‚iÀ ^ÌáãXŒjä˜Î”8Eý¡Û´™Øc‘“=®ãÞ0rØù3Q‡‰¦#C¯)¦U£ë T4R92ìMϰ÷qœ¿[Kžm+ð·"½ØŽBžЯbƹ“ÐÊÄ>IH(‡îÒN.¯<؉7U1&"Ëþsù8 àì?¥•þ÷$×ÊþóC_†ýç‘fÿÂó‹›îüߨ^å’‹g»cÿÁ …µýµ¨v)¨þíì¾M@ÒÄ Ô`½«UjÑÔûlVé™õ•6=³ç$IÄC‚þ@h ÍL²™¨A0·Œ Ê—›&´"EÈh£Ð•Þ°T5âT@tÀ‰—CŒ8â8"U¦1DdISªmŽ‚ÁLð8 .gBfY› >_Í ‚Îýš7“` oâ 3€¡qË<æˆ6®äŬ7‡1}Å¿µµ#.!3ß“Ùñ)ãÉæ«ýÄN(vIUßbF6ÊÛG½šõ¾#h¢~òàd½Î˜€õ]AGr”Xlø]AƒYÌt*;–…ß),bHO8ÖhÊÃ*iÇ8tvMTœ§-ý´OÎÜV¹¯Íß\×i.ÁÈb™0Ã+ƒ»J3 PéO38õ²YTm ¤0_M F®ÙŒ¯ÙzáKÆ}UÙ5ë,ÉG“<ð‘rå .­Fvß‹Ð臯LÌäȘ¯nç_aP ¾ÅÕÈ€è´=š?ñ#òÙÃÒ_ZI<¾”™‡ß<ªOÅ$;ó–ÛÉ`6 F*QÖ¢i`#ÜJ8 ø¢¹`cöqìoÂ1À©\u¦ny§š)ˆZv#BÆOfÊó,QK˜ò2ú(À úLÒÌ•Á/#ˆu–±þyò®ížžÖ?ÖªDa}·ÝéòGÅóº¥MzŸÐ|´Û[þ,B_ÿ뻟êx¬~Vâ;%Ï$tŠ/ewt`Šiøð;e’ÿ¤FB ‚­ñ›vØï¾/4¬ý~ÿƒ¶`¸7ÀÐ&ìï9`Dyå»ÕüyðMò7ãj´ŸUFå`t!¼‡ÆFDÚ–¯{ïÙb¨zm˜";UóÄEgW¾ùxá°ãɇк…+5†YÊרBÂkkF¤]øJf}<þ¢Sß1iüh<ÊSŠSXþq9èÚÛ1?ÕÐjFoçNòþÚ®³ Ó;pþŒìá”’3 èæþÉ H¤~c!MÃ8*™â|ö5÷&[ˆôŽB¼ˆ®3rJ7•2•u@»ðp•Ì›œ|eÒ [™†f#Ñšäa!®9žÉ$ãø†~!ø P1 0!({šö M1¾ &2’|4†NŠ)¦Áî e;ýŸ 1 TÞ =:‰c| †cÆE@oˆæUSµ1fЉ÷hË[‰•~®ˆ ,ÉûY­QÖïg ÉâL|3#^T@úžÆ“(©ê9/l.Í6èèz¢4g­Os&Q6Q­ T<ÒQî~¡PÀ$0f¡ûæ0Ykñ UÉ8]Í“R¯»$;£EÄRŠs¦fÕÒA}MÛK`§9Ž ¥¢±C‚ÄB=K¢Å螉k4v¿£%ì*£EcC÷mZÌñî€ðèÏÕ©ž?öeûΟMüïæ*þ÷i®•ÿ燾LÿÏãÌþEó«¸UŽœÿY*—Wóÿ).ží®ÿgOiÍÖn“•×Z•NN´;'­ƒ®ò “\Rßï&ØN:X c{ðëÊ{”úº‡÷Hã©°GH·ÙKTÞ»]ˇ2/r#u2üåS¢—%»)=NªCKzžö<®'JôeypK9ŒB«ä|!_6d»£–òE=´wFº†ð%ÔEê¾®¯öøkbË·°{Ò¢´‘ªM£ÅŒ©ve‚•° ¾5ãQ ¥ŽÅäºðå5}æÙÕø–]ièŠÂ•pD=œêó>e) =‹f ÝS§¯Uè+ºð˜£L)+ ôßQæKVd@ÉÅVÎSÍtqÿ@¹ hoôyŽÁ1®GÇ!QǺYãÏ‚Õxè<:jÈó³òí­UÔZÈß*kGòn=KÇ-BƒDŸã¬ê·p¿îa‘9cMzK¥[“Â.­›ö<4Ê÷qÕ» VÝÕ‡1Oå)BNj sm¤˜xv„™tùçtþôp ž¬Ó …'†ßz´Ár`4[jïÕøQæCuDŠba‘OXÏä"Ë™e£ÍåqÚ i]ë\/ð´PèÊ|†‡çQu<i¶ ŽÔ3ϧæFŒ°‚%9‘ÃLÊàZo4¢ŠÁjïºñê’ß[(Í%+ÜKøjüŸõ.!|ÄMEÛáxA %ùB;ð”R Ç·ÃM•ñÿävR°Á¼—Ì‘bI`ßéJX h`ca¯cÀ£,±ÓŽXØN9ü_Ä£¯b˜å¥}-b‰|¸TèÈ2a %T®äwéÃ@žiØÆ²A*•“Ó¤ÒÀ½;õÝÊ!:æ:-ïn´¥7ËQº–åÂK¸Lܶ6kW[ÏTØàmMþ¿›<¤¨"m Y{Na`*‘’¾„›†hê*ÛqäUÊ„2m6tˆU6$\2²~n=˜1‹‚ÉÑ•\9s9˜ÀÒuLJ âSq—Ës -6ÃGf‚óx‡²ná'Û‹jŽ+ŒõñwUX±ÅÆf ú%_^¡i^‰ãh /¨[®›Z<»g4³Éè ´«i[j$«·ˆ„7~$⣆ëy¥yd]A¸©åOŒî©”ä +#EPPt‹m®ua µñRn–;vŸ 忯)­ÝÜ0Šwä]7ì¬ÿo¹ÒÍfˆèv¼õä\É=ÄÒ‚GtLü.ä7X´Ñ>† ëH‰´ãÐ3xñèô…ßl);z,äÅÜo×—7qKÊá(4B»¥è`„$ш aqgƒ ÇÃñaj`€Ñãõ¢Ó¸ºvA—‘ 'q»;ü5ÑÁÑÓt¦_i1úþæ†0ÊÜ“€0ÊÏScS¹7œÎGºI™0*"SqM|ðÎ"^9¡ ¶„)×€uƵ%„»äê%€$„šõØãJæ™Â#ø5¡[ÙKDw „®ŸI-˜Ðé!"çzÊy¥„"sR@ w¼—;›òþw¹™åÁh!!$‹åÝÖá÷0UŸ•ZiÍ¥Pkžã ^iÍÏ@kö3"N%³ôŠ/yÍú»šÖƒ*Õ;KŠžõ7y©¹(Âe!?}xq dÍ':‰ÇÕ»“—‹p³É£‹wS½Õó³à†Oö=±¾ã4zó䘼–³R:•ïê˜_KiŽ^j4 ¹(–sPØŽ{dÿ¦©ùYZžÜqÏ3õÞÓŸÔ¤x$ÂXÒ“oÓÁS{òŸRSy@ÿ}qk¡D³ù(üâf¼Ä²õ—ÒþyYn>žöo®ÉÆr,Wâ{ºò‹Éžª;ùò‹^§Ó¸š>­o×çfûóãˆrÏÌŸÿ ÎüG¶âÜÝ…¿„¤ô .üg¾&úùá«… âκî‹;ñËà«Ëàœ÷†Š]z#¤Ÿ>QÃ.ý(îE ;Öe_Lv=/Ÿ}1Æãó ÖÆŒ²\ †÷>½EùÏÐÏÃqðqÙ?Òmz퟽ÒíSµïíFxʸ޻Oç;¹çKÉ›(\þù8èK±²I)fß’Y|¥¢/­¢û=õ¥d¯ÓcxêK^§Ñj9Örü´ÞݨzïYm“ücxïÔuÿtªüŸá°ÿ«®´‹tøRòþ$,QþSÜô¥rüгÿÉ,îÑö=µ±YÝ û¤ÚvþçÏÏ'ÿóö*ÿë“\«üÏ?ôeæ~œÙ¿pþïl•K‘üÏ›¥ÕüŠ‹g»›ÿùb¯wë§G»9qFgOœÑñŸJrX¥gå‘”é™ýÇwž%Û)1pÿÓ;Ï–>¥óP|Fx´Ošƒ:ØœZu„‡Tö¯°<9È3¥"#zÛ«‰}Ä~”¸)çcÂ=CÁ(|hv•Þ¡Oq䣩Zx²cÄ–È~€ši¤‰ ÍÑ`ñeHÇš‘¾¡fñ—‘„“QÄ/§Ã!+ç„iäù€#$Êˈmt½¼ ¼0Ëó<‚ò8½_Êêfw`fŠðäQ # º w4[¨w ò¥^+u•g-¬·ßqýŒzýþE·ŸIv`1ÁÕu Ü0'É ¸æNh—“w wÿ]wNÔd›&‘®$Å1\r± Žk\Òz¬è†>ã ´d–¯@Ø\câá‰èàVM’Íà–+£ˆÂËx:CS&ž`b“œZw¤QwëOõZ†P^Öšd†Ÿç~¼”ðû)Òmf©Ý´|ûnÞ­ÄäaP‡­KÚhDù%øéü|¢5Êš$@~CœäÒ™v¡$L’4í>/Cï^í°ù¾‘íF>ÙÐËMxÖ‘ön÷€&Ó#Ø‚ñ³ô6a«Ý•mX^Ïß6gþ¯bžØñKä{ô-+6~‰ öß | >DÏçŒ)ßòË[f4z d-ô àëB­ÂáÝ#a]p p‚ߨ˜ÅpѦuô½a-Ѽ"ºM¨vª¤ :¨¸Ï‡6*RáãC @œÅÅ{n+ÐtôðüâÂOö#/º…²šÛEÆ·¬¹ØŽ 9î;ŸS‡3·úWAÿ žÉ'¡3 $tPD¸ Ä5¨^²¿g1ÝÆé>Ø?Q–> @÷¡ AÓùeÞ´Æ´é·`úÞÜUÀqÖÓj,%"¯(jCAO8â_‰öbÛ‹ L^NÅ—ÊA í»ÒnlÕOjJˆzÀ©`i®).—tÛÜÑkC‹[z¯ /С׆ª/íµá—>o¯Zþ{m¸d‚×&¦@èµñHÛCym"¸ìµy§´$ø VdÝÎ R¼ƒ°Œ[ٔɮ)#aÞ'}A¿‹Co •[úòÒZü£ÐÔ]gx@Mú’TÓfqTÿ¥é¹z麠<¸ËÇ!Ï~Ÿ—½O®VLÉÐÏ, \I³¿Æk<²8¥áÓ‰±4Í/h¨Áèb*æ7ÀðdÚž¸Ø-6ø ðIå¶ý€ÒLym¶]ex,L2ÀDCŒ×Ñ縮¿—ÃùôŠÞkµ KQPäÔaàãö ÚÒ®A½ÇaýRË/jòõK(Œ(Qgÿê+³7ÿŒö“ñdfÙüNaÊþ: ‡ .\NÆ×¢Ñ›]}ÀS‘QÒx7ŠÒënŸ|]°³d:W½”‚p¨ô]×-¸»m 5œeQÊ1dÕ¸b©ÄH‘ IŠÈ#§ Ïô3+x$%±XXËÈK"Nd†ÃZ«‡žšæ ‹Ï2¸¿Ø“B÷'%` Hx·áÖ^g²¨™‹üÁ”ŒÜ !iüíÑWë7Õ.õú¸x^ŒÍúôÀÿ¹—íÿŸ=›ý_Ûå•ÿïI®•ÿÿ‡¾LÿÿãÌþEó¿T,Üw÷m­æÿ“\<Û]ÿ'Ì2®“›gqCZ¥XED®´•£ÝÖnÅrÙ`wõË4„ Ÿ¯a™à@75¶†Ê- 6Ãß0¹6¿dà@‡\á,³†9íÄeìáDCè¯>Žû_ÌHlÆ &¸½ô¯@.‚K ¥ ÑCZÒ¸˜÷gXò‹×ï; }Ú R)_T_äÈ-”<Ê”²¢@ÿe¾d‰:”’ÏÉwÿ³§¥=ÝÒ—°‘R–[Ö-ùòúqKŒ^l©òÂrðpy¬ÓX¯6¶r”dI`×Yp°ô ?»’y•[œ<Ê8s)ÎAbRFÔËc±:á nÿZÐ¿Éø6mç8&¤#s¬% Hühß´ž_kES«j£?ær ûÏ”Ýã¡Å iŠ‘f+×óálp3°KIžê:ýƬB$ø&ž3Õñ8àEÖ©´§+y¨-³ìRÖÂzuépØ1<µPì€ÃlÀ†ŒBs8³è §cQOpÇpÚYo0œf]HT`PL¨¸)ÐyØ‚‡@%üä®ñ ÞR€f”+*ß¡MC˼¥GÒð5¾4ð’R¶ïþc¸#]«#÷Œ ‘M!ç>† hóštõšN½Ö &Ç#º°º¾/%ª/ÕrT˜,x‡Aïmœzlk°V"¬_¼î}Ë¡ß?»×%ŽÝ@5=â,2ÇÖLÄ•xû-Ç€TÉÓd4–¤‡H0’wÒ{T]R°OxDP'çô ^÷…¤/që­g6¸`µWIÿBˆÀµ×@,g6Yñ¨s“`:³±*#ÐæÓàBSK稥S † |;lÈ0$‘€ˆ¼êݪAEâ´œšj(–Êç>vÉQ^ûÎqàƒá({$Ér¬à …ã¾õPâp«€uK…#~e†Ÿ @CârS$ž‹ d¾û³ô LÔ7よ‚ñ(º:Ö¹_ Û‡®Ìg„bÛc‹ +l$Š1“bHæÌ|£±–P ¸¼'cX—âB…’½³¥ |5þ÷g2Îà#n*ÚÀ Z(ÉÿÚ§Åß7UÆÿ“ÛIYÀó^:0GŠ%9|[¤+a¢…½Ž°ÄFL;ba;åðv¼ŠI`–WQùI¢=º×{Ã3:hPE &œÌ ã 3²lXçž1†˜v-‡q|]™É“>âÇ×­Õ$îð ÑÍɤ×9ʦç áK A¬ŸÖ*V£œD5þ¥üØ÷–ذ;.óë|@kíl>ᢠÊòtŸ¼ƒ_1./Ä¡vm„…’Î|ÓýÔØ„·Ù-Sóåì3kPRW¡®£ »AFx›Ç­|‘ÍÚº?aªÞšÇÙÖ1λQS›׬äÉÍ/âÈø¢„Wt)‰ Ç¯¨pûØwl_ÅÀËÿˆ ¬ýepLù;&z qݧ`¿HÔI£ú€G(Źn±],±ÓÔÞ僳ZÇS+Ö‹XiÔšºµ@<¹"¢ªøf/æÛoÞò.Ä<¨é™Á›ÿäèaVfV§;OZaa¤ýìÆžþ.OP¨åã³íÊ+¯È4'Q½¢Qš”´W^¥Ø¡äšµ˜,üDuOŒh•"ó¹ Z>xó‰wú—¹ÇPؤØìžÖ©€t4Ù4á0IAN.U¤E?!q,@7D¼K:ô›ÈcAÉÄóhàðDY›Ñrì¢ÙƱúÅs­oúqBn[„~ì‘3aŠbFI'~d‹N†`Ç’«M×0;q1>Ú&iT³Â…±? ÇlɉÂzÜ„÷8"ÂYàìW™o0ðy˜Ü1æ0‘‡\½åé¢5`ßêí=Ô‚ÀVo=wŽã»hŽÖ†XÐ̯ûEYÐ,"…„èb Œõ@Ù-b—a­¼Þù‹‰;­ü"aMrYÀ rYˆïÁzñÍæɆEkÙøÏ›QþË:¬X[Ëú®_N©DBJþ²ûcà˜ ˜´p%†w&wÕw¯ps¡ØÀâJ<ïQB¶-Ãj„-ÀRC / ‹üy”ºŒè"ž ¥r-I™JÈQ?ãá,ÝL“E¦Ê®Ê[/ψd‘éÚ óÊt¤áõbøb·#IÍ,CÖ÷¸K­1Ó"& ¿p0þ"NC’Œzœ ŒHa&6?¿!̤`2pбtR3ð"ù¥úÅò‹Hâ+ ¥'dúï.”ÓÂj›^ Èl5!ò3<Ájø¹ÔeÇ~{>ñŸ;«ø¯'¹VñŸ?ôeÆ>Îì_4ÿ7·¶6v"ñŸ«ùÿ4Ïv7þóL,×P¼QÀ§:Ë:ïªÖ8­×*µŽh¢n± µ¯{„‚"âýp„ˆFbò¨ûgÂãñ=*”>ùø¥%ƒBÏ8‘@šTR³±Qæ1NáN2zC»ƒ…uÌ(&är†{ñû׊MÛí$çiúŠ:réôK_ͤC˜O‰#É4I‹ò"©H(¥fÉ·tFCœ:ýñE€ÞÄ#q՛ʰ´‰¢Š"KŠŒDZÂÁ. |‹'K¿á`F>@Ú—w'É7äó¡;:>#û¦N˜M¥°Tœ_Ø–¹Ô®«¤¡–Ac Û Ã*0Ö9lþ·ÃZ,XóΤ¨¨‘@EÔ‡ XÓ¨¬-–#üY1-l2 =çÞ˜–Ø•‹J\Ì}ófÅ¥É1:è²*Âû:%ø+Ãß&ümÁß6üíÀß+ø{Ðñ.šÀ°….´Ð…ºÐBZèB ]h¡ -t_ÿ‰-ËÆãà¢îihÙZ|Nòr16²1vl…>­úV«èaÉuÿaÉÕpÕËɕߜW×ÖžkÎF”8-ÃßüíÀßkø+âÍ"Þ-Âí(Q±`ñ5ÐmÃ|—wL› ¼_VÖeZmU#²y1I<×}Ý,Rºš¢mf3Þßæ4U,f`?ŠâüA¹f:E™'/_ëR‚Ë5uì5ÿ4;aí·­™uP2 ‹kú'òúEÝ1•Ó©c*Å©[¤tqC !ã`uËvÛ-ÙµKNí’[»äÀg3>mJEÔ5 #ÖñphøYÒ€òB3üžÇVÖ:E·hÉ(Z²Š–b².ø·Òƒ¿ à/?GðwËví²S»ìÖ.;ÈÛ¾+òðg–—fѲQ´l-cÑí4hßIöM@ûæßíÝM»ö¦S{Ó­½éÍ«"±î=º›X`óùP•YtÓ(ºiÝÄ¢¯Òàëô¸¸µ"@›»[ví-§ö–[{Ë!ßâÆSÑ/–ߟ[Ir6‹nE·¬¢[? ©XDùÅ%„¸m üíå?$åw·íÚÛNím·ö¶;oâ$áÇž7øsnÿͧ‘UtÛ(ºmÝÆÉ”FÅ(.¡bìÀŒÛY͸ç3ãº;ví§öŽ[{ǯwÖÌv¾ú«ï`Õ„VÚ*ºcݱŠîà´N£ß—Ðo_Áܵšû—¹ß}e×~åÔ~åÖ~årއ2 <6çÀò¯ðç«#¹#±Š¾2о²Š¾Bv’ƸR\¸òxÎëÏYñªýÚ®ýÚ©ýÚ­ýÚåXOf“zXŽ…?_ãÏ×+ö¸ Ì*úÚ(úÚ*úÙX;^q ;^q}R+n·âvTû^Ü® „d“ˆK/‚Ùpøeéϲ>,¿ôW/nPï7V,õÙ°T&6l$ o-¥1'ãåîí†A~¾`ˆ‘7¢„](aàC ã!JçPˆˆ2…Iàƒ²7"¢Œ%ËÑLŒˆh>BDDéÏŒˆ Á ·ïhk˜P!ïÔN±R{eéAC"¸ïË­£¼~¦^=›1À09©„Šâ¤ð³åLtá÷8ÎÄ è¢%›3•ÒØ‡Jÿð°&I…%”Ôò âgû®øÑ+ü,?"ºÜ¢e£hÙ^HJi´ðÒƒ†8°»×æÚøOWÑG‚†'uÂ;¾ÂèH´x¦ÈÀ8§ý¦#B{×P>”;‡”ÊOÚ¼\^}QêJ,¹WßmõdùÔ:éê’k—Ôõ·*m$öóm‘€7¥û…°à·HÁ ]gYÿ H`S Jôf 8JÙ¦H¹t6F—l8Í¥"5urè™Õlº\„ÅõLÃé•’PRò7.ÂorøN:B„JŽ, L’D*‰'¼/£þ„¨Æ;»  ]s6œ¸_ôÙÓï‚‹AðÝ"SJï&g©ƒ²pØï=ìn'¶ÎB©az‰Ã®DÎ=–¬há`*÷L¥À턃‰?ZØf¸ÛùíüëmÐNêì]â¦=1 nEoøy ”xE¹4?Äqïª7¢)ü®-__COZXŒÄî‰K¨? “㿽æl·]"çÙLt`½Ë`FçPg®{ý+ä87a&Gd^Ȫç3y0azÊP¯¾ ÎÅF9'Ú2¯¤g9ì|à´’‹L…’0“K2M$§TI#eâI•;2~u­,zK垇¬òOÇj­Õîü/iTNÞ7;9:Z%”7@Úx¹J;'öᨱßʉƒSø]-á|9,á|iïVµfBK,Ð,qÁ3ü„~İ /À?|üðî¶O(JÊréÎ~}·Q9ÊáçéGeHód©tÊEß»lºJ 5èü[ñžåäþ!„mc÷?@  4Š]¨ÖþµÕñtHçºL èP1‡ÿ¶õµÖû„"|ÔÞí8"’30ˤ 1îiz¿7ë™ÌG?ÛßíìúÚ/E¡ÓzP/S›T8 Àñf€ªH®£c Pv#”ÈÛÙœ¼…øP÷ô4'HéÂj,uàÆrYI¥HVÍÈ᪣6ÞŠBu·Þ>0ÖbPcoˆZ3âEû…is†Éj><°2~Ìç{/°ó@†$ÃŒjþ%µ“àGé’ÊY `Ab¢Î«ÎðUÈN_Ú”aÓS;á …µæŠñƒ“&Ö„»w® w¯Ðйcn‚–­Y§|½á4FË‘µ†k©)ƒ›.,bXå -IН‡ÂÚ SE¸GâïÃð7qa\IÂ[ˆ~zGá𠠞ߤÏ2ŽZ¥æøs]ؾîL{M‚Ý|Äýò>Rã¥O_o‡]a“yÑ'n3êÖ¹nÓ¬õŠCLÓ[1ÏžöUi ïYËmœæB¬¯–³§[Ö}÷”M‘ ùœÅ#àlÎâ`Ñ€’‰ç¸­*NLÅÜÚÖÌ1žZOˆW•ð½4P À©]“,Ã{J(‰¡d¾™àØ›o`±lú]L¯{áµ9P½(Ä!špÅçqÊJ^}h[úÚ+ãÃKÔtA›ø: ¹9øv3ô³áw–Ág·cmÕ0/Uaêvf?Ú™¶Ù›¶ÍBø""fyÁ¬Ld²¼YîD«/ j}0é]Õì]µPê þ‘Ðë÷稩»eá3Ì£?iÑ@ÕsŸ¹Ü‰z…â’˜óúƒÉµîbŸl#óÑE0¹ŽoñfU·~=žÎ¬Šï›Õº^„Da8+ˆéo“Yï¯ÁJ—å{ðͪV»$Ö¤”ž}‹$O–“ªlã°´¦„`³YTÆØÉðM\.›Ô<©*Vû\)mÛ/õêNwqXÎ\ &èyAŽgÀë%‚û%—EXE2ò&I8Ù°Íùdm¨‰Ìw4z_@„œ#mœO3Õj–ícF‰Ô“­$¬çÓÐ 2|H¬ÈË)¢s°j¹oV«‘XUШ~¾£÷‘#1+_ÓmE ÕŒBú ‰Cia_õ½¥:íël”'ë©V׼܇”>‡ÿ ýØ­âh+íµ*S»¹fÈ?ž³›Õê@|Àœ%›.–=J4å>03Fcüx‰¬h‚‡uL±~oä›,H£ýÞOÀ@2 fDƒq ;<Œ‘YÕ:¼é%¾8ëÒ1v gN³kÕvFvV\χ³ÁMâ²!‹ ‚i| úÐöšÉ—é·Å›ÍšJ&¢ÎÚvŸæ+`ä°t·¹¨F3=+VË™/-ï|¡Š@&*lèÐ¥&œç$`áAÀ13<,Œ ®0Ï$‚*x I´ éË<–\ÄHƒ"öœT+U>Õk›F6ýůNc÷Vø{+&Ì¥’Am‹d Ò‘*á(¼+µ-ì­!¢®ÿ¬“ÙÓ¸ üC÷?÷QëƒèþÞß^"žæ°û÷ˆ§ù«]VüÏèùÄÿìl­üÿOr­â~èˈÿy¤Ù¿pþïìlFâÊÅÕüŠ‹g»ÿÓì‚@°_C@­}p°Oi•ÎVQ?þ¨ÔR¡>¾fÐæþ…ØpŸ%Â|š]ògóÉÈò `³ãk¡ÃS6ÁôðHR:äs<Á†@=»&Ea:› ÎçèI:B`‰>wÚr‰g¢Þe¶¯Üù²›²{oÌÊ |¿¬ÂþwÝû<!)Þô&jrb«qd6rŬ]¹”¾r¾©]^X[ÍóæM¨+ÛeLš}ï}2¶üžÅÃíÚ[‹j÷“þ0Põu,‘—ˆÄ›(BŒF]l&D˜À´¼ð¢HEúŒ'?‡çkší耊k໤"-8jisãõëó<6³ª ÙÈøâ"!¶ûŒf~saD-ÈdSÞ¢8¦Tá;ÍHðŠnÏyÝÂø{ª‘ÑEq``]CžPQî¼,á}£Þ,_Œ­=Ç0"ck†æÐ>{Þ›õ¯8øf~Íb3ÅÒ+1ŸbÀó›Á”¼¥¸Ç¬@ƒÞË7æÃ!©̮ƌ- ¦ãfÐ¥)½5¦3t>t9•'ár±jÔä0ïJyüRÞ–Z]ÛµfF>BùZw½hûÌAtúXAi ê/äa;Ö‚¡Úÿz oÎF’tòË2J˜Ä¢ ¬ « šüHf@?aÑï{¬Œo¾LSvÓ1öÒ¹d*¬ Vwkhëê®×ò¼O™8z Wx3'¿+kl‚Ï^;Áu¿KqýF)tí:Âß–3,¨FGVZzd0‰×ÂÑå‘?qE_d^a.Î`HðœGÁP¾LiÊ©À&ÿ<‰b\B@àkÉ€€ùŸÑ`dîNq-$†MyØlÞ6®˜®@« 01ô|ú% ÄÍ%h‚î¡·¹ à¶žp,JGA·•t©!±• mê_ÆžÞLiO·ì¿“gcÿÝZÙžèZÙè˰ÿ>Òì_0ÿ‹ÅLRÙÿ¹³šÿOqñlwì¿-ÞÿÙ)½ûž6À·ÓZ7ys@­}Z¯u( ÿþIÿyOªSëð4¡V«sR‡•?@_ùÿ´ZðïánR­Ú^ý¤rŒÑöûgP 4ÊvN|ÂtÿŸÐhýþôôSBu<ŠÉfõdIÛv¹P|ÞÖmhl÷f2‚Ü^,zâ†îhѰ•Hi„AÞõ]Ò‰¢2‡,˜ïka'š‘;f™pÔ¢\þ‘DßHUª ÒŽ¹;×·KE–Eâ”_ëòS½‰}Ñ{q*¨âÎK£>èA{9?A««v€±é0|FÒâm»ÒÐ "òÅ ÷yŒ¶ŽëüúF¶GrAÁõµµŽø<øŒWìMîžž¶NÎjÝÀ£òxØvo8gáª\`K&îƒ~X¥¦WãùðB\áf–s4ëÝj0§Ð¶Ð:x¸½¬|¾‰3³€•y«÷ýuëvK.ê©ÌûÅeÔUßÊY<¿¹oçãùèBÃ}0š€oàíG³Þ`$]&Át0 .,{·vô_Г‚hÁXèÄçÞÍT);Ãàrã“Áç++Ê6i3ðm6 PA73™Ý­Ýæ¡Âľí—Kl÷l&8šB“ »ÙÜ¡M±ïwìÃóïhË7¶Ë.ץ˴wULçç±=G]Ó¬îÎ3è®(c?jq -Ó 2+g&åâš„±’Ó›!Žô¢»3Æ'£–|UçÃqÿ‹ÙÔšÂÔGŠ¡-¶“I0½.Ъ?½µô¦r²›3ÐÛZñ"âòêä©3òz0\ϯÅÍà+ ¥‡ûñÑÅôמÍ'×bü6Fý@í÷%~™ê©|2 *éͦÞ4‡áç·W€SGœO‚Þô-á¬3ষ‰ËÁ}Vøçët0edOÆ·Ó—ýñp~=b šÕD&HvdAÝ‹H=£Üºåœ] òùJ(aCÁ¬/aÒ°¨;–ýÍÆ3mÆwG¸qS)üë-´ÿ4Õl?©Ç5Ø]ôÞšœSxåmÉÛ`TãÑð;Àb‹`ÝZ˜Ø<=ÚP°W˜)°Ôá ¸È ¤äÞð‹NçïÀnalÁ7ô€˜#x]µ©xn*3;LPîm‘„›· µ07éñ[¬êÍñ,`¦àAöް˜˜B®…¼Ø)397C ç$ÿP¸ünz@ ¼1Á¢2èqžx ty½¨úÇ^?ŸÔ‚„ÏÍÆômb äµáPŒÉ©©Þ„ö*]0ÃþLÆŠdI&LZC±IŠ"y¥%1rA}þ>ÜC>€™(ý‹F©ÝQ¸2ÿWý Úɵj‡Gÿ¦­ù”+dò‘uiÕ¢2y,^¨wxÛõ ÕîæÞý‹ü‘ûƒÊÿ‘UêÉkß}‰ ¹TÃZŽ>˜è4ä·kN]r\ˆº˜v­™IùPÈe®è À/¡îp"}&vÃ’qâüøòR²RœA4aà1N}«ÜvL‰‚0•~Å8w9n Ã-šðù ¯f¸lßnxÒP²˜lAùã¯ià |ûNãÄטíàZ õÔçõRgÄ1—ÒÉÖ³Ip·=vv„ q‡`0áîÂUõƒÀä¬Ó³ã·˜m¼oÒûaR”•tjǣёIBÓàzp;¸˜]…ÂN?˜àã™|=•¼€ ÇHÌOަÌCa`> rdê =$ ‹¼ûê0áôAI¤SÞMÒ€ågÐS—°0!2 *®àQä¬é¸? ·oÛp¹¬L$šøY©¼”>ð€Eø˜ç<ŽGŸ§ŠjMFCd6¾É‰·%l ëX2«]]Ê.TßBXë~p™ƒ•3=fC(~ËþìΩà[½BÚÐA//EixÁ(¯q»­ßÔùÙ•IdV!ìVqÃy¨'B 4 „œŠrKkQ¸4Å!,Uý+Üú®ISJMÅ]õ=wÄý Ù(JkPV¤Á~d³²ã3m› Âu_S ÔÂð¸a/ú$+û‚¨øŠÂL×½o™b®áìhaˆ z ®ç RnØGŒÔ2?–žhŸ DjUø9('@DlÎéùK8±ÀŽq¿¯S3Ž´åò$¹ˆ°ù&)j 5ŸHTïÐÕPSð€5ÌZI¥À¬—€/>)yŸÑµ@‹€WÑ0B”IªÖ¸¥_ȉJ1”–˜ôîdï ðE÷EN•ãn7³ZÃC[œA4ñœD”Öü”BŒF H÷¸œ@"'… “8%d/[p«7SG(¾†K!6ÁS¨²jÞ™ª&I릢¯ŒŽÊ÷.µ<[sÔE„‚x‹xºO¾¨ž.Õ3‚°lÂl!È;a=œ|"гÇ07ß ¥õœÓËùÄÛ¯ÿ ÙEóù9ÀBŒqg'S%,-êÿ•>Z~@qðÍ.:&k:ø \nö$Cž$›·E{žPAp$aΠ`{ºë4Z¢†6ƒ Î¥ŒãŒ0ø gÄ*j€ä1˜ùTŽÆHRèæ)¡Æ8áËz¢5^¼˜Zú¸ÝNÉÓN•ÛaÖ¬hµ I¶éÀ¬##‰bÝÌ`1#Á¨?Lr¸óõêó€rúóá,Ú°EÁ^\@Äö&3<|3®]|— d_0B2¾@£M}·´ÚŽ)|aíDy˜'O‹Ûf“üiJv(V½cVûu>ž 0ÇSm(q»7*Ë4ëÌŽ]Œ/`C¹»»O ”äZ§%€o– —ÞëM9Ð…e6S¾vÔ= @¾@KÀ0˜ÍØõ†Î?¦‰Ð;—3Ýsí]ÙÀ»ÁµÌÜ·lÍf¿ø̨}˜uCŒ²¶ëw@vQb¦Þ`dV<™Ž¢Ñ›üF¢F}¯YÙ!®b–©\MÓ´ÒËõÍÊÇ «öxíÑò¹7LY’Â[ó¨†ûgó“Éü6Œ]ù ƒ¾áŸ£Ö|¯ž¼oåÄÑn½šôB#Ü ßHŒÐ Ä7äûpCÊÂjØ%Ü}Âõ°kôê­ý%‚·=© ÚÇ5`r̓ƒ}Ì×j5èXëcëW"?¾Ÿ­_ãѼO0ÄHð½ƒCt×äƒæ>ü‹@]«“ü³X Ä[üñá8Ç 3|4Pác¥¯–” Ô÷©\]~~ (²Mù‰ ™I­t§ Û¾ƒÿ÷êPý˜B!jÚµOôU~kVêïÛ í@oO;Gßà fl|¨ÔÛôYmóïj‡?ëð;¡¡|#YµÚ>€ 'õ}j>©!øXÓgrCP:è¬ßmÕ:sâלø ÑöðõTë$Ÿ6@hâç)4ö©Ú:}ê¦>!­Ôåçû„F¨À‡xš‚¶kÍbŽ?Kñ“x¯Ýi(àóƒÊù~ÿ°CVYø§ƒ ‡ø—ÔŸúncoØ/ZƒE*¦p¯Ù‚oÝœ€Õö“ÂaØŒf_øøµr‚Á0­_©íÝ.=mt«Ii:kôÎöé~m Ú–¿;»ï៴@Í}ê|òÌü;eâ”Ïc3p&½'õ¾‰ÊÉéÇœ”cägF±ÙÓr¤»IÔRßÂ÷ô$åþ#õ'%ðÄÔ4nõõŽ6no‡**¿…Õ&y‘lñ"e eF´O¾¢}…­Ã–E]u0÷æzѸS߇Ecͺ“—޵¦‘lç .îmà‚(ÓY·£ÍFbM4Ò”"¶D Õ{Uä'b©Q€4¯É[x[‡6+YˆÊ3_/¾áÏf–,$l¼iF[[ ²öe6ŸýÎR¦Ü^¦b”ççTÊójˆøÊæè¾¿RäTJØûÚ#묅¹ïç !”x?ì}—Ê)#ÜŸ9þŒWWMób0fÜúplà+DAMá`‡P 1€Û`$ jj&6~â].!äŒ!Fl¦ï¬föOꘓ§èf7m31¤8Š^!l”Ȫ¾V·HþE5×äªæ+ßã.&ó•ïÉYvW¾§W¾_·_Î8ËEš)[ãÈr&w'šü€”ËíæÕ˜%JúÄMOÌo2âEt—´_‹+çXÒT BÛ§L1ÇÍgÙ–Uoprž*å0Ì Kk”AqqóàÉ#Üз£¼ö>³—s:êìÎC5e,ÄaÎZJÜûSˆ¢ܨ•-ì6÷ „#øÙÈZ©š8A˜ÍIŒ'ÚJ@^íÁ¨ÏsŠÅë.Äâ#òœ]ª“'Z¿ŠR)s¡Ç–|±æ´“"i4%5J#/»“ß²¼Ì€³ž•|Ϙž ‚R¬›Å¢7(‘KÆ o5LIÒl,PñTVÔ…ÇZ©Í³¢zý@{ãBƒ®vµ±¤ý%lµµ‚ëÞ䋤ûKñÅÅ’ì™LjèZLe#v¨…ÀÌŸçãùÔ²Áë%}å> OlòóØ×T¢yéL*1&ÈàWÜÈw6H$—xdLhÃÊ‹ŠØz«i¨´™¥) {ÌpIè\Hïsh—ž²ÃauÂC(Ñ/üÀý‘£¡¼´Å-~Ý.„{¦°±Ì¸t¼jØX·‡âÜåaz3­©à‡›—XèôÀöy‚ñË¢ý”#óuVa°æ{·|ñŽ“˜›Î¨¶Qe '­B†_‚‹0«ìò/ÓÄ䃯+RÀ9¦Snåg€lÖ©íÎë}ú%Þ ìì}ô:άJR9ÜÌ«÷ˆF‰’5ì)®˜‡u(¬wªù?ì±L|Ó«ñ$ø:@Þá@FÖS£i¡­ô†ýù°'%½éà÷À‘ËÜÖB´çUƒëfƒo²b`ãÚm(‚É+"AÁh˜fâÜÅoÅH 4]‰ta’2É’®ä„ø±næ§Œ6©èiîÖ‡i¸YµOéƒ&: ëÄ’qå>dÌ÷›¿Ö™£Ú¥I<õW¸Óœ ao>O3k;F„sFz°³ 8±ycÑ7Ö†0pFgFI§Iïæf2þ6`·Ð4Çô„ëvoÊQFJL0Œë¦bˆ‘<Š¡t#ÒF¯ù{XF˜‚Ý ˆ‡Cì’±Èm0 Ð_‡[bz†8v…–ýI³ {ÚèÑ-ðÛœÀ¦tU^¾{†;-lÆÊ"£Cäp64dÈ gPEN$Ùmz¢#{ ø#ô9Zu2…IaV°"†T|@ÁâÀ¸_ým1Wk8‚»ƒ›…™ÂßërJ”]–jôšMƒŠs*tÜ„ªŒ\&f“ û 뇯ҢGÑoœž·ˆŒé! X9 É†•à´J¬Ð? ¾aÂ×`Á¾§£9qKg—L8’O¾^¬ÛÃø9c8êyTË•:¼È&=æìØ€¤°Wµ;ˆ¦Î‚6æòu-¼êÃñø£)‡A†£üRk˜¦NÖƒÝpª™ëZÌ™A,ñ]¨ù~©Òê’£‹ ó`€þd~AßfR ë}Æ-+¸°Ó‰.f® ‚êq4 8Ó% j^ùUà“/¹ä~xó–©êKD € ØÌÝD®†LÇLJMÓ¤Q¼‘fqè•g ¯ÑlÔê ®HlµŒoœIÂ&5v>š¹“ŒÜóêMVÃjBl8 Â) B ÿˆà€o£Ä—}™ý8chú¸ÙO¡Ûˆò¥U¶›‹ Ön®èbX8(>e¤:–¹Q½ŽJŒÎíÀxq;‚YŸe_×Qúu]Õ†;¥NÇý•åÁVõAö͘à\² 6w|‘†dÛ0/ [Z’K!­ë½¾šäÆ[i¥øäÁR•F%Yç;[Ñ…êV¡h{šoøØ _­%¯á؆¸÷£Ûî—iµZYcÖy#á MBö&B–ÈBEƒ #Z½#£fÂÝQŒÄaéÆy’ce¾ò˜FÌ˳x÷­2¬hŒO•ö“ E‘Êç%†Ã @ŠÀAíÔŒv­”Ç?ˆ ÁKñM x_š7Z—däž°ÃWLÒu¬‘¸|Q)ø #M¬ Ú ÷In ˆi†Æ€[yüýÚøàvR™îÜIE_ª—ïã{˜X3Ž„mµOsSm evkÆ7¼¯Öõc•ÊŠÎødÞ_ÃÊ“ç4¾êû"’/9­Ñ–õ$.Í¿+kôæËÉ…×qe}t‹Ë×{è íýž=ÊDŒ¤ã=ÅdêvC|G&—‰–&Ÿ&ƒ#‹Ju7fÁô(½|EU_9P ñát,£µ)@exÀԽǓ…ÆìÚ”—¶7ÚÛ{hvª4Ï0Ù0ú›býcføPUø GEƒˆyÍ’0þid÷¥¼0= æE’þSJzAu]vå‹9Žð(öSSäóÐ6øðTññ`~+·bSþõ†8 4…;_ƒ üSô{¹ÛWnQ‹Ñ)Qnn~F„SŒ¡9°Ã-'TÒ[’% ™o CȘwº|üœùà ÉÙ¼1Wûqõó‘JÞJ~!*NH%§¤!#ÖA6D5ƒ½8Ë€¬Ž#ˆ™hT#1]82d¼_;ïÖ÷€ï&-J˜¸ír6¸6µÞp*ÎÜÏŽÖVÝñÄOâh$¾…YrI=–é­ÈŽxJ«œ ¼%8Ú]ËâÝ[i‘á±Å`Nà4Ň ÝRÖxhϾœàåÑ2KIájdÄÛè‹£{ÙÔä+ÐP%O ³íM1$ý JÐJPCo>tÕ: ?§Y­"ÎÊð¢¨,ô©ê¦©ÒŽb†a½óѧ„k¦ÁD}s4‹ç'¬Ð¼Ef7𫪋l"dBxhO°o„Áùu)”+sžQzËÈàíB!ǦÝ÷’6oD7÷Ï^ŽqÅ•í s"°ÌKoç²:œ“Æn{Œ£±gŸ^áà}R¤@k‡hÕÏN|sD„úžòfZ=dÖàiÜÑŽÎÉ«Yd;ÜÍòÕNGywn†˜Î„”á[Ê÷ yï“3Ý—v¾-y™{u긶> Õ®MNJÇJ„;{Ëj'ad˜…$LïnºãÒšîâF¼¬éNd ûîi*û]RO—²ß]½‹oI”‰E–¼˜%…g› ìME¹:Ô>R ÝTûg£sLƲÀ¢8•L€Æ©é[q ژܑí 5÷²"»+ÄU­+ƒC‹¾ÈT;Ý ; Î÷æÓ˜I—[€©élýÆßJT»Ñj«m)´6«¸€–á­„¡÷7D® ;ß©è•Å-HÐy½óUÅLö®U–,5`B‘Ú$áïo)øv58'ãI¨­¡îIÔ÷‡ãi`o öµ¡ˆ¼êHá-+$yÈиöP%qZò7š„ºnĺ'½|»¥HöUŠ3ÇM{Á›<ÍI…&Íäʇ³‹¢æÕ4™ c( ­T@L¸ßB%$,ú[èáæñét€{mÈ7wN™>à6%†²„›R4šp|çúBí‚ÜÅ\ÄY­/ ¡c^䓉GÄØR%çŽA X@ ­Ö“[§ ±È WËcQ¬¥²Ë™õõ06wšKÊ—Ü5'?RÙã-‰ ê™vFÇŽ˜\Ó52ºVĵMãÖV´€VPcÈ%Qg‚›AÓ±o“‘IKæ “ÙŽÆ¾M±ÍL¿ nü…°>œOz£¾Wื®%ÈÚ'sµ{\ªM]l³@÷€›7¶­h:6æv9’sô¶‰„p"ó¢®¾Ê.ûar¥Q c3Çè¶ùìMMa@íwØTIŸ¡À‚ÞtL–C9I«p›t¡˜eQ„‘kü¹îÕ·âê²>X~´$-X^dâK)Œ­[­ÍÙñq¯“™SF”¦N‚Œ¹ÏíœfoÕ¨Ã$ô4/ã=YÆybìÇÍÛ6[øF“ω¥\&ÊÕÁ{yï²b`¸Û8µË·¢êüærê<6*•¿¯pm¤Y ÄñÕËýÞ¥y áIÜ] ¤PII€9ˆéD¥º.~‡\:¡R¼d±JÄy}„p”ækp–ÍËÈôáݰð}ë &îØ7–¢oÜÚvë%ÄMÈÎPäCŠa{Ç,åˆÄA‡N:32ŽÁö4…è(\¹Ða’6i«|Ù>C:_|p©uµÂ;˜Å⥭bBøs§^" ¸­Û§Å©T(±+&’·BÏ(_Ñ'ËÖùL–Õ·àz§Íµ±MÙ<ÚT7y§5¬å˜ Ùë¦æ ­áEž16L’Œ)ÁC2ÝÒE VÖNÛkh96@ÁÙø¹"œ=ëп¼X8Wb+¢t„ÖpHòs}ákpkÂÈâ†5ç H“ÉØ 9vB§[ÜþŠë<¶¤®Öq‰ýçTÁBtF[fP¸vr‡» VîFÒ0E>_éí‹Ú ³)¥œë9-ÍL§¯›¹3%ÏÁFð`52˜\χ½Øê÷†È°² $mÙf¼ØˆÛµp2¢3Át¦b{ Ç5ÉTÖ†Eçš]͉ƒ F½‹à·yö½ÉóÀÔÄ •H°ü"~gÕé)FZ¼ÎÉAÔ—)Q‘~tW⹓„ JД¢‘kdsøx@œ~ڗëÏòƒÀj‘¼InÙG¦°÷é(,}°»öyˆîK<…´‡BZ…œ-O!r>cÎÐx—`1eS ©ky…yä¹A2‡§? ÈWÒTbþtÊß=¸Mk4Ó X›Æûs4Ñ_Š ÞÞOfì䔎FÚh¢ÙV±[°Ðž ™p*ïJD¡®Pw²LY$ÌqJHJ‚BB3{«¾y½gCí¤PÎuXHãeÔÁk@ã±ÎZ͵՞|œ½¼?™÷1Ëwô¨…ð"ÎÃAWáf™u _ac¿$'nè“xP›ì£ÎE¡Ë13¿s¥ƒ¼…ÑžôP.ìÛÞä"Ž68GgªÙi–`Jð÷èC@§záHæò4²hFíŠÎÈëÒ_âöTÓ=ÎbÔ`¦soO°Ë Ì£† ô¿û›RÑæÚ"C¨£ž¼Pë ÿCpdÉ•äÄbÆ7’¶`ý½Ûž‘PÞÓ%œÆÓ#÷霎‘âT-c©8!Œ3Á¼¨å¬Ç‹ÔΉl”òvgÏœrƃiæ¤pdzóÑ£Š3™H¨§Óq’fx¡(4O:Nï÷ž½):Ž} i3œ°Ž4?ËIh¦–÷v î×¢…D%ûßÙ›’ASÿÅ4/Ll$«›”³9Ü·Î)G“µ5ñçÄCDvWÉ¬Ö “[ãÅò{çÃÉ¥:þ{FpúíøíW²XúMX²‚´®•“ %ØÄ¢ðš8ƒPÜ´hQŽ 7øÆœd_’Ça—-z·8ñE<#L1µÓW/2YÚ3E¼¾xo¿ƒ®C>:ZfÐŽIQ3uÕeßx.yój-åæEÓK¿´~éMŠœUvq3O›dRubà*¹¾Jÿ©óIgO¨ëÅZÎÌäF÷È=šÐŒÒ\'+·gy‚JAö_Ò"6Lµ³ ò¿˜‰ÈÈ¢¥åÇ$±€%©Bý ÀÌup*dqÐÓ,UC áÎ{Ô““ä>×Å‹“f‚g#vKWÚ~Žžª#‰ýˆ_ÌQmwÖ+Ó¨ ¨¦\N¾Óxu^°“[Jö2P±w>üž ½cÖ_ùž5î 4Ã{â¤EÞ‚¥fɺl‘Ͼœ»U‡—“iAíÅBg¨'²þ’€ü¶Þ£brP”3Ì**ù·tÂ$ʺՌ#îm,žBšOä– N½Æ†"6å¢x¹ ­E𣾤³N®¼É~  ò öÞt:¿6Ã0¤EH»ó¢îQpY] a±>’NC:v›Š¾zȲÎ'½þä)L˜Ü³×ã‹Á%mp¾4¦Ð‚¶úWãñ”¦zÁã‚cÏ$müŒžÞê¹Ì^PnE¾YPK;@Q‘GÙ8“#1pj‡ ÈŒ-ó@gj\©­M¡Û×=Þ;ã.7¤6}º«EjIqÛ|)›¤<8däŒ@YRžF´ üT!\Çö‚x.:klM0% «xbÒ †sH.ÚDy%OhTp@S`¢4—¹ÎxÖ’¤!j5Ü\Òë¤A]&Â(Ö'.'¼Í H '°æ…Æs-Ú'¤ ƒ ,dɔЕî jW¡ÊP\ä+â«cË‚Äfe¼2ÆÐú'Ž 'N47Jü›®ÒöšJ[›å­m6Š›;Å­ˆï‰çšãQ*Е/ÃÞ|šPŠ]&†‡"ôç_åú?þŸÿóÿû?þÑèõÅI[œ©©Ž÷þñÁ_ þþ'üáïÿ/]“»NK~Åÿ þþ_§ÈÿÞÿ¿AB*`.× ðÛ¼7éð(øüö Xüyk£øªôêõÖÏíÞeo2øù¼ºÌKÎÿGœý çy³´íÎÿ­ÕüŠ‹g{ûý^ëä=¬á´F·+õ’ȈZ¾Ÿgx^Ç™‘ù-Ÿ…êt·r,@)Áù*2_ƒ ¥k+J( '_ù|ØPeŒ›9Îɾþ]¼ë]S±\_CxyÐû<Mèt£ÁçÞ('>Ž‹£ÁE4³¡w”̨5.h£øûÑàk¿TzÈv£AOì“/Á0ø^HìÑîÍd0¥×‘b‹/l(%:o:¾œÝ¢.…3®÷™NÈã´0lÝÛN0Ó)žhö)i4‰æî¡¨Ï.¢#S}⯵Æi½V©uDc;¸ùBAí~XØ|žó±e‡®5;‡-³]& OC»˜äÔ×Nåºpp¶fìÕÍɉ5­!쟼߫ˆÓÖA¥Ö®4Y‹×tlAæéh•²n-ìÕwÛÿþýsðolóߨE¿†‘øÛŽ„ùµ/d“Ô08WÖ™Áèf>Ë*tʧëPÁÉø–²—íe ò/oÅF˜µ¹Dcƙﺽ¦ÓÞ¾Ó^º”27'†ÁèóìJ4T5æ9ÄñŪ^øÆ3ë/‹Ñ‹ ┯¼P‰³eF›ŠOF´ í;VÈW©õˆ3NöS0Ê̸¸|n‘\Èd“ÁŠ[\^Ã^É0Õ5b@÷íC\º‡0±ë4ƒ˜O$³‡ZN¼óp†ƒoA>ëá¤ö¬7 4XÓ“ŸRÛ£E1Ô=á¦<˜Ñ>FxGOËzk|IÎ%Óà€ë¾Úª'ØÊª~ôÓ¤•ZúßìóŸ!ÿùô¿ÍíÍ•ü÷$×Jÿû¡/Cÿ{¤Ù¿hþË;ewþ—¶VöŸ'¹x¶;ú_ç0#ª9q˜•vN´AÆo)å/ÔizóoƒáÏwñé€Y©½ÜW"l(IÊOÇÃñ¤w1å÷rXÚQAëTÍñ×€DTÐó¶Mù&^ò(%µoߣÕ0[À%´–Ρ>äZÁOº—ûòä>}ÝßÿÂ.þ /ÿ-oTõ·–øï°Ø¿ÿͽ‚‡ºßÞêoRµ©´×ÖJb]üÑnþß@à*è6òø|zÁ¡þ¶¯Â‚á)ð—=J}©hBÊ©¨¼5Å|jtFÁ·~p3S€¬CoÌ”=*î¸J(=´óC¢ 7 pW´êpíR¾ÝÈqÒåJû-”Ýn¾Ý0JTͲÅ^†4ÀE‹Óô†)´­ª$%Ƈ´aú‹:úŒNô;G2Ë´ä¥Vˆx”†w˜º]À•¶aÄ)5¬Ô —ÒÝöûã)¢Oee‘Ô)[k7ÖúߊÒ$R´2(£5\ݤ«gUçx6î0ë †&þìÉXÎoå_o‹¼h¨x>€ŒtðÞðóx?¯‘o}(ˆãP!QÏ»‚4^óAÍ+RK/¡þ4T|dŒ8Rð\v:ÁLÓÞe0#O}æº×¿BPé„%2¥>8”K<…4ÒlA7à-çb£ ÌçÝÑci‚§ao’xdçÃIwåÌd)§»­ÝÆAÇT3X“l6ö×7¨ ñþEûxP­ÅŸZ±ó°ÝÊ¢·TdSÙXN7j™—Ô(#ú®ÔÕOk•ݺ0®j­¥szÔáÊÉ{ ú«%˜¸rbØ}X3hk~µ„ðå°„¸ïV11Þ š%.x†ŸÐǃx`Ua‘ªâ Ú^Ep‹æ•*pYN—„çýún£rD9µO?ªô“gý¦'§\ô½54¦ƒ¾ïÅØV­Ù®UÂw1¦“CædcüjïvœNEÈdìK${šÞïÍz&oÑÏöw;»¾¶ÅKl,^¦·¸À¤8^«a  í:å#Êév6'o!>Ô==‹ Rº°Ë"F¸±œAI®óÕŒ®8ÃÅ—QfÄ‹ö ËjtÚ6X æó½ØG ¶ %,UÍ¿¤v²ã(ùQ9«2_!+t^uVâ™ðÔ"K7‘ŒÙAŒÀ@"L¢¾بâUµCüq¨p0#½•ÚŽ޲‹!„‹\ÇRQ­ð§`¯n¯ÉñéûÜ‹è}5(úŒ<õvÏBGÃÕxä “ªVk5K²Á2‡¸Ý‚×O8V¥íÙ>ÛFJ«DR†µ xË;Îfˆ“¥T@ÍÇõ,¨g‰@=óÕ¨z»ˆE…U¤a5ÝÛšäÛ‡ámš·%|Q-®‚HÿÙ59¯¢'Ï…êÇ„¤Þ4xtÎ2˜L šÕ+cÒ‹3^ÀŸ;ÄÙ$yÕ¡!Kðµ?V'O¼D-Ôš¯|¼Uðíf8èð8 ’/g·ca•°£Åö£ïm›/nGÂò‰èT~ÿ° šÈs"oÖƒ;NÝx:TèlGúS5ûSmÛD“îõè¤Y™£Æ*€è›¡§T#µâ©Jî3‹IPgp GR1ßz 7â!.)«E³^b .ܬêvñ¨²°Öûfµ®y­( g1ým2Ëà}L”å{”‰Z“Ó%1X TÜ0ý)–”˪là°´¦D8]‡6£±oá;¸P6¶a§­–¹FªV_ê…‹îâPÌÚ6ž€”cÊè¼DȾä¢;#oÒ ìHV…jx_·ÞÀ­´I w>ÍT«Y;=aêYRŠ#8¡õò†ÑÂÄ1¢Ó::‘ª&ÝF¦Qµ™FU5‹ŒJΊlMÛGÆÁÿïÖFyåÿy’kåÿý¡/Óÿû8³áüß,î”"þßUüÇ“\<Û]ÿo7ƒgh8­À¿é ü[ɉ6}¯¬üÁþ7‚ƒ¬é1XÆÆÆú<Ì#,ÖcÁoÓóƾÑçÇeÃd;]<é…òÙ!“êœLÛ=eé‘$Gv’ ³´¥ÝÕ8£ ëËÓ¹Ä7‚ûw>}v@bU)W(r# ìŒø– ùó :gäÕÇ[BLù‰*¢k|çûô=ßþó9ƒE³²bVYì¶Mj¥ËŽluAîU¦r­Þ%δ¸žÁÌkHFY÷õCßdûX&E§£þ„-ùçÁì3Pšø:+p;¿è¨Ñ÷ëöǸn»ýñÞÝþXàvÂnW¬nÇÇû{]‰ôZ’¸¢iáÊßí¼4-¢¯Kñ2â½÷\…ã ÜÚ/Ï$V¸†œùæÇxnwå>ÖÀgÈZê]¢“k|¤†üñÑüQ1~` ­?zìYM*[:>â]`ÝОqWC«J[Ï®AíudùôãcÍh€ëE¡É¼Pʸ¬B-J9eöÀ¬8ýû8*ø‡î4îãáº_Áû0DGÍMP[W;Ÿßeéÿ¿?Žpý¿\ZéÿOs­ôÿú2ôÿGšý ã¿7v6"û‹Å•þÿ$ÏvGÿÿCmÿ §6xæD—ÔYø·³ûžÌõý §ƒ‹<ê·?g€±ë·XwºŒ¿‰VƒÊÑnk·bÅ$"°m ]BÁ¼J“ùˆ_ÂÞà ŸÌð{ȘЕFNØ·œ]á“aVPÆ©„‘ˆsRNxÄç•Ë2X½‘?ÿžoª]ÐrÚK`̉sG -V(/°Ü4‹€M$¦ÇAáx֛ؾâßÚÚ—;|áÉÀìø”Ñ‰”óÕ~bÅ×.©ê[¡‚Ê©W³ÞLàEÖìÏ|4˜ÉÁÉz1ë»8‚Žˆ ÛOFÿ™Æüf3X§f¤å#ÀæÓƒ²lí€÷ea ÓYУ1ÃoÙèw&ÔżO1Ñ_¼˜ânYçi÷©ó©õ©š"Ðéª5_EÚkÖ‘ƒoÅ‹ú‹7„ìÕš¨8O[úižJL$oXfj÷îZ •ÂM;ƦeOsõe›SçUÚ›u»ˆÂ§‡2ëÒƒÞ¾œ1è[G´çÓOh¤òÜ{£* !…@žã}ÛuÚœÃLŒêY ž5ÃgrX]gX‹ u4d`r¨lœÉ竚†zrê#¦ŽÊ3[D*F>+c'Â>ã«S "ÙòµÀíü+4…à[ü°ˆ “²TLj§×<•vÓy%×´`kï€vÌv‹41mR“a¿’f2Äî\§!CÇ©! ÆëÞ·L1×ÈÊæIÆÀæoÇ“/S‚D€YAwö•ifí1Æ•…áfY{°‹öŽØŒq¯7å]}•Ü„ RŠÂw â4˜ f¢†÷pL@bЩCûÁͬ³eø}<û:AzßÞ}Â!ÕfÞ¾‘Ñ8Ô&‹„üå6fèí íù¹”9n{6|Ú=;ý¯œÐÇáA£K­ €d ‚Kå°›ô2yѳ¤Þ€Ä÷„ßÅøXÍpe%¡Sĸ[5[ÂõµaŽïj'W¾¤½‘1‘e  ‹9yÓ=¶ŠóÁ"LÉihê2³k¤0™J‡¥uAßYÇÞ\ç‡ëÅ7ײO(4‡%†±=DtgÄ‹JT®zAÒuSnR‚Öù:æ³MÌ”MƒÔjÕ¼ßM¿µ~)IUÀ;<¤mj?O*š|‹Â‡ïm6 ùν<ÐÞ³F”­Àv”¥j*Zï3æÜ] ȰߩÑà‰hÔvf'ô°j ™ºVúYq­‘C@Jœ ~q‘s‹úëºn|D¨)T„N¢îæØ"ëQ¶"ktD H)Ý>o,PãÈ:J° 6Ll‚½N$؆`ãß%b½1¼· ¹jˆ‡€M ×JFÂÒ鬆” ÞäºO°öÏxgʧò¥Øöÿóçÿ·¹½Êÿð4×ÊþÿC_¦ýÿqfÿBûÿöÆÖN$þo{åÿ{’‹g»kÿßSêE§µÛÄÍÕµÖA7"wNZ]å8–®x…®¾.”6:®fPß_yŒëÞ˜Ba.Þ©pz9„)Ɖô1< ·CãK”O^¶–h `ƒêÐ’ž‡=ëá|8î±¼‡£ÍëG$ Ë!.SžVÚÚ@ÐgG=ÒÔÇg ’èF Û’ˆ„kxcïmk’§äiòy.gx—®ì&ùtçëx qÔ[¾ÅçŸ}É+UšF‹S?É:+aAò‚x4uÉ-$ì½¼6ºô)ÒÕø–Ý!èeDÒˆ,×Hè1[}$N_«ÐWt#e€5eJYQ ÿŽ2_²"j&žD#»µÆ«øÌÜ1ïév¾„M”²Ünf¸6$‡-ih¹a‡þ†©à“e(…ƒ(?™zb‚Ç‹<ÆKÚ6޵>¾ &/¤I'qs<Êc¡1õºÓe2½øŒn_!ŹÈÇ9†C‰RdyÃsX?*éýO6±òKõ© á÷¼$T ]™Ñ¦¤òi˜»ŒÊ±„û`^m‡Z‘€“àpîD¢?yB¤¤ÅX4qé ZpÜŒšÛl«•Ķ8Þ‹(–¾êYÙ‹Š ï/þv(d3Ïj(*3¨޵™Ì±®ùwžc9Žä»º¶W¼…ð†2ž#òbñìqÙ{øTöújá@î…CŽÖ¤‹€âµE==ä`pøÆë"»ÛDöÆØ(æ’i[Ó8:ÏÂ,nÜuèXÓF&WLg²·Ú´ûw¾ìøŸÙs‰ÿYÿùT×*þç‡¾ÌøŸÇ™ý ã67Ê‘ý¿åÕüŠ‹g»ÿÓÉDB~XAUr EÁr`Ï*„G^ÂCÀŽ7¸›Ñ:÷ ѱ¢r¡™H|Î217ÁçìÎlãe¢m:ˆ†Ø`läK°çü1ÊÉX ö{Ë#]c6³b–ÛoÔ. ›*Hê±H|×üæwëîÿìiiO·ä ÙÐ- QS5Z ûdû~í ftÆÔ Ïp`…ÍÂã…¥ßvŸ]I¾ã~¦$Èš8èÜ/ÜÝEÚºSsÐÝ¿Éø6mçØìFý{Š˜ª”AEí› ÇA1˜`a€ œ8 P F¡òC_`´í}öÄu¸17Ï9ê(„ËCF‰ ð|Ñþÿì½iWIÒ(üýùù~²’ „—¶§Ý爥m6™f1´çíó SXHIظoßÿ~cɽ2«JÂÆxLÍ´)+232222ÖÉÈ·/„’ξ’CÒØvHªèDäxýä¼ ½š×óx…¸ªïTdâBK™= :ÖTñ®(Öì (<>¶\g–µh´­û^wÁw‚ñq¢œ”àˆÒ8—TÑgªøn;Ú½¡Ü{'SpÚðˆ¹îŒíl@¹—7N'SwU­tߨséžù®P†É‹ÞÇ4çî‡g'Q,ŠàNš —# rø“Gü)â:ÂS­E™YÀðLoz(ôqâØ!¬Þ>ðÐÌK¸иt6†ô?×½ž‰ Ä­é$ø—Ì* "ÀäãhØ—93÷úu|çJÕkDÒúÓA2b·®U y° “SfZ à…&Ž‚fp˜x‘Œžÿ¥ç-ýk½[Ÿñ©->­pÂÛгdÿñÿÏô2·°þß’ÿKôEà-9UÔvþ¯À§&R%@+Îÿ˜8 Õ-þ…“ЇòóÐò%>¬V#\³¹Ä<Rá‘W}¢D#+E°¢|‚k…U£¥•€\ò /j Ê#ŸRêˆPRàc'Ì ä{ú–%î¸eyT3··àÌ~|2‡åÀw/ówp›ïàÔ§ß©Os½•Sßá¬N}Æ…ˆƒí›VQC™²¡†ŽBX¾/ž·$R*xÁýÆn3à¡t¨Ü„©þ—„Ìå»^Ç\Æ}@u­¼® w­ÃÖvxÌÔ¶ˆÆð @ pè˜ÂŸ'/†òOú5Ÿ»@ˆ\ê‘·dû—Fæ·^ž! SIl77u¾ÂzAðùOmZÞHoý¾9}P!ˆC bÓ2äÏ4¹b”ê?ð_rmÑ߯‰¬¥fœPŽÚ±UirÊäØ(ž°_7JÂPªå/´gÈÑýθ#>˜û†Ç¶ÿOÎ÷ÅþÿøIò`ÿ»“çÁþÿS?Æþÿ­v©ýÿÙã'+¹üOìÿwòðnwíÿk; \ÿ¹·r º6bÆïß÷ß öá•ü£ƒRK‡¯t3[i-ßogá”K–ç¶ë# .ÄtV(&lZÙ½CµÀô*ÜÒôß©qw3Ùø,¬º¶G‹ëÒÕf}©Pî(%0• cÙoß,ÑZ¦p4dÕ0 Û.™ÚÜ=4£ßãOR)gpgKÿ†àêÚfck¡¬”U¸.œ-ƒ˜X†Û¥½èÀ€¿`RîóëÁ ‘³94r&Õæ5Rߨã=¥É…Ûü)PQ%+3 E”ZS©Y†‰$¦•j~úÅèï „I$nÞ~)½Bõc‡wN/ÒlÇjæÏ6òÊ‘ye˜ÃYä×ùw #ï¬ZC›|¹ºJ¡Ñ!ZÑYxÔøñç¬oï„´©ø÷kµ<¢¹2[ѧ€rº È”‹Þà\š#üÑþñÝFK gí;k´ÆhêÇ#eß½Z=ÜÿÔ\Šn]ûì¶T¦•Yܼ‘Ýw€wì§çé­_}Æ&Çý†A, îN˜¯êø¨RÇ>òoß1s¨xe:ÉÁ…ÚØ£ÔìÖÑr(ækqZæØäŒm‡}L„ófç†ãÆØ­ æ ¶õij—_ˆ@n)L%ûÔñ‰ކ§ãQëë¥Á5ÛµÝ.¾R>„ë¸st¸UsTt¼Öšr±ˆè¢Ò.#Ò;çÜS6û¨ÐîN¥ýVláÆi#¤|–…åFè`„41¹>ƒm‚écÐkÿë2|„§”ÎYÃxõä‰ <­GZ¶ßiRîýoU¼0dN e¤È,KÐ m*hIYnÈt ˜¬ay›JÀN±núX\XŽßcÈÚðß ü÷8>ŸÕÍWÝ£])ò'òçI ý‹EhŽ@h=ØÝ†_ÉÖ‚9ºáw}§³»öºÄ&ÓÍ4¸üèf­ÙY=€ wNàŸÍ¼9-WóXÑmÁH~=#gú£P^" C†yŒ)K“1,ßÝ)z7ggrß=*z·]üîë¢wsI+Üwö1ùîãâwÿ(z÷Iñ»ïŠÞ}j½›ÿÖ˜ìò™'¨ ¼šIu‹ŸÊJFéGx{Ôè› Ù<$õÚá›øK9Ä좥+o"TíŸúí»ÜžÆiÍø±huºë˜9¥»ÑÚpØÀ7²XíŸøícxæ€Aìl´V$8õpLÀ(À²Øó0°W0þÜ;ðõöŽ5ÛmŠF¥nv›ÐÑr #‘·ËÚÝ nÁ;Òðº ^k„8Õøº…ʉ !`Äè/dV>ѱ®ÆX\‰émŠ…5·Èê½£Šï=ußkסGùrŸ[“° r¡ZÝ4~°¶SÝ4Î'A¥tC]œ¨¤„]þ=žnèUŠª„³ ÔÕ}Ô’†Ç‡=à€ÏWøÁ#=XàKl–´` ôO$@`¨8]ä‡ GàG¨ÊÂò…„YþP¯­Õ%T3=n€ó’=HDÿÑü1k²á9ÞX¢þ‚òt½ ÏÈ#{1&xÿ@‘ÚÀ€+P6M¥Ø²vOt{]Ä8MuXCnÒ2 ÒOm Áƒ0_®³ð×:Ü?Ú°ÞAéJ¾<¬ï(#Üe$Ø‚M|T(ŒÃ€e½ešÂË&ÜßF>Ò›¤“†l;¤ƒsÆ$J'J!'ѧ¯)gœ0½[Î2(q>Ž Ã&#à ‹s€P¦@, ãxê¼³ñ¿¢G~HU¹ƒú½½EFÅ]G†‹e K‘gtþz–ŒBïo”¨0ŽûR¾¦8¨flvî£iœ'MP.EÇÊc¡¯Ã̰aµÜ@Þúèá'áï„5 Ñ„'¹©<æ©lÍ:•Ç¡©<©:•v`*GaŬ7•gñ©<5«²Ù%_¨Ý¼Nᤞ†&õ¬ê¤V¢“ÊiŽ£yBr“úÅ›Ôb2û´~ MëyÕi=Ž’©k)J2¨?¶'¹½‚>q;bQX `û1|Øu?C·$ŽÌbãƒUÍ­Ù0"sŒ¸IrÙåby]èY0‚‡#H¥‹¢í£é(’f”HnD2óvÒTiô¶WfBIˆ7%•yÓÓJV‹&ޤ›};D$ˆvÕ >YßÀ».Þ 8_ò8‡7ÀÂí+Ä“[ÌUäèJÇœ%ö¾z#‘òËs߀Xþßï çùµ¿… È<ù_Vê¿ÜÍóàÿõS?Žÿ×7Ùý¥ûåñrÎÿk¥ýàÿu'ïöœÿW[Ô¤Ÿ×zCœ sÒ‰åQ_˜ê¥©^Šíe€ÖTÌ+9·zWéD¬§ ï  ó´÷~Њ׽Á {ß6ÄŸ£¿GâuÖï‘O‚ h«7þ÷³´ÿð"o°|ð˜ HåY~^2ØÔrXšÏ·ÍSÑl¶è˜ø×Íݽ͵ÍCÑE½ ƒ·MPqï¶€y‘ Hco´e2Ï(µ_Þ[í½ÕNf÷Vk ¸EpVšžèg½÷£¡ôGC#7KO†8ËT7âW@õ:ôsƒ|¾HÇœ°"7f Lšë×­l'”§æ“]cã àHø‹´ëÓƒÞ¯ü* õÿ~Ÿþ/Âü_\ª¦ ÓÏô5Âö3ì÷ÆU\ÌD™óDØobèè¤åzLˆ2§‰¨¿„†×õà­{ðrØ•¾ƒtø~z!”…yÝÇy#€qìX½gz3Ew†ã:K*šÃÝ1§„ƒ*Áë¶h~¯#É?­« Wù‡{ÝÓ_ýÏç½®êãÜÿÒ{“ÿóñCýÏ;zî?õcÝÿ¾Ñî/ÝÿOQWìÇÿ<~ú°ÿïâáÝîÝÿ6kâhoÇÄúìì½î4ÄêÆaGþÌòÓþ‘~–ŸÎðƒX‹ËH~ˆO(2Ç ú»Äøl`ÀlšFÿ¦ú¹íæºrÿEy†W'Cõ-Hæs¢±«/GççêûI…K "Ç8SöE»¥v†—By: ®Ð"ù¶Q‚ƒ7¸T懲CaŽsµý`ž²áÙ´ÉGXì¨Îr6å\gv ͽAwÌVˆ!ƒA²«Ê^õ殳ëÄL…îŒê~õl7 Öº=*ÈLS¡œy6pœ·Gt¡Ì`€$‚)á=W†_8üªQîÝó ãÐ"ø-éÖÙ©eK²¨17Iį/E†ÿ\É?.ñŸaCd­aÚºüWè ¥Ê 9P²aíª1Ôõ$¿mpÁ}¼ÔÞE2¡YÕcîé%pËu™Ï|ÇUÛ²@¤Sw¨ãÀ¤gäMçG6Çæu·÷£ž {¡^ t[p½8š¼8° lLáÓŽÔ‡a¿%»¯n¾§Ž•†…ŽmQî…äâ;R?°:¾ýÈÍyðmlû4Q”R¼‰ZþMèPæã¤0^Å·Éîãé\ÏU_2áTã"&Ï8ÂŒyß:`|þwŽ(¨ÔDY•²L6üç.ÊkBY°*RÕÂ@ (þ÷;Gü£ÿûoHÿ·’<~¸ÿßÉó ÿû©Kÿ÷vÙþ_ŸøûùÙCý¯;y¤XäêÿöUؽͷo:Ñ(k×âàA X©žÄ"³ŠVp…_(;,àsPâN1Ÿbp_ ÎH'8IÿsMÙçQ„9~>z°ÐãÑ´Ç×T¬{^V Rˆ4Äùxt¥B(×Jz>œÃ@Œ±Ì«ÊñE:$¼±2­!+`ô†tèà@£iïƒT!ágz±:âÅK±W—Yï)iŠ lv`úW,¯+¯=U6O/FŽ[ÂÌ?›LÉÃäÜÃÕߌ(£qÕà¤+£ï´;ÐÎþ7¹õûSPSÃáXôŒp±¯=¢"J'G½*£·@(ª7àÙƒ¦{µ¿› š×[@‰uø³½@?’ÕP#×Ép®+È”ÂO \Õ ö©Jdc™â.)”« Q2ëT»yú¥ÙÖ­¬N÷f¶gø›˜à¿^ý—šhÒÇÜdÁÅ"ígœå[˜å[HH¯ò1û4šòÍØ`¼Òûˆ3®ÈDr µ‹É*àÒVƒgxѳéÏ`Jz¦ºd^²óšü‰X¾Åëò)IñëôXK0Çëö"ÍÓ»óxÓ™õuz bçzÝŒÄ#~¢Y`½)ê*ÉÓ vù o.s!c.áR^ˆ>œÙô‹ÚÙyÍç mU¥_ÿ@F¨û¨ûpô±œ°íô3’°IØ“QEª/a„2¢¸­¶7Š—¦toTZÙøHr¯7ÃÔÁÉÌtåŽd>²Ô8¹ U«"ªÎ†yMr$z]e aõ·ÏµÒ‰3šNA°ˆ,‘§O³†ÿ o¼Ï>á‘MdYD®³Õ† #­*.ÆyùHÊ—¬pïU^ñðHf#˜Næ¢73’Ò׋÷Þ¬äÊõŒ ,ËþâSiÑR¼‚àgšêÒ ¡Ï¦ƒ/Ìå$ ŠÌå0-s‡¥(i?ª¢„ŽùSiÈCÒºi¦ÌÞ;Ъ¡ÒÍYâ¸ÓËì‰}„a5õdmÞâ³:ÐìÎuÁʘôhCg |‹Ct¥¼F^†ó^:Ä—ôáé´OBí)ͥ;>srJ ;â{2 ¨ù)Y©'ž{…½Ûœ¬B)t±IsQ¨Ã®£0_WW„Ü4eÇ -þs{~‘ÿŠ^ •rÿmž‹+´W' Êtq0ëM •Be"ÒóóôÌ” ýŠ©aC= €Q|kÞ0bÎò…åk»xÃò„újlÖõšå‹/ž&”ߌ˜¤œiž\ˆCݯó°'Ãævòò¨ïéšN· ø!‡iÐÑȉ»ê)¿zª¹äîŸt8ؼM‚É]œ`×&Oã6‚ô‡ù:?³éD,¸PãÄ:Fã˜xÉɱÝUº£¼“_Ý5¤bÎÇ7ÝFi-“å‹hY gÊúX\I+:D8v÷°¢8üˆëéÛüPfv=é„bÀîªæÖ÷Ê¿H“«Ø¥]>X¯Î.”˜Ëý\–áŠ$— —òÒ°¥¶•S.pþ‚_6 Ñðšj§s&FF‘KÖèŽBW%ûÝï×+Ë' ö—KðXœO0—³°[Ø<ŸÆ±r®?êïeÑöÅ#]DA7»uê·šNø¦Ò(vÕßùp浑’¶Ñ–Rk÷ºí$ÏØÕŸOtm—‹®w~Ýi·,i£|+¢±é¤;ƒÄ+›¿t褛—xÛóI¼ío¥Rm?þñ$öì²æ}YýùäÌöì Õ‚ÚñHÞý‡@ÞŸ÷qâ'ÿ¹7ùÿž=äÿº›ç!þ÷§~¬øßo´ûËóÿ-¯<Ëåÿ{–<ìÿ»xx·{ñ¿PÞ•tLYƒÖ:;ðãh÷à‡ˆß°K!ª |±Ã€ïÙ,™ýNj3Æîª±¿û¦RÕ쉘œq¦ØøX—û¾ëM5jø}½Þ ulðRÜ`ðË~²Øjµñï¡ü›÷©l~}5ùOÃŽ–…¦ ʽÓI ‡ŸÐ;Þ>àÄÊÿœF‡ËGpdôp§ë+ŠKÀä~½)ºŒN¦âzˆÁn*’yÞûœqζ¡˜ô¦Ùäü‹žY‚51á´¡fôKMöµ(Úõ¡ö¹•¹Ø'^çÃѰ9LßÐO)ãð˜C¯î ¿e¿UØ`$`ØtM!föéã^vÕ{o߸N™=8Ꞇ~|Œò^ËŽlÈ$GmxçŽSL¼‡ã¦‘k€ûÑóÿµ‰Ä{!p´ ïú+Š  _àÜØÄ|ûþÂÍZ^Þ2³ó½ÎÄÇkt=Á8/ 5t|â/t¢Î;PKh7ŒÙO'gãìsПâZîR©e/c4o'ÕÊáÑ7åsφgcš3Ìwú9E:¿>;f‰d)w¸Ÿ.Þ†AÝü¦3Ç3)äÌ}FfCð’âÓæ“t©*¤ Ñ‘×|=Úëœ{ö<Ï)&Þ;j¤Dª_a¤´of)õ\6Rd*4Òïåœ^æ—þU=ÑOâã@íG€>«sygõ !ÖWñô\ßÜí¼šÍs[‚%?àW!?`é®yª%ޥݦڣ,å­8:É6ùä*¨3«0j)¬뽚×Q!|Úè†Ì¯FUcL’/iØô{]¾+–d¯xB‡^¤F/å"y_æjɺñOÄw±$¡…ºòUTḴ<¬í¼8õÞý™‘šÜ*­ §ÚÀŸçqôŸ?Þýß“å‡ûÿÝ<ú¿Ÿú±ôßh÷—ëÿ/·óú¿‡úwò(!ÄÑÿï‘þSü5Äv‚ÅœAÞÛ|Ëòðƒ°@ ¨ÐE¸›)©_$àü›äó;Þ³«#NÒqÆ ƒñè3܉á’ɵ&&*õ‡Sqà EÎ; qE¹rÈTæØI{g:9Ãv¢uAÛm§ÀÃ×TÅr0|Ãz Ü…îÛz·‹Ê(ÎAÂùˆ>;¹l“²›¬¼ «(iA:¾¢R©:cÉ× ³ghÛI%¬ŸgãÉT)Þ’ª•w¥—£œ¥ &Ü SÕm»R·ƒÞWí•^Ï÷ „ívU´¸ÇbJAåpô³³tBÙœ–P«(³!Æìf¤ø°áä¶ Ùc{]gØF­úŽÈ®85'o5âq;ô&«C-tô¿‰–ljNð7‡Ì'B)Ë%#~¸bJϨªÇ˜ WŽû©ª‘ùûõ˜ج§Ó^6pùƒÍ%v)Ôó~K¬µÄñE‚5Î-4NžQ®›õôã´Õpø{{8ºù¤Ã<:è|Þl0ªMç-½ð*£N–¨± 'ËŠÒ TÏëPšá`ÓÚ8¸‘6Y¿I¿"½m.”°vWå†TÖºÁD€r·--ÉfâÐÆ,å@ %A NÂ!þÔ «ô’æv[êôü>Û~Ÿ‰ßgÓîÔ|Óç?ay(ßKW,‰ìY/é"WÚá<¬¼2W`ýW\õ)*ab·!ÞqÕäT`èÇòjÉB²MòÇÛŒ«ÆXYº €¶Td%ä7(¿ê MÙ>R-`xùbÔgwBÙ‚p{´3u¾Ð —è!³ ë‘À ~í -€¸‰¿ãçôø¹ 0ûÕ-¦â 1¿0ª¶:j3zc¡dL— _á·çîÛ­Ëžøcl¼Ó¦nÏvJÔ6”sú{´â4tÛ9“êæ¢Ú×`¶äT\&S /F! íÐËà{vv$Å ‚a "“Ñ(n.ÌdËU^º«˜'´»ŠU:ñ{Þ<)yGÓ”\OÅN®ŸGÓ4PÐä¨åP×_É›`Ó ˜u¼;øópÿ÷–Øœ¢?àDœFgRÌÙÝ':­aS$—ôS:+b / Êìúc¿7eÌL®O•–¦æ¬ø̇\sVd¡‚r{æŠ×v o®° èôKÚùim0þ–’…¡a?¤ývCU(Û/’íµáDß¹º£3hí5ÍyÙ’»˜çU¹%ñTuջɮ®¯Ê-Lh“‹ÑõhÄÁs‡´ß¢^uãlܦ²FÀ8éÀT¦`d:Ž~ÉLeAÞVãWƆYLr´ŸÓ±Úƒƒ/f˜ŽêxÕÙpÍ„·\hÃ}+CHžÀX!l3È©1BØ€†ˆÉa®j°&åUšö2é_Míì÷ÃÔ¯ÇшÌ-Ax°»sXá‘Ʀ½Íþ.S9£èæôfTe8%3ª‚”ÐŒ‚–&kx}V¾ë¤Ù¡ÃûÛ&{î.ø¦o/•zm¯»sp,o ‘´k×°ÑÆt଻æï¬Wf²GÁþÓæÛp3I§NmõÌ¥ „mi6ù¶ÑÌ«AÈöa]·¹¨V¬…jˆì#bxìSÃu,d K$$H¸‰©-q<8IÕäÌÅþknt6 =Ð&—yiÚc °™¼€Aâ¿ÎÊÒ˜%#öÆìmUw¤9;f ÚŒt10Ò2¬¾€·ôïBÑHeÁ; ¨öy4þ0«PZÊÝÕµ÷Ž¿ÂÞ;n1¤ÀÞÃk^`ï¹RÁò e<¿/±¿ÿ ¿‡ ³'hX”—ÞôˆýŽG2¿Ãbl8ô ô~ŠöH¾3LÓ~Cœ^O­½¬±,¹æº %rÕ/^-W~ç¼òèïÜÀÄñ²I¹ÿ~ÃI3¯/rØ›¯^c-Ê·‡Ú6„O ä/²~ûxæv¸-®•Œ}G[ÓiñUÂmãv;'dÝ¡g ò{d*ݦÿàÞº½—Ë‚nžíƒÃ lÇagõ ƒÀ¨R{f³CÝì¿9Æ øQ¬¬'p÷YoÓ?mh¿ÀJ¼ hçN™ÂÊ»ŽW,¥~C5+MÕÔúïÖÞìý 3{µ±»Ë?ÞÂtdÇǯQkÀiZƒÝÍ.êû‡.´­;ÔE¨vôŠ\ÉÃáÚ“™’Þ‡ÊF2ôñŽb˜…wÚ/iQ¥Œí½¯Ùß)Ó'ÝRàæ‹þg£©OØ=EJ;ÐÔÀãw^ráŠEÄdMm}õóǼ/“ΰªÅ`&EÉÇSu¥ÏèÒíÜsŒjǾ ¬–šQ¹Q8±±*b4iȃšKHYbò1L•-늅ºã# ¸×ÛÃÝVÕT¯@þÉ|ôyÒ8{Ó³1\ñ -ì"˜É4ýH“ +WÛt¬@I×0hu,Ý”ÎFcŒ¦ û²(lÓ4íl“d­Å?ƒQÜ ^쀨¶ES8ˆß€ó—GгðsXÖÄvkg£ÕmvWA¶iuºë-¼ î’ ›Rôlã_:m–d™¯ÞˆCôQ°{Z}üâÎÁžÔ1OWI*VP.0£¡šÄ9jȬ9·ð6G’Æÿ:æXÉwÛr¸Î²žšxÔ%Ò#v›iÂ?Í5ªà"»Âdƒ¬YÇ4´ícÕô¸!„?>{íðïN>(ÉEï6§øvj"¥½E}ETÈp†0^Êã 6‹è){µgÌr‚œ´n˜ ÍÒoZ±”"çb LƒQ’|s«mØÑkÎ5ͼW#(ò¾À»st¦4‚º¨Vi®äá«<¶w¶÷ÜrSE <øÖ«u5‰ÐÐáŽl*mG•$i¢7øÀXÔprØü„Ýæ&Hø…üD°¸ ¯ºLZN3sxK3 Qc»©¡ð/øoÎ!„¢»Åâ΢ ÍK¶V4!òLÏÞ†¿•@q¹Ÿ™Tn-·,vÂkXÎQ|†Á°'" ןïr¾b å%SÀ¢ÅF^µU’=Ú·¤zI~ú™—aˆ Ï–ïgž³ó,͈õø¢£Ë\ŸW÷Pfgjn†€Ri"›tÏ ¼}fKPšÅÙl/ÔEŒû–¢Djí RX ¹RßIñi†èg· vP*fH‹^‚ÓmKtÎÉÎ `} eQ+ÀuTp葆3ºYɯ¥˜8²·É+s{;JƒtÜaZ™k¯Ëm›öòì pË“ôeÇXÒÄwèUâuJÒVÀöè (bÿ¨ž/îdOËÖtüs/zNlú$·Í[ñ>”Zöm÷Öˆ_öµ ˜Èa{{QNn[ ‡=5]õIlF.œcçXߎ ãR´{É–H)ż$J4yþ‰êÔ…þµkæÅhПäA³Öþ~ÔñÝ| ö8’”ñ¸þМ^X÷Ù£ü;¸5ä;z{|ÈÝlmç˜K4±£÷I¡¸D«Y@û¨’†ýb¸a–¸fÙÈžà‰X5ëºÑ^øà*äAãáE&Z ®{ÄŸ+, ö,_éI‡Z&üœ>6k–Ó€Ë5ô°¦ïaí¢ƒÓZikzÑ•!êã$°úð¬·qåâlû;D6JT#yw[Â÷‚ÐÚ4b ùÔ°‹:¼Mtx 4ÐÃx×v‘BP“C[[´ŸåÕæiÄFÀôfýmÂÈœùÈï¶ö¡”êµæ–˼´{·ò¹q ‰ì ®E06¶=l‘5"¨ËW"ø–”äѪ»e òdð ÈñÔM.ó»§Žã %ÉJóyÊÁÕªo¯Ê2 Û&¨Ì!]˜rÁˆØ¿l—±BûPR¹ù †ËÌ_m×h5Q(¸eþJÂæ/ƒ«û,ºCÊ-T¯`íVcÖ©Wy])/ìó¬S3§€Ë¨»¤c ÚÝ%ŠX¸D"áNÛ¡H|l7²MPö~8 Ôý3@I2‹ ¶-í1Â8‘ÅØ2n…z0BÙ@$#Ôâ|6¨æ¶e?Ú¶åm-™”˜¡ºMe¤p Q†Ià¥J¼h?s°¬e¡5®ïª4ÚÀ´´MÙ]3Îvù Ç­J‹ÅF¥§rF强ƒWtd¢²}iñg0/-þøÖ¥Å¼q©Ô¶$w¿KÆqÙÇ`q”,þPÖ¥E ©é YbvûÑa>ÚkÒÐQo=Ò×ë²cŒ­OŽÆ6BÍi'’³ж·µ‘(ž¨lJ±Á‡ÔwhÿùPÕü³SfþÙ‰›vbæŸÙÍ?.±è!ÎaŠ¥u~*Y‰„k("¡~ß&ó‹ 0‹ù HÒT²˜¸Ë±‘µÃJØ^DØÞ‘Ÿ”¯%¥‡ãÖ{Ñb™½h'f/Â…hÆ)V8Äa "o1Z¬d1’+j“8m‹Ì@ÆfĬðÎÌE²`3ž!‘tL"hç1Æ"cæ ‹‰ˆEÇâdŒE‹–ÁIùåÛ›Š<“NØî³èXˆ"ëÝq–Ù[ö¿-ÿ`'Z¬d'Ú~;ÑbØNôLÚ‰žW±¹ MÚÖ.LJÃü—·A´Á&«0ë2óýáW²%‰Ü†*£†r×"Ô-³åçZÅ"”,ßÚ$´¸µÚÜÚr®çE·i©2Ï™„f´y¡dy^ƒÐi!ŠH‹3 )òÅ Ö"X¾æÖê"›ŒŠææ)9°oYUôZÉ¡a86Š$)´a"¯h9J^|À‹¥Aì–RWàPÚßÍrÔ,·5K-Gp÷ÃTlÉ|K[ÑÞÞy«Q¦´’·¿–Ùh[Þ“g/üówû[g/´óÿMÛg÷%ÿßÊÓ‡üÿwó<äÿû©“ÿï[íþòúOŸ&þþOž<Ôÿ¾“GbNþ¿Ãöš•ÿOåý; _ðßpο½ý7‡oÿÜÛ(®òðÖyeÀƒYË‹ÈÌ6ÀJïw «‡8Ín]bÈÈ€f4 Ù`­ÜDì¬ÂÔ…éµT3„h¦jTì[¦?¬Æy®²rá›ÝWND?œÓ‹«tšÙC»Hñ–H)¶z\+˜òYÉ:(Ò©ªMêP¦±Áß[˜^s)±ñ‘f‰Ž”|:O¥ëDOœzï)i^/›èê ‡hWŒd°›(9N9[“I­Gÿëå–S¹Þ(1”Ÿ~ë_^ËÝÒOk¥rµÉ¶•«µäl?%Éà:^·ÊWÖElצ±³Qz~ža•ˆ©_9æ[§¶:S«y©Ø‚ó:ÈOL¦‘¢eWÙ¾:œ«ÑJ^¦|É,¹”‚0·÷ã´7¥ÔŒ½¡Å‚òpÓ4ך^ŒÓ êú\‹Àõ&©ƒá< 9ˆžy…ÃøþêYfªg¢Ô|+ûÆFHrs´·§Wì6‰cÊJÇ3ïìo¸#‚ç`§³»ö:>h;3O Q¿ÞÍB£)Éþ²Ï. §&½y¤ÏoÂörÙYn(½36 T1A,®G–I毶œ¯„ò×ä,7\!b‹%v[|t²ÓfHazíÕa«ü-Ο3{où÷LwQ3¢ôk ™rX-ôdÙÿ*\täÀtüÒ [%¡â#AÍœk6A‘E[áEÛ X˜íö‹¶Z´ÇÅcž,ÛZ_þ6ªðQõ«*ü¼ÇÑÿNî‹þïñƒþýßOýXú¿o´ûËöÿ³åÇóõŸ<~ØÿwñÈóÍÕÿazB÷;]L·¸‰y»oö)Ë"ü{½!:\Žþ=)°„¢GˆÝkørLuøóhþ\KÄW* ²®ÖAÉ@+-Ã,ÊÂPZL\Y¹Õš  9©Í¨3\=€…|¢ºÃÚƒÂRÒL¾Là6dÜE:ÿ„²IýV¸ƒN"ö£1}øÚú_¥²–X² €xÒO¤Ê×ò†t˜ëH5[pÁÓNž"]ÈŠ¼B¼¦÷ kYt0|é!!›*KÉʸ¾‰¤u9P6&£[4i“ÒÁ`]Îÿ`¡˜ÜÎ. ³!k{JOyõÐ*³”ßè@-Œ£RÕÊ Î§MaÏC l3Øop?½b(¨ =J«jˆ/py6•×Ðü¬ô[Aº¬×aÀ+µ ÂÁ 21³¨uj—K”¿—IÑ;]¥ârA&ì&=K¥"«Õ8{1…­Ž›d]q‘•]ÈhŠÇóçq6³8eË‘>e!ûe˜B±QX_,ôñäJ*b¢²¹zŒafAίJÂC})kx¸e®”1Â]ÒÇz$Â4üÂ$ø¢Â€ü¨B¾§áxt“]áQ%$˜CªÇ÷b˜‹¬¼7+y(ónþ ã´u˜¢ÜI@¿tèÇaôÈ–Å8ôv•!kCÛ€°˜Æb ݧ¸‚›4rvǦdRÉ#é²J™ó¿4qP²hœûð¾ G#8­ÂÞT ÁÎ×Ð1HízHåÅ*Ç*K« ­3cõ–ÆJ»Á¯ÔÀTYi~hX>jZ½>‘ˆÞïaœ*¨àü~=&™BÖL²¤`÷®ÖAIþý…8]£ªzÈûEêd)¦kº ¨Û…u/ ñ_Šø|hˆvü9CÓ§´\žQ­>’½&i_¥Îg¿ ä+ ìM²Ósç@"èg¨@K6æ5@׸‚ åV‰¶Ú¡€;–p0Ýß1Ÿ(G mñSY˜æ´‡6ÇÞàýˆÜJhçaÏ*9£—çæßÉ‹á_ÚpJ¿é/è|bûM«Õj¯ÜÍ n/x‹~bp^“_.*àú÷&¿Qþ¤qiºL‡2¶l X¤¼Ž$ü….нsÜc—"›Jj©GÔÙNlà¥E0KÝå«Ü—p·ó(àŒ§ôÊ OçÖ"ryj6‡ÓúÚ_ ¯ùZÑÚ‘!’òCØ:*¹)([þ£?«MB·ïuùØï²Ž»VíŸøí·×‹_xê¿€zm|…L±·~QoÙ”:Ydw#Ð!Åh3s«‰GlýÔMé$¢ÛIßH¾"ß?®³³*½JF%d ¡›KVé¹[šœ¨W½³ üÙO?‚ÈŒÈìN§Üu40+ݢaEùd€$'*ˆëWfSò‰í8— ¿¦¹`Þ_í¬×ô9/_Xðû‘¿,™÷ð‹ªäj½)9Öì ”õ ’£“W×ä6:дw¦ôœ¬€›ùຟÓHø T‡tWæ†'9„òOzAò–Jåþ2[¡šÒ¿…½|ùЯI) ÝZü›ü§=è¶-i5Ÿ *@åÍ%憘K·¹•Ÿ %1€†è&ÌÉPiÊmwªö“K]è&®•ïiþÐ.@œÍD¼Àºßl}ú…¥`¥„€kî;;Á§RôK@ŽÒƒ÷ÉRÛ:õdòÌu™5Sû°dʤå¨E$O‹Y•MÛ|Í/½=K÷½\ÞmÁˆºbnu/©¾¿Ýt_I°¯n¨¯pWù,Þ|‰˜ð§dgùiãÝ4´Ûu–ýøR‹óþaÞ«Æ3êé5”cA%É%ëK$1 årÁ1Ûv‡3C`ºrG2uÒýZÈ.«”ÝãK>—Q;Z9 Õ°Vù”j”*_\“Ä*mí=‚ z3òÇ,1£@ŽäŽÔ¹ÙX¥<¨ ›RI§!çÎ!¥ ’×3zc!<øs쨑ÄsJ¤T.a*fé €lNÇ#¯ ýÊ'ÌWU§¬ž®–p6ºô-u7j³©'TZ°mRpƳhNÑj8zeã¨îé3”…–ChšÆu5îP‚ÉcH{CõGZŒ—[(ÈWž €@ô—‹bó°å<;Ï0”ç’M)£{Ë'¼!c€ü\ÚS6ág€öžT‘Ÿú‰ÕÂ$9öçÑiÎíhYàÖçsuQàöbÇ7–žÿ²ÀîwžÝß=þ<¾ÇÑÖ$7zCÚÓr>´åO¶¤FbѺ0FøñL6þ–ðíÌï+žÄ&_.¯`o'[xO'é$° ÂÜhà‡>ŸOóûBŒPžDñy쯣_úæ=œù!7®O§uÞÄ·Û©ôé¿ÿ¥ÊIý¼ PÞÖHò¤ë¬ ¡ÐÿèÆ< 9ü°Û‡DxÞËG)? ©5"7·ð^Î4ŠúŽpÐd>XÒÖÇx”£ïɱ'ÖØÚ±š2½^¥ý ýÇéäz0ä¤Ô| –š'—"X™v¢£Ä°Öåü‡N–û¦ñIs€H3On™Ÿ~•¾¹&Üq-Ùš©FŸ%£HOòªH©$bˆB’l‡?êÆñ On¢DY$ü°§Ó€"º=SP\ìF:ÚØNžfÙoz‡)ºýöÆ_œáÄ:Ø”~,Ä=\Käžà1Ê;/xØD!_¶¹ñGËJŸïy2ÛnR1EGèdõ¼µUÈ>ìǾ6ÿ&€Ñ3!ïÆäb§©>îëʶS8~x«Þ ¢;Y:eù5Ü…@ûÖš¶ùœä²õèÇßfä_ØdÎ8ä.¦Ÿux#ÚÒÞrÑváÕ,úâD›ÈÑB‘{#²ê¢ÚÞÐÖNI!ñºyúY¿:4òëËR"™}å­e¯%KØ2Š……ºÕ³…‰?2#ú±ƒ)¹ÉSÂü/’ßDIŠé‰cF'-ªeé°œmQʉƵt~ôÌ>¾ç$ÙU:ÑÓå;ÿ]*xø‰’¨˜ckUÜWå›ê;lœØšš˜íœ)ý¦–¼J¯Pyà%¹(,ó°_ðKå|¦ÍU‘¬<Y_a3bKÕˆÙ´ –¦’?±ú'6N/‡ÀðWj½CW+2“éG/p’XãŒ]†…ØDŒ'ôúÄz> ¹£R“Ú^\êà%o|†Ñ†¥gTž‹(ɱIØYÀ PÂUœS³Ö®ZÂëà_’Oïpw‡7®>˜N¶ê…Ø(,¼d£¡žº?'öÔNÊQUEVލÞÔ4! *,'%\%.׿‹ž 75+˜øY“(¨*÷i³èh ¾\¨¯ó‘û~˜*¹£È Òª ç§rÌh2Ï©—9ýª'è»B©Y¶è£xåOxqªÂ¡[X¥ˆÈOœ"¦’«†Ú–Pú–SÓ-´òU—ý£«^`Ô7Æ|7°ÖÒùŸÎ´æ*¬Î[ñJ;"ç´^Ú2‚pw*о]Tÿ•ÒG:õc·¥/U#s’å,DOÄ€shÑݲåné³èÜC·ô¦˜\_a+X÷úMíƒgQˆ>~ýír¾ ü‘ô Þ­íóÔò™ V¨+:Z·ÊÖÍsFDN¡ì¶8‚ÈA[zÊVQVˆ™ô"ª²¥Z‹¨P]Aï ÕC¥›Ð:E0›‹ gŽ2H~ñE>I2F¯Ø¶Œ þ£¨K]dHtRQœàl¡¯*êûvMŠÉ,‘ÇIžQ-¡`;v¡H&ó]©5¦i_†wTj•þhª£Ì² 2ó<ŽÃÈJcÆ‘ þÛa © ‡‰Ùd…$N¡ëlɱTA6‰ï䪧­p\¿ÚW¥‰µ]yª´Ž==‘ Ee¢ ù¼1Ù0Æ96èxI TΕ»§Þ@Â…¬õ/òÙõœº,Q»—œÃ2×[mø¹#FT7¾myš³¿ˆ¯) U2ĈYl1b&sŒ¸…EFû) ¼Z·T¤_•3b>ûŒ˜ÅD#*ZiD±²»è»ÙµÎs˜bÄÌÖñuLqe6™rSCe£Š¸ßö:1ïRàú¶öa™ -*HÄŠ ølRfH[“YŽmQjQ¥–Qh<¶ÖåiÅ:ï±UòÏçÔb€ô»£<BÝo0}io0N{ý/œÆ”“xõ™µ™'K¨.&„ 9s”x1GIÞãÍSWÅôQ¯ãú¨öm½FôQ÷GÅjžL÷ ™’σfê'ÒL­Ý/ÍÔÚ«fjíA3U¬™úe^ÝŒÍÍ] UÝ”­ÌñtT¿|Õ󯥫2ÚªRD8ê¬çê¬ü<ÿ›ÔYw'‰9[í¼c±xPléçA±Uú݃b+æA±u[¯+(¶Ú¥²"¯Øj/ß_ÅV;yPl…1W¢ØjWMÊ$¼ýȱOçÊ9›’%–ËðbÀYÜܼƒ…ñæ^Ò#>xJSñŸñ‚»«&eÀ×/¸{ϧþoÿüÞÔÿ}üä¡þç<õêǪÿûvÙþo'ÉÊ“\ýß•‡ú¿wòȣܭÿ»Ži[·Þ¬Rôú; \‡ö_À?ë” {_¦ ÞÜÛ|[ UÜ‚¯ªý†žz ±U{ž í¤ÒÑ꽡÷P„¤ª¼[êWÙ:@V[6~WãaÎVÇwýwu%Q%&1+ù©¾™x‰Ö³óf:™Ru5‹ªŠ/s1¶¡x§L§*ÅÇ)U’en¯Ï.L¡[/ /Bú‘åZð•!¸%6§üÝäK§ÐË;G¢ŸR„ ¥—@ޙꚦxÊñîÕÆáZ»¥kô!Ö`€ç+æNLÙkêçãÑ•H{ãA–r})̲y}Ú”u9ÎÚÉŒÆ PUãÃBœ'$û› ÑØT [3$."â\"â@ÙüíÀGðß ‡{Ôá”éác:¾ºž2`*Ÿw–NZðŠÊX‹€¬Ê'TB™R´è‚g:m=Š¥í­—ÙÅ­dVP‘‘š¼íâw*f©o¿C«L_ö zM™¼4"DÈ»Æâ€ˆ6¸ð4Dʹ>ÆWÀ(þVÕIÉv>ûï¿Cj\l¦p;glÙ,{?ï³O*ã±J3K)1då&ûiSêäÚÍB ÐrŠÅ{žÈpeXÃôæ#üD”»žž÷®nUWÂDkÔ ÈàZƒÑèƒè]À…S`•iúþ /¶ß3Úçn±–¬Ì„2n]´`ÍÕ΢­…ÃȨ(šÊa¡™´„54üºbåVSm•o…z²vã; î®B%Ef¬…4a£ÛÕùr»Š¸VsâÌÕÀ\àE`“ý¬0ú® 6J*Œ¾ã£Xê†ã az?È$LK3œl…Q„ uåH›M˜ƒQ­>d\’oåÀPµQŠSfTNM ícÃPtÙ;;û²H;•ç”Ûˆ)¿†éˆ{§p$kdàQYŽŒ8e  ÆËo ½Ø."Ü,8øª}Š ªÁ#ße²BZ9|uðçŽb¾^a^¯v*þ<ÅÓ ø˜Sˆ›À`~aÜó¡;†)| ÞÄ8l²¯— %°âïà §Öåò"·|'¯„Î4¥6í»o7^Èf£áà ö‡ … '²¡«mŠD" ×…fµ©ÐÌ\«íá[YëüÚf({Ð #DÎCÈ,Œ¶Æ­iËÁ˜ƒPL¶‹H»‹RTb»Ê¸´!¼³Ñв¢9–UÎA‘}Ì>QÚÿ>Êÿ"ù-A£E†ÿÀ;F”J`®šÆ)ÓÕÙŠJñMc3µÛ·¾Å@/å@í<3U¾L¢ö¥n¼ºª+­öGCo#ê[‰íÞ{8Ýac¢ˆ²‡õ)ÄÞþîõÏ6J{O×dAHègVTÎ:GWin?xûšºšÏ—ñË3úþüœöÓ¡–=rÔ…®dçr2}ÌV6úˆµÆ¯>²¨Q§JêêÁ›·HòÿNþ’‚òÇŒžƒœ©Ú9”Uò?|5€,ÞuŒ¼wh»"½J‡éXŠrg×c±K…'¼FkÈi¨̵Gã‰'èÈ[Éö„ b}ø)€ÛðÆÆ†8÷†“Þ™¿Ñ¡Îõt„béö‹EDâíhÐ+á,µÄ3¸˜]ÃÎMžÿò¼!>~Ï?i>{’è™·qæîR[=CÚ8?Ïp‰¹nñþè‹$»S£‰ }ôÔýF>§éô3’2–ÜOYÄße2ßë”Í(ë|ü8ÈÎd ØÌ~?‡L\4€ôqbÖÑîf÷÷æó'­å'y:|B­H¢6’çÐËÿÜ]¡»ÀM{·s²¾©rÑKÛq ¼Áè;x´`ž±–U©’g—Å+ºß¯•€]c@5UaOvÀé\%> b"Eô"Uñº¿¿¡ªxÛŠÃÝ=öï¨ç~ìíħ´Šµrॽ]Îõ¢C%ÅIq¥²ýã7ûÛz© PÉí×UK,²gÞƒ¿ö,(ùÍ\N•[{C?äÍ~¬µ©úÜÁÁüóx¯¨Z™ë ÆS­ [¥J|ñÉ8µõ£¹E1»ƒ?öƒó++Ä&µŸhulÜ&~±•%–—@t„ O>5(-D ë¤B¥«)^ß0› )PÉHiup b§I—Tº‰#_Ä •¼‹CotÇû·Ý'Q?ìÜæšcfwË#‰¦—|ußQ燶àE±æÛèWwíÍ|ÚœB“²u°ã>°:‚§Äo„•¼èb¾T¢$n¸ÃC ·¾¹€]ÁG¤ê”ƒU ¼¤ 1°h²A.ç¨ÿ\Ô%þÈ[–2™¼#ïXã-+ÿnU Ésù þ„o¥Àƒ:qŠÇl¡iœ»M‘H©ûšaÿao0ýþKXdçKíD¯ê¿ÎnNÞ‰bÅ8ºlL¬4=òÊ™e9™¬)}ëƒ`õ¼µ`¨Õ ¤÷C=wsÑûˆš2YJ8wnœ”kÙ/x‘­ $¹ŠÏ=Ê‹ö>Íùs¼úB]íI) ¤b}HÅê >§ƒAóÃpôï†=éáË<éB n$pùèPšVôÛ ¤²ðníOÚå~Sµõs{ÓóÆàÇN¡4N¯zÙ‡€Þ0ð(E–¢à|iç#"šç£»„òDâ×ipÀ#f 1p¸BëJÎar(1jm*Ô2™eƒ¸€«Êùõ˜Ç{Ô«^ãúƒì‹D¡u7§éYïzbÁé ¿x¹y¦„\Ä•TbÁå}†¦¼b o¼œ§cV(Ùpúò/vZ⨆儹¼£¹fÉ${Õû_Ì/µsäº1ÎQ¨ñ9B' üDYÄóšcñ¤k(¨àðú «Ïäwr¯ïs?å’^èSÖ¥qyå&$A­±Ç Š…]ñ¸ÙåLÿ^'©ÎnFÃÝ4#6â‚zÛÐfkiÜÜ‚½ ø÷m©ýyœÛ²ƒ¼Û_`(~(p¸ùã‹jΚñ…!þ)둨ZiÁ®Bljs:§éLž+¿°€„[Ã’¶¤®0WH ³ O[$<5½Þm¾æª<ƒÐþ`‡S¹‹«ß¢"¤ ‡þ©Rúc]]Ool6HI{ÔÉ.Y ô¨xH$Î×Ä£ÍGŽõ£ä˜µ2ò÷ù‡S,5°Jð‹dºx/q×J Ð[}´ã;‘Õ ´q73JÝF’}ꮽ‘šz…4±ÇaÏ›Œ´—o#ŸÁ¬eaÓ&·•P5»K7ªZ΂ÀÄǾe¯á@âoáÞS¥7»zÔ¸­OÕímé#h/¼#+lˆÙvCÜurÝøWþ÷»NþW<ŽÿçÇɽñÿ|öôÁÿëNžÿÏŸú±ü?¿Ñî/ÛÿOŸ%ËyÿÏgþŸwòðn÷ü?÷Â¥ŒdAxŒ0ߣð,ÖÏÇuÌ2Cʨ?½èÚëÎ~gͱ´¸˜•èFܘPÈ~Rà5J«2‹·h†LÆRè#ÚÙ“.¢'µ½C÷dY«‰@ý—Ô£X®…Ò«HcUÕZšÔOÂNëÌxU:ñC~•L–ÊÍ#àÚ¡q:RÃÞŠ.äï(Õ;v¼É†D‚œãª%Äk„Cë§Ã‘ô{e½áQAõ„Z{ؼ\ȹ$0Ê•KÝ5=ßÍb´¸t³÷nÄB)Ê¢‚EØ‘“ê|â©ôyœM§)ùë:NËRo«¢1X‹ã¯âuzh%Ô’þ¦Æ+7@oCÌ,þøÞ¤*T{¹‘ãXúð(§½>È |rç’óµÄ€—Ò˜ ¾hk¸#¥¹êŠ3¨Ç÷frUwí—0+É ‰i5 ß!ì 'Ïi⪚œï欲#mÒ;?oê ;NÀÚƒ6 *„åúívÕ0sÀ:âšX§œªƒd6dÃó Øÿ a!/s«áe8òÁiö¦ºHv«©]©¼XåXeiibõb¡uf¬J‡d¼AÚ{-Àè9™Æäú ó_h[Û ~¥€H‚öR4?ðvø€Ýëi]ôúDB q¾‡qR¼A™÷®{Ãé ûþB—æý¢N³qÚˆŸYÅuµ8LR¯mYðmp¼çT›ðÙ~Æ ÕPæ@_áÏÙàð"=ûÀ|E…¹Ù¢6gŸÀÈ–¿ÓñHÀ0@ò†;¸éÔihŸN|e:cÙšcy‹ŸÊ3ê´‡®ZŽ×o&ªÜq˜M,â»ùwòbø¦Ú8¥ßôtn°ÛVïž—H0A‡×äßX¦‰ëß›ºˆÒ¸4]¦ÈøH:LÏñBëHBOè~Äþ$—"›Jê0&¬ò­]Y&ÞÌRwù*÷%’(ø@†÷¸Ëà,/è¤/%5Îë´&CB¡ÐèosÑû”š±(ƒN﯋ÿpi«}ü¤ÝjQ½VÇæ0à6"q1ùK¿ v|Á)9Ž/úý( _É­†@<…¬Ìá–Ò¥Xùî£×]¥éî ž*onʼnèê>䫦SDíd*á]é5† ÚëøÕXk 0`¡˜Á%KŠ!-2µ¨ñGÎ`2ÒA9}t»¾Âq™J|ÓRî5ëMÌêŠ\üÑ¡ A™wT†e`xå9 Ö05:¸•RÃöÑp|ÒëÉ8b&ÓÞpÚ`Þ.•–W2B¯™Sj^~5QïK­„ÌýÄp©ÝáÜ9#UµWEcqŽÝ(95»Ê`ÔÈAzBÓ ±tt7²nÜÄÓ…Œö4Y¤"l^æ†õc}]_‘‘×T.ërH¬¢ø×#lù¯¿D€Ëk~}ŒÑ·X©´7LG×eU`050×oùL;ÎTÇtœéŽ3ê¸aïé0S'&¬[)ÊΘ…³(Á®’sÃ’î~jñp`á éI,¤ßWªBŒéÍ€¼hü¿sE'Zl»+?Úå㿽¤<Ìò,˜všµH»’÷Iu—k/͵ñJ÷ïõI/.ãk†‘y¬¬3sPhDŤwžâªRfaÅ ’¥ÝÚ,½¢_19ˆLjïòæî ËÑ„ŒDC=¸â*G/+ @•¨|‘þ|’ )°Î@诤bEòƒHXÇΛW›kŽ?ÆÂå¤!S68uo £!6)ÙæE‚è”÷›Ý5“øÞä¦ `Œó 6Ä«ý7Ç2_ gE¤ôhðÁ/«‘z²ŠiIO° %´›:(Ñ'^k¨ìãïÖƒ99Šâ'˜£’–˜Zï0¢¨øfë;ݵ×jánqÔ‰ådë@t ®á ¢áu&ƒ7ŠBMœÞ PV5Fº%lìƒÌÒÐ1òc}_-–„“7dN[4ˆî¢Ýް×å@g:¶¤b eãã¤|íJà@$"±×…,“ú!m’#*ù€ª¸úlAy†ÒÌÇ€v!€%`ë ¶YñtõNpñËâqø¶®ÒõrVð—ª,Û©=Ò3`^dZ¨j±]» eDÖMØ Ë-ó>DÙ–¯¨öø¨¹)Ô‚îZ<¦V§»ÞâÜÁíXuj5–”ByFëp  '‘éÔ¾µ¾ö×Âk¾V4„vd„¤ü$¶ŽŠ@®AJÊÜýèÏj“Ðí»E]>ö»ìbžäåhû'ª½×’‚¿ å_%?Iæ:5ñˆ-Ù¢é8áŠbgá?®³³*¿ˆ/FQc ¡‹i¬ОÓ庾]õÎ.ðg?ý‚0rCª(ÖŸq°±¹îèŽdŠê—’ŸÃŒ@¾„è+³[d _•Ù™_ÓìSpîtV;ë5}«œ¿~?ò—%Óá^+QÁ[­7¥Çæ 3ƒ®":‰¸†ÍdÚ;SÚGVÀ}ypÝÏé l÷ñ\yW¶,¸nê#« È>(¤9¹QzÎWBXrpͤo0eGO .IAýÀ?‹‚RÅ&^ó‘\AÕ]µ™´ â c³¡"žM´º¸™ÂÅ»8BöÖµ3«YÛû¿râZN[›)“â n•ÿJ[)érE€-“øRÛ:I8;/ ZìÊîç¯=”Õy"ô‚íAŽ_·v6Z ›ŠåØ×¡,£cÂzÜ”ûê{zyI¨ ]?´;¹¼»¥w:Â\@á ÒÊ„*‰4µTP𨪤¾µ¯ù|Ñ™”ßbáüÈm/?2¾ëÑ^!ÄKûþÀ5èü.æAïÇ£ÏpKjQ¾Ób.cS4ß™0ÂÊý/O¹íˆ+[ØÈ-½ 0 ì†&¹mä ¿03©RTá© &ˆü`|‚NsAósÊQ™b^!åÏ¡b÷¾ ¹ûÞ³û»áŸÇ7<š„ä®oH³Wn÷‡ö?Õ_Cú[´n²&A ” „},…‚ù½äœØ´Ë§ÒT¬æšº!Á}П°õ¤!ïSûÔ^Ì«,"ç~¾´ýR„¬Ùÿȧü/?ä¦÷)½Î àv»œ~¨*g¿T9òŸ‡²qxGN™']—, « …|zسC"<ïÈ£Ô1ŠÎã-NLÞÙÐÂpêÔÀ„cu¬ ¥òèÇÜ“#N¬[e'1½êUÚÏÐÁxœN®ÓIN¨A â& sé@Õ6TQOÙtb{õ¡÷€å—iœÍ RM ²ðHÔ\ÉÔÔ¹dRe­ê™«q-Ù#•F¯&³ÊàIeC,¿ìÂwÆ£ Od¢Di%ü8¿|}eá5Ü·­sŸ/KzSV˜´JµÔ*Þ½:\Ê4RÇ´¤ˆiÕ ¦ÌÜ’|ùÒð‘V¡pé¬UK«—,¡^éרY™,ÖbÅôø©X¡ô>—£Œ~1{‘Ê*»bŽš¥3,oåg(U…’cïÓ(3R%;—’‹<²€]TŸQÌ\é§jëÙœmQʉƵØ~ôÌ>¾Ï$ThD9K—ïüw©@⧨”êÌ[«â¾*ßTßaãÄÖô¶å_uí×Fañׂ¯di.«úê—|M–«•U¥Å^•\øª¤lAX½À‰]þ5”_Rö$Yˆ-;ÄxB¯O¡çÃ;*5Ul¸^@'r{aFWx–žQy.¢„Ë&ag7@ WqNÍZ»nh ¯ƒI„½ÃÝÞ¸ú`:Ùªb£Úá©ûsb/Ýè¤Ü…PUd‰‰jfM¢ ¤d}m51×%‰ž È{ÈÎEaTòwU“nøaÆ'Ö#o”&oþºô `a¹¹eÒ¸Šª'J0ȱØUöVD]’YNOšÉOôlP*Ÿ¦È×Y‹ù¼D ñF.Rú™i‰( LEºñïÖɶJKD.6Á%R T¾:'~*ßð†'õZQ·ÞûzKæùßMò^C 5‹ ù^Ý’-k̼嘖=™Eͺ=7) d§öè¥~Sûà™ ¢Ï‡_»œïb}$ÝŠ‚7_û´³œo¬ °…¼‚ƒo«üØÛ²gŽ}8þ±ŽY1ÍòÝ#¼JOyßÕò/.Ú×àIpMIcš˜'†3¨d"_ xÔ¬è âVȃ7‡þ¹(jᘎ÷éBsj'ê£0æ¾¹ú¨]hÈ™³ƒ½öù^9ÓP²Ä2Þ8m˜›®0ÚKÕÃGWiÂþ3^çuÏÔ ~¨óúC?Ný×qÿÞÔ}š<Ô¼“ç¡þëOýXõ_¿Ñî/ÛÿíÇO—sû¿ýdùaÿßÅ#å·þëþºŠåƔޫ ¬Ÿ±³ÿ`:«ÎQCãßÇ3–t]i%÷»¨+ë|gü“DÌõ +ió,•`‹‹¾úçrIy”g©îºQVÙµÆRuWXqYçõ¸ÆC˜­Øëþ:ˆ­pSH'0p,@1‘:s)Å@nwƒô‹¨^a œ¡©QÆq÷æ øX‘"ãÐHre ÝM¸ØE6¥:xTîqé›?Ø„‹Aìpäœ]«ŠzÄQ¾¥¯ŽeM% K% "gÕY·Í/ËÑ\yº}]ãJW±r‹îyÈáš*“iK‚ÑÒÀ¿yxS]r3… ¨¦ÇäšërRÅ>¯R_ Ûól;NÕž9†‰ýç:³ÊÅyÔ†b‰¦x»ý¶8n ü®ˆ—Nu¼€ YœIšk`Qp¼9™2‹¬/dÔ×X þÁ…mÑÿ^ÓR/&zÿb5ˆ×Xª íD¿ÀA5úæ¥ØM1í]ÃEâþ÷Šÿ±jWâ7t±UצI&žOîW2Ù=òHð©–I37®e8Ô—"ùüN•謺ß#>ˆ)lMV­[ ·,:÷qLªø^þ²ómPœ ŠÛ‚Oï rGr r3Žª —¾!×.cé³^ÂF6½çˈv‰óvð[ž$Þ®Pþ¢ §<ºáÒ=ËÍååAô*£$&– p>4Û¿íò ¾¼x ÿ4ÅÛú1^ž›â¸þ~±&ŒG‚– 4ÒP›“ ×X­pÊ·<Œ¥èqéM׈XMq ñ„P y)Ú/¸ ‡ý¾áÇáÁ/=Õ`¥„ùïÓcøï‰Xp_…Fý<À AT€Ú"Š AAÁ†AŸþ²WAÈn a§¶l‚„R¡'Ü’¼}ÑOáV€%,s‚aøPÇŠ£òÞ7~óÑ8{Ÿ!¹T]ìëáÙÜJdzñ)+#÷9WDâzmöäTt Ú£ŠŽ:ŸªlXṮ¦Ë9.Ë’Œ™8¸ÄcMy¬òŠ,YÓe"Õ;³Ô~Œs<Ž#¢³³÷ºè`梪Ê߫ݷ ÔÑÎÚ+þ¹ÿû+øIö‚Þf¯Ê«¢©,›È­òc™µ!— —,¨ž'äjåÆv6"åÆL£|Á½€ËÕ>íÿÐ…ÃURÚþ \õ ýsºì© /.¢¯NÓuÉØ<–ÂzktWÝï°n[qÖ#>âHP‚“<ï‘Ò©-“G W<4Ÿä|GØ¡‹¨}Ã7I;N[ÂÙ>| ¸&uG|Œ£â1x—À4‰g@Ï€€M‚ßÒÒ.ëY2 $âŸ~‹Ø/I©w:·™õ1ø¸Â´ó=Ï9ëò T'Œ€kSfaÊ®Wé0E1)xKe©¥¿á0»ÈÄg=Ìed³åªSÊOäÄðçDZ-••Êñ¿ÏäÔLŽŠžŒ®RqÉ:SÊOFÍÓ)Uˆ%Üõ¨r3Àú”RÅ’Ø m¥Æþ[Å#Ø“ŠÆ&8…ʦB A$Ò€˜Ë,¦¥ÿˆª"DT£;aþȺث[%ö}[³ï© Þ{‡Ö{Î^†÷c/­9/½v^ \á幃Œv®å‚…¡ ¨þªå ôæ1ÒÍ— .©ßñ‘0Çx‰i“ù‰ãà)øCüûæÖŽk¯“ƒ`$ã7BÓãwe¸õ#·t˜oy…\Á×°ásšª}frÊ/—;PA.²õ\q2øúo2OHÝm™9¦åÐ=£*…²ˆ! (Ž«q4”År5¯Ô¢®‚a,nl8UÃX¼ÙTŽI ÎÆ˜ ':›‚øž‚ ÅŸ ñkmÂ*êO=½š.rø@sº7™ÀÑ—TÉ7Œ3¶KµºªÏ›U—5ÎÞ_`2Ü}”ì3*Š…b\'Z“LÓ¡rùÔ§¬tÒSžþœ¥ P"äØoÄ8ÝUJÄÜ=3³ÀèLhF¥qYnÄ¥€rÚëu²”Kmd¹)ÞH3½éc†cu<ºÉ®ðÌŠTp¬+V«ß›%ÄdÁ5mÀ¬äéB§@Ã0rwГ‚º*:jÃpv2òwíÕy~ÞÔûÊæ—MÁùlÉÅ!ИX>¡Ã¥aê³_Á%÷Öûq (»²­ƒdöƒÎ†è:ýÒRð…lX°áË C4‚Ó*ìMu‘ìVR»Ry±Ê±j‡$s/ZgƪôùÇË·½×܈SuM®Ï0ïáùõ€¶µÝàWjˆ$h/Eóo‡ؽžÖE¯O$òû{'ÕD/‹q¼¿Ðeéy¿(ñà_œ”ŠÝ„­›Ž¾_Ђ<ÇÕ5¢!F&±ê„…¥3ΪŠBf¯d¯û³‹ôìóã&)ÌÕ]Œ)·úíÿŽG†W™ñ##kñ‚;–pg‹îŒ/+ƒOÈÌx‹Ÿ¶˜ÅöÐ+´7x?zq%ý߉ÑäŽðlbßÍ¿“ÿÐYÿ”~Ó_`_—ì`Ðjµ®ô!Â鿼&ÿ¦ê‚\ÿnjþ[Ö4]¦ÈøHÜFwì”ב¤H–,ÝÛfï÷إȦ&hm4ú¨BLwe®sM0KÝå«Ü—øK¿ v|¡&xI2 |ÑïÇõÕ·ñ²2‡[J¡P•²…ɲb‚nò€à))O,¹‰´& ib¤ÑÒ¨»*xÈ}¦ÆŽ^¸°Î!‚2ƒ7²HàH09qžöère©Í6Ï¥ÎÅ\âx8>éõxj(9L¦½á´Á¼]ªŽ8ŒÙWË5Ä)ô*3ÊYʯ&ê}©ã‘™%N"ÕeœWo¤jeWRc7JNåŒ"ÈAz˜5¡bé˜ýØRaOGÉ’Ž£2Âæe–õܵÆáðyMÕƒèü[Öíýë ¶ü×_"Àå5¿>N1}ÊõV&]O@–UI7§ŸG’ë·|¦‹gªcòßÕgÔqÃÞÓa¦NLX·R”1 gQbBW.ɹaIw ?µx8°p^îÏDÞ½~_’çÒ2 /ÿoÄ\1¦ÛîÊvù#Æ8ü´ôY0 ì4k‘v%ï“ê.×^šk£ÞòßÙˆ^\Æ× #óXY5fæ ±@ûyÒ;OqU)G¿bPÉÒ.Åb³déý:ÆI‚P'÷.onJØQˆî$Ø*`¤`).ÌMž+‡ÇÊxRq¥â­dd”Š‹âØ*YÅ`B†-èãeUÀÌ ¡ „ußàå¤!S˜78¿l‰¸¢ §[ S2f³»& ÇÄñĹŠâÕþ›c™ƒ˜3-SÊUø‡ rzÐøÄOV»ëpßÇzÎÐ^ö0 QòVNæÚPÕ;Þ­íPu‹ð¬~Ö;4®=GÇúNgwíuC¬¿ëÀPã!¯$Žç:jÈdµ²u<úËDÃëLF‡`Ùí­eUãçÖyN6öARièp:ù±¾6‰Û«uVÑ^Lk\’ !3ä£y „p4›a u2Nb†_NôÛ®N†ˆze¢`¤Mö]=¨I[ù ìü)ÎÁ|lhXF±Ž±–‹‘@Wï?ö§V†îèªyˆá“ ˜™ªÔy×nBõt6[s ŲQ¢åK*;>jöí¦,nAw-S«Ó]oñîàv¬C%¥zP:á<“ȃt ·[_ûká5_+B;2BR~[GE W‚ %åðèÏj“Ðí»E]>ö»ì¢ßør´ý¿ýÎzß ´ÛTh%Þ×3õ®YB¾êÐXç»%çMæX5ñˆ½5DSz“èvÒßÒ?cìÆ‘X†²®oPW½³ üÙO?‚èŒÜÅ9^P-: ÌIw$Kf¼”gÌè$2PAì¾2;M–P•&ø5Íj0¡÷Ngµ³^Ó‡·ªAà÷#Y2îáEUÂÕzSšov7è*¢1KªUÎó®.3Å, |ãdÅܰ×ýœfÁv´ÏU5regˈîØcÿÇj#㌷"uL :\ :¤Uy©×H2~ÁIA ø|Æý þ.0¸¶\¨Sp€\•ŠÊP¹C,ÈRo`uízjö¤žSÔgÊæzƒ­³4(3.]–£`\j[gçògŠ×çrÕr9zaÁ"PüƒÚ6öË1—CY`Δkp ô¨ïéå%¡¶[ýÐîLärì—f×g¬é‚úBéhP|»ªÒÔR)ÁS z’úÔN¼æ«KÙ­„öD¸šBÛ¯¦ïzô…—Á¥H\Ëgs1x?}†{'fÜQ¥6‹¹€MÓ|Â,îÇx%~ÑM¼.Ù‚Dnñm€I`70Ém$oø…ÕàÁ«YnO UÔÉ. †_TKÚÇs)žK/‰ ª.YC Wu—^QKÓ^¢XLWn1&7º^ªòRNkÙ=¾ä3ÏÇ3TPÝÀ EÊÄ ˜–¤=i]Îð(‡w3 /ALã(Ÿ#u{½h9ªâ|îðù¨•P9®à(¨ÒÒF…j\RÛ&õ]KvÅ¥‚ùÝؼË%§ºc¬Î©ºgÀ}Òžæ÷ÄøíY•“Õ_Bkì?ò1û˹g}:­óþ½Ý&¥ª.è/UÎÜç‚ËqÊ<麬ö\X÷(ä§ÂÞ ™JÚé;§(•„b»GŸ(WñðÂpÄ=j!Âa„Nø ¥ñhÇÝ“£N¬Q[eš‡¨“Mû:ÎŽÓÉõ`:ÉI¨‰@ü4A.-¨ŠÀ*<*›Nlo5´Š#« R™ p9Ôà¤ì·àS®R¬Ö„;®%Û¦j£Óè—8à2TgŽ~1{Éæ*ÛbŽ Þ3–ïžoåg(Ü… ­>2#ï±3$¹t#_ØEÕŠÅÌu¿qª¶ ÊÙ¨œh\‹$ááAA_¾ìãà 1M‘]¥íÜ[¾sðߥ1‡Ÿ¢Ââ3o­Šûª|S}‡[ÓÛCוÐ…¥Ð Ê “鳬º_=Y®Vd\”–>W2sà«’’èõÐõ'v1tK]åáR±[xˆñ„^Ÿ8Bχ!w…ë«m¤m¼ñFWx–žQy.¢„Æ&ag7@ WqNÍZ»nh ¯ƒëVþzïù&»;¼qõÁt²U/ÄF&4´ÃS÷çÄ^¥ÑI¹3 ¡ªÈHU{š&[Ź£å -,—òˆž È{ÈDa?òwÏS“nãaÕŒÆçS#÷ˆ&oþº´{ÛÞˆ·°Xk?QjAvÅ«"Ò’œÂ°é`>HQD_Ñ(L¥ÉÏL+pɵf8ðŠ·V@FTUZòÿȯ€åRaNè…xêbÁK±%õrP¿Þ»íªhŸ÷g±°c¼Ñþ~E÷VËH¸ºÎ¢}]]›br}Ëñ³~Sûàé֣χ_»œïV{$]V‚·Nû¤±;¬Ë§yŠ­ò#góœ‘Ó¯zçŽ r•ž?Unð¢ê%^D9€(½ÊG%Í —qáÜÇ+]Ö)ÕÜVXbq”#ò‹ß8A £×hxÑ–ºÝa)™YºóG'Å Îúª¢#¸ow‡ØANq!•y¥æa‡x¶ÍÊ)2í‘ZSY{šÃÄ8hOôGS&”MÍçÁp ÆP¾+åóßSHáÄž9öð–,X.Ͳ·JJ+ä» ø<–ŸE§~hÞ˜ˆqŒó̆ÍլƠq•wâ+!Oš}7Û ¹~æ0Á?…ÊŽ|·èBY<3W–sïǯp³,ùñ² âWÊ™‡üx¦!Ï´Mƒ[QPŠ6£s²Sˆå î<#£¡æhºP ==Ÿ{l4Ñ£Ú™©ŽôíZþ"»žSS!îÑÑ)ª+Â…Ö…?ÍéÂEλÖ{<éì&lX(1+ˆ9NôJv1‹’]̤g·Pµ c#yM+ Ї¢²Ö]̧x³èÞEEõ»(Öb}7»:q»˜YÍ.¾Ž¥LÙ^®C®¬-÷Û#æ]ê\ßV1,,Ýp¡jX%%ˆ¨‡éOÊ4Ä" $~2ˉ-JUÅ¢T%, µÂÂV<­¦ÀŽ®’ô;熖¤EßM<'%£c2ÆÞ`œöú_8)#gê3k-²;•P]Lr8®#ñâ:’¼ÿ’§m‰©S^ÇÕ)íÛz<¨Sî:…cºkF6|P¬ÈçA±ò)VÖî@±²v7Š•µÿJÅÊ/s+V,·©8œÒWDo¨ê1 _¾¥æùÜ:˜¯4»çêš z¾§ºæNŽf1‡â¦wbŠ›ÅMäyPÜ<(nøù™7¯+(nÚ¥®}"¯¸i/ß_ÅM;yPÜ„1W¢¸i¤}ñá:ûcõ•ó¾$K,’¡èÎ)–ÜL_…±^â>xJÓ§ðŸ6L¨ò=¨°y¿·þçß÷§þ糇úwò<Ôÿü©»þç·Ùýeû?YNž=ö÷ûÙÃþ¿“GŠ^ýÏw5±Kº;&V÷°sÔÇoö·óU<µ;WZÉý®Þ À:ÇÙäà$ÉËnUd%›–ü d(Þ‘HE,Ò»F t–ߤBêô®ÔÌ•8ßÉ {®>³‹eNj»‹; t=¤7:Åbïcú÷(ë÷²Bø·è$¢ÓLùo $ØmÀ ò×nsg1yÑ]€ïA¢®‰}¼£Ãû;\ø«´7¤ä€°z˜ä€bs°|jÖ¹.ˆÊc/pEš£| È M°ìp¥Õ‡¡!ÍÑ”vó©öé…³t¢ª·Ô|Ü•x/)ì5¼¦Â°0ñÿcïM»ÚH’†Ñïó+ò<_@ÈHÜã~zΑXl±Èn ºißó¾}vµ…Äh1í¾çþ÷KHŒmÕL*#3####cÝëš&V¸S»]ÁÊv(Ëá!¸N•»“%ÁUµždŽN»=®|Œƒì¢DoF³I„eB®¬_ZMšõIz!¾buÌ’õøÜZfªª-w'@µÖHm(ªF•€’S¶ñÀ%ÞxÄÿPfEwºÜ¡3‚Áé’u6„d¡¿@Á.ê| ´¯¼4µ 7ñKŒh>AepM…9bëãènM0U§‡µeßïqëöõÕžªP çèf —ú_V¯T«œêÂ'Ís†_ˆjN'̳Ó“½f͈@ìñ~4þ4#,*Ð)6L¯~å²—Ví Ð’ÒÇ—3ÎU~)«o.ÞEÓxI%ÇŽžKðì»iµâ¢ð÷ñpô÷g,È…Yø›ÿÒ…5sa#¬Þw‰äÇ'±µ×&²(Œ,_òiúA¸ìY—kÙá“ ¤3XRË*cZd ›H`é¬ þMD‹(/‰[± í6ðÂô9Æj[D®XB&þ •y;ÔÇ.÷EºÊ6}€ÚrÂb[ÂÏÏø]»J’†s¦à´aÓþl}F¨ëoP ™™Î0f-ØS§$‡Y°‘ßøg0V)U1%#goð©ëZJ&\¥&æ5‚£, á°Ãaü1ôe,›÷eÊ‹¯W§nÕ’R5”Õªa+5$LØ·ª¬' ÁH[MtG,L÷Q—­vF%ç++vBkчO*0u¢&Y/‡?Šr•†kè¬!+ªLçÚªÊç{CŸ¸CY‘ mÖX¾)‰:ýãà?oÅ“L U´0 ج)%]"eK–9™§ÐI¨2G†{òîM3|î: Éî½þ*gt_óÏ÷ÀóV¶`»jp„©ÅøBèOezOGêf¶W(z9éÀ΃¦º8™Å<©('Ó×=Ô¹‡SòÙ¬Ùú÷×Ñëä…Pñ+9Æ´üT=8ü1ÜpPìÿI¦•¢Å- smW¤øS¦û”mÉ!rr­áX6ǵ°+@'½^¨YvÅ`Ð`aUud½fa¦yw7ø¢1€7"ª‘…“¼nMÞÐŒñ>¾ÖÅo×` è ÔÙlãhƒXH øMŽO¹µõåõÞ Q#ÍB$!V'×·’¢šù÷+Íü3{ýÿ?·ÏGÿ__éÿžäYéÿèÇÒÿ?ÒîÏ×ÿÐÿ¯öÿ“<¼Û=ýÿûÓ’èµ÷*Ò Ât»³÷›´ìaŵ:J {+ƒ€ó5ì½;מsåBtg\›û„ðS#Ø.Q°@4'ìÕJÜYöêö_¿-h[8ûˆ*Iðë5ª¯úXå=lȳfÝ úW¼ðºšÍyç´û^]·‰8ž1–‚u´ÌRGùAÞAÊû³÷Ý_éÒ!¿WšÉh*ÞÙ øŸTóN\D¹SŸ l™ø¬ ·˜SIÖíû..@];ñ>é‹ÒÐy!¨wºkr„mÙŽÒÌN¸ñ ²=•öÈвWÿGÔ¼±ÂÇhˆ¹Ýô¿\8˜ŠÙî‘ζÃý8žNI…!Þ­ï¥ôßMí¿";Kâ öчÚáÞú»F‰0Šd½ƒÖ Ž_‘ŽVw]ìy_vÕ—{ðå»åÙsö–kÆQà~óÀe(šC´ZŒ֥SÌÂŽþŸÈDÊe—Ó›uÒ›u×ü IJþ¬twÚžÀªa˜Ý»*Ì&6õ6„˜‚Æ$„]@c<¼³Jñ2šÞ#±µzÀø ÎÿþGlyÖ‚:óÁ”ͬËLŸÝ«ÙkTÄ|•ÁVJÈk;ÖH½Z>"ÒÇ5‹ 7åBÁ “l‰мá­P‚?Ù]h³Û›¤ÚxIJ7ôškù"·B<©×ß»³d<‹Ž‡ºlTsäÛ±]B“¼þ·ê]#ı§BƒÒ››¥¯q¦ú«Ûtä+~#_dç-3LÛÂû‚&¼ Rõ{uÇdŠÀ“V½9mli‹V*º‘J§‰5ýšºyŠÍSÐsò’ªR®õóY¥çÒéϯv—õ¤÷ÞÒ×§¿ÑîÿàZÖ{¯3kYÏ_þ;­÷þáÕù¥—©<ŸRA\¥Ø¯¾íV)`ñ<ª8kàÈ|†|sJ"[à=ÜðÜŸ9XÚ-“Úd\®¨Y³®p^¤†£jïd¼‚«\k{£á_³d2D£0^€ßœ’¦ºÂ­oŒ¿¥(ßqè]Ó5K)é¾Ò2/ îðþ±.îiºÖÛ(“:¿ñ_Ÿ3¬ YS•ù6+bS{‘Dâ1„›îyI#[é›´i^WÍíúZÅïf,>­èk§|ñ”+°VN#öðº~¾†Í×fkøÚ0á·Çµ:X‡‡âÌH¿¯´ÑÒ±Ý KØV½®N¸«Õ•=ìź:Q]iKI,À‡—ƒÑÕ'ÎOt«õ)ƒ#òñ¶BYˆ˜]د€.f#rué½»è*¾A3 ,-¹.»‹«Æï®§\&G«4I_åWž‚þ|í Ðs» høÅ‰h.ýûh|Íê÷ðŒ˜VýPŠÇˆSHí;¨Þ‹m¢¯¤P:– µ[ÛæíúÞ þÿÙÓ šmPI¡ý¦oàÁm(é[Fu®8ÊãFtÊÚÔpÈ›A­g Êò0™]a‚ sÁÕ°¿ÿ_üðC°~›Ÿ=Ÿ6Û}¹ÅÇ>;ºáèØÂðÕõŒ‹hçñèî(mWÆ©'¿Ú{Þ:9ïº{í^û-nìf»½\ÕaÈ/¡åh+ò­%èL/ºÀ´+2sŠÑš¦éIçvYna¥PNžUÁÜóé3ù³hÂN÷´ñ\–Ôe©<™òUz'NÍö‹R`±(‰µÒ¯ v«Úy{Vå7«ÍÎ~•?p›Ø OC"r›©dnZ_ÖÁ¼JIjõ~=¡_Ûob J©Q#MmjÛmW1df/`z‹d·¤â.‰5¨€qnJ9Z¿ö¶fÔrïHýr¦"ÙÉ–géãì²E>ÿw²šd¸–ÃÆä,ñì+ì|G8ÊJfg» u¶A„[2i ÛÊϹçåìµÓI~\Åo¨‹´6a=©òË–šRéZMÀ²†J‚ybrB%¼Ctd°|¸Ù–æže(#œ“Ý A´Û•¬~Í.ñB lwÚ‚€†l¾nèiçÒà†…¡œµiËŸíŠ(Ha£ ³­öEhˆnŽÙ¹ôYpà…§:f@ÑdX/PU=UÉ|ûWòg<®þÿÙøÿo¿Ü]éÿžäYéÿèÇÖÿ%ÿÿúÖÎˤÿÿÖjÿ?ÅûÝ×ÿŸ®ôÿEŸïXÿºÒÿMýÿ\ÚÿÆJû¿Òþ¯´ÿ+íPûЦÒþפÎ?ýhÙ˳÷•Ì ¯´ààl-×bêé¤yÐù-×d _[¦ÍàõÁé)üxs€ÞŒ¬§€ŸgÝÓÓeø>c†é¹ Wƒå NŸÚ`ÀPöqµnQ˜×rˆ˜Äÿ¨=ÀåA¢ŽÇ£!.½YÔN *‰Ð ?fú2AN¸ôŸåðLcjUOª5ö‘‡?^]­¥(>ŸØ~X4(äËéÀdÖÔœ6Ë~"æ0¡ߊB J¸O»¥ª‡uZ2ÏKš:·º•f$'ü%¨ÎÒæ®uFÃMÌõ§ìÈ<÷”£m¥ˆ)h‰ÈTÓòèÑbW^'Â'y³í6QJFm$­$?MiæG ö«0«±Ùn¡†|ϱñÀšeÛh„gç¡ü‘©˜`½ ž4žj&*{9Ù‹o×#ŠE†ë›‡D°ZA²´Ca+‘ð EËÙh'Ñ í3º}<|Ÿµä^[dŸ2¶ð>S£}Ü}6F°È^ ì3OAôH QƒZrŸe¢Nx;){© ÌÇL%e&¹f:!¼eËÚPEË·}}ë.«'ó1ö¿»Ë«ÑðÙØÿvVþÿOó¬ì?ô£ì·ûsí—Ûõ„ýogeÿ{’‡w»mÿ{×ÙÁº>ïƒØÒ"É%H.ËÕ…wöe$mºðÒåHÛ°åpe/<]£‰…’£sE铿^§ŽÆʃ%e0@uoJ‡Ñ¥ØjTDïèMõ_isÄçÕVbÈÛ"„yÌ“P]“OLŽ;`Âl•䘫nBT-¢É4¾í+ƒæ8ºŠŽPå,íÀ¯cÊð#S4•ذ… j›Xô®Œ¯öu=”7¨'›Æý!jÚà—Ï‘¸Žnb¸áEâ Hfp™MâáeÊÜû8D“O_¼ü˜­uFëd¿NÖéz+­°×²Ìå¬{¨ìRC=)'ƒ?jêp¼0Ï¥f¹\ÑùÖ³F0‰‰,ÝmÂËŒ—iñB”héù6üòòLi†À¤É±ÙúÙk´†Η°Ë1¦ÕZ9Þ/Ë$ÿšÌ`‚×qÿÃhˆÖü’+®Áϱê±5Ö†t¹i9ƺ* ̶d¶Üaæ™0[ž ó,ÃrirY‡i܆“Jîöök²ch¶ápÊ©ãý𓙿" Vü…¶8“bJû"Ø`\C¶×²%¶p;ÜŒè˱_k¬“yøÕ§ëÚF¼) Åž—bü÷%!ÿÚüt]þß_âÿý寰©•,­G!?1pþ¢Ö·ñ°4¬üµЌմU€󬦭ªăèUôC»ß@÷ºß óMQÂL‡Cb_ 'Åî u–\vÇœÇ2ÑæõW€«{;ÍÙ[A®÷Bó¼f»ó[ç´¬ü]øONûhCÑ)j=mèqDÅÃãéĈ[E™j)¾mM)vG!v÷#66T TR½Ùú‹CTA˜2ô°:+jû'ÿOK\®Æ²4öddÊOS[=¼–tÓõgZl¥ù…`®7é¯õ^ >ÂbW#TŽØÒ¤ÌvUþ$cìÇQÌÖÿžìNRÜq<„m$Íp˦;¹í¨ S:’ Ú pOЯ¨á¹ˆO`ÚUуl…+fÕuÛ|wݧ´ç#tMtfŠ…Î™‚k?Ï(ë ÂYÕeØcEØ ÛœÛ +ÂÙfq‹ìrY}‹lOÑ|š‰4ÅÜgúnkKÝV%“OÒ,•i¶7i6«‹1:¨©j¶ÕãbÙ6 î?¨¯«\¦ŽÆA[‚« áÑIÅÆ¢˜C×G‚€Þ+ø÷WcE•'»Ø$óC)D‡Õ#Ø¢óm^N€\§ª–LN \nyVðÔˆq¬Ñ8{ð0Sêܤø’ùfÇ+}U±¸³3?Žf§Ô±5oìóãz ÷ÿx`l(Š*„ñ2 •ÄPýºcTèTò‚©qÅ­N wË ƒ>Ê Óâ{Ÿ¢Ó‚†Ó%HÙ6ªœýÚ=[ÙŸÎÎøƒ!\95"Ú뿲«vì‹©#08¦1ÝêHà9.6„½dî×µð¬Úhc‡ꟈv±>õ éõ¨†-ÉÎŽw¼#7e-'ü⿜ÉÉÏTo‡±ô•&KÁRàßô»ÏŸ-ò7ÑÎu'['€o'ÇÖvsdÊáQ„f7jÉG—lò¾l½S ¨ÍÉÐ0¶Ñ6äZ†=[bá¬Ù4×Sÿ0â‹)WÑ<¥4¥?á>rã´ýÏZs¨C¤eºôÌ|½híä•ÙX5,ÿH)›e¬5Oº‘2i½âlæ@–[rÖªá'ŠÕ]+ ŒÚŒ(]÷Jí2ÚHPp§ß]£¿(;A2*ë>‰b¼2_Z“`:ßo ¤mÿßLVöŸ´ç;Õÿ®ì??öcì?µûóö¾ ØvVûÿ)yd:öŸîaϳÿtºozNà!ÿŠ?²R œìà ø*üsxÐíÂëô/ûeÌø­Úž Ÿ\KZ/Z¬/ú-O¸Ø%ŽØ;4¿.ï£+©AÒô§ü#þtG@…%žØ\&.Ø "¾EjŠ”F†mr©–ðËd‘«æH–sVFpš±2â^% ½E77ñUŒ©úͰ‚!$4T»G×Ã'i{"¢ñx4—£Ùðz"ߺúÛàZ~£ƒÊ41¨q?®MÇÊYТ“hñÃÚspÛÍ5Ê1æÿ‘&HW£jÅOÜä Ö|®€ ZDEU9† SÃÊÒôU-Mûwèš±òl‡Ï"x×Í‹¡VÇRWÔâOú·Ñ ˜w¹?ÅÆMQ±°ba™0ñ@,J4úx–Û­(ž˰aˆöƒvWГX†M’§Ð $×½p&Q4eòEr.nÖd}òÊéÀ™î®//j/œE™ôõ|¢_'AiÌ\,3U†”Ä ÊBƒmh…ÕOñþÖÑOBñ‰¨õÑÌós„ûɆr>)¥Æ—ÀOÙAjûF\œuÏTÂòéxfµ¹Ñ]N0áùˆº’rà_ÎL(zÖš Ÿf|H}hv­O iMµáh! ‹æµÉã+õu ,a†Å†°ª.ÂiÌ1Ž1YˆúÎÁê8‹ã dº܉Øpp;‚úƒ{ ˜éq€Õ9šà†á{›viy“XáÞ a²÷ñõ¿ƒ> ¡ž8 ÃpˆÉ†Ât%‰ÉHÚ”¯a^7ú€3»uøE£›eÕbg«Ûþ'L.’Èßpè¨ÝôƒÇJ·‡Òj,Ö)qùþ™ô5àÀFKRFw$EÁõcÌ‹6ÆÛH¤rý†a/ߨºµž™˜Þ ¡çö‹ØÑWË“}?¢›?_jÕÔ±ýž94øiîÈB`Þt2ÇF/¨Æ8!ì½=ïœUÈ¡"ŽUpáIEtÞ§Ïàà]ÞéuzìtÜ<<¨ñ:ý ‹àÅqúê«òqöÞì©-717á­ß «ùÅÏmh¥¼ f¿7Dúö¸õ›iµÒJ¿lQ­gsMºÓ$%‚*°SôåšEJ•߯7¶êKÔÊ2e£ ¨#:àH;æsædt‰XÞ"Eª§^ÖM¯£«qÔŸ°²·?E%=êZ•©  º¸žeNŠ@í/¼,‡ê¨QÍ© õ­Ô£©w'h×bÑÇ¡6$”ù‚vöûÛuóæEaIŒ¾u×Ä6|…{ æW:¿»FU±V¾S²ß1 àC?v=“…’›H×à N5×µ‡å¡N0óAmq’¸¤üä \^;-qêÙ»`¥ŒÊ?7¼+™ú%™§EvƒliŒ2_ûÀ ùIYTQ•í3¿x¯“ ³»È—B2 èa×=ÁnC‰ue««„tgäwŒ¤—fýp…¶÷ŽQ…óŒJ2{ÝyÕû‚¥p­HB›œ1Àe*UÏ,¯ft%C@òFfàà¶@pxPPŠåeÙP‹ZË‚•w‡À<ð¦ÈìCÊ´)B²i™"ÅK¡Ù’•‹–œ“Ž`o§~s妉òf‘×É1¿ô{¹â_~‡­Tœ8=ûßK9C¹}êq™sÃ`ŠL¡–:åDü·aÐïX9øj[)çf´{ZEμ'ò’ïÙ/üZ­…Ïáæ “$³N4Ê&–tRÖKÔR¨‰Ÿ°¼¹n“D­–'m¤ÄD½&x­K„ЀÃO ç)>üzÑv)÷¥\a’œežœtx¡˜2mfÖoëc;!.×Ү⺠®Ê–“û;”íCêTjÊŸ&\ý¢ùý…lDs@XñjÝC£5ûîâ}üÇŽÿ™LožMüÏËUþ§§yVñ??ôcâk÷çæ{ù²–ØÿõÝUý¿'yx·»ñ?½³ÃÔüoß}¬Îcç{S½˜îRj–—ª VÔ¤jƒ5¸ÄÓ´2Tv}+l^8I›Æ™UÍ—ü:šÄ†lºŒÄl¾öW˜bY:fPæ¶÷oZ¯{gHä 󦑿?ÞˆÉ㻇þß=uÓí1yY#B8Ê‘ýºñ«ûø½ê&2¥D~Jš<Ï®¦³qôJQC¸ÎñWKQP§¨l—»€»?Çîg´f™r‹€†è§ÿ¢Î~ '¤À j3ܼ]Eé<×(7"¦¨s{"$ÆumŸ+8Æ“R&KÇ`4JZpŒ ÅóŸ/8ÆÑ*>ÿ8{(0 ¶ó“M5û ÃR\¶iCIòcægI‰ÃÙ˜ÒíGÓ~ÂH<€x9îOMè9m¢¿û8Qª$6d&ú‹x‰Âºø¾R©ýðš`±ÑI­Žÿ4DèÑL¥Ä?&u|¹ÞÀ¶ó^æ |¹Qìen±]òBÞÙÆvŠAÞÅ—áªÿìæ½Ì-^âË/wñŸ—êdn»üÆ åƒM|=‘HI&ü*šž³ %ÐXðŸ>®GQÜoÀúÛ0‚þÎKûZ2Z@†¨ÁìèÇËø¡Áõqyû¸b}\„þ6‚ÛAp»/5$½¨ ÇpvwÜ®×Gjé#ôqMû¸L}Ä|‘ÙüH‚"¡eß6‹#1hL ñd©H,:L9P9T{°4T(Bh „¶ÐÜúHA}$ …>BTW¡ÁØÛѤÆ/°ÛF`H»ýÝmù³ª LBiºER”/*ñ ñ¥}oûpa¹†7ð„h61üA Î?«Ñ¢K” áF‰ùC >/ÿNÆÄƒê8êªÿúº™ŸQ-½ÀÅ CNàZv|Z§é“h-×cþñ3$bi9¬~‚Ñ].xý[þ*o¢ÓÙ÷œ7îÿš7Ñd´U…_‚=f¹"â|7m÷Zˆ%krºŘÃÂ)I@rT/D==­¢ÂOŠ—\n7j¯†ú·Œ7 _?áK8 ‘ðRíÕmþsƯ¨ý”=ç6kž-QùŒNJtÿ ­8à6©7•x‰z-߯lÆÉ†ÈÞŒIWA*&tt”“8Ð…ð 11ï¶î¸5”vC˜Lwä;ëäut|ªœé6k$Ù–S°§0¸òݾú ˆDÞrì§µb¾`?µnJp‹—2¾Ìޝ„ý ˆY–è 5˜ŽŽ*zj›øyБIzŸt­nø²r>O´OÍSc¡^'/€“}ÂR„}• ‰Û·!3wCÓHôœ+!¢R† œ®¨ºpG†ªQ¯{ºyT€ªûüµñéÖ¡jU2#¤Çp휋žé :Eœ ‹ˆ(Bñ0iöLÑ$˜lO·/Þ({£Ø2ò9Ùk³ÔaΙ@uiçKãëœ/܆O³ýXYúÌÝ^§A&ïµ÷é¶P#Þ^ª€¥·½|™'ÑÒF˜g³Œ³kûiÏ®ïeÇ<ìÈ* ˆ}…S«ž"¡‰"›£ž+žYÈÍ?>¶ƒÇG0Ï´ $ïUyë;ò_f'5¸Ñ-ÅIÍñÿúü8 ø5ê«ü¯Oó¬ü¿~èÇòÿz¤ÝŸëÿ;¿îïÿÚÖ*ÿû“<¼Û=ÿ/?žÞOÿ¬2‡Á®Ç1:]|ÂÕÚóö `Í»q<€[ ›žæГ¸’Ñ ,¦9?Ù²•[y³ßŒ‡™“;$K²D¢d“%YöDI!0:°b|«š2C`góòËf§°C%³%süÒ"»CÀä¶*é­åo¦ýá®# óšp©Lôëš°ûšt išt*)Œú¼’ðpÑAr” ÞAÝ@Å÷_ñœÈ`^ ?2kZ–÷X?è?æ¼KžuÚ.ÝgŠ€8îOè#Wµñ8Éä­ö ¢¬ 3°ÚŸõeÀ,²É­×õ;si3(õ ÚNÃl;¾…ü¶¾M¸¯“©úoJ9›¡úyûãe%«þºþx8²L¼ãý¥ùãu*m8'£,zË]FXæß½‘X׎ߜ½TaϽÜÓ6˜/hÃØ32L‡—<'—ô“¸ÿ¹ ¤‹n‡@iwC˜ó3#·t‘%2€Òs0?nvꯞ»Õ@I©~ª¦›ed¹…Çš GÎ`øIÈD®\žås™„bœ0µŸ¼^(ôÄçvÑPçÝþšN“»Êi’kxšô4{›ãšöÖuî9þ}Î 3|a†/Ìð…Ùö® #Õ©Ï4¯cs„/Ìð…ÙŽ‚‘í"GÍkØaà 3|a†/ÌveDK/¾¾T\.­c)úSMOÎ1±âr<ÀøÂ_à |a°«'æÉ'$bøÂ_à |aÀ/(ÿ=³d_à |a`½°°ËÞcåF~îÎf²‚ÂÒr×bŠçÐø–îU¦Æ’neߌÙfQ-œU§R}ˆÃÚob^‡5eÁš¦Iê ˜ ¹1ÞÄìÔ¨– ÚS7cu-n®³~ƒ’üßcr{kñMýÂ1Ž¥'ƒÈUÈV Ý”ôÛ“î`õxkÿûû¹äØ©­ìOó¬ì?ôcÛÿg÷çíÿÆîV-aÿkl­ò?<É#…ÏþBÞasï¬R¸ ,Ë!ß™ƒ_Ïö©„‡RT=XYÉ* ›¥@½Ø•ÙqA³£\!³àóØ SÊÆòë€*ZôyÌ• T•jû&ªËÂ>CE¤ȕ%¡†žŽÊ•uéù¶,®võÚÑжÇ) ¯Ù«“c"Èþ`BsW{UÜ&WãøN•& ªí\X抶~4F=Xt-ÕXµ*Ƽân@MÙ\C1šRL`KaC^nª‹bþÎÿÎâA|‰zK‰Xs糬.”d°‡);›*m'ý…9å_e¹ æKeÌùýcDÚUrdÚ—Êûx0Ààyk˜Nÿ.2Ø•0Ô<<aE\Φ¨"4,ãw…(BBP÷Öi4Ôy${åõæº0¯¾õ•2úÖÔvÖp"„ag¤™ße÷Ò¤ãØ7Ký›i4öÇn¯bÙ)ÑWÐl/ XîÅÃ÷"Í~/ÑÖ¨ªB Ê$㮊aÄëø¨“mi *†"‡¶ÊR†÷MXù ¬Uñ© sÛÉ"eîr¼”€“¾Öl\cÕMd°mšúãf1¦Ð^ùf‚“KW&–€î°ù„ÒuË)`rULBD³ƒñõÝpÎwLèÔ¾˜âú0Šx¿(—´C^Ъ)Vë–ÝVDuMÜç%´_ʕۮÛ 9D -{¸–]Ì&2%¹ën¡öÜ6î5JóMÁ-J–™—5NuZg§h¹jqm@ýP_bz9UÅ™D¬ Û3r0±¶, „…»å4¬±]˜W±2[õ1;cj"])â1*ª%R¹Nˆlêô\ÀÓ„øƒÈõ4éÝ…ÝÄ•r÷9pÂ;Æõ¼pü&3¹B#mV¥š ˜{ZÑГd©s­tŸ—¥Rb¢5Ç ìê_Œ5kÃ&›öãá$<¦A=°¼$/"È?Ö*îPÑ2HVA{x!(Äoüõ4(½*ùs fp˜t¶m˜FÜŽ®cYtÈ™p'|fO’W£;¹K€?ÀAâò„})‰Á’±ÇÑÝ e_œœ'¨hrzd ù–sîþ,FFÀ—Œ¾#àzt]U© ùI.@B¥›ä¼.Ï¥;4Ü"}W@ºkþLw°>yg²®¹S¥¶žwûšgž=gÏ:PÔ4½³ yR©V•Ÿs³9› …¸H(eͳuܵpZ-¥cR·®ŸW¼C¡•l­æyú*›v© 2/’Èlÿe$d£fÊõf6zKzB [-„’ýˆ´hýif›–Š]-…:K.»\5•3ËP,£†^7®ØKX ‹*CJ.Ù„ìò„ß“V6ŽúÃBªG…€ҸHG†+Åš£|L\e¹(™ÖB"šÐýp£FmL{ˆÁõ”+)£ÁûE,OzX­ûÑø¥CSP«2±º™ŸËÛbøøJùL÷UÞ¶«—Œ#‚ý¾,R}»,„‡8²¿'ì… 1ÏR’úД«ÖtÈEâl(%¸¨”R.T‰Ýä`°>T¿OÉœtÄê6W£ñ8šÜ!¾P±:¢®¤Å𯲇ûþК _{ÍxÅÂøœ=%Y=¬‰æ¥ë Rcã1쳨Ê~0„Uõ(ŸÝµÇÑ &ŸØþÄç2úMœ4µ“®¨€¥Lúb2À3Á9Ñgû›Œ°« C­³v)TT¬²6²I›˜l(²ø “Ñ­Lnûƒ"Sü‚ü}„]¹à‹}L7‘Å·˜ßö?@Hp‘DþñC@±/4pÓNî@&Ë9bêëé½Ð•mí¦¥#lþŒ“|©y8w\£Wò±Ì`·QÈÖ¤þÔVˆZ‡L*˜”çKP8žŠÏ³œÇ1â»Ö$Ûd.s¹§ƒ Þã¶–ئ4 ±Õ5k$ »—¸B]%JLöêj6f‹eòTw]ÿ”Wåžg2û€|ú9Ç=Ý65×@ySö™Pߪ‹¾ÈCÑKµ†Ã+ë:¢©¾ÀGý48\*ŒOŽ Úæ`ªT”«°! UêÇý°ûÅå²yOE:µl´Ê)Î’&’bQ^ö+)A\¦Â!OKÁÊíA®JjÌ”z#=$êÙE<L0Ž)×(˜|%˜`ÜI)^qò?0Á8\ÍÚ'ÑyËŽsÝ=ø ’—v¼M> ôæüsŠÕÓgؤdÛÍÎÛî)\½Û¯;çð³Ç²\¾ëq&îÓø*0›Äކ³Ò<Ý{CÅ;oZò½´³ŠÿzÆèæŽ9Û{ûîÎl.þú¦E!h€ú‰f8!Ç=.òù8±k”=8ÙÔ6ΉNcº:é9S:M)¿F"ÀÄ æ…BiÓe?շݪ„ègY ó!‘;|X=lžôôš9µšÕ;²égºöÇšÒÅ´‹¹‰\Jb­×¿‰P$Ä‚áΫ¼àUÎÿ'©^ö색Tá &äñŒ”(>\3™ ™¼ †>8E}"`0'À0/˜`˜ˆÌ0Üñ› 0|hu˜ßì߉fÉ•±Pë³€’¤I¢v,;ŒøÔØÎ­ S-t‚È]‰Ü=k‰n½ošèâéSvÊùP¡i yJÎ_ ¤%5ð)\SžÖ›ºv° 5N ¡ç¤5ÕˆñʦÒÌHéÙ“—$9@sˆQ’9A¶Üóù%áD#Èw½DªþßÁøM¢_=¤4ÂH9Ù¿˜ÐNñÙhèͬhÈíEñ[ÓƒsfXÆPŽ«’,KÍžtúšx.ÓŽÛN0úI Èíi©ˆ%&±ìYH\À§iqºÂ6½Ùã 'y&‘£ð€øu‰¸Ðé^_t,b$»þEîæN&÷xÍ ÙÐßfÔ»oéÚí¿ [ÁB÷ú#|·b/ÁúîzJ•G´å¸Ïê-5D<$l§ó⣚b_G›¸ø©É‡QVÅ—Žjh.Òu!Ž6ŽjERspJ¢ ÷¶ÎÈÏw^WÇpD@†Ë¼å,ïNn£9ì)¬„ÖfkU¦ÇNÂs6î'äë\'%ÓKâRl ƒ­Ç—™‡Înú¡s‘boL a0ñs+¦ß“CPzzñDš /£+4­«­¢œd`úÓ· ƦÀØ“èsä)Z'ÍÞòÒæ'ƒ™SCýèÊðSLz˜9'ê-®ê{ …Tùöuá'ÇÿØ6]r„éæ²BL7‹Æ˜~ûñœÏ!Ÿý§ëœøÊO×K‹¯VþÚp«,õųÔ?†ÿê'Æî§‡ø¯~ÊLÀþ)-÷zÀ#U9“Α{]»¢>g×ÂUJõUJõo7¥zACªj™‚‚†¶GaÅu7| ƒaŽ+á—òÇô`Øäž{FyªôZ¡²­Ylx ¾yXË·¢=ô*THw>?=i2™;Ñ|!?¼û†=}òùBŽ^Ú=ìÙàá:o6ø_gñÕ'lÎæI ‹êúHgcB±‹óƒ•~¥•¿ÆwñÍš•_=á>°¨‚H”·¶½À•šÏKG•£e•·Æ%|X…k!£Èuc E®ýŽÂØÑçÌÑFíÕÑÆq‡òðŒî¡áR«Wk‡<²Únú#¦•é çV·î$‹ÆïgžÂ+ÉÞ™§×Ŧ‹9ÖÅî8Eãyűå¢,u˜†:jA{+:¸Ì¿á^@ì픳ÝN–¹Ý½šü26Ú¢»LÞß¿¹6oùÎ#–‘¯ÏUF¾±py8YWN?òãØÿÇ7ÏÅþ¿½²ÿ?ѳ²ÿÿÐeÿ¤ÝŸ[ÿþŸ°ÿ×Wöÿ§yx·{öÿüÚgùöÿúó¶þ L´ô9"Ó\èó;7äwŸ§!ÿñíø¹Öùï¥ý#š¿Ÿ:ÁòÊø½2~[`æ-ó}Ù¾Ÿ_ýñ9J/`ÿ^ÀWð•Ü1€ïÐÖyÉy³(Ûï;´8ŠÓþ—ˆ#Î^ÇÐ8ÑíSHØÂíÖ©8ØëìUDwt ä}Ú_}õFEÔþýÓ¿¿yÓ:¿‘÷rRí1Ü’†¬@{lRï´Èr|²atYÐéEߨ«·1$ ?ܨÍã’< ¶¸¸ð_›“ÁPzLT—}©à:v<ØŠœ@h¤ðÍæ¤yÐùMéžS³É×2F3·ÁëƒÓSv/8®H%8þ|Ë?Ϻ½P*¥¹SÍ›ˆßY¬Œ}z!{™Å2Jß=ÉI~¢°úútŸÚ·€¡ìã²Þ¢Ö„„Uô “øŸH¦œ…³3~ŽÇ£!ÒˆÝiÁÄyO-ÉLÁQØlÖð?;Ð×탲㡃5W"™ð2º7Q€º¯A|<– cÕ«Õ`rÀšMÕ©E U~\â>,#c©ºS K^§e±w-4‚Ö8 üñé àcAÜÆ¡“s 䇳âóÁ§·r¹Û-W¤€eš/éWP“À5²Â© íøâ){W4ñ>2bh²¼ÒzY×jÞr¾ʇEFs‰MQóßêäÑqÝJ Ðù‰„kM&qçòn<ºâ|©®zj›Léä.À«ž˜Â•-0­—& =4³¶K¿›í {£éçP.°¬œátïõ)4±¾µˆÏxã[ÑF“1{ áÑŸ´Qßk‡¹žy‰9g[l Œð¢°AmgËÿ.àE úÝhÓ–í„7?çÚó1GŸûé\ð dÍŤßMø¯#`IR™é-íýÇä\T<þÅ5‚åØÔþ“… ‡â¤ðˆë³Íì‘ÞöcL¦AÝM”6G‡õ«àÜáiR”Y/gðo#ü’|µN/Õ3_’¯6Áo"=Ÿ&V&=hÊS(D&‡‘ˆ)Fé8ö4¨m0D¼_…QŒ¯5R`.¾Ö˜‹¯Ù4²##4äN1‡aú+æFT¡,‹ íeB;…™PÏÆ.B ;yLh7 %†dóéËœt}Opm ?pm ̼6þ;ûÚø_¿Ž0Uè‘zoü)åÞøï§¹7Ö¶Ÿ×Åquk4Ý}÷Ɣ/êtDé9øuƒ¾nÐEòyÜëµÌ;" 5ýŽ8h!Ä|«wÄz­pÚÅD¿(,È „bhX¬p¤Óz88kKjZä†(E­G¸ªŒ °Ù’a r)êkÜÚØúsÞk5KK—®H§+±ZE¦ >¢mš¨~‚÷BNi òY›Å4‰-ì 0]sš×j ß 1 ß gë5ºõŠ^~Š^©;nk£»‹Ý3®AEU<ððÕÒ»¹û{ŽËž{a”Ç…Üé_ãΘÊïsñ»äeÑp±‚÷áÂ7Å0›šã¦XkfQõXTG Ýkõ<•Ôm-~k¬e%y¤!ç?¬ð@Éý¦éñ€]s0­â€Çÿ›<—ø¿­UüÏ“<«ø¿ú±ãÿg÷çæÿÝjÀ‡~üßË—«ýÿïv?þ/¯…ª@±Êl=O– ˜P/k¤|LŽ'¬úkþà–ùÑrR1DúHýWln®£_t‹}Øf “^(f®gf !ÿúÔd˜¦èô)ä>nìŸ×db¼š­ÜÀ´†?l$ ’ø\£¤RhB—B›TD\ªoRÃíŒÒ™mQß©Q‰ó‡#ž‰{Ë o½g‹$}M‹Z´å0ú1‰r°±ƒ¹ÂQŒ¹¡‹áÈÅó¹#Ë'ù‹ò×r¶oѰV # ÄŒÀVä ûM(“ü´Cõ¸hú­"JÈÓò2z.7ææIružµzËHÎyÚ¼xšh™ï5g~æDiçB!6»ÉV¹¥pUÛŸBŠÉ¹ÃszžÃ&ˆ»œL Y©>{(üñ–²RX‡tFjOàÍ9Ãâ–¯"Fpe¹ƒx ,WJϾ¦\šª`3æ»”Ù¨NºŽß ”ñêz†ýà{ö w¤jD©#ŽTL™¶ˆ¹ù"ÓÖðdat¤™w–ŽðHBmz´Gm";!bn©C`"+«Fø±ôÿ7Ï*ÿßöJÿ÷$ÏJÿÿC?Zÿÿh»?7ÿ_£–ÜÿõÝÕþ’Gʶþÿòÿu›^× +oΫî/ð(•9ssœˆCT)½ÆÅù<1 Ìiò{ŠŸt£ID MöàRÅÕøÖ¨ž¥"pKžËÒ`/kº&¢ÃkýPãB U5ëŠbÒM‡‘Ÿð;HMhd/õ¢EE‹2=à¤òí4W ;˜ãi ÚÂXº‡ï²Rúа©¯éPª¶Ã°£YÎàRò0†³L LÓ嫃º`ÑY/u6jåuQvfáêƒC•‡4ÎÍUµ~÷Tù×Ñä ˜0³4÷ Ndkð1¦B®ц ‡B#4K[¯:•­WŸ6áPÀk³›|ކ?‹O¿t^Ô«ú]6Û¬aC»ÙèúZ·jZ#Ø[3ݺ€¦)”§WfElæ­rÀéÕ´fÈ¡WpPë3ÍÇ‘nGlß3ÃQh` öã!oõáÔd ÝØp˜‘àù]Aµé×à,ÏÚÅ<ÇÀ¹ÁíÛ¡}En„~… `½*~·¾…F€)êÁŸÂ[u¦%ÇrCë GYÄQZ€#"›}F„aJÿW8ÅdŽ}ÍYç\àÙÛ¹%Õ'FôŒÊ7’À±C±WÇÄ^åYdÂï*Û*6Ú¸Æh^÷Ç×â0ƒó­*Ûbø#"Pfz”§3¥y4äÔD¶!ûáÏé€ï‚x¿U[u±Õ[ÛbkG¾¹µ¥p²g­.j QÛ5õu n9ö‘U¯‹zCÀE¨®Þ¨o‰zMø!]†hl‹†z©±%5Ѩ‹F2Iܲ¶Õ{Û[b»&¶ëb»Ÿ‡Ü³wÔ«;[b§&vêb§!v¶áóÉ”…'ÑÔ〸t°ƒ®'ˆÏž{ˆÛÍånJòéßEÿŒbà3ÀÔw€¥×˼”“©6;ú"ÉéÇqé4tÇ`‚‘`ÍÒö«Ý@„sæø&sozGþd$oU]›ÉÔ}›ÒfCp‚¹O=õygƒˆË臤¼‘ }´ YßGìt·“þåèsdU–=¯P×b v+·a‡à7TœÂkè¶­#G£¼DΣX‡áÀ8*Я®:ðO8eàáÕ•gé0ú{*æ8‡Q®Ë=†wòaó]ÆQì<áãØyRdçÉ:–'çhvÿöŽçG¿Ý.ù¤pê˜gÆj?E¸¼ŽǨ§¦çOr¸ÌŽÂǨ³¨t’zÜW͆ž®EÏKgîfIÏJnžÔæw]Û„/Ãc«ÚÔU›Zx¬è9€ÔqóÂÎÅÇ6g1"Ÿ|Üõe$}HÕ¢ÚžvÔÀÞsÁ”0ªeBBôœöó¥Â^÷]“ÔíŠ×S×Òð#û(‰>HÌC2Ë khÐ){PÎjbó?øVe«\guõW þêñChÚÌj4´›2-éÔgè¯@1xà Õ;^vw´ÕSS™8ÛØëN¥ƒ¡T0äöHNŽk|ÒuL®=Œ@ú·:T º“QtšÒDú½lª^dûü˜»s糨)Å(ߨÔ}QódiK‚ù´¦MC»™Ó¨sl1¡Çeíyú˜þ¯·ŽF-o¨7‹ŠÔÜ‘Þ8@¡½³•ӛ͑Ž+v‹emšã…¸úÃH’é$M_Ÿˆ,E†hm7¶óÓ¼²õqb™žVºö“’ÉÑ7j•"¤â ØanÍC–Çs“åñc“ea;ÀƒGÂf’ŸDèÓS¶%ÕL°-›ãÌMC Q þd³à ûî¹ñiv‚”¶³r»û dƒÖêø©…mŸð‹‰ÚÇërИ‹JÛ>Sv€gÌ©ý%ÊÖqº ¦ü e¶JŸiJýdxr+“'r´éõÓºÍ|ç'VåžV·Hv.2­äS/‡¸u1J=^?ž“VU‹'äÕžØ],ôúp•Pöy?nüwü|â¿WùŸæYÅÿÐÿý8»?7þ{ëeãe2ÿëîjÿ?ÅûÝÿnÿÐñßß@ô÷c}sšÙŽécÁXoÙ¼@ÐwÛ úŽqÒìˆòNF§!œÂb½>ÎÇξv‚ØÃb b€Ðéùæ¿fÈt8ƒæ*jz5½ŠšN‰šv)ßbÀSÚ’ñ‡gUÑd áIÿ6R%BÕFùV£Kq%.«uÖq$NÔ¸»#øù'L\´B™­/þyŸ×"àiþtQΫ0çU˜ó*ÌyæL}­ÂœWaΫ0çU˜³ütæ¼ s^…9«ÏWaÎßÚ—|VaÎß]˜ó¾ä¼O!Îû«çù+· ~ž4ÏÏO)ÂùôTÆ=úY:ÿ¨Îí¯茊5¦+q®gÛ‘z:CÒ,dÂä( ÛŽé!Äw•ZE^?ÛÈëžyMk"»òíl0ï_^¡’¶t^^çÿwÏ$rÆONà“uþ…dçd·»JÏ9„{îîN0†»Hw'+î$%Š»“vB§ÐÉûÝÿëâÿ°Ð=YϨJ{k ø#DÒBËÅØóŠ *1à9Ã{€öÁçˆðÿe2n) ˆ ¦ÁÙÁ^ Íõ ¸ÎµÄ}Œ1"E«ÄæÆbó´ÂUüà7Vzɹ¬áìö’Éü· :O*"®FUŽ#2oI7IŒ;VUöÓ¸h0ã™ë'‘Sü2IÚÖxóê_VÐ?7Hñ †¤ ÓÃÑÐ p6e¸ - ÅB;‘‰ :»²Öé-œY¿‰‡ÃNòÕ 9@è¬ý©¢›f˜ªV3ñJ¤„pÛÿ»T«tÊÏ%`޼“W¡j«PµU¨Ú*T-ñ¬BÕV¡j«PµU¨šû¬BÕV¡j«PµU¨Ú*Tmª–ÑQøuõ+†ª-öØe6íè³$¼çZ¶œb™Í‹à°V1d_!†L¿ß}ÓËn²í79Ùoa XNØ/äßžÚö¥jû µÞc†¬Ußv«Œ…œ¶Œò(ªXÚZ6k°Rám˜í\Sz™X!n*ÎíuÒ³­vf öƒÊÈrñöÖƒûõÈ=>Š»åôæsËy²Çòÿ<ô\ü¶_®üžæYùÿüÐöÿy´ÝŸëÿSßyYKäÿÞ]ùÿ<ÉûÝñÿy G`IØy¿OöáŸ&J´Ñ…o÷+â÷·Ýcøƒ~„ÏI|æsÒ2ÏÎÓf©®D𜎮ã›æ0 ¸Ðex¯SG…+¤Pl€ÞþáŠ] ½"zGoªöev.·Ÿbî>MÌÎ2¸Ø4¸š¥º@é”ÈH9è2D#"§!ó¾éMwBBpŒoû*Åø8ºŠ€ð:.U‡Àö®c²÷K?Ž’Ér[ÛŽÆ·å ɕˀö%B s¦#÷<+ÞZ¾DC=Rã_b²bx+pœ%LbÐD·~•œ61[©Fu'[Þý /.¦Ú/D‰nÃW Y¾Mßyæñ\¿”f¥SöûY†{NÕ|r,ÊÁœÒ‘ãºÒ¬2¤¤ë S‰ïow¿#ÞW¢Sˆ‡´u¾˜NÆ.{bâ´œdòº*°á½•wg‚ã…ÞÍvç·Î)ì86œñŸtn9«¦·­ìJÎþâ-eº!Þíå)g¬Öï~4þ4ƒ0Ê!ÀúzGžº]ÙÖnšàÆIªù³pJz%p8_YE¼?èªc33/«ñmDˆÔ?HL±béç9’`[Õ¡ý¢"Ž›ZÝ:͉\A¬€Žäùó~žžtÎOÓOç÷ûç!-/ODW½›`¯ùÛAI4‚hz€Š;ÔÕû&*“S1±Ò<Ý{“£"¯H0õú2UæûÝÞÞIEÊô“tF‰æÕ¡7[=o ×w¿}Ú|]IѪkUznc{¸VŽ’Ž\Ô¾D4$ʰcàÏSVòS·ùøiL´ùŠþ󀢟ßLÕÆŸÌ¥ßÏÑÆ'´÷pU­'ÔòtˆakbZiÍv®‘G9|éyu[üÙÎ+ç I½mÌz‰þ]´” ZÂcæ?™aB/Ì`î½þ @ý·³Û5uƆJ I†&‘}{fªvGæÎd£‡iÁ­ý\çÕ”á§ÀC(“ß™:ÚÏWvÅôv…y°CÓøyxYñ[&ö`<ü©L·†Ò'eZ±Ôš‹;@ 1Z#±ŸÂqµK†¶Â“b~4ÜœëXËP10RMOTg¬£E#|þ±–7™¢3éŒÒ¦`4}6)œ§N!kîû$gÜtzœq/ õ'ùt¤gñht”±.ßò&P{AÍ‘ƒ]ðn5‰{q©RÌU†Þ&Ÿ£ñÍ`tïL‘[ý"1¹Îcp·"}†;%P¯â;Å‹æá'Û0à ‡2s h‡Éºdjdõä5kô‘ùú­8{+ê[•"ñ††!…ÍÀhœFƒ«)p¢÷øÊÄ[Þýʺôù·=7—#3CD¢?#u`°€ÿB]íÊø+’ ƒ©'8pš ÏÀçh´íÑgÏÅþ·³µÒÿ?ͳ²ÿýбÿ=ÖîÏÝÿ/wv’ñÿ[«ú¿OòHqñÿüz^²å žÚdõcõGa«^ýyÛôPêé‹”Àu Ñb¦µÅg„¼Þlg½âv³âÆ2XuSŽw<º'Œ±7½˜6@z€@>†×l¸†âË1 ^}RÀ2Ö$¨ãèzv‰x:IÈg§D¡ûãhr]M±'J?bAÓ\9¥:qtªrã„Ô÷½R\&Mýä¿ãi©I•á|õæ>D|ú±?5m¯uX0e @º”h ÿ…Àæz“þZï•à£ý‰¡‚oDCq÷?Œ†ýAUPäÙÚ>Žb¶æö v’j€àŽã!liêX&»Ém0@–Ò‚`ÃÅB¿¢†Cäú°Ü=3£YgóòËf§iÝã⪙Ú`$a°ãåȩω¡ßpQ³WÏ."‹žû¶G7Ñ8^iãc›Öz …i¯ãÅœ´Ýe«’¹sȬ m½y mY]ŒÑ†©f« ™6ètdá8žñõu•àò8ˆ¦¸6rQ-ÁÊÄ&’oH‰Öûµ{ö4všF“„‘e£ÉJè `õ¨%t¼þ{!Sñ ÇX’3‚ÃXúIëñ^8›è÷ÄYi–§Gi¦ÑB¶¼&a˜Òsj# é}ù½9£s>ÛGÕŸhÃÇu#Usm·ƒv…>±P+û€Kô{Eµ*'0BD %sëÛ´bã¡UOÛ¥úÕXãðZàe›F^ñ™K¸ĎêwU¨4ñš3q5¥?á>’|ÛþçΊ;ë.H™)„¯Ïôm X%()9HÝè]­HòèÏ žt#eÒzÁY‹¬¥ä¬U÷5X¥#V[h¹Ô+µË¨ÅE9‹~wÕîü¢ìɨ¬û$Šñ"?´&•¾°õŸ£Ò×z<ýïåc¨€Ðÿîn¯ô?Oó¬ô¿?ôãèe÷çÆlí6vñ_Û[«ýÿ<÷|ýo«°X,#ù«ÖÇ&S¿Á `"ö£ÛÛnòûQÿî›oà^è+âÑ?#ñ&¾î“$Ò¨šRšy~Žp#ØP.Ð^ÂAÿ…Vé3 L~>~ÊR÷]œuÏ1’™<³Ú\Æè€ÆnÌ,9¢®¤ˆõWÙã«ý¡5æ]fÌê>€¼1»¶êçÕΆ£-Q€.š×&¯ xÔ2vXÂ9™ÚÀVÕE8yŒs“Á¡?ñy³~g 3ÐâNĆƒÛôÐÜc¾1θQ Äv?Ca—–W1‰eQîÑ&{OPé9蓌ç nhó°‰É†Ât%‰ÉH#Úd¬a^7ú€Ç8?ü¢ÑM'€j±›Çmÿ*—k~]MõÔnúÁS ¶‡ÒPgL£)–Wùþ™´ióN`‹‡‘ážpG.îǼhcöÙ(¾<«nžQ7t<3ñ‚]žÚ/b'˹*/;¢Ÿ‘?Üþr¬ËåvRÇvö{æÐàk´¹# yÓ=Ƚ ËNúXµ½·çh»mWÄQE«,^÷éÃ?x׃ ~ï¬{ÐcGÎæáAÔé™À.ŽÓ—æiò<Î1±yñîø±÷–~¼98ýÍJŸHBËÌçEÓ'> ]åâé(SÝ VÉ¿ÉdŽù¥•Õ˜æpoØ ´=œ».Ó5þl{Q´mM#õNÝÃ'-å ‡}ޤõ5¬ÂzXIzDÛÆõ×J™ê~Y âsfÓy/~ H'ÃÑðŸh<2Žž ž“TŠNÏ(;VÄÝ`65=kÔ½¬—å]Ïv9¸›ÄƒÑÐl,>_²Rbê÷jûý:7±>¯£‘¾ýéYí̥̻ë#ò·]ì[&|:Mñ+óŸ”ð™>öë©>'£Ñ˜ §ñšwwx5»£¨‡œÕœ òMÐPµ›)W¸”Ä×3835µà~ÕëâÂåÎÃŽÂ1Z´]ŽP¿] fÐã÷ñ(´ì7›ª i×/ô•d±ë i‰Ð©k6èÛPðªÃ-Fô/'¥.üŠüW³¼Ž?.ðdÀ_ZÀð]gœV¿~_VR¶;¢~Â5äJþ¤t«zÏjF}'Ðд+J4yöñeèn\Öm®QC%:MQÏÏt‰×Ðk „Ú ,4‹À2îò2âC£_ew´Œ´P/3ÊËlš\ ÀËO~} Õ×gU>ÃÎ}=嶈¥ t®´&/l|ºKœ &Z)oƒùÀå–®UÖ·~ÓëTc槹Ɩz6Û¢k@òÜ­Ra<œEJé߯޵GÔʲ6ˆ<€©#:aHc9fF ’z"D,ÕÊÑS/ë¦×ÑÕ8êOX-ÚŸ¢:µ’Êš'@]\ÏÆV] û¡úår¸¡ŽeÑœ RtJ“zw‚¦0ŠÑhC‚A)ï4g¿¿]7_aÖ_–wè[w I8ÂW¸Ç`Îïó»kTªj55YÎÆ€€ýØu\J:¡›¹%žÔlŸE:Á”ÑÜoý$ Ù¢‹+Öxí´D§çí‚•2 ÿÜðΕdJãd¾çéÖ³!ªŸtatè/ä'eQDU¶aüâ½N°¬¹ä¢]ÊSÈz@`†Õ]÷dª %Q•­®‚•k¹„wŒ•f!på¥÷ŽáKÙH1:Ëp-u7vlAYN¸–¡ÕäÎà~’ª‹•·ºå ’„› _’Ì:ÑP(©¿xð!øÆ_K¡#~ÂÒåºM µZž<¨•Y õB8àý³.Q@?-£øðëÄÙ¢Ú—i…IØŸyZv€Áôñ?–ùU¿­ê„p\K»ùê&$¦*;GRÈg¼4R¶ i%©m¨€pÕtæ÷²ÍõL‰-›ëÑ=|Á½ø¿¿Zþ§Úvmk{»¶[«Sþ§ÝúÊÿûIžUüÇý8ñ²ûóöÿÎîÖÿ·Wõ¿ŸæáÝžˆÿ¸P"ÁÁ¯çû™q = ÉueûãKß-éü ?þluö{YíÕ;ríiý'z* rÉ€1ÈŸ€RcOD^ø  ä=Ï;…ÕÑ ¦Tß²ÅÚâÏw›Â*%|FR½¿H!Ìt‚4ä/{ UI_n–¬k¬h»{ú¨­HœžüÉè(­—+VŒPz—ή/Iœl‚8°šXè“¿Z1@ *èbáP 1G4P2“„ c‚ ’`”Ç¯Ž BG4VÆj¨ð!훺"G|­F£ûWj5WqgûIÛ ,0#€-˜TqHÎêÒ<œÅ£w®£i?xÆS{þ–G…ÅbôÀò—ÄZŒ[Ø3ûh¾Ž`U¬´mJÛ.ͯ«ÇšzSŠ›ãWÀØ¥–_ï>b4ž„ý×ãª?‰<‡ûþðÚ]Mv6ÁRãZ3«VOÏ ¸¸5h9Uƒ'ÔK$¢½àénÜŽÀ×)Êéu ã¨"ä‘ܱì±ËÛzËL¢é”Òà]cë[å…Š˜M¤[.’ÒaÉoQ9›.¾úD}¦åa¼ÏÆWLÓ¬¤ï“±ÉæÌ˜Ñh[$NnÎ ¹y"义e w]a´)Ï÷FêqÌ:ì~„ ›w3Ÿð«”Ä3EÒÉArC uétM¡ FUµçÞÁ¹wFîøìþÀZ£éG?£ÓB…ë5) !nk_ûDI±¶×ZÙCýuSé°{n†æ'~¼OK÷ ý„FctÓ ¹)_+ #îR8QäÅ2><Œ±x£xH#Ôs Ä/.#tq Q‹X|p¬âƒŠ"/HñAñ‰âA!ŠKˆN”‰g^`âY"ÖmßLy±‰ KVNKödF?’[·ÊaI$ÊgñÔ Ÿ.·l’ÀÔKL¼72õñÃ1)×,‡–ñXu, È{‡piëõÚáÚÏb„)Q4¬èf<3s¶Òȸ%¶a!®]ëæ¨°w§ÏÔƒ±O¦˜çQ'Gäô˜Ø ÷Á”Àh7¥;ëí1U)–ïïª@ss;5 ¤g%™ !£êp2Ciųy^æxÔ¢:ßPeN;qá^¢‰)-ñtÅFm¢¡4ý’_ ¬¯É™9!Ê’¹5'ê¸ëz¤wŠJ Š”3"™? \Ä}ÅP’p#žËŸ‡:S1S 7¨àâzv¥;L\UdˆÚvi šíò @Þ1¼"/Œ÷A¼b9A¼óÆïî¿>°âwç ÝyÑ» ܪÊv~²Ù®)è-óT'êz -¦Zá¯îåÑ* ÞûEÉâ྘ úpg±îô–$]¢Šîè¬î+Ü·q¿`8ä?¢/ÑÐ?/*&€³9¾Â3­‚<”3ó¢ƒJÙNqKW˜Ï>µOF˜¼÷¢\CD™mD®2›7o1ÜM€‰Á€òâbü¨À+‘Ú·rØrî21¯|O r}-0t `) žFž-F<4Œv¯ˆ»¹µÖfq‹»µƒm% b!·q¶N‘h[akSöXG“¦s­"ÖLá)éAæÄÁ¯§_î"QÒúhåà¬ÌꚤnFÝ@ +8ÌõÔi4÷òÛ¶µ‡Î´6õ´*LµÌ]´ôñÆË{³(R«ð¹?ŽG³€âÌßû“dŒ½!.4M¯"5 ñ„õux'DÉk€çì+³ÄáÖJÏ‚çªG¯¼+)pÎ?ÿäOF„¥¿*1EäÓ/å²ûúf擸íjøž!:ª5F5‰G×Ñß&òŸJÓ¥³–ªÌÕˆ‘—ØÕ P=Ä; êvfwŒí1Pß]á]C¦ <Í¿YCæ*þ8›* 1ê*ŽãÊ«²µ°:©,n€@]êraO"$“4à¯*0ó²{ƒãÅ·ÕJ8«›8\OÔªB+teÿs6Yö#kSÌH0™þP(\dúÀÐé;>G‡5ãDvƉ>Ó§Yâ<ÂÁ€ ;¸ö¡Puˆ!ùõ ú·WK:’ËâT<ìºøŸ×l¦¢ëÿ±÷Õ«¬,¿K™·á*#ò€üº@µ­d¾†ÄÐGpk†ýÚgü£¿§, áô?Œ#ÊøàÓÆVrË‹¦³ö]F¼”ѵòãD=$ñ ¹¶tnÁ||Ì69Ç_ÍWâ@cV±£9ˆ¡Êg+l·k–äÅî £õ•S ®ŒÞã>š©²*98Z†âÍÈ&0þ¯Ä~Êÿ÷ÿݬýà8Dþˆþ*Óa8Ý&PÌxt7Ža<@kn±“÷ àI4êØ[oV¤ckML„$šœk`b9èöJ•rn¦«úì–xÜ{ÖmãØþ&\ÁØj–~XÇ 9hˆß¥ÈGb^mw‡&z3ãE[›Jè¨ÿ{:îkå8*“À9M‡øwwN§óÖ)è¼'¶"»”;x¾?¯mèsØÞ ‰`(ÑR ‰€º»–¦lÔŽ ®)²@A)@]˜B²€±“ݤªs‚Sé_Aý«/F•ûßYDœº$­Ó2'+á;Ø0¸idc¶)-°%Åch»hÈøÐ>GíX*6W@v°vXh¹áÊ:óH9dë~,)‡€¯¤œ•”óU¤gó®DGuJMŽKø+ıÐó· §Ò§•gÖ~$+Oœ0䑜Üä›øè®“RUº•Xʯ%U)߃°Ç5ÌM£å}1‰(7ƒá#/±Š˜A¶íÁæxÌGmŒy2™9MpÓlb&в9½˜Ãä$§™˜Vða4†vkçâ¡Iô‡†Kѹg«s´’Â’_¹—zÊLË&w®3šˆ$@­eÓ=ªvlBo(:m‘>³Ö¾%JG6¶ ŽÆ›¼PðY¨´‘Âcé¤ùçI»Ó½ø³}Ö=8ü“bTÊâ•øýc4åªlÊÆä€séÖršÎA´°·è>ó•L|æ¶$QúêŒÒ=o&†#O¬'ö¯ÜŪ ßOúÁøArÌÍ.ѦÑg[½kZH…üHß°/r} Òõ&ª¸ÊÉN:k…%3ÐxÀò`4üGCê][Ê&³»»Ñx*‰: DSz‚'–È~iï!8<¢ñgI 7³éŒ ¦œIoº½7Du$‰ÓDHª @wûw°ÐGAKöë¤ ˆMÍ ª?G¯¸,ψ™oc äÅÝÈ9`&È-†™rçpŒëdUô?ašG9ääÜ’Ãý‡dH»)"³Óèêã0þ/FÿjP)0^÷g0?ä0ƒ˜Ò§;BÖðÄËi=°!þ¼„Íð'¼J«,‚ø—†Hº0}jFH¢ZŠ_²˜ÃÞïíÞQB)ápÐÿ % ÎOà{\ʇ˜b:nïh o°†TßÇ´‹Øb“!.…o±‰m¬÷nÕÔnsI™Žò/â7ýÁ$JãW¢¤î^Ã,Ê3ûçyGÅ©G¹ùG9ùhÏM>Zå”å‘-qÕ¶sÚ ÑàŽ3—¶Rdò?b‹(ùtD,‘Ÿ:þC¡ád‚΋FF™7-—·quƒ•¡JN³oŹ R™(+€ Lžc Þ.¤µßT¢íʺZ67‹'öµX¯Ggãè•‹ÿnHM:w=p Öš8 ú&fM ÑAšò¾Ǽ1aIŽlŸÓ Þäî#¬Éz9³3ØŽT^¾ðOfIýc7+JYÌ,(!÷ì|¥‡-˜©å ãΡt qÝÈ- |•$9OŽÀBBɱ²Ñt@+׿rT©©áVEë‹–Éó)/4YJךŽ3—t¯÷"ó³ñL¥ôË}¦MÓ«šqךéÇÈÊÐéÞ³|ÛU­œt¼§þGâÝH| >¤µ¥»˜ºŸ¹h… ó1‚»•kNŸ…97?òã·M…Íw‚ýƒÃæù fí•¡ü ½¢ú蜑ؠÛw‹¶ß|3%ͳ5Æä¬RÚ8à±ÕVfÁiì²›èR–$Ílå#‚šÕvð.ÿNWI¡>«è•'õe 0t},Ú¹\dã $„šýY÷¼wæÌ÷m¡™Ó^pæ²Nîàv5ÇädrrŠ n’[‡Q”j*ÄÙ•ü6¹¹»wðëy:òŽ*´ÿ<ûãÝ–X>¤ßÒßïwÌlrÔ+OÏ”¸1›“ù‘GÊž´0Ü–Wþ÷îÛÎëô™µ_CWL%é–„—>Œ®êþ¼Ó;k·r<5Y<÷÷»·T3í=,?ëý‰owöB±’ •ÌæjÙgÝf§w¨ïE3~§§ì†á÷þ<|‡2ùŸÐKû¤I]ÐoˆÅtœ@—æÜys çN+~áþ¹—¾: @ÉI_ g’¤”˜|Ë9ÉÀ÷HÖ0ÞÆ²«]‰5±Z°{š”àÀ^”ò°úú šäÕ‰¤ÕØDÊ¡¡·•”+$2*e´üŤi–ÈUeM.žÕÞÎâã%ëAµ‘¯ƒhu&y¦ ˜Ï{=#'t[¿/ÑïÑêµ®~-,÷xü»‹=6c£D!)S8ɵ±r|@ œ¾Y$zÒ»ÏC¦£_<ÞZ}µ™ðr¨ J˜(„ýröô©­³Záo‰i™Á(ÝiJè– £€á¥»J¢Þ¥² ø6©]½­¹±Ì9o9ðÇ>¾¤xa1?™·,Ѧ¡]Õ ô}Ýgü'ÉI¦ä‚L#²öÇš•tƒ2¸f°me –m˜¯BCjjÏ#MTCîd@L–pÖoH-ßZñAµØö[ä|PMwMóê=¨¶?%Ûæ•{HVl(^îA·m„7@Fµ‡P±‡‹@µ‡EŠ=ؤX´ÚƒÒ^ú,dÿmj ;Ãq€{1 ¶¶:Ê"µÖè¥Í8ª$ïY) NøÊ¥y’‡–²3cØ|LÁMö 3›rcþ!«»èB˜Îiœ8‡àï}+WbKã Ù‘úñ`6¶(\kÝí.ÓˆÖ¦XŒÅÉuqZ]P}Ü'ÑBô9ß@ÓÛf, Òdh7#È\©HÑv¤ÉôÂ*«pS{ZQ#eüt£Œ™¼iÈ”tÉ¿ˆµöšü )?á mI°ºD§3UéÊØ@¨ëÏÉÔ§03+õ©Iif+]Üšõ €u_^ ±wÒÍÃöçTÝ †í:– g¬J(ÖóM¯U(I™—TÒ__R²õQjªö,„HÍìF’Q8Á›“ÔMes#‘°âR¡Ÿ°Íƒãäd£¬QZ"É“RÈg–ª½BËmE”^ˆëïñß²xŸáç¼p¶RL¥i¨*ŽHœhnË’îÕ_RѦ²ÐÖ”•H%ëV\λ‡y'˦Jävª¿Û¤»Ÿ¶_%ÜeñƒRs}Ï/ì‚”H’p€¯hí#o4£"*%wš&ðmTѾZ‘Ô¬Õw®£ ¥Æòú?lðÜxØ;5ÎûwV°mŠœÜOé\R÷H”¼À¡ƒ©Ð=ó‰ gžcË8„KGYkj¥ ºL6ï$2VKºQËC._/ô‘/GzÊÂò"ß}q3“‡%nKyýÀºfG Å7(²8wÍ œÕXxþ ÜòÄ|_LJÙМÓW9QÏEÇFFx€¨ìÛ8œ§H¼î·8ÈB쳞Â=ŽJAÞI®Ê”^UŽÊ솭Üg½ô­#Kiããç*°ÂDœòß&'ZÈÁv>ŸŽ”ÿ ìQ(Ž%AŒf“/nš„ñ 9Xüÿ²þG}«¾³ÝØÙ­ï`þÿÆöªþÇÓ<«ú?ôcê<ÖîÏÝÿ/wwþþ°ÚÿOñðnwëôìòá®r¸%kغoSâzSHj²„F£Z+Ëâ-!!„”UB¢b};ŒÆýë‘Øðê—¨j`Í»q<À"5±Ðc•ÉX¤ê„Òaä”›héU ¸Ë-\ªaÅ_­Z Ž“=щ Ûñ‚Ä©4‡ý‘_öDeïA‚m‘¶€Ï›2‘£Ì¢ü†b1ØOe}Õt†BÌ]Mÿ¶ R7Æ\Ö*ǵœÓ™1ø:"¥ G c·L6R tjо)%~³.Î+”?ÑÎ_­Õ@”`ætoº¯¬YS<—SLdm¶&p¤ºÆÍ Pø5'‹ãDouyRþ¨éÀêÈÛŠ^cª#èuXrª x!E⋹sâ‹ùÒâg§Z§ç̉¸÷ ÐÎ’nge·!¤%hÏÎÎè|‘íô¸II[üìnrö¢ye­íô¸™eÍ–+”²Ý$7í\yÛíö&vVÖ´äí9 š3¸Û`BÉÜ‹¦qØŒŠ %4#·ü¨N÷ë¸Rο—GÝâj+(¼lêod×Ù‰äõ¾X8›¼›º(­»¹ änΊŒ$ÑEk¥eUÎÎ1]C鉦s™…Šež¸±Ìö Ž?$YPD²%vk$ÜÆCNÄÌ7¶‰:pŸ8ú1Ú8JÀŽ+NB±"šõ¦S …aÏÜN†>Ëdθ¬øÄ¬’œ˜‹´ø’%ÇØœuåϬ¹@XÍ"ä$Rùçœýßhlo½LØ껫ýÿ<ý<ý/È Xš©’vœaŽ’ Úñ²9û¼Їä5̾à ßj÷ Ôl^)ùy€ÒY¸™….¨<–m—QÂ8ÃT &²‘¿&Ë Ôv/TÙê̪‡<¶ü‚³Üy}‘WLÉ­ïÊ’š¿eûókä9#ö)qŸÑ‰”®sÀÙÄÔæ”÷)›ø I\¯ÏìÕðqÇ9uVL™ì½VµKÐÀfÉSØPÒæº ÖÔ®XêÔ?%Ä[Yàƒ¥Fá·xø¹$ÿ*˵0_¶d{•=”‚Úו%Õ©,“²KìJj ]#&r‹ýʰÒîQ±kEª›Öí5¥×¥lóGµì¯”é î ¶³†! ;´Ÿfy‘ÝK¥=xQ¢Š\þØíU,s(j±Œ6b»M†ÙFhË £ªQU¾½J+ãNŠêãáU|Éj2©ëMjÁ òæR'!´NøÊªpUñvªk3Ý™ö²uìGÊt¤weÈ×Í%0ÅfŒËrF¤W0…{JÑ´Šö8ܨÙùÉ‹ZÀaމ4M–B‰µ¨ÚÌË“a˜TõBV™`ÎêæÉU„ä×/à•Û–‰5Ë5¦4´Taײ ãîêÔ>“!nð×PƒJì%õÅ+RÌë! ÷ip§0½Cd<¹þ Í%¦W¬||¬ê`梁[kI3ß°¶éå GV•ÑKeQP¬ƒ4·˜3oʘšH#œ[ÄËR+ot»ç6Jâ "×FiòXß'¹n®êp#'‰$å–%U•eQ ¬ U4t‚®(jrx»¬ÌÍõÕp[ÕO}e4š‡^¹†„u8YóZ$KÅ:#Õ)AíÑ… pJZïýôL‡f7ç(P$fA]?U¸]ãÂ$fKµÃÏìÁ©Sñjt'·@ÇNÒv ÂA>®Ö ™ô¥(˜N8«×•±üë˳‹š?Ѽ"¢¿¯¢»©-¤pµcŠ¿íð&@uŽå6減2Ó–ž„x¶²×öza>UìHÅdQ JÑ\]™×ÏVâ6›§3¼Òëá®ðŸMhOcùw‹ÈÛÕÒç('OSy\m¸Ãp}sÄŽ:Ðm/P¿€cEE%lŸôo#bêýÕs–^„‚ïÕaTez±&˜&ƒÒ#"ÀhR=€ÒN¥^íwSÏç@]X£j¢JÜ a©ó;øfæ—&ª™ëôD'Ö:æT²Î-÷¦Š¨ Îb‡K`‡U *ɘ¼ƒŒ OÄ·§äÞdè6‚׬ê”8;#¿xpßÿÂ%lžÚ¡zb€?ÀAâê„})ÑÆ±ÇÑÝ e_›œ'¨Zrzd ù™#‡ü̹ìYÀW ·Þ†GÙrzòÛä©#YöIrVè«R^óg§ÆÚ:Þ°Pµw÷šgž=g×:PÔ4½#"yDR¨·Uþ»çl/”Üà*¡T5Oê¹6‡ãš…Ò ŒÎC~v^ùcÍ)èÓJжó‰<Ý”µºT—I\š‚˜ißÒ1åzóE%=!õ…­ÂȈThýif›R«Šjg-ŽÔª%\Öœò§ô8¬Y„J½óºqE¼XÂ]TRr8m@FY¿''#ÁÇpá¼,½£Ba@K\¤#¿•÷"š_<Ò=%IiTˆ&æã+.vߘ¼iåJÊhð".Ë£àjÝË’s*yðÇk~.k‹áã+Vai<™¦K!ˆ`ÿ£/µhsvDÁ¾ žœRàR–»Ð¥W½*¸6”‹Ò_e.€ñúŒò]]-Zb7¹ç¬UÍU«“ #Y»’–Á¿Êî­ ×òŠkæÀ+öaOgךæ(s†S®CszXÿÍk“ÇWÔfk1­%·ìï=AI%»Ü©áÒ¶çÆýï7ì@-\-·Y3mIdUH‰\ž|¢¤Y¾ÙMƒ(“Ü¢²YL ó!Li‘<´ÐÍbøcù°ø“'ÏòY69fÂ̘âdš)Póg‚ÍÏÁÍGÄâ¢Ï1ÁJR/Cõæß¢¢MÈDuÅÅ#I\½o𗆻‹óùþ[QßÒyÎW†ü[Q 9ƒ„WÃ;‰>qT.üÖð ¾`¼8j]zu6™:¢wÒöGÍÒ–‘B÷*&A²}RÑ“ 4{ÜÿDu›-§z1Èž¢hösyoÎÝÅþޤ-ùì(‘îå1¥gJq¥ŸÐNùÞx`cç˜Åª:d䘙78[…åÐQùgƒþÿEÖ ¶2ôâ<ço4÷ ÞS±sÏÚZ±a¥‡µ#»å²ÿðiVJš°=v|t9…ýý¯×‘48¿)¼Oº"[j Ì­E&|²Ø¹‘îF_‹`YÙÞÊDÞ„o[â(cÑÙ­ òÉ¥`9Õ5ýÞÛˆ-&Û[þ'qéÉT:"’4[&£5Š  Úi„aÒ…=&:=ÃèǡÖeNè;>¢nPMh\NO^&ãà±=™‘R+Ÿj>Ìÿ/õ_rPþcôK„¡º¥¦/às}/¶oƒDà—Ãq·û‹•zãfÑ¥ ¢É§º­*õÆkØå #á¦E1¦VüRéÖàgçc·Ó¯;Ýnú±Ó«‰÷ýÿôÅëô¶CZ´Mè¸3„WŸ§Éí7TcòòÐ7s[t<†¾4¶´¡m¢ËÊ8Ÿ5«ÞnS^oœÜùÌ6ñ¯GoÎNöŽ.àðÞŠyi¾_Š|M a¶œQ—oÊJ¨W³'ÒéA`癟Ùú¶¼Y¤àWE“ú³_êUbî–|„Ë(èG,Ê_­~á¥ñ •É_:•ÿ³ù\H2pð)ÌæÇš ¡?žÍ?ü f©dfóKBVN~B¿ ø¬4ÎôWqÝ}2çÂ}ç+ºÅ¢åŠØD ^:HL$…æ-åâÉ@7ëN™…+± ‹þÈ c’(+Cåm%yV%+0ó_F©SfFvqUŒ{2 Ã>§Ârÿ cc6´­û›BS>¥7Ÿ”¤ƒ½V)ÈNlˆ8‡åë/ha`lºö_S‘Iº·ÄA+¼Ä< Š~QÚí`C¯°Žð±Æ ”DdõïÂþ“,ÐCÒÂA6OñÜàøUu´ïwÿÂnÒ`X&#|€Óœ;ÞL Œ†òú¯´?zÝ~wyÀ‰!СÛñM {’Rò,¯$AC>Äé%y?ä›/ †ƒP,sçOq{Óí¤÷dzú˜ô’¶ßLÆE¤Î “Ô|w£Ž~Á·iA¦€’t4LºwªkfD= Á²åá,D Ñâ¶?FO½ aÝBÛ‘C0¼ÖÜ(cƒm±¶«Ÿýѱ-Äヷ¸˜Þâb©ðâo‹pÁÉS:’´²ê$°’P,Ðù³;DZ0ËG³ÈÀ±‹²„f±‹ó€ËŽWä+5?]ÅêèK U­B€èŽªÚÅh‰ç¸-F°aÃ@§ÃQÂöfD.n¢CL?¯÷à¡Âaz;†D¥LE‰rÑAPhnG±pÌ×|ëcÌf†`3h¿O侤MTí×À7,1,“Ry49”™CÙµê ƒ9"oú->}ã÷©ÿŃ5ÑÛ/Þp„Lì•^ ¿šUŒ=3ó,ㆠÔÊ&n€ìÉñ’Gj “X nN®`µ…¢«M¾¼Óc''N”™ÖÈ<`F&A™¼ˆÎJ–‹¼ÊF‚GÆ¡‹Ok°”;¿ÍéáL"sÅ)åðD&™ID‰\Ì‚#’!"ŠPDÜ·N R;DÌ>ÄÍâ4Çôbäê* M 2^ˆ¢ÃrP!hÞxg¡„äiH!E¨ ʃ R Ä>/9° “aH2"Ȥ0 J6b` ³ã€ä A䣀”ÉüÏs™þc6ärVÂ<Ìiá>¼óOÆê7¶3‚|Ì„QŽoQ:!¨ÇŒxKìJÄc&üŽèQ„ÞQfúæwˆÉ°;f€í˜ ³Cvì¢aÛ vÈ…Ø>gayäw̳#×!æ…Øqñ‰#¦#€öJdoÖ‘V[9yO¾ãyÅŠšaŽ÷Èã‚ÚÛrq=J€y¨óo¤GˆãA”è5ü~HÍ+ûQ²=ê  `Ö|ÝÔ¨oîKÚ6¶(²Xõ†cJ¡Ô™â^ú´1uèÐKö~âä~Ù¡K÷-K¨yØœ´”àCÒÞnyJÉ-;ð=œâAS"c7‰%nÅñùV KöŠ ‹(a)1Ùø+¢<˹±WÓò~Ø«P‰ ªá*–Õ»ýg’¡¶(¨–˜ÁÒlÉw;x-YþÜT ï•lZÎÏÏÊ”×RCcMk .#l•¿–¨í‰fNR³ Î5y”ù>%DʱGEÌÊFw³9i(¯³5 ÷1Ñ€>¤Á‚ñ¶îѧMëü7’¸3æ8cÆOqÔzT©·èê¯4«Oèçe•}ÿÑkš‰ÚÒþ¡³ƒ{ånqGó~  ÒzÍxy†£Î5ˆÃ蛬T+5‡ÓKO–U±'_ÕØÚIúp"gU*=ðˆ¨04£ªgôUÍ ¼÷juôÛÆ=½­`=—x'í²ÛJÒÙú'.tÿ|ÙÒýϙؘX. ÛâA«§4ry¾™Y1^öÊ@»XK†Y#¦…±‘`$¡rx09 0ú8U #ìØ¬Œ¥º¥W8G$Hµ¡X ›äé¶0á×£o Ï:¢žrxF:2üœ((Ëå„:ù®>÷¡‰‡¿f±Aáӭ Ý-¹Àð&¥…9í±ƒÒˆ€Ejþê 0<$L$ Cg(#\šiZˆ^Mz{Ò!{•¹n‡U M\C+þ´2ÆïÁ•G«â‡”¥¯ÿûN™×à !DU>×R‚‹¢_ªU÷öÜ+8KjúDž):q"Ìj:^Ü&_ , ”–Kg,¯°$ăô06d ¬î¡)5¤ñs{Ò÷¢'©Zôóˆ½kQK:ޏiÈQ7ˆ/­½¨Z;Ôª½^#=éri“,â/jÐóªçµR15zoÁ^þ×½ªQ…§0MJüãbgÁ' ü2BÓÁpôÐ>,³ Ðw¬Žõ†xTKè/æI6”] Ö`cà Ø ö‡ÿŒ*=4!Üv;÷7Ÿ*:ÊZ©¸Ù ñW:>îö¼z‘ñVó_)AÅn’2$÷-\W•>"Pß ÁÄ‚¦÷´ó#Šya’¯#>!a÷?’Έܖ³p€w©N¤ûÐnŸÐuÂCÉöu|§ QScKûôÇçì¶£]ù£ùBhΪåhaØä½µ3PÞÎi¹3ÈxÞe£#ccÏýÃÄTþc“ÝùÑÖú4tX#,uñ„·¯Ê‡ÿçÿݨÿ5X!°‰üýU¥ÍpØ¿Xzð ÿ0H¡= kò,"µ¹÷4‰˜¹ÖT°m~h(÷¤þN´Í(Ápõã1Q/WJ,™ºÆ÷´Æ}àølÛWâ´­nÙ×`é8¥Tñ‡<9Ði¡þì)uôn< ¯<Œ©~´Õ :J'êŒU”etÿÛíÓJà$›u†:鎭Ä.cÇŽîïå÷k›ú¶7B"QÇ%™¨'«ÆZáhÚ(×Jjú”ÑL‰¦» ÁÓQ´+ŒàvóÍ8Ie°¹¨Èè±í*ãžU0 wÒȇŠ4<--³ŠÅ¶a)ÂýôÒÒlýË„d)o¥’vÄ(¹ùÔKÿ€ÄšTW1ôçl7…-OÆ¢ e½¥ =(tëûßk¯ÿ%·Œtað'Èé'5Ñò³8BjÅ—>,Áßò¦ÛÞGí’„m”„Ãnç£Þ«)HeÇÜz/â¤ÀÑ(¹ 1¸ òÙ•–£€ÄÏ…œ·aü…fB@d¼‡KHjI5šÊ)ß&Y+€¨¨†»KòÌü™f^L4ïÐ(„›'¬yÑvÁæeÒåOȽ^m¸w£sÞR½åퟪþ¿ÅI²Ä ¿¬P>>þCyEäÔ=‡pîä9-K^Wa²ãUUaßg‘4ðîC» Œ£‹e¸ -ˆzaÞ"ÅšG\­ã.ÿcÖq< NÝîx`¬1qHF,8¼41E‡i*Ð^œðÄÉïÌê¦Ûרá0£d³»'ßTçü^ß|Rdz5'†>-¼ÈJ§uâqÙ æS§×ÉšÝ ³oþ¨5ø®ÊáQ«yú¿­ó7d<;ªÉöÞœ©vég6Z ñF$âü! -ùy6ë…gGïþ÷ÕùÛ?.^ë¢=öšÎ@‰^óQ±ÍAÙU7mkE_%›7î8ý„žZ}…?Ÿå²x7?¯ »¥¿æ´Ôf ÜúÛrëF”-¡«EH0n W•#¦¨QªÌÃÿž½• ;™Ý-_bÂËiiÙÊn…ˆÝšWB—”ÈvUkªAÑÞ;m¨bW‘VþØE$ÊpÈ«ÞðÝ Q´ö-”UyààÃHÚ…s¹¶åxõ$ð–/4K›P±0 ­Æx)¤Ä£íû#ûŠO ¦œsýVjhÚíc¢Éì}´FÖTpøˆ][X½›þ‡“Æ¥€™±–Kº¸4†¶ŒIcÄ*ݸ7J»!õIêgØÓ%VKc.4ü9™YOcU?cÂú (Ÿ!~¸ú¨ßª~ƪ~†U?c~4P=cw¾å3~ÔÂ…3T‹QW«`I±J ¦æ±9°p #ˆG^«"VHåŒ4•´§DUÑSF<×_“Q7"– ‰'SÁ÷ƒNïÏ ´Hܤh¾ŒÆâ;²¤õ ë´‘KÃ1Uï¡2eý‚~rkbJÛ¤]UŘ´*Æ•êƒ\^²Ñ˜m…(w™+cd£*ÛT\€å’8ÊÞê¦ÍÉöš–©Ye/qÞ {»U^­‡U±‡¬Ë®ÿ0ºk,~Šú;[OWøïK¹Võ~êËÔXÔì/šÿõÆöN0ÿëÏWõ_–rñlwë?\6"šœ­%àÿHe„íÍzUBûÏZ @C(¯@@Íú¶ßí:·}±Ÿ`¨…S:`Sk> Ò.–@¨‹©.«¤5J—ˆΧÄö·(᯽ã<ä±WÊk.¼}ÿÎàÔ‹×V•r¸R̼N>‚/(äb$!~dSMÍDq)r°ؘ‘_G‘'„5öñÞt£u³÷®»ý›?Al•Ð+8DT#Xs<ž&% hbZIÊÁ_õÜ·e E Gt¤Ñöà‘‡Yg“ÑãfÃŒ°Gsc MÒÂKP÷’|Þ•I×Å'2 rfèEº\|–¹pˆ6!BV‰HV&¢ý|lA ˆ`#ˆ †èˆ6e¹=ÊÁ_ !gëQ¦Äzäšyl`C8¦0]Ùµ[Ãâ­kEx‡Z°§=, Í2:oèçÙßS|áÉÆŸÌ”?Ë‡× Š°³‰üébk2‚;ô‰gðŸ.B§¹Bpw- .ãí¹€ŠÍ“Lš=zfºš·­ƒší扆fØ357œÆ¬Âí{¯ .géV4eErƎ˳3.þ=¢ ä…jO†‘QQûGíV³•Íûo/ö”M'3˜ƒîÒÄrÚV6ðB‡Kì·¡ÝðóÕÁ›wnñêÝb&ö§5Žœhÿëü"ÚäÌÐ ¾'Ûqž]A#nœ–ÇÚr%Õï´<°ø­/yß:ðsOà„ÖlÛø=¡Ç 4áò3fý¿ÆéÍŸ ì–JXì†9áúd¤ÃÊXYµåÒÜÄŒžµÚ¸ãaðœÏ®Dѽ¬׎98Ã*È*>µlo¨eOh¾æ?Æ×€WððqÌ‹1—šæ!|²¯nÒèc­¯z,@ÉþÞóm gà%Êun-žÚôq¦·Õ´å%­QÞׯފ ¬@ï|î»bu÷pZÊ×¹ßz/‰óWâ ÅñzýE‹ò`ú_ıÏIìè1 {+£KÚ+òê]„­aÄß‹7Õ½Æ È7=ÛÚ€¦oìÑn&é¬×s«© éx°ÇRhÇŠé4™´ñ´âV¸­›l.|Çz´n5ÆL>¿Œ¨_Ó«Q8½N—2½Ž‰‹lEˆO0뎟`ŠIŸïœfY6ï„7ÏZXŽÆL5’\¢b¦´‘É•™jö¸ —DþÔ™¼9“-óuf<9%âùˆ-‘í-ÿf¹‘ó÷;Á÷™Î>صW¾¾ .Çÿ7¸{,þ¿§+ÿß’®•ÿï§¾,ÿß‚f¡ÿo{çYßÿÛ[[«ù¿Œ‹g»çÿsôVþ¿ðúûúÿÎÿÿÈùWÚõ·=g×ß„…ÝÄdµÝþÆn:»€ÙßÃM—QÏìgwÓ=j/]¡›ÎöÓMƒ!¤ŸÎ¢’æ:êÒ,GÝœ‰\(pïªÛÖ.Ùä×3Íæ¸ Ô’¦ þË^¿÷yü‘R mÚ.[õó,ø¶kM›ðmwY=^ €n ¾Ô}Òg ­ùieÔ9#Ÿ<^?&1ŽI®i¢%,jôxÐ\y$dˆö“¼©dñÕwŸ@—óX,PÃ?Þ8Þ%ÿ„ëe±¹^@C¹?ALBO‹þ¢€Ht u¯q7ƒ^Ÿ&w#ìf¾x¼ ˜ÔÛƒ¸K™0,Øó¤«¸É^ã½ðý©ÂòóXí¯Ebתð½«?úŠB'ñ¸ˆKÑÅÁË1ß8ÅR¢ñƒ,%ìÄ-±šx79¦?²ëÿMÿ·¾òÿ,çZùêËöÿ.föÎÿ§§OCÿïÎjþ/ãâÙîûVþßüëoìÿ=rý¿)rq˜d8|C/ÒÑÙ„ ®_ˆä»mŠÆWá`=låEÕòÚÍìqóG®†èÞÖÐÙô(º “µ¨3X»ªÄ¸¨h±súfI(H»ªx¯íõN7W>AI¤’b©;«6rèƒu°âå…\ƨ؇´_ÓoW–?k®~¬Óæ%ÂÃéÔù¸®–ãµ*„/ý ûOc…ÿ³œkeÿù©/Ûþ³˜Ù_8ÿŸoo×ûO}{5ÿ—qñl÷í?ÔT¹u+HÑ•5Ⱥ–a "®Ëᘟa´Â¤'´µÕõ/ª[8ü6„£r» c=O`ç#Ms qêwU¡¬’y…f#¶‹XaÊ!V¦#¦¢R‚–U“ÈV-·šH7“ÍšW WbXÛd܆ìnÊwgš±&¶_]LdµÊ¬í—+5¾åÊ•œE[‹v•µóíÖÑ9¦>oHÍeá¢XÜÄ€Ý90`w“)=BsÙÒ¢Ó#Kr©øóœçؽ©um~ñà«Pð‰ µ„&°Í= Ÿ-,»¢ž}>»^{‘v=óFÎïÔFÊhM”ºèÅY{÷ò7t¿ëûJ—UIAL€j[MŸìKŸ8DÌ9(¸õ«° ÚÜ[Ö"jÕNóê×Iƒ,h·)Y²¤í²¼—Põ^p_-ÕH¢ ƒ)mbd F:S„6úÁqÐË>ÝÓݹѿFø¸•sÒ÷ ´hV«&ü*è7‡Nz]O-ËfgÈCŒÉt≨аûmúÕŸÑ^ÞOGÊþy{ï´&USúyq‹.˜Ô³ÒÜm×d-‹ý£7ÍW’Ú·#aÖЬ—¢£”6—$=_!ñañÝvE‚©ËϪ°ýð§ØdóñÊGdÝO{>CkÎã°QÅŸ»¿Fm¦Öòj‡f{MRwçlð~—-@%Ê–x›ùO^ïØŸ¦7ô½Ý¹K¦-½ßÿb™îÔ~înæV†.\‚-áâUU­Ö/øQ=H×@ñ-.ºÌg²—Uà“¾Z¸‘v×QG8ñóøØ€ ½wGéC÷÷)Âݪã~° T1&O¡ëÁ0EÛ8¸“j;r­ácÈË÷¿u¤l/òœ=º•Ù=ñš™Ùü,‹ßæÓ‚6—rPMÞæy±ü´Xvfu[™Åd'‡ùîbå5¾þ„Çeë¶~¸a_|µ”2ªn:cLpƒI~×õ •ø©—’‹kÜwêÑg83QkŒTº8B/ kzîÇ‹ï0%XýånÊ«<;Κ\ÉÈÎ7êõÐg$ãv4¶"£D* 5C*ˆ‘Öø•C˜\]‘ómcÊøg"ë æŸÐ¬xZü‰~Ô.QQ…2ø8VÅ_QL˜L£4àn|ËódÚþ¿äßãÇâÿ[ÕXÖµòÿýÔ—ñÿ-jöúÿÐÛøÿž?[Íÿe\R‰püÿºôümÜÉ÷ǦˆÒN¿Æãvù¡&Zd ¥ßÍóÆ?çàxk—sº•÷´0@,Vˆl”®„!°TÕ!hÞ£¤wËÎNXGÒnz= ,F$’çV3uÇ{ʳ. ”|Ï ¹ßP³ÒÑ0âУHµA2|HnFønÊþÒg³þ&pÃAÀG:Ød…q0–WÒêËú“á¿£J“àà¸{ó xÑC|ô©ÃfzL¹ÿ8\ŸÞ­‹Íí’—â%Ò[kÒïkíÊç*•¶è£=®Ï.…AIÃKU%àm)»ƒÛ¸<Ìtð+ÉÛ#ýJXÝNy!‡÷n­NÊè¡A³ŽúÕÅÌ•çojÏ_~Iè_Rî<×ùóìå¹ó,Þ86ש7ƒ'¯9O^3Ë“×VC™å_ËðY+¬]IÂõî”§·+¿^{¿^Þ+èÀUìg".°*ÙD¨CgðQ}͵>¸$uZ÷p? Â Ìx”¤¾C…( ¿¿à÷Õ`…T…7¾ô r>ㆪËÏ Ù²ým^S&PÂ>1Jï“ —Ò+×>î‚j1,1äÏMÖR\š•ñ§Þd¾ÃÎA_Õ¬9jÓ~"h™kµ ?–„!C%_‡ˆhÔa…³C£ÔS{á÷/‹ñX¼1Å©&t1Ù˜²“UÌá§/ÍÁ»f‰'#äªR¼¼o¨¹ EýñÞߎ¹–h uœS-8B/'¬òÿIh*è­ÃŒêäî”e£ÏøoÕÃ6›Õù®ÿrZ!?+“µdÔ‡"eÏÊ:=Le›ôtQãï;_éwÍtaשHtÝüÍå&ŽàÆ9eY·Â?ëâÈùzwäñ…«[»w1{Û½ÍSŸóêR3ÇÈ|.OrÖm^Ýñ5K¸cL,¥ÿ.†‰B&¶Äܲ.ß‹™y•¥mQŨæ‰Õ|»K°Úhÿá~ÍQœå÷èžV÷F- Vûmî¥ðÉýÏIïtRÌy„~ÞZ2Š(¿òˆl¼V¿Ô^ó¥fÑÖãÖRÀn.ânÝŽ?ô«•‡F­Š Í•v娊>̧ß]§ß(_‚’UÕï$ òÒǶ†.XýÒä1Ûÿ3¸{<ø_+ÿÏ’®•ÿç§¾ŒÿgQ³¿hþ7žn‡óUÿ{I—ÜOÿÏùaÿ ³ÀÏ Øþ„ÎÏsevñë)3Æ~TçÑcMý¢q£A›G,b~Á±•)\‡æ×R©_‡*÷K'Y8dVFXŽd]U¸/y³@´Ezò’(G‹ÌаG0h!¦>n`;|Jzòéäî.½Iñ˜ ­¢ ¡èø(Jlöç,.)½C‘ ý¸î{·CúæîA¿•ßè„7¤Âe+ \ÓÏè¶ù>g70T»4>W1 ³•+é{º’`e™û›ÃçáÌíSèNuÁr“ýäpȱvî©–-ÈÒoÚd*° /ãPsÓ`Ì]ä#Ëá­‹†‹»r:Q/ïª//@¿‹ Â0µ³ñóäör›¤w5Î\m2¥3¸ýI¼©±Vû ¥[ûíP4÷’ÎÍ'ÓÏ¿œ 6•+ ¨ŒÂu&ÊêªÃÔ£;quq~y€+câ­gnúŒûÀ„ íÓ«¤òÙ-‚{©Õ^YMx]ÿ»óøV¯¯ÒÕiÓÑî;`õkƒÛW>jí3F,ðÜG61¤µé2œÚ<ƒ¤›’û¦ãìEN3ö@Â2àLÄ»÷}xC§ûSá@•éâDu63Phý@hâ. ¯Z$æ%E8wú=è,­_ЧiDžnÍp„ɦÂr%…ÉlØÚÏ®iÞÀjô×HûéNï›]⤉‹ñ.GöÜwþ„½œè¢ˆ|…•\7@ͦŸ< ö¨'½œÆŸœá®–÷_È@ž ì‰0ªhÕCJAJÙDÎDE®tßyΟGŽH{ {9˜ ™­»ø#·qð5úܶÅȼ>?Èmݤ¶—#°÷ö²uQÃP£“–§=Q)j'ð[ëCv7ÎÚpn_œ´9ĵyxPç úA^ª«“ìAZN2òÄi½Í«³÷ðcï-ýx}öæ•ãKêË¢üßZ&žêÔÑÓçLgæJ¯ÒލˆŽ™ i'‡—5Ï^•}ö7ã6œ:øäüp©Ð´^s8|âXútÑ,(¬‹-{Ç$¼ndŠP@÷ËzÌ=]ЛÖñ2¢-ôú=¬5g¢¬A]&-ãйÜßCw*NNNܹ­Ù‚ö>Ý'±ö I,wp]˜.€´žX]°¯#¼íäÄÿØ Ÿ9U÷ïð¹eý±®Þ‹>xæ\_¯moGo7 ?Êh¸j;ü#QÛá+\Õ&ŸØM>±4vr²~²AˆÐ¦óí0£×EÛÑ ó¾¢Ž?Um FQö£Àûç ï  ;ŽÜ‘î[ Ðög,7ôu¤ýâÑÉͳ™ä&gäa«Ù8Y—ûÊó ðPÂ!¶þšÂgxˆU2y§ÇñµUÄ"‰\hí'öp¸¬ ÄÔ£V‰Ð[çeèÆfÝn}§÷RÍ™_3”5[±kÛ«10Beb–i Ü=NZvàÛôζD‰zUbãI­‚ÞqL'™E¼݃º„ «jd×tè4ªúÑÛäft†l{íŒÐfަOå³­!nÇYMÊ¡"Ð 7ËæÆ^´]Í‘ kª4k©{‡è b­É‘Í6T=ù¸tñÇÛ5ó"h°GߺcHÞÂoŒâå\>Ü¢åVÛ t øØIÝU¡T.:ô[:W]Fs°rÕŠ¢®ð“hK åÎÑÆ\UÍ{P«¨ºÏ.]©ÔòOµ ¡ABÜ”]2Þçëv„fzeŒôOä'U±ÙM6ÙIòÒ»t ‰€ê²\ªˆ¸2Á FvÍSו’Xµ^èŠ6MºÇèY.Wüàze ÆQ°Ë ;öï)ÕSáºr„¶Ã;m€W¦±WßèØ†VøðÔfèàdBÞäwVž¨NÌò®%6&–G"ŶÀ’§I^4¤†œ¡r›'3ÎR·4oç$u <–Á?˜mx9¤Y3Èk˜]ù£ZóÀT*/œžÆþÛ\¶¿˜~oïº]æÆÂMp šb=W£¤¡ÎØ‹'iI­¾•±[–OÓf”8~š(‚P³o8ø×f=¾3SJŠÌÉP K̲?¶^Ô3Dˆ¯¸NºfËA½^¤)j»œê~£T÷yê¬I.DúŽÍoÌÜüF Ewz.ûZ¬0pW¹{d CA(5L{uõÝzƒÔázÖ^?BŠ©rš„çfI4EE°ó³1$-áZÍïOäCÔ4—53³ãüpU(ï²ó?†-&|ŠüíUýçå\«üŸú2ù‹šý…ø_[F0ÿëÕü_ÊųÝÍÿh¿‹¦ä—~¿¤˜'±*ü³°Ì9$\X$ñלü‰ö;æÄpRÖ„*¤“]^¾‰‰h ¢Ó¬ªªÉ‘š­ëo­2¨aºx ‘¡Ò*£óéß]ÆD1T_…ð˾^ءܷ þ‡ŒšÍÙk&í‰M‰i¯‘ïÚtâÖ÷ÂÛMß/eßÇVÊŸËžbGNyÎØùx á»d)·U²BÇô“;PugH@iüÔH!“à¢Çço–UblS¾`Ú™ vî‰Máq¥¡|¥àøüô“raññ47.~Â|›P³ hQn>ŠÉ¯WôHóQ ™v’ˆëѯðŽ»ñ€P½n“Q'í7]+†N&HmÀ±‘žÙ™™(6‘r¥ÈjNòˆ^tȘ|’hîHÙ´‹H ‰+^f}ÎI+)Ã#C(;ýb±‰)ß=lÛPÉ€%S]»O{ì$ã/ÕKk¯ï4†¯`®1Bfâ Û µ!ÝuàqRE©ÜGG‡@¬L~.é锕Ô"çÌ>Ï™Hœ¸ÙÏ= Ñáͧäžr*€Q î:#“¬ÁËr#ùÚÁ¦ÉMô`ØNÍ7’oøÒßÐBÑéê×dfæ½Ðó»êe§Þ€ÿ¶á¿‹;|Ú€O;Ï:Ûðéö‹l'ý m¹é÷>¬t>§ÕjÈ`ÑÙÙ‘jœËÙ¾q¸ÿ¾Ð[ÇKñ?ØÈ¶²†Âß¶ñ7ügÿ©ïàŸøÏ6þçºÿ» »G ã&©çP>=÷˜_Òýþ=ã{ŸðÔ1ºpò™4F×.öeM&å EÇÌ•,nÅë² Ç§Äí–Ö¥kT&Y‹¾ØÙ¤É,ØÆ—Š^+|í|Åx(ÓQ\O­šwÚÕò¤!‚’BRÇ% 0)á¦â`†Ž,rç:ÝÒ {hƒ, "U-ÏHRÝ ú¥£Vk2 Ü=Ç妤„)VÊFÚJGÌ©¡ô¦S2°3S9÷T>ê¼¹„“šVQè¤n?€„Ý¥ A<úksàXwÖ¬ÔqÔÇr„úÚÍEðL˜1ªiê]æÆ&äì2ý–+ý¨æ8Ž1XÇÑgn¼kˆçÔ* ã ê‚á%RPÕåšÛTôÔ—Æn^Œ ­7þ^ûºÇu‰Èë@e+ ™ªÜqŒl†÷VÕïp ;|a7OmŸ7ý9K<¾&‹i™4œÀñKÐgבŽË^¬­¹¯]…L|¿‰I; Ð‰šH¾Þ$#[E:üŦƒ]ög3žQîÇ”`F«ãÊÙÒ¶'P QDe„Ó˜¿GԆоr½2y¯f,H3n‘*êê±îÈ  Í‘ 91!Yã°R‹\…>øb ©ØÈ„ÿÈB%iðÖ¦ù :‚{ ¶H›ˆ³c•c]pŒµ+nö’MR»ƒ%ZQó=2Å´Êá¡ÿ à!NÈD/†DéüófaÔ¤!;§”¶èÙǃªY:9¾"Ü.ƒµh-‹gpÔˆLmé©9Êb£Eº¬ýBWe'µõöÛ~/‰êU­¾÷HE‹`hjËiÕ'ð g|—Ú¾-Ur8þ­·f©+jiqÞÈŠ.3ÎÆø»è›c/ëÒGódÏ/R ÀÄÕJé¨V%ý6“…±²ií TÍØ=dLÒ϶3¯ÜíXvÓ[ºÃÝ…€¬,(Õ¶#ý¨J€¾ìÕµ||ñ‚OkÐãcÀþ·>¹­ÏWˆç+Äs}­Ï:OÒæ-Sò•°w¾¥bëcª-]qN4Ä>“†z_&Ò>“o–{ÛÙ±“ ñ‚=g=ØýåÀž˜ÈÖãºwÂËrøÜ'ûM:#Ûmí3™d2öŸV«ÂöÔbø`úrÙ®ßÄv_'7ñ0›ÌˆáBñ?VNSWjä¶$,Wu|$ã8’½¹Ø7nìÎ¥ñžxT¾à Çq©^e\ü¬±J 5j¢ >Sè€îFX™yÔ€3ÄÑiM´ÞrlÓùVïå¯bÁMä,†[jâ8»K\iºÙz{þ…G¯Z—ð³ÍZF›«PsÉê7§­(äÿ"Pî ´¿õúLÞW„v¯oÏiÝÄI.²†ÀisOþü×ë3Êy¡ê…\:9'¾Šx“,SÃZâÑÎffÌ(rN: ’Ðø,VhŒ×E¤Qâ‚\|I†ÀÖù?§Ä²<˜I|áÃÍÃæiû@‰ƒˆ¦î‘ï—¡}p†¶3QX4E!’9\,àB—êf¡–ovsXÊd©t"Å“BÄ|sŠ$1Ф,=%Ó‹¦Ì^ ä´lvÒ„©IÅÙL;þ#ÆXñ^‘"AÂæIE‹µÊÔ:°¾=T$#ÀsmFÈg©ñ¾¡Š8p²[RÀùÊЃ+jY­ÄQ…%}Ãåeغ³žý+»„ÔL•‘Ƣ؅Š/¿:_XCÿ*6޲yR/–í3a–Éþa«å„+ý+)šÍUÞë¡ÀùG³¿|n”ȘsyRߊ3¥Dy P£|oôäõ¬lšÞUù4=ógÁŽ•B葱adÏ‘-C/RÔ ’‰¦ÐÁ{¼$¾¶Ö3XaeņäO³rû„íf±[¦M¼ ¼W¹[jŠ%7µM>²p¢…fC[íÝÍ$¾q}¬2%ûˆœ‰ähŠ ¼Ä!õGxo#¶’DA #²“¹ñGähʈñˆ,É¢kgÖ›¤•ŒÞ’HÏܼ 9κª }LJù „ò ¯ifò Ìe5vg2ˆŒÍ¸)מe¤¼ãëH †Õàè—š+ãlªFi—ˆLU¡™.G¡“>Gå1B)3“\¼Dñ*ìw‘ý:w»¿XI9nEv“1‘—µ‹ÍT‰9^›³8V¯0ØÔÂO‡ÐæÄ˜ZÑ¥në'¯EϹE±#IÞH\`(69É£c!«‚«ãÑìv*¹–=Í]Ëv²×²«p-»²×²ØZö4• K”©ýd£±ÒNw>Ë]"墟Œœpí» ó]ÜLç1Þ‹šG¤ž“­Ý«×¸|!D,¨ ?o ºÿ=Ü=šüï­g«üÏ¥\«üïŸú2ùß‹šý…ø¯õgÛÏ‚üï­Æjþ/ãâÙîæg"Íx¹Ù«¤ìE`½ÆLÚS¼ZTÈ5•Î Ã킺fP±ÚŠNMÖN7$’™YÜ´²œÄb }Õ} z¦U¼ªìÂDP«sÄZõ;ÿfX¨vÊNfžÎ›³‚µø‡Ê,Œ—·É­rÓ*l:Ê7"‹>îàŸÜØž 3U(ÎT˜™«ÈŒUdÆcŽÌ Z»ÙúÍqMïÁyqðeØ‚‚+" Ò‡ý·{ÊÞ“SÁwå´eâPŠý6´³†å¯Ïáß B> ÈO•ek¢ý¯ó‹É"!¤ÕsbìP.§¬}@–óݲӑϚï\2žè Ÿ O ðù¯qzó§ŠM‡íÖûazÝM£eKzíŒyR["ÍMN•êéýFŽæøØ7‘ë”?ÞƒOá~¿'‘ Ï=£j˜Œ3Šú‹ãºÉÁǾï»yŒ¾¢zˆÁÖþ ª<ò iÅ0¿ì…@)øq«ßÛÃnúKNÜ4}£.=p‚þUƒòV/.+ǵcFºᔸ#؇ކÚÀ7ÔއS¿cMâ’)ñ|Ì…Ð6x ©¨–èVXD:àSE¶Á ¢ô{_Òê}Ëã¶=o~XX΢‚+ ½Øµð ýÀ0¹°FšÄú#¬ KXãÃv:ÿaû~¼§æxlÏzGÁ\<^¯¿hÙs‘X4æ²Á¬úƒâŠžCf8¾ŽG ðÌ…¸•Áž¾´¿aqîãš ,ƒ¦Ja?æZ˜¾pëgaO„™O§[tm"‰ ª7ì<7áåðèzXðZØKY ¦f¸Ô™!iä8µøÓ-æÓö–³Ü–ŽùûàûLWìAKvE¹þŸôÑøêõ•ýw)×ÊÿóS_¶ÿg1³¿pþ?ß®×CÿÏÖjþ/ãâÙîûŽVþŸìëïçÿ9rý?)2o˜d8|B«&ÒÑo8¡É©˜TºoRZ¬ÓÅ6~;î€æY¡û%çÙȳXl¥ÐQã&v—ñÙÈö,Qìr>Ž›Ó˜ã&êŽ)á«è9ç¦÷›éÙt«·Kž3–?Œƒ˜—VíÔuã)1bšù12ÙxV{‚dh«šØ÷²ÏX濃)ÿke7øg²Ç¿yG?`;œ“]~e‘ŸÕ"´l‹c-®VûY€4O­:¿h§P 2w•q€F};¾èÑ¥B¡¿¬FM­óó ØŸÛøÙЧLüd7v>c÷ÍŸôBeu¾rlhnÔ6Ç=ËâèÙ¯×,i.ÃÍÓ*;Xø÷I ×.×Zù6HËÊËviéA £fMm|Dz‹»µ2ØÆ‡W;Ëà:›«…̵ܞ–*Ç‘eñ•’Ó*2´FíÓ2½TSéßòrí¿ÃGcÿm¬ê¿-çZÙê˶ÿ.föÛaÚ‡õßVþŸ¥\<Û}ûoÉ:¯+kð­ÁÄpUm.†a§JÚ$VⶪÎÒÉ)L¦Ê såNé<“  b4CC2’˜®{ÙÆäÇÁÿ}*m|%üâü SY¯/&²Ygã&æINA‚A`yžÈn­Õ™Gk·^~÷d¨Ý™ðk‹GÛþîVó…Ø«çfHŽÙJg0gÙçjøSèõ›æÕÊÂ;êY”V‘J=ûl.åö" Ê„D\˜!â»MÕµ%Kºf„x³éV!…Šè¸Ç˜?Êub¡ÔÒ®šbêplÐS3Í„t~ A>Їb«¦ÎÜÌV?§}ØŽÌ6zí%Þ³F,çìâTeØéÚû)Ù -ºscC¼}J¢ÞÏÒÆyK”˜Ù¦ÜþÙlÊ–ýw8ºk<ûïÎ*þwI×ÊþûS_Úþ»°Ù_4ÿÛõ`þן¯ðŸ–rÉ]ݶÿ¶/vü/!៳£w5qÞlÔÄÅÛS…k·Ÿ¿½x{ñþì fnl6”U·êA'ý(NÇ7!Ûnñ¾Ñ7Ü‘ßtz7Ÿà´” Äm¹•½½õ¯“A 6ü­_ËY`#áMБbl“Ø€=/0åÎhž­ð»ÖôÑ$Ò`dzE4ÖZæì6Fª‚g©ÒÆ]ñR0¤Ü)8²è¦õIñ+Š&÷i`õælmíBÿ;³mw"Lüþ…"ÃÔôå™eîƒ.È2>0º§T®è#ôtôé^Übzªù7%÷± N*sB†aÅA|Üfâ&SÓJY³4m˜]¬µòWÒ Gàöü¬ßa™ôÌhVâV‹”†~»¿O°,³]EÝXÂÍY¡ÛeB´ŠíÐ*kmÖZ9öÐ\¯Í6ÿZ$6!ªBZÅô¦[L—“n‡U=Û7ê~ãñ- ¡k#’;˜[½¬#d÷èô— æŽ²ÑÊeБף2Í)èQ¦ÄzTjgêÐzXD:×}]MV=Ï]XqĹ5¾ùdJ(õú= &9ÄÉŒþس m'p¢>¡@´º*jû_ìÕþþOf×GXµz [ƪw4J†îbeÓðÁn`‹vfn^-ÅË!Á !b1 0ðs+%ˆ’ù§Žžh­]®‘Ñ6Ý“Ú ÐYt¾¤Ý.F‡(µκ:½­G˜Å’•“zu8¢Žy¾Š#Ä-K„A´Ï¢éôi:ŸEs“)…>‹X·eØ¸Ž›iÃð´ Ç'ð…«ÃÔÝ8ápRè騹«9P±63%–“¥û­f!NÓEiöTG™ORÚ¡H.Q6nRlÖdÈCŒ_:f.¼:¦ÖúîXõådŸ´g¶aBãj'ä0ÏaˆBR)þC‚SAÔÿSVwлÒCbIÐãE8}Ê')ÔlÐöÂT…š )dÈC%w¯ béV4eEr’tˆXŽÁÅÁ›³ì.SÐð~ûâíü°nͨ'…wÔ0ØøìÝE¶_‹=g9Ž«ˆ›)³TökT ¨£v«©¡÷KÕˆroÏi]Y·šÎ£xu@§Í½Wø³ýZhÙý2o타¿ªqù§¹£ýà8Ø ÊzÓtý¡é½ixhü^éx¸ì¦ÿIPWÑÏ’3,†›Oçá#ÒfŽþKÐMV&€4CÈÈ8}<<à*­¼ï†v=F›äGVÌ~“ÀødP>>åy#`ÑT3èôí^E@¼'ZÞA§©à3´ÚX¡þ œ˜…Ë/:yRKü˜`Iƒs2?¤4XIŒlÒØÚŠ_œK8’¨Aî¦É­3š¨õ€PFñshÅÔ¿&bþk Ž[-I=i 8‘ªwé`ˆºF÷'RŠà€ÍÙ‚ yßá>RyCg¬£µdì±Fá]AJÉŒh^3Çš¸ô}¾OãÐH‡ —°¾Y3€H|$IºC¶/,e4´jY!\— d3¥¦Ky¨©ÊôñäŸÞ FgàÜ8§a‚Tö{NAìÉ63ú˜{"ÜËN'Šyƒb~_fõˆ^<³x;¡F©H4k× åËyÄoWßI7µµž±Zˆ ÓâE};(å‘ ©¯¿…šJ°ØTZëÇÕ¤îg€2ñÅO¯ƒ¨mx‰JB-PªK´4ņOÂgÑ|-^¢îª"'P-¡Vªúo[%xïùmæÁVÇËj¤¦2‚ooO¨3–Úíõ¿ð4âc]8™>9‹÷KÓ3ÿFv‘£Ö¤ ãh×ù^ôQ‰v¾ÍÈúòè·6¨MÜø•sµÐHU ûVoô3a[pbË 6”äÆíŽ‘š9Nk*fÌ*!¬o'ŽüÍÑ{æÈð_êºNŽÈ( ¨_§u›¨^ÈLÅÃ^DI@lMÅ0Jvž§QD(ôú¦èL³¾ÂvZ'}©¥€”¡(óº-Ò õ¹ZŠçY°7ÑË"ÛaA¾ãépê耙cYSÏ5 —P…(•³Êu{œºÊ4ÊÍ!wRkÇ6¬†LÚð,@¾ü×YƒX:yÚl9½FÅFùŠÍ¯ÅæÙcQlŽHd'RlÌ# Rlž­›Ÿ[±9¦Ñ‘ÞuE){ý›R¹!-ÅQ¡ä'¬FL‡ˆøàÄ~>½b#ëöe+)ǾžA=ÉQ†ô÷–bó¼œbCÆ_x¼Rl¾›b£ {ç¢ÛçM*G»iõ…RpH_ FÁ!ü‰zÁœQ“Ù™Ü.‰|…eòÖç¨8™¯³œ_3טtë#†f° ÔxŨ J:ä“ÒÈfö|Û¢‹zhy΄c²ŠW·®)âÕK–,]Å«ÿñêÛ«xuy×*^}¯þÇ«/:Ðy?÷xø“ÚÉ’£áWÑê«hõU´ú¢ÕwaƒÃÁîw\µí´yÐz—ÝŒ Û™ÜÜ_àÁWǹ“Í[Å»g»Gÿæ¨ÅÑð5éŸkTüŽKµì°øå×f*¯’‘¸îöÒ0ýy¶µ‹.MšÔhã[n£6ñ¯þs†®µ‹u‰kµ»ùêÀx-E´ 1îÑ› 3ñÖ¼[ñ' ¦/aÔ¸”1™|ÎJÛöV<>)#[@ä$ ˆh΀§ ˆœÌQ.y@Äœø¥RD™,1E"ˆåI'pFG4[R(Î+“¥?»@Ä œ†»mÉŠ÷Ó„Æ)KQ<¦ìDÊnãa„Fóæ¦?îqx\·3TëûI›C€.w‚òuŒ«ì#RZ'ë!ö—`Gô é&uz#}ÒÌɳðŸÏI»pz*ó/NüÃW,Ãp<R&œÌ‰<έc¯7ÈÉí5sÆxC¾f:äkÒØCÓÕÜÔ ¾tœÝIvÄZÈr+1[ß±3k®_¹|ÅÃíL“}ÁW¶\‰rbú°E¾J/JN‡0šfOÈ(ßTÎÈ—ÜAP#_™ã ¼2m/ säkö`GÝÛr!|͘Ñaº™ú¾kê쎠—9!é|M’éÁ×dùºEg}è'‹r?øÊ ”´0a_MòU:ÉWÉJûæÜ0J¾Šƒ)ù*RiÝšXÉWÎ,ϲ”÷ä†ZòUIâã•Jn]JÚfgØOÉ%'ArɉJÖ(ž½*ó$/Ť™üVO××éòQø ³R$eÿD¦/©~´‹ª/[Y±¥î éÜ~êf@Òàž.øÂ±?Y?¦#pÎð˪v8¿\¨d;ž–bQA¯ÞÀÁ(à¿5|4œöøerÈfOnrÅbRwךóÉóÉÎ'Ñüa µýYÎ'¿>Úóɤ)S|å&Nñ5×óɯ«óÉê|â÷vÖóÉ„‰Y¦«SŸQÜ$­ N(ë%NOû”I7ãù$'mK·gâä-»'A ×o“ŸOʤs­N(Ù·>âŠJ ›ÿ!%7ÃÊ~.3KìDTŠ'®JÊ:±×—cûï •9sLÛáiËø²D¥±õXO*v™éÏ)ÎàMzNiÔsÏ)öŽ;ÿt„Ýmd¶ËŠk#“ÜF'ÃË¥™´<þåò>°Ñ<¥TûàMS‹³*•‘EÌÊ‘("[b^ûéK~6‹y#ÞO´p7ZïZo`’U4éOy³É˜ÎñL0tiMäV¤º)sL&L1iUËg’,¼ô¡L½ØOF´ëNu{Âã(ñ’ħL`Æm2¼¤×ÌžVzó©ßþoŠ×éÇOûšøÇÁL5!QS™,Cò+±aJ­¬{z¸[z¸;â¬ÇHá ý?j¢}Ô|ƒ/jߤ›w¾)ÉmÖÄ»~wS<‡Ý¯¿IäNÔÿo¢þÛ¯Ï~üœ’p«ÎHÿÈHÚ¸ÊQ hVL˜Ÿ{Í~KXó‘¼ù}Î{&«¼=‡Ü‡æn{© j²eg6”H3Òh Ë Ižc†*[sÏ0P‹±%õvÒ%/ï6ùQÁû]¶ÈØòPN›÷Lfù~¥þ¢UµÓËÍй5°-ŽÃË÷É]ІQ~»cÒ4ï®Gì€\èø n.kâ+POÔ®DŸ½PÃjŸY/T©¶m—¿†EçzXiòÍ5‘Â'Ÿk‘Û6¼Û6a÷¢;彨^&pßÿPæD ä{MÐÿwmíõ4LÓ“-{S9­‚jK?¸ü´Û¥SÝ%Ëà(“ÈEa†Õ”«n8Ì=·ýí¸®ëÐÿ½µ‚‡ˆ#ã [¹EûÐÙXÙ°ë a-z“õÇ\+ •ñÎ-´™‡6ê ¶þx"eÄêÀºÓÕü휢ROáô䯕°þÏ—é?_ö¬%ËeóšJ§ky’¶J>(*ônÕš+'¸Ð×±T1_³ÞŠSãââÏ5+ÊÇÁM@¶Ð¼5£a\Ƶ(Û¸¼ºýeÛÿ“‹ýÿéÖÊþ¿œkeÿÿ©/cÿ_Ôì/´ÿo?â¿mí¬æÿ2.ží®ýÿà_ç²’}¨7Àôè˜öíq[ÿjÎ%dÈh€˜–3äGÕˆ]Ev~b` “`3þüYšÿ¡Â¯žÈ¤R`LúnW$éGà#¤(B¬&ú¨rvÛ„¿$ü02ŠvŠA‰*cÁÇ‘çPmie‹’7°}ŸÌ¢ÊÜÞ#ä0üüÃî~Ú,#C”–Œ(ì-Ùxi  ̵6è™eÇ©as@ :Fÿ°oЪOéÇOœÞ¡û;77ãAçæÛ¦|á}Ò!|(8í¦yÌ~!ìŒ0Mú(È÷Þ7¶ØS;î;áÍã[´oPî¿Dõ‘D†÷‘ÑƒŽ ÉðÀ;gøà2ªÒôªÍ£¤‹F^M†wÐ_Sc†©‚t·Fƒ-‘p^ (µ„®±Y¡ 7qô`Œl§;ìc+ïúcxxöáõÁÅù>tœÑO ùáõ.üJ±A× pD†Ý ‰Ar;¾IØXlÆÈ9D¸Ñ©°Ù##qIã§ýû° Ü—ƦľÁb–Ütq@¤ˆ Óë´+*û×&AÑâ2¡£éƒ‘óÌùfnÔ¤Ô “I…f³ZìD¢ÕMâ콿´ÓN‡2Ú-ïu¿ù yï›`h—…€˜“LA‚0l ¹Ž~ðä ŸhX6âã_*KËDè0qe#F„ÄÅëàQ^#«ucV¿]¾×îI–§§Ðyç"æ¸ñÂŽmztÐ{ÓéÊŒ•}w¸,¡©áD@çEÒóQ©ßQßDô¼}nÙï7_—é©M&ÞiîíY g£Aÿ›†vûïGP#ª€%g.͵Zd6H‘Þ+Ôe¯wá¢íXìeý¬þj°}ñwßNwÙÄßí»ì—Mþ’ÉT@pÿ-¶`½’ýúOù†ÎpØ¿I;rTm„¸ÞÉݤ,±ößiºÔúEnÝ2ÁaÀ-!™RñÃ&Súo²šwhµIX#‰û(ñZÞ?ŸZó;k3;W6Nï]uÈü·G&•Ìáx.úÿDks^ê¤ë ¿é»·±­/ü pŠá9(¹ibzññMú€¢›öÜàûúÒaÉ 4©Íð‰ÿ¦mßÐ~·o!ÞuÒ.o‰ û <|L~ÏzáUk=E¿E^œD‘@Q¹¥^¨÷«ŒÍ9z†‹Ã1@@4 ×Šq¥7¸"ýÁ0'¨~20Á<_o–ž2Ó‡Zþ:ç-e=½|6SeßkòLFhyíƒX±vöŠ“ÞVÀzƒöîBý>³›]Y9Î/çà^LQúˆ“ÚvîH$=ÙØAbðvj9×e½56žûô»Ü§—·÷ôQîÓ6._äkãP<ãtË„ÞøIAÉB‚Ï ¿’ïô‹_!!Æ.”÷H(A.3²`Ö+Ÿeö¯¼çÿà_çËÆôn ó‡­!"N¹Nöjª örÂ2ÞØ°)ª¤.XL€#‡ãn÷¨Ùk³²VÚŽSp+‹.š>𺭢ÇdÛ@ùüØtäTÅ@ õkƒÛWîi•;FÌ&"éÚÄ–šŽó/”Ò~^ð%&&¶ÊU“°yÎÚTdT@³ R4v@Ó¼ùDáU©ó4†Y©.RÝ? µË}÷?Aa"º8,_aùÒ Èó§ç¯¶Õ¿OŽóQOú?6ÃÛ+ï¿xÓ¼R“€ô~| va–8Pâ!P5DlÆ2sŒcG³ “|u"sß^Чyõ•‹’”ã¥îâ)Ïytìdç<2ä6¾FO`1™×ç¹í¡€ÔöÄùÖ™õî2Gjïíe !:1+›êèµ>d·üà¬%è.Îà'þ¿yxPç úñæH9b§^xɼϭð߇ýËI½ œÿEyàEuü²‚j’LMÝžÓêÉÒÆ Í«³÷5©rÌÁOßÜEƒ–,£cpeÊéí½irU½È{´ã¾dÄ=xQ½uþwIÒóFżP†–ŸaÚ*Ší6/:ÿüAêÿ¡–ÿȶÿ(ÛeKþ>{UöÙzvÌCù˜€óÃö"c¸ø²0ËõYgÈúº´- ëbk ãÞZ[_»‘/³ Þåõ¦õ3¯½Í_WsVÇLÐ7IåÂl¾y莇PSÒ gmôÚ†¥ãä÷¼”Û·´;w †æa;œûêèÄý°æ¬þ´#`}ÿß§{´ß7' ï€é¸œ·«.âž%œZ|¼)ÁgzsmÄkâ½ýþœÇGi×Tå» …‹Zç@›Þ¥^Iqé§“ôv +=®XÂkGàQ­‰9òi#àƒêþøŠ+þr]%`¤L†ðx:Ä8ˆÈA%>[ØrX¤4¢û~WÕ2ñ¿Ý¿b>B\eÝdC(¹ xÊ¿ÅYëû.ÃÈ¿àM.á 4á|{pÅ#ò¦FÙÁ?Sv« ƒ¼“Û­’ëÆE:ªã.ApLÀ«£,$ü½+ 3Ý`V WŽ6â̳˜|$ï̺OñYÝ·žIÑF¨ fï]es\xÓsÙ,lN«¾^«.O@‡ÇÖ¦Zªt†õÎõº5ÂÛ1ÐlïY5¨­(3ým™meŒ¨Ζ¼-g:´‚ʘ­ìé`5ªÌœ°ž¿Vxu*‚µcµ z7x¢¢åG]wæ´ ªÅažË ½Èê%vµ zO âÎ|Dµæü„Ë {`FS-g,&‡zqÇÝŽñÕA°'Q!õqŸ©ÕÖg¯”>» -Æ{šeŒ'†_¨*+¦Û"øíɬ‰í¸Z h¢´Yc^×ѱ¹jjÚ+˜ôúpFéàÍðÆn2´|¹˜Ô­LU”†Æ‡ô"ÜÞr>PH9Ìí3š[û.c¿ñ:¹Ã:·m‰"#NxdCÔMŒ«Ä²êl ‡oÝŒ?Q¯J€Wyv£w“\’çfÀâq‡R ÑJø@L1FU?z›Ü ’ÎPâ%ЙÍë(w.ÈMCÜŽm û¢²¹±mWEs$îûp—ô¨{‡èOÂÓ¡f ðÙ"uñÇÛ5óÕéÁ¦<*Ó·îÒ¹oá7FËzÉr.Ú]Çñ<À€´ç´I¨w²lZ1wujÇár-/Á~­£œ©@ÆL6ÖWÕ“@J+?aÉmÐýw_ ÍüsÝS'd-•­¼…v—|ùË(AZ_ŸâùIUlv“Möä¾ôn§USÂ`»ì—«1.¼­k0ÊkÞŠ¼®Öãªõª`Y¶iÒ=f‰Îò˜º«íÇË0Å’@б„Cz܉™v'A6¨Úì[²=eÒXFF2t`†62C'f8 ³ E·–u5(±1±œ¹éЮz„ ˆÜŒ2v·¨9ÉÞ~ångmrÎ\„ÍæÙ\6›˜jï6Z,Í…[Î4 ”UbfÆ®ó,c×)D°®Åׂ°´¥ã@†#pd™ƒãíXgF`¥AXÅ8¬bP¬"Ud² ’Ôç1LV_N2aY\Öç™Vàè¬" õÐFhå–ÿšÒê÷ÀÅi=,”ë‚ë¡¥ÕýšÙSu°‹+ˆ|8W1ù|п¯å ¼ ®:Ñé¦ÿIxßtÞ©7ì@Uþ-cõÒOP3•kšZ ìŠC¿eÍüCõd E6«›0hüu½A¥·ÌäµóCãÏXáÊ.î²óÿ†-&hŠü¿íç«üŸ¥\«ü¿Ÿú2ù‹šý…óÿÙöÓçþü¯¯æÿr.žínþ_û]ÅOüS «´=ëš¹î±t>9yû“çÓYoÄ_s²âÚï\T7NÕkósâLB’i®¡¶¼«K;ÉØôÖÆõ·VÙZoHHá]â˜^Ñ¿»”[Å”0óˆî¸aø|3¾ŠMŽ\xÊÎØ2eÛô*Õ¬)Í%Ýíì%&èîê~.¹ÛãMñú. “6ä•“R>QÊ&³Ÿ•kä%ýQŠTœeJÍ2dB!A›H¼¤~¥K*ú wþH8€½ƒäcgpËS1š˜©’Ál2aC.MCt-ǰ¨^4Ù«lžT$çË!³æää¹+¬LKëÊΗZl&ÙwÏÿ0T" Œ#«k„~ÈÁ¸H¦*Ów‰p+1‹½æò'‰–ˆ€¬!•ñ¶)SÁñ²5¥áC"ãÙÑæØZTÒÉô±õ°onÁõY%ãæ}>M¶âPð z|‚Pðy ¼ª5i4·]J/É\!å²XÍX­&|(‡wf‡€†bK)ÒÊ"¤äoÞe`Ü+Çžéø?mŒ¯œÓG„Ë™vÄö»•1ïrí_ þ×öêü¿œkeÿû©/Ûþ·˜Ù_4ÿ[ÏŸ? íÿ[«ù¿ŒKnàžýtÃæÞÅìø_T`²¶‚+u͆£UÊÚèÀ€ñ·k" یɿ1JL4 CÌ®…5QÒrša6%ëßD–S]aÆXM‘H®áôÀ†ë÷܃3’èX…gÈ‘DSRPSQ ©ýƒâAp–e¸•n·ÿÏ ŒÞ@3[ExÁ÷Õ71Èe^˜¢zX¶¹—ùx*›V²tuñèa›™,†íã}ê ¶Èç=¢ +×§Î_2Æ•ŒËòYxL2¨±©¢·•±#ÅÁIýÚª:Hhá´G N-¥œì;ä#˜²«lŠ·݆ñ…5Ç®zg[•<±Ã·üÂÃÑõ¦ J·jË; Nœž 2”„°¬V:¤``]s¢Î jØ;fvGÀn€õµjâz<²™ ©@û»]ñ±Ÿ°P+›>¦›^ÉÒh²`“µ§ â·$Ä×T¡„FŽÜö&IoÄ)@é²ø†[ù ®b¸$yËh¹Ò.!¡}9åñHKq´BIÔ’e`ýÍ¸Û º A# "•ðqÐÄS@ Pª£Þ˜XÞƒôí Ç’}iœõËp"ŒŸ±ÜîsñÀƒCUÙ'Ãÿ)˜",EHÒ jy²zË}ÿ6•YÑN¨*Ú…½F™{rM«ü@wy©Î\ ì±x’`§AßîH‹ üŽx%=7þÛ]`@œS{Ó¬]òP•–òìzeòÚ*ã &Mé~5 Þ M¤ØgäM·p·ZÎü›îy#–Ùr›Ì›H€bƒv0Ë Kc±·­ŒÛ¯ÄÌ2„KíGè5œ"²”“p.> 9=Lä‘q\¢|-¬¼s±°tr90‚þ›,4_™Uj¬}6¦ËQXù~ÎŒÑê*ö]Z£U¯AÍK½ã6K«ÎA5Uô„õC–hª›nWÒ¡ÕÊž¹Mo:2w¦£Ð~núœ¶¤ê®Ð2\¡e.-3ÌbüZ¡eÎ)ZB•¬ OX±ò…ȧþØ„®¸á†&4‡eÒ R˜êÔ¤c'²ã32 éà ÓÐK©mˆœãhÏz!.ÙÒSë,› ˜HŽ"¼,Ërç~g”±œg’‰.óp4ÂÊâ@ ÛS‹¥JëË1ϹüeµE³ÛÁÀøŸ § k•©pÀ%³rFØ/œ€Ö1:#[•äõ¦™IG§»ò¨|!ÁŽ?ââ¸L×9€¯†öôò¥­·–‰?Ò–fëíùœ¡B3¡@©œgëµjM6$¨w{NëJ×Ý{‹P :z‰ÿú{!„¤&óÇr¬þ?nÔËР›ì¦£²Ÿêº)o Q7å3‡+ÔÍYâ´®ÊÇi™7È1 C¨f âRM¤ù¡Â¸$Š„“ÊCùŠêœ:óƒ±äã²s@|A¸˜t {E‘_”¾ãvCqvZDŒçÒ‘AJ½ÚÒüP‡×þpæÄÈõ‹²ÍIZHñu´fÁ`×9 í¾v=Q‹` §F<äzæðÞ]SNóˆ‹Ü{±wžÚ±uªRê¨])•Üù®߸X ¢ñd;¥ÛßoÚå0‰"­z)†–É;î|ÉñN¨£Ù}È_*d–T˜ËÀ± ±­£ |®v2rSwç­…‚dW´­=s­¡È6'òÊ ‡´ãÿFƒ»GÿWo¬â–r­âÿ~êËÄÿ-jöÍÿz}k'Rÿs{5ÿ—qñlwãÿ¢™«=Õ*s¾›"å·9&Î3ÏwÒÔ^k7·7Û+fâÕtÌÅx• ;kF3¨î¡Û*T,?dJK +ZjYy¶ûÜÖ®í8 ~ÆäVÏ˽ŒÜV‘ŸÜZÚQä‹°\2SÿœÜaˆü™›·ùgVÞf° üŽ4ÿ„&¶ì(ESöQºB®ká˧´›0¥—qJ_:¡ÓÃ"€®}˜ÒèDÙú»šžcè;ÙM98‚Žàh ‡éWó0ò²mVY¯Æ“¬íô6Ùþ}TEÄÂ;ó"ëúX6Ï\kŠŶȣ›{»/íˆ;V¡7¬ï#Aê´HÉf1†%°{ßVz\ú,PƒÑ8â: ¸P‡³¥+·ß¾½åcºfz¨jºÑ.V€ óËõÿ ÿ§±ÂXεòÿüÔ—íÿYÌì/ôÿlmí< ðê;«ù¿ŒKj^žÿÇ®E³‚-¸f€m@&çÞ~(XÎsÆÑµ=&':H€_„n€ûYÑ6 ‚2<‰KLp LHó7©¾n²Ë†„ÌwC eÊñ­**,“@º/ÉÄuZ5ä• Aÿ=»~Åò:û=HÆzÕA¹E®Íqp¡è K'YkWš‡ÍØ•†íùJTÃUzMܧÁ¹2¾'æCƒÇ®ýÇôåñ3©/1“ÚqÖrZvé=}ªž6xÖÃN«N§÷#fø?AÆuìÞùgZùµÚ»eÉžöÁ¬ŸGšöÑO!’)׃h Ñ䦗y˜ÁÞG´)§¿”õŽN”êZ^œ[BJ äúi¯*ZuWgÕé-Â&âcáÄ¡tcq°µÇ‡š»×ëB\å“R.ÏΠ«Rˆ#ú ëÇðTav'LO‰Q"5ñæ(ÿ3©ïQ E¶ë‘þf5~°È‰Í·ç›æƒq$e„Ÿ³2F,§>îœ?òܘ8§N…w‘Zb6q¡À_»nè{ƒYkeÔ_õéBxBeøî6}m|X™ôÕõ#˜ô—eOgÚÏÃxýa¿½×H¹`søÁf#u}¬  lõ" .¶ûÃ-_á©kçEÂN0i`²²p/P!ÈÒˆÜпoÐïlƒ\c™áÀkcçm”jÙ¾Àì¦mëô¡’M³39¶ƒ&xÔw˜:fÔÔ üh£> Ö%ôwr߈ÃzŒ‹¨ñ™/Ùã ùC¨xúú–óyú䘣¹“Ï‹´7 ¢Œˆ0§ÙRRÀ§|Ayºe¨dÈŠ(%.ÜŠ–ÕŠ–%-ÏÈÎzV,™S¢–) Ïb=ƒßŸgK‰ i…£9åâ¤Uãï·6ýZj8Í™ý¿Í¶0)9Ãg+½æ/–õ­–$|8kè%ùú|Ö${®É™V7 ›êV§_'_ê;¥–§L)‘Tr¶°†E„¥Þ˜pIÊ1ŪTߞ˲ä¨RñÇóÄe;¾|Õs6¹8"ÿ™í|Äp óÌÊù¸ÐËøÿýÑw±ÿGýõ§+ÿßr®•ÿï§¾”ÿoq³¿pþï\ï­]Á!ª½¦š…¢T¢¿iïfÀøÊ×Éè ÖÁAæ@âäY€ÞJ’ÿ4õ~` Ñó÷™=íùŸ3ÚUâÀžÍ÷‹æ€'T±:Qmïû%{$TmÆiÀŠjêx'Äÿ1/Dûÿ7lÜô{Ÿ?â<¢{xî­í‘¬(ÆáYySöéûz.Žpù{Ÿ³¼]¼9ûN> IL¹bÑÔæ”vp < cà` GcËBͺeì’qÝ[]#œCôtŸ!ä8ê[ÐÝGWV0óÑ{ûÕ4Š7M¡G*b!Ç«k$çëþSïçÞ{O½·žrº, !| R› ¼¸ÊÂг«ÈOø^õdžP†Ð"4 ë)Eô¥”#_ØÇ#ìöÏú{qôž?'á«aèºî£aÓŒˆ?€R–Âc‹Í•€)6Oâ, 8â2$Ì…ÿ˜ÐdbÎÿÃX|MüïóUüßr®Õùÿ§¾Ôùq³¿ÿãùÓÿ£ñ|Uÿa)—ÜÀ¬óûŒÊÒèðßæèugGïüò4a”U8° ~#+Á£>ús—Jñ´x"…óõ U´Ã°\¨,‡ÉµØÚ®‰öñëÍr&ˆ)ÑDrLöðNbŠˆ½ ä¥ ¹y&­(GÙ+H@­ú?%K0UR]h°¾5 ª.¨ýðÛý}‚º$‡0r*ÊÓ8ÖñÙXàÏþÚåÚÚ…Ðxá†/·Ï8|™Œ¦Ê,‹¯±ÆuÂEf±eÐÔ¿*ÍjÕ˜P‚þ!™ ‹ÒøBïì u嬺x"*\×jÍ¡_-a|™gÄ 6†#1ô¬;̈L†)?„¿“[›P‡ŠðrÔ1°ƒã‡a :²tJä’2÷Ö8,¸bÓïÞ£„ rê½Æ}TèæDö¨Rµšg.­| ÌZŽkÕ' P÷ºÛGìÈ &WÉÏý¸;JÑÀçøñ–%'œ˜$Ð#Žé>ÅÑ¥¸&‡ÆÊ&#'Nl´Èª«B„o…¦¦}WŠÒÞ(p1á¡î 3`8ŒoFã-¯ûžXݪ<éÈ„¤É‘o ²ÙÍ ˆjˆôÇÔ‰ ÿ¯™k‘璳ũf“ˆÎý'zæ7ZïZoªÊ ËrÑk›Š^™ä«L_yÕ0¯!‰A[0ïö²×—dn¬=šªÊ ‰ÿ- éÿ¶uP+Äõ‡›Øâ·¿¾U›kÙ",Tkâ¤ÙÎ)Ë"•Ù Ò ‡vóÝAElG;3C-Û¬µóˆ¶ÖP!¤áÕxe‰9sPc@}ÈÊ®¬´#ÖG1´‡ûÈéBÁ72âCÓßu Ôå¹( ÜóµßÅ&ųòÐB‰Áå_­>¡Z—œm5(‚€Ov$ Ê\À;ï#5^í¥ ?wfº5>oX‡ý†Úª"J+¯¢ªŠ( ßE‹çVÑšlY5ê¶aƒÛÖÒÖ ý¬‡ZŸSTØ×š,UÎ×áÜÉÈÁ>ûƒ­ÞõŸ(… §•¬öîÚÿýPJZ ‹B)mûÿý_‹1NaÿßÞÙZÙÿ–r­ìÿ?õeìÿ‹šý…öÿçÏëý¿¾šÿ˹x¶»öÿ7ïlóÿéÙë&o–: p÷à>’Q«xÀ©Œña´`ÌHÎÌG~ϨÍí*Hp²A !àx€fÑ¡e‚Ú‘_}øN=IšßÄ‹—¢Ó}øÔYk®}ô:uÖ¾Õø¶AÑ×4 ø%[„ÙVQ_éóoôaO…ôéP>øŽ wl¿‚@Jz– Ÿ[WÃÌ4{’±Jš'± ¹†oÏò]dú¶Rãé‘aÔîZ´ç­#ùG¾0G¬nàw܇ çµ7ÏÐúw×ïÂk†/Â,%ƒyŒmAP6=Žý³Ÿj ¾Þ'»ì6Ï6³ß|Êoîª7þù¾ù²Ç¦bЉ_À3âçYñ­‘mYÃ:Ê4î;·Ä=l.X…Néݤ¿ÿ'ô7K5f¾Ý¼xì¡ÕB~Âm%O&žf%ß{æ±%Ït«úåP®ÀÿÈ€‡P4*=ÁZlÎ-» ÌÁD5œ"A¹¬Y` Ð(d¥CNUÚg‘)¼ Dá® ¹$ “¡5i§Û…1Þ ®(ü¬"}¶µà*ZÕXC`"N:ìâ}˜ ‹+þŽ5ÃTƒù¶†Gï„oô œq±ú¶‡2rû‚2oËqQϱI¸˜9)µ€Šäâ6}SŽ‹YAŸ„f˜u˜NÛÕµÎõ#8qRä åÈmFw ß/'öˆµ6*î)¾–먊6/¹Òíî*c°ø‹…lã¹Úäç©' ‹cù5Õ Œ!Éh,=]Qߨ|Jz|“·Õè=6Sl >ÚïE/InUÇÉHm)×÷®L• »ŸH´ÞO'ZïCÑêåIÖ·MÖöÄç5ù¶3òTý¸å_^òÞO-yï9Ž{:É[ŠK0¢´BŽ3°¢ÝʘvS²pxEsˆ†'É(‰Ó¸*üz ¿žÀÿñ?øó$' akÀ1@þGí\Ž7P;ûBwàtž¿ ßO¥Rd>ñ,òÄûÜ'~smñ¦ã8 á,ûKhìŸÆGèÚò-Ÿ ¡÷ã'¤–_އ í:ø1N⪙³|ÿ6ì3ãÞ¼F¨’=ôS™Ü†Z ê5”xåðøþ*6R'W" ,Ÿ¿‚… ·ËT’lnÃ8Åßð>û ïÃ7¼3¼M=¥“–², 1Wˆ#N”9É[ñeWBóA‡‚E< •5æ~ÓCÜN`:üäœ ÓÁpÄ‘`lÎ`†ËkH;ÈÉÌJŠÔK>4’USYdçãèKg–¨õ½ž6¤¯}Eäº+½×`›×L~K!Åy[ö %òèÕRæäà‚ÉV¿w¸ã]aQ؉ա8ûvJ6DóÏÉšÊiÐÎÄŽ`¯Hâ‡Áª¬=|çɉ—ÙWB?í¡œ/hþB‹Œ9Ûùgu{ýj 5éwf±´çPD¹ë8ƒñ¤7ÀwÔ絫 "ÜÄîid2áä$2ØOõ`£ž7_Þ«´0jÌžfO¢#¯Â?×…¼sÍO s[§üýQð´°MǪMÇ~›NÖ Šm]r‹•-ÿ•̸é¿z–äÏ’cÜcN®ÜÏ"SÑ£&ѫɆô(Ò _„„BÍãN×dÇaÀ¾{†«ßfòH¿Tó#ÙnGœõãyIÉÐ?_J6h€³šFC}l·Ë¾<¹ ãô¹¸xùëmåšãúƒPn‹Z€òglHK³1X’ ˆÁ¶lòKZ´~›jÑ*µ>¡žy¼^/Û›eBx¸…-TES2¤vÄ0º´Ç–6Ä4#×74,Ïgå {´€²^¨ïf0sáK™#‚! ®~b ¬<<ÈÎ •gÇ VøoÙ×ß4þcÿõs_&þkQ³¿0þëi½î×Ú~¾³Â[ÊųÝÿ:ÿtè¨Ó«x¯i㽊"½æãU>¶‹šêww?,ÈŠz$¾«i⻾ÂÿÖ^£6‰î¢ÑÖIÖÄR îRq[žk‘|ý&)q×µŠëZÅuÍ!®kÎçîw gñBíf‰™&ânrW*äÎ-KEÌq¨£²`²9äP‘21d‹UŒß´1~S[‡J[«Oi2;7½ï >èÇH+¬ §—Œ.sè˜H3êÃw†CPnYH®7Üq¹ºÐžÁÁjð€\¾cLÓ£@’ÁG:ð(»¹ ¥«`£0Øhø SK ò‡ò„¼è Ô™¯ðm®B“2î,šô¢XY6Ƃܰ ‡÷­X1?7àèQùÈÎäДNF7¨vŒ¤.F]cÌ™˜ãQÂÇÙƒhRÆ£Q1‚×®·£È o^ÐQV„ƒÊƒo’¿­ öü­¹ ¾Á[•ÐvÞˆlÿz—rD¿ž_šû}k,^'Ÿ^@Á °‘ýp}Öyž2>F!*ü«©F?'– …*®ªT؃Ȗ‚«\1ý‰Ûs”…¬w/Jò=†ž¨”®› oP+Î0óÊ“F5ÿ•G¹°5¯µ3¸hµŠÅ6;&+'¼AÌcÅzZNJsÍéø¤« 9èUkfÀʶZĪS0ô9KUÚ Ü­Q ¢D ƒ(·¤=ÿ>‚Pv¥qĤt@UÉèƒóU¾þrâ?î†ÿÿi}…ÿ±œkÿñS_VüÇ‚fÑüo<}ÞxàÕë«ù¿Œ‹g»ÿqh#åafÆÿijļݚ8Ýߥ¸Óý«š1Mù×áÁù9æaã¿ ³w>aá€5€ä±V qÃASƒ;IÔI ¬ÿ.0¿ M94¿žä¥–†!-‡*¦E·ìV¸ nñ€¼ªpw' ‰9l‹ôEJz…5êõ°ßš#Œ+Há·á(!ÀÌ.Èm‡@°ûèˆÎO'wwéMŠFXU€GuípK{T=.QcPÌØßÆž)ÙC‘ T¸jÜ»eèók¸ &Á­üFE@*Ê{­î;_+õZKÕl¹r:Q®‚+nƒA_L,”½Y¨îÀ¾“Šö¦OBÇZÈ]ó6$¥9S U‚3W›L)ä ªD?«ìFLc#¬vSšâÖ.Kû/-,Içæ“é'ªÙT®*°UFá*eµ³ut'®.Î/p½ÅÛAØ­gnú }Ahi¬MÔ§WIõê³Ó´5}á}Ãô—­ {Œoõî³æ›G¤Âñ°Ð3õkƒÛW>j½;FÌ&"éÚÄÖ¦Ëpj3֘ÐqvZn{ ’áLÄ»÷}xC§û‹M€†ÖʼnêlÕ ÊûxÝÄ]^ 65')¹ÓïAgi—…>u0ZÉ×ܰjµ-L6UVš„ɨ#Ã{8U 35M^&©ÎZØû¦ÙMû7Úåà¤ûΟ°¨]‘¯°iè¨Ù4C9—sù¬ýh.>¦j0G=‚c›½Ù…:ºxÓ¼RS¦ô~|o)ŽpXx ­ 4ýÚ€ÊFc36—X€&væ˯£¡YÜ·—âiÞY¯d|—®Yß/ü*Ò¶‹?r›_c\‘Û²™×ç¹m£€Ôö óì½½l]Ô(¼í„ÛNTuôÚ·>dwãà¬]§í‹óø‰ÿoÔùGƒ~¼9jÕÄÕIö}Ø¿\BµŸ‰ëð4¯ÎÞý·ôÃTåyó.§8ϤeÈ›»À²}à)ü{ô¦ùª&pöätcòHÁȘíŸ6ßì½Îæ=^S·…­ÑÁ±æDÞ·ݬ—¢#¤Ã%IÏWHPØË¹Û®×ôg”„MŸ"ÍÇË büAê'¡b‘ÿȶÿœð J ¶nå4ï×ðÙ«²ÏÖ½Ú(†k“U¶ç^´ÉªÐD•ÄÂht(ǹ©è‡ÿŸ½/íN3IÖüÞ¿"Ïýb„ $Ëåêë>­…XȲ=sï$!‹65‹]î™ûß'–Ü3ßmV•y«, Þ\"·ÈÈȈ'P!*¬‡–Gqø¨ÈËh¬¡ŒÖ´?‰·ia<ø¨¶~q™¤ÄéäÉr%q;ZÌTÀzUPÛ2&ß0?€ÎÞ¿ G“±™ßÌæí$ÝþH.°”'Ý>"Y´?9‹õ=B3ðû—XŸnÕÞÄ’¼Ó²&;Ëí};vnn ©Ä‚A¨]Ø räDtšÜŠÅx>¡ãöJS½a¡ D°*éï2× Ã˰nä;pÞ©‹¢øÆ†íØTrâ ñ=‡c<¦b9Êù,8ùékSH„À|G R ¡’j1êÛ¥à±y' ž\ø# ñ§:»w}@æŒìÀ´ÒÉ^ZS¯K¼ÃÓÄ€jWGfÊå çS…޽Z>×¥i—‰ÁxS³‰¡F8ýX'C8ÒŒ•ôBp½<'ñHxyÉ:´°äYpH…凢¹ôEµk¤"•º*•v†W9, 93FwN”'ùÔ;{W4¯šû)™Ñ[w IŒÃ$\cèM#ð.Ý)‚›®z¦ÐŸûñC“H‹éxÔQçG=Ém¶¤åJa^>-|ꆻÅJq•û,ƒIÖ6‚ÅluÄ©åÓå6ŒÐYø`Ôï/å7k¢2Tøúã­—œäŽß½æö»ÿ=lÃ[ôDÀu%®YUr ]&¥12aÒå‚+Þ}ro“)ÒøP9äSR:ñ8ší;ŠžÞ¨Ðv‡8J%ªqåÁŒd¨_Ïc¦\1PÇö•wyXÖÕ ÄÆÄºkÎŒàRúM§MÎy_Š×–T휑N¡¥AÈÕ;†ìpLŠ ïN(ÙˆG¹ä"݃ÎÖJþÑâ –RþÉéIãodŒÉîö&¨é2 3wÂ;”)Öc›¢~h¨6Ã7þÑB§±‚ùJlÌpËÌÒW+HâQ}EB`_L(í™ÍØñå”)Ò BþÚ´ß}“3Ò;.žíÙM©oªj¹:PQöE¤$:é=ÉÏw€¾Žx¹ðv 33m¿l‹é†ÿ¶înuj½Yòq5騮³¤ªîFƒwÌf¢a'bÌ ë,\¢ùû¥ÌDm@¥X°h“=qŒÚl9_Ûÿcöœâ?o¯ì¿ŸäYùüÔñÿx¬ÕŸ‰ÿYÛØ ñk+üß'yxµ»þÝ÷Q÷×ó#î¿q9¢ŸDÄc³R}ÞŽPXýv:Á ½Zwz° ëŽüQ<7Çi# MÔr¸°jÅ?Sü'ºï•ÑèÌ5v$¯ êyO× Yݸ¡¾…‡|,T1ŸÛåóïåvhèn,`Ðþœíñ±üc‡0c¸´ÏWvû²e=ŸëvøuBº?¨çzBF†Ê([êäêÆD‘l­ê=ø‡öÖ¥Àè]kÈöZ&mI›/¬6ŸŠx¯ñŠr¹¸ -Áí`z³˜÷µÊ ¡}¤‰ghÌ|í tlØs]PÈ„ìªuà <§Š}TUýVÃO5“„rÌ* &ñu©B«Ãb`*|H5üÆeFø_Ì]Å(ü©n»˜ØN-v ÏË¿å²KO÷kÉg‘w¯pMÒ—tt± Ò>/wqtñŒ¨ [yŽ.~.¦˜î` Î@¥¸ZL ¹ø’,*މ¶í®’ËGÅ5×]e9GA¬F?ðQQÃ8ëß (/ÊjŸ˜â/Yó*ÏùÑœXJ^ ¢^,d$A;ø—5ñ±!ͦ0©ðÈêýB/Tžo¸¥X4I7ý—ҹŮ¯IqX>aAÈÚå¿•ÁTEì’35b¤ HJŸË‰$úY{Xü¯@0þ”DG7'—Òæ ¿ ŸèuIt¥ëU¿„t¢‘Ò_!W‰~:”¦toÌS)¯“OÄaÉå¨FìIqbаcF¿á”ììó¸nP?ÜIÀ”ò¯(dx󆜜+F߀Ֆ–"üŸkàCçƒÁX Ës\¥ç‹y*oŽ««šgC怣×ñ%ZŒTTó0¿â¶Ê»Jî ’Ã9R™-›õ4𽿝³‹ëÁ 9÷@¹{ÚŸ¯!ÞDqÁØ`)ü‚œ}¹U²x„¿ï}›”õ|ét5‰°6¿'¼~µÿ6áß–Õè~ ¾­Á·µ-¯+ú›ðíæÏæþðŸx9õÏáZØa¢¿µ%ÏGnû%a‹P ýUKPoÅÿBêJH^ ©Á¿6ñ/ü±‰?ª[ølâ­-ñ_ä8ò¬QnKzï0›þ$ þçûÜMÌ_›Ë‰;[‰w)j÷RVâÊz2Ó%Ú‘1Ͱ™k­;&ŽV†9´èæØVæ–|ÝõϽõ"«64 9r¿>up®²â×k™ª¹HŸ'^!uïJnõü ÷þïgƒÿ¶¹ºÿ{šguÿ÷S?öýßã¬þLü·­íšÿokss…ÿö$M¼û?è껽Rn8ǼÅyzK"4, ·ºL¼ãe¢»\WŠ¿¸Ó>ðµã_+Ö jÀgnT}k˜‰Åäè·-Ð:µä»7ÅR"Wh¥¥nL±ø¥ižÓ}šNFípŒù‘úñ%9ˆ{a Ü1šÑ½ Z©²À½Áìb:¼Uʱ¨‚É(Xƒ>DZ\J¥Jµ‚ú_\¨=jËpYw»ÜKÝW¼ânyEô¢—uйîze!¬ûO»îåž­QÏÎ&7©è|»a€íÙZO£{œ+DDÉÕe•ìÈ=㳯ҟVÄ;T5â¥]É:Âû÷ËÖå“oŠnfœ¹Ûô`Úö]ëtp1„nGø ™2(Á±‹WFý·˜÷&5ž² h(=œÉÖ)5ØžÆÐF›«68 |4Ÿ'\@¦E|_Ž·wäM³ ÏpÁœãV‡÷}r6+´RbWí8%°ìKYøb&}ŠÜŽ–”`wË2·`à#ø54meÌN [ÅÑ3e¡r ¨YýÑÌ‘ a(—‚.MTÅ{b"Ó^ z… P=ž0•¦Þ.C/È›çFÖþÚXQ>Nôš±/6ÎCã"”hf ù†“I»‘X´>m$¢g-ÎuŽv+‡Qª©¬l/VØ¢+lÑûÚ\¸(¤Ø×÷0˜±œƒr“Å Xìãô=¦Š‰ŒÇ/¬ô'·þˆôn;ì]¶°{½;æUï&ÙÖ ¯‘MlÖS©w›ö—ËÛìxLšÌw’gº³­w"&;.O ­L<ãФÄ!!§íŽK]ÈßóÚîx;N[–²Ý1”†V<ùlw\J³z5Áv'n°“Æ2¬©¹,Ïx䩚Ý9—eÑSØixä»#7Œµr's¤Ëoûô¸@Ǥ‘)µ~M>è­uÜM?);;/J®Ü9 szïDŒ­·³cìá+†ªèâµ’}2G9Pê pÃCYøè”£* Qr8³Z@¾ð—à e^ÔW8q!pGõZ~^aG¯°£WØÑúùëcGgY…>‚Q(͵¨©æÂöò«¸—Õ¨|BãQ­m”'[?›XL²Íh|éêéȈ4± ©‡Ò¶¤†ïÛúÑJ˜Ÿ6Ü_™ÚñdlÂæDö ¹ÿ$b4µâfг³?OØ{‹1{’³µÀ (¤§Cg2=›Ø‘x‡aNaƒ‹þb–\Ìœ1ñŸ2,ÔD šR) ]@?’Ò£ª/¦¬NïÁGœGíð¨|#£âÙâ3òì•íðOg;¸xU¾©(?’zûžÉ’i©·ßubxæáMÀäí®Š5å­“§P·´ù´H§ßÝŠEÇp"ÚºšË‰Ý•ÿùÌ®y ÷ÍvpBá¾eÒÐ[æ9XÊû޶ÞAßçµå^Ò;Ûö{Ëϲ„í÷›0o~xqÝ•÷2ÿßpÜÔ §@hÈ}_«rE£Ž.JD-ñRÔØÆJ'EÁ£=côßÝ¢´£ñÑéËPe’&}”GêÏCš>—ÖY§ ýQJ±Å‘áX-̉cuÄò` /J®õ=ŸÖ¢eç¸ÃWWÙn¿B#ãýJôh#¶ÐbÍ#À;ÓÏl[~§†ÿâ`1½°ÌëܨªÆÖ)Íúß)c±ú¤!R_,ÚLæ½­ðÛ¤\Í+õÀMØÏˇ—eÃÁØN”aK(ð.nîXc\%ˆúq‘Þa4sEàômf­ª#ÐLì.àN?Ðó¶ÿŸO¯žýÿ*þó=+ûÿŸú1öÿµú³ÖÿVmk£ê¯ÿÚëþד<¼Ú]ûÿ oÇìí+óü{c}µ#'âÇø²*"½S²;Ì ÔË=ü fµe¡îkа$h.cyº³_\—û‹«›þ8´ÒÆBØPÛ(äœCžºœc'{<­å¬«óšVÿUP¯ri_GÙ~,p”ß› ‹.n-4»Þo9Ë×Ea–fk©QbžÇieïõsØ{=¯{æ‡Âz è¡Ðû‡"ª ¿²aÐ9SÄ.¼gĸ}£æ‹rÉb_˜~ÌeÉ;ÆWå7Û¢,v(ÐÒ‹Ä…¼6ÚŽ*¢9¾_;“2©ã›Šî`ú7‹P|×—“Âeál/l )%'dÊ)¼9)Œ×Чøä°Š(žÀd=…ô‘|ŠØtã4\Оo&0}3(¿/:ŠÐŒ‚Ç|³ŠûŽB]E\³„˜~ÂøæFÅ„&9H‘$Ö’­”»uŒeÉ_®O&äTgµÄ°Àʸ„KŠd*º¿—z=—"‹‚¦²$2ƒ ÿ©Ýlr6v7=\ÌÈ_ð¯øAþ×àß—²ðSæ›”ŽB4ìtþ:ЩtRL5. o¡ ,@½–siÆ‘ ¨-jóƒa­ÓÀ]öÕ} · <ŒmÂd µRÂr¤\Ì ûAIýÍ¡Y°¢ŒJk’ÛW‚…д‚’Í݅Ф…BJ˜…ŸÃ•ÐL[ Mg%P\³ªr%ŒŸÿJhº+ÁcŸx%p9Å¿h`Èft%¨t‰+Ö•Z 0Õ˳õjl5Ty5èw^°™ÿ:Ž/ˆðlT.ã-üb½šTi +%I¢òã­,(Ì™L’mjA©±Ÿ•áEbÙûÃß`%w÷ß÷ôµa´|JEþ"+àXÇk·’ˆ®b7ƒö]¦¶ é-iƒ‘{šŒPüÔ-KI4Zõ%qÿÓÇðÿ.üÃßmüãÿí¦˜Qw{û˜1NN’û¹¾Ó­c±õæÉop<Ý}פ ;ïÎÐ~"±çöÐ h ‚öjøZuಳcü×ÂPÅÇ'ðC¯?¬ùK¬Ë>Õ ½Éf/2Y 5Ë£¡lÞ‚?Ïê1cšeMW`PJϾÄñëK‚¥û{§)]Û±ÄJ 9ÊUo!C¯H¸Ç•b ÁÇQ«¿Ãhcü-Ro¾~{ŽN¬Íq,ËëÖ•¬c8åC#ÞÃä¤×9X«°ÃDZ¬h‰“>cÁj§‹ëÉ„T¤¤UHjMPdÀ ×q‡åh­Ä~ûl'8´µõÈÃဠ/ŒnÕhi#fˆvÇ&r"?Â(ìÃñå$y*!XÆÚx¨sÎ$¦Ml;Œ–kõúñ.µ·a•‹m´žQ17« ‘¹€%C–ã]›XŽá üæL’ìÈ㬩zFY2HYÕ RFüw5»’=åx*) Î#ê =`ŠÐjì–8íÙ ÷Y÷fÈámC¼u¢5ïªXÔNGP4Ø™„¤øV¦!ócvN®®ÊZ´4ž¦©=f‘ˆw)2Ûfáå ;ø°gÂÿ ë!ÊÞÊ=–«%ÙŽXVY§ßb,¤ì… Â3ê¼®©“g& &bÔ¶,s®!ú'‡|‹EðÛ•½ƒ=‚Ê_ÅLÙ§ðœàxÃsCùyÈ¢¾,!×±“çøÄý*h*ÊÄW÷+Ä>Šª ÁÇ{ž–ˆ;ÉIiMÅ¿q}Z9ABfb–fðÉY`ÄSzQ,Ð/eMü –|ÃðŠ#™‡ƒû‰dÙ“{†B†J:ã1C½¦ÄÓËÖEÞF‚#ZÍ>ÆP¶<A%¦©VC‘zÀb~ûñ}âÂtHWË“‹–+ô$ºD½.¢lü©äô×Éîú‘^¶aá²4tǧv± êK¡1iº‹»ÏxôÂB¼fîdHvgYŒ<‹¶pc9fí9uª¡;RJ®–ÄÖ‘\ÄËÒ%ï ea4„ûR&Ì>\K˜5‘¯Ü*h×<eY’¿>hËÂ72`«Ï•¥¬?¡„xî”&¡š¤n¤v#/t¼W“~Ä~!³Å¹ºxE]‰ocüN‘Æ™g<õòmóòÍZÌ̈àõ:ÒS9 pÜMæ¸Ç'’ßÇÒ ‡©%¤@%‚¤ný¨ç-Î{•þCrÒ”ŠœC6s°Q›„ãã î[•V:önBrýV‘b?þ|KâÆš4òjÉ-–¯­ÔQ¬䉤¥­({6žÞ^*d6åô®ggDäÑ­MŽ òbRßýªÄÐ/ÀÁ¿‰ëÉèrf>cí%]´`®0…4‘ºS¤û‹{׿9aüAô:ïQ‡¹àVã!Ijæéç)ýÜuñ+ L|MÝëàñ‹¿G¢‹Õ—ôæŒßDä¨* ¨{éü «þ¤£NÒ$Z—;®|D¤wºxs/{g¬{<‘·À/)»wRå÷ø®9òØ#­îϱÃÕ‡…°û°ëiè×H:åo¨9漡¢ñcÏJžø=}m&Hp#škÂÔ‚ S£ S˘0±–ý/‹½È.«ò;}C¡Õ± ,Ä}›qúg….*B=¤â7åê:ý„òŽIþŒqž½šŸÒe>Î?¡Ôh]U•ׯ)1OÏ,›PÊôE”:jMO–mï;ñJn{ÐÃ5ZK娖jb!!U云ô£x£Ë¾°á<&£Ýæ„sÇÙ±©´V+Fó¦U—BeR•Ð+[€ý(µGdé (¶ñâ‘,÷mÂ÷©Ý¢²8-+Bósæ šWÄü[~®$±Áï2{|ÞÂPd¥»ø­PT¼r©‚Çë'y·ö?ÛÁKˆ×§á á(Ð꛸]1›©SCŽO,m…•°l§4ï¤tâ¼ ²'í"äñH"ÃÌ%¼Á¼?sE©¼ôUúL`}mÉúæ[©Ü0þ=ÞÖæiZ5›Ñ´†×“95­òÖ[kZñÚ[´—Ñ´V½æYŸÛ'x²rñåö²j× y–Ú6•ö_DíúüT®MêÜD•+\•^§]>VbúrŠ×ã•âÕ.ô‡+^½ ެ‰ÈÓ){.úeX¸L0—¥z;Wê±2g$?©:`VìJ½®Ëmùáâµ¹J*QL¾øóèvÛÐÊú:·~ùs™®Æ”6¼¨?Ô´jNÔ?˜Ò8Ul©²yü3ÆÇ¦0V“ü9hŒ›Yãf²Æ¸™¤;³÷Ü{MÕ+KWüW KS¨ÉgËjWµ\`ÝrŠrYÄôËÑy¨—éa©—óHç2-d^ŒVôÃ Š¦«Œ>ŽRo룉¢€ DqÃùênzjɽ×3õÔ¤oE/$ÖSSÓšò›ìÙ'íÇ×ãzêõ,=uê4-'//‘¡Ï–FÑø3{¢Æ]ô¿Œª´…£Õ6=ékµ­7ÊUØ{–ìÒH jàã½*PËm4ÕF+^µb›h¢v¼jç;V9\Ýx-¶õYzõ¤úó.©#§¶õdi :òê†R’¯£’<áÔÅšêZ5PG¨ÏÖXǺ+QE~R5Uk%y¤„eôò~'+ËßheyBÏ_QÎeYZb÷}™~Þ²§9·èN+F)×eîHg±_±ˆ7÷ÒŸûý˜¥G ü[!iÁ™˜‡¿ª}=—½1~úz¢Ý¬c«|·-]º9¾U«þH%Âmõ:v?{ sÿkø|ð¿¶Vø?Oò¬ð¿~êÇÆÿzœÕŸÿ{c;Œÿ½ñjµþŸâ‘’‰‡ÿÕˆâ¥Åê^¡€ý¹QÀ¬ðØVøg* XÃbWÏIP`x¥HnŠv\¡º¦ÐîýH´yƒg‡ÑëO+Œ Knö®4ï’‹S< gÙ§ :Qp*Ë«ßÕ`y1¢ iZ†3§g2A½Â¬6HuñÏîµ •]ˆB’IŒ¡‚h‘ŠXe†Ï' ´ D£‰‚^köò™S÷?½‹v ù‡Ì.ê@]X}íQ ʸèepÊ<ÅY"j™_² ]æ•||œ/o]§Ä×[:Òó eƒ˜‚Úÿž„ªMÁŽæ!6”šê6(ô„h‘-ñ]{¿”˜$ p"-`l4ÄÆÓ€TTŠÝöþ‡ž¥ˆcOÄ„´ü:&ˆ:ýÜ#‰Þ~+5"Éò€‘º?í½ë*…M"^§J¡å®ÑQº'­÷Š%r­°´BcYh…ßCàÜS äÙÙð|dŒÏ˜tßÈÏÓ!î^ -,g‡(sc$a-ø¥PVx¢ÚcÛØóÉ|ŽÁ'ð¿«MšâòCw+:AÌØž:ŸN Ü¡„g[Ø–•>oóã(rÈ2 ÄWQ0ÿòÔOûZO¶»Ô• #ªNãkºñUÿòäÑÎÚk*TÚÔ¢à,µxóLkDŠoñ˜ßÎÀFÒd=nGt"£~£5û$†A6«ø—Q óM··r˜Œ±lRlÆ_m8DІ¨LJÝRôu‰ ‹»ñ®Š?„¼ê%i ¤3ô‡C¶°¼2ù&â½ç›4óbC¸1‰|ˆ ¥üIñ!l½wIŠBå‘ÌY’(dºÔdA)j!æuó1ýÞUʲUšœÄðvϸ˜T¡ýG ¦ƒx×é`L²pŽFü7ëÇ~7¼ô,­ê|qm—M&‹‡! z°ÑÔ‹Xr9¼ó÷Ç ~ §¤0¦S¥¦Qn=L&¦L[¶}Íj=DËK¯‡øˆ_eÕê×칫ҲíGz$aÀd™9hiôy•¦weБ¹º1eø’êMai®­´µ%Òë¾ sh6M’¡È «vËâ9¾‰¦[;ç@¹ð .ÖÉÃ~½ê;+ì2(B™1?ˆ$Œ@é(ìõê@`ÄÌ—3à/ðÈmV{ýÂ~—b°l[+ã9^XެQ³·êÈ~aHq¼‹ìB Ÿ\vËAqˆ÷­“<ˆÃ¼Ž—h飿Iµp¡ue¾d¹t“î¯|ÙWVàIùOž^_Q÷,N N¤¦}¨?©¢ÚN? D ü"„D,¿_ìPu¼^ó™Û9(‡„‡9 ¤¸~9AKgÐ¥vW6—»«mÝm6´´]ЖœM¶­nÒ–ÕÞIx{g–ëÊŸá˜rH`Ñ ýïxpŸÃ¤"õpãX°ì¡@bŽ=ï5Àü…|þLë 62Þ¹eÚHŸffµêª%ôA°Yy~äÐ¥’î/ûcÎs^l“ë¼óQAm›Ž§ÿ=.D}#ÇÈ2yNáÏøyÁøRŸhOjø3É:ÕŸ2Á™’}墮” § ã(é2^_ŠDÉ’þA#âég¿[î ñ:ÿA#º‰¤xD:î÷?V”ÛiÇ õÖIžr¬Ð¯ïs¬HŸ‰+¶éXñKÊDf|ê^§±2˜ÿË>®ýÿìÙØÿ×¶Wö¿Oò¬ìÿêǶÿœÕŸiÿÿj³ÄÿÞ¬®Öÿ“<¼Ú}ûÿ®eÿßîüÖµ½vJ¢¹·³òpžGö —cñ„.;®yI§€.‡éœ9q:eÜd®SÔ‹xÙá€zÚ[ c‡çD4õ|VŽÏÝQ'wŽ²Æ‹›s.l:ü|f˰¢gÀ5f%r`\¸„ìTd݉N wòVèÝ!h¶ M©é\ÎGÁv °‹ÉðQx¾6ó;ÎìÊç:‚ G3ÅsÄ›7fD=6èJ  ­°$PYžé¯Àî ™²ÏØÓ' –óï¦ÿG¡ZjëªymÿÉøÿ[áË—KÙß?™-}¦¹|«Ê?áÃýÃ/ööÛï8Èb’QüƒZÃî“Ngs;È\*Z/²f)‡~Èi(±|Ã{šJ¶¶ÙDBØÃ¶ŒØô,#”UÄc™M{·<ÙK?^óïmTÕ»áû¤Ôû:虇oå© ?Ÿ˜/#‹‹pßQxA{œS NÇjͧýñŒ-ò„¢sº±M5ê~#™XdÁÒö)¶ï!å’׿ÕúÙ!†’«mž{w¶a‚ƒ²G„†í>¥þU—¼ïxk 2I{€rÚ|*gN¨²¿RDÒ”*Wô¤òŒ 2fWí1f×’Õ• 2¨Cº@´{mZ“Dg›AúØ|uŽã"›Àš2y©Bãý0I‹d Ӫ브T,SèP–’8o±w˜ÕIG 5QJ™.=•UÊßõã"VQÞa×–o#yìИã2Qæä©¥^ [;Npa­8…e ^Ÿêp"Í˨=øÃÈ ÅÞ Ïïjë ýªPX!ŒÉão±hêó¢‡Å¡šóE)Üo•<Û}£Zbò`«û³ÈQóyìF÷÷Ü=~y¬Ýãù2Õt®×´·¸æƒnq¶‰s¼!,”“Ñh(”k#EÓÄDn$„i}*zăfö!Ss•xÀŽÛÙ¹¸þ ‡Ðõ܇Ðõ{BbNfmÁ1Œyá>ÞëA´Q÷²³´–8OrW-}„² Àã’B@4BÆCžeCß‘–ç’~ŽUðw>ɾÎ{’ÍwŽ]Ï8ïz§Ò|çØõjž“lº³-ÈÐL‚Ì÷g¢F¾ñmóaN´ÏSýýæQÕßÕý·výx’óoÓ;ÿ>½pœRIÁfm™l×+þBGå‡Ò^ǧ@¹êL‚ò]Ä©Jáœþp?fR<%)eŧ=‚ÊùŠÉ³•ÿÙŽáQh±”.ö î\2æÆÝSº+÷”»?–ÿÇ|pyñ\ü?¶^­ðߟæYùüÔöÿx´ÕŸµþ7·6jAü‡ÚÖæjý?ÅëÝñÿèíïíȬñ9ì•ì¢(ðI¹‘7ùW‡~%Ë>ÍŽŒ!s5– !Q{ÞŽ#ð´áM–æ5˜äwö¡Î–¯Sœ@>™.T=+âÞ"LôþbïÝéNs_œtöwÝÆ;´óß“^!ûòwÇϱ„ÕI`¸Ë8“àT4&ú£‘ ?Ãp u2™—Ää9ð ÆŽ_ÐRžÌÒû®7 üðMñÿÈå'ÄÿkC Ù®'—Ô£hÅ”.®@Ñd*Î9‡»ø ­Ùçþ6¿€?û£YöŸÄÕd˜è ¼þ¶ßëìaþO¿è¿vð¯ëþ ’Æ:ZÚrrHŽ ²d¶Ú„G>Ù¥=H‘qûè*˜ÀßÅÍp„γÅÍ-åöÏaɉ«Ñ¤OJ ÛÉpL–ã°Óί¡õËŠhÌÅ·!4aëYÀ_\“Ù°ôÛù {ö%ôÞç᎕”ûòòålq§Ð‹y Eú`q>÷‘»¤À*ƒš÷ízxq-Tb4üÂÑ6wqB(·àlB~4î–ßlPeø©\£AÒ^ôb0üÚ?‡3ôU8BŠ®ô/Û> ¡úSÑFdDÈ+‰søæÛ@|Áè­0 Æ“ñ t0{ÍúþÞ&E%Þ>9œŠhé‹L§¢·âE½s°½&ãÑwß ¨&637²p‚úe¼O+C§æ»s¦••n»a|Â1AçÖX,ÆÃ9Ï ¹*]G(õØ Á„ÇÈ^ 9½”÷Œ4Öá{/í9uh_•€fyÕ¸®*ºRØœ˜‹KÒ"E½W‚x#öÄcš](­,úhÉÆìß½1åjJs`Iß»Eû†;^fóéä»ñ)Nv†¿Ð§RÒ@çñò¤Å@M'L]»k+š¶äAŸ¥9FnãRb2™ç£p.~{éø‹× ÃÒç}J×ÙêL¬È!&Çb²Ó7®„©³mºàõçЕWƒéºuÁ<«;à ëS…K‚%]õÉqº°O1\gCRIšÌæùn…_òMHtó¨–H®[ æe83Hª®Iç 9*°¿ãˆP!ª—$=Ëò@îYÓ+ÖáJÓ~·ÅÒWxç+”zúsø;è\kJ³Œ-þ‘’½]l;´'óÇdÀm7\­ÐWmœ9#8`º± ¦ôG©Ðµ7Ãñðfq£dA¼ *Á2^ t)j¯Ôpeã»Gá&Œ”V+®ZZÈÐyH–ÐzN”4¿Ó©³Á%GÒ‘g¡ 8T\,F}oM 4Rª·u4Ãuˆá/qHA’±¦ gJ¨æ’¯ÈŽ ùàpàÞç‰X%^ÉøÍx"ÓéÅèÙ Îhv Ó¶$[îôjí迸0è“!ô êØAIömGÍåpi%lQ1i"á±÷ª(Ç"줮޽ %íw[†ëP¯¿Î=`<JOVźØ,¶éZ»]}mþ¢X¬‰´à;¬Ñç¹¶½3èµF¼A—âÏpû‚î­×)%¨‹_·Øx€néB«ò°¢sÇGåHÔ»äNš%ñÆT+’p¶áO¥”³˜¥Þæ. Ê7îÈ "âÆePd•ì]/7þFÞ¿‘Êt6Ói܇é4–a:;0ÊOK2)>ö½ s›–ç+ÉÒ8ÁCÕºÉõ=^ÐHå1ñ¤±Zþ¼üï ÛàÌ!Âm¸pƒS …m¤õÝ}žf”`Ü<©\Å"Œfp£A8ýqVØ\Fuô¿†³®Ç–yIx)PÌÏ×âfrY 7~+»ð`1%è 2â(ÎlõÙNF³›Ž¥Óáù‚5›çê@~4¸ºÅ|>˜–”.k*ºC ¤în“Jìî÷à7ݺðïß;üÁ…$Hòø|jÖw)d&üÆžþ„êð]ã`AC¨‚þÄ‹D Ʀ„"ðãÝL†ß;ñ~yð›<ïɘ5-û¿WÊU¸‡>û›†õš&€Æ‘kEª‡"TíÄÍý>5w€_âån¤æ¶ÑL"¯ :J?BIÒqOî ­BŒÒ€—úÜŸ«š+Ö£Ìâ‚«$U¹í¶ÏCXaD“Ĉ8»Œd5én8È‹!Ss5´Y¥5_oJˆË‚«äÆ~lèÿ}«cè³ýŠœq²±6QÂzˆºþ^BHV~Ý ¿¶j¿"É~°ŠÈ4Íg4yU¥i[ÔOvìÀv¯€ì¡@ì¢ ÷%…ûßZÄn²V,Bîh.Æ`ßï˜UõO»ØNèsG±ÂE°^%Þ£îAÒ§v`=aÌlŠlMHœy4²j÷ ÎÙ<€ñЩFóªã¼ë¸/ÎKªÎ·ägŽ CÁ-±Ñž˜mG­–ù/‘þ’  ì,_bu#VdCÙ¸C‘¡}­ó!`N¹ÐŸ$—É@Ò-ˆSùx±˜½$áÚ·¦6·×Y†Ÿ0ˆxëú¥Q܈“Ñhò Ï9pÔ¸²Õ‰¸@³±ž“O¾ê;¡P‰OV˜_ík“]im¢ÎÑÖ¡ŒŽÔæ¸m]Ý–¤„ÜCf¢°IL×"*„ú#k£1—ô•yE˶ ×öÚšV²êôJhêñˆD&ãïp༸Îã8“B!6ûfd\õgsÂ9ESH<Á³›::™S'œ¯†|ÛìÛ/”ÚHLÔ«Ü3‰žzÕ_Œæ59†@0kOßñÈôªHfVŠ& üËŠ=þÎu$V&Ûo•w·^q×_ÊNL+Ë+s;ý±½üëÄ)Jz$ÖœËHЉïÔpÖv:ŠÄ0Óít òFZøŒi0ùµÔ<²ï½†±ðŸlN¨ •E a0žÿ–s ý ›rsË §‘<²ÀPÃ,ì_N][~€,F£ ¶\²ڒж'1@VÚ¸ãa$÷¤1%­Û®ŠJ9KÉÝŠXSåf}V⦔v^èo^É2$|Â[A<²¡\%AÁ$‹íõ×UÝ0ém¿to‹˜Ìºæ‘iÕ¸Äü üÄhp5—+‘[Q}Þ¾ð5… °uäqTž¨ÐpÃ~±fò™F«eFË—¯9qB`xÝ@«ôý“. Çv(zÿv6MÆ/„lˆ$mY”’úž_þç[š{”i3æ0# ¤Ô¸.Û‘ƒ<ÍÁ\*d°+i¹Ofù¥õ“»¨m©ƒÖ0N!xÇêmªeikH"ªVPE*¿Cš‡h#^à9ü1œÍgÖRJ•"°«ña´/•k³2rŠ9Ì¿¡)wî§²jØ!fóᜠGÇ上þ§ƒñÜ'£,ùï`¥Û ÕKéñQ±÷9OšÃõÐ[œEÔT8ÖžÕð_1™3ˆX.<ºÄ!I”Ò&rH%2âÚM—DâC LÅ~"Ä¢o…îâ|MœÈÝÆà@W¬§óoZÖL;iÉÂ[†Ð²œ±ÓY ÛíïV6="Æø‰óˆV ‡€kdÃhùw‚s"«Ú ó¡>Ã+µ$í1-ò-´‹l¥G¿‹pÿÜu‘ç¢MtzU”ÞÛ¦ÝYßG2LbÇ”¤ž«JËß m$…Ä}OXgØâÈí6TÛÑ/á® u¢ª,c¼ÑšZO&°õn¯ -óe~òâç–Eb®‰ØÈOtu9Åy?Dn)£Œ£«†ú®3Ê­ÍU÷ÙÕKéŽä›”A—c—Q·”6ZÅ;þ¦ÌnÖ1«¹æÎ)G°l™´DÝ)µbÉu¬Â#4ÜwzRYf&J·ü´Š|寒>˜½ Ú+EÏWØYå¡#´Û§‰ÙíŽxx:4±æÃ<Ëê³u€²ä <8£åç9v;˜¢TˆÖÊ´Uü†ÆCp €ïo"1SNA%èÏf“‹!]ðÚ–tžÄ,¢l¡b!A¸:…£aä6õíN¦$²Ò! 7±Ù·>cx¦²¾ô¾ ò9 赈€ŽßÃËXLG|ã‰>âȦ¹¸‡˜tJÀ»¸è4< N(Ïœ$ÏWYùQü•$á($AØSôU‘§è»¿‘LÌyÃ'6›S4(ÅIä¥ã¯VuCzýó§ã„@­¦-ÛÉrb¢¦îõ†Ÿ:I9š¬MS‹&9Ðãuå@ÿÓ>Žÿÿçé³ñÿýzåÿû$ÏÊÿÿ§~,ÿÿGZýY뿺 K?ðÿß^á<ÉëÝóÿ?„#ÝÑ»$uXP3Šù]V.Ó“z~>˜¡¢“êýéaFè2ÂBƒöá¥ñôt£ùkã”î‘ùR˜¼0¹$çæÕŒ­q$¨?ïŸGhßûmÚ§è˜ý)!1Éß ®zhæjuÿ )Mžýü5]`KÃd×Ãÿݘ îùE^!3_Ÿ yÍ«B¼MÆxñ.Î#ºe9ŒatçÄ%®ÉL™<_Ur¼!W~íèeð«j*¦—ôK°±LØŽÌÔ÷÷÷˯_miˆ2!@ØêÆ—yÀÎËÃ)߸‘JǦÞp>ä‰OdôÛxyÓ–nÀdhÉÁ¿ Ä e¥ ̦Á^&Â,n#–ƒéûç¨4¹\Dßæ0 i0àÃédÌ,†Ú†…—E]ÑÅ„îý•ï„nªj[dä¤È#î‰ÌàY *˜¾°W¢rvDVž‹Œ:”ìc¤òL¡ŽÄü Òaýº?º*OnáÒŒxŤV‚H4Mô[P6ÿSü”F)Í,YÌòáeŸž¡½ @ƒCuÅ8uíáúV`¼óÁøþ )“`^»µGÑÊSY8A™°¼÷+°%·×ØÝHªki{rH©1 ¢¢¬}h‚ÑΉÖ>’n„DˆvÖû¦;Qü^¢4§ÙiÔÓ¸âu÷VùjÉè˸F9 ó9NS7øíWòÕ²‹¡.@Ë)ŽXílSHóQ¾ß˜p€wç¼üiuK/{ådä5ÙZÓÄWa²j-„¨ k²™vÚI»ÄÓÏø·½žÙVƒ ý.W¨¢©Ð?Oɲ¡Ä®pÿ õºLw¼WÝ!7Ø\£{:¦MTˆ3i^Ö?§¿é6ŸŒ {\ ”¨áøä™6¾t' N>|N„·„kQñð–ZË)aÈÈæ“9Ì!s?b÷'óE!6°ÃZÔk¾{£Õ9%ºo—ˆ‡~Õ¯€7šëÊ6æÌ'pi6ÓÓNy-Ã$V[ÝÅDç¡Ãâ`4Ÿ|Ú2ñ\¤ÇsËV=D{ºÄ‡=ã¬Ì­v(ŒdT”ÛÙÍÊ‚ZQ|ÓÍoIáJD‰õO‰mð”ן[Áx#iâz2ºT8f öE•sV®ùsFõHЊ³&¼£Ã"š²Ó,t>F÷&iWûüêAPÝØŸºéhh0r$ËßéªØïàDcïDhsËÙS˜^Dä"Á°ù•/0œ-,~­]|¥mÊè"1äÅØÖôâÙaô­ÿŽ}ý«Á£¡Í¨™haÏÓŒ><‡|EÔ;úGg]ˆZ1¾*èD­G¹[Òè³5XQhRçìî¦_±œNd“ñ¿Ó‰aXD…*"ßUë¼¨ë Æ“‹ 3Œ-q(uA­8¤!Ržt&µI"Ö* …GÆÁ£ÁW<ÉévÑŸ¡£«\ò¡ˆ†æ´xe]Q½eʦÃ&°×„]r?Ld2Ö¢?aÆ÷•0#š")ÜFÄCÅ@;d~Ûà» A³¡bvðwÃD‚³‡R¥„䪎R8$L»‡ÂS‡,‹ô´Ã¯BÅ„ªÐƒtþOhàÞ5ŒZê7vZ¢>ºé_Æ'Âl<­þô_$Ë6wÚÍ—íýNw×N³{=Îæ0mßO`E’Eè¼?ÔB¼A¯ó±SßÜmäô¯gEl4‚:๘3ðEå ÞìîWÔm˜ö­iÝýªN=îU]ÛÜÖqåî­]r1)ß±7:ì¬ìžÍãØÿ ÇÏÇþguÿÿ4ÏÊþç§~,ûŸGZýYë¿öºV Öm{kµþŸâáÕîÙÿ4Ú–'2‹æ»]ÜÖ»'ÍFÏ ’)4êÊääçû‘Ø£õA¶[½Å%9=Á¿®(Ø ¨^”Iu‹ŽOR\,ƒëýÖŸ eí”Ä!ËXã±,îx6^Æ0@ô¢WþwŠ·€•ÆKÜñÇŒJÖt îúý+Íô÷ï2åÌ`…[üJÓ¹¼Ï ב@Å™syçÞ¯:ÊžšÁ²ò4…vd ÏÝ Vù5EŸôŸa»åÕNw åÉÕ‡z¥íE:³Q\âè;Ôª®Øñ"ORÏ1½ÖŒ¦6éã¸cìBÎ8Ü1š°í|â{Àw=Ø9ÞŠ;/p_üqË7¨—ª¨ šw“`€sõ¼AUVþUdÔQ=ž=ÒÙßÕÖ6\{[EõœUŠwšÐÅh7ó¬/ŒjÔÐC}AK`r[okXZF³¢Í˜2Jb0¿ˆv»$Ó.Àîû䮦ýùŽ]óɘÈ!¸í\NÞž8‡]àËL,nÙµQ5Ⴌ$c‹Åtâ' *.Du}©nE«^)á‚\v­þòóYéÖ«nK“0™ †a;·W‘Îæ^ËÕÃw°!h]»·œ9,À¿vwŠšöþäÅ‹FÍnµ²[ßïÛeàµ1šËФA'êrŠ¥6<•Ââ'H ¹ !ie úW–¨aD˜`r oúŸ9vZó΢÷Ä$ep­¨¹~¬ëòÌ(+¹6‹Wt9¿JËZ” ¥k¹xÀºû7nÊX„nHÈüÒÚŸ¸`ìKÙ‰ÖBà ,aÄ Ì·ó)ª™=hdíÜÁ {—áÔ°i[TtLsxÉ!uË‚\g]÷<Èm)d¨°ÕÃR×ÜGÁÕ ,¿p)ÐüÌÓCIݤD{ƒíœpŸ!å*¦@õfIAŸAË^ù«&õr;˜¢ô¬Å÷?ô:u-¸–,µÅ ”lç1J6ß<ä)æ!m4œ™gxÐ)YÒ²>øÝN F;r"Ýex¯]ƒÅÐÞ• Ú‚Ñ^G” úz˜Þe¬í¡mÛyÒN×6®÷~þÚkmÒÏj}Æ÷ºòŸ õ©šB.Ö$Ó•e•ê£ñt¨x¶–xr¥)§5Lb™§Ý2¸ã‘Êwª%±Ó<&ðè®Ã“F{aÆ¥sS{¯ó>­Ù” &nÊß[ò7PJm;‚ÿÓ 9 !PÁºjÓçv§µûÛqŠ&¥w²Û““Ã*e¡áãßò±:Ù§ßɵvwwaÍ1ý‡#ü‡˜(½Øí#w.)•²Ü²ö÷÷ b+:DiHé±²öêÐ9)]Qïž¶,hsh¿Ævñʹ´R<×ïkͳ·ûQÌ¡ÜÃÞüÝ¥ß`ïîÖ› =Rß=ÐÌ÷vE}XæOcî ¶þf:š5ˆŒ•A‰«F…‡¹°w‹ÓH5¡r…`i*ï–Ÿ7Š×ÏûÆÊkÞxÄšÓ\Ù¥D•°'úc¹©É­oÛ"çˆ(*_ïþï^½ |¦©:Ó…Œ!ÂWKRX €£Ðƒ÷Dn´³‡ï",gY{5Žjœ-lƒïæF>Ì•cöaÁšµèÁCžL‘ä…e;Ñ@w»þˆ„R±<í/'Zò9Å4øžÙ”)úÔâÞ²Öów^Ü´@·œÅÔLÚàîj1ÞM wÞ¬kbÞ_Õ›šÿfK½Ùôß¼Ro¶è¢+)(±Ô]bÌ¢ô¨j!™#»ûeƒviîµÔZV—Ãs0D¥Ï½Wá`JÎy|w N¥ÂŸ\€6šDP~"<ýŽMˆ¬Q¥Á¢ÊŒfçñøÈNÛËb/&“ ÁBêïTÝ¢^N!)v¸ óˆm‹G ……9x¥jP¦ã5<ü7ߘC9Î'··„¤­¾vYIR¶s0Kw¸žÂ²Üñ0ÚtÚ”¥³Ó&±®3·Ë\&£a5¨MØ7%î(d+½–†SIƒëX n:•¡ãU¦+ÉWz‘ë´ûŠÅHD‹#XPÜ_ªávæss2¹Õº6ÇI52·¨9âU³áô\õ5ï§GÕ¬ ‘ÓhfFw)Z¦ŠO?X²Y»¨¤~ùv>Þ?=ȶî—á-iaæ28‡²6æ>!Ã\²ü`AƒUmߌ2G\ Ï;ÜŠ6Ò%¸áº…ý“VÔ?aºñõÄD\Œ&³AIô//évtÔgP§ºYÀ=ì çúvÓov%ŠgImÃc‹Z¦hû!òÆH'Ñ"fðÀÙÞBÖ2\É!÷OŽKŠˆ<<¼ÆSÅ»Ñ)˜N£nó™¾vû7q¹ãê·¿Û*g·àÉ÷YsL fƒ?w'·ß¿11C-.ÌÌñ ò\Ò1ÏQ]uÕG$““‚§™‚®_2SB³³hÙbÀMÔ.,¡Ìˆ±±2jëµ{—±ièð»…÷–æ©lóŒõé\BÜ¿NhTDAœ ;„„>Š)OCÔ–DG N{…Ø8ɾÁƒuÐÚäcyØ(:ž[_¿’ §Y4ž!-?§·—}‚G–Ú9-cŒü:¦š&>þŒ$Ã÷¸â¥º&Xk’OÕüÂØ¨™pkÉýføùƒÀw@Þ[œœûsµ»‹cý/w¹"í²¨‰t±gÔ–Ç!~"YH_ájÚìÇã¾ÉEÚ–xVo[ÑÑfßgpLÇ ù6Òp3û Aåj”SÈx¯Ù·üÄ [I38>;ŽÌ7À‹î›É%›¸Nû7åîÅõÍðrî^Þ.¡¼w BJ⎑Q…žšÕ M–GeÜ üü]|#QbíQP½Aéå(a'$ R y”€ý©×‰q!] MŽ:|0á©IfŠŸëîHAæTøx ë2à2&/±ŠY~ÙpR&Á°2¡oò‡‚Xð]9â åÅ”6¼IlPzÛ¢òÖîõä@Ö¨òÍw¾ùPÈ|•Ê“µZMe½¨#FÞKÌeX‘urû Œ hD½`øU¤ÛHÍ\áLÑH͵\É:¡ yÆí&OžAVäëKþÛ„øMWë‰«Ý µ¡¿®núûÍa“Èð =Ç­[ª…ÜXÇWßmޝýœ›~©~A«:ºøâ-£œ é±P¤FŽ~…]ÀŠWöC~ä6¦~(HæsÇTIR°™Jo¹x[ô’•çËLÈ;ÏdÞÈƱŽTÑd–á×}6gg«´Þ@þ*9.ŽgW2ïê«Ì·u‰qIl½û>—ÍW^ü´îjˆ.í‰}%y\9fα0ËîíH«5§h/NvÇÞÕ&·O‚¬TGDÖ å´ùË뉿½­ˆj¹öKIÔŸ@â­Š×ÂxóLÛÞ’÷µ©˜ÚÄaÿèÝF½%Ž& 2Þ†‚[ÌKêðñûlÈpù.½ï'£Š¨½’<žˆD/yàãRø>›L¿Ä+ÆM¨¾JjP[§ñ®0þïÚš³ëLå®ìd92VO› n£C«(˜ÿ!‰“Üm ²÷B<ì ¿’Ý'Hý×cÜÉqcDLÖö¤"Nww^îv÷Êo^ÃÿUYÆé®%÷·@ª¾yó:é­Z±‚CÌÒ£Cèx ˜ñÑ!84‹nCò ºÁif‰ƒ««!v²Â F“ 0Áþ×Éð’0뮥s6Aâ]bW™øµŠ$<„: ò‹«†E‚Š` ¡¤GkЬq€¡˜–Ùö® ×@¹¬a—Ó"³á)°na6Ž¥”ªÊeyQg™\]•U6Øœw¾‹¾‚+îc1³áÍø(ÞMjXÉ_ǘ¶Ú):¤Šˆ×?~U¨–ÿý‡âß^ÿ?Õÿ)ÁѤ"à(¡¿û¿ãrõþg­¤7C§ñXŒræ®×T0¾ÿ$<‚ÈôØ®³ÁÈ’°k¦(1Òœ\Väe熛BNÝIæyGcd`a±b`É£Ïë(yÖÐN®ÞJñ Kóšî¸œ£—ÓáWXÂ``{]öç}ßO˜ *YçÁ>]ÿÍtÍŠú¶3ŒrÃw˜À`PÆ’o°*܇õXÅBYÅBYÅBYÅBYÅBù‹ÄBY…Y…qò¯Â1ÖÀq”«8½9ÿk1”×yŸÙJkàò0sµÇDEô’4æ.Hðã¹o ?©@ÿµðPêô¹§/x‚©é©NË}L6Bùq† cÙ·o4Hz]…uÒû‡ Œ\µO€N·‡®Ê쯼·#Ÿ¥ûÙïèÀF»{BÙÈÚ¹N嵉ֽt@Á}ÆÜïtè÷á ÿêté÷1÷Z'i…Àëã2´àYƶ°þ&ÿjsŽä2àØM ßt÷ö3ÙCgèlÅI"3n§qØFP½Ý®&ô´ÒܯÀˆ%•õÚ/KRËÙñ¸ÓDbª²)ðIB·&øKf§„± £(‹<Í*ò_¤Äƒ•D鑤ä»´òªA2‡lÌ-¸$VÉè‹ úOr~,«±laoÌ ^N”…-Q´Û¿°~pqc6¶4ØQYÉi,ÈE¾Ä<ò‹‰=‚“Êw®Ÿáe!kú¡F´0¾'%­•TQœrÅkàDö–⹲£ìÑðYë¼£áð!;í©#pí‡%k´v0_ë·‹pÙ¾]„‰ëìBç÷^ƒ¥r­dGK)5§Æzä¡B|0Ý(.W޶±×xßéå¨'d‘0 B)ŽeÁÀ0Wvú^JCआ—‡‘ËŽ´*\ø\·µê>ÅW°Þ–C§™”üyhc[ó)D9nu,”c+eƒX²bj D§¡ÿ†&Ùh“Gš_yÛ_“Ûéðæfp‰v )ó·¼}Q‚'[p,ÊÃK‚CæV3²é޵ºØ7gj‰î\ì˜"—f3mHœÔìr‡ûê«8XWXkZÅB`£þg½°ˆ„‚5Ó¢$Ø@Ò>¨¼û­®4Ê75ïOK|V:iÌjÑ1#ºã»0Lk¿†p·Ur‚ÅŸ{@’R$³œ|=£ëxŸR «'ºm§²ÈˆðÄèpÑóe&¨SC㬹F¹-¦CÙétm-,§7—‡B®‰µhó;x=˜ð-š Z8½ó÷œPÓŠ +wc¯kêõn×W0³™U„‹ÉlÎq†®°‘oìv•]Ç$ò nˆB·ŒEqÚd²Ýnf2afz±UެƒÄdµH²€kÜ·’X²qrÕy¨6i¢)"õy;jdƒÍµª9WC5ïj8%ns—Õ¢ÂÝ}5ìvÓC·½Z ?ÑbˆmêšHá&’Ù¦ôá9_mŸ¤Æ·ÚÍj~¤ªØ¶PüHëßnúß"¸è–ÿå>FLxå{F7ÓÛòk½Ó­„MÝn (lgÇü!UtÁa‘¥dÅ.¡õjO8Ž_LêY‚@ +‚ñ¯vûSíÔÛ#/j'¡´QSWΨ¾áë£Áý;Y¶š‹ô‹É6°£óО §xkBè+€€ÂhSžíN¤UŒm9׃Þð /þ.¾ d HÒ`Í^hßWR4I“ËZ–CgÓùõt0CÃIëD׎ Öc4NÖôƒpßz¡rŒâø¦C~Jwr,œö$bf‡¶îªW5uø¸iýS*²Ã¸ŸIùᥛß^#„¨ŽI‘ûà©; EB+š{›=ËÑI…2ݾ—Nöþ*Rw[JЊç~hy_Y.ôä¦à^ö3ú´Ö‡ö/.&S´ÈƒÓŽ•ŠU—gMŸ(!u˜g§þ›xÇ-¬ ðóƒbV½UÄaZÉdŠžIÉDYʸ†ü¶S¨¶/•åP”B,F-WºPÕB¶ÿ&f¬Ž7~%ƒÇtÔá] ?³ý›Ì I.”ËèÒ*Å ªž+³°l›ä Ôp;™ ífÀx‹–ã³»]ÃþÉÒ:Ó²Üt¬ó¬ÕǶþÄ¢»%irj[a~C›š±ôMæøšÀDÆ3¬ÀÔ„ž´ý‹ëŠ¿ 莭``²ŽþÅÕ˜ô”n]›!^àhõÏ'‹¹ß(‚±±£K›Õh YÓMwsoœõéIM«Y| Gã­¥òs7p Œ)tÓ‚!Á §Öº¹Y@ ÚŠT çVÁ oJ ÿr%•ùGDé‚D¡ZÓ ÙØ€IÁ`[¼G [Œ¦Uà­óÛäÛà+e%«³‰qŒåD wÜ7LQx´FÔ–ˆ(OÕÃ6=ܨÆCêɹrûN~-b(qG¯»Ø„: #³õZ¨¢p¦KîQ¨ éåëµÎ^-ëX’2lR1’âƒZÒg’×ám: ¸¦ù Õß%€KàudJ"%Ž4—VÜÄë+ѳz‹H]µÖYä;èÕÍ7:Ü\Õ[¿ë­ Ñ*Õékì¶#ÔÑ[H˜“—9~pˆ3.L†1fì³/»ÔÁ\EÐ2»ë¬#óTÂwÒÔΘ›V`ôhÄ díP9EßMŠ„{PðzƒÈ¥ˆ¶GÉÿ¬fá/¿ÉüÈPµAݸ0bWQ/û.¡ jÄ ¤H:ÞÄjt¾cÓ[=ðÄa×¹îru­ì+¸Ñf9)±›­‘ý”@€Ÿ.QÒæÇˆ~G¸dE‚ÂÃÏzCT²ä>ëÛä2´M6›RK Q['¸©¹bZÁ&ª{&_¬¤­.Eàã‡Mc»Yú4ÑlÃÌçM !²FKÔ¸2úˆ+².¥o02Òk9B™Aöyêܾ–6½aýÝ™­¿óÔ\ xm¤š»˜ú3¥!‰ž¡O6üu£4tÚ)µ?š@ZbÑ>Γiâ(õñ5ÁÆT˜ÞEk"F"¡öEÇ3SÈZÎÙô¿÷E² àdCêê½9,¬!üø”ðð¶-#™zï8ˆí…bå ¶A8MÙRÌ/C‰c©÷OXZ”Õ'&BÕ ¯œ˜\IaÅhÒº_<Ò°ä‘x –X€¸¤Ö'MC"%Ð$žŽ|—Øñ*ùÓQ,º‘©FŠWÚ“¿ìõ&­›ÈÉJd‘lJAÔˆ79JNb|Rr’FFÂÅ üvÛL‘p~øvXÌ’äç$›¿˜Á¿IJÔêülA‰œø?ÿz>ñªÕUü'yVñ~êÇŠÿóH«?kýo³ÆÿÙ^­ÿ§xxµ{ñ~ïõî“ùG…òqÂðxÁmbAvÖLäšg‡ÚÞž|ÐV ¦éÃâPw)É#â£LNÅè&♳&OšÇ =ó»zÆGÆM:C!g°”TæÅLÁm oÅ}8¿7Ñá ê…\דK B3÷ùÆ/5-üh Ð<4Íh¨×͆TÙŠ rìÓoû½Î ÿv¢ÿÚÁ¿³û|0ûàá¨)ÃbŒ™TŸÜ¯O¤ŒKhöìeú‡l⫺aUòƒ,+ÉꆕL\¯*!†L_²EWu{#HVµ“íã·òªÝ†ÿâÔhmÓ ×›`¢\“„×Ê£G†\d2»ÏžÏ¡U ¤ÁÑ'YÑ]šôÍh. IaéP{² ±Vô¾]6Þªä†kErˆÚJì+gm«7Ò)3Ü“-Eãv¢ü ñHn#Ù¤Uºïñ£úÄ–„-ë#¿7È—4oZ¶o,Ž!ZBG7#SÃ, v–ÕQ¥Që2|“‹A†éhâ2V§&* ™¶Ï(*80E¹¹^Et Ñ”*ý¦-Ì+N{bRQ± ¡IõÓÂ<–|.`þªkVj£©Ý&ÐytnÐÿRNVB­!Þ¢?Ñ”Îßò–ª„ªØ_ª -p4¹"6ŸºjKGH¬Ý¦’»ô€ç Ê|ú|0ÿ† Íß9¦¹Ë°í‰#­¥56ÓßEå$¹ê`)ZßÉU§¿‹ÀÑЪƒªQé,‡ ²a‘§¿oN&_Ø-œÜÁ#z_¹ElŘŒª…6Ù¾€¹ñT’Øæ±ñô’Lês¿c7âŠC‡fÔ(K}>m841äO -ý¬1à]L[Ü%SYž3-Åé»í”N£¥ÄæP’° ÍÏ¿ŸÏ Å¿~Ù°Gºq%cm£Ä 8îLÔÊçßËpšÄ`"tÀDñ¡KGLÇÝB…ËÖ>fßgpx«Ø7ô¬‡»·pd°ÃØ™Dv³ \d³sfX¸¥H@eC74¨ã»Ü&ËÛñ—íru &Z&ìKÁ£éî_ì°dX+™âSqåœz”¹#ýÉ’¤6†ëáEeuEÔ–Šç¼Å,Á‹õª|å.®}•'Mˆ)ÁÖ¢-5qF&·PssËf䆻µ‘¶¶°`”­q†IÑ;6íR¤,N¿l AÁæoØ[șć¤TýQ>¡ÃIÕšEO¦€§Ã‚ÈÉGŸCV„®¹EIT†¼. ª3±ÄÃuÔ“P)vè!3ÂÓ Ù®ÿʼn{‘ëÀßSj±Vö\o^oIr‹T%á¹QàºÀ6û®;¸¢b/´Dïºã€×&Ì͘…8n–ƒ™!X²š‹î,áþä—УÎËŽ7 ª|ˆr9t8ŽÚnqÇIxBíêøÓ_UyÙN‚jw‹¨qÇîkañ'^1Íð‚b:a_º™3ÑD^†(]-²8YC¢•ÅxUûÚÝܽ!£ìm‡­¹LhN޶´Zr6/t~‹úiÃp=®šÈ“¹mÈ[4c”8³KsÀCkm+6fuã¾ñ…×Ѧáë_¤]ç‰M‰bªU·k“8jÈN Ô òµ„ÁNNaðv0MßÜG<Ñâ ? öðÔåȃxgQÎ’ Ùgò~Ra9¯TX¥s!’ÉÏÒb!ÜytÆL C…‰¸“`XÝüq’aù!%CrZ£åÉ))ŸlØÊ⨭¥dÃO6lå– [–lÈ ¹›t˜ÕùäÃr5QBL”£3S(fVŽJˆ‡éâ›?„XŽIˆNd qG‘ yZ)±É§ô@J¬Ö¤˜H—ÆO/"ÆÄrš€˜*’Xñ¯ &J‡ÕÚ³qúµòJ‡¾tØr¥ÃT¬AMB:lUãòá›ò!ìÆNχµFäÃr(ÆùiÈL#ò¡«à<_N4L¤ XÉänEï‚Xû¿MRÐ*Ý´TÔ²~³Üì¾gMpÂÐa·tß³ú6·.8±*­¦"ªô+2A8t«Cð4RPýD­ŽVu·VûzpÄÇÀãÂx¢íï, ÁYÆ0á3JÓ?™{r¥nM-@÷ºÖßÉÃëÀê+Þšð:0P-c¼)làp'‘& ô‹™NõUÂjŒÝÒó‡àbëÙ¢§Ý[Ë•¿_JúšÚІ ™È)Þ“)Cw2¨MŽ>{yqüÓ Ø…Ó[:w f`ÂaNnrö­K÷쮥°;pÄmà@ÔJÂì±wÁØ ÚK#Øt÷By ;ýhEIÙ#7uT§§¸ßc1×{YoÄ#[qõuòQO’pŒS¬‘P;¬vˆ³¸-Oï®óÇ1×yCyTõàLÞdîß:î{>–ÿ÷wà‡ÏÆÿ{åÿùDÏÊÿû§~´ÿ÷£­þ¬õ_­Vk¯ýõ_{ýjµþŸâáÕîø„­· NOšïH«ãY~4NïµTÞ4{Òâ;¾‰#‘8ƒ’<]á)[¯pI¡·+rHù™^ð{î„£€"×¼f¦ûƒûk6Ÿ..æ‹)ñâ=o^*ÛøÈÚ¥ud(ó¹¨ßÌd |¡¸T^ª–omV±987óì(›x©™D½Ñ~ßnÿa×þHûµã=«™˜¬Ê´•ŒZš h¥hâÓœºjÅöÚ3qFþ‘ž±ìøa®5£^ŸÆÿu}£dûÆ®/åqQ<=9ÙWQq/Ñãz7Ň‘§S" $edÝúûý‚ØŒ6ä—I”á()= ¥(Xb®Ò”¼¬‹c«þá±=­q'pò+äl½NT‚lå”v0l'K3ê‰øP¾‚°£X^€"-8ø–ŸW»°fþñ|Qx}p_AÅÉ=ç¥v<Ô²JâöçuË~¼[Òhæûê‘RmbŒ6Ê]î] O£Èmƒ'è‘ gÇ_Ã÷É¥m¡ö¥Çâ¸fdÒE÷mÒ[`Ýy€Á‹ËïAÚîd-ÓQ‹*ÿ¢Ã—<Û‚NtˆïNMªx©™+§GhHš/—ÖÑ+Y`=CSâÝÀaBø½¸[wx‹Åáï(Ù¡˜¢„û5”zñ uPXs:Y^{ ϶t'U_}ÂôEnC=w¹”ør¾Te‰z¾Œç.î•Ø½¢Zêé#+:4æ¡¥m8HÂÅ ²«ÕÅËŸññî¾>† ø÷?Û¯·Vúß'yV÷??õãÜÿ<Êêϼÿy½UÛô×ÿÖëÕúЇW{pÿó^ 1gõ‘[ 4à“λ޻ÞÇ“ý(°–yΦÃù|0Faëh1DäÜÉBÉ6悇”ª³·ÕÿŽ71~ÝÏçÊè·4Ôé9¯jöF*c¤Ž¾z€K˜÷ÒÐnŽÚòÏï<Ü„Á{ÀÙ`x¿/eœ/}jÓá`Žç¿(®çž(ða—ˆ–’KÃÜlâ ¥NtÄp.¼Y°©¯¸œŒñì!,Ýíêž#ï=u/LS‘£O ð](|—'ð^uàU‡gþø·'Þü^Ý <Ã¥ô!™&œÔû7õ•AV·?ϯ‘0Ì€Dÿñ¶Zqæ'Í84Ö×+ý¦\U-SŠ}ÝŸÍ€£\þê¼:SãÃþp‹M]R#ª:‚ÜÚqÓ©2ÙjËÒ.†îN¤Ù2r5œÎæŒ.+Gj<ƒét2µ ºA›ùÏ2®"Û'4èëÚÂÃÅzÊçûúÔ7-öî˜uÉ¢>ù^¥Ä¿ÖžîZâÞ÷w¾ÿ!ü±÷û…/–zRÒΑîíí·b )wª²å.&$©& I½°k=òÕ *Ëd*:iE··!›~ú%nC^©ð–÷¼×xÿã@“n êÈàøÞÒñÿB^9jÖ+Ñxë*äI®®½ œR÷Þ‰³ß°>PUšúXì9­Îo¬ U‘Iâw®½­°‡5b±ÝÔ«E|#ôrùüZÕÅŠ²Ò§޳bï]BçÂеN{õ^ã]›.MS{ÙëÌýìÎÄßHìËÆÉ[™2öò€jÁáh§Å$¯Uqô=K i˜%☔ŽÂñѸákL–ž Åšƒ')N£H±„‘‡Î)?LïlföN®î±ûæwzBJ :i3L²l'‰¤e³ä0ßx†BÈãT:S’i2–Mta-›&,›vže“̃î¿n€¤Ô9‘9r¬g¡‘苼k$u‰À$XÄÃιp²:H,ÍRR—Œ·b"ORÅ»+aU¬çØä ϳë>øæªwN¹í=p>[Îß>K .Ð|wv_醔PËI7^Xlìv¦t“ÆY°çÛRV¾ƒ¨³ž,ê¬gˆ:á"|@Q'Ï„Ž‹:ÏŠc‹‚Z?{y$èñp ègÙ½<#™áJµ'ìäï Í‡ï õ,agÝbݵv" gÉU`¾Év¢<**ì<Æ áñNîI‘c5ä:‰{ùƒ?Yk&¶OŠÇ鳜 äÉûíçãT)(s³ˆEŸ_RZÏ–ƒîË œÏvœx[(J3]{ÿóÚ®Ùö_ƒ-Ο‹ý×öæÊþãIž•ý×Oýû¯ÇZýYë¿¶ñj³Ø½ª­ÖÿS<¼Ú]û¯ýßOw"âŽÝþëK‰¬`ðhý•õh#/( ޼óéð\YHõo3±7¸¹ŒJð»ÿyÔ‹ßú£Ñðs\'ÿžˆß†—}ºà¶ :êÏ€‚ÎppI÷áiV^•TŠŽÐ$4=ËlGBÓ‚~º›ÍšMSZkË´DšøÏFë¤ÙØmôD}~¸xûÞ5Ù’íîˆ{8QtAHN¢¥[~,DººKš¹á’QÆ<èÆúÍ ¤` gd-3¾d» `·ÃÑð|Šž},%‚,€eȨéTì»w`®Â·áüÍns¹uþmÂØD[uÂ(Ï(~Û!ÍÈç·[®‘{ïì_Óy¡^–†-pq MÚ'Æ;‹ò^*òvV%h£¼ÈüOBì„2‹uúTìà+Œ¾;SüzÇÑ«‚ö8C2f ‡ }ÑгD¯e®ƒŒ+{ª¶…zÀAÂfs}K)ƒ,6G#“ÄŽ9¦Fkeø?h#x;\[ßpv«¡¶3É•A€îtm¢WÁˆé£ï®Ÿ¢mZw†j:ˆ\£¾®ê°$˜€Ló¾† >u‰²ë.OVAjê0îj%‡rm*ñ=LÅÏêu…Êe:hU‰yâöB.¤ƒ¡Œ4è”B% ä ¾àúJÀiUˆóos^ƒÊÂFÜU‹ÍÛÞúù ¶àòl S„˹¨‚PÅÀ¢¾Û¥\ŒpÂÂŒDæEa3ÑXÍ õQ³d­*»ŒÙõd1ºÄ9Íœü®0 ›ÏfÁ”ò¯»¹J¯b`ÿ°/|Up‹)Miâjñ{w»ï¨eý«h¿ŽA{WÙ¯Ð|;„‘>/‰ÃÊo•’ø®™9;CÜá#ó÷ÿ · -ž„˜*Lý¬$¾N`WÜ|U +h’u{[o^—á€T1v Gdô}ØØ"6¿÷®!ª0Û7j›/w~mŸ¶êvªÙÞÞØ®lÖ~©mT¶ß`ÊÞàå„[„J•ù¯âz>¿ýõåËéb ,ç{e1ï_W@ÞxÙŸ^\CǼ¼íî1{y>Wn/¯þT¨.¨… ×þ=Y‘$Ò`é(ýNN¦Ê˜düþØcN[½wÍ’Ø…öìÂlØ­Á%qŠ« (w}œ¹˜h\rEÎbv« 3²4é·ŒÏÞ=mu—„DÍ9“ÅêO{§1 Ž4[ÖÄ åÉdغªàåÅ íÐ#aIwŠ.¾·ƒ¼×hÕñ´ ƒM”AÇypâ1ǵikÎ^Ü…Úª~9a!ÀÞ®†c’‡gj`1g“0}9¼ ”¯¿[ëò[l†ùz9ã\N³<°Y*a¬(DŒx9àwÔ×»˜H0Ä…RÛ W v¶p¼ÎyRLg×pV°å¬@ÓÙ°êÀtϘÓÙ˜å¬ütz’fõ\çÐ×N $S[I€»kÿ÷ÍÝfH }{ïBXŠ®B–¶X½¼ç‰ÐmÑtiãÝ_ öÂÔ{Þ jh`ùSI­ÆÅ8’AMœGNΣ¼9e“(«D2sE®³ê‡=ç(,(­î£HÝNÅî•nRç!,ÒÄe)3#{´ÐðX#+ =²n‡Û,$ÚßšVÆöÂ÷6T¼»–@¶àåŠÉ(&x¤¥" YËTŠ>%_X U”jªÏúå ó½’ÕÏA¼†oÿ_ýÿÍtÚ#n”ÇšÊ뢤õŸ<#3xt ¦ F*Lg“hþ^rш #«£ÔBB@þ¨AAv±Gi´yeúÖÉ]{ÏzEÆ2þ ŽßµrWTK¤ÿõ3T6ûï/–—b¬“± \jñåÃIñ纤«¨;!i%™]ýŽ©øTgk¾;,pJsùšr¤”Å"ªM° ‹œ_¾ö錯lü,(µWÁ›]K—:17‰Óáê4+“³"z‘ñd=Xˆìص?¡¡mÿwóCðŸ¢ö›¯ª+ûŸ'yVö?õcìÿkõgã¿moñª¯VøOòÈαÿk½·­ÿš'¿Õà¼ÃØÅ=o¿?ÒÇ! \ñÇp4ĻʘàóöO{òu@¶B5˜»sg—{ó£g'³_ãQÀNHK¸þýqIs·Ö{Xjh4³Œ ÊiSˆÉ­ŒŽª»î»øõ­èn¯ûÅzñ†Q³Qü^âG‚^Ó€Úƒl ø6µ$þ ï¿Ó—c}¯£;/Ù`ˆbP˜V?©]žIW–M—x7fx¥g™Em¼\S-'¿e¶uÛŸÎ=l›#"Ñw@ŸÄÕdÅÎ~õ<~ä¼cË/¬ûÅâ…°l—>:ºª¾î{"tU’ h2#‡€Àlí¡ 83"Ù%Z¢µ‰g›–fekÛÔy¢Íš“¹-n`?Aêús4ã‚¿ÿ=˜N*¹È£5n“gVo…œÃ¥’W ¯¥œõúÝ’jü#Y•pÌÆ€Ñ/(ºÈ&5œ…l‘£¬Ûx‘:¥$NM{ePK«13¡ó¬­À PÖÍðËùÈ1¸J™¦Ê>Ì™é,ˆÌ¾H¬>µ/ró™åú"™gdõEÒ¤S¦9×"&wç9#Ü9&’uF¼]»Y!{cíawf‹ó5.>Oû7*Ü_·Nv4³”WüùZ§Qy–T´J¨ôF"\¬ûç³I ¨¬H›nlYq1¥ 7 š*©Ò.;¥¸[ªø#_C‰¢üÃHÉÝqÔ´’E)806µN1*œŸZ‚s†+?wEÑ)aHˆ¥QæŠâIEœ!ì#%ºó –ËhÈѳ@ˆü(ƃÁ¥"|6˜#DK¾|tçÔKerù`SëãݦÖÇpjÓfÖ÷ õ14 äNŠobø7ƒÍ,ýñ'btv=ó\ôÙÌ™÷ñÎ3ïc…óßiæ=‰½dDÐ768)–’L…þJ‹È™îRæžZ–²—dw¢˜>’õäüyÃïãÉ4£>°nüU[ÒTñ‡G{Ä'‹þ¥ñ,czwË\2Ð×=â|½ò³â6Š%s¼Žäø˜š£êEö1¶x&»_„¡ƒîéF²b€‘-%~Cg ýIŽa6<üù‡e»änrÝ]Øâ·R¨Dyñv2Äi› H(pgu¡Ž?ŒòñoJø¯`3“÷êE,%¹·a â5|L®ácXÃÇx‡w©¥Œã,u 3\µ£YªÀ¼Í%שòfè“£ì"³Á¿`Bëw>E bým†Ûp‘Ï×ììçJå²,Ô,ç–Ém‹51¬}q;ŸF&"¬7‹­9^˜©Ç ¬·ìAM”kïe{ÚFñ‡b¨2)!ϼjæâGmmPˬͻæ joà\ÑÒ²³™IõÇÐΫ~¬ 5C7ïØ}[9 Ñý÷1f;!hk鎀ºÈÂ60#“2²/…¨wr‰ o̧[vÃD®eŸ‚m*UûFÕâ—öª‰[ªlo$Ò±ð‚VØÊ⇨…I6 SJ¥òåý´µðQÙÇQµEmÝÉ£*åßëÆ‰”kéUÖHsÝGªî#·ni#¸.ÏdÙÞH,3˜ËG¸5p¿‹,Pè§_–…Ë C#B†ˆ³ &æu®Aû¨Gíム[¤UŠxøAK8hƒˆ­ñ×9G^7àèc¾±·Û£$ºh”l¢~I™7‹ñ0æRY‚­¥{@–€.fÅ2—\d>¾áùx‰³6Ôf"oîÄDÜiƒ½™TÂ}XFµöˆ<#Çúˆ²™£8›9б™j5s\ï°úÆ<§ªfʆ ýøp\¥ZËËUr¢Ñµž‹Î¶ÿš>’È쿪«øOô¬ì¿~êÇØ=ÖêÏ´ÿÚÜÞöãn¾ÞÞ^­ÿ§xxµ»ö_ÐüK›}±ØÊÞëÎö^¹,½ÞÆ+¿mÒìØvS`Î_D5bÝU7Ö]ÀÅßPÈŠØvѨ# Òhð‡¼LEÓ.eµåÝ‚¿Ä‚VV]+«®•UW^«®• J¼w  Šgh—Ë‚ceoµ13&$öq¹6E­Nò#ÍSbx‹?»ñ_òÀäjSöÀ¤ Ì_ÞÔðGY= S i¤µµ æ?+³MÏ_ßì'Óv'°öÉo(¤Í~îaóù‰lx| žtKÏLùجÍ$Ã_Œ‡sÏz„ú½ë‚TûgØ Cã×òçy[Û˜îXÂÚ ~'kûb1v…˜r7…ÙùÞ{<Å E0ÿ̸lžYÏQ$XÄ[ëïuÁw}E,ÉCÖOºÖ1K0íæÿ³÷¦]m$I£ð÷ùyú‹%0^¦Ýã>W2à–Á2ƒ ýÜ÷ö‘¡°Õ£ÅËÜsÿûKîKUIlw«N7©2222232Ö2Æ=vv)¢ÕÙRÄʱ¨‡îÂóZ‚Žg!ý:¶¼E‰m?¡©ìÁLì‰uP`b/Z9Þ5·²¤¿Í‹¸9U”^š›úÅäûÀÜÚ:íÕÂvYŽŽ‹®ƒÇ«]¥]MJ…MÝÖ•Û„ûïåôVl@KØ6×ù?îæYÛÿÖeÿ½¥Õ_XÿëQóñà ÿOs]ÿëN^ížýw¿gY€»Ç¿õLþÖ>ý?±hM´ñÏvNz2yÂý½ãcŒ©ÄŸ\9ì8, –_=ìµ"¿_ .‘ª>¡Z[>ë6Q¶½ö¹ä~ô ˆ ·ŸýìØÞ©‰Þ‹ß¶þq[–h]›‹ç§§INø"èXX6¿Âr‚Ì>²o~=öksY·[¬ÀÙ—¶+<ü#Í“º²ŽÓ¸3‘ï÷Äà Ù,Seª¸F R/¤s#g~β+*ù¼Ü'Ý|‡ëïè²Ã­³ËËÁù,R!7 ­¤Œ.8g?ð®Ìt"Y|*²Éd<ïÆóÑÅ”S§À"€Õp!¿É¦³À̦ڶ¥P\]}«X©a¦-|•+,-´¸…ŠRÈÚ%`™Zc“ÁûX{;Ez×Ä`+Ûbûy‹ë¼9v|‘s ~›&çlKâ°Ú*Waé8.&d,‚®Å‰«bÙPrleWBÃEJS¦Ð—¥eζRHµþ"c3¬ä Ú,yƒ$’5²þù3Nö鱡œa]Ð "ý'Öh“µR•‡‚O×'ÁÙÉñéù‘Ufnµ9O° *–ýÁ~‚]I1óϪwÊôGÖXx'7càmî=ˆ^ó‹Lá&Ë÷Ùpt]9 «ÎøUŽú*fQe-`kË%8á<…cd8 C®ë>8³ßÄsÅf\‰Øpx5†úÃÏý¯tuâBuÎo¸ÝhrÀD]š^KgE\„kg<‚Á~LÑ÷oØÇz|¾ h8ÌdC‘¾bÌLF6Óµ#5LÞ&¨Î^8úªÉMç5€j *x{Õÿ›*ÁEù§ŒF@­¦…+'6uåÄcÙÖnZ²Z';½}ã‹„ÄHº7Ÿçá;˜tNdqK^ _Wó+KІ»Ò5mpÑ™ð¤MðÞÃÕ1ï°ø`ìB‹¨Ë¯£þ.<¶§âaÞ·¤ÓŒr•I_ošÛ'‚ÛÉë\Ôàkô¶p1‹ùíx/7z@í(P¡¦!á ­Mx¤+EfíÙ«S¬·Çåà?¬•(ºoÓèïõ°àÉñ^ Þ·ö÷üO“þ¡,ðgé©I”Dä1‘¥€Óz­ß÷*b'Q\o)‡¢šxÛ:;zÿ<{EÿªÆñ†5)µ¬Àë(¬w˜òCZÚûª¨|dÊ;«¦^ ±YI¡Å(qaj-Zêºï¼Ü"-*‘S8Pû|ñ›K¹yù5‹ü¼ü ŒÒ£ä7Ùñ›”÷ôªÇ¼ÄöË6ÒCÁ5¥l[“(Ê4>+ÝXSé&jû½H™É¥\Ô—(éŸFÞi4yQ/=v%Rn¨ŠÖêâñ8íÈ—ìNÚáóFÓ}+žFä“ÑxDÙµ+è$—N°÷%ª†®‡ó©hèQ .×«ŽŽzÂ*‘²w= Ç#³²ø€±_éõ/AV‚MpqÞÛÃìÝ·ÜÄú£æùûûØŸÕîØ\˼û¹F‰ÿÀ¥¾ånCÇ©åŒ'„<*1N_ûM—à–—Ïáx|-æ£Ù`ˆ Þëk¼œOPØÃ­Õ¾ ôMÑRâ„þ<ãû5p :‡C÷¦6ÖâÌÁª†áGEÃÚN Â%ÃØØÔ°9šß÷òÝשδNwïÀ ¯  ’å.4¤»BUÚ|Ø·¡àe}÷¡6Çðk•*fá_-Ž¿9ãiÃ&€ï:XÈP;øúmUÉÙ.Fý ½Ñä8TZžîUoYíªošjz‘ÆÀž}|z„;—u…‹ÔHÉN”•ù/¢¬ê !Oƒ«ñë¤÷UD Ýã;¶ K6°“ã–“MëØ®O'ã¶[Ëj'ÉÆjªã³ø§ñ÷M{¸-þV½DZ³ƒ20çA¢ö¡“Áë ‘CÈ!Ãq²@âv°¡e^Ë^ü}ƒ£MÖÂì_­­­ƒÖòBðcÿ²[¢ý‚øG¦îOÝA:-Ë7˜ºG7š:š¢Ç%ýâ¢sÀþ‰ÑõŒëÌÓ;òAwPDÐ\ÒKãµ+³Ý·ééUæäʳ¡U"ð6yϸÜÒµGÛxë7ÃrÀL™&d[îéÙ[ÉþáY»{zYÁ U-ðíÀtlTY‘¯]êã*¤§œðæ~Òºid,Éhû´~šUÝô";Ÿdý)+Cu$m_Ùu`×oŠ‹ù„t¶^З@í(¼,Ñu´S­™ õ¦Ô3©w§hšc¡ÂáM6d”Ìø"sòúÕ†ùêpoKÊ8ô­;‡$á+Ücèà/Ð(Ž!iF9Mfš à}0rpF"ë¸%’4B·Bºa ‰‚~ƒl¡Åh¼vZ–Ó£wÁJéÿÝôN”ç¯Ä +Ú¢F›ôêù"Ð>ªœýù}ùIUl ³-¶_<õ^§£w0úÇqÕ%¾”¤pQæxÓ¦6•,Uµº D*׆ ïñ*ep%¥·ŽÑ0UèO4Íø²RœgôZEîà7“¤VÞsè~ƒ òðzcàà²@Þ6àìAQÑ‘§eSMJlN,cÁ`êÄ“Ãö!É„djZ&Dg)©Zªså8K'-Qµ9„§‹4:_ë£Àî]NòY¾+¯«5_J K©êÇ)±û]?^üÏ—Û(ÿÓxÐØ~ð ñ¨ÑDÿÿG¯ýÿïäYÇÿü­'þçVVÑúøèá£þú¸½®ÿ{'¯ö þçLÉ8{ÿ>ÝÛ-ŽÊ‘à{:HHÇI§4êþÿüÑîîöò ¨wþè¾:~Y3¢À WèIþ›({$ŠÂ0©èÑ¡@ •l“Á;åú¢•MÅnvu• kðoÿý.Ÿ¿až ÷ýQM¼ÿw,~\p\Ћþ08d_QÊ YÚÊÅèņÔÜöR,”|P@§å°lœòFã„Y%qâ_;/;Ï:'¢‹ÎQ ÞñÎX4|Jò¾¿L•aÌ4Cö—=EôÑZŸÁDÀçƒáàÝĪC)­Í*µå’EÃ*¦ç°áK‡^•´ÐzÐpüÙä):ïO3/ ?ºpç‘}k(™¦š/堮ǻ»…´ª¡ƒé'‚`?\Žã+̤„8ã*FU×ßCNÉ‚½ò’eevQ׫dšÍФdÅ™ˆãÏ–3/²³L1œ#Á 2Ëìˆàðþ|8ã®1IÓ59¹w„Ä 5 "š¨!žÃ K)œä>ŒAXgƒóÀ´Ù'š¦û|r.¹™,œ !9#f2– “\0Fr‘I\+ÄbyôÜŒ†Rymø…ódõgâ322¦¾‚uß*fü-˜yTÏO©º­ ræ Ð"]š¯)V£è¶ì±wqìݱ‹ŸýÂ|¡=ž±óB•ñ#N ­Ù‚u=¥eí+))ûBë]{¨´o)Å}Ï˨ö?À©­{*M#°Ðx‚^)ïf¢òƒYKÇ±Š¢PÖ›G±–`7‰a½qøê²‘«êÔ´²‡.´êµŽfB͉WUshE­– UU«*žµ(J5Ý:^É]¾Ÿ£z£ðTq£Õ›§Þ0.u™Tü[‘5ºkGdŠ¢€ÔÆ¢Š¥ÂQo‰¡úCî9; ’m‘X3gwcKM ‹¼r{áC““³¿žsL²k_ÃìrF£âÔ(½Ê BÆSGMˆ»'°žê{û÷~p^e”†kºÊ„·Ä6,÷Ò=T mŒ.yñZ‘k=Uëúœ2$ê†ûàFêÖa7¥Kü5mBr:'ÀM_¶4›Û©9%zbúa<^PJã2¡¦È}¶èÅò¹@ßNøÊŽL ô&°SîÅ8ãë¼?ײçÅ lDÐ`鎤¡Ÿ|™`~á8`/±ÆqÕ'ù‡:ç=Ò#i*qÁ…†#"a? T¡}µ %Éí’OÀ@låîJœÂ jxyº˜ŸëÍø5ÿQ0âW•n^QÐ,•…l—ˆÖEÛ7ŠÕ« ×^4R{÷ùž©½X¶(ŠÓ¾Qˆ¶ú‘_«Þ™pÅÈ2ÚåP Ék;Ëut3cùÜ tv=¬'Jïc–  þ™*úpY³ôÖ¢ûÞªê¢Æ}g†CÞBZoýó¤bF$Gçs* 3ÀPPlŽîHÕšÞŽ(‹ Ci‘ä" «crÜéÏ,®& Äpˆë‰"…ÞÕº•h˱sá¯ò=-ȼù SaŒ"ÀR*MM<[~ºiÀô³2aÖ\›É].ÂÚ«–€ÊWçDTkíPq\µ°Õ¢‰5ÖÕ¬éÜ'ik¦0¤t°‹9qðëÙ×ëLT´Š Z94«J U ŽòÕT¤”bÍŽ¹—;ž~Û8¢æaßV]«Æ\Ë»‹–w#ŠymöDj>õ'ƒñ<¢+ô×þ4̦`˜KM3Á«IË`ÊTä(,lÔ·V &{š²j;Z€¶ølÅ*.,É/K \AFÝ=°ì>;‘ËOï Ïl±=Š­Cí͸M`œg…½ÒÿÏÿ­7þ_ vD‘?¢¿ªtNÇWi@€™Œ¯'ÀxM ‘R¸y¨>³™ÀÖÞF«&ݘ{Ühj"aÑöá\ƒé Û0( TÊ•›NçW´Ç½e¥>âö…h¸5,Ýl‡ä·"^K‘ļƣ‡4ÐËù/ÚÚ:DGý—Ù¤¯­s®žÓtˆÿåÎ鄸Èa@=±Û%Nìèù^þ¼¶¡/p`{3$À#I–rDÒ]g05U£wu¤uµHÈ%¥uaŠÉÆ@x™`Q0ÚVlÛÕ%mGöCÀíveJAÞ"0ÉÌ„F=ËÏ‹¡({ÓýÌMr˜Á°úÃ÷ã ,´+;é ¢?2»‹p¶:G+),ù•ÏROy‰ øäÊuFÃÖIf@­eÓ=nÉÍlB7'(ºšl™>³ÑN5JG6± Î&už(øÌÍ$¥xNJ ‡­?;Ýã³?:'Ç{ûPRU<¯Uí±r2Ùþ\¾µ¼… s-ì%ºËx>‘îÜ–$ª@_ÝqÚåyb4öÄêI°~å*–vƒ-¿ŸõƒÑ¢ä‘4ž¿fu£Ï¶z×¼…üHw8YyŽ!]ÔQÅ=T…ÒK-. DC–³Ñ§Ád<¢Þµ¥l:¿¾Of’©ã@4§{b…ì—ö‚Ã#›|’ r9'+/0L5—!~;ÞëýF,ÑD–x «¤nÿú(hÉ~$‘±Ù£õ¤ õ§ì W=Sx(³ãÕ€êéÂöñw n‚Ö†™¸s8æ~²*úŸ0Ï£rxjÉáþú1Ñ8;ËÎ?ŒÿÁXo *ãyãÃf8 49ä…õ<õ² Z,ˆ?ÞÁbøƒÂ›¥U–?AúKC$ ]˜(7E‚>§}øš·9<{Ýéí'ì 'ìûïµdÁ9)´“©ÛmŠýÙ,»º¦9¸ GtyÓ*b‹Mޏ¿ÅËX¯]ØK¤uÝ$e:J´‰\ö‡Ó,µ_‰ŠBܽ†YœgÖÏ 2ÌŠ¥“Ì:0 3ÍršÙž›fv‹oP–tFV´àªmg/6¢¡ç¨í,•£V‚øUl'ÿë©è¢f…÷ñ% ì¼TÇÝö(’kÐBÐøøÁÌ Q¥óªY·âÔ©L”5 „¦È#oÒÚ¯iƈvh0µ¯Åz>º›/ž¸ôé†Ä‹Y #pçq°æÄÑ7ñÖÄ¢)·CqÀ ó¦ä…íÓ`:Á›Üçl8$ºZ@ð²eé ¦óP¿ÁÔÀã qE)‹w JÌ#½Xéa fjúâ´³0”n!®ç¼„¯’$çI ,"T+ë ®ƒ´rm./j …î–hÕ¢3Ø|ªK#ÐÔZÃqÆ’vô/3> TJ¿Ügj˜.®jÆ!^kfì/.S±º÷,ßvÕ¨†±ô1ðÿX¼§‰oÇ´¶tS÷3—¬°`>dp·rMÂéQ˜sóö^'RU׊òL;ùªk2ít£0G4ß v÷ö[§‡˜žYJ„òƒt;$ ôÑ=!±A·?.Û~÷môÍD>o ÇpT‰6xlµ]¢YtX%»<ºÜÞzXØÊ'5k:í"dþ®&B¡>'æÊ—úòŒ]Ë€v.ù4ˆ ¡¥Fr|Ú;qFë¶ÔÈé /9rÙ §ïp»Z`p²G98µ ˜Ý ‘j]ÇT*æ·+ùm$E÷ñ³½Ÿ¦‰÷¢F ñ“7G{°`aJñ·ôû]Ús""[ÌÃ;Ñ…~c›Íá¡|‹XƒC‡ÛÌ3ÿúøU÷yzdçÐÕsIaÉxi4ŽU÷§ÝÞI ¾•øDædù$ï½7TDð-L?&þoww÷bÁ£‹&wÙ:«‰Þ¿aÇ=9nu{ûúP6µ{:7; ßûcÿeò? —Îa‹º ßŠiœ(™ÆÜí½Ñc§?sÿ|–ž% ä©ðˆ3ÈV £rAÖ÷g$koãißÕªÄÚØÝÿ4¹ßa{QÊíç{[á^$'Ç&*Â7ò¶Ò€r‰Š VN˧.’¦Y™Ì\žÕ>Z¥[éÉgZ¼Ž’ÕÝp0™7åöǼí9¹¿;ú}I~÷ˆV¯ë×âr·¿`÷q±ÇÞØ(­cL ÁT]rn¬\î†"§oYÐïS"ÿEXÀôôÔÛ|cÓïÑ6^Ð@Iå( ßÎ?5væ+žÐ/ _KéN“X¿\ /¥YH{—ÏràÛÌVvôÂæÆ²º€åvÀûô’†µýÉ uE„6 í±ï›þöÁ’¤dªkÈü*÷ÞܳòPÞÞœ±ŒÔÛÀ‹UãHã öŒjPáÜÍ–ëˆÖêH–êHV÷P-ø-Š‹{¨¦"M‹j{¨¶ÿ Û•öÐD¨\\ÙC·Ý‰¯€œÂ±ºg‘ÂËÔõ°y±la¥Àô÷ÝWÉjvbëÈöÅ›°µÖQi$öF/KÈ‹ZxÕJìpÂ×/-Ò8’ñ1Šv*GkÚ|LÐ&éܦeQÞYeu]ŠÒƒƒþÞµbæñ¹´Ï)©?Î'‡kÅ»ÝeŠimŽõq,Ï®Ëóê’ŒêÓ®<‹–âÏÅM·+…f”-Kòdl5”cÈB±XÑö¥Ë|Ò*tK;ŽZNQceÿt}£Œ¥¼eØ”ÔÉOŽÎ=ùAK~ÂwÚŠ`‰Î\«¹±Pg…’YnadV–[?Å­­}‘ o¹=k¿¼¬jGÒÑÃöèE]T] LjvÝ=K†34Ö*%”ëù®Œ+”¤ÌK*ɳ¯©Ø)) Õ†ù9ïX”«q‚;¯¡“îNå¹#ɰæò¢ŸÊ΃ãd«£dXÝÍFÙJécD…f5ž  ·&*÷E…ùø³*îÃgø9Oœ¤£4T)UUÍ‘Œƒæ¶T!¹_ý%5n*ápC P›T±®ÇÕ¢+2°E¸²€ªoþÐK.­VœôúÓf¬Àk?¨´6žùu|IŽì-Z É‹ÍhŠ*áj+L›ü±…Žñ[5™_Îâçjh8VÅ~ º(DÃÛ‘½sQÓ¿mÅßög¸³ûÙ¼£›¹{(„ˆòÜ—8„0¾gQ±á,rŒqé;k ­2E/ÊÖën¬\òš$Rzùª¢ˆ€ÒT¾ —ù2ŒËšœ.qÊë–´{h¸A™¹À±ëM!2HÜe ¡à®Nþ÷õ˜"Î9–•ƒõB m„‡ÈоýÃAØù[KÂîÖœI#[j°?^ò.µ£’ó›Ê“Ú‹*ûh+ï÷ˆ ïˆÆÒÚ¸Ëø‰ ¬§ ¼ÉsO°=ÓgcåœCµ[dˆŠã¤CR†ãùô«›Ca2G/ÜÔ€´£>_ÐÍÃÆcʬw5€ïÏÑÏh,úŸÆƒ Ÿ¨\”º®fH‡‰EwLÙ}}!tæHݹòÉv]tÑ%Ëòåp­õ9ú¾óñÇö s}w÷ƒ´ Oûݵ³%D+—$»³¼ÃÎßgXˆ;«4€' Ž9‘(vb¡‘¾Hßõ!˜Cè’‡`‰;Ù·;¹06-y )­í~½ƒŒ'‡´t0X:9|°óðQó!æÿßy¸®ÿq7ϺþÇßú1õ?nkõ­ÿƃGÍý76×ëÿ.^ínýž]ÝU²Ì¬êyš_ç9 kl˜Â“…i†u6v¶UY!â¦u&„0€òêLÔ¬oÇÃñ¤1»Þ½œ [Xëz2b%F8ì2ú_:ÄhJÉþPüWÔSq!Îm—í…KW¨Ë}AÍ œF]­Žõu²KÓ÷m–˜°kJXÕ" ø«U€Áñf'>Uñ1^46Õ[à/9ÿeO˜ìû dÀ6ݼ9»%3&Ê ÍA†jÊ…M?ÛÉïIªœÙr6£ó _>©Þ2Àû0¾ÀnTvaAÔ}ƒÙSqŠqø³×(;¡[ëQðÕCùêaðêá=kl§¢‚銫2ï+å¥d})#,ihóÑ`&ófW(÷4Í•;Z ”ãiwÝ*Ty‚2ëÁ–™7H­½ÑÄ_›æj1ÝJdvnÉ಄)ºÁ´Ë‹„™jSÕAÏ®œ § ‚!Q&‘¿X8—¿X,~ŠxzNœ€yŸ­íìîv6yB*±|~VùHçˤ–§ÇÍ)ÚŽä•w“Ê—M kå–§ÇK »XªyÜ Ê7o·_ÒªÍg<Ô,œdz‡ÝÊÇÚGyÈñã â8þ&àÀ*«ƒ\ú/ÀÏáߪâ£<ÜêI­²LaÿÆŸéèÑè/nô¦D:…éfÇ4búZÕ觃iy™ÿÜDåe7t7_¹ÞÌž®e¯¼Dænãøîa¥2ççA/»BÓÉÐÃpÿrTB·ŠF„ùj@©p°ì$R•޼»“q &Œ€¨áªüEýŸ}À1R[ÕîW² ád`–ŽwèÓ,3°ôaS·è÷%96ºmk©ÛVÉ C±ö¥›rJo¦æ#왡ÿ /9'Ç=P‡ŠQxóaö)RxŽhÆjeZï¸ç,Tn޼*óÐS+þ3Ï8P:™ôâöÿâ+±#+aô;\1/ººì(j!${Qg’;äܺ›&3§œA};Æ› E`ØYrœ³î×xÿ¦|tò@)ûøtÎû;û«³§(„™$¦n" û{Ê1¸I*AÙ l c·2À$”‹¥‚à'/!DJqR,ðËáÞhãI!˜´7÷BÄA¡±ˆ·Ÿî¿Ik_¼:‚»h·½`¨àâÑuÃÖ^÷weeIFÊ×r°Y"êvùoOýÛŒt±DÄå2±=²PèO#|P‘ÛÿÞ¿·@„1nw+ 7IǛģCr¢IRá!鈒âøÝöaض(È#'@„( ­±˜äIé°$×Ȩ#>¢!V0FÄʋъ\¯å ,ñ¥`õ/ë ñHcÝ®Ý>Þ£8\Cªí¢ÄÚ¿Ùb¹UÁøc/aÈKïw‰xñBôDŧ$/nÀöä.4ë°<µ]ez3XHÏWŒµ6XÏIU>O¤ˆl³sz¼jÎí&SS”‹*”Ï–¤ªžߌµWÒ¼ -.»&‘h†Xìä`Ñ”hté‚QkÕ ]Ãþ‰â\ŽôþŒ0r¡ƒ@ï÷oçàÚÿ¿ÜŠ p ûÿÃkûÿݬAÄ“´#“ýFüi%ö…nbµBKLTŒ:üõ&^¥ú÷ó£ô?àE&‹ïêÀ-²™{Å¢­íHE Y^‰S¿®2b?˜•p ¢­B:™ºŸe.[âAe:°a`z~Y}œ2Ž-‹ ‚?±­Ÿ­}m¨V®É™pš!Z.²mIÃÕøGsácÐE N¬Õ -bçãk9‡¦Âbkí\õ-«°VX›ÏîB'«…½«N÷©’bƒ e!Ÿ*ÿ½´SYÒ§*Ú• §œOUÔ‘ªÐ»)ô©Š¼çù˜úT¥©l8QŸªÛö9‚½À‚{bY?¾}Õ,©mÿž” :‹¬ ]‘Hjµa8´/p <Äœ9)á,–¶/à,æzˆEhÑ hÁ‰áYÓmçE÷WÀ¢û[TŽc\À¤e=äbÌIP—cÏ‹Åî¼m|ïâwÞÅ®w;g³Œ¸ˆyžw¡?˜ƒBIÇ;;—p‹8ÞyÞvÞÆ¿€ãÁ4tÁ+çxçbZDÕ„ã]ÜÛ.o¯°X³änqW¬ú .ã xRÖ-ð.œú”M¥Ròä; Çcêß`á ë¢XÞqñlc<ÛbHá9×ENåd¿''Ƈx)ÈèýÛ9smDŽê€|ÆSk\lxpÞ—§y_%ÓÄšVžœG³ú«–ÌQ…é°MÉbÔÁBHe•%Zt¹`¯r³ å¬òg•‹¶ü‰¾v¼‡©i X®êoïTéYyq:IZÂ"BØ•TßþìÌ#k,,öš1ðŒ½ fó ÍU”ÐÅ)1#²¡T;¹h\uƯ tÔúÿ0ˆ„kCX[o“k'zIÈ]«ïycZoâ¤m·)lÈ%rûÃÏý¯d¯â.æl¥ŸàÈð–‘)•«öÒUqQ¢üµ§eAU‘ÍL6æ+ÉLæ"«ëi˜|œxEêú£¯šÜt¹PmÖ^õ?ÂáCp‘EP}¨ø«zVóþËiþlkg_2ÞÖ5Îd !(ÇñÚTàƒ¼£¬½ŸÕñ¸\!>U†ï;vž¦Ý*æÓ¬ÊíÝÀ»Z=¡—µ_u϶$Á¤½«ã5ø’€Òµùâù¬9‘í c; B8œˆ#%˜$"Æ‚LÙ±"¾?KH/I0FªqD™.–lPˆOCèR6IH´ÀmFvÞŸ‡5Ë dÐ" %úMá–¶¶xåa˜ `ã±>› Ï'læa1 ‡÷‰± ?“ûýtþOýÛr»_ 2›ü¶¸(Û"EŸ’þý5Ñ}…'‡|/ßÏ?‰7% Ž`s‹a…•~ä{Eá5¿YÎ(8l=;zco¢„Q~XA¤Çï6š€™Å”¸`'ª¡¦µd¼„ÆHû Å,ÂÀ`,Ÿ²! Æ'‡4,QòâF5/nRôâFU/"e/‚h ÕäVo "+ô`‰¬Ð‘ N·tœ@æÖHäÈÏOåVBïñâ¾gùסˆÌÿ{y'ÝžõF ’z^æ[‹§ˆUYEÞ³<^U, ;°u¢Á,®Ê÷ÕÃ#U1‡˜"/ÛúwëÉñ~Qº²«â v$sB‡_E–àx‚‡úøF|x×Ó³=Ÿ.×—ø5ÅÙ:ˆðpÈÉYŒ˜ZÙW7ŒÜù~3{–{¼øŸ[ X"þçñÎ:þçnžuüÏßúqân)(ý?|ôàq$þo{½þïâáÕÄÿ,” ÊÅ"QJ oÇG¿??~-%…@&øb%”œÈ½&Ô¿y‚I™ø¢æV³ëHHÔ³1êkÞ)·®ý+Æv³««lXƒûï‡ý‘ø­?Þ÷G5ñfüß±ømpÑg/ Ћþº>ddµÈ EÚÊÅèÅÆÒÜnl§?´€NËVÙ8åÆ ŸJâÄ¿v^vžuNà6ÙÝ‹¨½Š’’,|Ã`)½†¦ùÔ°zZ‘鬞Èo3qëRRVX”í59Àž §Rµ¸+וîÈ«ÃD/Ù„«˜&vô˜¡±üÕ ç^D—PA]7Šê‰À.œ˜R±]Ž)÷Fá]"ˆðdâ@·p¹¤ÄGãÙSZ á\õ¿ ®æWÑ <|W•€°;m7Ó”£Èé/Ó7” pŸ¾ *[ß{–³L]w+¯*Ùõ´* F &í×êéZÖôu²*æ#i~³¯ ŸÈR=ÖµîÇ;T> ÎUÔyG­uK 8†ýë`(?¦î†ã×P¤›þ,c¢ÇVýóóìzFºÞbŽbMLÐ`8x7±m¬üÚô…Zˆ7Qý0àFROCZ8@ÛYÜá[µÃ`æ &M†¥¼ H3 ê{ìM¾À¡–}ŒçSo80î!O8„ãØ²`Ú³…ÖðôJ4åSÔûIÚOÙ ú9CãkÑA„-£çÃþàŠt ï³Q6é%ŒÅ¨¨è'•Š /——€ ô3ö¦™Ì‡ƒÙ4^ª¡™õ"E$¸Q”o~ˆãÞ½š¸ÏÑÂc<á°¢Ù<;-Äéá*Æ4idžXzM*ëÕ«nÈ_=†6£OùA•rΨ÷Úºíë0JJni* ÈÂáô:3¡¤js”£Â>pú—ޤɨ¿š¡á̲Š'ápx;´¾j›‰kz¡¤8"7"sx 8ÓÆ7ØÝ›HR‹°:˜ªÒ¿œeq{2«äFfË+-•/ÿ˜Ñ¥‚b—0• ” ¿l€©cÍøB¦T?KŸŒÒ5‡ä½ª©jW*êTÉ‹=M“ê0Ruh,L*(ösåñ¤ð<Üí¯xvQñîŠ<»¥À¨ëRLãÀ¦[Õiý[·Ñø³iM¦ NId9€Iv=ìŸ31”þoƒ¬)æ(µ(ÝöVò‹Ußúª[o¦ Ù{"uŽ–ŒÓ;*^_2}y¹¤ÜuÖ É%,Í€É"F›ò%3! ¸†0[ˆh>$Ÿ½8«oyÛ°‘y”Ñ¥ðR+´¸O)‹5­Ÿäݺá>¸‘ºšÚMY«IR¡ŠC‡CèË–@cs;5Ò{ÏÜ{£`Hñ7šÎ) IG{¡±Fc¤}4ÙÒÇ Ž×sY Û2Cnÿ 7º=íêñ§g&6'–%ÍÖ³Ñî©n ®‰ë¦ù;ž•IÛamfX.á‡åC*—ë#'Á‡VÕ§ù¶ó\b«îêÎa mÈ×H§Äñd›™ðëÙ×kàgíñ­š‘Œœe®?šuvœÎ|‹©Ûháé¯YdPó°ï «®‡%7>¤43F”;„ ü@"5 Ÿútß #ŽBצ ¹a.M4ͯ&fƒ){$qöcv{™¿“n¼µ2’éÆåÇ'ÞevÁ?þ„æ»i…²ÿTþÄ$uä.øÅÍô‚Ž¥yOpÔð {š²j;Z€¶ølíO”±xYjà 2 rˆÑ™±óŠýd|^Úb¯ˆ(¶> ív ÛDCÜçã«òöÿüßzãÿÕ`‡@ù#ú«J‡!:Sìv ]]O€ºRñ]DJsoóøa6oaJz-UطǦòLæüx¶%˜Ò~ ¿,ÊåJˆÅ¦ÓùíqoÙMqûB´Ü–n ¶ŽCŠx¯åÍn Gi —ó 97(Ý*õ_f“¾’‰úså=ÄÿrçtB\ä°NH ‹žØŠí'vô|/^ÛÐ8°½`é^’ˆÊ±µj´Ž •qY ¤ o‰YÀš¸L0ÞŒ¢Cá|Jç_E[ˆŠtÂÛ©r*¢ªã~â.Ù˜]¡ÔÅÓ’â1 [ì¨ r¨QÓiîfZ\ÙÁZIt`¡5 ,(%åPÈmI9|-嬥œo"å8‹w-êܺ¨S‘>8_ª*©¦ø¢‘ôi'uA>¹•' þJNn"a|tסT•£‚©üVR•r£+p\c³QX[ŽÄèç »ƒáeëpoK($Ûµ˜N¡Œ¢|µ[!ª¼Ë)# 3©GM CQöÚû ˜kå0ƒaõ‡ïÇXhWvº5Ddv):áluŽVÒò+Ê%ôÓyʕ댆˜µ–M÷HèáW¡X¦R èj²eúÌþE»I+ÙÄ‚þx8›Ôy¢à37‡œâ¹„Û>yUñDÇ Ò¥Ûøè»|kù³÷³½DwÏ'À¿˜ÑmI¢ ôÕ§Èí¬°V–˸P©S„úý4¨LD[ .†:Û0œ€ÍÁ.S!‹ºÍ•°gGq9'O˜‚j.‰;ÞëýFDn"‘_Ê€M˱UÆ(¸ýó¸TxŠ.²_ƒ{œè6Á[ïáœNaþžP ˜ÙÆö¶œà«K‚|kQÅš-(!Å{¡{H ïæ"<ÙO-ÉÖBw7 äí‹Yvþa4ø¦Õ 0ž÷ç0>\³ÃyÒ!ë#mꥹ¶`±?Þ{ýAfiÂàOþÒ4Nb fBOQ„ÄŠÏcØ‚¿æ-·g¯;½=â„ä„ýaÿ½>«)žU]xqÐæl–]]Ó\q›lJË@â÷BŽ[¬{¡Y0éïá’RR–2 §Yj…¸{±±8ϬŸ0…x³s{àr) …y ) ´è¹Y eì•eÏȼ\^í$ÎFæ2´£Ò–µ‰Ò¿Šmâd™ú´B ðÇ¢)¢Ã¤Ð5?+ôi<ØË‹ªÕñ¡0tN¾g P4ó3¦4{ñÄ¥LÛ"^Ì‚[·;ˆƒ5'Ȉ‡·&†èM(ˆ^˜0%/l/+–(ü9‰®ÊÇnnÞÓy¨1`j\惸¢ÜâÄÊáË P¬F°E5}qÚYJG%msòo|9ãè·©Gi.{¡í–/h¸Ðʵb¼¨5ºn|¢=Ø|ªKCFÀ[ÃqÆ’LµPj| ©”'¹ÏÔ0] \e‡CŒ^mÀ½¹øÖ Ç_ûê“Þ­93´iáCzPºÝ¨KVX02¸­¸FÖô(̹ùÍ2~×&²áWŠÓ~ÓÛÌeœœßФ~Ùït[‡t_’ò¬S“<{y¤>hÓ¿i´â‹ÄùC@Xòó4«Ã£Îï ¶9y_Úê¥M£hW}xñ3Nøà¡5VøóQ> ‹ðòãš°1ýg¦6QàÕŸo˜Ø}ïß§C•×SqÁéÉ󾯉im½l¯tžwO_ÖDïe§‹?ñ³'*ê½<„¯"HçåO'f·²ÿÑ{#³ %‡k'ÏO o€å`Z6Ç»•Óè×ö“ºëäïéi‡þÝ{S³³Å÷ž6UšøXF÷%òÂ×ÌWtÀÉäðš1ËüN|¼°g^`67t ×^ÿ2x ‹©y9 ÞÃî¾â.‰•É"½õêxKvêç¡¶Üu͇´àíýÖaoOO-ü¾#Ç ³ƒÝ{c²»k¥[–¾Œ †p/׺/§>¾òy‚jiã*:¤Õ8Ÿ ñ¨û~WÀñGñdÀ‡®¿’š6ûXŽh2 j#kÊ9|Ʀ-8‘ûÃÁ9ö^2˜™kéÐ(sO—К1)sÌX¤›fƒa='ç?OŸõ½\VT@שäý¾zx/ÝÓß«@8‰¹|”âê¡ué- .O^ªãŸ£‹±³¯aFïã9„‰Ðh³ð¾iÅò¨ï¾BóÑ &\`ü¬¨3®/W½œý>QTžƒúM+ã"'îéžÓ©ŠÐQcMb]ddaÛÎ7Ó=qÄO^a%‚|\ÓÖ[…íTÐéÞÝ9p!9U¾ë•&ðÿÎ/¼ _(QpÂ#J3N”Å'<@ÊæÆÅJTW»pŽ7?û½'ƒy¦^Ž/Ç×?R1å—J˜ú¿§å;u"UZÁ$çÎ4k/š(*"ÂdêÿwïM Tø|wù¶øè6$ö Θö(¦Nß)I£RWf¬jGR(£ÐV1)@u6\J7kš%¥–DŒÃÝÃÿCA×§»§ðKàp›Ë[¬~ñpƒË%bQÂU•ÀÆÏ 4ƒ‘âjOéú\³N¢E,d"âv¦|ô'ýÑÇ:*.Ψ区ìÛ¬F“Ú‚CßHSÖÃ"0'’µ&&aÓ_•àp˜}É’ 4bTmvO tá!òˆlîàr+{Ø#ìþ#ö¸q]Á,ZÕãLDîw‹dóNçíæÊé¬Ü67A÷bi¸yÇÕºnñ⢟½íŠŠ½ízÓí§y…>~ôJñÇ©ÿñ¹=¹…‹×ÿx¸ýhgÿÿNžuý¿õcÕÿ¸¥Õ_¸þ7?ðëo—£üÅk¤½ ›zÉÓò“_ÒsòÁÍm™Ìj™È"éqLA&Iz¼´)í…ÎÑS˜uÎK™÷ÖKO¥ÑPùÝ$Í}ULé«~îzäDGÓa&3_zºÕÍ€ncWÒ˜|ùuîGŠ×anUcûˆ ȸ ÿâ¦g笩,–K Ó§n£:6h¢ÊüD’š%—Î&Ùi²|‡bkÔJ'÷TubÊrc$˜æb`dØNçæN®ßÇ2ûÓ£#À\"±Ð§ö~˜‰—Göñtƒrë)küjLåpð,c‚&•®UØÛRÐKU"SÕü-=Úhæ nuúD+9A 0¥Å„?Y:zCJSR…¾ ø»Ó¨Ö„ú½‰¿» R¡8º{A¡UéÂþhÖH ÞCÄ$‚›ŒbP$2ˆ…¾õ->fÀ8OU‡æSõÉSݽý}ò”YN¾ûJtžâëH GGiõ±ÙqÕ—æczc³ãv&ßà©Gý9*uv_¹”}L.R3+ÉåLk“éÒõ†Ÿ×º‰1Ä |‡Ÿ%ðÖ ™ÍÆá«×åù56ª²Ì ˜#³²vq•y »*~%ŽLò+ ¤˜_ ›Ç±I–ÍãYÝò^óüšÏew_ ó¹;ý1¾Íe[Iµ¶Mò­GtjÁ¢òÃîúOÇÔ¹`þã/£Cý‘[ÿ;»l~ ýO¬þóƒfs­ÿ¹“g­ÿý[?Fÿ{[«¿hý?Ønîìøë¿ÙXëïäáÕîÏ'û͘ö—lÞ¶qÖ(t׊ßEk —.#¼ê÷Ƶ}­Î ÅÀ$J=7¨[Ç—¦\m¤î 1•ÞÚóÑù‡úA~yÕEêäBãc«À¥­`¨,tô¦üÚJêF‹R¯20kçÕID¥¸S… T¤¶a骆VrN@”¾‚Õ¢ÖšRª©ÐØSEºfŸ2àoÑ>lõn[ùžÖ¡'Ô“!S˜ÒOÎ]2¥p/£Y¿3zùBLô¸êóë29úYä›ÑbÅ™½ÈÂåìâH)eË4Ù`”¶XŽh™ZMKލ Qr«6é)•éš*ÂC†§÷›V•6„Hf•ê]éçU±jìг[¶f‰W­Ä1Ày•p8/X‰8®m$,8SPÇCÁ-‰S²Ž 닳XEg,é²3¹eqœ9rR$ÕÆ)¢êBr ™ã`ê¦8°¿§,ÆXÿÈ+òcù$‚òØ@†a’ð“—ª µQ¸V8zÂL”Ÿhð‰Sc¼cŒ8Ç3óq6ýŽU–˜*½’¥>,¿À3²/w¹r#æ0~oûçzóçúö#Q‡-svþÔ‘Üu{üp{,õ¾&^ög0I”®a}ÌEwÄp«¹ý3h¸µóø±…5:„S¼F«ÝkÔà¬=Äèš*†Øñ1ÔäÝW¯i%·m•íw;½n«[á·ªŽ×y£þ3ŽªÝŸrÉ .?q.ÓÉÀÈ^l õy’a{œá~*ý“'¢—M>¡ÌhaD‰ÔF_%»GüÈ‘meÖ0åW ßUFÕSü2ú–Ø8‚ex ÿÓŸ”,“­Ÿ/fr™ |¨„d±Jù$ëcnÒ c‚6ú×s™yL©‡ÇOÓ’oû εäZrIж¸ 0C:b$‘µDrUlH§²‹­åÎȜꦖô8oÔtÊ΀péš»y» •¥À)µ”mÇ­³Wzk©‚,†¿|ÂÕU…ÿ?ÖÕ„Ÿò‰@ïQÌWÇ~Ï_áú-ý*¾5ª V0vÔ×’—¦µFcQe`Z[´s1É>¹_ÀQR‡Ý™ [IÍÐéK³Fàbã:š†äï\S›=¹6å9¶,„C{!¨+»i!4ª‡øÃ,ø;\ ‡y+áÐY ƒ‘³r%Œ¾ÿ•p讄„Ó]¬m”,þ±®.Ž‡Ñ• ÞK®„OÂZ Àêõéf#¶¼ôK/SžŒâ bÔ*NÁ%0ÞbÀ6©N›Ø)ÉH[·ãrrç©F"°÷:σ•ÜÛûýDÇjDáÓ‹˜CvÀ-°Çn']ֳܟ1¶‰oMŽ‚sCEÛêüsj¢CQ‰/à?úd”GŽàÿÞÉÞQšnJtiýÖRLM¿z ÿ¦)±Û@Öo÷î6ñ·&üv ¿À¼>Àÿ_6ðçü|›çÁSÎOˆ¨šã/£ÃÛ–A:â䀩©×s°+ë_¤hôñ»;pôEShÀ aÞà'Lóó'Õèýûø$]û1Å Gæÿ€o”‚c%V²µÏØV­À~¯ªüAUlÊoùÙbnXüN:D*YH Ç-™¢ß´’ ¸MJúPŠ!Hݰ@^“Á´\0üd¿Y>œIßщ;x‹ ÍÐ|JE•Î?ŒÇ¤fçHN©[WÍ´pÜakÜDž­¨·JÉh;v”yBBº}y ÎгtjTôFÓJ•-ÀÒr_¡úk8_sõšº¥ κ”.Ô–Ì UlwžÌćrêuÁêûñ/œbª)H ~hòrCà é}þJœ¼­D ´§ã‘e÷±«s_ºÍ»ˆÖGjØ ­Â!²8iO­ÊùË:EƒŸ!€Ü €ÛððáÕnïÆr ÅúÀv…3ð=®òñåe] ªb—ÅT:J°°#oÜhÁ€-C§›–*Ÿ¸Ï‰¸‘$œOƒx‘ÝÔpº`ìIi¿.;µÇËç#Hd¡º™A¼8QQF+Q¤X0}Jz©º‡8·Ý~÷ %ê¡@Öí€cÎ¥™Òg8l)ôÞtà´98r? ¨€@å­ç{[´Cl¨ñÅF ÐQÜæÞm@’U-õà""nô¼°x“9¬˜=}†[Ù©X‰ËÂT1“Z¨G-Ÿ&VÅŸLÌP?öÄAå¶æØàÓCIB(²ŸÉ®àÉr~'±¤hAo!Ýžle¨Fš«YT‚H}šý*ÝÖNùG VšÂIf™DásúØðH`z,Å3Í€gšÄ3Íž‰dÃÿpã$r©öm6°~;Â@ î71¦Ó·Ž¦Y®AG¨F+ܘv›Î;õ]žwÁyGðò]ÞžRï˜QÁFÐI>ˆb@XžHhÑq¼;œÝÏÑ&-?ºE=¨ Ä<¬æ÷òŸX]þ“UkÓ¶ÙÜÐï×-(©¶€es[`šã¹ Úâ;5Ê«øÔú½.‡þ6‘zÞ©è"Ä6pìØ¨¹í¿MØhÃx¡œ×¨é¼Cx*TO;nO–†ÂkY ­EÇ›ÞEŽÿ ì…hS ®äÁyfwÌÞ¥<à;”-¸QZ/Öí7Íw’"ηá@v¥¹ZŠÓ²d·,£€¾Ü–Ç—Ô!ùš -CšYƒåi,ý_ŽjK&-ÕVh*©Ú’fG­Úâ®ET[ÄAòU[¿¢/w‘j öÁîZµuKª­C"nRµu`©ºõ–ì7× ®µ‚ë›)¸p£lXlIª¤ƒšÃl+Wn¥–‰ƒ™§z뺪·Íµ¢k­èŠàµùC)º6%¤úí+ºf 4]ÉGeÑtI„Cá[“'ÛQRµYZvT?P& ƒƒ¨>ìà/¥ÛÌÕ‡m~#}˜b›ïA!vX¤;L+ÄSzû,Šm7¹j3éK†?ã*aiA4úìÄèjÎ*¬:Ëщ’ê3Ñ ‘°©4h–Ä™»x,ƳM\±1òÕóÐÕ·DÇ`«Ü­«äYì|´ˆ*.oòëi¦0éÕ‡?‹§¿Âô9ä ­s?Œ*Á„£#]¿íéÁ¬oTˆ¤÷XËDú”nÆ•…›¤,Œ@°ò¡G–”@Y£pC3º1Í]¨ÑjÆ”@Fç¦õhÑ÷Ô£–'ZBöHéÑ6QÛ»…Ò‚5®ÍhÁ6s´`èšgZÚf)ý`øPëÐ؉ÛПm²þ숦ááíéÏ6•þŒ{z”ПyÓ‡œÿ÷¥;Û,¥;ëŒV ;ÛŒëÎXº3K¨}¼íÏE2ÇúÉ~Ó±Nt“ÿgrù½äÿy¸ÎÿsGÏ:ÿÏßú±òÿÜÒê/ZÿÍfãAÿ}§±^ÿwòH ÇÍÿã–zròÿp‰–ðRË:Ð$’t¿Ûœ@<é•Óïßqz Šr“mÆív`®áß6‡P)4ÄX|»¯÷7ßñNaL/7kz›…sè„§ØÎ7®ã £ñÈ‹’8|ÂÂr:¦tiþγhõÀVŒæWïXg­”4êö(k¡Òü‹ „nº„ 0À¦‡_H§È$ÓˆSûÝ$G²üƒôËnÖŽ;XšÉ1 µï@Vù( —¢½ej,çã‹LJ¯ú‘Þ˜ Jáßyþ|ìqJäÔå|ˆã¼ÄlŸÀ͈ø›žNíZ =36VбB¼œZ,A- f7ò)ôfS1W²„3+oH@ p¶Í‘’€,lþ´™Ÿ÷!§ÒÎ’§}œÖÖö£„oÞúZïÖѰx½[ÑÍ·1[ï‡{[Ýú+îßa@è’+›?¯x¢šµê•?±µÚÈÿ2Ç#þVö†OF%÷9‚4æéÍ¢‹kÉͦólèjJÑO"­‹?çгïmk%6¨±j;7ÅyÁn1‘[¾¨^Rfú]!c¿¸ê&[4¶L³“^‰+rÙ 6ËfÜ_÷A௛”¨Ó޼ÇûÿX;òþëÿ;ø~ü®ýÿîäYûÿþ­Ûÿ÷vV±ÿïƒÇÿßõú¿›‡W»ïÿÛ)ðÿ];þZÏ_¯ è’¿×ãw€4Ÿf)__¼>S¶zåÄÇn˜æFîºî:þºp¿µ¥ªß Yý‰eÐÛ®xéºè"g³³ª ¨žW9¥2™ŽOZªúe=a-Ù”)ô¥ ›*"þ Nµ ¸`Ú@”+KÒ¦Æâ"—…lLB·3„UÑ|]µùž<¬&ƒ÷/Uœç¨7pÒç×s¬UÝÀ4âtJ×<„`œ[Ù¥Ô±y³¿« ȸ¾þ‚³ü }½ØMÑé¿Ê|tl QOÜ;s{uáߚ׫·!\(+YÈw¡ßdÁâint« :Ê-PIqy7¹˜—ôþ‹½{ w¿ôY#ò f¡w›b²óñ|xAÜò.ÓËö.K'EÎÏWݽšT-Z~(U}(G³(«-Ut½¥»©X©MÐ(q@E„Zôs— ì½6HÎÂFHms @®y®!¾?NÈ{¥ƒ‚È,2L;!¬ÜDO…Ÿ›ËO’Ê«d¹’dp~¹$¡¬„xXEÊ%)EN:ÏknŠ}’o”2H¶f'7QXNÂ|<æ÷:ŸÚoÝ—•×a–?Lùc2›·B+mØÀw]^– NÌø6}[^«ïë£XB,ÿ%óVê]LjµQw7f=Lå̼·ÿƒ¾}żPgÄð¥Ú~¼öÿ»“gíÿû·~ÿß[YýE뿱ýàaÿ÷ÁöözýßÅë=ðÿm®/ü(?`õz2˜Í2ʶõb>dâ$Öñ\])ͰºVÃÿu=ÉÎ)KZû'˜•í¿¢þ«˜ qoÛÁøGÊ,Üiæ8[=~@¿ºÙ½ÓnÝ×Xc6ÍfŒÕá^k·Ó}.v;/÷º½Î«®š}í̇Íße—X\D¥á•PÎØšÃ_£Ã]»7ÿÝ›»íµoóÚ·ù‡ðmV½3Çæîf·½Ù¨nTàŸ)p”Lãš ™ÌkÞU™GÉ–” ú4¯bFV• çf)Y­t¬O|oçú]%h ;¶3¶FÓ´î®*OëÚý¼Èý|AîšL?•–Ñ^¢ëñÛ=JS—p8þ¡ÓÔ)ê;q¥N¦”ãŸg2E eFã&41ËäEë싊lÕœEh›’“oessX˜ïiÿ£bÚ´âo;ªŸH2µÓ[œÛ‚XFû6׸Az<žÙßð¥³Ðuš7NC'³¤?•ãLA ò­¥œØùûÍ<þÓ¹kÊÆ›AE4Ï À6>4{pyÊþ¿~AB_ÿÿåT€Kèÿ?^ëÿïæYëÿÿÖ«ÿ¿Õ_´þw4> òÿ<~°^ÿwñðjõÿÅÇêZûï<7Õþãs{éCpÂV¬Úß}uÚ>ÜSjú(¢Úg%Jma ÿÙ:—ÈZÙ^BÙîqá ÷µÆŸµÆÝåÉïSã¾b•{áâÝ›¶ï®¥vŠضSý¯µÁ«ÔÇ’‘DNâ¿X2’NMW_9¢DèÏN±ÔŠ®niòìÕi÷$ýõ  ”aßýGŽDËo’~ýt»ñGç„¿5þx‘ónC½ÛPï®TŸRµ¯HÅþìU.:)ÊÉ1úƦ<ß{ù’^£zoÐõù8‚Ê[:æÇU‚ß…Úú¬lfÓCqÚ”1G=µä߯µýõ=lÆÝñ¨Ž‚€ë Ï?˜ÿ°°”|¬çæÙ½´:Ú¾íŠï9gË&l13·ûÊâÄÕ§k¹£\-±ñ$2µlàUn}”_Û.]‚λP^¥[#W¡vc’gÞDÖ”mà:ÁšZC©p@¸ÐH$koêâð¼î&AâSíì‡g ‡n3´j`pÅOôFˆßôöfó%xÄ(¼:‰ .Æ›guÛåN«GòJ©šðÚ¥#Çډݥë®Vê ²0g‡4܃§fµÓ½þ­g6)aå Ñõ#•A½{z!½]»>D½¦²÷}‘ç±ßDF2ç’Âü`3"µ¾÷BHD0,”»°ÙD> JÊe(Ñ‘¡V7"|«86Ô'Z46Ôôb(‰ ÉjâD…Șû*NFgÿ¹ûÊãLâz¬™)«ðgì uÍŠ8=yÚð.|.;ŶCD˜ÿ§.  œ^&Nï¶£Ñ^Ø ^²?TÀ É›wIçs¸'Áö1‚›Ùlwu,×<:ÓvÝl6êÐaÍëЗÖ_§Êfûí*wü”~n6¼6Šê·£  "û”T,ÓçpýŸ!=(ØëËW»ê6I‡ŠÆ!‚â–ü¯O˜xû#œ'øæ*ƒp÷çk³ˆHÄh„D€Ï_<¥‹¹‡"±i§ö¢ú´ÿ _xëÇ9Þâ85$BQ|â;´ÙìÔ:Õ§°j£èvêþ¼8-iëΚDW‚ëlÆÆïl![oÞ„°Øv7`~\Btž6<ºÈ%×á5ýy½Ù,û+òk,ž2=±Öàh`ò7Ú6ôÇA£ùýŽ¿FbÅl Б÷]µ«GP¯á W¿S51>ÙѦ/ºÅÚÊÍ|ÿƒGÞ%4žêßîËœ/9½åÌ@3äG7ª:äG䯯°÷bìˆ[z‚i}²d'Ÿ%õz£¿xÉY¬©¾¾öL¢&U,Šë’H¨Wm¥—ãlºÈ€E 62‘‘Ê÷nq/0Ü(ËÁv;ââÆmr1þ®9º‘fCósýW—©•ÿòeK¤£€ï„ÿíR‘eø ª>yÓ§cKPã@“ Ïšôíöo™‘.ÉaîÁò4Ía>åøoýg (ªà–RÿÕ;¿,„™@¨X«aºL)3Õ˜ ¢ü@ê i¦•)'\Z C,(_ ƒ9›þVHa÷ÏÍE î ¿Íèoo+\·}d=ö£[¦â?¥}NóŸf9Íi®š‡ÊÆÉã‰z‰ØwO£Go ºÙ—™/ß…tj]_¿ ¸·¿<=it^u{pOÇ+4ÞÈŸäÝÙ]Ú’ƒ¶wLÙ·ìNä–-©»6Êút™I$£ÀwžÊWÃ/éÄãÛB稪5€¤ŠŽ¹»ˆZÇO™aÃy^Î áDÏ3Ä¿ž@x**|£z£j—Üú ±­7òÆ­úy~ã~*‘, À„^b™èÀóuޝ^ïommÝPÍt‹z¦Ø]õLè4Ýø¾õLõÕè™ê9z¦tþ±âdžž‰º¹š©Þ(¥h²^Z’©Þ(ó2ÎÅ7P3mGX—5G°%tKª™6É—c’ª¦ný.•MtœÆ/?²IöyØTÚ¬ JÔ•ʧD±FIÒha} #ÕÈAj…R9 Ð*¥2ª)”`†ü|tbœ›<y÷xš›Õ©—Ìt/¯fò z—j¦zI5“?ÎR* ë mÚ–T<ÕaßuO™´hÿuGµà%¾¾´*ê0TE݈…o̾«WE­‚…oªŠŠ³òíª¢ÒÚ /«çº§L*¯†ª;ê«[ã_ü]óð¡­À8D%ÔažÊÑܹ èã ý†:(èXÄ—;¹™H1§M '—¢Y±%uT]<éêFS¥ö1E¯U}µJÂJ¶r®†¬¸òç}yÅU᤬^muØl:PVm% ÉKð­™ ú­SiI´X…˜$Kˆ4ñ2”/Rn©¿|m@|ʿݪ³þ²üî¢*9|¤Íؾ›ÜЦÎA½ó´ë“ÂRÔj Ùè[*ê¾/MݾÔh®B×(n>„¨“V¶Õó”måsåbÓêÉúüqãÿ§ß þ7ÿÿpgÿ7Ï:þÿoýØñÿ·³ú‹ÖóÁãMýïì<\¯ÿ»xxµûñÿ=K²èÿÖóC"Úø×:€ûÜE ?Q]NÊŠãù‹Rõ¶+Üû‚¡ü=˜áá§Œ¦úët–]á„ =€8løâÕÚÀ|gmñy€áœ*˜ ^6¬Ÿ£Æã‘ýë°~ÝôÛ†õ##—€% fl2xÿ}a Oa›˜ÖÄ`+Ûâ``ó–, cƒqioɾ“)Nä‹xrM©|*‰€ƒã2ù~äˆv¦×²1ímgÂÊ&`n×pâsRBx,fXÆoBÙ¨þ °­iùꙞšö ¦¦½Å"SS6°¾0²~ÉÐú;‹qœNÆ&¼PtûíFª¿ ðôƒ£4ÚRþ²Á?á6ýìîu_½üq¢Àuð÷ó½—¿Ó?ǧÜ èÔ¸¸Õ·ðV~Äèmܘò›ìøMø~¶m—mûOWûgˆ¶Px¯lx‰`tƒ‚ ßzu¼ÅLÆ›6©hÔ «J­¡0§’->9N…ûK.½ [á’ñy2 Ð`)Óž9íÒåp/2·nc¢·]·q«åpwn¯®W +ôƒª_±“jêž]k‡]wÐðªýÑe¸MÞ‡²,_›ÿ>25v_²Ô÷2ºvUÅ\ø‡b‡Ù¤?š¢äM7ßìJ½-Êàz¬ª“3ƺ¥U_Ð…?lý´©U©Áy©ÚŠËÑJÚÂ?ж^µbMoâTÁ¿ÐõYIÖ­çqS½êþ’)†ª7¾5KyÅo x«y+¼µhº4«MÂdwŠ´·ÆÏ$ÒÙ^ÌA‰å— :9S3ïEÏË9|…¤Er9~ÙØhá*ð½$w_‰æ¶x!g ÊÈ'?££h÷"ѽ)ßËË„²wë`»¨·y ,ßFÚØ-`0íƒ:aæ´inË^íN~ÔF[}–£ …;É#ìðêLß8+8Õï¼È=í‡òOõ_Q‘Xxª?+àêrª·sª[LÂí˜X¹ùÞ ‚C]æ½Zxz*¥·Ùé’ûL£ÆØ‚³ëG‘_œ~iimÞüŒOìfÙZ zXêèâƒk³ñÌòzNv'1ÚT'žî{3ï8KðØ ÅšÛã²øÚÀú»›lä±fòBç)µù±/t‡+¹Ð}›­ÿÑ­nýÿ\_èÜìÐ>ŸWz>é»u²= ÈÝúA ;åäÍ“;Œ0rþ¦òÜùVp…ܶ¹’;ßfé;ßæî|«àº¢ƒÓ°]UbΜF”›Íåù°™d„úV‡f^—ñ Ééßwà &éF×ÇÍüëcú^Ør l¦n˜¥®Ë^Ë]7 .™ÞU°Üåq³Qæúø¸Äõ±”ôñˆ¤–¹>®èúøm”Â?ߪR¸±}W÷ÇCïþx÷çs û‡µ½÷n‹þÉþW»j®@çzÃá‚ú²WÍ\-©Í¹çå7áŠ;Æ¥\V u´ £ÌQûc]mKé&ÆÃ¶FêÖ=¨ÊÇ]ôœ¨‹|ÿOÏÿ¿y.ÀKøÿ?j6Öþ¿wò¬ýÿÿÖãÿ+«¿Ðÿ?¶þl?Z¯ÿ»xxµþÿÍ’9§¸SÅ׋8:~uòêäÍÑ^n¬€l³x9½Uôûîâ~à0ƒ N*È@U\4Þ ¹LÀ\¯‡·m@óxÎEKôçXd†°CH‡!,QâpŠð„"”˜»¿P8B¬Æàñ^ë01?¯†x•>ùe^ƒ `àø…;+´ç2$kãýtÈ‚¬jGºªV×{©jÜ­CÖ¡ N(CóÇ20P«Þ?,\—*lg°XItÄY¿ðdÔô¹íÄÇÒ`½Pd÷°^ývVÅ’*—d༌3_\§^ »ÿŠ|ØýQ—K_üŒÅMQ9ÿ[1UUÔe¡ë¼Ïÿ?K«®²¡õ¬]™½Ä®šÉÖ߆ŸíªÛã®øßЉìéèÏ 3ٕŹvê¬â¼Ye“få¸Íà©-oÏ´·°•Mª·Nñ+„%zǜà ½d2/å·ÀÙÚbY-çæy¤,óI7a|xd9/{1èyh<ÌóeàÇx4t âÕûòí2ïZ@Ëú7˜–Å>0>ç‰::ÀÓÁ]Î5²òf ?‰4ö“Ñ™åŠËä[kõ„ü¨®$wáFWîI‰•KÏ;ÿC¿Trút;½íò?ìé´HiÉÛ?TnRlÝÃjsÃj1¸GU줲鳤ÿqTdZ3å0¥Í’›<¦ÜŒá.–çÂ"PÔÅ|hKL‡ ‰é°¬Ät¸‰ÉïLveKLnæØ‚’@w)1ÝTØ)’_´ ƒ|ÐI:kJÒ”vš‹ ;‹ˆ:NœòmOdYDÔ)ãÐÙ,)ì%²lŠ §iT´ÙL‰6fM…bÍ¡-bbÈ]^KŠ59}úbÍúÒý\º‘ܨP³È ü&÷ï¡ÆÕdgetNÇåuNyÎlͼÙÖÏ¢ñÿ›½;¾—ü¿m¯ýîäYûÿý­åÿw{«¿hý7ìl7üõß|ð`½þïâáÕnûÿ´á‘âÕñËš<Êw;­çt–ìÂyN¾øó^Ü•Gº/˜ç8Ï0âþ×ü¾ÃÓÊÈç Œ­…–—ã ô¼B?qÞÅÛÃÖ³nG®‡ýsr(Á^Ûb?{'¶wj¢÷â7£ZÔ¡ONŒž*ùfÒ¹ççN] ¤]ÿèxïY§×y…>U4­‹xýÅ`ß=‰|$"9ûµ–öö#FÙt6¸êÏ2Žã™dçà ô†>+°­] ÈƸeõ±½åÌöçY¹†aȾÈÚy®Q¡Úx"]‡.£Áì+}(1$Ï0zçR´YµÂí4ŽøûUÁw—ì3ˆ ©g c“ ‹Q٠ȯÌô¥ÜÌhþðî·å ÃoU°vO¢ZÂçù .ås(É’Ÿ¾¶Û;$ ˆñŸù`’]<ñ|÷ܽWè:Èýù^…üJ-ÈÔ•t«T®4»sÏ¿1êÉHoú^“²S\µå:íjP£ñ¨>ìsúµ0t_¼ɃÝR°Ì’›Îhê6=Åi›ÎßY_ú\‘Zž[Ô¹í.ÙvQ)ÊÚÜŽøJ¦ý\½­Ázè^Râ› VØs[ÔÇŸèŒ&CIÕFúÝJ—KïeË7²Žˆ—ã!`:uÖÃà’¹ù)ר†Ý±ÙÔÿ¬ýI•‰+ükβÛÞŸõÕ=üë響$2 …Íô'5¿Œ*£ÚŸ›ÎñIì\2«KŒœÀcU—IÇúh<ƒ…~™M²Ñ¹ç‹Œ»(¼ÑŸNa¯¢öl0Æç´]‚‹|NÙ«±En»› :o¦–¢Øùý”;ìµU³AXÛ¹ÙÈïWâ»xžßeî2hn(ÿËcÙÖnœçk÷ͨC1­Vuá'N•„ßF‚È\Ô7råì¾:ívNȨÑeиvFdE<Í;Jì‹Iˆg ¶z{ü³‘v«Óý½ ýµXîDû 4ê½<잢·$~šúÞîžÆCyÔ$a„“ôZ¿ïUÄN”v7p/uõ¶…›I:ì¶^>û­†B}÷D•æK¹©Ö$¸šß,g çáÞ=î=;¬É‹ý{ÒŽÅï,ê¸Új÷ï6Nónç%^9⮬Ú57BÁg¸Q ޏÈHxsARû ñ™‹àÏ á©?«ŠMù)âm>^Ì—ß91^Þ`«ƒk¨Ú$–wÕ奋 7`Ñ ÊEZòý”Mx‰„«›ðª7@ù ’¢çÂI¿~è,ávr¾±Sqà$LäˆBrh§y 'â?åþû»ù "žÆ-r5F!!Ùê±k81ÓRÚǘn··ébì÷¯¤ ǤïÌm`€|Àg¼ÉÁ8zýKt`é^ͯ`7xu’›v—LSV¦eaµoÝ—2=‡x2#ˆŸ­ßÌâ£óñ¡µœ‹¤Ô>Ïá4~E2Ì_ù²aHH£ÁŽÎóÐOzO]øÃ¡Xù ÜÔ!|¬ºôêØæË ÅgûµyD\èW© ûFßI»àÒ+j7kÄRReù£‡f”µ8]ηŚ?%/°pA¸osƯâ«Â~Ø–±ŽfaÖ—VÄÂø¤­«œÝëŽ9ŒL~bÔj®â“(bn8Ї,e"Wõi7ˆdµ‰áü]vÀºÎßÏ¥F’;„`m”IPhÝbÙ7÷ròò4îp\fc¼šMÇâ3ˆ÷t<ïÏq‘ÀZ¹„›n,Ç5F¦A ;áËŒNw,wiæ¬Å ŸÉ­C ÌÄк¾jº†3€ÚmÈ]Îmþ 8•w†É9ÑKs;>©$²’òqœ#T·“[;/Y3`ï°Z))7&ëâêßXƒ¼^¼¤‘ø‘aªs¡¢Ü­ˆ¸ä/DÍ"§IsÛßZt*®V÷ØöÿÉåwSÿ÷ÁãµýïNžµýÿoýûÿm­þ¢õ¿Ó„ûÿ£æzýßÅëݵÿïk±òä¸Õíy×'™H Š9)ëÙñ ß„û{ÇÇð:ýd±fípÛ¾rs Y£)["PDχS^a+ÿ¾ùu xz þ;«ð8r+þW 4Ùd2žˆwãùè‚s…¼^»ßÿƒKcÚÖ 8`¾sÓÉôCžÁ‘íúÙååà|€ZPlGy >ÄìchsR³œ´±þ2ÚZÇWÀch›GW\áe@8ÃD#Ù„3¡¥×Ü–¦ÃÅ8›Ò… oÞŸhˆTȲ’ö]Æ·5}‹;ï°Éà ©È· —j«Kx´ZË<­–âNǥDZ´;fªõûN Ò¦¿!8ÑÖ?T½÷Oè}vî—M*'©—ŸÉ—³^ŽhªkG„Õ;"|›RçÀ…mÚ˜Îb¹¤ÖÎÜríq ÎnÒ«e oŸäç·â!ÜnÒª³ÅqD:åÖÙ °?ÛbH!ö(Oü”JÌy#6%Çc¢%ßäCüœõÏ?˜q~Ê0)œ 嬌_I,Ѐ>Áj8;9>Ý3ùØçV›óñd’ÁÁÅõ €Ã±+)KþéŒd0µý-/äÞeÆÀÛæ{8–æZó [Ù{hbÑ+wœ «ÎøUŽúbf‘pm`kË%8áŒ>ŽÃŸûÎVïhjqÒéW 6^¡‡þð3:N€¨9ÄÅäœpWñU½D][k¯Š‹Pü`°ŸST)I^ôeflf²¡0_If2çáô ®MHL S†Þ FînøU“›6OÕ}¢?ÂQIp‘E¾ôÏgµ#Õ7u¤*ò¡ò½¦øóÈu±\B=í¥ÞØ ï 5íUàˆE—Œ®¼šŸäÜÊu>2œvߦ ¸wwüÃÞÉñü‹ÿµö÷üO“þ!CæÙAšrwã—µ°GSëìè üóìý£üšNÚ/§z¿ß–wüèt󆲸‹YÒ…,Mé:&_ ±Y;\-èpÅKÕ¼!Õcì>¥^YÀÁj¥)¥7a‚T¨ž Lëk_ùå½þì/ïUœiò‘ߤ”×?ÃV¥sLj3¼Õø¬tc=-7ð;ÞïÝe‚JL·–.ÇJ`Nñáz; ¥,v¿Lyå¹§²¼˜|ìøö}ªøúsòÌ{ä Ö}»ÁM¬Ï›ð9ûÓÃÚ›k¡w‡×S&—"î(pA\ÌáP=&•e]Œ¯9ØáÌŠàÌYüÍS$êDkÊ Ð+xG“⸭°{ ä]ëð…¬Nq²‘™ZÚ/ϳ…ùîR(ÂP—ºŽV´ãYÊ]¦¨úê çþ ¸C‰þ»iå~­R< þED¬nà¯gx`ã/˜7ßw0ašã×ou©4+øïP_#\m­hÊ{ÝÛ-ºìë[‰†¦Kf£1°g_FE=\u ¸È”TK¡’Ì—x¾¸`åW9TêÂDKƘxvÒ(B—|`%‡ƒ—·)KPÃÄÏò#MYÚ´¤d2 K4ãåªEl£r}æ;à4´‚Y‹¹Æ9é{…ûpotÀ'Óyîbm.&íT?gf¨gºng,ÜaÒ©óï û¬ƒxŸ¦Ö›¾À$jh@ÄS~³S—%S«|ÚÙšXç˃íäWö“H¶‹eBWLÀ‡ Æ2yê綉ø0—ˆI|l|èÒÀð•${èþ›‰’¼þÏUOÕcžªºDÒÞ°‰³uÓ™£Ç¹sôÏ›2:V+\-ù~–äÃ\lß ^-›Ë…Àblî}q$wÎ ô ¿£#£Ñ,b„^LÞw@4=%dF–³Så2€aKë°n4V6ßxñi4o¼Æ ãÞbK¬‘:ŽsO“Û!vþA>Ä.{r¯ôi÷żÿpÑS#27‹Õç4eó4ãžÍ‹2þãe—[ tþ©>”.{Œ—8Q¼¿CÆE2þœ¸ áz1§/†È± !¾xzj ‚{µ{Cê±ûöA^œ›×†V‰ÀÛäÛ"ÀÍ—·~3uÓø9¡²•WŽª£M&èü;¥v83¦æûò“ªØf[lêê½NG:ÆŠñ¾êŠòò\Ò}»±wÔÛˆ(6Õõ¿juhl¸ôŽÑ¤ êîåþ­ëÉ£0V@¬¸Hú±ê.©€®ƒ‚ÐÖe—î[3„ŽŽtsh[UswõÐUÿüº-g¬‹³ yÕzðmª JÍE‘âs>!µ!»"H=HB±bZæh¤²ÅұؙéÅ)ÐZz-ÏÆÆ%!ȉ•R¹“¾AÎN•×Õ@Á÷VÎbLèhV²5ÅT:öÞ¤‘3/nPKÀ,¸¿Ð¼Ç÷¨ævRãdö6oØ«Õø«‰í-×+ùfC3SnŒ,šˆýíI¾7Ø‘¸Qd·”NŸø­tÃæ™¦}=ˆÜ墅åúŠ±Ý¹1¶;EØŠ$ñ»«#~2¶™Û…-ª?ü×òÒo³ELÜi>HM7!¹Cy`„“îAb­‘}Ú&Bjmƒ™ùý¾lDc@3K°Ö“Q´Çû½uíúqãg“ï&þ÷a£±Žÿ»“gÿû·~Lüïm­þÂü߸Úýõ¿³½Îÿ'¯v7þ÷äxµñ¿ùðÞ»Í]"*w¡ØZ 0þš*‹ñ¥S¬p7u£XM¤ŠÔÄÒ¡57¬±Fn"Nðb©šyƒi*«5=—2^°Ë±m¡¸¼ú»¯u Œ“q´ˆÃù‡ìü#«k.2ÔhÀœ.¿r¨€ tœœ¸Åu¸ê:\u®z³pÕ/‰÷Ä©Räã:@õ¯ z_ÅV-§új„‰&_™9«n“/ƒYÍŠÇÚ®Åc!ï(Òõ›Ç˜(¿zPl >—éõ†–'YºZtƒs8¼(‡Efï5¸HåN|è-x~ÔtLáúÐÿļü.ËF:™ÆÖ†ÇÅb³Ê…ÇUd<Û ãÚÂx¶ˆˆúbµaR©0¨•Æ•­(t,žû›ò‚’øÂЧ[ŒYŠS-¡ä4­˜‚&ß2€é1Hp;¼Õ Ö†±ÇÔeÑö¥Ç…–MZÚiÛ[ð’ÊÞw‘f}øG[¥p+aï·pë&q“–p‰¼(ñs÷ŸÙÂø‘È$bÆòв…‹'‹‚÷ç-ñ³©hqÃDIŠ(ÛŠácêe‘¡-FüΖ31Íf2“ŠˆÐ)9For-¶ÝJw³Q½ßtL¶¢‹öýÝ–gÃÕç‚/ØYÌç8î‹lzw –Ý•LL[7IÜÉc¢s)ß~ŠkŽ©·ƒÊö“nmûÉAn>Ÿñ›.~ ¢èÈ<ÄÁÓ.Ái".´´Û/.~Q¯v.R0â=Rã ãÞb²ŒcÜ|´œh@½¨Ý{[2,Ü«¤g€lùt¸‘/@DN{× ¥¸C$©“£|beBü]¹ùlü|1%úße¢ðXSÈÌjD}´¾Dƒº.l/1Ú™Ü8J~l3˲¬ûã£qtçë›Ñ@n¢1þÝ C3©ã;%^a>ü}®,¼¹)6±Y›[bs[lîÈ’›› V€G—"ØÁ¶Ôë`¾7ðR©ˆÊ–¨l‹Š*QÙ•¾·µ«­-±µ-¶T¡­M±ˆ­ |Ѷ·Å¶*·½)¶±]Û[ð½OaÛQEw6ÅN v*bgKìlÃ÷8P>þ˜;ÜYͧÉèr†xqdL‚˨Õ>§w3ø÷d,DÔ¨Jžçr¦ã°‰‘$§ù§é``ªIÐa–gnx`.«¹íW/"Žw*Ëc"¦ø†ÜÁHV¯šxÚ[ˆ Á)æ‰ÆhÚ²£AÄ%´Cû¼ ų£èÊŽöv ³L•J¢w¡2òHa…½ªï#Óš)©~o†ËFK‹2,ŸRô¡ï£›è}¢aIg­™«|'ºbÁ†%ªXà°’v¼‹Æ6,é,iýÐê—KË軹²õå&6­u®ÅÌZvÅ€»àVTœÂ©h×­ G–å<ŠuÈMˆú‘Å3êÏ´~ bo2ÿÄ‹ Ii†|õóB=…NËÆ£q"¢¾N„:eùþq0çmqDCO'?5Hüç<æ+@„@30Å0sZ !?ÂÃÌÁ4Bw6=­¤5¤ZÙF²*’fa‚ó´%?qÀLÜíþVR­ì å¡ý1Yðì*€AÊ€áÙ•Ât<ø6Kb¥&Êá}ĉáð]‚(¶¿8¶žX‘l=IbÙzRD³ýÙÏ÷(p·×+p·`°‚À½q7;˜;Ü ¬"p=ƒ¹' KHÜ·ÀQiá]T´äHæ®"ý«P G^ê;ÿZÌ = 3³ptW©)\}bœóÌXÍ'‹€KkÈ#F«uþ&UÀ%6ä£Ö¤’$uÜÚLù© óÚ:£EB×Ó ûëq k4>¸oÔ­¬èh)tdëF”„¯¼Q3ùY?Ñ×ïèëA`KRþ©Cù•:¶äT g Ôõ`¬`V]vµ°üðÏØRK ã„%P~̫ر¬Ð9:Öe}’çôŽ’gݼ)¬’ižbhÖǶåħ·¾Ë^3¿V‹Ì¿„ï“#g#†x޼nv–Œ‰„.D„¹“e§Š•¸ØšY˜wa,Ť|ßû)'‹"µ(âõ‡VÄëDw™Æê:IpJÉÃôLdf왵¡  ™Hàêä™@ÜEoweá z{Øõ?Tq_~‘Üâî ”Ç³H\æ¾ìd‹ÌoµÕâ¾l@VVñýs»‚ŠŸ>µ¨ã»òìat|s½®_Ç¿›@ U¦ µ™ÊRz~òñ̦„øpŠþ¼\n!î]Ù_ž*–QöïÆÓ±‘ÐLGKÇš4þ;q´Øerw­?ò¥‡¨|‡ûxó²¶Ó}¾Æ¹¯ã}†þçû¾ •ÉEÿŽÇ,‡Ë®5ò©¢ÒÏ~¹¹Csund;4Ú4ùïáÎY—\^›!ÜÜ™óÞîpβ45$`"¡.×½3UXm¯ëœeYªð¬ŒûQÓXÔ=iŠI”yúèøÐÒœ*‰&5±¯¢'þ|êðâSÙ¨øÔ2h¸ -Ü…K%É®e(âQð(ïªx¨Ó`Ÿâ¶¾ã`— ïÿ<Ø×âý)n^^°ì"8\ 3ÌÖ^A’›Õnö.¯Ê3½‚cIÝîð!8æòär‡Mõjš í§pÌÕÈÆæ›`¬e˽’¨=|pÕï “Hwýªß9—ó¬GØ&çWSÏ:”¿;2²ÃÂáÂÊ2+ÆÊ0‘Ѓ¬‚ä<Éü¬Iù»+Š[÷q0hãRW¥0bøÍéálóíðL:Öð»Í†ß튧f’á÷¡ßð»løí²^¢áw;Åð»}Ãïv%Ú€|Л‰*èþ²>(eÃïvÃïÎz ¿;ֵŚO†màp0œÔàºìM,ÞÒñÝ»û-ÁeÛÈUÚòýW3¸ = %›5Àe»9ÙzÛÁ›Ì3ÁÈÄ‘;-»¿än£mvðŽ"z}Ä“QBw<Z¢aÙ݆ 0i§þL“l;ph'ó´'NvúËN;î%w?;íÄ/¸µî=²ò¿„­ÇúùßZMÖCÂíÊi¸½6ÞüaH8Xކ×Ä×j°&鉄.øXàħ—~–ÚÀ®E8Ư¨{>±NÒ'ï|`G ÷v^Ôàý铞É_nEð‚ÇŠh…¶îÐ}+•f²‚R<€V¹NëÞLÒe­Ò‡ˆ„ÜHŽ' ûËef)¹œ°öD·\âX{ý¼pýºå ¹])HaXy {¤MÕ•GOȸìÄݧ’yov²ë©)ØHèÆ=Óø éŠÔäø°†µ5Öjb¾ÃZúCžŸ>˜am ‰® ¬lh¡{¸êÂ<4o©BXÙW¥4¢¾<üêáòŠÊƽèºf‰#é–#ŸL$ôÀ£xÈg9í –|2Sá] –"Ÿ„5w?zîLwï ®Õtc-TlÒÎ7mw¦ãÍ…Š—¤âu1ÁµZz¬E†&`"¡Ù˜àr24†xŸM\quÎz/–Á±4|ÿ'­fO«™zþ¡kF£¶ÖZÂRx¥û /·YÁäóÞ5Ï{³Ž—>«–ÿÁòúnä“ìSu• ÍÿÍóþXÌhx-TìRϽ‹Ú´¨ø"ÒC÷©ZÞ›ñZ„d&zpÇ3^Êxpé—º^îϨØûÚ ³½t2¹<´Bnïþýoûõ0Eéóòÿø÷üj>–¯î¡ÍÍÍÛÛ¿|±C¿7+ü™žÊ‹MT6+;Û[;/*;b3ØÞÙÜú›Ø¼‡¾DžÅlÞ›BW¾Œz‹YB9(v•„ŠÐ¿”çû¿þ÷¿ý¯û[«×ï»âƒ"}üîoÿü¯Àÿÿþãçÿ/ÈêÉIGþ‰5þ_øÿ;Eþ—ðûÿ³?¹.÷nnFƒò¿½ioŒÙ5þö¯ç€ÅàõÎfðSå§Ÿw^w{W½éðõüô˜\ÿ÷¸úÓÖÿÖÖKLPg¯ÿ­Íͧõÿ¯öîi­óþô¤ÑÞC vÒi„IT8M Ël4Ñã|<$o ”‹©Y=ªÖ…L‹#r˜Ö 3o•·ÊA>A¨ëó8I`õ fĹXÌ9Ëúþ~¿Å)ú:ãäÆ˜À¦Qk‰_zsü¦3˜ zÓþ'QŒçƒ©L €ª7ÓáHT6¤S™£Or€ AöÄlr5¿ÅŒæ¸jz˜9ùëð’{{:~-c'Oãñ`6 Š Òïë½Ñðj2{¢6˜~Œß‹ÆÛÉh2í]NÄî` ÈäË×ê[Ñœ_–˪_‚’þpÞ&Q~\è|?Üÿú»j§Z·òIEgT–õ¤aâœKmOž¡*åÏöµMs…Êã+Q°OáŸG‹)&D3qñ÷L{ PÀLf+B‚¢äi=™Íoc–‰´«b6Ÿ • )£=B¹â´é ’ríÑÔ5Aÿ‰-QkV»B©J >ú8™矮e-=<£‹ª“r!œÝ×3Ã$o(_ JFØæ¤ï²®™È»ÿÚ©XWëžä„±PdïiS“©§Ø 0³%"~Ý5uI3K$–”"=-5žŒK‹ñpžÐ®ÑC» l¶-‹&äOG4N¦˜ÂTζ"2Vÿ¯7bSͺ+[BzÑ.äÚAþyEä­¾‡IÛ±Iá2Å*r5þ6Á 1•û¬<‘yŒ½ˆÙ.ÃÈŠ.ˆj‡k‚¤c?Æ!Åä6_µ‹›¯¾”€GÛÉÔ_‹/oÚÏ+:Ù¡•Ü«•¬˜·S¿êZ}k6kšÇw˜$G~"å’²fÔÌŽIóÛ¹Aì(¬LZÕGÞŒk¢gõÀÄ™“[•A ÐÞpÌ|hB_¿öF‹ ä¿l C<8‡yZSßzýùè»ø÷`:)3; ñ9u’ìyúPr œ‹!‡Â\z2žÌa"”¨Tœ1Å„¢ 9МXÒË”a¿¨D½Ù³;#U¤§w~aA\~çÔÜÎ:õ»?¯³Îâ›ÓYçdOÊ笓±§ärÖé×Ý<Î"òè„ë*WºN±ý÷ûÌú¼³Þ¬ÏÛ¯^D"œô¬Ï± ¹ƒ‰ÍúxÚ¾kÖçʲ£á¬Ï±í¸Î¬ÏšáZ”añÓ;g}v2æ á®5suïdËúìÀt¨~`ÃJÚñ.?ذ¤³¤õÙ¤yi}7W¶~R3I›ë\?3IïD*†™¤­ŠnÒmοì<ŠuüýÎBMÛ›…ÚÈ­¥€òcjê´†T+v~h&B%‡Î’…:±!ÕÊR>*ÐÏ®’nj)Lǃos±„ F…,Uï„ì#N ‡ïD±õøÅ±õÄŠdëIËÖ“"šíÏŽx¾G»½^»EƒîíDˆ» ÜØÁÜAàÅ`ëÌ= \XBâ¾®ˆJ %G2wáè_…J8ò2Pßù×báèY˜™…£»JMáøã ¸è+à”˜gÆj>Y\ZC1êœxó7©.±!¿µ&•$©#à"›ÏÕóÀûHg­Ok7Úm¾Û¨W›&ÈVTEþ*ZnQñgíʱíÐÓôÞ7+žŽì/Æýù8jrû˜¦]¾Þûƒn[ïùuB+ÝÅ…¼Ç1ÚñâüçE4ðhµè×I§áÜÀÛ}_ÿF»Û¨‡p[ïw½ÝôóވЎæ}ñ ãd YÜŠM$a¬5y0³)?Zko„Lo¯Wñ¤,¯±Œæ¿ºŸ»¢óÀ[—ÈÓSX*2ß\‘È"÷m"?ÌHä1ˆŠ$¦ˆÙxäÂýlxéÌè—p3˜Æ~Mžû0á×L¡€˜Ãû*¢^öÅÒÒÌöÆ—­¨ük1ºì½ù’]a3¨êðÁ÷‘åÃÝHc{VN›ìªš!%î0Ô[>^V³L¢4T­¼ÈNêÌåé;Mð_BQK!U›dÿ¥` X+Ó¼“é·)&í/5‹Æô/Kû¡Cûc¦þ˜Lh–ð(dc^4Åä4²>¤º˜ÓekXç.>æ–ÿ÷üæÑøÛOþŸò<ùÿ¥ÃÿûžVºÿ÷v%ˆú?­ÿyxµ;þß'G®ÿ7^‰töáÇÑ“ÿ÷ŸÁÿ[–º?Ïï#åúM„³‚øÉ‘èOn†ƒYŒÛ÷Õtr-¦ƒþ\½¹ZŒFÒma°Ÿ ÈìçÅ|‚Æ!lV/+õë£ü2>ßY½›;ûH/ñrüææ¼^ÞaYŸ;¬®ˆUÿÇî»yXÛÖ0T«ÿY=«­à\¶g5¶Œn÷=L(¦ë5ZÊ÷€€Øyòr8ë/fÔ Üf¢ÏëŒ^Õ0Ž$F–öŒC»È¦£h·zØZþv8CÓGÂ80:Œb'Ø<ÿ3º±r1²©ƒ˜p 2…Aàq‹ÐÅLGi¹!lÄrŸKA¾ðùy%/ÐíõsžöðÁ?ß ÿùæóëMB®2.}ÎGÀ|&0ãe=~S]~Wôù%ÏŠ'7Û'7Û'7Û'7ÛÈóäfûäfûäfûhÝlŸ¼lŸ¼lŸ¼lŸ¼l35äí“—í“—í_ÖË6zøP±ðë$ᤲ(Š¢qPâàÊa„ð*üÑõ åQ;Øz -ëQ»[ß>x›¯ïOÞ·kô¾Mñ‡Õþ³wñ‡=9zhX§P_Œ5µ0º4tüGWfçmQ«0“xNW²ª9æI8èÿÍafù m¾jŸ” ³çö :¡rlHª?˜«,wážÜ–¹]öH·ììÿ÷úkþ%cŽÊ£pòîk—Æ“ºâ]||Ip¶Íßú[Ó1wÍ^ÒBP|L,¾!?ν®ÓaE?Ò Ÿ`+„È™Â^ˆÐ8Þ ¨‘Û®ÉQ¦f¬;nÉG‡ONÐéMÖ027'² ÝÃxúñ»û^à÷Åp;¯ðú HË:⚣DÛ8 Úƒ#ä˜Ø+Í`¡FLöî<þÜð6‡´½ûÞó‚êQ5 Q÷½¿–=ft=€mÄ H˜(xçÇÄ%7ëņüöÏéCÝ1sI³3 ÓOéÀ÷VÜÓªnÁ/ኔ9v¾=è&à†67I¸mJô â…_â>&yâÖx—:’¸ÆXŸé*-¡VB5'ÝŒºêå8ÉI¨ÙËaÍÐçš ÆÇÁ2kª‘"ˆvA-…ùîHȑȊ1ä,þVè|KtbŠÂxq`/*y/|Uø*g—wòªf5Ü$Ñ$ïõàºcGœ±µÂSÉ®ñt‰áûdrqñ£1>O÷Õ“o‘tpÞhˆ|ΫÑÊ͘(ïÉ¿zÝþÕ+î"VS¶éÚ?òf"rÅÅ•?ðVâ‡õ²NÝPÄÍMÕ!¢ó/»¥8|ÚQ<ù`§ù`§î.’d†b‡0û”„—ôyüøÃl5V”—Ö"9üËm4~ë¤Ý‡Ê¸ÉLœQzºŸq«MÈáŸb’Õ—úäh]¾Ô?âcûOÿ÷‹'ÿÏyžü¿ÿÒéÿ}?«?Ýÿ{g'²þ·‚àiý?ÄëÝõÿîÄúK[º5û€?y€?>pVþTCa‹Ë'8%ØÞѼs?þàTL¿ìy¾?%˜Ÿ'×÷'×÷'×wýý“ëû&à¢Ï“ëû_ÎõþÀäHGÁ‡J|vƒo’'|´¿ ÿö¢hU?ŸÒG?&vU¾¹[Å0A9ðÉg\ݪîœß;÷äüÞÜ‹ók÷»¼«·)^Iб®ïÂãýîTJrwñéù¼œW|@ãyFÏøYŠgü+2@“‡íàM»òæðGò–§{²78n"ÓEE Ï®K‡•ÕÜé%T Si3Tyro¹Â…p™‡NƒD’`'yüƒî8GùdØ!dwBÂÚO>ëwóYãõXO6’MrMg½%Á8³]n`¸že-• ýRv’™ü\ O¨;e3Ø\¾"ÿïd’Þ_™¦ÜÙ4œr¢&x$%xgÜï,qšH,$\¹3%,Ô|2VÕJȳÑ×_ÁÓºj{ZW-Oëj&Oë4N—ì?—H­ÍäÚäø”ÓµƒûfvÑr´‡øÞ™²ÉëîAÐúø´«Ž“vÕvÒ®¦:i§~Â$%…®?I c¸Ãò}aúR:YezYóäæí_l÷ãæ-ÓÆ ’)ű3&*á‡O:øí8F:¬‹ûðmëã‡?„:~˜è¤OÊøá ‹çñn½ÍK¹(ªojñjv10ÕìMGAG:¯b+o|±*;:z‡e¯?'r9mKîÇj²’mq¤iH© '$jÏ ã%d`·Ô¾áPž¤js)LâÜ9,¹Li%š õ‹µPã÷á:´–*ú]›‹5Ùñ:EeITW~„ýÄ]VöÃËÌë™óÃn)ÊCÿ 1ÿÔ› ²%£u^ò¨3ÉÈ]?¿7·òŽYçѺ•þß_ûÅÿ{ûÅÖ“ÿçƒGÿáÁÕS&àt÷ç“©²2ï• ɵAߨŸ´ sÝâô$ºD"G”yÁu¨¥éh±k/B“6ñ@Ìóï7œ¬HørÑgƾA?S ÐÃWÝþ§ù©^õ°gÃ÷æÒ´gwŠ¡‹\µXËÓ9Ä&8.t ç…Â;X 5úxDU©ÞL¡Šºpþöí»Î.¨ÑçïÞU±6Uâ›ö­u±(¾c7 QX½?™N³› [„Í'äkB¥ÑåTÜ*.WÀ°æº…oÐí[èö7Bî;ô=_èÒWòÃQQçÁo¥ÿ̶ï&ÛneÚý½¬ödFA·_6…žÒtI&Uð%Q8C—C G0úΡ °ÁËaïãÍd¥ Í»$¥!`i”8 Ýè‘Î>(ýëkª%d#‡j]BÔmŸ4 ã¯ÅQçí˜ÄãUMS'WøJœS òaAŠ~—9 Gœ•l#äJnÉcÕGì Q¥lO£"2þèàZ† Èl‘®Ò£)tž½Ró¥}hs<úî « ªxzé©Q3jBÂ0åèXldAÕŽü/™ñ%u-½¶«A> §É#.„ѺŸM]YøIÜò‡·JXFã;´­³6X+<-o ×JÒ-óº¶h8Ë… Aq”²É“˜—F¸'Bû\š2ëìthðôá•’îŸóÚB³lVl[A°‚$0" ä&@ w ‚³­ ¤ëÀLŒª …y×uÌ §ÑeÕó³'õXlª‘ˆJbh>Ëø½±$µ•J4îÃÑrx8ZGëÃöó§>õ¾¢ØêLÁ§ñvtG¼•JogMoÏ3g!M´Õ²Æ—Á5ƒR‚Ýyí† £ö UZ„½ˆ)6 ª72¤‰œc‘[ÌÀE¿[rT½5aÀ‰­ÑüÅ/XA0§"_v{Oe|§¾ª¸)ÖEž³Ú‹fŸ_uW¼ŠÆëX85Èôø²]Y6¾‹{Ø;=jß*cþ Ç(eFû:ŒÃ„°¨ô)é,°ÎÀë)Ðë|N7°)A'œÖ¹9Ù°ŽuP¨‘Ý—›†Q¤_ÀÍÍjý­›µjý~ת»øß'†w1|j·–p¦ Pj{oáç^ƒ~¶î;>n´à?Ë7ºzBCEq¥:ñ3\­¿ßÛ‡îÐo ìŠöŽð« #‡ª5ùº݈oÞ¶O¡V+×dåÝVï ªûü»¶wRM"+u[„Ô“=@¡8m­ê‡x2ªÉŽ×¡—õ4Š-6ÞÁÇ.ö ~ðŸðîƒgòïàïAçn³Úª¿‹ïíy³ºÛ8“ïãë‹LQOèuVG{€HÄÉ.Òùí^ËxY¿ûj­ Ý­Ñt×a¸ŠÚ·Ñªjü†ïB»áûók­dÃgÅC"VÏîEÆ"µnŽúÍ_äņü ;-¿óâ=%†Àî ?¹° g\8Û«™]ðÕ]ÊQcü;)f ëâ>ÂãTKìH¸®¼¡¾Ó`7±ÁЧÁˆ‹ð’-Ö[ÜZfˆæ ÛéXà c!D݇eϘ™¢^çé—Ôú ÌÓºö!‚䂯[žÆšIU<98Ðm%â\6æÇ¸llk‰Æð-¡Å¢ÛŽœAѰJr‰H žÖäJˆªØŽ o·»t¨Š°îQÖº?Ù˜2“9ÌÞe.æ¢>YŒ™1…[S³·V¹çó:Œ £e|î¾Ç0C”4°èø#$u‰lØþ7üöyGwÒhŸîùé kÄðÓ ÿ%oß‹"÷#õÓžŒK3…#î{ŠÁ÷'ƒ««aH]Ñãp¦âB8y3ôóÎóíw<Èë Lz,>/—ˆS |œE%–‚<™ò‰H¢“‚:•rX‚~øÔˆN ±'_³‘:x¦VIjØ­Ên¸F üš.DS ¢ždýI´›ûŠÑvãK—Q$þP~pçóå·öòã—²{yÔëLÝÀT Å+£Î ^× Xþyã"5¸µ—àX"; £ZNª?Ï­ñÂŒ@µ„0Õ+z-:Q¨¤)«%!ÐV ¡âCݨ݈ëHUjæØ#/ë5»…@e·h)%t@kv4(]´'?á´Ö™ZW¼GÛoa,^Ùÿ‚œ0O%ŸPs`1þèƒpf‡-ŒeYs:,§}©×ì×–ëqÔQÍÀƒ^êjB½ü¥ª×q-¦žÀû—!HÄÉQêƒ[¾0Daœ”5÷bÅß.ﶈxaWÓ ¬”W~Ãã+Ä©x™ŸˆP; m¨hç;‘Ó".2ÏÑ—l!7ÜÞgxzlC&^Þc©÷á[¯ÿd°Éû@åO“¯[RàÇvøs)ð)V´Qœ-®9îúGó 9¿?ç±G…#þ3_ø–ûq>ÖÏ—7Ÿ}íæX¬Á¶}<À»ÕÞô»g€ÂÑŒë"ó!å“ÉÁØ£Ô¬ohçQ~{Ræpï¦æ’øàü¥\¤ Ä»â g~ƒ•^nº5G‘´XEÛÃk2sF_×ôëÕø§lC–-ѯ í{Üe¥™vzb{C¿BGñ ~ʬy3=3¿,PKºÅñûšw a ñMiKë¹¹,>‡Ë‚þôs¢Ûáü“˜飱 jÛ7ƒ)ìQ.´™<¹ Æ“ëḻU†_·ÚK—x cs·`H,ìò.k×P›Ý5ÁÍáý_Nì*&› ó¤ŒK6i%[F@&)˜rmj0‰õ…à X±€”μzEúþ9²€EÚz¼–ÆS,oYN[þb±Ë>ö…uhE·Ð9Q¢ õ]/êdwI +_Fu‡© eQ ‘ePëõ¿í` CSz¶;wz"O×ñ‚0–2è •®Às[ŒüÛA ç»Nz0îÀÞÄI—º]Ø@•‡ŠÒºÅ8-¤óEßšèvêö•_øª¶÷Ö¾zä'F™”|Ä*!DªÅÔ'7߉ùÌH[0Æ3Z}È{æÙ¸Ijð ÔG¹¼ØÆÅ7AÉ䔣¡–ŸÙ¸?q¹ÈØg (éí££hG²¨8¤Jê„çhÈà‘1áx*ÙäV=ð¤·ã¢^øö 8–­P£'~þ{Îl¥Ï‚æ;xè™C•ˆkä,6^G¶äa¤&ð̲•y Û¦%íJûñeKÖC٠él'ŽZ—8•í,w* ô“•Ý®õT6²•´Î^¿‰§ã×§ãW»ÿOǯOǯOǯ?äñk°ÊùkðÈÎ_SS1Æt9ž{z P‡ƒWŸKœá’\²ðhr&n#~ßTöóFðê`Ï(üͯ¿ Q èð«Ãž—ŽE%aœºÈ/q&^®4¾nV}ÌKñ2YeM>¦z…çT·ø×s‰Q/ÖxåžAÙø ¯ÿ”q˜±¦“(bÒyTð“Iw8Œ ~Zþ0*íðȇdïñ‘þ’‘â&ç÷åAÒÆž[| ;;¤âpŠn® WA¤?óñz[±“›Nbåù\â&b/Fa“$ÀÔû~Ž~ÎJG"”¼çš"ÃÑf,A‰DšBÐÕ•hÔÅEý¸–©(ÙþˆÉ~]c|؀Ό[ŒRÊy¡îf!¼·ø» Ž¸Eâñ©1Y‰9ùrÖÎp¬j©êèoï-H;R]Ï*âèMT5Zá •!ÝËj'Šðä3ÔJÅ8¤ÃÀ²Ñþ®v†Z©üQg¨•­Ô! ÏANÊjeëng¨<éñ9žql«³`,´§˜ÇžHU¶—8?­ì$žŸòǸèÄhQÿCD'~zîû±â?«<šøÏ›ÛOñ_äyŠÿü—~ŒøÏ÷´úÓÖ¥¼ˆÆÞÜ|Zÿñðjwâ?¨€¶XmŸé×9)ôUJI]5ü ?Žñ7ü8O ÿ u‚¸Ͻŷáhˆa›<Ñž·ÊÁãŽ÷ Àª7ÓáönAà|†ñ bƒD{R˜ó#KʼnƠ¹£‰£Y£™Y*>´'ªE5Ç`)$s-ÇàéÃqŽ›Iê|žã~¸qœ“£8¨ˆÙmï(áòs¯á´Ço€?F“þ—™ÈUƒ X €ŒpörÕJ¥X«T¨)Ž(Q…¡Åè‹ïTR†ük1ü ›ºqŸú¦·Ôt.*û.+R4Ä ²Ó„WýÞx2¦`£X»È Q†³"»C"”»¥Ð¯žðÑXâý 6ŠÑ›Šv@MÈ8Ú²ŠÐÈâæ²‡ÑE­]ìqn8ÎìTåïsüÑ“ßÀ« †CÂwòsúC†ŽvÔÔ<ÒÃôÙ‹H Vs Îvâ•[FО-HÎ ¤&½Ã_ XúïYÂ8.‡ÍŸ/ß;ï G¶h5,Æ‘¸DÃËñéðbÁÁ´t”ÐÚDö>Îæ8ãvch+q4Ͻ^Àc` ÊEZ4š­!!tÑf­?PDyz=葲êþH¹[úy3?½¤7ðñvp9P UC†]L§—m‘bt;è}áƒvè4{´ ØPÌ¿‹ù`6×:hO¡¬AÏ›Õúѯb´sò–~wYç÷'øwŠ Êñ@é º{ÜñOˆ«©šá3Gö’ÿöÊi0¦¯B¹ºÎËé[DBÃñ_‡‘À¾€È)©—ýÀÏupkÖ3A<³LÑM²‘a?'ží/F£gœ¨­H™ŽÑ%`§³ªJ²wÆQޝ\³+ÃâÒ$êÚ5ÿ4Ì>MF¬] ¦CÙcP7ýöfÞYDº¹¯Â¹€,Œ(dGf¸±&G # aäÉçXE‘†Òl¬_7£èIWFù† °Ò‡-1¤ŒJZYꜘur¢Uh±qI´2,‰œ¨ Dhµ¢™–áEJfýÒ (\¹˜*¼×Ÿ@<_ @¥"uH„TüPogÞ¦L6NöÚ@[X%ãU1˜ù$¶I¡¸z Íon?ß ž›jíý£¶øøXF¨­ðÁùûñ%hv‡ ¦ÇÃ/ETÿaß$³3,FÃh|ã“EöSß̼ÃkÐm®¯#Ò…Þ.`WÒ t¡¯ßY J[\ãR‹àåO[!Ie…CÆjÏ{L¡ìEç˜ÏO‘bE€Y"ú^þɧÁĽmÄ[бƘemÎê©2q%ë(Ú ¨90£§;{L&ã9Œõrºp¢È•P>ÈouØ9Yç­§NÅ[§bS;P¨2Ớzwy§(˜{á>Kß.üGùÂÀMv©{nU@õ˜îUפ‡k1ôÞ?´¬@œX N² x¡Uòg‰ºX#3zÈø¡?Q×@afÔ¶ð± ”G¿tm£(ˆ*öIø•-"é¢håekL…‹¥"†Ì•Þp›–hfý4jäÛõíÁm?85’jé¸Y(¼+t ÇòÓ |Êçõ¸ º4Já¼ev¼ŠXI®–.Y"ӮŠWÙ2ÖFÉ»8¼rbGVäO/WS áÑ"­0Ñ• ¢Mj^z_™Ã˸–¶Å&×m¦µ ⎤m4JR½ñÕÙ¨˜µ6*Ñzq5·­šÛ웡ÅV½ÑzªEo4c‘¬ ‰mH,¯Ÿ ¸®WE çE©¹ÝèÒÆê–ål' ½Äù£cÛ¸ …)ÞÜ“~ ªCîxr7úþ’»ÿàã7ø´ƒ†@ß“-ãÂÕ¹?›©ãÝÉtøqˆ[ HQG÷&ÂÅé![ëÌÆÇ \>ѽhšÔcÐ5tm- Û%Ýog§PUíßÅ‹'ºi¨¹pj¹ÓÌ…hÓ-{»"r•bW—í0!£·:%ìðB5ï;ÕBµß_\/F*)¯9Ýd;­î¶aç7ÚÁ—×!±ò‚A¦æð‹hs`NÏy¦é‰›!ÕÞq|{Çv{Ç‘öŽSÚ;fÀ ½oÃ9tª1¢‚VØmofd#‚Už{ÇZ»Ð Útð™ö´²¾Ó\Ž_ÖŠÚ¨<Ù?ÊǶÿí?ûß;Oöò<Ùÿþ¥Óþ÷~VÚúv*/^FìŸÖÿÃ<¼Ú]ûßú:íû¸1n4é§×øÉú÷ž¬Ìÿ©¬€ë ž’ee’õXÌ\0Oùd6T1 z”¸|4ø†0"›Å¢<ö[û:»ÃÎ÷ÕØ”Ô§‚8/ÞJùLšâ$(ód¾Â¼Ò4o„4¥'h±„3†d~=ùÊIXñNà“m± `yÛâ'ËâGiYì@&ÛÇ™ìÿ™ „$›Ç!ä/dwlå™wr½†ÇYñ`—lD,AÄ!·[Ƴ*óãnÏ“q{ž·ç>Üž›¸=OÀík…LbÚß> kÚ==dKÅïÌÆC#O\ÉRf¡ÖPvGÉZâeP$ŠäÑd˜á9ªcôÊÅüM´wc½FÓÿ¼Czt³¡Çj{­´5 µO½¯6A#Ð!jVjÒ—‘(eדHéf2DÜ2eǹ”d"¢£LÅw®©äb€“KDQþX†?PÿI ¨UU²£%Á–ÔË›Pk›ie4¡V0LKêtêß¶’f (+uçßaúc°¡ZFjéNF_•¡žI¬Ýx 6{ÿZ°ú ι†Fâ )ï™Ì™mÆŽèß*W¶îÍ}wÐPBb&æÎàë9 ¯àÝ)ºå)Òöì8S/wlcwQ­·Ä J„22-ß§²Agg“‘¨`ÆÎ ¤’€îÓ>ÆêÚslón¯³·S_Ρ[ÔpˆË÷b'_¿bmx ’^ÈeÉ’kH3Ò~6Éž’À['“pW³&áÞ‰Ö­e­ÉÒ ª7§N¦€Á¬˜s(fýΆùç(äsò¹ù<;ä šRTD6}|‹é ³ç¦“)D3ÄZòAX>èD«q£—ˆ¤½ã2©fñæå&z¹¨²wÓ½ÅEŽ±Â íX ™¦qt²y<ø؉ؼ žÖÿCxW6Ï-îÃ.…h+Þ"EÍ,Ïw˜^ór‚Á -‹Ð°áífŸ¢È%ptÊüóe ÝéMå•8%£‹Éb|9ËkÐeé”[º Ëaµ$#=É¡ø ^Uòn[¯ÔUé#ðàNÀñ©BÇçbG@U\õÀ5¾Ý -È×~ ŠÃÐ=v§¶_éP¬Dp—û@š¸¼7Ñ5¿ªð!`t8¹ö#Pê'ÌÖÇðb¼9íídmoK¶÷d±XPªY¤}Y“mÒ$ëÍ4+qù¦d_î2ÁëEÛnߣúV&é§6J(þ”ÀžÁÜÏ'QÜ<&ëËÕ/‹Ž%²…nbâ7«âf s3ßN‡ó9HÊ‹ï~e!Î^ó7×\ÝZs=¬eÅ`œçší;91§a'–h}Ȉ£ì£KÖ1ûªuyXž¼¿ƒ¾Ê%ÂêÊP êb™]>1v”þ0p`nÑçtDç6ÐÌÈaç†ùç¤úA“yËår±Mʉ£K› 6t'ÙãeLdɆØXãå´%‰ø ì8Ä Fó¹^ŒæÃ›ÑJ´p‘› ‚Ÿßß~ö?i ‰Õÿ×ŵ,ÍÍÜtÑvk2š Ž€{7ÚrI…O³÷KžÐÉ• ˆz™¾ë2«üÁÆ¿±}ùÃŒϳSÍùc¡šó?ˆjþ(³æØ¾øÍš[ŠjÌz™Å: GЖ°31XôcPlbŸþP=;j:=sOبP'C!Rû‡½÷6îøvŠZû&=šÜZÛgiœ7($Œ¥­èRû´Ò‚›å“²÷è f]@“êñ?=“Ý¢è00ü£ƒƒßˆ#OY‰ŠMŒÑ5¶LLxI7'‰¸ö0˜JdmP³@€:ÿ§=œ˜Í'RFZ<öÎÐß}êû¶ »omPöfÖãl=C¨[’8,¨æÎÔšÏØ>ÕÉÕ¥t4œpohW‡"׋±4úeŠàSûØÉm{£Bdý†<ñw?ºe½€êŲ"<5¦ùESK¢ÏlBÑ‚"Üç#²„„Ahï¿)§ƒ¼´Ìâ­ØäQ8âÓÅeR8c G$@PZûÄ0EAaY ²”k—ZnP~‡8 Ûa§ —A+8Ú ŒEOhìŠ-Óï$Rg³Åõàòµyèišà¡ð>EɱQ6}R “$Ñk‰ÖOÐïY{3÷€¾ŠÁt:±tÞëÁl†WfÓÁˆÜ{€sñ@ÑGÆÂRží÷”ûˆšÍ(q©Û•XÊjd%­F"m5Lâ’ýY¸’ºŠ☫I^º°hoT\ç#—´taD”/†D™¥²ÆÒdf 6yÌž•ÌØRa=5B3)šóZ#Ò²8*ÑYm¢£y*5îì¨$OwMW/y¯sÕްûƒ~o1“qzCg¦È¡b麗3SJ‚wÓW"“Ѩd:4E!dõpòTm¼ŠÆj&iÓŒI¨ò¤µðÑôÒþJò‹É 6¨IÍl­Ê<õÃtÚ•ÁØ‹œRû¿ðe zN!ˆk¥ Í'7¬Ýõ'Ðó©á¦‡i+&ØQ ðrVŒo\ l_ãfoü\$žbÜKn®ð ƶ‡â¢€&ƒ:PþQÔ;sÈÕJ%_¤¿èæi\I« 3€ÿ•ð/îß-Œx ÚЛq°¯yØOX¾=É„¤>/>êoxñŒƒ=åKVš/„P­›š`cãÌ{ŽÔÍšåVI C/I½e\UØf÷"tªÅ°ºç&ÜZªuкPO;VÓÆÑ"æòð A„gu~GDê2Ã%ó#“ž5aº¡Üqá4_ÈÑ hR/Îñ'4ÍõÔí!¯ñ€/¸ ò­mx¹FGsꎜ•{¤¼Tè'O¾´¾Š[-8ìÙâêjˆîFóQ„M‘"ŒçJô ƒº^’ Âëãè¦ß£º4§a¹‹ Øœ½À*€ï–Yß;JYmŠPƒãðàÇpEé9y¦ˆË"ˆ‹A„Q¢ö_tÌ €A9ûÂt8ë-q ˜D"ôÞì•AOá}¸0®»_‡¿A|^÷J×ÃqNœ/ذĔàá]¹·¶®¾*,ï÷¢ÉQÂfÎDùD ŒÐ¥7TtžÎÓÈS•s•Â8(Œ+y<¥Òä¢4 ]#~_¦“q®1†ÞT‘éŠ}Ý£eÚÃw¿ÛœÑ¬S3êÔ¬:íïèzÖS^ c´cÉ%Е+(3à Ë †uB¹2÷ãCQüªÑsß ú_€èh/ý¹²A+$¼Bú@Íýª6¸x®*а\ä_2†ý,Lp@©”Xm‘G«,€äMZ”9”EuŒÆ8ÓÉ7¾ûÍõf߯oæ“ù°Ÿçý¹qèr݃R ô¡äIf}p¨X‘ÜUûXÐдNÁhØaF…Ïå0-RÃrƒ×½þ'Ô†opåÏŸ3PG?R‰ú,ãàLÆŽàÊ%PÄ'ý!i´´ß7d>r-gµ›êuã;­\„žeŽF“ÛYYìs¹Õo… —¯L¦èÌL :Ëf'quƒRd|<¢: QjЦŽU.ÓÁQ3¤ë)[A‘ù×ÇÑäoÒ¨yjƧïzÈÖ57ƒ)ç… Ò»¸¡®LÐ^€â„b¹ û‹ªy²*rßòjlŠ—“ŠÏÈÚ+îç© nÓ¾i·Õc\*¤œKÙÓŸô˜:UõÔTT}¼E0G!¨a6ü"û‹\Ulˆ=¼^Ýûèï¯ú fEJ±"=Ïå‚ç¹£fᨙßÀ¿:…£N§g{£R ÒçGÍ"üèäõE©MzÒ¿w½08),¡Ì··G¤¿~§¥h¢ð¹øFñù@Ùè7<†=š>osÍg°¬ž1õ.ÆúZnކc%åòµŒ–b39bÒt ÄÔ$¾y%ê=ö¤ùŒÕ›öç=P>¾Y6ž0X­ø‰þ€¯ð{5yN‡GêÂéDátè{BÂä&Òüt6˜>›aú“K(Ñ»Ø.Ã>LÞ-1_æ“_yÚJˆB¿Fµx8vSIGÔaÀuo1‚}hÞ"Ü´b}ØÂÆÃŌϧ ‹–õ”yê{ :0Në FqÞ¬žì"qÏËp™³è ªÔ¸(9ŸæÅì“:q°òÚláêß9uÄ€‰®ô1ý-¨ìX”†KX„FÜ®ÿÚ ±a§J|„ÁG:Ö,º§O¡IžB“<…&y Mò#„&ñeçô¹¹ ï½É'¥”À»‹WNò™’ãS¦øT >9yg SvꮇcÈžÔ²y|º×ùfþ—ê»*íÊ_ü]áßG ¨€]ü^”‡ÆA øü«vAA<ìÒu &ÞÒ¯V»’à´ÓƸ•xTíÊœ.»˜Stè#fÑÜز–Ç“èd¯u„I·à—/ì‹?¦o”ÝêÙ¥&ò@Y= ]hÍL”œ’ÇÞþIñ‚IQðôhµ\•u@߇¬Ù**©ç’uè(‰¢êh¥mö÷H MþÈäO{¾aß;.—dy-Êß„és(Üèn‡C½àÇ·'åøP/jà*XLJ0O@žÌÁ|<y2óñ„Ü1ƒùä¬p>ò]¼À•è<ð\5«,ßüñÅŸ.ÒF ·e|Æ2m¨a|‡ÊYÚ•70X¬™¨ž¡´-æ— f¨©ðí Ð®PÎɘEc·Ð CœM·IÚxC“(¶éàC÷:LFÚˆô>¶ÅpM×ÌzžNcá0ZI²¶*ÇLÊT©R ¢:¬fš,´ƒúܾõOvÎë'Yš $²æ|ß–ÉÜ{X¹"•¸ ¿ŒºˆÁ£&ª@œ’8‹®ÙoP©¿<9¡š"a¯¿?jn@Á¼ìþ™$Ý×€‹š’°ÔÉ„¥N"–¢Ê_KLXêl@A¥N–"ñt-)`³÷¡£ŠëYãÑQß0]þ'ü,Pø¹ P\Fž*Û’W_c Ãy‡:ªúíŠà{àPb9&• å|JdgU ¨-º £ÏEY5#ê*Q”Õ–G]ÅA]e­¨Ó¥h…ÚˆT+Å„$êßÅ^]åá•àÖ…VâØšÐenì¼,iú¨;½Ð ðR|íaX; Zï¡îtéÎ9ÞWØ"^¬mEÛ@[BâßA±µ ³²ËÛ‰J­ µ+9ºk‘´ÑR¼ž§;\utQO-tåáìDióÕb£-›eèP,n7!²©²ÑÝ…X•Á%î‘„Ðúe,›ËÀUÕ¢Ìn (rAû×mwYóãYÜüðdhokyöxÂ…úÓ,øž˜YHØ7n'ï…çäHÚîŠ "“¸ŠRpvÖÆU*J®’,û3Òs¼°<=ûô€?=WYÛ,¬‹«<ÂYHà*;Ù¸JÅÃU*i;-5ñ+Àêañ¬ÐeÔÓ¢¸î}`¬7òC ‘\,rwdøïža‡&¯)ý_lºÖÕa¢.Ž×`èAfø‡jºÛ}/^øNŸõCµÖÍ…—•îÖ—‹á¡©<8÷p.²?A”’M… ì¹j&©P1¯HuA«Xøúï5¯"ü/í‹ÊFV“¤·[swªmº¢¾Ð¥õæáßls -!J;ŠÊHhAdë;L2OÉI›)>qˆ¦ÁRV»&/ܻޗžËßU..c³zt”8OY=þÇÊÿñ¹÷hò¼xÊÿñ0ÏSþ¿ôcäÿ¸§ÕŸ¶þ·ƒ­JdýWv6ŸÖÿC<¼Úü "¼¯ñçý<ædt#™Ì{ù„³WÜtœ¼G«_øY+ÚÙ@Nü8Ãßg `Ô•¿ÜÐÔ­7ähó~¤=?H^ÍŸSG;¼ÐÀ8>§Gý]µS­[¶ø<û!=(Ïc/N=˜<"y=Ny–)iGÒ¿œÝ#½]‰ØU‡屎Mîád%ÙPé3"Rt˜I9¬„ñC;Í1¨ÊYŽÑaçè0DÞÙ i9ªñÙœpvT’ÜÛîÙ.µ„ÛÎÛ‰ÚµFƒcŠù´w3ø÷dxÙå£!§eª†0Nè܈-%Cæ8u8På)½ ÑM‰=}¥ã»Ž¼"£eÜLxõkMz›j÷0¦#CM ¢e'•=8²¾«½òœáÀ6°Ô‚"à)Oƒ*ll~GþìhMRÁ[°ã^ACXÃo¿¶¡5UyúY­„Îðp-³þpÏ3ú“Ø›Zï|]ÉÐÞé8ã¨Ö8ŽâGÁ!Ø ð~¨ç"àØ@Mü¶©gàrÌɱ¢aâRækê=Pš¬¡\kFȇŠB1ÝgU5òvuMé]c`9 KJ§ZÀˆ»A‡ÝÁ5 Ͻªñ«Š~e"Åû˜Æ©ŒîÔ"!FÖaácà .n8GåÛ T<„Ý AýŸÿSæ={¦A«µ…äy“µgóé¢?_L*øKÃÁ¡×NŠV„0ƒþ“á¿Z) $…¼¯¦$˜zô­±(6=×,ž¡w UìFÁ¥õ¾œA4¯„¿‰´;˜™«à™á¡ ¤© qÉ j³¯š­@œ¡œ”@‡§ Ò«¨¿iæE^:ÿuuqR\Z—ߥë…BElˆ.þz#Úiˆ¨Šâ/Q ‘j.xõŠ4êàU›1(ãFsúÿ7û‡ÄSHIÇ[–“¯§^¢Âž ͉êÆ{ï,ûZ¨P F×ßÕQó-ðÂÚ-aQDb? ÂÀfuBê'Ö?¶"º\‰~¸î “¤¶¶lÆŠ¤SSKQG*%é’~*¢H&4B`‡ÅKU¨à…DEg¶¶Âbj˜¼Tpü%@ Ù2ÔÂÜhÅ‘æ‰ûÓ›^>Š™ú¢†£B¼ƒjQ[3 g‰L²,dö']õÁ¢ ^ aÄÌ1£a8Ç„TÒ‚H]Å l>İÏì’¶@ª|¨À ùPå&Lɸ¤Z7/XvÞˆg§Ï^a BJ6‚0ìJÏ.ß yB#+jNMõÈF+ê4(œšQ_;6¸Q ¾ ¥ê)]°°mKH9aFÕãö1©Á¶nƒW¨ˆ(e¬³lÈ:C0g)È:[YgAá,YgëEVbƒmÝ YÇÙuŒ`ŽSu¼$²Ž7•ˆ¬ãõ"+±Á¶nЃ,?9<0‡¤û·É­Ž¨3Ö #;ÏÑ€ÖÊÇš1‹PÔˆ:h…ƒÓ…ì”B‡ñð›éM²¾/1yG{¸Ðu$ôbv;bÙó£þŽw[(&Z6j?ÅVCâà>/¸Pè7&3'Ìí' £‡»bЍ9‘ÑͨK°å=·ÈÃÖ8ÑhWN¾$R³/9{Ù˜J9ºÂ|Õ.šÈ1-ïLÚ%¨„ DBî €Â0ˆ¤N™‡)O"ÈÉÂŽÌs?I˜Z«'a©Y˜œ?&a 9àYC«Åè% «&„ÞRÈ»üKG yxRf‚÷%ÄÀs´´2º/W URA‹ _Ó”µµ?Î@]:£ÊA¯?¹–,F0ùx1˜Ðæß‹³žFG;—°-«(22õçwÕ’ dÖ»¦ˆâBJ1ç|h>¸)B¹ï®t Q°—o è¤@ÒªùB«zþnï¨[ô”¯ÉòGº|M—Ëu•!#FLÆ«Ì5£ËŸ:A| *‰w>hÂà£BÎHrGç4‹÷°sÌ“ýˆý’vôN¨S½&VôLÆ…‹ Œö²r—RÏûZÐ¥T±®]l2µŽÀb[jå߈ºÞ"I íÀÛd »ÕUû¤°§v¸)0‚±(hÇtBrLÉQ›ÔΞ‹ˆP ŸÊËqÄÓb+†#B/i§Aûˆbtnr‹ÙW¥ ÇÜxÉ’:^)JM:™Í{Y¬ùщuÂ’Wî.áuLÕÓhUs7ã&fPÕÚT->+Ó©ïUyôi™:nÂÇðZ• ÂSKÙ—³•æþ $BÒÜŸñ¶¨Ý…»¡{Ÿû35÷g‰sæ™{£ÿÞ¹ÇÍ™gîÏÔÜŸ%ÌýÙæþ¬L€ ù{9†×ªdtîï! íi—WŒnòÂÍݽÏý±šûãĹ?ö̽ÑïÜã^Ó3÷Çjî.‡ŸÊ{9†×:Û_dî£é˜R&¾RhËsB¾PMOêfì ¿÷1>¬•CÛÐñ–H­BëÆÖ±R«˜þI†wͬ({¥X‰—“ÚÎs×Eï ÍáAkœÈ1ª¡Œe\¯##z–7Ξ< Â7b~eçžOæ{4™ÜÌøJ”FÈzïW£Ëö^ 6Ƚ/JDí8cI]bö˜™“^XºˆÀe £@{™D*U&c™ØeI{ʨ‰ÆRê{*h$î£9y*•Ç9ØŽê{·Ô«æo´Ù¯ ù¼UßÊ!<ŸuoqAÜÓ5]°U8Æ;‰zPè¯QÐúº‹_ÛttHËWtAôŽŽ3\Ö¹@— è(úØb3;»úN7kѳ)è ®òtÝÈÂÑ dZMy³™áðŽ Id)_{#92ݾAG¾û )±5ܨ3ðz ôºŸÓ lJÐ FuîDNv#¬“-J¥2öÄ©l´ ò¯3PSŽö:E3JÊ)ÿJ2Ë)Šƒ¢8$9?U4xßÂpêð~×1&c½{Š? á½Nç=4ü¶Új%yžt~9,Šn71™Û5R„ND®5TÌX9`Ÿ@Vè Ÿ2]ù}0ßZ¡›¢ä„„àÈ©È]1\D‘ ¢„ýTƒ˜PcUTëÞ7[1UÈez£Qnî•["â™§C9™#ÿ¸š«47¶«£ ì Ø– 쀰úç‚«…M³'nlõ-³d2Tì$OQlÌ·T¤‰k#ÑnaϤŸf|¡ˆ?£Ù‡\Z}8ÐÈIèC|¡¨c$?jm†–Sº4)¾Cù­(ø”ÕÓx!¢r ú«T˜A§õY‘Þ\Rf'@nžŽ60÷Œ’>¨«}µå}¥lLýsˆD h”9òÑ0P„îãÆ$§‡… *„ åÎ 8‘”èeCðÀ3ºÚ+e&7;ªóáaøMxA'vš›°×g‰½Î)…³CÔM + µÃwa(;vÁôgá8q|x7—C¤‹¨°rAa€²„Q…eUV‹òÒpj·c|cBKh>¦uq!›ű!lWî.¼ÈfCÉ=I/çh/á÷ãÙb:ÏõaÒ`$7eáe,6aH_üÑT¹ç»5 AGòÅKÄ(â<J–<Œ—’þUîÜ ö?cÅñr0N£±²Dèì¯4÷¬<tÉSvû× N}—[Š„a~ß§³´N‘·4¥ºpfÅpV,© O»¶Šo`ò–ãey‹°ØKà‹ÑÃñ¥#q „±·ØM'–•[°¥Ånñì—3¬rM¢‹¨WM^ñÐa<[!²×Êmä¶ìô nËàÁÊ«ðxVF£Áh8ÓÉD#y–õ£Äªá‰e¢‘Žë|*2Ÿ–ê:I!”A¥ÃèBãÙÅÃ-(SjlE—WX1jƒL¬ÅmE”"= §i8:Ü©]Yž=zB‰ÚÄ˳L£èV„Ô¢Á¢). ÃÉÓâGä…¾ˆ¾Ü Ñ04Q1 Ãa)Ñ%‘{gô…K#õ†W+˜ Ü¼ßºŒ¹à’#°ãSsÏ‚ÍM+ÒZãJŽöŸoˆPh¨8R3I ÝÝuÒ¨b(¦8(²ÕQÎðΛ†Ä³ÁÜ1[ m1Õ¨´ tBÜH? ‘/ý=YØXZÙû³ażŽÄCaÈ/cV„%Ó3a7èpµj€Ç(qáféH7DxE=”K%ð'„P‹l—ƒÖÈEV¢s†è’õëi²HÂ>RpM)ä@ônß ¾ËÅÈ#ÏÓEòà•‚UÅÁ¡Oñ§óËaDìÆê˜ÙÆ€½þðjè¹Ý• M”†Ñ¨C>…6¾i %ö<¦´ë™ãŒÜ|™zÆ™yfÍ,dbÔ'ãÌÙŠæÊX÷8œA„Ç /=Lõh2›—z³Ùðãµ{“±üÄŒ¥ÅÇd‡ð«ú웼KŽõ§˜´=°áôg‚æææ©]îBÛ‡ôD”Û/¶UµÈƒôqß¶Õ9¤¼­L!už’<…Zþ±â?Qü§—Oñ_äyŠÿô—~ŒøO÷´úÓÖÿÖÖÖöËHü§/žÖÿC<¼ÚøOmŽÿTïÞÿÒjcª\JIåMÇt–dâÒÜ…×â¬C·ž¸ã¦°±°câkVÞÄ7S¢¿ªˆýK…{úAÂ9a¬€Už;„sRs ¬b"9™1œÎšjy¾è¦]ý=ÆE±1˜D¢“—m—ý*´"—c¨©7qstîæö²›Z_çA D­œ¤»2|ŸÓñ‚—£âᨃHsxl\)„P‡•„r ïÃîQ·)þ‘c#Ÿ@Meq2‘C–4Á(WWë°^|.Y“ìY©–#ŒäƒŸÃ•I§žQ>éœî•˱£¯†£ódÉ€¢†ë”ɨŒ|lÄŽ Pu`/éâŽíÆØµhå×+[×<ì~|ÎÛ~Ÿó¥Í“ÆTsÇ$ŒA݇/¸ÔYs©A5‡ÑÆ>±mâÈI›¡À´½Æ(Õ#ŒL <ࢳT¤‡±\-ÞÁ´n‚!ç æ#Œ«I½€tX"LúŠöÎï{ýkÔù½™íÂvòvï¬îñÓÞ†Í$¿ÁæÝçò¬YfHèöÚu;cLˆ*ÞV³ÞYnÖ;™f½cϺ‘×ðG›öÎ ÓÞIšöΦ½SfH4íY¦¼cNyW!}‰p­–+^£í8Ù/£Â“a±VvŠþ ²ì]0Ôß„éÆN(PëÃÅ™ ¥¾_z±b‚°äb…É7-–:kcȽ¢¤j ªJ3XˆS¥Rh´®Ö2ݽձˆgk´Q‰åÞ2¹R,igöâî¦8q7Vðá^Î ù$’}Y²X}O­;©’ŒÝØ-úlöŠâ‚ÝåàŠâL÷f¶µV7×À Íܾ 懲ÿ°ß.}ªÑ§|¡ žW0_%vÊ-dx ¯y+þ1§ ýªC&±Æ„ßù4f²ID5¦Û×â?ÿþô¦Sns{3Ðhæ’‡ˆ¡¨Þ„1Ãvj²—€ %ÌS%÷]” 㨘ѱ#+ìÏŒLoÆ.R{Ï/Dî`„=gLå ™îÛPíБHzxAëFâ߃éDZÑÞ& hÓ!Òy‚JÝOíLÇ¢wÄòEÀ`:¥£—Þ3[î‰-]góä] æ·)Õ€xd 8ó˜Ì´ BèÌÕà[¯?w¨nÔ»¾¸ìÑ@,…û‘»-Ê÷y´¸bï¨+ <_|d÷œ†ky«c™áLïë“ð\#ÈÊ«,›ˆ*/ÄG©@Î^}>OÇZk2þô¬ Ìå†J=ÇHúĬ{ðŠäáÏ ù—¼•ÂÚf¶Š±˜‹øg¢2‹q)¥À¥RòO*/Ñ9NS…I…jä#óŒ*Èo¼Š0ª ùAWò¿#‹ ?^÷J!Aœìàéá«ó‘½pI«BóQÇžw_FÃðøM|™NÆØz“%úH¾/À¿~w±!‹_DŠ×¨¸:•ÄþaE…ÃKŒ1×![€¬f袇Eˆ> ï‡, hû¼øk!éT‰XåC™[ÿP¿æUñCøfÐÿèU±]ŒåªY ö~ ¦~UÚÆÀâÉxC\Q~fàlt†ƒˆi ;Ĉ¤@Á¨ùàN±Y=ÙÝOç6täòs 5sC<—æ­:þ(AïC1ËÁÏä†JÀ ƒ êËâ·JiëwêF$SÁ =WRìj•@EC©‘ê<¡m ôbÁ¾ç*üOm"{gsÊ´€ùÐ\Màs¨kw€áIæÓu޹C·?ÄVÔVãôzУ[3¼·›ƒBÓ-ý¼ˆŸ^Òøx;RRq§umí€ßþüŽÇ^ªS¯EVÚm[ƒù§ O@‡w?Ø“=c{4ÔÔƒÏ[ƒuu©¯Cö¥tìÁ—L.-¦î£PŠî©÷|­r4ü ˆGó#‘\Îа 8^Ô>.¦#±ÙÃÐ4xƒ70x°õÒ èx¢zƒa§)D"lG ´Q¯ö{—ƒëa_-.FeüüóVQÜÜÀ;¥Jð“DÛo 1<[e5U¯É!”¢9còïšNDrvŽÉ$TP;uw#¼Ç{1øæ2Ñ † ª*ëa&É®¼Ÿ-ð›IhrÚÕR”ÄÏÛåÍít ‹Ð–‚ã%±"bo» }™MP(É ã_@óF m`¶PEëó'\ç8‹@:mÐm§tOŽ„à½P3°•4EÙX©;ÿÓƒ Õ2R ¦–%Q Lì­7ÛïžJ ι†Fâ )ê™Ì™š…ý[åÊ–FæÒ³à _÷FÎÂî ? áÉÄÜ|"â›rœ¢bÌ)@4S/wü3U­·Ä Š˜2r6æ§²Ang“‘@iÜž Ý£1T'C4ß8püu…¿l´œ¢¬_lY×ÖªŸ‘@5 Ôvåøt¯ƒ6"ï[õ÷mFS{Ç¿w÷ùw7aEJì ?÷»'ð³‰?1-i·È FUrõxdÕoÛ§-r‹ß-¢l„ší|Ñ¡Ÿ2_q·Õ„RŠÇ*à×w-å×wµ±è¨ò!Kh]…²{ÚjýÊÙÖùï@f(€¼CtŸõC³ÚªÖá÷ѯ˜¥ùÆ^‰ïçùîû“º|,§µ(k'Œi‰X:µê®Kçí^ëŒbçÔ)¦ÎÉÛ½õ¢Líipµ 9”S—xǰÎÈ8¼¬à3E<ÿ±bÏtÝ÷{nEGd©½3Êîî»…Ïܪm^‘aqeùó¬›Ά—3m¶øŒlï¸\ ÌòÊÍŽ{Îþú èÞr¡mܾUi4!P9ˆÌAmR"ÃD"Ï8‘a’"x¢ÊÔ²Ö„q1±‡—v~»üø 4NýNJ}Oæ¾¢ úiKíÜãeåD’„i7Q —F«eù%b¿cæSà!xH…üpìhªrš´;ôyßI˜äPï¼þ¤ZÜŠF‹Q·¦5XQZ‚%—án'Lªñ/ÞƒH‚K§Å ÝWå¢CП£™¼ÑµZ*8Q¤š¬v|ã#¶U¹ÆZ–¼% àO1v&`ÙðBí á…tÿý½LŠEt¼ö¿¨(›Ã+L4‚±ú«¨%$SÇ«åí`®Oñð pÞ#ë9ÕäŠ –È0ª£P„°fc¾D/žcY„U$vÂsDK’~u ˆsòMQUPMvÅÉô²4¸É. ¿kìvƒ=â<_äa+?šû,Á=´@Id ìöZñ9äêoh¬ð¹†Ó<3]¯g¹ééšt4(ÏYí ó”ØuåF-'—t/ò´GóStëú|'›ÑâÍ„âì ‡jWŽ"s¤)Ö‘rìYÉn£ÚöÛÃgù±ûáÝŒ‚âwGõ}ÇP³¤^kïµu¿–0ænݯ­Ô}زðÂýZzµ&ÛüàºQ0±&2”—^¨Ž­"_u} }n¤aqêÕsÌô4T ‚òziºŸ=«Å£ ƒ1]'cnÙ 9ü«) ÕÂo|¾²Ñ€+Ê&`Õ•*„u_çxÈ n¾›‰šä±˜Ô²Â{cR”®'_#ÉMðÉ})~ÉÏ?ñM™¬š ŠA^¨L¾ž8%*TB[íØqU+Zƒ'DBBÝš©T·à‚»xdŸ‘ï›ô½ë®›¥^NŦ+†è¥Ôv›]Çø´åö›2mÄéOó”Ï₞à»ò[c'á;‹oŒF%M6 Í€’@è_‹’˜Ýön€¸>“ý„gž„Mⱡ‹|­'Ùadõ¢˜MF_íË7}(è2PÇ„t6Î!¶#‰oìïÐ P¶$šð»`ø‚*l,+Õ¬J5ªT *¾¦°Ê,É5Üù-í¡º}qæÇl;°5ïðÆkC_Ú¾·èý ´¥v ΣȴûkSJ>Aã)>¢ÒÔlÀ¿ôÀjÂGÛ\Y©uíÖ\I~ÛX DX[ž”iÊTk( PPÔNZ¼¤œ÷®¸ð|eJJÄ-<ºWáïãÝÂÛOná™Ëÿû{åÑøW¶žü?äyòÿþK?†ÿ÷=­þTÿïÍ—;ÿïJåiý?ÄëÝñÿÆÝÖI§Úî‚@§óÈ–×õ»Ž¿áÇn¢8^ÉaAø±¿÷µžÑÙíâQS‡'ÄÃð{~÷߆£!Ær|ò_Öœ&WMzîdiÒ£>à4á»r2i&[á¹¼çRRάšhšvÏ[¬»øR¾Ûõ÷0Ùs{7ÇC *{9 } ûœýâ’nÜ¿Vxã5‹˜>†&j¯ÝÍUͽ’PAÔ^炼[uרºgT•‡Ò JÚ|Œ[ÞUD­Yí¥M¡ÜòÉG_Ɠ۱•`¶•´Gã‹]Ütš÷ز'HÞÏSM¶T3LzgÚà€µF›áb]n¢(ÐjöÆP}ô½,˜§ì²É wÉqŸ¤® ˃2nÿŠ»²#µ"tÉëÀŽnë: .ü¡4Ëcƒ¼˜À²¼ÅTµ39œ²ØD«["QüC¥ab³x²;#N¯zd¹×ǤÑc²þ:^Ä«ÑäV§ShOæ¼ÓžIÛ½õFßÇžšh‰hë›1§jÖÎŒÕÏCÏÆ˜u^H›ÍZ¡ðVóu^ünUÅ%*£ú®®¾V—¦Ç/iÖž_bl=tîf[z"Ä%=ã,=WÌÙÐõ¡;ôïÊÿF[š†_ŠÙwX×âzYø®°]¸fÊ4tAQ”ןð%^[|…R㹞,ó…L#kœ¢C±!vùo´€g×Zí¹­ÈJï ¡3N"EfÃåŽJûŠÐÉI +ÝqLG/´Ô·U~³×öïâ q867þdnœ—|d:@ÑJ>× 1ò%;AÂâï­ EÚqr2IJ`ŠË˜˜fÒe2'Å᳓g¯ŒúÏBR~¦h¨G-b#Á©ÉŒ®Ñ›‹/C>=¹’†4Ð5XØ€â Б€·G ãºr—6U“¡g ý:x%ª–±¸BHò%„I}Fzï¹ÄãÌGz.]8rjgÚ »,r£ÉÕ§Ax s>øø]­÷•G>’Ý·{x-ŠBˆ›»3ÓNyGi[^`xY­YæÉ3×1žxÂ4²-'膎"Á‘©w‹Ú?f:¹5AXuuÚH>š=lEØv\7j¬V„Ý`÷ï¥z²t —l[çdŸ…l..£ã]£\¨0N˜ èÛªq.D\.áÚRú[œ Ià t!´÷dÝVÖDÉõøÑÕíÔÂä#UúRš¤úuërîY´š¥£\Ýr\e§ÍMlƒi_ PŠêœÊ<š>Õc«{VÌžbóŸ&×T'‹™êm4êp_pÜ©°z”*LH]ÔªäÖtæ%ý´9b2'.Èç‹ã`ÑNA{ðÙŽqvÞm¬ ›«’Öñ` Cvpá~‡ƒÌÀîBmë]œØ' |Š&r³:(&·ùpMpt×[Ìý«)ê˜ì lA‰q.ËNOìJà-ìCeÓ w`è”r&d‚ùdÑÿäì#ÚïOö^Éb_äº÷“hÃzp”¹±¤ííhDgµ&k¯&ѵÚÄ;¨W›èÜ££“<äAþEýõã\vah ·<-ÏËò,Üš`¼°mœšM¤bËÝ­YEDÂpèÐö&æMr< !þ (Á\IG“&ZClA†”(Û þkóU˜íç›Î0B'[òðˆ‹á±2þ)Ū‰š¦ôGxZeDÕQâ5cäŠGèQûˆÛš»çòåò^mP­ãïèÒKÖZÂýˆòY;ÓËxÆŠ+ï½r²òÝe`F…ØŽºÎf¾~5Îr4æ<ô%üßdç]WW8§¿Š²J´4ýºv«~ ±·{Ýz…~ŸÔ9í:¹ž#ö=í-ë1¦œÅŒœêÞQ,é4–JÝÎ.ŽUáG¦ÌÐ¥KÞÒR~nUCÂ˲¦ÿ…]©îs2‰õÖ’à"åáUŽvåx%ÓHÓWoOÊ¿'‹ëÀ%üa#äîáõ·‘ Ç}ž FC[FC†³XJ­mO­ ÉÄ ^™tÇ1ÂO^õ%úlzAì.¢â±·Ä8?2÷—éÅ‹¥È%£wЯ•ìÉÇÃìaúÔñ™8H‰ƒ<Ú“†liU|ÙÈãµ.Ö”D-w@½uþΪ»›XwO×ÝwëâE%B,—Ùår¹ˆEØ•§"¿±<ÁÔ¾Êò `Éæ~Ë©|îza’ð™a«h:æS[ GxM Û£ŠFÚßí2(´¤µ?%ŠnP1O¡Š*´›PÇÌþœ>Ô“ÌšAÉR{ºT¤óèG¹¸‘á“ð@DàHnæ1/'Ì«Sç<ÍR™ÿŸ½wmJkÙF¿?¿¢ë­§*ˆ@œ¨ÉZY;»¢&* b\žzO*&$Ù€¹¬Ú?þŒKßgÏ Æ$ÌZ+³{ômtÑãÊ­îë2ñF ÑÎaÙQ[ u’¬ë‰6JrÏ¿DÌs If»ž<¿vŒ*ä¶ÄBÁÊH’\$Ýþubýƒá¸”HJN®aô·<²„‰ Š,·R¯kœU­i¼¸í˜•(vJÈo¹Œ÷c-jïWÓ\Ì Ö~ÔÆ§Ï¢ÃËÚOÀ¶[$æ]V.&À¡¤•Q|Íóš…ñc0$% ¼·oÞŽÐøË…°'Op³êʬZ¿}¿L5¸Yo/¦³Á uñêà&Ù˜ü{0šÅ¤ÓŒl#‘€‡í,Ü“IÎSB^-ðÈJê³P‹\4À+G2g¢ÊE®3öZ™ƒç³ë€ÙOF"èaد=Øz«|XÒ  òÇæÊO xUùðI“ÒÞžÛÞ^V{ûn{û)ø+TÞcáîÚÍ`†=ßÅŸMŒá‹Ç™¼±&ÒhE]W\‡´_IePÚšAQŒÌz€AA‹†r"bq#ͱèˆfs-wçQþ0 \}åù†j+?BDéŒ ß †aIgYʪ¼æJÒ¹U|7 |Õ¿g/>.–†ñìñq5 `WæàU#·²•|<ƒÅd³‰,JζöçokËeNR8“sʽwG«r•{ÿ,Ô{šýç!šûGJV[9]‰^‰W›W¢ëÿ7|,þÛÑöÊÿçAž•ÿßoýØþËÙýYû;ж#ÿon¬öÿƒ<¼Û}ÿ¿ÆƒøÿQ*ØUØŸØÿ/eÝu’Øÿ@B€¹½óä‡ýQžƒ)õï’$öïF~ïÂwt/œß·0ÙƒðÝûFƃ0à>ˆòy°›’1PŠ•D’Á‹íAXbã5™ñ„l¹ýi¢_!V·LrÖ¯kÚ®…÷÷+Dç›ß4ãEX4>„² p#¼³!§ø–åFøm¾”G KqgGBñ ž„–#axS½-'BéC˜æBX°&`-Á¡&·pkB@ÆÅPnÿ½µÿ[Jtv ØéíÒôv,IODÇßð@ZŠÿ›D"òÀ”ý›æÈ G º—ÜIt"”É®½q”õv¢ç˜È‡‘Ÿ_'-ÃHÅškâI†è¦]Þ$mÑSYì{ø"Á÷pšË÷°îÔÿ?¡}ð­"žÔ.À1Ý#rmÆýR o¹…7_ˆc´« »Ö¼wœõü}9‡âÖBÚ;Oót[Lñ¬Ïá+ØõsKç‚€‹ ã‰á[ÖëšwôLîJ‚› é Ư¼ ŸAìjbfìy†ó`/ÎA0m ; r §½þY¼ÑèœÏK·©¸'T„E«)Îþ^Ѽi»¢)%¦û0[„©z3£czÜs¦¢]J„ƒ¡©ûÈÊ\ÝNTÛ¯%ž¸×v„Y‡"/÷òÓPvwAîˆ<†åy#¦aoA¾‡<†ŸÖõpþ}—艘¸_yöݾÜw¥ï»û¹Còz'{CffÚÌ´JºœÉhÇg¸qÈŠmƒ„+½‚öfÊcžìTŒçk&òN’ÅÁ•×õËÚר‚ ìÜÓRJßÅyTV’æÉ ’Ñ:î`ªÜGþ¢*0ÉW*.Nbx‹»ù:3.Å1sûÚ@ž®–ÿè Í!=ÎÔ‹HB-`8ÊgYüŠå¢nš\Ô.†fø2/oOèÙÿ¹Å<ï¸ß¦S¸°^ý%z’Í;Ì3Þay/,©D¦jJHì#‡ÆÒyäô¹G$´Å—êÞÔb¹ˆ\„`pöcÎÌiºéO§¨˜ô‡ä« ˆÔP9³0V °Ã€º×ΕŸ»¹Îº©f7Jy§ÏA’¶^fÆí€“d.ŸHvôï’â×ò‰ôòˆ®’5>@²Æ»¤i40¼l^¾SŒ¶sÂdŠ'°6ê ¿OSu:EA×kS¨‘.5 ôÇ™'±xæé Ö‡µØ„Þd˜ºmU· [k/¢­ír´ñlC&ýŸÄ¡À7¾Cî æùULÁ)m9K«jGçZU84–y»21Ð,Mîíñô¤w$NÜílŒ¨y‰MA?‡´±¹…93+â¹^“Ã[8Ü£?ÿø“ÒÑ>‡!?ßV!äsŒ>{(‘úÒ›¡Wgº±'P¯ŸüǶù¥Qëìuii:¨rzÝ»¹éMƒ‚õxºýt£jèÝÝÝ™çõXNSXÖ­¬A¸u ¸  óçÚ‚zæò‚ÆŒo[°ÚÇo1ýæ tާ{ä}ˆÌèÉ€‚ºb©iælŸM”"Áÿ'ðß›’x“<ù»ÊŽÀD—­*»ÛÀ Üß94úFm¯u*ß'gДÅRz3·ßó«½fÓJ‘Ix-ýKÚÊ0ÖÞÜ~Ï;4µ&U&Ìì›v78’%ù>çpvΟ­ò‘xCoýæÞÐÏ‚VÞÐKñ†ŽeKLD˜tVu¥gÄØ¬¾V<TòI5 ºN†rs%ÔsíÚc™b’r]F “!r亼OÎÊ@6ÁôUÈë•Þøñ9+›Œ2´ì ÙNuà­¹1*8ü èÌÏ›2(×`MbJ-j¸ŽÑøá)ðl£·£ßDq or2+"é›D–ÉOL¯OË®µ]KO51LÖ$Se‡I'9L]ö*›áùfX$*‹ªóRyäIßž¨.Ö™³U!‡È|U÷c¾iU¯#¹ßRPFÍO}´Qw š†.¿i’ܤƛæ5|kùICýØo§híF¸÷ޝ/SLìC…c!0SÌ;<Ï­'è¹(k+™á(JZ¼ÂÉ‘oht‡V3‡P¨µãßKnOä³ ígžÊ7r*[á©|ãLå*¹ÿe+V@ÊQˆAa¶(¶¦þ"ÜIEÿéFîã‰:t×8O„Q@Zj¨§7?Bl„Ëv/ŒEÁ–ñ¡O«F¶§ŸCÔHÊå „8ܳ^Ójœ ‰‡’e„ÈåŠÝ±¨NTœ{¬ž‚Ga «3Iê&ý9öG¤óiRŠžÏ$Yå`!)IØåƒ±#:({UÑOÈ¥Ýú¥ž b×ms—CœX 2Cœ ºUa¿¤ƒädùi8F~èòK·êÄpB_Õ©`aýÉ"ÅVŒw0õ‡ñÔï$ ?¿X”©?æŒ2Sõ'O!VB)¯×¼A?ðTÝ¿Ñølý9ÿlEsOW³|°wïé:Ø[Ÿ¹îÝî~ ]œ¿ÑÌI“ñÞ€,¬ÿNAߢå} e§÷ÂXÑNæ v"òÅ9&$O³)ó²srvÚ­H9›™¿„г^†£Ý²‘‘ÐrÓ\§±² 8œÈ“g)cßuÆž&ZôØ÷±.¬"I&!¬˜qoî€4Äl•QeÝšgâœy‹q<Ùp«¶—;T]Rãj R6¹QëÍО?CÙ,cFãùg(£j8øQ´ ¤Ÿ•¼s%ïL«¸’wþPyg´}Èšå¡P¾Ðšir¡vL€ ®™Z³Z"ÙÏ KƒÐÆ ø…œQ51w¤hž¸6Ef’--I•“Püð Õ_)>Š nB~´paÍ}%5÷Ó,BF“  É!IÍÌ*3z–KæòKÌŒžå˜‰3ó<[f°@QGž‹ï›‹ßzŸÏ59Ì79÷”jä¥,°Å 幦èÏ\â“_cgýù ¡h$&Ñš¼“õ$NK„îruy—;T¢‚ŒéI½mæU(ì8û;É$±JŽ™¾¼áÎ{oÝs†»·œá&GÎ?@)ÈIN¤¨ë >5ùdG‰B3bGô]=Sn¶Á‘>WÓ…fËõ®?êL‰YœíZÒ¨5ŠT7"‰j”ÏX7Éö³)±Ž-Öñê‰?VüçÏ—@bIüç­çÏVñ_äYÅþ­ÿyi»?kÿG›[Ѧ¿ÿ«ÏVñŸäáÝîÄ>^%èm¸W½=ic “Ú+¶?)‰6¼ÞU‚ÚvVÜæ¼›«;\³@oó/ìòlÔ3Íð4ÇW½#cö†CM·ªèËN>ÊÄ QÌÊf`Ûï_ˆÍ’è¾vÜçŠÞ,—C/Ðÿ¨¹Ž;©’cmJfZÌ€OgbðåŒ<Á—O +yþ(ȈŽ:Þa(VŒË*=àefpŠ!„8Ó§ˆÃz˜S\ô¬ADÊ^p›k¸|ϾÓVÀ_.s-jvEÂ;*#†¸ÀXU÷+cÅÂ`ô¥P[[“ÑSre@A4L[* ­uAÅÁ¯¡ÀnI¨(.iQD“`FQ;Rgߟ¶øLü˜MΔ†† “ñŸÛÁ¤åd${)žDOÜ“ã'/„lï/¯Ä¾RHX:Ü&9†Þ"$Z]?‚šßfC—äXU¦¤‰‡H®F[Ôh<*ßBïSÚµzè¼oLŒ+‰Õÿm¢$ÕN\X©¡‘ZÅBk=Z{ZMFkèÏ”µy³Ê°›_Ó>Å@6pzbû ªPÃü±Lq¿)R§Ú•ÓÙx‚ÑJG&@’ †ÔÃèCèËÔÁ´Á5ã Í1»Â@¬‹ÂÇr´Vü£˜rvPú¸Fº´è_/ÿzùñ¯ B¡:*\‹ùH`F~À&ÂÙ‘~ê½Çx´hÉ4\¤Œn|1gÊðXšôUD&FW…ãàó#g²nîc×F''ð—u‚™³ëi!|p©s+¦+ «Å–ä7Ú M1òÀâ9"5ÁF½˜©é_T`p‡HM ™2w\-‚’E‚ñGì@&%7ÊÉ=C´Žß¶º*¥Å\ÎÉžÊÅ`ˆ€¤E*9+‰£Zgÿ’‡];h¶ ½3WÒ«±Ól´Pz†¿&ó8ç»o›‰£&†*#‰E§vºW›Á¹[pð’óZ³v–<»Z³þš‚‹´ºJÉŸä„À•üj)£˜;èÉn»So”$wMŸÝ“ΜÔv:%ëä ‰|5NL®Žl‚˜Á:ŽrÁáD $Õ/Nq®ó޲¶’¿¡éÿŠý6?ß%BKò˜à&4‹Q9y±YhGšÐ,|Oj¥/¼uÑw 6 Z!Gæk² o1`êŒ÷<íz”ï9î%ÏEÂÇs‘pæ çBxLqˆrp4ˆÕ D9¢8H9´·i 7}-S&\^Å ÇŠÉtïZÙA'îG"!v„b£pcn‹4ñé ¿ñéãèô®=us{ó³VÒ¶q²èÞ×e6‹™u·Ã¿b®s“D°tÎ¥ÉJˆ±[Cé&¦À˜0Y éßÌo›é¢ŸQ­k†Z:ä=uÑô»=@'D©9êb¦l1o=¦œ|±0j¿ öo@}H4Ô‹·â[Šª2Iñdu uPÂ2ökU ÆÈOšø±J‘l¦ïDCmÌÅ¡à«Ä`#º (÷:>Ýü4o‡³ÁgX· Lƒ\j@!¯z ÔI­±±|R²Ä7îŒ1…Á$¨ùx ’i;™Ðìb¾ubB¯‹Å×y;^gùðûŸÚq¹ òö?®Ê6èù÷ohö¸¢§22òµ¸£ÅÄtLƒéjtٻŠa¥Q²[P&f{éfgh9HlNÁ˜©¬SÎäÑ é·4x< YA›¦áX§zEy–™äW€•|&š¨«á¥$މ:+g>ÜçÀ¬3Ü(ÖÈZûÜ´“‘x2-ÿ‚èL?t´} ¼3LuÚóUã©<-ÑМ«hD5æJž¤¡FZ·ÒPÛúßÉõô±è·£h¥ÿyg¥ÿý­£ÿ]ÖîÏÚÿ›Qµ×ÿ>¾Úÿñðnwõ¿í}ÍJÿ}©iµ_w˜©S!ÃÎðó,…Üßk·¡8ýk+Wºáåé†å²åQËÔ¾gzyï© Æ…–ºÞ}óç\:b'9¯®¨VàŽÎ¥=dVx1åÜœ†Ãö_æ ]É7FÍ|mô—:'@áœ"°tR¥¬³9$;”°DF}9î__0Ú¾J Ê"+E gâŽ%ÔÕh `4 ¦Ûî m:¾äA,B¸é÷0qBºÜÇì}™$ª¼™*z&®Æ}NH=€’=L ‹@&” –“}¾2é«Ôeo„U78Ìò»ó–CÇüC°9ÓcÅ6e±Ä)f±õ*ûºi©º- ¼!ÊLvö…Í+ߥòÅb×T)t“ ×eá×VáÀ¥|í—Ñ7ã”–Ñ6R0iÀ¦›rê'V²™R¬!vÒÇ„ó?žUdV:ðßB>w‚KDŽØÒzH¸´ —nŠK¡él¾Aœ…#Bº÷g èýY…!Å{\ÁO2Cí²Ðñ&“+‹¨sÚ7ij~ïòƒç—>&N³¡œ! ³øžš…æ'–eí¬Û~«Ó³Í&·VËñª¡4 i󘚒ÒGg$œ°ÎŒÅN]'™èÁ{8‰oMÖC8EÞCŽÜ#”ŽÆUæþ­ÁHavv”<{c‚3·ñJíŒ2õ`N*Ë„¥{Ò<¥N(?в YîaH”h(”<Ò@H‹÷feV3§YMŽœHs™ÑÜÇæ%lE“™h©‹0­×¾èpž¼LÉìF—¶"½Ê¶_%G$?ý‘U÷,o]­Ò½‰P{¿³L!N5ƒS´¢¨*Š5‰+…õ°Äñ¶v,,õNàe’áIš RJ|1&Œ¾9 “I–çX«ªVVÓÀ¼ym ºN¡¡“%íGÿô'csMFGäV'ã¯ÄS–ÄçáíÔŠöD€ì ë@Šm‹ª½ÏÓÁp<2g ã£+SŽì€ZçE®býNÁÔèýSlÏÄ»›Ëšw³ÖÆxPÛ.ŒàÚ0¸ºZ×&ÙYYŒ?³¥ù™e˜Îù½ùÍKœΕíFÁ°ºýÏ}¾¶Q¡5qŒØØI;ÙZð&<¤H+A“ > h’ŽÅ˜Ì*"+A qø„æ“‘ïbsIHQz;ìÙPðÒ>€ûŒè]L mø“Ãýá7šºµ"þy†ÔÿØCË;=á™Æ×çkêšìö Þá}¦/ó:;ÂB‡rÓë¼Bo}CÐÐTÕ«þh HÙ£ éS÷/ën —ª‘â.É!‹±/¥WW,*ŠCžÆ®É°ñP>fåÝ¢”ÉÓ…ÈÁŠh¦â¨¹öFmBÍÁBÐB3JTÓqÄO'×nJ¡.C-¶j!ó(fÂvQGuáçkÓ} œ°kKÇëJ(tvd&6Ö‘5A€›zBÂe„7¹Ö—uŸ ?²7¨«:ª¯”)åD‘ï$›s[¦ÉƒÖ¹»[ù%EåÄt žÏm3Ÿ©1ì—8§ÛsΩlýÈîÊ1õg 8á­BÎÀj¡¦…¹×þøcÑëùœ×ó(-ú‚×òÈZËçwÞ-@¿#Åžä ]–¼OTýÅMìŸrb³¢Ë/qrçM%pŸb/‡Žž Êì™B­Ðrù‡,ŒõœŽ8ÐÅÃå Qc†Fƒ—G0w¤ÿäõïd-?vÜ {ÒXÊ.Ì$ÿù6a´™“\Ýezç¥í÷Þ¼ÌÀ¡(“¯ÈÆúí”'iYŽR–eqìAæ²8‡^^.!û3‰û¼Øÿ<' ºË4ÏK¹5ÍyI}Úâ}£¬Œs¼‘áN1ä³X€Þ6›Äqp«wý@d˜|‹òggŶ¡ðÖùÖ pCL„Ýo]2ÁD†>ϲ-9s-;¤–N—Wÿ™Q??•¿¬‰Ê°_aõÿK¯8wôVbÙšËH!¢S뼸wÒ)ëJ ±f5“FØp©Œ‘L$)Ù]!ù£»×=V@,›tçLÁÌê03.<´îá3JÆ0 I¾,‡ÒpPS‘Ë¡TëãSšÏŸTâMQ#Sª—&ªŒéq7[|ÌbR’Ø‘Ÿð µh£C5!åµ\¹\Q%ê˱F‹½Ý¼wo7³z›<¯­\óšèBYM÷¡lÁÁÒþ±,™ti6ƒ1)Õ­„ÑUˆ[Pvq†Žge+a‡J‘ê&8eÚ:6ó÷SY‰ÆPµs#gE F…âÊóG=¶ÿ'¶Çãÿ¹Šÿù0ÏÊÿó·~Œÿç²vfü_Øù±ý_}¾Úÿòðnwý?»íƒB(šÍ/ï°y7gË|!xU ¦©D¯ÊdßH þ™âök¨œc’ˆ½ö¿%û$!å–d9Iÿ$”òôfÕëïpƒs]Ξ*‹ú;xžÐ%tòÍèóø ñjÛ0w´y}Ð\ù˜åôÃ|Ð Õbn/´N¿/.úÐC*q};¡¸ÇWýYo0œVü‰þ6˜ñ<ÌÌ®Ù;oF0x?@lžò’çÿA®"½›¾Úk8‹xT:{î‡ûZ(ÿö  J4§½‘ \øQÚ(1Å=cÜG"!âÎ@â%y ‘ #Oâ%ôý,ßhåG&g—'à "÷Ví î…t©½†ë8›ykp;e3@š¹œŒÀø;³÷“Þ˜ößÓyøÂ:Õùz ¦¾°¥‡¤³ W± ˜ (Б¡ NgöQ÷¡„ ‡ U¹À¡_Uq:$ý)o(Ja,ph (4@%+µìpZ¦ñ¢Î(Øe»*•I©$TSÛt < cQØ(o Þ¸WPJTéTeèI÷ pE˜¦¶Žÿ7j(¼<>Æs$Ù-DB\¦SÈ=<2bNÚƒã^À?ÏëåPÿпüD|‚¢^ƒùTÌ¥ã3Áò"Õ€éðÐZq~Ø!B=$%§:‡xú%¥ØÅËXK 6hF²È ³BñR9§uø] O}jGVS:î‰ð½ÍðqÖ(`noq}þÆ czíYè°5óahŠ2Ívhòêë‡eNØ'c'Z?Æ*М•‹„´~²Ž¹W„´Öœh‡”è°â85Ö½Á×ÿØŽOÞâ>IŠ¥zˆY=Ó¢¨òÈB wí<² æð°”RÞb:ð÷Ͱ6Ò×"áG ¸×±‚±ê È#H‹|?¼dè9‘$† ÈqoÄðûxˆGy‚«‚`ÎÇõèÅ(s„‡< œêDäi•S£ØòÀ‘O¡ì¦¼G¢„äÍ6:!`•ó"[C< â^™\µá“ð!¨Éóãf')߀έ”o¿ñãêÿOü×ê*þãÃ<+ýßoýØú¿ÿ5ÚxVüý¿m­öÿC<¼Û}ýßñ_WJÁ…D`½CðÕœ!TçÑv0žÔ—þÔbj¢`ªø˜zrtàË’Ô²D^ÚNèÊWb{د}\†Ò¤!k%©ɶpGÆJk•/¾—)h£¼Ba·.IC†ËW}åò®¿s ­šÌ©9”¨æ±*3W!L6Ýí aúâC®B—.1ti–Ö!¹ñDó)îƒaE]½}J€Q· i 2v£]ù@I·šZñãÊjTDµµ“ÂT¢Éèjp G)EÙîÍìMè«®½xšü¨å˜Âø¡÷¥/Úý‘¯ÒþQJÇœÑ ¨òð'Ô .(Ò_R\¿ßL¥€7GT9?Ý*è\® s÷Ò¨.5nœ¥ ô„ÝA½ìt±qŸúL]¬VmÖ×±*Úî¢áÔ:(¥ÑK%ìwN•lýž¾«JÖEJ‚^á}™±ÃÁNS¼ëÍð—vÚïM.?ˆ:%¾2ŠÚçÉ`ìE”fA¯ONY¸ýÍ¥¡°—6K9±Ç¥¬”ìQ_²uÝ}q9þ<ðuÚ`ŸÂÍbŒ®0x­£!…î "fcÌE¿NøTÚçþƒQ·ÈêKŸÒ î{ ×͉Ð{SjR1û3+¦`Ô#{Ya?ü;™BÊÂÀ¥lDb£*66ÅÆ–ØØ–%76´sÚeˆhSD["R¯#¸¬ÙLµ*ª›ø¹ª*—új¿»’ïÍM±¹%6U!¸$oFb³ ¿Ç$äÀ,n©r[b+[U±µ ¿Ç…éBl«¢Ûb;ÛU±½)¶·àw(é9ú3u„Ó ]!”û0^M»QÐlO ³áDþÜÿg<¸‚mµñb»´ñö­åT‡Ãçáš}˜ôûJkGGÆ ƒáóÄÞ"°–µÂÖ‹g1€ç2@”&ž)¹!0 ŒjÚ & ´mZH Á©X Bk4mÞÑàÄ¥´CdxLáÕ)˜½Ò íËdºÀ`õ.T~R©ÉÁÞÖ_b ±©RÆ\ö¦¸mpkoå`†c‚ŒXR‹#ÿ7VŽ?Ð'úÏ”ôöš½;Á·ã{!¬)émPýÀ‡´Ü4a°¦¤·¥õC»_n-«ïöÎÖOüpfbÃÙçúQƒ]Ë­qüŠê¤ð*ºu«x¢Á‘å=êèLÎø«:gF]ž5$ñc  ´©•¦x®~¼•ʃà´ml$çú„£ œ„¨Îð¾/ÝE¥Ê‡~jøŸ÷دì‰$œ%†•ÓT@ù–V–&t{#ÐJVCª•-DKÀ"@Xi&&¸N›ò+ ¬4¬Ùvn%µ!ÕÊ6b> *à  ¯®¢ø¨ ^]ILGýo31!_]eÓáms|$‘aó.…;O˜;O"Ivž4²ì<¤Ùýî‘ç%Ü­ÅÜMÝà~ q?‚›8˜{ܨÝ…à³$‚ [H,›àŠ8µn*ÚrDsïBûPGÞê·ð^ÌA37qôw©M^ œ"ó|°ÚO—ÕP€ŒzrFþ%“À¥6&£Î¢%õÜÒ͆âÁü>ãw{í’htŽww1ßh»Yk0&K"[¨™­R"ÑVf¶ÑƒÃ”‡'PæM®kðGÈÚúQÛ Ík<´[?nbrÐãÝ`¿nDd/±pÓV¶][!˜¹Q#`LäÀL0âigYñ$XQ'í”_œ‚îþC[Õx…¢ ÙŒ³DëÖû1©ìÎÇLV¬ÂŒ¿UÉ©æyÒ¦ÍA£îb(4–Ôü­n92a·[ݘﵮ ”³±^¦êæ$ôqæˆÊŸ&?l¹Ý-J”ˆÞ½6"ÅÞ»uªªNèÁµ¾¿”Ä;NG/Ôª`8þŠW …"\“S´žVy”ºÎ~ ºdŽ,8¼êߨÞÿÿêñB‚ •"ãr¼n«<kß¾1ÁxNP„ Ó6ÿé_¡ãÎ|ÂÁE‘»«l‰ß"GYòû¯ß!^æKwνÙò+†''á\spr&pÏ¡i­G8 ÈmO1Å5kßqK!Œ÷æîXOÜݾåϵHÞÇ.§jÆX{Ï+?¶|v¾Ó>©‘¦B1 Ô4# j£ z€X#B©Q„§Ö<(ÝH”ÿ¥Jk%Ñ­ªo|ëð—ÔN¬fUÙUÖþ¢Å|)FñhÀWÄâ²Àþu÷˜¬Í6JfŸ{¯Uœ­ä$Fნ„ Љyp¨ÏWìaBîî<þ»lq{7”Ú‡êQ5@Qÿ}¸–=atrz"´nL˜"aO@1Ð8?öØdƒæb±³!u#_#9Ù•æ@ò*%†ÂÕQ´9X>⯳’jVZVµÜØmáq”°–´J°Ò2XJ€D†Ð[±¤TÝ:8 #®ÈXcï×ÃNÊÜÐÅ%mnCép^ø%ÞQ&O<ÐïPGR÷¸‡õnàÜ 4£>7͈ vr ¸½¥üZ¼j´E„Ú µBÄ_;êå(¶õ X·jö Ѻ©‰/GQQ‘Œ—£hž=uAw‹h½_ã€2-<ÉJ è,~ÄQèýJxb“Âdràn*y˜L|W„*ç§1‚0/#X3(LHk¡pŒX4 è‘þ®)fxªù9žø!šœƒ\ül_ ûj„i›·DŒ °ÖÑ:æª!YÔ#Ú¹™Ç¹û‹ÕúyÇ›DP-o²À—Ìž¢f$£lÖ§ÐUBo•È»KXLÖ§õÀeÂT´«9•òóYYÜWR®Óü âµæËDÊÈ—’ö§½J$Ü%îŠäŒÉÀÄhŒýDˆ.Rîve Õ?ÝóB‘´Z´T”ô·½R­nÉ7ŠíXΕ‚7š¤~î}îO¶ÅŽ;ñ¶Ø± ~a*ªˆ7ˆO6éX·¯õ럊´ßäõâÓni4C‡°üxÁ`þDŠš«Æ饳IŽ~»‹F~´æóž~ÓÈýÉ‹Tba0ØFñOE›lÆÏß4[q¤0u8ðÈÊ@÷snpu 9ú%î yƒÝv:«`·¾ÿ÷äÑøon¬ü?äYùÿÖíÿ½œÝŸ¹ÿŸm>«Æü¿«+ÿïyx·ûþßí‚ç÷-MææpýÞ¸§ë÷áípÜh£7z?¾U&ˉ>ÒÂ2ŸµÂ¸F©­göéñº~ÏçñËÓ›9@Õ€ii.wï#JQåJ˜/m·½§o]‚<¾õûvWïExUW¼’Köª^9US±GàT­–1ŸS5í”–ˆÅýÔÕ‰®­ž=Й‰Ðiâ¨ÈñÜCŸÑfŒ&ûÜÞ`45Kl×T±±®¤Â[‚M”äqÈM© dÀÞ™˜ô¯û“þè²厨Á#²Á¨ð£rD1LQžîdŒ(Ϥ„F$ vky6uFtÕZ…!=ÂèªÎéùH} R¨¹ ¥Yçÿ$>K°ÚÏo‹ƒù˜ ~†Á|ÌÀ6FÞ–:ü彌íÛùíM að#W„©ìýè‹–×–)m˜ÿº{@! ¥xò(sÊ–½9ß]èùzoKꥶ¸ÎúµWB¿ÄÇ’ÿM€|>ù߯Jþ÷0ÏJþ÷[?Zþ·´ÝŸ™ÿi+Úˆíÿê³hµÿâáÝîÈÿÚõã›ë©è&Þ±”b‘Ý’xwÜ>JÉÙ¦÷¿~†¨æø sï\¡è î%CqÞ¨Õ[UÊ\D‘ŸŽ1Së†Øï_ˆÍ’è¾®ÜY¢'—D/R–te ²ÔîñÛÆž8iïÕ:Ç(}¢Gø‚ëÍ"?Ùï ¡)ŸWDˆÝp›À­]&;šô/€x+”g8É®”ïĤÏé‘h0$¸‚Uê(~ÖE=Lž4‘÷¥ëÁh0ûN?ªŒL˜–G&X¢Ë¿JÚA8ƒqad÷Ètû,¤ÄÊX±0})ÔÐøa†áerŽ3V™¶T& Z82â|* ¿¶sj·$ò>—`îLS_?ôýi‹ÏüÄ—æ8S&LÆn“þ•Ÿ¦*z‚àž£0•Ûó£Wà+…ö¥û!3”V5VF:£Z©K!5¯(SJûl0‰¢LKX–_¨É½Hcš±áäce—9d’ÁÑø³á$Ž&EþËC°¡ø£!ÔµÖÆO”ăÐáØ†ÒNÇÞäðш¾ÉÓ)@D)/àÔx I)Ÿ‘–¤Ô'^~KùhŠ#=v5ú”6çóÓBøpVDbH“ðu<ù4V§Ÿ±ÑªÅ–äªÚ²®]5FŸ ßÖ~A2w2À´·öJ™ ¯ .¡Ìv%Ó_©¤W÷R«”WÐB‹y9“ú*Àö!‘>Pl\ˆÙ;+‰£Zgÿ’‡];h¶ ½³˜±*ušÖ[øz†¿&3qç»o›‰£&ŽÑ Bëe§vºW›Á¹»‡ô=ÔÔy óe%ÎÃn£Ö¬¿.!ÞꪉO’â—$¸’_maÒ}€¸ÛîÔ%y‡ OJkaÞÈ?µÌ\³ƒË¼{ÐÄÛC8‘˜V!„àf°€£\pÄUŸx2$Õ/N±(x§S ~êßÖĺüûm~~UHf4Þºèø›c’ §Z9nWTÞbÀ¸æJœ "áÇU,îÁüQŽî“í1f?›CôÌU ˜¹Î¯B’¾Ô K^ûŠ…DÈjÌ­`‘5>ÙÑ€›N.G§w ì ìÇ›ÛXœ"o9g uïëÌÐpJZ+¹pˆ«×½ Ò‚½ 32A¢d •ˆ‹±EQð-ÜQFÀÈœ1ÀóµÄÌý\yÕ•YÉb^={ê>î÷~€’]hu[(âèN PÄWz¤ÄÚ/¨# çŠÈ°ëû o¥ÊX.ÿ~,+,¢Î$6j‹'LãteD6(BKWZ%€EqŠê3‹@dØF` ¾ o»à)÷:ɉªy;œ >ú]|Ìè:3ìöØJ8ÿÄN<ý¤dɹ¶0”ÀQÆ$¬äi\)¤]6ì'ëy±ø:o牭ý1¤öÞÚ yÇà!аÑôï'Þðì±EO 8n¬«1^«àÖösºº]önqcÀþ¸–Éì ¨2" òÆTÁb˜ï›9&:IžýœÉ“B²Œ¸P;à\bš†óžêåÑF—_¥e(|u,º˜î0¼œÄ|Qgå̇û˜u†mÄö°µö1ª¥„ò0²®œþ]Ó™~:ñhã䆩¾µ<•§&Fãj’QÝð“$m:_iÓ¡ÇÖÿ÷¿\>ýÿÖóg+ý߃<+ýÿoýýÿ²vfþÇg›[1ýÿó•þÿAÞí®þï´LÖÁ.°?¯ß5[7´×Ø«w‰ï"ƒ ÿœ6ðü÷´ÂÕB‘vI4áÒÑTÜÔ¼v”Gò1[,0ߤ˜ß@¯¬XŠ TštժɅᵙ+Íc@ ËøaëþïhÐ-pÉ>à´Qå¯í‚ì5~MF¹;˜Ê+­Í°ê£M9wNñta韢Lÿz†v.gã‰ÊµÑ#Ãþ·¸ÖMJGº4½MürÙ—I?‘gß?sØ^@ß«ÛKF_l¶sùáv"®{ØÊàŸÞŒu^n[Ðþn Ü)…_Š7Ånñ \\K¨‚Òê(€zþº³÷¦MÝPÆ <6k<â›Ö#úCßiCÈɤ÷Û‘r;™ÉôJ¢RG|¥‘Ä—Z~¡štžnÓ±-~ã`…ïxÙ.vé7þ¢ªqÌhüI¦$™ºé(D,¿‰êqE ÔônJË.‹¡÷´òð)‰ ø‹Lú½+q5À,¢Ãï‡<Ð](·5ŸŠ”öMž×üLaÑßXSãÍ4Bðð [iŒÂÈñMQyS„ÏSó†ŽDJ¬Èƒb„`M.½$•øhôî»Ä)ø©‡zZD:’“÷Fn§·pN|w(‚~ëš:1 PXÎ$Íf%Ö*~ÇÉ}5Ôoê¦2iò}wmÌ,ÙØEt2Är‰®ï½ëΉ¨UrÙŽ¶Õ µ¡÷<Ž9t$™™’w$™ã±Qf†/}T_$»B‰ÖRá@«ÈòÊÓÞÚu=:v“ÔÚ““q¨õi?Ñ›ƒñ÷~›ã´Q‘ þMaˆ¬¥âˆ¡Ê·ÔF’w—97R;×Fj§m¤öãÝHmk#µçßHg†?»ÏN:ËÞI ü˜­Ô~À­Ô°¶að=·R»"Aem%éòj+5›\4£+ƬQ%ƒ´ã.LñèVìô €BMÕ„„“f@8o.(´·l ·S¶%¼ˆñ`q«™ýÒtpvJ‰‹N ªìõ.?žÔfÎÆ——·Œd<ò8;ìüÊláìßNÈ `·‡ÑнËÙ7:\þÞðýx2˜}¸áu¤µ‡µ€{íûIï—å¢7EVÔpùŠ!\ p!Á?èXŸÞ^Lgƒ¥;‚{/ÀS(/yç›Þ'F >®à _`ÞÊÞ{<(iÜÊîÆÑm%Ø‹OÖÑ“þôu:櫲•ê”Ø˜¡>¾é½‡óÿżOæ[ô— ë9Ÿ¡êWôHÑÞ¤ð­ô}®ê0”‘´’þï·ÿŠuñßïÿ­üXKYÔ5—,#¤ ¥¬c gÓÄ~õ&C¯73àsARo«6”nŠDÀR¥È«tOóÝZ£qZ;ÇÝ×ðÑØÛïÂÇñ)†Wm¼zß:ÇͽÓ±lIàÿŽFÿ$¯Àñé>0†í=2AÕ&»h£ wß6NàŸÖ~#eªÃÆ»?Æìv÷¼Öy«Mr›ÝÊj)£˜Ûì¶~|ò7Zßâ´Â竽æé’Œoë°$8™‰ó1ãÖƸõ°1nýƸ»}:¥IØœd—«­Mh““YÖO!¯ŽÞq±m´<%ã ‚ P÷j¬lÃ+«Ma››ÂJá‚ †6>µ„u «{tŠtžX6˜Z²©ä@qvI¹Æ¹‚vŠ®ñ#YM«7^à× [ËU¶ i)ç3€¦µ`ÐòYßÃ3u×D¯{åîÜöʦ.ܰ¡rĈZ¨ÌW/Ó þ€Øv :s¬Þ¦Ôfof³IL®áå+5«<‡öÞi}QvØîFIÉ~kö©T?a°ÁÉñF>f“H‘Sl¯õB¥ØlÏ&â8n¨»SÛ-Ðï%.ªêÑ·Ÿ )!^¬³GYcmÌi‹ 4NìƒGŸ&A'¿.rëxMAV›/§xy1#ÜE›JÈZ3i˹Þ"rÒ-päqê—muèš+7ìkÑGÆÜÄLtl””{c7´ tå0ÂäéxøÅ¶®”ú鈺j™~ÃØ6ùD¬:c“åe`tbIà[& KÛú•ÖÒttÓ¬Á4¹ÕâfÔõD–kŠQâ›æ;ôõ `"ñ`-a'Ê~ö¹dB`Þó(Oz8ê…2yýÃ5¥ ˜ÆvØ™N;À:À?Éfð’l'K⩟3Æ^¾!¸fÍûˆ+4QåÈLLWýŠ&fkƒ‚QEÔb >>7sDÍ”±oÜ5,¶¥ÉÆ0VQÉw‰˜~ŸÓãÈçð)t Ñ‹£ÀþXƒ¾t 0GkkE´™&Ö¾èn0=ŠíŒQÈŽ«ý&ÿ.Û“ZrkI¸Æà´t¡µ·[éH—ÄíÀ$ùÍ §Fu­çãÒZZ¿Uç8`]†«ÊÁ¤3 ,óD²-²†DßʽÓúƒûV:þßÿß*þïC=+ÿ¿ßú±üÿ–´û3ãÿF›Ñ*þïz$uýÿÎê²xã8ü½ÁOøç`¿ßôï¯Ûw^g<š6%ØExs'§”æw.¼€aÇ›#_9Ë΋¦yÁÕŤO’Óÿ3Ët‰­BÉÇñ:³í¥|>Õ3d¼5!̉!×%´éÿÂn|‹SeÞµ=’8V,õ–Ñ¥§Mp§ƒ›¬Ù`ö]h§ê= z=g{Êñgü]ñZÆ»žÅ.Å‚½’Ž'Ò”lvs;œ}~G­Ø`Æc:ÏáßDX"ò¸¢ç ·›Þ?ß冂É^q NYÿÍcuõeKrž´ëèDY *?ŒûÇ›;ÍÆ›ÄÙ\KL!D(¥#@¢ù¸â ™'^ôû#¿öêbo*ÇÚVî&w ©œ‹¯—Ìá®ÏÕp‹NΓõf‹ò¦Ây²àhI€§KFÓïú»fØ ÙvøúÂï»:ù‡^ðÄ£ÓÌ2íÿççŒÚ•3i»uÑŸ}Ååì]}ì]b#ª+ÎrDâ_/¹=ølý%¿7ä÷_:£X~kÎwµV7…x•D3‚ÿ«ð¿ Y²Áë$ÓèòS*$«¥»×ÛÇݘF*;ȰäBlc{Ò‚›<ÉóÂAÈsæi‘¥ 1cHKLt–Û`,`löƱîâ®*ã®7q¸¹MÑð<±@Ó×W!]€‚ð<¡áBhdAÐÆk÷1;[˜ÙXÜjÌž øJGlÈŽÌ깜E.Ó!6ÇR…åð ñÓÒC¸½¯#‡*9²ÐfäÚy6«6fâ›–Ò˜Ý í±qû9£N£U¯W›Î~q%§lšŠ¢\¢dëtÓ´­«SÙê2DýÉå`¹çŸˆÁ9Qø´­…Æàªe᜶nÖ‹jU¾ ÅÓzdÙÑa/ñ̹Áû/ëæ ˆ<0¨tá“J÷Ñi[©Íà Õ<Ö@ãe¢ õN‰É ·µÏâ1Þ°ÃÇû1Ö« èè©8¸#pÒ“¶FÚ¶QoªJÛfÍ„ù z—¤¢è´ìÉ´82¦sGRí!¿i5HX¥ëí¨¸µf±låiµê¾Ðë‡/£ÈŸçPwUµËË[`žµÓL´tiS|º¯°'´„wvk´orŽ6>`ý»½c¢€Ía²òáìá•«ç‡?¶þgr=}4úŸhs%ÿ}g¥ÿù­£ÿYÖîÏÿqû™¿ÿ7£êjÿ?Ä#Y2GÿÓÞ×Í»íZ«c‡ëo¿î˜å;ø ÿœ¥Æ<+‰ý½vŠÓ¿w‹ù³ê~\nH¹t¹“CÒJÒjÉužGƒájXµoþœ;GäN{æ&ŒLA¸³b.Í ¼Âœ©èO&㉸ߎ®¦´ØújËoLþÉk“ßp:Þª‹VOš‹Rˆ@dX¹>Ð6–…‘ ¸çy.]Žû×׃Ë^¤J5hÈCÔ`h'²c·ÝmwÐÌãWbX LÐï‘”ø¼úxßäÈn&PaEOÁÕ¸ÏBz@ö”ìaÈ2¡8Ž|Ïïsr4à²7¢HŠ78|éu',‡Bì‡df¤’ÝhÇ úvm%1«¬—×OZ)s:²ðýZ°ÝYÖ¼ò]*_,vM•B7©p]~mXÖÊóõHD‰ÇRXÆqš½ç´Iù´$•~¥v¯¶ÁØÁà‡;tœUdVÉ1WÉ1‘ä˜;óáïN 7@ …½¦ðxGbgƒØ©0¤ø ÎæÄYx1B«{¶€ÞŸUR¼÷Èü¤ü¤¡(P¡(ÎäJë,^†¸r§ÖãdÓÊ-è(¤Æñzš7flŠ3 Bªb Ï&·VX¨SlJò†‘Pck,¼MÍb¡”è0¡˜Ô£4Àkh\eîßÌ£¾#„€Ù@$\ª¸N}Fs¤á€t•=‡˜Ìì’8ÊÑ#ã¹AÅáÍ£T ¿b4`‡¸™j×?aÍ®Í_í, ‹«`°_S4zèsÁÊ7_-° E:½02Š;½N¦†)Õ3nDáÞè»m+VCžv‡íÉ0Ä×”á"Š|ë]ÎtV‰txx0ù6;2XÚõ/#Ø’"yµŽñ:PÒ y3ñÒÝ¡%oÙÝ” ¶ŽëE)÷Zçɸw×õF§ÛÞCÍüWÛß‹ø£Jéëì(yæ&/ïÜö"µ3 ­%#l©¼¶Ý6EØ‚;ëé¬Hòf·½‡mMb³ä)áËd±xoV¹vç̵˻ԔB.Μ«ŠÌ‘[÷>‰pÑ¥dã UW»žå/ÉòŠ×¶\¼ÈR¤WÙö«Ì‘¾7fA÷¼uÿŒ×=Ë[w!ñªÚûeæ &Ã#šþ`a7° x…õ°ŒöÐ}ÄÏNàeRÚ´ÄÄÔYÞ ~ /¹.“W–uY«ªVVÓÀ¼ym º†a.K4þéOÆæì>q¹h™‹¼hI|ÞN…1!@-óN·£qí}ž†N,."äÙÑÀˆü#ìó"W±~Gû#~ÿÛ3ÆcsÉónäN¤®mBa§úPéèd›äŠe1þ\¨­¡œÑÊËÁ‰gøÍKœ\R¾šy\õ?÷ùº‰Ö$`ä$}ØKâÌ šL¼Êå‘oHRO¹És•‘¡ÆÊ䙽“Ðd`Bò]Š(=Šˆo‡= ^øp½‹i¡ b>VþFÓ·VÄ?Ïúâ;pay§'<Ûøú|M]±Ý^Á;¼ õù:à S œ±rç,ÉÒ· M›·÷Gc@Ìž ˆ w7ë^ ²‘âNg˜ˆ1/´WW,ÆŠCžÆ®Ø°ùPÑ0f½šÝ¢ÔYÐeÈÁ¤xsB‡eãp ’ãÙ¡Às:feÕ=»<³/÷„òã:È4;° µØª…"90‹‘ªERëpá. €çìÈ õŒ ÞEÀ!_ÜÔSw.ãO£õe]5T£9¥À"E¾•lnø@lò°µ‘øÊ~B!„üiqÓ°m¦!!ħb;u*›8²›8¢&Þ³œ“Ý“Ò"Þý±è Î~”PÜi²Ÿ§Nö÷Å; gqó𧜇ä(fwž‹?‹x&P:°ây?ù&åÂ;M)õßè*"HòäwBl°"Êq†"”Nxµ ¶X„É P#§èŽ«‡Ü½‰^’+õ3IOg>Ì6sž¹sO]:ñ‰?S——Z-ôÀ2I\6^nç8cçžÜÅ‘3šÜ¼Ô,/3IÓ¼xù<ç‘<÷Ô¥§ø“1uy©YŽóØûG-œ—?¸l ^¬):mñÅ4ŒÞ¥Å,p[“Ód¨Þ…,â¶–¹›lh…¼u¾‰\®éš‰ÙýÖ%ƒQ¨ ?8˶DĹ@ïš2ý6ˆ‘ß gFùTþ²&*Ã~…ÕÁ/½âD£/ò¾¸æRy±D,i÷N:ÅÀår]]-׬&c7L.•1·Í$¥«{q›tçLÁÌê0Åzè¬Ò­{øŒªn$J3Pé(Õ+Õ$y­r5„'ɘ ÕÊNh,Ó²a¥Æ$E¡=äA¯Â‚p»¹ÈE+ð49ÅwÄt‰7ELx?ðïÂH;®T°›O,ÈbS’8‰ŸðE¬h£Dµš+ºdê ÍÎ)ÊñFŒ½Ý¼wo7³z›<·­Üs`C8èp5²œ~ãA[*6ª±pÑ¥YEbVª[ ³¢«× tìq~gf+a§Êˆê"š“=ƒë,këPÌßOe%ŠÞó;e¶÷;KvÊ´ýÿ¦ýÑ£ñÿÛx¶òÿygåÿ÷[?ÆÿoY»?kÿWŸ={¾µòÿûAïv×ÿ¯³×Êu¼SRÑnT:æ@0Èw%ÑDkµdæµ³w¢¸ƒÆœN›•èq»ý°ÚçÉ`š©²5´í!c¢½Ý?êžö¼ÜŒã‹§ÒIBå7ìÐÖƒÁLfÆœ“€ò0Ûšz×vŸ-KàªÒÃöf”•m¥å¬»5Õ¾–¾ŠSIïr[íR/*M'Kc¦RŽA „‰â$áRšîEš·!`;áAnÇ¿¯ú”å:ÞW<ƒtVNËT= #(tÖDâàíÞÉZÈ“p4õ}ÿ»=øŒ~,ðãL>´á—=•emÊ*а_iGVºÏ>øËî=¾ño¹´›O”þ|Pïÿ4þ”Ó¶:wÂvýþa$¦Ž;¨=2ò¿Í+¢;¶áð{¡}l EiѽA¹øÊLõ”«së× àJ!0ÑÃåëd0›õGÊ+ÇuUõeÊwo‹éùvpsêœxÁH_ÅU@ØE„õÃÁþå¬@Ó9ó å쥶œs¨O~óúáãÏÚd$Úè/>$½9—oUØÕw KráGÜ}Øl‡\ã†QgRïF¼3¾;jbq`*âÒ‹´¼b[”E»(c6GÊÖ¥×ê}²c)4×ÈëDòhû“ñE4¸j#—&-UÕ+¬DT³¯cS’víˆy,{éL„âB“»\ˆÄºêW¶Cþ/”£§U).±¯Ø¬ìÚÉZ)—Yaæ:È¥¢C™—ȃ"ņJiÛ/“ñ7ãGQÖ\<ÎÃÚ¡óxšŠÈh‚UTìô¹c¢Ò>‹/Çl£õç¹£ù΂$I'MC#C$tZŸÈckÓYçÅÞIE±ÝðŠüµ ¶Lûè.­Pg‘°8ß¡JA'— „éàýM¯|3D])\xŠÌ›º6·ÓÑ9¦)·±-í˜ GU ÖDhÒ ûSGÎäÌè1…QuR] »"ÕÉ ÐCx ¥"íävP¸Y“¡_nóÄvÚ s8Ùœ”܃Üï£ ™—Ÿ˜À··—³Šxg…\qF«¥Kö²âÍXâçHïli´õ+2b—»ÇB%éxæMv5¸¾îK{P¿3)·<šfÖ„NFZªÈ*$~ìbƒ‚ãó‘m¦õR *t¯ò¶¯sUV¶’V`-ÞÞR´ ÷uÒfIÝ˱Œ:£Ãù aLJY1HœX&%’$R‘MŒ’Iµ? IãÍÛ½öß% =¿óš?ßðGG~œÈÚ!MEXÕÑFŽ0 È; ÒB›¨*üŸ¢²ÛC£¹vë¸Ý”y±G2_,‘Ä¥iZ”od!‘:ε֫¬,9%U,¥7wÈ–ÃñNà“âŸP¨}|òw#ÐÒ¼‘O(§rçM;”‹gÁÙs)Mh ²€«¾^cÂOÿý¼ÀØ\ß.{â>M.œ”¨G³D7ÕeÑÐñÐMÐ ©iE1éE\B´ûSšè#ã+ð¿BSùÿ‡R.´Ð‹¿©¾T)\@Ùü€W¾VTlU“‚¢ð‘@œ;Ë…öÞTÊvNo•ªfÓ·¼¥Ý¯ìaTÕbËdß0q0ìh…¢ƒ(8±˜'ñ•Îê‚Ýxt;\‰Õ/ÓR'öÉ»*óDl¹Wf§X–yå̑Ù)–)Gf§4xÄàzA-^3;€ ã`bt”­ä¥ø(Á€$úôÇýÎD¸H’/ÈJg¯•dE8<®{Gdiâˆ[¼.Íðèõ®õÎdf‚(£ÚM{:@§]rË9©üü=ÁœhË;3{<&N×Þ)Çm'm`Èç'ÎüdzuöL¡Ey9þ?£ÞãñÿYÙÿ?̳òÿù­ËÿgI»?ÓÿçùƳÈßÿÕçÛ«ýÿ¤—®ÿO«&…/¯ß5[€Nøþ{ÚNMÿ¯¥3HI4›ä6"½víT`É VîBÖóƒÝ…Bäòê* a$PëÝd6Å}(-›Ì.Æ‚nÿðìÚ`¬#2él,ųy®5Î:HbŸ ´ƒ8ïÕ!ÇâXa¼`3#Ç•À”mǘ&!=ëYIŽCÈùëÎÞA çEâ§õ òSž¯dÇ^¡û-ÿiÃó¬ ŽkM| UåIrÚžQÚ¹¥í"J˜Ìþ˜Ò^¦´Ó0¥½Liû˜ÒÎ)mS2}ŽB~9%‡Ïs·ÆRÂrÙ)=0Ô_D…Û)pÀ%ÿ‹ŸÊÎÚJô&zuêL?šiÌTVäV¦R.ng´ÀÐ=ø­?¡zÝñ‰åíˆbѹ¬ Ñc5þ$ož{:3ͳ§îB†|›Ì’Ú ÜÕõ—”7eš:[Þ]^¹¦IH—îÝÔ”®|¹S¨Ú©0tã€K!ŽéΪ v§ðZ«`o`÷5çô2 tΞìœÕtïrv‹Ñl(·S¾7ÓÔ{‹Ûœé[“ 2™ÃÓó¦ “÷ÄÖú³Ä³„Å&)G(7z¿#4æ.&Á†ŽQÛÓK—R3pLzIÃo§Ž?·ãT–ßÔòݦº¹Ûh–l̆½›‹«™Ó Ë^ÜUv \ õJÿý‚šÀÛÿ¢ž™Llo׊ôùeͱ¿¥•ý¢ý£˜•ÁßÂܯˣañXöî/m:öÙ—ñŒÔå‹ò›£~ñL¥½ÛËá઀ˆ•™fPΟ‰€†ƒ¾v¡t>I~8Ôƒ±”"²Ym»ž8×bÄŠ>3·–Á¾›­7âgÌ¥­…}‡¹^'©ÜæÒPó~®f1®VÜò yLªÆMÛ‘A{,uà¦HÂ.\]2k”•Å¥k¡‘9ÕI·:=Œ˜/Ll¾å9‰þ¸µ —þT–Š .ž&8Mÿ…´GR|,r8%(N °Ò‰¿kÅSv»ï`. š ,”, ?þ%KÛë»ØÄIûx7qÞîâoh jþ½ƒPwÎk˜€4qf9ù[IìžÃTV“»|¾{Ü­Ë×Én ÜZɃZ’µSÆ:·7Ãn»So¼µn»£¼-.+ŸëÊ ZdP­‡3¨Öï‘A5{ÆõÎPmó¡eŠ+=á“N¼>,¤—p˜p)*de“E«bî‰o'hûy?¦ù]‘ºE+gÈÿ: l‡3{t->±|’i»ëé¡]}îâØ ×¢æy6$LÕ#qm8mÄ|:Ú·_Îçܰ{ÚNƒØÎ‚¨#–kÍ&/¹F,™._”ãÝ8ÑýPïS{òÌE'ƒ=óøI´jËLFkmmÐèŠâLÞÀÂÚj{F¡íé ÀŸ#‘âw¡¬1s;_¨ tÚ³]½—J&m2_Áa¨îh(÷›õHi® »YdO¬¼°ÄnÙ/ñŒ•‰`¹³m<䪩†&`€Pu§¶[P¬›ª`\ÊÈùB*ž±kñÎëwžÊžw;Õž7̓B˜4rY×AycúTž9ú`ë*îÛG#WŠfïÈGQv 4ÿÀÜe™3­CÌwÏzÙd\(âÆÕ½âxñ4è€tøB! u•ÓÊb»E‚æäLI™×O€HöŘsféjX‰-ÚçïŽ~Z1FIŒÏTyûÄ€ûAºÌjO I=טÛá0æ7eÛ§y“îø =iŮ횴ÑEƒðãˆþ{¹À³—xQGcqWì0±õPõE«ÿÇR€˜Ü·Õ@ú™ä£$Ó8_ËÊì\c“ÎY³…÷0À £§lœ¸…:¥h! S4u$«´’…Öz´æêšd­¾'G¡±ÆÒE{ÍbÉžÀÊjªm?j³ð¿R˜Ð–!âã® "ÉíÅš†;ÎlckðÖ貆î #l$þûI‹2¢²)ˆd'!Šž²ç pxWc”ïNÇâë`8$Å  À¾×pD<Œ°+gÐE–RX»'˜‹IH‘ð3gÅØ«ÀHs¦ÚEÉ&“ͯ´Ï^x5<ßXûa´!Ñ‘e¹\‰C/UÜqI„h²p8fáhÞèh‘ãŠ;ý)§&:ÀlgZá:$qd§£VmáNG«çÑ<Žÿ×÷á£ñÿÚÜXù<ȳòÿú­ËÿkI»?Oþ§Øþß\íÿ‡y$Ãáú¡'8&z¬q¾Ç¼Ê¼jqÆ“ñq?1ITªûWÝ„zXùq™Çòãš×Ë^­GHpÂâu£å¢µ¢õÈHÜ”ù-Ñ7+ µ¬¸Mò˜Ú)pÛô¥^à>Ìçõw#Á~雼Ðè¸d"¦HR<&,'Ž=¾÷¬ï¬é bÝäŒV…ÊñB%Û„Ê¡¸ íÞj:VqþÝ!1¹øøn LŽ<³)ËF·ð{ë/ËÒæ‰¼¥E]èê ¸gJÖ”õ¨0öTÎdÛ7ù“,‘mâ¿^Â=e6½/ãù‰©ë ›Îr¸nÒ‰9\·Tìu´0Äy ¥32Ší[øšWºn—F³B@n±fººs÷®î$u•ðb'oW¹tFWq{ ‘j´évs:x?R†¸¶ÛX^ðfIC~·J9V%°<ÝùjÆäÜH'ã¯Ê²Ø†AU.aÐgT§^MÛwénP;¡^(‰džŽ8NT5¯#F¾5ϱ$͉J…-‡ZyÆšaØ[« íDÕTÆ^;ó`g7°=‚Œ`§B€ân`ugy“,ÕSSXñ;“åÀ\/Þ£žÈJŸß²ú™ž—úæ¥^!@ÖÊJ’áåLç‚íxT¿ˆGrü`ãk»8ÊAþÐ#O¦›œ2L‹5ù..‡h~l¹Ôü%yg·“‹~‹BFcaãĵßÛæÃ„9V€N¸ã$³B¶|K¥wN•7ÑÊÐ^ Ia^cC¶N(YF‡¸À 6*¬Ãœ Ådý¸uøÊ62„B±)æ1Ö뢱^¢¡oc,'/tyÖ.²ãQÁp3­Ç$|;|«ÛP=§7Ý–Lv( s' fÌ” _ÔJE¢ú^ØI1[ªæœæhækÛ~yà—lóµfÊøžÇëîä5}û3^·ž·ÝH/Ö} Áþn,ÜŒ™Û–JGÅÝ`\Š™·Æ¢Ú.ŠbÜŒa»‡š¹³­”|yw+)8ÿQd+àf±5‡5VÇŠ­ššE™´ù„æ±™{.V…íY”„NY Ë6_a“¸ã\“<ûÔÛ=)^-<5ºX"”âYqÇ\3d+ G¥Z}\ Ç€3Àºž±—‰7䆂XJ †é1LÝ‹ñl6¾)Û†ùšÆyÄä_¾2»ÍÁ –ZÕ¤oÅB|)êü¶,Úô‡ ãJzÂî*ÍÐø4ÊŽ`"^À´ÿ¿Ø¡ìÐüøÅ:uˆÞ`¯±W‡ø¦jôàåÑz‚€ñðedkwQ³,!ƒfƒ¹IÆHe§"?ÈðH;··€Ãe`ÃjÁð>×Õ9Ä8˜À]Õ nq(²[ãæÚ¦¹ÚÔ©99´NRÃ(0e´ŽÄ/’aSư.g·3»B²‰¾…'?Àö¡hIEíÌAH(º¤ü⻲¼±þ¯Qªßø_þêWÇý† *½ a3 ݯŽqí ô"á­$‘ÿ*l°»ãŽg8>ùkòxºdh‡ÐÀW]Ûð$ÐG¬HÅø”,Ò,4ìõƒƒtw'ßÈÎh’˜=¥™ù+(€€bÜj c”]ÉqÝ3¡‰$Å£@?ÒŽ!DÓÜ[ê„뇮GnÅE𙤴&€ôq=ß¼˜Ýó’ï7X n(b±5ÝsˆóÐ̯¸dB’©¹IôliT䨜¦0J§$دî—$&"‰šÛ>x™Övœ ÿŸ­èùÊþÿAž•ÿÏoýÿŸeíþ¬ýmlnlÆò?mD«ýÿ$€ŽÿO÷ ZoOÇh…VQ–ÓOn'žêãvá§5þÒ'ð*àç½qx†p¶d™”„Hµ9³¥{Öä÷ŸUÑÒ¦~ÌP?Ðx"}„é²°”2Ìl£ÿ¥?U±Ó¨u„Z~e <|?ž fnr8˜à âpæÎ d{`§‡áH,_Š'oŸ¼€fɬ2 ,ӈ͖…¿S‡¡kH!ÖïÑ`–Ò[tB”•½rÁAùEîé3Q«ˆ4·‡¼&÷µT“û…'Ì ¡•|ï eO2’QÜáso2óü T¾ÇH{–ìÅ`ÜE¦hÜ=~gÄrªÇ[¬•;£idŽÆÇß¹F«œ8÷]GC› ¼6~t¦)£¿7œŽ=pÔ¯ž+ˆêM§p\ø¶mì!· ùd:½fŸnäÚ5¼`GÔ FþlQ =„ è ”\´÷ë~£W–á9ñ©¤ãeå [ÿ þR–Ëÿ  =J2ÖrB$Õy|Þ¶ºH±O`–ù·+B ><\¬’Åý"léµ =J5(>o3d£?¯%}8o¦‰|7)ˆ­ÃÕ5j§e2vðÌ•ÂqcYÊãzšÌÙ¶ôZñ̰â&ìhã.VñÔx¤ìÅÛ¹Œâ3 ÔÁDky̵qû=ìÄ‹Ìo'nZàY«UTÐFë´N Á_⟹W®HXƈimIF¨E ú—XÑCl¢~ïÆ÷u*ø2rÏpÞº¦ŒÑ‹ågÀÊÅŽ[ˆû7%tãÝ!)ÈSÕB*ÐCJ nŠE¬ ëð°¨ü8}˜«¼ÎAÅÎ#^k¿›‡*œo8øZ >®G/FÈ <| +J">´Ê‡©!èpä¨D:\”–Ëü– Å²qákI®eæ§Dœœ¢p8‡VÉõ8òÿÉà±Èÿ·WòÿzVòÿßú±äÿKÚý™òÿêV5ÿkcsµÿâáÝîÉÿÛ+ùÿ/%ÿo,Fþ¯ƒÒÄ5›¥PBnKØoºê'µoè’mÀR|%€—‚ИÞo×êaL¬ÿ« ã9¨Ù¯"Œ—£Y ãcÂxwV¢x|Äèß.^«%NÚÿÖ#DÁ´¦pXHÜ»˜ X囤¾”Í™Wæ’R¬Îü„Z?V/P²S8Ì¥H‘sÈœµñ5 %q¸ þŽ/³ÐüƒÚ^+;¤,¶HEC·ÝlÒG‡?H\ƒ…Ãó¬´â'Ö:´:MC©èLt£ÎÎÁì;‚S쟛w0AÍê eIÒXÔ *V/ 19M…rPî.bXìMË®rA¡½Àî)ÓÁ?}™Ì‰ËèË`2á2ƒ£0T|NЂ›E!îééSsI,Gêg´vÐL_&¼ƒ/¯ö‚âð·S ŽGý>ciÙBo%îÎaœfÖŸª0`ט¡7Ó:=%æy¬ªJšìFÝ„1×2=3©Vô ©ÔÓPª³\ôkj²›.•·–ÊwÓ2ã8‹-ÒrãüšYÄݬl8n¾‘iI *ýJ)œ­Æã帩ȶ&žç%¯RØÓÚ`æR Mp‚F4])hƆ“W)Ôg¨hG2­POºR8MlCÉP §h‚mo²R8Á-kÙÚY7OQ^+‡îƒC‡„ ?;aý¶QÊn”2Rû,(åQBΣܺê ¬Ö0|TÓ(‹ÊëRL<8] .{‹è²u ù l{êãÙvÎ8ókµû£Ç¢×F­N)Ëë-QIÂe/ÕSn±šêquC ëbTΣmžC™WH/T³låtéÈØð}ôŠwÃÝQ¯çËsMwLs¡éŽ'ŒÒq¿œ1iÊñ…䌹—b½óˆëL™îN¬Ú®:5 E„ÄkÒ7øýÂÜjÕWëVK?™Ñ9: ©ÁJµ8ZÖ ¨…CþåPttBŠGþ?»~4òÿèÙJþ÷ ÏJþÿ[?–üI»?kÿonnonÅäÿÑÊÿçAÞížü¿»/¹¶¶"N–‘U­½?‡Ðf%Z9”³K`uÌó6¸ÀJù÷'ðù —éËÔ\všâ]o†¿´ûÓ~orùAÔïOŒü¿öy2ŠêF”–ö$_ŸNâŽú{U³T-Zðûë6^ ´ „¿Hï(T_æÐ;t÷á&ÿyàët - §ÁµGW½É•¸¾¥ÿ€(tÛÔÐl ÌëåLÕ¤"¸ˆ°tºä>\a²<"¿tº½ù’[ØÊPÜ`žPÀ¥¯@ìúW¾„ºnU0âq-U×þa‰åy1eö¤/\’%{+¦ŸË…i1bdk©ÃrdÜXÔ@. ²h ­õhíi%p!‘°Yê€ç¤9œÐ£ Ž×ß©½¢\œÄ>TïÁ‘4¡Wƒéåí”ú$Î ôܼèü… €ï(F8û²·»}À™¡{Nڧ廾¸L¦œÏu€‡AGÓ'|üîóñûõCIòsúÒUdÝ÷ƒ/˜V}ŸÐSU*‡ÑÊõ™®v‚õ8ž£ýðï ÞcTسHlTÅÆ¦ØØÛ²äƆ‚¡AŠˆ6Eœ©zÁ-Õ>L«UQÝÀÈVU‰ê†¨Fð»+‘ÞÜÀànªB›b3›Uø=&¹.yK•ÛÚ[‘ØªŠ­Mø=`L+¶UÑí ±‰íªØÞÛ[ð;”vS¦HQ¢ ¡Ü‡ñðjŠóÒ›ú ©XŒ(hGçë}îÿ3\9ßx±]ÚxQ]㵜²þˆNˆÞ”köaÒï+%möSákmXËZaëų@„s©H_Yk†µq!SrCþ`Oœ3Ì & ´mZH ÁáÑØ‡< Í;œ¸”vˆÝ‹«>œ—}G|ÆsØ»ì#WÙ»a·©j©°‡ö%æJž*ºpÙ›â¶Á­ÅYÊmÌpì{Kjq„ã߃–ÝÞ}¢ÿLIo¯Ù»|;¾Áš’ÞÕlpØIÛÁMkJz[Z?´ûåÖ²únïlýÄÏg&6œ}®u0ص܊wÁ¯¨N ¯¢[·Š'YÞ£ŽÉпiµÏŒº<3jÈ^Œ.ЦBT¢o¥¶Ã 8mɹ>áh'!*~ ˆâ}†g‡RùÐO ÿóû•=h|—VNS!äWXbX9X˜Ðí@+Y ©V¶-‹9`¥™˜à:mʯ€°Ò°fÛQ¸•Ô†T+Ûˆù€¨€€L€¼ºŠàW 2@@xu%1õ¿ÍÄ„x|u•M‡·Íñ‘D†Í»RìÂó²àG+\$±àwEÆ àH4|"Ô)l¸]ÙBžO><u˜Í·ËýÌøQ2‹VühÉœ8 ÚÃõîÊ‹޾å0ãŒÅhGø¹÷¹?)‰ÚËd&»ÙLö†Çž#žŠ‰•×?9•=ýS‘ð\bt .`ø(ĸ-O¿¤£&/Ú¦ Gטš"yT7$w¹4­?ä­áHJ2¹¹;üÞ0ç6¥hoÔOÎFM¾I˜}èlÕOElÝy÷©µ/RÙ•Ÿá>±½Tb9ÿ~vø¿h™W óÐ|czÅíór€IŸÜÅçóÞyòÆ’í:u~ŠX²®ÿ÷çGãÿ½¹±òÿ|gåÿý[?¶ÿ÷rvæþ¶U}ÿº½Úÿñðn÷ý¿O ¿ï“¹Ü¾7Ö–âÓm=È8ÞÀ57z£÷ã['Ñ‹ZX¶¦V<×hCÌÿü‚Îáén‚ÐÖÙæt?Éáîû£ó·rG@¾ß÷‰v}lq_ïìe}Ùg§4&º—»õ¢²E*·]R–«õá@mfÕGèn z¿ýX—ë¬È€‚ ÿA=®Kr‡Û ØÛãë`ŠF¿px jaDIì»—|DÏg.¦']·m8PÙxÌ­Gs7t¸”>–£µâǧU¾ÇJ×H0ýëåà_/?þ•¡áC(TGåk10 Ìè1¹‰?v³üšÇÆ÷&~6 û%˜Ãç7r¿%z̶=Ã=f¹>‡%ºŽy/Kô“ü–覅°¹ó‘+f•âÉXäCKíêK¼Ž”¤Ðl×QŠ,Í—ð9ß]‹ßùz¤{Kê¥6éΖÜüt’»Å<–üïŸÉOüÇê*ÿÓÃ<+ùßoýhùßÒvfþ§ê³j<ÿS´’ÿ?Èûݑÿ·ß _‘#üëÖÞÎôñ1çsZ`pH‘!gKÏ섳¼Ha¬Ó<Ò4ŠY þ¼êžô/{3™íãCoÊ&}Š|@«¤Š#¢œïW”X±Ê]Ý^ÊÌCMƒ&ýë%2ݘ…aØÿæG¸ÀpˆòÊŽ€fã¸(ˆrAË7ý‡jÀÌ=½ÉwvÂg ÞÀTž¤x «æuï’ñõ¦&n‰À °NÈãŹ“ˆêÜÉ/¥Û—0qªÚ²ºi$21ÉD)cS®lþ´A˜N7¯éä"š¨#·±$æÍË’.OT¢¦¦+4‹iÉÅl(*ˆáÍ-ÇšC!›ÝyÎXë?ø§NòëA3E:銗|Ae@0ÕfùξÓ\ _ŽDÔºÒÔË ›üë`öÁ’=ѱ<ÁM;EŒ7šž£œª‡'.lRê}SuKMú×Ã>ÎÌt¹rÁ¦’ Bç~.œiÆÒQMùÌååÔxš6¢ÜÒ°å$ÍA0yC&â5¦ÒñF®%ˆ`|¿ßNûY¨?y2…³qöaŒ2j¬øiöÏûxÔ;Ï âÒŠ¯0|‰‰ocBš ÖbJžÌ6&¢LŸòöLñû˜Æ\¸e×ö5<`©DR¨Ž¡¢FJNêääÖé°= Pù¶Ë„Nî¢Ëe׬£ØÈ«œèĬw[¼¥ÔGñ5ò·¦1!ˆÐÇ[ÊõdGãÖß9«ÿã ú+ù!Æa<d &#1‚aÝÀw•;é arEÕ¶j ;u‰k9®7 > †´ f;èíñ‰W ÁÀ/gÉ”]‘]㸱T׳Ò8áÞUjî‚‘ÓmU1H[êƒÉëdwË ƒ± Îqø¥£G7@ÔJ¥R’¿Ä êmmš«Ç4I¡3XÛŠm1¸zñÝ ( âiÄœ@}ëáè…eáúKl3îX¾:e©cfY(˜Kªž”*%—T=1Õ<٤¢ô#àw£äQÕ'¯æ Ä_ß=·Tíìäoø¨ÓÇ«½æ)}´ëðѨÕ_¦Ì-hï¿zá<…†H—”‡%ëÍ;K֛˕¬ãcÞ/'ý ]ˆ ÙÄÔ‹¡‘”²È+ÒJÊHwÓU쀨ީá\CŽ0½‰ÑJk È’ºÂi­ºAÂr¸7²o½kkûˆwÏæ „ôˆðØÙìpÁbŸ˜N Trû™3$jfÒøA;â’ÏÛ¶Åü›+¨ç¼G´CÑÊÐ.Ù¤D·<,ögxAh°ÎÕˆ•Wâx‡ìÎóÉ[R3ˆäþcœCB)Õýz ebù߀Ñ[+~õ+"SÇL¸úBåö*ÊÉhœ¤•rÞËñ]¤ºo/JÚDDqc5ÝízÁšÞ´¶ÒˆM²µBʲjJ¹,Õ#Rµ©ztôÿ<ýßfu%ÿg¥ÿû­Kÿ·¤ÝŸ©ÿ{¶ù|3¦ÿÛ\éÿäáÝîéÿÎÃú¿wÇmt³ç•2ÐzÐÿƒº³Á”ä#Nôõ:ÓNÅ•¸\„²PÎü²t†¼Àóã#®¬´~+­ßJë·Òú=V­žjÔâ×ñäÓhM?¾¢\3*Ñ¡»C[£܇':ÖCL¥0g6@:@@ÔËþdLpÂÄ Ä]SSqPÓ·7J¶Ô]öM­f±µSRù[vL azìŽ_ Ç—Ÿ¦°k<ÙÓÁµ†rdÚ<èO¡'Xüç¶K‡ãt 'ÞÕ_,JdîÀ4 ¿ XÒË[TY¹³6•A¨ñ7jL®‘œa·ÏЩYÝÍ6¢ã%wãh,ú“ÉØñœ¹VY‘IHf0pxð@˜ bzËÌ ‹¥“E^½òN»€U—Ê#“øÔ~a7`ßžôgƒY°»¤û/;—ôØŸg•’Ë™Á÷£ÑøÿgïK»ÓH²6çkûWÄ̼çY€•©­JÕî3,²…TåVOM,a›×\ Ùå:ýã'îˆÌXsA€Ù]F±ïqïsŸûç7(}uV‰wãek¯‡WŸ%MµUM- ³ãªjòÄuÕ÷ÒT{=õ“ÔS?˜¢:MC½e³Íܪ{qØûgÂ¥ŠÞ_騸íŒ._ ™†{m]ÜoOZ6~žvÎ$Æ-Ó“l¥í*Æi¿_¨²¹Yé]Vùç9~ž÷. !Ï¢·§d4d³rØþÕ]þÞ–O>•w?¾9E¥Q­Ñ°Ëq0±ÓÖa·\ [´õÕ‡ËÊhÔˆ[=9Hªêòi¯ìÒICcàØ­´þ3íuõg ]Y&öÍù±bG@"΀rrôäø†÷0Vø%¨bPIÿ’¼,r jtÝMT>8ˆÚ‹(µ¢TXÍ… X¸m²4uZ6h¯ð„e#D6bl\x/í;rvõZFÃeC4¦ì…¼·c›–}ˆÙ q/ðC"öÁYö—Uš†˜jí÷Ò५7Œ©Rí*S·³N¦ßäù+ñx€£ŸKz¹¢'FºGƒ„Ù#pгsåÝX|¹š\«s‹ƒ•n]b"l§L¹Ï±Ðï]ÅTJJ;2¾^Y]éñb<¹ûô ¿¥$„ïmRkÉ-È^êQ™<Ð…ahOnE1âB»Íâ›\»J/7LL«=‘é©\+ký/¯ìFGB´/M-3®?ìvöš× "­&aÜI¡»“\¾Þw$ÅÃ’Í Ÿ‡eV&uŒòoΡ8¹ƒé®8¼öG£ÒÅÿ\à#¾|aÒ#8n~¦=bw®x5ç÷-¹I“pG' ÜWé«Rû}‰¹z¢¿¡Œ™““(8TmB9^‚”Z@ó æ¾4ÝM¶Æó`Šèã°%[j`ɪàßT±‚ç—ÚÅ“_(®î¦S¸`(±+…áÁpsøöýð`¬£{Ôˆž¼ xhlóbp S©)e¬Q#È€ÃuØjd Ð[’äXMQ?Ö±‘ðKOàˆ¶âQUsƒ”ñð~¡z¥¥zÓ“'ݶªý«/ßûÓk˜-½Éw ÐxÉÛÚ„µC*–Ek$¡Pªó61j]ùúuôƒ®&à«}È{ˆ-Ñ(P~ú|›Tö*-{AÁ5@ŽT©ÄBKn0 6Z9+/WY L¢ñ“uÕMŽG± ¤H }Z(…Ø„Ys†jÄ i£Ðΰ©"t‰> F%Èõø\“0Ψ¥2Áð>%ÚU×=JëIÂÁÏ´¹||ôœKbüíÖëë‚ÿÙÙñü«y<þçY?ÿ³¼ÙŸ6ÿwöèÿõùîìøù¿Š‡ÍvÿsѮ֫Üóp‘œ5ÞÁÝŽ;EÒ-’÷ø¼«ãÇû d‡ '—÷!‹ïC>è9÷œnî£îð$l.¼1X—¡¶»¡Ä­N³Qkœ“öiûЉPÒØJ“èJ«pè&gw··ñ}¢GïU“Ñ×Ï%ºrÒ_kÐÉ b|’Â/º®T¡Ø\só…ò±#%ADÌLÑÈ £ñÀ‡BŒkê$ ‚nÌSýô¢Ú<$Þa­qÖ8 iæ„CáœxÝLÍÉBê„ñß]é÷.ÿ=ù¾ÇÃÓ(ˆ†à?„Ñ$É©Ðæ*ˆVcQC5dQ³¶pr“ÙðæntÛ&w38¦¯‡ýO“1Iq<Óû£hn‚ø —­šR gòþÀ¼¿Ùž‘jÿÐCÐSn‘ßE¬AÑ7´9Èïø½_éó;ýÿþ-50ý©+^¿zu‰€4î_¥øù]ùþ»òÎø r,KE ±(¡( Ü;!æ[ÅwÕPT@¼î†qe’› ª ü¿±°ü´úteè@swˤËMÀFˆ‰ûàŠEûƒ®Ä­ý‡^³Z°ÐøÈ Ç$Ÿ(ñèÏšñ>J*º#ÃÇkšÄ×Áôº2c¹¢|À‘s=#O&ÑÁBÞÐÛß `?(iy+ .(ì<9 `¤ÕÎê È&¯*¡¼!aõäáèAºXåa‰‡DikÂ∭A+[ UÞ€¿!üBƒbK±àô§.¾Ç?$2û fkß#ÆíùChn#äè`o¾Ž†WC QUA \[,0DU˜³U˜§Õ—ú È !M¢¸JRN¨2V2ë?h˜xÌ€dMnáV±&/ÏS× ºÐò^Ђÿœ³‚ÿžcÁ¯)ôðtò½tÓÿoSj$äV˜I'€6©ÈAÖL²°äÊógñ†`£*½²§¢²ç‚M·4|ä’>˜P7ýk˜Cc:ì‡0 HAƒÌÉÏÿšý/õßh/нá¬x„9-¡ jÞ¯ût=Vò,ß  €œ´åz¢3Wb@ÀÜÜÓ•¹LW¬¿¿¡Iý=ƒvó¦+—M$<é.ýGŽ ²ßN<˜Øåx©Œ³ÌŠ?…·›Äc=ù*~ÒÓ6:„“Êi0½]?,)—¯_ãëà­pê*ôÀtÕfó}^²•Z#¸ŒKˆÜépT •Ø °¶ ?Ê`G\gám¦…§Ã;ˆ^t'Ð ”Á>Íq!Ï_-ª[9 h©b±”TÈ«ÊÆÁLè5õ&Ë:¶Ú±cô`˜°LÌ7HÔᙘ~<¹W0a õ„n`ñHÕ5$œk ÓÖ>Ö}¡7Ùîfp;|?»êÔ’– LÏÜú¾²´Ðñ‚yÁæ,2Ìæ^n„å&Ô—u˜…ꂃw "!Õ 1‰9к†Œ0p¾"ÏñŇK ´Ë\”è­RbWLg+så ž áN„—In—Sà8wq²=bøì\£'ŒGP5D‘¬ö2ûØË0Ø3½h6@*K˜¹,0o–Qš0.M7{˘ãxeéJ-ÓÍÓ2Ë)hÓâ)m7A#§ÅÙ'ņFÑÚ#o9´Ë!ÅÚk~Ó¡r~NÊÔ%Qe–a>Á¾v7Ä*½áË<.Ûe”!³œ̉YPÄ…Cû Ñ€½K‰0AqÐ29üCŽuøxúWŸ•zBCɈRÉ8fcð»E|öüÆÖx´Ø´K?¤ò¯àwxÍ„¥Š¤”ïkv™¨,Á¤ƒ– xÁ`¢ÎÈR’ÊÊÁ9îÓ`ŒœSôäafÉ0™/ü®ÛßáϦ˜Ù=áPÊ"°„ 2íY½Ìhe×bdf!~; µ3Z(ø†B3ئCwõÊèÓdJÛõfV$»[t`lo—öv‹$ÜÚúy†.iv.ÝRï°Ò]#ß¡l¦.<à—Ë[õ­$ÝSûðÒ;¥¤È‚2³„IÁxf+„Æ#ÈáïijS;m¶*ǧ½b£\¹u ý `[Î6½¤Cð’ÅËmúߎ¥Œ¹íjy#ðÆñwúÇ­RQ¸NrÇFò:ipXJb1š±Ô¬~ÙîµBw“¦8‹bÑ‹N§Qk ¸StS Êy¥ŸØYL˜ Zÿ¶;J½FG, Éh¶¬Í‘Ŷ'£]_ô'´Úî¦8>ÞëLS" WP¿<µ9˜ºÀ³:qá×Ðúë¶õ×ãWI™E)OZ`fÙ=±ÃXjÉ·:‚. ÀʉÛòi[*=ÆèˆhgD¿½£ßÜ–P;zü®¿Ëâw”oôv€ßõÕ*zÝuf·«g£g¢6,°"ê$ØbíëÉáJO³›'MKraö"þœµˆZš¬3§j&z‚IÅ :G9õd“Ji&jIϨwb1ñî*f®æŒ“U1ÓÂ:!ºã†clÖšóSl’Üf¢«½á¦-êACñFßb‰dÓê%"Ź Τz†²õ ÅâE¯[ûÐV7Õ,îÏÓ^µ^]ªYÜÂ54S7ÃY6R~“Ùˆ•o£JEãÂ4Îè1“&!A ø%¦ËL"÷^Ü‹`@i&1Üz®ká”m°aØúB4 ž]èzÍLØÎ\À£Ó;e2ÔQ£ØØ( šêf•!ÕWô˜P€KXƒ^Â6â<’Nœîì‰ÊªåV¢Ù]n¿ºÜyu à(Ó¤¼¤:‡i)`<¯ M YpåozüªÍÊÎÛø–tçj~g´æ7ò+Ñ çï€Píw3¨VrìaB€R3Ãù´ÀϼR)•eÑD$y<ΩtÇÿ¢?5"îàNeTë#ÂÓ¢+ç8#}KMð/5‡Ð’C¨äàªC¹ æ™tK ¥úâô^ÕHèWm3؈`œÛ#WÎtÏ4ß—Q*1•7"ìh–¼£ÆeõóåòœC¥ÞaÆzGyÇ5Ÿ7©æahØ@±‡/W°Ÿ›'f¹ˆlYÁÑÖX˜ßbÊå[Õã1‘¼¸(¹²uÖ²¼™š’VËú®.²]Ë®³“»E´Aj"b™íË:Í0okcÃ,AÒ0ÑÓÅÕݲÜÊË†ÜÆ Ã8Z¨£i¯lþ̽¸ åŠÄÖ[#–ø;Œ–µ¤±ÇÕMærLäÉ`Yõ#ׯÝP‰›‡‰ÿ5H’MG®[6¯Ð½µäè&\ {l(:ú«5húB{bÊöcËWâûæjù;¶„nV[ÃÕßŨSR–~@ȸJíp¯œC%猻‘ž\þiœuªH¥à.ÀÝ·´.#À›Z‡ºp·µ\ÍxØŽõ˜•¸‡ÛHBó&ÍøÇµJ<Ô G9'bp€b#¾f˜ƒO™Ý„²%- Q± ‡/¥ÎŒeŒäŽ4’Q ”2š9ÕF%FI#ºc=¥d<—t7ÅÎfÔÉú’³ÆŒïOÖ¨Ò7æ ½(,±/!²qÓŠÓM¼ÏÉŠ ÷¤j¹‹—$ŠHÓ£f[)mjaü«Æ–C¼åp«l%ÍTë­`µ‚¯ ¤… ¿JÊ‚™\–• ÁRú)|p™­D¿À-\NVRväÒÜ_^ÆSÍ/3ãC'yõqÅJ^¯ìEœC>gœð—"£SnɨûIð`WÁÅÞ¬q S¤wÒñ)ƒ‹íe|¹OÎ9%wQm]C"–‰&@”úf‘Ú)õuæ´kwâ³`ºÄnUóå%ƒBˆ½2©`,5OÊåÒ@{G.I¨\'Ò†C~ `ܦsIÿl;G.‘’*Äã¥a‡’Ê$IF‡‘òÉè’oÒŠ²f鵦´èú¨¤«º‘Re>©ZSY¡ïY†IÖšÚn¥ º,ú–®Ð·²‘Œúyç˜?÷PÉݾ{¬±l˱Ö-w=ä@È)q2†J7cùFK÷ž£e=åGM¨Y–!¥:âhü}Á“Ir:¤?"ͬƒ¯£t0Ó=+Ê8 ¡8Jd©§I$Œ€økºOZäR˜2=Uæ“}dþÏ«ÙõÚðîí{þ¿•<žÿóY?1ÿç²f*ÿgHƒÿswÏÏÿU<â$P»è5~=Ô˜@kgõ9>­½|„ø$_ðžsöÇè {Ò¨D³¤!ô‰¤¢YºÀmýK—5ëøuËV l…Œ´Ç¿±Ï,©4æf1µøYæ!Ÿ‡©ËsFçˆÓ䡟ÿ”¸0b|è(̨îÁ¢Q¦ö”Çç”ÅÏÉj+iìÿ™ý`±]4¸SmÖ°z:× ä3…6A:Ó d3½à<¨0 ¢™’‰QiDKª>¬M¾Uw*:k"ߪ;™\D¬`ˆÍ™Bï€nÿ¬°¯ÊÔ«h’=/û*ipÞшt+ki-ŠZ:Kao½ÐØ[•\K üý×ûR¸ÎÅãz…­‘¹þš‹Ìõ,®[-g‹"¬ÚŒXN!ƒµR¦Æ¬›‚tS¦L…T"ÖÔÜŒ©5Æì*Xz°œ–ãÁ§>rZš|§3úböñXö×þ_H6ÉÙÿ[×F‘ûºd>[{Ü¡#uìÊ´ŽIܧ¸“t:Ð :Ð l@AÆã$ñdÁ€4W-dž¹2 ³eº3¤+^Ž !t–y8G–a®,ÃŒY†®,=‡­ç°}¶QÒ_gædª¿/¶Øý´Àwð¬LàPAûîz0N£GSÊR7;ûB#•Så½ð4?/—\ov‚xPˆëÌ!~Y£s¤Þ¨¼c\¡Gxø:.J?ö6À>[ãù;‹bÇš|)vü#Ææõ»x¯ÍÁ»ÖøÈw+\9aeAwëýá˜ôØ­÷àELkË2Ÿ§¿.'¥’=¦§Ñbgv¢Ê†y*«»ñü¨º¡Z]õ"ª­pgñˆùY‰æj°l”Ó³µˆç‰[oæ6èZZRàŸJp–x^QwüГpÔ ¬Ló´Y6‹ÅR´5DtÃã@Ž¡`mˆ0nˆðÜ Ò©3©%B¥%¹["Œ["”["´·„tÍÍ£ÇR`lzÆÒ<ª1MÛV1âjà´t …ó½º0J¾'@ÂÅ[ _O4®ÔÉé{ïé'NLëé^bW÷x)„‘ÿAÏ‘"K$<èm¨S n&Øòäd„þÞ:u ¤=ù4@º?䨳ÒïõÔTÓ$sÌËæ&ÝćcpØ; —À[™°ÄÎ@,'1ÜÐâÂÜì¤ñà\‰Åé' Ž+³Ê2ŠÝ!F쨥 ¶ï¯Átuz)Hòš¼ç›=Çôè­t~ôr‚ôÒh*-3Dˆm[‚~”ÛX¶Ë8™`2—Õ*œ˜¯‡×ü¦Ê†$#K„TéAúj:ü*ÄqØRæ¨ÿaòm`¡o|b̈ëDŒH—µÆé¯‡= äæ]¸xmdˆ‰Úž#–twkÿç½ípoÿçŸ~ÞÛ iIq¡Ù֜̋å R„B°ÓE ‡‚Œ’¡N±Ãe’€DP=,ë¨&–ˆPŽTb\T¸‰#—I$syº'sHÚÇ;׿èàküB¨™EÞÓÿ”Ÿ†yô샸ÔuNÇAdÄŽGØs²;Ža[h\"á✃ÈÍz%Ì|Ù ŠC œ“”Ñ™;!¦¢\Ã%7©®bCefDˆ Ž„ÞPú®K€a€7›aqIµNÁû„Ãðr@5PXçSR yjaBjaÀS SR yÙ¤²…¼laZÙB^¶0©l(XyÃC'$ÇæÏ5¤Î÷V1¾S Þ¤tÌÿó1 rÁèf-WH¹`B ´Ï ±ü×9+¥`=)-Ö¬›Z&´Iõð,IKxx¡„ŠöFº™I³¥†R¨?†¹§R§ sõF¼Ü”)ÎÕ`Ý@ ¥`ÌÆL*RìÎA‡7bLO±kŽ:¼¹Ørÿ³U”4AE¡§ÁwŒû8ïçb؆|ß'oÜefò“|Õkv—Y½H‚‘R½H"’R=ðMŸ§z4|AÙÐåÉ[ ÜœþIç÷š KŒ’+–@Á„”ãIÁ$^xh#>ð7u™1›š¸ÉZzÞü›ZY7´ÅEëHKÎ(T°äì”fYr†´œãU 2-PRÌ<÷jî2é}D(—`qO7/4DºdI+^LKß“ríY³]HÞ;jÞJ ¸'"1D)î§ÀËzG ‹}g„å½£†e}§…¶›XØQŠw£bó©|˜Loá†ÚÿˆT9aS.Oì¸ÛÓ€Ö9ÙÝœÃU=§‚ãpÍ{ד¾ :ß²F\ 5N#¾ïùV æÙ~m×ÄB9x7P¾…I‘q¨l¨"wyµŒºýêêîõ¥ähr7|žŒ®Sű³ÔóNù‚! â²1s€Ø–»Ì,Œ¾Ühnq¤´¥ó£DGDŒÏŸJÓFMAC')›d…4φcÆÈõ £n¾šâ•±«^Å¡9©®üªÉë«H ¢‘⮡ÒF}I† ǵnæú^ IÀÿ‘ @£ÝIXL,7ä©ÍÑhl+ÿsý”Ãù¸(;i‘£C,I‡©¼>.Ö×ܰ߬(?óÅuÄ¢zÉ·ñhgè¤fwCUteî¤Hx‰‚—ÝÉ1¤U.¾µ¹²¢è»k‡ C¥µ“…GŠ:RhW~ö¶|µL]ïÕÎêÞ§…!zL[ð îÙ<¨Zò‚'×yY ¯).[y<ÖÏ YðæŸKs,xMcÁ ‹Á[ð`3Zô‚7ÿ®4ׂÇÙø̽à5­ ^p¼àY&÷Yðòµ³C̬'냸Då¼=—èÑmh®«çµ2çÉÓ‘ò†üíPþÖí ƒ‡JR!$•9 •àJRÐnöØ2.G;ÜwP¹30m|èíèë°•Ãk0ºýAfw"ËBÚ—·“¯Âð M£®&Ó13Å¡kJ°Á;˜&ùz2%&··“nÒ¤„ 7D*™"„FÒP(@¤x’†"¬rE‰–¶.ð½K_dÊl¹1™U6rPEä[ôÝP§ˆ¼6ªünÉ•bCu¨§”¦À«P§u^ å·z)¥}2õ C*Ïk]n§ÕËV¢–Ùü¸¾9ÛßÙZùÚ¿·¿³GjçØÚŸI‰æéÛú<?dKͺZ³¯º1&Œñ\c÷Èü_ŸÂÑÚðm…žÿg%çÿzÖOÌÿµ¬ÙŸ:ÿ÷öÃ}ƒÿkkÛÏÿUT„m"ÇÉc hÛéI¡Á õjÉ”ëEF6ŸÍ J)¥nÕª¼ŸÛþ GM6(”D0ÈmÛc˜²´YxÄž´Aˆå¶Ë õ¸'R܈ÛvÆÝÖãÒÅbÇø;·ýÍ®Kê“C(éxUòß½^}á« Ìdzú™ ig)rWÚ|˜<ò5Tc<¼ÒCäLòqx@w'Fk›5ð”ð¥<Ê£~JO¨ì¢¨ÚEl‘&wš ØàlGg‘õ\4,´Ìi›žÁ/$y\”-íÍcž+Ûh¶QX©4;[B„)•¤?aéPj)¶*ôÒý×j¨p¥ÜÀÎ\Ä6 ;4ù8ܰ]åÝF±8É¡T=#и¨žáA?WÁq…ïp…³· û:…§a]Ú¨:€ô!í’”šœÓZÚF"ªÜLgºÍ°i6iyãÐ&* ÍMÆ6ëtú¶¡½\lX/ʱAo&wœ/Ôp¦¢eDjT:>,5y+ºÅ¢¢k#2NW,ÐK6Áèqý%y)‰óJA"ˆ5™f7-M#Ç3™ó™6=Ä!˜t*@í Ò"ËÕ Šeà5§k&-t‹uŸ,Ö®”«¤eíè}é¬ôXf颪JàúpæÁé‚mé_ìþ…h@¸ |‰ÓÐTÝQ]Þ–O,Y<Ÿ Ñ;É")9!¢³ˆe-GÂåxÁXµ”àïJÞ€ÀL töyøñvŽÛ@•„8p¶"ž30Šñfƒ[é8H/Ä¿Šì”d0>€ó€ì‰á´ÅÂb¼ÆG3sQ‘Z ƒ ÛÌQ¢D"þ·˜Þ ¥À»PÒC‡[–µRV¸ÓŠ7O Q–}`QŠ»òâƒô¼Ø)³£ÜéZ#ƒâš)ú‡–ˆ4ŒÀñPu+ ч±üJ_,MbO}f³›köÉM¾ rÚÜ>QðÆÌâÒY>³è7©þÍ/kë!Sæ§¶Ù®bn佞|ïO¯³Mj.,T§v¶y2?v¢ùÑÎ2?vçMooKðréÑ·»b}(A¡¬« 1׈[v ä®c0k¬®S{©óºa^C7Щ=¦S{œ4µap¶KJÿ¬zjË_œç7¼§š Þ“ú(øŸÏk„ÿÙóúÿ•<ÿó¬ ÿ³¤ÙŸŠÿ vBÓþoÏóÿ­äa³]ÃÿõPöÒh‚ËppÒíÑ?ÙMÑ©9¶ ue˜Ïa|Ž«@;´­í†ŒdæG+]¢uv²#ȇn„¥ywx„ðøÂ0+ÃÑdƒ}l1reøyX „n< m‘ ÀÊdØâ)fxP)GR´Îi¹@lk5œ“AõfŸ^eP§z+¡8ÿ:|Nîfx©STWy3õ?íŒÝ)GB!Ý0ÈàÏ«Á×[žžœ‚ Ó¦Udíz@›³ý¥êö¸àAáზ~´QIÛ†lý¯Þ¢fo¶Ø«7Fc”¤±çÐ}",IcÏ4¬í¹løèíeõV|¬ížºâ›¯gùÞKÕxk-¯ñöï'®ñN8ÙTÝ0YÚG‹V.[•ÊIÊó9´ãNµø:+¯Û€{…M½Û¸èËtÍt;§ +,ŸMÛ¡ ¾½‹õ¤í-«¡‘¦…tÍx°n Õ2¼¹—…kR9v¸º¶—6emïOª0›¶7E¡Û>ŠÿS•±†òJ»åëÑ(_¡peÙ-@·QcHãøkÌ«\¢'sž†Í_NªžiŽÙ„Ç[)SÿɲýX7ˆ¢y‹}j#«Ñ2STJjFš«31MźÓäŠBX³tkkG³ÐÆ‘ (­„DÖ†dÊl7» ÷ž­?E=d3&ßÏQ’ýì%ùÉbLŽóæÔ-‹²å]d `½?Ê:E‘*¯P\À7YƒK¦Ý̲šŽNç™Åª:d¯î«P9Z¬Bå‘=Šþg®þÇûYÑãõ?Ïú‘ô?Kšý©ó'ØÖç°¿ãçÿ*6Û5ýO3\ÿãv9XoµM¬òu:Ñóg臎l$4¯®hi#›¡FɼY¤ÓFÂM%gäMdø™›0RÅc‰;o`ýŒ–ÇÜ”e7»Ÿ9²-Ûý= idku¤‘€¿KdŒ¥ÕEîy#£¡"'1Rô¸ÅbÐsDÆI¤k—â™›#²å9"=G$zD÷ë¹"ëµÓöñ»âÚsFÞ‡'Ò÷Áy"›áRx"[nžÈ8ЉҮÒÁC"‘Äõ$o/íÿô·ê9FìÅ’'[ 7$I@QCŸpuÅ1Ô\çI$.ÚI3YMC•†’kؘ(Q*žŠRÐMÒÉ^P&#©¢†É–Ù!ÍäH2¹%Ñø-{PXFp‰ô–›Bp G÷j*V“BD(iQZù.‰ ,'*¹eÛBn™Ð$ùÚPÏÛäÇ4«e2e‚s!@qÍÇ”I3l.)³>gÉ/{Tùïë"ÿÝÝòü«y¼ü÷Y?²üw9³?ÿ¿³„þßóÿ®æá›³&ÿÍhÂéÅÀñ³01ðZR‚6»ª4˜óš-LܲKƒO2HƒÛ^ì¥Á_¬1zip²4øéØHGO56hy#ƒ502Ph]³Z¬›Ú Mc°ñÿœÖÕÈb ñÛª NèÏ'pV‚ãR MƒbbPm5€TÏ.À¿Kª*ÿ¼€ÐíÜŸq  ÎßßËšºßÎ`tJ·«Œ®†µ9ýÖ<·2§ÕóžÇ¦´"dWTT‹àÎÍ6°»±ør5¹Æ<*:;{«Í®íäÙ%w –ù½«”JAi[Ç纛ҞñäîÓg<8; I_¬¥Æ’½T¬SxÑ¢ñ ]@íÉ­(F\@h¶Y|iWˆ Æ¢+==è©DÌZìR5ãé‹Ièùƒv¥I,„k;^¼æµ0ƒ°ñƒ}Æ}fï#’Sè•6 Ë,ou(òoÎ.¿ &w$é¼åžÐ*ßI‡Õøþñ…ß}@žó™6ðˆµ &F¢G³ÛÏ“k¥O¸LÓ³Ô~õ~ ªZ*œ>Õ8lBS·ô5°ÅààË—H¿¤ä¥h]OÔŽŠÍ`Nô®Sb£ÅÓU¦ Ç&ÖhKï¾WQ¨'WÔp5€3·è©×ON x1õ€:Kptjã¿'øo"mb{ÄŽŠD8;‹/„ÆDZZçp«›nŠd}E¨ŠGº“ª*5£±Ù¨rwgóŠ1ì?Ý™wV6`£;ªžÀã©@– …£bsøÍòõÁëÏé.IóŠ9˜ø½É÷ïÃÙàe¤H†3o¬Lvn ‘gâ.á í†Yk®ˆµð´°éŠx½üUIþ²6ÿ÷Ý'0 Bÿ" ?„Ÿ£ú%_ª{«Ô(5ªÜ[ä<­ ×kÓñòEÏO? îV½«mª6hänã/üWwÓ)\øp$9ÉÃVÕZkkÿº+ÒåñÑk£(êÞ²ÙtñD6´ªã‰¬°ÇoÂô´#vÈʶƒ0ÐJdh5²Ó¶=ùlGO ü×õ׫ÿUýÿ#¯ÿw=OTÿçõÿÏû‘ôÿKšýéú:ïMýÿ®Ÿÿ«xø!AÕÿw›‹Õÿ?î¿õWäw›s*òù2Q—×Ó¶¬žÎ­ÍoÙµù’*õø.%~·ùø•ø±÷@‘öÃhòÛ+Ñ䯥/›Ã Бqž”D•¾œTƒÜ*}U­!¡ÒÇýEîªH©/'àõûsé÷ãÉúôõûíœúý¶®ß×ç©×ï¯)‰ WïóŸæSï+ª}¡Áw ½VªÚaKøUûËR¸Gî³èéÊ÷ùsØ6fwßæ`§#àA’¢fóÎÖm¦xg“So+ê5]·hÁUh†y&b&”Ôv?9²¿'÷ ¶ÂƒsZ¡÷Ä´åÖ càxŠ1ÐÆÜ³Çdè#²&v*´ Øe,¾å‚È7ØlWUÄ UpSŠpô¦šYÐ&%7º …/×aÀšß1ˆÔ–aÓŠ%°0E- 5á ºI–Û0D€{³‘Á¯Ø0  !D ¤bªý«/$PÃ!éÊiÙ7ÕS»ÏÆDx\ÃÚºÊ逆 s$5X66Ñ’;BŒSM*Ôž¨€¸²‰Õq7VqÞÑÀËG D4r£f ðÙ'Ы殄> Üè,¨(æÁM~ü.ˆ(Æ:Ñ1¨ ¥„u:-]?`A·ùx€ªþmüÿíní{ýßJ¯ÿÖ¬ÿ ÿ;Û;»úüßÞÚöóßæ5ýFïì^ÿÿøôÿ½%êÿÙåq ¼2…ñ%ê‹Ðó€Ç®“ê¿gXó{Ýÿrtÿ=¯û÷º¯û÷ºÿGdÚÚœ zýª—ºL¦ýí5í$H·/ÂÕ›ùw×ÂÏß Íü×WoŸi^¿N*øô>"k¢‚O7óŸK¿8K0ñ/¢Z~œ¦ŠbÉzÃÊ@ÖBŸÍÒ¿mµô{ÏÍÒ¿½t-þ,ý5ݵ0øvŸq I3Ϫ»G¾}ÐÞŽ¤¯Ïhào«r;2õÏ[yÓÆ¿ˆ# 3AÀ"4öC‹Ü©¨Ç‰Yö/ɺŸ æ2íO4ÜO!ä:i 5ðÏÚ§kžGÑÿO×Çÿkàù¿Wóxýÿ³~$ýÿ’fºÿW:ë û?ÿWóðc„ªÿïyÿ¯ÙŸ'êÿµ§ûeÞ*ÀøWÛE» 8ŨÿI"üïyÂÿÇCø_¸‰hRiÿWèuuŽ7뿜L’;Xæ`Ùƒl3Ô»ƒ}î`Þ%¬w ›IùØ{ .aѺg‘.a±eKĦ°˜×%l»Ô’¶K'Äæ¶UjoÞÏ5,h¤ÁC‚øQnD‹»Xn%%¬Î’Øj5§¦­ÍZ…Ø•®-6Ǧü kºµ:~e‰²(F⎥ÓêõÕáëUõê**¡¹vuÔgA-Ñ¡+ëìE§ m.Gó¯txæ•ãåX¤‹×žwñšü¨òß5òÿêí¿Vóxùï³~dùïCùÝ£_¼ý×Ã<|/×ä¿Þÿkîçiûí-Íÿ+ŠÏíþÕKƒ½4øqKƒ½ÉX.iðS3»·;Xo2Æo2Ï2K¡Œuë-Äd¬ç½ÁÚÏÐGk^šX‡SršØ^¢¿]-õÖ¢ib³9£•ÚnI4±½õõPûT]Ñ:žwE»F6júˆ¬‰Z:Ml~W´ssÄ¢~ò hÁ2Ù¤µ%Ó»´–É#KÖÂ6-GlÏîoö‘pĪêiåì5ˆ;Vv0›‹8VÑißÃÍ,×ÞǬ±¼V‹u9›•A6n¡ÄW‰T¥Š'&ä&ŽUMÍR¹Ÿ«Y¹A3[¥õ"Ÿ³Îšk]î®Cw¬(¨(¦Å5n¢š È<°m} 0|š³áí0Åí±bÀ[é!ÌÕzç‰VÑÿß®ÿkzýßJ¯ÿÖ¤ÿ_ÒìOÕÿ‡;áÿu{ËÛ­äá[µªÿ?ïÈE§yŠ—@ÏÿjWä׎*½JM‘ŽC›%È^Qj-ëø×HÁ®ðÂFŠ}+ƒ†4VðÛÕøŒ¤¸Óã¨]ëíu–äèð¼W?`Å~Ä¥g¨—ô¸ÞÅ+ÑX¾qg°E#|3 ¯3ÇBü z~LˆHºPÑÙ¯U D‹v@.¾~±ÞõF(¡©5èÌÞú‰>xb ð‹–G“æÑœ|_hùÀ¬Ï쀃e*ú¿E(vlÌ9µ÷ h"],j­f)ÜÛLá®ø|Š÷Ñ =JW½·çѹ·‘oFÊqùZwy¨Ù)U÷í¢Àt-?k2‹<ÅÍk›I¯Å?ª?£ÏØ^¶Ä4…ŸIÝ á•©“¿÷žŠûóµàœµö圳F÷+PæïýY¬Æ ³{üvSv0cpëø’¤h&??ÞÎq†¦g éhÁý2Ðc ÛôgƒÛî \ø‘¦ç„.'r‹â<毆ð^QŒÛdû²^”ÿ-´zÉ–°4p[W¨Zu§Dh®R²|Û)ö‹r¶íÈàTêºwü"NºPð0½™J5)sºh!ªLÞ¦iÅUâ^c®ù²¼ìA‡ÚAuÔ±S邆Ý.WÊQ2:4Ðdž—›6Ûtùö1)VÖ캥¨iœL‹°ÇŠÚŒiEQô=GúlUsk´¥Œ‹ô?]Çž9`ÊjÅT¶KmÀF¿Û°&ì‹sÇq«ÝÎ=K¤¢ÿ» Gë¢ÿóü«z¼þïY?±þoY³?ƒþo?0ø·¼þ%›íªþ¯¦ÏõCºW÷*í³¢Ã¸_jéè o&?YÍ„-ÚE©GD_ª-1íž…[× ,Ýûké@Cù÷éPH­™r[+¬x5¼}¨W–WôW¸«Có°+ v¶|o¿,NKq^½:J‹U3bÕhN]%N/5'Œ˜½„X4'…)ºlÄ;°šñ´Ìœ I8ô€rs½ACh]…겊î6ß–Y‘"Åí¥ÙdnN­‰2([10É¢lEh‘]ÀcÓF0Ò&ú3PÂ÷’Â÷8ì”Fa‘¥m)ERÝ"lh!kqHȶ`Á­n,Ψ¼¶£òZyuŽHu홤‚_4ä±W”ÍÍ¥¹2‹©žL3h©5ƒç<ŽK]Vóy-Ðu´„xØ<Õ,Ðm~K]ÎJ+0Áo&×ÃÃØNBlÐîniÆ3Z6únÂT¶ ÖŠ't°fªžÔÉJÐöc±j‡–•T¨}òá'j‰ø mû´Ãj¸¾ó}øv0†’u_ÕÄŠÉþª½ÂeŒýõmý_+cB&!ANÒW ÞÅ| í uÿ*f‹ÖÚP‡[N¥õýÙe×Me¢¬^–âù «Û§°a'‚饌ÀÄm,§iø¯›pÂÓ:á‹UN»”Ï U:ƒ‰ÌtÍ+f´…®ŒuÊìrƒ bþžur‚_Eé L²4iw9×EŒP‹m)P ¹èªºvW2þTU¥øJS×Å©1E0$iª¸y z¹Tܘ¯©™¤¨r-)MC žb6o˜²§¨Ù U¹éó´›Ãq©¦£ï&Ôlߌ\Ëjtl¹ú0‡º™ÞO—Ä2Œdîq6þû„k–c‰Š…}˜in;ˇĶNÀÒPª§n„`6)}ß–Þ«s£žhQ-j<ÖM·}R6ä™§dØjÈóÕ æšáxÉ—Š¢å¦êµÐ¯?›á-}†7¶!C¬ÕdÞa]áÕrˆê*Õl¹DÌÆZ.¬M,¹&‚1k²”•ÎÇ k;ÍJXüiõ±„´p륋¾WКÞ]09,ª9¨¿ëN™~™­°b7gJQ´H ØÖI$ >e#Z$xd§¦kÁSÔªú¿µ±ÿÛ ö¼ü%×ÿ=ëGÖÿ=”ýß^hÌÿpkÇÏÿUÌ¥Ì`wú Š@eüØ´THŸãš³ŠbÒT‚®NQ8d*<§’Ý]*¯°¤÷×ÍL#¡™é±žéãT#Z4ˆs(†ò°À ÌRÑ%Ø´èï¥V|X#DEÿ÷a}ôû^ÿ·šÇëÿžõ#éÿ–4ûÓæì¦þoÏÛÿ­äa³]ÓÿU{òëa^´3iíû$<Çs†²I¢V¯ˆž Õ0u{Krº _ã#ÖfàY„ ­4Ÿêù°†š1Tú™ÃKÒBÉ_A8GdµÜ Îu…âA圲…„óvX¨ñŒZuÖ V³V{­:f­:Q­Ž˜ò†:†ƒ)&ˆS"äÕ@§‡¹|wXR˜Ï¿¢WõÆL^å \Z> ¯‡ýOn¥âýõ vK•—¥ÌzD)…¤ó䣙[³„WîQçü=̾ÒwÃoƒÑ!µÜ’ñ4g›*_Œ5&9ÿ|7ƒW±cE…ՠɥ—',ÿíçþ­tq+[çEE¢x„VúÜÿ6 @9Ü"9'<é®_¥EùÇòÅÅrû…éIXÀ¿»ÃÿˆépµaP(r‚ƒ¹«•é ÍiüG‘È7´éiVïâ¬ÞIEúEw”Ë”¤5ÆÂ’,:Û®©Öv;QŽè»ò=”ÓE̤'¦j©õÜ{™b¢¾Z(µr)¬‰¬§.ÊmÑÑ‹‚‹…EU]”uÙj =-õµ67o­¹p=àd:ü4¤‹™ŸçÌÜ{IK¤®ã”çÚ­Ù<÷Ía^ewº2 µátý§µx²Z±¸Á2Fÿ±!¾å¦Ðû7'‹˜¼ø‹çª]ÀÁL÷¯&¶6¾ý¥x{®FŒÈKRËãOÑiÓfÓõßò0RÂÆ=4<޽T}8¬$¸K‹æÝ2ã«“¢/—“‰O¼¼–S Ÿ%j×µSÝ¢´ër2¸ÖÖÄ’+wøG¼ ¯\ÿØÉ¿“0'ª3îv2êD÷Ü­ÕåôW‹Õ1Š“rœæU»š„`€L/’ŠËW8) ì$ÒÕÁz•5¯_žÒü©SšgÇjT:æ?鉖a6g¸‚ݰDðh›$Ú;îO…ÓŠ£f§*ðô¿ß àX3šñV³Ë>E3îv0¾`¸1œƒ éa'RªÝ “pš'áEp“e¾ßÄ[á{WÙIзn>p |ÿÍi઀MDPÍà5ÎÍ‚0òþž]ãÀûÁ›ðéäǯÜc€Wˆ1.)€à’ˆ10-'Éá÷ôð¢t‚ÝÌ"Æv[êéѽ-]$N0• LÂ{)ÒK™lcŒ “Wÿ·\´úÁ¶:ˆ³óê·S\é×¼í,oIœŽŸ~ ùôñõúu¤4AdöiôJºûabALäÍW¢`Ε¯†ºpeÎjv¦…¬ù.°…ÌŸL' ¿1ïáîòGQ$ÔŽžò’+´ªkàXÁ¶¯ÅcAÀ©sØ€1ÅP¾ÝOô6Oó$•üžë9€üž ßè­îB­'LèÑ&ÕM`nÏU©¿uJ™å¾ÍðÆ cøxr€ _5Ô ±Omë'gd+‚Žk”2S‹`™¼ }AÈcj{ÅcvB‡À //`–ÖÅ Ù½dC¼“›‡÷*&ãOX„â`í—Ž¢" <ÇlêäšMîÉÔì*pþ ³)W¥þn.Ï~:YzSŸOä*ÂÝ›¬Ïï5Ÿîç<‚n˜O‚FÁ~^üç®çXÑãñŸÏú‘ðŸKšý©ü/;á–ÿéñß+yØl×ðŸGöL|86ŽÊeÈ‹€Š«­EÕ­ÎÚ_ò"¿þP6šr‚# ’µ±VøÌÂÌS üQŒî bÁÈÒP†˜ƒ“âUŠG÷çv£^ý€U‚!‡£ÉûØ bàðó0ènT- 8WË\Ø·gLÖÅ‘,Gi9Blª?ˆE¸OÿfÀTÌ Æœ¯ÓÁ·áän†÷aE“ÿ‘D>Àô˜7Þ%¿ŒdðçÕàë-OONav÷A kÙÈ= ¶ýµ‘„å@B·q¨|ÐúÐV‘þ 3Ö@ç–AT}„mèCÄ•Y»È€ y2cðŠÅø€×Ò $Ùbµ Œ8@~¸^ Ìîh©0;VFm_t*+¥U@]zó¶èú›·KÚZ­CVA^wÒ#‚×yÄÜš!æòáà§àô55 ÛÒÂZo¢µxi„|óè6n# LDLšpqKA«=ÄÚ£Cªµ;Á•à&=œ6òlýAgËa<² øRÑ^†´iMèè0À·wù tˆ™ J}0:K—¾J¦Z2`fy¨–ž úË¥fÍŒŸÂ•™}¨ C™š ’udMRS™Z°CdƒždâË‚­' ˆý}dïn¹-‚´r¤ŒÔŠ·¤EQÓ¼£®ì›gV6Šª¶žƒ•KÍA+}tÊ£8jžn(7NÒ¨3î%&£J]”d½ùÑÓЛ?•GÑÿÂuÑÿï[^ÿ·’ÇëÿŸõ#éÿ—4ûSõÿÛA°§Ïÿ`ßÏÿUY¡üñE€SÑÓìzG0JŠÏ[ðÁ̧ZO÷/‘I·ŽÚßîj†®º«1 ×ÞÏŒª×?y,.b`ñ]ž–Ý»ˆÑï"&MKê]Ä<^1µw¿zW1ÞUŒšæcrs²Öžbšáš{ŠIr#-ï)Æ{Љ3]’§˜Dÿ/Ÿ1ï2ëtPÀ*Ï {„¡› Øz—bW0›ÂŠ_ñí²—3B„ª9QJ=‘6Åé̪žÇ{M3ôÚÜGý¨úß?ÖEÿ»»åõ?«y¼þ÷Y?²þw9³?Uÿ»n†ý÷þ®Ÿÿ«xØl×õ¿Ýe0Xy5pü<€xý Å›Ýç`(¾N*ÜV’ ·ýÀ*܈ۣÌãåIúCñZ\¯ÅõZÜõ×âz[ik½­tlÿì-¥½¥ôr1–›H»Š&»Íº0 ²B0­ÕÞ½ü², °0×#f Êpܶ»ñÛÃ4ëxÕrß‹ +ðj«ÑN1guÆkZòíì.dçEÞ¤¶æ{*6å e©òÏób¤0rXgóóuò\-Î=pb‰À‰…Ù}‡ê H´û–Îuů#žMs`§˜z8û@÷ÿ[zy¡³”ïLâC˜èC§ÅÝŒíîÕ×`vÊ;/ËÊn´g.WXªYP€NÛ(`îʺއ³ÇB¯©5øÉÂŒÁq÷%19Û¾a¥úM*G»Êˆá9ˆ¦ £ûÄÀ¿aD¥{”!\¼ì ùš—@{Ï ‰c ŒÇW˜|±Ge¦³£RîAÅšƒ•‘õTÕåiãb¤85éüºš\äy3Åç2A#I.•^‡Ï@y\¥qa§lN™û•LE¬”ú:¤Šph”<œ \ ¦%=ÁN} ƒ Jdº`À+%yµ{I Ÿ†é™@AaÙÊkq=ÐÐãX ±\çRfÉ0(´ÞÓQYjlÊ.öÐË9“MÓÓgüéΔ$± *’©˜.ó‘¬U¡jÝ~(:”+†ÑãÿKšó÷þôú%œ&ß¿gƒ—èa¡lU‹”pIᓬÀ0Kçìb¦zCJÆÂa-@ –G±pÄ„Ã+".1kŽ$"∠Š#6\‰ q"gWUugöŽ2ÚqîÞ2ÐeEv ”ñeéK%‰v?ƒ«`°û:ÎhÆ`k{ðGÁý1òø/×óDñÿõ¼ ÿµ¤ÙŸŽÿÚÚÚ1ñ_ÞÿÇJ6Û5üW·éñ_ÿÅK°:üW·éñ_Ùñ_ø ‘_.ØW·éa_÷ƒ}{°×c{1T–öZsÖlÅ¢T@±F}DbIý¹ö`¬$ ‹êc#æ¢úÛx$ˆ.XZ=¢Ë#º¼÷ éò˜®5ÀteÄlIx-ŽÕ,÷]ÖcµÕ ›«µX­V¢êÈÕHj+ÆÙôB¿µüV¢ãŽE2ßdw³aAçX´ó‚IG¨¢›¹Ñ[J*l-Í à"0\ݦcãÞ5äç¤h€nä¶Ñ@C:§‰EÓªC4ĈNÐt¨± íôlï ÃöZ?øX¶<Ø×' sŽÛGŠ s©'<6l]°a©@°ub1Ø•à š• Īö¯¾@O …z1ëd³±Ù¨–‚t`O ÑF- ‘Ü”¾l²Š¦A³NèøŒmþ’6jæAcÑÜ¢¬“`YIÙ.‰ULè8Ær÷‡×V0Öš@°ºMÁò>*þkº6ø¯Àóÿ¬æñø¯gýÈø¯åÌþTü×Þþ¶Áÿµ„~þ¯âa³]Ç~%=þË㿢ė†ÿêyüWVüÞ>Ãø>úÅÿêyü×ýð_žöË#ÁVƒë¤\ öH `=óP0óP0{LP0OßµV°ž% óô]þµø—çïrb¿z¿ ½~,ÏßeÁhe_ìYwŒV.ª0Z*ì* Pë¹a´È²ø»ÖÉu_J-ÈåYµÖ˜U«èP®l¼Zîd¸té ®Þ< .ÿ3 ×ÿ³xþ—Õ<ÿó¬ ÿ³¤ÙŸŠÿ ÷·ö þ'ÿYÍÃf»†ÿéå"ßMÛù<ðGzø³ÆˆŸ^˜†ø¹ÍçØøáÀÏ"a|Š.RІ¦Äª±飩ðÒrè ¤X5ð-¶jðs*N¿$9ì™Îo’PDãFå̓!)’‚ &ÚÐBÖâmÁ'Úð¢G!²á •çYxìuuº*ï8p¹Ø¢ÞRj;ìcÇÝocZíÜ3£µŒœ ’YslˆåÔxÚ²-+(„¾F¹wPÞªonéŠ Ÿ¨Õ0O«y1!9± ‚c¿ÝM87xÞm,“áÂ\,kQ{÷+ÇZ,bQ¯¶ßI¬s]_”EŒ"'<"ááß{™Þ…yTí½0]Õ¾íy,{‰qd§ê“ȬéÔÕœºŽUuŠ`Ô-j E‡º©˜¶ÏIYg©f¨¨&µô’5ÉJ7Tò#Zw‚M÷¦r&į,úµ ¹ª=•"AÊÅP¥q=šš•®.Nð´D7@šÛ ‘*S"n—XÖ(]ô]hñèfUà/fJ¸€+áäèžLfïYxå­ò; ŸHˆ¬2+²8¨ù±M_Å*$æB 5W•èèÔt‚nm_/\ …ƒªÿÛ^ýŸ÷ÿ²šÇëÿžõ#ëÿ–3ûSõÛ;¡éÿ%Øòó›íºþoÛ¥ÿkzà#R>-àvª:Ùk†Bàü²wé•JŠ^ù—/ÙuUþ Yé=Û§"t?Ãñ'£üƒ>ü bý¯ýé­ˆy4¹› >OF0]â&I­dK_´Ö¬éÕšs«5qójÍ(Ûå«5Ù®âÕš^­9¯ZóíÝ”Ÿ‚Ñ`8RòÁ¢ÚŸ±©#y:¤õ[b ó§3¸¥GOô¼uwKÓ<»€k¡>øz[.ª÷ úýd<ùó‰¾:«,I˺d•'š/T˜É{õç£Õ|ö.½ÆÓk<…ÆSЬ(ïàM‹©1M³E›á"Âz®ì%È®sýÉŒ›]ç¸Q.ë¶×¹ŠТ.WçJŸã ×j6U›>Åx4A7+’h›I(¶¤+Ôá:l' 'u«É9Uº«É“IÝ^rY^‹¶Ö¡×MÔ;4¼½K]éÚJQ:.Å«¾Öñ„tL¡—ÅzʪTQñeêöb”©ðQõ¿¬‹þ×ó¿¯êñúßgýÈúßåÌþTýï~¸»gò¿ûù¿’‡Ív]ÿÛõüïOEüˆøß{]Ïÿ¾ZNOŸ‹þÜÓ¿¯•úÖ+9½íæZ+9—m»éyá­5ö¼ðžž=ž~ÑZéÇÎ o¹QáyñÜ]o¼ÄÏùâ-¼û:ìùâÍVPFž/~å|ñ³µJÓ«F2˜ãcEq¬|ñ‚'aDHøǶkÛ-:ɈC]ç%V…?sóÇ+©°¥4/…<ÉÀ"ßë:X¾Ý›†üÐMF§ý–ÛF£-×U¯NY$ZœÓù™NöO,|ÿz¶÷$°ÇöZ?ûly°¯O‚Þ9n);}>‚KÏN¿.ìô©Tôöä°.xôgÞ„lâ`í—I™­É=£´—(îÑÚË PIî«ý«/‚*½7ùSÜŸl66Õã¹wïUÞ„%ñÜs¾ ¬eá=2bÀUúEŸópÜs«Ï¢q8²]¿=mXG·å ·Lzû +‰6³å‘Ú÷bÀòsCf­æQñ_­ þ+ôüÿ«y<þëY?2þk9³?mþ‡ôÇmÿnûù¿Š‡Ívÿu¹`þ3Ÿ‡¡y(°K[ …‡åY˜;< l-``žÅÃÜàñ,OŽÅÃÜ<ÀÍÜ<Àíù²Àx¼âíj*æŽפi&"PžÇÞÝŸE‡cï.önÛcï<öÎcïbgq´‹+O·¶Ü§;¬OâfÎÛNäþÜqô'°m%Ý=6léƘ“#î²áÐÖ#“¹&ÇnžÉ±çª".‚H`5`•†mx0.†¦ÍhÏ|þ›ë³Q]p™Öÿ`ww;ض‚Äîmûõ%_ÿŸõ£Ï:û¹ôã“iýWçÿà¿ýú¿üÇ\ÿGw‹Î#ÿùgokׯÿ+yüúÿ¬}þî¾üÏqþß¡_ÿWñ˜ë«ÿeðq8,.­,ö_tç§÷¾]zòÇûß¾?ÿ¯æñëÿ³~ôù¿øÙŸ:ÿÁÙ§>ÿwö?ÿWñ ÇW£»ë)—_ÓÿßÐÞ/ÓŸ^¼øß‹y^üo€ £ß Ž­gà ””WÓ˜ô™ñLngd4ü0¥fäãdÊ­ÀÊ,0ï?ÙP}Ÿúãá_Ì&æãd4š|Ÿ@0|jG§Í^ ¶Ð¬ƒŒ&“/€RfŽ …É™@*>M¦ÃÛÏ7ED@¸æàÛ`D¶IµY9S=?í@ªç“¯‹I³yQëA‚5@~*Aä›>ü«xN)zk9|¼-‰åN¥ÛË‘J·ç,Kï°É”ù ú‡ßr̳á7úê|2\O^Vþꎾ£ahÁ¢öúWð{™(Qp_3ƒm›e\ fEæ¨ÅÈbFfŸ'w£ë(î‡BB†àUFÂóŸˆN~qbK›ÁÍdúƒY¬|¤ÉÒG“£eâÅ.’³2 ~þyŸÃš‡·è¦7 àV‡fFkS€AØd6„b–k´PþôvØ‘ÎðÛ„îqŸÊä¬Qi‘ã2i1eÜ•Q¯N3ù©HvHáôê–e¸Q„$‚­½ÝR°õSP&Ÿoo¿¼~}ýgùz2,Óéð:Ø*Áöþë³-ºaîìÿüÓÏ{áÏûû;; ›Ì/Ä6QoôÞ4Õ/øD{C"½A¯ùúêëävú±ß6+ïÎà‹4”6^³h徯WiÓAæ Ìr£eÙў͑e(b&äˆÁ_¼€jC~0n2fQ0§(Ž#òXͬ QxÍÄÆc!Úi,:~2çB#ñlD,g>ôÅß^ÀÀ€Œ``fÌ¢ÐläHŽlXH:DËtàùö´€#zÚ9§‰—®Èý”&ä¿þ-ÎÕhмøÛô†”>ÆãM¢§DkFÕå!ÿ÷Åߨ£•æU¹ÿÐç¹¼yÿÿcºè<æ’ÿîûóÿJÿÖ>ÿéÖ¿ð<æ’ÿîyùï*sýïVê­ÃEæ‘Mþ»»ÁèwƒÀóÿ¯æñëÿ³~ôù¿øÙŸ:ÿw÷÷wµù¿³xýÏJ:Õÿ—3€ÿJØx oAfûæ…5è ðʇLx‹<<ŒÆëz:R-!å-¿hÜB(&& …Á.™ ˜µ:½•H}0»š¿ÂÈÐvç}òÜ^Ço!î õYHõ¢0Dõ£ñpðâ_³«ë¿~‡þ›7)ÍAÿZSûÇ€ñÛȈÎúYûû~Ó·m¹¯šö öŸ§=Òé¾ëÑEÆØè¥^„Æøo (˜aoÿúZmCÑ!b6ÒfÁÓɈUfƒ?îpíû0ø«*{‰‡~ˆÓ‡ tL–Ãøp5ø³’)à/^¼¨óÅ„ÑFÒI Ž\¾ø¼ ’ð½tEn~À©üQý}Bü9o' ]dz ïÃ~¾xq!²S¦Ò½sëTÎÈù)?!½ÖWY—b/—Ú§gÍNŸÿäíŽÎ¾]Ë­zwCÔãñ ÝéØÚSvBèa…ÌØ¡²üB‰w ¶•áÕ¨|5+ßÝ~)®ï^³.-a ¶Tx¯ÿŸ8XðZäå7› ½cä—ÿïžÿyE—ÿ<ëÇ2ÿ›Í«æÿÓð^þ¿ŠÇÞÿåsäÈBd“ÿÓŸvÚýû`ÿ¿xüçj¿þ?ëÇ>ÿ9ûÓæ¸C{úüßÙòþVò°Ù.ùÿ¨½;ìöÞ’‚ðö,sÅ'\3§ðÈ«!VgI:T7<‘Vzõ™ Ñ39ÓHðQ‰ª3§£ 9ÑJ¥xOÿ¼@*vÇÜqë˜kh¬>™ú#¼r€Lõä z¹è Îu €Ÿ ã­ Ø3ølX‹¥L–Bãéª<þJº:»•‡½’ƒ‡½bça—häAhƤd&ߘpëzØÿ4h™<]NG¦¨¿Ž -Z"îÅ™{Ÿèü5^Ó4xAz¤Ð£½.§r§{ª~$7Ð6ã_Ô~Œ&ß•¢å„Ph³¼ãâ0|fÀgÎX—o?OX"çñ}:–åT$ñP§›âxÃáë±RÀ·wS£È)ÔQG0Ûˆ8ë+Y†L g=ŒHÉ$­œ¤ÑI†ómÅÁÀÌô00GµM.ý £8•ƒ".~ÆàÆ!ÓÖoñEŒ®äŒéxÛOÐÆDDðÂ] ·ƒ£ñ1)-ÈÑ>ÀÌçÓpŒ‚ãéüAMA™¬$N ÑáU¤…–†<·9/“Gh££_ÛsX$Aòaøé(çâíç>ÌÛ¢Ààá¢È„Ôh‘‚9ÒÏv•üI;OÇXáäu»J÷€ tá÷!ø@ÑRÅÐ…“RûœcN…NÀG?l<Ë·Ñjré•Gm”ÐÒ(rÔïP Ì…×ÝVYh4­ô8¢‡qÙ¾Üç´ZísQ¥6P¾Ÿ’hR€*¿ß€Ö€Õ¢–°Ùt~˜þèŠö$SXY=<Ðpor†ÓÛhVÛ¿È6›ãÎú’þE^ wfàB´0ßrjÛZ‹]ÓÁóñzÓøÈª ‹C¡]jm¼¢Çö­9ÁÛUú¡%y6áÓã &Mü ùç¶šOʈã¬O¢)Nþ¸ƒþ±ýlFwæë_do,rB“ñèGÜjêÔûnÀ–¾Pði.'ƒÝ‹¾)„*ælwB[èÓjBÓéDY½nè¹\M¬oE³à)evÇ4‘Œ—½¼FÎ8øB,V_‹qÜÄ{ÞpoŒÌX±/ï{Öu?&—·zÒú-_øô€“·Ô! a”õ³è¥Éô&Jß¼A†ÐÛþ=#~ƒÿ^Ê.ÍàwTáù’mW¬3¿I¿3÷BÜ+!߀HîÐ^`aYFÁ/ðÐán@dÕ%(«*œ,w¸+DÅŒ¹‡žò’¡d÷JÒì^öþ™p• kL•{ʦ¿É1]àbqrÚG&Õïˆíj«þ¼ßÓðUvU³‰3bÞBpÍ ‹¤Ü·UþIs`ókîCèB dº¶ËS’[KâRÑЪÝ@Ÿ³Úa£é®)‹^äÁl¥qx2‰J¤ø)Áž‘ˆ·qW/i7K×°FÓÀìÎ;2©ÂLãÛO²ýD…Æä*s–ÍÙÆ«àãÄBF]|èlûF“êÉŒ¹{bŽíÐ6™-±wcñåjr=PÈÑçÝ/yO¨äÐï·8‚o•“rÚ(r§dò•4.óp\ú0¸ý> 5‚#. 'P:5ŸÊ:v»úfÿé_±ÏÉ›`K öãñ·”Ja©´]*í”J»¥Ò^©´_*ýT*ý\*é‰É)ýßóçµÊÿf—óüÍNTtzÀµv‡ž}v¢v`G1¾FòË^´ßGÆŽR%å˜%ü$…Ò3œB^D9‰>>7¼!ìS:ÔlJ?évAß¿œ)?ÇŒ ÒÇ:tØ}Â8 m W¡‚|$ÚÐcKa¿IU‰g¡Óâ¦U|&H¨+¶tb»ÐæQFÈ©ÑRÅÙ°èéòUû\ž|ñ‡,íM^6hÜ8íHö]`Q6Ûç4­¨äH×m+©ÜZ祖¢DCÒ€ÄQë…:?³ûkbó•€×±Ãn—(Ñ©~ oF)~ _EôúÕïácˆ•Yо$‡G¬z®ôömœèyüE‹fŠ¡¨¼öòÜÛéÐ w4¤¥+” -»8µÄ=IjEúÞµayÏ¢åŽç$]錤—‚Áxr÷é3ÎQç~Eâ¡y(-D{Ø&m:JX¥¾52Ädó[Ïg˜Z@i$BZ._íÉ­¨tܰ_Ïâ[Z»zî&é¥a§ º#ê©D®Q„„‰-ØmnÀ´¿L7™Ú‹XÅE֭ׄ/Ò›¼eJÒ’žÜ QJÞ¸N¾ÖZØHÊÒ¶$>œáãSKè>µ¸ÎàÊaFÉÔþÝ19 ¡Lêáßœ3â‚ö²<Îé¢<$òè‡Ý ]Î@Š×m7ªâz®‚à½.Ò _¯Ñ!/"WwÓ)\w™ÐœCû&£kØøµ¡Â¼¬³ÜÑÉnææPæA^Âð­ŽZÅÆAc³Q…{aägN{æXÄ%”]Qè €?è¿sá9¾¼L¿÷§×/.SôyYà ¨ :¿t MѨ¦ÜÂ*oèµí6¨ÄÁuòx#¾–eˆÝPc³˜Ñš±$xÑ…ÌAoèâÜ=ô(öϼóü÷ÀöŸÛþü·šÇŸÿžõã8ÿ­Öþsk׸ÿ…[~þ¯âá»~lÿyæí?3ÙZ@È ²ÿ<óöŸ`ÿ‰ýém>½Ígf›OLjY;OGé¼m§·í|n¶gÞ¶ÓÛvzÛNoÛùŒl;ϸmç·í<ó¶eÛ™´ý¬¥mgÊ~É{ÂÛvzÛNoÛém;½m'ÚvžyÛNoÛém;Ý)-Û¶ÓqjqÁ½mçºØvžyÛε±í<ó¶Z-â!êm;Ÿ˜mç"žçiÛyöTl;ϼmçŠm;³.¥+·í\EÁ’b=^Ûά£Þ¶sÑmúÄm;ר}2onOöóÌ»}zB ÿÿ×ãÿw<þw5Çÿ?ëÇ>ÿ9û3àÿÃ}ÿ¿íý?­äa³]Âÿ_zü&üí´Õi¾ìE‰.ÿéñÿ€ÿ—úÓ[x+€ÌV‰ãfMlËè-¼EÀs³¸ôÞ"À[x‹€gdpÉ-.¹EÀ¥·x(‹€¤íg--RöKÞÞ"À[x‹oà-Ð"àÒ[x‹oàNiÙŽS‹ë î-ÖÅ"àÒ[¬EÀ¥·ÐjQoðÄ,±ð:þwt÷ºüïZ/=bŽp¿»»)øÿ0ÜÃpgw›l»AàùÿWóxüÿ³~,ó¿Ö{½Ø<Òæ?ÌuþÓ­ÿAv[ ûóÌç¿uýo6šÇ\ë¿÷ÿµšÇ¯ÿÏú±ÌÿfsÖÿm¿þ¯â±®ÿ½ÃÚ"ó˜cýƒ=¿þ¯äñëÿ³~,óŸÎþÅnù×ÿÝ­Ý]¿þ¯âqôùßWŸ· 2ßÊÆÿ@ÿ·»»³»ößû[»~ý_Éã×ÿgý8æÿgÚü§“~;Ôçÿî–çYÉÃf»ÄÿP{wxÞ{«Ó?4:_#ʧÑê4µÆ9iŸ¶3Ð@¼_< Ä…‘@äe°¥F›ˆÑ<°ïÜèZ"Ddä‚`½!qAŒIóÂFñi0LM>HƒA:Á°tH|~›ÜÂhÀ?|3êÁôêsüi L¨ÁrQÍD5"dµ!oH‡Ö¥Iÿ»ˆÍ;Ì8ðë`zswË"³ÒЦFx÷ä»Ê@€¹3͈!â!(ˆ1½ã, ã fŽxÉ"±¤ ¥\0™0êßId&‰Ü p{óUd fŸ´Mhá¿ d^Œ³á7úê|2\O^‚=çÕ}÷ »vKD™ñ¯à÷2âmÈ ¶4nz5˜™ñ¬‘øŒÌ>OîFˆæþ0À‚‘¯„Ìù>ƒßÝHÌ7ƒ›ÉôÔs<ûHS”zñkÿLï˜y0í½mMZŒˆ½íóƒÍ4 …„¢%™Ð©LgÖ0%õóÞY‹5<¢OnÁžu„ö‡×ƒ1\³7ó»ýÜÇ~ýܧµE“ZšÊ×ÁÙ¤1B‹GÃÁµ0ë HH¶ÉÙ%{dŸü¿m–à%ü¯«ÿÿ`…%lºþƒ?–ixšŒú#þωaihB³TB²tÕèeRKó?fšQºPZÂjæEV~EÖBKHž´’¦küX¶‡T‹YjW=¸YA),¥ûü©T¦ë¥4Ú`lÐ%m(‘xhñ‹sðfÃ1X=þüÚW T`z™[4Ÿ]}¾› Œ£6áÆ÷l¼*,óñì¿!鯓©(.ýoýáÌ?ù<¡Ó•Oê"9+“àçŸ÷¹]ðð Ú{:«c0OÁõ·>€YTN˜>wø Ûá+,Ý•9.ÓŠ­Æt]+#>‹fòS‘Ž´ÂéÕ-ËY=[{»¥`ë§ L>ßÞ~=xýúúÏòõdXžL?½¶ÊA°½ÿúl‹ˆwöþéç½ðçýýgEÐsovº„}»ÛàÚMÕ#¸Yš|‰àsÊÆ(GÇ ñUóÕc`€-ͲŸÑÚƒcÖŒÌD!p Y2w œP0}0à°ßr/%/œÈVž‘ú©Àðc˜¸Žl’’—Ž"—Žå6`“œ¾?&›t;/©«€y¡ÿñ%"¤UÃÒ·ôXÀŠYÍqS.à¹bS° àÕr:KÄ„)Ç?>î¼xñ?Å‹^ä¿ïpHãåïRÜ·¤@óD‹²c œž.˜4Õ(gå]ô+ѱéˆ0ñ➸°ÌÃzÛ®«8&[•UCühÅ…&[Sú,á0jüž‚ߎÍC´)ÀTa’‰! Vç[¬ ÑÎPÁÙg³!‰Å`›3 a å W"þ[”ú%lÔüW$T(UOJ :¢~j5ܺ‰¶>=‰ÒëdS[0Dcà€çmq,ïO¢*çó6¶5S¯¯q6l;‡áU=+HãMütUaÁ` ã‘B¢­`›—aY4õDؤóEÅiÜÏjÛÎÍ"žš^Ëóþ„)kNVÞèV[:¹¹:MÕ’/›O› yÒ‰o¯“Tîc˯ŠÁ¾ØlDSÐõ™H-Š»þhî $ÚŽæøž?â›j GÉ,¥ âLø£=a;a¢rAï‹/ʼnLŸa|@☶Ї'ÊÕâHáâ1LÛ2.; SØ FÑß¶ èzIµï0^ìÅ[;NÇc(±ãª³A(×G¼vGôZ4×Ueåp>%zU¦'¼˜Öe¹1SÙù8Ú2ùé¹Ä6_‘%ì¶ì—ïÄb>&À—B¶ä1­tŽý8i].±ïRÃ0;%, Ö’–5ùضm¨M×øÒèé-Þ,¿¯Ez]ÅÖŒø?…ˆŽ t¢,Ú¢²ýÆ\jÔJY«Qk‹T¡õ1–ÂÏ5ŸZz«`Þl4ñ ± z9t^³èúb3bçËGhåÄ\?0þÃãÿVóxüdz~ó³?ÿ±½³mâ?¼ýßJ6Û%üGÝã?ƒÿ¨Ÿ^Té °C§Sã¬q Ú²üøºÇxü‡Çxü‡ÇxüÇóÆû©‚x ˆ‚JmÞ K¡9€ã±4,5©§4êÉz @£.uШ/  ÁO«u Q_@Ãc3æÁfÔ#6£þ±uÍX/lFÝc3ÌÆX6–Œh”Ù°u޽` ð @xD!7²Ã0êO†)A¢Ĩ?^ FÝ1ˆáX„7£~ FÞù´ Fý±1èqâ?f‹ÿ=ÿÇjÿxÖcþ/pögÀ„ûþ# ýü_ÅÃf»„ÿ8óøÅà?,vnùñgÿáñë…ÿ8óøÿðøÿX1þ÷Sùð˜ùx‚˜Ëiy>ÌÇ¡Šù8Ì…ùXiÇcÃ|ÌCÊq¶ R޳E“rðꙊù8ó˜%üƒb>Î#æãIòqœyÌÇza>Î<æÃlŒÄ|œ­óqæ1ËÀ|œ=^ÌÇ™Ç|<æÃ±?nÌÇÙý1yçÓJ0gó1÷ãÄüõ°ømïÿq5Ç<ëÇ1ÿ8û³øÙ5ðÛÿ±’‡Ív ÿqéñ‹ÁpªæWÁ^$?þãÒã?<þc½ðžÿÃã?<þÃã?Èÿ ì§âQ òQ –3³éÆÂO‘ÝL»r©çt“=žÎ7bÞ*r3ˆØ\ÀÈmôØÐ&ó0Œ\.ˆaärÑ #—ì<|©¢M.½ 3üƒBN.#ääIÒŒ\zÈÉzAN.=äÄlŒ5vS_ž ˜Ë§‹Cy80—…réQ(‡Bq¬Ë…ryJÞù´Êå£D¡Xô¿Íæëò¿¯¨ÎˆÿwvƒÝí­]Ðÿîyÿ+z<þãY?öù¿ÈÙŸŠÿé¤×çÿöÞ¾Ÿÿ«xØl—ðÌ“q@62`=‚Åc=¦ôª¶þh9H~´GÍ£=V€öàÊé=<–F“ÉhžæàÛ`D¶I•NeÄêÔ¬£ü¬­^Ë구^Ëú„µ¬rá2Yׄy=³«ßȣܴ+&lS_µHNè¶\]„Jýq;}¹ÓÙ"ó+Tt9U–¶ò7+‡í_Ý¥àïÍ|æUz½ß/ÉË"?¥—ø/†fC—TËÍÃrÀ W€¤.m&©î.f°“b¹è>XE…'‚Ó•—ºZOÝ™vý”í…âR*%®DzŽ«‘Ö3ÅÔˆ´ðf¢,¼ 'øa@Û8Ú*èŽ.kg¾öǃ‘\V z'=a:.µ«ÒÊÄ}gŠ>ùt +>ïNN6ÛÕRóV×V(^±a¬ ËHÙDÿqeaè+=o¡Rfƒ vw€:–µJE¹å“žj¢Sùv2G* ZÚH„›=Ž¥¬FxÇÑâ Gˆ'¾ûÀN4ÎJeÓS$ªU:¡šìn:£°^)õØ„q­Õª±¦É’±"r¦ƒ×í´Moå‡Z q%ctæ…£ m¢è;Çs#F6Xbð„£¤"Ž6ÃÛz³ª³Í06:#e`4õ ì{ƒ/jI+ר¦Çw2®mõœ£¥-­LE‡?¼;W×Wží,÷M2Ðçr°…Èãxq9Þ<®–,LVŸ¼‚ø –ž¡ßÂ-å7¹ì CtÀmS[ w¢µ'i1T–Ž“R ´)’ª:aô‚*¸ ÖüÂóÙÐô.;JÕˆY5Ææ•jmÿ¿½sëÛFÃðþݹpìÔÒœ€ìUv´hêŽÇ†å\ìÜ®ã6³u=…íì¢ûëW$u )êÌ¡(ñ}ÉŒ<}”FÏ'¾¶Ù/Ðÿ~o½ãÞ_EJ‰¶¤C¯Ò QyÍND1‘_Ƈä_ä-HÛMîgîBrþwù6Ó<_Ò‰%GOm'Ì+L%½PÀ¤iI·’«ÿU9ì×6mRås'­^£É3«˜r½’°oͲã\á]¦ür!G1ßÙ ¼—W†þÖ£DTeüO§|'þ‡÷?ÍüÏi©ã_gô7àÁ¢ÀÿVXÿÁˆX´sü/ÿëÂÿ¯4´ç!øøßàüFë…LªÖ“/k­Õ­Å!Ãa‚ÿÂÿ…Àâ?[ÜÅuá¿p@üÚÿ¸­GÿB£ð¯¥ikÅcW‹à_C{äŠBþ)ÚðÏrøNþ…¶À?}ó¥}ð¯ÿ´Iå8ü·ãxÿÓiÜ…ÿxÿÏŒÀÿœ–:þµÚ×ó?&ÇÿÜ¿@ü›‹ö‚ÿ7øܾÁÿÜä0Úóó£š óSí&_ÖZëZËü"Æü¢„ùE ó‹Àüd~¶¸Ëêb~Ñ€Ì/²Ÿù‘úEF©_KÛ¾Šç­Q¿†™…õS´)¨ŸåÔ/š,õ‹l¡~úæKû¨_ÿi“Êqê7ÏÙ2þ§Ó² ÿ›áù¿ÿ9-uükµm°þg‘ÿÿ›‹ö‚ÿ+øÜ^ÁÿÜä0ZÌÛpŠPm´˜|ÙÎB±xµîÜ%ódìÄçtúMQ‘È]¤G›ƒÀ!øÃ5‚Cb?ñuWb!vïùâñ$uq±RjLÑOÒæ—iñE`,6b|M'‘ib›Í¥%­+,9Ô‡­¸»¤ä¦n—ç—”$! 4\ªžùs•“¾QŸº7ç`ì&-xƒp÷J#ž¯n=¾ö°ÉTl’”i S@˪ñß'—eò™LW… Ø&çÍfBeügÿ7‘ÿàý3ÿqZêø7êÿæÏ–~‘ÿ€ÿ‹vø¿Áÿ üÇuþã7€ € @]Æop}üõÛè­ßòž üéé€ã2ü?ØÐð'ü ‡ƒ?ý­®&t;šÙ ÆíÍeBeügÿ/ÿxþkFà?NKÿFý¿üÙ|!ÇÿÜÿ5"íðÿ‚ÿøëüÆ_`>`>Td>vÁõ ÌÖ_£·þÊ{z4̧§ÿ‰ËÌîPC3ŸhlÌ'Žùô7:š óÑíge3ó™Š3“•ñŸüŸDþ³Âó_#ÿqZêø7êÿäÏ–«ÿ æˆbÑÿ'ø?ÿ¸Î`ü”·)((Ð)Pgã'Ot~²u ¸‰ú>ÁüiæOyO†õtÀp™Áhh"´Ú G„ú[ÝL†év4²™՛DŽäç¿_O¯¿ÿõýûŸo7šÎAžû.5ü'fAÌW‹]ÿ)˜áù¯ÿ8­Òø¿Ý|¯ëuñOâEŠüÍ[è*@•ÿŠùÿîúFÏ9:ÌÿóÞÿ4#ÌÿN«4þãè×uè0ÿÏ.V˜ÿM¨²ÿßÿüðç¡"Hëü¯à‚^ÿ1ÿæ§UÿZ¢¿6ÿ+ˆ?•ò¿VñõñoB,ÚyÿÏ›k–ÿõùfs-bîá½ÝÙ_ëOo?®ŽMjÓ(7¬Ub˜×OÖâYÖMNJÂP•üõòxÿä½þõÇo/ûr„ø°û·ý½/¿îŸ÷o\æOË ¯Ï§§ŸH‚×Í xòùäÌ;¼p›m<’ o+n·99Ë3ÃhjÅý³—feeyZIÙHG+SĹZo‡?ÏŸ‡ßIF{¾]–ªuæÅ£â‰lÇgv5Hà¢uðò¼ l úb"LÜ\ÌkõôHŠñ‘–¥ý]ÚcCöØpÕ,ìÑ.áëðò…å{5ù̆ÊÅQò–§NñÚ²ä°ÂP iЬ%Ïo÷ûgÖÝYv_*Å.|ÕÏ2nøJÊG’„è ª9m’ öòøkiê`’¦!EýpíÝ]{³ ÚŠô¸üˆr yã!¾çú…ì…F™$Ôåȶ¡oŸX–êsŸKÕ0;Å¡œÓ«»jþ§Çªÿ[âù¿ÿ9­ªø×dÿVËÿfÁ²ÈÿVˆbÑÿ7ø¿Ù¼þ#øŸÄJàؾFX  Ж÷áÇï8ð<pp€›&ÏkãC6;èÁó´úäyÄS¼Uw€ ¯Ò5OäõËh*Î pgYðM Üi5ãó¤ß>ôZÀº:k>À:òÜë ¨šÿé1€êÂÿxÿÇŒÀÿœVUük²«ç~Pàs¬ÿiD,Úáÿÿ7ð?GøàÀüÀüÀüŽÂüàG?‚˜_q_8ÀÁÎæ×ƇlìЃùiõÉ3Ëü*]óÀü&ÃüÚ¸ |™ŸV3>£Ì¯ÎšÌ|×ÓÍj«jþ§Ç¬ ÿ[Îñü߈ÀÿœVUük²ÿk°þçªÀÿ–âß„X´ÃÿO›ÿŸgÌK€aˆU@=€@*¬ Àä$#'ˆ0t‚ ÂÐMÀ1BŒ6†t@ŒQ§U‫€V'bÐi‚Å6xÄdg°¨Ó¬q¸U@ë¬Éwp;„ ‚ ‚ ‚ ‚ ‚ ‚¦ªÿ±Ó™ßÀ9xtensor-blas-0.21.0/include/xflens/cxxlapack/netlib/netlib.h000066400000000000000000000011221456314707100240220ustar00rootroot00000000000000#ifndef CXXLAPACK_NETLIB_NETLIB_H #define CXXLAPACK_NETLIB_NETLIB_H 1 #ifdef LAPACK_IMPL # undef LAPACK_IMPL #endif #ifndef CXXLAPACK_NO_UNDERSCORE # define LAPACK_IMPL(x) x##_ #else # define LAPACK_IMPL(x) x #endif #ifdef DEBUG_CXXLAPACK #define CXXLAPACK_DEBUG_OUT(msg) std::cerr << "CXXLAPACK: " << msg << std::endl; #endif #ifndef CXXLAPACK_DEBUG_OUT # define CXXLAPACK_DEBUG_OUT(msg) #endif namespace cxxlapack { extern "C" { # include "xflens/cxxlapack/netlib/interface/lapack.in.h" } // extern "C" } #endif // CXXLAPACK_NETLIB_NETLIB_H xtensor-blas-0.21.0/include/xtensor-blas/000077500000000000000000000000001456314707100202675ustar00rootroot00000000000000xtensor-blas-0.21.0/include/xtensor-blas/xblas.hpp000066400000000000000000000240051456314707100221120ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #ifndef XBLAS_HPP #define XBLAS_HPP #include #include "xtensor/xarray.hpp" #include "xtensor/xcomplex.hpp" #include "xtensor/xio.hpp" #include "xtensor/xtensor.hpp" #include "xtensor/xutils.hpp" #include "xflens/cxxblas/cxxblas.cxx" #include "xtensor-blas/xblas_config.hpp" #include "xtensor-blas/xblas_utils.hpp" namespace xt { namespace blas { /** * Calculate the 1-norm of a vector * * @param a vector of n elements * @returns scalar result */ template void asum(const xexpression& a, R& result) { auto&& ad = view_eval(a.derived_cast()); XTENSOR_ASSERT(ad.dimension() == 1); cxxblas::asum( static_cast(ad.shape()[0]), ad.data() + ad.data_offset(), stride_front(ad), result ); } /** * Calculate the 2-norm of a vector * * @param a vector of n elements * @returns scalar result */ template void nrm2(const xexpression& a, R& result) { auto&& ad = view_eval(a.derived_cast()); XTENSOR_ASSERT(ad.dimension() == 1); cxxblas::nrm2( static_cast(ad.shape()[0]), ad.data() + ad.data_offset(), stride_front(ad), result ); } /** * Calculate the dot product between two vectors, conjugating * the first argument \em a in the case of complex vectors. * * @param a vector of n elements * @param b vector of n elements * @returns scalar result */ template void dot(const xexpression& a, const xexpression& b, R& result) { auto&& ad = view_eval(a.derived_cast()); auto&& bd = view_eval(b.derived_cast()); XTENSOR_ASSERT(ad.dimension() == 1); blas_index_t stride_a = stride_front(ad); blas_index_t stride_b = stride_front(bd); auto* adt = ad.data() + ad.data_offset(); auto* bdt = bd.data() + bd.data_offset(); // we need to have a pointer that points to the "real" start of the memory // not to the first element (BLAS is doing that transformation itself) if (stride_a < 0) { adt += (static_cast(ad.shape()[0]) - 1) * stride_a; // go back to the start } if (stride_b < 0) { bdt += (static_cast(ad.shape()[0]) - 1) * stride_b; // go back to the start } cxxblas::dot(static_cast(ad.shape()[0]), adt, stride_a, bdt, stride_b, result); } /** * Calculate the dot product between two complex vectors, not conjugating the * first argument \em a. * * @param a vector of n elements * @param b vector of n elements * @returns scalar result */ template void dotu(const xexpression& a, const xexpression& b, R& result) { auto&& ad = view_eval(a.derived_cast()); auto&& bd = view_eval(b.derived_cast()); XTENSOR_ASSERT(ad.dimension() == 1); blas_index_t stride_a = stride_front(ad); blas_index_t stride_b = stride_front(bd); auto* adt = ad.data() + ad.data_offset(); auto* bdt = bd.data() + bd.data_offset(); // we need to have a pointer that points to the "real" start of the memory // not to the first element (BLAS is doing that transformation itself) if (stride_a < 0) { adt += (static_cast(ad.shape()[0]) - 1) * stride_a; // go back to the start } if (stride_b < 0) { bdt += (static_cast(ad.shape()[0]) - 1) * stride_b; // go back to the start } cxxblas::dotu(static_cast(ad.shape()[0]), adt, stride_a, bdt, stride_b, result); } /** * Calculate the general matrix times vector product according to * ``y := alpha * A * x + beta * y``. * * @param A matrix of n x m elements * @param x vector of n elements * @param transpose select if A should be transposed * @param alpha scalar scale factor * @returns the resulting vector */ template void gemv( const xexpression& A, const xexpression& x, R& result, bool transpose_A = false, const value_type& alpha = value_type(1.0), const value_type& beta = value_type(0.0) ) { auto&& dA = view_eval(A.derived_cast()); auto&& dx = view_eval(x.derived_cast()); cxxblas::gemv( get_blas_storage_order(result), transpose_A ? cxxblas::Transpose::Trans : cxxblas::Transpose::NoTrans, static_cast(dA.shape()[0]), static_cast(dA.shape()[1]), alpha, dA.data() + dA.data_offset(), get_leading_stride(dA), dx.data() + dx.data_offset(), get_leading_stride(dx), beta, result.data() + result.data_offset(), get_leading_stride(result) ); } /** * Calculate the matrix-matrix product of matrix @A and matrix @B * * C := alpha * A * B + beta * C * * @param A matrix of m-by-n elements * @param B matrix of n-by-k elements * @param transpose_A transpose A on the fly * @param transpose_B transpose B on the fly * @param alpha scale factor for A * B (defaults to 1) * @param beta scale factor for C (defaults to 0) */ template void gemm( const xexpression& A, const xexpression& B, R& result, char transpose_A = false, char transpose_B = false, const value_type& alpha = value_type(1.0), const value_type& beta = value_type(0.0) ) { static_assert(R::static_layout != layout_type::dynamic, "GEMM result layout cannot be dynamic."); auto&& dA = view_eval(A.derived_cast()); auto&& dB = view_eval(B.derived_cast()); XTENSOR_ASSERT(dA.layout() == dB.layout()); XTENSOR_ASSERT(result.layout() == dA.layout()); XTENSOR_ASSERT(dA.dimension() == 2); XTENSOR_ASSERT(dB.dimension() == 2); cxxblas::gemm( get_blas_storage_order(result), transpose_A ? cxxblas::Transpose::Trans : cxxblas::Transpose::NoTrans, transpose_B ? cxxblas::Transpose::Trans : cxxblas::Transpose::NoTrans, static_cast(transpose_A ? dA.shape()[1] : dA.shape()[0]), static_cast(transpose_B ? dB.shape()[0] : dB.shape()[1]), static_cast(transpose_B ? dB.shape()[1] : dB.shape()[0]), alpha, dA.data() + dA.data_offset(), get_leading_stride(dA), dB.data() + dB.data_offset(), get_leading_stride(dB), beta, result.data() + result.data_offset(), get_leading_stride(result) ); } /** * Calculate the outer product of vector x and y. * According to A:= alpha * x * y' + A * * @param x vector of n elements * @param y vector of m elements * @param alpha scalar scale factor * @returns matrix of n-by-m elements */ template void ger(const xexpression& x, const xexpression& y, R& result, const value_type& alpha = value_type(1.0)) { auto&& dx = view_eval(x.derived_cast()); auto&& dy = view_eval(y.derived_cast()); XTENSOR_ASSERT(dx.dimension() == 1); XTENSOR_ASSERT(dy.dimension() == 1); cxxblas::ger( get_blas_storage_order(result), static_cast(dx.shape()[0]), static_cast(dy.shape()[0]), alpha, dx.data() + dx.data_offset(), get_leading_stride(dx), dy.data() + dy.data_offset(), get_leading_stride(dy), result.data() + result.data_offset(), get_leading_stride(result) ); } } // namespace blas } // namespace xt #endif xtensor-blas-0.21.0/include/xtensor-blas/xblas_config.hpp000066400000000000000000000020671456314707100234430ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #ifndef XBLAS_CONFIG_HPP #define XBLAS_CONFIG_HPP #define XTENSOR_BLAS_VERSION_MAJOR 0 #define XTENSOR_BLAS_VERSION_MINOR 21 #define XTENSOR_BLAS_VERSION_PATCH 0 #ifndef XTENSOR_USE_FLENS_BLAS #define HAVE_CBLAS 1 #endif #ifndef USE_CXXLAPACK #define USE_CXXLAPACK #endif #ifndef BLAS_IDX #define BLAS_IDX int #endif #ifdef __CLING__ #include "xtensor-blas/xblas_config_cling.hpp" #endif namespace xt { using blas_index_t = BLAS_IDX; } #endif xtensor-blas-0.21.0/include/xtensor-blas/xblas_config_cling.hpp.in000066400000000000000000000017671456314707100252320ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #ifndef XBLAS_CONFIG_CLING_HPP #define XBLAS_CONFIG_CLING_HPP #pragma cling add_library_path(@XTENSOR_BLAS_CLING_LIBRARY_DIR_64@) #pragma cling add_library_path(@XTENSOR_BLAS_CLING_LIBRARY_DIR_32@) #pragma cling add_library_path(@XTENSOR_BLAS_CLING_LIBRARY_DIR@) #ifndef XTENSOR_USE_FLENS_BLAS #define HAVE_CBLAS 1 #pragma cling load("libblas") #pragma cling load("liblapack") #endif #endif xtensor-blas-0.21.0/include/xtensor-blas/xblas_utils.hpp000066400000000000000000000152161456314707100233360ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #ifndef XBLAS_UTILS_HPP #define XBLAS_UTILS_HPP #include #include #include #include "xtensor/xutils.hpp" #include "xflens/cxxblas/typedefs.h" #include "xtensor-blas/xblas_config.hpp" #ifndef DEFAULT_LEADING_STRIDE_BEHAVIOR #define DEFAULT_LEADING_STRIDE_BEHAVIOR XTENSOR_THROW(std::runtime_error, "No valid layout chosen."); #endif #ifndef DEFAULT_STORAGE_ORDER_BEHAVIOR #define DEFAULT_STORAGE_ORDER_BEHAVIOR XTENSOR_THROW(std::runtime_error, "Cannot handle layout_type of e."); #endif namespace xt { template inline auto view_eval(T&& t ) -> std::enable_if_t>::value && std::decay_t::static_layout == L, T&&> { return std::forward(t); } template > inline auto view_eval(T&& t) -> std::enable_if_t< (!has_data_interface>::value || I::static_layout != L) && detail::is_array::value, xtensor::value, layout_remove_any(L)>> { return t; } template > inline auto view_eval(T&& t) -> std::enable_if_t< (!has_data_interface>::value || I::static_layout != L) && !detail::is_array::value, xarray> { return t; } template inline auto copy_to_layout(T&& t) -> std::enable_if_t::static_layout == L, T> { return t; } template > inline auto copy_to_layout(T&& t) -> std::enable_if_t< std::decay_t::static_layout != L && detail::is_array::value, xtensor::value, L>> { return t; } template > inline auto copy_to_layout(T&& t) -> std::enable_if_t< std::decay_t::static_layout != L && !detail::is_array::value, xarray> { return t; } template inline cxxblas::StorageOrder get_blas_storage_order(const E& e) { if (e.layout() == layout_type::row_major) { return cxxblas::StorageOrder::RowMajor; } else if (e.layout() == layout_type::column_major) { return cxxblas::StorageOrder::ColMajor; } DEFAULT_STORAGE_ORDER_BEHAVIOR; } /** * Get leading stride */ namespace detail { template inline blas_index_t get_leading_stride_impl(const T& str, const U& sh) { return str == T(0) ? static_cast(sh) : static_cast(str); } } // namespace detail template * = nullptr> inline blas_index_t get_leading_stride(const A& a) { return detail::get_leading_stride_impl(a.strides().front(), a.shape().back()); } template * = nullptr> inline blas_index_t get_leading_stride(const A& a) { return detail::get_leading_stride_impl(a.strides().back(), a.shape().front()); } template < class A, std::enable_if_t* = nullptr> inline blas_index_t get_leading_stride(const A& a) { if (a.layout() == layout_type::row_major) { return detail::get_leading_stride_impl(a.strides().front(), a.shape().back()); } else if (a.layout() == layout_type::column_major) { return detail::get_leading_stride_impl(a.strides().back(), a.shape().front()); } DEFAULT_LEADING_STRIDE_BEHAVIOR; } /******************** * Get front stride * ********************/ template inline blas_index_t stride_front(const E& e) { if (E::static_layout == layout_type::column_major) { return blas_index_t(1); } else { return static_cast(e.strides().front() == 0 ? 1 : e.strides().front()); } } /******************* * Get back stride * *******************/ template inline blas_index_t stride_back(const E& e) { if (E::static_layout == layout_type::row_major) { return blas_index_t(1); } else { return static_cast(e.strides().back() == 0 ? 1 : e.strides().back()); } } /******************************* * is_xfunction implementation * *******************************/ namespace detail { template std::true_type is_xfunction_impl(const xfunction&); std::false_type is_xfunction_impl(...); } // namespace detail template constexpr bool is_xfunction(T&& t) { return decltype(detail::is_xfunction_impl(t))::value; } /*********************************** * assert_nd_square implementation * ***********************************/ template #if !defined(_MSC_VER) || _MSC_VER >= 1910 constexpr #endif void assert_nd_square(const xexpression& t) { auto& dt = t.derived_cast(); if (dt.shape()[dt.dimension() - 1] != dt.shape()[dt.dimension() - 2]) { XTENSOR_THROW(std::runtime_error, "Last 2 dimensions of the array must be square."); } } } // namespace xt #endif xtensor-blas-0.21.0/include/xtensor-blas/xlapack.hpp000066400000000000000000000721151456314707100224310ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #ifndef XLAPACK_HPP #define XLAPACK_HPP #include #include "xtensor/xarray.hpp" #include "xtensor/xcomplex.hpp" #include "xtensor/xio.hpp" #include "xtensor/xstorage.hpp" #include "xtensor/xtensor.hpp" #include "xtensor/xutils.hpp" #include "xflens/cxxlapack/cxxlapack.cxx" #include "xtensor-blas/xblas_config.hpp" #include "xtensor-blas/xblas_utils.hpp" #include "xtl/xcomplex.hpp" namespace xt { namespace lapack { /** * Interface to LAPACK gesv. */ template int gesv(E& A, F& b) { XTENSOR_ASSERT(A.dimension() == 2); XTENSOR_ASSERT(A.layout() == layout_type::column_major); XTENSOR_ASSERT(b.dimension() <= 2); XTENSOR_ASSERT(b.layout() == layout_type::column_major); uvector piv(A.shape()[0]); blas_index_t b_dim = b.dimension() > 1 ? static_cast(b.shape().back()) : 1; blas_index_t b_stride = b_dim == 1 ? static_cast(b.shape().front()) : stride_back(b); int info = cxxlapack::gesv( static_cast(A.shape()[0]), b_dim, A.data(), stride_back(A), piv.data(), b.data(), b_stride ); return info; } template auto getrf(E& A, F& piv) { XTENSOR_ASSERT(A.dimension() == 2); XTENSOR_ASSERT(A.layout() == layout_type::column_major); int info = cxxlapack::getrf( static_cast(A.shape()[0]), static_cast(A.shape()[1]), A.data(), stride_back(A), piv.data() ); return info; } template inline auto orgqr(E& A, T& tau, blas_index_t n = -1) { using value_type = typename E::value_type; uvector work(1); if (n == -1) { n = static_cast(A.shape()[1]); } blas_index_t m = static_cast(A.shape()[0]); blas_index_t a_stride = std::max(blas_index_t(1), m); int info = cxxlapack::orgqr( m, n, static_cast(tau.size()), A.data(), a_stride, tau.data(), work.data(), static_cast(-1) ); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Could not find workspace size for orgqr."); } work.resize(static_cast(work[0])); info = cxxlapack::orgqr( m, n, static_cast(tau.size()), A.data(), a_stride, tau.data(), work.data(), static_cast(work.size()) ); return info; } template inline auto ungqr(E& A, T& tau, blas_index_t n = -1) { using value_type = typename E::value_type; uvector work(1); if (n == -1) { n = static_cast(A.shape()[1]); } blas_index_t m = static_cast(A.shape()[0]); blas_index_t a_stride = std::max(blas_index_t(1), m); int info = cxxlapack::ungqr( m, n, static_cast(tau.size()), A.data(), a_stride, tau.data(), work.data(), static_cast(-1) ); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Could not find workspace size for ungqr."); } work.resize(static_cast(std::real(work[0]))); info = cxxlapack::ungqr( m, n, static_cast(tau.size()), A.data(), a_stride, tau.data(), work.data(), static_cast(work.size()) ); return info; } template int geqrf(E& A, T& tau) { using value_type = typename E::value_type; XTENSOR_ASSERT(A.dimension() == 2); XTENSOR_ASSERT(A.layout() == layout_type::column_major); uvector work(1); blas_index_t m = static_cast(A.shape()[0]); blas_index_t a_stride = std::max(blas_index_t(1), m); int info = cxxlapack::geqrf( m, static_cast(A.shape()[1]), A.data(), a_stride, tau.data(), work.data(), static_cast(-1) ); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Could not find workspace size for geqrf."); } work.resize(static_cast(std::real(work[0]))); info = cxxlapack::geqrf( m, static_cast(A.shape()[1]), A.data(), a_stride, tau.data(), work.data(), static_cast(work.size()) ); return info; } namespace detail { template inline auto init_u_vt(U& u, VT& vt, char jobz, std::size_t m, std::size_t n) { // rules for sgesdd // u: // if jobz == 'O' and M >= N, u is not referenced // if jobz == 'N', u is also not referenced // vt: // if jobz == 'O' and M < N vt is not referenced // if jobz == 'N', vt is also not referenced if (jobz == 'A' || (jobz == 'O' && m < n)) { u.resize({m, m}); } if (jobz == 'A' || (jobz == 'O' && m >= n)) { vt.resize({n, n}); } if (jobz == 'S') { u.resize({m, std::min(m, n)}); vt.resize({std::min(m, n), n}); } if (jobz == 'N') { // u AND vt are unreferenced -- can't use strides().back()... return std::make_pair(1, 1); } if (jobz == 'O') { // u OR vt are unreferenced -- can't use strides().back()... return m >= n ? std::make_pair(1, stride_back(vt)) : std::make_pair(stride_back(u), 1); } return std::make_pair( std::max(blas_index_t(u.shape()[0]), 1), std::max(blas_index_t(vt.shape()[0]), 1) ); } } // namespace detail template ::value>* = nullptr> auto gesdd(E& A, char jobz = 'A') { using value_type = typename E::value_type; using xtype1 = xtensor; using xtype2 = xtensor; XTENSOR_ASSERT(A.dimension() == 2); XTENSOR_ASSERT(A.layout() == layout_type::column_major); uvector work(1); std::size_t m = A.shape()[0]; std::size_t n = A.shape()[1]; xtype1 s; s.resize({std::max(static_cast(1), std::min(m, n))}); xtype2 u, vt; blas_index_t u_stride, vt_stride; std::tie(u_stride, vt_stride) = detail::init_u_vt(u, vt, jobz, m, n); uvector iwork(8 * std::min(m, n)); blas_index_t a_stride = static_cast(std::max(std::size_t(1), m)); int info = cxxlapack::gesdd( jobz, static_cast(A.shape()[0]), static_cast(A.shape()[1]), A.data(), a_stride, s.data(), u.data(), u_stride, vt.data(), vt_stride, work.data(), static_cast(-1), iwork.data() ); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Could not find workspace size for real gesdd."); } work.resize(static_cast(work[0])); info = cxxlapack::gesdd( jobz, static_cast(A.shape()[0]), static_cast(A.shape()[1]), A.data(), a_stride, s.data(), u.data(), u_stride, vt.data(), vt_stride, work.data(), static_cast(work.size()), iwork.data() ); return std::make_tuple(std::move(info), std::move(u), std::move(s), std::move(vt)); } // Complex variant of gesdd template ::value>* = nullptr> auto gesdd(E& A, char jobz = 'A') { using value_type = typename E::value_type; using underlying_value_type = typename value_type::value_type; using xtype1 = xtensor; using xtype2 = xtensor; XTENSOR_ASSERT(A.dimension() == 2); XTENSOR_ASSERT(A.layout() == layout_type::column_major); std::size_t m = A.shape()[0]; std::size_t n = A.shape()[1]; uvector work(1); uvector rwork(1); uvector iwork(8 * std::min(m, n)); std::size_t mx = std::max(m, n); std::size_t mn = std::min(m, n); if (jobz == 'N') { rwork.resize(5 * mn); } else if (mx > mn) { // TODO verify size rwork.resize(5 * mn * mn + 5 * mn); } else { // TODO verify size rwork.resize(std::max(5 * mn * mn + 5 * mn, 2 * mx * mn + 2 * mn * mn + mn)); } xtype1 s; s.resize({std::max(static_cast(1), std::min(m, n))}); xtype2 u, vt; blas_index_t u_stride, vt_stride; std::tie(u_stride, vt_stride) = detail::init_u_vt(u, vt, jobz, m, n); blas_index_t a_stride = static_cast(std::max(std::size_t(1), m)); int info = cxxlapack::gesdd( jobz, static_cast(A.shape()[0]), static_cast(A.shape()[1]), A.data(), a_stride, s.data(), u.data(), u_stride, vt.data(), vt_stride, work.data(), static_cast(-1), rwork.data(), iwork.data() ); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Could not find workspace size for complex gesdd."); } work.resize(static_cast(std::real(work[0]))); info = cxxlapack::gesdd( jobz, static_cast(A.shape()[0]), static_cast(A.shape()[1]), A.data(), a_stride, s.data(), u.data(), u_stride, vt.data(), vt_stride, work.data(), static_cast(work.size()), rwork.data(), iwork.data() ); return std::make_tuple(std::move(info), std::move(u), std::move(s), std::move(vt)); } template int potr(E& A, char uplo = 'L') { XTENSOR_ASSERT(A.dimension() == 2); XTENSOR_ASSERT(A.layout() == layout_type::column_major); int info = cxxlapack::potrf( uplo, static_cast(A.shape()[0]), A.data(), stride_back(A) ); return info; } template int potrs(E1& A, E2& b, char uplo = 'L') { XTENSOR_ASSERT(A.dimension() == 2); XTENSOR_ASSERT(A.layout() == layout_type::column_major); XTENSOR_ASSERT(b.dimension() == 1); XTENSOR_ASSERT(A.shape()[0] == A.shape()[1]); int info = cxxlapack::potrs( uplo, static_cast(A.shape()[0]), 1, A.data(), static_cast(A.shape()[0]), b.data(), static_cast(b.shape()[0]) ); return info; } template int trtrs(E1& A, E2& b, char uplo = 'L', char trans = 'N', char diag = 'N') { XTENSOR_ASSERT(A.dimension() == 2); XTENSOR_ASSERT(A.layout() == layout_type::column_major); XTENSOR_ASSERT(b.dimension() == 1); XTENSOR_ASSERT(A.shape()[0] == A.shape()[1]); int info = cxxlapack::trtrs( uplo, trans, diag, static_cast(A.shape()[0]), 1, A.data(), static_cast(A.shape()[0]), b.data(), static_cast(b.shape()[0]) ); return info; } /** * Interface to LAPACK getri. * * @param A matrix to invert * @return inverse of A */ template int getri(E& A, uvector& piv) { using value_type = typename E::value_type; XTENSOR_ASSERT(A.dimension() == 2); XTENSOR_ASSERT(A.layout() == layout_type::column_major); uvector work(1); // get work size int info = cxxlapack::getri( static_cast(A.shape()[0]), A.data(), stride_back(A), piv.data(), work.data(), static_cast(-1) ); if (info > 0) { XTENSOR_THROW(std::runtime_error, "Could not find workspace size for getri."); } work.resize(static_cast(std::real(work[0]))); info = cxxlapack::getri( static_cast(A.shape()[0]), A.data(), stride_back(A), piv.data(), work.data(), static_cast(work.size()) ); return info; } /** * Interface to LAPACK geev. * @returns info */ template int geev(E& A, char jobvl, char jobvr, W& wr, W& wi, V& VL, V& VR) { XTENSOR_ASSERT(A.dimension() == 2); XTENSOR_ASSERT(A.layout() == layout_type::column_major); using value_type = typename E::value_type; const auto N = A.shape()[0]; uvector work(1); int info = cxxlapack::geev( jobvl, jobvr, static_cast(N), A.data(), stride_back(A), wr.data(), wi.data(), VL.data(), stride_back(VL), VR.data(), stride_back(VR), work.data(), static_cast(-1) ); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Could not find workspace size for geev."); } work.resize(static_cast(work[0])); info = cxxlapack::geev( jobvl, jobvr, static_cast(N), A.data(), stride_back(A), wr.data(), wi.data(), VL.data(), stride_back(VL), VR.data(), stride_back(VR), work.data(), static_cast(work.size()) ); return info; } /** * Interface to LAPACK syevd. * @returns info */ template int syevd(E& A, char jobz, char uplo, W& w) { XTENSOR_ASSERT(A.dimension() == 2); XTENSOR_ASSERT(A.layout() == layout_type::column_major); using value_type = typename E::value_type; auto N = A.shape()[0]; uvector work(1); uvector iwork(1); int info = cxxlapack::syevd( jobz, uplo, static_cast(N), A.data(), stride_back(A), w.data(), work.data(), static_cast(-1), iwork.data(), static_cast(-1) ); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Could not find workspace size for syevd."); } work.resize(std::size_t(work[0])); iwork.resize(std::size_t(iwork[0])); info = cxxlapack::syevd( jobz, uplo, static_cast(N), A.data(), stride_back(A), w.data(), work.data(), static_cast(work.size()), iwork.data(), static_cast(iwork.size()) ); return info; } /** * Interface to LAPACK sygvd. * @returns info */ template int sygvd(E& A, E& B, blas_index_t itype, char jobz, char uplo, W& w) { XTENSOR_ASSERT(A.dimension() == 2); XTENSOR_ASSERT(A.layout() == layout_type::column_major); XTENSOR_ASSERT(B.dimension() == 2); XTENSOR_ASSERT(B.layout() == layout_type::column_major); using value_type = typename E::value_type; auto N = A.shape()[0]; XTENSOR_ASSERT(B.shape()[0] == N); uvector work(1); uvector iwork(1); int info = cxxlapack::sygvd( itype, jobz, uplo, static_cast(N), A.data(), stride_back(A), B.data(), stride_back(B), w.data(), work.data(), static_cast(-1), iwork.data(), static_cast(-1) ); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Could not find workspace size for sygvd."); } work.resize(std::size_t(work[0])); iwork.resize(std::size_t(iwork[0])); info = cxxlapack::sygvd( itype, jobz, uplo, static_cast(N), A.data(), stride_back(A), B.data(), stride_back(B), w.data(), work.data(), static_cast(work.size()), iwork.data(), static_cast(iwork.size()) ); return info; } /** * Complex version of geev */ template int geev(E& A, char jobvl, char jobvr, W& w, V& VL, V& VR) { // TODO implement for complex numbers XTENSOR_ASSERT(A.dimension() == 2); XTENSOR_ASSERT(A.layout() == layout_type::column_major); using value_type = typename E::value_type; using underlying_value_type = typename value_type::value_type; const auto N = A.shape()[0]; uvector work(1); uvector rwork(2 * N); int info = cxxlapack::geev( jobvl, jobvr, static_cast(N), A.data(), stride_back(A), w.data(), VL.data(), stride_back(VL), VR.data(), stride_back(VR), work.data(), -1, rwork.data() ); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Could not find workspace size for geev."); } work.resize(std::size_t(std::real(work[0]))); info = cxxlapack::geev( jobvl, jobvr, static_cast(N), A.data(), stride_back(A), w.data(), VL.data(), stride_back(VL), VR.data(), stride_back(VR), work.data(), static_cast(work.size()), rwork.data() ); return info; } template int heevd(E& A, char jobz, char uplo, W& w) { XTENSOR_ASSERT(A.dimension() == 2); XTENSOR_ASSERT(A.layout() == layout_type::column_major); using value_type = typename E::value_type; using underlying_value_type = typename value_type::value_type; auto N = A.shape()[0]; uvector work(1); uvector rwork(1); uvector iwork(1); int info = cxxlapack::heevd( jobz, uplo, static_cast(N), A.data(), stride_back(A), w.data(), work.data(), static_cast(-1), rwork.data(), static_cast(-1), iwork.data(), static_cast(-1) ); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Could not find workspace size for heevd."); } work.resize(std::size_t(std::real(work[0]))); rwork.resize(std::size_t(rwork[0])); iwork.resize(std::size_t(iwork[0])); info = cxxlapack::heevd( jobz, uplo, static_cast(N), A.data(), stride_back(A), w.data(), work.data(), static_cast(work.size()), rwork.data(), static_cast(rwork.size()), iwork.data(), static_cast(iwork.size()) ); return info; } template ::value>* = nullptr> int gelsd(E& A, F& b, S& s, blas_index_t& rank, double rcond) { using value_type = typename E::value_type; uvector work(1); uvector iwork(1); blas_index_t b_dim = b.dimension() > 1 ? static_cast(b.shape().back()) : 1; std::size_t m = A.shape()[0]; std::size_t n = A.shape()[1]; blas_index_t a_stride = static_cast(std::max(std::size_t(1), m)); blas_index_t b_stride = static_cast(std::max(std::max(std::size_t(1), m), n)); int info = cxxlapack::gelsd( static_cast(A.shape()[0]), static_cast(A.shape()[1]), b_dim, A.data(), a_stride, b.data(), b_stride, s.data(), rcond, rank, work.data(), static_cast(-1), iwork.data() ); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Could not find workspace size for gelsd."); } work.resize(std::size_t(work[0])); iwork.resize(std::size_t(iwork[0])); info = cxxlapack::gelsd( static_cast(A.shape()[0]), static_cast(A.shape()[1]), b_dim, A.data(), a_stride, b.data(), b_stride, s.data(), rcond, rank, work.data(), static_cast(work.size()), iwork.data() ); return info; } template ::value>* = nullptr> int gelsd(E& A, F& b, S& s, blas_index_t& rank, double rcond = -1) { using value_type = typename E::value_type; using underlying_value_type = typename value_type::value_type; uvector work(1); uvector rwork(1); uvector iwork(1); blas_index_t b_dim = b.dimension() > 1 ? static_cast(b.shape().back()) : 1; blas_index_t b_stride = b_dim == 1 ? static_cast(b.shape().front()) : stride_back(b); int info = cxxlapack::gelsd( static_cast(A.shape()[0]), static_cast(A.shape()[1]), b_dim, A.data(), stride_back(A), b.data(), b_stride, s.data(), rcond, rank, work.data(), static_cast(-1), rwork.data(), iwork.data() ); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Could not find workspace size for gelsd."); } work.resize(std::size_t(std::real(work[0]))); rwork.resize(std::size_t(rwork[0])); iwork.resize(std::size_t(iwork[0])); info = cxxlapack::gelsd( static_cast(A.shape()[0]), static_cast(A.shape()[1]), b_dim, A.data(), stride_back(A), b.data(), b_stride, s.data(), rcond, rank, work.data(), static_cast(work.size()), rwork.data(), iwork.data() ); return info; } } // namespace lapack } // namespace xt #endif xtensor-blas-0.21.0/include/xtensor-blas/xlinalg.hpp000066400000000000000000002077041456314707100224500ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #ifndef XLINALG_HPP #define XLINALG_HPP #include #include #include #include #include "xtensor/xarray.hpp" #include "xtensor/xcomplex.hpp" #include "xtensor/xeval.hpp" #include "xtensor/xio.hpp" #include "xtensor/xmanipulation.hpp" #include "xtensor/xstrided_view.hpp" #include "xtensor/xtensor.hpp" #include "xtensor/xutils.hpp" #include "xtensor/xview.hpp" #include "xtensor-blas/xblas.hpp" #include "xtensor-blas/xblas_utils.hpp" #include "xtensor-blas/xlapack.hpp" #include "xtl/xcomplex.hpp" namespace xt { namespace linalg { /// Selects special norm orders enum class normorder { frob, ///< Frobenius norm nuc, ///< Nuclear norm inf, ///< Positive infinity norm neg_inf ///< Negative infinity norm }; /** * Calculate norm of vector, or matrix * * @param vec input vector * @param ord order of norm. This can be any integer for a vector * or [-2,-1,1,2] for a matrix. * @return scalar result * * @tparam type of xexpression */ template auto norm(const xexpression& vec, int ord) { using value_type = typename E::value_type; using underlying_value_type = xtl::complex_value_type_t; const auto& v = vec.derived_cast(); underlying_value_type result = 0; if (v.dimension() == 1) { if (ord == 1) { if (xtl::is_complex::value) { for (std::size_t i = 0; i < v.size(); ++i) { result += std::abs(v(i)); } } else { blas::asum(v, result); } } else if (ord == 2) { blas::nrm2(v, result); } else if (ord == 0) { for (std::size_t i = 0; i < v.size(); ++i) { result += (v(i) != underlying_value_type(0)); } } else { for (std::size_t i = 0; i < v.size(); ++i) { result += static_cast(std::abs(std::pow(v(i), ord))); } result = static_cast(std::pow(result, 1. / static_cast(ord))); } return result; } else if (v.dimension() == 2) { if (ord == 1 || ord == -1) { xtensor s = sum(abs(v), {0}); if (ord == 1) { return *std::max_element(s.begin(), s.end()); } else { return *std::min_element(s.begin(), s.end()); } } if (ord == 2 || ord == -2) { auto M = copy_to_layout(v); auto gesdd_res = lapack::gesdd(M, 'N'); auto& s = std::get<2>(gesdd_res); if (ord == 2) { return *std::max_element(s.begin(), s.end()); } else { return *std::min_element(s.begin(), s.end()); } } } std::stringstream ss; ss << "Norm " << ord << " not implemented!" << std::endl; XTENSOR_THROW(std::runtime_error, ss.str()); } /** * Calculate matrix or vector norm using \ref normorder. * * @param vec The matrix or vector to take the norm of * @param ord normorder (frob, nuc, inf, neg_inf) * * @return norm value */ template auto norm(const xexpression& vec, normorder ord) { using value_type = xtl::complex_value_type_t; const auto& v = vec.derived_cast(); if (v.dimension() == 2) { if (ord == normorder::frob) { return static_cast(std::sqrt(sum(pow(abs(v), 2))())); } if (ord == normorder::nuc) { auto M = copy_to_layout(v); auto gesdd_res = lapack::gesdd(M, 'N'); auto& s = std::get<2>(gesdd_res); return std::accumulate(s.begin(), s.end(), value_type(0)); } if (ord == normorder::inf || ord == normorder::neg_inf) { xtensor s = xt::sum(abs(v), {1}); if (ord == normorder::inf) { return *std::max_element(s.begin(), s.end()); } else { return *std::min_element(s.begin(), s.end()); } } } else if (v.dimension() == 1) { if (ord == normorder::inf || ord == normorder::neg_inf) { auto s = abs(v); if (ord == normorder::inf) { return *std::max_element(s.begin(), s.end()); } else { return *std::min_element(s.begin(), s.end()); } } } std::stringstream ss; ss << "Norm not implemented!" << std::endl; XTENSOR_THROW(std::runtime_error, ss.str()); } /** * Calculate default norm (2-norm for vector, Frobenius norm for matrix) * * @param vec Input vector or matrix * @return norm */ template typename E::value_type norm(const xexpression& vec) { const auto& v = vec.derived_cast(); if (v.dimension() == 1) { return norm(vec, 2); } else { return norm(vec, normorder::frob); } } /** * Solve a linear matrix equation, or system of linear scalar equations. * Computes the “exact†solution, x, of the well-determined, i.e., full rank, * linear matrix equation ax = b. * * @param a Coefficient matrix * @param b Ordinate or “dependent variable†values. * @return Solution to the system a x = b. Returned shape is identical to b. */ template auto solve(const xexpression& A, const xexpression& b) { assert_nd_square(A); auto dA = copy_to_layout(A.derived_cast()); auto db = copy_to_layout(b.derived_cast()); int info = lapack::gesv(dA, db); if (info != 0) { XTENSOR_THROW(std::runtime_error, "The solution could not be computed"); } return db; } /** * Compute the (multiplicative) inverse of a matrix. * * @param A xexpression to be inverted * @return (Multiplicative) inverse of the matrix a. */ template auto inv(const xexpression& A) { assert_nd_square(A); auto dA = copy_to_layout(A.derived_cast()); uvector piv(std::min(dA.shape()[0], dA.shape()[1])); // DEV note: numpy uses gesv here, instead of getrf and getri. Might // be interesting to investigate if there is a perf or accuracy // difference. int info = lapack::getrf(dA, piv); if (info > 0) { XTENSOR_THROW(std::runtime_error, "Singular matrix not invertible (getrf)."); } info = lapack::getri(dA, piv); if (info > 0) { XTENSOR_THROW(std::runtime_error, "Singular matrix not invertible (getri)."); } return dA; } /** * Calculate the condition number of matrix M */ template auto cond(const xexpression& M, int ord) { return norm(M, ord) * norm(inv(M), ord); } template auto cond(const xexpression& M, normorder ord) { return norm(M, ord) * norm(inv(M), ord); } /** * Compute the eigenvalues and right eigenvectors of a square array. * * @param Matrix for which the eigenvalues and right eigenvectors will be * computed * @return (eigenvalues, eigenvectors) tuple. The first element corresponds to * the eigenvalues, each repeated according to its multiplicity. The eigenvalues * are not necessarily ordered. The second (1) element are the normalized (unit * “lengthâ€) eigenvectors, such that the column v[:, i] corresponds to the * eigenvalue w[i]. */ template ::value>* = nullptr> auto eig(const xexpression& A) { using underlying_type = typename E::value_type; using value_type = typename E::value_type; assert_nd_square(A); auto M = copy_to_layout(A.derived_cast()); std::size_t N = M.shape()[0]; std::array vN = {N}; xtensor wr(vN), wi(vN); std::array shp = {N, N}; xtensor VL(shp), VR(shp); // jobvl N: left eigenvectors of A are not computed // jobvr V: then right eigenvectors of A are computed int info = lapack::geev(M, 'N', 'V', wr, wi, VL, VR); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Eigenvalue calculation did not converge."); } auto eig_vecs = xtensor, 2>::from_shape({N, N}); auto eig_vals = xtensor, 1>::from_shape({N}); xt::real(eig_vals) = wr; xt::imag(eig_vals) = wi; for (std::size_t i = 0; i < N; ++i) { for (std::size_t j = 0; j < N; ++j) { if (wi(j) != 0) { eig_vecs(i, j) = std::complex(VR(i, j), VR(i, j + 1)); eig_vecs(i, j + 1) = std::complex(VR(i, j), -VR(i, j + 1)); ++j; } else { eig_vecs(i, j) = std::complex(VR(i, j), 0); } } } return std::make_tuple(std::move(eig_vals), std::move(eig_vecs)); } template ::value>* = nullptr> auto eig(const xexpression& A) { using value_type = typename E::value_type; assert_nd_square(A); auto M = copy_to_layout(A.derived_cast()); std::size_t N = M.shape()[0]; std::array vN = {N}; xtensor w(vN); std::array shp = {N, N}; xtensor VL(shp), VR(shp); // jobvl N: left eigenvectors of A are not computed // jobvr V: then right eigenvectors of A are computed int info = lapack::geev(M, 'N', 'V', w, VL, VR); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Eigenvalue calculation did not converge."); } return std::make_tuple(std::move(w), std::move(VR)); } /** * Compute the eigenvalues and eigenvectors of a square Hermitian or real * symmetric xexpression. * * @param A Matrix for which the eigenvalues and right eigenvectors are computed * @return xtensor containing the eigenvalues. */ template ::value>* = nullptr> auto eigh(const xexpression& A, char UPLO = 'L') { using value_type = typename E::value_type; assert_nd_square(A); auto M = copy_to_layout(A.derived_cast()); std::size_t N = M.shape()[0]; std::array vN = {N}; xtensor w(vN); int info = lapack::syevd(M, 'V', UPLO, w); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Eigenvalue computation did not converge."); } return std::make_tuple(std::move(w), std::move(M)); } template ::value>* = nullptr> auto eigh(const xexpression& A, char UPLO = 'L') { using value_type = typename E::value_type; using underlying_value_type = typename value_type::value_type; assert_nd_square(A); auto M = copy_to_layout(A.derived_cast()); std::size_t N = M.shape()[0]; std::array vN = {N}; xtensor w(vN); int info = lapack::heevd(M, 'V', UPLO, w); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Eigenvalue computation did not converge."); } return std::make_tuple(std::move(w), std::move(M)); } /** * Compute the generalized eigenvalues and eigenvectors of a square Hermitian or * real symmetric xexpression. * * @param A,B Matrices for which the generalized eigenvalues and right * eigenvectors are computed * @return xtensor containing the eigenvalues. */ template ::value>* = nullptr> auto eigh(const xexpression& A, const xexpression& B, const char UPLO = 'L') { using value_type = typename E::value_type; assert_nd_square(A); auto M1 = copy_to_layout(A.derived_cast()); auto M2 = copy_to_layout(B.derived_cast()); std::size_t N = M1.shape()[0]; std::array vN = {N}; xtensor w(vN); int info = lapack::sygvd(M1, M2, 1, 'V', UPLO, w); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Eigenvalue computation did not converge."); } return std::make_tuple(std::move(w), std::move(M1)); } #if 0 template ::value>* = nullptr> auto eigh(const xexpression& A, char UPLO = 'L') { using value_type = typename E::value_type; using underlying_value_type = typename value_type::value_type; auto M = copy_to_layout(A.derived_cast()); std::size_t N = M.shape()[0]; std::array vN = {N}; xtensor w(vN); int info = lapack::heevd(M, 'V', UPLO, w); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Eigenvalue computation did not converge."); } return std::make_tuple(std::move(w), std::move(M)); } #endif /** * Compute the eigenvalues of a square xexpression. * * @param A Matrix for which the eigenvalues are computed * @return xtensor containing the eigenvalues. */ template ::value>* = nullptr> auto eigvals(const xexpression& A) { using value_type = typename E::value_type; assert_nd_square(A); auto M = copy_to_layout(A.derived_cast()); std::size_t N = M.shape()[0]; std::array vN = {N}; xtensor wr(vN); xtensor wi(vN); // TODO check if we can remove allocation and pass nullptr as VL / VR std::array shp = {N, N}; xtensor VL(shp); xtensor VR(shp); auto info = lapack::geev(M, 'N', 'N', wr, wi, VL, VR); if (info != 0) { XTENSOR_THROW( std::runtime_error, "Failed to compute eigenvalue " + std::to_string(std::abs(info)) + "." ); } xtensor, 1> eig_vals; eig_vals.resize({N}); xt::real(eig_vals) = wr; xt::imag(eig_vals) = wi; return eig_vals; } template ::value>* = nullptr> auto eigvals(const xexpression& A) { using value_type = typename E::value_type; assert_nd_square(A); auto M = copy_to_layout(A.derived_cast()); std::size_t N = M.shape()[0]; std::array vN = {N}; xtensor w(vN); // TODO check if we can remove allocation and pass nullptr as VL / VR std::array shp = {N, N}; xtensor VL(shp); xtensor VR(shp); auto info = lapack::geev(M, 'N', 'N', w, VL, VR); if (info != 0) { XTENSOR_THROW( std::runtime_error, "Failed to compute eigenvalue " + std::to_string(std::abs(info)) + "." ); } using value_type = typename E::value_type; return w; } /** * Compute the eigenvalues of a Hermitian or real symmetric matrix xexpression. * * @param Matrix for which the eigenvalues are computed * @return xtensor containing the eigenvalues. */ template ::value>* = nullptr> auto eigvalsh(const xexpression& A, char UPLO = 'L') { using value_type = typename E::value_type; assert_nd_square(A); auto M = copy_to_layout(A.derived_cast()); std::size_t N = M.shape()[0]; std::array vN = {N}; xtensor w(vN); int info = lapack::syevd(M, 'N', UPLO, w); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Eigenvalue computation did not converge."); } return w; } template ::value>* = nullptr> auto eigvalsh(const xexpression& A, char UPLO = 'L') { using value_type = typename E::value_type; using underlying_value_type = typename value_type::value_type; assert_nd_square(A); auto M = copy_to_layout(A.derived_cast()); std::size_t N = M.shape()[0]; std::array vN = {N}; xtensor w(vN); int info = lapack::heevd(M, 'N', UPLO, w); if (info != 0) { XTENSOR_THROW(std::runtime_error, "Eigenvalue computation did not converge."); } return w; } namespace detail { template struct offset_iter_without_axis { using shape_type = typename A::shape_type; using size_type = typename A::size_type; using index_type = xindex_type_t; offset_iter_without_axis(const A& a, std::size_t axis) : m_a(a) , m_axis(axis) { resize_container(m_idx, a.dimension()); std::fill(m_idx.begin(), m_idx.end(), 0); m_offset = 0; } #define SC(X) static_cast(X) inline bool next() { size_type dim = static_cast(m_a.dimension()); for (size_type j = dim; j != 0; --j) { size_type i = j - 1; if (i == m_axis) { // skip } else if (m_idx[SC(i)] == m_a.shape()[SC(i)] - 1) { m_offset -= static_cast(m_idx[i]) * m_a.strides()[i]; m_idx[i] = size_type(0); if (i == 0 || m_axis == 0 && i == 1) { return false; } } else { ++m_idx[i]; m_offset += m_a.strides()[i]; return true; } } return false; } #undef SC inline std::ptrdiff_t offset() const { return m_offset; } private: const A& m_a; index_type m_idx; size_type m_axis; std::ptrdiff_t m_offset; }; } // namespace detail /** * Non-broadcasting dot function. * In the case of two 1D vectors, computes the vector dot * product. In the case of complex vectors, computes the dot * product without conjugating the first argument. * If \em t or \em o is a 2D matrix, computes the matrix-times-vector * product. If both \em t and \em o ar 2D matrices, computes * the matrix-product. * * @param t input array * @param o input array * * @return resulting array */ template auto dot(const xexpression& xt, const xexpression& xo) { using value_type = std::common_type_t; using return_type = std::conditional_t< (T::static_layout == O::static_layout) && (T::static_layout != layout_type::dynamic && T::static_layout != layout_type::any), xarray, xarray>; return_type result; auto&& t = view_eval(xt.derived_cast()); auto&& o = view_eval(xo.derived_cast()); // is one of each a scalar? just multiply if (t.dimension() == 0 || o.dimension() == 0) { return return_type(t * o); } if (t.dimension() == 1 && o.dimension() == 1) { result.resize(std::vector{1}); if (t.shape()[0] != o.shape()[0]) { XTENSOR_THROW(std::runtime_error, "Dot: shape mismatch."); } if (xtl::is_complex::value) { blas::dotu(t, o, result(0)); } else { blas::dot(t, o, result(0)); } return result; } else { if (t.dimension() == 2 && o.dimension() == 1) { XTENSOR_ASSERT( t.layout() == layout_type::row_major || t.layout() == layout_type::column_major ); XTENSOR_ASSERT(std::min(t.strides()[0], t.strides()[1]) <= 1); if (t.shape()[1] != o.shape()[0]) { XTENSOR_THROW(std::runtime_error, "Dot: shape mismatch."); } result.resize({static_cast(t.shape()[0])}); blas_index_t shape_x, shape_y; cxxblas::Transpose trans; if (result.layout() != t.layout()) { shape_x = static_cast(t.shape()[1]); shape_y = static_cast(t.shape()[0]); trans = cxxblas::Transpose::Trans; } else { shape_x = static_cast(t.shape()[0]); shape_y = static_cast(t.shape()[1]); trans = cxxblas::Transpose::NoTrans; } cxxblas::gemv( get_blas_storage_order(result), trans, shape_x, shape_y, value_type(1.0), t.data() + t.data_offset(), get_leading_stride(t), o.data() + o.data_offset(), get_leading_stride(o), value_type(0.0), result.data(), get_leading_stride(result) ); } else if (t.dimension() == 1 && o.dimension() == 2) { XTENSOR_ASSERT( o.layout() == layout_type::row_major || o.layout() == layout_type::column_major ); XTENSOR_ASSERT(std::min(o.strides()[0], o.strides()[1]) <= 1); if (t.shape()[0] != o.shape()[0]) { XTENSOR_THROW(std::runtime_error, "Dot: shape mismatch."); } result.resize({static_cast(o.shape()[1])}); blas_index_t shape_x, shape_y; cxxblas::Transpose trans; if (result.layout() != o.layout()) { shape_x = static_cast(o.shape()[1]); shape_y = static_cast(o.shape()[0]); trans = cxxblas::Transpose::NoTrans; } else { shape_x = static_cast(o.shape()[0]); shape_y = static_cast(o.shape()[1]); trans = cxxblas::Transpose::Trans; } cxxblas::gemv( get_blas_storage_order(result), trans, shape_x, shape_y, value_type(1.0), o.data() + o.data_offset(), get_leading_stride(o), t.data() + t.data_offset(), get_leading_stride(t), value_type(0.0), result.data(), get_leading_stride(result) ); } else if (t.dimension() == 2 && o.dimension() == 2) { XTENSOR_ASSERT( o.layout() == layout_type::row_major || o.layout() == layout_type::column_major ); XTENSOR_ASSERT(std::min(o.strides()[0], o.strides()[1]) <= 1); XTENSOR_ASSERT( t.layout() == layout_type::row_major || t.layout() == layout_type::column_major ); XTENSOR_ASSERT(std::min(t.strides()[0], t.strides()[1]) <= 1); if (t.shape()[1] != o.shape()[0]) { XTENSOR_THROW(std::runtime_error, "Dot: shape mismatch."); } cxxblas::Transpose transpose_A = cxxblas::Transpose::NoTrans, transpose_B = cxxblas::Transpose::NoTrans; if (result.layout() != t.layout()) { transpose_A = cxxblas::Transpose::Trans; } if (result.layout() != o.layout()) { transpose_B = cxxblas::Transpose::Trans; } // This adds a fast path for A * A' by calling SYRK and only computing // the upper triangle if (std::is_same::value && (static_cast(t.data() + t.data_offset()) == static_cast(o.data() + o.data_offset())) && ((transpose_A == cxxblas::Transpose::Trans && transpose_B == cxxblas::Transpose::NoTrans) || (transpose_A == cxxblas::Transpose::NoTrans && transpose_B == cxxblas::Transpose::Trans))) { // TODO add check to compare strides & shape result.resize( {static_cast(t.shape()[0]), static_cast(t.shape()[0])} ); cxxblas::syrk( get_blas_storage_order(result), cxxblas::StorageUpLo::Upper, transpose_A, static_cast(t.shape()[0]), static_cast(t.shape()[1]), value_type(1.0), t.data() + t.data_offset(), get_leading_stride(t), value_type(0.0), result.data(), get_leading_stride(result) ); for (std::size_t i = 0; i < t.shape()[0]; ++i) { for (std::size_t j = i + 1; j < t.shape()[0]; ++j) { result(j, i) = result(i, j); } } return result; } result.resize( {static_cast(t.shape()[0]), static_cast(o.shape()[1])} ); cxxblas::gemm( get_blas_storage_order(result), transpose_A, transpose_B, static_cast(t.shape()[0]), static_cast(o.shape()[1]), static_cast(o.shape()[0]), value_type(1.0), t.data() + t.data_offset(), get_leading_stride(t), o.data() + o.data_offset(), get_leading_stride(o), value_type(0.0), result.data(), get_leading_stride(result) ); } else { // TODO more testing for different layouts! std::size_t l = t.shape().back(); std::size_t match_dim = 0; if (o.dimension() > 1) { match_dim = o.dimension() - 2; } if (o.shape()[match_dim] != l) { XTENSOR_THROW(std::runtime_error, "Dot: shape mismatch."); } blas_index_t a_dim = static_cast(t.dimension()); blas_index_t b_dim = static_cast(o.dimension()); blas_index_t nd = a_dim + b_dim - 2; std::size_t j = 0; std::vector dimensions(static_cast(nd)); for (blas_index_t i = 0; i < a_dim - 1; ++i) { dimensions[j++] = t.shape()[static_cast(i)]; } for (blas_index_t i = 0; i < b_dim - 2; ++i) { dimensions[j++] = o.shape()[static_cast(i)]; } if (b_dim > 1) { dimensions[j++] = o.shape().back(); } result.resize(dimensions); blas_index_t a_stride = static_cast(t.strides().back()); blas_index_t b_stride = static_cast(o.strides()[match_dim]); auto a_iter = detail::offset_iter_without_axis>( t, t.dimension() - 1 ); auto b_iter = detail::offset_iter_without_axis>(o, match_dim); value_type temp; auto result_it = result.begin(); do { do { cxxblas::dot( static_cast(l), t.data() + a_iter.offset(), a_stride, o.data() + b_iter.offset(), b_stride, temp ); *(result_it++) = temp; } while (b_iter.next()); } while (a_iter.next()); } return result; } } /** * Computes the dot product for two vectors. * * Behaves different from \ref dot in the case of complex * vectors. If vectors are complex, vdot conjugates the first * argument \em t. * Note: Unlike NumPy, xtensor-blas currently doesn't flatten * the input arguments. * * @param t input vector (1D) * @param o input vector (1D) * * @return resulting array */ template auto vdot(const xexpression& a, const xexpression& b) { using common_type = std::common_type_t; XTENSOR_ASSERT(a.derived_cast().dimension() == 1); XTENSOR_ASSERT(b.derived_cast().dimension() == 1); common_type result = 0; blas::dot(a, b, result); return result; } /** * Compute the outer product of two vectors. * * @param t input vector (1D) * @param o input vector (1D) * * @return resulting array */ template auto outer(const xexpression& a, const xexpression& b) { using common_type = std::common_type_t; using return_type = xtensor; XTENSOR_ASSERT(a.derived_cast().dimension() == 1); XTENSOR_ASSERT(b.derived_cast().dimension() == 1); typename return_type::shape_type s = {a.derived_cast().shape()[0], b.derived_cast().shape()[0]}; return_type result(s, common_type(0)); blas::ger(a, b, result); return result; } /** * Compute the determinant by utilizing LU factorization * * @param A matrix for which determinant is to be computed * @returns determinant of the \em A */ template auto det(const xexpression& A) { using value_type = typename T::value_type; assert_nd_square(A); xtensor LU = A.derived_cast(); uvector piv(std::min(LU.shape()[0], LU.shape()[1])); lapack::getrf(LU, piv); value_type result(1); for (std::size_t i = 0; i < piv.size(); ++i) { if (piv[i] != int(i + 1)) { result *= value_type(-1); } } for (std::size_t i = 0; i < LU.shape()[0]; ++i) { result *= LU(i, i); } return result; } /** * Compute the sign and (natural) logarithm of the determinant of an * xexpression. * * If an array has a very small or very large determinant, then a call to det * may overflow or underflow. This routine is more robust against such issues, * because it computes the logarithm of the determinant rather than the * determinant itself. * * @param A matrix for which determinant is to be computed * @returns tuple containing (sign, determinant) */ template ::value, int> = 0> auto slogdet(const xexpression& A) { using value_type = typename T::value_type; assert_nd_square(A); xtensor LU = A.derived_cast(); uvector piv(std::min(LU.shape()[0], LU.shape()[1])); int info = lapack::getrf(LU, piv); if (info != 0) { XTENSOR_THROW(std::runtime_error, "LU factorization did not compute."); } value_type result(0); int sign = 0; for (std::size_t i = 0; i < piv.size(); ++i) { sign += (piv[i] != int(i + 1)); } value_type v_sign = (sign % 2) ? -1 : 1; for (std::size_t i = 0; i < LU.shape()[0]; ++i) { auto abs_elem = std::abs(LU(i, i)); v_sign *= (LU(i, i) / abs_elem); result += std::log(abs_elem); } return std::make_tuple(std::move(v_sign), std::move(result)); } /// @cond DOXYGEN_INCLUDE_SFINAE template ::value, int> = 0> auto slogdet(const xexpression& A) { using value_type = typename T::value_type; assert_nd_square(A); xtensor LU = A.derived_cast(); uvector piv(std::min(LU.shape()[0], LU.shape()[1])); int info = lapack::getrf(LU, piv); if (info != 0) { return std::make_tuple(value_type(0), -std::numeric_limits::infinity()); } value_type result(0); int sign = 0; for (std::size_t i = 0; i < piv.size(); ++i) { sign += (piv[i] != int(i + 1)); } for (std::size_t i = 0; i < LU.shape()[0]; ++i) { value_type abs_el = LU(i, i); if (abs_el < 0) { sign += 1; abs_el = -abs_el; } result += std::log(abs_el); } value_type v_sign = (sign % 2) ? -1 : 1; return std::make_tuple(std::move(v_sign), std::move(result)); } /// @endcond namespace detail { template inline auto call_gqr(E& A, T& tau, blas_index_t n) -> std::enable_if_t::value> { int info = lapack::orgqr(A, tau, n); if (info > 0) { XTENSOR_THROW(std::runtime_error, "Could not find Q (orgqr)."); } } template inline auto call_gqr(E& A, T& tau, blas_index_t n) -> std::enable_if_t::value> { int info = lapack::ungqr(A, tau, n); if (info > 0) { XTENSOR_THROW(std::runtime_error, "Could not find Q (ungqr)."); } } } // namespace detail namespace xblas_detail { template inline void triu_inplace(T& R) { for (std::size_t i = 0; i < R.shape()[0]; ++i) { for (std::size_t j = 0; j < i && j < R.shape()[1]; j++) { R(i, j) = 0; } } } } // namespace xblas_detail /// Select the mode for the qr decomposition ``K = min(M, K)`` enum class qrmode { reduced, ///< return Q, R with dimensions (M, K), (K, N) (default) complete, ///< return Q, R with dimensions (M, M), (M, N) r, ///< return empty Q and R with dimensions (0, 0), (K, N) raw ///< return H, Tau with dimensions (N, M), (K, 1) }; /** * Compute the QR decomposition of \em A. * @param t The matrix to calculate Q and R for * @return std::tuple with Q and R */ template auto qr(const xexpression& A, qrmode mode = qrmode::reduced) { using value_type = typename T::value_type; using xtype = xarray; xtype R = A.derived_cast(); std::size_t M = R.shape()[0]; std::size_t N = R.shape()[1]; std::size_t K = std::min(M, N); auto tau = xarray::from_shape({K}); int info = lapack::geqrf(R, tau); if (info != 0) { XTENSOR_THROW(std::runtime_error, "QR decomposition failed."); } // explicitly set shape/size == 0! auto Q = xtype::from_shape({0}); if (mode == qrmode::r) { R = xt::view(R, range(0, K), all()); xblas_detail::triu_inplace(R); return std::make_tuple(std::move(Q), std::move(R)); } if (mode == qrmode::raw) { R = transpose(R); return std::make_tuple(std::move(R), std::move(tau)); } blas_index_t mc; if (mode == qrmode::complete && M > N) { mc = static_cast(M); Q.resize({M, M}); } else { mc = static_cast(K); Q.resize({M, N}); } xt::view(Q, all(), range(0, N)) = R; detail::call_gqr(Q, tau, mc); Q = xt::view(Q, all(), range(0, mc)); R = xt::view(R, range(0, mc), all()); xblas_detail::triu_inplace(R); return std::make_tuple(std::move(Q), std::move(R)); } /** * Compute the Cholesky decomposition of \em A. * @return the decomposed matrix */ template auto cholesky(const xexpression& A) { assert_nd_square(A); auto M = copy_to_layout(A.derived_cast()); int info = lapack::potr(M, 'L'); if (info > 0) { XTENSOR_THROW(std::runtime_error, "Cholesky decomposition failed."); } // delete upper triangle XTENSOR_ASSERT(M.shape()[0] > 1 && M.shape()[1] > 1); for (std::size_t i = 0; i < M.shape()[0]; ++i) { for (std::size_t j = i + 1; j < M.shape()[1]; ++j) { M(i, j) = 0; } } return M; } /** * Solves a system of linear equations M*X = B with a symmetric * where M = A*A**T if uplo is L. * Factorization of M can be computed with cholesky. * @return solution X */ template auto solve_cholesky(const xexpression& A, const xexpression& b) { assert_nd_square(A); auto M = copy_to_layout(A.derived_cast()); auto p = copy_to_layout(b.derived_cast()); int info = lapack::potrs(M, p, 'L'); if (info > 0) { XTENSOR_THROW(std::runtime_error, "Cholesky decomposition failed."); } return p; } /** * Solves Ax = b, where A is a lower triangular matrix * @return solution x */ template auto solve_triangular(const xexpression& A, const xexpression& b) { assert_nd_square(A); auto M = copy_to_layout(A.derived_cast()); auto p = copy_to_layout(b.derived_cast()); int info = lapack::trtrs(M, p, 'L', 'N'); if (info > 0) { XTENSOR_THROW(std::runtime_error, "Cholesky decomposition failed."); } return p; } /** * Compute the SVD decomposition of \em A. * @return tuple containing S, V, and D */ template auto svd(const xexpression& A, bool full_matrices = true, bool compute_uv = true) { auto M = copy_to_layout(A.derived_cast()); char job_type = 'A'; if (!compute_uv) { job_type = 'N'; } else if (!full_matrices && compute_uv) { job_type = 'S'; } auto result = lapack::gesdd(M, job_type); if (std::get<0>(result) > 0) { XTENSOR_THROW(std::runtime_error, "SVD decomposition failed."); } return std::make_tuple( std::move(std::get<1>(result)), std::move(std::get<2>(result)), std::move(std::get<3>(result)) ); } namespace detail { template struct conj_eval_impl { template static const E& run(const E& e) { return e; } }; template <> struct conj_eval_impl { template static auto run(const E& e) { return xt::conj(e); } }; template inline decltype(auto) conj_eval(const E& e) { return conj_eval_impl::value>::run(e); } } // namespace detail /** * Calculate Moore-Rose pseudo inverse using LAPACK SVD. */ template auto pinv(const xexpression& A, double rcond = 1e-15) { using value_type = typename T::value_type; const auto& dA = A.derived_cast(); xtensor M = detail::conj_eval(dA); auto gesdd_res = svd(M, false, true); auto u = std::move(std::get<0>(gesdd_res)); auto s = std::move(std::get<1>(gesdd_res)); auto vt = std::move(std::get<2>(gesdd_res)); using real_value_type = typename decltype(s)::value_type; real_value_type cutoff = static_cast(rcond) * (*std::max_element(s.begin(), s.end())); for (std::size_t i = 0; i < s.size(); ++i) { if (s(i) > cutoff) { s(i) = real_value_type(1.) / s(i); } else { s(i) = 0; } } auto ut = xt::transpose(u); auto vww = xt::view(s, xt::all(), xt::newaxis()); auto m = xt::eval(vww * ut); auto vtt = xt::transpose(vt); auto result = dot(vtt, m); return result; } /** * Calculate matrix power A**n * * @param mat The matrix * @param n The exponent * * @return resulting array */ template auto matrix_power(const xexpression& A, long n) { using input_type = std::decay_t; using value_type = typename input_type::value_type; using xtype = xtensor; // copy input matrix xtype mat = A.derived_cast(); XTENSOR_ASSERT(mat.dimension() == 2); XTENSOR_ASSERT(mat.shape()[0] == mat.shape()[1]); xtype res(mat.shape()); if (n == 0) { res = eye(mat.shape()[0]); return res; } else if (n < 0) { mat = inv(mat); n = -n; } xtype temp(mat.shape()); res = mat; if (n <= 3) { for (int i = 0; i < n - 1; ++i) { blas::gemm(res, mat, temp); res = temp; } return res; } // if n > 3, do a binary decomposition (copied from NumPy) long bits, var = n, i = 0; for (bits = 0; var != 0; ++bits) { var >>= 1; } while (~n & (1 << i)) { blas::gemm(mat, mat, temp); temp = res; ++i; } ++i; res = mat; for (; i < bits; ++i) { blas::gemm(mat, mat, temp); mat = temp; if (n & (1 << i)) { blas::gemm(res, mat, temp); res = temp; } } return res; } /** * Compute the trace of a xexpression. */ template auto trace(const xexpression& M, int offset = 0, int axis1 = 0, int axis2 = 1) { const auto& dM = M.derived_cast(); auto d = xt::diagonal(dM, offset, std::size_t(axis1), std::size_t(axis2)); std::size_t dim = d.dimension(); if (dim == 1) { return xt::xarray(xt::sum(d)()); } else { return xt::xarray(xt::sum(d, {dim - 1})); } } /** * Calculate the Kronecker product between two 2D xexpressions. */ template auto kron(const xexpression& a, const xexpression& b) { using value_type = std::common_type_t; const auto& da = a.derived_cast(); const auto& db = b.derived_cast(); XTENSOR_ASSERT(da.dimension() == 2); XTENSOR_ASSERT(db.dimension() == 2); std::array shp = {da.shape()[0] * db.shape()[0], da.shape()[1] * db.shape()[1]}; xtensor res(shp); for (std::size_t i = 0; i < da.shape()[0]; ++i) { for (std::size_t j = 0; j < da.shape()[1]; ++j) { for (std::size_t k = 0; k < db.shape()[0]; ++k) { for (std::size_t h = 0; h < db.shape()[1]; ++h) { res(i * db.shape()[0] + k, j * db.shape()[1] + h) = da(i, j) * db(k, h); } } } } return res; } /** * Calculate the matrix rank of \ref m. * If tol == -1, the tolerance is automatically computed. * * @param m matrix for which rank is calculated * @param tol tolerance for finding rank */ template int matrix_rank(const xexpression& m, double tol = -1.0) { using value_type = typename T::value_type; xtensor M = m.derived_cast(); auto svd_res = svd(m, true, false); auto s = std::get<1>(svd_res); auto max_el = std::max_element(s.begin(), s.end()); if (tol == -1.0) { tol = (*max_el) * static_cast(std::max(M.shape()[0], M.shape()[1])) * std::numeric_limits::epsilon(); } int sm = 0; for (const auto& el : s) { if (el > tol) { ++sm; } } return sm; } /** * Calculate the least-squares solution to a linear matrix equation. * * @param A coefficient matrix * @param b Ordinate, or dependent variable values. If b is two-dimensional, * the least-squares solution is calculated for each of the K columns * of b. * @param rcond Cut-off ratio for small singular values of \em A. * For the purposes of rank determination, singular values are * treated as zero if they are smaller than rcond times the largest singular * value of a. * * @return tuple containing (x, residuals, rank, s) where: * \em x is the least squares solution. Note that the solution is always * returned as a 2D matrix where the columns are the solutions (even for a 1D * \em b). \em s Sums of residuals; squared Euclidean 2-norm for each column in * b - a*x. If the rank of \em A is < N or M <= N, this is an empty xtensor. \em * rank the rank of \em A \em s singular values of \em A */ template auto lstsq(const xexpression& A, const xexpression& b, double rcond = -1.0) { using value_type = typename T::value_type; using underlying_value_type = xtl::complex_value_type_t; xtensor dA = A.derived_cast(); std::size_t M = dA.shape()[0]; std::size_t N = dA.shape()[1]; auto& b_ref = b.derived_cast(); if (dA.dimension() != 2) { XTENSOR_THROW(std::runtime_error, "Expected 2D expression for A"); } if (!(b_ref.dimension() <= 2)) { XTENSOR_THROW(std::runtime_error, "Expected 1- or 2D expression for A."); } if (b_ref.shape()[0] != M) { XTENSOR_THROW(std::runtime_error, "Shape of 'b' for lstsq does not match."); } // find number of rhs std::size_t nrhs = (b_ref.dimension() == 1) ? 1 : b_ref.shape()[1]; // as the dgelsd docs say, on entry it's M-by-nrhs, then result N-by-nrhs // that is why we need to allocate *MORE* space than just b here for M > N auto db = xarray::from_shape({std::max(M, N), nrhs}); bool is_1d = false; if (b_ref.dimension() == 1) { is_1d = true; xt::view(db, range(0, M), xt::all()) = xt::view(b_ref, xt::all(), xt::newaxis()); } else { xt::view(db, range(0, M), xt::all()) = b_ref; } auto s = xtensor::from_shape({std::min(M, N)}); blas_index_t rank; lapack::gelsd(dA, db, s, rank, rcond); auto residuals = xtensor::from_shape({0}); if (std::size_t(rank) == N && M > N) { residuals.resize({db.shape()[1]}); for (std::size_t i = 0; i < db.shape()[1]; ++i) { underlying_value_type temp = 0; for (std::size_t j = N; j < db.shape()[0]; ++j) { temp += std::pow(std::abs(db(j, i)), 2); } residuals(i) = temp; } } auto vdb = view(db, range(std::size_t(0), N), xt::all()); db = vdb; if (is_1d) { db = xt::squeeze(db); } return std::make_tuple(std::move(db), std::move(residuals), std::move(rank), std::move(s)); } /** * @brief Non-broadcasting cross product between two vectors. * * Calculate cross product between two 1D vectors with 2- or 3 entries. * If only two entries are available, the third entry is assumed to be 0. * * @param a input vector * @param b input vector * @return resulting array */ template auto cross(const xexpression& a, const xexpression& b) { using return_type = xtensor; auto res = return_type::from_shape({3}); const E1& da = a.derived_cast(); const E2& db = b.derived_cast(); if (da.size() == 3 && db.size() == 3) { res(0) = da(1) * db(2) - da(2) * db(1); res(1) = da(2) * db(0) - da(0) * db(2); res(2) = da(0) * db(1) - da(1) * db(0); } else if (da.size() == 2 && db.size() == 3) { res(0) = da(1) * db(2); res(1) = -(da(0) * db(2)); res(2) = da(0) * db(1) - da(1) * db(0); } else if (da.size() == 3 && db.size() == 2) { res(0) = -(da(2) * db(1)); res(1) = da(2) * db(0); res(2) = da(0) * db(1) - da(1) * db(0); } else if (da.size() == 2 && db.size() == 2) { res(0) = 0; res(1) = 0; res(2) = da(0) * db(1) - da(1) * db(0); } else { XTENSOR_THROW(std::runtime_error, "a or b did not have appropriate size 2 or 3."); } return res; } /** * @brief Compute tensor dot product along specified axes for arrays * * Compute the sum of products along the last \em naxes axes of a and first * \em naxes axes of b. * * @param xa input array * @param xb input array * @param naxes the number of axes to sum over * @return resulting array */ template auto tensordot(const xexpression& xa, const xexpression& xb, std::size_t naxes = 2) { using value_type = std::common_type_t; using result_type = std::conditional_t< T::static_layout == O::static_layout && (T::static_layout != layout_type::dynamic && T::static_layout != layout_type::any), xarray, xarray>; result_type result; auto&& a = view_eval(xa.derived_cast()); auto&& b = view_eval(xb.derived_cast()); if (naxes == 0) { // special case tensor outer product product xt::dynamic_shape result_shape(a.dimension() + b.dimension()); std::size_t j = 0; for (std::size_t i = 0; i < a.dimension(); ++i) { result_shape[j++] = a.shape()[i]; } for (std::size_t i = 0; i < b.dimension(); ++i) { result_shape[j++] = b.shape()[i]; } // flatten a/b auto vec_a = xt::ravel(a); auto vec_b = xt::ravel(b); // take the outer product of the two vectors result = outer(vec_a, vec_b); // reshape the result result.reshape(result_shape); } else { // Sum of products over last n axes of A and the first n axis of b XTENSOR_ASSERT(a.dimension() >= naxes); XTENSOR_ASSERT(b.dimension() >= naxes); auto as_it = a.shape().begin() + (a.dimension() - naxes); auto bs_it = b.shape().begin(); std::size_t sum_len = 1; for (std::size_t i = 0; i < naxes; ++i) { auto a_val = *as_it; auto b_val = *bs_it; // check for axes size match if (a_val != b_val) { XTENSOR_THROW(std::runtime_error, "Shape mismatch for sum"); } else { sum_len *= a_val; } ++as_it; ++bs_it; } xt::dynamic_shape result_shape; std::size_t keep_a_len = 1; for (auto it = a.shape().begin(); it != a.shape().begin() + (a.dimension() - naxes); ++it) { std::size_t len = *it; keep_a_len *= len; result_shape.push_back(len); } std::size_t keep_b_len = 1; for (auto it = b.shape().begin() + naxes; it != b.shape().end(); ++it) { std::size_t len = *it; keep_b_len *= len; result_shape.push_back(len); } xarray a_mat = a; a_mat.reshape({keep_a_len, sum_len}); xarray b_mat = b; b_mat.reshape({sum_len, keep_b_len}); result = dot(a_mat, b_mat); if (result_shape.empty()) { result.reshape({1}); } else { result.reshape(result_shape); } } return result; } /** * @brief Compute tensor dot product along specified axes for arrays * * Compute the sum of products along the axes \em ax_a for a and \em ax_b for b * * @param xa input array * @param xb input array * @param ax_a axes to sum over for \em a * @param ax_b axes to sum over for \em b * @return resulting array */ template auto tensordot( const xexpression& xa, const xexpression& xb, const std::vector& ax_a, const std::vector& ax_b ) { auto&& a = view_eval(xa.derived_cast()); auto&& b = view_eval(xb.derived_cast()); XTENSOR_ASSERT(ax_a.size() == ax_b.size()); XTENSOR_ASSERT(ax_a.size() < a.dimension()); XTENSOR_ASSERT(ax_b.size() < b.dimension()); std::size_t n_ax = ax_a.size(); for (std::size_t i = 0; i < n_ax; ++i) { XTENSOR_ASSERT(ax_a[i] < a.dimension()); XTENSOR_ASSERT(ax_b[i] < b.dimension()); } // Move the axes to sum over to the end of a xt::dynamic_shape newaxes_a; xt::dynamic_shape result_shape; for (std::size_t i = 0; i < a.dimension(); ++i) { auto a_ax_it = std::find(ax_a.begin(), ax_a.end(), i); // first pass if i is not in ax_a, add to newaxes_a if (a_ax_it == ax_a.end()) { newaxes_a.push_back(i); } } for (auto& a_ax_it : ax_a) { newaxes_a.push_back(a_ax_it); } // Move the axes to sum over to the start of b xt::dynamic_shape newaxes_b; for (auto& b_ax_it : ax_b) { newaxes_b.push_back(b_ax_it); } for (std::size_t i = 0; i < b.dimension(); ++i) { auto b_ax_it = std::find(ax_b.begin(), ax_b.end(), i); // second pass if i is not in ax_b add to newaxes_b if (b_ax_it == ax_b.end()) { newaxes_b.push_back(i); } } auto a_t = xt::transpose(a, newaxes_a); auto b_t = xt::transpose(b, newaxes_b); // the integer arg form of tensordot will handle the reshape of output for us return tensordot(a_t, b_t, n_ax); } } // namespace linalg } // namespace xt #endif xtensor-blas-0.21.0/readthedocs.yml000066400000000000000000000001671456314707100172370ustar00rootroot00000000000000version: 2 build: os: ubuntu-22.04 tools: python: mambaforge-22.9 conda: environment: docs/environment.yml xtensor-blas-0.21.0/rename_headers.py000066400000000000000000000021751456314707100175440ustar00rootroot00000000000000import sys import re import os from shutil import copyfile args = sys.argv[1:] expr = r"#include *[\<\"](?P.+)[\>\"]" def mkdir(path): dname = os.path.dirname(path) if not os.path.exists(dname): print("Making dir: ", dname) os.makedirs(dname) for arg in args: print("Opening: ", arg) temp = "" if os.path.isdir(arg): continue arg2 = arg.replace('flens', '../xflens/') if arg.endswith(('.cxx', '.tcc', '.h', '.cc')): with open(arg) as f: for l in f.readlines(): match = re.match(expr, l) if match: path = match.group('path') if path.startswith('cxxblas/') or path.startswith('cxxlapack/'): path = "xflens/" + path temp += '#include \"' + path + '"\n' else: temp += l else: temp += l mkdir(arg2) with open(arg2, 'w+') as f: f.write(temp) else: mkdir(arg2) copyfile(arg, arg2) xtensor-blas-0.21.0/test/000077500000000000000000000000001456314707100152025ustar00rootroot00000000000000xtensor-blas-0.21.0/test/CMakeLists.txt000066400000000000000000000143721456314707100177510ustar00rootroot00000000000000############################################################################ # Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht # # Copyright (c) QuantStack # # # # Distributed under the terms of the BSD 3-Clause License. # # # # The full license is in the file LICENSE, distributed with this software. # ############################################################################ cmake_minimum_required(VERSION 3.8) if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) project(xtensor-blas-test) enable_testing() find_package(xtensor REQUIRED CONFIG) set(XTENSOR_INCLUDE_DIR ${xtensor_INCLUDE_DIRS}) find_package(xtensor-blas REQUIRED CONFIG) set(XTENSOR_BLAS_INCLUDE_DIR ${xblas_INCLUDE_DIRS}) endif () if(NOT CMAKE_BUILD_TYPE) message(STATUS "Setting tests build type to Release") set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) else() message(STATUS "Tests build type is ${CMAKE_BUILD_TYPE}") endif() include(CheckCXXCompilerFlag) string(TOUPPER "${CMAKE_BUILD_TYPE}" U_CMAKE_BUILD_TYPE) include(set_compiler_flag.cmake) if(CPP17) # User requested C++17, but compiler might not oblige. set_compiler_flag( _cxx_std_flag CXX "-std=c++17" # this should work with GNU, Intel, PGI "/std:c++17" # this should work with MSVC ) if(_cxx_std_flag) message(STATUS "Building with C++17") endif() else() set_compiler_flag( _cxx_std_flag CXX REQUIRED "-std=c++14" # this should work with GNU, Intel, PGI "/std:c++14" # this should work with MSVC ) message(STATUS "Building with C++14") endif() if(NOT _cxx_std_flag) message(FATAL_ERROR "xtensor-blas needs a C++14-compliant compiler.") endif() if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR (CMAKE_CXX_COMPILER_ID MATCHES "Intel" AND NOT WIN32)) CHECK_CXX_COMPILER_FLAG(-march=native arch_native_supported) if(arch_native_supported AND NOT CMAKE_CXX_FLAGS MATCHES "-march") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_cxx_std_flag} -Wunused-parameter -Wextra -Wreorder -Wconversion -Wsign-conversion") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wold-style-cast -Wunused-variable") elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_cxx_std_flag} /EHsc /MP /bigobj /wd4800") set(CMAKE_EXE_LINKER_FLAGS /MANIFEST:NO) add_definitions(-D_CRT_SECURE_NO_WARNINGS) add_definitions(-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING) elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") if(NOT WIN32) CHECK_CXX_COMPILER_FLAG(-march=native arch_native_supported) if(arch_native_supported AND NOT CMAKE_CXX_FLAGS MATCHES "-march") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_cxx_std_flag} -Wunused-parameter -Wextra -Wreorder -Wconversion -Wsign-conversion") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wold-style-cast -Wunused-variable") else() # We are using clang-cl set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_cxx_std_flag} /EHsc /MP /bigobj -Wno-unused-command-line-argument") set(CMAKE_EXE_LINKER_FLAGS /MANIFEST:NO) add_definitions(-D_CRT_SECURE_NO_WARNINGS) add_definitions(-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING) endif() else() message(FATAL_ERROR "Unsupported compiler: ${CMAKE_CXX_COMPILER_ID}") endif() if(DOWNLOAD_GTEST OR GTEST_SRC_DIR) if(DOWNLOAD_GTEST) # Download and unpack googletest at configure time configure_file(downloadGTest.cmake.in googletest-download/CMakeLists.txt) else() # Copy local source of googletest at configure time configure_file(copyGTest.cmake.in googletest-download/CMakeLists.txt) endif() execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . RESULT_VARIABLE result WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download ) if(result) message(FATAL_ERROR "CMake step for googletest failed: ${result}") endif() execute_process(COMMAND ${CMAKE_COMMAND} --build . RESULT_VARIABLE result WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download ) if(result) message(FATAL_ERROR "Build step for googletest failed: ${result}") endif() set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) # Add googletest directly to our build. This defines # the gtest and gtest_main targets. add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src ${CMAKE_CURRENT_BINARY_DIR}/googletest-build EXCLUDE_FROM_ALL) set(GTEST_INCLUDE_DIRS "${gtest_SOURCE_DIR}/include") add_library(GTest::GTest INTERFACE IMPORTED) target_link_libraries(GTest::GTest INTERFACE gtest) add_library(GTest::Main INTERFACE IMPORTED) target_link_libraries(GTest::Main INTERFACE gtest_main) else() find_package(GTest REQUIRED) endif() find_package(Threads) include_directories(${GTEST_INCLUDE_DIRS} SYSTEM) include_directories(${XTENSOR_INCLUDE_DIR}) include_directories(${XBLAS_INCLUDE_DIR}) if(USE_OPENBLAS) find_package(OpenBLAS REQUIRED) set(BLAS_LIBRARIES ${CMAKE_INSTALL_PREFIX}${OpenBLAS_LIBRARIES}) else() find_package(BLAS REQUIRED) find_package(LAPACK REQUIRED) endif() message(STATUS "BLAS VENDOR: " ${BLA_VENDOR}) message(STATUS "BLAS LIBRARIES: " ${BLAS_LIBRARIES}) set(XTENSOR_BLAS_TESTS main.cpp test_blas.cpp test_lapack.cpp test_linalg.cpp test_lstsq.cpp test_qr.cpp test_dot.cpp test_tensordot.cpp test_lstsq.cpp test_dot.cpp test_dot_extended.cpp test_qr.cpp test_float_norm.cpp ) add_executable(test_xtensor_blas ${XTENSOR_BLAS_TESTS} ${XTENSOR_BLAS_HEADERS} ${XTENSOR_HEADERS}) if(DOWNLOAD_GTEST OR GTEST_SRC_DIR) add_dependencies(test_xtensor_blas gtest_main) endif() target_link_libraries(test_xtensor_blas ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} GTest::GTest GTest::Main ${CMAKE_THREAD_LIBS_INIT}) add_custom_target(xtest COMMAND test_xtensor_blas DEPENDS test_xtensor_blas) add_test(NAME xtest COMMAND test_xtensor_blas) xtensor-blas-0.21.0/test/copyGTest.cmake.in000066400000000000000000000020021456314707100205240ustar00rootroot00000000000000############################################################################ # Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht # # Copyright (c) QuantStack # # # # Distributed under the terms of the BSD 3-Clause License. # # # # The full license is in the file LICENSE, distributed with this software. # ############################################################################ cmake_minimum_required(VERSION 2.8.2) project(googletest-download NONE) include(ExternalProject) ExternalProject_Add(googletest URL "${GTEST_SRC_DIR}" SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-src" BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-build" CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" TEST_COMMAND "" ) xtensor-blas-0.21.0/test/downloadGTest.cmake.in000066400000000000000000000020751456314707100213730ustar00rootroot00000000000000############################################################################ # Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht # # Copyright (c) QuantStack # # # # Distributed under the terms of the BSD 3-Clause License. # # # # The full license is in the file LICENSE, distributed with this software. # ############################################################################ cmake_minimum_required(VERSION 2.8.2) project(googletest-download NONE) include(ExternalProject) ExternalProject_Add(googletest GIT_REPOSITORY https://github.com/JohanMabille/googletest.git GIT_TAG warnings SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-src" BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-build" CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" TEST_COMMAND "" ) xtensor-blas-0.21.0/test/main.cpp000066400000000000000000000012521456314707100166320ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) 2016, Johan Mabille and Sylvain Corlay * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #include "gtest/gtest.h" int main(int argc, char* argv[]) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } xtensor-blas-0.21.0/test/set_compiler_flag.cmake000066400000000000000000000051711456314707100216660ustar00rootroot00000000000000# Copied from # https://github.com/dev-cafe/cmake-cookbook/blob/master/chapter-07/recipe-03/c-cxx-example/set_compiler_flag.cmake # Adapted from # https://github.com/robertodr/ddPCM/blob/expose-C-api/cmake/custom/compilers/SetCompilerFlag.cmake # which was adapted by Roberto Di Remigio from # https://github.com/SethMMorton/cmake_fortran_template/blob/master/cmake/Modules/SetCompileFlag.cmake # Given a list of flags, this stateless function will try each, one at a time, # and set result to the first flag that works. # If none of the flags works, result is "". # If the REQUIRED key is given and no flag is found, a FATAL_ERROR is raised. # # Call is: # set_compile_flag(result (Fortran|C|CXX) flag1 flag2 ...) # # Example: # set_compiler_flag(working_compile_flag C REQUIRED "-Wall" "-warn all") include(CheckCCompilerFlag) include(CheckCXXCompilerFlag) include(CheckFortranCompilerFlag) function(set_compiler_flag _result _lang) # build a list of flags from the arguments set(_list_of_flags) # also figure out whether the function # is required to find a flag set(_flag_is_required FALSE) foreach(_arg IN ITEMS ${ARGN}) string(TOUPPER "${_arg}" _arg_uppercase) if(_arg_uppercase STREQUAL "REQUIRED") set(_flag_is_required TRUE) else() list(APPEND _list_of_flags "${_arg}") endif() endforeach() set(_flag_found FALSE) # loop over all flags, try to find the first which works foreach(flag IN ITEMS ${_list_of_flags}) # Note: since cmake-3.17-rc1 its not sufficient to unset _flag_works # from the cache, so this double-unset is relevant: unset(_flag_works) unset(_flag_works CACHE) if(_lang STREQUAL "C") check_c_compiler_flag("${flag}" _flag_works) elseif(_lang STREQUAL "CXX") check_cxx_compiler_flag("${flag}" _flag_works) elseif(_lang STREQUAL "Fortran") check_Fortran_compiler_flag("${flag}" _flag_works) else() message(FATAL_ERROR "Unknown language in set_compiler_flag: ${_lang}") endif() # if the flag works, use it, and exit # otherwise try next flag if(_flag_works) if(NOT CMAKE_REQUIRED_QUIET) message(STATUS "Found flag ${flag} for language ${_lang} is supported") endif() set(${_result} "${flag}" PARENT_SCOPE) set(_flag_found TRUE) break() else() if(NOT CMAKE_REQUIRED_QUIET) message(STATUS "Found flag ${flag} for language ${_lang} is not supported") endif() endif() endforeach() # raise an error if no flag was found if(_flag_is_required AND NOT _flag_found) message(FATAL_ERROR "None of the required flags were supported") endif() endfunction() xtensor-blas-0.21.0/test/test_blas.cpp000066400000000000000000000130561456314707100176730ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #include "xtensor/xarray.hpp" #include "xtensor/xbuilder.hpp" #include "xtensor/xrandom.hpp" #include "xtensor/xview.hpp" #include "gtest/gtest.h" #include "xtensor-blas/xblas.hpp" #include "xtensor-blas/xlinalg.hpp" namespace xt { TEST(xblas, matrix_times_vector) { xarray m1 = {{1, 2, 3}, {4, 5, 6}}; xarray b = {1, 2, 3}; auto res = linalg::dot(m1, b); xarray expected = {14, 32}; EXPECT_EQ(expected, res); xarray next_row = {{7, 8, 9}}; auto res2 = linalg::dot(concatenate(xtuple(m1, next_row)), b); xarray expected2 = {14, 32, 50}; EXPECT_EQ(expected2, res2); } TEST(xblas, dot_2d) { xarray a = {{1, 2, 3, 4, 5}, {1, 2, 3, 4, 5}}; xarray b = {5, 4, 3, 2, 1}; xarray c = {1, 2}; auto res = linalg::dot(a, b); xarray expected = {35, 35}; auto res_ca = linalg::dot(c, a); xarray expected_ca = {3, 6, 9, 12, 15}; EXPECT_EQ(expected, res); EXPECT_EQ(expected_ca, res_ca); } TEST(xblas, matrix_matrix) { xarray a = arange(3 * 3); a.reshape({3, 3}); xarray b = arange(5 * 3); b.reshape({3, 5}); auto ab = linalg::dot(a, b); xarray ab_expected = {{25, 28, 31, 34, 37}, {70, 82, 94, 106, 118}, {115, 136, 157, 178, 199}}; EXPECT_EQ(ab_expected, ab); } TEST(xblas, view_dot) { xarray a = {1, 2, 3, 4, 5}; xarray b = {5, 4, 3, 2, 1}; auto res = linalg::dot(a, b); xarray expected = {35}; EXPECT_EQ(expected, res); xarray m1{{1, 2, 3}, {4, 5, 6}}; xarray c = {1, 2}; auto res2 = xt::linalg::dot(xt::view(m1, xt::all(), 1), c); xarray expected2 = {12}; EXPECT_EQ(expected2, res2); } TEST(xblas, norm) { auto a = linalg::norm(xt::arange(15), 1); auto b = linalg::norm(xt::arange(15), 2); xarray c = {6, 4, 2, 1}; auto res = linalg::norm(c); EXPECT_EQ(a, 105.0); EXPECT_NEAR(b, 31.859064644147981, 1e-6); EXPECT_NEAR(res, 7.5498344352707498, 1e-6); } TEST(xblas, normFloat) { auto a = linalg::norm(xt::arange(15), 1); auto b = linalg::norm(xt::arange(15), 2); xarray c = {6, 4, 2, 1}; auto res = linalg::norm(c); EXPECT_EQ(a, 105.0); EXPECT_NEAR(b, 31.859064644147981, 1e-6); EXPECT_NEAR(res, 7.5498344352707498, 1e-6); } TEST(xblas, outer) { xarray a = {1, 1, 1}; xarray b = arange(0, 3); xarray expected = {{0, 1, 2}, {0, 1, 2}, {0, 1, 2}}; auto t = linalg::outer(a, b); auto t2 = linalg::outer(a, xt::arange(0, 3)); auto t3 = linalg::outer(xt::ones({3}), xt::arange(0, 3)); EXPECT_TRUE(all(equal(expected, t))); EXPECT_TRUE(all(equal(expected, t2))); EXPECT_TRUE(all(equal(expected, t3))); } TEST(xblas, outer_random) { xt::random::seed(123); xt::xarray expected = xt::random::randn({5}); xt::random::seed(123); auto x = xt::random::randn({5}); auto weights = xt::xarray({1}); // should perform identity auto result = linalg::outer(x, weights); // shapes are different for (std::size_t i = 0; i < 5; ++i) { EXPECT_EQ(result.data()[i], expected.data()[i]); } } TEST(xblas, nan_result) { xt::xarray X = {{1, 2, 3}, {1, 2, 3}}; auto M = xt::xarray::from_shape({3, 3}); M(0, 0) = std::numeric_limits::quiet_NaN(); M(0, 1) = std::numeric_limits::quiet_NaN(); xt::blas::gemm(X, X, M, true, false, 1.0, 0.0); for (std::size_t i = 0; i < M.size(); ++i) { EXPECT_FALSE(std::isnan(M.storage()[i])); } } TEST(xblas, gemm_transpose) { xt::xarray X = {{1, 2, 3}, {1, 2, 3}}; auto M = xt::xarray::from_shape({3, 3}); auto O = xt::xarray::from_shape({2, 2}); xt::blas::gemm(X, X, M, true, false, 1.0, 0.0); xt::blas::gemm(X, X, O, false, true, 1.0, 0.0); xt::xarray expM = {{2, 4, 6}, {4, 8, 12}, {6, 12, 18}}; xt::xarray expO = {{14, 14}, {14, 14}}; EXPECT_TRUE(all(equal(expM, M))); EXPECT_TRUE(all(equal(expO, O))); } TEST(xblas, gemv_transpose) { xt::xarray X = {{1, 2, 3}, {1, 2, 3}}; xt::xarray v = {1, 2}; auto R = xt::xarray::from_shape({3}); xt::blas::gemv(X, v, R, true, 1, 0); xt::xarray expR = {3, 6, 9}; EXPECT_TRUE(all(equal(expR, R))); } } // namespace xt xtensor-blas-0.21.0/test/test_dot.cpp000066400000000000000000000156641456314707100175470ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #include "xtensor/xarray.hpp" #include "xtensor/xbuilder.hpp" #include "xtensor/xstrided_view.hpp" #include "xtensor/xview.hpp" #include "gtest/gtest.h" #include "xtensor-blas/xlinalg.hpp" namespace xt { TEST(xdot, matrix_times_vector) { xarray a = xt::ones({1, 4}); xarray b = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {1, 1, 1}}; xarray e1 = {{13, 16, 19}}; auto r1 = linalg::dot(a, b); EXPECT_EQ(e1, r1); xarray c = xt::ones({3, 1}); auto r2 = linalg::dot(b, c); xarray e2 = {{6, 15, 24, 3}}; e2.reshape({4, 1}); EXPECT_EQ(e2, r2); EXPECT_THROW(linalg::dot(b, a), std::runtime_error); EXPECT_THROW(linalg::dot(c, b), std::runtime_error); } TEST(xdot, matrix_transpose_times_column) { xarray a = xt::ones({2, 4}); xarray b = xt::ones({2, 1}); auto r1 = linalg::dot(xt::transpose(a), b); EXPECT_TRUE(all(equal(r1, 2.0))); } TEST(xdot, matrix_transpose_times_column_cm) { xarray a = xt::ones({2, 4}); xarray b = xt::ones({2, 1}); auto r1 = linalg::dot(xt::transpose(a), b); EXPECT_TRUE(all(equal(r1, 2.0))); } TEST(xdot, square_matrix_times_vector) { xarray a = {{1, 1, 1}}; xarray b = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; auto r1 = linalg::dot(a, b); xarray e1 = {{12, 15, 18}}; EXPECT_EQ(r1, e1); auto r2 = linalg::dot(b, xt::transpose(a)); xarray e2 = xarray::from_shape({3, 1}); e2(0, 0) = 6.f; e2(1, 0) = 15.f; e2(2, 0) = 24.f; EXPECT_EQ(r2, e2); EXPECT_THROW(linalg::dot(b, a), std::runtime_error); } TEST(xdot, vector_times_vector) { xarray a = xt::ones({1, 3}); xarray b = xt::ones({3, 1}); auto r1 = linalg::dot(a, b); xarray e1 = xarray::from_shape({1, 1}); e1(0, 0) = 3; EXPECT_EQ(e1, r1); auto r2 = linalg::dot(b, a); xarray e2 = xt::ones({3, 3}); EXPECT_EQ(e2, r2); auto r3 = linalg::dot(b, e1); EXPECT_EQ(b * 3.f, r3); } TEST(xdot, matrix_times_1d) { xarray a = xt::ones({5, 3}); xarray b = xt::ones({5}); xarray c = xt::ones({3}); auto r1 = linalg::dot(xt::transpose(a), b); EXPECT_TRUE(all(equal(r1, 5.0))); auto r2 = linalg::dot(c, xt::transpose(a)); EXPECT_TRUE(all(equal(r2, 3.0))); auto r3 = linalg::dot(a, c); EXPECT_TRUE(all(equal(r3, 3.0))); auto r4 = linalg::dot(c, xt::ones({3, 5})); EXPECT_TRUE(all(equal(r3, 3.0))); } TEST(xdot, A_times_A_T) { xarray a = xt::ones({5, 3}); auto r1 = linalg::dot(a, xt::transpose(a)); EXPECT_TRUE(all(equal(r1, 3.0))); auto r2 = linalg::dot(xt::transpose(a), a); EXPECT_TRUE(all(equal(r2, 5.0))); } TEST(xdot, matrix_times_vector_cm) { xarray a = xt::ones({1, 4}); xarray b = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {1, 1, 1}}; xarray e1 = {{13, 16, 19}}; auto r1 = linalg::dot(a, b); EXPECT_EQ(e1, r1); xarray c = xt::ones({3, 1}); auto r2 = linalg::dot(b, c); xarray e2 = {{6, 15, 24, 3}}; e2.reshape({4, 1}); EXPECT_EQ(e2, r2); EXPECT_THROW(linalg::dot(b, a), std::runtime_error); EXPECT_THROW(linalg::dot(c, b), std::runtime_error); } TEST(xdot, square_matrix_times_vector_cm) { xarray a = {{1, 1, 1}}; xarray b = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; auto r1 = linalg::dot(a, b); xarray e1 = {{12, 15, 18}}; EXPECT_EQ(r1, e1); auto r2 = linalg::dot(b, xt::transpose(a)); xarray e2 = xarray::from_shape({3, 1} ); e2(0, 0) = 6.f; e2(1, 0) = 15.f; e2(2, 0) = 24.f; EXPECT_EQ(r2, e2); EXPECT_THROW(linalg::dot(b, a), std::runtime_error); } TEST(xdot, vector_times_vector_cm) { xarray a = xt::ones({1, 3}); xarray b = xt::ones({3, 1}); auto r1 = linalg::dot(a, b); xarray e1 = xarray::from_shape({1, 1} ); e1(0, 0) = 3; EXPECT_EQ(e1, r1); auto r2 = linalg::dot(b, a); xarray e2 = xt::ones({3, 3}); EXPECT_EQ(e2, r2); auto r3 = linalg::dot(b, e1); EXPECT_EQ(b * 3.f, r3); } TEST(xdot, on_view) { xt::xarray a = xt::reshape_view(xt::arange(10 * 10 * 10), {10, 10, 10}); xt::xarray b = xt::reshape_view(xt::arange(10 * 10 * 10), {10, 10, 10}); auto res = xt::linalg::dot(view(a, 0, 0), view(b, 0, 0)); auto res1 = xt::linalg::dot(view(a, 0, range(0, 3)), transpose(view(b, 0, range(0, 3)))); EXPECT_EQ(res(0), 285.); EXPECT_EQ(res1(0, 0), 285.); EXPECT_EQ(res1(1, 2), 3635.); EXPECT_EQ(res1.dimension(), 2u); EXPECT_EQ(res1.shape()[0], 3u); EXPECT_EQ(res1.shape()[1], 3u); auto res2 = xt::linalg::dot(strided_view(a, {0, 0}), strided_view(b, {0, 0})); auto res3 = xt::linalg::dot( strided_view(a, {0, range(0, 3)}), transpose(strided_view(b, {0, range(0, 3)})) ); EXPECT_EQ(res2(0), 285.); EXPECT_EQ(res3(0, 0), 285.); EXPECT_EQ(res3(1, 2), 3635.); EXPECT_EQ(res3.dimension(), 2u); EXPECT_EQ(res3.shape()[0], 3u); EXPECT_EQ(res3.shape()[1], 3u); } } // namespace xt xtensor-blas-0.21.0/test/test_dot_extended.cpp000066400000000000000000000205711456314707100214200ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ // This file is generated from test/files/cppy_source/test_dot_extended.cppy by // preprocess.py! #include #include "xtensor/xarray.hpp" #include "xtensor/xtensor.hpp" #include "gtest/gtest.h" #include "xtensor-blas/xlinalg.hpp" namespace xt { using namespace xt::placeholders; /*py a = np.random.random((2, 3, 5)) b = np.random.random((4, 5)) dr = np.dot(a, b.T) */ TEST(xtest_extended, dot_broadcast) { // py_a xarray py_a = { {{0.3745401188473625, 0.9507143064099162, 0.7319939418114051, 0.5986584841970366, 0.1560186404424365}, {0.1559945203362026, 0.0580836121681995, 0.8661761457749352, 0.6011150117432088, 0.7080725777960455}, {0.0205844942958024, 0.9699098521619943, 0.8324426408004217, 0.2123391106782762, 0.1818249672071006}}, {{0.1834045098534338, 0.3042422429595377, 0.5247564316322378, 0.4319450186421158, 0.2912291401980419}, {0.6118528947223795, 0.1394938606520418, 0.2921446485352182, 0.3663618432936917, 0.4560699842170359}, {0.7851759613930136, 0.1996737821583597, 0.5142344384136116, 0.5924145688620425, 0.0464504127199977}}}; // py_b xarray py_b = { {0.6075448519014384, 0.1705241236872915, 0.0650515929852795, 0.9488855372533332, 0.9656320330745594}, {0.8083973481164611, 0.3046137691733707, 0.0976721140063839, 0.6842330265121569, 0.4401524937396013}, {0.1220382348447788, 0.4951769101112702, 0.0343885211152184, 0.9093204020787821, 0.2587799816000169}, {0.662522284353982, 0.311711076089411, 0.5200680211778108, 0.5467102793432796, 0.184854455525527}}; // py_dr xarray py_dr = { {{1.1560019913607258, 1.1421672030085086, 1.1263990512143978, 1.2813094834150083}, {1.415151366639716, 0.9513625344824885, 0.807426629014782, 1.0314517921651605}, {0.6091122748507029, 0.6187149240291543, 0.7515524775267591, 0.898595256683809}}, {{0.8885299172713558, 0.7159304454839006, 0.6592223836380569, 0.7792380767202456}, {1.2025508600129964, 1.0170636073271262, 0.6049520893427571, 0.8853834024749684}, {1.15151820221699, 1.1715787914743192, 0.763094187597877, 1.182339688054495}}}; xt::xtensor bas = xt::transpose(py_b); auto xres = xt::linalg::dot(py_a, xt::transpose(py_b)); auto xres2 = xt::linalg::dot(py_a, bas); std::cout << xres << std::endl; EXPECT_TRUE(xt::allclose(xres, py_dr)); EXPECT_TRUE(xt::allclose(xres2, py_dr)); } /*py a = np.random.random((2, 3, 5)) b = np.random.random((5)) dr = np.dot(a, b) */ TEST(xtest_extended, dot_broadcast_2) { // py_a xarray py_a = { {{0.9695846277645586, 0.7751328233611146, 0.9394989415641891, 0.8948273504276488, 0.5978999788110851}, {0.9218742350231168, 0.0884925020519195, 0.1959828624191452, 0.0452272889105381, 0.3253303307632643}, {0.388677289689482, 0.2713490317738959, 0.8287375091519293, 0.3567533266935893, 0.2809345096873808}}, {{0.5426960831582485, 0.1409242249747626, 0.8021969807540397, 0.0745506436797708, 0.9868869366005173}, {0.7722447692966574, 0.1987156815341724, 0.0055221171236024, 0.8154614284548342, 0.7068573438476171}, {0.7290071680409873, 0.7712703466859457, 0.0740446517340904, 0.3584657285442726, 0.1158690595251297}}}; // py_b xarray py_b = { 0.8631034258755935, 0.6232981268275579, 0.3308980248526492, 0.0635583502860236, 0.3109823217156622}; // py_dr xarray py_dr = { {1.8736790686065976, 1.0197269167779506, 0.8888679673881792}, {1.1333287572487494, 1.0638629967411402, 1.1932578950872312}}; auto xres = xt::linalg::dot(py_a, py_b); std::cout << xres << std::endl; EXPECT_TRUE(xt::allclose(xres, py_dr)); } /*py a = np.arange(2 * 3 * 4 * 5).reshape(2, 3, 4, 5) b = np.arange(4 * 5 * 3).reshape(4, 5, 3) dr = np.dot(a, b) */ TEST(xtest_extended, dot_broadcast_3) { // py_a xarray py_a = { {{{0, 1, 2, 3, 4}, {5, 6, 7, 8, 9}, {10, 11, 12, 13, 14}, {15, 16, 17, 18, 19}}, {{20, 21, 22, 23, 24}, {25, 26, 27, 28, 29}, {30, 31, 32, 33, 34}, {35, 36, 37, 38, 39}}, {{40, 41, 42, 43, 44}, {45, 46, 47, 48, 49}, {50, 51, 52, 53, 54}, {55, 56, 57, 58, 59}}}, {{{60, 61, 62, 63, 64}, {65, 66, 67, 68, 69}, {70, 71, 72, 73, 74}, {75, 76, 77, 78, 79}}, {{80, 81, 82, 83, 84}, {85, 86, 87, 88, 89}, {90, 91, 92, 93, 94}, {95, 96, 97, 98, 99}}, {{100, 101, 102, 103, 104}, {105, 106, 107, 108, 109}, {110, 111, 112, 113, 114}, {115, 116, 117, 118, 119}}}}; // py_b xarray py_b = { {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}, {9, 10, 11}, {12, 13, 14}}, {{15, 16, 17}, {18, 19, 20}, {21, 22, 23}, {24, 25, 26}, {27, 28, 29}}, {{30, 31, 32}, {33, 34, 35}, {36, 37, 38}, {39, 40, 41}, {42, 43, 44}}, {{45, 46, 47}, {48, 49, 50}, {51, 52, 53}, {54, 55, 56}, {57, 58, 59}}}; // py_dr xarray py_dr = { {{{{90, 100, 110}, {240, 250, 260}, {390, 400, 410}, {540, 550, 560}}, {{240, 275, 310}, {765, 800, 835}, {1290, 1325, 1360}, {1815, 1850, 1885}}, {{390, 450, 510}, {1290, 1350, 1410}, {2190, 2250, 2310}, {3090, 3150, 3210}}, {{540, 625, 710}, {1815, 1900, 1985}, {3090, 3175, 3260}, {4365, 4450, 4535}}}, {{{690, 800, 910}, {2340, 2450, 2560}, {3990, 4100, 4210}, {5640, 5750, 5860}}, {{840, 975, 1110}, {2865, 3000, 3135}, {4890, 5025, 5160}, {6915, 7050, 7185}}, {{990, 1150, 1310}, {3390, 3550, 3710}, {5790, 5950, 6110}, {8190, 8350, 8510}}, {{1140, 1325, 1510}, {3915, 4100, 4285}, {6690, 6875, 7060}, {9465, 9650, 9835}}}, {{{1290, 1500, 1710}, {4440, 4650, 4860}, {7590, 7800, 8010}, {10740, 10950, 11160}}, {{1440, 1675, 1910}, {4965, 5200, 5435}, {8490, 8725, 8960}, {12015, 12250, 12485}}, {{1590, 1850, 2110}, {5490, 5750, 6010}, {9390, 9650, 9910}, {13290, 13550, 13810}}, {{1740, 2025, 2310}, {6015, 6300, 6585}, {10290, 10575, 10860}, {14565, 14850, 15135}}}}, {{{{1890, 2200, 2510}, {6540, 6850, 7160}, {11190, 11500, 11810}, {15840, 16150, 16460}}, {{2040, 2375, 2710}, {7065, 7400, 7735}, {12090, 12425, 12760}, {17115, 17450, 17785}}, {{2190, 2550, 2910}, {7590, 7950, 8310}, {12990, 13350, 13710}, {18390, 18750, 19110}}, {{2340, 2725, 3110}, {8115, 8500, 8885}, {13890, 14275, 14660}, {19665, 20050, 20435}}}, {{{2490, 2900, 3310}, {8640, 9050, 9460}, {14790, 15200, 15610}, {20940, 21350, 21760}}, {{2640, 3075, 3510}, {9165, 9600, 10035}, {15690, 16125, 16560}, {22215, 22650, 23085}}, {{2790, 3250, 3710}, {9690, 10150, 10610}, {16590, 17050, 17510}, {23490, 23950, 24410}}, {{2940, 3425, 3910}, {10215, 10700, 11185}, {17490, 17975, 18460}, {24765, 25250, 25735}}}, {{{3090, 3600, 4110}, {10740, 11250, 11760}, {18390, 18900, 19410}, {26040, 26550, 27060}}, {{3240, 3775, 4310}, {11265, 11800, 12335}, {19290, 19825, 20360}, {27315, 27850, 28385}}, {{3390, 3950, 4510}, {11790, 12350, 12910}, {20190, 20750, 21310}, {28590, 29150, 29710}}, {{3540, 4125, 4710}, {12315, 12900, 13485}, {21090, 21675, 22260}, {29865, 30450, 31035}}}}}; auto xres = xt::linalg::dot(py_a, py_b); EXPECT_TRUE(xt::allclose(xres, py_dr)); } } // namespace xt xtensor-blas-0.21.0/test/test_float_norm.cpp000066400000000000000000000025061456314707100211100ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ // this test is for https://github.com/xtensor-stack/xtensor-blas/issues/206 #include "xtensor/xarray.hpp" #include "xtensor/xbuilder.hpp" #include "xtensor/xrandom.hpp" #include "xtensor/xview.hpp" #include "gtest/gtest.h" #include "xtensor-blas/xblas.hpp" #include "xtensor-blas/xlinalg.hpp" namespace xt { TEST(xblas, norm_complex_float) { xt::xarray> a = {std::complex(1.0f, 2.0f), std::complex(3.0f, 4.0f)}; auto res = linalg::norm(a); EXPECT_NEAR(res.real(), 5.4772f, 1e-3f); EXPECT_NEAR(res.imag(), 0.0f, 1e-3f); } TEST(xblas, norm_float_arange) { xt::linalg::norm(xt::arange(15), 1); } } // namespace xt xtensor-blas-0.21.0/test/test_generator/000077500000000000000000000000001456314707100202275ustar00rootroot00000000000000xtensor-blas-0.21.0/test/test_generator/cppy_source/000077500000000000000000000000001456314707100225625ustar00rootroot00000000000000xtensor-blas-0.21.0/test/test_generator/cppy_source/test_dot_extended.cppy000066400000000000000000000037501456314707100271710ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #include #include "gtest/gtest.h" #include "xtensor/xarray.hpp" #include "xtensor/xtensor.hpp" #include "xtensor-blas/xlinalg.hpp" namespace xt { using namespace xt::placeholders; /*py a = np.random.random((2, 3, 5)) b = np.random.random((4, 5)) dr = np.dot(a, b.T) */ TEST(xtest_extended, dot_broadcast) { // py_a // py_b // py_dr xt::xtensor bas = xt::transpose(py_b); auto xres = xt::linalg::dot(py_a, xt::transpose(py_b)); auto xres2 = xt::linalg::dot(py_a, bas); std::cout << xres << std::endl; EXPECT_TRUE(xt::allclose(xres, py_dr)); EXPECT_TRUE(xt::allclose(xres2, py_dr)); } /*py a = np.random.random((2, 3, 5)) b = np.random.random((5)) dr = np.dot(a, b) */ TEST(xtest_extended, dot_broadcast_2) { // py_a // py_b // py_dr auto xres = xt::linalg::dot(py_a, py_b); std::cout << xres << std::endl; EXPECT_TRUE(xt::allclose(xres, py_dr)); } /*py a = np.arange(2 * 3 * 4 * 5).reshape(2, 3, 4, 5) b = np.arange(4 * 5 * 3).reshape(4, 5, 3) dr = np.dot(a, b) */ TEST(xtest_extended, dot_broadcast_3) { // py_a // py_b // py_dr auto xres = xt::linalg::dot(py_a, py_b); EXPECT_TRUE(xt::allclose(xres, py_dr)); } } xtensor-blas-0.21.0/test/test_generator/cppy_source/test_lstsq.cppy000066400000000000000000000137641456314707100256770ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #include #include "gtest/gtest.h" #include "xtensor/xarray.hpp" #include "xtensor/xfixed.hpp" #include "xtensor/xnoalias.hpp" #include "xtensor/xstrided_view.hpp" #include "xtensor/xtensor.hpp" #include "xtensor/xview.hpp" #include "xtensor-blas/xlinalg.hpp" namespace xt { using namespace xt::placeholders; /*py a = np.random.random((6, 3)) b = np.ones((6)) */ TEST(xtest_extended, lstsq1) { // py_a // py_b // py_res0 = np.linalg.lstsq(a, b)[0] // py_res1 = np.linalg.lstsq(a, b)[1] // py_res2 = np.linalg.lstsq(a, b)[2] // py_res3 = np.linalg.lstsq(a, b)[3] auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } /*py a = np.random.random((3, 3)) b = np.ones((3)) */ TEST(xtest_extended, lstsq20) { // py_a // py_b // py_res0 = np.linalg.lstsq(a, b)[0] // py_res1 = np.linalg.lstsq(a, b)[1] // py_res2 = np.linalg.lstsq(a, b)[2] // py_res3 = np.linalg.lstsq(a, b)[3] auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } /*py a = np.random.random((3, 3)) b = np.ones((3, 3)) */ TEST(xtest_extended, lstsq21) { // py_a // py_b // py_res0 = np.linalg.lstsq(a, b)[0] // py_res1 = np.linalg.lstsq(a, b)[1] // py_res2 = np.linalg.lstsq(a, b)[2] // py_res3 = np.linalg.lstsq(a, b)[3] auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } /*py a = np.random.random((2, 5)) b = np.ones((2)) */ TEST(xtest_extended, lstsq3) { // py_a // py_b // py_res0 = np.linalg.lstsq(a, b)[0] // py_res1 = np.linalg.lstsq(a, b)[1] // py_res2 = np.linalg.lstsq(a, b)[2] // py_res3 = np.linalg.lstsq(a, b)[3] auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } /*py a = np.random.random((2, 5)) b = np.ones((2, 10)) */ TEST(xtest_extended, lstsq4) { // py_a // py_b // py_res0 = np.linalg.lstsq(a, b)[0] // py_res1 = np.linalg.lstsq(a, b)[1] // py_res2 = np.linalg.lstsq(a, b)[2] // py_res3 = np.linalg.lstsq(a, b)[3] auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } /*py a = np.random.random((10, 5)) b = np.ones((10, 20)) */ TEST(xtest_extended, lstsq5) { // py_a // py_b // py_res0 = np.linalg.lstsq(a, b)[0] // py_res1 = np.linalg.lstsq(a, b)[1] // py_res2 = np.linalg.lstsq(a, b)[2] // py_res3 = np.linalg.lstsq(a, b)[3] auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } /*py a = np.array([[0., 1.]]) b = np.array([1.]) */ TEST(xtest_extended, lstsq6) { // py_a // py_b // py_res0 = np.linalg.lstsq(a, b)[0] // py_res1 = np.linalg.lstsq(a, b)[1] // py_res2 = np.linalg.lstsq(a, b)[2] // py_res3 = np.linalg.lstsq(a, b)[3] auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } /*py a = np.array([[1.], [1.]]) b = np.array([1., 1.]) */ TEST(xtest_extended, lstsq7) { // cannot use "// py_a" due to ambiguous initializer list conversion below // xarray py_a = {{1.}, // {1.}}; xarray py_a = xt::ones({2, 1}); // py_b // py_res0 = np.linalg.lstsq(a, b)[0] // py_res1 = np.linalg.lstsq(a, b)[1] // py_res2 = np.linalg.lstsq(a, b)[2] // py_res3 = np.linalg.lstsq(a, b)[3] auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } } xtensor-blas-0.21.0/test/test_generator/cppy_source/test_qr.cppy000066400000000000000000000065101456314707100251420ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #include #include "gtest/gtest.h" #include "xtensor/xarray.hpp" #include "xtensor/xfixed.hpp" #include "xtensor/xnoalias.hpp" #include "xtensor/xstrided_view.hpp" #include "xtensor/xtensor.hpp" #include "xtensor/xview.hpp" #include "xtensor-blas/xlinalg.hpp" namespace xt { using namespace xt::placeholders; /*py a = np.random.random((6, 3)) res_q1 = np.linalg.qr(a, 'raw') res_q2 = np.linalg.qr(a, 'complete') res_q3 = np.linalg.qr(a, 'reduced') res_q4 = np.linalg.qr(a, 'r') */ TEST(xtest_extended, qr1) { // py_a // py_resq1_h = res_q1[0] // py_resq1_tau = res_q1[1] auto res1 = linalg::qr(py_a, linalg::qrmode::raw); EXPECT_TRUE(allclose(std::get<0>(res1), py_resq1_h)); EXPECT_TRUE(allclose(std::get<1>(res1), py_resq1_tau)); // py_resq2_q_cmpl = res_q2[0] // py_resq2_r_cmpl = res_q2[1] auto res2 = linalg::qr(py_a, linalg::qrmode::complete); EXPECT_TRUE(allclose(std::get<0>(res2), py_resq2_q_cmpl)); EXPECT_TRUE(allclose(std::get<1>(res2), py_resq2_r_cmpl)); // py_resq3_q_cmpl = res_q3[0] // py_resq3_r_cmpl = res_q3[1] auto res3 = linalg::qr(py_a, linalg::qrmode::reduced); EXPECT_TRUE(allclose(std::get<0>(res3), py_resq3_q_cmpl)); EXPECT_TRUE(allclose(std::get<1>(res3), py_resq3_r_cmpl)); // py_resq4_r_r = res_q4 auto res4 = linalg::qr(py_a, linalg::qrmode::r); EXPECT_TRUE(allclose(std::get<1>(res4), py_resq4_r_r)); } /*py a = np.random.random((5, 10)) res_q1 = np.linalg.qr(a, 'raw') res_q2 = np.linalg.qr(a, 'complete') res_q3 = np.linalg.qr(a, 'reduced') res_q4 = np.linalg.qr(a, 'r') */ TEST(xtest_extended, qr2) { // py_a // py_resq1_h = res_q1[0] // py_resq1_tau = res_q1[1] auto res1 = linalg::qr(py_a, linalg::qrmode::raw); EXPECT_TRUE(allclose(std::get<0>(res1), py_resq1_h)); EXPECT_TRUE(allclose(std::get<1>(res1), py_resq1_tau)); // py_resq2_q_cmpl = res_q2[0] // py_resq2_r_cmpl = res_q2[1] auto res2 = linalg::qr(py_a, linalg::qrmode::complete); EXPECT_TRUE(allclose(std::get<0>(res2), py_resq2_q_cmpl)); EXPECT_TRUE(allclose(std::get<1>(res2), py_resq2_r_cmpl)); // py_resq3_q_cmpl = res_q3[0] // py_resq3_r_cmpl = res_q3[1] auto res3 = linalg::qr(py_a, linalg::qrmode::reduced); EXPECT_TRUE(allclose(std::get<0>(res3), py_resq3_q_cmpl)); EXPECT_TRUE(allclose(std::get<1>(res3), py_resq3_r_cmpl)); // py_resq4_r_r = res_q4 auto res4 = linalg::qr(py_a, linalg::qrmode::r); EXPECT_TRUE(allclose(std::get<1>(res4), py_resq4_r_r)); } } xtensor-blas-0.21.0/test/test_generator/preprocess.py000066400000000000000000000062601456314707100227720ustar00rootroot00000000000000import glob import os import re import sys import numpy as np my_path = os.path.dirname(os.path.realpath(__file__)) cppy_files = glob.glob(my_path + '/cppy_source/*.cppy') dtype_map = { 'bool': 'bool', 'float32': 'float', 'float64': 'double', 'int32': 'int', 'int64': 'long', 'uint32': 'unsigned int', 'uint64': 'unsigned long', 'complex64': 'std::complex', 'complex128': 'std::complex', } def get_xtype(arr, xtensor=False): if isinstance(arr, (int, np.int32)): return "int" elif isinstance(arr, float): return "double" if xtensor: s = "xtensor<" + dtype_map[str(arr.dtype)] + ", " + str(arr.ndim) + ">" else: s = "xarray<" + dtype_map[str(arr.dtype)] + ">" return s def get_cpp_initlist(arr, name): if isinstance(arr, (int, str, float)): return get_xtype(arr) + " " + name + " = " + str(arr) + ';' name = get_xtype(arr) + " " + name s = np.array2string(arr, separator=',', precision=16) s = s.replace('[', '{') s = s.replace(']', '}') s = s.replace('j', 'i') s += ';' s = s.replace("\n", "\n" + " " * (len(name) + 3)) s = name + " = " + s return s def translate_file(contents, f): current_vars = {} matches = re.findall(r"\/\*py.*?\*\/", contents, re.MULTILINE | re.DOTALL) def exec_comment(txt, upper_level=False): lines = txt.split('\n') if upper_level: txt = '\n'.join(["import numpy as np"] + [x.strip() for x in lines[1:-1]]) locals_before = list(locals().keys()) exec(txt, globals(), current_vars) current_vars.update( {x: val for x, val in locals().items() if x not in locals_before} ) result_file = "" idx = 0 lidx = 0 for line in contents.split('\n'): if lidx == 8: f = os.path.split(f)[1] result_file += "// This file is generated from test/files/cppy_source/{} by preprocess.py!".format(f) + '\n\n' lstrip = line.lstrip() if lstrip.startswith("/*py"): exec_comment(matches[idx], True) idx += 1 if lstrip.startswith("// py_"): indent_n = len(line) - len(lstrip) if '=' in lstrip: exec_comment(lstrip[6:]) var = line.strip()[6:lstrip.index('=')].strip() else: var = line.strip()[6:] indent = line[:indent_n] init_list = get_cpp_initlist(current_vars[var], 'py_' + var) init_list = '\n'.join([indent + x for x in init_list.split('\n')]) result_file += line + '\n' result_file += init_list + '\n' else: result_file += line + '\n' lidx += 1 return result_file print("::: PREPROCESSING :::\n") for f in cppy_files: print(" - PROCESSING {}".format(f)) global current_vars current_vars = {} # reset with open(f) as fi: contents = fi.read() # reset global seed np.random.seed(42) result = translate_file(contents, f) f_result = os.path.split(f)[1] with open(my_path + "/../" + f_result[:-1], 'w+') as fo: fo.write(result) print("::: DONE :::") # print(result) xtensor-blas-0.21.0/test/test_lapack.cpp000066400000000000000000000167641456314707100202160ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #include "xtensor/xarray.hpp" #include "xtensor/xbuilder.hpp" #include "xtensor/xcomplex.hpp" #include "xtensor/xio.hpp" #include "xtensor/xview.hpp" #include "gtest/gtest.h" #include "xtensor-blas/xblas.hpp" #include "xtensor-blas/xlapack.hpp" #include "xtensor-blas/xlinalg.hpp" using namespace std::complex_literals; namespace xt { TEST(xlapack, eigenvalues) { xarray eig_arg_0 = { {0.89342434, 0.96630682, 0.83113658, 0.9014204, 0.17622395}, {0.01114647, 0.93096724, 0.35509599, 0.35329223, 0.65759337}, {0.27868701, 0.376794, 0.63310696, 0.90892131, 0.35454718}, {0.02962539, 0.20561053, 0.2004051, 0.83641883, 0.08335324}, {0.76958296, 0.23132089, 0.33539779, 0.70616527, 0.40256713}}; auto eig_res = xt::linalg::eig(eig_arg_0); xtensor, 1> eig_expected_0 = { 2.24745601 + 0.i, 0.24898158 + 0.51158566i, 0.24898158 - 0.51158566i, 0.66252212 + 0.i, 0.28854321 + 0.i}; xtensor, 2> eig_expected_1 = { {-0.67843725 + 0.i, -0.00104977 + 0.50731553i, -0.00104977 - 0.50731553i, -0.48456457 + 0.i, -0.11153304 + 0.i}, {-0.38393722 + 0.i, -0.42892828 - 0.30675499i, -0.42892828 + 0.30675499i, -0.60497432 + 0.i, -0.55233486 + 0.i}, {-0.39453548 + 0.i, 0.10153693 - 0.12657944i, 0.10153693 + 0.12657944i, 0.35111489 + 0.i, 0.80267297 + 0.i}, {-0.15349367 + 0.i, -0.04903747 + 0.08226059i, -0.04903747 - 0.08226059i, 0.48726345 + 0.i, -0.10533951 + 0.i}, {-0.46162383 + 0.i, 0.65501769 + 0.i, 0.65501769 - 0.i, -0.19620376 + 0.i, 0.16463982 + 0.i}}; xarray> eigvals = std::get<0>(eig_res); xarray> eigvecs = std::get<1>(eig_res); EXPECT_TRUE(allclose(xt::imag(eigvals), xt::imag(eig_expected_0))); EXPECT_TRUE(allclose(xt::real(eigvals), xt::real(eig_expected_0))); EXPECT_TRUE(allclose(abs(imag(eigvecs)), abs(imag(eig_expected_1)))); EXPECT_TRUE(allclose(abs(real(eigvecs)), abs(real(eig_expected_1)))); } TEST(xlapack, generalized_eigenvalues) { xarray eig_arg_0 = { {0.24, 0.39, 0.42, -0.16}, {0.39, -0.11, 0.79, 0.63}, {0.42, 0.79, -0.25, 0.48}, {-0.16, 0.63, 0.48, -0.03}}; xarray eig_arg_1 = { {4.16, -3.12, 0.56, -0.10}, {-3.12, 5.03, -0.83, 1.09}, {0.56, -0.83, 0.76, 0.34}, {-0.10, 1.09, 0.34, 1.18}}; auto eig_res = xt::linalg::eigh(eig_arg_0, eig_arg_1); xtensor eig_expected_0 = {-2.225448, -0.454756, 0.100076, 1.127039}; xtensor eig_expected_1 = { {0.031913, 0.327020, 0.682699, 0.425628}, {0.265466, 0.565845, 0.056645, 0.520961}, {0.713483, -0.371290, -0.077102, 0.714215}, {-0.647650, -0.659561, -0.724409, -0.193227}}; xarray eigvals = std::get<0>(eig_res); xarray eigvecs = std::get<1>(eig_res); for (unsigned i = 0; i < 4; ++i) { auto v = xt::view(eigvecs, xt::all(), i); v /= xt::linalg::norm(v, 2); if (v(0) < 0.0) v = -v; } EXPECT_TRUE(allclose(eigvals, eig_expected_0)); EXPECT_TRUE(allclose(abs(eigvecs), abs(eig_expected_1))); } TEST(xlapack, inverse) { xarray a = {{2, 1, 1}, {-1, 1, -1}, {1, 2, 3}}; xarray b = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}; auto t = linalg::inv(a); xarray expected = { {0.55555556, -0.11111111, -0.22222222}, {0.22222222, 0.55555556, 0.11111111}, {-0.33333333, -0.33333333, 0.33333333}}; EXPECT_TRUE(allclose(expected, t)); auto br = linalg::inv(b); EXPECT_EQ(b, br); auto t_r_major = xarray::from_shape({3, 3}); assign_data(t_r_major, t, true); auto almost_eye = linalg::dot(t_r_major, a); auto e = xt::eye(3); auto d = almost_eye - e; auto min = xt::amin(d); EXPECT_NEAR(min(), 0.0, 1e-6); } TEST(xlapack, single_element_inverse) { xtensor a = xt::ones({1, 1}); auto res = linalg::inv(a); EXPECT_EQ(res(), 1.); } TEST(xlapack, solve) { xarray a = {{2, 1, 1}, {-1, 1, -1}, {1, 2, 3}}; xarray vec = {2, 3, -10}; xarray expected = {3, 1, -5}; auto res = linalg::solve(a, vec); EXPECT_EQ(expected, res); vec.reshape({3, 1}); expected.reshape({3, 1}); auto res2 = linalg::solve(a, vec); EXPECT_EQ(expected, res2); xarray vec2 = {6, 2, -10}; vec2.reshape({3, 1}); auto res3 = linalg::solve(a, concatenate(xtuple(vec, vec2 * 3), 1)); xarray expected3 = {{3, 16}, {1, 4}, {-5, -18}}; EXPECT_EQ(expected3, res3); } TEST(xlapack, solveCholesky) { xarray A = { {1., 0., 0., 0., 0.}, {0.44615865, 0.89495389, 0., 0., 0.}, {0.39541532, 0.24253783, 0.88590187, 0., 0.}, {-0.36681098, -0.26249522, 0.0338034, 0.89185386, 0.}, {0.0881614, 0.12356345, 0.19887529, -0.35996807, 0.89879433}}; xarray b = {1, 1, 1, -1, -1}; auto x = linalg::solve_cholesky(A, b); const xarray x_expected = { 0.13757507429403265, 0.26609253571318064, 1.03715526610177222, -1.3449222878385465, -1.81183493755905478}; for (std::size_t i = 0; i < x_expected.shape()[0]; ++i) { EXPECT_NEAR(x_expected[i], x[i], 5e-16); } } TEST(xlapack, solveTriangular) { const xt::xtensor A = { {1., 0., 0., 0., 0.}, {0.44615865, 0.89495389, 0., 0., 0.}, {0.39541532, 0.24253783, 0.88590187, 0., 0.}, {-0.36681098, -0.26249522, 0.0338034, 0.89185386, 0.}, {0.0881614, 0.12356345, 0.19887529, -0.35996807, 0.89879433}}; const xt::xtensor b = {0.38867999, 0.46467046, 0.39042938, -0.2736973, 0.20813322}; auto x = linalg::solve_triangular(A, b); const xarray x_expected = { 0.38867998999999998, 0.32544416381003327, 0.17813128230545805, -0.05799057434472885, 0.08606304705465571}; for (std::size_t i = 0; i < x_expected.shape()[0]; ++i) { EXPECT_DOUBLE_EQ(x_expected[i], x[i]); } } } // namespace xt xtensor-blas-0.21.0/test/test_linalg.cpp000066400000000000000000000621001456314707100202120ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #include "xtensor/xarray.hpp" #include "xtensor/xbuilder.hpp" #include "xtensor/xcomplex.hpp" #include "xtensor/xio.hpp" #include "xtensor/xrandom.hpp" #include "xtensor/xview.hpp" #include "gtest/gtest.h" #include "xtensor-blas/xblas.hpp" #include "xtensor-blas/xlapack.hpp" #include "xtensor-blas/xlinalg.hpp" using namespace std::complex_literals; namespace xt { TEST(xlinalg, matrixpower) { xarray t1arg_0 = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}; auto t1res = xt::linalg::matrix_power(t1arg_0, 2); xarray t1expected = {{15, 18, 21}, {42, 54, 66}, {69, 90, 111}}; EXPECT_TRUE(allclose(t1res, t1expected)); auto t2res = xt::linalg::matrix_power(t1arg_0, 5); xarray t2expected = {{32400, 41796, 51192}, {99468, 128304, 157140}, {166536, 214812, 263088}}; EXPECT_TRUE(allclose(t2res, t2expected)); auto t3res = xt::linalg::matrix_power(t1arg_0, 41); xarray t3expected = { {1.06199622e+45, 1.36986674e+45, 1.67773727e+45}, {3.26000325e+45, 4.20507151e+45, 5.15013977e+45}, {5.45801029e+45, 7.04027628e+45, 8.62254226e+45}}; EXPECT_TRUE(allclose(t3res, t3expected)); xarray t4arg_0 = {{-2., 1., 3.}, {3., 2., 1.}, {1., 2., 5.}}; auto t4res = xt::linalg::matrix_power(t4arg_0, -2); xarray t4expected = { {0.09259259, -0.09259259, 0.01851852}, {0.35185185, 0.64814815, -0.46296296}, {-0.2037037, -0.2962963, 0.25925926}}; EXPECT_TRUE(allclose(t4res, t4expected)); auto t5res = xt::linalg::matrix_power(t4arg_0, -13); xarray t5expected = { {-0.02119919, -0.02993041, 0.02400524}, {0.15202629, 0.21469317, -0.17217602}, {-0.0726041, -0.10253451, 0.08222825}}; EXPECT_TRUE(allclose(t5res, t5expected)); } TEST(xlinalg, det) { xarray a = {{1, 2}, {3, 4}}; double da = linalg::det(a); EXPECT_EQ(da, -2.0); xarray b = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}; double db = linalg::det(b); EXPECT_EQ(db, 0.0); xarray c = {{12, 1, 2}, {3, 4, 5}, {6, 7, 8}}; double dc = linalg::det(c); EXPECT_NEAR(dc, -36, 1e-06); xarray> arg_0 = { {0.95368636 + 0.32324664i, 0.49936872 + 0.22164004i, 0.30452434 + 0.78922905i}, {0.84118920 + 0.59652768i, 0.42052057 + 0.97211559i, 0.19916742 + 0.83068058i}, {0.67065616 + 0.56830636i, 0.00268706 + 0.29410473i, 0.69147455 + 0.7052149i}}; auto res = linalg::det(arg_0); auto res_i = std::imag(res); auto res_r = std::real(res); EXPECT_NEAR(0.4201495908415372, res_i, 1e-06); EXPECT_NEAR(-0.07633013993862534, res_r, 1e-06); } TEST(xlinalg, slogdet) { xarray> arg_0 = { {0.13373658 + 0.43025551i, 0.42593478 + 0.17539337i, 0.18840853 + 0.24669458i}, {0.82800224 + 0.11797823i, 0.40310379 + 0.14037109i, 0.88204561 + 0.96870283i}, {0.35427657 + 0.1233739i, 0.22740960 + 0.94019582i, 0.05410180 + 0.86462543i}}; auto resc = linalg::slogdet(arg_0); auto sc = std::get<0>(resc); auto sl = std::real(std::get<1>(resc)); auto scr = std::real(sc); auto sci = std::imag(sc); EXPECT_NEAR(-0.8818794751329891, sl, 1e-06); EXPECT_NEAR(0.8473375077176295, scr, 1e-06); EXPECT_NEAR(0.5310547504870624, sci, 1e-06); xarray arg_b = { {0.20009016, 0.33997118, 0.74433611}, {0.52721448, 0.2449798, 0.49085606}, {0.49757477, 0.97304175, 0.05011255}}; auto res = linalg::slogdet(arg_b); double expected_0 = 1.0; double expected_1 = -1.3017524147193602; auto sres = std::get<0>(res); auto lres = std::get<1>(res); EXPECT_EQ(expected_0, sres); EXPECT_NEAR(expected_1, lres, 1e-06); } TEST(xlinalg, svd) { xarray arg_0 = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}; auto res = linalg::svd(arg_0); xarray expected_0 = { {-0.13511895, 0.90281571, 0.40824829}, {-0.49633514, 0.29493179, -0.81649658}, {-0.85755134, -0.31295213, 0.40824829}}; xarray expected_1 = {1.42267074e+01, 1.26522599e+00, 5.89938022e-16}; xarray expected_2 = { {-0.4663281, -0.57099079, -0.67565348}, {-0.78477477, -0.08545673, 0.61386131}, {-0.40824829, 0.81649658, -0.40824829}}; EXPECT_TRUE(allclose(std::get<0>(res), expected_0)); EXPECT_TRUE(allclose(std::get<1>(res), expected_1)); EXPECT_TRUE(allclose(std::get<2>(res), expected_2)); } TEST(xlinalg, svd_horizontal_vertical) { xarray a = xt::ones({3, 1}); xarray b = xt::ones({1, 3}); xarray u, s, vt; std::tie(u, s, vt) = linalg::svd(a, false); EXPECT_TRUE(allclose(a, xt::linalg::dot(u * s, vt))); std::tie(u, s, vt) = linalg::svd(b, false); EXPECT_TRUE(allclose(b, xt::linalg::dot(u * s, vt))); } TEST(xlinalg, matrix_rank) { xarray eall = eye(4); int a = linalg::matrix_rank(eall); EXPECT_EQ(4, a); xarray b = eye(4); b(1, 1) = 0; int rb = linalg::matrix_rank(b); EXPECT_EQ(3, rb); xarray ones_arr = ones({4, 4}); int ro = linalg::matrix_rank(ones_arr); EXPECT_EQ(1, ro); xarray zarr = zeros({4, 4}); int rz = linalg::matrix_rank(zarr); EXPECT_EQ(0, rz); } TEST(xlinalg, eigh) { xarray arg_0 = {{-761., -208., -582.}, {-208., -623., -1605.5}, {-582., -1605.5, -476.}}; auto res = xt::linalg::eigh(arg_0); xarray expected_0 = {-2351.3290686, -609.79206435, 1101.12113295}; xarray expected_1 = { {-0.33220683, -0.93041946, -0.15478453}, {-0.66309119, 0.34708777, -0.66320446}, {-0.67078216, 0.11768479, 0.73225787}}; auto vals = std::get<0>(res); auto vecs = std::get<1>(res); EXPECT_TRUE(allclose(expected_0, vals)); EXPECT_TRUE(allclose(expected_1, vecs)); auto vals_2 = xt::linalg::eigvalsh(arg_0); EXPECT_TRUE(allclose(expected_0, vals_2)); xarray> complarg_0 = {{1. + 0.i, -0. - 2.i}, {0. + 2.i, 5. + 0.i}}; auto complres = xt::linalg::eigh(complarg_0); xarray complexpected_0 = {0.17157288, 5.82842712}; auto cmvals = std::get<0>(complres); auto cmvecs = std::get<1>(complres); EXPECT_TRUE(allclose(complexpected_0, cmvals)); xarray, layout_type::column_major> complexpected_1 = { {-0.92387953 + 0.i, -0.38268343 + 0.i}, {0.00000000 + 0.38268343i, 0.00000000 - 0.92387953i}}; EXPECT_TRUE(allclose(imag(complexpected_1), imag(cmvecs))); EXPECT_TRUE(allclose(real(complexpected_1), real(cmvecs))); auto cmvals2 = xt::linalg::eigvalsh(complarg_0); EXPECT_TRUE(allclose(complexpected_0, cmvals2)); } TEST(xlinalg, pinv) { xarray arg_0 = { {1.47351391, 0.94686323, 0.92236842, -1.44141916, -1.53123963, -0.36949144}, {-0.76686921, -0.01087083, -1.11100036, -0.59745592, -0.99849726, 0.45296729}, {-0.35274989, -1.27760231, 1.50092545, -2.7243503, -0.79326768, -1.00826405}, {0.05763039, 1.04069983, -0.502178, -1.01776144, 0.6496664, -0.2374513}, {-1.45517735, 0.42523508, 0.41400096, 0.87164292, 1.87754145, 0.16358461}, {1.07487297, -0.26417364, 1.82998799, 0.97985789, -0.74820612, -0.75097366}, {0.91375249, 1.14211989, -0.23055478, -0.48264987, -0.4591723, 0.83185472}, {0.05318152, -0.30014836, 1.68456715, 0.07388112, 0.0607432, -0.51529535}, {-1.36227295, -0.12015569, -0.45599178, -1.07135129, -0.27405687, 0.50177945}}; auto res = xt::linalg::pinv(arg_0); xarray expected = { {-0.12524671, -0.41299325, 0.09108576, -0.07346514, -0.29603324, -0.1702256, 0.28503799, -0.08979346, -0.29415286}, {0.38896886, 0.28355746, -0.26406943, 0.36828839, 0.29271933, 0.19368219, -0.11433648, 0.05102866, 0.11050527}, {0.05803293, -0.11353613, 0.08736754, -0.20744326, 0.21647828, 0.11201996, 0.26187311, 0.24550066, 0.13766844}, {0.01037663, 0.15710257, -0.24647364, -0.06611398, 0.0482986, 0.21835662, -0.18763349, 0.01747553, -0.02066564}, {-0.23681835, -0.44982904, 0.14998634, 0.07608489, 0.04751429, -0.27436861, 0.18626331, -0.01520331, -0.18144752}, {-0.25580995, -0.33606213, 0.10424938, -0.64100544, 0.01084618, -0.28963573, 0.89629794, 0.12987378, 0.22451995}}; EXPECT_TRUE(allclose(expected, res)); xarray> cmpl_arg_0 = { {-0.32865615 + 1.56868725i, 0.28804396 + 0.52266479i}, {-1.29703842 + 0.34647524i, -2.14982936 + 0.31425111i}, {-0.69224750 - 1.36725801i, 2.22948403 + 1.4612309i}}; auto cmpl_res = xt::linalg::pinv(cmpl_arg_0); xarray> cmpl_expected = { {-0.06272312 - 0.24840107i, -0.20530381 - 0.00548715i, -0.14179276 + 0.16337684i}, {0.05975312 - 0.0502577i, -0.17431091 - 0.05525696i, 0.16047967 - 0.14140846i}}; EXPECT_TRUE(allclose(real(cmpl_expected), real(cmpl_res))); EXPECT_TRUE(allclose(imag(cmpl_expected), imag(cmpl_res))); } TEST(xlinalg, pinv_small) { xt::xtensor d1{{1.f, 2.f}}; auto r1 = xt::linalg::pinv(d1); xt::xtensor e1 = {{0.2f}, {0.4f}}; EXPECT_TRUE(allclose(r1, e1)); xt::xtensor d2{{1.f}}; auto r2 = xt::linalg::pinv(d2); EXPECT_EQ(r2(0), 1.f); } TEST(xlinalg, mat_norm) { xarray arg_0 = { {0.06817001, 0.50274712, -0.36802027, -0.93123204}, {-0.5990272, -0.67439921, -0.09397038, -1.55915724}, {2.22694395, 0.59099048, -0.43162172, 0.19410077}, {0.41859591, 1.68555153, 1.82660739, 1.24427635}}; auto res1 = xt::linalg::norm(arg_0, 1); auto res2 = xt::linalg::norm(arg_0, linalg::normorder::frob); auto res3 = xt::linalg::norm(arg_0, linalg::normorder::inf); auto res4 = xt::linalg::norm(arg_0, linalg::normorder::neg_inf); auto res5 = xt::linalg::norm(arg_0, linalg::normorder::nuc); auto res6 = xt::linalg::norm(arg_0, 2); double exp1 = 3.92876639061; double exp2 = 4.23639347394; double exp3 = 5.17503118283; double exp4 = 1.87016943835; double exp5 = 7.42677006218; double exp6 = 3.29152325862; EXPECT_NEAR(exp1, res1, 1e-06); EXPECT_NEAR(exp2, res2, 1e-06); EXPECT_NEAR(exp3, res3, 1e-06); EXPECT_NEAR(exp4, res4, 1e-06); EXPECT_NEAR(exp5, res5, 1e-06); EXPECT_NEAR(exp6, res6, 1e-06); xarray> cmplarg_0 = { {0.40101756 + 0.71233018i, 0.62731701 + 0.42786349i, 0.32415089 + 0.2977805i}, {0.24475928 + 0.49208478i, 0.69475518 + 0.74029639i, 0.59390240 + 0.35772892i}, {0.63179202 + 0.41720995i, 0.44025718 + 0.65472131i, 0.08372648 + 0.37380143i}}; auto cmplres1 = xt::linalg::norm(cmplarg_0, 1); auto cmplres2 = xt::linalg::norm(cmplarg_0, linalg::normorder::frob); auto cmplres3 = xt::linalg::norm(cmplarg_0, linalg::normorder::inf); auto cmplres4 = xt::linalg::norm(cmplarg_0, linalg::normorder::neg_inf); auto cmplres5 = xt::linalg::norm(cmplarg_0, linalg::normorder::nuc); auto cmplres6 = xt::linalg::norm(cmplarg_0, 2); double cmplexp1 = 2.56356133004; double cmplexp2 = 2.14347558031; double cmplexp3 = 2.25815855456; double cmplexp4 = 1.92915797164; double cmplexp5 = 2.77947580342; double cmplexp6 = 2.0683368289; EXPECT_NEAR(cmplexp1, cmplres1, 1e-06); EXPECT_NEAR(cmplexp2, cmplres2, 1e-06); EXPECT_NEAR(cmplexp3, cmplres3, 1e-06); EXPECT_NEAR(cmplexp4, cmplres4, 1e-06); EXPECT_NEAR(cmplexp5, cmplres5, 1e-06); EXPECT_NEAR(cmplexp6, cmplres6, 1e-06); } TEST(xlinalg, vec_norm) { xarray arg_0 = {0.23451288, 0.98799529, 0.76599595, 0.77700444, 0.02798196}; EXPECT_NEAR(2.79349050582, xt::linalg::norm(arg_0, 1), 1e-6); EXPECT_NEAR(1.49077149771, xt::linalg::norm(arg_0, 2), 1e-6); EXPECT_NEAR(1.23766843269, xt::linalg::norm(arg_0, 3), 1e-6); EXPECT_NEAR(1.13587319901, xt::linalg::norm(arg_0, 4), 1e-6); EXPECT_NEAR(5.0, xt::linalg::norm(arg_0, 0), 1e-6); EXPECT_NEAR(0.0229325662443, xt::linalg::norm(arg_0, -1), 1e-6); EXPECT_NEAR(0.0277379546324, xt::linalg::norm(arg_0, -2), 1e-6); EXPECT_NEAR(0.987995286517, xt::linalg::norm(arg_0, linalg::normorder::inf), 1e-6); EXPECT_NEAR(0.0279819550429, xt::linalg::norm(arg_0, linalg::normorder::neg_inf), 1e-6); xarray> arg_1 = { 0.23451288 + 0.77700444i, 0.98799529 + 0.02798196i, 0.76599595 + 0.17390652i}; EXPECT_NEAR(2.58550383197, xt::linalg::norm(arg_1, 1), 1e-06); EXPECT_NEAR(1.50088078633, xt::linalg::norm(arg_1, 2), 1e-06); EXPECT_NEAR(1.25673399279, xt::linalg::norm(arg_1, 3), 1e-06); EXPECT_NEAR(1.15326879931, xt::linalg::norm(arg_1, 4), 1e-06); EXPECT_NEAR(3.0, xt::linalg::norm(arg_1, 0), 1e-06); EXPECT_NEAR(0.284338433895, xt::linalg::norm(arg_1, -1), 1e-06); EXPECT_NEAR(0.490145522524, xt::linalg::norm(arg_1, -2), 1e-06); EXPECT_NEAR(0.98839145888, xt::linalg::norm(arg_1, linalg::normorder::inf), 1e-06); EXPECT_NEAR(0.785489192861, xt::linalg::norm(arg_1, linalg::normorder::neg_inf), 1e-06); } TEST(xlinalg, vdot) { xarray arg_0 = {0.23451288, 0.98799529, 0.76599595, 0.77700444, 0.02798196}; xarray arg_1 = {0.17390652, 0.15408224, 0.07708648, 0.8898657, 0.7503787}; auto res = xt::linalg::vdot(arg_0, arg_1); EXPECT_NEAR(0.964490439715, res, 1e-06); xarray> carg_0 = { 0.23451288 + 0.17390652i, 0.98799529 + 0.15408224i, 0.76599595 + 0.07708648i, 0.77700444 + 0.8898657i, 0.02798196 + 0.7503787i}; xarray> carg_1 = { 0.17390652 + 0.23451288i, 0.15408224 + 0.98799529i, 0.07708648 + 0.76599595i, 0.88986570 + 0.77700444i, 0.75037870 + 0.02798196i}; auto res_c = xt::linalg::vdot(carg_0, carg_1); EXPECT_NEAR(1.9289808794290355, std::real(res_c), 1e-06); EXPECT_NEAR(0.8075433553117102, std::imag(res_c), 1e-06); } TEST(xlinalg, kron) { xarray arg_0 = {{2, 1, 8}, {3, 5, 0}, {2, 6, 2}, {4, 4, 6}}; xarray arg_1 = {{3, 0, 6, 4, 7}, {6, 7, 1, 5, 7}}; auto res = xt::linalg::kron(arg_0, arg_1); xarray expected = { {6, 0, 12, 8, 14, 3, 0, 6, 4, 7, 24, 0, 48, 32, 56}, {12, 14, 2, 10, 14, 6, 7, 1, 5, 7, 48, 56, 8, 40, 56}, {9, 0, 18, 12, 21, 15, 0, 30, 20, 35, 0, 0, 0, 0, 0}, {18, 21, 3, 15, 21, 30, 35, 5, 25, 35, 0, 0, 0, 0, 0}, {6, 0, 12, 8, 14, 18, 0, 36, 24, 42, 6, 0, 12, 8, 14}, {12, 14, 2, 10, 14, 36, 42, 6, 30, 42, 12, 14, 2, 10, 14}, {12, 0, 24, 16, 28, 12, 0, 24, 16, 28, 18, 0, 36, 24, 42}, {24, 28, 4, 20, 28, 24, 28, 4, 20, 28, 36, 42, 6, 30, 42}}; EXPECT_EQ(expected, res); } TEST(xlinalg, cholesky) { xarray arg_0 = {{4, 12, -16}, {12, 37, -43}, {-16, -43, 98}}; auto res = xt::linalg::cholesky(arg_0); xarray expected = {{2., 0., 0.}, {6., 1., 0.}, {-8., 5., 3.}}; EXPECT_EQ(expected, res); xarray> cmplarg_0 = {{1. + 0.i, -0. - 2.i}, {0. + 2.i, 5. + 0.i}}; auto cmplres = xt::linalg::cholesky(cmplarg_0); xarray> cmplexpected = {{1. + 0.i, 0. + 0.i}, {0. + 2.i, 1. + 0.i}}; EXPECT_EQ(cmplexpected, cmplres); } TEST(xlinalg, qr) { xarray a = xt::random::rand({9, 6}); auto res = xt::linalg::qr(a); xarray q = std::get<0>(res); xarray r = std::get<1>(res); auto resf = xt::linalg::qr(a, linalg::qrmode::complete); auto resr = xt::linalg::qr(a, linalg::qrmode::r); xarray qf = std::get<0>(resf); xarray rf = std::get<1>(resf); auto neara = xt::linalg::dot(q, r); EXPECT_TRUE(allclose(neara, a)); auto nearaf = xt::linalg::dot(qf, rf); EXPECT_TRUE(allclose(nearaf, a)); EXPECT_EQ(std::get<1>(resr), xt::view(rf, xt::range(0, 6), xt::all())); EXPECT_EQ(std::get<0>(resr).size(), 0u); EXPECT_EQ(std::get<0>(resr).dimension(), 1u); xarray erawR = { {-1.00444014e+01, 0.00000000e+00, 6.74440143e-01, 2.24813381e-01}, {-9.58743044e+00, -1.25730337e+01, -6.22814365e-03, 3.37562246e-01}, {-1.29027101e+01, -7.34080303e+00, -4.07831856e+00, -5.76331089e-01}}; xarray eTau = {1.32854123, 1.79535299, 1.50132395}; xarray AA = {{3.3, 1., 2.}, {0., 10., 8.}, {9., 7., 12.}, {3., 10., 5.}}; auto resraw = xt::linalg::qr(AA, linalg::qrmode::raw); auto tau = std::get<1>(resraw); auto rawR = std::get<0>(resraw); EXPECT_TRUE(allclose(tau, eTau)); EXPECT_TRUE(allclose(erawR, rawR)); } TEST(xlinalg, lstsq) { xarray arg_0 = {{0., 1.}, {1., 1.}, {2., 1.}, {3., 1.}}; xarray arg_1 = {{-1., 0.2, 0.9, 2.1}, {2., 3., 2., 1.}}; arg_1 = transpose(arg_1); auto res = xt::linalg::lstsq(arg_0, arg_1); xarray el_0 = {{1., -0.4}, {-0.95, 2.6}}; xarray el_1 = {0.05, 1.2}; int el_2 = 2; xarray el_3 = {4.10003045, 1.09075677}; EXPECT_TRUE(allclose(el_0, std::get<0>(res))); EXPECT_TRUE(allclose(el_1, std::get<1>(res))); EXPECT_EQ(el_2, std::get<2>(res)); EXPECT_TRUE(allclose(el_3, std::get<3>(res))); xarray> carg_0 = {{0., 1.}, {1. - 3i, 1.}, {2., 1.}, {3., 1.}}; xarray> carg_1 = {{-1., 0.2 + 4i, 0.9, 2.1 - 1i}, {2, 3i, 2, 1}}; carg_1 = transpose(carg_1); auto cres = xt::linalg::lstsq(carg_0, carg_1); xarray, layout_type::column_major> cel_0 = { {-0.40425532 - 0.38723404i, -0.61702128 - 0.44680851i}, {1.44680851 + 1.02765957i, 2.51063830 + 0.95744681i}}; xarray cel_1 = {16.11787234, 2.68085106}; int cel_2 = 2; xarray cel_3 = {5.01295356, 1.36758789}; EXPECT_TRUE(allclose(imag(cel_0), imag(std::get<0>(cres)))); EXPECT_TRUE(allclose(real(cel_0), real(std::get<0>(cres)))); EXPECT_TRUE(allclose(cel_1, std::get<1>(cres))); EXPECT_EQ(cel_2, std::get<2>(cres)); EXPECT_TRUE(allclose(cel_3, std::get<3>(cres))); } TEST(xlinalg, trace) { auto e1 = eye(10); xarray e2 = eye(5); auto t1 = linalg::trace(e1); auto t11 = linalg::trace(e1, 1); auto t1n1 = linalg::trace(e1, -1); EXPECT_EQ(10, t1()); EXPECT_EQ(0, t11()); EXPECT_EQ(0, t1n1()); auto t2 = linalg::trace(e2); auto t22 = linalg::trace(e2, 1); EXPECT_EQ(5, t2()); EXPECT_EQ(0, t22()); xarray ar = xt::arange(9); ar.reshape({3, 3}); auto ar1 = linalg::trace(ar); auto ar2 = linalg::trace(ar, 1); auto ar3 = linalg::trace(ar, -1); EXPECT_EQ(12, ar1()); EXPECT_EQ(6, ar2()); EXPECT_EQ(10, ar3()); } TEST(xlinalg, dots) { xarray arg_0 = { {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}, {{9, 10, 11}, {12, 13, 14}, {15, 16, 17}}}; xarray arg_1 = { {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}, {{9, 10, 11}, {12, 13, 14}, {15, 16, 17}}, {{18, 19, 20}, {21, 22, 23}, {24, 25, 26}}}; auto res1 = xt::linalg::dot(arg_0, arg_1); xarray expected1 = { {{{15, 18, 21}, {42, 45, 48}, {69, 72, 75}}, {{42, 54, 66}, {150, 162, 174}, {258, 270, 282}}, {{69, 90, 111}, {258, 279, 300}, {447, 468, 489}}}, {{{96, 126, 156}, {366, 396, 426}, {636, 666, 696}}, {{123, 162, 201}, {474, 513, 552}, {825, 864, 903}}, {{150, 198, 246}, {582, 630, 678}, {1014, 1062, 1110}}}}; EXPECT_TRUE(allclose(expected1, res1)); auto res2 = xt::linalg::dot(arg_1, arg_0); xarray expected2 = { {{{15, 18, 21}, {42, 45, 48}}, {{42, 54, 66}, {150, 162, 174}}, {{69, 90, 111}, {258, 279, 300}}}, {{{96, 126, 156}, {366, 396, 426}}, {{123, 162, 201}, {474, 513, 552}}, {{150, 198, 246}, {582, 630, 678}}}, {{{177, 234, 291}, {690, 747, 804}}, {{204, 270, 336}, {798, 864, 930}}, {{231, 306, 381}, {906, 981, 1056}}}}; EXPECT_TRUE(allclose(expected2, res2)); xarray arg_2 = {0, 1, 2}; auto res3 = xt::linalg::dot(arg_0, arg_2); xarray expected3 = {{5, 14, 23}, {32, 41, 50}}; EXPECT_TRUE(allclose(expected3, res3)); auto res4 = xt::linalg::dot(arg_2, arg_0); xarray expected4 = {{15, 18, 21}, {42, 45, 48}}; EXPECT_TRUE(allclose(expected4, res4)); } TEST(xlinalg, negative_strides) { xt::xarray A = {{2, 3}, {5, 7}, {11, 13}}; auto A1 = xt::view(A, xt::range(0, 3), 0); auto A2 = xt::view(A, xt::range(-1, -4, -1), 1); auto res = xt::linalg::dot(A1, A2); EXPECT_EQ(res(), 94); } TEST(xlinalg, asserts) { EXPECT_THROW(xt::linalg::eigh(xt::ones({3, 1})), std::runtime_error); EXPECT_THROW(xt::linalg::eig(xt::ones({3, 1})), std::runtime_error); EXPECT_THROW(xt::linalg::solve(xt::ones({3, 1}), xt::ones({3, 1})), std::runtime_error); EXPECT_THROW(xt::linalg::inv(xt::ones({3, 1})), std::runtime_error); EXPECT_THROW(xt::linalg::eigvals(xt::ones({3, 1})), std::runtime_error); EXPECT_THROW(xt::linalg::eigvalsh(xt::ones({3, 1})), std::runtime_error); EXPECT_THROW(xt::linalg::det(xt::ones({3, 1})), std::runtime_error); EXPECT_THROW(xt::linalg::slogdet(xt::ones({3, 1})), std::runtime_error); EXPECT_THROW(xt::linalg::cholesky(xt::ones({3, 1})), std::runtime_error); EXPECT_THROW(xt::linalg::eigh(xt::ones>({3, 1})), std::runtime_error); EXPECT_THROW(xt::linalg::eig(xt::ones>({3, 1})), std::runtime_error); EXPECT_THROW( xt::linalg::solve(xt::ones>({3, 1}), xt::ones>({3, 1})), std::runtime_error ); EXPECT_THROW(xt::linalg::inv(xt::ones>({3, 1})), std::runtime_error); EXPECT_THROW(xt::linalg::eigvals(xt::ones>({3, 1})), std::runtime_error); EXPECT_THROW(xt::linalg::eigvalsh(xt::ones>({3, 1})), std::runtime_error); EXPECT_THROW(xt::linalg::det(xt::ones>({3, 1})), std::runtime_error); EXPECT_THROW(xt::linalg::slogdet(xt::ones>({3, 1})), std::runtime_error); EXPECT_THROW(xt::linalg::cholesky(xt::ones>({3, 1})), std::runtime_error); } } // namespace xt xtensor-blas-0.21.0/test/test_lstsq.cpp000066400000000000000000000407351456314707100201240ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ // This file is generated from test/files/cppy_source/test_lstsq.cppy by // preprocess.py! #include #include "xtensor/xarray.hpp" #include "xtensor/xfixed.hpp" #include "xtensor/xnoalias.hpp" #include "xtensor/xstrided_view.hpp" #include "xtensor/xtensor.hpp" #include "xtensor/xview.hpp" #include "gtest/gtest.h" #include "xtensor-blas/xlinalg.hpp" namespace xt { using namespace xt::placeholders; /*py a = np.random.random((6, 3)) b = np.ones((6)) */ TEST(xtest_extended, lstsq1) { // py_a xarray py_a = { {0.3745401188473625, 0.9507143064099162, 0.7319939418114051}, {0.5986584841970366, 0.1560186404424365, 0.1559945203362026}, {0.0580836121681995, 0.8661761457749352, 0.6011150117432088}, {0.7080725777960455, 0.0205844942958024, 0.9699098521619943}, {0.8324426408004217, 0.2123391106782762, 0.1818249672071006}, {0.1834045098534338, 0.3042422429595377, 0.5247564316322378}}; // py_b xarray py_b = {1., 1., 1., 1., 1., 1.}; // py_res0 = np.linalg.lstsq(a, b)[0] xarray py_res0 = {0.99525656797683, 0.6379298291900684, 0.416589303565964}; // py_res1 = np.linalg.lstsq(a, b)[1] xarray py_res1 = {0.3378625895661748}; // py_res2 = np.linalg.lstsq(a, b)[2] int py_res2 = 3; // py_res3 = np.linalg.lstsq(a, b)[3] xarray py_res3 = {2.081504268698353, 1.012756249516551, 0.599044658280111}; auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } /*py a = np.random.random((3, 3)) b = np.ones((3)) */ TEST(xtest_extended, lstsq20) { // py_a xarray py_a = { {0.4319450186421158, 0.2912291401980419, 0.6118528947223795}, {0.1394938606520418, 0.2921446485352182, 0.3663618432936917}, {0.4560699842170359, 0.7851759613930136, 0.1996737821583597}}; // py_b xarray py_b = {1., 1., 1.}; // py_res0 = np.linalg.lstsq(a, b)[0] xarray py_res0 = {-1.655587220862159, 1.7320451450169407, 1.9787446378934206}; // py_res1 = np.linalg.lstsq(a, b)[1] xarray py_res1 = {}; // py_res2 = np.linalg.lstsq(a, b)[2] int py_res2 = 3; // py_res3 = np.linalg.lstsq(a, b)[3] xarray py_res3 = {1.2339483753871052, 0.4580824861786693, 0.1291723342275802}; auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } /*py a = np.random.random((3, 3)) b = np.ones((3, 3)) */ TEST(xtest_extended, lstsq21) { // py_a xarray py_a = { {0.5142344384136116, 0.5924145688620425, 0.0464504127199977}, {0.6075448519014384, 0.1705241236872915, 0.0650515929852795}, {0.9488855372533332, 0.9656320330745594, 0.8083973481164611}}; // py_b xarray py_b = {{1., 1., 1.}, {1., 1., 1.}, {1., 1., 1.}}; // py_res0 = np.linalg.lstsq(a, b)[0] xarray py_res0 = { {1.6749237812267237, 1.6749237812267237, 1.6749237812267237}, {0.3213797243357512, 0.3213797243357512, 0.3213797243357512}, {-1.1128753832544371, -1.1128753832544371, -1.1128753832544371}}; // py_res1 = np.linalg.lstsq(a, b)[1] xarray py_res1 = {}; // py_res2 = np.linalg.lstsq(a, b)[2] int py_res2 = 3; // py_res3 = np.linalg.lstsq(a, b)[3] xarray py_res3 = {1.8090476189892228, 0.4005423925178662, 0.2705890168670333}; auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } /*py a = np.random.random((2, 5)) b = np.ones((2)) */ TEST(xtest_extended, lstsq3) { // py_a xarray py_a = { {0.3046137691733707, 0.0976721140063839, 0.6842330265121569, 0.4401524937396013, 0.1220382348447788}, {0.4951769101112702, 0.0343885211152184, 0.9093204020787821, 0.2587799816000169, 0.662522284353982}}; // py_b xarray py_b = {1., 1.}; // py_res0 = np.linalg.lstsq(a, b)[0] xarray py_res0 = { 0.3137661125421979, 0.183749537801855, 0.8404557593671863, 0.7586648365305537, -0.1845363594995904}; // py_res1 = np.linalg.lstsq(a, b)[1] xarray py_res1 = {}; // py_res2 = np.linalg.lstsq(a, b)[2] int py_res2 = 2; // py_res3 = np.linalg.lstsq(a, b)[3] xarray py_res3 = {1.4931292414997537, 0.3589512974668556}; auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } /*py a = np.random.random((2, 5)) b = np.ones((2, 10)) */ TEST(xtest_extended, lstsq4) { // py_a xarray py_a = { {0.311711076089411, 0.5200680211778108, 0.5467102793432796, 0.184854455525527, 0.9695846277645586}, {0.7751328233611146, 0.9394989415641891, 0.8948273504276488, 0.5978999788110851, 0.9218742350231168}}; // py_b xarray py_b = { {1., 1., 1., 1., 1., 1., 1., 1., 1., 1.}, {1., 1., 1., 1., 1., 1., 1., 1., 1., 1.}}; // py_res0 = np.linalg.lstsq(a, b)[0] xarray py_res0 = { {-0.0723929848964098, -0.0723929848964098, -0.0723929848964098, -0.0723929848964098, -0.0723929848964098, -0.0723929848964098, -0.0723929848964098, -0.0723929848964098, -0.0723929848964098, -0.0723929848964098}, {0.1423971374668718, 0.1423971374668718, 0.1423971374668718, 0.1423971374668718, 0.1423971374668718, 0.1423971374668718, 0.1423971374668718, 0.1423971374668718, 0.1423971374668718, 0.1423971374668718}, {0.2187317829605842, 0.2187317829605842, 0.2187317829605842, 0.2187317829605842, 0.2187317829605842, 0.2187317829605842, 0.2187317829605842, 0.2187317829605842, 0.2187317829605842, 0.2187317829605842}, {-0.1457627271119433, -0.1457627271119433, -0.1457627271119433, -0.1457627271119433, -0.1457627271119433, -0.1457627271119433, -0.1457627271119433, -0.1457627271119433, -0.1457627271119433, -0.1457627271119433}, {0.882719722037499, 0.882719722037499, 0.882719722037499, 0.882719722037499, 0.882719722037499, 0.882719722037499, 0.882719722037499, 0.882719722037499, 0.882719722037499, 0.882719722037499}}; // py_res1 = np.linalg.lstsq(a, b)[1] xarray py_res1 = {}; // py_res2 = np.linalg.lstsq(a, b)[2] int py_res2 = 2; // py_res3 = np.linalg.lstsq(a, b)[3] xarray py_res3 = {2.23042850951828, 0.3968910268428817}; auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } /*py a = np.random.random((10, 5)) b = np.ones((10, 20)) */ TEST(xtest_extended, lstsq5) { // py_a xarray py_a = { {0.0884925020519195, 0.1959828624191452, 0.0452272889105381, 0.3253303307632643, 0.388677289689482}, {0.2713490317738959, 0.8287375091519293, 0.3567533266935893, 0.2809345096873808, 0.5426960831582485}, {0.1409242249747626, 0.8021969807540397, 0.0745506436797708, 0.9868869366005173, 0.7722447692966574}, {0.1987156815341724, 0.0055221171236024, 0.8154614284548342, 0.7068573438476171, 0.7290071680409873}, {0.7712703466859457, 0.0740446517340904, 0.3584657285442726, 0.1158690595251297, 0.8631034258755935}, {0.6232981268275579, 0.3308980248526492, 0.0635583502860236, 0.3109823217156622, 0.325183322026747}, {0.7296061783380641, 0.6375574713552131, 0.8872127425763265, 0.4722149251619493, 0.1195942459383017}, {0.713244787222995, 0.7607850486168974, 0.5612771975694962, 0.770967179954561, 0.4937955963643907}, {0.5227328293819941, 0.4275410183585496, 0.0254191267440952, 0.1078914269933045, 0.0314291856867343}, {0.6364104112637804, 0.3143559810763267, 0.5085706911647028, 0.907566473926093, 0.2492922291488749}}; // py_b xarray py_b = { {1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.}, {1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.}, {1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.}, {1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.}, {1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.}, {1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.}, {1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.}, {1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.}, {1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.}, {1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.}}; // py_res0 = np.linalg.lstsq(a, b)[0] xarray py_res0 = { {0.7695214798127482, 0.7695214798127482, 0.7695214798127482, 0.7695214798127482, 0.7695214798127482, 0.7695214798127482, 0.7695214798127482, 0.7695214798127482, 0.7695214798127482, 0.7695214798127482, 0.7695214798127482, 0.7695214798127482, 0.7695214798127482, 0.7695214798127482, 0.7695214798127482, 0.7695214798127482, 0.7695214798127483, 0.7695214798127483, 0.7695214798127483, 0.7695214798127483}, {0.3603784058338763, 0.3603784058338763, 0.3603784058338763, 0.3603784058338763, 0.3603784058338763, 0.3603784058338763, 0.3603784058338763, 0.3603784058338763, 0.3603784058338763, 0.3603784058338763, 0.3603784058338763, 0.3603784058338763, 0.3603784058338763, 0.3603784058338763, 0.3603784058338763, 0.3603784058338763, 0.3603784058338762, 0.3603784058338762, 0.3603784058338763, 0.3603784058338763}, {-0.0288908468951092, -0.0288908468951092, -0.0288908468951092, -0.0288908468951092, -0.0288908468951092, -0.0288908468951092, -0.0288908468951092, -0.0288908468951092, -0.0288908468951092, -0.0288908468951092, -0.0288908468951092, -0.0288908468951092, -0.0288908468951092, -0.0288908468951092, -0.0288908468951092, -0.0288908468951092, -0.0288908468951093, -0.0288908468951093, -0.0288908468951092, -0.0288908468951092}, {0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164651, 0.2739420182164652, 0.2739420182164652}, {0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307, 0.6381721647626307}}; // py_res1 = np.linalg.lstsq(a, b)[1] xarray py_res1 = { 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331, 0.6683875034141331}; // py_res2 = np.linalg.lstsq(a, b)[2] int py_res2 = 5; // py_res3 = np.linalg.lstsq(a, b)[3] xarray py_res3 = {3.317877520855451, 1.0262463009257718, 0.9696565206896536, 0.8384020117545181, 0.5915006407947916}; auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } /*py a = np.array([[0., 1.]]) b = np.array([1.]) */ TEST(xtest_extended, lstsq6) { // py_a xarray py_a = {{0., 1.}}; // py_b xarray py_b = {1.}; // py_res0 = np.linalg.lstsq(a, b)[0] xarray py_res0 = {0., 1.}; // py_res1 = np.linalg.lstsq(a, b)[1] xarray py_res1 = {}; // py_res2 = np.linalg.lstsq(a, b)[2] int py_res2 = 1; // py_res3 = np.linalg.lstsq(a, b)[3] xarray py_res3 = {1.}; auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } /*py a = np.array([[1.], [1.]]) b = np.array([1., 1.]) */ TEST(xtest_extended, lstsq7) { // cannot use "// py_a" due to ambiguous initializer list conversion below // xarray py_a = {{1.}, // {1.}}; xarray py_a = xt::ones({2, 1}); // py_b xarray py_b = {1., 1.}; // py_res0 = np.linalg.lstsq(a, b)[0] xarray py_res0 = {0.9999999999999997}; // py_res1 = np.linalg.lstsq(a, b)[1] xarray py_res1 = {2.2508083912556065e-33}; // py_res2 = np.linalg.lstsq(a, b)[2] int py_res2 = 1; // py_res3 = np.linalg.lstsq(a, b)[3] xarray py_res3 = {1.4142135623730951}; auto xres = xt::linalg::lstsq(py_a, py_b); EXPECT_TRUE(xt::allclose(std::get<0>(xres), py_res0)); EXPECT_TRUE(xt::allclose(std::get<1>(xres), py_res1)); EXPECT_EQ(std::get<2>(xres), py_res2); EXPECT_TRUE(xt::allclose(std::get<3>(xres), py_res3)); } } // namespace xt xtensor-blas-0.21.0/test/test_qr.cpp000066400000000000000000000374121456314707100173760ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ // This file is generated from test/files/cppy_source/test_qr.cppy by // preprocess.py! #include #include "xtensor/xarray.hpp" #include "xtensor/xfixed.hpp" #include "xtensor/xnoalias.hpp" #include "xtensor/xstrided_view.hpp" #include "xtensor/xtensor.hpp" #include "xtensor/xview.hpp" #include "gtest/gtest.h" #include "xtensor-blas/xlinalg.hpp" namespace xt { using namespace xt::placeholders; /*py a = np.random.random((6, 3)) res_q1 = np.linalg.qr(a, 'raw') res_q2 = np.linalg.qr(a, 'complete') res_q3 = np.linalg.qr(a, 'reduced') res_q4 = np.linalg.qr(a, 'r') */ TEST(xtest_extended, qr1) { // py_a xarray py_a = { {0.3745401188473625, 0.9507143064099162, 0.7319939418114051}, {0.5986584841970366, 0.1560186404424365, 0.1559945203362026}, {0.0580836121681995, 0.8661761457749352, 0.6011150117432088}, {0.7080725777960455, 0.0205844942958024, 0.9699098521619943}, {0.8324426408004217, 0.2123391106782762, 0.1818249672071006}, {0.1834045098534338, 0.3042422429595377, 0.5247564316322378}}; // py_resq1_h = res_q1[0] xarray py_resq1_h = { {-1.3152987216651169, 0.3542695728401418, 0.0343722790456067, 0.4190178144924799, 0.4926165861757361, 0.1085337284576868}, {-0.567877094797874, 1.2223138676385652, -0.5073775633545011, 0.3838046167052855, 0.3339455785740943, -0.0869071101793681}, {-1.0163710885529547, 0.7215655008695085, 0.7854784971183756, -0.8184018010449023, 0.3355103841692941, -0.2743559826773574}}; // py_resq1_tau = res_q1[1] xarray py_resq1_tau = {1.2847566964660388, 1.3124991842889797, 1.0766465015522177}; auto res1 = linalg::qr(py_a, linalg::qrmode::raw); EXPECT_TRUE(allclose(std::get<0>(res1), py_resq1_h)); EXPECT_TRUE(allclose(std::get<1>(res1), py_resq1_tau)); // py_resq2_q_cmpl = res_q2[0] xarray py_resq2_q_cmpl = { {-0.2847566964660388, 0.6455031901264903, -0.0295327810119745, -0.5849049416686276, -0.0730618203174815, -0.3923203408230155}, {-0.4551502060605353, -0.0838170448559192, -0.3133472182914374, 0.0819245453270295, -0.7892351407115685, 0.2408791714587237}, {-0.0441600156766425, 0.6881200538051699, 0.0760152664601146, 0.7143224973945711, 0.0235700722943727, 0.0891638112668338}, {-0.538335943107778, -0.2332659103773061, 0.7525061466150679, 0.1447692100263401, -0.0279639819291248, -0.2603378924852557}, {-0.6328924578795164, -0.1203177215897514, -0.4769214096589269, 0.1040507467269481, 0.5878955555305321, 0.0326957112268427}, {-0.1394394344284399, 0.1841243791750922, 0.31850193596774, -0.3303532438685529, 0.1575155429538277, 0.8433664457979998}}; // py_resq2_r_cmpl = res_q2[1] xarray py_resq2_r_cmpl = { {-1.3152987216651169, -0.567877094797874, -1.0163710885529547}, {0., 1.2223138676385652, 0.7215655008695085}, {0., 0., 0.7854784971183756}, {0., 0., 0.}, {0., 0., 0.}, {0., 0., 0.}}; auto res2 = linalg::qr(py_a, linalg::qrmode::complete); EXPECT_TRUE(allclose(std::get<0>(res2), py_resq2_q_cmpl)); EXPECT_TRUE(allclose(std::get<1>(res2), py_resq2_r_cmpl)); // py_resq3_q_cmpl = res_q3[0] xarray py_resq3_q_cmpl = { {-0.2847566964660388, 0.6455031901264903, -0.0295327810119745}, {-0.4551502060605353, -0.0838170448559192, -0.3133472182914374}, {-0.0441600156766425, 0.6881200538051699, 0.0760152664601146}, {-0.538335943107778, -0.2332659103773061, 0.7525061466150679}, {-0.6328924578795164, -0.1203177215897514, -0.4769214096589269}, {-0.1394394344284399, 0.1841243791750922, 0.31850193596774}}; // py_resq3_r_cmpl = res_q3[1] xarray py_resq3_r_cmpl = { {-1.3152987216651169, -0.567877094797874, -1.0163710885529547}, {0., 1.2223138676385652, 0.7215655008695085}, {0., 0., 0.7854784971183756}}; auto res3 = linalg::qr(py_a, linalg::qrmode::reduced); EXPECT_TRUE(allclose(std::get<0>(res3), py_resq3_q_cmpl)); EXPECT_TRUE(allclose(std::get<1>(res3), py_resq3_r_cmpl)); // py_resq4_r_r = res_q4 xarray py_resq4_r_r = { {-1.3152987216651169, -0.567877094797874, -1.0163710885529547}, {0., 1.2223138676385652, 0.7215655008695085}, {0., 0., 0.7854784971183756}}; auto res4 = linalg::qr(py_a, linalg::qrmode::r); EXPECT_TRUE(allclose(std::get<1>(res4), py_resq4_r_r)); } /*py a = np.random.random((5, 10)) res_q1 = np.linalg.qr(a, 'raw') res_q2 = np.linalg.qr(a, 'complete') res_q3 = np.linalg.qr(a, 'reduced') res_q4 = np.linalg.qr(a, 'r') */ TEST(xtest_extended, qr2) { // py_a xarray py_a = { {0.4319450186421158, 0.2912291401980419, 0.6118528947223795, 0.1394938606520418, 0.2921446485352182, 0.3663618432936917, 0.4560699842170359, 0.7851759613930136, 0.1996737821583597, 0.5142344384136116}, {0.5924145688620425, 0.0464504127199977, 0.6075448519014384, 0.1705241236872915, 0.0650515929852795, 0.9488855372533332, 0.9656320330745594, 0.8083973481164611, 0.3046137691733707, 0.0976721140063839}, {0.6842330265121569, 0.4401524937396013, 0.1220382348447788, 0.4951769101112702, 0.0343885211152184, 0.9093204020787821, 0.2587799816000169, 0.662522284353982, 0.311711076089411, 0.5200680211778108}, {0.5467102793432796, 0.184854455525527, 0.9695846277645586, 0.7751328233611146, 0.9394989415641891, 0.8948273504276488, 0.5978999788110851, 0.9218742350231168, 0.0884925020519195, 0.1959828624191452}, {0.0452272889105381, 0.3253303307632643, 0.388677289689482, 0.2713490317738959, 0.8287375091519293, 0.3567533266935893, 0.2809345096873808, 0.5426960831582485, 0.1409242249747626, 0.8021969807540397}}; // py_resq1_h = res_q1[0] xarray py_resq1_h = { {-1.1430852952870696, 0.3761289948662397, 0.4344253062693247, 0.3471109568548026, 0.0287151863113738}, {-0.4988738747365853, 0.4145384440977922, -0.1456730968857621, 0.1343802288038163, -0.4549175132696516}, {-1.0982282164248067, 0.0432498341745755, 0.8009723247566577, -0.2697221220857602, -0.2118640849148783}, {-0.8189559577243967, 0.2159221672678357, 0.2467828455102148, -0.4358731022610104, 0.0126894274012747}, {-0.6468222288756241, 0.5399745339753013, 0.9011434603476536, -0.3516828694145329, 0.1205612964483228}, {-1.6166030169206462, 0.0627336303098124, 0.1745159258713335, -0.1676233275811677, 0.3369911999240203}, {-1.1247642047094615, -0.1631138338388988, 0.4469666475320985, 0.229673631977487, 0.3155802843315489}, {-1.5746170823854417, 0.2876936477590398, 0.5186696050660637, 0.0972324032495854, 0.1124970816045023}, {-0.4678059691956431, 0.0924634343088705, -0.0398310260167535, 0.1199094213119632, 0.1189824829973467}, {-0.6817147826175952, 0.8209704648352938, 0.1936105292921998, 0.1556371881989978, 0.1610633542281174}}; // py_resq1_tau = res_q1[1] xarray py_resq1_tau = {1.3778764545594464, 1.6048419481909388, 1.7894907284949315, 1.9996780087119976, 0.}; auto res1 = linalg::qr(py_a, linalg::qrmode::raw); EXPECT_TRUE(allclose(std::get<0>(res1), py_resq1_h)); EXPECT_TRUE(allclose(std::get<1>(res1), py_resq1_tau)); // py_resq2_q_cmpl = res_q2[0] xarray py_resq2_q_cmpl = { {-0.3778764545594464, 0.2477850983490842, 0.2323946032026168, 0.6442783657634198, -0.5715855718413764}, {-0.5182592859033026, -0.5116427882060655, 0.0755411199296714, 0.3718390470559857, 0.5706647283090043}, {-0.5985844007732788, 0.3414264138444295, -0.6868036045376356, -0.2311050279755064, 0.0039992397751236}, {-0.4782760145698324, -0.1296501056095487, 0.5617369601749853, -0.6259003290333343, -0.217125009365484}, {-0.0395659791067296, 0.737185903526121, 0.3912015899373974, 0.0384753772446496, 0.5481536630508244}}; // py_resq2_r_cmpl = res_q2[1] xarray py_resq2_r_cmpl = { {-1.1430852952870696, -0.4988738747365853, -1.0982282164248067, -0.8189559577243967, -0.6468222288756241, -1.6166030169206462, -1.1247642047094615, -1.5746170823854417, -0.4678059691956431, -0.6817147826175952}, {0., 0.4145384440977922, 0.0432498341745755, 0.2159221672678357, 0.5399745339753013, 0.0627336303098124, -0.1631138338388988, 0.2876936477590398, 0.0924634343088705, 0.8209704648352938}, {0., 0., 0.8009723247566577, 0.2467828455102148, 0.9011434603476536, 0.1745159258713335, 0.4469666475320985, 0.5186696050660637, -0.0398310260167535, 0.1936105292921998}, {0., 0., 0., -0.4358731022610104, -0.3516828694145329, -0.1676233275811677, 0.229673631977487, 0.0972324032495854, 0.1199094213119632, 0.1556371881989978}, {0., 0., 0., 0., 0.1205612964483228, 0.3369911999240203, 0.3155802843315489, 0.1124970816045023, 0.1189824829973467, 0.1610633542281174}}; auto res2 = linalg::qr(py_a, linalg::qrmode::complete); EXPECT_TRUE(allclose(std::get<0>(res2), py_resq2_q_cmpl)); EXPECT_TRUE(allclose(std::get<1>(res2), py_resq2_r_cmpl)); // py_resq3_q_cmpl = res_q3[0] xarray py_resq3_q_cmpl = { {-0.3778764545594464, 0.2477850983490842, 0.2323946032026168, 0.6442783657634198, -0.5715855718413764}, {-0.5182592859033026, -0.5116427882060655, 0.0755411199296714, 0.3718390470559857, 0.5706647283090043}, {-0.5985844007732788, 0.3414264138444295, -0.6868036045376356, -0.2311050279755064, 0.0039992397751236}, {-0.4782760145698324, -0.1296501056095487, 0.5617369601749853, -0.6259003290333343, -0.217125009365484}, {-0.0395659791067296, 0.737185903526121, 0.3912015899373974, 0.0384753772446496, 0.5481536630508244}}; // py_resq3_r_cmpl = res_q3[1] xarray py_resq3_r_cmpl = { {-1.1430852952870696, -0.4988738747365853, -1.0982282164248067, -0.8189559577243967, -0.6468222288756241, -1.6166030169206462, -1.1247642047094615, -1.5746170823854417, -0.4678059691956431, -0.6817147826175952}, {0., 0.4145384440977922, 0.0432498341745755, 0.2159221672678357, 0.5399745339753013, 0.0627336303098124, -0.1631138338388988, 0.2876936477590398, 0.0924634343088705, 0.8209704648352938}, {0., 0., 0.8009723247566577, 0.2467828455102148, 0.9011434603476536, 0.1745159258713335, 0.4469666475320985, 0.5186696050660637, -0.0398310260167535, 0.1936105292921998}, {0., 0., 0., -0.4358731022610104, -0.3516828694145329, -0.1676233275811677, 0.229673631977487, 0.0972324032495854, 0.1199094213119632, 0.1556371881989978}, {0., 0., 0., 0., 0.1205612964483228, 0.3369911999240203, 0.3155802843315489, 0.1124970816045023, 0.1189824829973467, 0.1610633542281174}}; auto res3 = linalg::qr(py_a, linalg::qrmode::reduced); EXPECT_TRUE(allclose(std::get<0>(res3), py_resq3_q_cmpl)); EXPECT_TRUE(allclose(std::get<1>(res3), py_resq3_r_cmpl)); // py_resq4_r_r = res_q4 xarray py_resq4_r_r = { {-1.1430852952870696, -0.4988738747365853, -1.0982282164248067, -0.8189559577243967, -0.6468222288756241, -1.6166030169206462, -1.1247642047094615, -1.5746170823854417, -0.4678059691956431, -0.6817147826175952}, {0., 0.4145384440977922, 0.0432498341745755, 0.2159221672678357, 0.5399745339753013, 0.0627336303098124, -0.1631138338388988, 0.2876936477590398, 0.0924634343088705, 0.8209704648352938}, {0., 0., 0.8009723247566577, 0.2467828455102148, 0.9011434603476536, 0.1745159258713335, 0.4469666475320985, 0.5186696050660637, -0.0398310260167535, 0.1936105292921998}, {0., 0., 0., -0.4358731022610104, -0.3516828694145329, -0.1676233275811677, 0.229673631977487, 0.0972324032495854, 0.1199094213119632, 0.1556371881989978}, {0., 0., 0., 0., 0.1205612964483228, 0.3369911999240203, 0.3155802843315489, 0.1124970816045023, 0.1189824829973467, 0.1610633542281174}}; auto res4 = linalg::qr(py_a, linalg::qrmode::r); EXPECT_TRUE(allclose(std::get<1>(res4), py_resq4_r_r)); } } // namespace xt xtensor-blas-0.21.0/test/test_tensordot.cpp000066400000000000000000000175611456314707100210000ustar00rootroot00000000000000/*************************************************************************** * Copyright (c) Wolf Vollprecht, Johan Mabille and Sylvain Corlay * * Copyright (c) QuantStack * * * * Distributed under the terms of the BSD 3-Clause License. * * * * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ #include "xtensor/xarray.hpp" #include "xtensor/xbuilder.hpp" #include "xtensor/xstrided_view.hpp" #include "xtensor/xview.hpp" #include "gtest/gtest.h" #include "xtensor-blas/xlinalg.hpp" namespace xt { TEST(xtensordot, outer_product) { xarray a = xt::ones({3, 3, 3}); xarray b = xt::ones({2, 2}) * 5.0; xarray e1 = xt::ones({3, 3, 3, 2, 2}) * 5.0; auto r1 = linalg::tensordot(a, b, 0); EXPECT_EQ(e1, r1); } TEST(xtensordot, outer_product_cm) { xarray a = xt::ones({3, 3, 3}); xarray b = xt::ones({2, 2}) * 5.0; xarray e1 = xt::ones({3, 3, 3, 2, 2}) * 5.0; auto r1 = linalg::tensordot(a, b, 0); EXPECT_EQ(e1, r1); } TEST(xtensordot, outer_product_mixed_layout) { xarray a = xt::ones({3, 3, 3}); xarray b = xt::ones({2, 2}) * 5.0; xarray e1 = xt::ones({3, 3, 3, 2, 2}) * 5.0; auto r1 = linalg::tensordot(a, b, 0); EXPECT_EQ(e1, r1); xarray e2 = xt::ones({2, 2, 3, 3, 3}) * 5.0; auto r2 = linalg::tensordot(b, a, 0); EXPECT_EQ(e2, r2); } TEST(xtensordot, inner_product) { xarray a = xt::ones({3, 3, 2, 2}); xarray b = xt::ones({2, 2, 10}); auto r1 = linalg::tensordot(a, b); EXPECT_TRUE(all(equal(r1, 4))); EXPECT_TRUE(r1.shape().size() == 3); EXPECT_TRUE(r1.shape()[0] == 3); EXPECT_TRUE(r1.shape()[1] == 3); EXPECT_TRUE(r1.shape()[2] == 10); EXPECT_THROW(linalg::tensordot(a, b, 3), std::runtime_error); EXPECT_THROW(linalg::tensordot(b, a), std::runtime_error); } TEST(xtensordot, inner_product_cm) { xarray a = xt::ones({3, 3, 2, 2}); xarray b = xt::ones({2, 2, 10}); auto r1 = linalg::tensordot(a, b); EXPECT_TRUE(all(equal(r1, 4))); EXPECT_TRUE(r1.shape().size() == 3); EXPECT_TRUE(r1.shape()[0] == 3); EXPECT_TRUE(r1.shape()[1] == 3); EXPECT_TRUE(r1.shape()[2] == 10); EXPECT_THROW(linalg::tensordot(a, b, 3), std::runtime_error); EXPECT_THROW(linalg::tensordot(b, a), std::runtime_error); } TEST(xtensordot, inner_product_mixed_layout) { xarray a = xt::ones({3, 3, 2, 2}); xarray b = xt::ones({3, 2, 2, 10}); auto r1 = linalg::tensordot(a, b, 3); EXPECT_TRUE(all(equal(r1, 12.0))); EXPECT_TRUE(r1.shape().size() == 2); EXPECT_TRUE(r1.shape()[0] == 3); EXPECT_TRUE(r1.shape()[1] == 10); EXPECT_THROW(linalg::tensordot(b, a), std::runtime_error); } TEST(xtensordot, tuple_ax) { xarray a = { {{{0, 1}, {2, 3}, {4, 5}}, {{6, 7}, {8, 9}, {10, 11}}}, {{{12, 13}, {14, 15}, {16, 17}}, {{18, 19}, {20, 21}, {22, 23}}}, {{{24, 25}, {26, 27}, {28, 29}}, {{30, 31}, {32, 33}, {34, 35}}}}; xarray b = xt::ones({2, 3, 2, 3}); auto r1 = linalg::tensordot(a, b, {1, 3, 2}, {0, 2, 1}); xarray e1 = {{66, 66, 66}, {210, 210, 210}, {354, 354, 354}}; EXPECT_EQ(r1, e1); auto r2 = linalg::tensordot(a, b, {1, 3, 2, 0}, {0, 2, 1, 3}); xarray e2 = xarray::from_shape({1, 1}); e2(0, 0) = 630; EXPECT_EQ(r2(0, 0), e2(0, 0)); } TEST(xtensordot, tuple_ax_cm) { xarray a = { {{{0, 1}, {2, 3}, {4, 5}}, {{6, 7}, {8, 9}, {10, 11}}}, {{{12, 13}, {14, 15}, {16, 17}}, {{18, 19}, {20, 21}, {22, 23}}}, {{{24, 25}, {26, 27}, {28, 29}}, {{30, 31}, {32, 33}, {34, 35}}}}; xarray b = xt::ones({2, 3, 2, 3}); auto r1 = linalg::tensordot(a, b, {1, 3, 2}, {0, 2, 1}); xarray e1 = {{66, 66, 66}, {210, 210, 210}, {354, 354, 354}}; EXPECT_EQ(r1, e1); auto r2 = linalg::tensordot(a, b, {1, 3, 2, 0}, {0, 2, 1, 3}); xarray e2 = xarray::from_shape({1, 1}); e2(0, 0) = 630; EXPECT_EQ(r2(0, 0), e2(0, 0)); } TEST(xtensordot, tuple_ax_mixed_layout) { xarray a = { {{{0, 1}, {2, 3}, {4, 5}}, {{6, 7}, {8, 9}, {10, 11}}}, {{{12, 13}, {14, 15}, {16, 17}}, {{18, 19}, {20, 21}, {22, 23}}}, {{{24, 25}, {26, 27}, {28, 29}}, {{30, 31}, {32, 33}, {34, 35}}}}; xarray b = xt::ones({2, 3, 2, 3}); auto r1 = linalg::tensordot(a, b, {1, 3, 2}, {0, 2, 1}); xarray e1 = {{66, 66, 66}, {210, 210, 210}, {354, 354, 354}}; EXPECT_EQ(r1, e1); auto r2 = linalg::tensordot(a, b, {1, 3, 2, 0}, {0, 2, 1, 3}); xarray e2 = {630}; EXPECT_EQ(r2, e2); } TEST(xtensordot, view) { xarray a = reshape_view(arange(3 * 2 * 3 * 2), {3, 2, 3, 2}); xarray b = reshape_view(arange(3 * 3 * 2 * 2), {3, 3, 2, 2}); xarray e1 = {{34, 90, 146}, {46, 134, 222}, {58, 178, 298}}; auto res1 = linalg::tensordot( view(a, 0, all(), all(), all()), view(b, 0, all(), all(), all()), {0, 2}, {1, 2} ); EXPECT_EQ(res1, e1); EXPECT_EQ(res1.dimension(), 2u); EXPECT_EQ(res1.shape()[0], 3u); EXPECT_EQ(res1.shape()[1], 3u); } TEST(xtensordot, strided_view_range) { xarray a = reshape_view(arange(3 * 2 * 3 * 2), {3, 2, 3, 2}); xarray b = reshape_view(arange(3 * 3 * 2 * 2), {3, 3, 2, 2}); xarray e1 = {{1064, 1144}, {1136, 1224}}; auto res1 = linalg::tensordot( strided_view(a, {range(0, 2), all(), range(0, 2), all()}), strided_view(b, {range(0, 2), range(0, 2), all(), all()}), {0, 1, 2}, {0, 1, 2} ); EXPECT_EQ(res1, e1); EXPECT_EQ(res1.dimension(), 2u); EXPECT_EQ(res1.shape()[0], 2u); EXPECT_EQ(res1.shape()[1], 2u); } TEST(xtensordot, reducing_dim_view) { xarray a = reshape_view(arange(3 * 2 * 3 * 2), {3, 2, 3, 2}); xarray b = reshape_view(arange(3 * 3 * 2 * 2), {3, 3, 2, 2}); xarray e = {1589}; auto r = linalg::tensordot(view(a, 0, 1, all(), all()), view(b, 2, all(), 1, all())); EXPECT_EQ(r, e); } TEST(xtensordot, reducing_dim_strided_view) { xarray a = reshape_view(arange(3 * 2 * 3 * 2), {3, 2, 3, 2}); xarray b = reshape_view(arange(3 * 3 * 2 * 2), {3, 3, 2, 2}); xarray e = {1589}; auto r = linalg::tensordot(strided_view(a, {0, 1, all(), all()}), strided_view(b, {2, all(), 1, all()})); EXPECT_EQ(r, e); } } // namespace xt xtensor-blas-0.21.0/xtensor-blasConfig.cmake.in000066400000000000000000000032211456314707100213770ustar00rootroot00000000000000############################################################################ # Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht # # Copyright (c) QuantStack # # # # Distributed under the terms of the BSD 3-Clause License. # # # # The full license is in the file LICENSE, distributed with this software. # ############################################################################ # xtensor-blas cmake module # This module sets the following variables in your project:: # # xtensor_blas_FOUND - true if xtensor-blas found on the system # xtensor_blas_INCLUDE_DIR - the directory containing xtensor-blas headers # xtensor_blas_LIBRARY - empty @PACKAGE_INIT@ if(NOT TARGET @PROJECT_NAME@) include(CMakeFindDependencyMacro) include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") get_target_property(@PROJECT_NAME@_INCLUDE_DIRS xtensor-blas INTERFACE_INCLUDE_DIRECTORIES) find_dependency(BLAS REQUIRED) find_dependency(LAPACK REQUIRED) target_link_libraries(xtensor-blas INTERFACE ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES}) if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.8) target_compile_features(xtensor-blas INTERFACE cxx_std_14) endif() endif() set(PN xtensor_blas) set_and_check(TEMP_XTENSOR_BLAS_INCLUDE_DIR "${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_INCLUDEDIR@") set(${PN}_INCLUDE_DIRS "${TEMP_XTENSOR_BLAS_INCLUDE_DIR}") unset(TEMP_XTENSOR_BLAS_INCLUDE_DIR) set(${PN}_LIBRARY "") check_required_components(${PN})

5K[ð2JJ˜iòŠÃd¦Ù*Må…¾š—­ƒ(^§àóbr*‘FÌxê’ò%Œžé´#¶ ",„lW̤'0:gpQ¢ÖA=å&LOÃôkjºa|É;‰~ž–ñâ TVªÃñ²]œLO £ZZi'\É áÏŽ†ºú»ÄÀÌÊ:oÔ{vL'O¨µSÔŽ¨9xéãéI £!¬Ê­¤ß³¥9ÝÓ¿"‚Éí5ÛG©nóœ­BxM?®Pá8%WS“¯©ZïûÛƒ¨ÄùÛzÊ]ê@^µ õ^ó  §ÙƒŽ{žÝŒú—pôŒÎЦ'uíÔW*/p-Dý/It’$£è||=:ÓTŽ›d£å1.Çgƒó6šamÉ«¯pvú¢›ØtÇ_=u¤},ÿŠÕ'úp‘vÜ0Å› fx™!¯5Yùž¶ÅHPÆG¶%’Úï!&ðš^ ³ÖÇoú'ã/\†šÖì³HŸN6C_û7Ó4Ê`=v@ã‰JkáÂÍÂKÓÚ¥q¤Þ2NQýHfV—À»£éõ‰4¡£ÄOuOºù…Ê&Æ,8_‰fË‚x)ý²ÔÁïr"(¢–‰ÇΑêœ.ùiÂ7“;›ŒgÌW£«þtâèÿF54ÓZKÖ̤¬r\m("·$î£ iv2Ã$Á~Ë®"$ADý(þ‹¯Æçç6‘Ör6¾Z‹ Mj^¼ÚÅëi8ž²ôSÔ 4l(vÊK)ÉL’Ë>Hr°ß£ù¤©Ô–Ó± …D´#±ŽÓ`RJ±Ir•àÿðfÍCY¼_ Ѱòˆ§%H@ÀÕjëx»3·[IY›§h$n|„DMbPÏ]%JÏÞÝ”ÄWÃ:T±B—Xó‚ªàc´jÑ‚žÁ¿zݹìW©­!ufg>‚FËi=ê^öø8ô\²n.ÅÓó!ÐËF€)å]pA(ÂqíÓxâbí3·—uç¬È³óax" ×2ÓfJìVÖ›ÒfúÞ›âÀÌÐ[à”oÉ „*a) dÖˆ”þ¶W­U¼Çõ¼‰IåKYoìeFcë;wÔ´åGÔ;„ßs¿`Œ¬øκ±8gµÖ~Þêay¹«Õf¨ÕÌ)uAü¬!çã5);D­—Ž\-7CtЭåâ‰^,ʵŠÍ[n³/Tóí —-››¿Úgo¹ýW"Q{oÏ#Ì9ÄDÆHRµª´Â¯øSlžÙÖ*UÅðç¥7¬"«÷nÓ|oñ惚Z‚m¥©U´¦>W£5ÐÆÝ·Ï‘1½vÕNÎ^‘n±¶Q u":nî¾rÎÿrÈäæê×|¼ôj>¬øÇÂO„ZOÛF‹ßQòm ©ÙgëÆ¨h0 [“ñH&ãëOxÄùÇàRj¬þaDw™µRÛ”ÙZl(£ìmvN8ã Cû¦“?¨àõSêt%Ž&ÏÍ>¨ö5^bêo´"~b+¢²yˆ_o!—ZËÞ|*ڊ⣸F˜lƒSRâF¬m§ÑSÏáTñî¿HL[qLMˆÛƒ» ¾¨ð6’XÕÕO ç‚¯¥å·#-Ô£Ú ZÍÛÆ[@×”X°¥*B ТŽ(ºúàõÌd™«™ ØÝíÚÞu¡Ù^\*ÕÊ8J±ŠõJÔŒ%?±äÏfþ=(Ç KüB-Fe_7…#€VK¼‘Õœ½[Ë-r‡ò‹brŸƒN— ¹âV§ê­cßx»úÊío§‰ú' EÐÔa<%ó :y^õ'³úN`Çú4Ÿad‡)GS0“؈?ÊR¢½ ­Î_Ö(›gm?íñ×è45æø:žsyjôsë úÕ½~ç=ŠÌýª¦f•ý·œƒº-­º´ð Ng ?ßíg:ï äF»Ë¨¦]ï·búרùC PÞúƤ Ö)оŽ{ P¿Ë£avÚ ]à•¥!4¯€Ç¸\n(©Å’=ì51ìRý³ßlc½šG“aOÄŽ>¢ret-;j~vôÁ³W…c3 y±(§ –IxØÇ «Žf>íSÏîS/ˆO/Ô§žÝ§ù0ì>mäXLÇ‹éYÞÅtl÷÷8ˆkDñÐý]>¶»œ ŒÝëg9SD»UdIñ Ï»—k}ãnä5é`d$ÑiÂõ~]·1%ºÂʽ#9L£špH Û%WÃ% þ̓™íÃ"Tê¶ÐµuÞ§Ù´ÔÜ WN,+'–\N,HDñµÇŒMÔK&—ƒiB]ÿ]å^‚:é˜/)QQ§âòPÜ!LÄ!]eÌ£4„F?"еØYe§ÂÔ38”¾ }(WùËò?Zþ¯aÿ_³I4Å´KÍ”+ÿWm½öüÙÆóµh=~¿\åÿy˜g•ÿë§~Tþ¯{[ýs×ÿF¼þÌZÿÏ_¾¨­ÖÿCHD¹,ŒþW´¾Ul¼EÅ4d`Á<:Œa‡ä‹…"~ üßÖ†^•&NÀ“J9Oº8jHKRT^8½9p´ŽÎ¶©Ë*øQÔ“¡£•^{uÄú›<Úùï 8í£ÉÿüìùJþ{guþû©uþ»·Õ?oýÇë/^¾tó?¯Öÿƒ†ªò+E8k®A…6k¸qøvÃa¿3B“——ÔCTUZހèsâ”;ÁЉÿ`¯)¹¬üöA±QØ›;wœkQY0Rmqò xƒ»ËÒi§}kXöY8s˜8×=Píîì"ˆ¢)n¶ý¼)¢q]Ûl ‰ör8b½ÛÇÝàÒå;œQ Ò±aÞDÛ@E0 Y}ÕÒï8Œr T|N8Ïthb$$/&VýnG›ÇIWì;¥!?ª}î‘¶ãŒ-廦 i4 kNÿc£Ï5î³cOy?ý-ƒü}–žž5o¿MRÚ–›ýÌ‘dxú&i‘ýKî³á˜`IÓcà‚dÀÆgµ6G‹aï¼T˜Û¬ ß+]›Ÿ}ToPDC9DÊÝE”GÉQÈð¦O"cE‘Û+% ‡ñ_ œM¨€÷Y=îû-y¾$—ÂhìÅ­ÕôéÐÎSÖs²íEtñž#|W)ØaÞVÊ“³᱆~û½Ô(QŠ+riò*ä€gœ!Ì™æÊî³Â›SÁ¦ªzt_)í…DŸC±ÃŽØÏQl“QÏ«TÔ±Æh0¶:ù}¨0’Þ«µ…ôë>÷0D¦B';WµíÔ¸wvŽœà~ÅvšEžÒ«ûî†J· BT¯HÚàH=d_8ÀÌÝÆ\aŒÖ¸‡¡ ñT$<9ê: 5h2œ+'‡þRŠL¼aÚÎyviîgpl+`@ÿÒ_Ð]tŠ* *éâ'þçëÁ?_ÿõ{BˆP¨•FÕ¿Šœ¿ÎhM?XiùÕ]¼r¦öu2˜Í’rMA¢Ÿ(j}Ï®'âÎK}¿ælœ¨˜ ”R/KØBTï°®·0Ôñ°8Sùô¦U|DÔ5À‚Èz aVžëöŸZX!œxlÉC«Kª%©%­m»rFÛRO.–~#0÷Σ©TÛëv!Š%ÜŸž&Ü&­HÑÖ±ÝVxÉñFb·I‘X˜Hn?Ðñ8Æc.Þ‰|õ“ÙÅxD~aÆÅ‚Å·{Œèë£õKU}ºÎŽuãᙼpÕÀa­ñé€È“à|( Šk.´eŽ¥9ò$9O&èÄ)y&m£áÊæyiö9z¢W¼ú×Ò¤bzÓAèc*Ê]ö¿âJ»x««®Œ19aª+@èt&ªo@õZñ®w2ÆàßþRÆó‡F@é?a^\ŠÌödF!s:~ÆççU_°1i–>¹LΤK¹ ….ÏgDA²=l[f+}¿Û¤E¹yÜïz—ô¡Þîgˆ«,¯6)kt³½µM?»È@h«W?¢ß²N ˜ÈµÞʺŠjSÂóæÛöüÞî„ÚëR@™ ð°ùv¿žÑÌá~ ,÷.*”@¼³Xñ´xv ÝamaÊpξyØÛ~×…ßG·=ø-^ÂëñZZ®ñ@ñe\¡u¦wf|À¢,Ê¡[6u‰V•)ÿ‰Y_¤vÎ}…&àynátàÚ…ž7ANÎû·9÷uNb;[®èuÞ|¹/m}y:Œ \åÁ©péWyú½¦i— t«›ùƒt1dz¯™´Vw@·Âlòð™³Ç^ý\<ãªÐìßÛd'•žNe{ÅöÏAÂŒ0#`z) ìP/ÔÁË ”ÒÌ÷°ƒ|ŠuÄwÌT#™]U°H¼hŸÂö Ê ø¯úNI£Ká¾¢„AØC)U!-ô šóTp:G ý‰–ù|$RÓ”<Ùbé¡Ì|´M™V_Úoàh;—pm¾¯îú"]( Ú4ÓF¯º, ´8êÏ8¡ÈëØú'°4ÊùpÌ1V(`„U“Ùàt-j΢¯ƒáPe(†)_¤ô£O°Ñ’ÖÙàf”Eý³³§Óë“F•©àÅ+^úa€ùèd0ê#:ÀÀ‚1y-$Œh8øÌ¨M¤¹U Gþ™þ¹Yým½"<éðEµF¨ŸŽ¯‡4*§ÉàKÿdxC—ˆÑEò­–œRAÀQþ)qC8z·Jto¾&ÑçÑø+.çÑx´2X™ (Þ´2ˆV&+“•ÉÀb2ƒgbЏBÒ`Ña›´Î¹#±,.¡×&É¿¯Q¼a™RŠ´>Èc0x c6ÚÑ?iẊ۸„³YtÃ8Ã!Æä«á¹d‰<úaj·Cµßç©]+µ-~ ¸,^ Zêk±Q¦»¡# ¥ƒ;ûÇ”6: J2'ÌÞ“4C’Õ2Ñìní|^M~I™}a+“â…kG, wÎAbæc‹|XñÍẖ£K¼¼ùdmCZÀþytе¼«þb`˜c…h|C(]ªÛ–§sø¢ ón^BïfSzW'uÍâ¤Þ]€Ö»w#ö@õ¼Ôî¯îšÆàƒ9¯žSv`X ¥Rͳ º ¯ƒxÄ©ÿV+–n¹"Œ•é]v»"šáŽ© E3ï¢hf/Ц¾(š·]Mߢà3“5 ‡\#¢•œ«ÂC×úLÂÊm®(wÙ”û}ƒ?¬ì Äΰl–׳”€›sÀn2 ‚Ї!aÜÑ|±õîh»ûgåá̉‘=b«Eõ[­BIËoñWxV¶Žw¶uÜÚ$[ÇýŸÈÖQŒ2Ñ:­">¶m¿[« »?!ÝêošÚ›•¹ä™Kz IžÛ œÖlˆgÆØ`.ã¾îº¯]“”ÔŽÑ›ŽI¶²¾ó•‚oœ‚?!wßûÒ0ÉFÃMºßøÇÀɪk}Ö­;uvY–ŸÜ°6MÆ—Ô¶0ä\w@#Ü=D/NŸ ‘ ßÌcx]°»8Ä8öl*Í[€ÜŒë]탷ÂöÁ‘³Fýh>Rkâ…i=ÅËÏܦåEO2’Ï´km§M<•†q§Pí$IÑÕr|&ʹÑg•ˆ0â‘GJý=çâÄ£c™¢ƒ,Öõný8–ÐDé¹Ð¨d<ôê@É$þóz^Cè÷ž ˆ÷¢?<¯Ž¯qà _FXïþÇc&“ÙHAˆÍV•¬u}º€‰Ÿ‚˜®¬ÀWVà++ð¿¹øû–¹°d&™÷Gþ÷ò‘$¦øZšd ÂG,y-œ 1óé 3sÑNÓŸœ^ˆ¬Túý1ìiÚ†½4Žófb½¸þ€×I3 «kÏh¿r;Ø”;ZÁ5s/jÙ²ä3½¶Ž÷ê8$ Z}¿uf‹ÿq)DŒ.­£5à?ðg›nÐÆlýwüo@É® õÖëüs¸E†ê½*–¹²SõO¦Àvp¿$³­ÙxK «ÞÜÙÓÊõ+¿qXû´ÉƧ§É•H3$ ’ ûâ¯díOÙ¾µÜJ0vÃsImwü¯~åÄØaV¾΀cÂD áF"ƒó>¢ÏÜTŒE™î¨ð{4ŠþÓÿOå?'ÿ‰ŠQŬÆù°ì`*¶¾»’wZÌwX(¤p10MÑ"c,¡‰EÀ¥ÿôþ“îï”Xk€C2åŒ~¬ °1Ó0x8—L g¬Êæ¤HßÀŽ—)Z…m ¡2;]Žqœž^OHwÌ3ª†ÃX2ÉŒû ëŒwÕ,®sà,(³$St¿ˆj%qmøäð HÜhÉ&¬×R@Ís#™”2e$ç <ü±^ѳÅSú“éøÒXÀ†¿ˆm4ó3¹A„©¾èÉÛ D­;L’è,€býÃKºˆ9V¢÷Br=é°ïã|šÖ–ÔŸ·¬½J`¨w ÖuÑzN¨QÆüô¦òœÑ­äò2Úæû{} ÄŠ<¬~O>#>À:’èÿÛHYö”È!fãà™æÓ™K”ð*àfûÄÒìÓ¸œ#bzbT_5ÅW º6[åx¹®LÞ£×Ò|šØ·f¿¸˜kSjl»/ľ©ã•$œŸlß§L‡§°”€ 00–—” C9LÝÉK 8´^åœròiƱbŒhÁœ´ _0²†žiMÜ*öº>œ¦ÅÀéX!gÛ6Ò)néî•ÖÁ5ǧ4`ñ¶ Â<ƒÔ[eJ. Iуð —Ȭ˜„Ñ:ÿn,$)µ%ßÐiš·cèé¾Hà‹ÎË#öÕþB>.J•;“ÄìU¢÷u~«Ûî{TáÝ­yÙ.-ëþ-ÍÆ›5­¬Ë(pØá‚Â'Àç ]2õö;ÀEwáø×>ì´š½lE|«UÉénUX_°-Œ.áð¾Eê}Ÿ~ÿ'pÀqS‘?àí–ˆFåT°yÐùÓð-À»ác°µ=(A÷ºG r€ÈRà}Frg,ˆe"’Úý~"x"éËšáØ2÷d'èŽ]o Ó9^)vƒ­Ãr*1ßð+k?Îömq["D±¬ûQލûKìõœý9"ôGó‚ô§™éqÏÖA¯G͈”Êη‘²l’Dû2”O;df«•CÖÊÄkßq2æ¤ñµõ  æqÕbáh¬‡æDš§W㘭 n`Ù4ª,ë(L/ÿº õ*nO¼¢†ú~û‰—îËdîÍïRüÆØšrÀ"Û義S=µKt&5MÊpX*¶|d–¹Oá*)Íz}Õ›ª<âžÚœ ”‹®Ù(•ÏŸ µÒÄ‘tnwüÝÈÕ“EÓi8rM¬ù©_] o¢ëÑ`ÆñI¾f! ¯´:Ÿ/ êV×u'7qGY"E4ßUoÿGpÕ«­Û\kYž{ûwzXÏ=58¶†WFƒßÖ‹qšŽ'¤†¼¬€Ü6}¢hÁ6øMûï_e°{<[vy÷Ø7;†5†Ìª¼á%Õw­Í @m(„µ‹ÎÀ}85< X¦ˆ‡'‚åßÕDÛ»»ž/4lŒéØÛœ¢–’Ù9¤ ¿ H- ¤Ü¬ÚBADª Þ`=E>ÜÝÜ]*‹¨dCÝ•P}E7ý€š•vE(EšBèáO»>y'ÒOÆH郥Äy²ˆøà®´än¸Köº3^=£¹·ØDþ\?ñmÕý??MgßÑÿóùóxã|ÿ’ü?_¬ü¿æYùþÔOêÿy_«Þú‡…ÿ⥽þk/^¬ÖÿC<¼ÚMÿÏ·‡=ØæzvlÏÏF'äŠéñÁÜX‹·&«ƒt>™<ŽÝM<σ€Ò;ø…\7óä÷s°P*Ÿ,Éÿ¡Ã?3<"„Âyêók¬ž%çƒú»°CÐpð¿lÀN’<ÌêÉ0¡3 ^Aa><VàIiklGH2(;ç^³Pö  N½ô Þû—'gýR£ôLîIÅëqUŒ¾ŽJ¥b©^¢¿‹¨ÌÅ¿ZòU ¿vÚ­a¹ Oã ½ùo"oM£d`õ­DèJ"B;~ÃGiAÖ`ÃÍ‹þ—$:I øÕ$ù2_O)÷ ˆpdÑ7”Ž¡ƒt§Óë¾ÉáÅÉ=Ì4…a%]r¡åNȘ‚Éèø2iàiåOÅÃJ_-=ÃÅ} s7ÀSsW—I\tunså:ù½\'oã9éØýÎ@ª"ëS÷t³›†Ùxÿ’|¹.ÑÖ|ªÆ”/>×=v;ê צàè|2¾ä,]ãa2ýœ²¶ÐG×ñɜ× þ4t|:kúîÆÂßÓX÷  ;ùN½%ý^»Z=Ž6—&ÓÝç4¬öQ§“es‹ö­¨›‰é'|ÚƒÿcüG?÷ƒUÇÒõ=(ßÀ¿ª¬¯ó~sÈE­CëÑšdžý÷ô«[ÓLE{ü¶×9|ÿá£5·Ï%äúÆmë ·i‡K¥|¸ÜÝÞÔº4#jJÍB5;I]SŽ"ŒnAHŸßöÖ64üäÖô¨·®ÙfnËϼ᥽æƒùìø@ÏoÇgWðbGA|cºán…@«à.»@ïî’Î_÷ÐÆÝ½ã®I2qá/øÓÒc“ÊÝÔÒó¥ðnàRx7&Õº±Ó„E_íº.Ų;3WI…Cð³0ø µËZÝÔR^8Zà!Óèøõü¬ÑFv¢ns<úëúgŽiOdOðnk<ªâÜt³žˆÎæ„NP…K£œ}Õæ.šT7igâ㽪^¡=#³Á‰‹$j‡ï‘ˆgÖÔÆ8ß*±!©®£©pÎ@Ušƒ5øF&v®VTIº8 /ßÁQ={œa77ÿBø\ù,Âçr\öbØÛs,K·Ðî Ú ,jì5Ö+áq [‡ö®Îd„XW¶l^*ðÏÆ'ƒ0ÂßÛóÐ8}Û|+êÂϧXÒ^Âåb¾«›=i"¸·1Ȭ]ÝSd†¢ƒ/‡ «£™TŬ’E~³W.K ÌÑŒXyÝš2BXjåéà²V¹§m¤Z2ú³jƒ\ ÛÉÓ Âznóž{²H¬„€_Ô2–³añæxBäØü¤êÂ^ë¼åá’÷oyéJ‡?}«ÜÙò6²V¹\ãΖÇ#_íe.{ÏöVˆ_}®À¿%/{I-û¹¨e¯J<|îF³Ühp ‡V°NÿÔ’¢sÍÙ1ÓuË@Òe«ïB{9Vp½jåŽH Èé˜_Ö›2ÞRÊ]«U'ck$=$*õlÁp—Ãx7°#þ¥‰†°#þåîˆ$E9;â³,ñ0qGÜõïˆs¤AÏ.éY%„œQ5)À”„¯rÚU)#íæØzÁ9äASl^-]V¤ª)åÓ0‹…\hêuçµk0¹rqV£€uY ‰»r»Ù ‹ðùz†_<Ë»­è‚Vpz{œÇ û/÷s| ûõÚêþ÷Až•ýÇOýhö÷´úçÚ<{þü¹½þãõxµþâáÕnÙ¼Wæì%âØá¼ƒ{° ó½`üî•íHŽ°ß XÐL-dF²¬˜Üeç~û>Í>4V¤K74· áá¹5›ŸI‹nÃR‘¼ë¤ øÒ·×6ù(’% ¾jhïðÍxÂÖ!Ú[úŒ )nöé`$’J‹H¤ ý’X\¯ó]«²{!c„þp:Fý”ø/ÇäBŽD"keÑss•d§ãá—ä̸’'a«£‘e$Bef)«ÌƫԾF/ƒ¥IDò;°ð1X#„Üѹ5W&'““[Eëæ×£™Š+Ý‘ž„³ÉøFQFã‘Íbã³ØÈ1‹¼³ØðÌbc¡Ylg±±Ð,ºF:lîçÚêè L³´šZ â'6I«†;ÂòÒ£lyËéz/¡\ Áxl†$®|ÇVFƒÉ3á9ºØUÚdÈKÙ±âÔ yœF lÚ„$ËnˆbxÉØ(rÙ[F4ÅZ?fìO®Œa`)-TT߀ê5Yý»›ž¥P8N%ÆQx ôÙJæ0ð.v?Ÿ%I!¯£¶ä’ë»a-·êJbƒ¹=¯ª!z.ÂDQôYõ×·£‹8¹E, »ù?s uLèwÅŽ ðÇHÅVTéGãrk‘f!f@‚\>aØißµw„ž\¹O"|ú0™±õ¯ÌhlŠ•föÖè+Šû2 û}… ]Ðhon8Í^·Þ–¡œü¦}ííæÛå©…¬Ð–b߇«¤"Tñ±ü,˾°߃DW̰ËˆŠ¸4ƒ¸ÛGV B&vnìÃV6¼»Ä:\(î^ž x's½÷ÑÒÃîÍ µÇPÞ OîgÙs§$É×m´´6š—Wž®kìÿÌ×מ´ˆ|^BZjù5J¤k°±Ïç®fÖØ~_ði6ƒI ç„ýÐdùf”µ¿€{, > s‰žñ/ÚÕýÁ¥L”v£:X†Ÿ_€Ï5¿Å &·µZ|7i*,sc? vøU„ja6"íô:*–n<Ñ kœÈ|h7b™×øÊ t¡—ݴʚƱü˜¶¦¸£YÐ\ã'‚oÙ<1­¥¡Œi²qñìZ!j˜¥‘Må¬m„gÍÖ1.6A-ž:-ÞzZì¡Îš{ ÓRË5-ûËž–ÜÖdù®ýß?Î[ÿô1ïÿÏMü‡g+ÿï‡yV÷ÿ?õ£ßÿßÏꟷþkÏ6âØ‰ÿ°ñlµþâáÕnßÿo-Í j¢tËÈûµš+û€Ðóàör2䉙[ÈlÀ×Ð}¥û^¢iÁÖß¶@·, Ë¾Û˜–ȯOmfE.Ì0T$®È³®?z:ýûÌðƒg2}eòÿ†‹E—ýÏ ÖÚMt9žqŸ®X»Ø?þ€P·cÎ"y5Œf€VMfƒS8üÎ8&^D㑌Ž/Qö£O xÐÁá|Æ9ÖΞN¯Oàät #‚ªfTJE'pz§x˜ÀÀ‚ï/§‘„ ŸÙÜ|—ÎÇê>æšÁ?ÿLÿܬþ¶^qEðEµF¨³>Få4|éŸPL`-€ÑEò­–œ0Ë à(ÿ”¸!=[%:7_J)‡ä7V#ÈÊ`de0²2YŒ¬ FV#+ƒ‘Á`ˆÅ:¯¶ã†d¢ó e6rD|’üûš2†9Òè${4ŒQà@Œih£C\‰Ì‡ÛÀ‘ OŸ0£?°¶*ïäíNGÕ[¾Vj[\êð·x',H£©P¿¡s!~ç‘âã¸å"ÌlpzMižÍÕ«”´š2À¶§à”½4|  js ^ŠTS-.î'ƒÄΡëiÄ‚ŒoÐbƒŒl.1 ”ÉÑ&˜¶ÏK<:ÈK»ê/ƒ2€Aaµßû®-l¨$ȶ›—n»Ù„ÛÕ)W ±8åv ÝÛ]”xÓ`§|^js¶˜R©æ!åî´lL»Ð2ÝŠ–u@.Åå¦ecMyÌÃÒ²›Eûéü¼Ø‚ª›y©º™MÕMª›·¥ê¦ªùDÈT Ã!‰\´$k™ªL¦êl®¨sÙÔùÈm:·îjÔ¹µ²êü±¬:ß\O0ÓS´•Ìd^8¯Éf£Yt1<^L'׬É<‘´ýþäsô¦·[ÉU2#*„nì÷1w ôêtª]HìÁ·×§ŸñŽâ°þÝ L[»V–fh Œ€ò_kàßüë´?ݺµê­²†ÃH~_cVJ(ʹ¶ß­U…­šeõ7MíÍÊö»ÚÃ:‰¨ƒù¯Û˜4Ò›%‰Ö°Ú‡Wºûºë¾ö&x¦ŒÔZ4’MÚð­C†SPâ'Ä<ã{ŸÑ›l4ܤû Y 5³9¾å4JÔnúU×ø®k~Ù4¾lZ_¾‘Ëh„{£‡Lå5ìËI&—–5e °« vorò©@6oò¹3°ÞQ^Ø|k¾ ¸êË•Á¸Ø“¾³ÁøV>‹qÃÚ%òôÉ6€eÀ“´4˯Šñ1]²iàGÅRôj]³^×[±é©Ø4+6ÍŠ+Sø»˜ÂG+[xñ<^[øhe ¿°1¼:$‘°–A2Lë·»mýð˜öÿßýÿËUü¿‡yVöÿ?õ£ÛÿßÏêÏaÿÿü…cÿÿrÿïA^í¶ýÿGËþĉ·¾ÃÒûü;Ê%(³üThöZ"Õ½×Ë6†8"¹yêW®üÜÙU@›ß°*^޾òÀ‰¥yÜOqû’9‰¹gbñ(¤ò&àÔÚdìÿ#x|L= ¦@§xå”éZðS»€(ŸaAöGdB.’/̦dr~ƒöhÉ€îßúˆŸÈž4½½Ó^Ê ôxK).Ú…ã‚>7+ƒxä~ â‰÷äB£Ñ=GJn'Hå×#Çþ½§‚°g½èÏ«ã«D\ŽÃ—QÔû£ÿñÜg6Ò„Fb³…&³ ؃>]oÄOALWÎ+g€•3ÀÊàïî ð¾¥SLQ™$¼?ò¿—Oóœ÷…×Ò2_P2&˜d£ÊÚM1ñÙXóÿ³÷îMm$Ißèÿû)úLœ–@’‘{Æ»Þq3²„`$°7ÎqÑ@{„ÄJÂ6Ï»ïw?y©{U·ZÜlÕ»ƒAêºeeUeeþ2“„…Þ¸Åbˆuºcßþ±PDm “ÄÇ>H Øî%üÌš±M6ŽR¿òØ”BIÁ÷v(ŠašL®ádC ’¦û7Ï–.$Í%!³ ÿøóˆðg„ÉD4ãÊ?ñ 4…žïÑüoæóêƒ$ßÒg—gï !(7&y­K!Í‘Ìtá:ëäªoÉuÏ’8HÔì÷ã›){]H(›…÷úJNS|÷1.×É…ÚAÂ[‰! ü¯^éÌ`V¾&ç°­ÀD |/#“ýçV0bX&h±mt#ü=¢ÿöþ[úïÙ£bT²‹Aÿ`#Æwé„B¾˜!¾Ÿà.[!fÕÂKª/VOu·Ç'yXñÒÿ«EœÛ o‚èÁz3èõã’ß, zS-£g‹\…&ŠP8ËŒÎÐƦ9\¯a«½í#ÃIƒÖ@~èìpÛ1JBï¢ë.‚~ÿv Ó?¸ãUä°–L<¥Æ¾Â:ã£g‹ëvÛâ lŒçQm©Ûªïmî^t_Àµñ‚H0 <½ Huƒ„Ð’71^‘ÿ½RâõÌÉ0Só¯­lÝl\¸%ÌÏø;LåÅhì½Íê¨ Øžø. ‹‹m:𥇷×g,™û˧,{Øöhwpo,t¸üG´°—þª!¾A¸ÑZ®>È9 N8v 2:†&ïi¨«pÕâJÜ}z?—CÙ _«`™°š9X_èÔ;5+1Ç>O¯F’\&™¢ú7[ŠíÆÀÿ7#&ˆ0χô%æq‰¶ë¢Õi„+‰ßò…C¥Á¨Ÿè›êùXHŠ—9¿»óœ3=Þ6Æ€˜ì‰ ÉVàæÞÔ$B`~xÏ$äþÔ8´͆xI9§>l*ñ79“f¯p7’hs`R“¹ÇuÌUØâÇÑõ-û'·”—…¶)B³áCöÄÛ+*fƒ)°vQ¿àptDåÓZ«_Jmñ7Œ}ÀÇ1—¡×Æ rÈ…/tàã°æ†˜Ç½§ÓOí©X[jÏÐúµ*ä;ädyâ¬ërÈ‘.äqËÍ¿;^VÔ8.d:Hµ¯ï¿E‚]­Uâ0½Ìé^aÞõÝ$fºÀr‹in°?ºkÉñC]KŽçq-± 5­´d,ç)\V3ÑZg¯,o—Š.% —ßK£Þjm7Þ¡ùi‹þ®%êüñ]L&©Ù‹äøù¼H¡à_?†ÿ³„~C˜0Q÷ _aöð_1ša†ò_iü¼Q×a¨BAî"u7“º­xn(3ÜVÖÍ÷¯¡¤GÂOõ"˜!ÿŽÐéäC+¥éú´ˆ&]ï …9•D 6 ‡±@vSU;×»®ûKÃ+àý¹=æ‰:Âñ´gÕšË?$ðÇl·{º ™{•Ý“{;T/‚êÿ¸>Ç… ¸€ AšêúI ÅÆi’>‘7B–ïÁÞOãxðøì¹UýJN?¨ÏAêœü(NÇ 'ÌÇÄÿ/&ßÿ¿özu ^¨þ}uÿ}–gÿÿ¥ÿªÕ?ÿ¿þººæ®ÿÚúÿÿ,¯vÿßÙé7—vg·Ë"|}eÿƒÆ‡"¯Z[ðãÿ=Î8Úw¶;x~†“j-™Àü€¿öcÃ÷#4­}‰É’^FWRÈÞèq¿¬*Gêf«¾Ù®0T?|´4Yt'>‹VVKQ÷ýnÅT’Î…æÏòŸæ 'MNn@Å7"b§_Àèwô¯¾‚äïH(¾çx@? <ܹû°¢äYJ ·Þ„`JÂd \x7™Æ€aÈ!G¤ +W¿JE_\$ýuîÂL¬±h×e V€lÆÀF¶I ΞK€¾á7x¹øJ·{ú&žL Ev œ’Îg™AÅ J™‡ì”x(þø[TwqÇÈß9êÒH˜qry…F9ÔŒ ÉKQR‰+l¸Óo Ó¸ƒ³€Ð4?ÇчT,ôüðÙÃùA³ïì#6æ‚>ëɲ ´? ô6”Ÿµ³%À؆…ø8Œú™µ¸(¹-‰õˆ®oÓñã cñ`—a kO÷ÚªÉ:Ay·–(¤'–Ot[„ìex¤Øààø„ ìJÂ`ÛÃóÖçkÌãÖs8‹n&Ø@Ø8-Loÿ v&Š>DJè×ø¶?Eì ¼»eÖѳpœj(Àå]zxÄàÂõ&ßÙ ä n(XÊFûœ°” ×äÃMŽ­ä€àãÑç ÄFà«MŒÎÊ?t+n Œ'NÊs¿*E–ãG Ëq…kòÉ‚bÕ? WšRyjÒ‚6NSÆn¼‡©\äØX}gÖr\€Í¦0õ7Ì ymÈ[ã":>ìmKH-°¶QÆCæaSBŒúl…â¡1?%EëÞ%È·çê Àq 'É(ÜÔ 4®2÷¯(RôC„*3+Q€t]ÖU± Îo1lBæäžu¢NÍ7q•·J ½ù;øÚ»£ûÀW¦u$ƒÈ®*På[1—[ÂC8×Èh¤C”âÙ"šÄ‘Ê`k2Y‹€ï1iQC¡ûU¼!­Ýnx§HLÇ3ùk&ŠS&Q½È„ÓxFìšB }oDub(ð ’l‘î{õc ¼ÿ–\ß^R Hþ7tZØ>æY£OóQy"ÐŒîzö­ ».¾>!~oÛº(ÄØÞFëY·ÓíÎ~V%ø=9†¬l/¯dÝãöÛÛYõÀ× ´J•T…Y};ü˜Ù5ø}díž…ªÙílgö^@°°¬Ê¿.ç2‘1'}Ö6÷Ú‡¥¨ÿo–0ö-ülÖ»Ûð3ñ¦cû  ·úîagþÅÿ×w¶«üOþ¡˜¹ÇÍô):Ý:ÚK)fp\·þa»­)4?Ò©~|pRŠ67÷éŸ]Æ7‘Rš”G:Õ7PÅÕØ«¿+Í{oXX`ÎØ#T¼$_ó{£ÐW¡îÚÛ„aVsÕ#ñv•T¾@ŒBºàO/P|V„Û}J´Ô?ŠÌfÍÄŒ)P“€41BCÀ¦œ8®°&§…’Dv‰w a€F —ѽßý²ÇyË*¤R0”¤ÓÙé>%H‡€D ~ÉbˆÚÍÈxXûøž¸×8ÛøÙ|É ß5š6}ia8"þ]£äA&&±pÌ9QE3¸DU5jª!@ŠåЀ/ܾ¢Û7“d0jþæmÞ|¥Û»ˆ}±ÞÛ®bݧK\Äø¼†Åéû—ØžÕÖHß„œ;°ê0ͦ¾+ Ã-²óŸ©S¸fÜ[´F£›èv8M¨–¸¹ÁûPŒ¢nX¨—l‚wË…GF¢€›@rޏClÀ¥¦-EÇVÿÕ€ò6pÿe£EÕäh |Ò((UQ†­%ÇVyúXWè`¾»éyPït;虵à}8+úÑ:ðkæÿª—ðŸcÜœñ— Øð]«ìÙ‰_Ÿ¥Äk÷H9è*o­öÒõ@Å•æ´"%…|®j“EÏãáX³'Ü—ÐoU×CδBz! ?ó$ÞûÎÏY-æ×<ñn¢°üP4±éÆlñ,*Š´³ÀJÚ øxu%j6¶6 a´hÐ.!Dà”Í4sÇj* ˩ϊՅfÓ^)™H èïúJÔ õžnh³ƒç¸©‡ÌÚ4†`> |­Ùt?†6ך6ö-L-ãeÙ.Zu hvéØkBô½|]w¼‘ÒqÙwø!¶Ðµý•¿§[]nš]njÁ†ÅìG³¹Ü,‹€ÈbâÂØ&$ôrÔuj2]á+øzôÉEsí_?Ù|ÏA1xæjlW@ß_1ßÐ×þG?ß¼zßdÌ<4åæ²8U^ç¿E¡)²þž²eáÖ¡iˆV>çÃB¬šdE¼g1­4ýñP1¦Ã&]thÖVÔ·ÌÛ:ÔZAf¿Õ›N£Š2¿§ˆj¦X×5wcº`ø¢D¶iÄ a ÖëÀ·¶WhT-²-@ÊÔÆ{:8Ió9æóKÆjˆYP+yžaµ¢*z÷Ç19qÝigÜž4óÀÁV‹ÎoÇ«ڪ%B}+¼,ºjhµÕ§*A(µä»4ã°ÌdqŒ"2 ž|[:ü¸¿¤¿jmW„GßÚsHò¾Â-á³G7稜Uên2󌗽dhõ)Ò×aÇħT-` ‹Xm£n–GÅ x¦Hf‹kN9%¥ªÛÕ ¹–ÿu·¼wûÑ!‚i½Ål‚ÓIIŸ-à¡|áX+ã_ŠOŠQeWØòÖy „{׋E›îBNÄí .Ä‘—¥¤X4šòF³NzG i¦[´¼ä¹§²‚7“Ø‹¸u_Õ1FJ÷nõ¡}š®ï781¼ \Üt="b‹³XÛOP0æiY–“šà Éñ†°oà…’w!&§ÈݺdÊÅÀŒÃâ·u™: àʶÂÓE£;+ Œ²KNòÙÀ ‹%÷ò–R~ætÄö?å ùæ!¨ú¥_œyÞ£Îh9S¬¤©N9 ÿpï êT' Yu%åÈä’æ™vJîQ¹c*MŠTP“úפ’¿ «ÌÈA&x<À³Ç€ˆ;dnÁ2¯£¾´´[tOˆèá‡DÄjŒj #ñO—Ln¨Vg JC'‰âäÐ’ E€ØýÚƒ»_Ë!ó>”Ö®XÉã83ë¼lË€0Ú’«ÞV‡µ'WÓîôªIªÒˆâ_˜0«)‹†t­T9ž,c¶Ÿ˜©|Ô¿¿…h ¨=ómªwKgGë×îëÝbúL¾< üùV«¯øïgyþ¿ô£ý?žjõÏZÿpÒ¬VÝõÀbý?ÇëÝöÿè~ºØž‹< þó€< ¹=7žÆi#3‚v¸0ZÅ_3ü'ºtâ I^2Ÿë=¡]'DKd¤CÍ ]ù‚XPÇvùì®Üö±î) Õè¸ç\âó%n_Œ /ç ¤}“|‘ð:ž^|(¡ÙB;W×ÐEB\C¯·à¿# šìâÞ•‚ØâÕ–÷jë…1棨€0ï"¯X ç·}ÒÜÀèo§=¥]]cnî%Ÿ¡/ýÑðóe¡÷9)}ºE½µ5qA²É úwëË¡o”õ6ú_ØÉö²„ÂßVñ7ü±Š?ªkø'þXÅkkÑÿûDÎ&?nT{*ü/àiý8Ø¿G‡ª+$ºUÿ{ÂÒ_k;Ž‘åÝѼÈr‰¸œémÉ™~8D;˜£Ö†…C:šÈtCÆîºßúë6ÈSñë8!%Ã_»-«VØÒ6S7 yª5©ûa*í×{lûß“ÿ}}eaÿ{žgaÿû¥Óþ÷½ò¿¯×¼üï«+k‹õÿLûÈs;õÍÃRî(pÐÅz(ô–ˆÜ0g0¸…1ñžÆD=w¹LŠV08)%ú™ÔqÙìø÷ˆë•àlèô­†3#2Y*nJ¬£/-ùì¦XKÀ„VšËbŠ•„¦y,¦ÛfhºÑÐî<¥ôB¥É9ù”kä0e’—éàÅJnÅ“þ8¹‘*² šI«Ž8-üxŒ}§”êø^µ‚*`\‘NuOãn4—}7ÊiâÉÊ ½¬†Îeë•°ú?ËÜË”­e1¯¥Pw¾]*F`œ-S÷©5*i“ØÕE“^MÔ¢V¢}T8¢Ý®dÜà]û²arAéšã´mÓ ÖÖ0m­˜SÈŽ/Ä›^ BÞKÆ*çSæoX®Z™ù(OC ‡ÖéÊz>D—#L 5Ô#b{9ðŽ…1‚·;$Æ=Ãs†GšüÄ$­Vh¥„Líh×ĺÏEå·™³Ñ"´è ’[Ô¹yCl+’B¿EP°pôLQ©˜Voпô¼Íˆrq ËDÜÉ Ð&ÍÄ to`6/’˜âw’Ê@%y J}½Y‡Ê’8öË®kñÚ8ƒ1¥ÍJçé¶P7« ƒªJ’+ò’]‹8´nÚØCc1©uoÄÊJe'* ÜÅ"®è"®èƒðvR¤õ}‘2†X³#óZbí,ìqõʆ‰\#÷"{²Ü@¥¿8ì#@ݶO]ž3Ÿ¼Ž}yAÝ4PÇýs¤¤õ¸žj½ÛŸÏÖq¶gÂí¤Eµú=¶ÀêØ¢/qP;>–ÄêBNÐŽÝ;sÏ Úq:ÖXæíèžúð| »§³¨šÚ #u²¶ ƒ5çÝ3ž˜5}ŒÑ½"ç‚= H…F¾gP䆯8ᾤ¯pùOOä˜4p‘ªÖ­Ý xk\i³oÃÖyÁK´n¼ü¾sëÅ›Å1½pÒç "«²KæíE>¡Àã cÉ:YœU$5&cäù~žô%¨'ÃÇal7¹H6¾ˆ-ŸE¬èE¬è¿A¬èYÀÎ'ÀuCÑ–ÿzK‰ëüÿTªB!ø›ÊÕÔjÒaŸ½á¹­d#hjEF‚{‚ƒê ÝTnVüòtz¾áÞGCÝ!NàpKjG´š5ºŽ{CÖVö¦)‡Jj5ú°±N˜v {T…ý)…‚,iʦ ú2÷{·“ôj¦sÿ3£ŠÃ>©ÓãÌžøY‰ú@GÒúaµýþí˜uá=/ˆõ¨x9<+_ <¹½ÄyÿýUá¿¡Xó%^Ö¯Ê@½½7¬ô¾ÔÛûPóÇܽ٪·wJy#x;¯gô.7ZÅE§üq ¤ä£1†¼ÇõíÝ?rš RQ¾ë÷m?Ê·xÕÇS‹2;sá©ï ×öhŸŽ='{6|{Í-2|û¿lþ¨âŠ”Â~çÇ~ë øXì‡Ãee¼è%+zÕ'%à cF;xòPnô´£Â¢Ów,J•I¨tc6ê½h[Rfó"ÃZ$tg)NïÇyc%/¤}#ÑÖsØxQ²ô|1(ëÎa‡—æh›®0È0]©? ˆæ£Îœ8÷÷‰ ÇWÑÑpâ_ìÜ/ ˆœU㕲üº›"ŸªÛ5Œ»J23ÓÌnªoø óºT\ûtž?E,ƒÿB'Ñ <`„fµ©…¨¸H‘øÃ’½µ!àΈ¢onÖ²9Šç93W÷§Í3oâÿ§ãóÿ¿¶þzÿ}–gÿÿ¥ÿªÕ?3þ׫µoý×ÖÖëÿ9^í6þÿ°³å8;‚ÈרÃúÑyÛýüj®Ô©pû€šbKÀà·ó†ú‚.̇}^yôü–€Æ Ÿî«àÂQ¹DD¨qŒZ¼»k¸ú“>ªÆ”™Þ:d ¢ž{cD_'@èdJºï)šã½‰þÄ{Ûàÿ îðoG*WÚóE(&Uà‡Áš±TÌ.YÞ¶MƘ˜â¨-?w`u2H§ñi<”ºtÛ¬2ù6Ws‰ &:,)P‰*Ø;“7Kê”YƒÕ¿÷õ„ÐQ1Žá6¡k*²¯^³ÑòŸ"Á¸öwÀÅ—ÝßÁÿ))ç­° "ž©O-º•Í:æ!¢I¹ÀPBDd@¨"¢Ù©’évÁ“ƒ„aº9<$a…ªŽ%GúÛˆ²3Ûže[‘8ƒVŠ@ÖêÜÂ㞀îÕ"Ó[’çáG¡;ÐÊ¢:®}A÷d¹†S’ŸîTv‡Çê2ûÖÈI©>4(Ä)¡dÍ)£YþÑM-äλxT*$leAFè¢?&W y±šgð?ì$=´ (É=n”ÝŒsÒÄ¥Ÿû¿/2 ãfäæÓ‘I}è}§QœF,£³Ó¤$ªß`¦!2y@È#§Er Åa•ðÈü‡—yÈô¿vieî¢7o5ëDQ:&ñ½“'e¸?ïrƒ©!L&‘ø”ëTúá¹™Ž~ÅŽÞ!뼬AG¹Ë…;R3}ÁLf_”3\Æ“m ;·D[iAô•ầ~*3Ya:xÙ¤Í)äK©cé >ú«\ƒ‹¹߸e±8ޏ#F6ÿŠ-”Ô•2š12¶×]ü0rg5Êá¥m?ËÚ|´ÌßÊ—7HÉ+‚Žnó;ÚbàG9¢ÏÓ½C#º =M”á-¼úÚ±:œ—ðö§kà;0»:UÝÝ’öIºvz;%e´²wFwSô÷C#=˜—¹™Z‹/Ó· aêÝRJÎY{ec9s§l—•ÒX®}ïÝ’.u%¾Ú¥ì˜’‹¼_&o†eï°‰B;&QJóbÉè-kËT+1ez¢-Tv^6mõ;­Ó3¶ØëûVÖ ¿ó^K7vÛ`¿3§R3@î}YrlÊ®¬÷ä¹väíÈ ÚŽjéûq;T½ƒýKEê€ý“"užæ±ñ?? þçUuaÿ–gÿù¥ÿó4«Öú_[_]÷ñ?ë üϳ<¼Ú]üOf°óôGöêGþ<(Áß-4nŽ;5ôt·Ü_ð—/ø5ŽEøï¯²œð#Þ7é=ÒG6Ì÷Üu ÞR¯â[Ãò_¾ÖšÀ äׂ—&l’¡±ÈæµN€„2Y_À†[†=ŒƒD‰j¥s| ^,\Fˆ˜ø½X’“>£ÑšØíSñcCK0·B‹)-ü¡üí¯„VÖJhY+!Z+¡*VÂðÇ_ -{%˜bì3¯â]Éâ©$°­àJ葉ZWr)«—'ËÕÐj¨òjPoÜ{AüEÖ¶à‚ðïiõR5ÎbÀ˜Òk-—,I<'´/%K‰ ‰ü÷ìx,%ñ«Êè,©uo7Þí–¢îö‡CT ÖO/B•¿‹¸¶ñú1BÀäõíÕKÑ{ø?ýÒ„ÿoÂøo9Àÿ63ŒbÍîá6¾„yQÒIRßèÖ±Za8ÜÜoQƒ[ðŒá³…á{:ðKgÿ#~‘Þà¡ iÐÓla$ ­ZôJÑÇ&þ·WÅŸpÙ:zäp7!’nÖ1¾K*º­úÁ‰Â¸¥‚ ¹š’|=£×s$íÙ»]þû••Óf¦˜éÔ ÓrŒ3Ü~Ñ00˜?;‡¶œ1ÔV(¢4VÍU"‰S%•/;°yt£[ñY1ZæOiDúãG…e¦†íù;ã2wæÅe6púzƒäbr@Æ-+žúW£©GI*uðª[E #ž½Œ X{l‘Ð’´çÂoîˆëaLYn´jUkh°N³‚¦*]£Ög0Ý0d©$ï%” ű6^ë¬[‰®……|ÐD¸¦ñç&—°KmšÜ‚Š47Í΂@Є[8l›„á§na—Ý8:MäšjdÇnz·îGÕêŠÑ„¿2Ù’Ñ–}5à, @YFtJуTa™Óä™§ƒµoº;|Ù‹•üÍÍå&ƒbmü “rú ¯e…53¢½]ª¬È¢BÚdш@ õGþƒˆ&V¾@™ß™#/Xõì­80àŲÀøÐ’¢Í·rcÆJ\,0áö‚eí¸HœDt˜:#Ï|Q²ˆÙ~Ób›‚:HT‚¼‰&2˜ sš»mÒD^&aWnÛWÓ*Ó<ð>²&ÿm#2HƒàÁVÞmWhÓY’ƒNà G&w—hO¬l0°k ôÝEXòóÞ`Yf¼Ù\ëÖaÄ®Â"NKi³y—ñv ¢–ìç[ªÛ«üb©@ÿȨa°¡…^g´æ{Qw½’C)=[&ÿã$q‰~V™?¯‚ðûbtïßcư›8*Æø.~üÍ[9à]_.ä%¢€ç  Çß§î)V×åÎÂU‹Íå ¸»8$¢bBž·èu°¹ü^í8~þŽ¢û^eÀb¹½ŒÔ$¦­¼èþ‹/ ®¿È¢ÜóäÀÜ\‘ËdÇS/86†zotÝ?8›l šëajÉ5ÐÐ2 o73û%,$ºg|\?fÏ"-gÔR˜*ð‘ÝIͨ,jr—Æø ž75ÿ¼²ü„Â¥PZ†fÒf¸‘IFž_ °Š n%“Û3iWF-d‰íM.Q#‹wAì—ZÝíM,œ¾ÖyŸ‚¯—±?.8>¢ y•7俨ޛ¡÷"kÏKyÕ$t§,ÈN.¿wfõØoØÓvkõåÛˆT «9ö].³Ül†Ú‘{uª¶ˆM{Õùþ­³·à¤¥ÓßC±à)`rrÚ10—d¤žC;¦—jéô_ox.^öërD‡yV¸+¨Ýo<³½ª5Pg FçŠËÏÁÞÍ%­×p@äUÝ©¦î#þFjÜ7òòƒ_£«Ñà|âþÈZl2¸a)ÿ :tì÷_6æãÈ/sÀ g%Ø¿*Àþ¹‘,4ô³HF·´Âÿ«^‘}/áü9vz©ú’¾ùÈß„Ñ*û ¨cî•T«Ð «Ü±¯YÊUËér‚HCEøÔ•sâ×ɼDžÏàÀØœq‰§@ÂË©÷+) q ˆŠ$Vñ'4Žü ,–4•Ÿy?§5£xò\ŒSó§FŒS›Á8¡‘,¹:ÎWüÈòm–’á—Ö•Øß„8O]äkzÍz Ey˜Õ¾– Y®.ÓO¨»I‚}1݃G¨-SË÷×­ZÍÞºDI(±$jPå_F[¡ªÎ¹h9\òðP­ÉV³AGpG«5y\—Ò5<0éË Í÷£u!¨À,פ߳ÿ"­R:Ö(h]!ßg’GÔÞ€ÚIøZz/ê}›òy&•dktK‚t›ù‹{ãÔ•ì‰ÍumÅ-ž&õ¹D4çì-Ô8ë}Ÿèo©Ùå\r’ÅÜ#ôK™Œç=ïÕ~¢OÀÇë6=1¼¼G¹Ò˜/ôðÙ˜•¹/ᜀž2Ô“}̆ÎÝ$5ŒxJ;ãŲù¦þNÈsÖ·þ@¶¬HܽE‰©È$4í§ê+4ÿ®þ^]8‹¤þT¨ÖW´gž# 8f •ºT›)^×ùÌ4¢Ìˆ‰Úó˜)ªÎðŒ¿Ûxm·’à—¯æµYü1fÙ,à nÿl?¢½¢E$NµW nDjÛ妔u—ƒ1²¬Í…Õ»s.¬Of­`=Õ¦°@Ø{3? (½²dI¾:Ù+†¶ ¢¯s["p7/“ZÚm–ÔµP˜"M²L¤íÖp„•Go#<ãR÷•.&šÇDѶ„¿¹•Â5Oü]­Ë?•bYÔäžÉm…àÕû,–ˆéù¦ˆ¿ý ï":Ôò%3~LS ÊTáfS…ò0WÿŒkPªI£­LÍÐöþ»ØÞ›Â¦´}DÞÚð¢»F³™²™;¯Üϲñ{^ˆ¤®×’ñEëF†a÷id˜3Å’1CZRaÁÈ4Hè˜Wlhΰ^4Áz‘k y­þ$fl–ÍB.þÁhÑše´h¥-Zij[S" ;™¦ µç Å! ud(©U÷ÙÉönؼ‘a߈RM)ŒîY8è>fX8ò¹R…—e|$¬óiÙöfp–I„ºäõ(U(³>ºŸ©DœnË3M%¤òGÇH6•ÐØZâ“Ù\(\Z–æ’åY¦’Lv-§/³h†IEøipHçY ô’ûaЪY†MI×°b|#C8Ïœ$ Ô '>LÕ(Õ0³¬m…¨¶Ô¦ ~MVùû‡kf©.7eÙf õ¾f›êŠ´Û,£Ý&徬-&–Å&Б2tw¶å$Hî´¦”¹H™kåó‹jUÏXäMZ¸@«?”ý&…L‘k»áºßf ûû¬>»eËŽ1ÇèwV5ž½GT afwTâØøãAæ—ê³Ì>!ŽyK½Én-8©ãÌ4 ¹’q?2Ì@¸Àò)ýfëþýs™€–s™€ÃG0-§š€ô-ÞÐ(°Åâ•a Òš„juÅ©Œ8;f¿|œÇ´ÇŽÿ˜ü8ñ×ñßžåYÄü¥3þãÓ¬þYë¿¶öêuÍ‹ÿ¸XÿÏó‘ʼnÿØÆôs³/¢@þ]¢@òìβa„LÔ“8-$¿Éw=6"ñÕœ°"ùAãzì“VøÇј‹ë03²3ÄG,>^ŒÅîMÜO.©À¾pô[Ì·»‹,ÎQïÌŠ0Þ0³ÐöbEu Åwä@[¤í‚EeRff G¿¨¤àÏñqŽ …f%2ºXZBœŸ‡Jf™Q õܹ]—™_eXFA­¢¹v¦DÛä2 &IQöÁXiVm 2²nf¶{¼°•\õ<±+Íej$K·f;œ¥ þhsí“Å~tõ¹ÑùÛî­Ô³¯£ñ_˜²8sˆÓõÇ9­ÿÓ\üÈM" Q.™úÁ%Ÿ÷G·ƒóhˆ–ŠX-ºï>IN eÌSyÅ;e¾ÄÍÇL ø´q“Þë@I›ííãC')8$„Ó…©Èl1ƒ§édý™m¼Ž9EN:êŸê”Õftf~¤}rô[>À§ü៽/Jî)rnÐW¼ÞŒÂÑ€7‡¨5åm~ÝkÞ}‘Àp Õ›KØBáN!Vì/œþà[™ïH9îÒ—‰‰«Z¬—Ç^/á©ñ>šÕ:‘ÉhÛ‰s k› °Æ'u ¼™u>óì©V³iéQ2gÎc^:ε7Ú^ÆaK¿,»Þ¾ÉT´çi€„Ѻá;>ž³ýr0r¢-SX?9¸ŒzÆ1a– Î_QJ£1޲±G¼Ý(ä0#²Þìp}j`#ëÛÐ÷ „ÈprâxÜ;v¯‚Á†DÿÍí-ó̱ùoš1‹dŸÕ“ èït(Ð%£WÞöœÈù:Ô¹T´“ú$åC‹SÈbó*éÖ]Ñ\4àÈ=ù/(Ž Cö ¤øk º¡n…šíUöý%Ê6pIeû{êý…½›Ë5w‡ü>÷˜”;ÌcÝ_2ü2ÍSÝ÷èžëLg„M•©Y»è4ëÈäÐþ3\ z©_Ëö‰MýÈÑ ÓÒÏr‹Éq‡aù$ß&ïíå!wÑŸÌ»KŽ[˼w»ò_#¼Ñ¬Šª²‰‘˜uš"çƒÙ·Ù£y¼—ìÆk)´H™?£ÌwÃ̾» Èüs®û¨5ÛnË3*zÄ{ŒÃ£¡ñ 6þòÃàÿ_¿ZàŸåYàÿéÇÄÿ?ÍꟉÿ½Z{åáÿ_¯/Öÿs<¼Ú]ü×Àÿ·;»]Ó `£µ¶6~ÖóÄ~Dp1Ïè°Qà–çt èrö払¾n1ÐDeqŽêK(AopžUå-€•h‡yÅ00ÊïŒàõÞ4ÍQ@:¾ GÝQ™;G]ÃÛë3®lœ\^!xVôvII¤ žZoâŒØÙ¨ˆ¶Sæ÷V8œÏGA:&XœÏGÁt 0«™á£ðãbæ7,ÖÊá7‚[Îc†ÛˆÃ1š‚îdáÁ¨šFçcÑ;h,ãˬº›‚`ìf¬‡5ç]÷¾ª¥¶Ê¨ûÿDàÿgCáΟé‹Ó õÏÏ@Àw3NUÇcæ^ü lÐøÁÖv{ÿ‘³ø¦AÝãþn›Àí@¡#ø§Uß|÷áé²ðº)wçüËj&@»z6³ì"«nØL°E€E˜rF÷^Ûú'=ð¹ðóݧÄÏWö;¦B*œ^—Iƒ8wQ•ÒfIÄÔJE4ï$ãÉ”åWzA”’ùÞq/"ëqN Áüypˆ„ö°&ì %mî## VdD<*Ú±fˆ@½X{³èÚ39Ä­l9dw`»I¦ÝîÄp=b£˜¸ áßúœ°Çߊ:ˆg9‚ÞK*ÇPS…oœŽ{à ßpÄeF=ú"dBêî ¹³¸A ˆ÷¸lXå„¡Ä„;jõlІ’klŽ'øl;~WÝÉDž'‰•H‘ç͈kõZûGÀ'¸ü&Léå,–+Ïä¹²»˜¢4®+W¿7ß9ø X{ œ³¹rA¤>É6œÉûdœO¢ ‰4t³ Ö91“oâTÈyËc¿T>jÁ®”äM“ìU—ê¸&´È-ÞPY‡ÅÞa}‹dâ~Ij½Oé½)Þ“oetÌ ÿûˆCÖ›KØVyƒÃÒ±¨(c–€Qm4ËÔE«L-ÓBjSž5Wî†õÞ7 ª46Q–çQ;þ¦Œ¥ÝèDŒÃÙjí­QzðvG˜”§;˜sz€Ð*,g¤apðR†Rùhøùö’"XcgQKû¢äËmñ¾gíÒ\(WGò÷=ûÇ•æ¬v7ž~‘†C?XȳårÕbL |¯³ÛôWZð¨[$%“©Wh9] yê!£¯Ž=è<™gó,Î ¾O¹gÞ0]ËB] ™îe<«f‰¢¾£óÒ*øÐúÝŠjýÐ*ˆáñŸ‚çR¦Úöã½ÓààzAž‰R—& óc×t]$èm"|ÂÎ… ðÄKtéŠ/Èa#N.‘WÐËgb'Ïaï¯]äÆ!pË¥ôC‘¦ÄCåÕbÔ×i郃-X_Ý9ÞO”Á¸?c¸^±ú :ÝŠBè }%5ÊÝC+åsi¡9š}¡ÿ+þKë&º[Zº‚¿vŧø'ä ;}}G2{Pß¿íÉÎÊÎçðÒÃ5€­ÏðÒ{½è¼x#=©|Â< w!9YÄ%m¸Ä†Qâl4½Ò àW FÇ‹z?CvTº÷‰^zâ&Ñøg°¶ãã§kB×°¨Yà+ÎÌÅèºÇ¾•Èßv0ËÇ-:Ø]xSÕ›DÿGF©q`[¤9*Ñ`'#Ø…IÙS6Ý ¡K¬¿¥ä5ö+Ïâ@½ÉØ2ûœÅï b_4à0tªsƒÙ𣚄{÷KV UpÁÁ§,Ãé]Ô£„8rÑÛ{â¹)ÈýÍþÿÄ ø7`J±f¦ 33ñ¸nØEWàuï<–Êm½dãa?D”³xú5އÖìâD¸špÔ9@ÁÉé÷&qIŽöûÞ|íÝMÒ¨Dûè~½ bw££+ʳ^U0X‚žjbÕ‘ó¬àswõ¡3,lÍã²±¥ý H!j|hÉ}ûCGtž=Ýyy.ÎrŸ´×®µ‰0«„8Ñ!¬*XJ} ˆgÖaîêÞn¯k8Ý>­,Kâ´þ\äi…'ñ V;GÛòÐ{€{ï®ëÞ»ëÔ•åȹ[j{î´³NB(•§¯3<2w+\“ï‘ùÑêžÃ<†wdR‹{ãþÙÚ8§ž|Ї65t œSZsR„IJ½½º£*î´ni¯¢³œŽ]´ñÁYŠâq¬5VÞÕ9%5C.%Lfš±õV,¾1kñNãê<׺R*÷úWæ«f5r9‰ÍdÒ»VÑHᣯW uÖ|ô5 œ“·¤0[¡„ I{Ö.¦eP¸ëˆK´,w@ ä])“/1³†C#i0NDÛ#ï=ÚÐ’±ÉyÖ ºïžMÊt3>¿N.>Wë™ùëaëùCËjž*5Öv–ÿT¯U£pøšpXLäùÎü<ß¹Ïw žï<ÏûRïÏÀô›éýA#ŽŠ{ª7D)¨¸š«Öû'N•T¾@3Ëa—1¹Œ¨NŸ!䘓3`ïõÇA2ÏÈY»÷Gç15f§¯¥%¢Ãû°%Ža½ˆi•xot0šÅœ¡$â óÞm9ïʶy]ê×¥îÅŸ/ ˆ/Wý–0ß½h¿0ü&ºñ¤b¡ËóÅ^C¶5ZVª8‚®Ö†›ß3b!qZ×fä¦5Eô˜4é¡Áÿo]ÞKÆss".©€J‚ôfD%¢oî JTFPÙˤÈÝΊÌäEZ¢*Ĥø•ÊÙ9ÊªÓ Å4#ÚÓºû~kkwîÐMºì‡ˉ% ‚iy(òˬ«+*;V•ÖÌÉo3ëôȼ·G#L/¡ˆxÿ˜Thªx¬˜TF±¾i—ðG‘n<=OGÍæa¬*DM³ªêTñ‡¬ÊÓü¹ó©ÌÝGFi—Sz”½\‚I`¡¡ˆŒî‚é »ù1“Ù©À2‘ a^MùÜšœŸ†û©ò‚núkÑÛš[;”¥Äá³G1W"#»¢?Žõô¯ÜQvB£ äÉñQâ’-‚²·Ò¼0x+k¶|vÖ9I½+ãW¸Ã§À]ô“ô£¶š¼£"ã,xc`E/gM9€’¬Zê²~ŸuršD2‰[Â,†ÉsrÛC¦Í0¨²Rä&Ã<«‚ ²y&•Cž™ :÷ã‚Î=¸à±cuXú uéçsÁ÷àúáG(7ûyyÊ‚4¿.¼Ë-üºžô±ü¿þ3þŽþ_kÕ•µµê«jü¿Vþ_Ïó,ü¿~éÇðÿz¢Õ?ký¯¾zýêµ»þkk‹õÿ,¯vÇÿëOÞïo”È–wJî^ ÌwÐØmXŽ_§øëi–S [ÂË+è¼Å7iR0õAW.íÌOÈGë1ü²Dõïo¡ñÚJu%ŸGVÈŠ4bj™îV§Š Rú xs réF²T_¬YQžgL\»´ä›ã ?§ÈquŠ"ÁRýa¢×–¹Âh‹â@òR4ºáÉ,4½Ó‡Â‡4%§=¿éö¯nÇ šMÿ}ŠN¡ÀéÒÒ® rH.~2a–—ð(*hM%WŒZÌbI4*зÃöƒ;YÆÃïÚÈgxöÕ( 0‚²Q3:šLUV'ô'`O*¶TŠšEqQÿŸ(z Ù5­—É—Ø ‚—ß,Š˜Ú*GÃ,QKEÐðq|~Û׺cRÈsCN‰ˆôåŒûÏ7œ@íϥݥ?1¦ÓÛ¨ðçiþ¢ÌH––/Vä¹cá¢ÚÇ\I3ü;4´ùÇú–ž_°•ëX…owÓÞ–¾oz–£CÝ_Zdyzƒî&èob1i”¤öÏëR‹/ 7Â݈@Kúª`üç©âéµÛFO¬œ-Uö?pûÇ•a\Î䢑 CG‚mcçnÆ#`¡)0Á©Ùª&%»‡d€Bgx‡TÞmW”< ʯ®öÕm5HÙ¨|ÁpQµzƒqÜ;¿ó÷ †X±*1¡Wß@‡Dh h~¹ú¦]¡>Šˆ_5¸³jA_XX=¥í„= #l¾ÛÞÀ,I‚0Ÿá„s¿áW»+AnlC“lŒ”£TiTO‹Zçz[µà ¨DûÓk ar5ºœþ?<\Ûà„6`AÂGWÈTÖ&ˆðÕ«VZÛ¨”þÙmà?íŠ=5P5¢vàm¤½5™ÀôâÉ…¯w…W›,¿!§šKðuw/Úm@ô‘‹j¢k¶*ñÃÌÓÌ<“ø1N¦ ’-Ô•m|ÇÎ(0²½2w‰1o‡ú>âÁÁÜhE2)É]b4{Æ”ž X "ÜEÎU.ËIœÜHC)õñ,Œ¾VܨŸGÃAòìν1æ9Œ„T7‘êD°ÑÁ7Qø*¸é`.ñ!ëÁŠS  éMyPrC§Ù’G»2X!–¤¹`‹öâ·ÏÔÓtb™§wÅîØ»cιmÕÒ.ŸÝ•Ûê/ qÏ<ñh‹ v¦ÈaÕ"ŠÇßúñÍTù i;èiÖμÈaÚŸ‡4 +ØóÐç#HaX"èQûÝ®½èzS±íg(”‚Šàˆ¸!3a%¼ùò)›¶áÙû{ÎÍ8zðVrZ!2\ì‚8,>¢“Æ­Ad´óDòØÿŸ¸$¿¬ûùžhד¢\ߪ.sŒ#¢ªK5 ¢y½‹‰äI¸ÿìWnh´~íMXé'X™%eÏ ³âLãžcsÆP24Þ\FQ<C[ÀŒ"4ާÀDr¢)$°EóÇHE¬#Nȧco° ¡ÈÖ#7qÃ’÷ò’Éò‘‰ðê7ËO&B¤Á=|e‚—Cß&­Ów¢ól:ÅðuwòQ –ˆ#½¶¥ó]õM2‰ÛXw1Zá]JD|…ûØPçèôÊõ„—ŠáDï× éç–ŽÄv` ·cáL?†žÀËs&hÀD ˆîC%o„àsxáºæ0%piÏ+×›_«ì× ù=ëDFƒ*yÆ¥2½ÙüòŠÇ$ó×' –ÄašÒ¼Œl›@‘!Ä*9å KE:YEÕNqé‹-¨kæ7¡ˆJÌ–HÄ–@ÕdŒŒ• eéboê³+¨®‰ ´X®j:ö”“j¾¦š$žC›Ó"í>9Oœ3Èå`µáôưsŒÏ\9:©N²-˜ùÜËÈéíñú£MñÑ<²¶™¼âv8óœ OîKg5°_ônS¹‹¨à9gw΋V}»ý¡Ðèlo–^ðvÿ¢ã.¼©_¾¤Aᯥ6^(Jx±`²âV4eáë]¥úÈ0¡¸cØ™ Åv:ÇJ|ç¤k«S *ܧ´íŸ¡Ÿ!2a a€±T’>.N§¬m‰‚6†xöx‹‘†û¶Z{CÅf«¾ ‡Ü— þögg%êG“ &?ˆnF w'Тò›èõ:ÜMöD 7\ à÷jÕgÑòꛨcˆw@¡C´¿&ÃóÑW)À…›¥ˆVìŸ@W~iÚcÅ_e“®XiUho¤I‚Þ0F%çä*¹˜¦PÆbÉ7o«ë(Tºè&+>Ð7ª´1(¾ ¡¯ý/Ã@–A>kmWÖW胹O°(E«KíîËZÚü¯½‰ÚÉz­¹3.sPïìýéÕ1éæ[4˜¡ºöÿ aÝ9M«"$«+2B3g Õ Y¬èƒ´6€»•@ðd­^DŠŠH½J%ãåËqÜã‹=›ôÀëg·SÞIùÏ,Ĉ$RÕ¯Ò£+‹Ôì¢(žV =Uço´ßF0[Õ Ë©¬è¡ç•_ÇÚŒ:^9uT×½:ª+ÙuT<~´þ‡WÇR1¬÷#׊WÁ«µô ì÷#”WAµö{z¯Ü $fߨ ¶þ*EºY†u´q§f/éÈ'xÙPFf:£9C§‡~8D¬´ÌÐ%éšÕÐpÛ½Å%O FlSëg[{0 ¼à’ðrHñnÐs,½ yØD½3Øa„Üx-’äØdœ`.Ñ–P ÆíΜxœLàBNŸÁ®“ôñJ Kªw^¾õS¸®Âx½ö³® _­¥íR¯ÞÀø)ÀÝd:¾íÃÙTr—°¦ß¥îã Ç=6´Í”%$ëH’gN mB´›T׌ˆ”‚³ÒjÁƒD kYÑú·IlV5]fµG—ð6z¶áõxœÀ†KöS°kó£ `Tœy`·Nops +OJpN¡%cGìõ`T˜c¥?1ôùAKÏ”‚Í6{ÃIJuë=šŽTþOtlÓfEô½¡wöP&áØÛ»‚ìNeÊ]ZÆj5B}p9'Ó«kŒ)1o T"£†FcØKvFý[¤"•áM[ñ—x­ªj´ä‰a™ë{ÑûÑíXUödþ¼›$PüÆQmµ;Ä¥¡Uü£öG¹üÇÚ놉¶‘G&Œ³~ gòd‚°“íÞxp‡" ‹ öTyFý±ö;Œàõª;‚Gâ/ö‡Y?wOìúlåBäù  ´JÀ2tÙÍxÄ—*½H¨;øYÜïÝr<âdhèˆÍ€·“>ˆHpà …dŬ¤@27é®àþ ’ëd R D,{JF}_‹ð`àH­ahà텪퓔ÎÁEÑúRØ’¯âÁ ÓAf§¥:¢Gš.Iˆ Vá-¡Å÷W£‰UÒbÓÅÞÉ(w(8ÇŽèØi£KåÚf-"pïí …K@ÿÜÀ9ýìEÕWhj«¾2‹»Òx%š5w­Ì‰ãfÅ4GŒ’‘Ípf¼š˜ÃÕÄ+™0˜÷ T­Þ&ΊnSçm™¸E̳Ú*!}`‘>˜'dN`.šûèbŒ"Þ –A¯"Ähþy´Ý9¦ëíÃCþç4ÐvVÔš&”˜=½q3ªM ¨ /‰×2z“;JÍæþÁ …¿Ùÿî"ƒÕôowûðƒØlÂD‹ø5{'%ˆÍÌ80´·Á`Ø? †×§t¢ùÔñVÜü¢«#)ÐôëïM®E£†SrëÂ7)&†óòãe‚ÚVÉ—Š/cãXÑ=JbéÈRÌ|Ø 2WnÿY)ëà iU¬m¿P¾¦ô%{¾Ø*ΨÚ*OóGV™Å‹šB02uÿz—/&ÊšW"Ñ ,z’Š«-#öà7ïBéüž(6Ë©G… (èœúõΣ…øÄ©ÀŒ_à 5;@‹ís ¸bÜÝhÚ1S†dØeéŽæä\Ù……"¶ Î85bË’ÏR‡eŽ~øðŸ¨L¿QBÎG~ÇҴɘ—žA—ÈkŒ9[èµµá©õÄc_èu¦HŒUÅPÁp´f·¬@*:þÇ ÷éò¬wýåñƒä‹ÿ±¾^]]ƒï_G+ÕõêÊ«…ÿÿ³<‹ø¿ô#ã<Ýꟙÿy}m¥æ¬ÿµW¯ëÿY^ífüVýÓ»ú\w;õv—ò·E²€£RToìÖ០›7‰a=™'tJ}£ ê¦H)Ç3ÒSŸÌ•+Z®-•%vBÉ`­Øe‘»3Î’ÉÙÁ/ÞEoÞFˆÈé-õÎ&…z‘þù†éÎâ)x§’}BE¡"K‡i¥°cá©1¾Á‰RÙÚZ ¦ïèC>©s ¬äyq(}*þ!²UÃ× -F‰u“ëæŠQCêó‚³)û;Ya6bΧv8BNŸ"V¬w‰þ¦SvÒ¼Œ¾Fç·c*„*][!Wû¡‘»‹R.ÅÄÄèìvvfÌÞWàº{SmDn•4Ŭ©a÷Ùêô ê» p¹P÷â/ˆ ¹Ê›Ž®ÞXˆ“ôqâcy‹0üù9}b5,ƒfó·ÉÝõÙhàåüî7î1@F1Õ#!'A|‹&ctÀ†‚aªÂßðæFZ6¼¦ÏŒ‡ÆœÑà Ãæõ˜³ùö¦¢NRw(Ð:²3õLW5”~ á¬ÝbmÐÚ²fu`~{beÑU FxBë8å=[«v1"0ˆŸÅ|.™ŸÚûŸd_r¯¶P=F%z`æ¯js¿ý^×7GUVeGÃþUoxi„ƒø‡•y/'é÷²kè%ù5Ùq^ê6psO©¦à ³TrõS&#ÎÙÏvj?|Žé]m?¤«ÍVŽ®ÚÙ Má„t"BÃYoòè3Úl™ •›G÷hÅìfŽÌfèd6›1À.Íù]›î|f0Ãæ£^}ÃXJ>D:¦‡öŠÙ`¦ÿEzÙ‹óÑ«¶o84çfW5œGuìdœXÿ&ù†‚]œƒgéu›|ÉXÏrk‡wzèÁ—¶±ï¦,#%à˜ ÀUE<2/ǽë Wï²µU½âQ#uó PÉN™seU…z¬eø9Ä€Ôo]$Ú‘v‹L¼×‘3¥P¾°j œ^¨û²êë`ÕfVÓL–!;žTxvÛ±9\¿!H|ËG3êP~¦ ×m¦PTï*G©ãU}\áòÔ}ó$ÿ>†â¸7»)ݤwƒK¤Jô'–^rœã•w!05‰·?ñ´ŒD$½|]?±SE¶ÈÏŸ.<º¬’—?9ÊQq8–‘\i,{b/l‡}%ËÞéø.@2ô‹û÷×q2Â096 UÏíÍ9á$TqÅÒ'ó±ôɽYú¤ÂåïÃÒ´'T¿m z*â¢FnôyÖc†Í™—’¡3p¶ Ý­ŠÌ”™S²{²·ñÉh>pÏ=ÜÞ;(EÝúζD ¦d—¤ § ¸ ¿‡ÿÃm½‰ÿá}}»}L?á÷æü·NLø8W™9é ƒ›ÿ1€s uY‘N!ù†ßÖ¼ ZBÓRzH‘JÙm¼kjä‡L§ÇÉ!·¾rÈÃÙ!=ð,ý#¯h•¤I!’˜ ‚L!è+7Ž3Täpþ"›/è3¥ét÷¢6øv*þ6ø¶‡¾m¶øuê/üØ[Ì…îš¹m™Åh”^<€²­o`ÍÖró ùÁb¯Üb(ßHh°Àï'YªŠæi3³*=ß ßÈÿðD„ÈÜ}$´Äâ_ïá‹t!Óù¾ÈÊ^ ù?Ä¥hsl ¥!mÝ,Ôˆý›¯UÃË镎y!”€B1ÈNq µ‰zÐïÂ)Þ¾kGΫ‘¬÷Äaúr´ÉN={ÙŸ ‚~Ϙsïõ=ïõ`öBÅ[ï+¨yì¬M÷+ð Ü ‹zXSF+'áVNÒ[91[9Ñ­œ„Y g’ŽïˆbÕ 4tp'4e)M­ïuhEBïü<‘*B«1}ÕsÈ ÍÌp)_#ë ²¿;b2§úÍ8 `$û…½¥vQ 5”2Ÿ"Ðí8¾ôúl+Ù/À›ˆÎ&1t$jáÃ$þÖëƒ4:è]¢‡ö4 (ÒA¼ÐsŽåK~YåH4Ýʸ7ñ¸Ìê&Mœæ&È92ä4·)sñIg·y¢x$ÒÛ\`?cÅD”Hä„BƱ¾’mÑkCù2=Ó‘&ñ[‘ )ðb¢O8aQÅOYÄ{24)_{ŒVSò'Y9Yf‰ K,§ÈOó@¨"AEÖ†áy‘= ˜÷þÛ(£1‹@Lì¹²Œ†-ÚGB@±ˆ%sD±Ì…æ«æÖr£Œâw¨¿>)ôït<øÒ‹z h{/'‰‹àQO]ПÿnTSVþ¶Ì4Zµ—°Â@Hë-%(f 8$੆Ñs¡n¡]àý©d̽×.Sø±o¸¯O.–áß}n—Ëï)ãêbþ0ËÐä›AÇh ÖŸhý¾G¹»yü+ûiØã§]ÚÇYk[Ò~Ðj ‘ó¡ë?ž8‡ëŸg\ÇO{B/ÖñÓ䮲ƒÿLI(+ÕraWˆ_òqü?ÆýÑðüSÿqQà9ý?Ö^¯®Á ˜ÿqýum}ÿ~–gáÿñK?–ÿÇ“¬þYë¿úêû˜ë½úz±þŸã‘çe½íµ7ûmqNv6÷Û[Ÿ6•ˆé¢œ?ê;3]`ñ·áͨqÐøPŠ6áÿõƒƒÖ‰„ vžj:"rB.÷‘Úl÷‘Ûy¤~3N6ñÃHÚßÒy$7×]à-Ìl²á@¬>ÍÙŒL‘Ü-¹–¢)x]Lõ* á>€ñMO’ÙŽ'ÐrAvÀNß«d\·!Òûvô»ºÛYŽ)Qd/zX F‚_ƒs]"ˆŒmÚ(}Mn õ"´š ¿d\Ø,…/É&³õ™MÅ™>ÚžçxøéZ»6Z{(LÒ“»É4¦¿0P8Y+u”X™ßo´xO(Ýö}Ù‡¤RÑ|ù^^Z:ÔïƒonŠ7w7aoù|{‰Á”UøÆ,/j÷0ŒÎs`¿ëõàJQR‰+l7s®ŠÂ 掭üÛJ¹)áêyZ§i¨z¾æÇ¨G4®8%#» ,2•øËNª’)c ‚0«ÂY’Éb£*šuB¥b à3&QbS/õ‘ÒYX¹7ôÌ(zobø¦ÈMZNÊŸ9óeS`"F’3˜}.7Šÿz›üëíu2,´KŸ—ÿ˜‰è˜.鄟‘„®¾Qµüû­1lÙ½üDß1¨¾Å!Ée[­#;¿µüœ¦@ÎIIûñ¨D˜®kã°³½<2HÞ f¥ÍZ OKãr/4áÒ«N¥o–ɾÇv`>h´Y"ï9ꛨBVÏ5×°‘Ú’G`"ÛƒæoGLàÍ`  <š,’•‘Û½I¾Œ¦$ö^•äÖ5¦?Xj-É|;½I`êþ‰„ˆÇçk§`ŒWÔ@ó…ïÓ‰jæ•ÐÈN#Ö ŠyS.Q<>€Q‚'™Ñɺ%!rHz^5,ãØ9W ¹öZ£ÀþÆ„PÆ·Œœoo)ÑZ×Nö&÷¢$ú7}}H°#¯%%§ØŒnþÇ<ë·¶ÔV!eÜ]QGÔ4“øiu<:ò:?ú¹½?´Û¬wA$l”¢÷é¢W½ÑþÐÞ±­½ß•R6Ú9 oGI “Ýú‡íB´š—M‡,ÏzøñB·ê›íZ‰—|÷c z¯~œóœéƒþH°çÓìù4 {>½ìYÑÓ×¥@àY°¸p,îôdÛ–E”‚_½n„’u :aÍÛ»óª@8çŒA<#`°p@–30Ç~Àáù0Ë~˜a´œRЃ-Ó™Œ%Õ™œZV!˜3ðÈÑl@²à–ŒX»V3ê¸9;‡ânE‡ãÒ覧¢F5ÒÆ§‘?ÌuD¾“çCgmKá!™ò¬¶ŒÚĶ0Î6"¶ƒÆ@n.§b¢—x6‹:¦¶Uö)û–§K¾ñV¨´¡:¦F9çÔ_}òYQ=ÍVì!ÿskÚ‡´¹Í²]¹½'ƒÊ[UìnU‡ìÝJn¨Üc ˜ ¯8§Þ¬]n[f€¦Xb«CùŸ¶;s£#IÏ?rQJ”Gnuä>Œä{¤¼Üd„Æv­€ G&=‡«H¥)ÄMòŒÃ¹@Ÿ‡7{õ-Œ½íº'iᵫ£ÃOÚJŒdCfýû’Á;—m¹¡g3wx“<$"âÎн°,U69Ũ)tèÖÈÆÀ$mcl†V§Ý­¯ËîG°–­#³í-;²¦3OÈ}ækPsÖ.˜6QúŒnú³åÚIr½Q,-íþ°y ³>¯´f®ùÁ5ÁLʈ¿²3´ˆp™·Z¯é ˜¶-È%%xYô#šG¬c“kÓ­rE0¯tý)þH'ÒIÉÊ¡y¶»"HÏÖ‰ø…×ÎÐ>°·–Šj³ÛØ,Œ‘µ·Ä6œ³Æ(’„:G’k\8Þ£ŒÇ“ÑàV¦ííi¤VâÂbp½‰´¾”êù\ÎË7xßœ¨$_ðz‘°\cbÁN¬”Ҝۖ4¬ísñ¼ËNT:Ù=N@ ¬'ÊG •aƒS&p¯ÈûAð¥PŸ¨¢ÆPåPÁ÷QK‰™ÿÌþ•™ÎcÝýëÞ7L¡‚5¨ÔÏn9KGuc"5¯“Å ’>ÖdÓkç6ªÃJŵGtõïaÞ-ÎæhÓd4ÜažmÌ5f5¬pO§O1‰Q1]$ñà\æ÷³úåw*ÆLmHÌÃa¨E×I<stŸ'¨Á`^Ò9¤eVrgö"7è ni¼çô51AèDá@"æbN!ah²·øãmô¢‹0³.g`%[„o¶ð›­Ñí™÷M¿i Ï“Ëx8º8ߢåéÅ6¾²kÄÆàiå¡Ô1¯ê$Û ÉA Ž¢(©q˜NCÑwÂò™Š7glß;Lù’{í¡‡Ê‹²8ä©Áys4þ ŒÞ\íÌÕÓÔ„SaΆÆÉåÕ´|•–1½EÍ´Ý6e7|¤ Ó~&v- /Ø.ŸÝ•Ûf:px7s³ð[ŒÞB 2Þ¯m@‘$ünž‘ì”,øãµ&Q‹vÏ£ —lO¹Â@.¶öàÑïðZxüºnæ§C°±`ë '3T”À“Â>“ ’3±ÍbËçpÎãT‡#‰r‹üÞ¢<ƒU"[Qàÿ˜>Åú†®^ [È"t¨K %‹DýÑŽÀéàÎеĿН%F„y 5{¢0K/ˆ¤ÒÀ}^Bë&”Ù—ƒgÅçü6ãê ñ§œ ‚énM®d~·H?_U6i“Þü†Ä€~ÞŽñ¥q” 53÷–ÄpÚð†tE~#*xÖN¬!Ù‡Œb61ªãRpêVŒÒ”œ›DU¾?{µœ˜´9ñ»}ÚœT¸® mäµS6’™\ö‡4 uuý\”‰ÉõÅP_l€Éø%/j¢fQÜK\~ùlìÿ 6dDKRŒ fŽÄËxRDC6ÿøO“"'™}Ž ÈÙÇ(˜>—€íËÑ1ýR,Ú¯—3ŸÐ4pýT=×h%neRÓ!ãE@7лZBr4Æ A&ýqr¦D²³ˆ‚ —hÿH=i†|60 ñˆÒÛ¢À£¤HÀ0UŸ:×=c¼OÒu2žL¹kHQ[£–”Þ‰ˆiEšËJmî²ëú”Êß”`äÎ&É“oÊ€8*V¨¼Ñ[$Â&¢ßÇ·“éK"_Àù¿ÿ:‚`„¿yßN@²Aí‘fHõd`:pÆã´Çœ¦2»µLþ3ž†J™ z×ý«Â‹í›I2€Ž‡ w»ýöŽÍÁ Çþf®«7D2)œœã&¯x%·ÉÞàzìÇc$p‚¸Ùö„<Š,P]‘;4P'¶ÄbÝõQý¼D–£›jümÊç:ÿrCWƤŸ¦&Oµ¨Ns+:‹y*ãs1c¨»úB{˜[:™`<.eW£¨“>›o|ò\mGs0C…¡A=tÜ"yô¾ÔÀt.19ÄàÌ(øŒ÷·KÍ3´ LÂp$·¹7ã6QEy‡^8ýÿþw¹úJ°C`ù#ú‹ö&£k4½hêfŒÊDà5ºø(ÿ´ÓŠûv+žF§˜Yl©^RE— MTVmÜÅ•ÆÖ†èé ;0(Ü µäE'·×´ÇÒÀ¨o߈Vзª¹yZm©Á½É£Â•BƒˆcL Þ¹Eàr@Âb¤5®¾Z§º.nÇPÖ3Óå‹u•TnR¤l ˆ¤£þ»‹)Rð<òÀfFs’³S„‚ ‘_$0kŸC&pf(Jà2dÉGD ÝM SS,)PKÐPWä°¸‘SеŠ%hЂ1ê=‚Céõ¡Å^ÿN^ðÇpÃé0(Ô;õ½naU¤˜,ÒÕq\Cž–…%uùR„.3ÑjI2ŸFx’Z –ˆ@<1V‰h:@:Ì'H‘ñ©)ª|!H-©ï"HY‹w!M=¹4U¨/‘¯÷·bQÊUߤ¢FvÂÀïÖ"¶rï„Á_|áL…KQjÚÜÒ%5o*ÿN‚[gÛ´ÎãÔ¯\ב‘å}‹= 59¿í KÚIP;<Ë^pµ·U©ÜqW"5Îz¼æ`N¶Z$Se°˜ÑÂ…‰'ßЀX]Kê3aót¼C”ŽEÕÒý+އ¡m€«G½‹©2êØ&²ìgh"+²3mÛGé5¬XX"RS8aì4écT‘î ÙMþ'ŠV$\k‰}¨ýU¬U#šý xŒ”6Ñz”€uÎä7€ø‹’ËÑm-|‰áDä÷T„îì1Z€º¤D­ˆgÊZ|çN¥o  "ÓF/•ÐG ðU%%–Ô,*X Õ·‘¶ ÿÕ• ݧ^ô.áPŸL@î~ûÒ¬º²ÿÈ©ÀCiŠC€!_ÆÃ>¢n¢Æ®grÑZ& »ŸÓÎDsÞ:ª03¸VàÛ J§rãþÕ0ùªèuÑw½[è/²î ó’Š1#¨óï#A µ¦b³É<Ѐ”6€m¦W†‘µž,cÝY:ý˜J“éèÆ˜ë\×ëß’ÆÇó¸’· YüŠ|IµqÕR.Sg¥€¨gD™DˆÎñóoŸþw²\ý?Åè_j$Kê«D‚øÌG“‰q‹°ã‘á™WQuèfVŒšÿ…¾`ÈojPÌu ´RYOg¾•Ê¡l§×b¾ÑŽ3 ¤¸ÆŒÅÅKnKŒ«kÕ?¶ñ\”̈ËÍóâh4Ä«fîªÁÙ…m »†âÙí; Ñiyvo¦½ $Yª pCeIFU,mS¶¨tÂá˜ÐØ+u_cÖ=ƒ I^^¯%M )—0» X8½;qìýƒfRn8ŸµõÝq’‰n‘p² ¤÷Ξc§ Ï‹ ;Žr¢4’Ë!A0Rç#–„F!@~ô!É÷ BÁÂÀ¯aíËII©vTH" –£«Þ9ËÀÙñeoàž¢Ëøés… š?ôãfûc•¢½Rtü©{X?Ü.E§ò—“O¥¿D-DõI1Øðãd¯Ñ.E¸{Ÿð?ÇüÏü»uÜ©f€¤·Nñ{„~Eð÷OÀÓ§¢ô^ýxVø ¼üé˜íPp§Ñ®·>ñ'âwü<½šíƒn)Ú=z·ý¡ÞB¯ÍΧYÐ{z %ç!wô¤8¯q¿Êصa6ZÛrZÐ ¹Ñ~'ÿAóƒø=}\íýƒÎ¾*²Qïn‚Q5¶Žp˜ÛÇÀ(úï êЋ20)ȶ-†+8Å%çt˜œ®Ó›Ð£A•KÉê8© ŠY­[ãÆíÁÍh] ´=ÅôaVjwöH_×¼µ¹w ? PF#½öÆn cÈÞ'ëQÖ%>ÏXÀºÁƒÆ‡Oï:ûwU …œ®³ ¼Ó}¢|:‘6äK3&Ct^\³Æ ¬c…?_eWdÐ^~]ŠÌžþžåVc^ý#kN$Ò9þÔ8ìlï IOh €ÏÒ›R/Ó˜=nS3˜Òï‡ÅŸÙMˆîX³•5z8 »‡Öè™ÁrtÏf×ìn‰f˜ýì¦æœfŠår‡|«Àáµ¹¹OÿˆÀoðïÞXÓ­:\Eð÷OY'‘~­†ÇûïÔ±üõãÇúÖÖÇRÔmÕ÷6³|7wám:ÀÙÌD1¥Æ\mºD`× Y –]žPv¤)PÝß;ž†cQñÌŠv,%»Î¦xA;ŽH‘u­4q…H©šÕÒˆùξ@¸¾ˆ ‹+\Nä« ¤6†^yùÛ’üM>"5üïÙ;¹¹e¬FØjfP²TÍ$nSœxg/Rñqÿ!>!¾ªìù5ñ¦¬ ßÛ§¶~àXïRp+ynÙFgrTF é0È¡^t„71/á¸.ú’J̤´úê4¥Èij-Âêô¾¡6ô­§Ó¾M-šú¹Ýýűš;KÜÓ/œªlј\)Ik$»Iî}¼°ðTJX#à ¤£Tn¨-m|šDåHR9O{‡´}‹‘”1’y ᤨœ­Ú¸0`¯áÅ\ âÝMì…|â`GxjP$³vò=ú™V…/{Õ‰”Âȶ›áiïƒ X¹g9Êâ§Ä¼T¤@Á“†rO¬îÜÂÁþ‹s«1Ï(Ì#µàFD˜!8ÊЈ¥ã,ž9c\Yçý B†6x´Áˆ½ìÿ’¿¡CP©de×—J«Ë–Ð1Ûå+˜Ÿý¤[±ß¼?J'Uß ­ajRXW61t¤H&ûÆD(!x³uW0é+ÂQ)I£‘þÕVJ1±ƒ¾AEIp²«&Š,àñ)ùh·Ì÷Ð9ž3›º¯áÚ…7ḛð"Õà˜—BÅ^boüÜ€jSØ2ªNÙ¢ôCFÔæ¸õ(((«œ¨+îkrÖ¨ãB)|‘Ó'²UjO%{¨ÚŽ©6™$1˜pV1RŠ0QªQ R/£iìf"³`îF'w­rü³‰›1‡B]xÉ…RÎ ñ’ Fš]£'Œ…§ÈDQ˜u¤¸¦:«¥#gÝò{Äœ/µ”dï=Wqÿ¯ˆM lë1FAÒ eç¤pÓ~hsã¸ÔÈÏKl:&̘!d/ó(hÂXT‰Ä¡½Ô³H#˜ÿcóD·´pÜ"“³ÒÚÖV¦@S3¥Â`s¶Â0Ì(¼Í Pð•ºzu/´z1cï⑽;4F–Vs@£ï#)å³࿔²'Xc2''T…¿èÓ+v  î2EóZC¿æØ\"wr±Jwr­ þ3s%S§&Ã8ZgÁ¡¸€‰9Øl`ÏÓ¼ìy:k5œæY ÷k.ÿjPÎ\ §ó­ª”x©8»Ú´ûzìënà…ìk­ßÅŸaÁž>á‚ÕP¤-šT¦_çX°§9,OŒZíP¼ÛßBUœ¦WÚ9±ü¦ù¡7ˆÑd0}W?»¥:ì ꦤE}Ott9Bõ î!ŽøëȪD¸:oàb§BžÈ½ì,ãw1z·¸½zõ*‹°¸®í]S9_f°À>E¹[ íCœÙjZoS7]½RèÐà8¯8Š>ëOvA=٩˳5xQV¶rë3KQ MU™' FÑÑ͹B2У\†€–¡äAs]³½>Ý·QGP-½/†Õ3á*• ‚ê•奂aë$ESàRT ÿ°7¾Œ)vÄo8Pd½ýÁgÇôGñ· ¢.†/&ÑÅë×°¶õ¿}ÜÀ ,ÀyÜ7™@¶ u^€l=ø´Ä@žþp]!þ2aܶEåÙ"d†”1ûÄõw<7|·ëtmW.¶+ïà¨ñs¦D^\¹÷žQ øÛߌA½‰ÊJHsRR˜Û¼ß£Zf8lÝ|=â«÷è4­G. gÄ+‘ 0&Á¬x?F4‚C==§n: ]nÏÖ.³ÊÒáµ9e)•uËi[=†j;¼Ðjm„´_*a‚ÍUÙ`RJíd®ÍÐäŠúîpMÍ-’˜G.Þå`¶ö€UƒÒ®[íT͸:4%X¹qr4±Áht£ýÞ:»]=$'…„›êeÝÿ7þÿÍ—Ëñ×GNŸ/þÿZuem­úªJùß_ÕùߟçYÄÿÿ¥;þÿS¬þ™ëÿÕújÕ]ÿkµ•ÅúŽG±õV´sÔÞPyj|÷¹ƒ·•ã¯3¢˜ÓRÁÙ¤·‹r`äࣗãÑ×é•p6òäíT/¾¤Šìáò\øô}LD°ü}ŸN<^1œ±žë[µ»LUœöÎ’úMeç]Ç Ú_2>/j—ʾ ™y3…×|o0E×qo8QŒX…r:.¼ˆ&%#ˆ¦Š(Ê`-·C'fäŒpÞ2Xó÷‰Òüäá™=.³&—SÎ&ìXËe¨»f 9W„â´`ËŠa04 p.ìi%жŽQ«äÔîU¿?—§W2°,Žž]ÓFcÔ>õßÐs.oØÑrän -'åϥϤ¹($ø ùôQüËÏåæQñ_o“½½N†…véóò_}¤ÉÑ÷ÌÁHëT[vO„`ÎÚ ú–Æ?e“à)s‚!I•c¤:ŠŽ ’÷ÈÇûöægÇIÏr6k¥ð4.—¥C.ÕIÊõ™s"&èsD1ùED\ß½ÏGî›ô¼ÕsÍ5lD¥ö£\? ¼µ˜ÀšA·‰çò¦ %:!O¹æ–R§xèõ:!áè'ŸuéÇjŠOØ}sÉ¿D*1´ý—Cã é‚\J-›Ÿâ۠㦬µqõ€Aú(ð™PSÚê}™Ô*IõûeÃÜ$Õ¢f*J×.ñ[i©¤ÓÛ}o5uhjÇoëhF[d# —^¾Mk)rÓÈ©÷/-ÞwPF«5K2|k/›ŸHIiëÿâÞõ—G¿þçÔÿ­¯WW×àû×xÿ¯V«‹ûÿ³< ýß/ý˜ú¿§Yý³Ömmmµæ¬ÿµ×+«‹õÿ¯v7ÿçv}ïCäxéÔ[»hÎ%íL õöæ1Úùë3”€'ôîI^ àêÏŸˆr¡ iéBWæ*d¢Œ 1²`¾=mk¼ÎáC¨=,pK¤;<ž‘œ‘39ΣR¤&³bh•Q` •nmbC·î¢7o£ÞàæªGØ€:C¾áµä nüô×]QÞ¢¡¢P‘¥Ã´RXNÀJ°'J„7øvÍwÎRô>ç·Ü_ŽXçÈo¤»DÆ”iJaHÍx!/`ðûÍ8¹†Ã}p§Òíõ…‹”ÎEc$”8!ÛO¡Á¨w‰q\D:R/#ÒEîRX´KgàÁW¥iUÅãéíƒûö¾§dÃÀá íå*Mñ4¹*`ݪ ÉYÝÃÐnØ­!†ýðàˆ8ÃDRT- Fý¿Ê“éø¶?Å´Dñ5´~ÎD¸Œ‡0ùsŠfó·ÉÝõÙh`¨»ß¸wÆ{ekªGRÁL_ø5,ìQ T…¿!HÃÍI]K_UK†_Fƒ/¬OI†B%ÄÊ—ž ÝzÕûkð*²3õLW5<ÏÔøŠµÁ€ 4- ?ZÈoO¬l…:?!‡…KŒ4UV5^´lù_d{ÿ“ìKîժǨ$P¬ÀüUmî·ßëúæ¨Ê†|E3ŽsFq¤ð…=ùB>Òï9d7BR6+G“lÕ²l¡» †Af©äê§Jߘ¯ŸíÔ~¦)½­ŠÚé*mfWpon?ù]»¯¼Ïò$çlÑ%NvÄ¡Ígœ[ÎPÒK•§ØÅ1L¦£ô$úXµˆàÚ&Q‰ÚñÅEÒOpáç &Jœc¢ñu›| ÎÒÖÖ9‚;\v´z˜Ña‘W/*LnÏŠxÊ\Ž{תÜe«8ZP5wóNɳfʪ Ú€Å]€©øÿÙ{ׯ4šlqøûù+êdýÖ 1‰9“÷<³*IHÀüpXDZÓσàИèÌšÿýÝ—ºwuÓ5&yÆp©®Ë®½wíÚ× T¢…“pDIr7Vé;ÖZkxì¯MÖœðx®@u}ìš’c¢+iuÆÄ“Ói8‘áŠôrZ8]ÈÓ÷ºØhBÅ‘‚š'^µ_9A]ßYÚ`UbýêUùyš>×½[‚øQ ufšCüÔ6HûÈÇ«ân,5ŠÝ3,¹ºD›Yaè¼¥…}ŠWSƬ—(fá,ŠM]'=^ºÂFõï?}ÔïÅO6@'ÓÉ‚+ eû.m{è«Pn€º–åÇÄúßfñ|Ëä*N?Wl12k”î/‡Òý[£t¿ÊÏߥ‰'ƒX;[bg<4GïɾJ2¸§Á´"Nm¥–&Þ‚Fl^!fl­M6¶µ@ÅNÿ`g` ¸vGÑ©¿i(SNØF‡™"àoŸ¬uïá¾ûÿ7ÞF«GûÙ`Ø [å–N$Ök´Aج¸ù¸²óuåŒ°ÔÆSÂs £Z¤ÇZÖæH62öý]×^fdn„ÖKÞOSÙnÜ¥Æëë]Ó¾Ô ¶Ü•-ßY-‹üyuމrõ3ð‹ý¼ìáÇd+©{£æûüf¤ãhm|¾Ùhéaì´ –´(-'EÀ9s–eó¬¿YbêoÌÜ»:ëC"ö‰Es°F*„†Ñâh}ý=%Ýœ Ìiá¤ø¾õ¾‘Y Â+F>è?°bg±œa(Ú=Z /Õ,R>\êÿ‡æn{nï߆hŸƒÈž²r™ÄöÄþbkÊ«Êön]´éø¸«œ­e2Ü ç±F"V_°6÷JdÛ^š©Ñ†Ÿ§_#kCd îÛߎÅßéç®_n;¦°8OGf(u aûÖzKû‘šÎþJàX·æÜ–=-~Vwî¬YÜa²u¸ÀßïC½ÓàêÞÙge½ÙúØ:€S“AWDWkºŠç+á“°àäïÔ?6J‹ µ\‹ßïÔ”F5à É?çŒR¸ì~}·µUa’ÑÝ»îÀƒÒdmù¶hàZ²–.”–á5)ñ¾¡ÝÕ·)²þ©G´ U7ç<ôü÷ ¹KZ¿ÛW/¯©t“´ôå)ǰÿä†v‰Ìñ#‹ %”Öౌ3¡Ê=‘!ëÓË-8Œ7Q¿ð*ÕÉ’] EŠY™º»¤úT¼ãk|eÔý2iyštîÿ> XÅ3”ú߇!~õ‡P!±ï»Èi“Œ¼œpRó®g`PûAް†5gæëq—ôHöFY}~ÄÞdYœ~ÄÞÜÆ»WyóúŒÁc˜5o/]N ÏX™1)RÃë7ƒ4dŠJú”lLb%6!Q"ÍÆQ Ql¼¶iê|È%É øpÊR‚\}ëiM]ö+ZF‘ò JÃ/Ñ÷aFª…µënïÇUß \ßöë¶ä”ž±Qļ_·p'…eV"~5=-™ÁæÖùmPùÔ5ûR¾¦ªx Dû³fJ­ýsCä‰Qƒš+ûÝÚKU‰²wql7Ug¹¯Ê©”µo»é=…øpÁ*Ö×ß=Ú…f•uèóëÁðc!nÞA„j—=,ðç¢?¿=ÝC`¡ù’E-*ž-uV†e_méž;’‡+ŽêÓ ?p¾óciß=ÑßÁ hÿ¿þñöÿ—/Wö¿y­ìÿ¿õ+`ÿ¿cê_hÿþüåVÊþÿbUÿçA^êì˲ÿ÷ŠØÿ{…ìÿ+»ÿïm÷äÝË7üÿL†ýÅI¿Û°ßû>Ã>™ÖzʦßcRË]™õ³¾cç^°¦•]ÿw´ë+Æ·xçB¦ý^–i_òž•ÙýQ›Ý³Ï®Lƒ{F¹‘ìÃteŽ_™ãïȯäOWFúÉ òf‚©¤Ei£ïݻކíès̬¹öïuž«ÌËä½ôj¥EùG­öžŒÈ½•YÜΈlm¦g²÷ù ÈKYë~Cr/ey]zSž!Ñ/´Ö-¶÷Bvà;ÍʘëeeÌ-`Ì5ÇÀʘ{ë—oÿ=K®\p&£htWv bößÚ«Úö«­-8'7áíËUü÷üVößßúåÚïƒúÑÿËçÏ_øô¿ýêÅÖŠþâÅÔžªÿÖ~Óé P•ÕÚkì•ÄQ»±;èö²èŽ|L«ý®ƒ†á€z…ÃÇ÷ÿ8Æ0r±S¼£Š r`}, Ðn`þ0Þø:E{ç:Xý»‹j4\Lº†n öÑtëÍ}x…XR÷ôò>Ë7»Ù;øͷ°€Æ`÷S“n|,®¬ä^¿¬•ÿ9Gû):š©ׄ¸°ÓÚëA*øè/»©Ù(šã±ÎcïÔI­)]ćX䫹0™NÆ7X ¢i;L¢¹¬ë‡eƒðš.ÎâhU‹tB:e'R‚8ÎàĘo¬¥„i¬H¹",ÏgÐÏN X¼’΋ wZå²”PÁ5NP‚ey±5û+Áà®D"ë¶ÑmC$_TÙ! ßtm¥PܼF`À<±rðNÀqLni¡IxÝ@ÜFq ;OÜ~±\Møt,îÅd¤‹1'âj2†eèÝRå”M)–‹ûaA<úPm¯Y¦9áYÈŽÞpEt”ãÏ„C…²$ÍH8"JÁq†ÀšO-†ÊÕ¬ø e£«SSDÚˆŽÔ×ÅðFVÁ“O+TÙ £JÛ©àb#w@¸><fi–´S徂 ©/Dz]Ý1oI}gIî!£‘M®ªW ²¡NÕzšj&’dÇ×Qª—¾ ›~zÚ·€M¿Ê}a£î_jÜš—À| a^ªÄÙ×á,† Júæí[jåi â:3s‡õj€i§þ*rìkÇ0IW_o…ŸVÅxhÁXöÚ"Iƒ?E ‘¸‡2HéÏ `ø†èÑ›²WS}#÷åumõOÝsNé.5ç£èšñîf7—D-j5Ö @’ÓYüYK_Ÿ# ÒRãé€z‚‹@Õ%–¡›R3” # ÉI÷§0ÄÄÈòîêZØ45„¨ƒƒ¥¸òºlml"·a®:u±Ëí[j 2:]•{ü7ß÷pU¬jxm¸!š÷Å“îì*™?q Žz|ÿ0t ¼~€ÂÏÌâ' 1¨WñËîL2}pÇÆœ2nȘ¦kÈù½$ÿœÍKtžHÆÃ‹Ó/¥µÆeabÖ9ÂÓÞOÞ²)DÖ'6]½&)9d„üܨ¶*þÃñÅ‹G3Þ˜kˆ‡RôD¨m*f Љ ØL}*`žçˆrt)®ç²(2,ÿ|ÁTfß fø¶ŽKʯ¨hò;úñVF#¹c¨ÕùJÌvÐu.€FÈÀG“« âq'´0šÛ5Á æV³YPJß«t›—E”›J>i!éjd÷É0N1øéSkÛ/©¯³«×Xºg±ž‡K©¡§>io¡S?C¶]æèßÍéb‰ó_!qÆù”ŠŸþvïKÿÞ‰® –b@Ð]F°5e.L›’)ôÅ7,Y”)d/AÉBË„û!ÄCmFp)ÃSqxz£®í3¸·GÄ÷KT¨½Sz.+•éB8 ’KJwÂò·j$0LB<¯È°p¯‡CÓÒM°ð’ˆEItü¡þᰜ̄Sº7™‰:_ÉL+™é‡ÈLñ®§{œJõuŠŒ½.—•u­Ô/ú´“Vn¿ÉÊS' ¾IËa:€~é¡Ó2Z¶P–ÚÊ_IFk7lËß2!Ð:Ðñ—ëûfkXj<ºŽ-ûX?¨ó]d…&» Ò;ž¸å\¡ôÈäérwÃÁžÄl‹ˆçÚ ±`ä6žja€$È×RZJ`ž^À‚V§è^:EQà0tÍju1<›kSkø*?CÃW™˜¹Û=J/€bD”<¦`…ì<>½A²†¾b²†ü+šMYxRs@Zpb;%,LÅ7I#ºG´}[>"JÚD›HBãáÀI.D_µ\ËiAàk'"·S⩜pƒÃÒ¡/%QkàÙ²–tó·2­ß—ž5¶å]•Ô2K¤!JJ,'è]Ô¾!ÔÜF†h®‚ù×6«tŸZžÃ¡ž$ w¯!B˜Õ67áµx(Íq °äóhrŠ®'Q‹ë¹æY´É‡ýï‰3ÑžïW|ÛîU‚Ò©ÚÀèôË$þ'*ÞÍ£o‡W0_DÝq ç%=ƈ ÏC¼õÎi"6†‘Ì(iÐfþÅ2¶Ã›eÑ£©ÈK'™O/­=pÎuCwØJ™GÑ)HXÞ*²~ðâ%õÆ]+¹LŸ•z²Ÿ€’Ÿ ã£ëÁ¿ã§µÿ”ÅÿꕬëŸbåÃg>B¬[„›nϼªîà ³iõü¿ž„ø¦ÅX§Ýp6«/³‘o³ú7é¦hgèG#ßtBÇR¤1‹¸˜á¶ÄÎeûõO-<2"™£Ñ]ÖA‚ž˜¹\5¸»À–pj(~U×½Z“Vg÷nV-¨îPe€ •%ݱ²8¹¢RŸxå Pº‡oëÁ¤$¯®× ¦äÿ€—0w \‹áΗÐN*Öˆû¹õ²BwÜx¦Ä¾EÂÉ&ÝÕxvî¾Xœ*¼/¶Ç­(è{ŸOȱ"s/0uChÒu!«EaÅ­R¶ üh_å/ˆ+Zµ£¸Ø\,¾ Gx,fGçñ'xÊ)ã·•Teù\e»­.2©Ñtºõn£"NÔ›þ€b²’fk·=pœÄ>çÔ¥v¡pF™#8/[å{Ò·`vöj[0.¶Ùz«>‚˜ùQ¾Ï^Wëð¨}¨Ù©wXUsï—Ù蚘Ï9С†ª¨©Çº•¼É"Áy¦(àì!ÌjPáRpE¤A(çMËY1ÏÊ]õ‚iÉ•“¨œ½UŒc­ö©ñš évŽÔäÑÌî㆛!q0p>Ȱ/ù}]›šoÛ‡ŸºïôAySç`moú ¶dG5Z°rúÐð…³Nøâ¥µVø¸ß‘ hüª"ì™þOÎLm @Ó¿åí){„´{ƒf·Ýxƒ µ¾!Þße¥Óј¿þP 2=?ó‡Óqv+oõpnwºÎêÁ LÏE×üiÉaýÜ¡–XœAŠY¸ çǪ÷ŽàTÛÝ=¤d–,ø÷à#Ðô~n(ø~wD™f[xé’îüöÓ§úÞÞ§Šèì×vóBòvßAk:×9(ÊvYÊ>¥¹ÛlAÁí5²Û'þ± Ð߯ð‹2„ØI®œ$>*½— ô’‰«PXâjaiïJB+¡5HIÅns(=Zׄe‹…k‹j âksr–z^½[WïäÃǤ@P¿â \¹À&—Wl5µ´Ü]3[”Ô¤ad¥Šj¿SBªŽØ ¿»ç´iF vÚR%uRÒ²ä$!Q¡qœ†Ä¤“ÛÎ9b¾ ÕPI­©ïOBOÂk6)õ+È´¡_4õk棙߻1?ôô~9Òžip¢¸"¢µ¡J6Îé6ˆñ¶ÂÛ§7í4*³‹V¸¡®ü±3HĆN¦€€}ßÇù?ÿÀÄᘧ·‚>¢”†—ÚˆýÀR˜bK¤?¼¹ŒRɆ8åž”'k§„Ó|±5²]óòØd ¯+¨æç:øhg>‡ÿJœl¦ÂYiÊ:zð4é;“,ùò¬ÓÙ†hæYt§fž3qû´,¥bõËΟ¢eó|ŽfEM©äà…¦_¥¨ï—pæ:.7oÂé³3ý×ëoz½Þk¢rSP TV©æá±Fûìd™2h˜N.%dÌ·—)€úŽÑX0· ’Ê!œ•”Ù?íe<&¹`àÔuX|°p²«þ<öYég—:ܳÛaü6Ýó›1ùàf¢ RžY eF”jxô>Ÿ®j¥èœÚ¨îö:.doþqéÀþ–¤îˆ¦â7S{G—Ú¥`C.üÅáM™3UH¢{ëQoª¼WÂBý©´r 1kxZÇ¢¡¬‘‚uǼêŠRJIŸ2<è‚]”'»œÀ3~(ÌüU#•´2¿Ç”0*E™!߈0ò(qKOÖH:ýr;BÏgFâqyЗèô/Á6¶kÎ0â>²þQöÜtv ›1sš]Dèu6“ï—%¯[›xÐ9YñQ-ѦqD&Ò¬¶¿gÓŽÚŒGdhV÷ÆZj¡€ÎUý…ñŸ" )À !“xÍŒš0‡uñºÞv­ueõÆ\r.y{n”Áœ5Ù[ê"MñÙûÐw‘²}-¡·8‹ð·»ô·Ö¹©à? ɘú<±ÑÅÓKüDê%Ü`ã_9OŠ"çÉ"Z8)B ·®(-X Æû&î,G Ô)áCqq·Y5ýʺ´êWþý4=ÅŸ`Oî‘` 4hË6”éí{R€`ysèX ôêæxm\Çäñy:ÿb¢éØ#ß6â¢Ä%zZ²K{çþ|E}¸OĨGRvñq4Gסó)ºJ£!z›:Èœ8Ò;.µpÉ©' “cÂ.‹·‡ÝC±½½X¤k—‹¶«ö–9+ÀG„(ÀTnkõ¹;œG”Úá ®±ïðH¢Z>”ŸTÑ}b²–ˆ³W¯€¼Ñ}¿ÑkbE @>žžJ!¯`Û>Ï@¶ÖÙ#çt2_Б2fl΋EÈ9cñ™›æy~fh;ÖÈŸ˜ ¨®¾…£¦Øp•ûì}Êv…xmÍü`‚ØÐ²XÙÛ›óËy+„k*ÇZîÐ|â¡OÔÐþÈ>DäPY0þQìÿãˆü·©þ–jã;Ð/©2^^ék˜Š¯>ÌÐ2::•,†My©¤~j'¤ÇÒyó]\Êß÷|”‘T„ô­rÞêRúÕšnɉSÝ…êq”U”T÷v¶U“þWªÃ&as1½×tzi‚ÏÚï:f-^ ¿œÇ*ëû‚—“ÿýK4¼øz×Õ‹æQÛ|ñ¢¶]£ú¿›Û«ú¿óZåÿ­_Vþ÷{¢þEô¿µ]{¾íÑÿ‹ííç+úˆS»—ÿý %q|´Èu¿÷ÞÕèÓ#çÝÛ]òSœCÓ~ñæ[?{ó÷W°¤­ÍÚæÂud,-§_!‡y¨¦(#âê>”è|—±­/q°Ñ20xfÕïEéÀîî-Ú|:}”©U†éĺ/mÈk’ÎÑëêHnÄë?Äp|ùeHâ{¥øk”â?Gsþò¦\á‡äÍ [sšlhAa¸ ‡.TÄ5}Ϲx`ƒ­sÈ#v2Aô™ˆä(C†ä<å")<òLyþÁûËY|ÇðøF§]>•N&É¢•)­;E4ÃÐbxŽ© ¬ ‘*d„×J»¦/ž*nͤ–ĦxDÑl~5ÃüÃo°ët?ÆHH\N©õ´FÛ5/d†d3ªŽJ¯Êéat#Nk‚™/^Üu5؃ÌV‰WÏãéé_É|vu:Ç|›ÑŒ>b œGØÏ±»¢ûìêçé8ÆÔ¦7OxvÖ‡h67+©b [lE«LV ”îð jx1âò‚«‚ÁìO¾NÇ_9X<‘Q‘‰4TÙ ¾ ¿FFó‹yXif¦«‰ŠÍ 'ò–xŽDˆ(×ä—II­´PW†1b’K 有±•ã”_Ì!DZRè«—}—´S5‹Î@“SÊ/ãôÊ5£_4£?Øëèøèˆ¸Î!Fž™9†¯ûÝ„^yUó'°øÉÁâ>'p<‘y9Žâ´°A~­{~™mmY{š—íÚNAmuÔ¬Ãà8 «…fJLJðâæ­W5cÎüœ;oæ˜ÌK ŽÎ?o„‰ °ô½æA£Õi¶„tË­ÈŠ^Í>…‹¿‡;ïü¿òb-ö¼tð]¯Ñ´âưeǸåŒ5 Œ×ܯÓ>²Az¤e£ä(@ŽBå:Í·äpÙ€ö˜cæDFМ¸mÔ·éF2ï×H¸ÔfÖqfå Òä2)¬Do¹5%±v¼Ó ç_÷—n»mË^yzIÑ„tS+‰z}lf´Þò[ƒˆíÉsm©™ã¼ôŸDq}²†zx Ÿ÷€_[AÐ TtŸ$Û(“V1×8ø(ÖÒ%Á}“¦íEð«™}Þ.*æ”ÔF°òÔу ?Ó%¿#nX¦,‘°_"Ã,‹óÿV=my<ô„ÙC¿D2ýËå4f­ ÉÙ¨dâ6âo›û¡ç!‚ÿˆMáÈÂv“ iØ£àýì!ú¡!úap㲉• T²Næ1ªvä];CÍd”P²sGVÕå|f6ýf€ÆYÁ§á\\\]˜(UÕŒ´^ë|Шù¾ÁTEµŠn‚ÒÃRëÿ¶Êæ€s਒%ifÑåxxÊÚgh[ÿ¼Š(ŸªÎ—Åœ&ºž‚ 7ž£oåÃÒ2èÙô%_ªì;œF×-Ê]ªJ´Áú £pÛôñ¨Ük)ú™ô-ä¶äq±åbY©/’Ê©/¦Ÿ,X¾gX @êgºæiÿ]ÕìN†Íð“u {&:&8¬ó¥¾-L#$YC¾Åù+2ÑÌÍÀ¯‚Å,ã4S'O­¬ˆ#o¡æ}ð<³^%4¼wö€\Ripk_RÁS>ÜÔ»§ u9mÙ{y; ôðÓtÀÓ|šáPVtܯ Œ9q¤×v"Í åɳފ…ù©!KÁŸ§Â:SÂSMQäŠýô<è÷!1q;ôû0韃ÙTâ’çJ„z|ìë=ÞŽ>ôš«ý¬DÛË£ZNøC„’‚ªX‰_÷ Åþ(\™êµ’ÒVln%¼=:6·:,Rßþ lΙ¦V‚òGO,Ct´Û°™³Š¾yô//þg†Yä§wP,þçå‹WÏ_@Šÿyõ¼¶òÿ×*þç·~9ñ?÷Bý‹è¿öb»öܧÿ—[«øŸy©3½¾/Þ·v»è¬Êg9§y޵Àd †Ÿ‚p7?H¾vëGGû}å邹*¢ÿªýìÁAÚ­êo ^Ú/Șm¹ü®•Ô¸i¢–DT‰¤€pËÄ …|’Ïí(¡E!EuvNy#?"–/2Ú%nÛ6Íœó"Ž„p V†}hoK»lQ z™ì‚s.¬cI‰ î–U9¤]F2š4;ƒæˆèYù!"z›×•ÛÖŒY;^{ÉaLÄÅ8bÇqªå3E£ÿÏn¾Í÷­øˆTsãÉÍÐu"ÆÀm=£r0RRq5ª²Ë-9$¸…átDŽòwÔȘÂ~Þ¨Ù…ñatq<ã4‹C¶6>ßl´ô0ºó|ý®@à¸á[áUîæŒ.ô5˜€5õ7KLý™;ŽKRq‡ÜNåÌ÷LY8a„>=¦]E¦Ÿµ¯²¬ÑzŒAûè¿-‘™8Ùî»F·ý¦jÃâÍ÷ÁâMUö„R} ÿ¼ ‡ÒÙØ©b¨’î*@0 L$ŠÈÇ)VBVØ .Yy7­Ù5þß»*âBæ‘ ’¼5ñ؂Ŧ¸4³ímžMïTÈ¢R·«&‹¿ÓÏ]¿~Uàþ ™ÅHÆ(„Ô[ë-L¨³Ù–=-~Vwî&áª8Á>Ô; ®F•}Õ›­­8½0REtµò+p«ßŠ»&ódéØ]pÚvê¥EÕE^ºyîwêJðFæŸsF)\Ãd¿¾ÛÚª0Áv*Ò¯óœ˜U©Çì±|/U>\¡F' ÏôU6ÎþûŸ¬7§Ý‡sÄúŠ,+mm“wN@Öõl ·ÈÛÞ¼d!°=d»Íþ‹ÛnÆm0û®m Døîõ=d»M\„ŠŠð™¾wðÔ<ät¹¼ ᫬ý¡by U™Âè%GÁœø¼ÍáIFK‡(ߩ㰶iò„Ê%É4| ¢Pþ=}ëiMi'*Zø“‚"Š`¦t¬¿’úWX»Îžé¦8à»ß ^iÚ~ê× EÌûu wRXf%TÓ 6dÞq¡8€3ʬðcŽ‚“ÁÖJ숼̲j¤ý»©µ—J$mCqh7UQ©sÍI)œµ/»é=…ølÁ*Ö×ß=Ú…üf(—N^þ°îÏE~{(º‡©`<_ˆ¦ sÅq¥ªfÆ—3º¢úZR÷ÔØ) d ><@àÇÒ^z¢?ÆY"hÿ¿þñöÿ—«üŸóZÙÿëWÀþÇÔ¿Ðþÿ¼¶™¶ÿ¿Xùÿ<ÈKFYöÿ^û^]fóZÙýWvÿeìþ?“]qÑï5ë÷¾Ï¬Oö½ž²è÷}ÔjWFýcÔw,Ù Ö´²ê‡ÅOgÕ/šš0lØïeö%ѯŒî+£ûÊèþpF÷Ÿ×ÌÞKÛ~°™½÷ØÍìö(wacϱõåáÖub‚\}©X`ëË5&ã1’—†èÒ«½D—ÞµŸÂZÚ[YKÅÊZú¸MW ­¥½”‘qi?C²^hºZlòì…Lžw:›ßlóWvË"vKÃÆ¯Ýrõº›—oÿ=K®ÜÃ&£htWv åë?¾ª½x¹²ÿ<Èkeÿý­_®ý÷>¨ý¿ÜÚ~éÓÿö«[+úˆS{ªþcûM§7@[k¯±WGíÆ®,­­Á­ö»Ž¶ D±Ð+9~¸ßøÇ1F‹üe§hGT°o GWT÷¢às;­½Î€oËú#jV¹2uÑ%aýjœJЭ7÷áY”¡`ÝwÐË»¢Ý´es±w28†›oabÁî§&\0 ö!eÞU¥Í¯_Ö¨,¢‰ž–å éGÓ±¡ðldS$¦p[©K–ß—To㸭@w_.eüXƒÿN‰a‡²áÔ/1p9ž¿Ñ‘.{}ù†9Å¢„²1𕀋by¥³p8\InsÁG,Ö#]G‡ˆ/|¤×‚6ûRÑ!dDó)RÜM2.¤Ó‚o²Gª“•T©\èõ|6ܸÄ[o¢k|¥R‡ð "v‚”&É6qÊ’r¥T ìoX2‰Q7êDWERÓã"¦X5Ñ)*Ê lN[rq½²LN28'ê¨9Ñ%°=ê-¿á"¬ùU$˜F‘™þÅð+>`º|¨ÿœ£µˆ@ÍÔ€krPAÁÇÙlj6rÍÜN9WÑš’bˆ5d¸Þš “)Ö®œE Ö+Ekv˜DsY~ ®¡zBœÅÑx¤*}9óJOª˜GŠæ\ŒÃa·ŽW‚ ­ñÑ(F= ã’ܔϑ®lëíž6wª“£EÿL™ó›p|À$JGÊ¿æHú×hÆKS³Å?ˆµz¼tbôt±õQðËþ²7½úœú¥‰¿4'£ø<šL¯ïW4•­5°Iiäz숼º/ÇdbK>‹Ï¿Ì7¾À¦m`í]gð¬§îDvÒŽCÞø÷ã?´p‘wáF´ÌJ7ÑwC¦˜SQx˜š1„„­ÔÌrÓy0j#õÅãø³¬Êó ‡ÂzÑÀ&ëÀ(©T¥¬Þ*»Á“A—Päƒþò›´•j£œ3–IGìDÔ§Ó0æùøÆZJ˜”Šä@‘+Âú¡ øhŒ‡ÅK i߸‘*§§„*Or‚,Ò­Ùã ¯pÝ&YÀ’ä~‘|QE’†p&›šÖJ_hvÀ€yâ^á Çä ‘‰‘MtaHX¢)JEØyâö‹Å•h§C Ü‹ÉH—fššŒaz·TquS¸*A¢Â ô¡*Ú^²h{³!éàŠèÄÄŸ©téP‘7 ŽˆRp„"°æS‹orM:~ "ËPš’òFB£¾.†7²¨|ZAРÊNUòxÕN i¼s ÀÜá©Ð0Ks—*÷ä-}!Òƒèú³…Ê›‡ñbb¯Ó=`4Ê¥ö*AþÚ©ZOSAYb],êR½ôm€9«¹5ÀúUî+0uCRƒä–êFფoY–U1]s‡128`ËúêN!ûa¼Eã#ÑŸâl6½°ý5­ÂµÄeQº¬%¼9Æe´ßògtn$e.ßÖG0|³_‰2>¥ÖÀ2(þvR¦Zð©Y«ª¯RšuŠ´+n5Sî¥'†“;ˆ—½ýfk€€²¤-Väïïž:°˜kŒüÓ¾¡#!W”R™ÔÝE®/Úù¸³šÂß±®Ÿì)t×JÂÏl©g2/[‰Y®{Y¾4´!¾k·ªGµ™oýQm@Gñ¨Â‡-SƒFÐx‚8Åçõ&«J¦Îb¸1¤¯Â¾ÉXž»Éå”پä55ÖS¹‹Ö¥hˆ‡ë×5ÂO+çe<24ã`Ô{íÁ ¨cð§(!f÷PZ)ýY´ß=zSvki‹ÜWh¸êž{tJ"2¨éäE×L8ñùÍ%‘ZµätŽ_øP DO¯Ôqª±žæ” GÂ4Ž@Þ`¯&ÝŸ>ì=íûÎî,ž%sžBÔUþÄ•×ekc¹­sÕ©‹]nßòêžÑùë ¬Üc’¼ù¶`ˆ«â»ÿkÃ"ÑÏ@<éή’ù3-×@(À÷OC§pLPø™ùþ$ÁËflß¶ô+Ç wlÌÉ醌iº6§ßKòÏÙ¼4A/Žd<¼8ýRZk\&ñ&f.<í-ñä-+A¸}bÓÕk™’X¨Ò¶Ñ5Uü!‡ã‹)–kf¼1W}Õ-P ¶©84@'rde3õ©€yž#ÊÑ-5ºžË2ò°üóYS™}'ø°•NRÒEÍßÑ爷2ÉC5ËWâAroéd‚õø}.D;{7_kß¿‘fGK C•}i€ÜF,¤ÞHAúÞ¥–Üí¯ë}rnp†˜@ößñûP¼ÙD å\zéäÿþ½QûO8N‘¿¢OeV¾M/R ^ÂP—3Ô{®Ñmh¤¤´“ªßz?š‹,ͱ^¯H©¢Ã%º^-rAyÏq5!f;èb WE#yà£ÉÕñ¸ZÍíš`s«Ù,(¥€UÊÆË"ÚF%4È”ôU¤ûdú¦x|Œœµí—Ô×ÙÕ º1*Qº‘±Zž‡ë饢©SuQ C ^FØÍéb ¡@av†P!Š‹vïKÈÞ‰.! –b@Ð]F°5åŠÖ9‚†¾7‡Å‚‚†ì%(nhAƒ"„x¨ .ex #OoÔ­×þˆƒÒQ½]?蔞Ë*Veº:N‚4”R½°¤® CÏ+2í\àIj©6X"ñÄ¢$:Ñ €pXN"“Ø} RÔùJZ R?Drˆw%MÝ»4Uª¯Shîu¹¬äªk¥¨Ñ§´Eû½HVž:aðMZ8ÓyôKܲ%µÔVþJ‚[»aÛ—‰Á֑ƈ¿ˆòiã2,5] Ç–­T/2b"£]UêOÜrPjhòZ¹»á`Ob6eÄs×ü•=r Oµ0 @d€k)}&0O/œBëXt/¿¢(p::SQó¹¶ô¸v³ð3´›•Y€™Ë±Ý£ô(HDÉcÚ%V(€ÁÎãÓ«ñ$kè+&cÊ¿¢Ù”…'5¤5'¶SÂÂT|“4¢{D ¹åÉ¡¤M4©$€îáÀI.D_µ\ËiAàk'"·Ó¶[žpƒãâ¡/%QkàÙ²–ô!ó·2m þ/¶}^•ÔGK?¡!JJ,'è]ÔÔÜF†hí‚ù×6«tŸZžÃ¡ž$ w¯!B˜Õ67Ýù¥9.–|MNÑA!jq=)bÄÿ’3Ñð¿'ÎD{¾\edðF«7,Em`túeÿUôæÑ·Ã+˜/¢î8†ó’cDÐç!ÞG‚ê´ßÛÒHæ”´h3ÿbY^ÛáͲèÎÑéGäK“̧—Ö8纡;l¥,’£è$,oY?ø ñ’z㮕\¦ÏJ½ÙO@IÈÛ‡ÎñÑõàßñÓÚÊâõJÖõO±òÚá3M&Ö-ÂM´ƒg^U÷a†Ù´zþ_ žB|Ó‹b¬ÓžC›Õ—ÙÈ·Yý›t&´3ô£‘o:¡ã )Ò˜E\L‚p[b°ýú§ž‹ ‘ÌÑf/Fë AÇÊ\®Ü]`K85?È(ìÞ­I«³{7«– Tw¨2@†Ê’ŒîXÙ¦Î\Q©ÏNGhVº‡oëÁ¤$¯®× ¦äb—0w \‹áΗÐN*Öˆû¹õ²BwÜx¦Ä¾EÂÉ&Êxvî¾Xœ*¼/¶¬(躟OÈ/#s/0çDhÒó!,FaÅ­rÆ üh_凈+Zµ£3ÈØ°,¾ Gx,fGçñ'xÊ)ã·?0« :ÔaÒ‘V—s»TDoÐéÖ»Š8‘oøá oð€ü©™"àüÛÿ€îÂð§ÐDmàÝ}þ§ÇÿìÁ¿{½v½›3ÔÞ þŽþ‘Õ#ø~}"Ÿ>¨çå 4ôÈ|ÓlÕ÷ü|ßgwÓ8êTÄ»ã·õ} ÌÝmÿñ€‡85B@É&ÅóÝÁxÜjÁ¶`vöjã0j·Ùz«>‚˜ùqáV¶Ú‡ú‘z§1€U5÷Žq™^·]7Ÿs C U1;R5_ú’7Y$8o£œ=„Y *\*ÎÄIQPÎÝYî.nÁèr¤ë)gï£R«}@Úº¦Â­Ýƒ#õ¹d4³{ààå&F4 œ²ìK~ŸÝ‹5àQóãàmûðS÷~ !oê1îMŸ Ÿ ¤ÕhÁfÈéCÃÎ:á‹—ÖZáãv~G, ñ«Š°gú?93µMÿ–·§ì"Òî šÝvã ‚Ôú†X|—=”nL'`þøC-@Êô<üÌBNÇÙ­¼ÕÃñÜé:«g+0=]ó§%‡aôs‡Zbq)"Xs¿žŸòS5È™HálaõÞœ¢»»‡ôÌÿ|æ²_‡¾ä‰¦Ùžºê=¿ýô©¾·÷)[NSÙ§g¿~°û.°ä[¥1Ã*œ)ŒršÁŸf+Ðù¯]M S›ède/»ÐQõ²õ’ÐjiM0Rv±ÛJÙ5aYgá"£š‚@Ûœœ¥žWïÖÕ;ùð1©Ô¯x'W>µÉåÛk‹®Ùp-IA× ¹%!ý—µn&B¡óŸísþ37Ç Iµ˜ÅŠ ®ÄÍ„œ$-é¦ÇVSJ±#?˜Ü[hÔ6=ØR0üîʦMÞiK£”DHS““±EEÝqΓºMO;” Å|Aò²ÿ ¢Sߟ„Ÿ„Ú`HêW±C¿á>ë×ÌG3¿w'b~èéýr„OÓàD7p%VkC•\o¥é³F>ÄK•ÌÕ&¯v¶•GëÿPuÿ‡Ø$bCHïXÀþ¾oä|¨`¬z}}®Dè÷¿¾þNÚØ‘ô€INµ:¢DêÌ›Ë(•w‰“ááAIÁvJ8Í÷˜Yã€qQó’þd ¯+PççZ:øhå_m¿WÚ¨‘Ù\%cïÛóž<ü?œ§ÌÊ–CkEfkŸ %uIΘupžÎJ³¶‚” ¦rNëÒ­¦„3*›àþ%'&™Èëoz½ÞkB[rnPjWŽ©æ¡› ãŠýýsÒeilIçË2âÛË@] Çha˜[n(*ÉÜýI}LVD*˜§ù”BzŠ%5FÆ÷{¡$‹ò¿F¥HC‰üàü ¥Ž~v…¼=»Æls;¿Ò ´Té´Â„aÖ@©¥æ{†³I×—Ò„¸guAt"›…ËÞü#Ìü-IõMÅo¦6‹&.PÁ†\‚‹¨2gªPB÷Ö£ÞT¡­4(„…ú!Òzå>bÖð´Ž¥† Öó*JÙ!ÍûyØû(Ï[9…güP–TÞÌüS"N¨´d†Ô!Â裄 =Y#x„ËíAŸ9Äå9_¢Ó¿Øøu:Ãàùx¬ò†¸ºÎ`òü²Äßuk_m^­·öªÞ¡†j2ýˆ#¡pnàôTzö éhÓxDSu¿alE¡ÊSÁá\Å_˜…àÖÒð~“I™fFM˜Ã—xeo»ÖʲzHH 9Ò{Þ.¤eк³&{sB]¤‰9»c\µ~%û—í[½-À2„¿µØ£¿µÎÅÿYHŸÔç‰.žîXâ'’%¡›þÈyR9OÑÂIZ¸ÝpÅiA/8—N–£ê”P¡¸¸Û¬{‘~eÝõ+ÿ:˜žâÏ@®'÷F®64hË6”éí{R€`ysè¼ ôšÉßÜND@iZ)9†áêa»z’Ñ‘ìçßvÅööv`&f#3ˆ)p÷šxªçãSQK ¹åYóu6"¯"«ó£& È+¶¢$%§`Z”‘öGcw´är„Œœ >j¤KæFÊ—JºâUèî‰WÏÐm=Ü›Ö@S—êyuuÝëûù€R9¡ÕçîpvQVƒ'¸FIJÃ#ÉÖ{ô¡ü¤Š¦ÿÉZ"Î^½ßÈõ¼Ñk•1Œç¦’«+˜v Ï3ùƃuö&9ÌÅtŒÙyØðb (ç˜\|d¤IÖOºìGþº«Èáê[à•µÐf{y¸Þ§l3€Úi"µõL”jbÃÈî†Ù| gäLh+o>œäk¹ù°<Ïó9ÉšÁ!ó*XÃâ…Ä?Ž€øÇ¢•\R%¹ŒRQò_-Ô%š²¸9%±c&.+;!ŒNJïâOþ^ ¢¬r¶æì/Æ^­àåR3Îéé®Lw¬Ìwñ–4=cróñÊtp lfµšN/M4Uû]ÇÌÝËÇïW¿¸·$ë~þï˯ç³ow\vùüß/·Ÿ¯òÿ>Ìk•ÿû·~¹ù¿ïƒúÑÿÖf $Eþ_l½XÑÿC¼Ôq¨ÿ|ôñmû“%)páŒ"Ði‰1õZ®æó*=u N¿Bzj+û¨êwaÍg/u`¼K­Å³”;Ô2õ~²©Ì-îlEŸ]Æ_§sq>›~›‘‘Bø,…ªÔËÏèßã2‡'<«’¹ÉÈœ„O8p%æ|šU+ û¹¸9ÔÄ:Ôd¸ùðs<Æ yÚ?ö¢”L°\É»E£²‰‡;UI/§Ó™ yŽ“©¸ˆ†“D‡Ÿa:Ž£W±Â½Sé(*VZD#’Á^®&^ÀU!ë`>\]8sT}¦¦& ÞÏ;~· ¤P5Ã3Šê€3™i“žÅ0÷ë!&ñt2òîîw ®ÛM²k­‹;YÕèþ±Yu£ÝË´þáAJD*>éü§*††JP“Wð1ýåóhaê£F»âøvÐÉs Ï*MîÕF÷·õ‰NÑâû¼¢i#aYyº5.òcÕ3²xs°,þLýtÍÌ¥ÿ°Í>)ó…jc=éèµÝTkœÏ9­Õ®°@E åWF+ ¤iº²K8Ó’§ƒ|ëðökøÿ9lÙÕ(’)a0GÒ™‡}Õ­ÖOYá·.ßÒgCß0ƒöcÉÇ7ÖaŠÑ¿2®ãYu!ÔRÆNî$êI"渹‚ž]Íè¹/гf˜D®3¼Üû@Áê÷! ®á{ç{ ÇÖS†$yPÙÅ”IZqZ¥œªÔï u±¸`r~ý輾Ϭõ™¹@q+ôûXv‰®á¥5ý†¶e—Ï}Ä)Ò­Ü‘e ˳””Q~¼Y›E*c[o)‘í8zFN7–¬”‚²>Àç´…û ÐÅ2_ÆJþ–|ÀZẠÿWš_Ƈl .9®P)Бö¯vÛ£üÆGÁòã"ËcÂ0™½~HÄ¢ˆ6E|:{¦ÿ‚7òƒØð\ ˆ xÛ°u½•³ ™ûàÁw÷Рáþ¸À‹¡kÁq#åA!î’¦ž/ÿžÖæ…:§'L÷ü±ØVåÍûC‘y«½ÞJ±JýÁ‰Ô‘š3Éè«UœºýIýZDÌ0ö]wB^(Ë‘M!ÜɨY/î’>¸bkAè^ISŠ e©\3ÜúâyÏ*xLxq2jSN ‹éth“)üLgIQDS‘«ÏûŽÙ‰[krœëöt-O“3uðìœ`*­O¢€9êó™£+ {Õf`˜¯ŠPÞr./úWæ(áÛæ²;ÓòÞ¼ÙV¯e_Žÿß8ž >G³Ù÷ÿ{¹½òÿ{˜×Êÿï·~Yþ÷Dý éûùËšOÿÏ_®üÿäÅÔÞ9Þiw›­†ãã.ØÉý¤"KÁ»Žî+_¾b¯_Ö—/ì­§Ðe7½S†Œ´¸+ÔȘ ú¤¤Ì´ÏÖÌ4OpÅSw=ëµ3^ñÀ%ÛÒõs…0ý/´ÖIÞ¨Ÿ`9£‘(µNžÖÊë:éȰ¢x‚éà1…ÜRšÊôóD{"ÖÍP—M̈>Ãs¬§3×¹ÔÆòB®"¶/)2¸•® _¸t¼Ðe9òKÇ«m±¶ Ë0ƒ%V‹ÝP}U9 †²p…šÖÞáñÎ~ƒR5;èÆp–J—8VAkªô²™®Ü½¶ïÂR·ˆõºX‡rkãjKÍQø“´T™“ MC®Æ¢MU£ ? L–PÛ'ŒÜ ¥þR$k´4`ì4÷Tµå©óhv–\¢ëy4ÁôNgºJ­ü‡˜•Y;§”†‘%"*-–älÎCù¦X»Qօܳ‡I€¿ï†}ÊîÄ ìû}ÕdâÎÌ…/ü½þ¦QÌ}Ìö @énÜÐv©9wé9woå„&yĈ8r+Ø}ŽìÞØß”>Òþ°R9†_Žþïr:ð‹ÁéݪŠéÿ^¾xõü4 ûÿ«—ÏW÷ÿy­ô¿õËÒÿÝõ/¢ÿÚ‹çÏ·}ú‡+úˆS{:þ÷è ìZÀéÐß]ø¯~t´ß/ÿ+ã8Ñj Â÷rÑÀµŸ]ƒX¿œÅc±µ¹ù·… /í—Ô ê KÓ¯ ˆJ8l>Ô;95üêÍÖÇÖ˜¯RXé ·Í>Ÿ2‚lytÐ-Ȇѩl”¤Öÿœ3JáBNûõÝV`DFÑ©ˆ^£½³_¿+µ0;ÀÝð­Â‚®âH®¤AªÈÆÓM#ßqåN¥žl‚Ô¸@,°¬ñ©|n—A|N—`J=J öx'Kb͙ш­²f…nî'È3Ã¥’Óš"HºÒ1×@âÆœ²Ø÷ûU‰§¯O/·€™˜YXYeù°¦Ô¹¬£uº°:’ÇEF’­Pnú?éŽñïS+Îô}…«&ˆg(˜¾/ê¢/‡jfÅ„SA­Ë ,Qð }ˆõYVÚ­¾mGŸûÞë ·HoÎ@ªÌØ ²ÝfÿÅm7ã6˜}Wȶ"|÷ú²¹VŸ\ŧÉ,AhçÛlË,LüŸÁÜþÁSóÓåòœÖ^NRARý†N‹UUž';£äñ(¯Ÿ·9< péãÅ>uÖ6M~k¹$™($òDRNú5¥1¨hÉ;ª°f%Û(Ñ÷áCRÿ kßR¿º¹Ê8ÙÏ Þ¤Ú~ªòœlë6Š˜÷ëÌÊW«¦>þlÈÌF%SUªøG‡È35«œ)d&BWcìÿ.” aÄ›ÝT©¸B 5'í}Ö^ì¦÷A⪫X_÷hò ™Èųû§d.úóÛCÑ=Fæ¦vœJÞ§´/VC_Eéž’Ó*âè‚áCNz~ÌÏ™meÔ^ý¾‚öÿëmÿ߆oWö¿y­ìÿ¿õ+`ÿ¿cê_hÿòßJÙÿ··Wôÿ/utfÙÿ{¹öÿžLÎwR¯•Ýé×oj÷4v}@ðöýïµë÷¾Ï®O&Æž2é÷7ÔjÙj¸Ê†ýЦüŸ!eô¯jËW4¾&!s~/Ëœ/élejÿ‘¦öŠm&_Æà¾2©¯Lê?Ò¤Þ{t&õÞc7©Û£Ü…==Ç®—kp[G pq2f±À®—k8,>Æc2/ Ñ¥W{ ˆ.½k?…e´·²ŒŠ•eôñ™¬ZF{)ƒâÒ`~†¤¼ÐdµØ¼Ù ™7ït6¿Á†¯l”El”†]ÿ6Jßþçf¬¸›1–Ïÿ÷ª¶½Šÿ{˜×Êþ÷[¿\ûß}Pÿ"ú¹µU{áÑÿö«í•ýÿA^Lí^þ?8ÉÞtzÔµö{% tûGбrJ@i È¡—9|¸ßøÇ1Eïàw;˜e©`/û{}Î7€9ÃDxëé}ŸÛiíu|¡ÓQÈy·Š.ótáTúƒn½¹Ïâñ²S÷ôò®h7mÙ\ì Ž¡Çæ[˜Xc°û© w ‚}Hqm•ޱÀë—5ª†TÑnådIhD?š‚ mg#›"1…ÛêF¿tø¶¤zÇm¯ûr)ã ¾;% ~ÈB¿Äã€nL4Iïöúò ³‚á”Þ’{b®¡øYiÁ,öU’{Xð‹õHA“uàDÀ*@‘IDIÜAWržO‘œn’yt!Ö¾ÉIê2š¡¡ ­} t̆—xK¢`^=ì„êÃ1M&n%hüÅË~§nz •^¤Útrz„AT‘:Ñæä@Ycm¶Äõâ:ä$ƒs¢ŽšLV«u£ÞŒ²òYó«H0"3ý‹á5fÃÜl~ÖsŽÖPt".çH¨ŽkrPAÁÇÙlj6r+ãÚp«ŠÖ”.ÆT›kM¸0™Nàr?‹€qÓ,¨Ã$šÏqÓ¦^›ÅYG‰Ükg^éIóHÐl‰q8l0î\ÂÀØÊ{KND£ï÷ŒKrS>sš74ïz»'ìš×1>S€›p6À$JGÊ¿âHúWh®KS³Å?ˆµzl™4‚ÆÄ)>¯‡0Ù¹ìåëòN§¯¾ÙPž»Éå”پä55ÖS¹‹Ödˆ‡ë×V]÷àÓÊk Í8õ^{°êü)JˆÙ=”VJVí7DÞ”ËnóÜWh¸êž{t ¾3¨éäE×L”ìùæ’HH­ÆÚHr:‹?ë$ÝŸ# åèGáé @=ÁlШ·»ºdhÏ"¬qr±z«?}Ø!zÚwœÝYnŸØtõš@¦$–2y£×©øCÇSXài4Cà& è ª» @mSqhÊ+nËÊfêSó¢½›¯µŸ×H³£%¡Êþ@n#Ro ¤ ‘:ÆÔƒ;£}6`½OÎ ÎHÂ>~Š7#›¨¡<€K/üß¿7jÿ©‡À)òWô©ÌŠ®éE 4ÃKêr†:&À5º ””vRõ[ïGsq‚•Öë)Utø¡DžIÓoÈå=ÇÕ:˜í ‹ (\ä&WÄãNha4·k‚Ì­f³ ”²S)ö.‹hö”Ð ó ÒTGî“õ˜ð1R&Ö¶_R_gW3ª«Ôt#c=×+ÒDR]þê¢@†¼Œ<°›ÓÅBÂì ¡ (B ìÞ— ¼1\B&,Å€ »Œ`kÊ\½'%hè{sXÜ((hÈ^‚â†4ˆ Bˆ‡ÊàR†§0âðôFÝúgpíè0(ÕÛõƒNé¹,"khi(¥zaI]5r žË"¨€“ÔRm°Dâ‰EIt&¢Æá°œ Eæ§û¤¨ó• µ¤~ˆ åïJšºwiªT_§˜ÌërYÉU×JQ£O;i÷õ{‘¬ºü;~ZûOYü¯^ɺþ)V2|æ£ÉĺE¸IMðÌ«ê>Ì0›VÏÿ‹4ˆozQ^uÞÍêËläÛ¬þM:nÚúÑÈ7Ðq€ƒiÌ".]ö•Ý­öëŸZx.*dD2G›½<­ƒ=s¹jpw-áÔPü £°{´&­ÎîݬZ2PÝ¡Ê*K2ºce›:sE¥>;ø Xé¾E¬{“’¼º^+˜)ãözC àZ w&à¸üƒvR±FÜÏ­—ºãÆ3%Æð-N6éÀųs÷ÅâTá}±MEA×ø|B~™{áV‹6«žé,! +n•,DaàÏ@û*@\Ѫ:€Ä†eñe8Âc0;:Ž=ÁSN¿ýé<Ðy ³M´ºœÔ£"zƒN·ÞmTĉ|ÃýpäHÍäGÛþtÍ…?ýƒ&ú:ïîó?=þgþÝëµëÝœ¡öNðwôEü¨Á÷Àèù4æ¶XÐ¥¿Øë zäÉ ¾i¶êûþF¾Çï³»iu*âÝñÛÆGÌ¡Ñlí¶Ž#vÀÕš! d“â‰NŽà¼@nµ`[°;û µq¹Ùl½UAÌü¸p+[‡GíCýÈN½ÓÀªš{ǸÌF¯Û®›Ï9С†ª*©ÇŽSzÉ›,œ7aŠSͬ.gâ¤((çî,Œw·`t¹@Òõ”³w„Q©Õ> m]SáÖîÁ‘ú‚\2šÙ=pkCÎÙö%¿ÏîÅð¨ùqð¶}ø©ûN?„7uŽö¦OÏÒŽj´`3äô¡á gðÅKk­ðq;¿# ÐøUEØ3ýŸœ™Ú@¦ËÛSvi÷Ín»ñAj}C,¾ËJ7¦0ü¡ ez~æ!§ãìVÞêáxîtÕ3‚˜ž‹®ùÓ’Ã0ú¹C-±8ƒ‘ª¹_ÏϨäL¤pš¨zïNÑÝÝCúG&‹Ú}×8øÌe¿7"|?È;M³-<ÿÐ ê]£ŽàÛOŸê{{Ÿò8±å4U‘Ù³¥ù{zé·Êce¥°’I­@¶t¾8™•·¦Ÿ*µ¦¶ÐI§Ê^F™£êg ê%¡ÕÓšp¤ c·9”®²k²ÒÂ…F5Á¶99K=¯Þ­«wòácR-¨_ñn®|k“Ë+¶ÛW]³áZ¢‚® r-ÔaÃrþËZ5Q¢(É|Wûke?»ɵ˜³ˆIŽònèµ»I:ÒM­¦”\E~0™–Ьmz°å`øÝ•(L3œ¸Ó”ÒI‘"ž$'k‡Špã¼&M—žt(I‡ù‚äeÿA%D§¾? 5> 76µÁŒÔ¯ b‡~5Â}Ö¯™f~ïNÄüÐӻ埦Á‰nàJ¬Öv*¹ÞJÉf|ˆ—*™—K^ìŒ-*ŠÖÿ¡êþ±3HĆޱ€÷}ß8ȉ0ÿÀpï:Ef ßÿúú;icG’æ(Õꈩ3o.£T¾NIƒ‡%€Ú)á4ßcd#¯EÍKüF^GžÎ˰ƒ§LIG¬ƒ|¶ß+mÔÈf®’Y÷KµÊ{šAðÌágøža:óN.‰˜¦}p–äÕ8cºÁ9ö8¦glÅøLäœÑ·›Ψlbã—œ˜dÿ­¿éõz¯ YÉ¥A)[9.¦š‡dj$ŒÜõ±ËI‘¤ÑÄΑ$d¨4žwe—’†c4(Ì-¯Vˆ%ÖUŸ´ÅdÄH¤®Y˜O¤–°TÒZd|¿z@r$ÿkÔ’Èç÷à.ú%ÔÓ”S5{ö¬6{ÐZøMˆ:>èÌIaB0s§l{RÁ=ÃY¤K)²Û[¢çŸ–}ùç”3ø[’:$šˆßLmM[j™‚ ¹–GIeÎT!ö&uUÐLj¦a/,DPV+û‘Å[ÃÒü—&XÂÉ+>'Å‚[ç1ó÷N¤røg<Ï0ÿ•mTîÃÜþR’K¨`†0!£d=U#VxÊí%ŸñÂå-_¢Ó¿Û ئu:Ãøóx*ЅȹÎf]ò粄ÙukCm]­·öª®I*©0ý„#vpr×ÔDzöéçhÈx<†Qu¿¡í?ŠH¡Áœ¦á­'f{Jãƒ`ŸIƒfFë—ÍxMo»fMYý¦¥ÄýlA<öéF”í¬ÇÞ“PiâÍîØ[¼ã˶@Oo °ám)vèm©#áã? ){<±‘ÄÓKœD:$” +U!O "äÉ"ì?)€ý·¬(öë¥æaÿÉRØO]Òþôwšu­Ñ¯¬+ž~åßæR|ôäyräi¯ Z¶áKo‹“çÉbòäM¡ó,Ðg ‹kBH;Ť©£d›s«‡íêIÆóe ­·‡ÝC±½½ž‡ÞÁ â \¹½&ž.ÆùøTÔRÂEnÕÌ|5‹È+”é|çh6²ˆ­ÛHÉ ˜5d¤]ÈØƒÌ‡[¶‘s'GrÉ\&ù>H·3ë2^8¿­V—ZæquéÜ뇯•> õª»ÃÙyDIž(Œ?<’ü»GÊOªh©Ÿ¬%âìÕ+ñ<Ž&\é·xf*﵂gú<Qn,¡ó|N²æãÃoAl»ŠjÇøõE±ë#rÝf ·ÔÞòpIÍá-´6;òPBéýLÿYü›²º1Û–6™P}x1ÜÅü}ÀC™Î„¥¢ƒøó·+äj±g°t¦ûU&6|µeÀLèÌï­`®l¦xšN/M¸Sû]ÇÌÛK”î—"XUëý/?ÿ÷å×óÙ·;.º|þï—Û/_¬òÿ>Èk•ÿû·~¹ù¿ïƒúÖÿ­mm¾ôéÿÅ‹Uþïy©£8Pÿ÷èãÛö'mÛ=Üï„J/WÏw•z:§_!õ´•|Tõ» ž/£“ÎLín’;kY3åtµLå^Ÿl²Py¼T`„Žu»Œ¿Nçâ|6ý6ÿ"ã’ðY Œ©—ŸÑ¿Çe†x÷=s“Ÿp˜ `Å•J–(ãݰŸ‹+ªMdEM望?Çc ±‘·¹ýc/&Ê„æ•Lh]4*›è»S•rñr:Éëá8™Š‹h8It°v¡£Fz+¸<•ü¢b%aÔ)yìåjâå|ü%ŠiE^ ]VY+“-w²ªBüòÆÞWÂØåJöþðhœeuÉÑõ˜k¸ó“mƒeuŒü¾xÀIž?tVÑ[òî4ºÙsɪ{û ¶äò½elÝ×Ïáùkm.W}]#&»Æa, °CÄÆ§_†_UtnÄÉ9˜U!¼fN¨(í"ž`Þ£DE #5#crµotdví:cœñtzobÓ} ÿ?‡»E2 f âI<$\Ïj æ@Å[åìÎÆ™ë{ç{=Wzäéû°¶^ä»”ªÔZ®¤_\•/»¼ì¢é¿ýöc—àªø[ÓohÅ)º­êÄ'›'§³£5eI0q]1^YEâ{(¦¸»Å­ Æ7i8þX$¸Ÿ9f‹\1è7‰Öw­3•;2>lé^ 6“f ÄL0lEÞøâR²¦1š“¹Aƒ#k‰B?]P¶ öOáÿ_07Ä„ˆQ,3DÆÕUf “BábHññŒpXxdÙˆ©£!©ÊñZ²o×¥<¯a¢Öà çI4>#ÜMxq2l½ÖÎe„éþÉ”œÙ¦³Û#w3 yŽÙŸ!\;´nÿÈ|ÀoÂ|Û=#–žáŸ© ò ¥~Ÿ9‚Q¸bjÚe•ßþ5VçXÚ›ó®¹2üüЗcÿù!úß ýçyíåJÿû ¯•ýç·~YöŸ{¢þ…ôÿ²öê•OÿðqEÿñ’gÊþ£¬?­LÓÏÊèSìõË}BfÊZv–0Û¬Œ6?Èh£j>pqÀ•¡æn 5ªÜÛ>aDZU)Ã,s´¾¿~œ2üm<œæç³§7˜,kÂ0Ö ?Éocªú®?¬—¬âŽC¹*²Ü¹m¦nš~Oûúu•¶Ç~Eèñ‚Ž‹¨„–Ò9Ê g4ëø]i~ßËÑÿ$7˯w¼…þ§¶µÒÿ<Ìk¥ÿù­_–þ瞨ýom×^myôÿâÕÖÖŠþâÅÔÞ9Þiw›­×~ýࣕ§¾ô®n4@=JAÛÃ8 .†ådë=Û_銊½~Y]QèÄH…8”s•"$±µ G.åá(që\kî³È­s'ç‹ì×[J®>—ñ¸8Ÿ /ªÔ¹Îã¨FY ¤Y‹S{´H/îtCÀá[‚Q60óÀ$¬XzɬŒ'§3RL"_¢­ëñ’¬írºçÛu±õÐ, oµvwKÏOÐSV®Ä/†×«òó4{<´>GKP*J~öD‹R*=$Tuªâ:GR£Øåú ðïq̵tép£r/}Ê"ª¦5„P¦Á)[†*!·t¹â,êçâ»VÒò&ÓÉ®# ­ú.ax(¦Ð î3‡¼  —šÂ}ìÛ,žÏ£‰,ÆëôsEiFæqvý¥Ð®k´ëWùùÛ¡ÝYÞpklE’é8[bg è"者 ¸R}’‚¾·¶6pÂmÔþö?Ûjï±ÀâÞtrŽ›QA©i ¤h‘LBáþð³n §ñÅØ»»³é¿àüž‹]„4;D^mj7‚T ÷Ù ¶Çä;žÝ´Ãúg#h=IPˆî€÷>{|fÿ°šƒé7b¤A¯ Üœ$Øïä[XHú”ÍÍm½J}oqnW_+ïɪM¸šÁõ´"Nme„Ök€Flj<ÝäÖl×AÛR†0zÔéì ¬á3ì6Ž`Oêo*9X؈‰‡áoŸŠ$½‡»ðü¿ÊÑz‹«¢¥z6È ßQaaɨ®ï(cq+s(YB;Í·?OH—È0ˆŠÛZD¹M7’U­‰q£`))ÌòÓçºcÊâÙdOVbî=·†fïK·ÅÒ¢ìÚåHŠ&dÇ’hav¹ÍŒÖ[~k±=ÙGÑ(›9ÎKÿIg0qZÖP¯ôó¨ÙñaÚBÊOÊþ“”ƒ‰É ÔfòQ¬1'°M®~ú$;ˆåW1>\•—Ó„jÛ¡%`å©c.EüL— üޏa™6²DÂ~‰ ³l‚kþŸ™„èîêR¹7Á år³Ö†älT2ÁéíL‚ þ6°¹z"ø?Ø+Âv“ iØ£àýì!ú¡!úap㲉• T¾Næ1ªvä];CÍd”P²sGŽF±ÒÛè:ÔhöoHzÍ×~V²íåÑ­'ü!BIAU¬D°û„âÏÂ!WrZàÁ_’Í­ÔýN2ÞoÎæœijE(ôÔÁ²$€ö}´+¬BÅË‹ÿ™a@ðàôn£ŠÅÿ¼|ñêù h@ñ?¯^­ò?Ìkÿó[¿œøŸ{¡þ…ùÿ_lÃþ_n¯ò¿<ÈKÛ~þ—NŸ*Êví0 TòÿæQócEìæÉ×nýèh¿¯¦ÓÐ,þHôþÐЀ>Åj˜x2fìÊ’h@0 LÀƃÈÇ)$‚˾‡—¬œ—ùœùt›÷® ¬e'ƒ$oD,ÖŒ$¹°Í™T ² ýðô”³[e6ü<ýY°Eg6\ˆr—÷ÝŤ^c¡Uêùìj¬<¸éÇXü~î’{Ѐs"d°8Ç,.°\15Ä'•-ÞtÔ–=-~Vwî ]<%чºVÕ†Bq›­­8¶°œjEtµf+?¹Q°Dö ™á™Ì‹ ÓxÁ!Ü©l”Äó 7×loãÌâü>«ÄÄ]xQÃѼÛÚª0!w*Ò­ó|˜UUŠ[9,ÿ\)›\ñF¹èg;'oaßß[nhá—\‘ç“ëÌh Äé"¾¹üáø(e±³ ó]KYι1Û^üüô$ÐÁÙAl|}z¹üÛÀŒ(ÙÀÊúÌI­î¨~»¤°wº°:’'Dج’oSáŽñïÓ€=@ü>|Hê_aí[êW7¿ÀßoðrÓv*š‹\‡ EÌûu wRXfUWÓ 6dHL#×5UõÜSvòcަ“ÁÖJGèˆ0»#íßÕH­= ÒÐFÚ-û /Ä\³6EdïËnzOD!~@[°Šõõî£]Èo†r"çîŸÂý¹èÏoE÷0}*ò¤’a+¥•Ü×—º§†äÀäa¤Ã†5ÇHüXÚeBOôA=#‚öÿëmÿßÞ\Õy ×Êþÿ[¿öÿ;¦þ…öÿçµ—5ßþ¿½ù|EÿñR‡P–ý¿WÀþß+dÿ_ÙýWvÿeìþ?“]q²Ðïµë÷¾Ï®O¾ž2é÷}ÔjWVýcÕÿ*¿¬ÌúâþÍúES†-û½,˾$ú•Õ}eu—s_YÝ ÕÝ}ý¼6øÞ£³Á÷» Þå. ð9†À\ ݺNR«L ¹–Æâc<&+óÒ]zµ·€èÒ»öS˜R{+SªX™R·]k¡)µ—²@. ògHÖ íZ‹í¡½=ôNgó›mþʨYĨiØø£3j®^…_¾ý÷,¹DpßšŒ¢Ñ]Ù–¯ÿøjksÿù0¯•ý÷·~¹ößû þEôÿrkûå Ÿþáëý?Ä‹©=Uÿ±ý¦Ó f­µ×Ø+‰£vcwÐí5*ÆÜj¿ëh›p@È ½R‘ã‡ûc¹ØÁ_vŠvDåûX ¦ÝÀÌa:¼,vŠv€Ïí´ö:¾ë¨AÅŠ…;ª÷aæ8•þ [oîó(Á»ï —wE»iËæbïdp =6ßÂăÝOM¸:ìCJ³«J›^¿¬Q=XD=/,Ë9Ó¦cCáÙȦHLá¶R„,¾/©ÞÆñlE¹K?Öà¿SbØá‡l8õK \èot¤‹À^_¾aNQ0!𕀋by¥³p8\InsÁG,Ö#]G‡ˆ/|¤×‚6ûRq!dDó)RÜM2.¤Ó‚o²Gª“S©,èõ|6ܸÄûl¢k|¥’†ð "v‚”&É6qÊrET ìoX‰QwåDW?RÓãb¥Xì4Ñ–'*¾ lN[rq½²N28'ê¨9Ñ¥°=j$¿á"¬ùU$˜F‘™þÅð+;`ºL¨ÿœ£ˆ@ÍÔ€krPAÁÇÙlj6rÍÜNÙVÑš’jaˆµb¸®š “)Ö¨œE Ö%E;v˜DsYf «¡âAœÅÑx¤*z9óJOª˜GŠæ\ŒÃa·ŽWj ­ñÑ(F ã’ܔϑ®`ëíž6wª‡£EÿL™ó›p|À$JGÊ¿æHú×hÆKS³Å?ˆµz¼tbôt±5MðËþ²7½úœú¥‰¿4'£ø<šL¯ïW4‚­5°Iiäz숼º/ÇdbK>‹Ï¿Ì7¾À¦m`]gð¬R¦îDvÒŽCÞø÷ã?´p‘wáF´ÌJ7ÑwC¦˜SQx˜š2„„­ÔÌróy0j#õÅãø³¬¾ó ‡ÂºÐÀ&ëÀ(©$¥¬Ò*»Á“A—JäƒþÃòš´•j£œ3–IGìDÔ§Ó0æùøÆZJ˜”Š$A‘+Â:¡ øhŒ‡ÅK i¯¸‘*§§„*Lr†,Æ­Ùã ¯p}&Y¨’ä~‘|Qņp&›ÚÕJhvÀ€yâ^á Çäz‘‰‘MtHX¢)JEØyâö‹E”h§C Ü‹ÉH—`ššŒaz·TuS *A¢Â ô¡*Ú^²8{³!éàŠèÄÄŸ©DéP‘7 ŽˆRp„"°æS‹orí9~ "ËMšÒñFB£¾.†7²ì§|ZAРÊNUòxÕN i¼s ÀÜá©Ð0Ks—*÷ä-}!Òƒè:³…Ê›‡ñbb¯Ó=`4Ê¥ö*AþÚ©ZOSáXb],êR½ôm€9«¹5ÀúUî+0uCRƒä–äFფoY–UÑ\s‡128`ËúêN!ûa¼Eã#ÑŸâl6½°ý5­ÂµÄeQÂú«%¼9Æe´Ìògt[$e.ÓÖGï.|³_‰2>¥ÖÀ2(þvR¦šï©Y«ê®Ršuб+n5Sî¥'†“;ˆ—½ýfk€€²¤-Väïïž:°˜kŒüÓ¾¡#!'“R™ÔÝE®/Úù¸³šÂß±~Ÿì)t×JÂÏl©g2/[‰Y®{Y¾´!¾k·ªGµ™oýQ @Gñ¨Â‡-SƒFÐx‚8Åçõ&«J£Îb¸1¤¯Â¾1Xž»Éå”پä55ÖS¹‹Ö¥hˆ‡ë×5ÂO+çe<24ã`Ô{íÁ ¨cð§(!f÷PZ)ýY´ß=zSvkf‹ÜWh¸êž{tJ2¨éäE×L8ñùÍ%‘ZµätÖ%î?G$($ÑÓ+õDêF¬›9¥‘p'#7Ø_I÷§;DOû~…³;‹gÉœ§†u•?qåuÙÚØDn+Â\uêb—Û·¼ºgtþº+÷˜$o¾-âªøîÿÚ°Hô Oº³«dþ DË5 ðýÀÐ)~f¾?Ið²Û·-ýÊqoÀsvº!cš®Áé÷’üs6/MÐ?#/N¿”Ö—I<†‰Y‡ O{Kl¥“”tQóãwô9â­ŒFrÇPÍò•xÜ[:™`=>dŸ ÑÎÞÍ×Ú«o¤ÙÑÈPe/ · ©·…R¾w©%wF{âÀzŸœœ!&„=sü>oF6QCy—^:ù¿oÔþSSä¯èS™•oÓ‹h†—0Ôå õ^€kt))í¤ê·ÞæâËo¬×+RªèðC‰®K‹\PÞs\MˆÙº˜‚ÂUÑHøhruA<î„Fs»&XÁÜj6 J)`•²ñ²ˆ¶Q 2%}@é>™¾)^#gmû%õuv5ƒnŒJ”nd¬V£çázEz©€(@êÔ_]È‚—‘vsºXB(P˜!Eˆâ"Ýû2·C"†KÈD‚¥t—lM¹¢µ@Ž ¡ïÍaq£  !{ ŠZÐ ‚!*C‚KžÂˆÃÓuëŸÁµ?¢Ã tTo×:¥ç²RU™®Ž“ ¥T/,©«FLÄóŠLA;x’Zª –ˆ@<±(‰ÎD´ –¤È$v_‚u¾¤V‚Ô¤â]IS÷.M•êëš{].+¹êZ)jôi'mÑ~/’•§N|“ÎtýÒC§·lI-µ•¿’àÖnØöÁeb°u¤1â/¢|Ú¸ KGWñeEëUÆ‹ŒÈhW•zÇ·\ ”š¼Vîn8Ø“˜MñÜ5eÏ\`ÂÀS- àZJŸ ÌÓ ”Ð:ÝKç¯( †ŽÎTÔÅðl®-=®Ý¬ü ífe`ærl÷(½ŠQò˜vI€ `°óøôj<ÉúŠÉ˜ò¯h6eáIÍi À‰í”°0ß$èÑBnyr(iM*  {8p’ dÑW-—ÅrÚFøÁ‰Èí´í–§Ü ¸xèKIÔx¶¬%}Èü­L[¤ÿ‹mŸ—D%õÑÒOhˆ’Ë zµõ·‘!Z»`þµÍ*ݧֆçp¨' ÈÝkȇfµÍMcw¾ÄCiŽK€%ŸGÿ?{oÚÜFŽ,Š~Ÿ_;ñ"Lq³ª$[n÷x"HJ–¨…ZH­'æuÐRIâ1Ej¸x™;ï¿¿\°V¡ŠEmv·Y3m‘, ‘@&r\¢ލµëI£÷‰‰F þ;íL4ç»ÇU&†XeÔzCWÔF—·ƒÞ¿ñŠÞTÝìN_$Ý~ÎKªÆ„ ÏC”G¼7ÔI»Ö¥Ï (nÈfrki^ü“e­;çN?"[šñdxoÍs®›u‡¥”Fò*º ‡· YWüŠtIдâËôY©; áŒaPÆdíCçøÕ·?þo¯üKâº'Eýª§¬vøÌG•‰%E¸vðÌ«j¦™e ò?Ð- éMwŠ©N[-Wߤßrõ7iLdgÖ&¾á€Ž38HqY‹‹— HKl¶[;mṨˆ—9êìåÑh$hX™¹«zg¶%D ÙR »2 …´:»i4g Àá•n¨ÌÉhÀJ7uí²Jçlt„`u÷ð5â» 0ÉÉ+ñZ)™X æ6Kûbvgwÿ ™T[#Îgø¦L2no¤Ø–"ád“FeŒ;/ÖNåŸÛ>Vä4ÝèÝ È.#u.0š„¯Òò!,FQŃbÆXøÖ¾ŠüÐ+ë«A‰Ëâ¶{…Ç2PvtÓíÇO‰2þú£º AiuÊ ,Îþhwj²¸¸²×6ø²W¤b² ñïùš Ã?ç{M4ц½ûœÿœñŸuø»~vTëd4µ~ïÑ>òDUÁÏE_ÈÚ{µ¬Ø}‹@á?ÎÈ*~l¶j»ð/ò3þžfã ][Ç›'µ]t¹mýáØ{,Ä©”,’?®Íw¸[͘ÃÌ@}wCMúã6[›ê+°™'3§²µp´¯«Ôkí? WÍõcìæÆYç¨f¾gŒTÉìèzlñ¥/ÄÅC˜¼Ó›0½Á —²ƒ8],eµîtŒw;7£uÙAºëYJŸ&¥ÖÑÝÖ5m5öÔd’ÑL‡ÀnÉMôhØûÃù" ,ù{:«ÁƒæÉ›Gû§-]Á;B1ÔÙ<†>|ú ÕU¡“!ч‚«N?á‡7V_áëÛl@ÖX@áµ²°1}—©=(Pô·¬9e‘£³?š£8¤Ö/´ÀoéMéÂtfÏA¼©D™ÄáÏì&$:ÎleõŽçvÇé=Xô\rÍFK6Ãäç65Gç Q¼Dȯæn-;ä§*Hî¨`µ³8E}ú#cƒÁß½Ø\vk áç?²ŽDS,ÄóOg¶ç§§µõõÓ¬Ø2šJ?ýÛ»µ½Æ–§Ë W† ”9Å.ƒš-ð¿v3 ZbÇs#´ñf–ƽ ôÅ´^2’{±ËìK#ÙWÂÒÏ‚(£ŠKÛ\'ê«OEõIV>¦Kõ¥reU;¾Ÿ²ÆÖéš)×¼€æ±kQ€èÐßìžÓ2:¶Ù.Ç6sã·_‹ªxɸ˜!'K²è±U”ÂçÈ/&®ªµ ›†÷.GaŠòNYŠ¥x OšŒh,ÊïŽã±˜°lm_ðóqÌñŠŠNü~á+|á/lXjC!‰·ÀdûÞö>ímjÕÔß]DÌ‹3=_ûi \è.ÏjM¨âì­|VËû(VÉ8lRH°#ñ¨7ú/ï?ˆúcQÒ>¨ÿ<®䈨Ð[½V,‚P„–ÿÅâ–Ô²ãÒƒm hªÕºÐü~%b*qÀ!<>(àW½€hn£kfÀ.ã"ˆôI!_—¥ÎŽ£´wbE`&m÷¬P Hq®Â±Ÿ‚ò6!á=x¸Wñ")íe,´<¨ÚhAÉÈ)({ñ&­ÆX^>ðŽ_'tOáÙaé#å÷u_¹AÅÆKïþ$²·ÿx!¹ŽóôÄxëv9ôÙæÔvñb¼`vt¤¬”µazAaåÝ Ô{•“‰¥ôZ\Ÿvb —ÐâG˜3~ðoA^0*ñbjºqyå-ȹ·Ø…*SEÚAS¶’C!,ÂЕèÞ+³šo3°š§~ÌÕ”7ùW,…¡ä’{?7;cåy+QxÍ•R¶hYHÅÄ̆˜`q|9%S¸á'Åid ÿ[º\ŽôµáCÜ]ç6ºü,XµÀê¯ËºÏ÷ºÞônH«EV“í—Åþ­yµ÷ðj­µ^kXU3É*‡Âq“¨œÙ‡¤sŸÆ-ò0Uw7Œ¶ÈÓÔL~ÊÛœ{õç'ÞBpj ”oRW¦ÁÂ\fìK͎ܳճ4ȦWB÷ž5 ÉB)kÝé“=9>ÉÅœûcõ_ñþK¶@sl">µ1>µŽ`€f®O‚ya“KìöXÒ'.K" Vþyˆó"/q^ÌZ yÖÂÚ˿t‡3×ÂÅ|k€)ð(Λ&é'MFÔO¶8˜Dñϰ\/žm¹Ú ‡vÉeú8Ç‚½È±`yrè¼ó@MÝßq¸ˆ´€’k¥à¨†«ûGÕ‹†C²ëoîwöÅÛ·o=˜˜‰LYLù=V$vµã|-‰ Á€dæe;³Y©Xßœk¿b_”$ø Œr¥-ÒØ -1rLF†€wÒ#“²XIBž%Øç†¬ï  ¤ª¯„×õó8 ø@©xÏê{§;º‰(®Áß±Heûr[?£/K¯¢òðj,®×ÖÄW2>ß8k‚PˆƸ©ÀéjLÛóX¾þE¶'¹LÄ-šöØ|ØàÙPÆ19ûÈH.Ùx@å¸ï¯ \ùW7a¯ |“‹ÄµÐÎi'©Õ©×¢ˆŠá7Ü ³÷©$Fa&Fèk>Œ˜£gŒ.Ò0Šá ·yå0®ñ³Üâ§x{ƒxàµäÜJÎy%ù—ŠÞëDÓBÚnNaìx—W+uߌ8ïROöL{FDéå„} HÇ{cwWp©‡õt»¦!+ ž 1o™±¦J&>÷M;Âbd«áðÞxTmµ ö±hûñÜÏB=ÿûþËÍèë'€?þ÷›·kÁ"þï‹<‹øß¿ôãÆÿ~ŽÕ?ký‡Ëaø&¾þW߬-ÖÿK<ê¨ñä>8Ù<:µø#œ’:É-&žùr>/ÂS'Æé¯žÚŠ>ªàÎÌù‹_íi/5ô\ñ5ß•°u2É›Sñ4‘¥ zøÑ,Yà7{•©ÈZÊUA{ŸÝ÷¾ 'âf4ü:¹•žBX—\UjK¯éïñ»'üÄ$#ÅȘ„gÇ•ÇÓ¬Zhçn <¨ñud¸I÷S¯N/RÚ=Žy)g¹‚qv‹®–Œ?Ü¥ ‚x?ޤËs·?Š»¨;k÷3¡ý8ÎÊ–»w"EÙ ‹¨cDr#e:ˆE\$²öÆÃÕ9€S[Õò/5Q P6çè¢eQ5Í3‰j‡3i“ꢛû·.ñt"ò6öwÛ9ûíÙµúÅ@9ºlTÝ_(G÷| ­¸“­埴ÿW¹@}‰¨É*ø˜þåóÈÎFíÍ7}°¡ì—ó»æ<«õòÜÖàdKfÛíNzWÓrRÿ4ÖÒ"Å\Z<Î^š¦Ú‘9‘_ÑøŠÓÿX9L•Qµ7é«L‰€HX »½|Ï_ÖnÏgbðHC¼³ÛàË¿§>ó9áXРˈN‰aš^l_8ÒÒEçm@†ðýŠr©cúM2Ç’¯ HÙK¶Ê ¦ Ã¥µ:6ú6ÓH4ë{ pÝFßh¤?pòÈA]JZp?ìéÀÄpBMnï¢Iïr\@Ó”¿æš’ù\öîœ,¶qšðÙ§Ië0¿…|ØÐfp"Ðwl,—,âzj<³ÁÍLkÙÕXMqPc G¯ÄÑØÐbÞtݲÒ5%ÒØ> ™â¡(œºc:_Û’n8ž3š6å{)+Ïj§¯ÎæC¬>@ä„}/áÀ…Fg…&˜œÂç÷B~mcÆ-#¡žcYxU J|Í5ñï¹ áŒKRUhY{ŠòÛñ€úµ[þû4ºzî/¯ü÷æM°² ï×€ÿ[] Ãÿ÷"ÏBþû¥#ÿ=×ꟵþW‚·abý‡ÁÂÿóEy;ò_ýh½ öÈç«U7_ëe±QÚñ!ý{@Âáî:±›iú@4ò>W£‘ˆºÓo½~ùh ¹R –¤ôóXJ(K†*[o‡ýá¨{5áu:ŽtUÕÀj÷£^¥ÄÀÓå%'Î+vI?({àóÕ<Í#Œyì“×¥¶a»9ÍòžB*(è‡òãYÑÃ/étq^`üóyLI‡) L1Š®¦—ÒSŠ%’V“Ô©,¶Úa¤K. }Ûn¢A4âl"wH*ã§ìü”¼{€µï“ßÎ(æûSO»S`8 N–7ô`¯ 8§Æ&Uê!Fm(¸¢8`Ñ‹ÝfÆÆkQ>£W眣Á -sðODĘúÆÀË,£èâ„}7rOi^CÇþùA ʬ×Såtïbýù²Ü‰`…É;ŽpbÅ$t+]Zráéö¥ÇÄæÌÏlç«=I¢­ëD“Û¸@ +Û‡ÊKÑG ¸úœà”›‹þjRV”“¡ÜÒŒsÈÁޝ=®Ã’¤hIãªGñ¦ÝÚßz“òìdgu9™(Ñvöë¨7™Dƒß¥Ëâxâzø Çá€pÜö-Z•rLþÄw+i—QªWd¨¼“$ž®X.q-›ì£Ü6ŸQ£èТôB´xôâ5ìÝ!ª¬»xšÀpQ?$fDèÑuŸoV~G$]ºlñœ…: ±AÕ…£ñ>HÁ[¡zà êIÃ;9üÿpFÿ'örưKÂÉ;ú.”$úyF?6q3ÑwFó}”)J×|_Ùî…ô<ÄÇpO]qª´™…Ì”ô¢Ðª/ÅÛÔcj†ýzæîaá‚$I4ƒÁðL€¡è•{ ɇ#9¼¾®<¢òÒvsö먙½c3“—X k žLz<¬fPÒs:γÆóù>ÈBZ1›9F&Óƒø:ð>©ÖÎdf>Å Q¿$7åœn†±‚6ž`UžU PrQžÏÓÛs_onoÏÙÛó'èíy•%{c3î¹;Wü¦Å3Òr= VY“懫wìn½ÁÐæ{-gb¸Ôˆ–[…pITé[…Á§%A-´=ÜÄ÷›æý&¾—[zDmáž…¥7ñíL-‰¬²ig‹÷µ¦¨ˆIwúo ¾à(!˜ªúý=¼›âðžAp¤:ªJ~ËX¦+S:¢0à S†CøBÿNíã‹>zbÒÁ—Bð¾W È­¿*„U轿[2‘ 8×hOùö×ð5lÕ¿‹)‘ ¦…^)°€Ð÷÷ƒL0e.ò;wÒ„#›ÄH9ÆÔsþí  ÿ|±ÐøCƒ¾ÏèM)´û£eê |{ÎÞtÌžª÷X¥ÇSs;ÞD´nH$¶8„s¢}ÜŸè¥ÚŽ‘î8'ª6%ç&ÅѲ–=I²Cü4BYeEf{$7uãAéç=ù@ú'ÅsĬ"Ίˆ¢5—CXßr8jz¸ù^¿?O(ÒÊ< ³>cËÑ·.’?í*Ô;Ÿ"”ëòN`F<ìî>½Xb°ôÞllwô»*ñKüK¨u]ïzð¿i ÿ³ ‰·º”ñ%°À„ôŸ„õV—r@| ‘óÔÿÅ@¨Fºî󂈕xöØ%càIÄyÚ¥1µ$§á¨wÓ³‚]0…Û2'ñú_z0¤B—òSò-X–rÑ÷¬â'¥Æ¦YÈO®ö%2õÅZØ8Ú/ ´æàïÞä~Xõ±hí»Q‚=ŽÿfÞÏHªĪxà äKÑLïJm÷`«æÕZÏ›èosCfäklòߣ›˜éÏdM~L\Š´©ºuÉL{—Ÿå½ ^¿ÝÇãÞ'ôßWM},ˆ=t[Ò[´ø³¿[êÃÝ ›Õ–2á¶bÒÑ^zh‡Luµþuèkuü{sbÑHD³BQ«Ñë'À›àÝDÄi.ŽóS¯ZC>ið¶÷UYìUšè¿D@*@~eéüdÑ©ŒÞj7IËAUn OígEú,Òg„_ ðó£ìÎÃ&]ðQ”abnéÞ¹ <½ƒÞm¯/ç 9ŸäLÑò"[6âX)Õ)ªAX‘ ý¶‡ÈI¤Ó7Ö$C¬«˜¼ÖíWHÌMt¥o¥ø#h¼¡:Y¯¹1Æ!çœYÐäħ²1üïô†$¤äŒ¶*Mž•ô^jœJ’pjî–ywÎp.‡ÕK¦sáK˜ßÇ`›ר2¡Ñ´‰êwæ2‚—óyr¥¼ð¸ÙãvöœãæÇ•¤1¬ä˜âÀ%Éäð=ž"ñ(-0Fz­{f%±FÍa"Ŧ´%*7gj!¾ÊÒRz9Fç!Õj|yÙ›ú“co_.}¾<‰Å×Ǽûæƒú˜ .ß yà=!Ë(üûˆ/vHú<·“’éSŸ“Ͳ:*1âÿMä÷F.3Mɚ̺‹œã&Ғˈï_ê62—<{æŽÛÙóŽ[ ƒû§¼‹´+fePÍ-1/ôŠyv<$­¹ãBæd;ÿß‹{¸ÚþŸ—7_~œÿg¸¾Y]yó6\!ÿÏ`ÿãež…ÿç/ýÿÏçZý3׸¶Ä׸¼Èÿ÷"¯v×ÿ“O@rïl¶ú®(§ûføs;o L€ð%"®óÁ~˜84å' ‚“ßæ-$™+[>ŽÒ6|Ò("L+G´œîs&ÆŒewO.væ›éÙš¬§” ­JÀ©žqœ—2üß’—Îoz˜RüßÎ.-O66ÅZ7…3mnŒ `ö¨9ûÊäk ÆÓËˈ£©Úæ½g õÉç°¿ƒ5½ÿÑ—Cq^38`w·7ç3„“°ð&†“¾x®¾4øœ)¹œš.¨ïKÙšÓuè·¶]c²Ûq í¬Ò¢‚i¾1oA‹¦ébˆbõ®üS,+7CJBµð6ˆy ‡ÿ„?2þËêÚÊ*Àø«++Ë‹óÿEžÿÿK?ÿÿL«ÖúV—WÂøú‡¯‹õÿ¯öÿß ‰ÿ?!`£Ý)‹Z{8‡vídc!x+¡–>žV`ç‘|¼A¬dÅg91AXæ“+Z¡N¾Ì^A…2GS •1îÌ0JذÂf ý å> t‚ÓAïRç¤\³þ2”Â.“kV$Ó®<8ó‹*é|x'– Ùxš“”È6N$ õ ´å޹¯"  eûqÀA5Qñ´¬œ–pšá'JÌ}"tŸÚP §84TeV^r姇ÈÜÇ@œõö.ºê±6ŽQ<ã[•ûÎw>Å¢2AlÎp©õ®‰ ?ådŽuƒÅT©Ð.Åã@¥tžÉ„œûØÙJßlÄ2•·|FQE—!Á #²’ëùBÞ÷(;Ìyê $ÇW¤;^œXƒ`c/ˆÙš +^käºB{ D ŠnšóR–ÎQô¥7œŽ)0J¢Ü¿j¬m’@,ÇÕQKOºÊ Sœ/Ñò‘ÙÞ«‚ûGÈ&ú—\’^)—,P¬‹oée,WóQUûÚXP‰¬ %¯hÝë¤&’hªÒééM EUÕì'³Û] \º7˜ÇZvƒäv:ªRɳ˜VìÅÄ•{:[¶w¿`^ôå—k)ÿRg˜$„fy¹Ç6]7òu ½Ã¶z7·Ý;>ÁðP,ë½.PH4¢ÑÙ—¾ýïbkà åD:¤¯È3v¯;º¼ÁÛ²~{÷NÇQt «rp½­êvU7ô÷ûG£&žÅä´Y3)âfMËm©ƒu9>Öp; ¤K1òñò Áp½”ÊXƒþN»E­±':¸TãÉ-œ¶ÀTËâ˰_Áj¨¾*àÏý}U¬¼ *+¿½Å€à—|T[]ÛíÂÆq7¼ê]÷¢+t1ÆÐlØùß~‹…¯‚þòW0›×xm4R¡ œößa'R˜ó±Í€hÁ}Ý—ñ‰H2V÷e GÀ¾ÈVĆ«?"0}mïBƒ]F¿p(°êMåÑÉ/Vž+Á¸ÏëÔÉ B{5uâõ9¥äS­¸O$X®žÎé~HvIE‡Ôå2–Eÿnü’ÅÁlaÕ˜á#Ûpœd¥Ãk¶‹¬iÂv–5Uë*[Û»µv'}øjõöÙÁtÚ›-:Nöw×Ë@›÷šð½³±wåOë¿çK Ñ€‰ Ò‘h7ÚÇ{A÷À½Æ–ºyJzå2œr¼|~¹ý}ûçOp£I çeªùPÒYÙææºãä)ÀÈÖÔË‚xÕÆMçã»éÝ++ƒzN1õ\w¡ˆ(¯×„nMhS/E…ÐìŽuÊ¢{’X¿Ç#ps4þº¹/:û@ô!Pü*ü·ÿýÿ!ôÄ´¶÷x# 8Sp[W«æcóø#Üùjæ~«ŠòV­-ê-±²qtzÔìtàsý؇39øa"Š8ŽqËÙ|¢=+¸6"ÌÅAT‹?@Ü›Sœ‡"XYvGʆÅd¯ôj<.z–W|³L«[aq–°UÃnQL5(éÍcÙ'&h†7ÿ.G‹!YÚ©¸)}Ko½1C²’˜!I*ŸCêÇØ…wNb BL äˆÚÀqk¢ZM·R+¼µÙsëZ‘Q¸ïÕ`ªv÷÷DÅ`Ô>z¥ =)ÓÉ)~“h¨å­Z̰ãA†¿¿MÔÅ2ïØÅ6gW5 š·Î³~×X³aîñz„énÊŒ3|ÐÒ†>-‹îÄ5^í``~Eã¼±ÛlmêcV¼ÂÐ ª¥’Ë|yÙ^»ï~¥µûn®µ»ú(²YM6É•ú[Aâ¡p‘jÊŸk ÃLô42,MLΪçÖ^Rø¿j­µ^µ&¥`m¨jdÖx)1ãÎva}qR3 ¾‰4jhõv"yáÎF÷>ä—ÚÚæPp|”˜‡”Íür^ö#N–\·ÈLHIRi“R½k–„¿Ûħ[¬ð'Ä+™$kWzó(òz3Ç®$¹ d®1³ìé>t%Ñ£¿˜ŠZÞO¡œ& Ÿ}]¬Z\(¤ùù«*µf*¤%!Ì­ŠVõžK ½¥¸ÂçgÑ:oÏP6+Æü¼P0ÿeÖâL³œò¹U˪ÞÓ*•·ó¬ÄÙ*äítÍ1¬ÔL1/súógÒ—žSK,çzný°ª·Ð G3¼orŽ,4íÇÑÿÞÿHÿï`-x»†°¸Ñÿ;XÄy™g¡ÿý¥KÿûL«æú_}»²_ÿA.ÖÿK<¼Úcú߃° Žv÷Ëb¯ŒÜFMFo¬ãßúB ìØVí¨Öp.uqÀÒo4iü`ðxHçÑûî` ¯˜u]/p{ó¹„ârxßÃÐR}ÒG¨\ŸRC1ù:¬hu¥É¿X£X¿$¦M®çÐãÈ!~J ¬·ØŠÊö}t‰ÚÖ?&s2ø :@~›u'òÓñêø•LùyLIñ Zwp3ÅIާE†Â»ªð.)ð2 ï£jêko¡¢ÇÍÅ‹»¹' Ï%5˜-JVUE8VЭœ¼ P“ø<× æU‹ÁMIÄŽd訬9y3.á »yͳLSPÃAŸó·Nå4tï£ÿô¦w6 Ü$(ˆVtõ;*¥Uý]»~_ÎŒ¬•lª¾No]Ë3V3Ò[cwR2›w]YžlÞõظirouÐÛ”û§´~cIý¼=ÂXèNÕŸ Sõ*CJvêÉÕ|ó9@ΩKÚÝßl6Üýr·]ÛÓ!´’Š~låÙ³‚JH ÷ êÄ…õá¹æá`cÛ>5‹£¡@èÛÝ)$è<ÀåÀæê3bŒpµ0±dZüßmoxpÞMÁy5g©a@\scºâÃt5S—·é¸¼1ã——7>\ÞfÄmSˆ¥_³ü|Wþÿþ³Èÿ«áÂþóež…üÿK?¶üÿ<«¶üÿfm-¾þÃEüÇ—yxµÇåÿó…üÿÓÈÿÑÞ’ÿË•óÏSåüL@–ºe!àÿ¥ü,Yu!ã/dü…Œ¿ñ2¾x´Œþs™R8òÿèî§‘ÿƒÕÿÿ"ÏBþÿ¥Kþ¦Õ?sý¿Y ë?\^Äx‘‡W{Lþ?Ú+x%ÿ²hà_øçètÿhgq0CÔ§¡z}¿%âË¡/dëþ ‚F™ï‚àhO€Ø#z‡scö]Œ{¨ÚWÞÞRò»›ö'=íøÞ–IDC¼ÿ@.¡uòM”NÄ8ë{ä›IÓ ~¡^´Ì ´7øÐñ×Èqñð$9µéþÖp®žF^§.'›¯ã »ö$‡´ïâ÷¹_¸l =O'ÝÞ€¯häœXžTg Þ\Ž8*'ÿ8†iŒè‚¨)Û ä?þ©ïƒçOßíï©Ý>÷v»2¦~_Úý>Â~ŸW%H»ß1:’ÆWíôWzí´ÅUt»¹zsî?…øn þ«šxUi$ñ¯¿ýIáqë:ÏØrR{å0~ha´“eÜoŠ˜„ðƒ¦K†H2µ8¦E¸¬{Ù^E]o:ˆ€y슣M[â7ŒÐÉ?N† ÝkÏìçö—´ ñT¶ÂVIe†·î d­ód­óX­s«VZ(­† (Ñ(â¾ß<£Œí"îýϲQ¿pYõ¥‚eeE«¬õAN­!ìYóÌÊFoKóœ?—×)1ù=&¦êéù4„UnÍC|’A4ÒbPÅËÄPØ#aDbÜaHʈûñfOöØòÿ0M?‹ü¿ÈÿýBÏBþÿ¥#ÿ?×ꟹþÃ~LØ,ü¿^ä‘§ dø>·l·¶Þ<)`œ©ó…¸ïåˆqhò Þ0šh q&^‹ó²’Y=w`lðpÕ©˜¥Z$\chldbQ„ºî¿Ša,°7šiL¢{`ˆû0Œ$˜Œ¢ñ´Ï²´ª–'6¿ê¬G :O¥Õ üÇR‘ý}a£s^øž‹#¯43¯•föåt¼3„-֟ɵ+ƒ9â=‘ ÕHöCôó¹õ3}¾8òj°. ·,©X«À ¿ž©¤¢!úK²ÏúÇæÿ£«åŸ…ÿ_Y^èÿ^æYðÿ¿ôcøÿçZý³Ö¬­$ôÁr°Xÿ/ñH6ÆÑÿm¬/Äa»yAF7ëe±Q‡hkÿ¶;ûGô¥­lqR-_D“muš­ûI)âW‘¼ªÂûr@y [eðyô‚>°qÓpï».U‡…üæä‡Æ•*0$âùµÇc•û檇s'M¹ÿžÂhÞE“ÛáUYRŸ”¤szÔ»!mÉ0”»ìûT{ ÿ€Øsc{ª½í]Þ’¢i€É—ŸúÃËÏ2Ý46Ž8õÐ(ºš^"f]q 0‰ÕH|BÔ¶@¢ÂDKÚÇYÚa_G QÝc¨ÅÈI•¢´¡uáÈŒe³.$1+ZÂ`w:èMPê“HRz¶É»eg¶¢ÄKÓ¾$(cj„«‡~-4ìl") “f-Wº¶†Ys÷J_·[pÒ|åÈ•F¹¿Ê’Äd3Zû+‘ñ BÚXÔ¢;ÔwÇ—Ï9%¤SyÉæB¸¤£<¼¾®<í qÛ‹O¨ ½ŠÆ“Ñð»vŒ?ô"še€~XNàCÎë&­ÑñþÈæ›±FÿJëKú&X0˜X{ýï0†°1V·Âò„·y;äƒK×!w'’¼Ç†ªyÍ%Ö¬ŠJ)Ÿ¯v —²ÉRÓΦ÷¦ô‡U†£½îµ1}“ém[zµ§ótÄV¯ÓW–ùõŒ 1vBVØÏ[QoɤùM±Uìßh¤ÄSýNÏóAŒï0S´€×K7°KN«e?ã)l¾4Iáÿû™÷’%Ç{ Åy`&l‹8èÉ õ'”ýáŠÅp)Îãû–Õ;>sæ ”§¾ì±Ü¹Çp”pô“±<­äcö$¶²Ðk-È8Wv:Ní™Ù+pÒý Àû€ž¡q4CxS×퉠zHA+x†Ç®΂÷BÙqÀҦͱø•Àó ¡}•o ½ fÊ“,l„Wt3 ³|ëšöqÌ? ö®Û¿Žz“Û;qÝíõy$B©õ9€œE?J N9 <ãé'9ýïø3ì‘äØÅ O|O”væu¡U –°Æ7·˜}¯@œ"þúô·¦§]`…72æ*”9ñéÝàÜ×ÿÏof$ÖS¹ô6Ju²iížì–ñïÁQþ•Éže³yÒØå¿­½, tPFY?·y°q´‡ŽöèWüéð ƒ@O6²m—ˆ:»˜oÞ«uH‚Úk¯‡eÑÞÛ¥oí½½ Fû€²Ôìa•ã:À ¿˜$®mg ùŒÄ{s%¶+K×ɯa=ú¹ÝîlÂ`œmÕwkYíåLôà['éØÈ÷Op¿ŽC¿—1| Î΃nÙ¹LÏ ÎÄ {„•µÖ²zâ­ÉX*‘IóÓh$–Ù+Jý´ ?…*ºŠÞÔ§¢déÈ,ÖðÊ$Xlç ‹±\æT{j™i¢³Â¸ @¬†µÜJ±TCábÓ’vN)åÃxy8t[Av[o=uÛy+¿3*“üŽm³>îcú¥$Τ@aâ.ˆW,¾*‹Š¼ÁÐåü©y–Òüãb&qì gö‚˜+ïhrEK  ~+[½ðϲþ¿•wl)ñN%Ž{ÿaA›Ž|:•T&)8f9eóóKöÌÄ:õma„øN‹Îùö€sªñà˲¢£­KeJZÑ”0 Yu‰Ò–ñ¤‡IR;#AÅÊ|eÐ ‹ì³¥ÁÃ×ç` SÊW¸+¦¼*¦$ªT}ã¿N .=a‘?šW*Ñ›BÙô ;ªÝߢmƒ˜ƒeI±¼þ,72I|óbyŠû;TˆZ$SÍ´ƒI€a»ãÉ(©hJ—9£îà34ÇY‚U³lžã%+Ï(œiz²DÅ6w\Õ~XÈ88úLÙÌÏ.°§`b¹Šýj½Àoq|Ìç ç_ÛÐ?,¹5ª£¾ùkùœ'‰{Àôr$”¬èoGàË…– d.hëfÃܽî^^N]Ǵ܃è«2Q—0ä±­Û’pŽ)oKæß£Ÿ¹R½Û¥Ôipìqr1'ÛXX,ÂkÜK[ö6ÄUð_מužâÄÀwœzGu3fpÍs ·µ¿Kÿ»¸‹F7òŠhü} ‚ ãÝ«ÿ…ƒ?ëx—µéð·ÊÓá4!Ë-[ÇR8Þ9W£BðeˆÐ<Û?Ò,˜«±JfuÅùãŠ8ƒÉDØ(Û\Cè ùoöÎ\RŒ›ËÜDê$’{F˜Œ±‰}Ê6¥»~pT·¶J~{˜È·y°j–ÂÔÌARVŒ³»6’òC¼Õ˜L³G¤Å‘xIýá’YA±‹Ô.Jzuá/K6½©5Irº&U¨ yã nJ_Þð_vÇ‘&:yÛW¼uYª½+VPA鎥 áʧ["“Ì«hÜiý r²ó9–m[CAÔîìªGf&q;É‹qnæÃ8 µä(®¬Iߨ²'¹6³’:ɳdý²Á±×TCÛu“9>Ÿ¡­kÿ¹öí?ß¼ VVáýÙ®,â?¼Ì³°ÿü¥ÛþóyVÿLûÏpe-±þƒEü§—yôÙîØ®qü—ãÎjÌRùÑúM‡¼_>lík«2 e¥*±‚øµ®éPˆïƒbÈÕíïÒßÖ14Τº"™eŒš× u¥üÜv¨¬v?á"\OOs<èÆ«q PdbµJs֌ɘ¡ÍŠy¤-,“Ju(d¶Ê$$^‰ùóL¶ž* }ªD²òË¡ú˜ÞepË4kR<âìpMy3L3\QªÖ†µÚ`h7&Žwµõ$VTƯ×¼²4=Hò]V¡­1§S–[ÎÔ£V¬ ²N¥Ä>ê¦É¹žf¾~ý{ ‚7ÿb}[[B¡˜ï'”˜  $/ÛÛˆn´“Fh¾¥ %3î´èW4‡…Þ`I`>ño IÆÿ¢xQ,nXpè –¢qSŠÊô?+€ìŠW:øjZSÞ`¤it¥ n&·¢År†ƒH0b¼è8‚‘ ^e-¾úO4Žá§qD Z& ž2Bõnz–)5îudv…­–U'%»ÙS3Bõ±X¯Æª.‡ƒqo¬lYñúÎÒ›hü^c#ºîÆ~éTbOYÓm‘DWŽ£®‡Fá#Mà\[^ßÞµ,DƒŽ£d4ß‚•ßr. ;QeÇZøgxy9EƒË(i”ižqtI©Ä0Ö ­Eå=s÷Kf–F ~åžÛé­d¨..I¾¼r-µq9‡ÕøB›CTå'†öwÄF¢\ú¦¶5@¼rÍ+\ØÐ2ÕWªæh84fɲÕÙ/p¸%^Xu—hyI=¢W–ªv'ptdn<Ô˜Ë=ËG´00!–ñ«éÄðÐå€othWŒÓ”s[ÓåöžéØ_AŽar‰ÁLº$&ñÖ„aQ,棅Ÿè3:-¸`Щý$Ü^爡öŒvürOJo¡a‡2WÐTKý.ì–Ù¥J”Æö(”ñôSE#p×­©øÇÕ>|j)û÷ŸÉ»BâÄ6#3pš 'ÁijÃ[-ÒÊD_`cWc£ˆ ¡ÌÅ'®Ð-ê »ì¦RSñ–øvM®UÛz{‡ªö¿ôñÓþŽM«À2ælUï—gµø± 8h‰Âå¯áa¸ÈÙ‡Sö£ë Ϋ3àÄ»(óÚ§ò?qÎ&%6–©“éèSt5û‰ÝwQ%áªâžÐ³#m‡}î1 ùänüšÝ2þLìG°­Ä=qôÒ¿Eh¦cFŦ=‹=Öïh“°xŸEMt:é`ìïTHyÿÁ@F90Œ$NîÞ¨VÐÿ¢›È­CàØÉ•qãáO-RçÙë· ÉzAÉHꦜLŒ¨ÉOQº;ÔLŸ»Ç«:AÄ#=Cß•b«q«Õà=Y+Ò—‡SS9uäۊŰäxxµ‘u'–ƒmhœ$nQ®Œ«éÈ=ß’ž’eºz R¼‰‡­’ ÊÆH@)C«ö§ŠMQÂæSíX7±wdiÉq°Ù #ˆ!,ˆ-º­Û=fyÂ&¸ò a&Ö*‹,}±µ#‚κ»§lÐD{ªÉ9þÊ|È#ÀAÇ—ÀðÞ+±š„þøÖä ÞHK¾¥+úr¸”å˜òTÅÑÃÌR! é=mÇ5:ô^] §†²ªð+ôÐ}¤¢¿-9ƒÌŒ“B”ûOl·UÈÃæ”Å`8¨hÝ›Ëyò‰m|¾±Šá5š6) JDqrXbj³À 6A&ˆ&¹ÖùÿJù2èŦ“ºÙûm¿¢:j$îªÂSM«ú–>­†KŒÃ5GLfw<Ä-?Þ÷ L<űnklaÐÕïTV*\CÚáÌ]ñÝ8ŠÃÖñžsLÏ…žw\Úìÿ%Ó‡ÓQn_¦ÐãÚ<ù‘ûùü× ˜ sV»ê]Q¬0Øþ¾ Sü²a·|Çû»óÛIk}w“Œ!«‘yq¿~ÖàRÒ%ëþ» ‡«2'@°2<7Æó»?Ù~OïÊ|Eñ›ü[£¿{G›Psç”FO¤¹KË[¼G9"±×Žå†äXâiJKuBò¹ýäpJ¸Q>kf1)º^JþÛ½Hù2µR«¬Ä«Ìá‘ô›ªû(§¢µ—v*2×¾×Ã>¾¸ÇY·¤yøùsÝã«{V#°{_fQ ~cÈGNÓi'ßx:ñLóÞm¤B@Wçß•² [3ßoruº$´(úÂ6ã§Mw.ÐV_ýzŠ¿ð+ëW2ù?¥_l¿ î4ÒqÁªÉ—ü½aƒÄ- ­ž¸Cæþ}Žî¨ãÿ©ÈK}#÷6\Þu0’ãµ8ü#ˆ]°ó•¸~ša`G‰€œж6Í #.¯y{1®É>P·À×P•¦Î‘·Jbl®À78ê 7;#)ŒSTÄŽ’Wér}Û}\½ëꊕ ÖEŠÖN¿/µ,<5§¨@XÝÚòe°d]Ëâ+pOx%4@ºD窺«î¤«ÄP`Ž¡,IÂ*‘T@!–.&(½ó=Õ%mVUD_zÃé¸ÿÝ^o£ie¸AóyqEó5a|WaÕ£4žwL™•†Ò÷N©AïbûMV/Ñâ:3ùÎå¶o’ÊÆÊX@…‹Z—Ê¥#Î;‡¼v—”†ÿиB AfJeË|ï f¼ª•¾ÞŠ¬Ý ›¥3Vž DKçFlpSË“ØWÞµµ’Æš1ÍNGÊ&~*ÅŒ9µ¥ÂjCêp\rÜÉ8Û˜I" Ê’ÖË®1ðSB ——˜÷Ys-„V ÆÆ0Ÿ·ÌŽK[ÀRÍ[lÇì¤Ýâa|6ÝyÛqÜ\²ù‘ê•¢&ð/WG¼ ñ£”qÛQB´cÞ \÷“º ´à ØIÎ-0¼Íg¯K[¹žtŸ]÷†Ìî›bìË›4ÆÂ\?’2¾òzàêpÆÉg»¶Aëy\ûßw?Ðþw5X^] Þ!Ç][Øÿ½È³°ÿý¥Ûþ÷yVÿLûßµÕÕ0¾þƒåEþ—yxµÇísróèã ìÁz-Ë«*¤Êð啕ÂÃû>e†úÔx'Œ+a9~×FFé’m^iì+ÙÙX›°¾Ñ2;Ìa]9Ûn‡ç9C­ã(&–ÍÑ‚º7$ºª2¦œÕÝ• ¶ûü&q¾HÈ)†Öfµe† ~Ò0¶ŽÏf‰®¦ÉÒœ­gló¶—çå£ÉÍ-Ÿ¶ í ’1lMhNiÞMk'ÞšãcïµµŠua2êöú(õZ•¥†¬¢ÀQ°=δKˆtv'ºœXJ¡û|†ZJôtfxë¾éuÌéh¶ŒMbÆ3hü ˜ TÄë_Ï3â»Ù¬—Û;mû”(³;vMl++ǔ͞´-kx}ˆ‰-ºãñð²G$¢m6m—Ó‰ÄXù }íN¼cÈEÉlgøÕN ™1ÅNÀ¶È6sÚøI†1鯜IÁ—¬Ü–N"–ù´Žãwü*ý¾L…ï§*Ô |}‡_ÍMBÉrþL üË_Êb'”¶žÁi¢Ó¦H´ËcæÃÿkÇðϾ?Ðû|±êÛ5À&½]Ô”7¶ÈDôà\[%zbÚœr¼|~ˆÝOÛGûº_Z®¶ÛÚnÆì>™e+…ÜWæ­ÐîáQÇÛÉ'5r•?< *ý󚾉×åS•ªûW¶z•¯6³pyçÁ%Ì‹L ;ÿ(#Öwó±¶">ƒ{&ˆ²KóHÖN3pù»›©ÌîZ²SØ€C>Spå8(©™ëI®e $¬p ¬Ñ¥ü€gEä ÕuÖöÝ ¹[K=îË8‚RÛïi¯¬/m0ÑLªñŒž-–Љ[p#ÿ{ï¶Ì*vâú«1[Ûý:]`9pO„‡‹+Aà™ßNŠ"UÙqôF±™V“ã„ÑŸ$˜Ô!“êbœwúcþ€Þ»R'…AeǘæîpbŒ€Òb©/^½¸†PäÐÈz¶¶“ê˜)„#å÷{÷ yŠ9þ_½ÁÏ’ÿa5|»ðÿx‘gáÿõK?–ÿ×3­þYë?€%ŸXÿa¸ºXÿ/ñðjù¡Bòo¬OàøÝo¶šºÝ“w‹¹àE¿ÕUö…T¹/ÈW0ñýn†ÛVwú­×ïÑÅã"C–ç×îþf³áZ¨ â ÓâBÒ|A¦g¨ËYliF(aÉ`O™,åq‹:õhóS}Å|Þf9rÔ Œ1¹^msúr2oöƒf Õ³(ê iE¢7‰FJ%DÎ1›ÊÁ–„„@\¦Z2ÏÖ]ú)g À‹Ì~ôMÆÞBÊ|ŠFtç--l·rø$ñt cq(§ÞµnªvŽŽ7ªâ½º£—=°0ÿ=Vác ñª©ï©ò>"ªÊÝü@+õ•Aúx*mîzq’‚CV× *Ú˜ä!DZJrÌßi++Ë\{˵֦Fâ3ŸN¨•צÏ[U†”Œ`|êÇ?ß"I¼"3 Î.õ:„n°­û{J½¨@NXîPÞµ¢3M°°ÙUÙòvuØW†Ä ,ëùwv§B«yF¡œÐžãSDΓqLÈ«çĵÑÕ /k4Êd·@¶ hhjƒ±t\R‡A <0k.tä®{d>½ŠÈKÌ| ~'ƒPdpv©ï+|+_¢‰é~Ž ;Wñßoÿ%ñßïÿ•SUWS•+ô1nµ*ò1|~b®W’'·'(s†?VÁcÉF)æð$jR™t×½¼¢rÝGƒ+œ^ 2HÝØØÍsÙ‹,=`û™WÚ#›Ë†öëq&5ÎÚ³wš<ÏäÀV~¶UQ³õ·ŸÑªÈ±ÿÿ‘ö?«k+«P€â¿®®.ì^æYØÿüÒeÿóL«¦ý,ý·ñõ®,â¿¿È#ù)×þ§}^5bè$ð`6N(tœŠðK»ÌiÇóó‡an+KjÖ(6ŸAŽG¡GŽÆI šF¹9ÌVÚçJműtoHQV>}¯„VüW'èhAðŒŠ¥ß „º‡×cm³¿–…ŽO¬ƬØá-5]¥S0sÿn‡Æ>« z×(A‚è~ƒ¼?‘1YÓ C$£r‘27Qªª=¥¼È±Oªí)€áƒ#£*,ªU8¡àápš(Ð<ÝFì  þG`M^%-üû/Q…k¨[çòuE½þ¿aÏðÊÿbòõ/?ÖÑ??ú^cuŒͶªIÊ›a¢eP”2÷bP' w}ha4U,tµÁàòÇd³7èÚ‡«(sÜS¡Ÿ%EKBD•´¢mê3/¢a6¢†X ZÌž%Û¼FRòÝðjÚŸŽ5(`ÈlPŠÞ]X¼̆¥ EŒ¥ Dæ.5š_»cðíh(}Ýap°Þ„Q¶xá'ñ€iÀ+ÅdšwŽò2†C2Þ]Ô`NAŽOþÍ @¿քۀ$¶—Ãi_ñ(â”ñÊ¿s9÷±MìStpPÀÆÁ°65W¡èXÑØv¶Ž6Ú[¢€Ÿ¢þð«2iQû„oªÔ ÏšF3ÊxG†QAÓ·­Ì{¹1Z?Ê2#§íIJŒ– ï,0VȲ,KŽÆ 0 †SÁÏZYˆmÕv?fÄ÷ÔÁ7ÙdzÊ‚$)aóYó4W'³‚ ©”ìз‹ô“QÔöžÊ ­0æ&Kµ1ætƒD½ç­ÏœÝË ~R›„‚ÝŠî—aïJ¥…‡ý‘ì¸Ð‰nDÉ'£¨+ã-Sü)•Óõ{#ƒ†º}Ñ»ÆÆs䃨Ù?„®÷·ƒEIM"¿…~ÏãÝîAaçWn*Å~ÅÆ:1uîLì)ç–BF™•!]O‘X'Š8ñ&ý5™ŠD \¶ÊʦîÄ€°^tœÐIÊ…W<•‹]Y_`lº;sQd#„ú€-aL l[}qƒ_ØŒ'»á—‰Uq÷8Ñ7ÖLYÇkïZ "4^DñQEŽÁz³#Ñ"ì\§È%);ÙØU8Ò%FèÄ`ˆ óÃa,зþ¼¾xtpUaH ¿ñõwË]Zѽ‘lø!Î5=똾6ÛgGâ‰óGqîèL"€aíàKQœ‹RÅÃDZCÍ7Ù‹#PÉÌ/3f±¸f›îÃ,3«Å'[uÉYc´·ÐÄTjdES÷S;_A83Н‘¦I÷á™DŠFRokÒæ[}^LßÔúÅn ±7v´¥²%¨ZŒáW(n(]Rr¹"úZ‡$|O$‹øY–×±øLN\Ƴc#Šñ—‰né²öwûKºÖ£}þSj=zýÏ—ðꂵàíZË”ÿ3\Üÿ¾Ì³ÐÿüÒ¥ÿy¦Õ?sý¿Yyû6¾þƒEü‡—y$sàêNB¯þg¡÷Év¨hf´r¨‡æÓ„sé¶¢ÑZ¶Ç’ÏýQÐEÿ¿ÌïÀNnoêKt¯þ/’Ã÷•ú¤<·*E .€üÝ>õOGFÆsÛiÅ´57½/JzwD)pè^–»Gÿ…ÝUQ§¯X¤âIjqbJÁÕ¨5èk²ˆ£ÊÉá÷-§']§A* 8úŒ„¾ÄÕåÌ„h*Øåpð¿Ó´(•ð ¡Û¨%­ùF®æC»ùŒÎH M!%á]ªr&¦@tt4ù¥¨#«ÿ4I·þØÊá¦6Ø%Þ ýýîí¾ø8¡·3lp“n¯ïR”MWr«´M—ù ØÁÉí]„7u_I?ô‰cb³k¯ o€[1PXô)ïóýñØš=uÿ‚ÒCi_Åwµ"¢Šá¼Vƒ¦ÙäÒ~Ý¥™ªzƒÿ¨Ø°´ék7`¨qÛÝÑm‰¼Za½åUwÒÅ·Ë8fè4]©«ÖF%ÿšü£ûñ/¨zŒ¦DݬäŒ}2·Ãh›Žõ§Ò«ÐIT¶÷±ù,óè6NU€{qtÊWRp" ºØUµsc¤’«Én–54§UuÊÊ“”>º¨¹5ã;­ÓbGÏaÚ=óâÊóØ÷?7á~ÜýO¸¾Y]yó6\¡ûŸÕ`!ÿ½È³¸ÿù¥sÿó\«æú‡Eÿ&¾þƒ…ýïË<ò uî6Ë‚Ø#O¬v ]±ð_úPK àwp´ßÙïœl,Bù9¡üò\%eÄêÓ£¿G~  ©áö|†<µ‚–ˆ¸W ÞêbTJÊ};#ãa€ Ý:KïLE$JYí©w5èMg®åpß úÚ’T×4¸€lOãl°Ã©,‹æ} †‚–ƒ)X›n`1 ®ŽE¤Ä‘l‘\2'»”‡C“:ôó¼w?{rfÄÜ2¹ú$c¸Û5LHo‡½ËBÏ@UNØI¸N8½¶ÿªÊW ( -6±‡·=-h8ÒŽ™²Õ¶¢„‘£3⑵kU JG$ÛSæ›ÚŠ:vYƒÔê듯KM.»G¦Cµ<Ó2£CÜ_w4Ìs‰ôø[‚¹ÒÀn?H„U1‚øk®H8nrˆšåß®e‡ÁIæéK?a{üYÅOGþÿHý¿ÿyeáÿùBÏBþû¥Kþ{¦Õ?ký‡+ÁÚZ|ý«oëÿ%^í1ù¯ÄñÁÁưçpFÖBøo¥,êð¹Ÿë+x{Œªªcü”¦!·N°È!>\~O<üN3”®½ ™S³¶"'¦ f,à '·¦^u¾–âu=¦ô«¬K×/䦠‡Q𠉶.G—˜tšC=rtêÅìK^¹¼Ÿ5 Ñ^t7SØy«1(*QÁ 0ýá×8ê…<âqÁk¡û»eR[ñWQ¹6კ€JäS£"ÄmBH:Õr§ „ô’…uü‚¢ž‚~=ýznô™—à1|ZôëÚ¨ã˜qIÚäÄ^¤xT_EãÞ–ƒs|}ÇþIü“ÇÀ?ÑðÓà>þáިކåYF–-†U·ã·?Ò¨Uǵ à?!ý ù[ˆßNêôþ„l-¼¹XHf Øåõ²øX‡ÿмm¹ˆ‘ÚÍä¡âCÂþ ô¾¥óilCºŽ–ä¡Ë}â.q¸CÔŸôö©Ÿ‚{ƒ->…] °GÍ2Úw´ŸÎ¾EBoÀHœÍ²v™7ú#C¡sP¸N< zǽóàè gœŒžû„Ó¥ìú‰\n˜2¼Vì^ý/µ"ÔŸfóuô ;w%_¾B Šu;à þ´R¬[Ž”½ÂO¢B¥-oÊuÛéÕö©U ‹Ž|á²T ÎÙÑí«@2”;¡¢£«Ë2øø¬õÀ ¨Ž('\ q6>ÖM(SgQqô“ýXw0†=¹}²Žçá"J¡=7 ‡ÙÇØ»Èˆî—öQuú‹ í‚ççH,;óƒ.Œ»‚ê.Ñ”¬Óß Ö ºKrª:îT)“¬¶´þÇ}lÝÞÆŽä‡ƒ·«kû1zƒ.ŒÒGѨîUÕÛ#ç푉± ·'O˜`Û»˜a2· —‰qÒ½•BKÙ”¨†µþ{ü_*ûßÚ©ÀOä÷úã¡si«FK·ön±Ä_…êMˆ¹ÏÑ>¯Ä@ÐþNœUÀ¯BõFƒ8Âåエɶ̀yBAXí8L8¼ù¬Ä‚ñÖdKfN$€ºàH@‘-6%?!× ÄGJ‘´Â£¹Tâ¶©SK懡òdMçAAêRY™ Rÿ–ÌÕSÆÏQlxÐ²ÑÆSB—x2ì‡á){¬ñä>?O&ˆ×3Æu–!ÿÚßJfol/¸1˜e»íc^ãί(R|^ñ±ò'¼ cåOtù#»Opogë õÖ>lë‹‹ösm}!lÒMO¹%ÞàâÛ`z‹á†F›crCôölŽ>Àr§¤-Ó³M†z—ÓÛal›ÔÛ§›´ø·I½}fl“¹fK]Ž Äøk÷>>üz;¢ #f–wø€íH­0pLè.˜;c  ”äÆñpL¸KÖŽ‘žå×3‡÷¾0{ïsú˜={Gži²Òw°ø>Å;lHñ­70ܦÜâ'ª¸»¹-Æ·³ A%~‡öAe9· rù0A¥!•TV\A¥¡Ù©—T®Î#¨4²• *'T–"¨4,¨4*¨$E[PIŠ1ó *OpZ=­¥Q ä!Y ãÅB%Œ¤ÌR’©ò¯‡ñb¡’‰¼gp8BIg•ñðÏóH OpAòˆ}'Ô~BûEŒ[Oì?|ã/å»4Q[L¬gKò€õïNÞ\,FÞÞl¾ß·;Ù¼»“-y¤îNAŽÝi. !u±¢Á¼[T<ê¢Di0r¶ËøzF¿åÅGŽÉƒýÓbýƒžÅÖû6!{Ä·)Åßûö ·Þn£ï~M·„n/qªÇ±ÿžÜý,öß««áÂþóEž…ý÷/ýXößÏ´úgæÿY{³’°ÿWWëÿ%yÜ»öß½‚JЈ ¶Ðüb÷`«Vë»tÙ²~\gèœ ÿÔ7:µ Í 's\˜~'ž¼¦ß­ÚQ­áHÑäÈ×:JžIs#§O³eIËžVœCUÊ<þÅõ·[D9z½ ÿîªÇü!NÎ Œò|ŽÇ=qðz‰ƒoG+2PPÆÕôR‡ÃBzÄëâýÑíßßv¡Á¹iíS4Á¯Òjƒ ’Ùȶ‹—Ÿñ;X Ü4ÂX혱”häŒn²[H‰4êE¡o±Ytãñ5E±àñ†ŭkeu/o0'oá [f¹ZA•ÒT‚F²œSÖ²ÑT4T lÙ“’)P o á½Ì±)ð8îq ­ZÌ&öUëÕ{ôÖf‹aœ—ò¬Átªw°zÇÔMÌÏ„Ð@ .’™=óšÓšçv†4NsXÆ·šÃ¹Ý" Œaׂ)ïU£*û '<°m06"¨;9c݉¢\Æ"Ýð‘`"ãñ©ª*wpþaä4—À~CôeÿÚƒQµÁ°;}w<žÞ1uPMFa}×ÖtwðV%XŠ#WÀb<ýTÑË̾ é¨FDîFMd>~ ìaeã–Ü ‘ºméíEå­P(Ÿ‡ªg¸“ŸU’t'oIÁ†ŸAa¸Üª²ÆãéKmwnZ²×1ãgïÖ“#èÆHŒe½/Lýä¡ò\O8W™µ-DßîGÀmPÈQS;sWÔAêO0kõ*CJÎÚ2òÞom”gü³­ºË®É÷,W½Xºw t;g,"ìà  ia x+sÝì×ïЦRGÍBñ,v =|›ÞaÑKr¥Í¨0ŸKÈÐã-ð™ú)^Õwµ=8QJ ¸sǺFèE€kYµtc˜Á½"kÇœ-BYY%­Añ7LS€SKTDà)$\ê2Ÿ±¦B¬™1Æ­)kiXÇæ·’™£7ËNÅÉêÇç|ë£wYH-ÃÕvæ¡Zæî“¤ûî¯Kº» Ýãç#ݵG‘îñ’î®—t׿%Ýwó“nc.ÒÝò“n°ül´«4pDAOHÄ©pgN¡ª¹kU›¬EÝfF³ù[è·Y”þÛc(ݵ™WF·éC·9GýxíÝùª[+é·9WtZÑD–G—Ññrfát*~N'È`EÅcÖ\åiÏ‹$8Qy6V§’ÂêÌl1×y_F•^gfÂs`TRx ˜—ÌÃgäu*ÄëxI7CJrÒ}0«SIaužˆtWEº^^ç¤ëåu‚•yIwõy"Ý-/é>—€Yy&N'îÌ |N§òHN§2/§ÛÕËb§n%€8hž”Å)~;MK±°èš×¢ ‡[)ŽÒòAìÔuNˆS95óØlùàÂ\’ù ì"V>˜õ·=—“ ÚÅP€“^·/sàõþÓ5¹K•ƒ¬N^ª-¨0Dât¬²|Ö§ƒËÛÊNwz}×»ŽûÞ—!åp¸‹&·Ã«*ªÎ‚¿ÅÛîX›…½×> bº óA¾èÄ)@ñ3þŽsŒK©8oh”tü mÞ±Šb[‡ …ª¬3€Œ7Éð ÿ,¹-ïrsTg]è–ág,¼Ò·åÝWv£PDïÌÖl„êÁ’mà6±mÖiINÄÝp<ò¢!0lS>.ï9',¬ÏMÛ!Èl;ÒI ŠE=JLÙª£ÑG«Ž2~@Ü[â<™PéÄäñt †*ÇíeÒÈ‹<£ªm¥%ä¸Äˆ“´‰4¶6:G«¢9"ØŸúÃËÏðêrxERÀ¢H8»Ñ—¨/VD}·Ö^Bû“éýUWzÕ§Ÿ)Â$œ¹_’y*q¸ ÎÜèä™-w9SC^c=˜8ZÊK¾``ôHöÒNÄÏ ÌŽcXÑÕ{» õì=  !+³‹evc?ƒ¥]=¬»î·ÞÝônv6&¹ñ­LjÃá}"ºªR«º®‹~Ô……R6›>fÁd¬ÒŸŸ¶‘™Ê1º£ðÏHÇ‘š†Ebû5©ÕØÿnдAìÔ¥R<->ßÒ“ûŽ5ª¹Œª²3¹$© F±éî“cÑdà0’ë×p?˜t{ƒ±!|»¾Ÿô5Úyh}Ô£d²´df€ÐAvGÑ5 ÿà’è¢i¯ñr|‰)s-Ù£Ô•ëQtfô(Ï øzäµz³Ð»âì ï‰ú¼ymZ:¯ ð,¾…4ÓtÝíCo0‰F—·0:ȖȤ%‹Ã9…U6¢ÓfÝœ)S‚_š;Ü`ñÙFŸ„)2¶ãhò»cæèRÂQ”m(²vÕ½°m2ìÂç%ñO±,ãEs(åÁ•Þ7>Ó7Uðk4rhÔêþ\/|.–™§$ÜÀpV4,éãà4ôA~B‹Ø$°³ahD+œ~¹bãêE°¼$ñ_gf g¹ ÇpŽ-US§CôcÉ‹´Á´äÁtÖ¨¾‡Zeúw) SžâS ¨ðu8ú<‰(ÊÞOË­ú’Zx§O°ðN« ɳðò&”Jä“2ïÿ‰ïüeª¦Ïe‹ì¢o]ÚÃ8š9áêì/ŽÊäà?E0O,7L¢«²ø4X 9î²ìmŒjÅ +z÷2}‚øÈ\Ê#Ì5f€m0 ‚6ÊUÖ¸Yù¸7š›[²hoœt´ÆÇ øw8×@ÄמÄèw¯vVÛð`w¶ñ/ÿp’3üŸþÙuç à i§ÝÙÀò§éÝ­ÕÛ5&=§û»ÔÌFbÞ?¥Ï‰Ã×ѵ=¤²¸xZ+eߨ4j€“RI¤X1—U± lrGnìœÃ¸lnìíñ̳[klR&˜6 OkO`;íD†æÐ4{͇*;<êxZš7Dtã‘1¢TâBÄ‚D_ˆdhúíAá*žÚvšˆG·ßûO$ý}P^*qy;Ò• .Šõ¢×ùÀ¶ú%É‚Zµˆõk^ҎɳT:óõ!ò>óG¹¯G*÷DÄoGâ1×=¶DзŽ[*†‡,ž•XøS÷òó×îèJzÛ]Z1qä€IêñfÝ@±F„¤}Dþ@_Là=ÄMá”o%~±Äìs¡ Mn­‡lÿð ^EßàÌŽ.G :ê£-ln<‰î©³$¤…¤SŠÇKJ¯ÀËáh«1Ê¡²À ‡­²ß¾Ò~œÌ]¨AQˆoGT„3Apn3¦Ø‹xø´‚ØÁ*­J« QµÖZ¯¢H¹Û©"]P µüÄ"¦máÛ-5†÷ßÝ>Ø:åŽãlÊ«ÊOi­JŒž‚;à„7L5Rïïàee@÷•øí”¾Ú:sx±Ã/`x!Öø'묓½ÝQKX4pë¸ÃÄ+Û%ò9­ üƒqœ64^% àˆBtê¤PSEOigÛÈ茿?ÖOVÙdì:òð¶geù”;¼EKðÀì••`t唡¥ˆØ ‰Üh¾öú}KïÊ ÄHÇ«»GÚ]qÃ'ᙯV `Z¡å¦Zà@¶C™÷:á•'ï.ùQÔÆÛŸèµ‡ا1¼ÂûÒíO£øJØ©nvüÖ.„Ùy®JâÌšAÙêuP@Yfh3·Ñ5-+ïL#„ŒbadÍD|¦¸u\œ0"È›¿G‰”¦ ÔØºC#Ã2 ÿ$ùšOª§ÎÎAâ'³*3×ibPd”Gè&ÅpÄs¬¨ºëë$<ƒ¡MÕe:$ [„ë¦kO€6ánuDöF‡ %s«“0¬ a˜= ºÛ^%ðQš6q‘5¶ü;KVt÷[.ëTʱÁ™öKÙXªÐXÀ9šÖòUÍÞ·mðyvאַ‘ÜÛíñ5Ûø (î&ŸÚ3‘>{ñß“¦sjKˆæ¶µ‹2AÎÞHã0̾бD‰™…¢ÙÛ©…ʦ¿’µ{Î3ù²E{+ÝÎÚ« Dêfîâ&‘RË/Ï”i”¨¦’Óð˘9æþm®XPÛûkÕzŠõ'?Ýý„w¶o€s7c=5x+,Ó×I*òæI†e‡/ý¨]Ó+”\ýl’˜ì©}i3²z;··x/PgGMS6Ï ÒNš™C"o\Í $ó¬Í=(žw’µ SÈÙó“Û1‚(œ0¤RÌ uÇ’`"Œ@Í%ž£WzH€ëƒ$v¥ä7„åk)mx™t–ÞÙI]@t´†ƒÊ4ÖäŽMÉDn/œbÝVÍ S»Òª;3·É@÷š­¥W¶KÉÃ6sÈ&v8ŸL#c!b¨@L¶ë>?:ÜʰÀ¶Ë¶ëßR–˜ÿ²i{{’ûÆIn£îuÓö¶Og0 bëÝrõ0é…š:£èr¢,Ñ(P^æ<èáÚK׫Ž=väzXçÁKínšF¨c$Ç- bÛÞ¤®ßƒé„,ÉIÙûGwtEöæh”,mèÐhop5TºN{4plv¥¼Ø£µM[Œߦ¨ú˜¢­ïÊNËõ%Å-xû%¦eßþKÕ*Ûî~J ]Ù<~@xŠÈ–@¬ÜX…¸MJؤæÊN´N Ì$”5]z„RjÆ—·à·Ž.²‘õÜÝ“–¸ÊÉÕXí஄޶;Æõ3Æ »úne•¢î¶ÍE3ÕÝ@I³µÝè30KÛVëO©íî \mwà×v›$õ£P!|+i¶Bz渞¦ŒÞL^0ü6‡2z†‚æ4ŸªÊVMx(%X: °zÉÕf[ßm˜Y§ €*1ßj+£wB–¦æÔ.d+¡w|$;juþO©nþµÍi-©mÞ±t&DBé$#²TÎ ó__ã\z ÂyÇÒøîØŒÔŽf­f‰˜ άJ† Ksi©µ>oÆÍ¯Úk=vÉѥϸš°’3úþ€Ý9«qWÏœ²Mϼ±Î?豟=7?Ÿ%ïÀÚóÒ]º¹”­?Î68ðë¶[Ýv*f"·*¹ô«h’UGÿšŠäRR§øSæ$ê†Ä§½³Gr–Ф²]/±ž8k0b—pØv|tóÜËéK8 ÃQLA¦ºx=¡º8xÿ¯(ÌÀn«{±¿éè?B]\™­.®ÌTon$\Lméj[«ŠñÌ^3IU±¦´Ö ŸJW¼#ïH™È®:>ª£«MǨNÛ!0iθ0 5„R¡^>`|èßÜÌî¹b0lì:<) XN"(¹¿Ç) ·`%ÁT::îü˜e>¼BëRh!}bÑš/5Î+Üs8Ò?(<Ÿw¤ØFBÖ‘ž5–‹8KŽ… ~;6(ˉô®€á‰é3´¦8c܆]c×\ úüï)œsp;ò‚©?¦N²Qy"¢ô{¤GnŸŠ— Q³˜~‚à ÔÊÐÐûÔçúe&bÆà‡‚Ô‚6´" È(b…í³‘˜`Êöj‚Ý Ñ+èþÙ·ˆ¯Ÿ>ºWÄëÓØ-dÆ1£ÛÞ¶ÛîŸFãÙÇOÔðëþÛ¡6XœhLq`úÑÕ9¯ €vóºü_¢î!ÿnôøÿù­Þñù%= ì}ËßzWfïÝk@pò ÌøçÁœ ð‘ç…w¯!ÏÚ] <È×ÝóVê×0r^t¯ËkzÕºLÎ2kÂÆþp³×%uð%œ‚ó¬ÌZeÆéµù¤msKGÑ9™ÌзVs`[»QÏmÓj5ߺÙÙm5ÎOdÀÔ‚RŽï—ås õÉ‹{Þjt^9sú# ýEá?%bz"Ò9 ì\üfâËŸ­ÝòüYpóEæbñåÂÃh2 ®Ñ.¡ð”jm“ ˆ¼GpS‚Å™Úð'Þe´4ýüj.FÍHƒùƒÝð%ÕŒS‰€>ù„7Ä+˜€„y2ìÂ*¬Ñ?Ô’š<ÃY߆‰÷êæ=NÎÈólC#+5•Ð,É€’ŽÒ¾œE†—šÉkí ôXó”VA‰dT›=%?©òà crPKᣇ›­ óq^[å!3kt,6ô‚‹DOŠj I<ÁèÅá×mÒÑv©²èB& %>‚ƒÀ`y4öo¹!Óçd+üíÜ4àû_GÁ-¸~G\.ï'äë¹ñ>Žû·pÖžáy¦×&³Û[p&„Æ7baše^å­-•×tu…ŒÊFý&‡§ÖÒø;"—ÿ ïà`…¿µUb˜»©ŠÄÌ‘ç½UÁC»a"¯PBÎIÂ[˜ñ‡“Rs|¹ ¥¦H g¬f’±cæ¹I±üàJ2£òÁïRL¬Ôç‹¥ÑE‚X«ª9_t·}BRË·Myã>² ¹ÏJÊŽ%H=ºïß|âSRåÖð¹< ѯIc\;Æe ’A™Â‘Ú$KB`=ã¿›çWçÏÂ&ɹ”\Nïý]áÍp…Èö 7$nu¨¥\vŽ›ÝæE[)x)ådÑ>AÙÑŠ«)ö›ÕÂM_#ÝDÞÚÏ3 D‹ŒöžÈ‰>ÍÓ)}rèÖ\à£ë‡g>]û„ãAž˜²Q;Ø´Só­å9ÀÛÚTdWˆMOׇ͚ªõ ¥§ap\ûáÄ6XóêËpÏ5çQðÁ"N ¥;ŒK¢†×Ága.m‘G,ÜÐ 41Š%„¬þ ®Ð’ã°-,LÎõǪ_| ä—CXÞ'^#:á°%gÈ‘„‚8)´Ê­ µ5ô?‚0ù³Éˆ¦*%Ö8á]<(Í uûd ‰ŽÊDjBäîFöÇ%WÎàχHyèC„õ¾#ÍË §×ù‚@Ä5ÎgŠ%x¢²°wš‰VðùbÊ×ß×þMö]*oÇÐ'ÈÍÅÔWX5¼¥Í¦`zðöóU˜Ue±nU¼=­Ñè ê˜>™̽‡«¥ä¨ &±µ é«ðÍÃ=£¸ÍOgmo l¡&b*šz€w€Jˆ/x¢íÛ'tŸz±¹ ªÁ)˜ L¿pGB¥£†PÕ€KªU¨fߤ¤Kž0Íò’–»LLÂRm(?Y¬ôúhŽ–X÷ÆM¾nˆÜ.·3÷ËnšÈ'Cîð‘ÈN§àÏêsq KÌ»˜X”&b³‘‚{8=ܧX͸óUH¾ÿ½§ÄM¶YÜL26—k²GÒÇg¡"0Û. ¹ß&½å˜ Ú{ý !÷5<†J£a¯ Ò°ÚD¶aRQÞ²ÔôÀ^ÓE–ꇷ¤Û6<Eè30I¨‡°ÉÂña«ô í^kÐkô?«‰ì¶XŽü®#k¾¥ƒàiXà§µ¢eû¡}®2¶A@×—ÂÊv î„Tuœ,Xÿöí 0œT`NÑô´¨7W=ö<ø-¾Í--û”?Išõ¹aѰYX1Û*<%Õ,)¢3ô}<¨9´ê(:¦µl»}ÑÛ¶Û\L˜]-ý'°¼šžkdùt‰Óªöž>þ~ã?/þäSp§ÏŒŒ¤ü—E] µ@—·,”—!&2‘Z§Ú‚ë-ðÜu¢^'£ø?ƒÁn¨Ž†Ï&öâ{ÑÒÕ(è ÂÃèà>èðÑl£ß+ÛÈ&¸²LùÝØ‚Ÿé¬ƒÀY]T FEÖ³¨/?æ]»‘Æ*+OÅŸ{M ƒGPo‹µ4A~±]<Ï$©=âAêY¤ÍëP¤¯ïÙVI8EÂ;޵xì=èá°@¨xå½Y¢ek:£žîm‘ܲ¼mehmé½Ë†1¿ÛÌÓé·Ù173»FíM3õy•Áz–åžjªêÖVòïîüÜï‰?å-²+(à|I ˆT}Z±žS.ÉÄ÷AqO!÷ Ÿ¿ïñ¹È—ÏðY¡a³çé:ÁÝæ\N9Õsƒ‹'¸»î~9/™ˆuÀÜ3^õ€!¤‘†´BïIlûzTVäÌRükÞá2B"¼gÞ!剱§ý„+gµæ¼Þš‚ðøV1ª´´cƒ  ·´¨~çƒH~©Õ¤Á£îøen×°;Muö%Íz_º:ÒèÅhš‰ÉÚ…Îþstž£çÌnsCvõ!…Ž sûpšçeÄÆÈí…~"çÁšM·rhÃZhÌ×6>Å;ÞhdÐÌÂüL‰foqôÊÌÛÐóy5q{xðñÓ¬Ÿ}å3ý4›0pÇ Òè8æ^Ï}‘¸)Á¤æ2³/Ð?ÃïOüÍ>-l–³%F¦¿‡™Œf2º2D¶\[í[!‡Lžé R7ŸÐ­„ lÀhècñ­Võ]È$24è4*¡qg¶ô-¤`îö75b„áÚ¿“5¿Á̯Q…ƒ*~‚œ7Hÿn*Ò`ñù^a>yE¤.èOFHÝT«á©W„ MS+«Ë7¦ykàø ¼²ø ޲ øVÏæ®–5°Nëê²q_´=SRŽ3Ð×Ì:S¿­9ÓÞèÕB]<¬Å6ã7øøÁE.08&¦£ÈP×2Q#>]F»š+«Y3ûFÁ+PvÌæB/³ðÜ[‹Ä©SÔm½ZQ2åÔÎ/R‹þ®Mk£‡å7|œ3Þx‘²i>ƳP}èLS`«Ì<Ã÷ÚD§*×€ïÀÔQ“{/EÌÑ+Óêq>Lë;ä$ïì“gE2PB°X¸bÄD»¨¼¨ßˆ¢ß 9|iá¤JN ï80€a^o, TŸÌÀcªH¨ò¡~ Í_C;dÙeÜ,ã×…k’¹=-÷!…qn³, k Ö•çbþ9袖“¹MÐb¢fßÀï29 ³—ý“Ò‘ÍÍv“D¢ÏmdÈõCÇ H.ô¿ón4‰LnhØ ñ<Ÿž‡Õh¶´³Eâk,ÿ×6+ð ²ta0qS+†"n㇨âß¶Õûê7Ù}ö×j¹TC—±ÕaŒ”jÂÚ—”å÷"µ‰¶ÈBCʱz<…U3u¬1Ń\_sA9µVŽ.-ÚZ«œÊÌ*R§KÐ [ß?­4£0-±ŒbÍòøû€c}a}Ê(®ý!VXN.ξ$VoÄQhÂ@#z¨žAMÄ)c€výâ,$Uq£è®.±Ü§f&ºL:‚”KÚõ‚NLõ1¿I•Eä ajZ…A䤥4Q˜Balz¶P?KSbˆbBúKðx0ŒÓźúu?`GÂx)ša„U¢îqˆt*9ØC<~ßxaª E®ˆWhôG^]t6GÁÛ°0È£ ³¨ÈЄ#,-;ŽÅš‡þ·(9»©‡r[ € -°ë©åíÆ¢»nØpÙü=düÂ`WÖæÒð_Ƶ'ÄÙÝõê;üþà?ÔwžoðVrmð_~éKÁYÒèOÿµjÍÛ5Ç¿W¯oÆÿ*.íþK§VÄ_<(³†€Në5®pÇCëˆÿó>ßçDs©o{r£\ì"˜—ˆ¦¡LFwÓo !ísC’;‚[Ú~kÃQ -&$Öx€†yéj@ò„”Tú<2g‚ÿÈwÎt ‰)©Edó€Ã4 DAaz¢0bGèOçJ½/ˆªÄpdm·IfIß19áQ_‡˜ÿÀÿθùÈíÓVÞW à چ~­F˜Ôå­Æú@ŠÀ­¾ Þ ‚õ@_8@%„Î.X}ȱ¦ Ä“à>à=ûätÏPøÐR‹¼Eö’ ež¬×Iä:‚Sx '2OCÇH¦þ0ÊÖ€6T2*æFØÍþ­¨ùïz3õwYÉOÝßÛêŽtx*ë°ÊïPå÷ÛH蟆Še7ºuÛrOè\ò0)C‚×ÞÚÿÑv;tßpt±ÓmüßIax-%CÓ'€cN T!|UHˆp3Ý´?ã³ØWø/D§}üpG¤%“e@‚JSâWý–ˆÅƒB_ Þ« ôEàr•ùwþ þö~§¿á8]t_ L T_C>R¶DÀê2D)„äéiZõNÉ ˜ðêMGñ¬JÆì„Î֤輶:Óü[ÈzDÅÖÃ’¹µè]›ƒD ™ÙPªÔÍuÅ”ÅA³} Jî›á„^ÑTõjŸ¤éñ–wÅï’Bƒÿðž¾*­VQ¬!ï`N¾´K¬œ©–c.r±±‡ÑÇ;d¯Ì¾Àîml+gË>«½ ŤÀ{˜ÿm=úÞ'þï'ǽ¯^ò½¯µ÷"QîsàñÑ<“û3DŒÆÁÇ@Á¨àÖù§èq´|%ƒñ¦$M ‘@)诋1C»yy÷œ¨¢ C#Ü-–eŒE«@x ®Ü*õíê³ ;k7>Cn <pn/ }+üOX* „ü1 ¸’ö+ãi€Õ~Û‡ü ñÆÿp+°ž)€ó’Øi ¢ÇGùY¹öŠë`®.ïî`°QÜ\,DBp-!Š!«-u–¶ò6+@ëáu¦tͤ˜Îz‡· ö¡([JÀŽ`2T3Ý}3ö?òj,ŒèŒx§† ðƒ3#ø<,³ÿÙDNŠDC  1}^0%Zà@ΑžÒSþŸ¬qxÎ&¿#·(‘su·EW¬¿Ë¬^ãêý•÷¢Zñ^î”Ù錳€R…˜Ì ¤‘TchÇ%B·àŸ°Ôu/p5H í­<6¤wkŽ›Êùïˆ@àÀ ôñÑ ù¯îfð‡½¾Í?ÄÛoÞZꘄ¶ÚZêÜë/ll[û[„¿Ä‚‹öÖCˆÈÓ¡=~oz®ÔÄ9ÂÂ6gŽ4õóÎpâ„%:5³µCqåqr%ü+:¡€YÞ‘ˆ\°^§Ñî^^té0Ù2Ñ© *Ë{¨iÙÛ"·‘³Óã…⊎0³Æ%³VÞ–Ö„Ö¸,ȃ¬!û%˜HÎ05×[a”F rȤ5ƒ9eúVߘ²¸9õ¡éÚ»- ÖŒî·ÐÙ„¥ÊØ5þtM?h­ áiÈŸ²‚Eztã§ëxMÿ¼4@åòv©ÇÒÀÂÆ|̰·1èÚ³JŽ8•9ä}ØUèÑó¤?ÏÞs0¤¹µ pdJtŽ”v’ÊU»Ù{– (µÒG!'²Q/K£¿±ç©hxÍÚp!þö*Ã1Uˆ.€UsV'’ðf–ŠË'%ƒñõ ­"þÍÚÑW`¾%ôAû¢]ÉÔÂ;ï|(¹¾×x"Ô5œýÄùo¯±Sñ(,'å“¢nr KYﱦ£ ¶ÒÝùàIäz(ùFcœu’c™Ü:M•¦E˜° *Çô°ÞªHïÊTšcÛ~µMoÐU(Nd²­î!­Ϻë‡Á§#£·aúkF Ñ‘Ê „Ö]‚L+Å{mø­™xÎ:†"šúÆ„c˜ººÑåGÊÄS[}(°AiVtT?a^ ›d¯ª>a&œ¥kÕ&dǾwη R{1‡µ±?k¯"IfJSÌ{yïõã²WÔ •Æ6å`V)O–—,¢ÒãËʦUNdZ´)¢™ÌSÙ·G¬—K˧«xWz2¿ ²éDu©QqX(ìwÑòàŸ\JËŒëñãKnþµ/:hfð¸[Kv[è•é!•‚ž÷}ȃZlÉ«­Ë“ ·w›ÀoøwñGÞ _†CøÊx˜`R”ÕBÖfá!ç vÙÑEïPz€â!Zz½,³ÕÆ4/á ®ð¨õã‡I0 £ƒÖ‘™pPƽ‡–½êʦN—°ýôÒVt €¼GK¹wŒ‡ã=ü;"Š'E\à™–ðªPK0Âí³“úðäÁ¿ À‚„“¦T#žzxœ|psד'/Jaíµœ饜ݵœ-œßæã¤œm‡-Áñ˜âÄüßxMlEûmw{xnÙ•ç†tá0:ùåÐuä.âÖ‹ŸåÚo…ÍêzEó¶åp á ÕÚ.OÝã-‚ð=ä¢&[Z¸{hã*qAöµT`ñ¾F‘åÅ[Ø­Ñ]xÏrW6žßÇtr6t½R·Vìše%5“ÏÐtQSÎ'kùk6)†ÓÓk 2l‘U+CÕövk™$xžáaÈsN‚ñ1zmû¢³¿zls‚yY,F#žƒ?”ì°UΔÈQÏvÀÂù"ÉÆìB¤0 .¿1Ës‡ø\¨:ìÏÙzS´¢fU8s´ÂËÐ /c+ìÏe#< +Z1¹Ñ]4YTe`qhÏ„=£S:ÀêsFUfÿÅ¿kE¢°U£Î¢ãÂÇcRx¹K ³UO¨pþd‰zê xPŠOÖÎ{W¾Sa6f'H7Ñæ­D]ê¶ßŒseÉÄ£‡e¿* ±2OTç9þz8Õ)>Û]¨?ŠlGÕâ¸rÇIïÂq3’d,¾Wû~«h‘‰˜Ðé¬ •—°jÉö‘cÕ½8Éi¥àc6Ë)ÍL¢ŽµÍ2²Ó³YDB@DêÖgœ¦xL7`µЈ«v¡” 2}I—C#j‚cÜ›Ç6sf.«l!6V¬Olóv(-–)s]ÍEØ$sg–ÔÆÜÑØC-).Nòö…K¥ÀtÅÁ ÒUÄ“ÚCáúÃaY›—bÅ›÷³Jè`’Š©@Êßß“ò@I3®Œ–À–´àŽG£):¯£ Ćh['D%øŸ”̦Rï‘·¦ýøóЦØqx|TOs)ãl¿9Ö¦ÎØñ©Z¥dÊÒÁÎnƒ±3ü0êÆ¤iòK°@+1“Ef¦x2ÝŠÄ)’›…•Cõx{…»M±gÂb’lšu,Õì9Ç‘´ÆÀ ZÝÿ‘Y3‹`›\—ý_ftæ<îGêOYÿ~4N“8_S„OZù霷ø,´ñ“L-ÑA•,v>³ë5AâÎ Vߎ½k=·4‡ÅÏæ4úY¬·ñ©ì=¯øS®#Œí)fµ/ÎäÂæa´a Wr¡šÿ7˜TŸ0ÿÏÛóžïÕj^óÿêÞ&ÿg%×&ÿï—¾¢ü¿eþ´ñ_ß}¾ã™ãßÛäÿ®æs—–ÿ×êV ¬ Ì?ʬÝâÿu0Dz t1üÛ:âÿ¼Ã?Þ%D~/;çeö¦ùö²×ÁÏ˼ô?ù÷öÕ9~‡Ï2­c^ðQóu ÿå´> @Õ!¦!vþ¼èÆ,^KH´¤!ÖÖ; ‘AjÓWbà¹ó %ßegƒÊ„3u ºNö…›÷¢sBI y­’X(ü0gî¼^…PV¿ Ä©º‹)ÐÓ (…°þÅÄÝ$ŠúÓ$vY) Š’?¨•´¤¨ ðáƒwÑÅTVPÆÁ»m¢qÏ— ¸É`*¦.Ér ì/>MûHS;€­üUn (×Û„âCa-ÆT ú'&¿Ñìã'v¾ ¥P Õb"˜ÔÍy€#þ…†Òý.â´¨õ»9kýNšc|V‹“°ßÖú(?D³í„âäÖ¿~Åæs/zKÚjÏд;ý6¢q'qòÈÒÈ,à¦)#æ£Ñö0ॠ*“Ùµª¨Lndá4Ýk/ÒMnÇ ºq«ix 'Iúˆ'îðý&Ƥò¾œ† ³ÔhR( o,uÌÒÕr‰ñí¨ùÜŒÒö8ÚŽkKÛEDMFslò®HÆŸM¨y:ކŒén¸Z» Ç6LÄâ> ”Ê›r±ãÌ™øÒœœ‰ JiÑ'Œ0>›hÚÐgÕAâ’ð5< VŒ-u¹1ñop:ò¹–f•¦)EÖ¶äþ*\«Šâ%¡‡ÑÀŸD»¢nŒŠHúr÷_вt†œ¡†³p—²M¬­ˆ&S<ÜóÚŸ~óý!4H8|jk ³!)ÿvËÜæ!Wøªöàh ÒÐ_‹ÚÓÉÐ¥ƒíêšñî• œh-THˆ¶fkaÉÓ_6[k¶‘5ø›²j5Éu…¼ƒGkëp+²Óº¬û ê. J‡Ä‹{ÏG¾ N•þíg>&9_?P=±*—ãC­É™^“¸†8Ô»Ä0?‡¼<ÉF¹„ÒÔ ROMç±O¯˜Cq››ÿØçµúǾ԰‡q^©Õ‹dæc| ^º@. ªÊê8ÜÖ$ç…F¸¦’µÒÜÑR*¢Ù؉•ëfª\wY•C”n!Y%Mì¬XðJ`'Á®ÇZQµ˜Ð¡ªìÔ²î2äK ðða;¹› ÂSÛ?ø|‚W©í³J@xÒˆ”×+InâÞ‚Ö ÿ#_¨j'+0íAB¬ÐãàzF6ÎõQ›sœ6gt¤²?¬òU kñÚÔ>ÿÞp>3; ¾œ'Àm nãéuS­âáå³ âäí6Ä3“aÀÎûãñ‰©ÌZíÖoíãN÷Pà¿nóü¸„gç—Ö½Tyñ3p&Ÿ Ÿ¸§í°Û¹èÁ—ÜE\M·‹øÝqç ÕHªOŽfu^^»s^sWZ,^jî}sÍóÀ„ò5×;±sNѹ°<{ÁŒZô( Ѷ³ uQÕöÉÀÔv«· °«˜ìþ(À;ÍÜ©x¤ …ù“íÐñœ/Ôb/t’_¨›/È¡×J©ëޤ¤'‹Nú”kîäêíšÕãKbx£í|cÏòÆ»äW^š¯Ð"UòÀÑ5±¾¡%\rQ^Œßd{¦¼cÃYŠTõΈXOl·- Cä2ï€'‡ášgeV1Êð9-ÑÒèlÕ£%ûŸ«C)zï‹!püGTÅëF0¬&Š<܆“w⮢Ï]óÚuÁ<À¯„xqŠùÂ#V¢¡Ì Ø]’ˆè¦äªÓ‚Œ2Â`S)õ¬gÒ¥¿äi/…1>AÎIDyΓy^¼òPK‰cM XC.ŸÜfèíŠà†kØDèPµŽ T~x§Ê çaxX㣅}mŠ–6u&@ÍXµ”æÕ£žŸ*Q‚Ð÷¸G„‡—›±äG +MCOÝœÒ$™o 2,9µ Ð2Î Y’BÖ²!’&cÆAØÌŒ¥M¢pWÙ)I÷™YZ)ü…¦OãùŒGpW›OãØ¤ðØ3 ‹¢§Ì”bÁShü™;?m% DÑq{q²ÄKµÈ’g-ÔžJ“ßl®²?HÌ€Z+”Û[Ö1éh‰¸Ÿ"£m‹…#½U{Ogh‘*Ì~}ö›Û–£ËhJéÈÒ»vq™©‡ ñ”UX,áWåb3ÆEGÍ 5c¼uñ1bIÓÉJæä¦ù¶V|‘ªžÎG¬9Ù«F „-϶*hP¯Qî°FÅÚ1Lí›z5úÕ€ûŒÈ_°ê³S IŇ:ÛôYÔg—œïÙ:­3g§ídè4ÑRÂcÖV¼á«DH߆uRò£DBY¼š!ÂÍ1V-N)ç” ¢=ŸöpYh’Ñ£'ß·â¤MXaìÃ9vœ|p߇#=Æ?ð(–ÉÖv¼68—u,°<¤§4šÏÂ)S´H,ý‰Œ½[ä¬ çÂØg¸9éc[Dø(y^Å¥<)7xÊ6Á\°Ý*®õÓfTV­]ëmMŽa5Z@ ‡\X1«ìVµ÷TiyžAŠRø,…¬tV"¦÷Î\ª\*ÐH9ËÀúÙX¿·`Ö£oÀÅû=7ï_¬#ïKäµ[bìeÓ LØ'ŸI!4=øÏØÃéÚQ{CÔ‹*õ2+çÈYÅY÷†³®Šÿ…'¸ç•£Ãi ä?\¸ˆW±`öºªÇ»?—'†„p¥ô×xð¥eÀMZ-#@«ax. ¬ž5¨=lÕ;ý€ÄlåãÙ°÷Í]b } L®y÷ÂÚ¶”îÄ—Òx¸fBBRDxõ¸¥”‘­ʹuyó"ay#Ö&©K“Øj`©†½fÊ‹¿ÓÍylLI[‹I"WÛœ¾çe²ð³ò…-Ôè ùqÂy.×DpÖAû öLo‰åd3äX&ëQãvÓävÓÊm¦0Üó²Yí^-“Ù¾¶‘«Zâ\ŽUõAÍÖ?¹Ù,Ôc£ùf5¿›Ëlöv²o^}9†³ÅvóêNÛÍ˲úúiìf/ãšÅ[ô¢EZÎ6æ»-ÞZ.ZR go/‹åünA¦³ÛvööìÌó^ä±f…ã ¹@Má7¬º(@ÔÜÊ´ W­e`†B(ˆ$æ°úЂÖcçŽ`CH@‹Éщ8 Ú’§™“†uôh‹Þ0Ò“ìù˜ñ¯;tDl£3Oè&Î 3˜£2ažÎŠqVï¾$ÃX{™=Td„„\Á#;/SBE;–•Mö a­JÕ–[áœ(/M*Ÿ,RX±„ kUAZ¥ÕêF +8&JÇè?åùO;{õþ@ öïÔv7û¿Wrmð~éKÅXÎèOÿ;ü`ŽÿZ­¾ÿ«¸ÄÄmà?4"ü‡îy«Ûü@©˜vðv•pUfo{¸ò0Цƒ˜èÝ$LЈR7¨nÍ @„=ëV†ˆ£BPÿɾwó—¤Ä’úhīЌ Üu‘ dÀ*ÄBÓ+WF`ùWe@â*;zÄ• !èd©{WTäJ}ómOýö!ú"´4|‰†Ø L}0ÕÞ¿™âÆnVèÑþëþðpgx‹¼ÝÐÖ:8Œ‚1ãØFþmé lÞÉêûí•x9rܨŒ¡ÜñÛÝl‡Çø¼•¸¯ ¬Œg­L"Æ@¤`@¨Ö·`—OHL¹Å^ëÞT™ålü7ðHì­Ôö“œLÂM úõäÍÿÚ£){ÿÅfTk)»)ïû߃ûÙ='ôo‹Ëf;Dà§ëÑt:ºh»:AŽ…‡hìËM/mº›`Û îsÈãf{¼e{¼^^|£üJ¶Ç˽¥A´w¤ãþ½Z?Ûú ç³ñÿ½`_WYlå›ÌSÔxjHÈú ŽmCTÓ#~=vcþ•>\Ü[S¯¤IëÚœz¥w¸}æ†Äw”*hÎ?ð¿úƒ°ÁWAk‹«¦¢ ¥7^ìØ¶b]›;›#kÊQ‰·½¼,+y.¦½íÁá‹–¡™À9…ü²qξ{ÕÀo6™º­·-½‘tD#þ¾å£ÿ]c…öoÉ•­-Ø:éEÅeÛ%}ÎÅ¢¥Hcx‘¾[Øuhéµ&«ØÊh¬nÜŽï¡Ö·9ìіed­±Þñ| _*Ç+¤* ª—Ø1ln›Õ´UFÔ½°ê@Sd4TêŸo‹µ£›#žàZ®IsÒökUm;±¥ìÃfq£²#j“2#*d%Z(ÂóJôZbz6 `¢apز4ÎŽ]âÊ–6ÉÅ!RIâ&8›swµšF Ži!Œ¢m÷Â:Sˆ(vÚŽÀ èíU·ÿn²ˆËù› ÖÃ4R{Ï¡¿zt9-T’4† Ç(ô1Á5¬x÷ú±ý šè`‹È…¤…ÍÍ ÎÉ›€B)Ûì5`f›‰q@X¼îr•EÜYÏ–j•è$7©WDNxEЦ51«ÞW솫On@4n\a¯¢§Ú-þT´t–™ØvÅzT^èX_<²½ÐzýŠAÂEèQƒk®BïP1Ú;Šñ0[ÛsÓ„s˜ÔQTjjiÊíVtG•y¿£ßïÄÞ òRÛ-õ5ñ3!¶„ ›oCÄyDàÑ[!Âôðs‘þ¬ýLžó€ -‘(~U D$H^ÉÕ‹i´èÏÈqˆ@k7Œí§iS4só ï$!aœ@eD6¾0‘^ƒ:mÙv[Ê @æ mߘ{+ólÙá5[¶çã˜kåm˜d2 ž*z>ýªÊ¥›»ÉÛM¡b±ÜMØì!0¨ÌÜY3öÊûÎ4ƒ÷¸º4ú Xu‰Ö!É{P´óé"ЦOKÇȊЧåØfîØf $k/–enÉoÆ·¦—¯«Â Å¿B¡ëĦM_v\ú²“¢/;¶¼û_Û÷/V¯ LnúrÏÖ¿/ò è,¼e6ÞF¶£èŽU_vbúÒÊ]yJdïËE³7Ia¾´ð׳î>xBþÊûn…Ùɪ0;q…é¥^Ž.Yw•éÙL/ÞFÛ6c:´íŸr•ùðCìK;hcZ´àÍ9Þ|ê? „ñ¾öYÓÛTh7±“Uì|çK‘°I¼¢ÙÐÖ=kàŠ3ìÍ]kP`¬Á¯¹&ðå¬4EŽNΜıF×®¹¥eeeö ×™ºFv­X„¥»øEl¬j,â3eÐߨéÎB¤ÏTô¥Ã] ¤ñ&\Æ1n Àü5è‡?´´:.f¼‡S±†êû ùOÎj¸ºÑ¾ÕÒŠmxÇw8+²ÞÓòuÞÀ×úX´mfÛ%q"wªF¤ynYê1«¨›°¬øâÏÄW}:Ö•3ê Òþf¥åÆÇô#c+ªdXcYF¹Ñø#†"“S›1Æ~*²±1E[¾Y#Š)'Êìhã­«0KZ½á&CÙÙJ¥E~v¶·?诞‰ŠÏ®øLÝI"ßìš- hcÞ%U½^ Go”çû*¯ÇŒ ì]¶(:ÒßLU—š…eè:tŽ‘ m:z¨Ü޾ u½&çe±Ã”˜ˆJdS^¯¥¼b»¡×V{½Ú«E!cCëOªÁÐW ünµH)ᬧþhE‘{çõã¨:v“9»Ò4õ`‚ÊŒë×Ò\€ÒŒ­þ@‰ÄÔÙÒüøpß7$øñ=ªëŒ^ùzÍðÊGHã…'^,¾’t® C¬örÍ:!ë‹òµÌ.z›Î­§Ú&õj®>Zw[·?õØ2 —úuã,Á Õx$X”Žÿtû”øO»^}‡ßßCü§úÿi5×ÿé—¾Tü§åŒþ´ñ¿[ÝÛÿZÝÛŒÿU\4ÚMü§£»ºl]XПŽÊLGîð©ê(aŽì4ÚgDY©’‰©¾í­7'ÖxV«z^’ྀP´íÁ àtxÒè4µm0ÐMâ®m+Këö õ‰l’öElö¬eOF<§­É]Α<:.˜(I²Í)àFÑóQeqÿh°Ñ›M°Žqzø­;½'ÁTlRmÀ Ì:°ˆ‰(Â…¨<¬‹ñ(‹û`Ü" ¼u<»pÉìq3¼L¿2¹ *¾«ðFÜ"/µ+×?*í† í¼G t c€ž…ý!ùÁ”Œ¸Ü~S^W‰·Ñ‹µ{BMÜó%=âò𪢰ip/8Åþè‹ÆG®ÑßhLÿöÇ£Dˆ( !øö;%•ðÖÞô'œñmvOŒ ›Áïýél<ˆ?ЂþÍtÖÄ•‘Ïñ#ø§?¹ñ©sðPòP.„ïû_ø«œS?xЊÉìþö1õ¯¹VbwƒmèÃ)±=˜~º÷§ÁÍ6kNÙ·`0`°·b÷¼{q¯Õ·v²¼Ý·ì6øLÌRÿöö·Éìz:æÍ(l F:¸ÄòžFLjFj Ð@~ûÜà®N¤ÁÁ¶C¡ïà|üë}ø×!{YÅ¢ð[ Ù„ÄŸÙ „†7~ðµ=øÁîúî þäïóp©€×䟲fX KåÊìšÿòÍg_†”­? åFÉ$)Ðe,Úwj»¢§ìÕÜgÏ®ž½â½ â ( 0a¸¡·t€¨g-Ë»°iþ[LÒº£@i›ê¡KK€Ô?a³ä£‘ŸÒ ŸŽÔ*‡OŽMÔmdvPsÚ^è{þ $Ú5Q¡ ÂE[z¹ä+d¹”šŠCTÿ8Wõ+žÚ€C )jÆå±VZDU‰rVÿ˜}ê‹ÏÛÏUïxôƒ³‹ù‘µ`ÆÄÙz9 …ÕÚΜµ Ymép¦9NÛêoÔÀ:O¸EI“äˆ0OЮL˜Æ¾|1uæ›7M6ÅmÀ1¤r^ÀÿÈ5ÈW \@(kþ×Þ1—Î&87N¦œ½*Ë`×ùàíDZ2ZènßíP¤ÝYµH2aÄ»d«› £ˆÓ¨1¶l(ÄP^¾áôÄûð]!?Ý|üƺðÇ.àç„}D>’é¢AÞ¡×»[Âp"2Uõek:¨HÉáf4KÄÐU¨UŽÔJçQBUÐ`ÜZ  À  QxYlÊCQÌ%ö‚Ap“«‹_É\R^Œ°#<«X¬9€#bB¥|€\H«ZF`.Öºxóßµ;o¶¯Í¶ˆ.ÜÑ]ŠNôLC£ÐØVšåyÅP{¤cO¤BO< y"¤òO¤‚FñàãíR4âèl” Kf]ÿp r òTpšs-å¡4bÄ ¥\E {áNNb$ 1¿ÚÀö_ñ⨀ËQøuƒš±TÔŒ2ëý)½ù 3ðMHk8‚+ñ5ø¡r䙵ˆCQFA–R%’ç #gº=þVÅ%J¸@:tû¤äÁ"óqx~ù‡'>¹jvþ<À›ôÑIÊä÷¯ð)_ä’wë,†â&A""uîõ?Ç ùÉÚ\{Aþb÷*©.‰.°áÿü¥&9y>\ÊH`Z·—t¢Ÿ@’Lp râÇ—p~TçMÊì€Ð ºm.;vAb‡‰yº ®ÔÝUÀ#òN“¤ÝíÉàWÉ„è”Íçê—#å0ÄJi”Å1«ôy  GÔ$a}‡Ø*ÞÂX×1y±!>ÿ ÏãD:üÎBÁYxë-ü©2L¯„Õö¦meå’[ÚªeyH)!VŠ!Â(è)©`(Â(9ÊŽQ"¾^vyé$ÛœÈñÃ$Œ†Ïh®?•x%ÓÑÀ(¨´Q “s»u¬žQþüæxf†xÓaÀóÂyÆn“ÙZy´©‹©®Ì‚›/ÂkÆÐÃh2 ¸mBpü‡…:›"€ëN¸u„¹'I§|†Ç&÷Äùca:Æ!Ͳâã ~—™+kOY7Ïe>R“™ËÆ©ËÑu$¶çƒV¶,é`°$Ü›àËùÂåB@ëw –“˜ƒLïpÜ;ŸµžÅ¸I r+ }é@¬~Sðf˜W:ñF‹c+µŸåÏÝvñO¯µ¼W"vví„Êõ$ì<:€Ì£ Šò1úž8çÉ6¥Øö@È3!‹µŠ¬¢ûÑLhØÕ®,Û°qolš‘IÄÙY–ã"‡«7@5ɬjŽå)Îõ)ë3qNsÛªqú8Ý´pÚz$-s@L˜ìc±‘–©¢ŒÚ¸aGm>™C¤‘¹•ÁÇôù3Œ¹A¼4lðŸžt*Ÿ¸æigÕ¾¤ )XnÐí¦ívÈuMÊê2O*¨òbþÏù:o”óý£? sÁoËÿWe*@Œ†ËR5몾 ÌÅAœú®xÒœ “ .f f;͵9‡€ƒ…ÒÀ‰ ˜!ýÉ„<)Äô3ÜÏÓÒ˜ì`H+ øúÁþ(O¶Ù øB‘ŒÈ¢Æ·qǽ8µFËœOµ¹öùœ›'}:lÚ)ÉÔ®vLbæŽz²qlÚ{4ˆ-ÅvÑÊg쉱aV¬c$'¶"[¶”aýÞ9ˆ'#SÓ¾Ÿ/€‘IÀ¶ŽeçK¤«Óv¼D]ÔI ›Êf=:ñþß²"åòÐUâ“QAÏ­¤·pÜ XSÓјÒ\@ü2m£1ǽð3F«LÚP´õØYŠ¡1ƳL<¹@z–1õd‚Í ‰æV˜É–Ïbç/³Ï«/wöñl‹(/'Nßò˜¹ÈéÇKÅãóv×xòl{ž`ïj8Ѻ,aí½&€Î•£J óËQ¸,¶>g™-Ì%ªÕ%¦T8²³ì<݃rÂñISt7:ù <à¡fÚ¸ÓŸþŽNÇÂñ)ˆ£‰sHŠâ1à%ñò螺Åu¨Ço˺ø²Úg¸%Zê-ØûO”°Îá­ô{'ü=ÜAhÌÇÁys¨@UÓD¼ÎÊo⼓}q#ö* Š^ñûâÁØï°¹áj]¬ é½èGmù¬¤DO¨ hõå Ü”…CÅèw­EpÑ>;S›~Œ>qO{˜”>`ð¯ù§h8<¢°<¬QOéi!…’Ê}ŠL*O@ ™@b{6ì¿ÐŒÄÃ[½mØü~¡ç´ù¦] Ÿ|-¶fŽA…©) o羄¨Ìq¬2|ñ'ÎmÈûQ³ñ#†C#¬¸‡mè©: ˜Ár7š o%÷-Džî!9ŠÒÿ틵¹?ÔÞ'Èn២´‡á¿f>¦ìb6GÌînbÔè<ô±êõáWC=YÇ…æ9ÇÐ l²MâÈ .ºŒ Cº=Û”!‚"^¶‡2¾³Ú#A ûæÍ±*(™*Ï뺅ÇÛLG#Ñ HFè“Äf´ÔŒÕÄêmSö7 i™ý¡ùºõžJƒ›ëG…öVYd^Ëó|Tð™ð’à1ƒKîB–<8X||ÄŒWa1JVpƶº§ž(¼+¡ðf³b:u{Ú8ü¸p¡RZ,&ÖÍÔdhé1XxÍÝMÖæB…¥½Ð [{Ãp$6$æNh ¢xc¨! Ì‘£âºëW¦‘àGäN\j ‹òmÏÕº…u•¥$Í­&>ÈÅÐí¥¹ŽÅC–†–Í%І¤ÌßiØ]©~mÁ>û-Úóq ¢÷tÓµ7] ðzÓe_6Ó% ÖsÑs‘[‘²¦ÀC¥mx²„e5]Y/ªÚkPšíwýyûj[ ZqÓ—´!‘åØÚ %Ñpø9‘1QOéº|«è¹êR». ø£ê컚÷Ó÷]3±ïÜñ€ÛÍBW:zVô\-§¹aôZ:1teuÉ$ê{å²6ÕܲT·É’ÃxÁEcb¶Z2‰uÍbåØìoÜ·mUéâ.Ú`ÊfÚÓc.¨’L™£F!Ì× w¥S‹(½u®)ß2DB+ yº¦‡Ïäûâeð¿dy=z¼cPøãuô¾È÷EÈY‘£ ä©Pø ~ßFŽº§ÇhÌa]ãÝŒf“PPZÓÄ3 0¢Œ_!ûƒwàvê9J˜\³Ë ©ÃÄvj«nÏn¤º“/D M;×âŒ"ÛŠ }&3$Ü&Å6’p—g!¤H¸Uг4æÐ ©!±ÅÂSH±u)ŽN ;‚kÍvÀBŠ߆V?lo£ ä`øƒ ±^ìsŒT}樷êhÜU<žj|ø"NêDú9bÜô‡°‡Pîäßôg_ø " ê–mÜñù\΋£ÕoÏl§\<Ør]9ÆÖÈw®(¼[lcŠËi ù\z•5îüÐ'㇓ð…Ÿq8¢­YÝ* ½ã^$pÙ£M3QmH¸Å@S«mw@…>:Õ9fVâœ쮫x¯¨¾¥˜r7L4S²»•}n[ÀÑY,÷§èÅo½„,Æ,¼Õ-ÏSìV”‰x–³²Ú‰¯eÒaAY´âŒéi2Ô+Û¾,ÛŠF_Ž„~ñk 1C™ ;”9­ Z±&t¨¾^M‚®d,“£!¹c£Uª½cSÝG‰û"SÇfXƒ ÆÐ+aëÙŽžµ¦<¹®=ëvC$û ’é¥Ì„)ÍäzÈ2J³tøB=‰x¥ÌYÊlR3B²/zLeí®v,à’gÅ3ÿrç‘kG-t³ÊyôgîõMþÅM–•eYcš›áwT—L‘ÛDY?£ñÔ¶h‰,ËÇe=eJyZH¾S2ðQ&d`ÿwøñú ñ½=ïù^ <å€ÿ[Ýà®æÚàÿþÒW„ÿ»¬ÑŸ6þ=üÑÿÞÞÞfü¯â’Óˆ³ñúª}Øk^´a*i¿,Ÿ 1ãµøWeÖÀ©áŽÑôo"üög߃A> Öom½‘~8©¾úˆèUã2=7h/0Sº°â(’ÃÈ]fƒÙp‚ðZàRÈøJÄÓm  nƒu•âàÏ].L`6ÄJ ÷ëhè#†+ïŒÑy=]ûÃ`6¿ÓÁkˆW ï‚!@1éo. 1Ðú׈ 'KÃ,1woÂÀÿÁ”‚/`2!”²/˜I¢1’{úËÌi”Gþäf ü«ç¤5>ÖöP Ä€~ q¼Î…F!(ÞÚ³ý³ŠŸ?ƒv>»fN ±/^¡±UÖd¨x°8¿ R£¬¤šVRM¢d¥òÚJå5Tèþ9&zþ3â ÁRS»õ‡£©@…{Sö^ABª ŒäÉìžá°M‚˜F'"4}C*Ðû’Ðkƒ.¥z…ó“¡LrR;L€!nÌê!4úSëz&sû¸Ï ˜LA¸q(-F.r™¥ä²îƒÜ¾:0§#ˆ€¨ÐÈBLû@å­§xõ¯¹¶Óhà:~Ñ•¥ -kDà³\ÁŽ~@~¨–eñz:ØÄ‡â0FT}˜©hjQéñÊp‚ îÙUnòšÎ°p¥Ð8Ð HÂhåJXƒÄÅ¢U•Æ5Z´çqø<`×Y«tvUò¶é…Ï•é'•ˆ2®oœŠ‡•'à§>Í/ *ŠL^©¿ñ¹ãˬ䕂Êg.ãàŠDaÇvÂZý\ù2ÛúÇ~ðýû`X–?—¾ dhœ÷VXµ¢Û‚çºä„Ž™à²G¯ÜÂ}”ò¤P\xJhÃCEkþN'Ä &>ù¶Ä8WiŒý;Ndx#ñ{Ÿ #½ iØ} `©ZVÁKÕGÂ÷5ïŒ7î*v-Èê¹âçÛF |8±“0åZoš‡:ÕV—7RzCâ€nt;¡”ÌÈp­F·ûÇ¢ ؾî¼ÙÆ ';rnMPv£f!gaÿW$ aTù!m~°S¶,E<ÆÛœâ´À¸¥fB™nx…á>Žk•SáýEP×6ŽmøM óxš„,)à—2ÅŸ´Áü4ÚCoun[7« qo.ˆ7büˆ8X^ˤ)—U;Vuqûþ8Sœæç ‘îâ¶½çàá%G1ÄÅ]·Í&6M&ĉ ! û+Ls!€H²8»Bá ;59ÿ\á<õ´rvñ/qÃ#ÆmµfÑß çÏJ*ïs!8¥ê…ƒM¶¾‹*¥`Zd¯µñ¡ß;¦{ =üÚìaœb "å“–ÖÆ—Ž>lź(¡‹ùgK»zí»Œž­´ »¬LÇ¢Cªj8™Q9®s %çñù"èûBô‹ãyÉ&Mô£3Àutÿ¿¿>þÿÿo%ׯÿÿK_ªÿ9£?uüïíÕêæø¯Uk›ñ¿ŠKΉþÿpΦ@}Óå‡^?rï|5¾ý•–Ó³¼dÏ~f×>’IC[/ýqš—þxã¥ßxé×ßKœÉK.{>«/=Èqö¹æ®?Gw½JDT |É1w}ÆHõp¹ Qƒ¬ÕhÕHôº[œî÷N4t6KãÒÖ䯆Öô—Ãq–á¯>ßø«ÙcüÕOõŠ<ÕâÜ.Øëô3ú¬ù­síKòFÿRÎhkânæŸÐˬ·jA^æÈ•lã[²ÃXçᢽÅç©}ðWóëþÞ20Ø[w÷8»w÷ØåÝM¿tÿïtmü¿µúÆÿ³’kãÿý¥/Õÿ»œÑŸžÿ]ÝÿÚ&þ³šKÎ-‰þßž’ÿ}Ô­LGWÏïžß\_‹;÷ݽРò«B^ßno}»|ÑižžËÏÛKóóö6~ÞŸwýý¼½§ÍÆî¥fcÙØ gÍW¼˜Wµ0¬³’ áô@z²,„e.$VD2á«EÔ^Íÿ¶ó«zKÝ5k-˜iWéãòy[¶mò ¡ñ—è•EH8§¶å0*÷I¯òmô q J-á022ñÜ/ä}þJ{Áz:ªƒWèRE”îNÍîLM8‹ØÂRóô^cCo£úR)ä%~µoËÔz®2§]‰,ƤÓú³fëÏ,=TÒ;¸d­TX/è&µ&µðí°ÖyvWÜUW¹»ª•ÐUõÅtÕU¶®j]•ù\Ýusýjþ]7÷ëÒEòá:;Y§Tñh©ì$fã*á ïDvi§2¬‚Ê5Á©Ü›ß©¼¹~šKóÿZ#ü—Mþçj®ÿÿ—¾ÿÿ’Fªÿg·¾÷ÿoðŸVrI3 Éÿâ¿\]¶.fóØ qÓíL9û `NÖæê7 úC8A@Á<ôå$ ôådú² 3¬˜á$è (¨\åòÞ†Ìb,öðÁ‡1Œ¾ÁOc>" lÐÁ…’PÉh£“º9 8vl[}jÎ~{Åë†ä#ªÆ3-x¦e”¼ÜàÉI(›lE'`ÍŒ­è6N6ÍB±h¬½:u¾K÷jlÑàgîð(Ö³’îE@8 cc`׸é$ÃØX±k‚;’ð}:N lÒlÈæóï2-"a:™Ï: Ζ&Ø‘ºXú²Iñ¨ÓÐ×Ç/¨>âAö @uõ'\iѱ~üŽ"ŽË€ßY-ôÎ5}\hT*Ê‡ÍÆññ$ ð4ºòf‡‹íp^ýµy”hÇÕ¡ýî„},ߣ`Ïœ™Ï²ùz˜ûøD'9:õ‚ T¼lzˆÉ è$l€ÈV¼Y¸A<Šà¤‚é±AôäãžõÀ@&·IØŸ)hÓLÚ(›QLA޽)°fáÏï+k¡ žfƒbhm,\ÊŸ»;Ú±Ù…²Ì™ˆ©ÛF𧎳#@Ëp#®Ï5 k¥ÂÍ4 Ë# ûFðñÝ cL= UÙ¹cað²uŠÊ“=Ë´½$áxÛðuÁ1ûÖi•÷ªib1,Æ*Qê…g8dè%5«Õ ¥¬b±jÊrDqÒÎ-¯ú³Æ‘¡.g¶`‘]÷0,«f,f¡:…è1ªèæØô{šál˜xÜÙË2í†JO»}¢]ŠõàP{€-œeÛjæî«´v…­©elÑË1‰Øýµ"d±¹[lŠŽÇ¹Qw¨—HQ´Ä…ãQp `u¬Ç_¶Ÿ'‰Ünõ¶ñeç™’¡¼Ã9wWçEñ"û Ý*k¶·Äرé›|0]ˆøo‚Ž­¤S-½úâöâdGZ;q"­­ç¥Çÿ×ÿmwÿ[ɵ‰ÿÿÒ—ÿü7¯¾WµÄÿ7ù?+¹ä|–ÿ?ŽÅÿ7p ‰ñ#×îd-Qà¢ÓûOÒðàN6xp›þOÀφ·Ú~|dëd”°[ôŠ+š$¢—³DùÝï.5úœý,$EóñYEbO•x-åC©Tfn6sÙžö¡­Ï©„ Æ”q&ÅUù7ÓÁ·Ð4´Øy,(«µ¨emÑVɤ·ÈUJr‹˜§÷¼Ù¢\‘}•äÏÙÏ"åùp ÛËÅ)Ü÷WƒZ¸‰ì+œ‘ýMP?=¨ï¹c•sÀ²ù#ùH]y¢0~¼lƒv] ÐÙ¼éÙ™µ ÜõüÀ½é˜)¯Ã,Z zâ`¼*¨ðæ&oÄ›|2¿LÎ+•‹_;ÀžY $Åϵ3ÆÍ1==+0oĤXÑ)!ncÓ÷)ZJ¨@VæˆL‹H³u¼)‘fÝæ|æèÝMœY^óÄ™³c¾ž<óU½ôøïÝÆww½ú¿¿Gø¯Ï7ñŸ•\›øï/}©ñßåŒþ”ñïíxµºgŽÿš·ÉÿXÉ%ç™Fˈù¾–V]¯Óhw;zì×öµ{ëÛÞV|ú_{ÄGàŹžM)òûöx½^ú:‰ü“̓sög ¿tü‰ßß|b‡þp꣘pãa †û2K ë´vqêGŤÕu;–®¾JL‹G¢ÒRãÒ¯×1.}b‰~qé|} [ÿøOy¢Ô¯Ó¢Ô¯7QêM”Ú¥ž36m‰ë]“#:ýÚÖãÓ¤‰r•­F¨£Á†{¡ÑýãÑu3~ž}ìOýÊ”[˜P-·Ñ¸TŸäRÖ†¨²B›“m#ÙØ“‡ñ'-%éÁøÔÆ^ ï«ñÒÐlâl{¨hnú÷>»î V‚øâemo´þzWƱ6{†…*¥EØ÷áKQtná…0‹UØM¸þšîœ7¬ÿÚîÚûadß í½ç–ˆ(k í’·õ[mýîêzµ‚r"ymØèˆ_8èÀQ'z²!\[á1êNïsù‡Ò‡¢S8ÑBõU»\}uèÇ£…_ý¯þШþÙ~û·Ú¶þbŃWÕG··¿ËG›wF'‘FÀ±Õ" c[ЗXœ!ùÀ ®µ9°ÜˆlûÙ6JdHØfª/ײ:Iì:ä`Ä;=í"˜Ö‰2´n×P£i9É 3HøŽx.¡f³)3)1~*C-¬¤£^L«˜N†×’Æ£¬eÖŠédd-¡ ± ä=ÈŠàÑ_‡¼¿`PZÅ„¿&¤É¢.y†ˆ¢àÃü]'CÂÈhßG"8Á^û¼©û0â3ò­Ïy…(A_‡7ŸàÈì[n_0ÿ{05#2¥FPRDY§¼˜¬ˆä¼öz6Æî;¢Æ–hdü):0õ tgwÊùÙß²K’¡ztžo‹w?_}˜$üï}0’EÛ@½>ߎ&…pJS/ú½EÉ>øp’ÃYµÆªuVÝaÕ]ñdµ*iyójÌ«3o‡yò¶þE…;µ«ÕYm‡Õäµ*«yüw…õ:«ï°º|¨^euÕküwÓhe;;lG>·Se;Û©±:ÿ=ö(¿v壻U¶ë±ÝÛ­³Ýþ;4xø$£+-(ŸFƒÛ ðÅPã¼Lu$çåþƒÿïQÀG,×Å»\×¶dc˜z4èO¦´$û¾z+/ÉЀ5_…WÏciEdUÓÚ‹» ³1BmÉ¢£Æx–²£\­A:Û ÒN-ok€q å …;K€ˆû泇× à@kX…:ƒÚq©¿EfXÞô'0lBu¦I†f]‘:_bv² £~ñ:áÿ£'±¦Ž.à»ñ±à$=i Ðð✤]ë ±“ž4†txáèCK©»:²Ã+®4NTµq^R1¨oé/zTóE©)Œõwk Ñ¸Ê2.©:„ ̧¬¦3Ÿ…†Ø]óY‚ˆÒôêçÙ„#Ça³¬ÄŠÛ¦(¨|.iñ£?¥ƒÖUÙÄO6þo\ê-•\¹Ìð.æ=ÎŒ‰¯¼‹yÏñnà Ý­ZJI+H–²bÉ¥ˆ ïišL Ÿêâ+ÞÓ¼Ïv={)‰ÉRvAò¹ rùãÂÄÅ‚zWÎð•Ï2|¡Þ“éÐÿ>e9&b°lRçáÝH}¸¦áè^ÂT¬]öéX»œS²v%MËÚ•25ëßéy‰îÎb'Ü:ôæ˜p¿{Ü„ëlÌ#&\¯ìÍ3áZ³¤ —!¶ì —Åg ë Â!‡sî<“£}ÊÉ‘†üÍ>3LŽ–™yr4G©:9þ¼\ürNprš'Ū^Y&¸´‚,Ó¨§—B¿¤Np‰Ù§Q­Sq&5&¸_÷À,Dák¾>çÿ´® |ëÓö_»…[lÝU—ibå0‡¸a©Ë#Rømõå·ïÄ}WŠY>–P›§Iõ§,ÿœÀeMõsz.£ÈáM”I_T"¸’‡#ñž‚;6 Rò ®øÄSûÕ°\Nt¨ÓùÅ"AÕØ–¨Ýü¿Ã§«Z©ÁÝ=üFæ"D/öÁá >¥›g8ãy‘cIiü¹Q¬ÈÈ”Žf ±¥MoEfQѳ‡ÁhÿÙ• 08Kn]ÙKÖrA•rñy½ÜÁm¢¦CÅÍ(¸{h¨Þö°V¢›âJ‡cüáª&5œö³¥P¤.ŽOgs_ÍÛĤFuR"á°¼£ã2Å|#"¼ò*z1y~c5S|cý¸‰%}Ë™µ8–´%Àd™Æ1Øð?÷Ù·/±d\[§–…!ðåïúz»u•ô6c(ÞlŸ[Õæëü:UDO½*ÿd­Bµ\Í…úe³—N‹Ð}Ž* ó‡ô¥¹¾j–×AJŽb›,¨d‘}æ.YT¯J;1l ¿¯aR%ùEÿæYz‡_­Â—Òç2ÿÏA:½“š©$ka¯Š L/µ¢'äÞw—%ùÈް߈i@ºh´Álà¾* ŸC®"áL»'@Y‡r¸âš4X¾ 6q±VbŸ‚ßY@•Y•<cÖN&™*=m·äd¯••åŸ÷¿TlM•Š¿ì+õÿ£ GÏ5±¤t‘m„e”~Ç•7¬Ñ§Ùõ Ô?»æî®])ÜYÐ\ãšgV2¾OÝã›O2¥/xTÁª&šZ¢mTä²õ)ª{•Ôéb>G­ša­$ˆ&,OÅ Ëô,gg‰ÊXçÓºtîJ¬ˆõi.SeÙ*54‡‡RSWjª9Ö Zæ$«¼Â¼ð4È¢uÈYŠ ˜8È“ª8ÏdQpÏÖ*­Î ”Y³ #i«¨üsß„ž¾ÿàæÐ>þ¦ë•ÌŽŠ’÷®Š/å/[¼æŸ÷½¥».²Ðð²*¸zR1+v~¬ŸAº:LJ[ǬÜùᔤâ~^“¥ô´Â‡Xs§GÉ{2·ÇI#ûµ]ŒDÅ6™bÙ¼Öå/kén)ÅØ¹ A,*VØx¢EÅÏØXÃi]œMÉý•TäRèGS’£ÉÄãÓºtìã­¶ŸÊ¯Æ¤ÿòN¦Ô(UÜÑô¤ó‚k ³'t6­‹£i=' ›\ÏÉâJ1—5Mdñ¾=)@jF|Ô;>jš#°!6Äj €Ôª¶žTÅÒ3¨˜–DåA‰ô¹„åCÕAŽ¥Oxés™ Ô¸Ò”rÕ~1¿ºn¢,Ÿ‡¤¡!‚F2ëÌÜçÚG…ÓøÕë¨ 8”.'|¨ã•¤9¡ayL_«cC’íxÄ G–¦´¥ dê,:ßÔrÐã› ÖØ4oΛéœTh^ xÖÑÐTÉke]±¤´–Í+›g[YÉl)iÍ-™.îvµŠ<ÎÜè¹LðSØ1¥ŠÀsTf,1Ø*–§Æ?eA{\¹J­hõªœI3ÒBâ˾Lf°‚!êj;Ìö²’CŸ а(¡eДV·Ë®i“%óI2(§`1zV¨0õÛ| ŠîÔyz°½ÍyÔˤ˜ßö®³ø`ÿó¼:ËbÔ…×Òµ÷"4vr–âFcg¤³`µœÍ®Ææµ »%NÏ~:;Ø]Àƶ·áéláëhðF)®‰­úsÚ—‹±u´/—¦¿ÒÚ2‡±è´ŸZnLÁ¿ªÖ›#gÓØ0Ëèg•‹ú”}1óÚ—mÏ›³˜³,Å!9ü8ø·î‡Ámß=9´“ÁbìZÞĶ @É ½’+»‚Eª²íiº¿&ŽÎ´œu4&ŒÀx«>ï=HË @€âþÀòz7¦’«)*¹‘”5•) ›¯k¨¼ 4´Èæí–Ä>qvHݘiC;háÏ—p•3(ïúŒe–t—YQ‰eÆ›mËc9ð]ù’ÐÄl¦ÑiE5蛽ÃYª}mÙšá´žØvª Ò(»U§*×Åpq.×öÿ’…0£Á*1ãÑ?™¬ÕŠD8}Î_‚L©~ Á5'›Œ${p/AgdT{Ââ°8apÞ7)8¦ÙÒô¡³â²Öi ÙTÖ8ëj¨Pž™Ñ –¢@ »uØ­ýÎJª¥o‰jÔf}ê¦'{%ûùf46]õ•ÊLP™2§r˜N wøg±*-ÓcûÄÚ Ñ:O¬ÚTÛ°¿…cz¾ÓO؃¼ã[XÜèMšˆ ³*Ë)ìI—…ë3?¬£‰3g˜îËþP¸P÷º<2H·*‹gý|‰îyÜ×ìɶU¡E7fð\”­Ø“ø3¼%x4øüžÔÐÌ^Šê/“ßçõlÌÝžÄeJŠå¾q{DÅå² lJ6É`«7Ä—åÊ~YS\mª­G×Ç_µ`‹Ë&£Õ¤å+ØIîžßuS!¿‘0‡-h”{9lõV€ZŽÛ½mn¡NZÚ-ÀÞÆ³•RvÀÁÓØ)Û­Þv£‘ö8 ‡!0º(Þå£^-Ý êÝ‹KÚ”²¡‹¡…¼P¢˜XnÒv·Ô­pQw ŽrvˆçiÓÅ9;a‹—zÄnå;•B¶a•ˆl—£svà|½—Öu‰ý–³Óœ½b¿‘â’™—\È$Ó®ÈI&ï<ˆÓLk¾iFw­8ø¦ÕóTL„æÁŠ-G=ÙÐ*˜« õ‘TuŒ$,NäìfMÜ3´™û4ŠË7DRü7ý¡Q\µ-b_›Kk!eYž¼~°Z y¦â9]¾™TÊ’ì„ÇX4ùüü§¥Ú<^~‡7ú æ~×â5ÕU°XÏùf´FsEkÆX§É"ÞG->DAéñj‚ ]Üöü-ÃFO0±³ Ì76{f›ýQ'çi¯å ˜Ïé²È"ϷĆyŽÉSÆÇKyçι"äyM‘õ ŽgŒg™Ü»Ü„Å×l‚ß„Å×fr·µ Þg+ˆÒæ[ǨQÚ9òz.[W¿ÒJ=1n±Êx&\C…¼Yþ®­BÎ&œÓÊÎÌ£3ÁœÍ•ÛÅKùTsÚyõ:¹ûž<(ha&JŽ &­kò:-— L_<8êœ9h}ãIÈìI`ù£ö1™ w 0e—ýfrÓ(nâ€Î¦þxŒk6¶•†àÒÍ–ˆ߆5¼†©ÕË ß¢)2‡E7—=—|ñâí¹Ç™ù-º¼è¿€G!sô'ÐFIä¶ÕÜù⪖”/¾ ¹ÿ$f@Þ{É+ã¿›NYSÛ Âî0Uó¿$Ýrߨ^ƒÖâîÆw¹skRìþÑéÐ*О–ûå¹]Ñ>yÍŸÆ·ÄãÞU'Úl<¼Èz4|“úûß6×*®Aÿ¡óå·íÿ¾ô‡Ÿ¶ï–PFµZ}¾³Ãàsïù.~Vkô¯Úó*óaìôÖékpëß‚#äj|Ý+¡ç‡þdâûe¨bH(¼Øw£ñ0è³üÅø?ÊÊÝÑ`4îߎؑ?ä5ÂMÚ7¬5½ÝÞ&büj¾ú÷×üv mh¦lo³îMÐ³Æøã ½ü7içœ4:ÃÞq'b_Ä-ñL³Ý;~£>ÁX;¤Òû?leÄ:H"7Cëëðâü²uüN}¤qIDÁŸ—³1FdùŸûtÑïÔÕŒýél<¤ƒÝ¾ö3p¿†w&äLrö ¿ÌëñèÚ³‰ø}4Bp‡Ã;Àõûa¼!½7@“q†~ô'SÖ¿žŒ³©,î¡›—Ï |Zø €÷8d÷ýé8øÎœàdÆçŒ€‹H0D±áñο<ò'7ãàaÊåNih¬±±¶†].¼§ûþ÷¯bA ·¶¶ÊØ¿üÖ³ógЮg÷ÏÌ%K!öòÁ+4¶Êš”ïY™=» R£¬¤šVRM¢d¥òÚJå5TèîAd=ÿñåÀ32j c·þp4õ‰y¡p`çÉ~*pÖ÷³{€g›ÝyŸÝo•¶À  I ÓèD„ð¤AN†¯$ôÚ ¤K¥^¡ Øp`áE“â@ˆnL¶¶ApQœ~â ÍX×3Êæ"Ë›4œ“)Ȳ >ŒÄ/šðÑ=ä2ô@0|˜M·"ýQÔ ›º€wxøê@œŽØµ/„–$_ˆiÂYíߪDú×\Ÿ‰::ÊU.ïm^4[ÌÀY@·=ãíí?Î@#>ôÇS¡!T2ñ1‹ ŽbÐn«â! ¯x± iíUãͼÙrUÊxÙ/€`ƒPÍ*Ù(»ñ-4˜4Ÿlûç>«ò?þüäù7t<Š^&*•‰?…û·?I©¸Ô‹–*»j¿Ìn.28SÚÅBOàÚ2ëeíˆA¨£mª’´£Jˆ†ã·`⃠õÙ€ÏÓœkXm*çs…a؆ŒœŽÆ:!þ6”Ú§y åðn4àU›¼Ò»#éÞë¡€[ e‹Ÿy#ÁA‚# =þÞ?öƒìþÝA¡eR(Ô†•Ï[12Ÿ‘ÌPµhh“ʹï †`¬€ÀL$c¡6ôõvƒ à#ºìP)ý W&|PÒUzí$èõo£ñ— ï ‹æóx·z¢WnÁ[¤(åEšᇡ©ö=ú¸xö;ÁÈ…Ö¨àëBƒý;Nrxƒƒ‘?´¿ˆKµ˜.ùbîÞŸrã/ÑŽ¹h—UÜÄK®•Î5sª€Ž·}æmWKUz~ÕìYvkÄÍ5a³)Å[̰fâ‡gîú5º(vÅí:ògÅ =þÎ bóz6¼ËC)¹uñ¦y¨ÓF0JéñzÇÜÖîÓí„Rº³kab+åXQ|ÏB©9ä‚KޭœUf»Û<Ô8Qf\DËÈ&ÎŒ?:=ký›Ù´¼î´?õCSVº÷SËü ‹FEBhO¼óü™ º“°;ÍY[Ãð´!ê$  EWTQj·aŒQýå肯dÐ:æ@æwùš¶…Œ $ÚÚ–•CUüRð²—ñì}N1êß‹v¯Ù¾Š¹‘å §æ g! I8íaaµª³¤˜û õLî츹“·.åzŒ³¥kqÎÖspË’á’.e‚ªm&@Õ^D÷ˆL”RIÏÀpýïrÍÀŸßWÖ"“€Ï4»‡¦C–ñbôsöáÃ;í¹[¸~¾·[•À`®áºšíGýzæ@s§bàß¾cyĉÃl<:N•ÙÍ CÚU²"±wÉôÜ-sIJ½e™F^ÔP,w/ÇÀç…½pf;˜ãEZå½jš ¨ÒÌÁ>£¼—TÿSwfÏšÈ×Ë òeë^¨Tëz{y°Ú ¸Úøl䢠 lP¢Ÿ¹ÔŽç‘8Õ,}«ç“au¯–ÿ$Øgí˜sQЏ¹Díy6&D†bü´÷R<¶1qpî2„_äì§ QpÏÚ/ZŒEëÜ Áf{¼ååãÝìŽñîBãºÿwº>þßÿg5ׯÿûK_ªÿw9£?ÝÿË@Üÿû|3þWqÉé&ÑÿÛSü¿Gev¼ñûÎá÷}¬Ë÷(Åß{œ{¯Wo\½r¯×I¸/`CGÎ<Þß^š÷··ñþn¼¿ëïýí=­÷·—êý=2Švx:ãnßø>ðî ªÇÕ„ÍR€£i†ãÑ·tg0õÉìÁW‹ýU=¤îš5hî–¿?›{”WzñnÒÇyH[ÇiChè%zHeèKâE[Ï®Ôü¡ñ”Tù6úƒ„XHJMK¦¦óùcËf–lž=t¢ÿHu‹ÚöEäóÆ|§¡'Û‹õ“…žÞöX¾¥Î õ¥’d~³fËGÚåÙ{ÏÉÛÝyζ¬âÔ^,i}T²VI©U“j•¾Wh­3Ë©¿ßôìýmdbóÑqœœƒmM 6|‘jWRŵ•“¦ìµ<^E0pʪ$Á«ØÛ¤Ûþ’—æÿ\¯ÿwƒÿ³¢kãÿý¥/Åÿ»¤ÑŸŠÿUßá?Æü¿›üÿ•\Ò0Hòÿvbø_i~€™ÀÎ3^6›ìL°w%¹ÂQX>r÷`É.ä¬dt‹,ÂÉû{Ÿ/ëoØu×Ã!dØ·`ú‰}1¼@“>eÞÞdŸ2`ãSÞø”×ݧÌÅtýôÑ:'XØ\8a+ƒãlOó¥Ÿe+z8ÃIåQSfäå¾VHfô6”‰õrx W 1•ûÀ’ËPæÒÎ[gL‚‹Q^÷YɃ¡L¾ú7H™›Žñ°’Ç}·ìÚ.8)Jƒagzme/;(„D˜ ³ì>†åÏ¥/2ŸXA*ÒòÕ¶)ÞßœŸ|²Ÿ!0ƒød­„ðÌŸ,âÄ_5‡=ÐI&02ôþŸ•j€*‚É®VT–”ù~àL}g¶ìwf X`QàÂ,™è%špfˤÎW{ò×OìN¹ —´¹¼ZÊȆÔ%âcAúuo2A~Á2¶¤æÇ[+õ(\¦G`{Aõ¸œ¦¥ï«¼øÕð»€Ež£ÿ@n\2£CwEiügV1XµÌüºx]P—3ˆªÆçR–Ý(Á‹Ù¶r ’ªèæØ”wê ¸+W< ëeß •œvÆÔÌÚ6Ä ÛV3÷©¤µ+lM-ckøP:ÅxÈÛl±AÊ?ŒBâ8¶•}–%gòÀ<‘È÷Ù#‘ï×2©Åÿ¦k„ÿ¼ñÿ¯æÚÄÿ~éK‰ÿ-iô§ÿš·÷¼¶Á~¢KN[Iñ¿žÿ|Ô„½! ´¹:’Ául"„Â\ˆGÿ"XнuÄ‚V¼µV0èû‚Hd[l8è^to½‰&®4±·8h5$èŒ,fŠ f‰Š1Ìì\æUƒ>ŠÕ›KWBmÛP“öhX1ž³6Ê|d™±ÉÞ*p§ï viqI-vH¡’ŠãU[ µži,_nµmæÐP¥U*Tý%#Pµ{7õO T‘‰ôÆq*ñiõØMµq*‰›Ñ˜+Ӈѣ¡\V§®óB5aáØ‰-³ëÙá\äz›÷!©C>óüep¶Õ˜¬ˆUiüŠ1YKpô äÒms§ooâµÈm…-Éœ.vYÍCÏò™&ÄxY2H·åq67F7sÄ~™#Èâ€/M35\ËÙ¯=uw{vRÛc„bí³bYþODzèuTö|LÚu3éùœþ"­E{¹pÚóµgÏÝž¹;=SøïB ÿeÿÇŽ¶KÔ•0‘âZȪ¥²mÝ„¨ÀôÝŽö®}™O;ñ_½Cá•—îîT¯Ä“¶|ÆÆóŽ­´*Gñä”*Ç÷b²”HuÞ¸k‚ö}|O{µ¼ª;•sµåvv¾ã!²T8a†Ñ*œ¿«sç/å;Ó¼™MùdW,Ù %Ñ»î4¦'}zYò}€ð^âì“x„ ð<×),1EÅrŠ€÷Ü)5ÞÞœS®—5Ĭ‰C^êlÈ„=úh~¾´ós!¼tϵê£m¼¼B]ór u- F®§vBBÔj¹ŽÀ`y;¡æÖÛµT˜(‡@×vò t-Õ¦”“ î4^«‹ç£Û¯¥ÛâI¶«¨»+1=‰±¶gÃhXUFÜ’¦!™hg1qhæ·ZMî3K"F¿H<Œ„%žGB/¸Oç`Ì}bIö3>XtÌGíÅÜVŒmðÚÓ£"­ü¦½L—Ž Ûm¡'¸ÔRÓI;k,MëÕÔƒcØÎŽa‘\Õç_-R®ê ë] T‘­X&jB¤Îïij{ŽÌÓ^öÃkzI‡×èùŸktþËÿe5×&ÿó—¾Ôüϧ9ÿ¥æñáËÿ¬mò?WrÉÉ#1ÿóÒ‘ÿ¹9fAùkyLo­Î‚Qòq”TœGŸÓK;¦·9f“Âù¤p®à ˜M §Þ¨•¦p>áé2†ÒŠV;CF“·|ÇÉhgȨtÖö8™ˆÌ|‰Ž—OŸè¸ÉEdúõ3ä"ž¹«¿ÉEüù±cܧˆ¬YV¢rtŽ ôœÍwzs;™ë ×;LT<£jÒ :9™1„¥¥ãlìÚe1¦œ­”ƒw ‰‹Þag-;©1åx¥ LÈdt4PŽŸ2ÛÑPt?gòcºŒ'–]*€A«ÉyL‰‰µ|\š£6$ÕëçËÌ6#$ór5‰éª)¹–Êv´ê(õZ«tȹmûYò •<Ç@7––”pÖÓçJÈzL|í§ËˆT2PŒl\Ýä?²„Ãë˜-ÿÑ‘’µ¨.ùKeCêËæÜ2óíöæ&+riÆáƒg“Ó ç?[éd-}©³¨|²ø±»,wòbŽã ͆®}r¢K2d#Ψ#³[—õÿŸ½7[n#ÉúÇÆŽp8üÝÛá˼ø‡‹’ZšÑ7ÁU A‚ÀEÍHÉRƒ‹Ôš ?‡Ãè³ä^Y ¸IÓBÍ´H•ÛÉ“™'Ïò;ùàS³Å"¾‡Òíð¡ƒþ!‡Å³î,³îý§<®ÿçäçñÿ\â>ϳôÿü¥ÛÿóiV¾ÿçúÚë¤ÿç«åúŽGå™þŸÿç‘Oûd¬ÄÒ;T Pñ¥Ô}G?q¢À“ÎÏå)ÚGÿÅýÞ€Ê'}˜ñíäù‡v–þ¡KÿПß?´óƒýCõšÌtÕoeyˆ_2ÂYͪ‡0=ºœÚ[C|-H»Q{GÓÛžô4UŽ|Ù~¦ê­T/Só¾r¤–gQ¬NGé9›‘³)gº‹Lx¶w呸RIº¤Y.©râLø¡t5Ýã…êa;·‡è½ÙÆ…œfSzøÐDŒ6é9/%øN2˜‹™‘¯ñŽ1«çþZHËU(ÝIéýꄆŽq~¶Æ`"¿àpüdwV²Æ{'YºÈp2S5&3NâÞáö&Í£7è˜K޸鎭ÔÓÔÑ" f±ÔGO›òhéì+žÐÙ7½ïKOßGE%0¼[‰•%þ¨y¡î¢¨! Ó=€"ðQ…‹ôÐ!üµðFí ~øôþ@˜ÑƒG˜Ú%ªèk·em³½ƒC:¨îÖŽR9Uõ¶Ív_Kz4þ|Ñ"k)§§¿¬hö¦œG¬çq¨MßYòú÷×}ר•ŸÉ5¶€“íÿæNüÓbæÑé)=]s7¸EÈô‹¸µÊ½®¾×…\;såa¡Fs\; À Ì[#}_ËwHMó}-¾ (ܹû@ãuÞF¿qÒ×~#íßÛ½5mw(àÞúÛ¯èÞj]ûC<ó¶¸O«stääÔ.àÚù˜˜ˆÙ{x¹c(àpù¼î©ÙS¹0¤ÌJ®‰Q¾æê¨9×Ù˜eÎþ~>Ëùê˜'ð0í÷0í,=Lå±ý?ǃÁOãÿÙh,ý¿žåYúþÒñÿ|ªÕŸ»þ_½ª¿Iæ³\ÿÏñ(Ñb«s| ‡ü.ž®)çÁçŠØooÿ¿Ó/ðo· ²ÑÒŸ3l¶%R1ÚZ€IÚo‘„‹8r¼4?“'ÌË"žâ¯ÑP̾”£Ý×èj6šLaÏG²@¯Ñ̾µyÏ&ù9~¿ åW€N Smû•éoa7Ï•›Ý§Ž¸îa+ñ¿{3é±€õ|Zísôấºg;ʵ¡Q½ü^m$ý9¤×M§¦ûq× ài,ßÐ>¨äd»ÃÑ TÄ·Ûøê–\Õ¦ì×ãÖï¢Þt>Ñî¦ä„Âxvýh ûÑðê»úÂ#aÇ>IÍ\_áÍì6»™ÏNU/arœ™êåRîSŸ¦ã¡€îNàíÏ®÷M»ÊM‹Ï5ÿý?ã¾ôƒÕ3ù6‰g³h({† d<¼’t¾Œfߢ}?¯®`µ§:6Ÿk\åëlÏ¿?`ì¿§Œý÷”±ÿûï©cÿý1Çþ{«4cçMZP£Æ]ƯŸ×¬Çä‚àÁѺÒÎkþÒþQž9yN9¾Ø"·Í=9XÑ6»÷”´ƒªrßžðö¾ù9½[›u¼y×ðOþÙ®ˆ“ÍÓÇòˆ1|XÐ(Dºã“mu¹xñÐ×­vÚüüñwrÔìì}Ùâp³ÛẊßù4¯þ;<:]Âé7áuÖïp·VOè˜x-ùú©w=WŠ nm›OªÔã-¹ºäÊ2ª©ŒQ³˜Uâ\6ø³LûÜŠ¼€94“ë@GùeùÿŸ·ëúáƒ*ñB‰+X¥) Štf Q§pFè½íà«á`Pÿï²ï¿K±¤^n¬ª?Y$⡬êÁ4 —¿Ûƒ!?*ëæ’$—²” |\aIòšÛS⬒ÔÖ×eÂú½a~oÐïR6 Ulu7U¢ò¶"ÊÑÿÜýÈøß x§¾^ߨsüïRÿó<ÏRÿóK?–þç‰VîúÝX[÷×£±¶\ÿÏñH1ÈÕÿuJbï¸sÞÙQa¾Ÿ1Ì÷3åŒSBÈûÛû'¢Í²ŸŒÇ“ø&!pð+:ùE›ýÞxÆaL<ùùÁ¨ÐX«¯S)óyÒUN4%‹êÉ‹ þ\⦊ B€PŽ7ñáTìØqhG8{m%#FíËTÆÖ‘6¾Å×@¾»韤ëV©¾Ri•+•Z­¿­¨Êâá,ºÁ»e¾:":ì_K‚XY;éœîÖ€5€€—úv½ï,¥×çR«´¿RY]AÖ»ƒéîÃGûø7¦`‹†n#ÑÊÞæa›¹NÍnfßiXÇ´œÖR–ZIvAk$3¹…Šx/fãñb?×dâãBµm»Ú…õdÈëí%Q€uÓTcŽ6‰ õíRûõ¹È˜sb¿x{¦¸, à:RzœVxìj€¥Œ»/KV“ÕDK)Sa-Û•àâ$Å€?ãü“HFfƨé’‡RS9ÉÝ~*ÕTŠr'™…·Ct›8Hß-Ov>6äbáHRMÁ¡—‰¾zòKnlŽQYhÿ´*ÿ†ßÀ‹ÚuÃnDn?­ÐÆ`ÚpÃFìodÅÜ´L[k†Àχcq‚á:^9ôZÙw>ZôP|GSÒÖÈÏ©¢Fº+´Õ«ö¢ÝâÀ¡ƒ4ŸœcÖÆ3$]Ì7üñMø=õ¼H¬#¬ £ÄüiáÔtû®ODÓvn‰wyü 9þ¤c9}üj-ù™Lÿl… ›¨oÊ@¿ù3â|‡æã×¹¼r€ñ7û…Ûæø£\²Ÿ>û6—a&Å#oòy$}˜UdÌÃ|-‡ù[¸…·)Ìà:t…UfòR`©Ìþótf¥ÇÕÿÍ~ÿ¯õeþ×çy–ú¿_ú±õO³úóõk¯ëËüÏ?èáÕîëÿN²ô¿¼ó×_OSwâkê<ÍÊ#(ëÚiʺö”u«PñÁŠ£¬[­° íÀR¡µ¦¬£:]ej9­¥¥²n©¬{re]Ú¸—Ê:ÁÊ:ΛªU!¬¬k/¤¬³´Ϥ¬{mµý (ëöÓˆ-5Ì~0tÝ|c^K(ÊÌ{Rõö³*ë^?š²®^(Õ× ®KêŸüd«ë’Kd1Fñ;'„õMq~RlòöÉôuR-iÀct ÿ¥_î§®ÛNªë~ô…eù<êcëÿþusùÓèÿÖ6–÷ÿgy–ú¿_ú1ú¿§Zýyë¿^ÝHäÿ¨¿YÆ>ËëÝÕÿ}ú°U’z¿Ö!üwŠ>ò”çþíPp@çø|»½ƒ!'‡øÓ—¿Ì³I0­»ŸNww–ªÃ`¢M†ÆOÎSÿ(3¶”‰-çDÎÑ" Ç@•Û2Ô´“—8d«$»¸êXMDÿš\NzÿÙ7Ñ0šÀ_*n.{þ‰SûÏn$Xz:¿ThÜSš Ö)|—óéƒß”ç!½3…™ÁÏ8l‡4ñЉ±ìÐ{ÛÔx ÃÿTàùJ·t¸`½y‘ì’N4Æ[£Jí&Nn™­´FNíF6·ìF é)³„&kÅÛÀ¾RÁhÊê¨÷j–[§åzÍΗ*p¤Œ¨VóXÇÏ’ox˜õ¼} uê×£Á|g ëy¹^Ž«_*_ðzÈÒ¤xFTézåKõùÊ?ÞÇÿxKw•/å?+öMßRtb¬õÖ×hú²¯ÓÞ]¤€MÀ×Ng§4%Ý(’[úµLÐs-“¨¤Ôo€î· pHÐý–Aº7³‚•¨SÕŸrŸHè@c`kˆÔÆ@Sy‚¶‹U›Ì¡2Ú¤ÖÌ[´[³]Iµ2jô:¤·SŠW%)4]&CÂÏTwiÿ_´Òí@¥Û¦RhÛ6fÅâïãY  ï­0c¨ã÷^Rª$^t{× ôÅCL‡°“/ÍW'°ôð07ù\/Á.â›<«Ö°xߨ}Ø­IFcä{\Jø!·n}ç*›…oÛƒ#ËYû†Ø&ï=V›Iã ×áïyŽí HmßH$ô±®$;—È6~±4[Û4Jдˆ7ZIÅ‚˜.Ãõ"„2WMúÊûÕedÙ>XM|ŒEÓ@8³ ‘š4Û6i‚Àêæ¢cf²"†Y³’‘ÎÄ$2YŒ^!buÈÂ&XÒ˜)”¡1€5¯èÔyaÑÅ»%†„Çœ–¬$}LÊÃiŒ“EŽW!r¼Î#Ç–&GA#Û§[?ÈÈæÚ¢ŸÇþ³Ôÿ>ϳ´ÿüÒmÿyšÕŸkÿY[_o$í?KÿïgyxµûöŸÝ’›Þ=lõa{Cºígiõ¹·ÕǤ|W’ÃOeì¹O–xàªSÖÄ'ì6X…§`QêÔ_Ã|ãf,.föXÀ-z3ì¦ÍϰØõäŠêÞYo—Æ€¥1À”^–Æ€¥1`i ø%K þRƒÿ„ü”¤}&1ëçÕŸQ½|ˆ 6 ”šÙ&Ö¶=o„–.Ýä³éÐà–e J¡ÇÑÿßþÈøW¯êëðýÎÿõj©ÿ{–g©ÿÿ¥KÿÿD«??þcm½î¯ÿÆÚëåúއW»§ÿon©t¼²c‡t1Uè±VþßKÇ¿^«ÿÜZ~¨ls<‰ˆÞ\÷z°¢‡˜*4éwOœž‘\Í×-Ý' ÿhúáCÑŒ&wx)z¡Æ(TÛ¸VÑ- þGòb/•3Wëøí6‚&XÙÍùÈ ¥Áè››€dÜ›Ì^þÓïww¼ve…¨8_owŠz;?³‰÷Î!¾sè5¾ b4é³"3jd§P]^HGÕÄtxõ£nOìØõH3‚€bUd<|Q£ž=iTHp†Z™fæóRš§Ô£†Zñ¢@8;^k§\w IÔµ‘Ñ®å>Q%:<®(%ªÄ 2éç™ô9ÈäËßS*:äŠt-Ä©VE_tŒÊcTú+5WO¡ÍNPç~{ò|ñdX닼8Å©9דѿԶoGƒhúÇw/5æ8;]]mŠU*‹®â’zé™Ã1OܲEÑ-;:´¥«Vµô­Ý)ÝàDƒXÔ6Ô Ø†º?mHíÒ0Ìáh晇² ù/ýŽ/íë n,ƒIªi¨ëØPºÏcCQZ|×~€õ¤[M<›; ˜{´Íƒliïp;J¼§­C:ˆºy¦Ž¥™ã9Í,ÅÃ.ŒïþV*^yüÈˆŠ½•=Q‚¿†E…v†ûTBVÏZŸE™„:œ÷`Øb•Õ:´ãê ±ëÄ<êò ¢æ ™flñœ¥BOD£» N#¢Å¥[iþ¨„åó×þóóÄÔ—ùÿžçYÚ~éǶÿü¨øÆ›þÿZ}¹þŸãáÕîÛv-û y ËÏ/Ý‘gÂ!ªþÖ›{Ås4ñÆt“nµI…Þú ­6ñü'Xm=X$IVÚ&„™ÑmÛ q%éßt¡êé=»|x’,å<.cb/´ÆÌßyrsª yDýð$ºŽ&Ñð æÓÑ!È®F)îåˆRyÈQ‘î䌨QB#J7¯X×ÄÔ(Ç^”¥¯~’@ž¶ äѦE#n––¥åciùXZ>ÄÒòq/ËÇÒÞ!麴wdÚ;žÀÀQϰi¸Ý@ÄA!çÔMêÿõç?¯í¢X×½¶\ËE¢½b”ýÁ&Še„Çc?®þüÓèÿ—ù?ŸéYêÿéÇÖÿ?ÍêÏ×ÿ××뿱¶\ÿÏòðj÷õÿmýÿÇ¥îÿÑuÿ?‡ÚÿciQ•ÿÇ¥Ê_>?™Êÿ£]W•{µÔ.×W^6îá“ÊÑuVh9G*ý[<ÅÄÏÀ0Àߊ{H;Ø%⤶øcÑȆ¥n<¥/ÕúÊꮓP/Ò`×Pj «_VÕphÃ0M㞦aOцbÄ£îÏ>XêÈ—:ò¥Ž|©#ÿ1:røÿöROžÔRO¾Ô“g(€¶qU>§êþƒíò~µîëx­/ +й̩Ì(¢í¯]¥aÃ?e6®=¡†=Là{*ÝiL)C½¿Ê]>¡u·¾ÈR¼‡ Û VŸQ7ÿq©›ÿ|ýÿ¸ñ³à?­¿Zâ?=ϳÔÿÿÒ¥ÿ¢ÕŸ«ÿ_‡Åî¯ÿú«¥ÿÿ³<¼Ú=ýÿdžÊÿp¼·×Ý=1AÏ௓ÍÓŠ8k×ñŸFFˆóãNk‰ •xŠbCeå…PS³ˆ‰ PΧm%ܦažeZ˜ìâÄ%² òÁ¢¦† ÃxÎf†OÎ…Kñ8þ:š¡R†Ó˜Ë`WëÍ©\wT©¿k3Dú‰õ}ýäpü–øìêj4A?åÁw®7êWÄå|FúBÕí[ý ù%ž(½„c=`<°« ¾û)ªâ$íì*˜Š6UÃOšè¢zù½Z$ÑÅŽnXyM¬? e§}y'Ñ£ò£ÉìvD5(|B»AwÏþüjæ¥ìý¤Í9ºDR£»\.¡„ë'¹|-rÀ ¨WŽ”ª7·/©m0Ï Ö·úÑ.Ö |ëï-I[`5žºüŠˆ_G°Fƒ¶'½`ô~fAn΢ÐîPØÚ%ÍÎj‘8†¥!Ç7MîLSGm*ú†jˆ„$lèÛhòÇ„›(Ón+Å©½ù„6ƒ¶™AÈÄïm)k%MbX‰¤ÎVv§5ÔBµ‡½ê1ТŽg£šèGbÈvÆøªÇ" iý^_ô ?¨øïŽ{ÊRù™ù°ÙkbŒB¢újPíüHW2C™«»)…€äÀ^Üïщ>¡Áô滸õÑ„g,f5±½»" þØšé A ¼â!8wÔѦr5™à÷½›It žŒà¥^íå;˜!ÄμÚç) ”*ö¦‡×†ýQÔß¼®ýH#ÒÅn縂Jût¹nÛ|40adPb “coJ¿ló{%m™âò¤L} Ijÿd÷è#Y¦ŽXTþÂ.˜N.€ÿ6àÇñáúE†˜»¿ŸeÄêÎ/åÍÆêgÀbng¯Â?>ÀÏîùæÇ@½‹š£6·º˜®}uðªî§Nè²ey ‘¶‹¦™ ÓÛv»sÔ¨äšà¸žŠÿþBF4®é¨xH”÷·ªn«m}G¡‰D>Œ¾$mW/vÇÓx0¾XYÑ«En[î%Ã4Âf•¡m›ˆ·ÐèÅ¢lYìÛ‹\~wxÇÅs€"µÑá¾5ýÖã=Œ®àÒÚcÏ]5Š/¸<Ø^S–D+‰vu¿Lwï:Ù *¢N—lCܽ–­µwkû Ã! mÄmtÍß$À#l «RëŠéÇõFº6R×àb>×oíßÙ§7¨>ç[”ª@Ð{£a¿ÑðÞðÌžð| ,ƒ³°d!šÒ9Å¡Mjíð¤v”N?Zµ’ë>Ò„l–ÔNCÄS–553öBº,ï»v$2¥6Ì ™ÆŽt3áÚ\KŽ)²6fnŽÇ Å#&¤ØÍÒèúzÍÊñ»»J וኆ`qö:u%9JYtq¿·¿Aû—9gü—Ä‹CháEŦ8¬„Ù3¨L›bÉ¢ŽS¸\Çð>™Z+2’VMx@$ ¯i{ŠâMºô©K²Qm’û!"Î-‘±‚‹NáàLÂÓ>>Ù}G’){Í¡ø±AÞxÊÎL%HƒƒïÓxêù¡ásHúâã[#åVg|U ®Z·dщ¢”ÄKÝ<ÖH©‚6=>Ÿyˆ¡÷ð"þ\54¡êéÕ#ý¸(úȳ"°ÞÍÛÙû‚~tÞËNoî®pÚc­ZªUaàÅÄ&ê’-·‘”—|qf³V›ê×U:{y.Tn>ª»9‚ˆÃàv?YFé¥Q:ûqí¿ÓŸÅþ»ñj™ÿãyž¥ý÷—~lûïÓ¬þ¼õߨ7êÉü?KüÇgyxµûöß®oÿmoUDk+Õœ~¯A±Ø<ý|V{XvoiN<°·¶ä„e•açê§7#KÈ’è^‹½wŒÆ‹XŠ»¶¥x:‹Æ8u…,ÆX¼Û£ ÑŸ¾µY‰ÃÙ¶½iucfhìÃ,ä–A‹l³[ÚÚJ©M; i±õÅ SÂ*[}‘¦;>ÈÎX6Uê2·,þü°{t¤c@€ûï"qÕ›FÓŠèÏ#ìÍUoÖ›Î&£ñm| ¯¢Á€†¯Ä3üd8šaqÝm«Ï5 }ƒ"lÙ‚æp15_cºÃ Ô8a²÷:‡gµ¶dÿÂæÂ_κþ@㺴¨ßö¾F5dä]ÌÇ“èk<šO‰ù•]©½uÏÑØŒ-ëj©º<j~eÌIƒïÙu¨ý\–þ M¿µEÜéòíâžMŸVnØ…äA6q—˜ŒQrX+ØýÖVYµìx[ ÇðîòŸan§Óf5-ñ÷ïÿ[¥­n©æ¯çƒÙ™C„VÆwXÀÄp`Ä´óïãæ´ùqqË5ðÅÒfjOï…ÖnÛ¥ä¦ùd‹²Ö½Åw„½ŠWóó‡ØC•õ{q²Äï”õËÊÓµ÷«`¯FéUÐV«`i˜_æŸÑ0Ïï<‘}^+é‚Ê@ÿ#ŒúÚ¢ßÂpÒîIvOö··ÉxYV:)²î·ZbÝG½B?ΞËÈ߆79OÕ_×àÏs¯þ0è²±u*qò»ü eý^Ô#`+º‰‡Cö*ßnãB9Ʋõ5?šÍC%Ñ"sêp;²–dgj»Ÿ(ˆ×·µHÜ)ÛAŠ46íMÐzˆ7AÈ™ •p&hig‚VÂe¹´îíJ¬Ö+ }"5-ci…Ý£OZæïGpEhßivEðË']ZÙ®lQ××µ&ü!ÎËFn¤»¼”}-h“ÍR§…âþŠx÷Þú£ª~‡k "”ì•Zê×Õf±¡UûpR«‡fÒ‰(VQ&=^ú½¬—žT«µw/qkÌ©/á`')»È¢Ö7ú3åõaK9cµÏã½w¡w`VZxÿ•ëbÖ›—ZˆYÊ˃nưôI2·˜$9$¿n†_æ78ƒ!¶…MÔÐ$[Õ¨§‰OW–çR+Àþ–ƒ;j’å>öútÙ+Áv€ä¡kÝ¿£É(ádb"â[ÿå5w 'I¹løVyÝâþðjÂÜ=09s¦J3Yú÷ªš7þDn_î¾¶Ú4•ØOæÔ¦mv L-ïH…çö¾3ËúðzÀ›Ïï®·s¶eyÓÛ£…«·ÂB͹e‹°–ô_ÂÛðÕ|2ÁXÔl£ÎÒ;°äTG–ú“-œZ:°ÊrÖSެÜz”$KʬʵšJ—Vèô1§L¹qÝóG/öB4Íõ 3Gƒ„Ãgù+^Ò­艅\ÇÄ£y‰EÈ„vS¾cVÒq,½‰·|?&¤2» ­ÒUþ#µü=ÜÉÄ¢eÂq¿b<ywIq Ó7›ƒÀ÷…<Á ye‰T¯/ýé«ÒþÄ9íézmCzk%nXü|8"Âm뿜ªùÖ2¸ºšº·¦-Ý‹Ü&&ÔH]2,+©fW{˜V³“ŠÝhÚi3 U RÁêÈî€Ûß–Úÿ¶Ü v¿-’ežYåâ¸IÞc3Ä#Žö픽 ­ËövhmrCÜ*°#z`Gô¶ÃNÄ]6ÜÂÜôãëëøj>˜is%éuð.¯Üpø'q³Ôµ5%%^~jÉÙ뀖‰þÂvãD’鱨7Ô¡­'ßì—ÞHÜŠ'ÑMɬ ló3u±]ÑESi#øúWyU$™Ž4³&dTA'Z•àZß‘ºŽî‹•a¯1—ïÝ.š×ôÞãÝ”y‰¾^ó§’ÿÌðÍì.}3üãøNÖ~$þ}íM}cíUƒðo–þ_Ïò,ý?éÇòÿ|¢ÕŸ·þ_mÔ7Þøë¿¾\ÿÏóHÁõÿ쬕Äùfûä¤B?.H˰ЗûÍýŠh¢ðÿœÓ‡Æ@x _àû ¿òýöÞñ}3tð| §NYý=R„ŒgH-¦S©E#—$²H‚(!5€wkÏÅ">ãf³Ä-3.ÏsUâN%]0…ã…)A@hhN:úÈŠÐïã \Àeª‚ß“þBïÃ@ZÙ‰’ÁSáŠÑÃb¥"•¾aóaLŠ{YÆÃï~uü}à9Ö£€Âw07ˆ3šÎîà±òP‚‘ŠªY×@-Ó_f·èi)Ä”º‰¿FGWY Q[{KÁõúêÖÆïϯR›‘üõ¤à¸õ”\~ûÓ;tÞ{/>­6W?±›MéÓÅ üE?ø+oж§H8q*ÖÆGr¿}~/j'ÓÝšxgÜÀÌ$ñÔNFõw¯àÞæaw·ö®L063¢ã¸*Tszs±PoRx™&¯Wnìgðõ»ÅŽ©K©‰"š”(ᕵ—+<û”Q#\lW9míÏh1M§0µ}fPÆ—L¢^ÿ{rÅCòiu*Á…¥|Dëï CÕ:}Í£6„wƒø»JZ| v1ÜO©yn¢U£FÃ’uHbNîhN£òrÏ©C[aaGàJØþ°»…Ž2ÿòPŒaŒ¼Hà«fg÷’¡¼¤9€¼Õ°®‡ç_/3o‰9Ξâ=Æ0EFŃáÇ@%L¢¶K‹I4ÁŽ0øÎØûmR}H¤Ÿ:j"‘Šø£¹?ÚnëX‚‡¸À>¥¾Ð³!ÞۜӴ8±ƒ^ÓsÙ ¦  µD!fD‚tŠ:ÈÛš¥‚k*J&'ÞÉâÔàœ2tVاD )˜ètÊ©C.z  ûEç5,Ù&1ì|8•©*È3‡ìÒ¡Dëœ9MgÈh2_bXçäÀN»aŸóàx£™^Mâ±ÒHQÏI{T[ñtÿ'xîLµ¿eÑŸp€]Å3¹¬šœGŽÉCbìÁ$‚SѶ.6* MÐ:…ÕŽiSP›Ôd€ø!¿nvþù_Ž«f³FõÐ&è9kÂs®i[À‹u%Ѷ”vú¾¤C;Ô;åÏšaÆ)wjÝñ\½Ì¼fj_œ‚êœzÜ49”/†O„žV0*09EŸ$§Ó‰jÇt …:ÆsÆÃéŽ-ê]0éŠï¦¿ÿð¹‹#vVÉE0©}ZQ›X6ù/ð—‹EZIX‚ﯞJáñT €Ni XÏÂÂs_`_d¯b§šË«ÈýðåsQ£”Hýþ ±1\bhu«Wˆ€5}²ý;ª¨ïëÖÒ#ä3ƒ{–Ï@tUJ=è[`R4‡Ó•¦¾"y™dÿh:‹ïÐâB2Lâ¿ÈéÀŒ*³v"ª;”)$¤ªTÎ>äî¸Ù¢¡#†c#D¸Èìû8¾"IÖ2e¯Á_^¯b°‹›@èÒHµ4 5.8ôÈg–P ¥wMsñ¯y4që <;ÊÑÐ&Ž)DÙtHÀý†Ü·¥U½4íù ‘7D²fôü>x+{È· q«è«åmtõŸã|oGjÿÈQ³=Í’¿¦…æ7;yÛÊdÊ2ÍKV\bWg¬qº’ÉÝÎÑ/óçh@yÀ€ÔL$okŠA¸æéóngëÒ½E1Å4Q¬…ÝO“Þ:zJÚ+ù7‚Ì@-w±·¸éœ*€-"W^Mˆ^2"W¬'ÍPÜ}yþaü¢¿®˜™ÜS ²« PëïâÁHŠý&„Ô>÷»*ø®p¾¯ä8¨r4uBu»•rÉÌ@a ©#úRÚƒÌ'ê>ÿ$d ÅÌD&Š-ãy'–”Ú*aBL¢;îµó!Œæ+¼žäÀÙ¯äèÆdÖYÒ3Eú ‚uåBŽžÝ‚\wsË#S1V1aÍ2÷¤4OGœ¿Ü³È””e$™¼:J«+tZQ¢"«-<‰ýNWKÔ=û›P/¬C»çé.äê¥j2FÇ÷Ùuébh_k“U(ÊB=ÊuCkØA \R° SNУOHª :(¼Ñ=,åP< /‚%‹3[šD7½I?ÀÔ ±b@Ý:1ÎB«1C€ ì)öÖÉ4xp€U“×…O VùPlÁÑÕcÇýNo0¾[ßᣠ©Þd†[d8R 7ZªÕN{S+rëñFÓQ‚·•dDî{EtjÜkEzcWp•¡¶³Ú½¯gâ“ÙÖ77£ œew`&ößA©˜vvÜÏ#8HöFW”ñÊNY#s}b]WóÑH4ÑÝß<£ùD^ndà¦ôD«ˆ¯¸#ÑXǼ¤7‘9mß6ÞV«o7ÞTPÓ߰׿#ƹysGÍu·»½ œD;Ñ5Gè»#Ðu‰x»ñŒàͺ?‚Gâ€D¸š]?wïŠO$¾m¢7Îïx¹ç” ƒ?ñ’3k¡†ÿ€HÑüÔ7®z0éXQ<4b0ªôµn<½œô$ÁÕìJJ¤ª ÿ61ˆïâYm…:™nŸ¡¾Ê¯ƒqs<˜÷¢n»÷ÐÀwÿ¼Š¤–¤e9pUö1!-÷°ÿ¡x4—r…ÝÙ)zê¨óC1AÎû ¦N›lrUÚÅüfDïã9[»ŸÛç"žEœ D¬ìAÓûYƒæ ß‹WYcžÒÒ|—gbpöH“ÐëWoGWpŠù• XáP4ùJÍxìr‡–“ë~/^ûCcUÎp:ëËï¶ê$Hõ/iE8 ZwÚ™Pê¿Cø@¨U›Õ;nõ­o^EkYP*~dhVÐ'EoFˆeÇnZ¡›V,ü—“óã¬.À×Paƒë X.SÂ?CA™›±µmøoçôÎÉø±‰:';û]øcÉ`Kî4Ò»ÛMç}2Ì"r4þG±Šè²º¹½Ýh Óâ1|ÞÚ9…ºlá['Çоzÿ7ñþìü õ è7˜QÇáyëø#b.íìnã¿{‡ðoÿ;ÆÏ­­Ã]øÉñžYõ´»4Šv·ÿœa™sü?<ÇÏO?níH’ÌÎÝãÎÉ®ú>éþ`kûèãÅj#0±‹F™nî¶Ïä÷¡èQþ>ÈžÍ?À3*6"«¿ `woü½"O/y1^—?7äÏW–î軹´‰ÁÃ0¬Ïȧ'vÐïÑñŽŒùMç…”``aêL(•/ô¦^¨<­èFáTIåK´€ÙûÙñ]~†¡©ìîC6ç,%RXÑ’-2îFïäÜEõ™¾Þá%á–Îß‘èäNî¦á•¼®;±~/ìâp*^»>4Ä‘x‘ »à#)~7þ$E¡|Ä çõP¨]ÃÍwJÎФ|lïÖª:¨ç¨Éàp?¨îIÜ}¤‡$—Ê•†x:•™ãÅå|p ò¨N¥(-Å#4G(4›*<¡þOªÑIuvÛVg6ù4¹Üö›£±Ñ^FÓY’¬ .Re»ÌÇX|] èÁÍ”êá}*PËž¤p(„·Qà¢w’‘^t­œÎ‰¨Žäë»öë^܆j9†¢ªj¼ ®ê¬HËæõv²eŸNpÒÀ›–¢8)Ç¢¼‹Zivtñ&x<ŠQN^ pÝ7y…ÝcPó¢Z4DýŠWÖ¾;Í/­úóêá¨G·ü-œÒ¥}†Üªø­¸wU§WZ¶°®.!70I˜W`×1@ƒôª/*’ÆÞ <”‰ô¼(À©A‡yàK ÒU¨ ¬é_§ ¦uU"1U]ª ž×4ÆÅÙF3Æò®7b9?÷Bׂ9«jëî¹ÀøgUÈS.{Á‰ÙÙ;|G~ÄJ_&®FsŒÇ}±*gf†=„ èÒà×L:4úêŠI§šÜÐä{¼‰®áÈX˶²JÕ×ð4Ô‚Hp7=ìMAÀXΔS<eìnb¡lŸ° Y¢J´)ˆÃÑhœ(´s,Þ¬A·Ù%ºï™¨‚Ñ0b—jåŽÏ© ²$I¯V¡ÂuO0`×:îÍyÆ‘’¿­…šCEÆ,g¸Be„!Ô(ÒHa;á_M Ø`wšYCOxÞØÙSœc–{Ö Îz&ˆO‹¶%Rúe£ý Œâ³ƒíF¸¥†/ïœ×iù°û‹Ø†C6ð5õn„,Ô맨¨ˆ!Ÿ/¤¼ÎbÏgN–·©Î.´ÃˆýxÝ&]<._Ô˜Ñ6ùHGü o R4YûÇ8Få‚*Oji0¹MЧwÄem˜gCÅK=qÁ!2â•çlVK¾oëñ³hÊ›ÁŽÌ”Q&[¶Œ&¡ò„°h´øÒ ‹f龿Î}¨ y/Ä‹Åu<™¢K‰*ò¦¯ì-è6Q Õ}¼!ä¥A…;4}‹&èïB—EqXêÓ`ùIo÷ß¡ž+¸\L™$³Ê؉»ÞŸp~Üi Лœ†¸ ôú †ÌŽávm<ÖÀŠo7åb‡Ó€ÖTÙ«b-®¾}4¥Ž×‡KCìõ¸9ñ´…a)è嚨ÞÄíR„&’嫨ˆ[0 *Aý:'ˆîu°Wò-¸O·›a¡ÙêE»é“‚ŒAZyC](ìÓÖ´.5—¸¡*]>ü ¾¬àE7åîâCO8þ¥Á )´„ÎLäR¦È¼îìn“+^b&e»ÛHÞ5Q;îÔ­™³2+¤ÞóŒU©^èZ#xìÈ:Ö‚ÌÿTé ‡Ê¦§(4[L`›Ž±%¹Oyg¿Å ­Ðr®¢Ä5ü†bþðÕ"=Ï”Ø2À}&TTPž¼*ì>ý*lô°77jè-ôfÕì=³*þ9ŸUq«ÆÓêe4›¥µQâ¢íæñЏÅȰrY=í Fœþ Y˜”¡£Ùlt'¢þMxc¥þe÷ :Ñ<£^œL!àº7£ƒÝï—Î'ÈtÂ^·UÚ0[gÈ<áõÜ: /7 >Û8\Ó¸×&KŸŸ©â.øOûlWçÂðfÙªE.›†“­–‘–F’ÛçÅ´2"K1S"“¥„g‘&Çôzäë­ó>ši³sª!åMz=êî¢Vÿ >h‡Fýùj€¼5Œ¾YâHðì”÷¹¿î„ZhuYå0UºcÌ÷êëZµuÓf¸ûG<&ó?Çè ý©#¦ß¢ˆÀYT”ÐÑkèŒ,'PìÀèU§ðaîzC'œ1YÅ·x S"2¤Œæ3Ç(ÍÇDfù0Ý T0…QŒ1ä:Ñ‹„_د'ªfúÉJ0"èÚs}u®8x“F!̇ÿb4ÝÃeu£S ?ª¯­­ÂÇh<;_Uú ¶‹sSM0.“rOiPØt.Ń¥”p5”ʘôáèŽ\+‹*Ä-g’ ¦cˆZšâ›[˜û¤¯ï`á~ܧ™ÛÈšý 6‚;-ÕÑÆ @雉L$LШ(ü£• ̓Eœ¼[BpPpFö”ú‹´¦¾ËOÂ}šŠqÔä{Àu(LyVÉ79v2²²D Iýxïrô¨LX`ÚrS)àz6éÅäòñî ñ{8¿TÎÇá¹B^gR“«‡Ôž„íÍú±·¢v7Epe˜Û}­-hu¥² „]ϹÊË [¸Ìe[f¯¤U#ÈâÕd \§’*k¯Ïunf –ËOPc ’Vbý³}€…Ðî¾lдD°’äœþ“4±ìyáßFù± GÜyžÐgUqÍè {M7FϽv—¶"\cøK©]~½òòmÀý_³°kH$áÓ@wYÂgj#¸ ÏH<ì’tÕÕn‘$AìúQªj«[®sÇY‹šPXˆÑ„­r^RâÌöÇßKâÅæ ò`¢ÿPhè‡J¡!]\Ж1€áÍ4†¤«H·¶Ad VØ×FIÔ®{ƒiT«˜_°¯õÇ«Œ>沞Ü~.Èá­žDPIr:¤ðü>~¶f *IÉs)rTŽP'–1ÖõØc•2ÅQžá¢l¢vC|g”.Jî#lóÉ(<Èõ‘’·õ¾Žâ@¼Ž.޶±kØ&¦¾«ÒïŒú?¿d ƒä)h•/©äE‘ Tí’  ˜ €Bh×RÅ•wv³D' m" ½0 }!cÛrçé¢R¶’œ5ˆ“iiN¨1)µ°A¶œÉUnÑ{TmÞ³ÅôR ;+Ÿ²‰±½Ô>ªV¶M¡‚E¶¶’íäÙÙñ[É)pÒiÐíws³¼³Cï¯à@õ»'òí*D8Þþ­­ÕííÔ²ìé+dòQÝÙõ³>ØÏyÉÐ[„6ʲ†•ÕôáÈb¦PÕ*”ÂÞÂ='SN¿Ô ,‰˜«÷ÈÆ3¬›…Ó,Ôt4™Y·YQjFƒ1Þ9ñl6ˆ²+ûý"P Ÿ á·dº•.SF/#+©õãAŠfõp6™§uP(l{€»)‰üþÉ¥,EáT^Z••CHFïéÉÜßüAd‘Ù¼~¾ùÑ‘©3-È«>x¿Ìë„òe¼j˜xc-ðµ-Ù¿J¼`û:óÛÔVŸæ\MñŒ'ü'ô›Ê2ºLŽ{>lñíÑOéW6³*ᦖ!C»LÅ[K5qR ŸeÛ¬í,Y<óDu7B݉™SåF{W´ê{œ©ÂëÛ|ŒbìnJ²ÒÑ)jÛ•o¬xÖ”ó3ì-ºÔätÕ3³¤p*ÎØ{ò‘„®¯'¾=•w|-pùo“;ü¥±½À åzuƒÁ’ ¿H¨ïL×·‘¨Œ1ª7i¶Qp)¤ÐÃh ^ùv2æÛgrîÓúÖìqBª™Õ¬³*åÔ±â­2™ÕP¬™¬g/¨aI·ÅRVñdD¦.Q’Lüñ½³• Ÿ‘oìN·_vKy«9ݹ#ð‹ôÃg ônKtz´TP* Ðù&5狞*¨£>!Œ`˜ÅÌPö€õHX ž!¨§Ó]QJÎ1Mpi1)ÈWøáon炃¤nvØ]9‰w4’X=^S9ŽÈnl°öיּÕ,ÑýâÇÅÿ¯ÿ4øÿëkKüïgy–øÿ¿ôcãÿ?ÍêÏ]ÿ¯ëëüÿåúއW»ÿ_/ÙÁYÝ:üíÙ_ ¯?Àý/%e%` Xš„¢ßÿ¬FÚâaöT0ˆÐëøÛºFH–mu„ኯdDÒ¥§²š¿ 8œÙú\p0îA b‘üv°¢,ì¡N^YéÚ#à1æP³QG_•õz7½[Ý@;}Á&Uþ¥¡[àJÒ¬âº0žOµÛ ÆÍçŠð<ÔÈôˆUvìT·6ΔªÃb+ýM#ðMBï„ÜÁ¶sÙ¾o5×Mà›«Üîº3øg5¬+‰Ä°¡ O-§»K­XÊܳµA¥­ÁØVwd‹‘Ü÷”0o¬§OÊ£Í ³þ(³…Ëœ_XÏ™ÎÄì¥ÍSš‰f…UêUY~°Ž˜ÍfáéåŠé1¡ð¿¢u*dW$YvÝ3=¹Œãý±Ôûýì«ÿküHýß›úë7F}õËüÏó,õ¿ôcëÿžfõç­ÿõ7¯×ýõÿ[®ÿçxxµûú¿ÆS’»ÿNEt¡ a¡ž1¶é þ~’f /2z*þkùÁ/ª“¬ÕWÕÓó,ÊJèçæxPSù6­'Ùö³ˆ†3œ‘ôB¹H2šV™ôDN Q9}2œ´¥<¡„;€“‹ªà¥Ÿ1•i·)˜ž”xJ½JãYÍ„=¶ÒŸžS‰sY$;ªŸ 5š}¹êÙHk­Æ‘{¸ƒŠR¥ÇœÀ5˜9óò»Ö¾É8¥x8E=cUß°õ›«~dE™Qó)ÅÜ cô©›Ê4<:±j"‰¬¡Ië@&!âD¬2GÄ4¾‹}QY5ƒ³J˜þVÓ~4o† ÃY‰®fT•ŠlU]B¹T0rOÖ’˜‡i¤dB®¦É’ŠÚlµ%|ƒ.Î"š§…'³®ð £“5 t6Ÿ\J\R•§È¨9·ŠÊ±Ip‡²ôíh¬²mêD-Bík¤ßÅ~Sh(ÆcBÉ=&Ž,5ü£1Q$®û×Élv´8jžÓù¸ïÇ›t¸‘‡ÅI¿Æ¶v)¡¯„8}# ãDÏÌnµ·aqCûîeùÁl²ÂG¤§l1}•Òi +*š|uzáçAú/›v9)gC´ór¬\Ø]˜ŽÒ¨¦JH¦éd—}<’…Sù)ëi.-iÕIZ‚[ÚJÉu+¾~ß)í“Ïô…¢³ûH€+ÍDôŠ’[6Kt´¶öeåýšC4€žS‰Ùè&¢ò&ïBºMGœ%ÌÃH†ŸÑ1±¤¬a“‹ L¡ô8ïš=ÐÄPÐá’Ç •ë †cN©]AÆ ÓGjW1èöy.gí¤À×FÈb ô³¤ƒæËuË0ÔtX÷^)qUpÎkÇY˜Úä„,¦ =É» eøLd¢Lî¢dr½ØBêñ^óº<þôÉÄ™èz^–rzR²Š:£¾Î¨Ì”—ÌÌŒVŠÍÈ‡ß um:ºs†ïvÉcNN³,§‡a‹)A\¸fS{÷s¡7Bθ, ëN ÈΈ(–ç°i—23xe£œ¡@ LéPªì×ή1–©ç{eM1;õ’Ãñð³½.˜ïÕeöý½ôÄf\_ÅÞ  ñšÀ»üD§Y‚mP,ìŒ^Cºö)FÓ›qZ3“£W£=LŸÃ?Ò²²ŒÍ‡¡“3°fò^ªÅþ"ÿé&q›­ 3®š°+çNÍZJWL‹£°GÈ?“ÑŸB½’††a§îvØ`_¡–˜A9uz 27–ü™Aì,:ˆðÕ‡ö•X¨}ÿ&Ôp·é5œÊóä•ÚZ+6Þ(òØÅ¥È3F†0éüÑD]>k«íj» G’+lr¶ÁnG½ƒYH·Ó2N:ƒ4µ›*ùS딾Vßìá¬â‚m*¤38jM˜½†¸ o I7BKéìÞKIÿÐ Ã…žïOv‡l^䜨XªٱæÜÒ(,HÊ&¥¦ÓI¨[…tò:1Rþ;Ù=1”Qšeufbö\Dia#.C[>ÏUë©x~æ‘‘+¸Ï•Ï8?vÁ¨|Õ¦[åÂF-N4#o='v2"Ĺ7©DÎN²d7A2êƒI¾'A1 9å(rșȜm³‚>û=‹ºû5BqGSΘ­²@DŸûê;< Ï3>ß<֮ ÆKûMO(•u"}µusú»T¢;T$•ÁƒrRçP¼Xbê…óRË\ÔÎÙ´HZj*±tŸ Œf1繟"Ý_‡{ÒÉéŠãxǯ£VäÜð¶vO6UÀnEœlž¦wvïºÚÝÜ#ü;ü‰°Ý£Ã6>=T()¹÷º¯Nÿ¶÷Žé_Lôvÿǵ·}ŒXm‡í¬d€˜§­Õ9>× ùßóVþmTd@]ÐE.=ƒ^Èëðpóh[òÕÉï3Ú)œùnû˜ß}ØmvvèçÑQ%”¯³—Aúþ½×Å$ŽÛ'ÝϘÛñ´}Ô„òÐß­Í@!ÞöqûàC"Þ/ågéÆn¦¦òB,o EÒB,@¾ƒs”d’®›‰ uÁœp©y‹ˆßRòÑw%Z˜u\ŸxLK“²´«üA^Z:î&]õ“þïqlJÇè»’xÑyQÁli¼wdtSÚÄSÖMæ EÈ•äõ[ÏÒâb¨Ù¯L:¿@xñýr"å%D*š )œpÑê^ÛÎðkÀ,“É\(ßáÔwjñ[ê/WL@ —¨½cýÎI@1°D0¨ÝF]ù¦Ç¦(A9=ñ“$¸©5r~=T«=ô£ÞÕ-ê×U†ã©;|6"öÀ®ðÉ..ôý£Ó£šÊ|–Â{t ¿”åô¾üλvÉœ¶\BU‡®ÝÊÇÎîö~wÿ¸m5AÇ3¾D5¬ª­¯M´XÞ‹;ﻓ™Dܶ¼L6B8M!~ *As“>é–³qÒ{:5ÀgT«-汩s«-×Q_ROŒ›ò˜Š»9*„‰ÍýÕÝU]Q0¯v¿ÜDD.΂ÃëÂA5ê"zÑn¶ K¼ZõS&¸›šêE x‘³Ð¬.¸Pfnp}YC0[g(cCÂ7܃,Z0««Åެc£;ötÿU-;5ê«kœVR#PªÕÿx`”Φ¨œ.ðÊI]ˆ3kL7òˆù”“Ê÷fo>ÆAãN$–½lÔ¦\ ¿vQFYb»Î„,ÿ@´”Ù¤wõ‡颾žZ§`‚¥'Š&:U€rgIžšª`¹îÅ¿O”G?URæ”nO@䔸³ª'úŠ¥Î`¯q—JxsýSåæ ·–Xþ)¾®¼ßˆ²þ®fl’ìóBÐ"‰dV´F”³ÞUHÀúÌö%3Fµï°Ç‰=… p˜mÅ,¶7Õbpù[ \¯L`ÈII"ù&<à=+îÆ!‡SE×/h>W[ÉY‰‘i0-°å`…It¾Z" C°¬(+PÈHÌÅ£a¸¬m(€Y­kGK,‘$pS7¬ #´SÅ”BmìpD†ñï}ÇŸ%¾iÄVÜ"X³;n&aøU¼ÄRO™¡©ÂfüuÙWó¥wöó InÃÀŽÙKíRsMÒø›Û] …nfU¸Þ{ œ§™Ó‡ûÎ'i<阒6°ï †˜» øÃ$”å•“`ëÖ2óH/'dßùp3¯‰üìùßÞ§DŽpE=Yö™Z²¢B=Ìwdçnœ—“œ¦:6¾n ÚxÜp ɲ•‰Bs2ØDR£ªÈË TÅZü#(-Óñh¬]Ge–½¾liåŒ!¥‡s¨{ûZøÑ]•¦Â&í¼ŠaÑ7Y‡-õú’mX““„ãìTÇp@ÞŽø\”ždñPºM2I½3‘}//*èQ„ÉÕa_&Ì»uS÷>§·J3“–`!•™pÙµ’d)Ÿ §4T§9ô.‘Íà¸Øõ9p=”® ž xï­éwÑÂ&+¼zh1L•ÈqæÔØ:lkUÇ™âW*ÚPs_b Ó?hÍÐ|JW!d/c¿ÈZªtmS‡ ï¬*\'e29@t»&À'ѰY¯³±åôYЭ÷œ@ÎŒv¥bá¬H0iÓaªX,äë~ÛæoM뚉Ñim ØGuu–§š{Î ¾n;°1q½Y0Óò&]HÙ«ÓÚEê<]¤ÌÓozØ ©ÞÚ‰å¯ÑêÈ©Œ%rQx‰8Uh•ç*°PjžÜ©ßrg+8uÎÝÍñà±k•¹ÖSì°9Q©ÝªðUåì#gcŽ¥ù%*”fÆ×–Ζᵫ& ǃhxƒÁ ½?"¼k¯6•›‹ývÓ¿|»N `È+<ñÆÈû¢‡k—‘JúPÓÖ@jÑÔ:°©™gz»/k#‹Õÿ_ÿiâÿ7–øŸÏó,ãÿéÇŽÿšÕŸÿÿêõzbý××—øŸÏòðj÷ãÿŸ,Ùð2þÿÿW‰ÿ´ðée þ2ÿÁL´ŒÁ_Æà/cð—1øËüe þ2ƒ¿ŒÁ_Æà/cðùYÆà/cð—1øËü{ðÙ2ÿ?:Ý¡â2ÿ¬fƒÏ/cðÿJ1øë™N¨ìgÑÆ`Ç$á¨÷áæ®ö\J 䯨÷2úóèýŸ:yý•e`ÿ2°Øÿüý©ƒ e›2ú®`P£þ(uV|‰ 6ÚCYdŒ <8/'` xS_Â,á –pK¸‚%\XÂü"pmÞùz\u¿`UJ*]“+såBgø„<`NªÅçóÅ…†\$á‚!X~}¾ánSOÊ Â¸ é‹g Ò°iX‚4,AL¹%HƒÅ;K†%HäáZX‚4ð³iX‚4ˆœØñ%Häa Ò˜÷%Häa Ò ~N†õ†'|\ü‡‰ÿP_{SßX{Õ ü‡õõeü÷³áÚÖkLYÜ&ÄTÄ} €Ã+’òºZÑŸÒ A fTÝÔÍ §³¨gI‚†Øç“ñhY2#ˈü·ôë’ãS?¶è@p¿,NdAqIƒïÎ}…9XøÂHï«Þ°¹Ñ4¶dê&Zy ÀÅê*pÕ7²®ŸÐ +< Ë¥@v¢d¬h2~4¹[©ÈFãi(:ÆÃï~0`Þ -=Ö£€Ârâ “3âm9äx ñuÃeýŸ¬}ÛJa€EŽØÿmß,ˆÚ²¦M ªcx•†s6òÃÃÉ–¦¦„£ðüqz'ªå?­6W?ÑYüÓÅ üE?V›†zð]䜃Œˆ÷2"T¼cˆ‹ù``MO-ªcÕß½‚ùNÆY¸ñmºÐB¨ ^oRx™&¯WnìC!øÝb „Œ(àt;þý]3õÁ¦ŸZœ 9mpê¢7˜À¾ñ=¹Æâ!Er9•àÂRoõwСj>ƒæËõwmÞ âkì*)€+Né&éV¨Å/a´7…)«:$1'w´1¼ CÕ:Æ“èk<šOm¯ß­ÍC–>ㆫXÁß$̆Sâ”Ç™êáù×ËÌ[bND–8F oñ4ª8c˜ÞŽæƒ>n2>‹IÔvi1‰¦ãˆ.hóß¿m¤ØšŒHª£ÃR4÷ñGÛmK «˜,€=x/ôlP¼†‡kðT ?Î&rOÁÍZ¢Ŭ!G ”¢òöá7Âè÷ÕƒSÍj0yœx'‹SƒsÊÐYaŸ5¤`¢WÂöbÃI«ýbAAaçÃ)…óÇ΄CvéP¢uΜƶk*K|‰= ‰Grp0!>$¶M¯&ñX‰6ÔóËh€(Ï–ì Wx”EÂvÏä²j–âÊ—9Š41öà Á©è [ˆÒÜñj‡·ñcZð$’–åײc4äm|Á˜K¤0ö›¹À›à]ïÏRXÒÚò5móÙÙcå“[ãK:´C!x€0ÚN-z§^f^ 3µ/NyÚVˆ6 «½;u"ôPÂÂ$9NT;Z%(D÷9/ÅìïWb‹z6ŒAAিÿd!($ÐÒŠÚĺ°ÉÏh+þŠœDdÔ%a:ôþê©O¥è”¶ŒžlRpî ¬â‹ìUìTÀšäüUÌ0\>p¨$±Aüþ VâûÖÕ+DÀš>Ùð#¿¯[KB€Ms>ѽ4õd°£qUp3óòÔ mNPÓ s¦Ì‹øåºóH™BB'RÙÙ‡Ü`*ƒ–c88l™‹Ì¾ñ[.¬e¾5Â/¯WÛ><Ê J|¤Q¨qIŒ½Þ‚ã7ýˆ—# {)#"™Øÿ`È}[ZÕK3-oˆýn_‰¨·¸å¤XÑWKœšJ@$\=c(ë9 ªv£ª-¡¬`<õâÕ'`põbÕJ~ÇÀf!NÅ;ˆX{‡êªnT´ˆ\y6!zɈ\±ž4q÷åù'P†öÖ3“p'Ä®ÒÏÔßŃ‘ûcú*Áïªà»Âù¾’ã ÊÑÔ= ÕícŽ<|~Ì@ ’lŒ$Øc;ž¼Â? H13Ñ€‰bËx @ގ„˜Dw0ÜkmÿZªIVMÖâZÓ¤gÂÍð=êÊ…­°[hd²F¬ÈÃ)¥y£\€LIYF’É«£´ºB§C™¶ð$ö;]-IxKóM¨Ö¡ÝótrõR5£SÐuébh_k“U(ÊB=ÊuCkØA \+@9E@>!©&T÷ƒ$ÝÃ2QÅú"X²8³¥ItÓ›ôL=+Ô­ã,´3ÈÀž²£(2šŽ¼§ïtë Êpß+¢Sã^ó(jÔÛ»‚«ìˆtä]Ô‘‹Of[ßTZr„¹˜‰ýwP*¦7Æó’½Ñ¡\QÙ)kdI“oÀS>‰¦"ºû›Gâ`4ŸÈËÍ‘Ô{Ÿߧ1Ôð—c$ën,p²··ÕêÛ74«4ìµùÈÄqZ Ê»e¦ÃuÜè:ŠŒD¼Ýø FðfÝÁ#q@ŽÄ‹‹•úyè*ß6Ñ-èw¼Ü“¹>ƒb<ñ’3k¼_8d Þ¸êÍÙÍ&1ØÁp„Oo'=;ºØ•”HUA;þ-l2bßÅ3Ü"w¤1Œú*¿"–ð`Þ‹z=á+CvÒò'Œ6Sšf°ÿ¡x4—r…ÝÙ)ÜÒtìð/Êy_aÃTQ&$š:‘=T,aê]#¢Qk÷sû\Ä3 Æ;­å šÞÏ4Wø^¼Ê3ûZ½KŒ318{¤Ièõ«·£+iˆ²+°Â¡6h¾Û´Çc×;´n3gh]´W¼ö‡ÆªŽíYó°U' @ª%ühdwÚ™Péxfõ.€ÖAÕfõŽÛE}ë›W‘ Íÿ™‘Nγº_#2×# ülnVÄÖ\@¶ÎÏÎü‡p.“ý.|Ü=ßü[r§‘ÞÝn:ïì“þÁࢂjiÁÿ7·· ˜`çþéfaûèô-|•|©›ã±Oþ—ð_VÜggwÿÝ;”¹ š0çíý­­Ã]Fþ!¯öôzÚ]E»ÛAŸÖ]kŸó‡çøáùéÇ­I’€¿{Ü9ÙUßo7a‚·ù=ØÚ>úx±ÚLlÑ=†R‘…˜ÈÛ + xF\dõ·0BQ‹¨!¾ ´ðXBˆÐÑñ# eð@÷Sç$Й¿&Т%[b2 UPíC&/B{0˜&`•¶ "ÍÀT)€o`ׇ8+RâMOâáwã÷@ÒÊEÌhµ„{éH؈0íÝZÕKrÕŸÀ§Ê ¹ â.NS½iІÅ’ÁTá CâNÈÕÙmoXÙäÓärÛoŽÆF÷wMgI²&¸H•íF|ýet) 7Sª‡÷§@-Y"¼}½“Œô¢û¼ˆúI¾¾k¿î…ÿd†>¨ªï0P«:+Ò²y½lÙ§œ0𦥠û6¡6zæa-ÓG1*ÁÉ{®ùF¯°[ j@Ds¼§TYûÎ`4¾´êÏ;¨o þÜò³pJ#¼s*~+î]DÕé•–-¬"ë™$c]Á`l`8 ÑØ[.†®à tˆ¾Ä((]…jа [E¾ÄpU.‘˜ª®?UVLEŒ‹³7ŒÐSBʹވåüñŒåÍWoæ•Ö›2èÃýGŽ’ž[àB® ]qùãŦ•]ÞfßFÎ<''¤ëLÈ«{LHWÓœä,øQ~MÔ~[Q³x_M`·S…S\–m¡ÇÒóÂ{[&êZ#A ÒÈ< €s(n´@†5÷4Q—D^+=[Ûû5¥>|$x[1P6¢,‹`J$K.Cªm}çä%N‡hó~m"¤MÇiž”!Ò£šé)]?¯&£éñíåJM¬†4˜ž–WA„¥€/*¡='¾D.·Otݱ{µq^©J¨_kê•ÔX]‰¬ü ø î[ ë•ä!Îpu('‘Âèf,ƹKœçÉÃP&!Q›¿¥ÖK‹WÃé’Rïœã‹ûR4ÜcOÈŽ6ÓýCÙýÌ£Íë>?÷Bׂ9«jëî¹ÀøgUÈS.{Á‰ÙÙ;|GþÃJO&®Fó!zÊ`ðÚ–{3+«O²‡P]üšI÷Æ^]1éR“š|7Ñ5k×VVé£úž†Z =˜ j2µÅLù/9’‰…¹¥ òD•hK‡ È+¡â²÷Oغ‚NÙÁ°rÅ¡V®ÉAžkØ3Ò«UXƒ‡'5ë¸7çÙ‡cq‚ÁÆ¡æP1Ë®Ðh\2¢œ=(¬¼êÂùÉî`,6,k\9Y&pÌrÏ„XÏ„biq4~–$sµBƒíF„J¼¼s^§åwÂn/bÙÀ×dÔ»²P¯ÿ5ž¢b "†|¾Òv8‹'Œ,áP]g‡#ûñºM:x\¾¨)£Ýe%Tlò%Žø5Þ¤h²òqŒÊõ>T^Ç•À–t5š /ïˆËú¹«¾‡Š—zâ6‚CdÄ+Ïɬ–|ßÖßgÑ”7;íND±Ã´a}±…ÀM¾¡Ê0šÑÞKC,š7‚`‰¡*ä½/×ñdŠ®PlªÈ›¾²³ »D%Tôñ&BîÐÐÏ…. Šâ°Ô§Áò“Þ8î¾C=Wp¹˜2)tÇ‘t°ÿÎ;Í€z“³Á°B`srßb‡p»6k`Å·›M•ÖTÙCîdí­qnCÅÊéDìõ¸9ñ´$O!OQ‰ðŠõ&n—" –Ã<~AO9¡úEØ»²×Á^É·0“K3,4[½HÂk„:,XµíómMë>«…åC8j)w¯XUÁìT|±BK¨á±ÒèWd^wv·É/1“²ŠÝm$ïãIZ3geVH?½ç«R½ÐµFðØ‘u¬™©M€ðFˆC%3U±õ2k†ÆƒØ’ÜŒ‡¼³ßbpVh9WQâ~C1øÍNEs¦ÄX E/—ëYvŸ~6zØ›‚µÀi¯z³êöžYÿœÏª¸Uãiõ2šÍÒÚ(ÉŒYÍãÉÆê)eÎ &eèh6݉¨ÞX©Ù=ƒN4Ï8oWðȹÅï“PÓ {ÜV“PQð´ÎyÂë¹u^n@(2x¶q(¸¦q¯M–>?SÅnñ³]]œ ÛeW¨¹lšצ–y”¼÷¶b¦D¦ÊºBScz=òu ”~ÿL‚>;Õò&½uw Q«O³8Kì]mP( fÙ6âHðì”÷¹¿î„ZhuYå0UºcÄ÷êëZµuÓf¸ûG<&?ó?Çèþ•€b¦ßÔ9¾¶4 ¢„^ƒ€@gd9bLj€N±º«™Ê8üž–cQ¹X ”CJ¤SõƳ&„eDl»[ ¦0Š1§õ[c‘ð ûóDCÕL?Y F]{.¯ÎoÒ(„Õw) ÷VV7:•ð£úÚÚ*|ŒÆ³óU¥¿‘¨p|ýª&!êñ”f…MæRܰPÓ.†Ry“>Ý‘KeQ…¸EòH’Á¿t,`¾Ì鈾¯ }œ°k·p?îSà ÌÆýÈšý 63Hª£õ_é›5páQ%¸!©|Hh,âäÝ‚ƒŠ1?šT‘ÖÔwõI¸M+Œõ!ù%]†Â”×á”|“cç"Iɾã‰i’úq΋i$T8`ÚrS)Ðz6éÅ”½o<;C<ÆÎ/•Óqx®×™Ôäâ!µ'a{³~ì­¨ÝM\ ¤°ô[éJeA#ð2<ç ¤µ©Àká}òF²RàÕ$6¨S‰Ä¸äúðµõ5ç Æ@±°ù!fû ¡Ý}Ù i‰Á–çôŸ¤‰e%w ,ÏÎ0gv„'êYeo¢ÝQ,F?=í… WþRj—_¯¼|pö׌ëšIäd]’'r¦V1‚+ðŒ„Â.ÉT]íÉéPƒøÝü(½TµÕ-×¹ã¬;Mã-Q½„¨r^JÑ)dZºÄ—RTHôƒeNŒt‘Ɔ. ÿuo0%~õ‹]¼IB'á>×éÿèTT¤N=”Öc¦9Ò^ ;ö«]w˜E7ŸFá¢lfMbÑéUÁv‹ŒÂÁMÜö(oEïë(Äšèâhß¹¦ŸVø¾E¿“ªã ýäNn•§xÉ)µ&ƒ,»ÑW þ­AU\ysŠâ - † ކ„±ˆ„\G]¼sþ¡Œå#cÞºýScòäe£b9“aÜ¢÷.¨Ú¼g‹é»¼@WL>)c{)কmS¨`‘­­d;9EvvüVr œ IÈÍÍòνk­S”“ᇭ·>M×ü ­¯ÎVýÑvú;[ùoš)ÉÒíæ(MýÞ XL ™&«Ÿhk·ìá^Jj¥u¶}¶+ßXñ,çgØ[t Ééªg*HáTœ±÷äç]_O|{*o²øZà*Û:'CløKc?€Êõê ‚%A‘%Pß™®o#QToÒì ¢àRH¡‡±-¼òm *ÜÉ·1äÜ–õµØ1D„ V3«YgÅÀ©c‰Z2«¡8)YÎ^P_nOlf¬JæQ’QÌ¡„±©³• Ÿ‘ç#÷¤N¥Ç•ÓI_¤>¥w[‚·£¶ÝJù'T‚…Ô¼ûžŸ*Y£>¡c`¨ÅA`.Î[XçïùÈ!q€Zp:݉æAC=7n„^–W|…þVåVÉî²mS%|P®“§Uis ̹†ßEpÝ©o`xQª‰Õ$ñãÿ+Gz‘eÂôªË?²pȹÕƒäÅ­ø@˜]7O€´€¬]|C:~¨T È|Âúüí¸O-¾»ÊtÑ"r“›‹ô?TbHä¦G ÛŽÓ¥^hßòuÈtŒIjt;¥ƒ•r¼Ú݇ŸÄÈÌ×^=Ò¡:míÈt ÎÚ£\Æ^-2•B+ ©8%@1ÄwåÆ9o²3soŠ ¸†Ï÷¬Ø}ptÁF‹ÆU¨ÛÀÛ H,©°ë(:§«˜‘ÄŽ˜#Z@<ÐUn9“ÞpJè—|:Ê%Þtàí5Ø>Ð!»Ê¿a·è7Ë9ãb1¶ `û[ýï“é €ÉºÄdnþ#õÀ&ì Ê©;bb=}<÷Cv;¯eÐZ“AûôNÐ Û—Åìž&QdçC' aÇ‹Øq3“/Bì˜XQˆ%¸¾•:CœÉÉÓFÏŒ™;«ð¦ø²±bíl¡eí쾋ìŒÁtL¯N Ë«½„w9´â0«ëÎ0Oæiæ0O n(Òf¬†lÄ"ó)Y÷Õ>}íü;y§¯Þû̱«¶[ôÄ×ö`å]àâ7ÐcA´›^ö,[˜ÁàNÜn:D?·3»d=Déó‡íÝçÍtŸ-@ã³$i¿Føàù‹´1µ$H{VŒ´I&??Kãrª³ —Ÿg¯æóË9›ÅÏiÈ0ð%üvÖh4üö;]óƒ`©ï‡½- KîÅ·eÙ$ju îö#.ZÍ÷3Cév¸'œ®td_dO:ÜPý1 v?6ew÷dSaìvv÷º§Gé}n"¼[‘¢š ü õÀÝÍ=Š<ßp×ÝÎ(=:lcK'Ý“:ý 5œ*/Îêº60 bûø°"àÿðÉÁâ#¡ú€?>Ümg´zÐ9>‡—Ølÿ¯+lß#ôek£V»Cõ´.²ìÐï#òµ|´ÛÞ»'›ü‹*oo}D=öÖ–^ÅÅœ¦ëº7··‘H[‡-lêl, ºC>Ü<ÚV˜ ˆ[ù}²(ÛU3i™`¶ÇíƒAÛTî-€ï{vR"D¥ ª†öý°{tT±~?uêô³³÷~vvzû¤s”ýäÛÚÜ tè¯ ¾ëxÔ8þËCÏsY‡Ååbï’“€‘àw1ÆÑÝÏ艨£Ò´nw@ ÿ)ÐTP˜ ìÎH½¡…1arß°ä¼^1z’á£~¿bw…:8ÅÔ-&¦¬¢—néYKiïZ6œ5|§£ÞÕ-Y“$È=ãÖ¦`ðÖõ´”Ä ødWëþÑéÑ }ŠñVïÑ)ôR–Ólwx(AÉ\BU;½ÝÊÇÎîö~wÿ¸m5Aç¾D5¬*ÎmS°–÷ŠþضnÀ¶"ä+$$)éã…‡ÐG›0êlñAßùº‰Q7&ˆÜ9U(uæ(æØ–°ßk‘ö{v0í¢kaÃyOoî „vÌqÚ›Þ†¹Ü@MÏÊMõ%[qi¯@aÃcn<Ñ02^_xReH–Ç©üoÑÑåWY”ãPÝjÙI÷[ÜŸÝÒå®Mna~áõ*W‚޼Nùmeâ-ÆHRûœÀJÈÞ9uî‹F}E ry­Ê¯ã–HT¨ zVÅúuÝ+–šŽwH£ŠÊØWó%Y' à ‡ FǾPBþ£ÅR剄i®­A‰¿D•êj4Œ¾áΆN¡¦ŽëT–dºÁ&jËÇšZ`Ý^AC3«°Ý¨É6—Ø~IË Õqu;þ«c ûSVÒÉLPJ3G¡½Òp¥½Ìé’z ›¸[Ô¤²+5¤ŠWƒK#&jÏÕ\Ë ¡†ÙÚÎtW3¬-ylÝ·†aµ#"L·“ãPPèuL(eÄ~ìjß—,&ß±½ZˆSãa?¾êbÊ^™i‚JêJ-òˆ‡êÕ q]Øpö]æœ1†Ü'#Îk¾ÑR'íU¢ê6µ}™© •þJ2@ Q7ÖXöVË©"­ñ÷²¢ìºŒ8ITÐÂØâFå…’8vèˆÀd&ZJèæ(ÆàY‹ jLhŽ/§ ç@ÆLŽðƒŒéƒ)í´B’U¨më¨800“ÑèN®Ñx¨äj*YK)FÓä÷VôëÁ‚€8Gæá1ÇÝèk•¥?úæåªPôÕÅ0Ë6ïp­îÇ7w2í%z{fÆ-Eiþê|8zPÑŸ_xŽØ|É¡‚viI@µ*Í{¹Áh¯‰P¢#¶RrÈ_«T ñËŠ©ŠeæKúžôt‰¢³õHbwª_Ÿ°f¹V#ßภJü¥L~ü@X„ž¿…^"æ´¤ý!IòÉm¸rj2þ¤|Ô.ð˜AT2Í΢(¾ðÅôH:àÛÅÃvø£a‡¢äH†@:¨iK Þ3a&pù¡|á&áB:‰Á¥£±J å)ð«Ò xç(%Jô0ýVFçàFG“º3‚É9’ͤ¢îDF #Zz+ضnD½ÙÈxsÝys=íM<¬ÄIN*ÖÊ&ož´¿Ï zcÜÄMn¶¯ñM<€"PÞÏË× –lqÒÈ5™Ü7„VAUè7eòß™„}UÙÇÍŠÙK`ò¨Z0Ètðr†²I‹‚Üp©!²Â èJ’c"R¼‘°¯¿ÀM ¿JaÝP‰† É› ¯0p‘”­FÏJ_”¾G)ÑHú±8x¹"㽆z¤þô÷ÖsÞKEóQƒÚœ9£Ò#¢d 3¼´‡Qy„œ[œK)„ˆøf8"”õf GÚZ!q ÿhÀY°"û*å-ˆ¶“hŠ‚,BÌ)ñ0ú–ÙÚÉÙ™p612­T0ô.¡h¦Nؘí*4LUEEï¶]ô³æ4´±Ò—ë÷ÙV…³³¦‚Rè]õ„ª²»æo«P¦¡v¡™]!\kœ1h Õ„%óújÎ8J6¯—­Ò"¥mþ_É‚±ÐRäûUîòªn«œÞ–,m•XW@²§‡3:é4,»Y¶ûRÏJJÇÈe¿ïåFž~hÕvXžüˆOù®Iâì·Ñ|îeÆw<¾ŸGÃê0ºÀ)BfQX{5J¨]š\}’„È!i6‰Æq?ÛÞ{Šî¢ø6( î„"{3†²%,Á>ø”Í.ىƃžD£Fâš- Iœ?!…6+áÓßþ«ê˜RŠ>î|a B9Û™p…5¹Â³Þ]·ßõo#úÉÓIý4‰ÑŸuÛè©ë§¹vÐt(|ó–¸ðÍÇy·A¾=¥ƒv/~ChddÜ‹‚7„Fú#4)gÕ­×òÄê†'V7®`nên F»Â#tUÜ+óWe:†y€_”»|íöYËbôu/u«A&;°u;lÑMâÇh4ôÔT}¦ªv¢dÊ‹-ÿ‚  ãt(}ˆ¼³6ƒíÙ~åhcVb«sI¸Š“ä¼¢šÛ¹ûcT»H<…®ÿ" ¢™{e¦˜e$´KBÓûëʪ⫃LJXí®;Eשh&_8gÐAödõÇZ~v¡UÝý´âëNñõdñu]¼aJÙˆë™ùVòvã";ºPhc†iŠš#ŠT>hä ÜYœP ¸=?`²ÕY±‘2_úyЖpQ&Ék'ô¾“x‡£R‰”´Z8YPin, GÀÏÑ,,Ëån²–J—·0¶½Üg“•Á-ù›¬Ìàa’Ûí`ê¥Í'öKocZדÂ\p§d˜A\TìjDÛ¶Œ“-§J‡z]é­Ò‚9’QYo:nµòžWÖ[ͪút=ýnµÆ‹Aÿ•-²[ Zå³€B­³äÑÝÚºÓÚú½[[·Z{•\¦+tH¦îËD_žÖD sNEWÑtÚ›|¯(ï„ ß'`¾ø‘0ÿp æ<ÉCé”tYQ‰vq¡˜ƒ|Û:"T6˜t6X_ÚA´KsrÈs£*÷€Šk ÷ž «ŸòDucvxLI—ãÍç<ï”gÆwÿν­:Í;Å ¯‹*…—Óòº×ráÕnÙ^‹^ÚÛýE‘…q*ݰlïʬE?á胃T±5ù8çjFYïÄÍ\œCyÝ@G,ÆÜ÷ÙÇ…Ðå\ƾÈßÊ­²ÌÔ…ws·Y«è"ì¼83_8ÛúÅ¢Ûz¨M›ß<v«Pøe"[!CÑ|ÚÚ‘ÐÉyŸu2Áíøqt2ÂÐóe`õ·—]4é…¾).¿ü'H*F«òö!ÒC°Á¢Gq}í±Îb9uîiœO{zÝð?óÜÕ“Š”õž…Ï¿`³8kõ{Ÿ*ršçJ‘&Ü-þ?é 1SÌÝÿ(°ŸŸ¥Ý¤CþN"/Ÿ‰-Ûr1¢÷(a/ft$Í‹OSÿâ»4)å Áµ‡D•²þð«Ó$]¾roZ dl¥xTQ1ÕcK)4u¢C•j"q´5®ëÕA¯n0ZNÌx{ýkOz" «¡­X3tg£9dßT…`Tcu6ª¢K,Ö©¾&Ò‡ ¬°l*7o1ËÊÿ%Nâé4šODépó¼ ¤®­¿}ûÆwªé±+zgM¯ 5„F œ†>Ÿñf²JÉE…¢ó¤w…Nš 9ßE"ú³‡šiMìÉ@ÌK²&¡Nd Š–™E=Í)36k¡†kkI«ˆ†‰¢Ñ­™„¡ÉMÞÊ”àì²w9çäšõÝ8+‰–e´È—k¨ïïæt`_× ®ìæ)g6V„+£“ÝžP1 ¡„tdçèGÙëcVî-·…pÒÕ-dn ë÷m!ã¢Â-ȸ„ÐV“ß{5äÒIµq¯Qh¿¯bmlÜ«¬6R­Ç¾Š´ã­`gHTÁ–èkB­fdIgçf½¡ÌPk™VZ—ÜŒ$‰vuu2½äÄBéY«odÃácøà)\5äJ1˜C'xبÉY]¤Úg7ÏS«® Ñ›zÅ¿Eèç3Y¦Žà^F5±ˆGCбM,äìÀ©}kíã“Ç5êÈIRO˜k}œØ'¤ºJÊd>²4'ådWÆŒt¾§ ŽIfˆËŒãv,fP5(‹ˆñµê”ujÅ»8AaVaNsÅ÷DJzˆ˜8$·š)ëÃ׊EÃÄÒã™dxŽõQÁŽIÜG'’kt}m%vÑî÷Ó" c±Ì:J”&ýShr£bÇz/BfN{s”ê£ßÒ‡¶§åò_lŸrÌîÎi•^_“p UªŠ•¥§YišL:Únînéhðåðµ¤×'™cœŠvÓ/ ÂVè’M~µŠÕ¥äAc§/Ä+(‰Û/*âE³¬žJ úcHK rQÀ‹Ž@›*âKHí!9äq`êynÊV „Ög–â^M†v®¯_ZùèxòÍOï™Ê=t—?¹hè쟥xÂçã…5nµý8“{*\¥Ês'º­&ÚL²šè u‚>Q¤ÓÓº(ƒH6øç…'ÚôXC§˜è`Ÿy¢_Ÿè 3Ã% ÛTY§ÒŒàÔ·Èo4SØxòAI.À·iÞÓS>Òä VÅhy±Ðü‹â,  2:ÏŒð¦`¦ñ€¢7è¡ï –ÀpúbšÞNF_R€E S¤ÑˆƒÄÁ$Ú2µ6MõØØo¨c®Ì÷ÄånC¼Y€°$|Y…:ß©2aú´.ºÔýVûBô#ÌßFÁØÛËå¨LÑUR<½ŽŒh»ÃÈä§Vóaé†é‘&\t‰ÕNÏ‹’bhaßßgç´$€‡ÄoO'¤†mnÆßUæ>¶ÅÀÇѸŒd@aMæŒçN'[¥ bÆÇÆÄ–7Ñ̇Sþ¼\Ù¡¥N`Z¼Þõ‰]/ÓZà3;oásÞu¼7^tQ W½É²"‡–Ó ×§úêj3¿×ÇEWõšw9-õäÉ5 Õ`%/Nñ-•Y”(°Y£ ³Aã¥9\‘é4EÞ¡¸¸bÇpw¡Ò œœ"x0d,b±èùY ¿ùʲÇ:dÅ#³"sù‹EO[ñh®HòŽQhZ[]~5–è“»ÞÔ »Xìäy‡o`(…Øéb‘CL,z‹Ç?…EƒøñY2ë°|^‹njé§vV^”X‚P„‚Åg8ðöÅ}·ý…Îò­lÅ~cíþŠ}ï#ý7‚þ&$"…ô&‘) á£wÎNüK<2ÿwíÿÆ àÓË'Éžÿ~½†ù¿_Õ×7àû7˜ÿ{ccm™ÿûYžÿåÿø_ÿö?ÿíoG½+qÜ:Í~ö·ÿ þkÀÿü‡ÿŪÜ<9éÈ_±Äÿ ÿýŸÞ+ÿ“ùü¿ÝÕ0}^Tû×¼7é 1iÄßþõ¨Xÿû«µúoßÞ¾ú{·wݛĄ/û‘ëÿ WÞú¯¯½^¯ûë¿Ñx½\ÿÏñðjïžnuŽOáˆÞ¥Ó¸»U§)E|k§"6·PFÀ»˜cèsïlRR™ÝO§»;Jä©VÅáæÇÍíÿŸ½wmn#WÆNR•Je¿'•xÏ“IkH]lïj«$êbÚ¥%iYö[Ï{Š¢FÒ¬)RË‹eŸœäwägä'¦/À`†CY’½»œ]™ä Ð4Fw£û­‘\]¥ .P¯ÑPÔ*µJP„²v Ì2)&£Ëéí‘(13¿‰.xsŒ‰À*(0tÃás­†%l»¤Ÿ×{ƒèr4F=±Ž?…ƒðkÉx:ŒÆ½‹‘Ø ñÌ ûîŠæô¢RÑÀvnÇÑä!Ø[ÝëB@q"Î%vÆW3ÃEJX¯wÚ;u+í¡´D y23á¨ðˆ(µˆ'™ —nKÜ(Jôãk“/}QA¬è}´/P 7‹Åï¯'³1æeÁ¯Û|ñ}¦4»ƒèœòS# |½¹ 1ž0{5È\×;b6Q¤˜FOzarŠyã3GTìÈ뮯V/Gìb#UŽ>=+)¼Ç)ãï®CÊßLyîooÑ/s,£;¼¥}'t'(PÜ)ÝLX¥ü¦qÁmTB¼‚æÑüNÛ¸%„2MçåÜ1™i<+çm×Í-®…Y¡Å¯qê·{¹`~ª3hv|„Ï…ñ ñÔM+ûh캼ÎÎ @FÅæ³ µÌhçήÙNîÜ’‘U±@¤j§u>’7ù×Rú´·ŒM¤&ÕÕ’]EšÒL¶û-•c˜ò `ÓøÌ¡ å÷rœ[JÔ¢à9%4,À… ¨7‘‡6'¯ÌÛö8àìýt»æ¨ü{éwÊZUˆðË%å^øRJ¿—?]ÙŽ~Ùþýç@M¤¡¥€~§ê7Ѱ0,ý¾ à*ö>àK4¥ ™Ö¥Ý+9¾Ir‹w84MMÄS¿ Âɧ¯²hôoöÇøïVVºb…êâÏæJo(¯ÔTŽã½›×%ÎŽŒèÝ‘Ý@’Ê1W¼)>ÍÑ«HP¿nµHègV‹NÒµMÒ]É,CÍ'qTƒiYp@šµÛˆ8Mðx\Ïùv QQeX¡(Üòžš‰˜p*èÎùhvÆÉ‰ošƒËLOè¼LºIGôÒB§iåùX—á¶™¶Fvi·Ð,´ï…R +@ü⺇ÉW¡s´ß +j|!_+tаVîÀŸü%;ÝÊ zqJMkùÚv²îëö~ç5‹OÓëq8¹ÆðŒޙ̆vø¹qbɵS@©;©ç\år%Ý”5ö²Ž$">gÃÔó‹|=±rU.Òh¦y±Ó>Ü'!«s„J,vÉ´Ú9™ÛPj ·ÕnhOÑ“:çaÒ¥"©%Σ…–‰þ*Û…óÿ­+¥tƒýÅ/S ôåKõˆ]d:dËBÞ4¥:-éþêš*ì³À KSïOITêKZoÒXSbL–žWe%Êôdßlv ‚èœ<šT½´p:MÝ}7™¦ÊœéíØœìŒ¿Í0+Æ8œÎÆC¤i‚'/\k9)ï"¨ZKX8™÷wŠoÊü‡²„2£©(va8S.NÊ3ÐÌ4Ø»Ôùmž‘#sœp sW•8= ÃÝ2ÿ ·Ñâ xl]R çöÁù…7ùåÆ=è7CL%s¹±©ObÆõ)W±ÖwpטÊk5@l:‘Úô‚L”vÀÍ”ËYtd3Ú´°t`½D¨ÈÀy&(‰„1»Ž`›õÆ.çG°Þ”A.Æ3Ó¼p+†’Ãj£üFEX­¿YÐ Q\IÎìŸïÿ ·úßZu9ÿŸââÙîê?˜ú_r4^ê€\LXý1ÁnÌ‚ÊàKe°¼~0e°+Ÿ;t¦7t¬ä1­ÓعÕ4Ä<”¨÷`|SŸL{Ñp‘¥ûô’á«òÀL°}ÓÁWÜ9 vTúÃqxŽ1ëÊ…Ý£&÷È£ÿ(ñ_j›µ¥þïI®¥þÿo}ÅúÿÇšýóæuk:ó?XÎÿ§¹x¶ÛúÿvpJ§ªvA*Úmá&çhÕÃrðÿ°ô`†š;iœ5 üáÎI#Œc¬ÄV·Uiÿ°Þê­îG:µux´ãÐ.‰FçÝÉ †omC©ÓH0¼°ý[ý¸ ß·ß.£Í$®¼Ñf<{N¡ÄX}+»vúÎT¸¢9Âzeðh&^€f “EL¾­;Ñ‘i÷ð4{žC³Õ§¾¡¾¥6 1ÓªòqAßz˜tӡϦ!+Ž ¤¾¼(Šq2ÔG„´4 eDRTÍnÎ¥Î'rˆ‘Ý•M£ÙÕ5Œ¤‘çGgŠÝ¶›bOP0Œ²˜DW7=Ѩˆ÷˜|œÁléFJØŠ0ºbFí•V’Ë–_([ί¡Ì> e zTï&³Þ`“d ÕÆãpr;^¢OêV£áEøõ™2{“Q+ôó¦w5Œ¦³ ÖkÚ)ê'Óðv‚M€¦ ¢ fJÂ~PCY‰IîB¯HÚÌ’ ä L09œ ‹uɇ RX-íÀ?ø ž’ °p^'ãÑth}H^@ï eÿà7 ¨_¶7SŽœ6©Ó›ø‰¦yòeÀÑ ëçÑP™ãzç£ÏaÜÂIIf¸Ì—ct2÷‰™FÊl ¸§•Ò*ùÔ1+\x;›‡øµiQ½dzMíÈ/£s4Æ0S·Q€il<–?¶½hŠPæ™èÆ´ÙÜí1™ÃŠ©Œ}Y&“TsŸ\ùžÝ ¬Š>Äc¨4Û3Å/à† 3‡5R4{‹€ä•Á„éšGØdƒ‰N1Jƒì:pÉZÒøIÉn¿&Vñ÷ÄÕht!`1}‰n˜$\6fð´Ý®4 T9(&zTÂ]DMêü 1”¿-ÇÝ¢(Dºb€=€·Éöíåm_²uÃt¶â´Gìisß7`¿¨YˆŠ+{±­ÙÜ{HÈ.xBæQ T.‹Ûèóhª<:ÓÙøFLÂ?fhY•ðXèÉ„7„ÀúÈ2{4Y¢>¹JÜáÚj.k*‘5J£Ãðj]±ÞÝvWW`j@s¢1™˜ÇÑùL‘³ (]ÀÒ*›÷ѦŠào%“gåt‘ <阾&–CÉOêÑ®ìÿæñ€iP{×8òÖÆ\ß»ÚýìÂm§¬ú-­ø²éøÔ¿hâÈéî#¹àLð|GC—"ÂÄÛñ ìju¥¥N·ñ͸Y“7ïØã ÑcV‚0ttÀ‰éíl\nu7çIÅÊ¿Ü^+&Å G£-¢;—_D—äöŠEA‰3¸50D¬vÕð.âÉ ©ì@ƒ]á\#´Êbð=Ùƒ²\åd¡½c±Á!¨9‡Ñ-›‡iÂÁ³=òôv<ÈÁ\m0nd¹ç\1. ƒAw*Ín±]Tm¥Uó•F‹hgÅ}ìñ5q§§ «›è—âø¤Ää™\EƒpÔó¢8<î‹Í5[a«Øª>¶A^‰mzðeã„ݵԛ۳!¥Ø±\Ù¯”4ik£Ñ-úåõD«×"7MXRû°‰ÛïÐn^òå1ÙJ§à9ÃÂ}Cé’J‘@YßRÔõÊ|ê´ÈpŠ…èÿžã/É-‡üäŽbúÊë{cSöÆzA&mI÷¯¤÷Pú¤ù1èωòÀ‹rÇ_Õ\޼Šÿû­G³U}ËQÕ˜Òº'«»-¹˜âRÚò.J/ä”nq–p¤œ²ÉjIL0°Tc¼ÀB#ˆ‰1q=—Uíµ‰nY“³Ê“³š²8X¢†]$QM;ÑáìÆaq£Ó/<,—[mTk›2GŒsޱ|Ñ~T‘Gã×U›_“/­µ²gÌ6Ï|ªeO}È7÷ç ø‚cžØï1òv›°åìÃ\v2ÈLˆÙ<á ’ÆAžÌJHÑ&óL»ZÌÖƒJ®ýÅÑ€jî •6cR¶ÇÞ"oÄWT$Ò–L•l¹UOˆùZÇ,«àØzå|CãK;,ã ¹A^þ®; [±•DGÕ>“VÀ˜ÅÒõÜ·*:³Ÿ9ú\ɦæ4-QŸTlÄEðÀ€¥póå±Ö]v§v³aO!åÿ=NæÔ4(­|%&£°¢ÖÿèŠÏ1ü×8>!u–<ôÎÕPešûW¸ÓföX•‚ªC:^‘Ý1»½ë/&œ°¥mÁ¨´Ž»%óa ãV52<£ ¹ãn’;~äÉ d˜”*Vð!&=õH Ä$?Åâªü¶‹ÅR`´ð§‘´ûyÄ_’rÝcw¿ÕF‚aÂE§juͺoN+s$ðßUÒä‹Wäû¡µÕÀeiÕªŸÉѱ Ö9µÈ©õ W³ÚâéL…54òXD›Å Ïà ¢ÕÄó,uå 4nϵ*³ê ¥Í“’ ò’„'ÉíL%Éd=A&nòÐI-A'ëi‹a¬¥òOü‹ÑÝМú”"a0ê"C2\Üm¾í4>~#Gº—v‰d¦7X ƒ/E£ß;Îi£,›’5ÎÌx)c¼yÏ1Æ[¤^ÝHŒóæƒóƒ-c`VÅ rq‚x iþ—}¼ÀŒ¦gËGOÍ ¾™J^<•l%¨äEÑXñƒ?fx¢cЍ—îP®½ É)† ÙÖ>Oj¢û/ßÕR6UòæŒyMš+\AñÛ5€”Ãqíàôos8Î:ÿUýžç¿¬øOµõõåù'¹–ç¿þÖ—qþë‘fÿÜù¿± 7ù¬o,çÿS\<Ûó_U>ÿuVèW£U‡ïur€ïõeÔ7¿  F!Ë—0p‘mõ9!Û:ò¤Ò™üü ?>vT=Eçø9«]àNÍ„_Äí ƒ9±ý}"î¢éµ‡½”˜À8“çííÎGðdÃGn´=í-Ъåó¯åªú:ß`ð!{¸öà yñ_„—ê ûqÒ¹qñ¥$øTÆ¿+â½ù(~CµT©TJC=x‰¨/´Iüÿ-ŠWÛú)¢¿_ð~Q|¥§F$ ¨ÜÇ{\hB…Š~.Y¶Š€Ê*M•ä:‰·ÃM£¤*šÿ,IîÝÏ3Ó€ry>³€æpVÉ+‰?‡KRÕ—ŸÃú…Þ{“ tïB¶‰K6ãÃc4ãk²_³›ññ1šñoåà erŒ_4ìÙ>pNï0ΖÙäÔ4%>Và¯:`Ýj|ªg¥Ñäz¢ÉrªëcO6¥„iË…žä»r¼‰– oEYã UZŒ¯w}\(ÜT³ŒeÊtôO»$ºAÿÁoð· ËÜø¡LRÛ ® åiæ[Yfþjð·Ž Â/¯q´s"¼ %‰ãÖ›Ãûûé5ÎDZ¾aÆ™·âŠ•3ÒA‘’L¨oéw>ÄO?$Ÿ~ħù¾y·­+}lØO°uØ}TÇ'°²7ê–ËÞí$ïÆ/èØ.Jæ ìG@ dÊn¯`ûÊX¾5Ì ]É\ÀðCì¢ñ¶Ž7{54O¡eŽ_ºrf–Xg»>ìVÙ÷¤±òÁ,±ÁpÏð­ÐLãÉ&?Q(ÛOÔPÑc°* ÔtF ¼³¸Ší—˜ÀßÖ¨Zµ7¸U»&Še³vÍu«v Þmöè¸@31jZ‘6áŸUâÃÆ}$ÓFïÓq{ TGƒ–®ª>šBÊÒÿôo~ýl—û¿'¹–úŸ¿õeèiöÏ×ÿl ýO5–óÿ).)RØúŸúQAYÁÿwñs—t@Í=ø§}@<5!Œ°E¨:úveŸ_¢~Žvh·À   õ7d1½PýH܆c BŠ!ÓI„êy*¹,'ßÌÓèv€Ûa˜­ á°ÇzµMQLwI¿ÃÇ[)çŽí n´»ún‹‘°ªègÞÂzŸå´q$’[9BsœˆìôNû^Ý:Ûxdß_Xçà'Œ‹äëwñY{ê­Õ¾Œä©ú¢·#kwî¶—C¨3æ5®)‹io}úŒ++¯¹„Œ| O"³áK$›Ïö;ŠÙ%UÝÆ0pZ5í} ‡ÒÝDåÎÉzÝ!ë«x …)ùb Ÿ]aT:xŽhFB~ £ÁÎ_¥o¼¯}La³ àw…’¢bN~M™Ë’N½C_VDÝyÚÖOëðôõÃiãêߪfóƒ;uÀ¥éf,õf|ðXláZzç“NËb·Ç„O–¯&P*×l¥×l?sû$ˆ>«0‘š¸uå×èÌIÁû¢K ÈÎ;+ñ•90™íMó¹Âp~‰ið-”&zCÙúhb¥wǧ@˕״ž™×”YŠ_iªÓe’öy‹ÃÝ8šNárO”µˆúí¡¶BÃHѰÇôqvÂÑØ©Ðz¦ÆnAʦê­´¬èù(A½O¦ô¬Z ( :‰à}fíꕪ° ËÆuÑzâÅ휜4?4÷º™ªÅæN§{ÊuÏëÖÖ÷|´3á-žÅÐ×þæN½‰™>ð³žÞ(™ÍÐ)¾ÊÒÁ)†›à´y,Ý%©¥F ­ñ›"켫´ö­sŠÿvBà³·ÀÊÆ¶ƒOºh0¤Pó§þ<¼Bþí(ÂMî• Ü/$ Œ×h ¤pºõž£‘ªÕ†Æ*qâQ•1s5:§ñ=Ⱦ+‡]O\;,€Š1\¨4_¡ ¯mnyñ+¹›ÍÑè“Á;À8òÃѰL¡VaÉÇ…àÔ>Fúþu£ ÃFoçFò¹àSçð¨·ãü™8{*…=§Ð̽ã9# Æ7¥2°5ô£^^á³Ï¥WÅJ¢uäFt]Sº¥öWEµsß)W/¼*ÉWf½°]8Òl$ùB“<¬k¦2–9¾¡_ ÿ€¡‡È”íR»SŒnñt.΃Ÿ¡‘b‚a·{ §ßãTÃ0ÄýÀ£äƒðs8¨3.zCZ?0…O{Ä :ñ&ż“£Ò/x&À%y¿ˆâ6ˆÿñý¢“:’”ÕÄ7 âY=)“?³¹4«¯“ë‰ÚLë-6G@eív`I â‰†ró+• ¯1Û Í7»É_Úõ‚ÓÔ2íóu“dc¡ˆTJq²qXòÿƒ P_Óö£Ó%†¥®G‡9 ÉáYpXŒæ™ÃbõÆn÷üa‰›ÊâGC·mÞ°˜?ÒM qÒпú‘çåe\¶ýçüGÉÿ¹^]úÿ>͵´ÿü­/Óþó8³ÞüßÖ×j ûïÒÿÿi.ží®ýgWm‘»íŒo´÷ëÝ’ètÛû§Ê.ô–„æÞi†¢¤‹º¶Õ¿.­G¹¯o°éq£ÁT£Gƒš® y+‡ŠÆ GW×â®ÌóÌHÝ¿DÙ”èe™i7¥ÅI5hAËÓ®ÇôDÑÈ,«)‡^Äæ2¾ - Ùæ¨…lQm~‘¦!| 5‘Z€¯k«=™ÔòmlžÔÚ#mäjAË€X0÷XE§`=.HV,ÏnYn¨˜\ç¾¼¡ó¨]îØ”†¶&Lã„=êáT¿˜õ)”jlY4!èáž8m=€¶¢ð5æöy]¨E…þ{]øTØÑb0;·ƒ»ºÒ§¸|µÈ@ »Àd-bš„ öÑ pwõ¯e¬ó${jépû¾…¯ÿ½+G1¨$.€@¨Êÿ3àÀSŠœ‡AÕðÿl89 ØhÞ͇æD±,4ÇoK4%.£1·Õ)èÑ–£‘GÌ…S‹ÿéÃŽW…fyicÊwô‘ò YÄÏó1§mV¶“Ç›ü~?¨_Æ¢^(õã“ä…rtT {ý­[ݶ÷¤Ú¢çè(|Ëbî#\&íÄ›uàís=¬ña·O?èFPvD‘ú5ØL{²C0‘Hù^¢Ír³ˆ ´t…9ñ*¥ýAI¶›]ãñ‹*µ®E¿…¶N™CÁÜ8•L¹paåzKû>ÿ¼§â.“gßZÃ©Š£©àøâ±[ùɶ’šýŠ}yüM–¯y©±&‚~É—×i–×ÓÚÜ êV…k††‡ÎÎY5kÒûUiZ}šˆ6.î!ÂõIØ ázOVgîÙ© ±©ò'zïÔ«òG†« %Ø- ä– .Hš¨…:“)ÏѽuŸ eÆÆ­ÍØÐ‹7d=7TÁ¬ÿo¹‘ÛM0Ä 4o=™Û‚+¹™Qì.½'|$ûÄïBvS€5Ubx±‰”H‡m7‚gï€NŸù5•²¡o¥{T’ûußú²ü"Þ¦’rÜ = §Õdg„áq”ê¢ât*Mí÷‡ý¿TÇ`Dß®Ƙ¦8µ *¿‹l„8åÝ.öž¦3ýÊ;¢ïnoiD™{†åYîÑT §ñ‰fRð‹º(ÃT\ï½³ˆWŽyà Œ!aü5`i°„3à.¹z kÀi˜ã¾—™”ÝLƒ`b'…Zî1â§~n4gææïºœÔ9'prÈf™0RþAâóÜl“ÏÀËsÈ,÷% !y)Ÿ¸Ž¿ë}2©…q»ºf×7Ž×ü¬Ó,Žb‡gÍmÏ_sÙ÷&)}¥)뮹 ®­EÖN^k-WÇôµÓZ8Õš¹Øréôõ{¬•zKYñÖÿž+É/‹³¿û.ti%GÃ!]ešÜüñAÖ?cñ[€/Zëßã/D|©Ë_¾ñ7–@W}š%°n<é¤PNŒå¢tàÒÑ_{eôrÈÍyËâFÎe1ŽÕ¡¿—­õkn¤¯†›>¶jvvØ"éø,’ÛãÌÍ0}#o~ßÖY펫ñîx†3x¹;þvÇ~FÄÑd^ñ%¯Y}“cGõ ›ç­E Ïú›½Ô|‹(ãe.?}xq dÅ':‰'Ù_ǧC]–¸ß^Z­$?Æ^:§0¯E0ñ¿ó~Ú³~Αî-!øyÕœ‰ûíÂýço’ 10ñ¾œ'H¼È)HÜXï³{å´‘r€¥mÊ_¤‹!/—›ò‡Û”{Ö+R`ßoW®‰€w独Ð*«¼;¬Ë•¶¤è(Ä>ü8{{áýž»uk…ý“ìÖÍ^úÖT<ôkïÖýÛò<›ñå[MݦÕyËkäߨœToØ{«kbK©kiP͹¥wë±îB«,éíG°¤ÇÓà•Puéý<×nþ×Ö ÔéëÑ£jH²•øiêà³øöólKÐЃ+ЃèïÁì䵘ÚÑ©|_‹úJNýòB½É±˜ÅÁ¶¸#û7uÇ?¤–àÉ-îØ˜+Ѭ?†E>XOX6þT›^•[·ù7—dc5– ñ7šæƒlËÓ½ló׈ô7\LŸÖVëóO³íói’ÌóofŸPãü#+qîo’_@Pz“ü¾$úùዹëá⃭֚ôeðEŽeðÆxc‡]}%¤Ý=sƒ]ý»8¦ÿ7Ø©&ø ÛôcÙàƒƒÏƒ(ÐßDz€|k|~…ò÷Øž?†ÝàOb™ =·iœÿá÷ܾö7[žÒO÷þÓù^Æùjö¡!ò~ÿaÌóÕµTѤšrÜÈ,¾Ü¡/¼C÷Ûé«Ù6§Ç°ÓW½&£åj,¬Õøim»ó¼ãR",çéý_Évÿ †û§ÛÉsýŸu¡·…¯f7µïb¤¯ÖÒWÔ”ãLfqÏfßèz~ÖÌƒÝØ´ÿwumǾúaâ?ׂeü×'¹–ñŸÿÖ—ÿùqfÿÜù¿µl$â?W7—óÿ).žínüçCòçÞiž¼Þ)‰3J4qFé?•<² ÏK99Ã3ûÓwže¦í”#ðíÙ;ÏÎÒy(®Â!æñÉ“¨Í¡U‡˜…²P0M)¼JËFAô·×=& ˜K°‡Â°~L98+‰½ Æ û"8ˆ~_ŠY/Â0q€ "E¼å0\%íG·ÇaoP¢R_ˆ )ÜjaXŠeÙ17}gZúÐ9¹C §Ž?1‡(ü(yö[²kŸí¾,dÔj;BPÍŽ5½V‘öM4zC#'©ÛÆð !®7J)…/dÄw”¼T¦2E X$g.Óc ‰Á„1èÛ/Û³”Â*ƒ˜îa†±_0åXŽ˜Ù9# [¡}d¬^…SNƒs㔚Píp¤œÇ’ÐåE øpb‘aÆu‘De#ά>Í –ša,«…V¹ª³‹ž3BªÊÌ¢_ï€LI§=Ë1$Ù)EÏ* Ç“Q4cP¬”¢²Þ“„lïÛÑöÄBÉ'UxA™WREôpý”ƒžÕå lÿ[Ýôæ!¥7x•o—Äî~Všvgçà–~ühÀçYë¸í‹¾—zÐóªN½Õ>ªØæÎQý5}ž|¨¥/W°í5TZ>O¨@?¼’ª—lï¢Ñwv;€™ÆÑÎ!…æÁ2ÝÂL ‡¾‹;ìÔ\½ƒŸ^€s²Z¢VOEtãR~_ƒð„Ö†ÈöØšd¨ÁX°å@K}Z±Fd… É%Íg¨N"„ÅͦÒ;t¢FÎÞHÕâä ½$Û¦Â'Ñ5×݃…–e4+"yCÍ2Ž_AÒKAѾœ Œ‡¢œ¦J‘§¢ˆ® žuÐŒó<þ½ÿÌ,ÏÓÊãì~.«›Í‰)âä¢G@tnh±ÒìVäK½úZj*OZXe¿âª {ýþ ¶ŸIbaÁ5u¢´0#y ¼áFhó•÷8 7ÿ]u’f²~”hV’‰b.¹XXÇ.i=ÖtƒŸiÚ²@ÛW m®bòðXtñЧƒÉVxÇ•Q°‘e4™¢ZS\†è”;‘sÆÄ]@±)ά{’¨{†‰gŠ|+ã§,+E2·/s3žKìý”l4ñÓ‚ƒÔ,ß½SvëHÚˆIÃÞ>Úšl>ù€õÉì|Ò4Š—$3~Ì®0½iôd*"ëþWs 8NšRrëUÎB$Q>ÿ,Iðª¯X|aMòáŸ]“ìèoCtýïf°Ôÿ>͵Ôÿþ­/Kÿû(³ÞüÖkÁzÂþ³¶œÿOrñlOèO– àÜ×_U|ò—Ñөä"ÃѰ< ¯H¾,©„/R'Õ.”„YQ•ªÝKÑ»Û8l½;*‰ÎQ“>YÑËå=ËGgçtŸæÐcé‚ågõáu w©æëÇ× §éÿ{P&>üy}+еŸAhüˆÑÕPô1+ç$Kù–_·™É莒¶Ð§t6éLjW÷í ëz  ³þAÅ,f‹j­Û°õeÔD_ð:è‚PëêDÉ”ž¸Ï ©€Èñ> Äâ’= à  €îÂf-®üd?ò·PZs»èëÑ]«@)µ!¨‘ûÊ™êða4u!ˆÐ¿ûŸ0+ŸÄÎ0”ØAÁà.7°á’í=Ki.ðM÷ÁÞ±Röº‰·°ð¤Ÿ¦M_¿Ó÷^â®R–™É¹¬àP.€–J‰#^ý“0xõ®F8ëi%–rWµ± '±­L…±¥âÅå¥,gâseÐ ^©7¶ªgâ4'B=ØT¨4W Zmîi´¡¥-¿Ñ†—ÄØhCÕ6ÚðKl£Züçm¸d†Ñ&¥@l´ñÈ@ÛCmc'×hó06-eIìŒÈº ClX+$Fñ¢2m]Sæ%»¦Pl„9Ÿ´9Ü.mt¸¡¥/Ï­¥?‰LMÐtÆÔ¤/Y5-GÕŸ›†«ç® *9rå´¡sQŸÃâe·k¦bhde­¬™ßàåÙ›ÚÒSºXšâÔÏpx1³[` ˜–¶'.B6ŠEÿ†œšÜVP0‚ /˶¡ ³ÈÂÄ ½L?Ô¬¬xSÑ`†Kú+q9˜M®é½LX¥ˆ| Âàî>î®9¡òìöó–.µrñz&ó¦_Ba•øW_…ÝÙ*LFã©¥ä;éúÛ, @R¸nÄQozýó!£ñf6Õ—%<…ù²bÇ>(t¯{C(°«ô]×­¸‡"má4žbIº1ÄÔ´b¹$H‘!DŠÄ•"¢ ÏÜ3+x„$1_N‹ˆJ"MZ†±Zo =5Í –ÒŸÄñÍO}« )ñâ?Â{x ;sEM\d¦Pä†ÉclO¾Z¿©q©—Ïǵ¾ó:ühÖ÷“?»ùý»_¶ýúÜÿZ_žÿxškiÿÿ[_¦ýÿqfÿ¼ù_ jA-qþ«V[Îÿ§¸x¶»öÿn¹\;7ó{AZ(Xz$®¼õ×;íºe5²Ñžnóy+ƒCÐhø¬‹8Àp°ÜëÂÐøF,Cð :tÉÎ2l(O\öH3ÞÅaˆíÕçƒQÿ“éI€`Lg‚»ë¨r^)]ˆÒ ÆÅ¬?Å’Ÿ¼vßIlÓf”‚ŒùìàY‰Ìò¯ @ƒ¯ Õ¢¨Ð¯ ŸŠD ]ŠóçÄÐÿÙiWCú©²†ä ÈxxRý™e8àîr_'©Vm„òºI€×±u°tTž^Ë`†Ê,Nveœ¹äç GRúÖË”ZÝ8ë‡Û¾ö#´o<ºËÛ8ö éÊÈ&+ÙNr|´…Zϯ•ÀÜeuÐ2sÉö3¥Aó¸ki]š '„ åf6˜F·ƒˆ;HòT×!èWf"ÁWé$X8^J»º’‡Ú »À.e-¬'‡.?®a4âžXCì Ã`cF s8³è &#q0ã‰?à´Ó^4˜]LÔ¡SL¨x(Ðy؆‡@%üä¾þ ÞR0Ê(ßÞ¦¡¶é‘Ôƒ.M^R*VàÝ¿¢37äÔjÈ·8†H8ȶßÂì³M¾z-§^û™‹vâ§°´Á`_Êq¾àq–]Â0c9p;{¨ïÔ}sø‚å³’à›ø@ãMïK!€vÿì6\—xëúš¨¹‘‚aQxkÍA\›±írÃ)¹™ôÃ’”pCòNbŒª= ñ󆇦[rïú„²Ñ§´eÖ3 \„Ú‹£ýC´ÚK–3%:jÜ8œLíñ”Žg³Ix¡é¤ûtÒ­ c¤îãq’#€£xÝ» @EÜ´ŠÓÖP•Ï}\’C½äcÇ£ÁÈM{$À²‹à0…ý¿ôPþa_«! uCy!~‚5ÆŸö› ac<ÀU& V‹(dvû³´#ŒÕ·£!¢ˆ|ð)º:Ö¹] ·‡¦Ì¦40Ä­Gì–®HrÄLŠ!$™sò•µŒbÀÜ=áÇNÉT(‘»˜àNºÀgãTä>bPI8\/€P•ÿgÀ§ä¼™‡AÕðÿl89 ØhÞ͇æD±,4ÇoK4%.£1·Õ)èÑ–£‘GÌ…S‹ÿéÃŽW…fy ÍOâEèÙr-p6¼ •·`F–éWXeã:ßècˆ1ÜJâHK†¥ôþ6â w¸tZ’´KšÏçÂ—å‚Ø<>lÔm/DŠÈšþR~ì{Kªß—ùmÑZ;‡¸hÂyAqÇ1oÿ7tÌ‹ÇP[8âBYéãt;õhÀ€·Ù:Óð4kP„Xc@]s6ƒtð Ã9/Zù§µu{â°¿ Í­k¤ÎQSÂ`׬ä‰ó/Ò‰ø¢„WœRDBuQ?` ÷±/`Ý—ÿ–èXçSt Lù+FŒ¸î“·_Â푤‡Ú€Ù˜Ò ¸ØŽSxG§¥mÌûg®§VªGå¨ÑÒÐbñž8TÁ«¨”`´_móáyØ¢W¿—èaQFi§;‘'F±0bˆž¦æNS&,4Êé¡{åUVdZ’C§qÑCšX^ì¦Ø¥H”ˆþDuO<Ð*Þæ2ÐòÁ«ßå¸Ó×´0À؇º%¥† µ2$À ëAÓaR3+H r³"Í(ú‰‰cÎðŸÆï’ý&ò˜#›x _ a³3ZŽÝa¶ÇXýâ9ŒJ7ý8#P.b?5}M¤›‰?RAgc°ktI«M70Ôqîs“µªYáâØïŒcB2E¢¸žÇFßb¿g}³ßd¾ÀàÀFdZº·”†Ìá!¹xË<¥ 4aßâíÍ%jaà‹·ž:oÓÇuÞ¬! © U~»ê— dA³ˆ”’k0–¥¶H] „µ ðrç/&îµð‹Œ%AÈUé?çª p¼£ÕàÕ'fÙEkÕøýÕ°üi ¬­E}×/&ˆ\’ Jù rû·À0çðhá oLæªïÌ_0à J±ÔÀÒJ:ëIB®œ,•Âi„-¿ ŒÅE¾¥."¹ˆ†R¹–¤L%㨟irŽpVn¦É€©òTÅ@OgD¶DƒtmÐye:Âðj¿ØmH˜EÈú[;îRkÊ´H è/œ‘ާ!AF=ÎØ‹HY&5Ö¿!Ëä`2qбts!3ì"ñ…úùâ‹Èâ+s…‘&cúïÎÓâjë^ È„šáÿ'ÃZºÞó²ý?¿ü0þŸÕ¥ÿד\KÿÏ¿õeú>ÎìŸ7ÿaª¯m%ü?×·–óÿ).ží®ÿç™JWw¤ÒƑçʸeeÑj4õFW´p—±tµ¯opÅH7ÈÑ@eúö¨Q˜SߣÜAé““:-èzÆ!ò„’šŽŒ278âäñ$3 5tX0ŒÈ¿cJÎ!—S<ªˆßǘ´+5l?ÂÉŽÓôÿ´'äÂá—>›A‡0žF’a’æÅER.)PJÍ’žðŒ†œ:ýÑEˆfÅ×âº7‘ni¿çÌN i ;;Ç)pÓU¿bgFÎJíñË»Œ“T2ð#ù|ŽöCϾ‰ãoS¯,äçÃ’‰»SÀ:àÒý«ŽØí ñDX˜ë,§/ ¼B˪t™S¡””¬&M±í¢–¨¢!͇¨B×äô.DW³z©•PŠç¤‰j»$Å•ª»a¥¤”¬ÅIÎ-Œ[Ç›YœÕB«v«ç!’9NcutÛ‰”W-oþÃfa«uoÂQÄs”A<Ôé„LØÑ°ì,• |/‡VÅfs¯CKªwJ†>%Í æ[ƒf¥w¥ƒ±1ºh¯ à}Ý*üÕàoþ6àoþ¶àïü½Ìhø)*ÀÂ)@8§á œ„S€p N_~Gw–Eqp!÷Z4€%\^Ì¿FÂb«VlЊ‘oŰJf]nú³.Ä ]I.öæ´º±Ž]s, DÒümÀßü½„¿ox7€ÛIš°`ðÈöÈ|Wt œ L_VÌ¥Wm$Äñ K"×m](XM`ëØŒ÷w8FKØŽ@|¿×#;®GÀÙžn ƒã”ñå+§ÓrE¦Ïæ_f¬Sâ¶&³®.£‚0XÑ?±×&êv©–¿KUèR5­K§Ø¥ÔP‡±«ª„¥µ=­Zu«NݪS·êàf=7ŠAtj`E¬b‚iøYÕHòb2þ^F(+ÝÀ-Z5ŠV­¢ÕTe¬‹úü¨¯êk?êOkVÝšS·æÔ­9öyßaß5üY{äQ4‹ÖŒ¢5«(eßÙÌ3à[ù||ý¯4à§ëVÝu§îºSwÝ!–D,bÕ#fœ®cõ‡šÌ¢ëFÑu«è:}‘‡ð^æ'¼ ¼%áɺVÝ §î†SwÃ!Ú`í©¨ËoàÏ?%›E7Œ¢VÑŸ¡TÌ£÷`9mè}sIï²î7Ðûé¦UwÓ©»éÔÝtçJš„ûØsnâÏÍ¿øÔ±ŠnE7­¢›8òl‚¶[0˶–³LÖýN³ìt˪»åÔÝrên¹3ôÞû¬‡¡þê[X`k9…Õ¶ŠnE·¬¢[8‘óìVƒv«/`¶¿XÎvY÷O8ÛO_Xu_8u_8u_¸œâ¡¶öÍ)°ü üùbÉ8îÁ8¬¢/Œ¢/¬¢/}äQ (H^y¹ä1²îߌǜ¾´ê¾tê¾tê¾tùÓ“i“–?áÏ—øóå’]=.»²Š¾4о´Š¾D¦•G,  ÖÐt´¶äm²î’·åæm§@6q¬¹Ô±æ’ǚëßKgù°¼Ñ_=X£Ö¯-ÙçÃ>í!X3Ç`Íä£Õ<ê_¼Üs±±«Ï?aèõO¨bªè‹PE…*ºTÑI¡Fž ø æuR¨aÉ:)´2Zà¤PýŽN ±÷ÈÚ7tRK(/…7êàV5ª±ú ^ Üö…ÖL^,ó.•ˆŠõT˜lTâD±QøYM²%¸ø{[bºhÕfKÕCïH´˜S Ÿ“~S®ÐÞMˆ Ê£!a¹{H1í0åæEty ôE¡+±äns§èÉRowu†äÆ%5}[…Ävn„¼ ݯÄ¿$ ®é‚8Ëú×@C˜jP¢7eÄQhÌÞ GØÈ…£1ºdÃa.©©¢gØ ƒÕB ‹áÜÊL(Éø‹?"áÙw'(!¢¤DZ¦G¢FÁÞ—£ÿѰ?&Ò‡ÎNïB€kN…³ ÃùU'žþð ýÿ0¿ÿ_ýý'¥ or~:ƒ÷ùÃ7÷ùC…áÄ}ÖQ(Uo‰ÝevµžHw,ÏÜÔ¿¹õ É;žQØf¯›åÍòËMØ<©”»Ä;{bÞ‰Þàj¤wM!4ßWÄÛÞuoHöM ßÜ„OXôøî‰K¨?‰ãâw½áض€Q¢ßé5Lk˜ú½ËpJ¹§ 7½þ5ò—Û8†#²*d̳©Ìÿ E˜†ŠÜö_†çb­V7¯Ÿ2¢¤gñë¾ç€’óó¤BI˜ºU ’Fªp‘2䤊™¾–Öç½¥þ¹Uù‰'~ãA£ÝQ)q·)ÃJÎÓ8qZÂÆóGÝøÁqÂ= ww`\Šy,n† Y©½Þœ ›CÀ‘¯Æ ©)n›F5bWå -IН‡Â:t€x7òâïÃø7ñ`\Fâ[8üôŽÊá~E",NÚ¤ó'5æ8þ\¶ƒÓY‘h7q»¼TéÓWÀÛ`—DXýÄ3iFÝ&×m™µ^qˆáyëfÂIa_õŽðæWîàÄ0Wa}µíÁ1[º±fÝwSkŠ\P΀³ô8›7gi` Ñ?Usœ[81sëX3Çxrh=!^UÅ÷Òt@!§vqE² ojP’AIS3&©±7 _ÁbÁô«˜Üôë¢zQ. Hh^¾Ÿ?¤)˼úдôµ7Rz†ç¸©…­Ä爄æðËí êGÓÁWÀ§w#­À0/Uaâ6f/Ù˜ŽÙšŽÍBøb"FaÁ¬<²²Yî$kÏ¡i}$—hÜÙ¸ƒNW@¸ÏÙö½~†{r· Ž÷CçO¦Z2PõÜg.sâV´ƒæ¼~<Æ-öŸ´ ³áE8¾Œîðæ†~3šL­ŠïZM½‰Ê`Z“?ÆÓÞ_…®È÷à›U­qIœ(½¸O:’ ã°º¢$`³éNFØÈøM\®˜ž¶)|®”ös½¸Ó]ì–3Ãq{¼°Ä“ðõÑýœË‹‘‚¼IN1.d3>Yjâ#óG½O AÎ6Î'…ƒƒ"kÂŒ¹çZUXÏ' ¡×cLvHœÈË(’SðÀ$rß<8p'àšFµäìóeGÜ#~DŒ|EÃJjÄ…â7dõ7e{žÜ­fÓáÕÏyçkk’#ß98Xñ±Úî9̉NJ}­wV€’:­Cöñ$kV+%ô€ KÊ \",å“hÉ<=0-†#üxŽ|hŒÉ9&X¿7ôÍ$Ð~oˆI/P[‡\‚¹P4%6¡y—+ÿšZ…7=Ç]"ÆfCáiqå ST]7³Á4ºÍ\2d‘(œ$ÑÇÈÐ+&OÆß6_6+*qˆÚjOÖ=š«0 ‡ÕûÍCÕ”™˜\¬ÚÎ\i{ç Õ"‘¾L‡.)á 'É Óþ®¥Ìí¸°€´BÂÌ@”¸‚§€¶!v™IÈEŠ(R³¢Zú˹^Û2bèÏmVZx÷÷FŠïM½€Û,òÚ1Gîhˆâ»r›…­5ÄBܤÁ?«¤ì4îãNþ¡ûŒû¸ÝƒèþÞ‡mÓ®tŸŸÃÓ¥ÏÏvYþ?ÃÇÿg}miÿ’kéÿó·¾ ÿŸGšýsçÿÖVm3áÿ³¾Ìÿü$ÏvÇÿ§u ÂÂ^Îþþt:[zýø½~Q ¹úøÀ ¢Í“©î> ¸ù´NAüŸÎÆCÛÉg(€Í^Œn´‡;pLX1ÓÔ¤”äs4F@°o»¡-Äd:ŽÎgh¥Éá:Bh™Vx:&s‰9aqCfÂW~ÙLÙ¼WfeÌ_ ÞÜÐÆð¦w ‘o{c@5™µU? k¥ hW®æ¯\µkskK¤yÞ¼u%lئé^³5^"¢O*˜1±£]{c^í~4îBU_û2y‰„ˉ"ĤÆz†Ÿ LË ï)OŸÑøç8Ѧ G»XÜßE× å{Á^Këk/7x£ÏÓa½¨ š@F.Ø6`4³Û ÃãhaG&›òæù1Í÷ài%|Y40ç]sÝMìyFªÅ~o x6%YsøÁ»Sì‰z³|1B!bNáDÃÖô,¡Êö¼7í_³/ÎìÀ"˜ úBÌ&è-ÇÌ&šýÏÁU¨Ó»£/å£Ù`€ÉÃéõˆ‡ =éÀš4¡·¦4†’C§s¤ïå«¢³Ÿ–Д*Ëe¥@]ó:«˜Ž,z!ð%ÿ>ÍzEóAVã£l~çš“F*p6+ÕµàÅFmm+Øz¹ñbs}kóeu£úbsks³ÆíL®|ùó°¢[KþNS¡Ð*šþwÔi_CÎMÊ~ûg'ÊÁƒ\#ü gPå9¸˜³×”ôSiB/aŸ ÃþÒh¢­»Ñ*È'P¨Ü8] l#:ˆM'¨®@ý¹L †c-ÖªýË6¼¹˜ Ê/+(A‹‚ &¬‚¨ $y ‡ßYÝ~5x¦l¦£¦ìeÊÏ Ñt•n¨;]m”åiCV|í@£ð^I~W*Ú ¾6ŠëfWÓšè4ÙrD¿-bXHMv¬ºhÇ`¯Ä+#sâz>%¼â \œ±aHOb¡v,˜¢ÒÔr〭e칼ĈÀÿV²³¿ °Èœ¸áJLŒšÚ"¨Y¿j\ù\K~Ñç|ò)‰Ãõqhbîð¶¾Þ6žo,B'1·‘sy±‘­ý_DÅÞZTÅnéÇßSÿ»±Ô@¶ØØ"ýïæúRÿó$×Rÿû·¾ ýï#Íþ9óõ¾[UwþW7—úß'¹x¶;úß6Ÿÿ<Iýô%€o'ÓìóÎI³Ñ¥øÿ{ÇMüçmŸÚ‡'µÚÝã&¬¨ø{–÷ðÿ~» ÿîdÕjì6ëoÑoÿ *Á¦²S1ÑÀGTZ¿;9ù˜Q3@1ùÑ:8^P·]«?¶v€íÜŽ£HïAàA@Ž ÝS%?âVÊQìùíÙÁK:QTæSâ·j؉fä‰Y&õƒ(—dÑ7R•ª‚´cžÎõôiO–Eâ”_›òS½‰}Þ{q*¨âÎK“6ha{1;AûT cía]!iñ±]©èQù"ê]PßqÓƒ__HýÒnSì‰æÊJW\EŸÃ!òŠ=¢É““öñYãh§Û8nuP.a÷3ÖªÊVf⹿s õ íý‡;ËÊ™UdŸ¹Ÿ¬üë¶> xÚ´!¹COeÞÍ/£®æèNÎâÙí-|;͆ïÑpŽ|€·?N{ÑPšLÂI4/,{Œ· 6ôhIE´Âð‚t¬ uâªw;Q›žAx9…~‹qtumùÞ†C­æ¿LÇ!nÓ͉†f3D{§u¨FbÏÂösëЧyÍÓ”Û†‡–Ð$è6whSìùM{ðü+êòSÀ²ÉÍGi2f“ÙyjËqÏiÖ?wç™h’ÇddœP p,2Í ³r!2)×$t¢œÜ°§•¢Ø™òxòÐ’­ê|0ê2@­ L}¤:t;‡“ÛÑðû“먥7‘“Ýœt7׊—'Tq¡Ømî‹“ö~½ÑNáÎÈ›hÝÌnÄmôºÒÃóøhâaÚëLgã1 ÿ˜…Ã~¨N?OLõ\fFöôvSoRB§ô»ëðÔçã°÷ mK8+GŒ¸IÅqÑf…q¾N¢ öxt7yÞ f7CA³¢ZƒHɆ,¨{‘¨g”[µlƒÓkT®®u* §}‰“#‹ºSÙßt4ÕJ`|w‚W0”Â/Ûþi©Ù~ÜL£;ï½ 9&ðÊ»’·Á¨FÃÁWÀÅ#ukabõ``cÁ^a&ÀRQxQHɽ!Œ/¿»…¾]„_Ðbôà4Õ¦â1L¸‰Œì2Q@¹í€„›í#µ07éñ[¬ê­Ñ4d¦èAöޏ‡B®…¼Ø)397!sŠ¿¯| þn{@ |\ÁE¢2hq™x 4y5Ћ@Œ}Àc¯ŠjAÂç&0½D›#òÚ` Fd×Toйwá_øïp²Ž©e ~$íÑ>ˆÜUuÓç œ ±¹¤ç/‰ ÆíB¾N`iËåHr aóU,’×`k6–"¨>·«±¦ðk˜µ’JY.!_|T{ä=®9»xu#2‰@!ýJÆTò¡´Ä¤7Ç»aŸ>+©rÜìVQïðPgM:'Õ?¥ã‡Þ {\b¡@eQ%¬”䘲—-¸Õ›ªކ(¾ÆK!‚à)ÔˆÙw柪IÒº¹ÑWJGe‚—»<{程…Jµ‹ãt7"Q= ˜Á†%B:’·âz8ùDrdÌÃÜ|…”ÖtN.gklûþ¯TdÕçç€ 1Â#ŸL•¬°´¨ÿ*}< µü€âàª]´_Ö$º.7{’‰!O’àmÑž'T^à’0gP°=Ýu`-ÑÀŽ'Áà‚s)]9£!:!ô wE2:3ŸÈ¾BI ÝÅ8…CÜ1FC|YOô¯£Áų‰µ·áT=p³fE«m¡K¦ﱎ|Œ$Š^t0ƒÅ”£þXL8.á‘\ÜWŸ‡ã0êÏÓ$0`‹Ð Â=¼¸‚ÛO1GÆ`»ø/Ⱦ ‡¤|&A}ŽÂ;ZmGÀ>ñî<¹gäý+UÇ!ö<„žN¾Ý…Ÿ±½‰\¬` Ý[4ýjƱ¤5Ms†IPr’ˆôvжà¹2ih¦l¨ îz’1'‘Æ 1|Ž:wæ£0’°Kèó!_LR»öÇÀÒ´ùM%ÔrQ:ëÂɯÞ%"–h¦÷u€ò0Ožw=Œ&ù;í”ì¯z׬öÛl40ðSc*q» ”fš÷ÌŽ^Œ/`yì»O 6Én[ Þ.ê1½Û›°Ã Ê×l;NùÚ]Øî¡òjátʦ74þ1MÄÖ¹’ižëìHo¢ËoÑš Œ‰ñ;̨=˜ut´¶ëwAvQb¦^44+O†‘8êÿ Q£¹Ûj>oW7ËÔ¯ÇÑd PNGábmó òq<«=V;hùÜë©,IaÛÌ-ñíñýdx¿5ã¼þ\¿oøçu{¾¿k—ÄëæAÖ WpË|-ÓO3ö_“ïÃ)s«a“ðô ׿ѫ7ö×ðßö/Üï¼m“kíïïa¸¼N÷¤Úh@ÃÚÚ¿ùñ}ülÿ–>Ì{„CtßÝ?DpCÞÙoíÁ¿ø¶kõ Ë>‹ª\°Íïß–xa†#Üðñ¦¯q˜¦µ×Ü£rMùùž¼@Ê:jÉOŒÁƒ™¥{t²íø· Õß’+Dã}§ñqŸ¾Êo­zó]'´ö¤ûñ{XÇ ƒ­ý÷õf‡>:üû ËŸMøhßdvpÐÙ‡ ÇÍ=Ÿ>×ô™  @£Kõ;íF÷CIüVïå°½§ñzO[ë,›6@lâç ûxÐ>†úØ…‘úˆ´Ò”Ÿï2€P÷é4°­ ÄŸÕôI¼Ûé¶÷ðù^…Ë|·w£CZYø§‹ ‡ø—ÕžæÎÑîÞ°_Ô‹&U†‘><‚{­6|;ÅP‘Æ^–; +‚Qí ¿ÕѦý5 ³sJO;‡€Ýƒ¬€“ zgçd¯±XíÈßÝwðÏ@ p»=3ÿ^Á9åóÔ œYïÉ{vÅþ0ŸDÀõÆRð¤Ç'JR¾ÉB ‰Âž–ä<"BÑ@)Ò'ýĘ5nrùõv6íx‡**¿Å Õ‘#VxÑ^ EFT?£z…•ÖB]µøðöÖj`ÜiîÁš±b݃¹+ÇJË@ÈS× ÷60Aé¬ÛŠÑq#±"Z?Éè,-¸»WE~ÒãÀ>, ò“æ%yƒ†W¹8+QˆÊ/_ ^ñg«H VFÞ0£•‚m…Yû²GÇÏþÍB¦<`¦mbÿçDŠóª‹øŠð辿pêUl€ýðÈ Ç[Þ Å¡ïg •t?è}•{Úc ñxæèsX1^]DZh™7p`ÄŒ[ïßãACÁ < #‡ áŒAĵŸø¤K<\ˆù°Òó °wÜÄp=ñ´NÅ€ÜXÈy…F°DJ­øµ"™ÕT’;0_ù2™¯|G¶²oxå;zå»Uû•ñŒ³,¸1ee)ÎäùD³ï‘rnYõ‰†D Ÿxî‰ÙTA<;€­Ë3:²Å•K,hª ™íc!(1ø"ëÁŠê NœØµ7ŒãÅÒ’ePZ\áàx²Ãˆ74mA//½+6rN¦@=ØòÐQM ƒe8ŒcKÁ|ŠÇ„èÏj+;­½ ü<*ZQœ8p˜êÍqŠ!ÚŠH^hØç9Åvâеbñ!Î.Uâ‰öo"R;ÊRl°%S¬9íG´4@É ¥¡—­ÉÛ,.3â¬gUß3¦'ƒ ëf©è Ed‘1½[ M’ÔKÊÊrºð(+µ¶1¡UT¯´1.ÖçjK Ú¯PÀVëP;¼é?Iº¿ŸÜQ’-“‘]…©b{*Ì4ºšfK¯—<”ó•õ$ö;±ÍÉ lÿUS‰æq´eRÑ2¹C¿zïÞ@¦¸µF¹<Ç#]B¬X©8ZÛÚ†J›±‘Q˜B¯Ç—4tÊ‘dñ>Û¶H±ßIx!W×<4$ú…ï¹=²7«6ØàGÉcCxt +ËL Ñ«ºñ„(Î]î¦7›j~¸±Š…lç?Lf–l§ì™¯±j¾wËo9ÁŠtAÁFU¬·+~ .^À¬Š‹¿L“ ¾¦pêÐÆš”Êc:Â.õ–¦8†qˆ,œÝ‡«+ܾ²•öð]¢€“VTåg0ؼ¥¶¯kH|ØýèuAX•¤rxžWM%oD°¥¸b6 ¤ð¶SÍÿAeºð‹^Çáçy‡ƒYOuŒ¦…Zï ú³AOJz“èß¡#—¹Ðâa/+€«&À®‡7Y.°ipÁ”‘ `æ@š¸÷Dð%H@ éJ¤ “”N’t%'ÄU›0?´FEO3}BX'×pã7j‹Ò{MsÕ™%Óʽ/˜¯7­2CµK“tê¯p¯)£Þ|žgÒv ÿæ‚´_- p<ó Æšo, ±3à”2FI“Iïöv<ú±QhRbrÂe»7a#%%ªus_ˆ~<舛 tÃÏF/ù»[†“‚Ý ‡l±Èh0 ÑZ‡bz†4vzýq“ [kèÑ(ðnjЦ¶ª¼z÷ cZ ÆçÈ"}ãÁáx¸Ý/:Ï Š’ÈÒ ÚôD†!~/džÏÙT'0SW¦˯!¤¼*Æ3ëÛA©qäLnf 7~¯Ê)Qs9ªÑjV *Æ©øÏExïdl×21‡aÜY?Þð !õyäûÆQ{<`LYÀŠ M̤§wÄjø‡áôAø£ïihIÜQ:“1ûñÉ·À‹5<ôž3º£ž'7¹r /ŠY9b6 RܪÆ=$Sg=ˆ¹l]Ë®ºÄ`4ºE_ÊAXàÇ(¾4ŽLùR‡ëHÝxª™Ë*Ì™ë@,é]¨sù~¡Òj’³f®€þxvAÇÞ¦rÖ»Â+¸®S’—ãV…á-µ8œéå4¯ø*„rï)WÝòX¼yËÜéËÀ‚b-4¹2GB0)5ÃI“zñJ*Å¡Už €–F¨Õ@]‘Ø‚ŒoœJ¦]ìl8u'çÕ›,ÀjB¬9q â) 2 ÿHŒßF#-.3[pÆÐôq³•B=¶ÊpÙ—X\àŽ°p†ø„ÕQÌ “ÃëÈP°‡Ñx\܆`vÂW;DIçsÜ·žÆ=Gß6‡ûÚívјu`$|¡FÈ>BÈY¼Ï`ÂHVïJŸ™øl:w±Sº‘Pr¤´W͈yy3ï¾Sz=â%„ýäbQäÒÄy‰á0L üopsjú:áÁ@ 隸†à¥ø¦D¼¯Í-„K2r“îð•Ž;+E$PÔþ>£§UTGá>Ê#)`¨xÇßn¡un#•ÆáÞdGô…Zù.½…™5ó‘°•öyîcÜ¡ ¡´n­tÀ{j¿ºúVî:91ÁGóþœ8VfŸ<Bøj>ì‹H¾äàFÖ“´²¯¼¡7_Nô´†+å£[\¾ÞC_¨î÷œ¨PbäaòÔ•çu^Kêªù­tjˆ7Ú˜á”Iì½e¤Àº'ÏÐA‹Œ5X² ‡#5½ÑŠÖx•}×=:ÁùB«ÔJÓ»X m±D»j9X}Cã53KÚE ØF~×⦯Ü+ä áä7y>ØÐ›±x‹Iö0v´±AÄÏ83•¢Ò2^½­£((5‘äz^,þ–R¾Iå“M9¾¼DùWmiz’Cvý;Ç’Jì£}RfÿïúÏÚu,ö›,æžÅžè÷Ä'ØÐúçÑ$ˆm|)uÛÓi]Æî9 hÙÉ­Ä×m8¦ˆ€ƒè&¢Ú–…»µ ¦ÈÁ§†zÂ7š¦šJLˆÝH‡ ’6ëÙŸ¢@³]3åÌ8|±ÙœfÀªÒXϯuBNDvÐ驔녌Öb‰beè\CýÈF9:Ä>¤Ý=GdàåtC|G†–I–¦5>ÍÊ#‹ÊínÊ‚éÙôò•ÜúÊŽ&#é­U*¾†¨è†.4å̦¼´¾Ñ>ÜC³Sy& œÈ† Њ÷Sμ_Ø'DÌ–Œ€ñOg/å…Žè!1/j”4ŸRÈ ªë²+ŸÇq‚G±™šüž¶Â‡§ŠGh÷ò;y›¢Pÿ¨5Äaž{ {(ðOÐüíå^¬_¹Ã]Œˆr{Jð»Øœ˜b Íq‡MŽd9¡BÎØ’,iÈ|³íAƼÓåÓçÌ{WH.–¹ßM«_N@¨z!TýBTšJ6ICÆQÙ·lÄYeMìAʼH£™€ì‰.ã½ôÚe·¾í|7iIÂÜÇC—ÓèÆÜõÆGPqæ^…ÚYCjuGc?‰£’øfÉ%9ôXªwÖv ;â)­".ðàdsQ¬‰7ÛR#Ã}K9…€7R/(tKiãž}ÍÉíåvÑRKIájh¸Ûè‹}{YÕä+PQ%s“Ùú¦’~ƒ %helCïBN :Mî: ~I³"ZEœ”ñENYh-RÕMU¥ ؇ºõÆGV¬™õ ÌÑ"¦4ÎX¡ù€Ì g 7ÆWUÅLÌÄøÐ–.`߈ƒó÷R(W–<½ô+H×íJ¥Ä¦³Ãw!’6C7OÏ^ŽpÅ€-Û=Pæ8`™—>Ìe5¸$•Ýv‡#Ï)%¼âÎû¤HÖ.ѪŸøæˆˆ÷{ÊšiµYƒ»·£1RV³È¶·›åº]eݹ`0Ú ßQ´É‹ø”œi¾´£mÉË<©©d¬%|@­]‡Œ”Ž–Ïõ>–ÖNâÈP IœÞ_uÇòªîÒz¼¨êNwdýni.ý]VKÒßM½oÁ!ó4y)K Ï6ËØšº2u¨S¤è¹©NNGçŠeŽ%DqÊŸLˆÆ©é [q : ˜ ‡H‡N†š'Y‘ÝUÒª6•¡M_¤ ª쀄ç{³IʤËö-ÀÀtöþÆ%¹»ÑÛ Þ¶åØµ‰Ô[h9 ìM YÐq? 2eØÑ~ „L´?¯–¶ Aãõ¹Wå2Ù»Q1²HÔ€ EÛ&‰?¤ðËutNÊ“x·†{OÊYߌ&¡}|ÚCù“’Â[VHòžq9ô¡Jâ´äoT ºwêÊœôòíÖD²¯jšú;mÚ >‚ä'74y&W9ž]¼Å4¯¦iʱCQ¬¥º`Àã*ô ¢BŽO&µ!ÛÜ9Åù€ÛÊnRHÑáØÎõ…» 2g¥„±Z_@Coy‘Ï&‘¢K•œ;eŢȀÚ̆šNbžB3­–G£ØÈ¥—3꫱l餔/yfN~äÒ%¦kçÔ3õŒŽ1»¦«dtµˆsj›*Æd½AM!c”D núL§¾=MFš#$E–̇²Ž|gRÁL>E·~‡BXÎǽaßô€«°ß[ פí“:àž‡—êLë,Ð<àÁM…• ÆÆÜ®DrŽ>5‘áNd^äÒÕW1#âe?­4 ¥oæÍ6WÞÀÖnñ€Íígȱ 7‘æzNÒ*ܦ½Pʲ(bÏ5þ\õî·Òêò~°ö2kIš³¼È°%Ö¦0El´\nõnÎößH{Œ›2¤ 0MdÌÓxnã4{;HLbKó"Ö“EŒ'ÆYp<ºmó±¹o4ùœXÈd¢L|Ò™O.+†gs›\ð$ªŽn. ÞÃb£ùû 7†še`b ö¯–£Üï QšGž Á]ÐE$…J Ì@L'*°ÐMxù rpépJé’Åfì(‘fõÂqTP;¿T…3_ÒñßÄ<û?xÏÌ}Ýj††;í…Õä ¡Çnµt¯ Ùò{ÈÑi_¥‘ÙåØBgºA¦qמ&í‚+W9ŒÃúl*Û§Eç‹s–*9Wïv£iê¨t”C®â¼ËBm«V¶8$@â$uµD<ò)è)E*ºà0ÙÚ_(òÖ-¼‰Êt®6”ÍŸÍ­&²†uC3{MÔ|¡&<àÙbóÀ,©˜B;d-]Zeeÿ¤³‚ZcÓ(ô[LŸ(Â9o° í+‹¹%µ"JÖY£wI~®Î} `ÍèYÚ€aÍÙl¢Âñx主¡¼÷Á€¿â*÷-«i‡†f@\b;AØ9QÙWˆÎè¸ 7NÔp÷"¡Ê=äC»ÎLu:uKÊqÿ—!« éwÚó©¬PƉiÀ“Ñà3jú3i΂AÔ¨›RDĘ‹œ÷n<ÂØ‹r $©ß„<ö™6D<“Ñ£L0˜8£HIìWø4@?ÎÚÝ¿â}wt‹_ŠêF6j˜#›sDÙ€çJu°Ò—r“çÏ,áUråûÍþúi…åÆN¹2wš[Z•Må`™;þÔsúJõz`²!e å¦ýJkwS÷+y4A_º@³Çôäî"iQÇ2ðÖ{;Õ–ÈÔŽ¿MW[pˆ"©Õ“5¡p)HaýÊHž¤•åW1üFš*E RöfÕ¶”ÂÆOûdªyÕ¯Ãþ§8Î3‡¹IŽmS¼ÌÐ Pkr*¸¬­ðB2\XR"­ï«÷˜ú ;P,åJ.ŒÞ”ôžà•)s˜(nS²òj®Ê™ÌT­©âs¶·¬b¿ “g»8t.fEDŠÊÓ2¸† Šrc¥<‰¨)ûîFâ «)Û‘M@ÂTža~HvÄRRýksÂW¥è!æ¡!í~ƺ®´'ýøÌ¶¤ôÑ-æÇr‚q8—%¥òÒÈF‹F£OÿÔª¤¬8¸«x+pK!1t|h ‹œYiûYã‰Ùä ƒRÎÍŒ–橦oMŒ¨™’ç L©Æã›Ù —Z=aÚÞk µI[ÂLñ¨³N†tZ&œL•_a´&™Ê:¬è\Óëq°hØ»ÿ˜õè,aØ0LC ËElªý1D·%BÚC!m‡Böϧ9Ÿ1ÜG¬¸ËЂ ‹©ÄÔ5‡¼â2c _Ä¡Èë•v*©¤-"wG—°ÓN5Öjñþ Õó—â‚6¤“Ûÿ8˜£0šh¶œV¬aÏL€Š]ç»2‡P×G¬;¦, sœB‘’ QàÌ>¦o^ïXÏD§(”aÒ8©ŒJ¹4žj¨Õ\[ÇÇYQÑÁûãYã{'“,Äqv¸Š:È€kø 3Aú’läÚЧ%1E›l£ŽC¡Ê)3¿{­¼…OZ ( ö]o|‘F3×ì4K0%ø[ô>¤|^Ø“™ÌC–Œ¥]×±¸SÍÙ£K<šjšÆYŒŠ¦:êöD»¼Àj:ÿ«”ò4×Úéþ§P´â¥ Z;¬ø»„‚½J®% Ò¿¡Ô}ëïÝõŒPòžæ(á4¹Mç”@ŠÃ´\ŒäÆ ÇÀÈæZŽw}I‡^Bôoâ‹xF‘b k®ž§²´gŠØ>_o‘~z®CN-cg§„§I™ºê|2Èo<—>x§ å<¸hZè6Á/|àQ‘³Š+n†h“ˆÌªN \…ÕWaá?v?êXãu½£V2£¸Ñ=²Žf€±ƒ™ë0åö,ÏØRþ—vks&‡f§ïðª¬b”—‡=](‡WÔk2ä§{}q÷d2Í€oDÒð©„}ÜhÊìnõôʬ‰§”“pMЃrp{ÝÜ¿ÿ‘8ºøÏóÔ½A¬˜<É”gTe»›6òÞS`"™J‡v$äœ\ÂíÊþÓýÏ@* 'ÃgStWJ‘V{b<è|Háò§tc†Ö ˆ)Ѝ6U²iY˦:ÐpÊéžÑ eÚfYy× ELá^PF*f8ä1©¡6˜¦…tD„.ñLE|œ1?É鑌»Z;'¡óbQÆYÁlyì}HvKŠ$@â 6âËöI?9D©pnFŸÝSƒ)<…LÏÒûŒhgFvFÎ×Yå_Í d¤ÑÒòc–XÀ’T¥¹_aæ:G82„8ìÓ¬­†Dñ©{Ü'gÉ œÑÅ‹ãV†e#õ8WÞvÐ=WC2Û‘¾˜ ¢:ê¬w¬L°eÀmÊ ŒÉçp’¾lä–’½tRì¾fHïðW¾g…{€çMïž4i‘_©Y²*àà³-ç~ÕáådFšS{¾Ðïyÿ’1ø}0Fùä (g¨UTÜoi„É”u xr´µ? ©>‘Ç}$B"vE¬ÊEñr¬y;G}Ic\y³¾§è2ûzo2™Ý˜îGèÒ"¤Þy^óȹ´.•Ø}X'£Ó˜N=¢¢¯²¬óq¯ÿ $yr&óìÍè"º¤ÃÍ—Æš«=MhªW<&8¶LÒ¡ÏdÞVÏe¶‚<ØðêäÕœZÚŠ²ˆLbãLŽLÇ©yNÌ!3ÖÌ?©~å"´¹mßçxï|„'ÜÚt^W‹Ô²|¶ùR:I™3dÎȲ¤ÌC´þ37¨B¸†í9þ\”elE0% ©xbÖ †sH.ZEy-s3*< *0S€Ë\gÌs{•SŽäƒã…2åÀLyyJî±÷5sôŒò˪˜×#R+Ê/º´w0öÙRÇ@‘‘PˆÔÁ¡Jsò`Gº~˜ˆË%ád£ÅS Õª þ)Õ§T-ãì”àÃ0’IŠìР8õchÂþ™ ö'¤$Vâôõû;M§{z¿ ¿žÌÆ·2à6_|_S±L¨øÇã˜ïÓ.Sd1_”ü·ÍR}%Ü_Ä/€÷hø¹°‡ÇοàÝx›L Ô`d΃=#º™ö•ó*µiOÍØ…ÄéU)Öÿns§ó¯þUø/„ù/l–ö\CŸ|Œ0€ aTí R£×@€BŽD]!ÞΦE5„òi×J%8ÝQ̲=¢¦³ Tþu[¬ÅQ[ 3½kx-Þž0JÁqKb¯¦×âHuñ\ò`_¦êÅo9³Þò¸½L¡|ßEX$öU@Bl)2;Ò³¯ìC!ßs¦Ñã ÑàíUŒò_¢)—Ï-€ 9i6ñ4 eÜ*éÑ P! :·âÒ-„ÙÛ¤iÂÌ ›4Jâgúï û³iÏu¦½i¨™€bD{ÇÁ•‡ñ6nÊü‹v¶\` Nеm|Nv$S·€›Ó=u*Oþ°÷¥úÑOË (^Öþozõ=ä?ßþo½ºµ”ÿžäZîÿþÖ—±ÿ{¤Ù?oþµÍõª;ÿ«Õêrþ?ÅųÝÙÿu â $K¢Þ)‰Èømµù‹÷4½Ù—ha†ß°(w/ߺ"”µ*OGƒÑ¸w1‚Í#žè°vG½§j>‡$®Â>oÓ}Òw@žMI]Þ÷ìjƒmDà»–î¡NóŽƒÂsÝËÓyò´¾nïÇ&Àøpþ_òÆþÖÿû׿¸Uð°B7ðÛ¶þ&·6õÎÊJU¬ŠÿtZÿÁo ‹U4Œ2¾_§^p¨¿­á«°`œþ²Gñ/MH72¦˜zû¸ 8 ¿ôÃÛ©Šd¥½1÷(ïãÒC;J$náÆ!žV n\ŠÃíµ‡]®w¶9Uv§µ½f”80K¬Éäyx #¤.Ú  7ȱó: $|I¦É¨«St¢éy4”A¦¥€/·‡8è¡Úêæ*¸òBÅÑ$¨jc„4îÂì&8X*‹¤E ¡óÿ³÷®]mìH£ð÷ù:ŸbŒm°Üfg¯eÌýâ°¹’çÌz–&tbìŒm²Ï¼ÿý­‹î-u·@’ =³tK%©T*•ªJU]B¬cqê¿HUˆÏð_tkO¶ø§>ÛØk§¨•ŽU‘Àj¨£FR£ÌyåqýõævÇëÆö¡Ž08w^Ÿ ‹ßvŽ*«&Öà »{]ÄßháðËf ÿÃ=·½ž‡q›;趸àþ„>®Ç‘µ›Ñ6p<«ÃÜ¢ze¸)‡|˛磽ö~g‹¢g¼UÁ&×Ïû]§¬W.Ûî6*~ãô"Ô0 öp»{´Ý1ÛèAÙÞÞo£`‚Q‹khÞÙDßS¼èð~ÛoŸÕ¨Óy¸ûëð8Э§(‰èN³†ÿý‚†ñKôò7ŸŽÚoÖ=@DOÖTòÜË)€^ëMz6gÑßÖÚÇíl± ‹ÅB©q‹K à‘z(Àñ‚\¸aœJøN*¥"§×s5~Es¤Þé5L˜ÒL5–8¬:ðb:’ÜÍ7*r¸¾“ c£dIVÄ“£'ŽÚèàÈþ¸î|äi°¿¯>Á>ÍU(8©¿@pæÇTÏ¡<.g ý2B¯©³ß¾„¯è¹ôƒÆ8^ĬéÁ “Ó¿nZ³±CVÕ6ñMÍ>€Y¡¯ï5Ê. 7¹Žï‘¢ ðOÇ™„›>ªÊñé÷Ü‹ì{5(ú™ùìž3ìùÒTã‘™$U­=®ÕmeÈËlâÕ ÞI®W£ÀUÙ#¤´N&<Ø¡…oùÆ»ø`f²U ©õRÏ"H=ËEêY©zHÕWC*Ü@VËýH“ܦõzÓ¼¦uÛ†ˆjqDúŸ«Êu•Í0g#zãä%Ð9K`2 ¨Ñ4«&Šg28g¼})>·I«‰yÕ¦%Ið³6T&𬇗ϜÆ*¹ûÔO/RLAÒåäËP8%\ϰµl»GvÃG|&:åoj Š¼&êv5xãU“¡šÍ£Lw6ìîl¹ˆ€y¦Ô£„²2Sgo‚–8© OUò¿9<‚;;8RŠÝ꺼s‡SIÈqõ }rá円‹ÉL­“îÆžfµ¢ÑŸ4ĸߣIßc”¤9~GA§55]BŻѯ`é¹!l¶ªJ~ÓuèÞÙûfÚàBsQÀ$K;¹F)¨ zߢ·8{Á‘Õ˜ð; ˆÙ.,šÀ°+ò%íÏs¦ÅdU¨†ï5ô}¼ÅI÷zçãÊÆÆœ‰°ô"iE—®g½»¡c01ŒìªÎ®£ ›n3«hcÃ_EjYu¼%”¹„¶Flƒ8jUCqKl›p´ëxPXÛÎé+´¸À§ŠLç¼ÅL|bc£btòð˜R…GÖ9ªn}u«JbðcÄ+þL[†¬ä¸ FFm]`î&)кCü±€œc„PJ“ 'mŸà‘ÚdºŒ‹«›ù‡À3¬&þˆc™ÌC ØäœC‘ØU(YAŠ›«nU$‰Î‰›Ûþ$ý”aÜòujûôšXU›Uâß.»Ôµ”Aݲ–×­.Àôfk†Å“·Ãd7‹C̳dN•`ÒéÈålà‚$ %Ñpj¦,×XÀµµ×biQ™€©´_BbùÐ’X–,é gtè–èºB«–êÅMñ´\Ø”·Üœ¿?â~ÒÇ›è'íÚ?ÿ4ößå§öŸyí¿¿õcÛïgõ®ÿåærÆÿ·µ´ò¸þâáÕîÛßTбó «ø÷-ýÿvjâˆ~ï<ÚƒÃÞp€…5FY7 ÊŒúƆ,ÌË-6 Ù?¢ï5t‹£Ÿo§u“=~ƒù^(JœíJ©2eºè1 —$X²Y k«½/5²V¦.¬/st‰;ÂûWÎ?›’ÜÕª5Ú@#»"î*)*F_¢ÑF>øJˆ1QEt¯üž~¯_ ÞW°èœ¬8§‹›mó\éq½\}Ô°•‘© ¬SûŸ6ç+œ¢Š44ç·-§çNÇ2%zœ.F¬à?O&_0¥=Yg †ó§ö&}û }~ëóWÓç·ßÜç· †cúÜqúìz‡{ÚÉôT´¢`oz•½Ûk¨V²m•h‰Øì·bªÃ. †öçOâ1¼LYäÛ8c;ƒro·¿ƒÙ¬³¸(os ùÇ[ûŽõ†lÐGIëH{¶-½•ˆoñ-0i€g½•ÅðX^AèsU¨=Ìþx»màºVQYòX.këxN<0ˆ.uë= þ¡÷o­÷8>ø‡Þwð=ŒÐ;ðæ`/úþ2sþÿû~åÎÿ++Í¥eøþ åÿ¥ÅÇóÿÃ<çÿßú±Îÿ÷´ú ý¿áØï¯ÿæbóqý?ÄëÝ;ÿ¿9b{m½¦.xÖÄ:οÇíRì­u8(\V8þ/á•àŸY`Ýúm6ÅLuñ7WkÐÙj¶;ޝ"";W§ð†&p¾od̀Ќ‰â§Ð7„Ü*+Ü)ÞH¥‡í›N¯ðÎR+(e€<™’ˆ#SÁÉp‹³–Ë2X}¿~þµÞU·=¡3dÏ—ÖÂHÞ¹-vЖ ÖŠ,/Ðâ`Û<‰ArPdžônaLŸñ¿ju‹KȾð%µ;>æéDÊùì~q|Ž·¯¨ê+¡œÊ©W“ÞG ãEÚìÏí ÈÁÉzÇCBÖW±ÖŸ >ܾÇ(gØLjf¤å-˜ ŒªeYÛíÍÁ@Ç“¤Gc†¿%Ð-î(,¨ËÛ ò•þœ€1Þ¢e×y^vãw‡ï6J8º#Ý"BõYX‘vÕI<øJ<Ù{ò’¦{Uïë¡þÚ¯r&ò//3µo0›t!¢Ó˜Qµc]`€Û›œÊZéÞã}ƒS8á Qv]j1éáë«Û>:ƒkO÷­áí8Á§ý>ˆ='Gí¼Ý J]ìà«}™C]¸ÈqÆŸî’†¾ªpt{.åL«ÛKöÙ®:¯éÇæúþúqØá(Íîµ;›oò è×BöŽ!ñžðçYÔ®¬¤r cò÷Ýb7ì ÖRæA}àhè™c{¿ºa•¿À¤½Z‘å ›5ùÒOXÅ‘`§d(´Ï2¦k¦0!™J›RE]Ðoæ±77õþ|óåì J ¸a‰~´‡8Ýñ¤“•¥žDÝ•–ú~}#ÙæÆÈ¦Aê£Õü¶!Û8~åü¥¤S…‚àð¶ ~Že²5¡Ö\r›Þ»:Ð^a–%;+ô›Ž²$šŠÃ“ŠÄ9wW#Òô»ô4\µÊÙsFÜpK]«üª¸Ñ“CHÊ] û„üf‘3Dýë¼> ©¨©0ΣîîÐ!ë}¢lEÖh’@”R } ß(Rcd%X‰'.ÁÞäì~ˆ`ãmI¤8-šwӫƸAl¹v*—^g5¦\ôk5N°îŸq»Ê»{0«¸úÿóèÿçèÿ–Wã>Ìó¨ÿÿ­[ÿ?«¿Pÿÿt‘üÿœõßZ~Ôÿ?ÈëÝ×ÿ¯ª£Æña»{„÷J×;xEùøõáúeØ•¦øáno M(yû§„½µGëõ|ƒõ@O͘š"š¹¸Qa×Xhrh¦xN¤á;šð¢46¢l ÔX5W-ÀÕ¡)-«ÓÃyxñѱ: "ŒÂ¨×·HŽ9B\¦cžV*Ýà0¡3g-²œI ”D¹)lª´ –| ø(ÃY]è”LehäùhŒkAû_.‘‘òw£v§.Y#vØpfÔ,d ØÑ‰63Ѻr:åþ=Ÿoe‰Xgßè‘¥åØ·¿íÉXŽ@Û¶ö2Ž-ÃVÄŒ«QQ]BÀ«-¹¤‰0¯Ž­­*ƒ±ª8†3œ*;™úb#‚Ç‹¼ÆK'lëÞðK2z"Õ8¸ˆ»ÃAõˆ©×Ç‘.“º%¤hÓóe(Χ@Näh†’¥È¥Å@îþÔÒ7¡\båFuó{]*ЮŒpÓRA6ì GKQÂýnVmZ‘€óð0g¼`~ê4‘’£hÏeÐiÁ33jvî²­Ã<¶ÅÎ^D±ô«vŠ•]p¨Ø²þâß…,—àYûÊ‚Ê *±–ó9Ö·þnÊs,ÏœaW3̶gŠw&|_)Ìqò¢ó0ÙøTœEñQUN5Sp¤íð“áVY°’;½Òïe·¾ƒÄyLkÛžÒ•XtÃbNè2ÂýÙ¡=’§ß4’§y\)¾X‡,žç‘>Á§g‹á9¢ˆ½òŸXçYˆ½>/È7{aDÈÑYtT¼Ð¨ØË™2*x|ãE„Èf[ÈAżK2mgg×¹G˜ÍÅY‡Ž5ÝÉäŠåýLVïïþ.ëÿ3ùiüž=æy˜çÑÿç·~lÿŸûYý…þ?Ë‹­•ŒÿÏÓGÿŸyxµûþ?Ç•ŒËV• C±ìØóèÂ#ŸïáÂCÈŽ+ßwmoouÑq¼r`B+ÿœi|nŽçÙ¸–Æ«yÛã4DqÈ–`ËùŸbP“¾ @"l÷–©^#—Y€cvÆÛW–“ÍHíQ‡ ¤‡clëöÓ'¼a¬»ÿϤU )ಡ!õñÔjA2}rÍ¿ÖuPÛ;cì¹gx¸Âˆf&Õ°´Þ¦õɵ´è{h ‘¬‰s‹ò~áè7xºGŇÖôlû6èïÝ¿ÑðKÙα Žú÷>U%ŠŽ>%˜&Š1À däÄBŽ4Ž…Š}‰Þft÷9à×áûÜüÌ^G/ßÓëHT€ç‹^<ô­Âs!‡¤‹ïä4²’J:9^?oC/ÿõ,žD!®ê;Ù‚„8×drok },òU<÷ŽÝ9×™¥½vëÖëÎùN0>B”‡ì¯@W’$.™$~€ÛŽös(öÞ ß)¸nxž;°1§…žÂè“[–Î.n(Av½`ecö½‰Ê¸Õ„܉>¢€ö1¶×Pws￈VwëÅr6 ÌFK%ã‰;ŸV {v[úÉÜW(ÚäuïS’ñòÃ-“H &%o':…Ë·ùùÉýñ UŽ(õ¢Œ,`òv&w=”õ8^ìfo…÷y4ó NÔ/‡!£·Â&1bÒ´üS“…üi8¸”¡2÷º:Ö¹Qé‘4ÿ´ Ù­+CH–0lÂäð™ÖÒ©‰#§ì!ÞeÆÏÿÒó†þµêVÄç¦øÜŸ—8ÎmèY°ÿø¿SUæÖÿòM-ÿ¿!?£€ZÎÿá$I*hÉù¿䢺Áÿ/ñ²z)߇¦¯éÈj9É›‰@Ì!îyÙ'J4‚°’ 3):ñÈ'8QXšZ È%Ÿð¤æR <ò)¤Ž%^û+aZ ?Ò°(vÇ7fKe03; –vå“<,¾7¹>|?8„—ù~}*:ñ7øõéÜ®ßä×w<­_Ÿñ"âûöu+Ë¡ŒÚPA_!ÌçÝ@’ é¼ûýÆ£n;à¤t¬<‘„IØ YÌ v½†9{{Ÿ’]yMî{ÇÝpŸ©ýtíá)v€b*à8Ð7…ß7_äŸôk6|™è#oÈü/íÌo¼P%BäF“Ø­oë„õœ;{äBµm9$½ñÛæB¹ Ž%ˆmË–?ÕàòQªÿÀÉ»E!YLÅø¡|´C b«Ôà”Õÿ¸–?`?Ÿ”„¡(TMÊ?ZSDì~g<-þ¿ÕcÛÿÇýhÿ_~útm€Kdÿo=Úÿæy´ÿÿÖ±ÿß×ê/´ÿ?[neÖ«¹ô¸þâáÕîÚÿ:{ e¿=XÝ1FâÆákô×>~­‚´Q|ióÙnÊd`KÅŸÛ@8éÀš‹3Ûõ‰9'c:+6­èÞ¡\`z¾Ñôß®psSÙø,¬¬·|¡祫ÍúR³ÜVÚ`JƆ ‚qüz†Ð0)‚/‡Ö™Ð­Û“¶»‡fôÁ{üIºåòléC7\µ]Ù®íÌ1T€•°.×…Ó icËpÛ£°mèðW Ê}uÛï×2ƇZƶ Êl!õ €:ÞS¼\8ÖŸ•²2SWD¡5•Š¥ÈAbZéè'_"Ÿ@˜@â¦ö+ñdõm^U8¼H±=«˜?ÚH•SeÁY¤ÎV¶ŽÁa¤ÎªÕµñ×›› ]¢‘i{¯¿¤—ð÷î^H­Šµ¸]«ä ½ælÉhlEŸŠé‚ CP®{ý+i—ð{û×ë-œ²·ï¬Þ–è£éP¨»l—íl®n¾KÑ­k¢Ý•œ­Èôæõè¾ ¼ã0¹JFh»d,`\p\/l!´À´àê„ñª†OJ5ì#ÿÛfåæ§“<Ñézo÷F³U˜/Ëq„"õkŽÊœ‹\°±ðÒá°é•á¬1¶jƒ¹€å{žØi"jÄd·>w|_ÃÁßÉhØø~á^pnöm÷Šï÷á:nmn©ˆm/"…5¡œ":£´”ˆ¾®8À” ÆÞ´=»]jQåÛ³qÌ)–$=ay XILŒo/`ÛcŒ´½ÚßÿX„ï@uJŜ֌kXOn›À¸.qŸ@;ö{ K ³_i CÆ“€äEjË¢ˆ Ò‚‚v“ÅšŒÏ€Ñ§± ¬k¦Ýˆ}……õ$ñÒX þ[‚ÿ–ããYÝÞìžìK¹¾)vH´lÒ¿˜iæ$Ó£ý=(ø,+£î¨ÛΑpöÚû­ LMÓಽ›6Gd{õÜ>ƒ¶Cð¦¶SÍUâŒx×3¤o B Bé/dÖ‘{•²+ùW„eݽ¼º«’[÷$¯n+¿îV^ÝL” ·nØ&ë.ç×ý+¯îJ~ÝwyuŸZu³_.j‚Ê y«Þ,oßã]CÙÄ(Þ/ })¾CARÕŽ_Ç+e³v­¬AP•ê—ïryê§5âeÑhw×0TJw½±à°€oR±Ê¯øåcxæw€Aì­7–$Øõ°OÀèFe°a`›ëÐÿLø¼»gv—®ŸR3ûuhh1ÐÈZaíæ@жàhx]/„5Bœ‹j¬n¡rNbzØYyλ#+Ÿh_—} L®Äô.]~÷53ɪÞIÉzOÝz­*´(+ç ü…5ÛüZ¨å áG½ò†pÞ JÅêâ@%%ìóïñøB› ê .®Q!÷IK>oö€Þ_¡ãGOtgYd€(Ø,hÁ@)™H€À»átf/AŽÀW¨¯ÂWÙ$Â,¨jª„j†Çp\²‰èÿ£ͯYµ®ð(ÀõW”§{ì;xAé{¼H‚‡© 8ÿ¤“DŠ= k÷D·×EŒÓPQ5à" 3q ñÐ:€ î„ù¸ÆÂ_ãøðdݪƒÒ•¬Ü¬ï”î2,AÈÀ">*Æ¡Ã2WÞ"FáeoC¼#Ò'ãš,;'ý+Æ8}NÆJë&ѧ)}}Î2(q^Gap…Å9@(S æÇñ :¯lüÃOá‘í’CUn§6ÚÐZ¤WÜt´c8YV·yF{áÏgA/ôÚñzAy€ ã¸/äkŠƒjÆf‹1êÄYâeW´­Àú÷*Œ – äÍî~3Ðý½°š3á$3”eÊδCY e¥ìPZ¡œ„µ¯ÞPžÅ‡òÔÌÊv—<Ÿö³7¹ƒzÔ³²ƒZŠ*£ŽÉ ê¹7¨ùæôÃzÖ‹²ÃZŽ’édé*dPIlrw =àöļ°Àî2¼ìºïС­G†±ñÁªúÎt‘AE\Œ43áäbY‰Nô4ÁͤÒyÑòÑt’EI3jJnD2ón³®âæí.M…’oj–æMO(YÍ8’Bfô­‘ JPØU|²¾Àû.Þr8_s9ƒ7èÀÜ·Vˆ-6cl1»U‘[+ms–Ø»ùZ#å»±ü·v}óü¿Z÷áRÎÿ«ù¬ùôY«,…â¿<}ôÿxçÑÿë·~ÿ¯{Yý…ëii%³þ[O—×ÿC<¼Ú3þ_-Q‘~^k5q†ÎIg–k}n¨—†zÉ´—ê¨Ë¯lÿÜéÝ$c±–€(؇ƓÞû~o ¶zý~ú¾7¨‰·Ã¿‡b+½ì‘O‚ h§7†öÓäò+îíyÞ`Ù[d6 fñEÁ0bCË`i6ß6»Oy£q<Ø¢}â_·÷ö¶;ÛÇ¢‹*o[§âÞmË#Æ4Þh£ßEžQÁ¬·Úz«Mï­ÖpÀà¨4=q™öÞÒ íß@,=y×Y†’¸ª× ;|ñå:qÀ ]—:/­÷kV„ŠMóÙΉ±þ†} dûUšùGɧ~ï‚g{º÷¿ï“ÿEÀÿ‹JT”Aò…># `9ƒËÞ¨Œ[™(r¤ûP¬íœ5\ï Qä@õÐðº¼5!RºKô“ÁûɵPFæ5…l…çZËØ˜ªgZ9sZ)åžqfÜ3Ü\!²39}4I4yk «N}ÑÎ@©ä¥¼žL‚Wh’|³)ÁÁÓ\"EÙWaúŽßµý`À²ÁÅ5”ÉÞ°ØSeÌÍ™Æì;434ö==0Z!^éè÷3øM•ö¶7Ç }çÎTèüØ.ïooÀv£`­“¤‚Ì4• ›gCÆA{ŠH@Ú €8s9à% #´ïwOÀ=Þ ?˜{ ~I:‡¶+iíÙØ˜‰4ůDŠÿÜÈ?>à?ƒšHƒ¤ñáŸAZC(*ƒ°ã@I•›Ú@§”¼ßë?ã1÷!‚ MëºsX/8’[Î̼Õ;ÎÛ–Mú(™¸+@í&|à(%ÿ:ÿ2 a3jžw{%ê¡°Ÿj ZAGׯ£^¯›ÀÁ>­HŠöd²Ûêf[j[aXh·Å~I.¾#)ËãÛ¿°9 ¾µŸŠÂ‰7PËã мžÆËx;Ùm< ã™Lã!œj\ÄÄG†1õ­­ÅGàó¸»DN²¦ ÊÊdf²á¿pQ˜»Ê‚‰‘Êæùð·v—ø¯{ýßè‡ØUþŸågKËP EçÿÇü?ô<êÿ~ëÇÒÿÝÓê/ZÿKÍgOŸúëñÙ£ÿǃrõ‡*_ìÁö›×Ç5q”µš8zT–Êç#ñ‡È,£œBáŠ$ø¸Ș<È£SÒ Ž“ßRzTaŒŸOýLôh8éñy$있Ô"5q5Þ¨ÛIk%¹šo F˜òUvåô:ÞX™V“0zƒ1:tð¤Iï£T!á;=Ymñò•8¨Êð÷4Åv8=°võ€³—W•Wȼp6M®‡Ž»ÂŒ?OÈÃäÊÃÕߌ(£qUã +£[µÛÑ=þ7yüûCPCÃŽa_ôˆp±­¢"J'X½J£;7G(¨ð@уÊßõ&ZÞ@‰Uø³5G?šsª F®ê\g)„ßœ3pU#ئ*(‘ijˆO¸t¦P®2DɨS­úù×zK—²=D@âZ\àobŒÿzù_*¢N¯¹Èœ‹EZÏ8Ê70Ê7 ‚åSúy8á!š¾A¥÷Gb‘1<ä*kç›s¨‰K5áuϦ?ƒ)Ýé©ò’yQÏ+ò'bùªË§°'ùÕ鱦`†êö$ÍÒºóxÙ¶:=±3U7=ñˆŸhXo‚JKò€‚Uþè›ó]Èë˜Àp)dÄ%ìéä«Zé€yÍ—1-U¥_ÿHF¨û¨ûxø©˜°íÈ4’°›’°ÇÃ’TžÂeDq[nmäOMáÚ(5³ñždª×ÃÔÁÉÔtåöd6²Ô8ùªV¹D"T²$ÚÌèQz“‚†Ùß¾8ÔJ;Îp2Á"B°Dž>ÍNü7ÔxŸ~Æ-›È2\§Ë FZYœóâžOYîÚ+=ãážLG0œÌDo¦'…Õó×Þ´äÊõïÛ¼Œ ,ÓþâSáÒ<‚à;MuÉÞ®O'ý¯%Ìå$ Š)Ìå0-s‡¥(i?©¤„ŽT©ÊCÒº)¦ÌÞ{Pª¦ÂÐYâ¸SÓì‰C„aõdm^âÓ:Ðè®tÂʘôhCG |ƒ]t¥¼ZV†ó*c%½y:囡òæÒf_5Ÿ999‡¦ŸñTŠü¬ÔϽÄÞiÎG f¡:Ù¤9(Ta WQ˜¯ª#Bf˜²ášÿ¹7+ceÏn˜•P'ƒÅº^±lÎÅ‹á˜Âc”£Ë’q¥ßYîê8§«\Nõy\ÓƒâŠß"ä$5Ú j±V=ÅGL5–Ì9“x¾ƒÁ™Lîãèº6 '$2 Öùe”N& GÁ©¸3`Õa#ÁÄ0¾J¶ìNÑÅüîŽ %c>¾î®× ³f™(˜2ËŠ9?UÔÇü¼YÑ.ÿß?À´áð#®ð£¯Ù®LíhÒ]ôz¨ [?*þb LV,?—vð`å9;xP`.÷½Lº .NÜ¥aK•2j \àü+›€hx–•Ó1#½Èkt{¡smøàýìdÙrÁö2óã fbvs‹gÃ8–Žõ§Cý}C´£CñDgJО9ô[E|Sa»êïl8S-@¤ O˜’Ä´ªhÛ/V}‡Cáô6"Ô(+lß/šº´Ä`Y¼ªˆ@˜!˜bįXÆÁÁÉ£¸! {Gê­Œ&î¨î®ñG‹”Ìz9èÉŽÌñ-j•¡^P³JÕëܱj[¥¦Ë¡óš@{Äé'ëc¤'«X~ßÙ-?[!?ìb¶C&:"ÔËúgZü™æé—žÿ¥Ùæ¹pþ½Œu>=(¶qüÝØÆSí2šq³.ÉÔù…K4‘"ß‘lV¦#›ò3&™bªk擌°2É<½'–!=/÷k8õ…ì⧘ûg¿ìÜ?›mîŸ/v#…éÙF²û•ÄŒ÷E3šLöùͼEEyö]¢3oê!€3ÑŒ‰4«0#¿h¶~=£9¥ùóÌ~s6³Y,`úÉe둆{ârÚèuÂ& ó^9ÍeseàW`@Í¥ø=ýÄ{ óᔫLtçâËE rv.  9› Û,tgäBR\íþJ\hå—¦€ÙäÖf±ÜúàGæóÈõ8ÙËŸMÞmæ\ÒK8%çÞÿzçñþçoýX÷?ïiõ—ˆÿ¶¸œÿöÿñA^íÞýÏ£¿(Çú,tàߣN{³®žìýõxã3ì­EˆÊËlká0à–4Md·³Ê”w7aÖØ•„})¡òXŒ/8ä ,|LÙŒiå{€ ~¯V[b®Š^‰;¼ü0‡oæÆ<þ=Sá^?‘ÅooÆÿ®Ù·%¡hJ2Tï|\Áî7©NŠ‚)T@Ü¡hÈáШw8}GÞÞît{C~éÜ­7AoÂñDÜ𲓠ŒcjB½/)Gîˆqo’ޝ¾ê‘51]"ì6TŒ~©È¶æE«:о˜2.÷Øk|0ÔÉ{ú9aü]ô³èÕ­áWvid€5F^›­(ÄÌáµ]zÝKozïí÷ðÅuMíÎQóÔu™gþ’üé€IŽÊðÊ%x ûMw D¦®GÏ5Ô&¯>BàÛ¼êoèípÐÿ ÿàÂ#>àëûk7 uñõ†©¯u<6ž£Û1ÞóÁ«Æ†Ï<àqçÚ¬c­u‡7ñ.“ñÅ(=ÇÀä瀵†;OjÅ«ÁÛ¡Õ:Çzç¬ÄÀÓÁň ƒ|IÈ9ç:Ò¤\Þ~q5ó§Ž(Îtñ:F.f×ò¤Ój“„¨Â×' ‘ût%Ú™[ó¼é´¶/Tïˆ6gì-Ž©zG­õ9õîG9'ù%WOä³x?ðôÛ @Ÿ){{{¿½Y³gvêv]LÈ™uÉ”îzg¬ZàÕØ­«µÈrNFцý íj›·§œ<£ ¨–Àl ^լނòlãB@7T®U0I¾¢nÓïUYW,ÈVqU¤B¯ä$y3¹DÝÆø'≛XÐBMù*Šð+ÊœŠ3<#Nýº¿3R›ßÄ %Р6èñùÝGÿ÷åÓÓÿµ[+ËK+O[K¤ÿ[Y|<ÿ?Èó¨ÿû­KÿwO«¿Xÿ·„ùÜõßZyŒÿø ’Oýßééÿ8Ä[Mì61Ï/ÉÛoXT~Tæ(ºwSu œßK<·Ó;;Þ8¥¬3 ¿ÀqΟœk`¬B?8¡ç_Ój§ Î(gŽ˜È+IïâZ_Îßmj]ÐnË ðÿ=Õ@±;ø÷•Ÿá놭º]ÔDq FóŹøo#˜4•¨ÕdÍ]X-A7Ù“Ñ åÉÔá*¾çõk†¶Û,…ò«t4ž(­BB:µ‚nô2䣴¡À€/‡ƒD5Û*Õl¿÷][¥êÙV”°Ûª¢~ø\L)ý¡ÐËô"Ó­û>ǤÓúÉt€w9SRˆØp2ëƒú†¼±GŠ=.ˆ-ì¢J}O¤7—‘×1¸=ªÉºP —÷¢eľp” üÍ!ó±PšrIÁˆNšÑ3zêÃÁ¨…£ËDåNܸQô’µdÒKû.s°YÄ>EA£ƒZ>lˆNCœ^÷hèp`™°ñ”¬%Ÿ&š»·Àß»ƒáÝg èæÉQû~{ÓÝüÇ›7-Úlqß…ÿPIu¶XCþ]ØV–”¾ ü}ÿ›ïÛÖÂÁ…´ÍzOúém{®€¯»ª8¤²°6”»kiO¶›þ‹¾°”"-t9ž _ý¦FXÕ׬ﶤ®Ïo³å·ÙôÛ¬ÛšáëÛü'L銱„-ëé"åR+|qœ/•*o½%˜ÿ%W-D L˜ó’oN£×”E5ÕzL±0Ú³æl›ü´¶ã*3V¢î %ƒX ù“ ÏAk7æ ¥?Ë¢eTaå²åùÛÅÜ­Š4¡Q £PTÑ ¥_XÊQ´ÔÉífpÇ„€ÿÎÛ®—Ùy4Cc“˜7ƒÅÓÇW¬w¹3aïñ³VzÊ‚ó5µ«›MS0‡HiÕçéÁ£êÓ~ýß׫èÿ·²Ò\Z†ïÏXÿ÷ÿýažGýßoýXú¿{ZýEëyùé³–¿þ[+þòðj÷ôo7T’².üöñU£ d-à)þuªƒyÚÀ€p©Ñü¹µ€¬ýi”öAlNåW?¨Œêpêıg¦€0OSó ÚE˜õ ·=ªñ톊ðJQX{#L/+®z¨5IÿfÊ• 2FŒ¿ÞÜ$˜åÎÎ!nǨ¿B5Â*fB­ïön¯nz“¿´ X*_/ÙP6‡ ÜíŽ/µ‚ð:ÏlÃ|4áØ¿¶‘@âÄßñ==$Î ÌEyk)¹lM G/ö£‚¥NZ …j¬1€Œ‘áþ˜s[Þãæ°ÜšliŽ_cá½ýp[¶CeV°ˆ ëøÔ¾hÛ §®ÛΙ”:5/8k´$'âf8žy1 m·€^.ßÙÙ‘t7†•ˆLnD£¸¸0’)gùè®bÉî*¦kÄ_°ï]ôyð¤äNr='8¸Ëd0œ$„' ‡¢8ÿFÖ싮Ϭ£sôöøp£!¶'è8çýáÅÇc6_V°(’Ë^ò9é‹%± çPkvûé²7aÌŒoÏ•¦¦âÌøŒ‡&\qfd®„r{êŒÇvgNµ èôs@ÚqKm0þ’’‰a=$—/í‚*Q²Ÿ$Ù+Þ3 (§ÐÚkšó¢åv1¨òLâ)ë¦w—ÞÜÞ[˜ÐÆ×ÃÛ>Јƒ!æÉeƒZÕEŒ³q‹ÒÚôã¤Sd‘é8*f$3wWõ_¦1aÈÞ~IFj ö¿šn:ÚãUgÁÕ›¼äB î^ !Yêb…°Í'Æa ™Ü±šŽÛ˜QgÒK¥s5•³ë‡I_÷£I›Z‚V0"àuW€þÁÑŶ½ÆkþS9¢èÊôFT¦;#*ƒ”Ј‚–&«{—¬|ב”C;÷ýîÎù¦o!zm¯¹cp,o ‘´d·°ÊF´Û¬¹æo£Wf²GÁâÓæÛp3N&N†íÔ¥ „mi6YÛhæU'H^û8‡®ÛœQ)–‰@DÞ1<^RÁ5Œb/ãã7‘p›Fž"´Äñà4$U“1@÷™ÞÙ0tGëœã£n÷5ØÁzó%tÿuf–ú,¹°×go©º=ÍØÑ0* Ó¦§óžaõ%Ԫѿsy=•ÙÎ$ Ê—áèãÎAI>7>­uWuöÓï°ðN )°ðð€Xx®<°øRÙ¯nûÄHìïâw R÷cÍ"»ä®G<ìïd4”±Ùþbáåös4Fòia’\ÖÄùíÄZÈÅ’e®ÉKDΣÚÅC2Êl kM\)vê¯9±Çõ.{}{s ³®¿9Ö† |* ŸË¸¶ñÌm$pNìô½Ã½­èXéêj·^NØoŸ‘UtÄüÉ/ÈNºKÿÁ‰u÷ Û<»GÇëXþ4ŽÃöêQQ²îŒfš9|}ŠaÑ£XYk©g­Eÿ´ 8ü3ñ.h9Žz+¶éW,ÎzMËéMÙxëÎ냷€—Íõý}þñ~ w;þ8môöÂþþv—o‹©þuxhBºCM„êC¡ë,Y8œu0õ@R}X¨l!37AÞÑ……yç"ûíßsQñçáý®úé߉Ì_ç8ó¢sÅÅõpHŠöM‘¢5ð¸Î+Îf0˜¬¨¥½^`¾àØöe$V¢, ¯'ùx¢ó)·ŽQêØ'€¾µ½R1J4 {#VékÆ5¹Ksò KF>…Á šeÍ@±0B§{'z»»»*æ ¿ –?¡'Or{or1‚# Ö¡K…]3ž$ŸhtØj9N(é¥N¥ÒÅp„÷(‡ƒKº¬( ìÒ0í„dªÅ?ƒW=¸<ÒQ튺p¿û/÷Gá6¬ˆÝÆÞz£[ﮂ`Óhw×x4Ü;&û5ÅmÙÅ¿t,%É27_‹ctP°[ê ?}uÇ`ê”޳$U*(˜ÞP |âdÖpv—nF’®ÿ:å‹’sîvew28d=ñ¤;4ê£'ì3S‡êJë!›Ât¬Sn§ÔµÝSUô´&„ß?{îp?!o Uk(ܤì9é ˜YG-•Yô„Ñ=õƒ\ÕÊ‘o¿ÚÝá½ CØ0wRCbþcÀãVªúX'êWr"lÄï13Æðꪮ,劗Zbšš|^¼Q’s(lÎÇðubîH{“ºIT{…0^Éí Öóè)[µGÌr‚´.˜¹¯¥kZ,EÆ¿@v˜:£$YsS0ØWÚœ3"x­FPä}‰=æèLhþtQ#¬|œÞÁ'V¹!ì:uvÜW™¡Ò}<ê|cs½A›@U "ÔuxC›JkÄQ%IZ„èu>ÐÕL6?¡I·¹ ~.?‘0,®Â³.#YÓÈÞRo†¨Çƒ±[×Pøü·çBÑÝ|~cQ†f÷¥ [ËëŠY¦g¯ Ãß  ¸ÜÏ *3—;;á9,æ(> Ã`Ø ‘:‹óÏ‚w1_±ºòŠ)`Þb# ¯Ü,Émž²#q‡u">uP"ÊÕܾÉNazµ»D5ù¯Z´YY®fzæ ÕŠâs ªõä§ŸY†ò a9~f9;ÒôX÷/Ú»Ôuxu7eö¤fà¦Û(¥²Mç¬@í [‚Ò,Îf{A žèäQKþî(bÜ·%RegÂRÈ7!%ðMŠOS\‰v› a¥b†4ïE½ÜµDçŒì,ÐôuI—XÔ pÍ>.¿J“¬äg)æ¶ì]rÉÜÝÒ mwPæÖkrצ€ƒ,ÛÜòÄ$=GÑ6Ö¬cªJ¼NIÚ ØíyìuóùhÙÚ‚ŽD÷‰mŸävyé!ÞRžëžñs`]pOPÛ€ÑvwçåàvUwhÓSÃUob#ráœ*8§úpª¢íÔk$H¶D2H±(æ5£D“埨N{é»°a^û—ã,ˆSVÙŸÀ*ÖÍ–`߀™;·ëõɵuž=ÉÖ9Â¥!ëèåñ1s²µqœa`.ÑĶbôÜ'…âÍfí£Jóá†Ybà˜e#{Œ]&bÕ¬{à^õÂg! 7/²—ÐlpÖÐ~C8,15ز¬Ò“®4Møž^›9ËhÀåzXÓç°VÞÆiÍ´Õ=éÊ õ‘q˜}xÖZ8‹§rrvý" 5U!yv[ÀzAh- ±Âdž|*ØDj“îuô8Þ´¹÷“PÔ¡²oìÖ95Àªrã§üžº\W„Ä5Œ ¤ÕªšzuiMuQ"¼K!-⦘̶ºš; ÑÒ^ÙpI»\ T$8®5&ÕË+0-_\ó´Nl7ÌžsÜ·]+€pö”m¬ï„¾I´9_³Yc%d"S™f„]O©¿ôõ‰Z$2¯Y©×\ä¢Þm«õãå*ji£kÊ!h¨E3-°g×Á˜Û~ÔY3[•npöËSøÖì’Ê—|j°)ÚéMDOLÒç¼Ç÷hvˆ™*Ô.`­¹* |2vwÕ™ˆU”$³˜j×ÒÓ.Œ™(ãV¨G#” ôW2BÍÏfƒªïZö£][ÙÕ’Iª[WF Çe˜‘^¨Ä‹¶3Ë*PZýŠð®R½ýLK»ÚyÞ5ãìÏpܪ4ŸoTŠq*§WžÁ«0xE{&JÛ—æóÒü¯o]šÏ— mKrõ»d—} g@Éü/e]š—ê®%¦·ý棃:mm%ñøÖ#}¼.ÚÆØúäXal#ÔŒv"y‹bzCÑî®65…g#*’pê@0Æ!õâí?ËšöŠÌ?{qóÏ^Ìü³7½ùÇå1=Ä9L¾´ÎO)+‘p E$ÔÚdcqf1›IšJæ›î´EìEd-Â;%l/"lïÉ7ÅsI±á¸tÀ^4_d/Ú‹Ù‹p"êqŠqXÈZŒæKYŒäÌ„Ê42óyf c3bVø`æ"™Å÷H,&´óc‘1ó„ÅDļcq2Æ¢yËऀ<¿S‘gÒ Û}æ Qd¾ÛÎ4{Óâ·9ýÿìDó¥ìDÛƒï`'šÛ‰žI;Ñ‹2v"W¡IË/Ê£Àññå ÿeíDPíDð£Î*̪Œy`¿üNv¢fS.CKÃF¹kêY„²c-cj.~³Ih~gµ¾³ãÏóNÓRež1 Miò BÍÅY Bç¹("->Œ0¤ÈSX‹`úê;«ól2Ê›§äÀ¶}d•Ñ{h%‡†áØ(šÍ\Ë†ðøŽ–£æËx°4ˆÝQê ìJë‡YŽêÅ–£z¡åŽãþ5[2ßÑV#G´·—@Öj€)­ä­ïe6Ú•§ÆÀàã¡ ßnØ5¾SèB;þßä|ü#ãÿ-?[Z†-Šÿ·ôÿëažÇø¿õcâÿÝ×ê/ZÿÏš‹ËMý?æÿ} GneNü¿c¼¤ÌW{ÛÝ£šXÛÆ;×Ýׇtãþ¿»)‡£[ÅDÁqyHæ½í`åX¸Àß/yH  ‹c‰øRa×Ô<¥\6F ]ŽÇÎ… \­ÈÎPÀÀiSéÁÄö?SÞ}޲¿Ž'É94¶þHTãê9ÌpŠö‹áˆ^nY/¹*E¶ÇÜ¥$Gx’Ï”T¦ù Ns5©6kË@snÀ5„`uêéB&åb‹ê寲1ôŽˆé!!êÊÉÙ$¤wÏXÒºì(‹”há``ý„rìöÈûCóÿõÁpàsq Á1bÈQÄØTzó Ð*Ýiw  Å”XÀØþÉÕ‘R‡œ”òõ×Û9ô™¡`d© à 4«‰XÃëµ(¼ž^à˜é788Ž×gÀ«0W#ÔÉð,¢Ò®|¨}@ýÇ"y3‡7‰ø0'cöžÐ‰ƾH˜ë!´¸ÏµŠÌ¸ÈRP3U½#@V0ÃûŽØg‡Ý‹Fïs‚-}{$>b"Ót˜æZ“YreŠD˜ß³.¶z„+Õ^‚ôµbÅç¼zÇV=g±B½ãX¥ŽSiË©Ô>ܾ'í‚U Ciº`bœ3³6H'9sEé¢1Î-œR¿bÖ?C‰/›¸H¸ x~ßbÛ\Ú A'm5J5”‘ýBÃãº2µ# 7¼TE ÊϾ£žóD¹-²›™±‰R*ö£,ý=âH‚eñ–jjŒØt|—Ç2¡´]ÝÚ¬N@»V/Ú^4ËÜ€‹«µlúñxØOk ÂÝÅ`Ôë¦4“®Í7Ù†jGãh¯\CŸ'Ô†#3j{…­H~«˜"ýjˆá2ÇN€Q/h. /ç›ói]²÷v%Å_Çs(²õ—s¼Jÿxõ!/žÒPˆd-@¨úM:¨ j有Z¸Z‚,Š¢®6$(˜kDm0Ñ|‰0›y!6Géûë ,r\. åŠó¨pëxæç4?çèƒz[T©íýœð±|ëˆW.cBv°S˜Zlóê,Ì‹µ ŸÖ"×Å%Æx#¥æG"œ˜Ü]wRÌ£¨pXö¾Ñð.½Á% 9¨XÄÄÕ c=[‘öF"Ù>±çšá°ÐªC+“7+‰à:qX92^Eާ¬JÔZµ6 ÊÊG}bÁ¸~M·)nଌ¼ûý(éMH¬N*©ÓAìPª¦)BÖ×:vJ†…¶`?Áʰ¹×‚ÃÊmM5Ñ$ØÙ@™©]©—(Ï{”®×?^yM¼+•;afãMmæÝÿ4_þ…&ÌsúM Mˆoˆ6šðÂZÞáò‚Zô½UpóŠüχy\ÿ^çUÑæ7µ¦Éd }HÖ0P]Âó¨ÓyúGÁÞ®±"HjÑ Äj'6ðÊ" ¥nr3ó‘{I”ÏêúÀ û 6îWù$‡«o“ÿ€ÍþÿÝUR8Ñ¥¯š5ÄÒàÿ“³xŒG‘’ÕéSãc6 x¢ÌŠ‘Þap‘hb¤ÞR¯»°—]ÞÂÆf÷>U}Ok©ì·ÈIÿA²û‚¯p‰‰àä´ÆEÚ 7.>Hy$Åü¦a$Å’:Š©t8üpèõ\ÅÞ"½Ú Fk?´b¥Q mÅàš Š!Í2µ¨ñO~Ÿã!ó˜çK}ç ’tnQYRºÅ¬8‡°În‚2U/²HàH08q•ôè ¢:A·ÒßèÓwÇ'½ %´2OjÌÛ¥^g2D0Y…ÙeLªQÊOcU_ê_j󻵓ýÞî#"5`ìÈŠL6TáØöÚû­œ¬½>TᓚŽÖ¶ßÈÒEñ®U'j^c5 4Že·µ”•›Ý>£°ÙG2R6rêÎj¦S¾=[?¡&ÐÜ·ÐîFÏÈOm'N;ÐÔL´ù®X«¸üxÚ@¡™Úü.U[¾¶´r,ï@(‘YÀæÁé/¹›ÿ$þ‚12Ñ´efH¦„´ ?éÚEW™"lF抃£€Ëg Ô}|ÒÜÜMØÝ€æÜ'ö¯£nçö¬PßGJ‘ÉÎMä ² ÕhަõÙŸ ¯x'¯ ­HIÙ.Hlä\ ‚””½þÉÛrƒÐå»yM.ûMv#9Îeù¿üîZ~…§~T_c² Äj=Wµüü×t-<˜Òœ¼1™U`êÈÂÿ¤&êÒD— gSgòýë6½ø¨ÙAT2J!« Ý̵tÏ“ÒD?¸é]\ãÏËäÝȄ̊à‹sÀW‡}s´Ò ñÆ ¨à Ft²œ¨˜~Ì,JÞÓ¡ßájš#F˜ÃWôN/+ÌeÚá_Lƒx„Eer¹Ö”ž³søÉщ a¢‹-hÒ»PšNVIÀÙ¼{™ÑIøW%˜·o YvqÇÄú«ŒL@/#­e®Í ´¥œöÑ'f'}Lú°ìÐfÀÛEÊi躂ä_ç?í€GÍPjxI«Ù[_AEa`,­òcéÖw²c!we(ˆáP‚Þ×¥†Ür‡j?™K*€nˆ YOó‡Vâl&â­ø#Öø¦éó¯,+5„Jûg]åWª~ ÈQ{ð:YhY»ž¼&$ïÇk?5ƒŒcy=ŸÇ̬utLwñ× »JG&¸Ï¯¬ì>.bÕwªŒwÌxWíÆ„âò¢¢:d{ìáR-áž91;*"߈:”$±tfðäèÖ¤‚ Õ/¯g™ð%k˜9"@îgV€3^$¶3&0)ÉA]‚ðÀ­Óí,kä3²÷£á8Vµ(3äy>«²i›zâ•·féÄ'^y·wð4h FüÐo¬yá³üå¦ÛjÛê†Ú 7•½já—ˆ ·pºÖ˜6žNC«]ÇÓ*€/%°8ïd=g<³žžCÙT“|`‰$Ô¡|˜sLŶå¡ÀЮ\‘Lt–²Ë*eóXÉçñËLôZ= 0WÙË“K™\“Ä*-ìx{ ôFä÷Yb{Éí©s®±‚ yP/@§¤ “NMöcº$fTc.Üø†·iTOâ·ƒ¥ R*0èŠô÷ @6§í‘ç…~eÞL«Ò–LA¸ ”¯Fáúlj ÕÖl›Žäl‚1ÄÌ›]´Ž6mU=¦ƒ²ÐtMÓø£J] ½ÆíJ0ŒK i›1¤QKq¤Åx‰°…‚lŒÉD±(6 [Qþ¿Óó C‰qîá!Ù-ýiù„×…\b ŸK{ê.=¦ËÒÞJ™ñ©…2L‘mßøgœf‘¾y./ |»ØqϲÀ‹_BØÿ²À³Ÿw¿ˆ¯q´6É…^“µÌ‚-ù³©‘˜·Œ¾@<“ „¿¬€ùcÅ“Øà‹ålílÏé$¦A˜ üÐûóY`|?@ˆ*–«Èßýyôƒ\þ¢›óó_ráútZåEüm+•~ ]â÷çevê¡ÞÆÀAI:`eÈ®•èÂ< ¹ü°ã‡DxÖÏG)? ;iû™ºÔžŽ)€úŽðÅÈì…H[ãQ>ö¾'ûÞ´ú^ÓîÔÓá&¹LÑûx”Œoû“qF*9“©Åš'—"X™v¦o‚aTKËýÝ ,Nã•æ‘:fžÜ€˜>ý*}sE¸ýZ°556R>KÞ=˪"¥’ˆ!æI²þ¨׃,¹‰e‘ð¯6ÑÍ)˜‚âbwÒÕÆvó4Ó~‡Ô;HÐñ·7úà gÖÆ¦ôc!îá X"ó·Q^yÁÍ& !XEØRäú_ +P–¿å©ì+™f³áÕtÙÍ=ÒþÎN.±ûðü§Ü^÷J øÞqL@öKë­¿ªì<¹½á‡—í*½› ç,ËF[hîêhÐÙN^Iá‘ÏI`Ùù’K›~V¡R^a{)æNtÁ·3e`_ µjqšåÖ°Œ¢’„â´õ³(þpˆèWe¨hzº°ˆ¢Ò\À‘¥ÌÍU­Æ%°( {Ÿ‡©Ù•\ê)ˆÖWÉ™òŽ©Pd:ŸKxU×Òy9«§ÄJ u ¥™ð ò  Geú©ÿ•8-Ho’±v±.µºðß…!I?y¤+f[å—_©µ÷#WlºÍï—^é®Ò|9.¦rïlf®q™‡Œ_)ã mùŠÜà ŽCÆeÛŽXfm$mÛPM?±è‰cÙØý;y_A„Îm²~(‹€~4Àþès6¾«ä=¶c&½Kb%=†\„‰‰“%>èR^ÿ ‡ÌÝf ÷½,ãQÂi4‡‹¤€9›q¥U5œ7JGšc.35(ÃÂ+[ojg;Õ\läFqµÑÐ Ý»GåŽ(„ª¯M€ÎY'ÅhP¡]žÖ(ô²:‘cŸbEá”~Î‹Š¢”mC)UfJsÕBœjŠ©7ç·9twkšCþw!'ýÒ·Œ~{¾éŽ›ˆJŽgiªñLÅÜB LZ÷ÊÈäæ*õKI<*c8á[³¡Xô|é±EO_ ×>å@Á¹¬3òÙt¨d9W‘ÓKxì^8Ë<˜o%âçQÞØ#´½g9cïß_4*eøSÚ~Ä´æñ  al·$ k¥S®ZLc 3ۃĔ&!QÞ*$ 5èŸgÒ`Ï`÷³˜~Ä÷± €JY4¦±àˆ_Çt(¾r&à[ ²Qäš(Tô’¸™B°d°\ÂR!ÆŠå̾/Šì¢ŒÉB”±Kˆ"Ó„°u:Ë+·hJªØÔù…³«j¹B:l¡ÎKcU%r¤X«‡ì’ùsžÕ´€c2F˜ÆÃ—¦šÞ¥©fÖ‘ÚS†Å´][9Ú®Ú®ÿm¨x2â£ÚËÕ^¿›Ú«ós©½:ÿ­j¯Î£Ú+_íõtVÅÅÚ]íW½—­(òô_OˆþëÙw@ƒRƒM«T#ö¨) âç¿ESö`˜EeöüQeö¨2{T™=ªÌ‚Ï£ÊÌD÷-T™=ŸQeöü×Q™=T™…‘W¤2{Q2^•ð( ÇÞîK‡³j.°œ‡§ pç†d̽ŠïŃ⭫0*ÿM3|¼zd¢)|·4ÃÏOú8ùŸ/¯~`þçæ³æÓg­Vs‘ò?7ó¿>Èó˜ÿù·~¬üÏ÷´ú‹Ö?¬ø•ý·×ÿƒØ~“££ÝÏÙžÃá𠽄؜¬Í Ï„ö@ÀñhöæP‹(CSVæõ«,¯³- ¿«p7§Ëã¼¶¡j*Å(ƪ?×ç5/HÇZzUOÆÊ·‡ `RUj®+NÏ7ï”UZ…9§Üb2ÍñíŵItŒò5‚¡ÔVH?2™þ¢¢G7Äö„¿o1±UÞ;— ÇS(z äÉ®jRë|ÍõãN«¡35"Ö ƒW3&MRkèW£áHz£~špö1ŒÀz{^—y­ùâ*”“Ñ® ÊɈiX8†Lú7§Á¢¾©ƦKÔ]DÄ•DÄ;€røÛƒÿNà¿¿¨Á¿( ȧdts;aÀ”Pñ"7 ŠŠfŒ€¬¼8”B›Â÷ètx:¤ =‰…t®æ§YÆ¥d–“”“м­—bƒò™jÀÀJܘ~Æ„®ý~]¶ÍÜí"äÝbºHDœøj"á80£`«ì´äq5ùõß!5Î×8‰^16È™¾ˆ÷ég [… ¦p)2¯—ý´(¬vån®h9ÇÔN+òj:Ìar÷ SG~&Ê]K®z·}7«/a¢1jdp¦“þpøQô®áÄ-0ËÎ$yÿ•'Ûo­H·˜KXFÉ5®0çjeÑÒÂn¤”2Óe°Po6„Õ5ü\2s¯É¶ËÇbÝ ™Íó÷ÎÉ­ÉÌ4'…*,n;_cf%çÀœ‚NÕ™ÀÊXXÿ‰eß•Á@AbÙwœW“ñ¥PžÄ 2ÓÀBaÚÑF-FçµÕ˜9elD%ùS å–u 8Ieåp4Z&6 E½‹‹áˆ#Èóæ – SxCR÷ÎaëÕÀ-1Œ€8 ë&wƃ½žTwðnô#¬jïP‚²/ɺL>HÇ›Go÷cõò.{™rycça'˜ºÉì0\ºc ã›7Ô áÓp@HóÆwY/5S²¡f™àݼÁÄÚŒ\>ã&neìë˜Y°ùRøoS¾ûúxý¥,6ô¿L0EÜ`,“ߺZ&=¨A¡™aJ1Tz†=+s¦ŸÉe êX„˜¹ÙÔÂbcÔ˜4,9H´Áa»È³›(D–+?‚ƒJ”ý„Ȱ£bNLêSú™R<\¢<ðO’Çšh²IñØ3GˆR¹ÒŒSÓ5E5»¸A@Q&Ö$±4U«zç>:úAvÔ81u_ee?¨îÆséº"Íjiq8🞱աØí½‡Ý#Š˜‹D áï^¯àqߢtLA¶ƒ„~t‘bÎOåÊtr“ôè4ƒ§©  ë¨þb±)ž?£/ðç—ä2hY(GÀèˆu%s‰‘醟0}üÍ'èôéäÄ]=z½÷fIþšÿ’‚òÄ>ôž'ƒƒÙ©Í×ÙpU G¬šEÀ¦j;E~;°µ6“A2’¢ÙÑÅõíHìSšÌ1ÏQ¹!uu9õp4ö·#yªÀ.9о‚7F¬¯Epº]__Ç£Þ`Ü»ð:´Ñ¾ Q̼Àv1aLM¼öbiöéaC<ƒƒÖ-¬Üæ‹ç/jâÓ'ñly¥þl¥©GÞ‘»Smµ iýê*Å)æ,Õ‡ÃsL‰ír„ôÑSçùœ'“/Hʘ4ò0a‘}ŸÉü R3£¬ýéS?½S»~™8iéÓD¨“ýíîFýÅJcqÅ#O‚O¨%IÔFCó´ò‡Kk89ï·ÏÖ¶UÜÁ`"C.'}¦Ž¦G4vÀ29í$ˆyçõNت¨|вÝ+ñaI™ÉØÝxM9wsÇëû:ÄãPÏ ü8Ø;9Šió"A¥ƒ}Žë¢]%EH~FºÃÓׇ»zªrPÉå–«ª$¦T4õ௠J¶C3ç켦ò$ ?:-Ê5xtôÿ<=ÈËMHöÇœþ”KÜÇ ‚r Ý6ãƒQ¹X¶73¥,Än¹üux_QÒ=©ÍD3j+à1‚,ð«­ü³¼¢#l²a`i"*è?@*Q:vâÑ ÃÚB”¬®VGJ öêt¥“5òE<8ɳ5´FÇk»³U†¦qîE"¥b쇇í‡ÝätýW0ÉÎGí‹EÕ µ_ g?'ë²b6ÆV¼$yöä(Â8Ø$:öA°B‰ZÞ™3ÔÎjMÒã¡Þ‹›¹î}BÍ—L€‚« NÒ»šjªÁ"-[ Hr_z î}’qPy?^ uœ'E€RxŠ~ú1«_Q(ø’ôûõƒá<ö¤‡ð@¦s 8‘ÀáãrˆÒ´¢ßF Ž“…wk}Ò*÷‹ª¥ŸY›ž{ ?v,«QrÓK89¬Ðóº[)²Õ磊hž·îÊGM?'G€ž0»¨‰¾ÃEZWr3‘‰Qh[¡–É,í÷Å5U®nûÀ<Þ£žôçd_$ ­¯9O.z·c NoðU@åú…rWRYG”÷)n˜òPˆáÚñp•ŒX¡pbù”gx±×'L=G4èh¢Ùæ1Nßßôþ}í¸>OŒs*¼ÐÎ?Qñ\Y<é ê8¼þ`•ñ™¼âN®C™â}î[N߆ns]ê——ZDT‡]€TP,ôèŠûÍ.uú÷*Iuv1êî¶éy°'OÜ…2Û˜7%àÉl PÀ¿ï LãÀýÜ• dý]ôk@NÆC‘ݾ(»°é_x⟲°î‰Ê‹l*´8; CqšÎá¹ò H¸4!iG Iál‚€47ð´CÂSÝkÝæk®š3ýè/ö²• ȱ ÚøÍK8»rè[mdÒ¯u&E½°ÙÀ$íKgûdQÒ½â.‘8_O¶Ÿ8Öt¾HȬ•‘È?œÄ¸Y‚_$ÓÅs‰;Wªƒ¶Øê£ëDVë’»˜Qê62lS7íõÔ䦤9ˆÞ` ƒl¹ùPvòu3—¹Eë\VBÕdìNœ¨*ŸF;sUÃŽÄkÑÚ“iV»º×´Í[ÕA{Yú:¯È bºÕ÷]3£¾ ÿ•ãÿùiüÓø.7ý¿äyôÿü­ËÿóžVÑúúleq9ãÿ¹Üz\ÿñðj÷ü?ŽÂi®^ÂI‚ÄØöÝac}~ŽNšo¡H™ö·÷ílµÛÇ2ãbV¢qŸcr!{KŽ×(ÍÊ4Þ¢2ÎM®hû@ºˆžU¦ô=)ÏÆõeRïb¹Jo#U•‡k\=¯ ;7¿ð2¸âK®J&NåpQÎ:m©²aoEòw”ê 1;ç¤"A3rÓb‹a×.“ÁPú½2ˆÞ`Œ¨ D5î©U>ܾÇÓ¤_ôŽhï¡ ÍêÒÁRð‘Sº‹*¥§ãþ‚¡,n1שIîFά&¿”÷ìÐøÎZ©áÈ}–”lç‰ †ôdÊŸfr gtymèH,·º´y‰Ëó¼O~_5eZgæ “ÊOñƒÊãáÒPÐåL´ |ES ÍPÅ\6%­âxx“Œ0¡È?T6!e_%¥ô$˜lÀ}N)<1XI9Ø–p^Å¥‹«Xô’¯:‘£OÉEz…Žo@€lÿ±Æeg)º´Î+ñääÉKhÖs³õÊìa™=ô!Ǥ):LS­±Z·”Õ¢m¿g]lÕM¤K“¾VºCCìs^½c«ž³Ô¡Þq¬RÇ©´åTêd˜ÜýÎ4]01¤÷õg-“Í4‹‘n6»qpJý"äYKÅ ý%~nü›pðü.¾Å¶¹´ãÒéÜ\JŸ»Ðð¸®ÔÞS;²pÃó`dPÈ|« >ç–R‘˜œf»ÔÀtžÆÃÑ%;ÛóÕÀêÊ ã¸¬\XjÇ øžU+ÝùæÜBkÎo(ºju«5µm0B1êëwœ£Aj¸Á€?Ôî ÄË4J´Ë° ÆÓC¡>ôeüÒqR¼b>E¤†Â\%Åh9”ÝøŒ >´+)rRò¡ûãUúÇ«ÿŒ@Øó!TZƒú‡¹ ˜Fù})AÂsîÌÁyŽc÷(}7Í‘L(ä[T¤»|RöWܾŒÒÉ$!o^ÇYjxÕ= Ö÷Açc>©ÇV02éj¼µ2òÈjaÇ÷5U7Ókþ¤·J€rÞ»é€÷éLrÁ–£–ÂQr#Áжþ;’Y­ªø€ša¬Wè¤îZ4a$’Ý[ªÎB>´'wbâ*7 ïì¬Y2m仺ªëk+ö­k¡Ù€(G™ëÉÛU]Âà7èšwnn{8ÉtIJÁ$\¥Àà¿ÒåãR×Å*æV +·5ÕD“`7rÚõÊTŒU–‡ÆV+Z§ÆªtQÆ3¢½¦¬œƒˆŒo/0¤ÓÕmŸ–¯]à*ˆ$h¯Dý#/ؼÖuï’HdÊ÷ÐOºiPäÏëžaÚ(¢¾¿ÖI¥y¨ý꟣G×ˬÔÊZà%¹V ¯,ÚÖø¦Ç óî}ÁèPª@ïá/×éàð:¹øÈ¼D]d³…i$°÷XþNFCÝÙNÙZhSû½ðiŒ¥gv•åe}.7¢ó:o9~À©Ü2{^:¶ˆïîš/ÿÂh"çô›þ@›;2aîváùcxEþ3h1pý{]ç×â7µ¦É™ÉÉ4hI¬ €ØÃäƒH'ú¢æxW;ë¾ r«IF©›ÜÌ|ä^åHñ¤Vb™œÅ9ì¦ Ã}•æd@(Ô½=p®{ŸÓ7WÐ ~“±øÎ:V£×ÿ1´KÍ«jU,n!ç›ÿÒÔª“œ„óXÑoG逸ÐmâÉee·”NÆÊ›ýˆè°L§K@ðDùw+ND‡óÁE¢‰‘zK½ìª@5vïSÕ÷´–Ê~‹Ì#å":œ+z‚ç?HvÿAðn 1ÑœœÖ¸±H[áÆÅ)¤0:«a$Å’À­ôÕÊ;]ë»Öu\EÞxgv<‘ð>éÕ5Zëøi¤õx=.E1ƒk.(†4gÈÔ¢~Ä?n9ýñP_Ó¹DGììgñ6ù$…[3ßĬnÈé]Ìp”qZåE ¼@y…Ò3ŒAu‚6n¥¶0×ø¨;>éõäMaÆ“Þ`RcÞ.Õ|/,«F:‡Ve8$9Jùi¬êK½ƒŒyÅpšRÃá†*om¯ŒNâ ›Qòhz“B¯‘ƒôðRM=ÄÒÑÉ:SOò>§‰žaó2–®›×åð%yEo#‡Ä—ÿz‚Â,ÿõ/àòš_ŸâýZL"Û$ÃÛ1ȯêê/^s`6®kùLNUÃ)4œê†Sj¸f¯é0S'&¬K)ÊN™…³(ÁÎ’sÔî~nñp`á5é,I,äòR)ñÖn äEýÿ“˜+ºÕbÙ}ùjŸ_1Æÿ|Eñ«å^0 ¬4k’ö%.מškã¹í?¾(U\Äj†‘y¬¬3sPh\FŸw•à¬R$fÅ š û•# ¹°I¿âõ™ÔÚåÅÝ3¢¹D½üÁÉpù>éÒñ—¹‚éϕ̵û ´LêöHÖ$¹è±÷zs»ã¡û'5µÆ¡ŽsŒ5±MaÖ¶ènˆÎ°Ý혬&˜oca±&6_ŸÊ°‰%’"ÀÁ?¿(}íÙ*†r=Ã\£P>nÌ Xr[®¦âµ¿[ FÝÈ»QÀeÍÁåCDµM£3{íýÎVÎ@ÐU‹/`œÔdì` âã“fåîí¡4×à>5Úݵ¿p;·g%Ö8Rjå-­¯h9ˆ,H'1±õÙŸ ¯x'¯ ­HIÙ.Hlä\ ‚””IûÉÛrƒÐå»yM.ûMv1¨ôb´¼Ššíï¤ aP/„e«’ï$s– à”¬ÕOj¢î8æŠ|â¿nÓ‹*†0FUcu¡‹Á¿üÜž#æš>Ýô.®ñçeò Daä†TQ°¿à ÈæÀ£’!½_IN#: KT£oÌj‘áŒUl®¦YÆ%Ö[Ñ[°Šœi‡Y0 àÁU¼åZSÚk¾xfЕG'wq£›LzJÿÈŠ81÷o/3šÛ¥<“ÐÁ•…-+­ÞÈ*ÒŠiÎ+÷æžóI+¿‡–%áôÓFo NâAíÀ?ó‚âáfÓ ë’Û]Aå]¹‘´rî ÆFC—Šx4ÑÔïf<s9ìü˲µ®µYÚ^ÿ¥£órlÞT™ ïpɨWÚIÇ+äè˜ÄZÖNÂ!ˆYÄb÷v?Hï±LwÏ¡ ¶W9~nì­76å€Ê°¯c™zÈ\õq¨ïTyA¨]=¶™àÂ…a…úŠ„9‚†¯‡HÛ*%’ÄRBÁ“£¬’Ôg¼fãbóm¥ì nyA ±®G_xˆ¯ì'ª ý;Ÿ½ ¿À9¨EÙõÎó¹ŒMÑ|jÂ[Wîk<>e–#­la#3õ6Àf`7°™YF^÷sƒTø̊*µÅÓÅ"øy AÚìiñ¨ðÌ^zJd_Pð5 rnQÇðÁKFgiæ ñáÊÆÄF‡P•^Ã)-›ÇJY~ËÓU­È_]¢íÍ¥ÒqQ+`yŠD}ëwéD4Ó”+í×x r«õðˆ×Žó„c@öäŽÓ98è)ÏPùŠå.ø,üt&ÁNP"Šõ©L¤jO*×ì„ápô¯ë¯’©3ïÛL)³žÅcŠüæ4¦»Ð½N±'Û•@/Õ»ÊGÏÊ}>þñç‡ÙÎî'Òs)x¸¶w;Ë¿Ç:c[ÈËÙøvŠ·½í+FDFYíí…ØƒÈ6X¸–ÑSˆ’ª å1¢Pa‘' —S9GëPêh³F˜Íy‹E'G$?ü)šÅ‡1£ôF„[6ŒÀ£hL øò"HÞèâ dê;eô!÷"ïˆ2'žˆP-è’LDr&±Cé¶è›Ìs'ÐIÍí I.åíó¶Škr9œèËfé÷•,¾.†wP(Ê_õk‡)¥„´d œÚpr$2azp7ô2-ee‹·¿¸ œƒ×&òÀ-£©cü> b–|'4âÆÓÒgÈËpôs^T Â1&<¯Ô¹*oí¸·¦9gN3%Øë%sò q…½öûLƒÀ^/MÕë©VkhEJûRÞštv{º¯{Ç>Éèæùjf( =_zlSÒ·µŸ5PS.1i À™NOƒM‡J–S®9|„ÇîÅœ°LUù†~î}oåí B›–3&ñýwùR¶1¥yALkaß`dÆ‚HâœÖk¨CÅ4ö1³ÉALiuå ¢PI[ðy&%é ¦1‹uA|ÃS‘¡”Ò|#øu¬SâH g¾U.,5x®\Ljk‹Ë%”á" _Îìø¢H%.ÊhÅEÕ·(Ò~ [­±¼â|ˆu2:u¾(áì§Z¢N+ @(ÑCWöú£¤wù•CXr˜«KæÏy†¹jŒIa_!júWˆìg&‡³fÖŸØÓ(ÅTF[÷¦2zñ¨2ú¯QQxƒŠ–NuGþó¨;úÝtGÐuLwÔùoÔ=Ywäð;V!Y ™è©Y=FËôô>µLÏfÖ29ã›atZõìQÄÏ‹>ê6~1‹bêù£bêQ1õ¨˜zTLŸGÅ” ÑZ¨˜z>£bêù¯£˜zþ¨˜ #ïþS/ÊÜzãÇYâ€^[`(„©¹À2"'8¢šœ/÷¢¸ň7¿ÂXFüg<-îI¯ü«§Åuò¿Ž.`þו•æÒ2|Æù_—ó?>Èó˜ÿõ·~¬ü¯÷´ú‹ÖkyeeÉ_ÿù_葵›ÿõpMÝóƀ߫5Ì®±·ÿ`¨«öIMœâß§S¦t]j4¬ýi”öEk±Ù3=È æE™²³DÖpÖoÊb)A¬–1¸¥”Õ#3Ó@½ç‰¤ éÖéX‰,È5ò25fQÚÈ, ¢,8N§ƒ÷6 f4dSÐèEæ&û£rvýð|[y9dPD60ÁÄÉ* tˆ¶Šœ2J®’f™ºtG´Ç#²ÁÈÁ©EÉÑQ™îŒ¨ RB#ò'ô.ä%µ9™"/ÌFÆúŽ`+Æ^ãôÝv|n+hÌÖ鉈‡qý“¾éW½s€áw鯉ÊYî%ŸFÉ£?3£ç=G"ü/L·êÝìUJ" AÎ L®úœÀ;/©ªÃ˜Z4ž'œ|v4~<:z”$~&GÉÏ€=Q‰.©¨alriñg!¤?9²\8ž„¿.TŠRR *Ó¨Ç×+ƒúàüåoÐ:,¶×d³=C¡Õ7Tq¡˜fÓyÄ·ŽJìóLóç!špJˆhƒ­+¡}â¢,'°‡5•e˜‡Ó-i¤f&;P@¼5èö8åePƇƒ¦’TwêSEÞþyZë®fFÉ;ŹZ!§0ªߦ#–GùÒo@ô´¡XR(žÜ¾}œ6Pv Äs¨º²\`×× v Í#0ÿ7ƒ,™Ög¯¿êæ ƒpVô¿-šçù¦^­˜b s–¡Ÿ(ø¥B_^‰mQ“Þ-œ>ãp„ø‡•Ä¿ÐV`˜ ™r>»ŸdÌ{äˆàs%•v".\I±«¯DóŸð;¥¤›³²|yÛ¥@°™¾nŽü™h—Çn0b½ìycï~PÜD·,Ÿÿ4È9È7ÈMùæ{¹ô5†\;Ÿ¥Ït¹ cèÙdøžÏÚ—Ì[ÁoxxBi‹Î–r£†óõ4‡L”•þЋX7ÀùXo}TüB–GÈ/YÖù þ©‹7ÕS<'×Åiõ üb 7-h¤¡â&í÷o1má„t Ïc'’»Î±â&b…P y%Z/¹ ‡÷¾áÇaÀ/=U`¦„ùïó2ü·"æÜªPè2 pNCe  bȃâBPP°`Âç&ìåA²(†ð¹e:… ¡Cè 77兩Là €¹,3b`x;ÇÔ£²¯¿øp”¾OŒ\*AöíàâÎ 2½øœæƒ‘뜓¢qm™5ù ©Ú2Ní¨ÃªÊ‚yY+:¯ã¢Ì͘-ƒs=VT¶Ç2Ud¶ÈŠÎ©êL“2’Õñ4ŽˆöÞÁV(ßÌÙÿ6×÷ßÔP=D?öÚMþy¸‰úÈšœÓÚôécéã=•ù¹T¶/Ó&"ÌË4˜“DOnÉ岎í­G²Ž™BÙ¼{G¤CZÿ¡£†«´}8ùz§tÙÇ*Σ§JÝu?Ø>•Âz&tWÝo˜¾-?2Î oq$(ÁNžõ¾hWˆ–Éû‚“š7? vp"êC§êmR„ÓR`Oj6…+!WÄ“î·qÔ‘ƒ u Lx´ Ø&Xñ%-M™–%ã‘@"ŽÝß0»’Ä‘ªÓþ–QŸr‡OK û4ÛòŒ£.@y¸á0eæ†ÕÚL ŠIÁ#*KÅ(ý éuÚÄrbÙ¿&jd¿xåzQg¼ÄP T¢J.&¥É>S³¨/¯$¿`P¶.T?oÊûêTd×E¨§[LI¤YGBÀ<ó’ œ~ç‘oÒŠêbiç2¬% È!ñÎpðáö=¿mJÇnÁa_óz³4µ[“A=/T32¿ãþÚÔ=®—è²Í± [²ÚŸjà%{üPí÷ÏŽéqܪÅү—|ç¨×†+.$ÅŠê(‰VMŪ¼šDðÑ!”áñ’.ÎÏòzk{ý5ƒÁú='R)÷„´œ®AÔ|Là´ß;k>}ÖjFþÿKþ¿ò<úÿÿÖíÿ?«¿hý?}úl¹é¯ÿÖòÓÇõÿ¯vßÿÿ(œçíõ!Ù'ºFýv¦2˜ÅeyÍn»»ñzÊ ­Ÿûº<Ýáç„j[@Ç3{þ»Ø•(Ï¿€Ø”SÐÕrHÆÍŸ¦æ¯ ȨWå¯ œU¦½ SŽÅp Ý,ÇÔñ×ñ$¹1ž'*?ݸz^v|~á%FÆ—Ò²®*d†ú%ŸÉ°,Ãq5Èã;aØÞÀóçëºSÊèMÍ+[¹v×À±’“D»b@8Ù“‡,}G„vN>ƒº2}Vlø‘êŒ ;¿¡ËÇ-æ'6D¹÷âZ蜈º7:-"tâðÔï£+¸Cæ{•Çfr=JÆ×þôs–@nt‰ý×â9t›¡ ñE#™˜g™Ì•rå91¼ÁññÝ€†Šñäøß§r *ææ=]oñÝv&õ‹Š'ÊK¸ëQVg€õ9¤²±[Pü}ÝG°½›à¸*ǘ "7 ˆ¹LÓašúO¨?BDõøv!ÌïY[u3HÂÚ£¯ûð:çÕ;¶ê9kêÇ*uœJ[N¥À¹^î;Èhgš.˜ÊŽêÏZ&yo#Ýlñà”úE°o 3ô—˜69Þ‘«8®‚ßÅ·ØöÿÏÞ»vµ‘#ßw~EŸó¼çÄ€!Ø2“Ùì9†@†œ,†6{öcZ 8ñ-n‚žÝÿþ¨ªTj©[}1·$÷î„¶-•n%©îE¥K_Ç ¬]8|ãºÚcÛх׌§my§BZìÏYÄa/rl©K °“‹.}+?¨þ=c9íÚ2ŸO˱{AUre F@8–ǹ®,–©yu§c†åucñ4cÃ©êÆ’MeŸïhÒ³á䎦Àÿ‡†`CIkmüìòÇOo nLwrè6Q—t/ŽÕí ´÷Tãý ÛȚɯʎYENYÓþÅ%Ä1}‡Á3s‰0Ÿ#P²G³'É,±¨¹_µÍ›üS8”—„ϰ?!nÔ]Îá3J's“‡Î ’pÔ’õz>í¡ œõ„BG¢z2á},KÅ/šœŒ¾ôB<†Õ%:éá†ÊIÀ¸Ì+¯0Ô+ó)Yr5j$úþÀs¾žÕª3´§IÄfN!jÃp¶+œàƘóü|Õl{£XUD6Ý÷ìQ x}Ô“ììCņú˜FjZ¦.õêL,™?÷G`þ9»Y¡‡ºiX°Ÿ@eE%Ô½Ã*l›h 쵂Ií¤&•¨|Vm§cjÅšÖ¹gU›ú{mï)Ï‘C!ªâ«Bž_ pûÚþŽÔD"´ÁêGÚ¡y3¬Ëž@Rú…ê'fD/sýp¹¾6Ðü—&)=í&~¥¸Kdlñ2†ƒ@. Æ™Q¨ã$iLäPHQHLƒ€dl^FáG:KëÈ anÀ²Ã7¹¾Œ¦ã@uC1+Ó›„ 6-4ªŽKu˜Æˆ|†Œ¶õÙkg=0í .Æê¬¼j³w<\2÷t?¶ïË¿ÏGÿý3|3?@[È®`mm­î’?ÂUªÈ¿1ñ7ïIZÀë´€I“vHPƒvDëˆt"ÑŽ.?Ù;‡=ö!èÏô&^jãñ„ýHu pƒj”¦ÉW™©—ˆù#poP|o]!ËLÁYOÜ>^Ñu{þß/µþR=è¿hÔa–FÿKÜF8…¦w\Gèi™ô ¼Gþþ‚:ò4ø/%K¬ã×ÿM:i—ZájËP\utèê‹ÿ˜ ¼ët…ZÐP•ôÓí¸&úVA…<…G™sZjʳ̪Á’èyu5Á3XÄÊEÑc{‹½V³Ë>CvïûÜw0¾¥~™§ñ÷ý¿¿ø@VþÂÿ/ Ý|Piœ‚Ö¨±œ¶ü4=ÒW£³T¬ €à"O\Á² #™ªSGuLéæô"ŠgÞD½ú¨Ž{~¢Õ‚ºàB§P›¸ÆS>lw£ûaþáʺ”£Ù ðSBÇ(Ѱ¢˜£‰Žƒ¬7VCÅ$Ž…::Gp êˆ×pDªI .8zÈ>Y‚±ýs-UIØ4êNõz44 âYo4«ÓÙ®…C䫜¼Õƒ3Õª¶§G©й¾–â舊§¡b:nÌé­+ yΡ¦G)fœ =ˆ‹°ê;Ò!`°%¤À3¨I¼ LlÆœc^G%Ïð.Î _ñ ¯q2…ö¿uJÝÿ<b–>ý'ðœòæ¼þ#‚)Wµ2Ñø*Vô+›œ]õ1nj¥]h¸Ï £Ù®i¸ ×í=í?Ôñ6¥³ût„)#_¥Onµ¤‡É~fáê§å¾Fôî ¡Ñs~h}…^Øÿàá ®”PöPuH_ÑŒ«Ï5sÌ<;ÍZ¤C}öiË˜S$“ÿMÛaÅu¨–d©£¬ÚaæL!Íîç¸wÁªbL{> OÁŠ5ž¾Â×) Ruzï񾮬%Ñ£øXyÔdE9³Ñ`åøV9Z±›•vˆbw(r©ÒUƧºRm€{¢öò(Rr<§<^F·ÀœÔuÔï:Å»×Ås­0ˆçëz’oe¿³£³®äÏEí­¯ŽÞþ¡CñRäaŒ*ªþA¨3à§Û—Н‡T˪¼nÍçñI)^ió]¼yr虪;xeùæÓA«Iê¶“ú5`]{÷ }¸ó[Á@À‰Ü¸Nê:«.ïôåv¢žjL;…iFÖ ¦l^·¹®p vg»­–S{º{¤èOsóúªµ·Õ¢·š‚/Dó¯Spùz€³QäÊfü×|Mù”Ê–"Ú6+Óþ¡)È:".`(ŠnwkÚ¾Vd;~‹ãJ¾¶4 š–Ø wLÌîÆå]SÍ­QŸÖÚ—kô…Û¹˳ÐÌ Ø#Є`GzYNVuëçôJ¤Šïu¡™Óœ¤lôllyAjlðä_ÕaÊwŠšÜH7ÙƒñõÜò›éò/ÛPcKcn’ü¶žq]Û¥ÔUˆÒœm­6éT«\´xRVµÅˆ)§ -øsº¾îþ3Çõ• ¼4<Ô°^Â_Mñ 'K‚æÀ €`t:$,’iH§˜x¡o5¢®¢ÉUÞÃd§éðúœª™c¢Vã±]3×7ÇãÏ´C/O“ß+ Báj­±¼›lâ“é*Â1‹®e«yWšAøâ9I´ xìÁ•ÈÈl ûL —z¶åŽÎõ'«Œv0~þ>IáFQÉÕuÍ ™j”U(1nÄ9φ•÷Jð‘Ìk6‹‚B»–oOøS4Ó)TÝ~{P6÷€¥»¹øŒ¸˜Ž¯ç ¡v8Señ)`ã4ñB>Àý˜¢ ³&›È,¾ °áØñld6Rªû…) ÔÌYfOœ ik½ ~Qê(­Ï¤YfIt_@0ðdzuAjð!•¢Ó’µ—ˆÖ=ÃÕ[ŒÐ LNÇä”ÖÍC¥ôá¹1GÒ]MÄJ>´4îir®rµã†jDž 0ÓÐ 8bÜž:d½Y´ Î_C.>ë®âË`åíæÚ­½JËÛ´Ä멃( 9™ktã%I^b²Ëe\»¬«]^^•Co–ÓhF-Œ6' uÄ—ú¥(›œê㊖µÊ½²çh9%¾s¦Ì·Agø³Œ]À{ÃíŠ×?1oÒ^åM¶”?iyÇH`_ð…4‚Ó_NÞÜæD©kmÕüÇE‚‰ùGj’Õ±ù©."£ý\Ü#bÿzp/›A:¹A-×ÃÍø«¥P çOŒkÎ2–5·¹Õoy ç^ê·¥àVÿ廸տ­þìÛݲ¿äoYДè}[×Ú Ìþõí`Ì ´b1{9Û@’äãüA&>̯Fh仜òp’æee>Cý17í©g|_QoϪܬé%´úþ=_³?—{6§Ë´ï¶IñçÈü¹ÊûK¯r2 zY§H.Ì_{â³T!{…>GëL›§°H"b[AŸ²E¸aÈÕ¤~WAÇEÐ’¤púÝÓ½nX½¶r@&‰>˜ËN£øj0‹3”H"`~<’ 8w.»@õg±m¯zq¯÷”D S¤N9àDd¹Æ\¬Ö·_Om­ª=‰|‰œ*}YTµÐ† Ð@vÆÔDWžE´ Dt¤zÎ<ׯÇA*¥õ™?¥õ—²¤ÖU2mg©ª ó¤ïN:ìœ\Ø%‰°«fÁÖ)°×3)°sÓÙVK~=oæë¹Ò^Ï—óú>’7žžÕòr©š§z–ëï%oqÑo·Jh\1Iý-R_ÏŸ÷úvx1GÆë\óêó¸ŸP†d8‰æßp)ØEÉ{é™?a6 ØY9»§ÂNÀ}`Hÿ Š €õ_2¸ÁCAô‡QlÌ+í.ø÷iedž’tÜ·ÙÕ·_¥½÷57WÞrß5£¸I'^/Ì'^œK©‰g²ˆ¯g²ˆ§/ÏÎÔ¸ÿ×òÔâÅyÅ“¤âëVRqK"–šc>{lú$ï0é kÕcÍNbðæ1),b-=ˆ‡;žG'åãŽWƒøj¨–ã£ZÌå/µ)ñ}îóñïÿøp;ÆùD[Åx[û¦±lG,þ6yŠ.×åWÎþ9MDF„›º‡ 9WPéýSEHT•¹'@P*-("E«ñûÃòWâ+^¢·kÂìÝâHaôÿ è9pô<'Òd˜qK´ïyɘºÖþE£Ë"¶j±Š0âAˆ  »Qx6e# ƒoEÙŠw> –Ðöž”Á…T‹Ž¥Äk«Z“gù b<3žIýý,ò-× ¢EÞƒéÚ~L©@ªXÇ6<晫eð×%I²ÍxŒ,Ëo¦À·o'up-íV˜üÔ9¼Å=M"Ü;IÀù×>[ÓìLàß•€£Ã)G›ti™®\¸A›óðwó,t¹µnH„B®s¾.·æêò\»Ô·µÂ¦h/:×<:u~¡›ž”HÄÉÏçµÏu”4ÆEÕï*<*D#ÃvëÝ´¯d5‰Æ7sÕoddïAÆš7õ¤Hµ/~EF‰ÃŒhîë½’D?˜S¨Ì+×î Ú}rFšP"„ æ‘ò·ôsÊúƒêâþ T4Zòó­D“·è·‘é÷£î)“ìWUÏ#š¾Pp(X€»JžKø\({æ ùò瀂 "èÀ#…ÞÈ\ùA™ :¨"‹ªœƒ2™s`‹$66ò:™»tiZ¹ˆ I¡Í@„ O?LóCÄÈÞ`õÄ Eޤ`H‚Îç"uX 6æ‘~÷;¦4RŽ)¬kJ–“'¬ù­@XóËBXó—Ö ;z-¡5R›ô³ÚühR›GÚì<ŽÔfç/)µÙºµÔ&9îöù¸cYH.ûËO",ÙzHùγ[ËwîgpÏ’ ßì|MIÐc\ÒÁmDB?/DB©&"¡…Hž…Hh!º‘ÐoEB?ßR$ôó÷#úy!òO^™Hè—*þWô8TMŽM;T‰ÓxJ$ð}Ê ‚Vè3œŠ)CWWidúXu´›xq—guóʯ˜ÿss³ÑÚP¿?ÃüŸÏš‹üò,òþÐÿóavÙþo¬76·Òû¿¹µØÿòè»0•ÿó}-8D'ÞƒÄ÷¸}Rþx{ô&›ÅÓ“»³µÖø¶³w*`íÉ´?šëF–x©ò +mnÊOOüâ=©0˞Я¹ :Ë’obvu|ƒ•š;ç{íO¹i! Jípå` ‰öAôÅ„_ìM"9î‹Þ@§GÿÚ Ý þ£ˆª£Àa]ý·¤_;«+ç%õ»")kÁð‘`©þ~õF8P­@@§HßrjÊÂ1TÊ·ƒ]Kú¨«³I-»â×põU×çpH‡Ù@üX!ŒbÎíRóñPÏ{In¯Ñ&†UÃ™Ž¯MÆ+UÜ¡®bf»(¢>¸N–»ƒ{‚Ë™ tüN»>¬œúò Ù)‹~_Ť UpuþÒµ ³Š£>ÈOÄW!•Y6Ÿ›ÎŒ³ªáZw<(kuÓ†Â9ê0;”¯= ”â6H_bÈE· &סÓ¶™”u6„l¢?OŽÁ#ré3pS¥âtx ÎûSÈ>bP˜7É0‡gú4šL£bx¦&„÷¡nû=ìÛža ÀCî&pŽÎzz°$xµFýÐäDiŸür”9̤oŒé´æãN7Y4¼ú ¹ëñôc¬.¯¨¬E¨•ŸË=U¶{ ·W51²pÿìŠB—Ÿé¤›jÞE³þ,R¦™û©ºqú—GÁžÌÖêîÝ©>¿¿|†,]š¿ý“ɶÁLÙŽ uß ]ÀÖ¶}ëL1:§ÉÇÙ%€pOe“¨Q‘ ŒCy¶¬¬)}ˆ”¬0& ŸV Ÿ]a¾kÁ0XUõV€ÑU˜9…\ˆ¨W¦ÿ9±Ž4·-µ…¢¼}ü¸þ¥ŒÚ³ßSY;u’sÌpöU/f½«å+ü‚ÿ,ÿÄÇUÒø˜y[ªðÔt7+&(JW–Î0T_51Eh g‚.AW£Éh©ÏÞ5¬’ pêŒÐà¾:õ/ûƒžö=³CÁÌhñÍê4­¤DººCœ:™W jqG1Վ儞Ô/£'تbªC¶ºK“­Ú镯ÎÕ©j=õM] ±I'Ñ¡ïFÁÒv×p„3`u™±2ÿ¼æüžïü„Êh©p³AdM-hâ‹ê}šEÅC+Z²Ç¢¬)5“7e]ç>™'û‰/]Gùzðî7_6Šù“_´w^ýŽé4Žö^Ñß÷Àó¦¹@ý¤·ƒ¹é¨L¥˜ô‡:&}J4èÆºg% Î*Ù)æ¹W&Žü€#×qͳòQx}Ó‚v&9D ‹Õ†-v~ wžÿú ~ƒ¬FΓÔü7爃?£Õù°þ'h ×¶Wê~]Ó=KÈEÙŠ Ä&G© ™t\=5CTX¢ ‚áÖò®'h°&U·c•²æ¥=™ nÌø ¬Y0Äóéx˜äÞõxð'Gðë5°¦é¬îCg½sã›éÛäì›jŽ>™A3eÉ,â¤j?âæzÖܲ@ý~aôâyôÇ‘ÿËá7#ÿßÚ\ÈÿåYÈÿèÇ’ÿ?Ðî/—ÿo<{–•ÿ·ûÿ1Úí)ùÿûÃZÐݹ[×ZEUïwv~×:€ÈÄÖòag¡pžª ßóµãð^0ÝüÎ>NøaBâ{¸)µ@wT'ì4jÔjvšö§ßo©[8¾Ù€Æ õ*@âö ,˜˜ iÉ4š z!-¼ÉtsÒ9(Іª#cÖƒUcú†Ê=¾¹9:©™I Z†uNª7¹ºl˳øG‹+¯†¹|Î[ñCêi£|1;cwñÊË®¢µ`þÍ]EÍ ®ªÙîé]\ö@Ó€1þEo@J†¯.s¼´q;`#`\y†ýv«©§½¿¿bDŸêbŠ•HëºÔ}ÈOµÄ”í–»äùº{¤ò{fb ªz€Á`FçmR™ã(&Ë{Üp'k䲤Ÿ„øœÞœ‚œ½`Y‘‘pI³¨]k·ÇkTr­Ýy¹F_¸UlÙ§ï2‹fDgN”µ£æòÍŒ¨íej`<‰ msën¸2¢dPb;d›EQ-$K‘˜Rçæª¦¡M9¿Í5M}%óñŽ5Ê”¸s–hÎÎ5”>þæj_R4w2v~Ã9*Š gÛ+@Ëlqµ–øÛg{çý2kg¨ež|ãÊ€}MäÕñ‹LÙ>[ Mµ5+ê*å™Á:xÌFq}Ë–ÛhîAú«9ÑÄþ~½¨Ýd“¤ü lawÚd€œø |=$\1Ã.EÁk†JÖf_ÇÊܯÑϯ~Ánî³è¾Jœ›ctzVìwå‘΃ƒP 6+äZÏ•ö«Sû¯%íÏ>®üÿ²ÿo,äò,äÿ?ôcËÿ¿’ýs}s#cÿ¿¹ÿ?ÊC»=-ÿ?\Èÿ«>aùÿáBþÿ5åÿsIÿ[ éÿBú¿þ/¤ÿYé¿Gš^IúßÐ2ÿy œ¯¤FPÄʶº5·ïWcàké ½Ûù½Te ‹Ý“Î ;Û‹FQ¨¿ÇGðí½iPe0·1ôBcp¿ƒÃÇÖ”—°ZC ä Ä}ɹnÔ)¯Èéþt<‚¥Oµ³ Þ”ˆè8?É '¹øŸeüŒ}Ú^;Ø]k½¼úðj7‘ÖZ¢â“Ø6Š€ü;>»îBë¥dMÓ€óÀ)P‚9t(AZ‚Tà>ûÛœ«³­¾äITaË[bž Ù/^Ùp‘<÷IgãÞ>ì>ó«£<Xe¯yöô§âôè ì>+œº µ“Š—ºÂx’¡äŒ¤TQ©e+ÚPÍŠÉ/ª«¿þbÎ.‹'óýßÎaïctÐgñÚìËì^Û¨¨ÿkl­?[ö¬¬76777òÿGyú¿úÑûÿwÙþßØÚ¤ø_öþom-öÿ£<ÿç~žŸþ«»*t:ïCÒ¬qN£æ{ôϦ )A)רD@<§)Hç/z#¯ÑæÏǃÁø:~ň:PdÉ)êíÒŠÇ5" /تî‚LõA"ÛõOo 8»š Ö3 n¨¼rƒ4:ú¢HÅÀš©ÜÝ©8‚³ñì’d·DC‡«a0/ßÏæåÛ“íƒÝàÝÑîÎ~wÿmÇ3«‘åÆVÒ݃v÷hÚéöQfo†¨e¤¾%Ý=¯¢=m¾‰öÌäN~ œ®$¯w;½Ë©{‹¾4¼_UŸ»—§óU¼E×Þç·P6wï zwsÇ'aoi7âh\M(Ÿ@8¸QŽ“Þè?ë0Lá$ã«©µ‘!—9’ ¢À$³¤Å:hé0œÜÇàÐD– ãVާ–òÊœ"ŠûÓÒ%tÇÃH ·³a^2ˆá|ßñôy4×<Ãú/íÔöÕ³þçh Õ‹ê÷!ää´AÁÐÊ©‰Ã ëãšØ:£ÕèàLÏ^zuú|ؘ†ˆ XÃu†3¥ÏÐÕNŠ‘Âƒà²Je¡& ”Ÿ7ÁÔØ¼þc…çÃñg’öŒÏ>¨2|EœÏ´.Úî5 WξpõÞŽ‚–%¾‰gÑ0®7ã+Ä.…?!µ«Ñ†|QºÕ=5Óý®?€Á&›k€wz—¼K¶w´óBýGcZ^^îŒg‘úcî<£‹ĽaTW8Ž!c‘P/ð7ô†á%e|ø®Àß—½Ï¸”ÔÁþHQ&xÜŸE瀗Ô_62г¤pò(:‡™C\‡êº"…5»¸ê Õ½oÿO?èp°Ñ¨ãƒòÓ+ê1®Ó=Q?©­]Ó÷zÐô¢Ñçµó E‘B£sš›‘z ú“Þtøiíüo(’P%/¡(ä®ë©NáëÕd0¦7Ñï]¨·ðrÐû Ìn&‘ú«¯­=ÝïtU»OUÑÏÑTý`}‡­ª¯¾DÓ³Aϼü‰:åµó4Z©µó%3¤2ôG}åcÃñ™ˆE¨{>A˱èÇ#hF:ë z '7ô"úŸé%jÂ<ÀË™dêƒX×?‹¿4ù¥Å/ü²É/[6ˆgüíÏüò ¿è~EŸ5ЋÙyRóbÓ·Ã齨yN~žÜèJ“Ý“).¯þYͦþvzÆ/!¿~‰øåœ_>Ø >ò·SÝèÂúy¦»5½Ò“ó$Æá )ó$Æ<‰1ObÌ“ó$Æ<‰±=‰1ObÌ“óÜÅâ¿X“£pCû‰ÛüÄm~â6?q›Ÿ¸ÍOv›SÌ”aÅÜ­×d6£yS§b ¼$¨>ªž_ÀEØq1¿$s9Ñ“9»ˆõ÷ÿßÿíîî¼í¼üSÑÿÓ¯‰Sü]Ø/á#¼`„Œð‚^0 á#¼`„Œð‚^0 Fxa#¼`„Œð‚^0 Fxa#¼`„ŒðÂFxÁ/á…ð‚^0 FxÁ/á#¼°^0 Fxa#¼`„Œð‚^Ø/á#¼`„Œð‚^0 á#¼`„Œð‚^Ø/á#¼`„Œð‚^0 á#¼`„Œð‚^0 Fxa#¼`„Œð"Axa#¼0/árO}¡O}µ^f7æœhó\œÑyvq¦îxz‰>]ÑËô<¦—VŒ+ÄŸ¿Ð·³ó¦~¡ /T!:ë}ä—~ÁE$·q›·E1ðòEó™¿Á†5ˆ .wÁ?_Ò¹¨^úàS“_Γš®9ˆ¹\óË~¹¡—Oƒ&¿X >MZúÛɹ~™6ÍË„ßÌoçú+žÐhÊ=›Ú=‹Cým,tÏb\üÙ|£»8ã´ /…zéÛßR»¼.¼.<ß<ß<ßö|_\ †ô3ÏîÅ Žè…ªËÑ€Ô ÷X½Ðèg¼Ø3ž†™W3ß ð¢ËÍð¨ˆ/Õ\úâ2ŽúO½|Ò7ìßͺ)õ22“£ξþ6ú¢/ó ¾s/bCD õ “—]ƒ¸ä.§úç~¨ïÈÁH3ˆ×ù¥Ç/"1ºÐ$Åè"â}GŽ.5Ñ2йL<±jÆšðÍøçÙ„_˜Èøl x2з“¡u½â|â|š4ùEwàwàS<á— ÄTñÓ´Á/ bÚâ— ~Ù´jrG§ M÷L›HW«sr0å—0©€È@/LŠ_˜¾÷ÏgüòE¿\8ä·5³¿• Y2dÉÄʵ3ßXÄåìLOÓLhÒdÆ7cÑÈ«óWã $²`ÕŠ^áÆ“ š™±Z+z™^4übPP}8ãŸ/ù…)xù¤_>qÍO\fÚ´@L¹75䦆vSCnjÈM ¹©!75䦆ÜÔÐnjHè/\æC½Pã¾y&|óLô̓ &g1’9ðB'ÓD_Aúg} Møšð543à1ë£g2¶Žøð…¾eXc†5¦s_¨fÌ?ÅÖÁ;™pSjJËÍM¸ënjÂ`&Ü„[Ð%`2x§ædưøÄœÌLM}PN‰¢Ò”ô™>Ñá‘^¾ÐËÒˆðÂe.¸ÌE2Éñ™Fë˜ÇOè„Nèä"á´Ô.Ç€'\N(æÙ‰yv`´"ÁŒOUÌS¥H¥ fèlW/ÖŒû¥^ JÃjá†rÃn¸Â UÀ]˜®qÃsvÃC»á¡ÝðÐnxh7<´ gã›Ñ*êåœ_ôßð`ox°ðÒLÞ¾¹¯{“)ÿ›—¦z³3 fLÓÍx“ÌÔ5ê—/M~ÑßÄQRó"þÐÓߎøå¦É/xÌ;f¼´³‰E‡Ìô²Ñ‡)—r¦Üî”kO©ð¢ÛœRSÄŒ&F½Ð\Á Õ”šQ/’¹Ì¡ubÚ}ç¼ Ïyžó\ž?;‡ô—9ŸÍÌ¥ ¦z¤tLÁËTwF3µ*\D,¢î½©—uóÖHŠª³äLc¢~ã ßN?ÓÈpvÆúÞ™ õ1|&Îè…~bX“ÿɉfÈCsêi2r)Ð ƒ¬kòSÓŸjôUû'}ø3ú2‹F"æÛÞPôoÓSÅ@ލžN>_L¯y“|Iöͨc*ÑWiØñ ÂæXõIþ[r¸ëÓÝê2}HƒUߨ¤}õ•é(ò>šù±‡–‚e ù,é§*fõS}2pÕÇAôçYÄ’"8¿›<ä5±ðçõuOˆk#ÐÓª&(²#dž.dž.dž.dž.dž.¼°.Óyºyºyºyºyºyºù9q›·©yºyºyºÐæéBæéBæéBæéBæéBæéB›§ ™§ ™§ ™§ ™§ ™§ ™§ ™§ ™ŸÓ°ˆ§ ™§ O2Ož.dž.dž.´yºyºyºyºyºyºyºyºù9 ‹ 7,}{ÁërÁërÁó}Áó}Áó­yºù9 ‚gWót!ót!ósº÷XótôíŒ|ÆS1ã!Îxd3F§£“&UÂKM ¬KM¡àËz¡Û^襦PðE—I¨…ð’ñï’‘ ^3åª]è^D ͸&7qS¼Ü—¼Œ—¼z—Ñ̈8àùìôMOÃ%/%¾45 }»#LºÚM­˜ ëîjF8¼œðh'çù%6×™Wþ3Ljág†b˜G½¹)æ ±P–w-Þ™›Òü³iŠ?[PœÆ GŽ:ôrÔÜ€æªMüÙªé4`Øìа١ÍÖߦ&î,5qgncß­©knìÒ^¥Kï*]¦Vé2µJ—©URŸÆ\F?4Œ¾&ô[šÉ¯¹üäÎd0¹WS"›—‰\@°8@°8@°8@°8@Ø*^Á"ÁâÁâÁâÁâÁâa«x‹‹‹‹‹‹„-,,,,,¶8@°8@°8@°8@°8@°8@°8@Ø*^Á"ÁâÁâaĂň‹‹„-,,,,,,¶ŠW°H@Ø*^Á!X X X X X l¯`‘€`q€`q€°U¼‚E‚łłE‚EÂVñ [Å+˜•ÌJ f%sÂVñ æø«x«xs|‚9>Á*^as{‚¹=ÁÜž`nO°ŠW0Û'˜í¶ŠW0ë'˜õÌú æë³sÂVñ fé³t‚Ù9Á윰U¼‚y;a«x³u‚Ù:Á|›`¾M0ß&˜ó¶ŠW0''˜“ÌÉ æäsrÂæä«x3pÂbà3pÂ0p‚8Á œ`NN0'˜y¶ŠW0ß&lvM0»&˜]Ì® fëx…­âÌ“ æÉód‚y2Á<™`žL0?&˜Ó°ˆ'¬â¬â¬â¶ŠW°ŠW°ŠW°ŠW°ŠW°ŠW°ŠWØ*^Á*^Á*^Á*^a«x«x«x«x«x«x«x…­â¬â¬â¬â¬âÌ æF…­âÌ‘ æH…­âÌ‘ æHs¤‚9RÁ©`ŽTØ*^Á©`ŽTðÍ)˜#|» æH…Í‘ æH…­âÌ• æJs¥‚¹RÁ\©`®TØ*^Á\©`®T0W*˜+ÌŒ fF…­â¬â¬â¬â¬â¬â¬â¶ŠW°ŠW½ñ@YÇ+XÇ+XÇ+l¯`¯`¯`¯`VX0+,˜ ¶ŽW0O,˜'Ì æ~s¿‚u¼‚u¼ÂÖñ Öñ fŽëxëxëx©Â© ïÖñ Öñ Öñ Öñ æ­5ž¥ç¬çÌl Öó æºsÝ‚ÙiaØi†AŒ¸Hq‘è~…a¹…­èÌv f»³Ý‚ÙnÁ,·°½‚ÙnÁl·`¶[0Û-˜íÌr ›å¶¢W0Û-˜íÌv f»³Ý‚Ùna+z³Ý‚ÙnÁl·`¶[0Û-lVS° `‹$´aÎE“Ïñ¦é-k†³¢‚YQÁ¬¨Ðša¡YRÁ,©°5ÂySÁ¼©`ÞT0o*lÞTͰ0šaa4ÃÂÖ ÃÆ ü ü [3,˜y̼ Ö ‹´fX3¯Â0®Â0®ÂË¸Š´–W8Z^aó©Âð¨"¥å^NUXœªp´¼"«å†'†'^žTdµ¼ÂeA…a?…a?E¾–WX<¨p´¼Âå6…Ëü WË+ (< `ÂÍIÖòJfë$³u’Ù:Éld¶NÚZ^Éld¶N2['™­“ÌÖIf뤭å•ÌÖIfë$³u’Ù:Él´Ù:Éld¶N2['™­“ÌÖI›­“ÌÖIfë$³u’Ù:Éld¶N2['m-¯d¶N2[' ['™­“†­“ÌÖIfë¤ÍÖIfë$³u’Ù:Éld¶N2['™­“¶–W2['m-¯d¶N2['™­“ÌÖIfë$³uÒÖòJfë$³u’Ù:iky%³uÒÖòJfí$³v’Y;Éld¶N2['™­“¶–W²–W²–W²–W²–W²–W²–WÚZ^ÉZ^ÉZ^ÉZ^ÉZ^ÉZ^ÉZ^iky%ky%ky%ky%ky%ky%ky¥­å•¬å•¶–W²–W²–W-¯L”¼ÒQòJVòJ£ä•Ì KVòJVòJ[É+YÉ+YÉ+YÉ+YÉ+YÉ+YÉ+m%¯´•¼’•¼’•¼’•¼’•¼’9sÉœ¹´•¼’•¼’ÙtÉlºd%¯d%¯d%¯d%¯´•¼’•¼’•¼ÒVòJfù%+y%+y%³üÒVòJVòJ›í—ÌöKfû%³ý’¹}Éܾdn_2§/™Ó×°ˆÛ—¬äåo/í"¨P•,¬è•,,,¶¢W²d@²d@²0@²0@² @Úú]Éú]Éú]Éú]ÉrÉriëw%K$K$K$K$K¤-,e,e,–x@²x@ñ€deµd9d9ÿŒ²idRË ÌÏ_ô—Œ’¤ë•,3¬ë•¶ð@²ð@²ð@²ð@²®W²®W²®W×$}¯d!ƒ´e ’e ’e ’e ’e ’e ’e ’e Ò–-H–-Hæ°%sØ’9lÉܵ´õ½’9lÉܵdîZ2w-™»–Ì]K[ß+™Ã–Ì]Kæ®%s×’¹kÉܵdîZÚܵdîZ2w-™³–ÌYKæ¬%sÖ’9kië{%s×’9kÉœµdÎZ2g-Yß+™Å–¶¾W²¾W2W,Yß+Yß+™É•¶¾W2£+™·•ÌÛJæm%sñÒÖ÷Jæx%s¼’õ½’YZië{%ë{%ó¤’ùQÉü¨dT2ç)m}¯4l¦LØLéè{%3¨Ò0¨Ò0Ÿ’™OÉŒ§dÆS2ã)m}¯dæS2ó)™ñ”ÌxJf<%3žÒÖ÷Jf>¥Í|Jf>%3ž’OÉŒ§dÆS2ã)m}¯dæS2ã)™ñ”ÌxJf<%3ž’õ½‚u¾’õ½’õ½’õ½’õ½’õ½’õ½ÒÖ÷JÖ÷JÖ÷JÖ÷JÖ÷JÖ÷JÖ÷J[ß+Yß+Yß+Yß+Yß+Yß+Yß+m}¯d}¯d}/}Ë:_©u¾Bj¯´qÉv’­DàRnj½ÙE“¸¦ÙZI,™§–¬$–Ì™KæÌ%sæRsäÒVKfÄ%3â’qÉŒ¸´qi¸ki”ÄÒðÙÒðÙÒVKæ³%óÙ’•Ä2¥$æ8%š'ÐLæ4¥—Ñ–iF[¦TÄögc8OiXoiXo’e¼¥ÅxË”zØþœ‚b3¬¸4¬¸ô±âÉ@lý°ýÙªj æ\2sžÌGF?,-Þ\¦tÃöçÓ˜Ñ ËK{}2ºád(¬ –)å°ýÙÃ2 SßÈD;,p@ºÂŸúçµà¤»{ 96 'yx»ýà Óþ~ÀÉëNòú>yÕ¡!þ·ô“”›DŒÐ°P ¤y£˜Xíÿ÷·Ÿþ†Ð ¸‚¼}²ðòÏî~çÕÁî’݈ӊ®ñ·bÒ3„ÂGY§¾¾LCIzƒ.Ñô³žŽ3•¸ãXÐ- ¦±•äL”¯kZÓouM-õŸ:TJ"ØPUŽW ^—~š)ú6š}ÔúQœTùó`û¨}´¿ÛUåé—?u°•TK_?¤j’ÿO“¶ÐÆmòÿµž-âÿ=ʳˆÿùC?œÿïáviþ¿ÖÖ³Ìþo¶Z‹ýÿív;ÿß»í·+ƒÆ›—õ ½ÁÇ!ˆ|çíÑa=8‚h'õà·Go â—áï9™ùÇR¬aBˆ¢‡i’;MH¦6ôÂH‡aWS]‡d {ÑY°ÞªÝ׿­ýô9aÅiµ9ò¿'…”ó¤'ô€B4©avBÝoO ÃíšîÓ2DÂOj$Mæ3D¬¢xÖö8¡!„5TxY§t0G`úot5T äÃxy Dcu4ž—02¢ Ãø¤Ê™õ{#H¶Ó‡ŒˆÎû£þ, ÎTkÓþ €É© w.ǃ(þx£¿õ%Åàk/0mÌ2&‚ƒO˘áBgaÄ„4–ã£=ÎK72ƒÂlg³žÚT˜40€þª|®µ—–(Š wÔ&3pˆªÈÍöbZfȧ< j¸ôjòmøK÷—z0/`6å`{û×TEov@_ŵۧ ÔKÚN§|ó²,=Á X|¥Q Ç£Þ NƒOåüsûQLÒÙjÈÉ×·†³3n»Ý,La¸Êax\¹â ç#¸ '×õ$Ø{§]w³LÚpÎûÓx¦¸ÒP÷Éuì¤þ[£î~€\|áxp5ÄÌ€&© ÆÍb™ªaåÜv‚R[Ì”czFuX}+•þê‡ú‡%j­/°)) á‡Õbéï/úñÁŸj3-*8â÷AçÖöGµQýÊ‚–dMÜ®€…eY·×4(…90½Œ<¸õèpš§AÓAÔ0f(ž…7ÉÑ M$‡¦³Ìº :j¬´Œ¾6*Ý©íäl ïÑöÔlíýÎïÃ%NjK‘qؼº)=põ‰ŤD,U_ÓÅîûÙ.ëÁûÝ#&|Js^Ri˜N™%pn—­ÒC‘Îí3¡å£ÉNEÖîîæðS†ªá]ýç@ÿ=Q:'‡ù¤Õû—ç'g€HǹÙ"3ì¶ß­-ï4Ýs¾Íöaû4&ºíÃßôïù8L‹ôºr^N¤Ü1#çñvWýíuwî1%g ¶÷Û¯êöhƒ4ù8} =“µ£`6*ÁašÖ‰õkˆ>\rêc Û1ß-+ô-v<ùz‘WÔ*ÿæeq…Vº\ËP©ž¼Z›éZx·A5<Úòªmqµ[g.EFëÞ3—ò%mâv2ÓT—¸t’ž8Ó¾;- ŠwZü}¦t¬ªVèQcïöν¡6Êðjø„P‘é—H déG”à0œôÓå”|ç |ÕXO'wã|êø©¸†8ãÎJƒÙ亹vŽkgÀ÷þµ-I~zx5˜õ'ƒÂÉýR:#wð‚’4¥vŽÄ|±MŠG8EÃåûï¨D:åɘL÷¿ž”µê@ÓIH­,É@ò{™;“zJ¾fªx²g¦{PÒ{“úð¡zÛûù–á åJÒ8ÞÊÌr©c05¾ÆS„ ¢³ƒkEW£ñ,{W±â<Ôñq®¸Qg¨Ö =ÑËÔ9wSãw°çìõ$ùÜ?…lÎH&™SSgº¥ $u¯hr€ÎU_]™ËúŒÄ¼ÎTМ´éIzõ68†´­ž…DZ »¡)\Ooœ Ë€k0¸ÔDÛÉdÓ\œÅZ¦yJ‹Ô€«U˜Äôˆøþ!®â)3Kð ˜D`šÖY^’‹/ÕÉÅiëÑ"ð¾[O5ýoãYcëY³©n8Ôÿ6úŸGyúßúIô¿µûKõ¿ÆFzÿ7›ë‹ýÿ¦ýïî?Orõ¿]¸„Q÷K"”ÊºÝæ·­ÙUOGS(9n*|ý¬$¢ºýjwÝju…ªB–pƒdû§U«Mb5eŠbNÖ› ãV'L à (©ª=m#èi$®BÅ2C¾:&Ì «j!µ*O [œÎé7»“î’òA5P’öºi UŒÚn­¿„Š€øÓtVk×úõ>(NÃK5Zû&t½k6˜¤ÀØPø€ã £¥1)°öu•Æ Ó©[¯ÒØQ×ò=*}td=x]@ðB9Ûút±yºÔûÐÞ›Ž fÓœ¨èŸGÇ Uãã©ï 3T¼Ä½ë „]Ÿ‚jGŘۃ¤G;fj½àŽV{ÉÜŸþQ탚]]J2Â]lnºõ7×@};©Úy{Âp3q]RžPÁŸœÁé︵½¾6 ÕZË€(¼/øž>Ÿ-ô ¢õ`_l&<,õm?Û·}«oI÷Ô¿5|¯sµ¥ÌZ úA3ÂV™†GrŽºmí`×ÑåZº3Z"PÕ]³šðéˈ8N@.G·òt8ò†3rîö2݇À}ôÆÙOïàšƒj ‚ ­üMkúºÑÌCÂi^8QlX¶š+Xkt+gÐfÅIÓGnÍY«–Ûo«³¬„áÍ”s·¶¿j ÊñÝÕkQAÝ Ñ’i1fÉÝTδfu*êÐyÊ÷ôØútÖ€6*úÿm,tLߟŽé¼þö\Váòï}>£°h)¿i~ȺÎ+÷†"jލÜjŠTPSbM1NçxOÏñ^z’õ«4ÉjŠÕÍÌrê$0ö f÷¡‡¤þcï ­;­\ÙLå¬`Žöºiƒn˜¸`^£2êx­µü ü ¬‡ä·¯qs¹&2ËyÝ>ƒ…’ÑtÞ/<ÄÌh<’Ñtœ˜×+’©Vð:Ú²LWqÐ0£F@haÒYQ£i.+¬i&æﺶßþî$îÆ£d/Ò½TäÚoÊí6T±Îûeªb}ß„êøûShÏ ñå8áÚRüºc^³á.…e±eAú†Uߊ¡™kvq0O‚«Ñ¬?©Çd¼[82WŒ)r1uÅš]­5×ÒWêšÓl[1`í`98uú‡N»pC¢Ïî6î× ƒox]w©<\¥)­Ó*îI´N§$ø‘€¤%ÿIžþWc‹P, «Aφ¬}_qCAï,®©W0@¡Oí¥eøs ÷ ¼l«ÃÊ:½ €Rðóû%&ÞÝõ2æÅ>ã_4Fîì=ÙVÃ@3¦=Ñh¬0·…U‹Šs³8YÅŽ˜›š‚PXX¡½v²ã S­¶*pcR‹Ù-žEj#bϦU5+Ò*"2-Òw»B¤}\þª†EþUqºoÂGýÛ\Þøú€á½ç TÏé›¤Ë cßX]¶Ÿc"¨öЛô¯ªé š¾|Þ¬ªÒ óߨâtñôŒYV¸/¨Q[ÙàššiS©›[%”½ëIýìiïtîݹ7 E–X Âå®›S ú·w2Ï+ÞQ›Üƒló®Ý%Mì³[ÓÊôƘ]‡Œ³éGŠ-B z£®/8kpã[BŠ­;!®ê³‚UM{È.›šªŸ Ì4“©X{u¼F×µßV³Ë[‚z9.pýžÚ³ê®@õRÐjx+tü*¸>Ô·ûmJ¦53ósùe“j]ûÔDž&K¬©ãL²®"%©_ûç¶è+h,é Œš4À6^ã‡ÂÖ)Ý3CEó€EGDôJK8Í%SUDá4êÅ$ÑíÍ@úUÖ© ¨ˆ«) ž]ñ.<(¬»ëk¨µ´gÊhµËÆ ª"ÒÇÁ3m€0@?ƒvüÇÛåä'„B”þê®!’mP„ZôT:™ ;Æìª ¸èõ];ä€é&”9¤§†k¡CôPÇj‡€€TO¤¸4ýä\©z†â4£wÁj•þ®¤n¬l¬—l œmTSc€ø4Q<Õß,kƒh//RÅ‘ ÐA‹ÝÉ×D@Š Wk¼œ"ìV˜¬[²šÊPw6L,“Pzy*—h{ïhN(’¨ Ã…!ÏãÈÚoIP®ª(02§Š™Ê•3kÖ Y2øg9²l(u 8g—Š¥eYáEñ­‰¥ýèC_Ôáœ"š¦Í!’“š9T¼&š-ZÙaŒNÔk{.ðq·c½9áoóHùd‘—Ñ ¿öÇR=Í0ü¡¶RuäLÑØ¿ÜËEè£Èí›Ðô+)XzÞf°RHâRç܈¿¤SÆ º×XϹ7+ÄÙ3"¨½ ,Úž]`÷Ÿk ÿ¸AÂ4Ê,#ù‚¡÷tS$—hä`=~zsÙF‰F£Œ6L¤‘z&š•f‚vѲžÏ4@÷óœwªw¿Y´½— OS¹AÕ¬ðæì€ z]²)m®í ¹ÜÈcÅM$\Y—“%ûivZ9ÛÅ©X×0-på‹ÉûS] Ç2±êÓŽö©ÙêÝSþØþ?˜¿öÚ¸•ÿÏ"ÿ×ã< ÿŸúIüj÷—Æ{öl}#ëÿ³ðÿ{”‡v»ëÿÓ=ÞËÿö—÷ÕyèxoÜJÒ\®CÍý…jS+š„jSk0ôgyi¨ìüVP½r6Ýc+Ñ ,¹ˆâþňtIgQp“Ñ}Á˜µEFnÛùmûU÷؉RÝ‚¸ihø¬4ZwÁ¼Ë,r—ÐËêÀa3W°ñ†Ÿ®ûÌñbRŽ‚i?†WžM¯ÂÙÕ4zÎØÐE˯xµ$ µà¤ôzPó'Ðü•'¬y¦ Ð öŸ6ÉJôå à @|uF«Ã…—ηê¥ãzÄT²uÏ8Ƹ–îs¹ÈØ`rÒdiðIÉs‘±¡¤ŒÃçs‘qd‘ß¾·Œ½è'зã–ÍÌÙ£ö¿ñOqÏLJ6‹Lê"‰¢`ïjŠáÉ^F³^À±Ö_§²As™=óíÌ™ ÿpôíÉå 1ˆÄd;‹ô½3‹„³Qñ9‹(ä=í~&X Æê ®{î-:~õé…¬SÂÀe®4öÙpWÍc-ÜSxå°Q^ª.¡z0P´å´7K¼’«&úÒƒb†± /‚g@)€aðsí·O ™FãFþi¾Ç*5ú7¡p³ÿl”¦-(ܪV˜jlT„¼ 77àŸÍj· °âÔ?[e…©Æ3(ül þyÆ×ò¾{Þ8}j‹XOòXÂϽ ñÓ1ÁTöþéÁzô`Š{-ÕƒÞ†êAoó™]— WAMøª©ÑáŸg›ê׃åíÁŠõ`znÀm=3Ì¢¶ÁÙÚ$p[\°¥Ѓ5íÁ2õ`æ{0™=5?¡GpÙ7’ÅÑ3®¦13‰÷:‰U»©;ª»jw»Š@­Ð6 [0¨HÁÓ‡Õ¤UhÑìmT£‚¬À6ànokCÿã¬*ÓPZ Þ*ê‚L»Á|ËÅaOq+B•N «894Õü+÷ ©´ÿ6Ë5õýÒ¯þ€M. N£Þà+Oü†2îy˜2ð_8P,Ù›Ãzp˜?ˆöë×÷kfÿAw~Û="O„Wà‘Ð…L)÷艰­è–ÿŽB+*ÞÿAC+&Z£Š¡BjYö‹0ÞUÛ&×Ī­Š&ã>ÆHPá  Z·Oƒf~äE;ÊŸ¦.#Å WÏGuüw p_> œhHU¨ñ|XWÿ¹ÃÄ^áü!™Û­6R H64kÈ~ Dœ’o'ÑW™º™VZ1©Ž'`"™@fí 1åÐë×%±]/ðK!%⦛iÉ£l¤Žéèz¯Ó>e ½9d ü׫ $l—rfÏÜ`Šã>ÿ D396Ãi­Xš®ŸYŒ’âà5‰¯#ãs`¿ñ“5¼t¦¦×¯ëfh«ð½×úI›¬ïY‰Þ 0[¬gêçÆ¨±¦QGÓƒ—&Êeà7pNPÜf†’±'8 HO1øµrï°t{zùTý4ÞVªDÛ‹Ó\¦¶WBáMto=Ìwι»kãq﮿ʎ¹Û•Uû ·V3‡B ªlŽf)yfMnùõ±á½>¼¡¨ôZJÕ\ßëtašãIJMqt÷fÙæØ}~Šö_›Ö†úýØ´‹üó,ì¿~èDzÿz Ý_jÿÕTÿOïÿõgÅþŒ‡v{Êþ+툟ÿÌ‘‚ýÆ`bÚ£+MXk­ñm[…)`íÉ´?Pœ iŸæУ˜’á Ü"Lsy°e+¶ò&f¿'fNdA ¬íÉ2’“(ɺ%Œ&n…õĶª­ãvVÏnV;• Ò0˜-jôÔË6ªÆ·å ·–½™±‡ú‡Å”*ìºb2_ÓV!í$ Ç$U½>©gŒ\Œw+Ue@>PO›°¤ŒÈÔ¸2vdÖ°,뱞×~Ì)‹–uÆ.ßf 8æO`#·fâQÊ¡1Âp<3jµ?† Yä$¶Y׿˜I[2¥i„¶Ã0Û†o>Ó­ïÓîëDªþ‚h‹#TÃöxE!«¿®=ô¬ÐïÍË{³ÇëÔ?¬(pN°Y°–;‹ &”=×X±›³—Êo¹WiÚ“c]%Ò´ÅKbJ?ŠõŸHºÒVðÄ“v7CrqĘ®²<  üpÌ¥ú«G{M ädGå¡©2¶ìÁûæÎГ!†ê”²¼ÈÞ2 %1À4òf¡ÀŸêE#‚ûkLn±Á$u69Ï´•ÙÛ³´·®a_PbÛ縂WPà \mlÙ0r ú’êM¨0 À¸ÚdÅæqX½Õ¸‚WPàjK»²tûþ:7u÷„6N½™Á'犸ÕÄ•vxP`P`[fÐyV|žØ@@`Û½dÉ@Xnm®÷P¶vߪ¥™NŸpïÑn!(´¯÷nRf,Ʋ6eßùØ#Æ]­@Õ_½‹µÚïÁ¼Öj¬¾šåfÉ%èI"6”ú>¦ÆeÇRµhÔ.sÄÌ·—I®¡ÿ¯§}4yÛ&ýÔQŒåG(Äy _ôû">Âÿ¸ú¿/_3þƒ-ÿß\_èÿçYèÿ~èÇÖÿ=Ìî/Ûÿ­Í­gýÿúÆbÿ?Æ£‰•”þOÑz{íãzå,°DGøìgvÿy²ûs0±Âù`uÊ$+-l>” ùbjÇ[ªõ % >2'm,÷8Uá¢Ï£®¼EVY…mßEvYµÏ@ž߆s fc€Z¼Ï÷¥qݵ³×ŽGî > a$Hk¢jÈÞ Æ±ó^Õ_Fq8íO8‰™WòhÇú€üX¸õ£)ˆÃ"¡¥Y5p{…ݳ]Å‚Ce«-iy¨ªIC??]õý3_ê‰Mx?Kñ‚Ñ »ë³Íñ>ñ/ÔŸ–ô‚$?²>çË…¬hÌ:³™Ëëþ`þóV/ ÿ$JfWÃàq¤T„õàìj’‚¥ü®#Fh̿΢‘ @Ù]Zn/s‡iõ­ŸXéÛt¦¶ó‚3ìl€<õ»n^kuýf­w>‹¦é¾Û«¸ä$𫨶*h+ïƒ<ý½ž¶Ögx`Í@vU_í€þ(ìOv’ª /¨A=ÁÈ‘-¹Ô.~1 !X ±¼,ƒàÁv¼†ˆU^Ž8qo“›hu3¡oÛIâŠi¤F1E÷^]2Á «#k@¨cœo=ˆÊ Aˆptª=˜nuÏÔÜ¢[“Àûb[èbÑ~a“PEžâªñQë¦Ýf¤xúœå*L½rkxìø "@ -ÝÄU¬c™»æ¼çÎòpSaƒ'§â”â¢tšyõÔăv’–k Ö©­¦>TØ—^IVq† Ï·SÝmA9è ±¶,f.T 7¤ø­};I/#¨½êAwš©X›Rô/ú ¯Ö“J FtU§å –&x>¥–&݉°ó~„©ÜÓ'pÆ:Ƶ¼pìâ+½Bc£]ÅŒ¡G{V7Ðñ%*ì\esÎë+}ÄUÇÕ¾$J]È?¬6Ù¬×Åþa´ü¨åEz@þëIÝí*(Q9hwÏÏ›ôz¡o”îÚsÀÌ@7ñn󪶻Ǘd8žè]à¡™¼IÛÍ…á,¬_ªâžÖ—|}-lva÷ôW·{Z½£Ý“¯€Ðæô¯gÿT¢/a4qö¸E¿í=Á§O`†W˜?O²4š9›Tw+C®j#Ç´½•Ó“9L¯þúöV Q]Im¦3;ãT•Zop ©©gSHœe£öRÀ¿Àn†g‚¶˜P°Hëi4ôB›_r¯|Éi‘fÈ{h97î¯Á8oÑsèÚZ¯qÐBz² €’ÜìQë²È.+Æ 2làZûWd·zhI·9:@ uSŒÖ’n–ÄeIÒjƒo”*ΆrZSŒG-‡AÊì÷ZRk‚Yü˜ŽÄ‹ÓÔ ÇÓiO`Ž@J:Ʀ´úïÃRj¾{#k,ÄÆ&c UòçásöŽ>ÌÕš×p\&Ë æ2N¬€ÓÀl œßϰÖRØN&ØÓhÐG;×^œ>MLIÖ›£àPU`KMnô‚x¿sO«ƒ9½±pvMz¨eÒ©ÞsªåÔ†#ÐF ŠN;H”Gâao0€ 40CµS/ÀÖ×½íoìË· Ç÷6¯ÃÞGEÚ!\@‹/Ѝ0࣠ô¸8vØœñDQWEwGs¹£mŽtE»^‘U¾áÈ܈O©ÃG7¨nÁçnœ½<×IŠ_/åõPÉ…‘)<×Q%ëÀ’â¶ÒÈ#ýFbà9)úFê×Ç:i”<Š«¦Ê>–âjõF¤ÿéÍl¦u{ä‚ɹU:‘Ú÷ ô§ž>˜œÇQ»»ú[É­°ç÷ƒrÛö\UZåEzÒ¢žd4UAF l^MIǘ½®Ç¤:¥U¹Fĉ¯.à0þ––Ž¯Ç«æÔâQ·™‘¹2žöÀA·£FË9›Æ©¹‘™1r×i‘Ÿ“>É™gƒ¼ r§œý}ŒS­×ÿð‚ÂV÷>ô—–’r좴mO«âUV©QÍ=Ë.’ã}åÌ”ßWé|§J[Ы’ëìÄ%ò}™¾9W¥ŠaÁ!PFðÒE¼aÁ@àu'JøÂ+>kÿ tÞ’©ÛÑŽú¢^,|­ °äkõˆÖÌae·;o½ÿªs¢þv‰`ëâo]Œ¢Ý=ù×Û‹pÂ"šÔ‚'ÝÞy$!äwŠÒPE)jŸÆzݲëÅUÅýöx_=š‡¬óžžâ½'IüFB¯Š~|w,Ÿñô+ñ Ì8ú•yfÜüÊ=7ÓU*y>óÔÚ+¯öK¦Zve¬©M5“ˆí)´ìÐÄç:e®{qÓž#LOÄI8Áñ6õKŒ2ݼÉ(Þ—SZÃÃð›úä¯y‚‰&ðÑÏRßVI“3Û›q†ÐK‚‘š‰IeHOP³ gW3IºƒÉ%†¡ùõ¡ÛzÏ—ggˆ = Ë¦ÂŸ¦?{=/ÓÓQÁm55)-ÿ¤¼<Ðfõј305²ª¾²§Õ}e“œ;ÃRc²-‡FÖâ;m¦§ŒœC¯ûªj'ו¶k¨"¢˜ˆÄ²G¡çB}›çaØZ3»?þÐÌHzTî]¡.WºýëKî¢b éq×"Ƚãü§S1¼á8Y˜_ RÛo›4í/àXœöæ+(Ûô/ÞTî|Ê¥G<¸åzûÕÕA¾“vàÉü‘š„ü³øuƒ¯×«°ø¹!ƒf…B¯ û1Ù^¯¼nT Lî$™*ÔÚFþAž9#_Bdèüá4ùby½‚ÞY%ÃiªÞèá$ྦú¸YÐGwùƒBÇùÄ=ÌqÙ¢çÈd—ÁßH¤¶*£é8³Þx$ÒÕ”Yr–Ýeîeç Š÷¥#oÒ#äìTsÄ)©c¸ñ¤žw¤xxÉÛJ‹w6ùv§Y ·`š5ã©5¶Óœ_S‹²ãó%²ƒ3Ù=A†Nïj0xbü¾ÒN~‰VYHkì˜êÞI &ÎÃ÷2k÷ ±OôÛð¹[æíî@»Z›ÁR2+¾uÀÑZnùÞŽê9žöF1š©x׉œ¿Ì×¹X­a*¸â¥ó¬ðÒÙÊ¿tN³—Ω}élùŽ™g¾K‡šú9¿#äHM%ïOéJ‡’?ÞeúvŽfŽÉyŽ Þ/pOM¦jÈFÃ"ïNâþ`“/-}Ÿ;Øx%“®;›=~òJ6CÆÒèÁ:oDð^õÃì*¥Žiu7Ç}µ¨®ÚZÛ$Òx;;«z Õ«V7ˆ_mXA¶3šèÛª»ƒL~cÛ ÈŸª÷¤öºþú¾ò' ïo›â8På¸uYŽÓ ùgÇÜ3¯WÏ_¯¼é`–ñµªx¯é‹ßÛ.T®¦{Œ«ÐªÊMoÜÉf /J\©œÜy*QbdäÊ!1rÇÉî@(ËŽ¬å^»™`Gëº[‰ù7œÇ „ gJ¶ÛÁ}n·O'~í¶»LóïßÝF›7xçóˆ7çÊ#Þºuqu³.2@üà£ÿŸžEýãYcëY³©ŽûõÆÆFk¡ÿœg¡ÿÿ¡Kÿÿ@»¿4ÿƒúÿFzÿ7› ýÿ£<´ÛSúÿòXåúÿæ·­ý ÏçUsM…ŸqEþÑÞ·©Èx=~©vþ¯’‰üÕß`w¡ü^(¿ùùK¦èþŽsPÏ‘~úúï…|¡_(ÀøÎtg‚ c¾¾cpØ»‰ÈyéU_ÕV\pÔÃXj ïo»;ÝÝzp4*ô>ìMÃË Ùª_~þå»W­S)¼S]f‡àÖ d™èc³T|gõÇ/Á#«:Tà[M. Þ=ðåJcƒ€œ84 ê~ Wý·OñhÔí\ÀˆuÅ%1£ÎÖõ|=½ƒÝ€o4íÝÎï,{Î H£‹ô¦²}Á«ÝÃÃ:ŠñßÔµðþ¾¥¿ÇGÝÃû47˜7  •¹]*óüdæ:²†¥”ð–=(‰£Á³ú´-8Ú{lÛ‚ò–u"$VÁ$<ˆû2Ò!JÕÝ>÷§ãàˆÝÙV§=º¤dŽ´fµÿÙ>£n.ȹéØ‰Ñ°¿ Ôu_(òñ0ÊE5 «Â@Ñ3UmÆ·‚æxªxú Ëš;Ôäu¶­ãÆž»mP‚6(ž€úð ðÀccþÀ‰5=Äõº¥—û²$È—ŸÜ cãn7OˆŠ ši”ºä³ Æ!$ù£äÙ®ªš*N±hÁûh:.^®š¥M)d]­ù¶ó[À6,Ú1øu°4Ò%¾yŒ‹0&ÔMàê@³1*ܱ¼›ŽC ½éʦÆj“±àAï`õ‚™bÙ<Ãz–84ûF¶ïâïêþнÑ̳§XçOpšOµd}k!+Üñ‰mÅ>¨ŒÉ ®þ¬ŽϽ}ÿ©—¢“s?XþE! ‚Ææzú7·»²[¶ãßôœSˆå}îf¶g‰Ç&À—~l_1Šà‘:’´$3µ´×—}Eç‚ÔñEÝ÷æââý§³Ò‚kE…G”œëÊîé°×‡¸¬Ø\ÌÒè…º¬Ÿ{Ç®ž6º˜µ9Sÿ¶ü…tÑ&jÒE[-oƒ‰/Ö–O±ÑÇtc™Ã ä!°&Hj"Ù@üí(p³–\)1ŒªŽ½N:<ž‚І“Ù ` )šaxâ}z§gKŠÐÃ\yf"ôì›À(o^®îÓ.UW<¦PºÅ¥¹(Q~ЀîMÇÎ$gÁ5¾«¹ñ xÓá v%ÑùìI=1Çz²“u8{Rt†ž'ñhõjÔ`¼vÀòT¨ê?mª×醳 ©í;Ýéi–Lëµ²i! -JBÎmáæí1ÚÍ7Yég gƒæ˜ªU¡vÆ“M[eT–ÚÒ”þ¡àÎ6“¤oïý–¿TÀ!§öá>Fs?sÚ¾Îá>×–cbjõ5†Rÿý¨g¨µî`ßö™9×¾yÌŽka¢w.–r'ãq¶aëŽÛP‡„Ñ2…òmÕÊ®s‚åö†&XæÚ­ç€¦!»Oµcµâ|…'Œž˜J`XƱcÆ Aþ¢*ŒjçZ+wæ:×Zsk6ŽÜæ Ãi(bÉA‘”è4Â+‰üöl£_ùy¶Ñ°mü¥˜mü™Ø¯×ÉW$ÈåÎáy¾±±ñm1Ž ®1iî;æs~h"; Ô³÷çþÜBFòÛà›BQu5ŸGô\4-ßÄ|¯‘iz¶ Ïp“ۼѸ5_¨&æÖ|áÃl½Ö]·^Uæ§*ÛØÊÝq·`ÝíX_,`ƒªŠxÔC¬eŠr÷÷ÌžË0êëBïô¯Á3æžw­¹Î»,³˜œbùáÊœ¢ÿ˜šƒSl´*QÍ[Qy'’kl4ËŽ¨¬lëö\c£(^¸'¢5}°ÜMž®šïx”\L Àãqýÿâo%þïÆ³…ÿÏã< ÿ¿ú±ýÿf÷—Æÿ]omn¦÷s«±ØÿñÐnOûÿ•å6à|‹hÀÖóhÑ€qêuÆ ™é­ý ë~šß¹° '>G¸œ˜Z&} P@M@ô‰Óÿ¶—Á4zc}Øš Sâ^\Å”9O‚&öy.AIãMæ>¬ëŸíÙ”xyµ·K=ó*þ°Ž€€ásõój&¯V\’dòI)-ãvzéŒܶ°í\§Ä9½«¸½à¶Ù¯ÜÞò|m8åî‹iDÝW7Å{eÆRÇE¿ßâÉÜ~‹~·Åƒr·Å‡uøÛv¶n%V…B  |ZS¸žànº za¢‰¶/«Ž}»ÊaP2v:Žœ«ÃsûÕÝÄÛéþ‚yÞ¯»Íƒ†é<Þîþ~¿q9ÇQ毆³<Ûo&Ap%ïš­l­Ò„ª\÷gŸLrnÏœîCzæs Ì]IТ(Ÿ] z²£QXAÙ ¢z"áîÍ ÕDxõ`¬X•ë©"‹Õ‘«©æÓ´\k©Ô¦,·&³uO|ñ¾ë#“Êéïô;œRe¸=ååöØÛÓ bäȼE, ™·†·žŽ<ÍÎ}L‡¿§wÁ6Óۇö 8biÂá_ 4¡8 Õ«& lUMHøƒ*Wtt@_óØ0O®«úr´÷®(ÔáW4¬Âªaò¡¬ÝYC¶f%ˉÃèïÌ}ª`Ú¬ 2á ³\ë¬4–ž6ƒ%g®\Ø—™q„ã¡ð\kÖ{Jž/¢8T‡0iî €'‘-Æ· ½vˆ6ôŽ03X[Þ©¯?ÿ¸ª.³¦à@€“ÏÑè×àã‹ÎÓæš)kj« ¨hW ajíïY=Øy’4ëšå`žYe5*<6Ô¸9 œYMk„䪋 ¾¤ú42õá*„í9=°ç,9Q°c€öú#Úê£Y(l|náƒîÕ”B¨ýL68†•RwÑ™“À‚±).ÜÁ}F7œ~ž ŽšõµàëWUIͶ ÀÔG"µê„KŽú×U]e9ntÆ ŽTI÷3ÆÆ€•£L–èØœåqî½­gão™Ð· ÔH |'1;è~¥gxÏŸçeš™Ÿtü¼?8äªBmÐvMA30½©Þ Àª­éºà S¨Ã=êûc=&Õ†ƒC_ öCßã¡Ë®Cò`½¬·‚õ`}S—\_çÙPÔgCq5­r›óÏ sXóÕlÍV X¡&—h®ÍFöëjµ‚ÖFÐâB­õ ÕZÍ •”¡ø¬ .·±l4‚f°ÑRßûl´7¹èæz°Ù6›Áf+ØÜPßó¼D³Ô‹§öˆa^RjÝ=ØpîùÆ´OoÉq_4êXßT‡zs‰–2žíó #RÎ.§QdÑÀZüñºƒµkÏ·2Nè?ó“ð½ù ¥£OWn:LÃÓvÒBÞhŽ7 LOsÞÑÀÄ´ƒtÞXû?Z©¬¯#²¼þ¤w6þÙ×ÅQŸ!È…c6{1ìsˆ;˜áÌtdfü>ÏaÀ~TŸðÿIÉÔ^³w‡BðÍ ñrlR2µAÍ£6¸ÚI›ÞMã›”Lmióàî×[Ë껽³Í“=œ™Xwö¹yø`°k¹Ô…tE>)RݺM8Ñ08‘óðÑ¡ dueœ3cç‰!ïFÁÙXÝk¸©•¹AÛÙ¥…˜Ø¨L]SW>"ê4:²à"šQtYg©ª¡þŸzìŸì‰PH¨pF-±Z9s þ¨–X­œZ5¡›ëžVÊâV6-)äØØÐ— ¬SKTÈ¡VZ­ÙfÃßJaCÜÊ&`¾BT… ™ZÐêòÕ-£.Z]}—Ž¢/³`Ž{(»Òkx³üN~+¸ŠÇ;Oî•웓ñRgä U–‹™æ²>þšOœ¸çpš$à¾aŠ^{BäfìôÒë<äJ§±™¢9°Óªõ˜§²ûM… ÛsKJګݼóéNד „Íh*†­£r÷E#EK[ÌÇ1T´«9•*1o¬Chåav=ýÿo¶ŽéF .¿Yá’UIjjÈlœ@¥½³^Òš}"½©Û5îkÓ¼¹Õ©~7”$¼S”ƒÁ¯ˆ–AimW¶óã¼´õ›Ì2=.uBLêHቾҨWA•4BÌõyÐòÍÜhùæ¡Ñ²2í9ƒ†Â&”#°êŸDÓ„ÝÖâ BØmû†tšú*AýÑ>‚WlÞsåã2îMmxO +¸Vo›ØN#~5RûͲÞ#ØçªÔvúPv€T?˜sÛË(ëwœÓû8”ï„£t¬âwS?&gòvᙜ £¯—íÓY¡ïüÈš^¹Ç¥À-” Më唦À}§u5L}³üfN\åxV§ÈîjNØ{‹¨²ßòãú÷¿ÿï­æÂÿóQž…ÿ÷ýØþß³ûKý¿×Ÿmxü¿7ûÿ1ÚíiÿïýÚÿû;ðþ~§o 3ÛIÚ¸¥¯·®^Áé{ßuúîàÉÒãåõN8•#Äæ†Î$S_;Bì^µ±?€ëôünÓ —é…ËôÂeúûp™v1ß:}g¸û}°›å4¢Ù ÂqoqŠPÞ(ß‹ot­_ï/ñ:ÇeÜÝôÈh:Nœ¢yÊlwhs—¤œŸ_ÒZxŒÌÏÁyáá¼ðp^x8/<œ±­…‡óÂÃyáá¼ðpÖß.<œÎ gþ~ááü½]pÙgáá¼ðp^x8y8ƒ ^ý=hŸœ¢‹óá¡v|ö´³ðtþQ=÷¿’§3ˆ×¬Ø¹)õŽ–Ö%È¡íÁ|ZLr“°U™© IÛJ-\¯¿Y×ë®ëztk&Àòðj0ëO7ÏAT[;YZ¦?ÿÿN˾9øì½kSÉÒ.ú}ÿŠŠ9,a‘{–gÍ!0Ø\,3f˜9qö„Ý3Bb©%_ÖŽýßO^êÞUÝ­ Õ6 ugWeeUeååIød! :ŸÂíŽÒcÎáž9‰»Lâ®’ÅÝ)J<‰¤qwây'´ Í’ÆIÒkš¤§Y³£‹³_q{t¢ ²¼–‘ø­ÏÆž?ë£@ÉÔzT;~6u§,›Ú<Úr«’òˆ’têHfœ'³d)·ªˆÄY>R>Ÿ€Ý\BvH$š…2ñHrš2GÝEÖ§”h[*'Õ“‘#È ¹¥c¶ôÞÍâô^[XJ²õ›Õ+*ä0;s(œS¼PšBÅ}Jy¯Nf%β Ì–ÑA,.sd[¥9²öQ‚ ¢rg‹^Z-80Ä¡ÄÜUZ­¾¾FZ­=JÕÒj‹Ò¢æLU-KŒ«8^æ—ÎD,yay.®=»#Ù±ÿüäÖ¼p”'·å Í—0Z:Vqu'˜X.eù°yáÈå¨>ÒÓœä-!Ç´ß^O2°:š`V”I¿@Îfq\\… ­OÇËILÍON/QtY Ô’=‹Äe™ž‰©”éY”ê>Wîd•AŒkfþÒ¥+«,]3ÈL.aóÞò-gÈ·tóÿ²G“ÿ÷b{•ÿó ×*ÿ﻾ìü¿û™ýeó¿ù|'?ÿ[/Võ_äâÙîçÿuùXðž\gT­}w• ø=dÒ@ËÁ8óçÊ ª1áÓ»ÀöÁÇ„øÿ%›$·”“Â]O`ïà„öÚ%œåvŧÓDªV‰-ÍÄÇc)„«üÁo¬ô*ŠsZÃéí“+øNAŒ Î"ÝH68•ÈÜ%#%m2nCv7代9s%3ž»%•/órm5¶¬øeãsƒânÈ`JÚ0žŽ†A€Ó Ó•<ØuxP!¯—d¤sDvs:½!3Cà?¢sá`uáXyë¥l¼¬Šä©r›¦™ªJ3­’8öH †þ¶÷¹Öltê%[ŽB“Wyj«<µUžÚ*O-w­òÔVyj«<µUžš{­òÔVyj«<µUžÚ*Om•§Vð¢ð6ê êWÌS›#í¾“Ï줳<½ÇŸQ¶œ"™íË`³V©c_!uLßö¦[üȶÿÈÉ«]|†æ …µGŸ}¡ž](S­{Ÿ™jïÎ6˜ %‰ke!QU±LµìШW¥²Úå\K—X™m*½=u2 ýu¦¡ö…ÆÈzõ7ì-ö7åëž_vÿ «Ó!çá/+þgZÑ£‰ÿÙYÅÿ<̵Šÿù®/ÿso³¿4þ§µÓ|‘‹ÿÙ~±šÿqñlwâÞÁFX6î÷É+ø¯zmCœÁ·¯â·wgÇðýï–xÍ"¤d]¤ÍRC‰àz;ºNoRèÃd$àl8Àxá½N Íl–ÂFÁGï€ÿpÐ?H®àœÞÝ£7ö‘v¦°Ÿjá>mDW:MÄÅ–À- E¢S£ Ùä`ȵˆ‚†ÌýæÅøkqžH¢ÍN‡4W¾˜©`—ÔY­Ø˜ù ³Ú^'5&(ýÏ´ì·;¿vÞ´bÿI›“3:znÊWÉ>Ã_({ŠëÓ§Ñøï v»¤HÊZk¹¯žÉíçh½Í?¤yGbà ‘5Äûgj3¬8†w#C¤¥w!;/¥Åwi”¹Cµ‡öéˆ8nkSJh&ùe^¼/œÈŸðóíIçâm|ÏýãÕEȂˤ Þ5ÝæØmÿº_[A6-`¾½j¯†â('º'í·{oJÌß I¦¡n_‚9œµ9V;?CËR÷¬»cÀ¶Ê%ØÇÛ»Šø¶ýº!¨íÖªhÓÕfòÝÇö€p³¥ó¸$éùɨÌ?kôýY]<åO©õæã‡1÷ÓäËñ/F|¾3ji?™Év_biÏYæa£­j6Ï™Üi×§iÑŠ=¶³¸µµë¥[ÛÕök­Ï6Tœ×$u·qÙåÞﲨÙn3ÿÉ &¼…×è{·wšHÿíôö‰:ÞâƒJmÿF&qùö\P‡ ‡!ÈÿÝ‚³ø…Ì”¥°¦8Ÿ„:œ­Ïqµè#í¯ÁŽLãçáaÅoY؃)îo%‚ª•žú¦Õ·”8ô„”yʰÕáÚÃNF÷Ñp} KÇ“Ã3ű?pGÕvÆ–‡P‚±áçïOÊ:Sµ'Q¬ VKã½ tá"Ú…@ú¸ßî“’vÓáè~Ú½,ÖŸ”Ë‘îŽÉQÁ ¸ë–׿3zW°ë𲑸*.•€é÷¦Iò1ß FŸœ.òS?KN®qÜ©HŸáLE ÔŸ«x&7±Æ¢×‚†ðñ3 %Øä¦Ì«<›Éš\ÔÈ£É7ê¥ÑgæëwâühmFŠÔj†T6­qvM®©ÈyŒÞã3Gcy*ë”çï\xF^ ‘‰~Ô†Á þ3u–«ã¯(*L¦•[cî=ܵ{¯ô²ýɦ_Ñÿ×|Ñ|þ¢Õjn’ÿoeÿ kåÿû®/ãÿ»¯Ù_:ÿ_ìl¾ðçk{Uÿ÷A.©˜8þ¿ý_.j¶ÆÔÅý¼~l(©ìÕk=nŸꇠ§‘}¸2Z͵6¿óŒ­LKðu«ûͪ;Ë`ÔM9ÞñèqŒcêEÜ=7Õ}’ ¯Ùq F:H¯Æ¨¢õHÏX›¨Ž“ëi?é$ËirH§F©ûã$»Kú|!À±Ë`1®œjØ:U¼1#Ë~·–ÖɈŸýg<©µ©Ø#œ•û ïCÔÖ'zóìµN&Ô¤ «‰îÂÃ!1¤¹Ö¦¿Öº5øèC/#4ŽÈa(®ÓÞûѰ7Ø”?@¾¶£”½¹]ŒÍ¢¾ ~q:„É!ÝCËe—Ýö4v){I€É8Aô-ª9D@Ž_ÏÝcršuÖ¯¾¬wªÈÕ'YÕM›Œ” ޽9õ91ûÎsöÐÙEdEÛ¦ƒÏ“›dœ ûÚÁxß®µ®âŸíüŠøu¬ÕH»d6…S…<ÇÊÑÖ-s´‘£¯RõJK+ÍÂÉÈ&Â);ã÷êë ¢Ëï&Ááê¸TâV1LRJJŸŒ*D}Òø¿¯« ='ðO£1¬RpKé*yD²E}l_@Â~*‚‘•r¦3„°Ùª•0õ¾8þÄ #H›2 »o2ßLa¥¯Ö²id¨¦ì•Z¡ T€¡)¬KDüùÄ#3TÓwãëzÑ*Ð%yŽÏ¯á8gñ†´…‚}!OÈ\ùËIÄh² akaÞÿrvþ0®š ~“œŸe¿É ã Æt¯…q¼÷wCÞZƒII R$´Þ¾C¿çöA3<]†W±;¯M&ÐMí'!Ó/ß÷¿œÖ9Ÿ½BëŸ8„[F]æº/8lÐ'kå;àÿýÞPOÕs!!*·uí]±yŽÔ6Nö÷eýÕ\ãìYXËÖ.â/v¬ââ;ÖßWhE¥Ž7Ž«P+ý6÷’â{è3î‚ì™Bø&MßÍ€µò‚T¾éÕ7’Û}Ìp§·"ÖζX\ZjÎXm¹í¶«ÌÄjJ€,׺µÃ:rQ‡¢ß]Ë;ß(_‚bT×ï$‰ñ;¶æí¾0õ¿m»¯º<ûïÕ}˜€æÈÿx¾µÂ|˜keÿý®/Çþ{/³¿4ÿcsçùV.ÿ«µµšÿqÉíÑ·ÿîV6‹e€¿j{lúõ ™x•ÜÞ&pÈ•ôÞàTúŽüéûÞ°!~ýw$Þ¤×=R»lBG=B†M“ë/¸kÙ7 [d‰,íK€PŽOóYÁí6õƱuGÛÄ¿¾==9Ü;<ƒŠù¹²ÔS~ÅÒMõ|Ëin÷ár3“L4ᩌ¶£A‡¾q[ÿý÷oí—írªÎ\Ø5™.0«7›;â Ìtº»¾ À.ÏåBÞÂÆÿ6Y]Mµ n®²®³³À¦bZ ª;Ä'¦Áp¬×ÁûbF%4–!&ƒ/N… ÷U6iŸ¶üNN‚=bÚŽ½´G±æø¦ø‚0/u$ÂëÑ¡oÌ \ ˜ì` ¬9ؤòÌqË Î\O𼸊 ÷á~K^:=¨Tñ²¬0b®Ìax˜ºñB‰r“¼.¨˜x¹¶\n0¥<[Pµ úeþÀЪM“­Í”¶YÚH“^ÿƒéÛÇÅÞ¦r‰^ï6ô/tòÈØåõóyRw ËÜåùÙÅ>®äÎO­gú£1ºûÑ©’#z•T¥þª{Khohõ…—)Ó^ÕÞƒ^1½¶ªåϦ£SÀ.ê×:·¯|ÔºtˆXΙMlbHkÃe8µ9ƒ5r’ÿ¡—ù˰¾{ ‘fqêჃÛ¼¡7ø„d „ pf:›¨ç>fq—†W- ‹HΑÑ:ø)ÍÐô9è‘þæ)eèö°Ȧ²$ÈhÚS¬iöaÉy>Ç÷>ü¢YLÚåŽÛÞß „]®êÕŸè¨Yó½! ¥sθC#ÞVyÿ¹ôc³¸³£Ã( ôß‘S Tõ1Ò5wv„/Ï“[æÈ ëÎ ^ЉË]ûYìEJ•"ú0ˆüyà(WâQ.¨ mÛùo…Mƒ¯Ñ]ä¶,DæÍÙ~aÛè µµl¬ÇÀ¨í½»@íaC5ıïêüoþþiNëÝó³ý.Ge¶ö›ü£E?Èóuyš‡w¬ ”ؾ<ý½!ööÞÑ7ûomôDÒB¾jâ(•ó£PFC VŽß$†cyµ¤\¥BvÏÌ\jiŽ2MÿÊ?{YõÙ¦fêgZãÉk‡&I§5šK…u±Å󈦣!”eÔý²ò¿—ô¦ó‡ø9  GÃÿ&ã‘ ÜœÔPŒ`Fe±!îÓL4u¯‰Pæ²–Ó®,²—¥ƒÑÐL,Þ_Š0õ}ûM¤ýÇ?b}ÞÂÇéûgø>Ý«W#sòòÎܺÁÈüm—û–çžvSüÊ|Ä;%|¦·ýV4Tàd4ºÓá$ uòîÏ_ý1ªz¸R¢ÍT¾ ­ùNµOa'ôz {.M»pˆj‹5qé´ óp§£ÜŠ]š.Gh¬nóø~Ü-g̺ªQE¦òK‡}eYíüB† äšz6<ƒ§pl½«¬v¿b`ÿÕ®¯áKÜð—]Xð^§ ŸŽ_ÿQWZ¶Û¢^.ê4J1¤tŒúƒÍ†úL ©é”d8ñìáÍðF8bYGN87 •ê4A£=Ë%ž5¯edžr–;ýÂÄãÀˆ]Cö¯¸l(£AœªF¿Hg GÀÈÝx—"žŽªG¼„GÅiBùÕn´ogS‡Ú'0;°ÀÁuylš Âyl5Ù#¾­; “¥éßá³Áúã©zGž¥VyýVvÃ÷›6ÚlÝÞ4çe§YÇv³ŽJ¤“×嫨qð-í;›Qên}‚<°±Ø'µr€„—$T&ÐåÜ©@b†l <¢“¤ s‚æL’dT$°Î ¨Hôo¦ªh#"ƒEº![|­Z£ß¯,q®­ÏŽŸ¶q.;@‘€'XT±IÎèR?œÁ£{®“I/xþV»ÿV¥¥ïS Úò‡ÄŒ[˜3zèñN`T,Ø6e —[ÌÕc㾩ÒMAòÀ‚>,ìÒ1 g-Ô®&„µÿ×D£ßË/ø¾7¼vG“ãS° ¹6æªÑÓ}ƒUÜj´ìªáƒ“ê%rÙ^puG·@î[äL´Áz]A;ª>y"g,ùr$·ž2Y2™ Þ5>}‹ûå‡Ñ'+e[ÂÁ$ N°€Lx* ïM~u¯ßOî(N̸ô#74Ä4“‘¼(V˜H‡`3r½E{Lº´ÿ„6ùHÃÃ|ŸŽû,Ól×ïQرIszÌl4Œ­’'7c’Ü,r¸¸‘ˆµ {—ô1Û”û{#M¿‡ŠBA†É‹³¿].øâÇ d‰Œ‹«¡Åº¸\SJfRmØ}ï`ß;#·}ö ¿ã »£É‚ÑyB¥ëµ „§µo°¡¤\Ûkmµì¢É»­ÌÞ]7=C¯'~âÏ®~ƒŒÍ¿F1²ƒú¦Â³$pêKåDFQ–˸xcõ F1w#¶Òìqsä/.#uq Y‹‹',.œ«¸„4Å`†¢(KR\(?QÌŸ¢¸„ìD™˜xî%&žç2Þºvb¢(ËM\0-QX€–öŒA‘-im‚1`I2É;­  ÞKnÙg@š3,­7’ŠV³>²,'˜qût² hw°íh÷ö“ƒ'?‰BS¢"ØÐqoÌNJ-ã'ñVùèµfü‡ZN]h{6AðG˜È8™ø~?¤ÔCûQ:¡ÞѤR„aÈ>ohÔ7÷¥fÅèZÈ“!2äufSÔMLJ›—óe6C­˜óyTâqÙÌ¥{=J2SHZã^е Aé¦À_¤™‘4IÀÍLmng¾¢°AQš±G¤Áá„<ÜS ê îJˆ»ðGÀ¡Æ%fIáxb¸žöõ s™´ö…ˆ]%šƒfŠÌŸ¼[!oW”¥î.”µ+–¸;kÎn÷õ¾•³;[º®(ËØ](YW¨ºÛa¼Ù3SÖ[bPçª{ ­‚Z)¯îÁÐ*Þý;Iò%Â}-@ôà Ãûy ܶ޴»VWLäÅx•ºrKj~Ê»›š#ÄìýÙ¬)¢>6¢È‰ÔÍ çpb0 h\ÌxÜQ³T6[ö]bóÊû”î ›ÑÍ3Ù€–²ÎiæÙZÂ<©³{U"έñ5:_®­`+ UK³-È­•tªdØ Ûª™K-ŽÎ1‰_ÊP‰çA˜=¿ž|¹KDMÛoà)‡gu6¿äm-êDéX\Ø`aŽ›ÎC•†Ü¶ç+Þ8]Y×]i°tòÊ¡•àtˆ§Vžƒ=`‹âüÇÞ8MÆ/Žgùüy#PšQzð‰^CZ ÒŒmnx®C}j€»çK3¬á§•­wKO_zÇJXÿüKPÅ Öþj¤”mO¿Ôëîíë…WîĪéy¦è˜Ç˜Õ¤ô\'ŸMV? ‘–Eg,s—kÕ:§à°þX=Ä£Úg¦wÌí1HÜ]šày3¥ =½N³•Ë5Þ1v*5 9êÓÆËº5°zT(@¢®t¹´³Å$Füez^wb<ø¶i{u“&ƒëL*<…,â‡ó1h¨Ï`»x2A´lòH(Iz°pÓw¼G3T ÓróDï]¹]+·ï`c@3\ûT¨ÂÃmÙ wÛÿPÓ \ÖêÄÍn‰^³«=I®°çÕË"„Œ†ÿJ‰ÉÐOÆÈ<¿vˆ@s3Åkú¿0_{ÌÿaòyÂÊvÿý8¦Œäï0¶¡Zª÷ˆ\íºJx(“k¾‰¶DZƒäØÒ^ýñ9»åè3þh¾ûš³j9šA6x?…évÍúù¼ÜÀd,·²‹Á‘±¡;~xodfƒÍÁÁÖú4Ôڌ˦ýÕ8<ùÿŸõæÿmÀ Mäè¯:m€Ùè6ÇPTÆ£»q íYs –ü‘³â$ŽÝµvCƳvù¡Ì$F¢ß9Ü冃Îd  ¤8©˜f:€OoiûƒíÓØ¶ÏÄ+h[Ó:éÃÒqBAâ7©Ú‘:×|¾C½™Žñø¬Ý´½žŒ{ÚÀM›JØ›iãþGìÍeo– :¢iκK+Q‹ìÒÁ=½úmSŸa“öFH¤0èCÉ–jLÖÝ%04uc9tv~ulˆìÿw~u íÿÆ¿u<4Ì»ÒëÃ{ý/Æ ûŸiB«sMz•·êŒKÂç«ap¢È‡Ùï£ ¸–¶ŽYìbK¦‚ö8AÇ2–±Šú‚5“h“B Å™E³!õ}i6D|¥Ù¬4›¯¢Ù8“w¥ÞÜ»zSks Âg¬ìÆŠÎg•9¥w; Ö¾äRžÛa(–!§-¹¸™xéWç5©¸ê”ʯ¥I©˜°¡Æu¨+¢5‘%„uÇdxGÁ$K, f˜mÇQ°q¤NâP°g˱0M3{3‘T”ÇèY‰ÃHv-וÞàýh “ëÖ†Ú¡†÷†fe¢½öSg;%$ßòIÚouMÎV§Ôx)tÚ‚¦ß¨*αS#sX‰èhV%zŸþIÇ(ûר¢þä6¯óàÀg¡jEŠwµ“öŸ'‡³Ë?ÏÏöþ¤”ºx)~ûL¸¸šŠY1o®¬Z.ðrP'ìiùŠÛùqÍÜÇH7uFñ‚áÈӣǹ +§­*Ýç¿§IïÁÜ@Š M¯ɺ1N[oׂÛûø’A\_äà¥ëu´WT4œŒª oý¦¡é€Àdø1†ôvíäʦww£ñD¼zw±{²&rz¶¿wØ=|×É-‚5r=Ú“v‹düQJÇÍt2ei©JÛ³ýî’‡ÊÃÛ\º©J.wßïp¡‡š•|¯ [<ÚïA VL^r¥%²,Þ¦˜¤‹Ù·ïq©€žàªg­‘C†ã '‡ ÿ <*'–âí_¤4Ú"3ѯ:Iú†é0³W“ŠÐxÝ›Bÿpy¤Bq;HY︙ti]0!þ¼‚Éð'%³J‡*‚ü—>DÒ²ÿ4ÆÒz¨â—¢•aï·Ãî>IÂJÂÁ ÷^«Œ=à‡FÊ‹VÄÞd’ÜÞÑÞ`Y¨žÙi±û¥@? [sÓXÏÝ S‹Í%$•8ÂVÄ?nzƒ,‰-V¢¦îž»,É3óg^Q1ލó\)˜(#‰v]$Ñ >#YẠùÀr‡i…Ö耆Y Cz¸H•Èÿ›$ºÿþYt0D°Fäøåy“3 –ZtJÌÜÖ¶ Bƒ¡€dÊèJ3QÅ…MR9À ‹LYÈž¤gÞ”‰=“µ±ìå+Í샯ÎÓ£—.ÿCÖq4ÉYÜñÀ6Xcâ X”x-bŠÓT\œ8æ™x Crdǘ—àYíS‚…T¯¦6íHÕÈå#}6Í[0˜¸Ÿa[Q§â)oQ N—›5l5L _˜wV e‡àmáÃ"iu²jŽ¿ôˆºë4žr=)G¦jî†Øý¢õA§3°ÚÔçꇬkuÇéK<½Jÿ,BÜS©ëò;cÝt[à_fàÁeò!±à6Ý“”ï‘jÖó!ñô1ÈÿH¼§3‡ïWËì²tÚR'0—­0a>$pzr»ñ^˜òþAï§:m”6Ÿ^í´/N‚Wª€ê~0”d‚|—tÎIQ÷Çßsæ¯þp?)ê›ÓH©Ü׋phã#›eÏ;Tåeg¹—a-ÑÂGüÎÓ3-óP ÕÊ?³5D^o/*@å)vE­ «vÎÅ 陕z~vÑ=wz3µRÏi×®ØsùÆfp_5CçäeçÔ´7ó? ­SjM•n‰ ”ü6¼|¶·ÿËEœyG :9þyþûé>b=Ðoñû;´$ãµ9•»gªR‡–—“y‰g­žìbê+üogï:¯ã=;| ¯Úg)‰7X ^éêÓîyÎײ=1™³5¡tSý²=~Nœûïî¼Úå-ÎUåš \ŸŸµ;Ý­õWìŽ#nC󻜢þ'¼åð¤M¯ ßPpâÿ–úÜy³¯ûN#~éþ¹9¨” dÄéd(å:âr –÷i&¸˜·š•X¹küº[žAô†åE7^ïoä×êæ4>"5ÏÐÝÊÂBC*xìg·…æ±Δճ8=ëyÇÚA³Ò¦ƒÔ÷KÞ»›³VŸ Ù îâ-.p_DɱW5é i¿„cs›ÁDZì»EƒºpÙ+½yËÏÞ’w©…ôJÆ¿¤ÿJ‡¨Ô{}sAßéAg˜l¹>™–&îÜ`+$Ðô xØTyŽ»bU@\ËVU¶ëIÌOJtx+f€?öÙ$5 k“ceü5ÚõBß·ü¥‚ÿ$•ÈGèO~ba]ÖjÁ ­ TKÀ ³ÕRˆ–R ç¹¥y‚ªÉŠùb ÁJ ÑB ÑÚ ê‰mÿ‰òÒ êÑçGË*3¨gÌ?[V˜!_[¡zaýìVxÔe•e¸ Ôe˜§,ƒ-ŠUë2(Ó¤³x¼z­Ô`û+/¸Ö$G…£Y =œŠ£Fþ0ZÔ„o0ªüdª/Øà fAƒùœbIqsãÏUmìÖìU‡ÌÙ¹[ôdn³¿_Yè…Eò,]*äýé¥ƒéØ’dm:×ï‹ §-™N몋åœ29@úüª.Š•äp†&FªÔÀ øU”½œÈW¼b-DÎŽkJ`_…çÛÖAœV€ÒH¹&Ý8%ãÄnq$ÃïÏâÉáùA[~ÂgÑš`K‡U¨_ìÁÓ•ß$è(tË5È`¶½Ä-ýÎØlå!qÊ ;ÔbŒuOFUëì[:™a²¶¡j·\غ^¡fdnRp»¾)£f›’TWí^H#M'Œ“æ`£)P4Rñ®üù¸gÚŒÀ—:O›9¬$eA5hj¾D7kCÔž‰ÛñÿºxŸáç¼âì¥GœŠòü€%ÄŽrg~~  ÿ±×zî;ƒ0wϹ%ië¾=!Äœ½VE0Ï$¸FX@õõNƒ#z¬û-6²ÒzÙŠ,—¹ ¡àbIq¿×^6Žê­¢Ë;»Œs#Ëe¬âƒX9N-m$ °#¿'#C…1d ˆ"CX"ƒÑ4ûâ⌧cÁʘê„g¥ƒL0ì~4"àµÛ¾ïc”ÏHô>ŽÒkŸ(lB6kX=R•7BÙG ¢1O£ ê—«˜g7ÌDײ±¼PŽÐZŸcl9í½½Ö^è NÙ(ZTvZì7—.±Íìr–Íì²Öa,ÙÆD¤„„Հȡ÷¡w¸þVÙáÊNTóïpÅ\ÉêWù Wú\•ý­Ìv¬ßèyÜy(ÈZ]¤ qÆý1ÚÏðûÜ=s~–n”s§¾ÎFY|à^`£¬RÿÁ”úü¶ @Øõ²_ÿ]ÕØÙinmÃ÷/ÿ}«µÂ˜kUÿỾLý‡ûšý¥ó>Ûòçs5ÿæâÙîÖèÚ§]«æ®Äº·¶¦&Àõ8¥ÔÆ| …­f]‚ÿ/ZB@C¨¨„@Ãúv4{×#ñ*Áó”S\`CkßÓIhй.«LÂÛ¸±× Ù8_KÉ¥äÄ£tš¶è™–œì›5qÑ Œ=ÂX[4fútwº·<±ºx!»˜îµ:t¤åÁ…F*|›“.Ä釷Dœìª;0:R×#‚d :¾É%MÞ ä¯ˆ.fÆD³Á¢CmÓuîdnûh£dÛ¨Ü6…@w1:wàåó@tÓåWîð¹]pîJ`£F7].ܨ™o• »mBrÆÎ„Ûm?xĆíŒw—hWDð¶É„À¼«Âx/Ö£*L õÈ-W©1`SºÈ ýePÚ67ùW/€.žöùæbq='æw!+ɹ‹ u³I@Waª!ƒÙ-F®Êž8ìpiž¬P©²™›*kßÀÙ®é"Ù®‚^*©‹›C‡WÝÔè|wnÏÇdÖ@jº¶š§b%Ìê § ³jù9™Y+ÁœoYéoEÙ %þ±d†e$tPõ؃†¬"ÛÑ}ËÉá˜'›€ÂTgJ&б¥‹F®ÆCW橱HÓxpjy¨©~v'ÿlY¼¨~ö…kã4ŒÆ|æƒ>áˆù, ’³Ã™Â¥ 7«!,¯‡ÓÝ#;lÔÚ&»¾VÜ^ã³Aè§Xç6JB¾t}eÁšË%çåÓ£fåî¯÷oTví¿÷StûïNseÿy˜keÿý®/Ûþ{OåKæÿÖVëE3çÿin®æÿC\rôì¿ >`±žFl[3Á­œ®tR3e³z5€(Ü•ƒ^sAÁî¨Ù»2:óµ€ÑYfZ™®h¼ÕºÌâ%l4LÅXùk¾ÌlEk÷\Ep­—Yõpg±–_2xÚª¯˜P„ZßRž¿cû¾,5òâêz„’fÂCtpA@³JMNIð¡Rß©‡Ü)ûÜ:À;†Ô`‹4¼¹a%Û‡“Ì8‘EˆðAUZ Õ…–&vÅJ§þ%1ÞB–š„ßÒáÇšü«.ÇÂ|¹+ŸWˆ” 2iOò¦SV‚{KîJª9s#Â…¥~ePé÷hØåÕ ë¶šâpk2–³Ë(E»öWÊuÐrXÛy‚!;²ó¼È×K+¥ÝxQ£ªM~ÛíQ¬w¨ê±œ6b¿MÛFhÏ ³jkC…©*ãXŠ3)©O‡ýô$’­eÒÜ›7†)äÉ¥vBÎ¬ÌøèªìpâÝDWë3&40êø”ëHÏÊP,—+`j™1Ñ·)JA(ðHa­†§{Ú´Qç( XÀfŽøŒ O2AÍ*”õAGyÅdgbu^Êj¼²ºð«J||¹m G§—\ãJCO¾áZ¾ÂÄ3;Ž:5ÏdnüµÒ  g=¬X<"¥<² ›nv “;BÆë °Y®{Õʇ§ªòs’Twêa-a^7¬izIжãĪ;y¥œ jé ."³M˜S™t¹E¼¹,± ¬¶ß\ÁGIk‚(õQläOùU7çWuV#ª le‘Må`èqAt ÖÐÔ ºÆ¤MÈYÛeef®!§šã¸$¨¢æKÛ¯Ñ>ð`ÿsÞá|Íc‘/ê´TOʦ;#z›è{gÚD%›Ó¡‘´™Mþ„T;ºÆÉõ–jGŸÛS»bt'§PǗĶ%á0ÇkYd=é. ¢Ô½uå,ÿzÎòâ¢Öà4oˆä3–­·5.~kSñç¨ì­œÃho‹¥³ÕÒ•ÓÍVþúoÀ_/̧j­Q± YRƒ*t‡´VWá5µ”•®Í.ê‚h€ØÃºb´«ù ÚøþÝ"âvÁìªåÄérªP«Ùv®u¬Q[¹MÑžêÊgªh(ð¬w›ÐjÞ{ïH<ƒÀ¢ìÔþÞ&,+VÿbÊ']r‹LtÀíä8ê•×,õbÔI循ú©ÔÌàÖíÞþ·Ò½˜†fNÑ™F$Ö¦^£d™[Ýj¦LÎZ–°lHRù%€…;¸”iöv—Ü BðƒŸƒŠfgä—‡î >õ¾0À¾½šv¨•Càw$°Ÿ;1á»”FciÖãänÐëÛ§%ç Z”œ72‡‚‹™£üÄ@élà“…[½Ál9]ùm~b¥ëþð´‚> ´µrʲaC­Í k{ǬYúÖu&ªCEuÍÛò"%([•¡»Î”B= N Ê*ópj3Ä©Yül@Ó<ã'ç–ߟ8õ`vóÚ€m®| À6eɯUaäež‘¦v‚¶[†¤ÒÈ=c¤+d£° ?N­ö¶¶¥émËZó©!Ë…§9µ2érbÙªiŒËk&ìðr £s¹Á”ò£Ãiî^!RŸº“5ÿ!\Y­È ¨Ø0ÿրѸ¢Ê37ǯ.èîƒda4¶Ed )êiŸke¤7±«Þˆ´OزºŽÐ'Y“LSUeíMÿÜ…,…ûlãÁÚiKË HHÿGŸVÑíåL‚j¯¹U7RõPVHÐõ8½Ò¨6*{O5þÂ8P>x«ÊÍwW‚1¡RªJ uPò5<ðUÒÍ÷WÝã·…üp-¬¦äsQ$,h­øU1¢úìY/9ù¬šÕ2cJKyÌ€ë !®@®çGÄâ¢Ï1øIRF°½ù_AÑÆ&D1Dq±ÅØ=Wï›6F’áîâ|þê–©WølÎW†ü_S 9CO×ów}â¨\ø­;á|Ábx~عðê30uĤí/Œã¤…;_?B ÝëÉöIEO6ÐìIpÿ3ÕAl¶œêåoŠ¢ÙÏ彄p`:pä³£Bž–Ç”V˜)å ÿ>¡íê½ñà¯fN ˆ$‡™78[…åŠQ‰cX‡ž#¶È!M2/2Óñس¶à=5;k¬«VzX;²[.ûŸÆ’É„mì·Ûàã)˜é_ÞìØü¦ð>éŠl¥-°°¨YâÉçÆZ¸Yx-‚eek3 ûß¶6ÅadÑÙ­¡òÉ÷°ˆŠúšþïm…“­Mÿ“°ôD•Ž€$UˆÃñDkA%´óiö˜DruB…‡ŽC­+dÐw|D]§ZÁ.ü´œž¼L†¨C{„3#K¤&„Fžj>¢ü“æ“@ùý £.ªýüxô>×÷Böv6@žLƒ'V²Œ›÷’Cͦ궪d¯a†DË¢B­ £p¬kA0¨êvÎ:ÑÌWÓ/ÿ't(ÊåEÆå|ÜfäÈ Ž çBèÃÞ~ö–T\åv W¹íø*w™_å.íUn;´Êí„V9~ÕóxC¬Š!æ÷g¼‡àÏ O¹$'Àú&b« Û¤òÂZÿÃlÖµÙ û›BS>¤ýʘÒÃ^«üc'ÌDœÁÚõZ˜³[em€ý×Td†î5qЊTñ¤äï&”s;^×Ë«#ylËqB$%vý“0áÿ$ ô4–ùÔÄ@î8®UY FƒØM Ëú„pŽsÏ›”ÖÐC^LGÓÌëô{ÀN ]OûInØ“”2gyx% ò ç–ä}ÆÑ:ŸŒ,¡çÞß2·?襷dÅzŸ “±6ÍÆE¶ÎÆ“Ñ|s£Ž~·iA¦Ø”t’%ƒÕ53¢Š…YˆêXâ¾à,´:þ€×šqlÀ,Övõ³ß:˜…x|xç³àYœ?(ž…øÇBZpÚ”ŽÃ$5¬> Î…$Š$´#í‡+LÇŠá+"Àâ~°+ÁWìâ<àBØ5¹­JUO—e:<Çb½‡u«ˆz³êvá;ÅZ"¦^ lÒðã=ÐéqT±½Aä7П¦Ÿ×ûn&‡0K¯§0€¨…© S.˜JL?q” ÇúÍ·>F„ ádˆNíë·‰Üë´ j¢Ýâ ø†õpe2*&GBs¸»Ö•a0'䌿Ƨoqü>Œ>y8&zëâÅÎŒ‰½ÒKááW³ºƒ¡kfžEnhpñD­PaBÈž5̦”o©sǽäjcØÐqšìÜÄ ü&²™K÷íH¨jØéžc´‹àCÒ¢nùBÆI†vøÎì ‘¹UúCIó™Gàz:&cµl ."Ø#²hçAO­l8«a ‡Óî#H ´ïè\+~ !Méú…9ÐR™þEå+š)²0<˼%Ä”.¦:\ŠÍ¸ñwucÄ¢½û“µÂá²TXáã,b!T–ÃЧ)!†ñÆÑWŠ V Èž¯OE W"x+jtB¨+¢ x¥ûã˜+¢våÌØ¢i1¿ÎÙ¢8‰ ªáª–E»ûw’”!µ(x–1Òi™Èw;-1ÿlž…wC6§ÕÇ’èµ¤ÐøÒJ‚‹[ܯ$B…@[¡™„ÔlZMb¾O ŽršÀI¶Ñ}lÎÊ‹l "q”â]úV…÷°9O>lXGº‰Ä—1‡3fЋ֣JiEw}­]F?/êì øDLô®Hòµiý Ï§ã[å>qGðv [œÆfÃxm²Iï D`òE–š•ºÁÉ…§K)ªÙ“¬n„ª¯öÊ»šÈÙ“J/:,df$õ̽lXX19¼Z‚sÀúmÓ¡Þ8°¿ž[»—Ø %élþ´ÿÜÑýLhL,—ŽmÄ UR­<_Ë<¸.{Uà\¬¥Á¬óÁØè/’P5 ˜à}0*‡v@Udîè•ÌRX(EÃ#y›»-@øõäËÈ°Ž„§ž‘æ G8'tÉ2$9ñI¾»Î}¨Ò7¬®+Þ8]Y×]‘ o:ZhÓ!›({Ø¢8ÿ±7ÆPŽ|þP>Ì%îdJ3J>ÑkH/Mš±7˜þ9"3ñðÓÊ”B>W­ÒR~>ÿùœ¯²¡?Õþj¤E¿Ôëîíë…Wî$¨éy¦èÄt0«é p|6S$DZ°¼¹’ ÒØŽ)°zˆVHÔx¦wÌí1HÜ]ФjÑsŒöŽD'é8›pÓ£n´]ÚxY·6ÓJº^ =érig ŠIŒøËô¼îy›Tü‹ÞC°W Ï ®35ªðfG‰ÎÇpª{𯓠ü³É ¡#XNaϧïX½fxèJs°^Ì“84]NeÁÆÀinƒÂÏþ3žÔ†hȽÛþ‡šÎ‚²V'nvKüðZDzý`Ï«—Eðm ÿ•0¬ŸŒ‘y ¸?áZªö}æf(,×ô‘€v¾G‘#ïIòyÂÇìþûqÒ›»qðc£ÐÉ#ñÚíºJx(Ù4ŽïTádjli¯‚þøœÝr´(4_Š}ÍYµÍ ¼ŸöÆÊK9/7p¹ìbpdl\¹Lüã솶֧¡Ca™hŠg¼eÕþøßÿg½ù°B`ù#ú«N`6ºÍ±tÜñènœB{@Öä9Cjmäü²'ÉDüÉkm¬Úå‡2¹'>1¢mÉ Ù10vun¥¬’ÑjzKkÜ€mûL¼‚¶5-ë,'”ó"~“§: 4ŸïPGo¦cò¦ÃxŠGÛûçɸ§ô ÞTED7îÄÞQöfÙ #𿬻´µÈ.ÜÓ«ïÑ6õ6io„D ƒ.£‚+2Q9ÖÅÁÙùµa!¼ÿWÜùõ 0°ÿ›úI7ÁÃSO°+ ÖÖÿb|š2\Ôd¤×V!ÎêNȃ;Qäà ÷™•–¶Ž ÄbKž¦Ð 7Ò(ž­¢€¾`Í$ڤЇà–WÒl()à¾4"¾ÒlVšÍWÑlœÉ»Roî]½©Ioúçz]):Ÿ•^ïvÒÎãS‘Kyn‡Á_òÚÒèÆ^¿:¯IÅU§ÜP~-MJÅj† 5®‹Ø ­hU &†UÉðŽ‚ cÒÉ éØñ«´ %”á©s¨¡*„™àFY˜Èôi’ĘŠò²>+q²Ê®åºÒ¼arÝÚH‚ÔðÞЬL´Â~êl§dñä[Tèá ‚ËÙêô€ÃÞYè´M¿‘,ʃ/B¥.dR‰èhV%zŸþIÇß*ûר¢þä6¯óàÀg.<¢’³H<8nsuñRç‹@ d¬° þveÕ ,æ°Z{Z¾âv¾DtU÷1ÒMàEQ<4…`8Êa憵H 8ì¿§IïAЊÜM¯ɺñkØTJr{_06Yz%w>Iéz]•Ï£â÷ƒ[¿ih:`0~LÇ£!½];†1Öx4žˆWï.vOöÃDNÏö÷»‡ï:¹E°Fîz{ÒÀn‘ŒU.ÁÍt2ei©JÛ³ýî’‡ÊÃ[™OhÅzÊ8}÷ýz¨YÉ÷6‡åÃö{P€Õ“—„‰BØÜÜ”²x›R¸%¬ïq©P)of…Œ2¼Ì²Ñ8÷ <*'–âí_&ÆK9"( µ'&IÿÃ0ýB#kR¯{Sè./ƒvdÜ‚”õŽ›y(ìÖâÏ+˜ ’GHzOøä¿ô»“–…àü1ŽÖó $í×¢•aï·Ãî>IÂJÂÁ ÷^«”W¤m®½qNád’ÜÞÑ‚\çÒ ÙsW …­¹i¬ç.,¤§2˜Ä%$•¸-<t?È’Øb%jªáî¹Ë’<3æE¸3Ü;Ï•"Ý̽èº8÷2áÈò«'ä>ͦm¤y£fH¾A0JþÿˆM] Q£ä}ür’È™K-AìÉscÆ^×n²@ëU b!h‘4Èò™]XÆÑ #.I ß··aîÒëè¥ËÿõGMrVw<° Ö˜8$%^‹˜¢Ã4¤/Žy&ÃÙ1;Vn7pøS2_-"xœ²,Ù4oÁ`nà~†mEÊIÃ+”£^nÖ°Õ05|aÞY-”aOÚï埀ø°È)_™Çi.½¢ý¥GÔ]§ð”ëI9j4Usݤ<»3°ÚÔçê‡Ìȶºãô%šú_©!î©Ôuù±nº-p/3º¹ìw÷$å{¤šœì›sšxÖçÄü_ /²ËÒiKÀ\¶Â„ùÀéÉuîÆ{a6Êoµ¼ßO98ì´Oþ윽%cÞaC~°÷öT}°K?ãh1Ä‘ˆó‡$€´äçq*Ö OýóõÙ»ßÎßè‚=öšÎ^óQ“-€&ÙU7mi_%›7n;ý„v¬¾ÂŸÏ‹ Y¼€›_4„ÝÒ Zj3ný×Ö¬¨Z¯Bª8àW®ŠVÌQ¨"^a‚.©ÄŸ§ï$"O´»%Õ-‚Ä ZZ¹h…S¤bWW§ÐE(dU‹ø°«r ïMt÷NZªÞÅe •ßvýŠªµ#Š G|õûWÀ«ø­Áø*¤Ä£-þ=œùF‹ ¦œ¯ýNjhÚ e½ÉÌ´Ž6T¨ù„]mXB}þ—Î¥€™±–“ƺ¼*‡¶ÔIcÂ*Ýt8Iy곔K¨ŒÇRjwøs2ZÊcUºcÆÒ÷P¹C|s¥;,ÀUéŽUé«tÇòjwÜCáŽÝåVîøVkv¬—ÔìP-F]­fP(5 +!žšÇ–T;Ã­É Äã.“ªárJšJ:T¢ªè)#žëNŠ”¬å]bÚT ÿ¸7ü{-ýÍ—Á¸G–”dŸri8¦Jm8Tæ,ýQÒOnM@i›¹±«‚³ä¸T}ËKºÙVˆâ Í\”#ÁlSqј+‚.{«›6'ÛkZT³Š/qÞ {»UQ™‰ïªÎ„]ÿarÓºøJõZ›­í­ç­-ÄßÚÙ^á¿?ȵªÿð]_¦þÃ}Íþ²ùßlmmíøó¿¹½³šÿqñlwë?œ´Ê™­øàÿ@e„­f]Bû/Z @C¨¨@@Ãúv4{×#ñ*Áp §tÀ†&Ö¾§,Ðs]V„Yk T.#²…ωíoQÂ_-„{ÇÈc¯ôÑBxûÑ…Sÿ†B£R9Š!ÍëÜå\<EQL$îlª©À(.DÔ1ã3Ðñ› ÐñŒ(Ç>œn´ÎˆÓáÕ`ÔÿÄV ½BmÐA|„lŽçº“äc‚&vAG•¤8VÏ#[éQ„`E'ŽE(v6=n6ê¨Á~47†À%-ˆuOQ’ïÁ»Š$é:ÿàâCF‘!Cb¤ËpÉó¡Ñ&DÐ+±*‚H´Ÿ¯5(ÁlœÄa¼ÁŽzOM[~¦5Êûúõ;qŽÅìÏ}תîNKù:÷[ï%aþJ<£L=m¾ìP"Ëè“8ò9‰=BaïDº¤½¯ °5À÷ãâÂM%´ñôòMÏvÖ¡éë{´›I:O›…¥Ô„t$Øc)4#E€tšHcfm<-µ5n+ÇZ›K_gƱ,±³Ï/£êÁôj•N¯“™^GÄE6!„'˜uÇw0ŤwI³,Î;áͳ–¦1S$—¨˜©mdrU¦š=®Â%Q¶䤽ßùUQ¢Î5y[Akfñª½ƾÙÇ p¶âÀÏó³îÛeûÖfÎ/æ{VNµ%9ÕÎÚ©ÆT^iôI£¿e鉈‡©= Í jgz΂Nü1}Ї#2èÒ?gh;»hCor.üñzߘ™­Ý“GL0¢X3Þ ã1Íú”£t‹|Œb!7£ð=¼dù;ÃÅÝ5æÚ™bÇ8”%#ñ/Å’J‘óX)—‰Og& \G»*e¶³K&ù§Q«9®F µ¤e?Á¡ ÿš¾§ AÛ¶ËFý"þºíYÓ|Û[VbŽ— Û‚/uŸô„Áhk~ZôÍÈ'ž‘‡$×4Ñ5zÕ´×z~WÕ¾ª˜'Pn6bÃHر²1-“ ´¬¢šèE¶j³5Dº‘l4¼j»“Ú&ã6dwC¾;jÚÍxu>“É*Z¨¯²ÉÊ™û6í:œ©dÝÛm { |Þ@š‰šÞ‚ˆÚÔûÝ%ô~wƒ)=B#Ùƒ¥VáJaç÷g^`ízd6µå‡¯"Àg*ï“«4ƒEn'ÿliñõì‹¥Xóº÷iÍãènäà N]T£Œ¢DÙŠ^xµw/C÷»©gYõÄ\q§¶ Ñôɾô±€#ܳ[•C5y9Íõãû[g¤©í4ÒYeDœ¤2ûÖ“Åz‹]´wv.,8ņ Žе m+ ñ‚—eÿ½ë†&þog…ÿþ0×Êþû]_Úþ{o³¿¼þÃ΋|üßÎÊÿó —ÔlûïéÞ»Ží·=…TêI•„ UqZ‚U«¤šòvtý×X Aˆ¯Ó²rwƒ^Ÿ,€øVfnnŠƒäJln5D÷ÈÒ0ïØÜÑZUÂÙåYLÌR$52*ËÖÌЧ56A›{« QD­rh^I:i}‚í:%³–4_Ö€÷øÒh®GãÛzå°F’MMi!# 5Ò™#¶ÑƒîX6ê¡îNŽÑBxÀ­œ˜6¾­a°E»^7!X¹Žsì¤×÷Ô2rö2c̨ÏDÆøoÓ¯6óö©K+n†í¬Õ:O›õg­¶UK)d+ü§‹A€Ùñb“ &op“þBK¨ÄAèà>ÉH!§…´UŸ:d°Öà`0ú”½t¢.]Иɩx*j­7ëkS°ýµ´ñWä¶ùïŸÓÿü×O '>…Zk¸þWÉœ2™¡+Z3V¸ùcÁ“\Ô(^‰æñ3í#ˆBLç‡e™‘¯°äø¨:6‰à||¦gcû°ókç-Lti ?ÆÊ¦¢W ù*Ùgø‹g²y 3h?GA`²Ô¿7sÿýT‹XÜîÏ¿4”¹C¥„t‡Ë†8nw÷ãýcùÄ*Èí“}ùãDþ¼P%½ãÊÀ¯àÛXIóp û¹vÛ¿î×ÄVMKFÈÙÃÏqNtOÚo÷Þ”8G’LCݾ g i˜T âü´‹*κ{Ë,PÑÞÅH÷í× {A´IjÿIˆd€Y{@³Y‰ŽRÅ\’ô|ć¡Áw»5 “.?«Ã¾BŸRÃÍÇ+?u?m:ø ­9÷ašûÒ}2j÷´–W;èÚk’ºÛ8`sïwÙT‚l ·™ÿäõñìizCß»½›ØÒÛéíË<¿¯6pw÷¶²+Œpál ¯Ú¨CužàGÍ\f»†€ïpyd>ju¸`àÕ´¼Ž:‰Ÿ‡Ç¶Gèít0Iï_ðO±ã ÁÖƒÕ@X°ÊávJÝ †)ÚtÁTÛ‘k´È?†¼üýIYGªö¢È¡£[ï‰×ü‹hóˆ+~›OJÚ\É 5{›—Åò“rÙYÔ5eZ’滋•×øæ3z—­ëúÚ²‘øj)åJõ{SL]ƒI~3ðÐ’ø©Ÿ%׸ îÔ£Ïpf¢Ö¨aqˆž>Ö2ôÜ—ÕaJ°úËÝ”W xvœ5¹’‘³›oÔë¡ÏH†ähmF‰Tj†T­ñk‚0¹¦"ç1Ú†‹ñAÖÉÌ?’Y;5.ð´ø!ý©]¢¦J`ðù«Ž¿¢˜0™Ve,Üø¡·Òöÿ%ÿ™~Eÿ_óEóù‹V ö0òÿm®ìÿr­üßõeü÷5ûKýÍ­þüom¯ð?ä’Ú†ãÿÛÿåÂóÿuqÛ&ßÛ,*;ýZÛå‡*¨_dªm”~5Ï[‚–àxëVsºU÷´0@¬Wˆl”΄ X:m*ú$^³³Ö‘t^ ‰yÕLÝñ¡òm S%ß3N®§}jV:É= ['Ù]ÒŸà»)}úÓˆüÀ é`“ÌA,¯¥õŸ›Ï²ÿŒ'µ6!"À¹¸ÿx1DM}ò¡ÇözLyÿ8pŸÞ­ëÍí’Ÿâg¤·Ö¦ß׺µ¿êTÚb„†»;Y% /U•€·¥ìî àru$ð+Éß#=KXàN9!³ÛÞ`€æ)e РYg}‹jâ æÊñ7Ÿã¯¿$ïjRÞ<×'rìyó,Æ8þ5×§·€#¯½G^;æÈëªq´]m/’yí¡]=Âæî§7*·^·Ì­WDvŒ~Z5œzºáŒ‡¥Ç&B%zã÷êk®éÁï&¡kÒ↋>U`H`Z£ÄŒ*D}òø¿¯Ë *°ñi49“wM]cÉõ±}Eù> {Å(oO6VJ¦\Ô¸Ùª•°v8p>ý,’¸æ*óŠ>Þd¾™Â–@_5¬ÉgÓÈ>lÌ•Z_KZ¡ÁÎ!"RXaèÐÈ Õ&÷õk^<cH#j](6¤ÅÄ*5<Ê$¥¥©XU÷ÜT ø›@½WDïýÝs‰ÖPÇ=UÒ‚CôsÂÊþß„¦‚Þ.Ìøžß$‡§, }Ê«vÙ°Îwý/§ò³*¹IF5(Óâ¬ÜÒƒT¦I_5þ¶÷™~÷×LS @7Íß\Kâ>l™ã“u+ü÷T:ŸCï=¾påj÷.f·wiÂÉ缚ÓÌ12 Ë#šu›WS|Íî+)¶÷ÃÄV);bny*Z_‹™EU£mQŨúä‰Õ|»IǰÚPþùýšO˜8˾B{bXÓgµ€Zí·A¸—÷?w&½ÓIAæøÙiÉ$ äʳ¯ñ{XúRc-–šW¥î´–v„pv{ì¶ý‰ _­|4jUi®uk‡uô¢`.8ýøFù”¬º~'I—$æ°5ïtÕÿ:]ÑeûÆ7_ÿ«¹³ýbknh‘ÿg…ÿó@×Êÿó]_Æÿs_³¿lþ·vZ/vüù¿Âÿz Kn»Žÿçì €ÿ…Y`§ìÂûgg5»øõœcߪó豦~ѸѠÍ#°ÒàØÊ®ók¥Ô¯•û¥“À,2+#¬@².kÜ—™¼Y Ú"½EyI”£EfGh $´<¦>n`Í>}H†òéäæ&í§xšÆSÐt|%¶üs—”ÞL$ãñh,®FÓáuFß\Á] è×òð†T¸t¥ÁnúÝ6_ã¬CµKãsÂ:[¹’¾š+ –•…yÿ Xs]Jý|Æ NrXa¢Ÿ 90Yï–*Ù‚0 ý¶M¦û02 773ÎÜy1ºÞzßq—N*æ]–æåà0@Ý8€žÜR® ô.—À–Ë ¦”g î¿D¿Ì‰Rµ¯P–±µßÐNDÓ,éõ?˜¾}LPîm*—êP›ä—” {ë#oÄåùÙÅ>.> ?µžéÆß¡  :¢WI}ã/·î™V_x5}àõû=ìÂÓk½”JϧMG{ó€]Ô¯un_ø¨µÌ±œó6›ØÄÖ†Ëpjs&ÆÉ %oNÏÙsœÀfì„_À©‡nGð†ÞàæÆÊ2À™élZ ¸ú‘ÑÄ]^µ$,"98GFCè ­PÐi;žÞ¯vȦ²$ÈlÆÚ½®iöaÉy« ýtoøÅ®`ÒÆåv—£vn{Ã>MtQ,>ÃZ­ fÍ÷–ûz8”žMãCޏ¨åýçÒùÏâÎÞ£'Š|—Q¦1PâQ£ž›¨2êaÚK÷~‡<ç&E3èùæ®ý,vô1%pÀ)sŸûsþNß?Ã÷é^½™“wÖ Fæo»Ü·Uqosc3x¿‚Ïô&ÜŠúÒOF£;1NÒÚhîîð<Ô£ê…ëZn@ËÐîì@Ô*<œÒë)¬Ügk»Êòš¸Ì¾â~Cyš»4[¨|{3˜®É÷ãÆdy Öe±øÓ†¸tðç†L ‰ÕNd‡AsÇtг©à‰8…C„è]eµ3øø¯v} \âꌿì €÷:­`˜üúºÒyÝõr³¡°V ƒ¥CÍA«5tMM‡d$Ãgo†7ÂÇ:Â)f¨Ô— œY*ñäw-S-ò”³ÜY& *ç#vaØo¼J€‹ ŸjA˜ªÆÀHû>‡„Èd冚åc«4 $<*NŽÝ¹’ T³íÝÙÇ¡ö 1,wp]›.€´[]°¯C¼íøØÿØ ™9†Õôïð¹eýñT½ ðÌ´¾Ì½B¶½¼Ý4ü0ÒpÕvøO.¢ªÃW~Uwš|l7ùØh6&ìøøéñ:EBk˜JÈQÃŒ~*ºþ‹Ž™¯ðu|Gµ-ß0 ‚²Þ¿¸·ñž²óù‘;Ô}ËI´ý9Ë }h¿xtró|!¹)yØjÖŸÊ}åExØù!¶þX¶gxˆU/y§ÇîuU”"B(9€4ÚÏìápY—SZ-@ï)/ë@74ƒìvë;½—jÎüQÖlÅ®k¯ÆtÂÈ+°LcìqÒ²ߦ7¶%J4ëOjôŽ#Ú8Éö9æýëÔ%ôê'¬ª‘ñÒ¡ÓªëG¯“þ8éel`íMÐŽöM冭%®§cYÊ¡"Ðâ 7Ëæ†^´Uí‰ “©4k©{3ôù°ÖäHŒf ªž|\:ÿíÝšù q3X‰£oÝ1$oá7Qr.î®Ñ<« Þë9¼ï¥n\ªP*þ-«)C3X¹ê±VøI´)rçhc®ªæ=¨UTÝg—®Tjù§¿ÚåAòh)»d¡/Öí™ôÒXâŸÉOêbcl°÷ãgïvÒ)$š©Ër©"âÊ'Ù5OM|ª”ĺõªœ®hÓ¤{ŒÞó3¸*à®—•Ð%»¬¹cðžS=®¿FhûÓ8pE½òøFÇ64»çOm†N äM~gå êÄ<,OÕ „ÆÄrA¤ØX2ð4)Ý©¬!GTnódäL UpKóvNRÀcɃiÎ6l—ƒ.;˜A^£`ìÚoõ†üø ¦Ruáô4ö-eû é÷öþ§Ûen,Ýç )žj”4Ô‘}ð_áÄ áà§57#»eÈ4mF £¦‰2à4û†ý_6šáA¸HRRdÖH†BpXb‘ýA°õ¢!¾Â:éš-Íf™¦¨írªû­JÝ穳&¹è;6¿µpó[Ýù¹ìk±Â€\î t0íºÕwë :§7cGxý)¦Êi’?0K‚i)‚E˜Ÿ ág ×Úh~&¢> ¹,7Q£Ùg«‚?K¾ìüìãý€ÏQÿg«õ|ÿý ×*ÿ㻾LþÇ}ÍþRü¯ÍV3Wÿ§¹ùb5ÿââÙîæt ¦—~¿§˜'±*üso™K*þH¸°Hâ¯ùÝ_ ˜ÛIYªŽN¼"¼|ùѦD`Ub“#8;ëW_Ö;UPÃtù$"¦U4FçÓÿ»Œ‰b¨¾ á—}=·º¯²dŒšÍ™fìh“&ȶ‰Ð4%ZÅE#ü®­-û ÷pô·ánú~!û>µR.(]ö;rÂsÆN À[ß%ƒK¹­’:¬Ÿ<ˆª;•¥ñS#…dL‚‹ŸXV‰1gù‚ig‚ع'6…Ç•†ò™¢ä‹ÓO*ÄLJ3!ÜùóQlBí’šE…ù(^xw¸\Ñ#ÍG1dºI"®DÈÂ;n¦cBûºN&½tm¸VUÚ@d=­£É(6‘jeÈNþˆD]tȘ”’`úH¥ä‹@‰+[fe.È,©Â C(ž„q¿¹)_=ÆÛP‰à–©®Ý¦Cö¨ñR—êEu8rÃWnn06fâIZŸÐÜœî*çžR9˜¨¬GG{@”L~.êÄ•Ú"'Ì+ž0 r³“{¢YÿCrKYÀ(Pôǽ‰Ißà5¹‘|îaÓäv 0l»a£É7|­k¡è ôk¢iy/õäîbÙƒcN¯¹ÿ¶-îôZði >mm{<ëmÁ§[Û,²½ô/hK4üë}­÷WZ¯ç,zÛÛRsÙ Û7Íï¼/õ¦ñ³ø±‘ le…¿máoøßþ×ÜÆ?ñ¿-üNtÿß=AÜ=Rœ7™¦·üèkÌUµoéÂ:þ7!üÏ ~n¬Åsô™gÖ€^»6EIuPáïËfðŒŸáÀÃãvÚ¢»cÛˆQ¾¶ß^ã³%ˆ}§ß!/ßBØÓQ`p;jÍïþº2æõ˵ÿþšøO¶ýo§¹²ÿ?̵²ÿ×—mÿ¿ŸÙ_6ÿ·¶¶6óþ¿ÍÖjþ?Ä%UÏþŠÕA{ï¼EÚÿåbÿåYJÀqü;—Š’Ùë„UjåV˜Ó­ GÈ c%ƒƒ¥ô·\åÙ •”G5ÊK™|-)˜hJϪ¨÷¾v/Kô­Â7ïCÙ·q«d'ž¹gÕ"Ñq“H²7Ȉj‚J‚¯’¬?NïVDÐÔcÌ7 C@ó=cÛ“ki×hn`þN´ãìÃ)nœ ÝFMPà¹ø¨F{q+ØH^›Ã“eb¦P´.Fs¶UD'ý…‘jò¯º#óå®|þ· Yµ€qhø²NgTò*±[y[w‰á®¤¡úá™WÓ Úþ ËÕ !‘Ôp’ uˆa·¾Ö^S æÑ·¾R¡–ÃÚÎìqØ™1‡š|½´iÛµÞÍ$ûm·G±îà¤ØŽ8Qà‰œq¢¢?®QäŒBß…Üæ¥ ü}n#žW›T2tkCå *#mŠó-…¹‘ûéÈ-[meý¼QÖÈ*OAµgr^qÆç{eÞïPþÐcû4ò—ã2Ì.#ºhË­‡§zÔ†¨ŽÇôÔäd‘ NÎ2 Ö~¡«¨“²Úúõh˜µ©ÎÈ{¤&!F :4µe´îø ìçNø.µi[ ä8!8üko±RWо⼑9\bœñ'12‡]Ö {ŽöæÉ_™47•J”Ò¡0_Šô'Ú9zÆj¥µ PÍb÷81KߺΒ5ÉöûÓ1;Óò;¶si<'•O$8Ùô=®Ç«$‰ï5I"T !Rà!Jê8… èn„YÞ?O¢óŽ‘Îö°"/ŠD"ï.ÜÒGñ.qõèvçÝÙ[8Þ¾î\ÀÏ.«]®,Íe¨ßžt‚þËE±ß;iwÞœ6ª¢Ù{·´®r^ЬpÒÞ“?ÁìžR‰A.ƒÜ:ÁP÷™ßÒÀúàÁÎF“\9'ƒ…IhŒ{+4 ëÂÐ(q¹ö]|I†ÀÔù? IJ!˜I|áÃöIw_‰ƒx¦î‘ï—qxp ¶“GX4E)R9\,àB—ßf¡–ovÓNª$© Å“õÃ|ȧI<1У,=3‚æL8ÊÉiÕ„¢³‰Ê¶ýGŒ±:ã7¼&E‚„Í“ŠçVU©e`}{ H€åºŒ€ÏRã}CorÀÈnÉç+Cþ¯©eµF –ôì–—aëÎfÛWv ©#X*#‰± _~t¾°†þuheó¤^,Ûg6Â$“ýÃVË WÚWR4›«¼×Cyóÿ&lùܨäæò¤¹fJ…ò¡VõÞèÈëYÕ̺Ëê™uæ ΂*u0ú$ƒ¹Èh#CP2/´Ó‰j f½Á{¼¼»®Ö3XaeÅ~äOcéxÂöØ­ƒýÒf^Ò Þ«\­´ …Ç’›Ú%×™.Ñ ³®íïîf^ˆ¸~@¬ É+ÄŽ"5šb?ã ‚ú#¼·ZI‚ …Ù‰nü9ª”½™÷ŠdIÕX“8¢°Þ´x$hd °F.ïóàÔM’㬫ÆÐw|˜_G¨Þ 5ÍL^!só_Y r»ƒ3KDÆf\ מe¤¼ÃëX†ÕàðIÕq¶HÕƒ´+„’ªXJ—£ÐIŸ£ò!-‘ÑŒ¯Aˆ û]¤‹C¿¦ƒÁ+ƒÆ-ŸnÒŠm±™*‹Ækb‡ªï•F‡Zøèá˜×‚ P+Ômýì…ã9(t$)‰sŒ&ÿvp,d oõq8H}Hײµl;¾–]æ×²K{-Û­e;ÀU.Q¥¶“¶J;Þù¼p‰”‹~2qâ«o"æ»°™Îc&¼5@½&[»W¯#ðøRXPVYãK¼ìüïÉøæ±äo¿h®ò?äZå×—Éÿ¾¯Ù_ŠÿÚ|¾µåÏÿÖóUþ÷ƒ\<ÛÝüï(ÞŒ—›½Jʾ¬×•|€W‹ y»âéÌ0Ü.¨käÌ‹Ztz²öã!‘hvqÛJp’‹-ôU÷%èìVÑ«² 3A­.kÕOîü‡a¡Úi;Ñ\o3/f'jñ=Œ–Y6o“™ãÀÉ®°é(_{YôqÆ Í€š©B{æ‚Í\Ez¬"=s¤Õæ+7G q´ÿŠâ:àË| ÖhG{¯Þï)ûQAžãó—iÚÿ[±Ãvë}–^ ÇÚ‘^@cîÔ–Ms“SÕz~?”ãï9:²ÆM:ùöàS¸ß/ÞI$èó#Ï©&•3Ñ|y´Þ4IØâÈ÷eb7Ð÷ÔÌv°÷àœÊŽeâ'Ó¸±óû¸oþ¤*#¨ó•c{Ds£¶9îYGÏ~½fIsnžÔÙÁ¿Ïb¸v¹Ö)¶AZV^¶KK5úkãC8’] Ø­•Á6< ¸êY×Å\-d®åötT-Ž˜ÅWJN§ÌÐZš³l•°”˵ÿfÅþ»³¹ªÿö0×Êþû]_¶ý÷~f¹ýw»ù"_ÿmåÿy‹g»oÿ­Xíue ¾wk01\d[ŠaØ©’6‹•¸«*´ô Š“©âÂ\ý£W9OÀ$¨0ͼ!ITî~hCòãŒÞÿ:•6>°qq…Ù-×ç3٫㌳ث­Ä‚œÅy&{µ6R;d­½ú>à¼gñŽb,¬Ý?øöW7•ß‹‘ziÖãÃåÚ„cFߥX{—oý¶}¹2ëΖC[«k¥ž}¾+r÷>­È#D\X Ì»K5µÞ$ ¹FâºÙ^«àFH)t|bLŒåê°Ž“Pêe—M1w 6h¦QÛ hÃñת© 7³3*h¶#ÚF¯}¢b¬slÄ‚ÁÍ.ØUlÄNÖ~Ÿ“ ÚŒ»46„Û§$ê÷EÚ¸l‰ ’»ß·!Ù²ÿf“›Ö×´ÿn¿ØÚ†ZdÿYÅÿ=е²ÿ~×—¶ÿÞÛì/›ÿ­-øÔŸÿÍç+ûïƒ\r·í¿Ýóƒ–ÿ‹FHøïôŽRgíÎqCœ¿;QP‰a[ðéÙ»ów翟­–² ãÆ=î¥ïÅÉ´ßËØv‹÷M¾àþü¶7쀳S2Ï´åV>ö®?]%ãlÿ›?V³À"œ #åØ6±{^bÊ]Ð<[ãw­éƒJ ÁÈôšh­uÌI0ßp©ž¬*wqÄ+AÀª§ È¢›~‘X+œ%·iÎê; ÌéÚÚ¹,xjƒ¯æaÂ÷ß+2LC¡ižZ–?è‚,ã¡{JeŽÞCO'nÅ5¢§j€“Ir{G¨ ñpü¤Ê)dVÄÇm&n015­”mKÓ†i0Àò-“h 8w—gÏ—J´ÿ°ÒX ¤Töåö6ÁÒÌv%uc 77ÆB·«„hßC(¶C«’u´Ýè˜Fó|àÂn¶Ø‚ ± Q}€Ä*Ž·ÝšºtŸý|xt;¬jDؾÉà n ]yœÜÀÄö±.‘Ý£“'¹>Ê\+{•!¯GUšSÒ£*L õ¨*ÔÎÜ¡õ°‚ô®FºÈ&,#,wž]º´)>ˆkÚÿ`J2 GC &9Ä™ŒÎØÓíÇp¸>¦@´¦ªx›_èÕþüíýof×{X²† [ƪŸ4Iî2w¥²iø`7°?;ÓÖ/´x‘ô¢à?¡}XAÔðÑË!ŠÎÚÅÙa—=nSМEçS:`¤ø4CI=wÒ nfCÂ=–¬«¯7ëÙ„:ãù](v÷D,3MÐ.‹¶Óù\í ¦”wY„ʾEÊ·qÍ7óÞßà AÌàþ ï†)2º~Ì’~\êÜh¸K6P±v,5ø–_eð¥a!UÓEéö”FÙNRÚ†HþPú)¶@«+ä Æ/Ë^=S# }u¬ßrFO:4{-¡nuòˆ0,9BRóýM‚"SUÔÿ§ù¼é t¥C†¾’`É÷á穞ŒÐ°ÁÞKS.tA.Äô—d:ì1Ýš¦¬HÎ’özïùþÛÓx—)8¸Û=‡¬[#u¨ðŽŸþzwe±³¬ÀWð,ÚæÔŽŠyÌ Ù‡ÝN[û-ò/&Óðn/h]eOÚë}Ê”8iï½þÕJ èþ†FÙ¥9Ø@2Ž^7¸^Ô=}ã.7Xÿ«úÏtÙ¢ùýgx0üZYx€¤ÿMP%ÑÏ’û+·OgÞCRZÿ— ›¬€ijþp¸»ÃEZùÛ ífˆ6º­Ðü6aøÊØ{|Êó?Àš!¨ÔÐÉ»½š$€°,NP¼¡D¢ÕÆ éW 4À-\~ÑßÈ“ZâÄäF45'ÃCŠƒ•lÀ&­ÍÍð†Ù„C‰ pêò M®áDM¤2ˆ“C+®@€ÿ5*°fç¸U–Ô“ÆJ¨Vp“Ž3Ô57¨,‘"§hÎ  û:ƒSöDåsdÎ`kÐØƒ »r©# ¢vEl¾Ÿw'ŒtŠ +™ ƒ|ÄgdÁ¸}êÝa ¤Ì*‚dk]0Í•†®¢&+ÓÇó}ÚG•Î:ª¹MY‚¥Wþ{Ž@ìÉsúˆ{"ÜËÎ " y£b~*Ìú¼d" î*4Ã(刦íZÉ“|9øÍ à8é–vžF– ±nÚO¬hnåJ€Ä¡ÓÂu»PSÉ­6µÎÓ£úKR÷#àK¼FñÓOAÒÖ½„$¡V(Õ%ZšB£'a²h¾–/QwUq”x–P+Uó_›xï¹|mæÁ^ÇËj 2‚l€3–èŽ>ñ,â£\~.åøä,Þ?›žù7Ê„µß(KŠ áh×y]ôQ v¾dwyô;ëÔ&n üÊ9YhŒ*‘}«7ú™|[p^ËÊ7”ÌÆí‘š9ÜhÍÄȤÂúÖ~àÐß½G ÷Õ9 ©«ëˆHÙAý6ý¨Ý@õ¾œÀtQ6씤ÃÖSÌ­²ç<‡¡¿Ð7§™õ"ÅYÇ}©u€T¡ óº-Ð õ¹ZÊ'Y z7Ë«Â×a¿£ùÀè蔘`±ùˆ‡PJ¨¬”JLeº=ÎOeÕ&;£5#›@¬!³6<†ºWü:k›;³çÆVSjT,”¯ÔüøQjž?¥æ$v&¥Æ‘˜{Qv/‚‘÷BÌ|/ âïEµ|ò‡W Ä^AØ`(¾˜#_„ò…Ää;££?Z,2_”ç‹Ùâó…¢/BQúNÃݶĂæÅâk©g“Wg“ÕÙÄïí¢g““›LWç>Ÿ¸‰N3œNžV89½¢l´ÅÎ&©Oº9³&@ÙýÈ¥Aýkö³ÉÌ)Q|­Î&ül¢’ª–<)ÌQ²Ÿ‹æY«3JùœUiMÇöÒrdÿ=#¡*§y; b\`'Ù¿þ—ºW­ ŠÆtXÝQd­5kVÕ¬Û¼ö<;¡KU)+©|€õû=Ò’*uûˆ0ÏðûíÝð,=_ÔÆ_Q¨a’y©Ç ´·6\›eǨa·€$TŒþaÝ€«ëäÓ5ºÝ÷éùþÅÅݤñ­& ¼ô Ü ȉÆL³ „•†Éù¦?úÆ{âã¦ÿ J¾»D•!Hx"Idzé=¨Ød2˜ÞâYÚÎé>…\¤t¯Ôã‰ây6"ST‘õ}´×Ty‡1¶ €þäR@o°òÒ‚ü …½’€Ð9² Š1Cºÿö‡Ó1ry5¾ƒ÷ Ívþltw}ä˜~£¶óÏmøH¾OçhéV„$&ƒË»‹ë”MÙ=‡°=Ð;%ÖŽ£ç'Niü¶ÿæšû2ø¡)o`$ßÂqnˆ"Edšœ'C‰o9>G3‰è— 'ôœ§é7c£"¥f:˜Whj+ùF$šÝD.Bàkñ¢ƒh|ÚUÓæ|4üæÃû½ 6‚¡­ZbF2ÒÂPrýèÁßA=QmÄÇ¿”·™–‰Ð–âÊFŒ‰‹WÁvV#³Uã¡v»l«ÝKÛ”k¼s! 3Ìxaej4ìô‡2þf×í"KP*(ühãŒ|ØCªkÔÀ—[)ÏÈçV‹Í}Ó»ó"µ³ÉÄ+Ê5l™Yj3›Œ¿iü¹qÞ³ $qßRœùhxÒ€ªDD^šŽô‚ .{R g¾h­b…'0Å«ÞõeÜ-1Ó’ÅÛOÙ…´ç/$G„Ýb &%Y¯1y”%ô§ÓñEÒ— ¡ºhµÃIM.yßeɱ_¦©Rç…\Ÿ?¦ÂKB‡[r_ÐÇ5¦ôiÓû´JÚ$¬žÄÅ’ÚZ>ÿüòåZ¦»¿¥Õ!ó‡G&‘ ]ð[8›ÿŽšç¬hO×~1¾^ÆÖ¼¤Góí`‚à 8ƒ 8jL-na«{‘Ü¢¸&#׉À¾¾ôYZ‚-R-|ãZ?°„Þ»] oñªŸ y­y‡]Á§Á¿ÓŠ3mÕYMІ‘å‘F$Øcƒ¨\R-Tù*ÈtVâ<#q F•é•|Ci.IÛ°1̈˜ú0Ëü§Tö¡±–og”RÙW„é×kTä!,#õ;[ÈiC–Óôàì݉úü`“»R_tO`©&Á…g¢¬mCþ“U#†Æ§¦pÊ[Cù¹o¿Ë|;0{o·3ß¶a#·q=°’Ó#sZæçÅ4$Õ¾ƒ¶KÂçÓ¿AB µ(Ÿ‘ȇþXf Ä´"_¥Ö¯¸@ë?ݧ†Bô cž­.¢–r îÕPåhÊT×”N‡6E“ ´ÈÞÝpø‚ñ*öܬԶÈR%K‰\e¬Ó®*ÁOZîÍN“{½´?•椰«LÒì¸kœëA8’1ÆÒ¦mÛR„øC™)áý˜ÝZ [ù%5_/£›æ¨,E<é•¢Ç$ÛÎÀ÷ÖbrÀM[±vÐ%k4cÓoî ¬6Êç´èçP+ WíIцðjˆ=u1Ž"¥îì]¿ÖcP”Þä(7Vb•>úœÿL5ÓÃd±03½mÿ\MŸMü×Ö2ÿÏÓ\KûïO}ûïcþ¼ñ¿¾Vo¼ â¿^-í¿Orñhwí¿Ý½ž@ÝéþÙSËñ.œøZðo×cøq†¿Ï2ξ{­.·é'¯Ñ˲ð*@––‚Lm*RÍÎÛÜOª;hÆî”ÆgeŒÞÝ“öô½t¡(€¶]b¶SwkÏ·yge(qç2zƒè‹äIš|uüÉt<¼Sºr…G€2yeëò–/Ö%|‘ÖWx{ b1”®D7#° éaÛè°YQ)e{*“ ÚJÑèɆÜsþ/hm¥;ÄÈt–ÜPr™+yRÌ?v2°éÝí`¢Oªp˰RD[o'ÓAuW&ÎÉ~ÛÑÊ:Š\•=¬¥À*<Þ®TV(;ðß…CÂyÊû*¸ÐÑÄ’áxöeL¼s*$‘N (‰L/5ô‡Ê»ÈX=çh™Ð®IòééP¥)JZE$µA­â}DPò\F¶k²ìÅÄ bóÌcuÔAo+Ûé~Xsh4)#ÊîÞ½[aÎèIg|…(+©A“ƒ4䜠ÉóÌß.,¸Ô Ð•ò…re§Û.2`sìtÛ5¦ÚÝΜ²Ÿ…ñòª…LÖå,†Ú‹€I‘Í äeHJ7ËÙšå¬Æ”ÂfÁMÑÏ3ûǺfc³\òBÊ~Lý‹kS#Ö”Ùïž•þZ%dï¯*¥#Ð1ÉqÐ+¾ý÷ì¤{ªW’ÙäÎzÇuÅ‚ý%·R9üs¦Rµ¾_Ê ¦<+o0Él&?Á+690Ñ' Dõª2+Ðzz #f‘tmbHK ¾‡ôJãxD¿$Óñr·:È’Ói6™„•;Í,däQ…Lkš×ä"•8o£«”ª%RÛìœwÓÿ ›¢‹]ñ&(Í@–¹îžÎÐcØÏ‹÷ÎË(˜æP‘d*êñ ® ; 4ÏŽ?Tä"Ã?àÑâÑl5ßqèƒ³Š“ÞÏ‚´°KÑ&ù‚‰w ˜z!:êÈî’¤÷K$ fJÑŸS-¿ÃàTú–êb¾~l×þóIDˆ›‚ìWÖýW`]4wá¯á»gEß­§{3·öw÷ziíç,„Ø„iFÍ:ãç×¥:PX+ðŠ×Z¨øÚŽÜL˼—U›ÎGޝö–~=ZaKI;<Ì>—ÛáÝTb|jB†á¸‡Æ÷0‡¼Ï¹ýH¯5@§;äÃy®UGóìDz3÷Óz€¯Óý—Xž®ÑîØ"¼C£ nà¶¼þW,á$ä% ¾ÓKk#ž\Ÿoá€=K†&=àÅ÷P8Y¡B öRÓ«ÄKa®œÓá’\ÞÁ<³æSÀDxkb˜…<š×Þ`¥Œ¿¾âŒ†ÎW¨ еQÆ/xûu:§8 ÍAJ@[Ø2\S¤4¢a~[%Vñïîž±qÎÒ²€\ÞòqÀäü¾Í ò/(É%äH\ ³­3v ‘5ŠÖ~´îY­œÜòIæ ¸’kæ"ÕÀí%h«v.ÿΙÁp7ÀØ(íj¼í¬6nË'ÓžSͬž[M¥hÃPP[7¸ðp+œ6Ïlea7´ª«ijUå9èp×ÚT åñ°Ê\­[¼ƒñöÞU}Ú‰6¦×¡Ó¡”U½Ù‘e †NÐA)ƒ¡“>,¦ŠŒ‹ñì™ÂË™ÌËIÐ{¨åJŠ–“u6ÜXÐl¨¦†EN‚Ö «ç×ålè½̆‹™ ÕŒóN‚îaA˜]j1½0YÐèz7ì; ^}„s%Ú­vÙ Uí½ì™ÚËnÇø¬“†ÃðöÇ¥¿t9‚{¨ ÈÄÜŽeÔÐ¥z#´ÚWFÛª©iûÞ`4†óI†‡ƒ©ezÅl¥¤¢€2>˜ ‘àò’£|BÊaÄœ¿PÑ:fï»ÄóÁ†}“MÎÎÖ½œa2ÛLq–ÅUÌ wô%æ³T|ICÒtïU”̘©ûÌš9ò×›Z)Bo•[ èÆdÚæ[?™&¾›)GaûØÜ³%Š8áq q5Ñ s»³{¢¾"a[å¹ÊØ'¹$ÃÌ„Åã¤èQ5àÃ0¹,8t+úÕËÁÅdПJxãÚ瀽¾²Í‚Ü4ÄåË`_”©P²+h}E4gâf OI €zvжôAx2Ô͆ƒ‡{ÖF¼[6·[5yL¦»nҙᣠÆdvmc÷h€Oýdäð$”ç:é6-¹ºñŒcï¶ŽW`¿ŒúQšªI‹ÉZúõ"PÒ;Ÿ0ŽÖèê»ô¥¯z› ™Ùe-kžÝ&Kbö,JÔgÆbøR~³"jÃAm³¯½ÇiÒ” ÕnëËÉçÝÎÇ2trÙ›WÕt¼bÌÊ6MzÆÌÐiöPw²ýè˜Y{XHÐóoJ¯;÷]Dâ©VûëÎÇt™Ô“‘~ M•¡zÌÐÁqCÎ<àLBÑÕ‡»eUuJ¬O,³m2µs0áü!×¢”Å-ªI²W_¹ØYkœ3a­yµµ&¶ µ-–æÁÜç4söªÔ˜)‹Î«”E'¢R¸Ê^ £Ò–Ž–t6`?0œÛQ$>bUFYs­ŠE`­Šl¸U!ÒWIêV tÕ—“TÜÕ=xu+U\~Uˆ,Ö=‚•9ÿ% …Õ¯ ĺ—+׈Ö=kS÷KjMÕiÀN… ²ñZÅüãA.g@¸ ÎÑ&ÿðºé”©ì`§ükÊì¥ß 6•Mš8ÐÇuÕB¿¦ü=õf &6­šÐiüU AÞ¹Ôˆ´îž1e,c¤ËŽÿ›þý8@÷ˆÿ[_o,ãžäZÆÿýÔ—‰ÿ{¬ÑŸ;þ_­‡ùßêWËñÿv7þ¯÷®äþ©€¿eØžu=8ï5ébbòvç§³JÄQq½w.ª §òµù1q& É4˸ÿÞÖ ¤/{§zþ­Ú)šë )¼KìÓ3ú¹M±UL #è‰ FyÀ’±(Öar~*;bˤmÓO¨P³¦TÀg¸›˜AWW×ó‰Ó±=߯'™´É`û8q*Åã¦l2»iÑG^ ELÅk]õ'—<ö¢‘˜*6Ì&2rjÑÉäzÑØ¯B‘S‘0·{Ì “澬@3•®O(=‚êq˾{àˆ¡AfœYU#HDÆÆ)1‘˜™¾õI„ ‡™Úu+_KE„e )¨¸š sdË~Õ$º‰ÜHo:ËÎcE«Ìï”/Ñú–SnáŽë÷Iâ–ïE8žÏáE¾Ø7ØXÍën'Òóq §G9'®¤LŠ ;Å@Ðlïñ@ÑlmôÖqÆ¿L2Wo3Bu̧6ðWÆY#ÒÊ©zÈÞ»¥r¾ËÕÿ}}.ø_›¥þïi®¥þï§¾lýßãŒþ¼ñ߀›[þ¿±¶ÿOqÉ%ÝÓÿÁîg¯¹sòpü/ÊIYY€º†½UHÛèÀ€©ÝT M¤n{ FòŒ‚Ó%Q€ÆkáTÔœ¦¨MIû7—æTg˜1ZS$’©8mÙPcã‘{”F}+W­%!’¨ùA j(*%!¥®¿Umœnže8ÁAÐÈV¹~ãçê5ôšF™&Ÿ†ƒ–®îåvT±â4ƒâkˆ‡[ëd5Ø.>§n°v@¾ïá¥(½®ûK§YR.Ëwmà1Ù@šrWê;'ñSD¨Ä!¡ÎCÒž):5•räð”eJÓRoº =+Ž\ÕÎÖ„+ øÀvósG]Þ›ÆËÝJs,Ÿ (8žÒmQ´ZÉ”¼‹ujŠ:ƒ¨aí¸±ûV̯Uçw3»$à8ŸÆj¥ÓÇØÕ3™M&lr ö”Bü’„øœy€ÐÈž[¯‘ôFŒ{‹%\Ê"8‹]`rä-æHC…„öË ÷‡DcŠ£J¢–,CÓ_Ü ûAõ$A#h¤A$³6˜â‚PJuÔ ¤¶él±T×úi¸öÆÏèrw9y`kO%ýI±ÿDòªk#$iP¶<™äåf|™Èk‡ÊŠvbÏQ&ÇÞ­ìGÕï9//Åàƒ„=K¬4h»Ãi± ß /° åÆ/ÚÄQ0—ùÌZ ÷Tj) ÉöU&©•ñØØj”Ø4œìWóà ÚDòíDÞ˜ q‹snƒuÏñ”œ“œ¤vVq‰‰õXë!=–/~ùæµ"v¾ý×zHÿ=i=B3á½ " YŸÂ¦§Á"ï Ù6fJk³Ã*n´|\ØG:• RЧní0³7§j[jŸuér6 ü<ÇÎèí'ÖV³·R“Š›Ç|B3®8Ü©¨4$°Þ#Ê6ƒ¦Zs«’L­ P|ÍerÑ—Ñ5}t1æÀ&•Òp‰¹DÈ|,„LŒ5‹µÑ!ó¾Ž*e¸ÝÇ ”¿‰lOy2èŠk /B½U* Jm©Ž7Úí!ݵ"•ö›` =GÚÇ÷È‹ ßÄ)kÀÓKÚn½$‰ØU”îñJ[UI™ލá9dM¯–ô5Ôik¿;3ÜÛFê×nIšH1Àžæ.èì:»’¡‚ÖÎj,`}ˆ{ËAÍœ6¤²+ʺ±e{{‡¦©í§2Ÿî`‡Ú™OÉîîZÚ-4Ç‘Nò)íó>k§ÓA]=ל0µtÓq+I†A¿nÂö¥Œciþ€)NìT[9rü àê fŽéjÎsº5Q àŒÁµG®•òÓÀ×f82ž='£íÿ7›\=ÿ¿­Í¥ÿÏ“\Kÿ¿Ÿú2þ5ú󯽾¶¶äÿÜ\Æÿ>ÉÅ£Ýõÿ‹Æ,]ôWæØxßNäô¹È8ßyC{¡¯ÝØÞt›™ñWÓ>gäãUÄí¬©ºj+W±l—)í,%,o©§Š³ýGƶ°tÇ«ýÓ·zF杻mÙÁ­…y6 ˤñ™õóü& Cäsfèæç´ÐÍ`ù7Òü ,vl·D“Rš$B®‰âËu20¥×qJ_ú¡ñÄ"€&†]ÏhŒYû§ª°c+,ú鬴Úð@« Gl8”¿Y„²xqI¢œüPGowSC}ßUQTÂJü˜I,U„§uÈÔhŠ|•f{áêÞîJu䆿ž I˜;-Q’-Æ Gl^¨‹äáFk;_¦¢Øš¿Û˜Â†snµh^¸+so…·÷x¼”ü™;oèN;r§¥¡>ÐG…ƒ£(1%ð>}¬Š½2–Soà7U±ÜÔMØÞX­sŽ€ hc[}»;ߢ·•öfÀL@ —`þ;­®v˶ 2jò t¾‹î© ”˜|KYÂ/%«õ‡‰²G#ˆÏiÆÕù›†„öÓMÙÈnÊÕzNcú¸Í¹ZOoP÷^Ë4YV£6L£6 6j£`£6ب Ó¨ë9ÚÈkÔFf£62µ4j#·Q×M£®lÔõ‚ºþÀF]7º‘Ó¨ëyºžÙ¨ëº4êzn£n˜F݈NèuwB—kíõVìËÒˆs¥;_T€¸öÎîa:Ã,ãÊ¢À7Ö|$ØTãåM7;Š%LÂO|¹öŸés±ÿlÖ—øOs-í??õeÛgôçÚðv`ÿÙÚXŽÿ§¸ä¦Ì³ÿØÉm–0°9×`°‘3ôp?H,H Ç9cïÚÖ À—¡àß~T´ ¨ áaËì,?éorc[cƒ ‰˜o„šÊ€ãK•ŸX†@€lŸ’ÂëpÅM*°c}¹†Ú{Jþ’e‚ v9HÆ*ªÁ­E棸µæ-lÂÂ!ÖÚ¦ºÁidäFa{†Ÿ ̉88ÊÆ7kØt¨ó˜À¹ÿz€½ ¬3~õ)ÆQÛQÉ`ìÔ{ùP½lÀ ¬—¦ïoDL1~>ƒpë"À½‹ ³bmµuË&R|œ?8D»}Å#†DȵÚB3°éiX°îeåðEQËè\Q¯¹¨Å)ظ)=_×|U^®Û:äN¯6ì&Žž󟭊ɱx0Ëéñ1TU ndƒÂ›Ä}ø÷(Ûs†µÄ(6[wJ7Z åýŒræÄí5YRG혃ϼÆF%é¶Fêø›÷éh჉MÔÞvkæ‹»H¨ ¿gEšX}Ã8îdËè7ï:;ÚÇ´ÈRcS+ähwÑî|ƒ'«Y¸+¨š]Á2êcÚÖÌu®.Yæ’ïl£•Öjoï–jrôÑ´wT¬Rž8KïµÑÖéìcsDzt¨\-ãÌ©»k~QV¥·koZ5ÚöD{œ'‚’šÌ¢'^S§t6pïËÙp·miJgçTÉ„I «™©Ç’¿yÕϰ,óµ-/¼ýÿ´ñ\ôÿKýÿ]KýÿO}YúÿGý¹úÿF}+ŒÿX[êÿŸäâÑîéÿ l‡–ªÅÕ}ÃA¸}í~¯±Ôî?•v¿-ÕûJ­˜f¿néõÅœŠýµ¥Zÿù«õÅcéõµ~໫õµ.b©ÕîZý§R©Çƒkö¢¿îõv¢‘-óê­wÞvöãQ<9J낺ÎÃVDߨՠqtª[Iî<ë5öÓ­ã¾ÅÓlj|$Ÿ¶Ògk.od½UÉݧðÚdÞ·3žÒb|Ð0ì~2›j™¢,XÞª5bþÖûZºizÍõ,¶ëÃœŠ¯ðÖ¹S°ƒr,Ü öˆmÒ4bkèÏUú\ed™†}®š—Õ‘yŒíW§œ5t¸PAÎìØFÀ‚G}©c M0“ªõyê¿*ëßÒ%®g–ˆ½ºöЍî™/ìØ}‚„ñn°+ý¦óuéä(£¹Ž¯}´× ¢ˆ€0tÉi¦L1ÙX3DR$Ef¢c1ѱ$¢ãiعN›ùýŸZ7%h©²°«|~•.#.væ=g&½óý~Ó«BÓaÆØßzج¤ä ßÝ*<fÏ”¿ú%o>úu1ó‘5ÐÔ0ûõ±'¦WóÏLõF¡©)UD$•µOL–¤ 5}™²äEÜcJRÑœ“œ-Tüõti©×ãSW=cACøñŸéVÇ^ciu|f—±ÿMƳï¢ÿWö¿úVýÕV£¸Vߨ/ó¿>ѵ´ÿýÔ—²ÿ=ÞèÏÿ¯¶6½ñ¿¾ÕX_Žÿ§¸äDzÿußžÐÎe‡pcñçÎú„0ÞÑ ý»¯É0éO¾ÅÌ€çm„«g%Òµ7@Nï&ìƒÙ™Æ€Ùÿ¥¶T}n.û_äý3™÷tçÃ\Æ=èpxŒ3 bÏÜû˜0r<£fŤã©(í¬pʆþP%@*SL”Ò£[%ÎäˆPŠã6Œí|Ð9à±Åa¹‹‰V´;–@‹YèΙM¸™¯.§+¶ ðÌ×w3UOØ8ê\>Œøì½S>ƒcV¯¬xB9*PÙdt1aÌæóÁì æÖèˆ&@Îãdf€ªJ’¿›ä@Ð ¯ö‡ÔjˆV»ÊçÞ UÇ®þ‡Ç®¾'N !ªç}/ÛÃ.z‡ä§Çp ˜sCïÄø?¦A„ÿ7x z1ýõ ‡ =ë<À#n§¼C’¡Z ÏÎ5Y‰ïkÀhãL÷!c&;iÓ„¤¥,1·jóJ[Ø#…/0JhPƒ—uÉ&w#4r 0NÑÀ|‡pKüålla·Ï,¯æöûÅ{ÇVè•’¨"fùJ™äzÕëCøÖï­Ö[F—¥Q¡.D”2.+Pð Ë",-@ÏN3 ¿ágÕU!õ =T9H ÖKŠæk)+Fº°Šm¬VÏú+ÑþÀ߇lÀÝOçcÔqšñ;#„N1Æ‚ÌV±%h»I¢-4ˆÛëiõã?¤@1çÿé-ÌHÏÆÿ÷ÕÚrÿÿ$×òüÿS_êüÿx£?ÿc«¾â¿/ÏÿOrÉuÍ:ÿ÷Ž)ÛvÿmÃfï¸ýÎÏz&VYºwà#™ ·°©R†ŸNO¤p¾¾ Dyø&EƒÌÞà\¬­WDoÿÏZ1Ä=ÑD2Tv÷Î£Šˆ•ò’ãÜ<–Ú ”£¹ô$ VZ¡‚™J‰Î_X¯bj©Ô~úíæf€.º$‡ÐsÊÍÓ˜Þñݘ_Ðnù´\>ñ¼O\ÿåÞ1û/“²Ãd¨¥Ãñ9fÀp‚Zä Xý»Ô\Y1*” ~H&¨¢T¾P™ý©NÈU/E‰Óe•ú+”/s#XÞÆpN†š §)®É0ä§ð÷àÒ&Ô§¾ìv ÍÁÄÐ}™‘‰{% rJ/™g+ì ­bwÓ¿½W äÐ+Æ}Uõhm.}T¡ÜÍc—V†¦\‚ÜÊËFà²{>#¨dà«„çæn8KP»'û»)ÍIŽ31‰ŸÕAìÑ}ˆ]ŠpEöu”MFŽšXW‘b¦„H£åj›v]JF³Á„3Ou¹¦³ÉÝÅìnBsë®'S—*†:2id„ú »‰yÆPL€ JOðÝ+AyF:[f*6‰è©‡w³Ýy×9ZQZ[þ“³bÛTôô#‹2õã©ÁC’ _^Òï•¿¹Q~6é˜Åû· †ÿÛN«’ ä±¢¯µºVYhfÚ<0ÜæUÄA³—‘W–å)• Ú#äl zÍw­’XVæIpÓ’Û.Äךönž6z˜!U@!}È”°¼-G°|l÷•ÃGEó ù߉BF«×”רýQ9hó·pTŽHêR;u‚Ç’z†jZù^³¤ igñÌHÑ:7y¸º» Ñ]Ý·¥a¹³ù;$ZËáÈõ̱}B‘1=çãÙ OÆðÿ­ãŠêOØŠPÞLtA³`Õ.¹se£~¦ƒ¦ $²,¬xº+ØÚ>Èu¤¡,FàGU¨ì "„Ãð|jý]^jõ¡ÒXwn…ZPÿºSç4§õÇ©ï*ù ¶• ¿‘ Â5o©Å~ìd< O-˜œþÕìj u®ÚNƒ|øìF¢ ¼Bð:RáÙÞ™ªð{g¤[ýsÄÕo¸EÃ}ˆÚw¯à~¿P{x*^ÆŒ»¸¥u[uÁ¼u´¾B¿ËÖõ?F™LjËdíãü œ;¹E°Î~g«‰„Wý—j·†ÃJ¦‰w5ÿ¾K%M†s©´õÿ7?ŽðþëkKýßÓ\KýÿO}ýÿcþ\ýÿÖ«­­Àÿw‰ÿó4vWÿôÎVÿÿÙä¥T;n·Nà+é¸ô¼—2>ôŒ)ɹñ±½è¨ÕíÊIp>A !àð€jÑ©¥ªJÿ¯1Ü“žP’æ7ñÛkÑÞ^÷ËÍòWدžfýò· ?Àê)ºMÝ€7Y#ÌšŒŠøJߣ/GÊ¥O»òÁ=Òݱj )Y:|殂H¨ù$=–ÔPb2ßžæ;Oõm…ÍÓ+Ó¨*ÜÕh;ï[’Ûþdæ«ÿtĪÞãª8T8æ½yŒŠÁ«ñŠ™þ†2dä1BY+yçŸ 'X¼O$vÙ6ké%rÉCUr á_lɧ#ÖÃŽ™±<%~–ßêÙŽÕ­³Tå¾órGÜÀâ‚IIá ?ôáó“q­{4òmö"Þˆ{ü¸Ë"$c =öÚ$U¥«jä-Á¤ÀÃ)*›^bn6ç‘팾âšewNYý8³ýšÑÀC}wƳˆÝ]ªCÅ]Å×bµT~æç?zÜ_Œ¶Âƒ±n2g5~Ÿj‚î°0'Ÿ q÷ëNéñèLˆ{Œšx=ñCÞò¢×X@‘;|u$>ˆÑ`p©¸žfÈ1RŒû®4å{ÛëÅ¢T}¸ŸT}¥j”%Tßjº'pè‡ÎsñeæmJôë®wq¡ûpo¡ûÀþÜ÷º'1F¶éƤa,ió ² f9ÚÌ^’Ä¢á™c¾8r9âhN÷áãüÿàσŒ8t…†%5~káSZµñ/4ÞÏ8§!0°ªŠÔ7^EÞøùƯ®nÞT|£!œ^_„ÊÿûØ ]ݾe#$8ü†öâÆ¶#û¡Dk~ƒxÅŒÙàV™»[^ºf¸»'2œ w'¸Ÿ¡€+§- ÝßÄzêàL¤¡çó-XQ(u» )Iomè§x ÒKø–ð!Þà=ª)­”.aŠ!Cì~¢HÞŒïlr%!TôÉyÄÛ™òNy<Âãó—Ο®3ã^2™ÎØ÷‹¬´pÛš:äŽ;26³Âˆ"©“÷Œ$¤¥Wéq9úÒ!&j~OAñ0WÊ"ò0·ìbç² tiä–– C=zöŸ·q¢á9לÖñ®0œhýžÍ·QÝ~NôTCQ¨,‡!¿…#˜,’ø^0+s?ypàÅ¡EÖ•Ðn»'Ç *¼PcÎtþÝž?…šBMž™,í1éÌoOÚ7À=ªsù¬„À7±g)‚ppéìMÝÙû¸Ï/T|1SÆSìA´ç#ü{UÈ'Ë~ˆ˜Ë²ÿ§ÁŽy<í+žö}žV÷ žmU¶o¶ü"¹Eà¡}¼•…iæ’}\cÎÜï"CŸÑ¶Š÷èÙ|]ÚŽ°!â“Ppd\銬8txÐ.ÂáêÓúQå ÉZ›`tjÛMmøf$FÎo¨XÚ_ÌÌÖèfÈ4ÔºÜÆ|ô©ÌÁÅbèáAv±z¶ÿ×ä»â¿mnl­oÀ òÿXß\ú<ɵôÿú©/ãÿõX£?×ÿk³¾V÷ÆÿúVc‰ÿð$v×ÿ«ºi×/Ø\/ý½îëï•çéµX¯â¾]ĪãÜeŒþ0!õˆWÓøw}…ÿÊâÞ*âÝE½­ƒ¬©IѹKùmy†F²ø›xÅ¥_×Ò¯ké×õP¿®¥GK¤i¿£G‹çgWÜ'dîvK»Bþvn¦*j‡ 4TšLz 9¤»L Ðbéàw_¿{w[V î¶Î˜beÈnrÓG”Ø#­0‹žž[ÐÁÌ¡cœÍ¨ìߟNaOC€Br²áŠË©…ô6ì¯/È©é;:6= /$餽ÒÙM0]zý€G‹™z"ÿ!ß{(ÛKÈs­ò–æîf¡Å|“ž+ ÃÌÆš Ó7ÈiûN,ÁŸëuô¬<}$ƒðthJK£ëÙ@ç9ÆFÒ'#‹{®1fQÌ0+áëlF4qäQ×ÁsWŽíQ¤ù8Ïó(ÍÍAe’Á’ä§UÁ濲 锪̀¶G¤qTYÊýZxÆi®c´Ô˜ÓN6½€‚çe#ë᮳¬ žy2|©?ó(;¶nkmΛ­bÂvÌÊðq‹˜±6‹Ii¦ 9Ÿw¶!+½âæ¡nXÙ.W1ëät}ÆTú7×M«€+ƒ(àÍ ŠMi[ßGŠÎ4Ž˜öª*è‚Ð]&ñûç\ŽÿÇÕô{âÿÛþ¯^-í¿Or-ý?~êËòÿx¤ÑŸ7þ›¯6Öýñßxµôÿz’‹G»çÿ±gãèa²fÆÿiîi<½íŠ8ÜÝ&¿ÃݳŠÑQù×^«ÛŘlüÉ |Ý9ü¨$Ï5õvšêÜy¼N `ýGPƒ±û¥kÊžùØ5Èÿ²B—–=åÓ¢[¶K\7y@†ž•¸ºó¹ÄìõDrƒ"%mÃ{:ÞÖ#ô+Há·él@pšCÛ>9€`~)6ÐYß\]% jc¥WžÙµå-QJ¹dFÌ ˜±áM«»Ñ%£ŸŸÃS0.å©(¶bxq`ÿ1Àýá@ùvHUD.Î~ðÆ#ÀëS†û|Zw}’|ºFìp´(b“WDRÔØœhžb³§ãÅb3r]µMýsV“<,ò?ša8H3éŠf%âZĵø’LÑV²ÌÌ|Ô¸œ¿R]š{Ýβ I+sÜSÉzìÊr>  _É_ÕúJù/¨$‡KIå¯Ýúﯓß_ÿõï ‡>…R£<ªþµÐù‹èhéß;~pãs–éq‘@,É@¢ü6•¹r5X ln®†-rlxùIì÷T%ù©"òóã¥zØE‡.18pƒÎ÷&ÕƒÛ²xODêîSú—˜TÆ”èX¸¶kL f›þ×R½ÒQ©ZΜÈÝŠK_Pãe/ª.°VÆä¡WóIhG ¹R^†¤t³äºfh–³S ›·Dßμ¸X—ªU“´µšÒ:KsÈ qmêÆni6•³L6¥Y8aF›×uÒj_‰³“îi §V|DÛzçbá^šPbhd£ö„¹fb§2d]ÞŽ:\qÝ^‹Í¬ƒ[A¯-ž†¿\«o'ï3YƒÛè-är#óg·•É=¤ÖŸ ÏÎÛÓÎI…œÖÈ]í@%R@[|çcz5ZÇ=8Õ÷Nº-øÿ7÷ZuþÕ _Gm8wÑÇÝÓ'HìS8åNóìøCEìì¼¥_&ÏÑ»yxæM4ÞÜFWû¨ù¦"`XTìÄ] òÿ‹ôYï°y´ógzÐëõXÈv鋱)oªY/DGHm„K’Þ/‘ °ír»W¢rôw_ßR[š¯ŸÆ5ñI•„;‰ìWÖýWà,€o€h’ u'ƒ½_ÂwÏŠ¾[÷Ò ˜V›ÇUr¯·ðüLV2&r“¤&Œú|²÷šòi@í¦°.Ö>îÇ‘¡¶#7£i…rjÓù(^Gv £ñˆPEµO#ì‰i[8¡Í[EÜï¦*)½"Ô±œ^`’‡ox>€ÆnÝN“áxdä›§yû‘^ÿ v.0”繂Tt>–ùë{D]àû/±<]«Ý±9 yg`Í06þ†Ûúvš\Ü„“=‰,ÄyP«°—ÏÈIÞ4¾w£Y2DµÄí-ž‡.&¸õ õR°›¢ÆÝ S)|à$\ÞÁÔ3Ä6jš¢,ÎÂ4B¸àPn£í;@®P*!6Z8.a*í“.¡JIþ([‚ó>}mˆD,v– =êî†}› ž‡8B ÎêÂGL"Ä59bë 'gü° >ëp!#6áöǵãu9‚{x|ð†ÚU{:À¢<Ò|¬ÑÙVïÏ551A4ûø0”Çëøg˜‘Ú½/Ë$žû./Y-Rž'Q~¸5—¥v‰çbCgZ%Çe._N-.G.ˆ )mêi–ŽõTV]ï‡Ç=YD²ºÙL±ÜAŠ#W/iæìÀT„õÀª‚}µSÑÐ ôÝAŠ›°ÓZÖ«ª\J…†žP+å³ É{/ú¸a¼Â¸â½­Ý÷r!õ Ë6Ë>Ë«ä.ŠlížOŸbQ­6çðÔ3NmЙk—Ò!íLœ©W,é>˜ÏL^=H2úC&$qÌq¿±ÎeÍÔô‚¦ ™•—ï¸&’¦- td[™öǵÂê·éb>Œ6µR„Þ*ÏÖ@—ßtͲ6ßúI¯PÝ2¿¤ìÀìÝZÏždéÜîj0û¢k,]R]w7ª·¾"34Ë­•±Oë!)4'¼,ÝÀ¼ÿª¨d4új¬èW/“AÊZS/ÞWÖX¯âònb%˜·¯!>,Ù´¾"š3AzP©«RÏNÑ:Ã[!Gbt³¡Àà~’A'ïß–Í­ÃVMîÌè®Û‡´ÃG¸Ä0FF aƒ$›¬7h€Oýdäð$²Ò7îåçoÔ€ömöNËÝ…yïéͧ®¸KVnWù·?åqÞÈÆZ0˜­†Ø&Ý{ö¾ “q–ÎŒŽý¥üfEÔ†ƒÛ5^{Ó~ót¯¸í.·8=ÁÞº·ìmWÕpÅ**ØÚ4é³'L³ ¸Û»®u˜2Š'*Æž2ŽÒ‰ÇQeßsëéY5…V©;<ÀQ*U+ft C…zx3tpÄ!op¦Ÿè~—»eUuJ¬O,ãB2u``æ»ß”í´y3e¿/·×Ö®Ú9#BKï$ØWìt±ÉˆAßœ¬±‘8qÙÉe2m—Þ¯Tü£Å{JÅ…ÓÛÿº50¶w·AÍ—y0w%¼M±[õE]²þê-ô3VÞ^ {.™²÷jI<¯HÉáë÷ =`Ǩ1vª_)2e’¡ »¯Íûý ¡‘/3кãÛÓ²- ù°“Zñ¦¡Q¨x•e[DZ@>ý\Üö´u$v…—K̬õ²SL˜ü×2Ðê§õbìëiGuý íT•m$<(pì§  Æwcœ…«S4Ÿ_Ê—¨¨ mz|ÍžQ›=z„ÿ1ý®ùŸ77ëëp‹ò?¯×—þßOr-ã?~êËÄ<ÖèÏÅÿl¬5þø¯×—ùߟäâÑîÆôÞEÃ?ÜÈxüÆå$Á8‰HÇz­þ¼9€Xóv’ áP_¯‹{]HÈ2«?JäÆãmd¡‰ZV©ø1#~¢÷N9N]'HŠšÐp ^ô„ %‘‘U4tžä“¤ÊùÜ©ž«vB_wƒ„`ƒögìdðÃ6Ç0 ôÏW~û²f'6P×mò÷˜Ô…PÎõ˜œ•k¶Tã5ë"y\×»ð½®+ß»VX¶|ô0xôð…UçSQB7ï10@.ï.H±p;˜ÜÜÍúZˆ?Òõ³D±Ôg¾§ö6ìº!(NBÞպ™SÇ6ª«vkà_ ó½1­¥8Æ7¥Öe¤ É€(ü=a ªûMÈŒîñX¸ŠÑ7ù¢n‡˜ØA-6…çßò•Ô³ãZ ¸¦Ç#,\ßô9]lB:æå>.žgµ™SžC KNœ‹!Ó Äùø£'®î&[|Éq¢®ãÐïM¹a*Žß¶±R(LÅé57be¾0G¡¬z?SQÝ8íß è]Üt¨EbJp¿äý«ÂX<—åG‹c©x5ˆ²S-ߟWÄbMºGL@‰xdè~¦ê/¸žX<ÉÃÝÒçÊg¹¾˜)_³âÌ÷Ì„$kÓ-?¨¢ÃvÅ«¥¿«©,ú†¯]$ÿ0Œ?%ÓÑ•Éåôð…OÈgzU2ÆéjݧÍ4rú¼U¡Ÿ§Í V*ê‰Yr§S³áɈcŠÌ Æç~Í'”òó¸‘Pß=¢ÀPùãDvabN¨¿)ôbø1Xí}Rdòãë&¡óÁ`$·É3¢çw³Ì‰9©®Jž&<ýI˜^'ºèn¨r›‡ï«©VÅXÉåCNoÎ~ÌÞ•h{=¹N/®7îm'îIfâˆxE†±ÂrÛ ;|hËŠ5ÑHàû“/㪖—þP“ýjóûp¶ë×ðoþmX•î7àÛ|ÛØðš¢¿ß®o°4÷“¿Ð’õW²6˜èolÈ“‘[ÉØ]¸ýMï^‹ÿAî*È^¹ÁOëø ¬ãúþ‰?ÖñÇÆ†øßGŠ2y¦@·jÁ_xËÄø{þð¹ÏÝ}ËX2îíRÞ£ìÝs¹”+WËÜhgƒiºÍØÀöìl8Z æð¢«c»¤[›ëžâm–Y©¡‘ÈqöÛæóö™c÷ŠÛâr•r‘6Oµ7õœRnyý@—kÿûú=ñßlýÿfciÿ{škiÿû©/Ûþ÷8£?ÿ ûz`ÿ¯o,ÇÿS\rƒâÙÿ`[·×Ü9©FsÈçÂE!Ŷ¾¯·ŒµµÙ{!—W¤Î>&¯í˜*]$N9ngù`¥?¹ëG¤u;aërŸ…ÍëÙ˜—­›æXHQ›˜ÔÕû‰ýåü;ÞôL¾;iȳßù®;wB ]L<ÏПÄa¡ ãŽË]8¹uÜñ¼uœºÌå¸c8 ]xŠ9æµjŠãNÜ['kʰDsÞ9ã‘E3ô3º(r!·¢§p ÒðÈ÷Fn?'œ—Ì1®¸×Óã“Nxpµ>uôÖ:ÖfŸˆõ‚‡ èœzùyïä‹5¶_Çœ×ÉúEšu¥bŸÀqË'u¸¼!ž,üéÐQЮ1™Z5 0ùËäB9õ„ÜŘ𠜎ŞüCï“—xÑK¼è%^ô?/:Ϲó|;I ¢—¿ÃZñ›xó§¼BP­.”[ÁšJ&Ýõ³?ºtmä šJH*’´K¨™Ðmg-|ŸVÏߘÛÑxdÂêD¹°¤2bT­âfбƲ?KYTRÉ˜ÅÆYa:˜€òS‰!2™–MmH4B˜ÃÔà¢7M'3cÜEüg#‹ÃÕ÷tÙÚ¾¨KöœþØù.Üþ+s¸pÿ¾[R\7åƒü¿ÏŠû›¤„þØuW<*°è²DÑ/Eƒ¤XR0Úó)ßóÊ-N»îñªJ»IÙ‘Úó É@€É¥6kr¬Ó„~/e¸Ô‡hp¬ÝåiF<4šú Û/*®=ŸV¢´ á•-ÚmW¨d¼]‰í…ºœy x÷©í’¯1Ô°ã_ìÝ ‡/,ÿ87-ªqVÊrâ7lÊdª>kˆÎË0“kc·õ¶q§ ÛºÒÜ„í<~Xöü‹­D9΀íi3Çâ*e«ßÒ; Î\}{²VÅêg.^ÌN?n…íÿ?›\=ÿÿ­¥ÿïÓ\KÿÿŸú2þÿ5úóÆÿFc}ë•?þ[ËüïOrñhwýÿsbóS¶/ÝóŒõÕ‰¨àË*ˆÔVé~î .¨—{vB˜kËCÝWÀ!‘4h.ãyº}7º¸®ôï®nú£ÐK‰°£¶Ñç9g6<´9§6~ìñP´æó®.êZýOA½*”¤} ¥_ø¾ÀQ~k>6T,Á¸5Êl* ìߊ—oŠÒ4Ë×RÅ<5ŽÓÒåëçpùz^6êEÁ-}( ý¡ lÉßì-tÎq¼Ám”X·m”¼¨x,„éÇbYæ´OnV}%ªb›ó § ÅG\H“+ð¶_‡˜÷+b{<ÀÉFê'¢7˜ü+¿Å(Þë¾I¡p§pv¶v('ÅÊ)Ü9.Vʧø6a5Q>a=…ô'±ŸÇi°mA—¾©ÀçËø‚ ÷û¬³MÙ/x$‘7ë¸é¬ÕuœƒÖ¦ŸÒ¿…a@q¡Ïr$™µ6V*Ö‡šŽÌò¶_ŽOfäT¿jíÁGã )ÚP‘í_ê]nˆ$UåmÈ L@õf?´‘»èá`Æù?ü?0)À üû\U~Êó&=G)Úösþ8ÐOéGñ©Qõsh9†"€º-eiÊ™ ¨.jñƒnmÒÀMö·{&Ü*Ìaì4&)4*)Æç]|ÖƒŠúÌ©\° œBr¶¯áÐjcî„C°I9Äf ÀßáH8Ì ‡ÎH <:f$ÔåH=ÿ‘pèŽ{ûÄ#S†Hÿ¬!£#A=—:h\©¡¢^®Öc£¡Î£A?qï‹ùo£ø€Ïit‰Œ7ð‹ÕzZ¡ ,”vµïï¡AiÑä#ùnô4¶³rÚH¥Ýj¿ùFr¯õîD›£ôéA ù‹,€ßÀ2¶ÜB"ŠŠÞw˜Û’ä·¢MènBùV3T,Ѧdñûð?}8€ÿwàþîà‡cü·“á‚qÐ;iáCÀp|œÞÎÍí^É6ÿ„ãéÎÛCNSÿö=ú^¤¶Ü.:í¢3Ñn?¡GQ>@—½?ÀG˜Úøà~bªöźÎÄšl§iøMw™‘epS0d×üùž3/Êí:¥Â™î+‚»£……õþÓ=‰P×>01ê17#LTTˆ/!‰GR&:Â~¥ÜDðg‰ÊÑßav2ú–ê`¾~_Îf¬]y,¯ËbKž5üä£#>À]夻7/\a»s_Ñ'}Æ«.®ÇcÒ’TiàQËá‚ÞÁ)¦ÂUÀ’ša9»+M¿Ž-ÜI&m-ý{òp8 Ü £X5*Úˆ £MàÀdZ懘µ=]`§"O%„‰‚›±êœ3‰¡Â[ÛdzëZ­~°Cõí`ær=oTŽÎzJ&/˜’ᕃ›YØÀæ?<˜3[Ȳï\s€RS÷ºdR³º•ÔŒæs\ÕìBvUìU¨¤€8¨O$î€!¡Õ<Ø*¼ã´¥AEí³îͰÈxídwÞQ¹«† ì±S‰Gñ¥J]æçø_]UõÖÒ„j*RzÀ["^¥Èå& 7‰gØÀoNLº@a]ÄÙk¹&ÀƒÕzEÖ#–ÔU–é׉T½4ÃA:Gý®ë&åy–I†‰µ,Ë7W”SÄÅ2þíÈÖÁAåÇobª|[X&8?ñ¿ÜÔ¸¨¿—×óÎÁ±ûUPU$ÊÌ×Þ´j4}”U%R’ŽÆ¶œVhv’Bi‰â¿‚¼…>/ŠàAÞÌļÔàÚ—R`¶¦u£\¢_ÊæƒØã»˜¶WìËw8Yùÿl"[ˆ°e(Ũä3žcÔ«J@ þ¼¬Ý~än$™¢Uí¬½V$±#ìEiÒT£¡L-`M~ýñ~êÀtXWÓIËz¢^ÑküWÅi¯ãÕ}=lCá°4|ÇE»\Rõ¥Ð˜&îâþ/¢B/¬MˆWM3;–])‹±gñ.,¬=§F5|G¨ªIlÉA·8÷ÕógéžÑSX²^`µY88ˆñàÞUÃHÇÖMy\ßU¬Ø—/oi³±f 7yôËÛÖÓQƬÇSYËQ¶4žÞ^*X6ý®¥3²åѵMÏ!ÎŤ¾ûMmC?à þE\‡—Óðå÷¬½$C ¾>!}F¤îùþìÚúOÃwŽ|CÑû#ÔaÞq­ñ$5óôs…”¿þÛMñt¾æŠì:xüâï‘érý%ÝyÏw"û¨:nLצéÎì576½fê•¥ƒ+þŒ« …¥)Ôì³gµ«Z.±n9C¹,búå¨êe:BXêe5ydÏòYxy5pZÑ+(]eôA”{[M ¥n7œ¯î§§–³÷j®žšô­…ÄzjªÚ¡ü&_ú¤ÿøj\O½š§§ÎÓjúð9úlé?ó5Vé²ÿeT¥-­¶iI_«mÝQqÂÞ5g“F(¨Ž·ª@-·ÑT­xI4Êš@Sµãuû½õ†«oÄ–>K¯žV^ê»sêÈ©n'’ZŠŽ¼¾¦”䫨$O9u±¦ºQÔãîó5Ö±æJU‘×MÑZI¡0^Þoïteù¯ZYžÒ2ÂW”3í}KKìÞÏbÓ·êiÎ-¾³È(åº|;ÒXelW$ñëƒôç~;æéÑcÿZH^P‹0òOÕ¡¯Ò¡·G С¯¦êÐÍÑÉ:ƱÊ÷•¥K7Ç·z}Íï©T¨®“îžMâÇ‚êz”ËÅÿJžþ×ÖÿçI®%þ×O}Ùø_3úóó¯mn„ø_õåøŠKnN<ü¯vÿ++W÷ìÇF³Òc[eâÇL@°¶ –`SOiP`hU¤HE;ßPÓ‚S`ù~&ڢɳÃv‹ÃÓ ³ÂR¤½»¡wÙE3Zö)ñNŸÊ ì÷SµX^ ªBÊ–dê´L.¨Wøªq]þн椲‰($™Ô4Šñ<ˆ6‰LÄ*Ów>ë¥e zµH”ôØX±ÇÎŒÚ6ù”x†v ùP„Ì&e .¬¹ò(eLzœ2Oq–ŠZæSv¡Ëܼ’óå êŒ{ó%Nzž9bøRPú¿Óà¸)KÒ,†RrNù†‚¼BO•Y ßvZ•ÜŒ&ih† ‰®QÒøOƒP±o )v:­³ƒHžˆmÐíë€"šôs—Ð#NZGÇ΀ÃýØ}{rª´5éùUè© ^æM«Ò;>z÷(`Q&—¸ sà*´çÅUøÏ]ÓöDgÑ€ì49Ï3fÝ÷ðóˆ;× ¢ÓŒÅðïìÜfnÒ4 /§6¿¿Q,ΟTQ½Ê> Dpü"„T ¿_RMu°Úð'·ïsP ‹9 dÄ}9ÙNƒHйVWö—««íÚm´¬UÐÞ9¥úk[ͤ?VÕÚI xkg^ÜÊpLÈ8$ðÖ ûPìxðÃä"ópPàX0ï¡@Ž=ï1Àó 8üHã Ö3Þ…÷´‘6Í}Õ*«‘Ò)Ýf½ó=».“uØØ<çÅ:9½Ì{Ô¹î„ùßãB40Ò‰Š¬RØþŒŸL õÁ±£†iAÔ™Á”)‘”(£L9e˜(Iÿ±e)R$ DGúH˜Ÿ}o¾ƒÆVñƒFtɇtb!~¬¨v²Žê®óxƱBß~ȱ"y&z¬xEÇŠ_2 ¹‰­Oºí¥·ü?ürýÿ§ÏÅÿ³¾ôÿ}škéÿÿS_¶ÿÿãŒþ\ÿÿÍõúº?þ××Ëñÿvßÿ¿gùÿwºöì(€íŠ8ÜÝ^Æ8×#ÇPƒË¾x€í—°È³‰¾Ì¹ÆvÕhú•dfq*–¾̱m‡”$¯~­õµMJ¡ºyÝùŽ Ä1z´ûœú¦.iïX€7…/LÒ š%OÕ\ªú#E¤‰Tµþ½…Ês‚È‘®ÆcHלÅUK2£C¶@´yM¬iGg»AúÀ|MNâ"«À34½ä=:ï‡OÑn‘|aŽêå&³+–Oè<–r>pîbë0;ª‘öSJ¢'åsÙOY„pÿÝ<(cÕm-àýmäû ¨ÌöA•8sÞidš…­'0X«™ÂrPͧ:‡ÈŠ2ê ¾š½Bùd›…çWµñ„qU ÜS!ôÉã/±èêóâÉ¡‚óE%\o•j.ä¨ùÇ*ø{Ÿd·Šžd‹cWsλީ´Ø9vµ^ä$›íàlodH’àålg¢N¾ñíábN´ÏSýý룪¿ëk)úoúñ$çßCïüûô›ƒà”ìì©-wÚõ¶ÿ £ò¢´×q¨Ö!¨Þ÷Hœ©.÷}„â)Y©ªyÚc¨ZŒL‘¥üG;†Gã¡Å\ºØ_qå’ 7îžÒ[†§<ô²â?&Ó‹áwŒÿ¨oÕ_m5õ5Êÿ°±±ôÿ~’kÿñS_:þãÑFîøßÜ\Æc}9þŸäâÑîÄt{;¨O«ˆ^þa¤ÇÎYéÑ¿ûš “þä[,æ£ñ¼#>àêÀ!˜\Ä Å‚7¢á;g_´Ûr}5±ecn’©ñÒÞÙ|I°÷Œk9EŒª*;»JÉð÷€Ê¿*Ýé‡bJG*õ—ýú/cÒö©¸Cߢ’º™TWÃñ<Úß.åý)ªá|ß'7{rYGìz ;NÄ×—} 2˜Úw”Bè‹‚¡¶ãÿÍ-°Ž ,u ªÚ²´^Ó¥ˆÝç“ãFÉýr\\cs¨— ®ô/®MQX’‘…ÜÀƒ çîÿ˜ãA¦ÚÚv8Tä Cþ;˜Œ‡g6‡¹>ðΡ½JõÕRáôûçÓJíJ¯`ÄÄk'ÿù-Oæ*zÿ|0û2Œ”kzò÷€ÝÊýŽè9ME0ó(ðuT²Ñ/»øÅj)Aæ‰q¸÷µ”¬ÐÜ ê¿‹ä÷×bDœ>‰Ãzd3¢GŽÛºÄ€WðìÅ^—¾ëò\ß5%G˜Ûn¿éœ!Nz«Ã?áàºÃ_ÁOøãèô&ú£CøkNÿôØ„wØ<ÚùSËB¿ry?£œÂê=vJŠÛÍÝÅ'‚h/è}ØÊÄ3˜‰˜KpB0(ïšwH ·_I¼èÿvîb &»R¶žù¹‰JòNE½`´kíQ2K`Uýï@«Æ70ƒã …©æ0ÓÓë`¢¾¯ÍÊr×Tk†ø‘0I#I"<‚¿Ë.Ë(–xi¼”ÌZmI2ü:©XùoªôíÇ?PÂÞþõx2¨Þ(ÕÚι²y¡÷¨"0ÍèûÄy)úžð‰¨­É€qƒU¶Y<áëÚ^ó°×ª™ïe ßJ¨•Ÿ¿®S#|a¥û²?-ö§7}XT °ï´nûܡĤžÍבÓì=bÈ$ p`=²qÒ=Õ\xº3œörBÅM#”¬ï’b5ÑÙ;Z#T²ka—áÕ~ƒyÊ(ÜuýÊ(Kÿ3\^<ýOcmyþ{’k©ÿù©/­ÿy´ÑŸ7þ××·ê¡þg‰ÿó4vGÿsÒÚÝ)Ñó#NìVfÅBƒÐG&xÈ¿ºô+ÝvØ•9Cå[í9Sˆþ#ÕH jì,-ƒ€|4M¨ZVvDg-S¬“ýSmt‚“Ý®DiÉß]ÿˆöJ?TâÌ£ÌBQ4FqG;H>Aw°2z¤"Æ·x°ƒ[Ðw|“6ƒ¤j ƒ&?|4ƒ"õ/Œ(9ú¿;èRxíz|I-Šú€º¸ºŽ`ãyÎo±níO4€Ã”† ¸€ýá”ÀÎâj|‡™ñ@Àþltwñý?õ§mütݟ£ƒ‘V6Áþî7» ©Æ$eL eÕ ÿ²IIww1&ˆƒÏÐT ÀßÄM2D|ˆéÝÍ-†ûç¨Ò»Žûä t;NF„+íìjŸ\À!zÆú)Ì\(ΨS…Ûò ÖìKh½OÉL$¤ê_^¾œÞÏ&ý‹©»Èë:XœÃ‘ù°I  ªëÚ 1L>ó>ú¬zt\áÌÇ꯬[ÿª ê´öL&„½$Ãþ›¸ê'Cäèzðµ9¸Hàœ„¯©Š7b#Â^EœÃ7_âóU˜W˜÷kPƒt0ÀSvkwSJ´—jMú"TæµxÑAtolƒñhøÍGi‡É PŸÆ»,*?i ï1%$Q·Á8>bŸ ¾ û­Ü’K†•.Žºì`2¤æ†‚ªã¤#kêðÑkv2´ª–æÑ<0¤D$Õ±Zka§O3k K“ÑôBùã!.¬@k¾ TëU€¡ûàZ´Ì,x9˜Î&ão:=èÇ8«YÐ0+iMŽ31A’xâ”"Ÿ6KTâ0É&ÅÄE±@Wv\Nl"ã LO#tö†#ÜþuÒíöåb¤Êle¦ä0S`ÄØÏ·¯„)³cš=a#Ñdp5˜ `ÖV]=Xdçàí|¬1¥?^“îÒaÇiBÜ[‚Ô%Ð¥’5ùšÓ&ö ¤Û8HDô¨Whó¶Èe(´ª¯HšìXıGˆˆj%Éϼ·Ž$ä´ŠÕG¸L’xÀïŽø¼µ¹@eàêϰàsи–HóFZü‘ñz§ÜqtƳ§ßĵ5­ÐV¬³…Ý>>7’¹áÕ… sC”èÒœŒ’›»µáC_ä ã;ÜBŠÆ¦ênâl4p"\i‘Óºã-M5ä'FRè -·“ßèè‚»¯Á%'M–ž 89\Ü û¸åµ;9ÕƒÛ:aƒ:Ìð—Ø¥°]±DfªÍpý©4ÒbÈ΃ÉÀuݱB<ÊøÍh,“É÷ÊÓ)Äl “Ö¶¯Ü8ˆ^ÖÕŸ˜™˜§w|rc,Ù¶]%ËáÐJY“ä êUÝÌaյǕdæ~ãª[``éÕ}àˆŠ¿Ÿa®‹U±^îPHB§<ü$:üE¹Ü~bvûbÿãá§Á½f‹f+F,¸Op|úŒößë 4¢åògœX;©l/ ‚º‚P«"sK›§»Gb¨&6œnôÃ+M£L[­•È„Ó{ÆqF§Ô¶ÜgÆñ÷÷œq"û‡ï:ã´ÓgœtXD9é´‹N:íÌI§mO:í‡L:íy&ö=&zŸ†dÚûcÒº^ÁÀ|EÃsSÎ?Y3Á¢J]çòžÍ\ÐΜ bûörø/xøßrÓ‘!ÂܼèfÄ ÇwøiLú8R]qõ¤JI˜³=ªÍ†ƒPüQ*ìà;gø ¿†Ã«ŸK'¤•yI@·@dçÓµ¸_–H1ßÊ&Ü»›à±D‡uÔ]¶Òk»?%é¦sæ$9¿c}ä¹:aï®®D÷n6L*J5½‹„b†Nx¬¬GcÁ웫ϗd` [Š}tÅŒpôô^bqò^A~繊9žbkô&üÑÀ?è5vøŸÓV÷CºI`¯Ýi÷þ„ þ—Æ 6|fÔÃ7Z6ŽÚøû0ÛÄñ¯#ò4ëµZï¤Ù=Io®Ö1ÆówßtºðÎ1Ô¼Ýùå66?|jÌrØluÞ¥3ÅÞWäsÖé)æ#¾iL§ÂÅUü×2jQÔùg.‡ÍãüjuÐk²ü§«[Ó»8êí°]¯u¿ÉæÂ¿ñ}üÝÝ‹p|ç:4üAÐ+D~…ow+ÔÊPκñvÉq¾;Á‡¿Ã$ayÎ¥¢Å²ÜS7«NZÿ©Uë N*}ö7më×cHbÇʱ[ª:«ÚD¨Ò ´«ûö»Ì·‡1ïívæÛ6mä¶A¶  cé‘lÌÚÃâ’YP_S›ûªù hjv𓯸À¸iE¾rëg÷!ã2màf§,(]fg5Ý]Â~ÎÆ;S9«a¼1 ý’øµ‚˜º8š`ßøBÀ5ý¿1NÞ¡Râdem¦„uÑ<êbõ!§âðënøµÝQ­šd{a¬†>;™U‘¦nQŒXU°;'%œ$J45”dç¾ä¯pý[‰Ä¼6Êex;%~éâÏXʾ{¾ªÚ§S¹£Xa¬W‰·¨{‚ç30šÃ.¥ÏlŽlMHœy4²J÷ÒÓ±QŸsÙQ‰æV×¹×uo¶›TœÂÀ32t×ÄFêæi;Ri5̉´—œÐ‘`w~Šõµɶ&Ù¾É06Úù#˜œ !wËY&¹[× Îå¢`¾Cwï‘pì[¢ÝñÜäáú¨@]¥Cy!ŽÛ2ÏÊx8Ás5.öèì5À³ Ìä㿵‘'ÔÊ“ï>‹·vÈŽôQçhëPFGjsܶŒ¯é٠ש(­Ó¤€cq…ƒ°ÌBc´ú%Ä9Ù¤aÛA…kgeE+YõójÓÔKðˆDŽ£op༸NfÊ¿1•›9¬öͰqÕŸÎ(; :¨ÀÃc<»©£“9uÂÙù*a{±ïuPèõ!c¢P¬ÞžÊ0‚«þÝpVSQ  $d¤Q,|ÐÓB¨"™bËŸiBO¸¬ÙýïØ±0Y«¯<ëxÍ+1‡U½’q’óÇûo­¥Š¨ñÕW‘¢3%^©á¬í4ƒûàK·“1 Èé—3¢ÎäÛ“Ú¿‚PwÝ/{ãÓCº rëS~|f‚ñ°w³ò¬ÊÍ-+œ†ò¨] RØ¿ yr–:×§˜÷î†Ãœ"«b´%£oÇpxÈ w°¨ënEHbZ×]‘Ê8LÉÕH¬(CEõðñFâö».œó¿<Ê»… Ú)wÍ‘mO%Ù(‰}<³”;«m.«¾fž·ƒq²Á—=1 “=„U"‡¨Q…ç?vËÃÁÕLŽP̺ƒê+xÛ‚kˆ`ò&ëÈã¨<)ÖÃÖ p@œ©¡·ŽLoùûk~e‰#‚œ.Ô´¨·Ž{v¬Uëvš Ç£–°#S¨À Ý–Å))á íùæï¯Iöè¥õ؉džÆqÙ‰Dà:̤B›’†ûxšÌ,­ÿˆ ¾l¿toqˆ 9ŽÕÛpt”ÔVET­ ŠT~‡<'èÙðœ¾&ÓÙ´ÆZJ©R„éj4Ãäg—*´X¹ÿ8dT€(7®§²hX!¦³dÆîž#Cì°Áhæ³Q•óŽ£ë ÕK™â­ÏïdQ ½F±(£¦BFlíZÍÿ•Óg{‹“ƇpF:"Ìî&Š #6âÚU—"¹½… „k_‘äïQ°¢Rïî|EËÕÆ$ðª™s2›ò¢E‰¶h…"-¹CüÈ0Z•‚;a½ýÕÊæGÄf¾âsÄQ»€Kdwfù9XŠUdðò}†WjIZcŽÊ&y” ›ý —E¨S6ÓÙEÑóÞ2í–È CKk˜ŠÜ‚*ÒŠè˜Bêº'¬³Î›˜âÈm6TÛч—ðáGÐ*qE+B\MgðèínIúÓË÷ ‘kVÍ0[i&.â¼¢nŠŒ^ÆÞU]}_‰rKsÕ}vñrwGû›ŒN—}—S¶Üm•´-CºYI­dÍ•)gcyd$h޲3J=þÕmòÁ"áá¡âI´Œ$Ê)n~±Š|åv¯Ú}¤Lö:sSHEË+¬¬ÒfèlÚíÓÄôvG<<`YrƒgY}b¶PÖ>ÎèÊyNÄnÜ¢¿1-¢óàû›ÈAÌÐ)©Èóþt:¾HÈÀk»jÒQxóiv:ÂÁS6W§x4„} ûîöÆÚ²Ò! ±é—>›z¾¯þîýìÏqƒÞˆlÐñ{¸™_Ђßö¿D|?œ¦BYÜÅ|tJ@[\T ÷h‡'Üϧ˫,|?~K²°² lÝL9Rø`ó·Ó™Ù%$ÃÔjómzâ8rÓ6T£º-ù/NŒ’6uy•¾OLÕÔm°iÊÑtÍh–Z4-Þ¨ ‰7wâ¿?MžMü÷Æ2ÿûÓ\ËøïŸú²â¿iôçÿú«µÍõ%þßwºx´{ñßoàp°ÿv÷ãÍΛ–¥}wÿNam…ßíÓÈæ¼¹Ý;y{È›l£/n÷NýàñvJð¸§$U«äÑña{§}":Œ)ä³B¿/ ?q(¹ÕoªåbnNy†NôËõ ,ÕPõ1 CÄkg®Ès #~Ÿ0ô÷êw~4úýBÐßtMú”Ž úR ©P°8c,f£Ÿ@ËÁA‹Ô´w#Žt½T7¯[±‡&D \¡Î ø!ÈÁÛ~2ù’LÑüŠçf\œc{d Üd2˜ÞŽé¨„ô¬Ç¬Ð7MBÿˆIX¢[xtrw¬‘w²ll2:q$ül@>tÉBh1±ÇW“«o²pù<)zgƒ 0*J TïNÿ_„&#Dt¨š/ ¥Û‡¿µOÉ"ÉæE ÐcJŽ Ïôq‚ÁšõÏ“!zŠ~™Àn‹P$>9Ýਇà[G]5HSd7M¦PéâêFx¿h®>Âl2”;ò÷Ù=ÇŒñOCí:BfÂ'9á ‘¾þ|0‚ÞÑ,qM¯©G[«ŠkFõßTUÉ,ÍŒÊ`}ì;bŸŒÏl'‡çV«UÝÚÜÐUB°Ô.1äãZ“ Ûnèp}¢—Ì[”¿Óï  ##DÉe/¡‚¿ ÌÂÇ{¦Á׋a†×éàóýs<~_Þ‘E½ïaÈtx2xŠ¡º!˜eQëp1& ²òÂ×UUu+™3)ÎŒÌÿ·÷p$ªÞ´…=UNå…Øhe#ƒÔ0 u"àï¿ c™¯ûëêøvÍH|Ef!ˆD@]pˆðÊ{¼}ŠeqJ’%Éä„ÀÊGÂ;<¿3O€¾ÃiÍ„íâ˜VixfƒÑýbð3¸¤¨±¢qø6µÑS¯pæÁ*eîjÕ`éí¬p€ŠTðÑ2äÀÏR,Cù‡ Ñ ‰þ!㊮„Œþ6лCW dï»Óø÷êj_ñ8z­¢x`6ý"wbw´œ£ØéÆÑB?Ûd¨ªèSÕÁÅÀ^v·ß?¢ÈŠeG«*g­2 Z…ŸxU³d½}šz+¬`[VP­™¥ñaEVÓ& Ã7±Iü#u¬ñÉV|v¸£¼ŽFdàž’Í»ÂARÐø›§9Þ©æ fjžŽh!â½t6êŸOÇCšS)>h6`ÿp1PÛ'BËÔ륳ù¶º þNÆw„™ƒãLÍÃGjlf„ád4Ï@nŒ¶ÜnCžÛ„XÃF:¢–òƒÝ¬©´SQ úV[Þ‚I´}¸ª<%Þû š6NtXÖ‘ïþý®b[ÞÄìq@‘>?Ùø2àõhE¬xMB ±Œ÷—Máf̬J¨ôFÐômBvò 3Ô$è¾omÕ¾"Ö8vÁRA_. ÊÀ…¬‰ëñðROY<Øv¢ó¾”¬øB¢Z$8Ãx^†aÔL8fÿn"ãuȧîÕŒý‰;MÀl9L æ‰ÄÕø·#ŸjŽ|Eø&Nƒ:9 ó‹0J´›ë_þM£;Ö¤¬#<åÎ×Ðè!3ÄÖÑüâ†ø¥ÿ Îjý«Á£¡‡(I´IØršÂ'Þp"Ín·ùÁ¢QŽ :†Aíq³,yôç1QèQå,î _ñæšü‡Æ#ž7s’¨1°;nÕ¬Cž.'èO&A{û ÎørBÉ=å&ÐjóˆX©éÜ ñ7©¤¸]ô§ç(‡|¸ÇBoJ´XÖT+'¼ }ŠØÄ1…/SOÁ-@çìöö‘hoú—ƒ‘ ‰gA˜ŽqÔŸüí_·;‡/;­noÇ~fçz’Lg ¶ïư®#Eø|xt}NDûI÷C·¹1B ©fiôý”Ðc&àE3Vâe…PáG÷·©©Ëµ©uŒY wÍkéd2À˜…ãbò¦ûC¦4X^s\ŽÿO2z>þ?ËüOs-ý~êËòÿy¤ÑŸ7þ[õFÄÿgéÿ÷$vÏÿ§Ý±bZy×ÑÞ>|»ƒ»…ÞñaûÄK‘»×hï5•ËÉÏ›÷!;±ÃÑ’8P)Wlrõ™:ÿÈé«çæ|Óîç›@µãWÃ>Òœ¨ïÙ%ñu÷œ"Á®g–’&¼¹´<`nú_)@ÛXyôS”¦büE1;¨­Ýçc¤)äV¹¿àYÅø‡5ÏÚ'=Qº¸› ?ÏðYïM¥Gn1=Á§ë¸Ê›…ޏßèO8¸MXkßW™*†Ô;°gˆtç¹íOeÖ‰ÓÎÑI—²*œã§+Jvqñ_ÁR=5QúÒ öOZ^ ¤Áå~éO…òvJñÏsÖx,O9¬h£yÄIÔä_o ,æ°ñÇ*–X¶~ßìY4í®#¬¯‹›=›å¼˜,¡ä÷ŽÏµ»:ú»`ÈxÊE;ë‹”#øš2‹ÀóŸ`ýºå‘L¦‡êøêJœÇŸié!Oâj2¾‰ÚÛ¡TenG{ŸäžÔüŠÄ–TxÜ06‘÷D–ÜÓ¶?²¹ðmwV…×âÅö \3_oÙ@‰ª¬šZ|y¥:µPËüHåaà[,£Ž†êò|Þÿ[-[ÉÊë:jô,@K4}B£ãÛÔóÄ0ÚTõ‰ýø¶"^7Z‰é1I ŠÌ.¢Í.Ù´ ØmŸÞÔ´öÞ³©QžŒûB Î¤ðžˆs˜á?OÅÝ-À©*\dl°˜†Â({ŒÝÇAƒØŸ/•ñ´î5‘Ú8P`§Õ^þ{Ös«u·¥»—| „°‰ƒW¤±¹Õ µð¼~GA;Çl›Sgüû¦yg6Q2ïK.#õüª•ãÚÀ¦¦eôý•IOMÔý2Z nGØ£Tî0Ä^n Û mC¢eí!ÌÞ$Œä¦ÿ‰“2¡›î4jK¦í—j¥&_¸I=7³Fêê°I¤¸¹-oÀÑ[¸Uƒ|íÛ·Ê)'²¢/¥µ 1al?ÙpÖÈB#îGÄ HˆÛà”¢ÊîvêMûí cL21ó²½ïsüuxŒ!wób癄b2D¹¶BBæ6 Ì+0äBñ'™,ÒBiͤöéÇV†î¨ÍCnž˜Õš…ˆ5ÛôGJæ™âv0Á­°öünt›"J¸‘¾5‹”SÊ1ne¾xK|‡®Ñ¡f–LñÔR±¶?X<¼ºpûO ]9r¼ÜaÔ§…VÞ‘ØÊ%BW^Eðúy2Þaæ0Ûïd•m¸çV>í­ÓÏzôóªƒýŒPqú«žÁ.–$Ÿ«Ê"ÕŸ&:¢?`i­°pe1)Å„X>Œb7u¤ðízEl2ô64×›ãvg—ѧe¤Rg·û.«Úô@C>¸.oÈßÀ)ÕmþÏ"²<À#O¼ãªCwºG;¤÷õÎ ‰9(–ªS&œü—5ýæL@ð~³ñí-á+«¯]˜NÚ)÷:Òm¹¦·=ä.ý- j¥_§EbU¿Ü© ŠŒ‘Ô¦:aÛT¸¡\è¥ìRÚN!m.c5¾uÓO>6S>i'ˆ Ö°A/s™.ž(nûp !°HÚ·¿TÝíÈóáx|«ukNÀiDŽ_¥p³Ï£fÍi¹ú¯§ûõ¼ñ´H2£« Ó[ŠÅ†lÞ**y£_>²ÙòÇë§äÕûœÜ’f&S6(‡dnòÝ¥€€,25ÑJ±•“gÄÕ¹SÉh%]†ÛnxØ_4¢þqcsÄX\ ÇÓASª“¥sØg7Q‡Yð@+è¹¶TúµÃ¦ÄíYZÝðࢆ)œžE ¿øOÁA´Œ/øÀéî«U:²xw è¶uL¸dL)²åáî…·¡ßù©x3:„é0ê¶7Ùèk·Íq—+®^xÙñ›Ma5v1,q5§Ô@|qÜß~sÂÉÄ· ™£ФóZ£¶êª<ÈI6Î fJº|9™Æ™ÅËÃ0úPg!…*ãˆÆh4V¦±nøð›…×–ÃSYç)«Ð%P„¸MþS¯ˆ’8Æéô±-Y QYí18ì•bý$ÛÔAmÓæa¥è`n}½)¡/ó¼a<_[¾No/ûš+•s°µ¼)¸Ü­lðb|üƒÎ…ïqÄKmM0Öä<Õðã8hø^B3¥äÓ5BÔÃwˆJ/MÇ羬öv°o¸õå*W¦U$‘Æ¡)Çé$µäqâ—È+¤.ˆöp=Kúñ´oÞ"}KüUoYÑûÓoS8¦£@¾ŽTÜHT¨ZÎR$}ó ^XK’à¸÷ü÷CΙ{ÊÝÅîjÒÎ)2222#â ¬ z~ äà…*°|/¹®®áªÈ‡*0ðìïÉ 8R…Xù‰1ÞRÑ{O]ÎeãoE‡¿ú鱂ª ªÚ"…à¦éåõNúhwâq×ÐlG(‰Â;Ö›€±9ƒöê­JõUzy¥·ˆD7Ÿ Îníp‚»»N#‰Î&]]„ñÄ563âG¥lìßaD-«ª3J«LVµ¸¢ÃªÂ‚¡¥¦Á+ósArލcö|…˜²1Ù"ÎÇ _Ô]ñÝ œÓƒÍ3½Ÿ†Š8•S3;~§)èI²hŒ¨í"02—3 œŠ‹ùІãS5+Æób… Î7ÛÇ@¿:TðåPa 8A‡5ô r'7SqV¥É=×èŸøDó·\xÑEW“È®QòÍê _#ñû2`WÖS£ß\À]è Ú6!F÷†EÕ…üž9+•skÖ§¬æ0Hi02l;MÐïUF‰J¹Äµ¯tA®¡ð ë1”âèføvЇŠär ðâݘBq@Hxº~‡mQ <^¨“ä˜Æ’=Í#sÐd¾!EÍ qõë Œ‹è Š_‚QÔ ÛQ¨lX³7⧃ùp–Âîå­1y±o'›ÏñÀ9›œ]p'Ç^»ãº8ÙÞz¾ÝßY{ý þkÈ:N¶­ÄhCׯ_eCÉ5êVšˆi~ž9 Þ!O'‰`Õ-¥ð£kd3KíH..R$b½Â †ã1ÁÁ×qzÎ ˜¯¾e(7aî#©L¦„f݃ JDÆUÃ*AJhPÿš£$kDg¨&‡5E¶½+B8PñnHrZd6PÒè¸q$µTU/ë‹ºÈøâbMƒÍyëV ò«™¦×)ÈQ´lj€)_Gø*lµŒ`\ü¨Ò¨%ÿøŸTüŸ›«Ûßÿ[ƒ£I]ÀQBö?£µÆÿþoµ¦7CgðX 2fÒë^p€qx‘ï#d \gÉ ^5!i&¨1O$çui*ýD×càäµRxÞÑhXY¬Xò$;ÌæÚÉÕ·R=ÃÚ<…¦Ÿâ—I¿ÒÄÊ$‰í*v>˜ üÀbîPÍ:Èx8Õ-¬S 3lg˜ï†-  `PÇ’)p° ªÜøxÊŠò”å)+ÊSV”§¬(òùѲ¢<%!yJBò”„äQ’H­Sß÷ÈK -¡ízZþ”0ÚÈu½ûë¶„¡ÇûÄúö#¦"Án–èL.¸×U2ô'"WœPw°a·;ñ½³Ho´†&U±ÌÊÚ^eFr9›-BÀË`ºl ‹`ÄÿŽ0ƒ5ª[q•ËG§ ¬)€>;íÀ¯K¤@ÂääxJkó#§µ‘õ¾-M¶Þà—Ñ9¿~Ü;Ù­×Y+¥)å:@0|7P¦*õd ²ÝdJWyÖgM¨Ûdv×L/`?™ê2kúÊž®N'_=:}‰'Çr-ïíEe NS É”µàsßt'ÏP­ìS»²mH³Ð2£³F…;L†Äß™žîüÍüÎXÇy¬êôæüÇ<•ö¸Kv¸J\flsܩȉ\v¥ v ä‹ Ü·¦Ÿî0ÿ˜{ tú@3Ì`Š=ÕqWâÉA¨0Îpa,JqÛ$AêêS²§§dOOÉžž’==%{zJöô§${ʰÑEñŠÒ=ÖVv'DÇÙ­ëqX³]uЧýô:qMÙ+fšrËÃ1|Šfã)¬º;gž*Ý·)‘0pïð¤WínïÝ‘,P„þç€ÿ­ç8È ª^Ü,|‘;¯n4à"ˆ}×ÎV§³Û~Gøzô³óËÉnz[üù§V÷Nk¿ÒDzš˜ç%¢öì¾kc>«]‚üÛk÷úÇÌ!Ê;[òç§üÐúO X`»Û?¢bä¬Ü¢úºÔ×|Á]FÜíõèç»#þÑëÓÏOäƒ||p”W |Ýd¤AÜ'wÖl¿Ã?ºœE#»8jÓ‹‡{{ý]èû'I¡O`ůD8n«ý®‹0zÛ}‰FxÔþHÕô`‹ìAŸz J‡Ÿe·Õø>üh"2ßUáyÀÉýƒ5ÑÏ«áø}o·ÿ¾&Nâ˜u>a8_ÄI×0^a„û:}X>Ù¤ÐH‚V·,ß‹R55ÿõœÞ•ET»ÿ©…Žˆ |䟽Þv&$ï†üs_þìÑÏ>"DÞ7€!ñÏ7bþ-J‰»£’h@K¤¾Š5À[ å5Ͳż!ãТ^a1¾bÕÂ’)|¥ýÌa±Eð®yƒã3^è Ú\E©Öò3]÷¯¦,Võµ"XŸ ôx…7åã:d¡:ùr¥+uyýÑÆŠ6À´G:Æ»¦Ô‰r•¼0•Hu]Ñj’c•àÑίåÖ"‰‡Ñ½4O>L 1Ü™@™·>m«×Wl>£ ‘mt:¦¥§çéÿìMi·m×ô„d{Oe`üä!Å|:qÿ†mÆÆ½kŸÐ_$£I*èÑ|}rìš;d(‚}«7u®ŸMǶEµÂòÿW¢iŽO±¥ã¶É,Ø/A)YÎÜ1ž˜ N­[× íˆ6­hl"ÎÇkúr§,80(ƒ™º5&}»crB&Eg"3°N±gõîáq]ñ)¡Cº"¥ûL¢È”D3•õIñCÊé§ß5!²*lúÀ©nøï«Ö$´‹'ë 1ô¤ÞÙ­ÃŒeÕõʯKö–‹ãq§ƒiÈ¡À_­5«Â¿VxB°ª0‹²Ê“¢*_ûUJXÙ)=“Ô‚ü.¯¾F@@–àPŒ¥×DÓ*}fUý¤äǺڋVöÚpð¢¬lÙ ¢ýÁEÂ÷ƒók³±å!ÊšHO׸ÊçXF~Çj¢Œ W•*%Û'BY‰Ž‚b ˆLÇ/Èšª5Uã¹áªÄ4‘ôQp²QWŽb`=š>‹°Îw4>J§Í:rG~X³F—ó±žq» WìÛUh\¸Þ6ÿøÅGªÈHŽ“”ZsÞaÌé´a-~ z°±õfvXŠjÎ~~ÔèTG7¿ÒÂß”Ûiz}œ£oâ@ÊòÞ¾(ñ’- ßá½âAÌV'²éDÇV]¸›Oj‰îT\¸˜—¸™6$~ÕìrïvÕGq|®°Õ¼†…ðEý¿õ¢.T,N‹vÁÆŽöá?¥½·Q ú(¿izßø}‰s…é'ÍY3:gÔï¸Æ.ŒÐÚm"Âmƒ"Wñßè’º È9å(£Ûø˜Ó_Oô»Nc‘aDt¤h…å2w¨×D…ãS§JfJ[|u§“j5¬Ù›ëC¥×D5:<‚ ^ þ€8¡× Ù»<å„b+®l­ûº©¾ÞîûÌìZÕåb-†¿ÐbˆmÊL¤ ÉUSÞ€ž¯¶OºÆ·ÆÍ×üØ«•®ÜG·þh$ñ?E<ÑMÿÃ]L’ðÂÿôY¦_ÊõNV »dÝ@UØ.ŽåÃ^‘Ãê–ÒûЫÃ×8ý0]ÏnyŒ4í&:÷˜BŸ¥_š29ãõ ›Ì îÏäÍj égãkíTGç¡™4ñÆ\a@b£¤;ÉT1}åT\%s´ð¥g?‹o‰LóH7XÓg:`•.š¤K€À,롳éìj’LÑYÒ:Q£ÙÂQÔŽ€“oúA¹?x¦ñmÌÅ1È+|å)ÙäX9=– ™=>غ«^µÔãã6¾ëŸ T•=†úÌ*_ºåí5B êø*J”"¤:¯Ilòž†iÚŽðòÂa=ÖAÜCRE¢ÔË_V)…½ZV±&åò¤ d% µôÒ,Ý®Çx?MìÁ¨o%Kƒdj¢ëéH­¤‰G+qlQ‹ÝKÝ ¯O‘Ï€ª¯u·~W"¢¿ªCk$Û¾Ìðè-$|__SÝñ3E|âÊdÇ0áŒ}*æ;àUÄ ³Ig¦'“X Tw:}þMl¼ÔµÄÓW h‡Æ)oVZܽŠG ê.¥·ÝÏÎh øCæGæ­ 2îÆ¯cùvUï%í2† f¼ÑÙ×±ÏØ)WOÙ7{ÞX;ÈäEÛ]ÚM’ÁTÃjÈNO1B~»Vww:Du0û$¢}Ø&3>8ÄÓQêƒm†÷©0ÞG?#"¡ñEç³PÉZÏÙð?÷UŠ À4²ƒùuõÞËÖ~²JxxÛ–iM½ï8£í>åe匶AnM9R,/óŠc…¹–)¬-ÈÐêw&Ò‹/œ]Y9Æh òÈ/Hi[úHü ÖX sY£ÏbÓE:K K>%ØÊØ–É+ù¯ýXª#ÓŒT¯t\;ØëÍ»îKN±P#‹SWGíø£Ý)Ñ¿+%:’× “¡üô¥a‘?|-Iòï,oÀ˜+ “¢è ÷”¢(ú8ùþøòÿl>åÿx”ç)ÿÏ_ú±òÿ<Ðê/ZÿÍ—¯Âü?OëÿQ^í^þŸ_zÂÉûÕÊü£Rù8ix¼”;±$;Õ:ƒŽÀ{÷¯ ¡s5M—N†CäR J$È™¢’9½M$¦23SM™Ä3•pæ+ጇ››k†Í`-¹°Ëó©ÂèJ¯»=‰_:±íB©«ñ¹„ ™l2D«¨…-a™SËŒž~ƒá”ÀJ•³ Þ¡m¿ß=îíìñû#ýÛþ†HݧI2ò!ÃñB «1~V àyØÉÄ$âÎØÉ1ÀâRØÉþÅrS!"Öm Ý_´ÑB±ŒU1¥ SoÍD{” nkc•Ä)쌻½à¸£ÍŒY d)MÄ鿌?È'ÐNf·±Š´¿üšÀgŽcuùˆ§¾W€uAðf¼ëÌBet'øæ,Le½æÏ“él2¾MÐö¯ñ¾@ÈfMÐOJØòWñË+Z;açZ4ãgáR"·…¢e’9{#„vwܞؕ!Õêåì dzO¢æê6ÛA›™ 9‘–휽ŇŠÒM@Õb±ÇÁgÍMJ4p­!Z]æBâ’Í•îZ³êC‡äPèRQŠ”Á–zT)"³ÎÄ‚«Sµ³˜æ,F2t>,Zr¤ÄɆ©ÛX_éš|ÙÓŸ­®¦j½„Øâg—Mqä8F}ó’{„q?£§†Ä¸tº¼ë@CÛõâ¬V£ äh‰ðò$JRLÆIA|[iVõ7éøÓ!{©;ÃQ“°ô_(@F¢Ã"­ç)ÒÛÜ·mãMíжìQEõi+ÎéÂ6w»¢:.KXP&Á™â õ¹}œ× z‡µ¾ÒSD“<¶ñwiQB„£ãÃãšÀ<ðHº"8e¿>¯ÉŸýð“>ÄßЇþßÈCGÂ×»öø#lÔê¢o ¦K¢!Á?èmWïj}|ÐZIN>™.>ðô9˜qq4R_þÝç¿óƒψ~}Ñh%qt±œÞ.€oD^üÙ30G!¾Ññ»||£þvÇàÝQk &Žg©ýNÁņ}w0# Kb[8% ‰\5 ‡Ä³tªXMø¸[úcnéÄÄ+ÝÎ-m#–D¾¶ÔÝ ~%Þ$èZJŸb„TDˆlØ‚F‘ï§l(7º¹0/3Ç—i3Á~±Áô{yþ¿Ìӳߥûê<ÙêÂ]£ø%¥8bÜ!‹þí±çuz9ÿZ¹a£~W~£óñÅ)1˜™æù‘ /0uœDz‹‡\²ë`š49f¼äé‰à¡X'$–…†1¡wÕw}ùÁ"¡«çŽ6ÁÜy‹Ü‡,¥ *s½jiF¯*œåí †»79> þ³´ukaQtÕvß]±wFÜ¡¥tò'‘O­( 8‘ßWcŒ±Ó7rZ5–µ\¨4žädV3aZ¨dêñ ]Òg³ñµðh"u\¶çˆ)Cò–oè5(BrMER6Ö}S2I½†2´d®ÆËõെýÚ.~*Mí60¿Þ6áúbLŒë2âzy“#¹ÌîrLtè•ïàì“®è®NÝõõh)è’BÙ¡&vd¢ºâ}ºl½ ) «+:õ•ØUaÜ5ò{f¤'{ŠÆýDùÊ'Ä3¹Ìd‡ªþèÄ?Õ_ìIx`ýÉßLL޲°£fqÑ;݉°†YF«“DãMËdüM.™´£CXÌØœbTR2íhR¼ÔÀ7Ö:« ĽyWß±•yëi3&UcÝUÿ]àc)çᯰ¸R;Mmw Ÿï ŸëôŸÔ“•Rk:oõ?Ó•Îßòj„šØ]¨ ­0:LˆÏ§¦@s¡ÎFëCSÀ4² ¼ÐU–Ó§ÉìÞ`þÂ)Ê]m3Ž ´–ªì(¦?‹êIrÕÁR´>“«Nª¡Uªñ꬀èeÛêžþ¼3ÿÎã(¹è•[ÄfLȨ†Qi“ã „@e÷ß<ö³#™^“¯úÒ/"غâôC jÔ%V|9m$4 äPN ­ýTYð.¦=î2©¬È™%é³—9D£¥ÄDsz’± ÏsŒ_/g…’__·gº}!Sg£Æ $îT4×No1"S‹ÐQRpX3&p •ýZ§û˜ÞNáðV·oú³îÞÂÑÁÞÅÎ$’Ì.¤‘-ÎY8`åÖE^6ôC‡:6ÒvXߎÙ]k¬ò Ü‰Ö { Rð¨A÷õ϶X3lÖLõ¹ˆsN;ÊÝ‘~eMÒ~7†øáBH‘¢„K%sÞb‘à‹Õ†üÊ]\»ªL šP‚­?Äaêà:Œ0·P¼¹é*3rÃÝ\Ï[[X1êÖÈaRõޱ½S‹ÔÅé‡ á!(wü5G 9LüŽî=ÖŽèpRÁkÍO§€§ÇŠÈјŸw|Zu«’h ðª¨(bbïVñž¤‚—bï<ÌFxúƒ:Ûö?8RSb/rÇÛJ¬¤­y¡7¯ÖÉ%ù€®k £ØÃ±á˜}×-\Q±/tÄñ;"ǯMà͘‡8nV€á¬Yñ¢Ë%LOþ(ê|ÙSó½Z{‡z9gm{eËyñˆÆÕóÙ_5ùŠÍn¯ô Å-›ÖÂrâÏ4+MÑ@1s,ÝÔa4QV ÊP‹"IÖ–8f1@;rw#wo(GÛáhÎ3†Sb,’ ;A”G¾¼Åûi#p=©š)³¥m([´`”¿8Ü¥%à;km+1f‘q×DÉëäÑðñß3´Ýæ‘Ý%T.i³$j(NÔ7@j)ƒ½’ÊàM2ÉP_ßE<Òê Ï;xêrôA´Y¬é„3y7­p­¬VØ s!v“Ÿ…ÕB¨ ›xtÆÌP à ±”bØØøó4õûÔ )h–'ÿ¦T¤rºáA‘D=XH7ÜótÃҺá¥ò@–Ó‹ÈQN?\kdjˆ™úa”3…fkQ ñ]¾†øúß@C\‹iˆNÎ ±¤ŽH•<®–ØáSz %6šRM$£ñ㫈qq-OAÌUI­_FAüOP3µÃFó‡Ð‘ýÊj‡{¾vxàj‡¹XÃÞ‡vxЈ뇯K臰;”[è‡k¡~—§¡0è‡îçÉè|¬$m(KîîfÔÄ·¿qÃhÖ­º›–µ|¿¹Öéä›àŒ©C²ô?òõmé»à̦ô}0U™Ñ¤ßIÏ¡G„çuï£iÔѦ–µŽøx\µÿ¨!8ËÈ #äFéú'K/”ÕÔòt͵þNš/xkBs`pµŒUð¤PƒÃDº$Ð:«1f¥ç?ÃÖ!9™çÙ­åÊ_JÚLmåIÐBämÄäÊÐOfj“£Ï¡D^ÿ4ˆöátÇÞÍ}‚s¢œ~ÜÝõvçޏmœˆfMxŠ=R·Ì ¢½´ƒMw'Ô°òWÛ~pQ”” SÇëôœð{l1z/ÛDdë9n¼Ê>êÉ.|@kg´ÕP»G$X\«A¤w‰Ðù±ÐyÓóèՃüÙÜ¿<p?ÈcÅß‚Øüã¿_¼hllÂ÷¯(þûUã)þóQž§øï¿ô£ã¿lõ­ÿFcýUÃ_ÿÍ/ŸÖÿc<¼Úøï/°CWÄÉQçt¶IáŸöQû£VÞ{ðÎŽ ϾV,%¾QoüØqâPYëf’Eø52ÒV$õšƒñyz‘rxÐ7¶;­ín}În†˜;ùëb/9ëp€ÚoÓ PÇùTj}v|zËhµÙ!4ù‹D±Çn*ˆZoU¸C^”»i7?€ÙX$Ó‚CKj„˜þ9ã/Fëq¶]1š@Å„57Ö0±Ê1X*ÆÜÄbIÛDË d¿ày$ý—v”m"}²²³r²²rŒ ü»wðo„ œ Ý=îí©ò‘î7.F …÷øt;¹†>~­´ªU,Œ « Æ–NM›ƒ)O#žWñj—WœúUØa^H;²ÎGAH{ÿz,?uÀûÏÙPûM;äãˆË~nW4À㫘ßÜpvÛáøÖ5I£Ë9.†Hè[ñì#ÅO¨y·FѲH{š~öŠv°hÇkÆ-ªfôÎÁߢ凷¼ºòB[57ò!ïláC/ìhƹžgéÍ0Ř<§ïÄÚj Z99â©ÞÁiÈd_èI™ñDжê\S‹¢#Ra8üŽËm”Žäì SßL5=˜^ÓÙd~6›OHïxìw®üç# —‘éŠPØ,U2 ~aÔ\¯M+æ6VU qæ±—•ϵ$hµ»» d8L€ÿ¤MÙ‰¤Õ’J6eÆÇRÄI@M°´rÿωiÎæòæJ·úƒD%ÿ™!²bì›ÑðO»º^³ƒdWŠÄ*ží*‹T<\ôC«ŸÌȼ”ÙÒ# Ô‡~ëãnElDr‡ÈˬHÊ{Š˜%¯Æ"£±Ž­ÏÚÈÒ¼“38ò6W'=a·ò›v¾l§H'’x_Aƒ°mXá€"/ø¦_VÇðýà ¢zzïAƒJŒ{QLÝx6fõvNüŸG–Ý8Yòú̆…îQEvb„:4jV®Ñ…Ù(bvðT9Rátø$ü€bÛvs_†ž!ðë_@¾]dèÒv€Ú]‘G´ØX¡¦0ymºöÎÝ2ÔˆºVù_·Ì FÓ!Ð; ©î ¦ilO0¼ .}Y¯Y å¤x¬ž&¦Ï¸=(¹Æ€);HKNøÁ6tv/gü9ÞAxŸ©ñnà!üÜËí­ ~À:ï-ªo¨£(õ½Šª-~ ŽU‡ÈÒþ²Ûºiø$Ü¿ˆYÔ‹›ËIAç«T–žç+xîraªÄ Œj©Wd°¬ÔæÐ«‡–¶‘ WO˜ÿ¼Ç³ÿ|}ˆ+àröŸÍÆúæfãe£‰÷¿/76žîåy²ÿü¥Çþó «¿ÐþóòÙœõ¿¹ñ„ÿû(¯öÀþóQ©8ŸZ_"V <à£Þáñáñ—£Ý(°–e>MÒÙ,¡*¶?¦‰è€<ž+ÍÇxèRUcö nѳî·ý㘌î`¥!¢—4Õü;a>J¼™h‰Ëô+Ïöqo³%sÀ:ßHMÏ’5d– è]2ÝñˆR;x;¢Â‡`¾U´n±,Ê>À ÏO:z8/^ÏÙXœGx&ÖÅí“…£¬…ƒÈ *JÐ*߆ʷåô{_õà«NÏìÉnò—¶›(@I€´t´å ˆ^£ËÙö u¨à¿mÔŽäšÆú¸}¡¿Yk¨#rÄódB‰²Ó)ÈóŸùÈÎ[ŸÃ˜4ö‚3X^Ê êˆuk'Y§Æä¨ezK»2¡HOf®ä"Lg 2«§h4Éd2žØ]£ý¥LµÈ¾…›ÂXxžøÆòGA‚}4›K D¿ÀÜ¢0?ÙÂRãÕÇ3PÜÁ2áY"µ$ÙÇÝž‚Ë@=ªiŸçyw޳b¨Æ3QÈ®šWHÃ…}êTj<¬“{ÑË«2°sØE6ü÷°‹¼P/ïháøøçá"Æm-ol¿ÔŸmkõ´B_“îUµ·õÆÇV‡¢Ñ ½0á­šÕX(ñ[÷oÒ Õ·AlêΡøô¾ÝÙE|K÷ô±tú2¿]8“"/¡¥ñ¬¾mUÚ°oµc)ÞÔWaoTçÛa°{,ô×j.V•—>§rä„ÃÙa¶NŽ[ÇíÃn¿µèoÓ×£ánHC‡€HäõŒ|GoåkÑ)`âw3iOqªbÿ-†wÖâ™QÜáÜÕöãÙ÷äwøNÎ+øINlÐz²R1†S™OýÚ’ÃÇ‘oäŒ<ØÖ˜13Þ oÔ 7Ê :΀!¯¹oHþ4/¸–<>ÊD„ˆágùJ6;S›…ÅÔ`ên`x—/²y[”gïÇåíà‘Sý"’Š2*²r¸œf~5’«ºyŠ $JÐH”Yú={QDž,zÅÉ•!®W‹Äµdï`“á>xïÛÞËäFTz;[horþ6‰K9@«¿søi·W¤(d* tçãÉŽLD„2ƒhÐ-Ô2ò„ Ò»+õÔ%TŽÕl•cµ@å×Ý=ª…<W9l…ÃÅ£( giÁœ§qˆŠZ#!‡¢IêP6äð6ݬïli>†–Akň…ؘqÈ÷1äÕL=cÕ©M[ÏÈuŒåŽ‹©«Ša^ÏÓ0bR"ªa,"‰#J³¸Wý¢ˆ™u¯²'W>jŽsvFż­fˆÌ ô^4Ž|•#¾?‰‡¡YÛËGsÿ£ÓmÙ“b®êQ¨PÇr±/¨|¬+‘m¡]ÊùÛΚŽÈ¿òÜ·>Æü·lÿŸäùéâÿÓl>ÙÿåyòÿùK?Æÿç¡VÑúoâ²üëOëÿ1^í®ÿÏî/'[‘pÌ„Æaß-B¯ €DQ2pôþ)z´“T§±Ù$=UæòýÁu2;Éõu2¬ÁÏÁåp0ïÃaz9ÕÄ—ñ¿Æâ}z> £§]Ñþ` =è¥É9ÙHó¼|ê¹=ÚŸÃÐõ¨pC 贜ϒݧ¼Ñ8žI™}â_ÛGövûXt1"„«·mqÙžLËG”sŠ6 (çO²B×Ãîdz:•wcÊìWA7'\2&[údüÍÊ£Ðë¦ä:1:g[;ˆÛt˜žNÐÏßK–®#˱™5ñl}ç,Uù–ήà¥éMr6S >g߯»^GPN'Ãî”ÒܰSÊ”ÂAû•´J‘ŸÓ?&³J«’ÖR -?»‚¡BßÇ&v‡Êž«îm lkЮY[PøŸìu®´è¯•~>Â$­ãå/w€êè£Á™Õ¡Á”¡úÈ8Í hå†1á´r®éZQïœKj:Ó–ÃHä±7šWìÔTj¶ž\Ãþ݃߻ˆÝ Ö7dm5Ïv!¹,ˆúi•hg­:fÒÞf'Ro9ó4Ib‰¥Ö½«¯¨µPŽø¶ö#8ø¢Gûú& ïöh{¯77žo½éž´ê2TâåúËúFóïÍõúË×øæqr†»ÿ âdJ=û¸šÍnÞ<>™O@–ÜÖç³ÁU´ˆçƒÉÙæùÍö‚éóÓtT¿9¿ø·B2p L®îxzìßÚǧ +C6½ƒµ¯ßC–ì}8™&cúîÇw á u|Ø©‰mÏ6pÃv>¨‰ÌVL(©[×ÊÕDÓ&sjVž:À!P¤ýŽ~ÊäÜý“ƒþ/²#Qǽleùד8Cž×bfÆêì”ñjT ¬óz³HÂj HXÓR©¥[íƒÖ;<ý´Áàd®iš¤EfÂiíÄX’ŠÛÐZï'¬ÄÛE:"-wú7«d…&“])·¶ ?«ŠUþ”c>^Ì “ßYL‚¬|ä)*wMÎöõ¸ôîá3\.¡ÖnÆÍ}†G%e›nq™'É;Âu‘ì#)ÐI2l:p’Ä“cÄI2æ#)ÿ:9ÊóomqÞc'ËB–S¥=ÎäÚý%Òç~'"§;‡!A_Á [¢Þõ§²ûmõé$DQF;W êÀ´»ZÀthbù¯šZ#Œ…°/3Z„%÷’ûeKÊ!Q9¾è(,1—µ{Î~XQ^Ûû‘¶†]óe½Ët,2ÄE{ffv5èÃCͬ¨<ô̺·EH”Þº¯ a²s$Ü]H X²A7IUZ!çkJ½§ækJØšÊO\·R5F!?T*ú)hÕðÑÿmýß©~1¶þ…›ÄqÙñ(“µì³±`éI0I0Aá{vÍ﫱É]q§ ¨dߪd?·’„=j3/®v?¯o^¾ƒB6iïØ®(X½ÿ“ã“Vn†j‰ ¾^BcÓóby.FúU8 x‹,¾vø=üwUvjES k™2Ï¡.³ïÄ›ìâô4W2—,¶»Ö%ºÈé¯5l"«:SNÿ—ȧáU¬‘pY­HÆï<·e˜ø6©l(øVhÄUñîó̼~ý·ÊÌ×ö˜¯ß–cw>Ýn–9Ž@›ÇöW ùU“¾ªXD\Ç+}¯¢uÔ$+øy¿[…)Ððƒ5Ñ]±) Á.7V 5±¹²½¾²Ý´|Ò™&;ìØuYñÕe~}NM¥ãœB”XkB‹” Ú_•sC™Äÿæu‘úîÄþyòÞ’Jmoºó¶Λjì„— ,é•cïë,Y°ã½Dzc1ïRâì¡zø•¥à#÷s >òÜloËÞ 5i4.ð’¯æ}­Žö Å]´5O–3©ü–osÄ[yñgÄ~ko÷ Ý5'<¾è1:•ÐÅÛ]ø†_ÑŸù'«cOA$™©jgh6Ýü–iøD뾫ð›ê»ÜC½¹²‚·%HÂ./¿ñé̯ü[Q÷\ú–ú-/ÁÜW‚«ã«|oΈÊ&ÛÁJ$a«1?¹ÿÔÇöÿ»þSð”ÿ_ãUãå«f³±Žþ?'üŸÇyžüÿþÒñÿ{¨Õ_ˆÿõêe3XÿõWOëÿ1¹E:þmï¿ÎÑû–qüŒ6mÜ,wáÏ/ôç—l0ÿžS´jÆüìd/ðtÇ_òjï>XΕm¦æÏO.æ¿Æ³€D¿OO¸ÏþùeAw·ƒµÐhjù$¬qBF!Æ72‰¦&Ý­xóV †7Wƒ•ÖÊwТñ2då¶Æ/pŠúš&„nJÈŠí®5ñ>¿¥GÚ⯓ÎÙaˆÒBŽ?¹]žKW‘O—81äN‹L£>^®«–SÞrÛºLfž—„=Œ‘8@@âb<„j§o\¼"Åwìù…m?›?–ûÒÜÇÎVÍ·üjbO¤_õìt¸C§ÛÚ}wàdÄðTçèmˆ~)žoZž –5¯]kRg™>kN᮸†ý{7˜¡'üþ¯d2®—ê­q»{rõft_w»ÈË…RÉF}šd;I!%ÿ1± Õ)òF ù½v”k/O§–L¦´×ÑVº’V.³ª@…[6ÅgCÇ#+‡A•Ó˜Ã{ùÄ–B!-2›Ï¥Ei ³-²¥E-²8NùA–\…øºËäŒwæøG¶`î :èzÌ I̲†ä®Lç§UT+.'ƒë:Uî¯X§8úXJ7€r£Ó{mázжÑ=%Õ•Áé´BŠ^näñ»^œMh_Ľ‚øäsÈ'Ý5§w'ßË’zT~éuwu_ɯ”Pï7­SÍç:—§‘ ÃÁ\•ª¨1Åæ#£§ôzT¦¢JRŸþ^JÝÍx e˜r2%ì~£$9W½ž&3ìu¤\￸Üô\9dÞS}YŽ©¾„L5Êã©Û:FŠ&%´½û›þeI~Ž „N5º¸æ9t´ç¾,Ís_ê\~)ž{WʈfoÜsrœ(+:!”Ê•‡þ[óPVæTSr¥äø¡6ž¾cå>üº¿~€Ÿ¾d÷cÑAbãæ‚^Œbr¨¿dPÔ0æ»· fâ‚yŸîöé…_7˜xŽ$YâU¤Ä—Ü /Ñ‹!ÚŠpÎ~f’Y?ÑMc¥„"7Kü„Î&œÃ ívø1ÊË­ÉA]ä¶û°¿Ío¤.‰jâÍ8E6ƒMõ"Ô3A²:!¿‹Íò‡ÏKø_Áf&-ð+XK6µa¢â-|ÉnáKØÂ—8Áû4Ró•—S\µ¨WÞyy› *¬è0  ØE¦Ésx!]õ–T~3˜âöRäòŠ£û\e\Ö‚•šå¼G:2ÅiñÕ _·¸Ä§™Fä™õ¸Øâñ(®ÀpL6Q##5?_|Ÿ0;´6 µWÉÉ€å5ƒ}^ù¢ýš…­yá õ6òŠÞ%ÎFa¯¿„s^ãðϪPº±$ù6KvDÓïKÌ¿*Ò¡Í…)7‘•ïb*FæÍȾ&Û“K¯íF|¨å¸K”ZöáסBIQµo4,yi¯š¸OËËõ,g;V^ÐßG¹ò9êÅFšMK@í/ôDŸ·¾(:jvEûDʨFùçªñÁNʵô¢h¦¹í}Õö¾Û¶ô#\•ƒgм\Ϭ3àå}Ü>|v?‹,P Óß™…Ï‹MC;Ò Ü™W¥&틞µ/÷2m‘Q©ÎÃ?´„ƒ1ˆØUræõö¿”›{û¡¹ÝÏêÍò¾Ý©¿çðM6|cH°/çîQ$`ôÙCÉ„Â%áÇ×ÌûðrцzÏBäõRBÄe¤fV wæÊŒë#*föãbf?&fÂy]bõ‡y IÕ(Ô 3èxR¥Ñ,+UÔ1ÿÌf;ˆÂ²=ÚcûMȤœÿ׋ÍW›ðá?56_>ù<Êóäÿõ—~Œÿ×C­þBÿ¯—/šÞúßxµù„ÿø(¯v×ÿ«ºi·/ö{ò÷ZÚß«”§×ýûx•÷íÂ>;¾]Æa„óï¢ñîjï®ïð¿•÷¨sE|»hÖSi˜|—†UtíR^[žáÀ}øK¬èÉ«ëÉ«ëÉ«ëÉ åßÐ Åó²+öãxr¶‹:˜G‰ö¸Ø˜¢¾'å«‘N*1˜Å¿ºç_öÄ”SñÄäVL̼ŸáŸåcôC8Ig }g»H6Ñ'çŸÿLçŸBžÀç§¼»vþ¹ƒ'pó#yòø~<ùþ:ž³Ê±ÏØš«I?¥3χ„èÞ‰‘ ×KÇ™6 `èbâúÿüØ>7† ø´–ò9°Í‹1CbŽ… ‹³õ)žã–"X~˜…çܳyA \â­õûª`‹ßŠÊäêçd“K0ÏSÆÄÇ./E´ú¼±rìê¡S€ðü€– ãg‹í:½E‰m?¡ÁlóN†öŒuP`h/Z9>6²¤×Í~ܨ*J¯ƒ‹NÍ]½cò=al„Vka;Â,GÇE×Á«û]¥NJš†Mч³ ;öß‹éƒØ€–°ÿn¾zŠÿœçÉþû—~,ûï­þÂü_/› ßþ»Ù|ù´þåáÕîÙ÷ú–¸Û{ß7ø­=úþÅä˜5±…nå@Õ“ÉþÙÛíõ0¾ÿåÌa½0X~ö°S+òÁø/)ëÞ""æv·‰JîÍpÀ)ð£C 6ƒö’S±¾Qýý÷õ¿=”%Zçæâ¹Ä)äi’¾ˆ:Ö&NÍϰ…œ ÑGö̯=?7W‘u»Å79{òÏ­ ÿÈæIÝYÇiÜ‹™È÷ú"½F6KTš*N$(# ]>Œ‘3o§³äš2Ã/è’>MŽ/òèÔÃ¥“‹‹ô,Å›y3G!}[ŸŽÎÝxW"HŸŠd2OÄéx>:Ÿ2t ,X çò›d:K¡Îdª-\ª‹÷—ß*–cj˜hSŸé SK% £²v‰ºL®±Izy…Yj€°S¤wM¤õ¤Î†óçysìøvG΀ú[49Ÿë²÷˜å*ÌÇ ‡Œ]е;qV,»–K“¸)ú^Ö ¿ã–á˜Jz DìKöˆ:Ñ…v°âeuÇ©%D¹f2»ž+Ã6R=TR°ÖÞ̵á.Îþ’b Ãå 8=ŽÏ~·+ÑYšd¡MÂëùp–"hÂd*æSÞǧʬi×!Óü µ#.&ãëHÊ<;¼h—·óÔ¡O‹kP@œ÷öÌtìÝÃtìÕeUá„àÎi¡0OÛŽ›-3INØ28Õ%Ú#gÎÏfó ‰Ó»²]B¹k،±o‰ò¬²UC)0‹'-u¦HMÝ­{`ö­:×Òö³3‚N¸ó1&a{·TcU!Æ@ýº_…2†+Eá<¬J“¥Ð‹¥Y>×¹¦,¨^QýE‰cSªô–^AéÉàìÊŒ=xìZ>cþÏ vôŸ˜µMæDU. >M\ó7ýÏǽ“]ò#3ÌÜ*s6ž`âSLï téMIuòŸUoCŒ¬±°Ð6c`¡v *ÖüOaǦd¹uÝgö›8‚gfÆ¥‡‡×cha0ü6¸¥#ÒW¦³UÃ)FW LÔ¥éÕà9wà\#ã ð[:E¿¾á³òùú)4í0]‹ôc2z—N©ëdA„t¤ÝèV“˜¶c¨jKP2ÛëÁï 6©^d‹ï°è¨U³XòĦNžØ“ír9™8ÙíOηHI§ã âœ|·‘ö±LhÉìþ=½ž_[*1|nh·‚SË„gi‚‡Έùˆ9c§Sìºü:êÅÂc{+^ä`KºÂ(˜ìóì]q{"};þ”Û5ø}(ܞŪyßÛÍí½Um¨ªÂkƒ ŸhJÂ#ƒ(2kÛ‡'˜l³,~€ÿ0E¢èþšÝýÝ£~MtúǽÝ>g¯oíí6øG“~üçÙS“‘ ‘ÇD"œÖo}Ü­ˆŒœz‹f0l}>úRÛÛ‡ôƒn‘jCX“jHíþ|‰ì4‡o忽'Ÿª¢¬‘K¤…¼—üŠÑzĹI±hݽýàYiQ‰œ|Ú“‹ß\ÊyËO½Xä½å'^¬Ð¥H~‘ ¿Hyÿ­µ˜ï×^ÙÂô>Ê–5 P¦ðçÒ…5•îâw¶×d—\ÊñÌqt’^gäsF“õ½c!å\€÷ÊÂzøÞw?Žo³ù’„BëzÞhº¿Š·ýd4L£v-œÑ fà¾À«ž›á|*zÔTQçUCG}a%JÙ½™¦ÃñȬ,Þ`ìWúƒ Е@ˆ@_œ÷v9 ûë ±>Ljxþþ9¶§Gµ36g/ïÔ­;ŒÄßt©o9ÑÐvj¹Ø !·JŒÁWû~Ó%¸å»ÓoÄ|4K‡x[{sƒ'°³ *{(*ñ”¾)š=œ8žm>8wAWç°i lÚÂ,bbE|vúG¹Ãp«£Ôa[GáÄal9jØÍï{àõk”^Zc×;uÐW¦¢H'Ë`è: oÇæÃ] žÂS8¸ŒžéÁ¯UÊ›…µ8¤æ3n øË|×é…Œ›ƒ¯­*=ÛíÑ H@o.çL=”NžR¿ò5ª>èÚTÑód4öàËÐ"²¬C'œœFJw"pSæK4¬„tÃð] üI ²•W¡ñÊi]NÞ­VjüsÕÛQÞŠc %V´E-º<ÏWFðQå³¹$.?©Šú0©³aâ­÷:m½éè+lÇU—øR“Bª2ÌñЧM­*]ªj5¨T®MÞ1êU– ÀÕ”~u, ÔSUAŠÎAÓ$0h/«ÅyvL¡ïÄ>ÀÉ$óVžsè|ƒ7âáñÆÔƒË*òÄ€#ƒ¢ª#OËªš”ØœXÖtꄈƒøŠd†fjJf¨ÎRSµTçÈq4–W ¢j›OÝèÜ®ã¶Cv9É+dÌ®|ªÖ|-ý,¥òÌé)¶¯ïe#Œ©ÁöN¨ûe^,Ü—¨S¬ÆvFýÐTg숯}-]¿ós’¢<’Ð~ᾩrMÃ<‡¹¦YbêûuyL׳6äøUürÅ~Á= €2سá™[²Ì ñÐÊÊqÕß&Ä=íÂAøËP5㚦“M¼dO_f)J4KQ‚WÑŠ$H„ añŽÝ/Dt¾/‚GÂBxãÍÛ9» lÃô_–­U¿­·í@]nduR\•¹#Tû™:ˇƒ±¬‰óqV²}Yg~. Ñð¶)X¾ÙÑ-{æ>ê/h÷}¼øŸïP.þg³±¾¹ÙxÙ ÿÿ—/ÖŸüÿåyŠÿùK?Nüσ¬þ¢õÿâeþðÖÿæþëã<¼ÚƒøŸÏJ-Úýådw§8(Géïë ! $Õ8¨ûüøm«»ÓÏ«E½ó[÷°wP3¢ÓÔAÞ)Ð’ü™SQfì‘( ?¤¢G‡AUx/7IO•Ÿèþà:™Šäú:ÖàçàrçÕ÷t9ÕÄ—ñ¿Æâ}zÎpíŠöSèA/MÎoQwÊ YªçöhCj®{X %¬( ÓrXvŸòFã„Yeö‰muÚÛícÑE*®ÞqèX4|Jò¾ª~™(*Ø٠iØ_+Ì“ ­—Șî’õ UV4UÍDYe¬/£°˜Jò­X8XN£Žh¨H—,‚T°ŠX4–¿ZQ` *ìóÒÁ`â¾âÁÄ]BÂd:0 AѨ›ªÎãõÝUZU×dWÏõrW¶bu é^sÚnã6šÂ͘…/ô§3­4gÖ¨óçnT„=rËiŠ¢ÃÒËÔüY°è kéj€þ&>O‡ééÄJK) Ô ãÀ†äFQãàŠé|iÑ«’Ä  ¯+Ž¿À¢³Á4ñ¢ £swÙ‡ 5Õ|)Çu=6îV§åP œH?ûár_#¤öª3Þe”uýú1dll•—,{5³ëº^%Ód†V(+ÚD\¿Yþ¿ÈÎb8F‚-&d–Øq?ÀáƒùpÆM#ZÓ ùņŒjJ4QC<ƒ–°œ¤ÆKDXgéÙ0mò•¦‡é>ŸœIn&cãCÁ dEΈ™Œ†°eÂ$Œ‘\$@× ±X^ú.´¡¼ï6ü€Yƒ™ø†ŒŒX°î[ÅŒ_‡™Çý)eº•AÎ,-Òeó5Åp` ]Ý{ÇÞ»ý³_ø‚/lg쯅µÊ¸§„ŠÖlÁºžÒ²öï'))û\_Õöñž¿¥îúû£’'~¤Ó–nA(¼F`¡ñY†·f¢òƒYKÇ±Š¢PÖ»G±–`KǰÞ9|uÙÈUµeZ¢ ­z¥£x¨9ñªj­¨Õ²¡ªjIÅaP‹¢T³KÇ“¹Ë÷ócTïž*–P½kpêãR— IÅ¿M3¢QûvD¦( H½c,ªX*õŽ‘¨Aª?ä¾#KlEÑgŽ8MJM+¸RžðI[Gù]Ï3bëZ›Õ0¹˜ÑHXlšuUJÈ}ÓaU ÐîÁ~«§÷ÙÞ³ŸìNÉußš.Æ#1*õŒKbÖréÔ)U4î.¹ùZ±l} & jtŠN©\5Ãmp!uư‹Ò‘ý†¤ŽœÂ pÐ÷º®€Ææ6jö„¾˜^çÃsB2ŽTC6öÑ'}`‚½è>£è³Б‘ÞTíÔ­÷|œ°ˆ:̵¦9A% Qm°\GÒ€œ`~áØN/0£qÒWù‡ÚÕ{^Òei*û‚‹ GDª+~@¡%3Pa’Iù‰êÇWà@ ¶ò‡%Ná5<*ÏÏtƒfüšÿ(<ñVAÌ+ šå±|˜v‰mQ¤}§ølq!Ú‹Fg÷ßíZÑÙ‹f‹¢Øì;…e y¯#¼øZõèëÐ? 4#™†îHÉYg£SëÞVp³ëp=1µôO’aP‰¿kŠĬ» ëxP)‡'ƒª:„qÛÆ÷†ë!ç!}'íóD"ÚhéÙœ’¾¤ŠÅÑ;©Z³û€ç›ÔÑ´`)a4-’Y׈Šè˜üx3ëðk(1âê¡Haç<µJe·åØ,øV¾§÷ Ž*†,B]êºRÏV– ’Þ.Y`ͯ™Ð墪íPjYQ¹€êœ(j}ÛSK-ìkÎŒµÔÕìèœIøR$Rv¼‹ÙSðëÙíM"*úÊ J94«Ê§àzÉ¿v¢K&¾©1çl§P©)· Šö{ÎPÖôPjÌ,9´æšŽP½å58²(ÊLÒñÕW“×$é”ã)QQ˜œ¨/­.‰p·ôxðwž©øÛ?9 ’—h埵”pè—jÕ}}-÷ Žêº~ªžktî™Ô¤ôœ'ß ~1‘æEg¬{>÷:ï˜\Ïæ@êž¹ðbj~ÃÔžÇݤ ¤1&ÞÔ§å4_ï¹·–œ‚º†u/ºÓÚ›ª5±S­pÌ”Úçq—[÷4A6ɪüM F^uOO<ùöŽê"M†çS5«PŠPß:ž€†ú¶‹g3Ä•˜Î~Ãf ‚›¾ã=r4E2 02˜&zï v­`ßÁ΀f:<÷k™þ1™UFx©3®Ï®*:PÏ’NÜí¦øé{ $ÉùOöºz“‡…Ró›”ègɉ'qåQ–ZÞñõu#èúNý°^LÿQò}ÆÊÿr’@W&w¤ï0öݼTïÇ#/ ñ9Oer®œuñ•dœ[Ú«`<>e7}ÆŸÍ7bWSV‰£˜¡Îû)¦daý|Yjà 2WÖ©eSð+±AZ~º4ÛYÚ:¢ˆ ò;à ,벌UЬ•D›šš‹i6d(͆*Òlž4›?E³qï“zóàêM¥Å¡&ß«U¥è|Wqrz·s=`ô#Ey°ÃG -y©BáÑM‡šT¶êL埥I)g‰øEëI`n-w‘iB¨†\ ï(X+Öíô¶ û °º™ð!È˃c#™™Ð$gùgq-ÊZô¼ÀX$‡ e0¼O`q]Û˜JÔñÁÈH&Ú a?u¶Sº€äW¾É{Ç Äד«ÕÛ™éô šn±.Ó)³Q]’X‰èjR%zŸþY;À¨û¯‰Uûðm2YãÉÏ\ (ÅgRKè´~ë´»½Ï¿µ{»{¿QQU¼ŸTÊë±rÖ1`~.¯Zž=Ð8¨ö²Üá~¾A;·é&ÐPwœí„L0{zô$X°rÙÊ‹ÿºßNƒÚÁHPrÏO‡Éš¹œ¶Z׌ì}üH¿5™+Žk:_Ãûê¡òü“îdñ­ßt4²˜Œ¾¦“ñˆZ×F®éüæf<™‰Ã“­În¼’£Þîv»ß>ìB°B¦G{ÑÀn‘L¾J“Q¸¥šË ï{»ý÷ÄM䇃 ¸X ¸í;T f%Ûu #üa³GëÔ õ×ä ç)Sè'óâuJpA^\¢¨€‘ Ô³$dÆ!ñΓAÐÿ„Ή¥xûOhêb¢]u–œ]Ò?0Ž[W•QÇ»ÁƇâe˜9,aÍzÇz¦Ö â·SX ¿Qè²4¨ò'HiC$- ‘n³(BZÏ7à´«Û<ɰý©Ýß%NØ@NØ.µ*ÁxÚÔmˆ$â`6K®ohÎÉc\î¿´ŠØü’£Å­Á2Öké‘4Œ»I%Ž@4ñ‹Ápšd +QQwÏ]ç™õ³,\¬X1Ö)W˘±}3¶Îg$Ë59!Xp˜¶ñ†hˆÅ€³í¥geÿ-Ö‰uÿë­è¢od…\êñŠê'cˆZʳn{üÈEguÐxßÁT 3¥[©Y¨âÄ®Rk@ «š"_Eøêùè®î¿qé»ýû³àÀìƒ5'N•‘%–E\£C4å(>ðJüS²oû˜Fð¬ö-‰®V%xœ²n¦óðƒ©ûöu*^òV-1_ñâk [ SÓ§ÕCéÂáú´[•ða‘´:Ù‹Ç^ºOÃu:¥\KÊ~­¡º[[·ZtÒ¦ºÔ8’”¦ÖŽ3–lü2ã³*â‘J]—Û̦Û÷òÅ!\fìÉ-qUÝ“”o‘jTÃ(úø,.éÌáÛÕð¡{Y:m©˜KVX0W œž\ãnö(ÌFùðèÕ¸Óµ"Ðh|º&1¤…€Ï|ØÙÝktkYª€ê. ¨Aº@#ÝcRäûÙíô¼ŠÅίî'ycs:)•ûj~§n,²^T&: 2õ‚ÆÖë/ò‹øƒ§2MS(ÍåŸÙj"ÔÛs¦ËWìòz;–©Ú9?ä ¦g–ýqï¤ìŒWj©‘Ó®]rä²Fßp›Z`p²E98µìÍúÏ@J×±•†Š?E%¿ l÷¶w9É&Þ~NŽ¿9ÚEPï=ú-ûý.ÉÜèćäòðŽuöݘxétä[ÄÆÛÙÂX`žùO½Ãî»ì‘µßAS»Ì%Ù–ŒW(}jâ¤Û?nÁùZö'2' c´3ö2Á±SB¿m˜~ü ßîîìÆ9Åf'<öþ/=œÇ½V·¿§µþ²ÈìÙÐêÐýþo{G¨…ÿ­´;-j‚~CÆÉ®€qŽiÌÝþ=všñÏîŸÛÙ³³D-0óq™ÃJÁàcT.mß&íÂø—@mW«Vwý-Ï@·ƒxQ—ƒõw»õPVØâXDEÛFÞV7œ1쫜boÝšbª˜5²ìú¬òѼÙêâ{¦µé(M]iƒQ„˘ë+9¸Ýmý¾¤½»9kõÉTÕ]<áïe(9¶T#HƘæ0[81»™|œûȾ[vòõû„À_zòM3o=™›xª¹õ0@”QnøúíœÁSIgšâ|Ù•³.î¼ÜË­ áWàá…$w+§rÍ]eé®—1—”y,¯þØ'“Ô%,I'±äŠèk Ú©&bß7}aÁ’Rdò`HX“g_žYð„°›#£±—‘̘Lc±¼™i3¨Jcet]•Œ»eØ‘î~ߊgígòƒ–ü„£Á—3VᡱOƒ+I|Y–…/ëƒËÚ'j–ËóÅ•Nv$}0lg‹QÔcÔÕXŒªÖݵt2Cc}„º9saçÚAÍȼ¤à•ýËŒŠ}™Ä#…¡ÚÃ":ŽU³ãÄyÔ8Gš^ÍåBΫÇ}#L©îj#ˆRW)¢Â¸S7ho­‰ÊsQá[wü·*žÃgø9OœWI[].eÝ2ÕM7(nk ’ûÕ_ò²LAý6È o*ÖɶZtºže%k›J‹æ=LgµÜ¤ž68¬øA¥µ²í§ÏA^$Õ6"Rôå!¯4sÃS —Z!ô 0GÔë5‰ÑfM¿s¶ .'î»{-h¢°ž öö?MÿÁç:˜¡4÷A´£2ÜÝÂŽòÜ—Øu‚Þ6€Ø•”Þ´Œ§¶ô`µU™¢/cëS7@—Ü£¦‡®©üû;huyjR¾ªÑù4‹ë˜œqQÊófÛ.¸@ú㨵ˆL’uY¨zïI÷ïêWÍÙ„•wóBlô„;èľ¡Âé°ó·Öo]Aœ¡oFdhŒO-—%BɉøKåMm¿ÊÒÊõ<²éK'8¢±ô^6ž,>B€Àá¤T7ðj1ÏÛ-|6V~3”#EƇ8þ342ϧ·.8Ádެ¦©i/y>  úäÇGwÂ÷gè4ƒ¯ãô\À' xðÞjÖˆT–XhÅ”] ñžOÃ-êÆ•C´ëƒ¢“Y&*‡k­ÏÑñœöãÈþk‹üœó·+ ²µyvÓŽ<ˆfÉØÝ>çín¾a•ís¥I)Ü3̳±QoTe†ˆ»æ™ÂT”—g¢f};Ž'ƒó±ØIðéd ¨ëÊZ7“tˆ™4á°ËJg)»BhÓ47Z´(Gåî¸I)(ÑÁþêÁ“€ ¤VƒÞhâ¯Mó •˜Ö3àœ[2â…,vŠn0íò\d¦Ú$qг+gÃIzà…]”Áí C÷‹ÅÐûóáé9vâì}¶¶ÁÜmðx»†,ù|ùHãË ÉÓãÂŒnE`ä] ùRа”<=8ìbÈòvER,/o—_ Ý†wϪ¢,м] ›¿Úü’#*C”\Üy=¥„Ø›ê@S†_ð…ãî°.¢{–»]A!¬{ »]ɶ tžª¯WÞÒÈúØÝ ÎÃO§gYx÷šÙÇèqAÞåØ9^õ†ß«ý+Í„ç6I<œz~§/T™o¸£Y}’;•ßk¿ËŽw§+Înã §þ·ò·5ÐAÿ úçðo¬«âw¹³­evÑ—e cõo Ãø¯ìtt_ô·_‘ßéUÙ鬞®6üò;=}¥jô¯ÓÓò2ÿ¹0奤¹‹V®W¿èZëʃ1w ÇE‡©( ú;½ìò̆BáJ½>5Ò᫙‘²KUú‘²\'kLU¢ÆªðŠÆ:ºœ]ᩬ*÷ßdÆÂ™@ˆSt¡–ð-çv%ú}I‹•î–Ffên©àfÕCÖ 1Kö… P¥Å¨ù[æÚÿ Ï6ǽ¾†â¡TF*ÝI¾&C üÍxaèZ™ÒîK”‹£¿°ÂÉz^Åó„уÓ)¨¢ç?³{| #éáì‡éꌣ¨A„¼EIîsëŠ)„5'´¡/ÎE‘:lˆgׄS4ž² }ƒ7M(a’Oç,ÙÙÕYí:EB¢RL]P û{•Hï+!Y®êØ©¤Y¹¬?yàYZˆ×ÀO {Â=ÈÆ&˜´w5÷ÂÍ3ÂMc±t¿œìö¾d_t>}8<‚#hwkÁ ÄÅãöÚÖn÷£²eÆ0Ê×rz³D<'Hù³¯~6#M,˹LT!«,TÈÓT¤øßý¥Ê‹q ¼§è–ìð–x0JNðJV4JvKq8Š.û",[S’B…Ò ‡XLòLé((×TªL¢VìGÄ¦Ë‹Ñ ”7 åŸ ,qþàK^¾*Ä-opíòñ¥ÂᚃmŸ*¾ôkE™KŒ?`FØô?ŠH€‘ '*>%yá ¶£yù“ Y‡å©í^™ç0ƒ¥ôýû°Ö _oR¶£o“”î·XùúäjÎífVNEQ/ª†ž­IU=_3Ö~I#‚¶¸ìšÙ‰fØ‹œ^4e7ºtº¨µjØêÁV Û'ŠGúàr¤÷g„‘ ÝúD'×þÿýAL€KØÿ_l<Ùÿçy²ÿÿ¥Ûþÿ0«¿hý7_n6^þ?§õÿÜa=û?(À˜•²–µƒû!\Aà–õ81\2ÖmB¹8 ËÖ|²ké=9d=XÑ’Þf’sŽÜ¶Oü–œMÏ@ÎTp gýž½ "Íp€0¹ì™_{ÆÕ@Ò¡ÀO¡%¡ "n Ùü©Açx¦Î‚Î ŸCxup&Ǻ2T-ê ñà^»6pêØ‹ °qkÖá!„p>dHVµe…;”tåF]ЗZÇvã¾aäk%.sâ4êvÎÝ®´/â°¡˜[4‰§Ý9²/pì%};Ä=¹wˆ{ñðeœ<˜þM¢?&zW²o×åEè`Æ-†÷¤:¶È½5W† :ª›Þº8œé¼ËfZ|¯œT5þ±aÀ˜»}$±x;#ǪiMê"S¤šT¦jBUÄÃjÃÆ¦è-["m›‹gµÙq²ÓKŽ7Y¬•— Ú6>K# Ë H?ÌeÄ“´!!…#6ÈX÷¹¬Ü„9„–=QÁõð×&L¼Jàáý£öŸò"“Iyu ÙѽôÑ–8Òæ’0Ó–—ÕÏ´Œ½Og%¼„HTˆB/!“Kâ›Ì›À©²xPì:õ_æ#gscå¢áol£hkO¯•ûFæL8M‹-· ²zIëÃõøGsî÷ ‹=8¶Vƒ¶•oäÊ:U/êOÞV¦·æÛâ½»Ðëj1w«ãŬ¤Î`ײ“•ÿ^¶‹Y¦“U´)»žrNVQϪBw§ÐÉ*òžçtRèd•åYe×u²zh'$Vý(Kyõíy|fék{Ϥ6U³²ÊUkÃ0RHIO»‡ð®c¿˜3!%\DzíÉ ¸Ž¹þbZtZ0uCbxvÛ!äÇ$…áϽ{àϽº¬*ÇM.àвþr1æ¤Z—cÏóÅÝï<Hžxq÷;¯ßÅŽxï;GRFÆŒŸïa€Ÿë\S8@†êð2-ûµ;ÈWñÔ‘Ñs¶³Uð䃩ÁyGlG(=ã«„ô rZ\E6<*ÈÜÙ¾q.E§Õy¥Skœœ8=Ƚ{ Ð;1%–§ÒÑLþ·ÖÀñªÒᓜ„Õ·g$n•I^tJa/»³]ËçÊ?«œöåŸèaÇRJMEÀZU_€S6hå»é`É„iˆ°)y5ûÏ@öެ±°VkÆÀ³t9JgósÍI„;ã$©ÉP^)¹h\kÜ¿*ÐQßíÇ*³+‘õÚ•a]uŸÉ¡}#SrÒx>˜Ö›8i÷@Y„9î`ømpK¶ˆ!Š*GX~…MÁ[:&®’–wᜌ´ØÞ­ ^ýØ d×¼$ÈLuv$]'o^.»ÁèV“˜Î+PÕß^~‡-…êE¶Àë@ÝÿHj¬ 6h{R;ÂÇ8U×»ÈÞÛêÿj»¢WëÌcÇ““³Ú÷ÊçëSÙú~`¿hI1we••ïŽÓê ¨ýä|öÅf5ÙŽÓñT}™e§ð‹'î³æô¯7ÜÛÑxd:„ɨ'R5Éìˆ1#F|“>˜e¨%™ÕuÅÑQº˜ÙªÂþ.e3 ‰&4s)‘œ æaòrÓ²H‘ÏÒ馰ÓJ㛬òzÜùƒ°ñ…4g?žOØNÃÊ_f=,ÆJÛûFžõÓù%níåQ¿@7ùmqî¶E2Eeºî×D÷w ù^¾ f¿ ®8Ò›ôðôB¥b„=ù^ÄqŸë©©ˆ¯XÎ(ÊF@ÛG_¬LO„dF ðÞiñ‡ `f1É2ØK„òN¨i-J k Ãd•{ …,ÀÕXNe£ =(ŽVX"yƲgÜ%}ÆògDhª8èªÞMèÁ,4¡ƒœf­Úq™[#A 3¿•… ?ãEþÌrCµ˜ÿïa`º-kA Úyôƒ…JÄr‘ÜG¨D­cÄ]ã(„¡Ék‡„ž‰öè2â/<ÆX†ÕùžÎÆBß±¸Fª°R!çã ‚8Ð9ŒÎR"Tõ"' edy i¬î‘Ÿ½àYûYNò‚Xý%¼[Ü Kç>ð‰n÷»ÀšÚ,O<Û›‡Ï,—Uf¨A††hœŠ×Wå¼êõƒPÒ˜GK‘‹mĈûå丯¨ ±ëâ ~dÆÜ„»Š,Áö(7tÒ8á ÎÃg».]d_âÇGt;àæƒŸŒ=µ°aw Êù‹Czñ?P.þg³±¾¹ÙxÙh¢ÿÿËW/ŸüÿåyŠÿùK?NüÏå¯ÿ/_l¾ð×ÿ‹õ§ø¿Gyxµñ? Åt¥ÇrÖÊ@Óº_ïèã»Þ'©häTdÎËýäÔÁõ5¡~æé5e⋚õf5Ö5˜ª¶ÇxÝsªœ»ö× Ëí$××ɰ?—ÃÁH¼ ‡éå`T_Æÿ‹÷éù€}E¬ŠöShº—&çdèÈ Eªçöhci®7Ö³?´€NËVÙ}Ê>•Ù'þµ}pÔio·á0ÚÝÜš-%%YøŽÁRz )&ÌæSÃêÙ÷ Îꉌð!‘\—Š²Â¢lø×Ìöe8•Ê*ÁM鸮솼4@Lô’E8 ‚)bGË_­p.áEt Ôu§¨.q§À.Çô{§Ø.„w 2 O Y8˜ÒxverÂa=׃ïéõü:šIˆÏ¹²"lNÛÜ4Ù(¬@:Ñ (Ög €|ÊNxÉJc’¨£rå°’ÜL«ÒØ„q`ÒÞ­Ÿ®UNE«b>’¦;ûøú•,ÛÃáš¾÷Àñ¦Ð•«ôLE? pÔ*JDZ"Н¯ÐÃàâdJ±n8~]‹´‹³ßŸeˆôxjpv–ÜÌÈ#w²¦å«ÃN|‹”ÓÓ‰mŸåצ? ÌœSÞ$&vTIC9Š Ô§<½ð&J†ùÕì`…‰3KF¨„Ãah}µe&«éÅŽâXˆÄؙΠô™„Ý4µ›7¡£auôTep1K&~Çí ¬’o™¹ˆ¾÷`Rùò¿g8© `Å¥#JeJ³_6¢TVcÍøB¥”Lï†Ò•‡¼ªÉÈW*ÌTV’lš=ªãFÕF±dô¨ `Ï{ …çE]lÝâ~EéÄ+r¿–¢N\Õ>ÆœÇíª•ðí4U;I "ÉžyÎM>ú“ÁK¨gÀ¾öÎ8ÌÔÑR¤Ë{Žn“dšžÏaQ™›é¹Âä‚ %Ž–â\‘ó«/‰Ó]Yñm ¤œÅQŸqèPŽÞ±°¨I®õªz…¤3žé‹7I/S\erêN˜ ¦ÑnÙtˉžA-) ׉T"Pÿ5~2¸ Ý0£°Œ#âÙdg:ö2Ó*6L&êÍV¸ó‚‰õžÈ»œF¥.™‡›f= 'Ì:Ëx¡Æ‰&µ¦6‚aïÉÃùŽ‘BH:¸Øn5Ÿœ%ìÎ:ù÷ÇrgÄLFCØâÐãŢޙ£…Eu,/°¢š®Ø)<½"­æ4ä ’È3ÈX0V°Ü’–ŒcV¢@¸Ìë¨2lSC:è¾Æ"­ÃN“È÷µ¤K¤'ôÆå-˜î8² é›AäôÒaÓ¦ünfyg8g 2Ø@bf‡ƒ. Óå"µ Ó^$F[…iß%B;+8[Åg»­.š]>*[Ü5Æñ]C³—ÊV‡ê²^d—.›ðÂKáq‡\wKs±h† ;ìÀ(üÖ¹þþòŒÏ/ÞÉÅÞÌíó‹©Ÿ1Aö÷d]¦hãÎ@)¸¢Í-'v—ÜWà@yM¦L¸@MÞë6ê{«¢ñÍò¸s©eÓG)½\ ØZR(É· ÔQÿçÈ‹_Ô‹‡­Ÿ-…)‰¢„” B!î„CÑ^ q–bu¨¶¢ðϻ㙴ɵ,›³"§ÚžŽ®Ã^Â3 Oa–uÿv.CdÓúžËµQÙújNF ògCdˆ|”Œž¹Ò'a~\é+¤ !Á½Ñ° ýß“¤XIŽ6§Ø.Ðà‚ölmwà¶£€ê°nÃnøX¼òí{~TkV «æš_’$(4Øpq*á^¹šEHÝ6ЛdÁç÷ôÉHz=ÀáC(Ѽo”.eå·&‘¼l '‘;Ä%è&³«ºu¼ŸI°s`5s¦¨hUG2t§¨´ªÏéçI•M*?‹‰Á)q~¢6­Ÿd- "­Pî ^Ïa‹3ÓØ0&0 åàX`vkpJ¤=Ó=J.ªØ‹¬j˜êLí•7cB¨«'•^ß<53©WîçšüxH(ðÆÖæ#½qàx=·R›-³âú¡@û¯·]=þ왉͉e³¯ÎHJªs…k²Z¤c» 6‡%Œ,XÕÆò•ôÈAñÐ×­ÅXÂöxËÃ]-É6 ……|„4Ö·¹Û „_Ïno€‡µ§”rhFšo’¸NdÖaÖñó­žn¡RS^³†®h¿ç eME Þt4Ó¦#ÂaÃU³ ¥03™øéx§ºç i<›á¡:û 8t âö|úŽÕ«Ñ]i€ÑÄ4ÉF Tì œæBLé“Ye„‡ÿépp}vUÑg–tân7ÅOï´¯áOöºz“‡ÅUó›”èOgɉœ€ûÊRµï 4ÖCÔ§ ëcý¼T8£ä»Â¿á_N’ÁŒ¬¶w¡ï06¤˜<#Œ_ÑiÂSÉvHlS¹û©¹¥½ ÆãSvÃÑ¢üÙ|#v5e•8Z€꼟&ÊÈ»,5pÇ9ÄèÌØ a?ÿÔŸêìÍí­_‡v1ÑÏy˪üúÿYküo $v‘?¢¿ª´¢TÀn7ÐÔÍ$…þ  Ÿ3¤Öök`Öî$3ñ+LI¥¥róö¹ÐTîIão pg_ˆÓA÷èÛŠ:·RV±èt~M2îWv¯À¾}'ZAßÖÍˆŽ…&‰OòT@'ÆË4Ћù„œÔÍ(mïßg“Òƒså±ݸÿ#öæ eo‘ :CÓ\t—V¬–±KG÷ôò{´]û›´7C"…I—^Û%‰¨œP«æÆÁÙùõÅB|ÿ/¹óë`dÿ7Y .2O=Ñ¡0VÒÙ­1@Kg}Q‘sU†ª:®"îB‘…ÙmI*-mƒµÅ†B„Ã+1 [7Ó* è ÖJ¢M íŽã)͆Â3J³¡ÊŸ4›'ÍæOÑlœÅû¤Þ<¸zS‘.3ß« $S|WBz·“÷<~-R”; þjK.ú/>ºéP“ÊV‚©ü³4)åò¿¨qÍÃæÚrúEŸl \ ï(õÎn]d=¶0íB …àj/*ê¨ò'´?f&ºú4!z\‹²°>/0°Ê¡C /ÇX\×6|u|02’‰öBØOí”n<ùå²yðœrµ:#`÷f:}ƒ¦[¤åá­P&S©Dt5©½Oÿ¬Ý˜Õý×Īý ø6™¬ñäÀg.&œâ³ ·zÜæªâŽçH—kãCïòªåŸÍÞÉö²Üá~¾ž]w‹‘n uÇÙÞ6¬«Y×"5Þ§ßNƒÚA<äÙóñüt˜¬»†á¦!Øûø¹™¦§rç“5¯¡©c¨â­TDtë7M‡¬&£¯éd<¢Öµa]¶Ç“™Ø9<ÙêìÆ+9êín·ûíÃn +d®· ìÉD…d\ÌÉu¸¥šË ï{»ý÷ÄMä‡ïiùÈÊp·}‡ Ô¬d»†Ìqþ°Ù£u júkò†ð‡€ ëë’¯Sеyq‰¢B…$ ™qÈð"ÿÞ'Ìð¨xtN,ÅÛBÿ9 ˆYrv5Jÿ@dR]UFïsŠ—a ;²tlÁšõŽ;õ µ­Äo§°~#‹´žð'Hiw'- ‘Ö³(BZÏ7à´«Û<ɰý©Ýß%NØ@NØ.µ*Aá°*^éÜkˆc>g³äú†æà<ûdË]Ž~?¶ËX¯]¤GҙĭH*q5<»0œ&YÂJTTÇÝs—Åyfý„påyvxD7¶ÇòpÓN¹BÌiœ}qZÆmYvõ„̧ÁaÚŒ6: !ÁU[KàUÿ·X'Ö•@Ô'BWÀ…£¨k>õIØ¢ŸÙ50ıçYÖ%?Ï®Åjð¨ýñ·w½ÃOÇïu舽®ãpƒî£&›³¥^ÚÐ4Š6%»/n:ã„^Xc…?_æWdÑ^~UvOÿžÓS›(ðêë;‚ÈïþrÒî( yÄ킲'ögø¾&ö³y´uÐú ¼Ò~×=9¨‰þA»‹ÿâg}F5êtà«H§ó°æ#íüÑD þ·þ ™”9\ >†K«,§§¥ñä Ž<Ðo+’—€óÙÓ/ü‚÷ øLúÛ¦‚¦¡Ç/A_0_ÑgÑ«êD™'¾ ^Ø5/0›àuž‚‹í.§8‰š÷˜Óà=tÏwÉ^Äêúa¯.õ1¯-ÿ_ó!-ø°¾×êôwõÔÂïá;r JìÙk”Ý ÚYž0øô‘á ®ï™<ü~|åÛ¯É[ZèüVcüRâñ.þÎ|ãßÅè€)‡½J M›¡,§7  €·£5åj>cSìȃaú/ŽÛ— fæZ:LJœëâTú¦Nê3V鿣Y: kÏÉ/ÀÓg}`/—{J> sHØzE†¯vže·ô×Ê;Î@Æ\ ÞJqõкôP—'/«á×ÑÅØÞÓuF@þqBà4Þ7­Ï1ÌöC4gí³2áVfêƒ+j«ÀËU/?€©Ÿ(*÷Aý¦ÏÛÃq»{²ëGªbíxƒNj]ddaëÎ7Ó½‹qìŸ<ÂÊòvM¢· âTÐléÞÝ9pk4zª|×KƒàÿŸäA¾P"¹…G”fœ(%]xm–Í9”Èä6álo>Ò¾T'Cƒ¦>˜KÉÎÀúK%L3Ð×ú+€u•d0Éð©3ÍÚ“'Ú§#Âdø¥ÿ¥DWxwù¶xë6$ö Î=íS„ž>SÒÊšòH0cUIu•¶ŠÁ Õй„MkŠej-)7:;PØöÉÎ ü8÷Çæò3m¼XátŒ˜ôð¾Òmã‡çˆšt¤¸ZÕ§îú\«SFê‹XxFÄõMÅL£ß×ðââ,Å[Îhx€Íj´1)*øZ›²ÏuÖš˜° ›þ*݇ÃìK¦) wÕf÷Œ.ËßOŽŽ ç²Ók{–Ї™88²÷¥;¤iϲ¬ßÙvœeÌÉDs=k%·ŽüôRäZ©jþ–Þi4ó¦okô‰¾8d¸@`.É„?YÚµ†.@aHú ”'àïv£Zê÷&þî^v ÅÔÜ›HZ•6UC=€?š5RÄ‚÷…¡c²ƒ«ÜÅ&t‘ÜÁ` V÷­oñ1ƒÆy«4ŸªOÞêæí¯è“·ÌrúóCÑ~‹C^CZ8÷V«m÷*Ò|Lo¬¶ÝÆäü1µ¨?Ç šC—²³«trž5³’\δ6™.]oøy­›1†Ø¡‚ïð³Œ~ëÐdf£sø©<¿ÆF•ϬÂp+t¹•¯ú°³ò/cï‹a‰%3–FR̰›Ç²™<›Ç´ºd¾†gÆ5ŸËæÆæswþcŒ›Ë·’j|›É¸jÑA¨«Nȳú®ÿtì‘£åß~ä Ñ¿ØcßÿÎ.šÆýOäþwssýéþçqž§ûß¿ôcîjõ­ÿÍõæF°þ¯Oëÿ1^íî&}¼×ŒÝþ’Û¶·š ݧ‹ßEs —N#¼ÐÕïsûZ\“¨[ºiäºu|ᤫõ3Ñ`%&ñÛÖ|tvµöa0¿¸Œ"yr¡ðÕØÊqi_° ¼3tîMùµ{IgÍeH­ÊX«ìWS$¥âÎÊsˆUER–Nrhá|BGé+X-j­©»5šNùT‘näkü-¶:­þC_¾gß¡gÜR†La2A9'ʬ ÷27ëÿWè ¦irîh‘iF‹åjrîFÎvdçJʪ¢lÖ&»uc,G´Lê¦%GT†(¹Iœô”J¨ç…Òò1Äi=Ç.‚YB¥!‚ÜR}¬;z•~g¬;ôì”Íbâå/q¬o^nÆ+‘ǵ„)h Rãx]p“ä”Lc×áeÊY,GŽ3–ìD4¹‰rœ99s²HË–SDÕ…Ræ‰Y0u! ìï uÀ˜×~çù{yÐA¸v%P‡a@øÉƒÈ®%Žž™€ðÒ¯ŒmqÊ=b@1"ÿ1ú~P•¢˜²¾’™>LÑÀ3²'%Œ\¹“¿·þz­ùzmý¥X‘9;»¢Inzk|Š&\`©Ëš8Ì®„Jç³îq1¬7×_Óˆ†õW¯¬^£ƒ7Å_´¶ú­j°Ñv0Z¦Š¡v¼ 9½õŠVrËVÙy¾ßîw[Ý ¿Uu¼Èk¯qT[ƒ)§¥àgF¶_-ë[ jáÖ8Ay*ý'¢ŸL¾¢Âhõˆ€ÚF·’݃-~ä(¶•Lù Ã7G•Quåÿ½.VŽ`žÀÿéO$bÐö“@ÛE(–©À÷W°€<û3–O’‚ÓÐ%2~аÑ_žÓÌ#dn?MK¹dp®¥Ô’H¦^‹ ‘Ö±G²³–>®’3éz)ÐZJîÈÿcï]{ÛØ•EÁ= w}ŸÁ|$6.Y¯¨Ûv²VÖöÂH¶“8zØ‘”•,ïsîlˉYò–ä<6.æwÌϘŸ8õ »I6û¡gìDĶÔd±HV±ŠÅªâ› ª¦ºG<7ŠA Îhpmys7Ž$(è*«€Sµ”ÍûdÇ´x)‡$†|Æ¥µÿ?•Ô„¿a‰@å(†ëD/gsxP*(Š¥F¥OÆ&€z-iiÊQhÔuå Lk•V.²Ïæ %%Xùª+ Á:>ð5­¸X¹„§Còo¾_›Ï{õ¥+G¡¡3‚ÚÏ™ŒÐ Fðvò ü2|ŽrB#‰' F'x’F÷Ÿ&'Äø0m‚8TQ’ø§’Ú56œœ ÊÅrÂg¡±ziZð\Üà17%fPSžÜ 1ŒÜ[—ÀXÌ€_¼¸F}l”t¤òzÜN6ž:ÄûøäÅKàäÎñŸÝ ö Ÿ b~ Ù×À6žš8 Y‡)¸2¶9‰oQö‚m£V¶ÕùèÅ E¾‚ôè"¨ÔÏà§{|?nJu©6Î^V•SíÓ·ð;~$Ž<$}¨÷ÈÇ¿|ø« À¼­ãÿ¦‡?Ïàçy’ϾBE©G%ŒÃa5D:>[ À%`—ÝÇ.²«gÃPI2ÐçM‰3Óü¢Èé1pû×í®zàËä‚î˜ÿCïe‚£%JÒMÏX¸Và ç¨þbGø+Â^~7Ÿ+—‰Ïë—ü#ƒó–L¹À%µ$f•Æ\IRR+DR1Ì‘'!ȱ NÎÔÝ}îgéæ¡? qðA–¡»)]Îtùa<&;GfJÛ  §…ëà’Kci6§VÜ î§åØ;æ ‰úÔ=—Ûà>z—NCû|hæj•U@]™¸oÐü5o9I{QíR)g-Ê÷©kf!VUtž:fÖÜJ!È¢ 5 ¾.þSL÷R#ˆ€j\Gjð¬Ý§¢{*žj‰hMG‘¥·qäÖŽØV 7«4¯‡ ëv‘ÕI}jU~a¶)†è° ÁØZ^ €ÚPø0·kƒ€{c9€bi »È‚ |\>¾¾.J£ºùKOC*%ë¬ìÈ7_À’¤³–&{p_Ðà:’:p~  P=Õpº ìM©—êýeù[7“oDSÍLVܧÈb•H3,„mÊñR÷$âܶz­g”x‡Vy/ˆ9sÌD$†A–"X›êFú™ùUd(£\~q\¦"¯úçê@gqz‹´IRÕÔBÞ‹p¸>ÒóJ£M¦°tò´a„ÔÊ~…D8¸¬L¥©†ÊÓdA£I†Ðþ,x"pž´ È6£4úŠÇ9R¦ÞÅ2‰‰D k„ÜB8;ÆB‰jò§¢†ß« _œzÇe“s7=åsŠq«Öc¸„ŸEÉL8)Mh‚ÞžÕËã¿Xì4Ô¢K|Íï1Šà¢4BA•ç¶Qÿ“+É¿]: ªÖõý|P¾¤A‰« Xúi‹_%b(h‰?)RžÄíï’üÚË"¥$©h"ÄòØw¬äWìRÎŒ:ŒWJ༨šF€¡ZÚ5[Ò,Vu§j“ePc:^ô®üo`-Ä3¥È–<"Ïô†Ùµ”;\×ÃÙ";J­`I/¾“#b¼väHWKuZ^ý-¯E@GnÍãKÚlKP C†_³ï—Ñì ¦-u0©™¶¢çCM[òØ10mq ×<¦-¢ ½dÓÖèÈfÚ‚u°µ5m­É´Õ Á5mÕ5SB«Tg;°5pm \ßÍÀ… ¥§‘%™’êEƒØVnÜŠc3ËôÖ2Mo…­¡kkèràUxP†®‚„TZ¿¡k6µ0ÅÒõ‰|TFK—D¨UøÑ-Y ÙÎbÍX…Ìö°³R]ÕëN{Xý‡²‡ía…ïdSds b4ƒX#Þ Öˆ³ è²ÈµÜ$šÍ¤/þt›@„f Ðg'FÓr–cÓY‚íLd4Ÿ ‡”MeAÓ4ÎDæÑO?ârõ‘·ž ÓÞVwöA7¹ZQ¬be±ñÕ<¦¸¤É/Å­H±€I¯>ü™>ý9ŸÇ`F0óK§Lv0²uqi˦½Qñ‘Ö£±‰ô)-¸…2: hùÍ,%ÐFæ¥.h¡m, .´hù.#Phs ìhÎrsÚÑË®„cG{¢ìh´£¹Ön¡¬`¾gZÐB+X!Á †®yaíІVÈd ÷Z vbö³ÛÏÎhö×g?+(û·ô$Æ~fUŽröç‡e;+d²ŒV`;+¸mg{šíLSjŸV칈͙Þ}îë ¶‚6ôù&×÷%ÿÏþ6ÿφžmþŸŸúÑòÿ¬‰ûÓøß÷½ÝHþwÿéöþ‡F$¬/˜ùÔ¼~†Õ•¯%ug'²ÈFïý a£/"ã[¼ípÈ:“b"‰L*ÞƒÄ*¥ºªÞüýïXDWŒ[>èÁº¡PeE+ߪ©ü­š!’) Sb+3:4ªÇ­?­å&š¡a,«œÁžÆQüë®?ùF30‚¨¾ú]:8‘þ­ãï ê/aýS ™BE2/5&gCŽ¥±Š¡jA^#è^ÀAbÏée4æë'u@7 Ì£²?é#>”ˆ;JªËôŽÇ„CcçÍ•šJÏ5à¥}0~( ʳL ŠƒÅD­*CÔÊRD­'GÔ6ÝÑ6Ý‘ m›îh›îh›îh›îhå鎲'îi¼~sÜþ«˜šÀ‡Mp'o;”Ãý èžke ­ŸžÛ¢¶×ª5OSÖÌù– RÕii|".–€Mæ:jç¯çEyP»Âä9èDéÂoó g˜(¸Žw ǯ˥Ðáèáæ£ êR¯(‰Ž=w;ÊÓðH^wUµÜò#NRa@ˆ¹åÑ `Kt I”:óˆ­ÆŠáÑEwÒÝÓ…ùMð+üšÔì ÁERpϘ“‡PJÉÉŒ±{4Ý |Ô0ÀŠ¡9 óª¢RÖH|[5NûÀŸœ~ò°>aß €14Æôc)‡C MïÄë›íu§0¦Â~1˜C?uØÝóÆôzá~x¿8 ÊÁÀîšÇ1u eLó=OUTÌõÀ<0º»¹`kµ²Ð¨Ý£¼ •Vâßu ´ëÐ& Æ£kj8àðG Š>2ux´o&3’æÆX³šÛ»2œœÐšöét•OòæR±×‡³é›©~KƒD/œF+EXQ¼Œ[Xê‘[Xl4˜̰§¨+› ¸’—7³ñ†LdýæS92ÐÙš=máŠÏëaSiGfIéAï×¾©-m%vsí¼Þ*¡`:¿k¡Ík uñ{ã¸Ü*ÍÁñ°?øtÑ  r¨ùçªïº?~×Ña™‹wÚ'ó^¼óún‹»´ÊÂ*jñt3e@·"y -Óéá‡>@!5C2j޾°ØÔòXþ%Ëñ¶­*’" [¬gè"L^G|°s1žÍàÚ”Mãñ©©n¹òð†&u4¶ª3µTsrë"_7µÚK]8¾ÖtH z¿l=6¶_ÐJ„ NÄŒ óxÎ_…$d9AEdæè¦Zb¢a'æ²3¤òĪìX¡RI: 8ù®$¡N Qh9îJR&œø${ ÞÌüú¤ß(3¬Í Ob–°„lùÖð„—XjK¼ƒ¶BPI FròGóý„é‹ÃRÑSZÈÀv]^” ºaÿ 6‚Õº•Àªk½>seò …¥âÊaF«|Êæf)šûʘ ø¶*v ,ä,(1bX(‰ÚUÂP¬¶%û•}d*ôO)é¼t4¬+5øçû‹ÅèèË ÿXD#”l|NMw–4Qî6–!-Kl4,¥™¥û9Ã`d-¬[˜%gÍpÛ‘uÕQ®)xvÎÄØ»Ž2\udÔ\sä¼åÈ‘º7:?Å/m19[­„­¸‡Õ_gJØj"Yë…‹+ÏJž…E#Ŧ­ ¾IL×¶K»ÁÈ–%³«–%Y!roÔNš²ý¹]]jg¬¯ë“]íLHЮKÇsINKË ’j6\x“k¾Í<-lŠ<&<ôe>öÑR¬"ªß^«ŒÆi«F 'lŠhˆD‚2j«q¯Kó*¢2iÖÖÆ‘ÉÑ?eSM|.¥å}wâ?a¥´×ÕOY)I—5¸ÅøœU—™[w«B›u^i`ÜgP¢ØWüi«³‰$Ýfí2û&ƒ’ç&ç3j)ÂÅêg %Ï¢ ë»1W{퓾û$Á« %x6ŸüžÍ–ÿ¯¿ÀEüŸnýÿ6ólýêÇðÿ] ÷§ñ¿WÙóýˆÿïþ6ÿïFæöˆÿ¯¿M<÷£ü€ÔÛÉ`6ëSέWwÃA_4@oß©eØ­–Vñÿ~ßõ'”írÝþÄ)‘ð‰ŸàW¬Zü€nt³ú£­Ý¯8@kÚŸ1JãêÑIë…8:i·:'§-5ÓïV¿è_ã]"*宄òŽÝ?©;xñÍÙ×­+óçÊܪmý˜·~ÌÂHu3NÌ­B«Vðvò9øµ+ÕŠŒ)[cLæ~ ˪,£tnÃi3,ŠÙWU2žåÒ¯j©WŸÙžÍ¥M%c6¬ggu¦d=ZUNÖ­«yš«ùœÞÛE™j*^5k¢›ñù1¥¤‹q.~Ø)é¤ötOܦcÓÇq‹/ú2 eAã*41‹ä@;y.r²6^Û,¢çPròµ,bf¾Šð=­tk6-ø×®jÇ‘8íaz†s]ÐÉh=ÃêÁ,‘ g6Á|áŒs'þÒ)çdFôÙÏ8(‘Üjqë\D/™DAžš¬‘Äa§œ@üw)`šÞ¹$ÃþÏ|ó mÿÿºàöÿ§O¶öÿÍ<[ûÿOý˜öÿupÿïîUž>œÿmù3s{ÔþŸ.p·ÖãYÖúÏúÒ‡à„}[?›WŠs›üß%Øü'}´”l‰l­ï‹[ß·æw|¶æw“ï§ù}“öwZ­[šýO¹šžßk^¥Y8c’.ÉI1¸tåŒòŸ¾ÁV‚K UOß´ºñ¯_Fèy¨´þyôKd$ÙL"¥ÞT¼ÿ:ù/„„œyÿõ*ZÄSE çÒ&Q+=¿ÙÌá è¨ã?êòïÝ¡ ?\D'/ú$6ñ†iÜÆŠgQºsÛMÇJKa¦`9ˆ§0{äœÒ¶ ®$¥?,±¥áÉã‚&µG‹ÇCªJEî¾Ñu'aC»ÊDæ‰pŒDyë™:Q°;°Â5?–gT²ýJEáZ±‘µ¨Žö—Šì”q9žìJ Ì4ðÐåƒîá±4¼¹êtN‰›6­þ×™­ÖEÇ©z{;ü&`ÇÞ|Ó­vON[Ø¡ãæ÷âÏ’vë‚¶ëÉ@Û’Núþúı¿–•Ô.U|ÚÃĤ˜À²g²hô% :Þ$œœí¶?2B»ÜWDñÄN„¡Ãy‘ΊÂqŠ1Ä¿ߨ0TøF%o'ì\슟ŠmÉKê·jçÅÒíà¨8r{ZébœO¶6ž¾=n—Ëå% Lk´0¹¶èhaB÷hïÞ[˜J«±0•,Lñ‰ÅÒ3‹Y&jf SÉËdbÒ ­À¼Tò²ƹø¦ŠƒzÙf«B+£©@Ž kdj•6if"‰êÞB< 3“l³á+»ÝWÐ&JÊödDº-IŽÑÜ–FÊK@jSR6ÛÏƤ,¶©™’`†ì½»sbŒ=„±Í©¡]=“J§;;G®Xnz"ê MÕ¬‚–3t´i‹ä™ÜôòUäÛ™òèTøñJ&×@c‘=üŒŽ»W1-QIY.¹”uïj=M”jÜÖouôЙZ½D˜uüЬ`ÝÝÉZoŸeqä‘R¸+òè¼^Éô|W¬@ªoü’{Z÷’¥úhBL•ê/¢7àש®GªG–6˜„õ L¼¹ùQÁ¡óQ1*=•¹;\ébׯȩØ"²ë¡è/F»ÄZ…åe¬{b ž1µ±èbÁUðîÁ,/Õrls£‚’xAÛ…$qCcKª5룲 ø-àûöê&+Y¤»¡³ÌÙüèºÆJ6tßgé²Ö¥ÿ×í†Î\ɺ|j¬T>{ëØ{èYAn•êÙ¸N>ìcì #B 9yQ¹{¾È£(µV²ç+dÞó–Úó­‚êÒgH~´Uq9}ZTè0:Ô þâtèÇÂm+¡™Ô¤{BÚ·}#“´Ôö±¼}ŒßV …¸f¦íãÓ¬ÛÇl›ÇBÊ&ÓÚ fÛ<¼,Ûǧ¶™´'¤}üšeûØXÑöñû…[«QØ«ljÿذö›—ÏÝ?"¬õµ'uY´%û¶Õ\9×M%Ï ‚Ò¢[ÍD+©N‰òò»Pņq)E6«©6Z†‘EÔ>¬­m&Ûäo(\`i¤fMA•=>£cDgdñÿ´üÿýu¸/àÿÿ¤²·õÿÝȳõÿÿ©Ãÿ-ÜŸêÿ_ñ÷ýˆÿÿÓmüÏFæöˆÿ¿Ÿ1 A–÷ûZgíÓîi÷¯³ãÄXYgþëôV}¡ß½‹Wø9 Ô‚óFø‹„H¼Ör@“yÉwœßãu%ÛX„m,Â6a‹ððbæ¼dpgÁ1‚A0püÂÆnÜû©T肼ùNÆ0‚Ñ܆2lCœ¡ þwŽe` Ú=y¿h¸.tù]ˆÅJ¢#Îèô ¥b0>ëN‘,´içZÑïwê1_îå,Œ8¯Gú™lªSèÜE>ìv¯³e9>dUSäÞˆÿPDµ#J°ÂõOëûÿÔ¬ê*kZG»d¢%“ü‘æU óú×àgmÇlñHü4"[ú'}Œ4&›Ò(WO±•ž_+kr­·”Úr×|ï­d¥gòܧS\„ð¡”ð˜šX¡›ôKù-pV7WòËÐsÓAR>úX7ú0pÏ ¦{1óàí'ù2ðz4œ¤8Ä«ò²t–²Ьþ aÍtèŸñ8à9ÁUÎúÿìí>ÙúÿläÙúÿýÔòÿ[÷§ñ¿·çïíÚüïûO·ü¿‰‡¹]÷ÿëÖ@–ƒbqÚn¥@?:©¾ ‰^?©N¾ø³ ¤`·u”ði'9:Üÿüû(žÖøsŸœ{| ì@uiޝÐé =iÄeo8‡êaËÇð‘Ûaï’\Jð«SG¯"ž÷/De·(:¯^†v yúäÄS%KÆ:÷áüñܵýËà ­aiEl ƒÒÇâGºÃ87À?ðvZvÞûXútµóƒÁ?>þ¨Á€(De Týf0ÊŠ ÎðL<¹f:—±Çêê^ ”é£ñ ¸üº?é.-d\B¡Do:……Фë¬.¡Ëi-¦¹œ²oc•œëGWRÍE% ;›ÈÑ™©¨ƒÐÖïpå~œs/Û‹y\úyåsÙ–õz$½·nšN5†bWµË†œ5U²i,"sN/å²Ù:}Ó:éÒáE‹U¼Ð…Ó¡ ¢¼>QŠK|`µsÌ?½ønWOZ¶ ½*k–xŽ•:ÍFë zEâ·ñjÝùÑ—(÷štÈ”€‘NõÏãœØuŽÝn¤®¦«è™; ®·º ŸvÕæáKe‹ŒqG-JpE»ZB/2»©ÒV‚ wktSmw+tP­"ÔêI·Ôm¥Óá~ª.¸®À^&8âªOê™ ’ê爦èX>æ¨à»Qào ûðëùüm¹Lu©åÃRMµH,î’ˬ‹‰5€iдJ+ùxÊ*Ìb ÃU˜ëC ¼É]ÐrÕ$Ç^ ?êê+ážÌåê»´ópĘÈEAÊ®½IqNñGÞ³Ë×’+8<Š«äRŒš@l­§æI8-™}‰iÿºNWb»}¥^GÇîÆÌ šd!ßñâýèô®AµÖ½¹»yÌ3w’;v‹Ž ´Œ$ê$UßW_Ë4VT(† cVóù—!ó‘<‚¶yÍf£"GÇíËw°Í ¿á2Ì?x;!}s$Ï£þÐÇjK튖÷ÉLÂbÕO¡Ä6o÷4:{žS‹‡ÃŸJù’¯³L¼«-Q«™çJ=!Ô  šQ¶Ó´8¯Ûö”¾ÀÊ pûl_¹¹B/dËX;3‰hv—j$ׇ†q·Ücö¨5æL/2ÉIh8;i)ªa01wš‡Å]–:‘iÜÔ+8²×¸ðúÎÚ Ýwï‰æâz’Ø…odíIäÞudÿz”Ç{LÀ‘ͮƸÿšŽÅPïi»wÙ»C&^¹†í¬+—UF¢A ;ÆgëXï ˆ³èºÈøZ:X¡`"†Ú;Ñ¢aÓ ¨^^®z$·ùP*¯ Ž!ç„.~Å=©¤º²räÝ8;F]ObmÒf@_a³£\˜´ª½Eäïb–ÆÁwtSÉ…œr«¢Á%¿ ªæ&~Å^ZbNþI*nþ7õèçÿ“ëïyÿ¯÷Ô{òÔ÷A mÏÿ7ølÏÿê'<ÿ_÷§ñÿ®÷Ôjó¿¿»¿åÿM<Ìíæùûy tvÛÕVÇÚ\É|@™¸ž½ßaIøñü¸Ý†âô“•ž­oÀº}äÎç@³FS¶@ ‡§<ǧüÏÃ?ðp'J ¿w9îÇ\n@ÿŠ€¦¢?™Œ'âb|7ºâl!@b@kWòMèpm™8`¾“ÉäCÖ™#Ÿë÷¯¯—´‘yv”·A$Ó‡¸u ÆŒä,ÝÞ¿Œg­ã 1<›G7}Ø>Ba@¸GúNn„'íÌså`®Æý)m×€ðPðþL]œ ¹–M¸}ÞË{¼ËÞ« npy/bŽÚêr­ödž¸%½ÑÐãäh¶Ÿpªƒ9¶ä™~^pú)ê£nرÊw©<»øË*¹n\áCYø¥VØa7ØÙ:"¬Þáû¤º*¬ÑÂôΕFjë±uŽXs„™ójîdWÝäWŒÿzóV½›£ïÜ=ˆO¹õn¨¿+3¤(ê¨F|Ý3ÅåÅáBZ©,䃨©2¤äõö{—¾}îc8Ê»y.†#c¡ýwÝö›ã0ûVçr<™ôAFñ@ÏØ”T?=Lu×Ê+¹R…}àò=H »«À ×{¨¢Ã‘ü†ëKŽúUbüv`ƒ=„ ˜DÂÕ!¬²9à„3º3t Ý3VuÃd‹=þÕÈXqx3†zÃ/èAZå¹Ç °-±m¾4ººÎU[†rP» ƒ_S´'I´UbÔ~tÒ¡0-I ÅÝôvE8€L_7™ëÝ·`ˆiyP5ÐCùHB‚‹dñµw9 غMmÖm*ÍcÊö‘âïN“ø^)€K»]á> ¸_¥¸]Ѧ¡%·ÚÝ„]vZŽI[çñx|{öF§Û>†ßø¯úüØã_>ý¢cËwõø‘ÛŒVfÿ¥ê»³¿Šâðð”~)o¦n­ù'ýêü¹N_&¬‡¦%Êó–ÑQ,Ö1lë^5§{³jXBš»ØYJ™Ãj¥‰¥ïa©Pí"Líµm̲ŠþðîWéù#ŸØU2ylý­•9sdpè®U~—¹r0-KøŠµŸw6™vÒB“¨Å_ÇF]NÜaú6 eü5_Æù%9£²ÌL6v,m*–ÇlÓfÏUíÐY-fkë\І =Þ4CÍh<úw27ðG†zðdü…´Õ¢¸ÞM…t‰Õ´Ûç@ðë¾uÇ·ÓÁp< 3ý îwa9òýj繊ö½Õéýcl/èÖÑ8ÜûY;ócÊ/c‚Ãùv!ƒ«;ªm2A–Äø–cÞi¡œ‹ßàà ³¨œþ¬kìhR 'v¦A…‚|i˜ _É;§.52ÿJ­ùgÒÙ–íåª 5ÜŽålØ1,ÙvOt§Ú”ï†= Z°i½‹i® îP|~¢AÜÉãŸïP`㘠˘ð˜ãëóà4+x‡›¦>o#LëkД¹ó2íèƒ]I-¸p°?yö°0Þa«ÂÛHiµúÈt‰»Ý«+¶gE!G´Àƒx21æC9½EyÈA;y %ƒ‚–+”ûÇ ãaù‘GS'´hI%)ÌkD$á»/¡®…ÊôSä€ÓPÌšËÎHÊ+̇[#›¤óoÎæ+¢ížÏ»zØÕwÁmœ®W p—‡NÉ¿z Ö1ົ‚=¦Ú‡‚­ð¸‰¢”/œ”äE¨;yÞíV"U4ù²W‰}¥?1‰¿ŽðòÏà~̺òsϺq?qcñ©ëøÔiÓÀðždö¨³£k&2Òú¯«žª§óâÄq¢4YÏ`' âè“2ØY%÷JEˆ—*îÓi^©á˜Žeçbuòœæ"«8'üTÙG ‡ñ·˜òK(}1 ŽMnæé¨%c”H2=ÖyzÆ]ZίÀ»E€ëš/ï dLŒ÷[ŒAJ7^¦Ž3'ïØ)sûð<ù±üfG”‡ý2ŸáXÅI¤cdïéwLU@nþ‘JZçùã³NÞa(¨íÿŽÖdÄ  Ã¥2¡E îÔÜÜÜŸ›Î9 cD‹‚¤Æ1î‚az!ˆà8ÙÀ¥uv$ÆFG¶9Huchõ³ðïDzõY"¼3Û~ÞY,fVÿœMîOüçþÞ6þk#Ï6þó§~ÂøÏuqjþgŒöŽÄîmù#s»ÿÙm¯6þó‡ïÜthæQ™sÅVj€ñÏ„PIŒ/œâ=gS3Š1ŒƒSrÁ`¡oE3¬­HnFðZ‘+©›ÓÓh¨d`¸–ñb-v˜¯q|Åe•.¾•(0JÆQ"—ú—Ÿx{ÕÇ0Ìùàúû’«@·éÀˆ[Û†+n÷áŠË…+~¥x¬‡¦H‘oÛÅ#@ñ± Ä™3Nñt„!ò“o< ‹f•¯ƒYQ‹Ü©Ý¡qŠtüîÑH!”?,(:›ÄfC›½‘5[qÜÕàÄe/èÍôU9TJo"B‹ÛùQÓ1áó¡÷™ ù¢ßiÊ ¤rEñd ¤ÊÉȧF@E#ŸÊé«ÕÔÄ̬$iÅAF˜7Ú…ÖÊC`’ÂW¸DjÌ£[a7sIJء/ÛP—H•ïê²D´ ì ךÙ8$,Ë$~Hû:TpÔò?˜}3SûƸÿ$zÍqü‹"×a åÌ”þSÊ⑘$4ŠÀ9-z9t”>ëéxÌ‹„Ÿ€„N&Q¨¥J¾¼ò<û?œv)wFÅœ>Å>é!ÜíÝyÎR€vžü£ÚùÏõôf=àŒ÷î{»{ðþ)Úw+Ûûÿ6ólÏ~ê'8ÿY÷§ð¿Wñöw#ü_yº=ÿÙÈÃÜnœÿ<ï4¥Þ.ŠÎÉÑqÑ%u›|Åwãì%†nÆÕÔ äéÇ?»eo' úàiŒ†×9L*ãás´í½À)ý< ­#'µ¦xÛ›á7íþ´ß›\~‡”÷0<%ªÞNCЂÞB¢ºA*y‹êŒ Ï1ŠBÝ/Ê @ZñFr‰7VÈ’[êúO§fGД,¸úWò²–¼òÆ|î0ì_æZœ6WJïÌ£ÛJ-Ñ¡]¨:|ä¦Ùr|Í6ל`MQÛ5ߌ8¿×b†æùîcÕ‰jD Gç!¸Lè²wÓ'O}No”Î1‡6Ú‘ uýø ¥z¨P8ú@"»Œãšñ¤XWYcê<;VóËÇ9wSóÐG„Éñ»a¿V²ÔV‰„([%¥Ái¤ˆKŒƒÃ:‡\çÒ¬s ¬ú>< .=N®Œ'ÍÚpQ ¯NèL!Xp%6 hš80áiœ"6¹Èš'kîl }|åIùÌ,zh}âÛ‹ߦ|ŸpÞ¥mÓ¢BíHZžÔÖÊPH¥Àî™Hû=øOÊ™pËpܯáÖŠÅM„Kô  ÄÏ\fsãG“ˆœ•Çà'‹›H².!xq.‹·˜y#Ð5 @”І2s„Džô²¾P£>üÍggbڟɬ B'c­ ˆ?°mås­‚·óØ7NlE K‚weë7¶F§A¿ÇN_õ§—°É`¥])ôh“ª+ N®eéä6Å`!ÈUžµŠ•gõly¾à›~ :èÈP9Dý …]0ên 5õzã««ßUÑ“k€T‰xu pR.-&P`Ì줜@Æ€Z ¡¶•ejPØPI¯Y¯p%î|hðÂaáÒÄ©ÞU‚ÚŒÛV×$)ÍÅì-+—UÑÐê 3ô}tÓ}'ú–´xMç ðý(/Ä‚ KZ <ÀàÀIûN¦qƒ KZ,<Äý’µ4ÜuΞè:`ŒDÅàóàQ ƒ^ˬè1 vEµRXͺ>®h°dYZ:äæýÐX3Ú)ˆ½ñì3’Ò×ÕwÒã)$pb‡¾‰4ŠÚ:ê„åûûþŒ·Ãý<üT'ñŸõè¯ô"š)†™ ¤€ò#L1ÌL è~ÅÑJZCª•=$K " ˜i&8O»ò#Ì4ÌÙ¾çn%±!ÕÊ>R>*ÐÏ®’ø¤ ž])LGý¯31‡ Vºa¢Þ—81¾KÅÆãÇÆ+’'I,OŠh6?[âywoµw—z Ü/c!–¸±YBàzEoëèÌš.°X·ÀQiád*b9’¹‹G7*áÈl ¾sóbáè`ÌÌÂÑæR]8>\}bœó¼°êO—ÖCŒZ'êüMª€KlÈ-FI%Ij ¸•ùñSúiuFwþCÊ}˜æÕw¯IB íáºB§oÛx û7O:§G¬~Ÿ¶›Õ†´‰ÆcÇé•K§ÃS ‰¹Û|€‡ÎŸ>ݒ‘¯˜pÃÿ=2`h˜âÇÍ&ÞlÒî¸naY ؆çôȉâ"Â9æÍm3ò !Oe& #¦â­#4¡aßßÑIxhÎýb1aí´¸¸8ìI¦ìR{þHîzl¬Å|ÚM"E&"Ñ Žð;~Ãïd‹Ìo1n±_6 «øî¹]@ÅOŸÚ êø¶<ÛŒŽ¯óëêuüå©2y©ÍøséùÉæ™Š„¸9E©^²[8kWöç§Šy”ýåVÀôÑH@#“ébòX‘ƿԊË&Ëký‘/Då2îãÉËʬû|Œ³.ó>Cߤ}ßÕ¢¦2¹¡Ý_ÒÌRŸ—×XÈRE¥{ùåæê:wÕ Ù,ƒZ›úú[_¥>'{UÂ1°Xzå]ž–°³ÌM #‘€½ê.MFÛ«²³ÌKÎX¢˜¶D­ISL¢Ì7÷nbš{¥J¢É€ØÑ¿Ç:UÿNëT6j€ujžaX†–Y¥’d×<q/Ö('WlÊìRÜVg¶ rýö`W‹ëSÜœkÁ¼LP_Éb˜­½¼$7£Ýì(/ºf:Çœº]}+æüä²Ä¦z1ÍÎ5 í§¬˜‹‘¹nf€±’-÷B¢¶¾qÕoCFÂ$Ò]½ê·ôJç\yV#ìëÉת©gÊß’ Y=_ÿ.KYfåocKYÂH$`uC|.?+Rþ–]£âøb†Aó›ºÂì„Ço¾ÎtßmÒ±Žß-vünùŽšIŽßu·ãw+ÙñÛ†e¼DÇïVŠãwk Çï–m@¾ñèM ŠDtwY_AYÄñ»•Áñ»½ZÇï¶ql±b˰ |†á¤Wåob¬-m‡Ðmr¸ß«l W•gúÅxÁÅ®ÂHC¹Ìjಊݜl½¥‹à ¯¿™`dZ‘Û-ÑŸs·ÑÒ\RD¯Žx2Jè¶CBËa˜w·á‡tÚ9|l˳h'ó´'NvúËN;ö!£Ÿvân¥{¬ë_ÂÖcõëßJ]VCÂ-In­Œ†+†„½ùhxE àJ]V$=ãG"׸ñ餟¹6°+Žñµf‹u’>¹´Á:Ž@×f¯Njp}ú¤còçãfï~pDËË·„Ö­T:“”JoZå*½{3I—E´J×@$`°‘O@ëËef.¹œÀ{Ñ-ç0k¯~-\½n¹4!·ü¼†þ}Ø#U*÷ž‘í¬[§’¹6?ÙÕˆÔ”ÑH@cMv7!ÝC‘šÌ€›u¬m¯Ø±6 æµ8ÖZÐ7i?ݘcm ‰ÕPV Э/ʘuý”*„•+¥“á²yj}~E¥°]wcž¸1’n>òI‰ úƒ|æÓbÉ'3.c€š‹|xn=zî®»kXW꺱*ÖigÉMÛÒt\y(T\Ÿ“ŠWµ®ÔÓc%24a$0ȶÎ'CcˆçþIÐDŽÛ”u-žÁ±4¼~KëÆ<ƒã)`1WÏïÊ3’o­9<…:Ÿp®6 ¸|®]ó\›§p¼ôYıü;ËëåÈ'Ù§ê: 9šÍsý&Ö9 ¯„ŠmêùÞ»¨ŠAÅß‹HëÖx¬Sµ\›ñJ„dÂH$`°óŒ“26.ýRùe}NÅÎ×Všíc “ñµ |à¡rëè—¿=gØÃ›J—ÿërv=› Ê×kh£R©<ÙÛøûé“}ú]ñù3=þ¼fßÛ݃÷OEÅÛÛ{òäo¢²\"ÏÝtÖ›*Ÿ†½»iB9(v48Üü~(Ïÿöþïû_ÿö·fïRœvDp] ~÷·ÿÿ}øÿÿÀüüÿeYívÛòO¬ñÿÂÿÿË*ò¿„ßÿ—ã›rïövØ/ÿë®7éðš¿ýë1Œ¢÷û~ÅûÕÿõ·ýß;½ëÞdðû :¼}ôGòÿ¹?ÿwwŸâ¥D&ÿÃ’°åÿM<Ìí7µöé›îIëEY·}Þ¦Â÷•°ðF_=¾˜‡ož.ejTϪ‡u!ïÇ9¼ß ¯$Þ-ï–½é|?ž fnd­ {Š I¹“áåÝÁXçõ«&ygùLЭ„-¾û]ÖÕïsgô·*ªŠ‡Ž[ c¡Hìiw“ ¿7Ø ЯMÄñµj%õë"±¤léiŽA!P£ñ¨t7ÌÚÕ04 Êf[²hÂEê8Œã Þe*g[‘N«ÿq *jÖ Xq÷Òk×Ò‹V>×*x;}±c ^ÝŽí¹¨–ÉUѪö·f€ºO/aAäÆä`öÎÐn Å@DµÏÕÁÀˆ#£\r•g­båÙ§,Ðæ•ê¿‹O­Ç~på¡qÅ=V+yXqǼ6¨uòÜØi‡Íš€f1”^•ˆ=¿yrE Ó©ß‘I“{ BƒÖ¢°:¬Ðª>.ÌÈ=}̬Ví F¼fêOu{¨z˜onùnÜêï:¸F8„Y2—ÇÝkU ^W$?0xeå[yùT’4@À0ú6ÕÁ Ȩ»¿ƒ»}E§Ï™¶ð¶Ó‹> ˆ¤*nÆ4ÈЫáÔ¼«”Èÿë`ÆÔŸ ÉG_ÍgÄ–ƒ÷¼`ù¢ïm2™önú´¼¡´5–vÒC*£:xÿÐôîòÄñõÝÐÒßÿß®ƒ«ÁŒó 4ûDÄB@|è]á­Æƒá°ÿpýÜÞõu ˜@h>;ÄS_{—³á7ñïþd\æµ(ˆíI.¸ äŠs1âP#w ˜ŒÆ3˜%'Õ²ÿün‚׊‚Ú@sbˆ.]€½U×õf¿ã©"ý’ç'ÄÝòœzÃsp¼ûvçà.÷Ø›ƒ›Ù“nu®dO¹Ñ9¸„ݾÍYDžàÚuuczpÑö/ë¼ûyµw?ï={ˆpÒï~ŽmÈîLìÝÏž£íeï~öçí ßýÛi€«¼û9Xp Ê0ÖÓ¥ï~¶îÍÂæ5;€À÷³ÝýlÁ´4x€Á“öLã–´X:xø>if- w³ƒ'õ>iσ'ã}Òû‘Šá}ÒFEûêm¾…ÙzÔÒñ˾‹:zysì]ÔÚ-ÑB~L½‹:­!ÕŠyK4 ¡®ˆÎrubCª•}¤| T ? & ž]%컨¥0õ¿ÎÄ‚²T9¼.qb8|— ŠÇ-Ž'V$O’X6žÑl~¶ÄóîÞjî.ô¸_ÆB,'pc;³„ÀõŠÞ"×Ñ™5 \`!±n+¢ÒÂÉTÄr$sŽn.T‘Ù@}çæÅ ÂÑÁ˜™…£Í¥ºp|¸.úÄ 8%æyaÕŸ,.­!‡µÌÝüMª€KlÈ-FI%Ij ¸Èæs±G·vŸw×'Zѹ@¾=«¶«Ícà ž£÷@k9á•é&lQ¡ßtvÔÞÝ_žŸ íZ»Ó'‡Õ†Þ.yŒªü_E#8*ÞЮÂÛꎦ¿B_Ñ:òünt9ÀŠšÜ>^Ö._¿ƒN·Œ÷ü:¡•ÎÝ…<ÄÑÚqâ[ЋèæÑlÒ¯nûÄør@ \ºð‡¡hŸ´:'‡!ܿ鑽þåݬwâ´£Y?8uP„ÑíË%¬¶â6 ’0ãš4ÌTäG#lí@ÈKî•q-e;Á(£pP„í®(OU-㥳\m•ù{øá£¤‹éÕ «Kí!…)±y“ÑwCd|¨Gýu€—o<ƒ }uÜ­íÚ­µÊ®#³*¿§Êë7X ”[ÇŽªä`ĈYéÀèQQ”ä¡dPÎ}UfqF+•â]£•)¾ÒZÐç$ÏÂÈÏ«1S¦?Ï’!R#ƒÊºµ!š~ …h˜£fnB5’íÜkbuÝ6`è©ÊF–›;G¼3ÁÍê¾ów饞/ #R”ë–­ã¼åY ¿¦}*84þ°¢^ͨ4‡vT×VÐÂzå…Ké7"Ÿ²¬ÏJ(’]Aª[Qø«aÀúÆôþzŽet$…¡ZDT,GÞLâ(ZýD$.ô½²FäŸÛÔ#)h6¼°‰<ý"KE敉¼þ ˆÜµ °ˆ¼ž‘Èc*r=EÌÀ!Ö³`Ö™ö1(á¶?‰!üš´û0á×t¡€x…wUD½ì“¡¥éí§SÌ}h†ðÈg[*œÃs³‘ñ!5М[Ã:KFšñß³Û{ÿýôé6þs#Ï6þû§~´øï5qzü÷z±YñßO·ñßy˜Û­øïî™ÿ§"íçðãlÿ}â¿C/©…Áe©õ…€Ÿ©p¢ »gâr|;èOc⿯'ã1é_ÎÔ›ë»áP†P" ޹îó1££»ØË ËàõÙÎ<ÁßYÜÛÏ‘p#ÎÍ9ýò®ÐØ "Vý.ÞË…Z›‘ÖÐUÿL!ÖF®.3Äš;{GwGžŠƒ.ó= Ž¢¼L/濾î71øuÊѯªgr8æ‹t"”MïCQ#kõ°Ïü—Á ÿ!,Â6ŠH°“þG fåbäYæ Ðá@eÊ„À¼ ŽŠéáÒ(rØŽå>–¼üÇÇþ¼Àà×;´“÷þq0øÇÁÇßc 4l9Tú¸ó‘ÀŒæûM ü]0ò—â+¶Á¶Û`Ûm°í6Ø6òlƒm·Á¶Û`Ûm°­ùlƒm·Á¶Û`Ûm°í6Øvl›Ð[Œ“ú]‚m£FÀMÅůn‚‘²(^ÅÉ«„¯Î Ì¦ ¯ÂGWîuœ­Ò¼µ‡§­W/²Ãq¡¾Á]a nJTlE»LTl÷lÓQ±V!/Ú¿Ÿj¡=t\ ÈüG‡:òfœ¨Q˜(<Ô1jY>ICÐü›Ͳ Užµº%Í÷¹ÕÅHÔ|Žý)JõÅË2 kŠ]æjXpxÕ#ͲýüþοdâQi §¿Vi4î«Ã ÞSÁ¸L ŽÂ¶ù[/øVÎ]q¨´”$‹„çsgütXÑ=è<`#„ƒ3 ã¨àá( >nÆ'G×4í¸%n#¡7 M.€Ð3ûzdAš‡&ð‚ÇýíÑ©x…ßC>·^ŸÀëWEbëH|Žjä€j_¹ à‚‰Xë+Ôˆ¹È…‘ÇŸgsHÛG§ŽTª‰Úïݵdç¨ï1½“ÃãØ“˜!úäó£.6p(V;òÛ32:†¸52öb¦’& &f)žÐ€ë­XÏü)¬à‡“lEÊ[ß¾ê$ ml’†¶(Ñ78,ü÷01c'6ÄáB$‘ÃlØt•8D(F¨æd¤QG½%ÅIh5{9¯Ö îÙg|äÍÃR')’h”R˜‘„ëY1†œÅwX­o‰Œ"@t9/ L^ ’¯âåâÆ™ÂU9»4X*®šIT q“4«Qp|܃ Ç´?»ºÓ¡åÞ%3‹‡¶î9ÐW=LâÝ"i-â\8;y2UÝÆÍx_Þ6ÀzÕÖ î ê Ì”mAzöCÞH$ d¸¸âán#l”uêf"n²h¦ê8œ?ëv¢¾ÝMlC°ÓB°SwIC-†0ût/)'ÒðøP¶ KƒGê?Ý&ã¡D['í<ÔýщÛÌ4pÏ×Iúù[m@ê?Âþ#k u÷l…Ôô1ã¿'÷%þ{¿âmã?7òlã¿êGÿ^÷§ÇïûO¢ñßÛüy˜Ûíøïvlü·ô£Ûƀߗð5†~³¨ [œÿ p€S‚Mâ’àíõ‚S±àe{¾Î0ð0\G†8pZ;[°M²{;0. ó’ꢊ±Pϰß#OÃVéâ[©™atÇ7Ý3ï÷QëpfV‰†Ûé>føH79–I«mQÞò>¶¼îOú£Ëþ•Ù›Fjo"9Oob¨ÀÑê÷½‘±OGÕ,<¡º’„Ù2C¹é}ÍyÅ–Z‹¶!ïÛ÷mÈû6ä}ò¾ y߆¼Û·!ïÛ÷ðÙ†¼oCÞ·!ïÁ÷Û÷‡&à¢Ï6äý§ y‡ÿïðn¤3ï_…ÃßÅ÷§ˆk/Šfõ]q{yô} \WåGU¬”>ãê>Qu— zo¯)è½qÏîuWoS¢ÝŸcCÞ…#êݪ”ún§ãó|Ñð™;F³ŒñÓ”ˆøgä&M-ï åÔR”<`¿±‹d¦3ŠZ®Ku±0z 5€)´ª<YÛEáBØk‡y— $ÁÁñø?f¸ãä“a‡í kocÕ—‹U?pFª'ûÈ&…¤³Ö’à‰W]0IÏœƒÊ~./ÉL!.€*NÙÜ5çGãŠûN¦XúK""ÑTœ3û…Ó}¨ ÁH ‘ë%F¡ÄB" !‘‘yUÂBMP±ªVÂ%1yý ÖU3ºjDXW3EX§­sÉ‘s‰Äºá%®E!OÖ¹–WX÷RÅs<Äc§Æ&sÝ&FõþÇfW­Øìª›]MÍN!ü„9JJX!6>G ]X‚w7#hXMJMÖ–Ö/g¶ÁÝnV[Op·J…¤RJ87^P˜¨~×·Ú÷C—N£ÖÂ]ãmjâõ¡ˆ×#óI ¯o^ ׬ðv½‡›\ÕƒZ¼‚]ôt»b©æH¦âYlåÂ'£²¥gSv†qâç m¹öÅ­4Y©68ÒT$ÔËÈ}Ú-92,ÍõÂ÷Ú1Ô¥Í U“KY"ÞžaN&%>ÔÙô“Á¦ñ»ˆ FÅ`kU“£­SÔ•DUåì$–aëÍÊÌÜL¬¼ÑÍ„Ew.!fz3AÞcÄä%‡&“<¶«[Ë×JÞÖë< Pr-þû}ÿóåwŒÿöžzOžú¾W¡û¿ý'ÛøÏ<ÛøïŸú â¿×Æýiü¿_yº·kó¿ïïmùs»ÿýâøÏÜèœÅËÓ·ÍÖ_ 7Ž»ÜAøAWªÀ?E–|ÿ=*¡¼¶±,þl6áQ¼=mƒ.Øæ_™cÉý0ŽúÞdKuçsÿæ^û@ò iƒS KÅiÓÐ|ðPËa摞ëòn‡G ÏzŽâ´•d–À¯põ2Ž(ð³#JÑß#Lþlä$æø1žþlçdߨZØfØÃ´r¤kÂæöCx§ã R½áPyŠOèz˜ÙÇ@Ü¿žá… 8Ý—³ñDyš÷€ÊØŒ †ý¯Sz sâàÆ"‘3ºwÁª¥éhrx/B“~ñ@̳o·|UðÕÝ%“0âxô'@¡ÿ†¯:—î(Võº‡˜ þÝ›ÉXÒž‰C¹j±¶CV9ZxuÄë|'žÏ¿n¨ÑÇ3ú¨Jõ¦j¨…Ã/^¶@±>|ùâøõyYëæ •øÄ×Ú£(¾!š4PXýr<™ô§·cö ›)Þ„JcØ©øBCqÕ¿†…ÑÐûÐÉ´¿Ú_¡ ¹o€ûN¾C_ÉgEUœg¿•~þSÓÇ›ü»•{÷·²êXˆÉ”ÁÐ_öLiºä"Uð%Qc† ®˜Œ`ø`ƒWƒÞû1ºÊÊ0šwI(Ú†€¥gâ4 ¢G:{§hô/¬P- 6B°¨VÑ%T@0LYÐöy>ô:ÿW1¨s‚öš:ÄýUM’'×øJœS Šc @Š~“9 {œ•l#äJ¡É#…#"HT)Û †"ÒÿhçZ†”¸Ø"]¥çRh?z¦æ9JûÐæhøÍ•TAUq`é¨QÓjPœBB7eïXldéAUŽë_ò—„Zzm#Yƒ|.@NSH¦\׸`V#XïÄ?6 )°Ò%.Róc1½í_®aûÃñûzø³Ã+ ?9¶ü![%,£9Z†í x…§å°VjTÐ2óµA °²\éÔŠRÖ×$^K#«'BûXš}ÐëkËé@[Ó×JºÜ ü4ËzÅ–‘è+H#ÂÕ(aÙœ 8Ûj´rƒt,˜ñi5P›0‡ÝŽÓóitxuê¹×&õkT1"•Ä*Ð|–Î;“?HR+3”h⇳9álŽA8[Ý ’76õ¡÷Vo¨ƒˆˆ¼`ÐΖ´³2C‰ÚŸ }Чçe!´Ù4F/Ì+ƒ¬‚Â#™î‰dC~¨=BM–†Áä]JK‚ZÌf"‡ÿµÈÝMï`ñüfˆOõV‡ý¥ÕŒ&G¨e‚õ}vÊ6ö”SÆ…<áªR¦§y“õä=¨8õ‹ßcáÔL8 ÊãËvdÙøvŒeÛ±ªÓ£¶«2׋ÒuhŸû0â0!¬ý©`Ð8(¸+‘…§½µ|õhÕ=ESSN5íGõ3.Ný6Ê пÇ> £'Ö´ÒÅ_ŠAí–b›öülÓÎÄ6í$¶i¯ŠmÎ-¶a`y¾ik|ÓžŸoÞ…¸,Ç8  §3NBC›äœöŠ9§¡qN{QÎ 3-ýÙ.KPiÜ£M¾*¯ø¥ÙÔù%•ÑY„È`Àã&G†P™âZ¬4]À €BMÕ„„“”÷iÞ6uâ!ÈÝÆ›’âåËØ`hЬ¡þEÓ È)E7œT9î]~õs]q_^ÞQ"¿ñHQ“ì0Úu¨Ã_Æ“OÓÛÞe?iòó-i7lËŠz=²U%UZ8«–A´‹§Õ*o$Ž™±tîÎÛ§EqÚR6Æ3Ø.6 KdŽ á ”+Ç… •†O}J2ø2ðÃè‡|.h "A'˜‰œD#¬cXÕ`dÚ¦né,_'j«µêa~תGøß'Y¼;˜#µSK0Ü”Úñ øy|B?[÷%Û|OšðŸmï'öaBC¯Šâ”zÕŽŸáêáéñs@‡~cöVôp„_è9T­É×5@#¾xÛzµj\¹&+5Oð0 úœ׎»Õ ²R§IƒÚ=†!oðã]³ú.žŒjñCÀò°b‹³—ð±ƒ8ÁþÞ½sLþðŽáì4ªÍ× Dߨü)ßÇEÐ%˜¢*ž€uÖˆúÃÇÍ? 0ÑèÊ쫵PËI³ dzÝ}W4cîqæqœMáö®¦\¤Zëx™À°9x`AÄê9PµÈC¤ÖÉQüÅŽ(ðWÔùsÔSrõ/ÇW}öÙŒK`†/s¨½:ÎA±é€)¥ªæ²BkpDÏÒb$ì˜Ý0ÞÞj°“Ø ïh0 Ni¥fGB؟Рú¸Ê¢q¤ñÔ&+æLNÑ‚6¤±–(Ÿ¶ÃŽä#Š‹*.pí\Û×Na°fkÀ”ÄVÙý>´žšº…éNç%“c„k9t6aÇŠ§®‡ [ÌztN(«³ž Yy¤;½ë¾¸Mäæî&LéÊ2 ÊcYG©‹ØcVÐrÖŒ¥UMІuðÇ·ÓÁp<Èùà»ZoÚ›"]«°<¦÷.<°`ø=(óÁ«\X{G[Døh —¯4OnhÁÝ<ïÕ•-ÅLž­2H@aÞlÔ™jh¸$öE_x5]sè]Ç_”É"f:~¦D}J×Ãëy óuh-ö4wæšñþ,ò^:¬x¤,"«›ßsã ¬ {¼‚øÆ "k¼²ËëÀ\/Þn…ž½¢ãN9¬ö¡vYºCï¸ê©6…p8ôº»®ÕXc’urÛbRðP«¦ŽIM¯[3ê.…³öžc=å­j@¯::’%ƒYw”¬Y%…7ìÓcýæõ8²ÜKUt÷&Z©‡ãñ-±nÖÔ}ÊQx"ùljO· –ïÉÞàÐÛ„;5TP>ÉÇ))¡$¨b Üyú…r<‚²4 4K“0m—åè“@²u|´íÚ™^רÿ&0M•y´yÛ]†èÚ'eè³Å^Ð$íõ]s<è¬öªÍ†©P|½_1 FÊ€¡ ? Jh%ÓŸ§¢K¤c¿³að´Æ£ÒTFHŒ‘x=µÀ_Žû×׃ËmtE³–Š aÝcRݻыËè þPY?ùò “ý¤„[ÞA½N× 4@µP¼òÐ9AÁëšË=oÜBYmµv­%Ø—ÈNB«–“êÏc£¿0#€` !tõÊ‚^K„N*iÊhIh+†Pñ!4jqˆT¥fŽ9—^-*Ñ"VJ@ Ðì¨/PºhN~‚­ÖšZ[¼G:‹·ÐX™ /ñÏË sTr 5 ƒà.Q§#œ0ÐBcËš…°œö¹0®™׿Ã8¦CÀêjBëK5àãZL1´¿»Ù$â“d‰(õÁ¶) Ÿh¢0NʚDZâïˆw[D¼°«áɆ¥”9 ¿áþåãT¼ÌOD¨uCg)ÚyàFä·ƒ2ÏÒçl!7ù2˜¢õØ„L>º¼ÇRï÷ΠI¯ÂûÊO“ -)ðcþXò\Šm§w7œ^ý=ÈyœŸŠw£üÿ¹“ÿšû‰7žO]íæX¬Á¶}ÔÇ“ÕÞ䛣ƒÂÒ´Ã"ý!å“ÉAÛ£ÔŒohçQ~Ñ-ó8ní¦æ’Öó§’+Hˆ¿ƒ~ƒ•žVì Š£HbV‘°ìá!™Î Ñ×µàuŒjük¶.Ë–èWAÅwXg¦žÕÿXdèWá,¯™õn¦f^-ó„aIÁWk#~]s2Þ“!¾²«l‰@=ÖyâcÈô§{ú2˜}S {tLAUû¶? ÊEàO!ýÑøf0êÅîSDÈ-û¢öÑ%îG^ÛXÇ1 ‰„#Þai*³ÍÔüåÄ‘Z_SAvËÈ­IL¤ía(I·”l€I¬/¬uAƒ[¨ø·ÌŒ+Òy÷·ïŠ4ö¼˜ÕŒ&WÞ­¼iº‹År|ì ݰÄÇÏ9Q¢“ô#çÐItI ¿£3_ꊡè D˜ Ö»ü$ÇÃ%h:ʳW¹…‰4¬ãÙ`,e•ÎÂs˜EŒ¢[¯„ó}H*0n¾=Þ¿É€¹5X0*¥[‹f($Ó¢‹':íCó´/|U;~až:ò£GJH.b•^EªÅYÇ·ßhé™’ø5&`„æÙÀ¾û§cÏ&©Á%GPñ${±s‹k‚’É)G]-ÁxæAZ·CâòÜÄeÆsŠBÞ´EÉ¢U`—üÔ. ‡UH[-"}ÂþøÙ„V=ð¤·â²\¸¶ Ø—ÝP™'îõ/ÖÄåí¦ÏB°î ½3Ú3‹*ÛWÕˆ6šü]Y"›Òxf[¬¿/m±-bi+'Úóǖ~T{¬—Á ÛŽ£Ö9 ²íù ²@?Y—Û•d#»HÃìúUl-¯[Ë«‰ÿÖòºµ¼n-¯Òòê-bzõî™é5Õ’Šå\hòt@!„½gK|‡%_¡Ur*¾D¢º©ìÇ‚÷ìÕ±Vø«[!~1 ‡[6ÆY3¸´¥(* Íè"¿Ä™xºÐL¸Ðô½ÀÂKÉ1YeM6R=C+Õü뱈ä¢+´DÙ&(s<è«{o‚Òl+2Di“ÌQÞ¯:.a‹ò~ß•f;r ²Óz|É6¤¸Éy…Ûr/ißÏü6vHÄyX(:¹¼´¬‚þGî´ëlMÄNn:Uˆ…çsŽ3ˆã}M>’SO"øA:ú-+‰tRrš5EËf,A‰DšBÐÕp% †.¦(ªÇµLEÉëW˜ì5Ú‡ —×0J)æÂÍ|xfñ‹ Dì"ñ㌤cø²xç;XU5‹jÚ“¹yiÕÕ˜PqŒ¢šÑ&T†´j;:àÉ&Tß×lt˜G6Šïb&Tßÿ^&T7µKÂaÇI1¡ú»Ë™PyÒãí8Ž~ì)S0*Äéå±)oó©¿Ÿh>åqɈї>{2b#ÿïWÿ;æÿÝß÷v÷àýSÌÿ¹ûäé6ÿçFžmþߟúÑòÿ®‰ûÓød“ÿÄæo›ÿ{#s»•ÿ÷ EµÕ}]¤_ç¤óUéb⢨áoøñÃóÄô¿P÷•—ã·w÷u0` G¶ßݲw¿óý°êíd0õÞóÏð -Ø=6I°#W>?²Tl’`œš;š8š5š™¹ò;Ts –RòÖr ž>¼Îq3ÉI}ÏsŒ‡Ç79‹ï;_L¿ôn®>ö.17@ê!ÀáøòÓT䪞W¬y@F8{¹ªïk¾OMqv©¸ìx* )Ú(/¾QI™jªÿ¯»ÁgÐûG—„[°ë"Ë™Ä]V¤œxäÄI²'.{£ñˆ’Mbí"_‘1˜9V¡Ô(Ù)¥þt¤Æ§·Ø(fò)š UvV ãhË*+@G w·W=Ì.ilt^磘•ªü}Ž¿1{î¼c¦|'ÿ8§?dê` @-@Í =M+‘½ˆ$âÔwi|2/žÉ¾…ùäÌÙ ’ŠIµdèð3¬ù~%Œ×å°ùóù›ç¬\îöϳ´¯rM.•hSÆa–Í<›U¤;íÛTË 4ÅÄoU+×d˜öMKXVU!?¹³­Q67¦Ä rð«jôxÁŒ_Õ2AŠ&‹¬-ÒýZ–î×–é~-è~mݯ• R´û¯3tßJúw^Œä¸e®”N1E16†ÃÎnY:®CqŒÁë”äpA«Ì3Áˆ½ÎÂ")öºL€0=ÜïI-U9•î|e#zžqDÏ3èy†=wŒèù Fô¼L€âFôÜÑs}D_y"KûƒÑUÿ«Jƒ|=˜ øEE€õŠ@9{â7q€iÝ: ‰ßÄ÷Œ[ÖsY;Tˆ/ã»áª³ñX\÷Œ»üP2Þ¨¬F¿«¤íÃþ 꿃á°…p‰Y Q¬HYŽ%žßM îTØYo04¥©.S1¯À’ž˜Nwœ\)HY‹zïýtFƒ1U3¦:gcøÜë<úS’&RœÑ— é ƒŽL—}E“onú=Ò¯Qß%wJ¿U<ñëSz¿ô¯úJ‡:‘™&ï&„K‰—HúÒï}bó+ À¶ìö³ob֟ε&ž2§AžöIçã›ÁLå.ˆVGeïòhYt¶$d†'™ŒKe’=!Ùu່N3 _—Å?ýÿÄÙC W<ú²cÿôþc5ž¿ƒ<¢{D³?û0¾¢Üí> pÄcí'jî_häÒîSŽ;¤™ç2_C¾d¥V^4qRdQ‹ðm–;eÑáÀ2'׿š¢{4ìÇp72|ß¿˜ôø’ÑÞv[ì%ÕT|°õR¸öC·C$¢Ÿ¢¨ï¾À0U/{Wý›Á%(õòð~ûm·(noáý’ïýªÆ7Få—Tö»FW4$”ãqʧ•×T!¤ZÊPP;‡ŠyÓÙ€µ´gH?c\xa ÆhîfJu:rZà·ãÉL¼i²Rúm¯\Ù –á4ÖHc ‡y£ˆc·[´átŒÉTåžøíxò Ò]{¿>Ї·°eèM´inF=!ú ûAðžl2 å=Ê)I7š‰®ûö¸Õý+ .GS.<¼rì¿Gn(|€îþQ' ¯CJ|.™³ÓmŸ¶^ÅÛãj=Á®€™_c‡ðð5†JÅñYýƒ0=d1LÙ t’çpŒŸ½îËöqç%`ÒI ž#„õ¼(ã´Ú9í|•Sá&Ñ"ßLÔ-ò´à…Üö|$õkLÁød“iÙ$Iåû„v2§‡lTÏþ¢„“íî úÝÁÁ:lŸvðÊ©ç…ÄÎât´]ÐÒ,ªd6¹Ì‰žd¸ã²§;çc\é4nDòv¦0¦}íë01Ô'x  !]â 0,çAjcÖ2A:³H šä“süœxôün8|ÄWsé®[ôJð8©ª®Uë†Iuã+×ÌÊÀ[…:“8Í>LúÓã!+¨èÐ}!¨™ƒv{;ë(¢}±¯Â¹ZRª3=ûTƒI… ±0ác¬¢ŠHçYvà>Ô“ªÉð6ù†¼rÒ»-GHy4³Ôéêur¢™o²ÇA´2pDNøy(º2k–YH®ÞÒ3(\…ªq§EK|é|ÑŠ´I RðC­—6uŽß=nåaØò´Rò¸ªõe6Ž­DB(®(ó•½Çï±WQ¼÷÷ÚÝû¿¡²Â¦òÓÑ(vuÒ£Á§"jÿ°k’÷ñ¼ºú ðÞ›úªg5¸Õææ¦?$UèÅìIz `€*ôùkÁ@iw7Ȫ3á=ýu7$©Œ½°ÈXíx_S"sÑ~ÍS¤Xáá}/ÿdû¯q‡â¨X#¼WkÆÚ©r{$—Ú ¨,F=NvbLnÄ9Lýb:ß ò‰•P<Èoƒ,d²Î GßYÇ7)‹êU™ð]M½ëFÞ) †µ=‡rð9 ßüGñÂÀ-v©snT@ƒ0Ý+ÔdÔc1æ>4¬ t ÝL(yd•"¢ÎáF¿4üxtèOT4H’éý4> (ŽÝ4(º?[ìXñâ¢aÄ_0ÄôâÒÝØêŠ Þâ®×Ü«>ÿ³ã{ÿSÄÿìâïˆÓ®×Ï)e_.Ëewg'”Fo;&yQJ<•¹~e È·¬Ì´Ú¤QîP*¢I\U13+§Q¿ÏŽknFF©žTK¯ùüË|'ÿº ÒO~ê§ ßù 4ÊàÃu¡’\-]®D¦=*\eWc’‹7œrb_ÖãOO‚R Á‡úLr%d“Z>=‰¯ÌceŠCÓ…ëžh¾–'´2’NT8)IÕÆU§àëµ ~´^!®æžQs}Õ3´øÄ¨÷$ZOµèLl+’Õ ‘  ‰ùu×qª'á{¥âv¢Œ-4Þ–åL§ü€Áù£å"yr R<§'ÝÔ†ÜßÑh7üöw’¹gË|ÚA·ŸošQK;^µN˦ʰ;ž Þp÷¹2ÒÒ»‰pqzHÛôeícÁË.àPÍT[P«àdíªªí»xA¢àD75NÍ!Q:ý™-:/où"ç½ul.áRÂÌ"Ss¾S-T//ïnî†êzU}*ÉQVRÃŽnó«?›®CBäcõîÑ{@ŸŒó¬“¡@¿ŽýÚý:úuúµÐ¾ÌØ*©ö±ØAâ‰/½©v‘ Ð}h¤Žuê´¡y´Iÿ#í@e}=!µìª¬=t}çgwÝ>?Ðcúÿ^Þÿß½ýÊÖÿo#ÏÖÿ÷§~tÿßõpÿ{ûþþ®ÍÿþÞî–ÿ7ñ¨Mˆéÿ{¸Jÿß“ç¸Q>iÐO§ðÖûwMÞ¿ÖÈÿP^À‡ þ’›ߢõž¹êãmÕãé@Eµ÷èúêaÿ+ˆl‹ÒRìööµö0šŸï³ØÊäÕ§¼8Ïç_JÙBM‘ôÊ=™Šð>Vé4à»Ú'tûz/áŒ!™ßŒ?ó…œø 'pë[l˜ß·xëY|ÿ<‹-OÈd¿â8ýÆÑØd7ã¸ÑøYüŽ«Æm§\§ãqÖA0KžD°ç û}½I4»ÛGís†ìªÈ××OB/O•rÇP¦¡¦P¶{ÉšY3(EŠbÒaLÑâj¹}€B1û‚N A\£±Z§é,q[¶ÞÐ=õ½44 µ½Ï}vA/ÐjSjÒûW‘ÜUœí‘Hév<@¥Ûpeǹ”d"½¢£tewPÉE'—ˆâGp ßzPÿ Ôª*9R‹’`Wêù}¨§ieô¡V0tWêtêî&Í@Q6Vê̾ÁôÇŒ†j©¥3~V®z:±v¾ ?ãyÙDÿëŽU~¡ÆœkÀãÇ…Ôï˜Ì©éǎÿ[öw׿É~Ô¿ìÓ µLÌíþç®4lRÁ)*ÚSô…§(phÇ™zºoz»‹êaStQ"”qÑ‚þ}(ktöçx(|¼ÂqŒyŠ$ uúÀǸ];L5/ÛÇ+ñõ¥Ã¼Þ™}\xe¿,"kø¢t%à§aƒ‘«£Sntn› oe®f½•y?Z·–µnäÚ^лù.]J#ËZ9'è Þ™pã ÿ…|nA>× Ÿg‡ìEïØQƒM_àýÀÙ/&k”¢‘ b%¿[ýÁ‰~ã–8HǯˤšÅ;˜ëÃËE•Ï[€-29¦‚Rüµå3¤»ÇÑ?ÊæQÿ+¬¹#Ô$­äÓì³0¾2·ÆØcÅÀLNeâd ¹:àULÿÞL›Â¡_Æ}Ø"~ަ°¼³â†¦ú3}AµñÓæûóÌAïÔèxJÎ9xq?~Ì„³i²}ɧ”9ò˜mŸÅÝÿc {¬{ãÿ±Íÿ´™gëÿñS?¡ÿǺ¸?ÿ÷ŸÀ×ÿý­ÿÇF©éþ㨯NkEK£á;Œ\šMŒ&ÝÞ去Ոþƒ‘g øß.Š£“ç PØë½Á¿Nä'ù{ëS¢=šOIs|E6=´#_ö†C eiùh&¹öØö_âEXñ¼!*»0ɯ^–uÆ:üRˆ¶â=RÔÌò|ÇSE3LÂë°fʚǹÅ/¯íÊ'EùŸpxHXÆÍjÓa‰4?b›\Ô§&~0ÃrQ¿àV\ÌÓVƒ•zÚ É8‡†øþä†Ë 7Ä¡cÃkôóÐ}mvBO›^}9¼#ë(7îÒR¨´ÃÂÈÁ›~€^Û)ëg‹ˆÓ|SIåC¡¤ª'½i?€s9žLúÓ[´‘Ccä1"ÿ“ð€MAˆ1 r¹¢@XeêVÁI¿¿Ãàa0 Úƒÿ.Æ £èÔA¤_Ê“2Ÿë:‘‘Ü•óŠÞN‰X*8xLòÀB±€¤NØ1õÒû¾qd«ª…}:Á f;˜jœCŒ( yQƃÆäîÕAäÎ8¶ü¬½#¸’p°¢(‡”ÄŽ¼Š'á§£ðÄWŽ™(e<ƒè…5n=×n‡´ 8fŸ¢ÈptÊÜó¥uÝÂÆ&Þ›ÑÅønt5ÅC£Óe¤[º ƒbÅ’Lr(þ¼gþŽÝÀî3ulEúˆÜ[ 8>U@|&öTE®‡Uãë-ú…|îã¢8Ìãc"µ÷,H<ÀJ£tòHÙ»‚¡Òø•ÏÁèÐáøfpA@©Ÿ0[ïû°ãñÐjo?k{»²½­Çb^©f‘ö.N¦{“¬7 –{ݔ˗Í&xÔhúÐà{T_ÂÊ$ýÔF ÅŸØS˜ûÙ8:6÷ÆûrqçË¢å†lŒµC+q{‹Uq'†W÷~™ f3“ßÜšBœ¿æ÷u×\Ü[s5ÃWË:|qž+öïäK5o±xD5º–rž :–þ,É{:ÀR²«<(71­‹áv:ÄÈRôÃÔ=0fw—¼{ŽèÙ:šÙáÜ`ç1©»Ð^¼b¹\.¶H!±ôg€¶ô,îûzçXò^…u«…érZ’2Ütõ:Læss7œ n‡¶ŒÒDîztîþˇÁå‡@%b}ÿwƒÐš†ª¦ï²h5žÌ>ŒQ)ÀÍí±¤†¬çW<›ãka™¾ÍÒ«|g·ßX\¾Ûïyv’9¿/$sþHæ{94Çââvhn*’IpèåÅÕj82l ûm‹îÌáÓÄ ³³ÆÓñBk}ýÿ³÷îOi%[ÃðïÏ_ÑõÖW@$nÔd&srª1A( ãäÔù¾&>€¹œ:ü·.}ß½/(šÌÄ]‰ »{u÷êÕ«W¯^—^ðkkÄRž‡ÓôžávËZž<™}q2Þ±ÐÒ ¨N¥%èJ'/3biŸÍ»²æI•v]@…êñ?Ú¡x00ü£‹ƒƒßPVÊJTla.¨±mc"HŽxÜpÈ”˜qÆQÑ<5„U%->ÄÄb9“»ž£¦qÏwá.Sw,XØeç˜yëIm0ÞÒ@Ý–á@µÏ—Î&ö¹¬ôO—Ò]p>ž[Š\ßN¥/SëÞ'´kuìµ |õ/äuÿ£[Ö‹¨^"‹AÝ/Í)OMæØж,*“î½Û ˆÃóý-©_ŽŠÒЊOS³Äß„øŠÝÉÎd°»6G€$ 54ÞIXùŠ|LYŒœTènvüûe˜ ;¦‚W…Ë QIõS1µâoGóo´O.·×£Ëßl½¥ h†z!`4ÇEÙÄC5tjLND¯³_~„¶øØ9\X®´‹‡`°ÆOŒæó™#Â^ ¼õš&ä­¬ŠŠ.0ÞºÙOyƒ¨ÙŒS–º I¤¬V^Òj¥ÒVË&.ÙŸ»WKRWKQ@7µÉKݪïKä“–.Œ(€òeC”ÅßâTÖZ™ÌœLjÊó’YË¢wGTXÏAg-Ðl@Šæ‚„ÖÊ¢´<~G¤nMõ;"Ç£Ö½ýޤ‚ÖöÜ’W3WÃñ»?ºÞ.dà]ã›Ó æqVŠù&Å¡¤8+}&2™L6ÝÜ>„¼Kª-+tW#]-$Í`6‘)íh¥"‰)¬]^ÙýH^E1¹d¢Ó£lŦoО Öã„ÚÿïSÐ A\+‰l9»aqîb=Ÿ[^w˜†b†E °/åäÆÕ)äºÎX—;xiç#ñCYrs¥ß1V=µÄ€Ôzð×4Š£Þ›C@¾¨U«Å2ýE—GÓjV-X˜ü¯š¿¸_`Ä#Ñ…ÞL£ xÈÃ~ÂòJ& $õçíÛ ïŽq°'|OJó…ªuSÓllšû ‘ys¼$‰aè%©Ï¡³s ³©ŠÃìßeεïV\f;Kµ" iÇjÚÞ?“LZ²a£r {R‡ ,˜˜˜êœéÒÍŽK'ÅR呈x?KoË\O]ÿñJqÑø†ºd¡Þ¹’æaÇPku´ .¹Y®·@ÊE…|rËá[竤µ‚Ã^Ü^]Ñwh9‰1)Ú„£ã¥Úx=]ޝ@¾…­ëèæbHuiFM¹ó ØžϼÄ@èšX_Ê,ùÞ¡ §F—B¸¢óìx¦ˆÇ"ˆóQŒM¢à_öì€=yG´Œó–øL"‘ùpñÊ¢'s¡-¬ûjÁ÷Ù¯Ÿ×ÃÍëñ´ Þß²eˆ½›Ëî`m \}U¶Þ¿Ë6?1ͼ¿%Ê'êYd‚þAx–"µ8O#OV.TKÓ¨4­Qñ¤?È%i ºþZüK|šÏ¦…ÖzSC–+6é èEeiMá»»|Ñ®S·êÔ:íoGèGÖš~U_ cøbÉ#ПE+(3à Ë€çmŒsBÁ wä¬,þÐø9„oFŸ€êj/o/–ÊŠ@.s tFíý¡~¸z°ªŠÐ\æ_2&ýÂ$, ÌH,µLÈ?U–@@ò.,Î*¢6Esšùì+ßÞ†‹o×7ËÙr|Qä³¹¥d¹B©[ôˆäYfqp¬x‘Lfçx/F­HkÔô˜ícnFs Ïsœ÷ö†º2C#>xrî;ÈeØ›[ÔlMª(|-ª±)fN>#«YÞ/Rܦ{WîJǸTH6—›ÏÅlÀ”5PSm9 éãÍ€= A ³éYPjbC4ñštCì£÷¾BèW˜YÜ“p+“ÏóB!z^8j—ŽÚÅ ü«W:êqºq¶7ª%ºé|~Ô.Ã^Q_xº 'ý+q×sk“Äb6}÷tDâë7ZŠ6 Ÿ‹¯êžõÈF'xÞ±,ÊäðùŒXhƒLÚ{ÆÔ{;ÕïÔróDœ;'Ÿ¯å´õZÈ“¨ƒh ¦&ñ ÈÛ¤ÞcOÚÏhPÃùÅrÒÇ7 kÀÆs«?Ñð~¯f èÁéñH}8½8œ}oÁAH˜¬Dš‚Ÿ,Fóg Lgr‰%z;8†Éû"æË¬õ•šVBø5ÊÅ㩟 :&®‡·8†š`æÌŠöá?šŽo¬›&,:öO¶Æ÷ Á8­ E£]ì!q/͵¶LÁFtÕê\”\I‹bñQ)œ<5Û¸úwDAé‘0Ñ•VÑ™+‚Ðp k€Ðˆ§õ?ÚnæÃ0”HÏ™E_ùðhä)ÐÈS ‘§@#…@#¡d›!GÚäû`.I¹KàÕEŠ3 çìÌHÙ)3vª|œ‹3’8u×Íòç¨lŸ4{ÀÌÿ^;bg£=ù+’¿«üû(pŒoö@xhÔÿÁ¿ZÄÃ>ÝÖiâ… ýêt«)n7]ŒÂQMFÕžÌÓ²‡É.E>bRÌ}€-k|ÍÎfÑ‚_ÕDTù-C£ì×N›”l(%=¸LbÊJ! $dšìVËvÆIÎ4É£f§þ²RÊ ­1Š ç¨4Ÿ¹©*WORÉeüð6¤ ¢7ZæZüO,£%dê%ŸïǛǕMME^jò7&£ Å~Ñ‹CãpÜüøfPÙMŽ»¢æIEnɈ¬ˆŽ“;²N :NîÈ:ø7vd‚[G¾KƒB½|¯¾Ï¨1£ÌX³’?„M¿ÙÍÂF¶JæBå/ˆ©aœ} ’È&†feÇ*¶YåªV9øè”«Zå¶Ýr»v9LƒÅpu\¢½ª^˜P¨£ô69LÆô™SÖ×'ÏÊÿØ)[Õ¢á|b‡|oaYúIR"ü£,mì²W$¿®Ç_ãªùGTÁô„ÒôÐd2 {Øq׸g< ݼ@tÈ”hËMc † 0ϱQÑž¦²oF–‚Þ­RÝ “¦Ò‚J ™Ì6wrµ©{o>: ŠÂkŠýa9cUWXu^ãÌ«T¸Mæ”+M2ô$öQ1bÉåVkU`ÛáQ=/ÒÝ wé.±·*N‡;H/]&ú;°9Éd]G¡õIš[#…Ê/{þ—~À#s/sOå볩7”ªÏooc ©L‡.,á¥ðëªÜs-™G̽üƒºõŒºÉJ„’ é€ÎÔ½g' ´ME9Õ¢ª•ŒMõ2!)àØÔÌHiË!®•eY ^i]·Á®ÞQªej…åìf3l»¡9ì»ÛÈvhÁ“öÃ0{—\è}€Z8üØ hb%ë £+<´0âkصaÁa¿Ïnì@à wÒ’¶Ò¾éØÌ¾Ëº¾Í3#7Ý?D¶ÝŒí=&|ÙºR¾™õåÏR$Á]Â(¿ê%3éËD’*ËÝ+eÕå¯/ËÓL"ïà‡8Hl¥Ëw½„wþ p[ r~¬%˜Ð¦µòò·ì­ÀpQóy;ž&ÐG”o6ùœuÇšP"Øö+éA«¦’ K8ÌïA×pöýÔ²|eÇ7vºHeÛŽõËt¡†õrd(çÈUÁŒ¾|‚wX3Q=Ç é:Ì/@ÝPW‘7ºQ©[¥Ì‘ ‹Æm¡EÚ—-¿I:1C“¸m“ÆB÷ÚdmÅzŸØ¢YÓu»^ ÓX8ŒÞ$Y;•K©c&aj³Z¢¢:¢fš,´oøÒ½®O÷‹7õÓly,I†F[s¡ ßÝ“¹÷:%¯Òîø[*q~™°é"Ú(q~à<²Nì¤AE¤üò\„jŠ6{ýýQ{ eGðÏ´Ý} ¨q¨) K½\Xê¥b).üŰÔË…¥ÞÔXê¥`)ÖÖÙ,bVÛ½ñ.ñÝa2j¦ÏÿD˜Š0ŠËHu°»óêûGayÜPGU¿ý-ø8”XI¥C¹ŸùYU ê&+£®ÊèóQVˉºjeõÕQWõPW]+êt)Z¡."ÕJ Æÿˆ;e±+–A¹e¥øb¡u÷Ž&d™7=J–¼âÎÐØï]ŠÏCôëw° ÙÊN—þœãEƒ»Å‹µ­hh‡@Hü{(¢VaVvy'õ@©e¡nµ@—$’6:Š×ót›UG7,ÉÔBwÞI”/P-1è±]†ÔaI§ ‘O”Ÿ.Ä]\êI-_&²¹<|Q-ÎìV€"txÝfÁñ—5?ÅÍO†ö’qÖQàŒ'üYh<ÍBèI˜…”sãNú¹Q4GÒèVD±0«(gwm\¥ú·ä*é{NzN–V§çð·ç*k›…uq•pR¸Ên>®R p•jÖIKM|ë °zX>$óqp´,®‡ŸFf¼ºPBd•+Eƒ€Œÿ3´ ÈäeØU‹mÎú:–]JÖ÷ÜýŒó—娩 oïxR?ëK‡Z½_0÷”þÙ—‹¡ÖTjά‹,GY9ذž«VбòUûrTtЙםC¯yá÷@n›‡eeÀ"«IÒÛ«{{Õ6"]Q_åÒz ðo6 HPhKˆÒ€†âFZ;z$ “ÌE ÒÖ‰1º´8ÊÝn¢ À ÿ’÷eàÖ÷.÷–‰¹5úVbš§Ü?ñãäÿøsøÃäÿØyÊÿñ8ÏSþŸú±ò<ÐêÏZÿ;QuëE,ÿÇöÓú”‡W»—ÿ㕃wõ“2þ<¥ŸÇœ¬ƒÌ03ƒm¢Æ“Ïà]»F?ëe7È B€§øû4Œ²;§ªÆ¶I–3ïGæóI ²õköP’†g œ““z4ÞÖzµ†cÊÏÓoB žssJéÁôKìqÂÓLY;Ò®äôi6f‡n(*`»˜Ý#Èɲ¡òg(Dddè°³r87’‡vR`4P•Ó£ÃMÒa ˆœ»SòrÔ’Ó3xáܘ&…7ýÓ=j ¿_fêìQŒ,–óáÍè?³ñåpRŒÇœ–¹LèÐ¥™JÜñêp˜!ÇŸR:Q¢—; K¿y·EFÛ¸™ÐÖštVÕ.Šo`LG†ü¡2DÇŽW*{pä|WÐ$Áatˆ…‚ç© “58_ üŽÜáѦ¥Š?¶áà5¾‚†°ÆßþÍ…ÖVåég­j|1àáZvüákUSú“Ú›8ïB]ÉÑÞ,yã¨GÎ8Ž’GÁØð~¨ç"âÈBmü¶­gàrˆÊ©¢aâSæoÔ{ 4Y;F¹ÎŒ rú2^ŒTÕ(ºÕ5¥[taé,q(žZ &ìE%v×0<§ôªÎ¯ªú•ÜïhÜÇ4Neú§ 1²o>’‡sL¿½H…SØ«Ôÿû•yà³g´Z[X@j½œ¸XÎo/–·ó‘ Óòp´Ö¢!ì@¬äx VJ I¡ª) ¦k-Š­…&5‹Z,dðT±{”4@úrÑÈþ&Òîaj®^„šËCH[â’U,Ô¶f_5Û€8C¹n`` ì^eýM»(ŠÒw°¯‹Ó&Å¥eqùUºQ*Uņèã¯×¢¥–ˆª(~Å!©¢WP¯L£Þˆ^u)Žƒ2±´§ÿI³H<€lêÌròõÔKT¸“¡9QÃzœåP UjAÃè‡Û :j¾^›û%ŠHí‡Eجî¡aqbM ðc;֨υ‘Hà‡_Ðê¾°Ij{Ûe¬$ dRSGQG&%é’a*¢@(4B`·ŸªPÀ3DEk¶·M15L^*8þžÚ@Ù2ÔÂÜè$‘æ@G .-/#ÅLCÄQ!Þ‹A¹¨­ÃD&Y2ý“.‰òÇhL1 ÏG‚C8bê˜Éøb¼ÄŒT‚bHYÅ‹u>Æ(ÑìhÚ U>ŽTÜ”„H(r¦dTS-›—œø<¯Å³“g¯0Ì!eÁø µeèn._¡yB# j^ˆNõÈøGjê$*Ø1ómq£ºKÑSº€aÛÎ&å)UßÇ´»ºAŒ}¡ªT4²Nó!ëÁœf ëtEdF¥ÓLd®Y© vuƒadçCÖ1‚9Î@ÖñŠÈ:Ž8ZU*²Ž×‹¬Ô»ºÁ²t üôàÂF.g_t4AµáXéyŽÖ´^A8Мi„ P+j¡MN§rs &Ãog7}Èò¾tåœáŒ‹ñ¢ö;âx üŽWl¸MtZ]”~Ê"2ÖŽƒç¼gÃD¿±Ø b¾|Ä(|x*¦ˆœ3}ÑÚP>s;ap1êËönÙ—Dfú%ï ›D©@·¨¯ºe3°GË•»¦êa‘{¸;aÄP¯Âc”jòóp£ú^Ž€„t•ƒáÅì|¼é,õÙ‡óÑr‚f7ÿXœ%1RÞ\³¢ÂÌÈìžßTK6Åðš"ŽcŒ)Å< ÐrtS†rß|þO£`_âÐC‰"©ÕŠ¥N­ñ¶yÔ/Ê×eù#]¾®Ë'%µJH‘‘Ñ*µt|-ScÄ¡Ú{“4}6 VúqrQÃç<½Ÿ à X$s÷%èPúMã+®]ñáâ‚¡S©ñ§À×Ó&þ”5åø©Æœf|âOÕÄŸ¦Nüi`â­þ'W‰?Uš2ñ§k˜øÓ ²vÙøÄË1ü¦JÆ'~ÝiýèGG´rü„fNf>ñÇjâS'þ80ñVÿƒÅÀÄ«‰¼„|*¿e|âå~Ó©ûbOÔ6ëÕRWjøø*4;C›užûvaô×–ì¶BJب^aT'¥Š]àT`|ߌ*€¯WZ9À¡¸œÔAœ».†WhNâYk Ǩ†2•1ÌŽ¬¸[Á{ò,O DhÄüÊM ¼œ-öd6»Yðe&åÙÏV—݃m‡ŸF”},Þq7›=fYx™Õ¨Ëù[ÆPQ1ä°WI rPhœ0• ]n1âPÅ#Ñ8ÂúPE‹Ä0ç@%%çxZ€³¤¾1˼$þJÇtsÁÇšR}Ç'u9¨Yõï_a—§ ¶h»tL–ÌQ©ý†{]®©¯ûøµ{µFêU¾\‹â·kœ®²Áú\@GÑÐ ‡Ììâê݉ŵJÐV‹GR/nåßèE2G¦¼“Ìq}÷ÃAYÊ×ÁŽL·¯Ñða£AJìÆM. ¼‘½!Át[tŠ9Fƒ;QÝ0uò…§TöÓ•­n #©à¯þu ÒéÑQ³W¶£¬œð¯4ƒš²8(‹CÚ’' †óÛGþoc¸Eйx‚? áf¯÷~SëtÒL©|+ɯSZ ° ŧl¼“a)ßô9LåQ»Ía*›øÝ{‡?ûŸ Qýv­7x³öè”VXJŠ;jif26%(^œ#Š•ÕszM"§£‚¤Ò){òÌT‰¤î€;ƒ;•àN}pXöÔwì€;Žƒ;–àŽ}pXöØçâD7йV°GÇ ´ûŒbDæ·i>5 ƒƒÎ]M}l@:+³“$tÇ/´bPÑŒ ¤/üò^ÒNÚ lÅ+;QHÒ*Ç øXÔÐ5”Þ¥öæ—8ÀÓÀS Þ¥õ°Þ½¥Võý&«D<¨åjÊ ª¥ïô,k(WëîÅ5ÄÅi¹zéH3͉ÂÔ¡–¼  Œu·¬ÓLXGôÏÅFÊ1XÇ™°ºôÏÅöÌ–±I ¬.Çû´¦‘@’ƒÐIÅå·{è»-eö(dyÎòIÓ‘_Ðû­¹°-6½ˆrõ¹+F›(“%“pŸZ”©¬†Òq#øf;¡ y\o´*íf¥#bŽ}ª1Ü ä_·ÑB;“öFËu”´¤Ûv0°–þ|puÓ4;ò&6\ß¶K¦CÅNò%†ŒËDЏ¶1rïöLºy&йCÚ}HÁ¥Ó‡œ”>$Š;Vò£Ön%J“Ü[µdߪ’OX:M–á"ÊÆ ¾JyDÚù×ÉÍ%etäI³9`”ôAÝÉ«ï+ežëT$òA-w……ÊÈxŸ[“œU‚ªð1€%’Ãl©W¥Ì[“&GõÝÌod‚hº‹r¸ÀÓÔèNŸ¦vº@„dæ†h›>ZÆ êxïÃPæÍyéÏÒqêððVo‚HQ1årÂèf)ƒ2eUW‡î²Pê¶c}cCKi>¡uñ —ý$1!\”Tî>œÈeBé=É.çÉ.æûéâv>2JA­IMä‘Ìܼ’ª ã„‚—fîzÞV·Æ-ÐÛ÷’÷Ã8âÊÚÝ0y ¯rßN^°ß‹—£Åx´%L¤%·çåÀ Ižp̽àÔg³Ü2öf·É}:ÍêÄ9 ASª §Nhµ¥µˆà¶ÑUÁlÞr¼*o{‰B~88u,ª°Žár aà§EÛÚÆë *~9¡¥]•k];Ý lòr‡4ñl<ÈÎ&_bڊ׃†eƒj•WF¹‚j•Éd4/t ÑXzeý¨]Õr ²ÑHºº€Ì‘«¥°N»îA›‡ñ…Ƴ‹š.(³ÙÚˆÊ>¯pÜF¹ 8‹Û %(wôD0¤cÓpt¬T·²T<ÄA‰:ÂKE¦Ut;FjñHÓS…áiñ#òŒ a(%C<†M|Á4ˆ”è†HÇ̳úÂ¥‘zͽ f%·/·.n·äÜàÖܳhkKÇÒŠµÖº’£ýÇk"*ŽÔN èvGwEéUÆ ¿B61*X^½EÛþw1Zz‡ÆÊŒJÛ?/<ޤñCƒ|é¦É›Ý•6[NÀìX4†ü2aõØ!\r0S΂W«E¨DIŠUKúx<Eâ9 P.•@-N¡ÞpĹÈ6IË_²a!k/’°\{ò o…uær1òÈ‹t ¤oåÆª¢èЧä§÷ûalÛ#Œ[Õ1!Ž{üá½Ðs·+1šºÆC…Ú䦔¸ó˜Ñn`ŽsróU_læc#¶ñÚá칊§ÙX÷(¼!èËK=š-–›ÃÅbüaв½ÍV~a¶ÒaÙ!üj'0.wÀ6ç’cý%!×7Ã)Š ù_¹yj—»Ð !=åîË_]A-6½°÷øo»J)/*³ÃO ÉSø©ïù8ñŸ¦?Nü§ÝêSü—Gyžâ?ýÔÿéVÖúßÞ®¾ÜŽÅÚyù´þãáÕîÅêrü§²xûî÷NíR^¬`N¨Ó4K™ö¼§=º;Å“;Å®…“_Ö²2 ‚V¥ X)ÜÓ_$š† ¸ËshNjNa‚µŠ!!“Âé´­&‘ç‹îÛÑÓ?`¢”‚)`ú¥R®™ÀK¡î˜øHüE(Ñ2ŠÊL©ç0N§í‚jz §Ó^A"ãÎÑ›º5+¡…•ÙèB%¸—VÝ ²áÖùS±ºrÈë9¼ç¯FË»|iû+ ±ì`ws´ Ä>¾NgSJ@ºe¾å/ʬµdÇL\Gç³åÇ$ÍiF`BT†ûy_Ûbù8"{ç8vøjŘ»ÛõmDúEá#ª4St\‹_‹gÍg¯åN`çéäBðÝÆO² ýTAûÅë²8¡Í›E¯g}ç@$:yÙæñدA+Òo9š†“ 7Gú;¿—ýÌú:£7•¶rþÊè]¬ïã/GĄ̊ƒÈò’l])„P‡ÕåYï›îQ·)ü‘ghŸBM1˜É¡ÆKÚ`”¬£ôn:“X©Ž+䃚•IÚÓ™¨ z'ÍŠïcF_3£Oò…É€"—ëŒÍ(ŒBlÄ Pó`¯âáŽ&XÆ\åñ+›Ö ìa\λa—óÕ|ÍÓT÷$¬=„+¸Ñi;ÿˆNÛžikŸ¸51Fd ÀÄpŸtÝÍ(Íž·Ù@x´eo…Hk•:,ƒIÜCŽÌ>#N“zÝè`D˜p¥ÇŸGî²×v!¸Õ®ïÛàMó´p:Ó>Ší4oÃöý'ò´]aHèLö›OÅtÆšU¼«¦¼·Â”÷rMyÏr+¡â_mÎ{w˜ó^Úœ÷Ö0ç½ C¢9Ï3ß={¾û é±:ÃöRmÆ7Iî¸ ÇX¨)‡'űñÀPSf¡Ÿ8 (Ýoü§îø•h~Ä„ ÂEŠ &ÓT8¢ª‹•0*ôÊ‘b#ˆéˆó‘•vd9Óžˆþt*ðW‹¥‹­ßê˜@±à:»¸¸EQIÞ/ç ºPs6˜/³ÛÉ%¶ 'Üobqåpúí‹×å}”w0ÞéôsF‰»ê•zg‘0åU æU d— 6ÃM¢œŽŒî”;d’ž)¹ÓL-„Ø+–fǕۉ7H V &peÃ! Ô˜­Üßø°B9ã+Ö4›ê…Š˜Ã+q±³c’âDq_çŽîhÝ•I±P GC1~Æ[ò¼% gYcù²vB±fîLÆÔ&pd‚#A¸2UˆÌ,þáU©–º%-е$zlOp¥ïœy6ª‰ìZ¦nJ¤ëÜ>Þý ïÖ<¼WsRÄr;ËCõªï©uKeájDÄôè–Å9q¹ËÑÅ.\s®~¡…wž…ÿ~.•ÞÖnÿË^½ô©NŸŠ¥R!z^ÅlH”6ªp+ƒ}.:q9 ég(‰Å"ü.$ë|P".}ùMü÷?ÿ…ÃtÊóëð|bËR2`ƒŠÖ@3lÈ&{é¨R:>UQ²ÞÛ a¥/Ò1²Ld›3õ‘:|~. ¯#ì9cªhmâ¡“"Ðé:†ÔÃsʇ7ÿÍgÒ‰Îu0Q@Û‘ÈÇ´ÙQûÔ‘s*†7@,_™ÿæsÒ©Üâõ2óä‹°BK—ãÅrˆ{ç£å—‘ÜÒ€xdl7[ÿå Zôæjôux±ô¨n2¼>¿Ò@©ûQøR–ï‹h’%Dó¨/J<_¬‹{NÃu|Ù±Ìx!ƒò]|D÷ ®d •»,›˜¼.nHˆRœƒB{ž޳Öd\éE˜Ë k@ú!­ŠDì!|„"Eøó\þ%¢`%SÃÇÖ0Ærÿ¬S´e1Ý̨p©”ü“ÊKtN³d_’ŸZÅØ<£üñ/^HeU•¼¤«Å#‹]Œ?\71~‚x?qƒ¢›Wï'îÂ%‘ íK=ƒ;6dñóXñ:WêFìPT8¾ÄKÍÈj|X‰è }CdY@ÛŸ·`m"$ˆ«œU¸õ³²ø£¨ŠÂ7£‹O€^öÅZ®šµ åï5õ‡5FHÇ⊲?g# B ¦ì#£ØƒÇÁvm°·ŸÍmH—jøˆ½„NÛ…1*œù0ŽcdIú§Ð@Âr³$¹±’0¤ lõñ¯êæö¿©ŸL…$ô\ÉmW‹*VJäæA¡ç·ì™~®"Õgâpøa±¤ ˜']ÅÅÑ >ºöFÜö|ºçÂQ#wè_Œ±uÎ8¹ é: /ä– Ðô7ÝŠÄ//é |ü2RRñ¤u]é€ßþ+ú7jµT§~5XisÔÇvFË3ž€}°'Mël4ÖԃϋuõFÇï9öåî8„/™\:LÝGfÙSø:•>ˆ÷3 Øa›ŸˆÂèr¶gÀùðnòat>çȈí!®Á«¹‘­ÂÁÖ7 ã‰Ú †“¦ÀˆpB<œÜ¢{íbx9º_ˆ£ÛóIED¿þº]77ðÇîf5úE¢í_U1<[5U¿Y“C(!AsÁäß·o’ˆäÜ–i¨ vþ)¸É1øæ2ÑF§ª)ób&ɾ¼x-ð›™±É?é€h)6ů;•­l ‹Ñ–‚$±2bo§}YÌpS’7Á¿ƒä@»Àl¡Š–ç3\ç8‹@:]mçtfFBð^¨ØN›²ll³¿üÓŸ€ Õ2R &®¥­˜Ø›`.á¦J> ι†Fâ )˜Ì…šƒþíJu[#såYðЯ{#gaot1¢Í“‰¹7úÄWà8Eå„)R€h¦^î†gªÖèˆn1äl0Ì‹ÜNg»qw†¦‘Öü=JȱrB—ÝÀñÔÝüª±tʲ:|±íÜG«~ÆÂØ0ÐPP–ã“f?Þuﺪ¦þ–ïíóï~Ê0Ê”6~î÷ð³?1ëi¿ÌùKUêöddÕ[oº'òÝ+ãÞ5»=ø¢G?e6ä~§ ¥$”Àuÿo1¤Êoëg‰è¨±†Å˜MÄ¡ìt:p.wþ;’ùÏc ïû&€ƒ~ÆŠwÚµNã-ý>ú£šÜÏÆÞ»AC¾N ¥SN€Z–µSÆ”;ÒΛfç”"ë4(âÎàMó¬Q–‰¶©½zmoí!t0c/…Aaqsx18¡iʨþq"Óôý÷M Æ¢ãµÔßZe÷öý§~aÕ6/HS\Yô<ë§»áÕLg-V‘5+›‘]^¹áqÏÙ_RÝ[-ðß·Æ•ƒÈò&#nL,.7&-J æL=oÝX{x+¶ÜOYãÕïeÔ·ñd+ú žvÔÁÝR-,"ÒŒl{ˆ²YŽã·ˆýN˜O pC…üpd‘xt š´ ; yçI˜ärï‚þ¦ZüŠV‹q·¦5XqZ‚7.ËOØT^¼1‘—”Å)ÝWåâCПãy½Ñu:*tQ¬š¬vCã#¶U¹ÖZ–¼% à/ ö&`ÕàCÝÁ‡tÿýL‹Tt|;¾ø¤Bpޝ0ÇÏb ;ˆÓ_E-†L=¿—7£¥VâáõßrHVqªÉ#Ü&x#†Q™-„û%2xñ«È",!± ªQHúÝÁF[oʪ‚jâ°o-Nޤ—¥ÅMöpó»Æþç7Ä#ÎóIêZùÑÜgî¡7”T–Àn±Õîþ†Æ ?kxÍ3Ó zžÛž°išA©fu,l%±ïêB,N.‰bä‰f¥èDÖùV¶ãÅÛ)ÅÙ_¥°‡J–q¨PD*°ã%{•j“î›åÇí–†ÁG$ìL޲7FÖ@±’ú¬ý¿×ÕùzF0™{u¾~§ÎÃi…-ˆÔÒã•ð€¨æ×dˆ5‘™¤¸ûBulyªï!r15Å©WÏ1yÐO‰ˆ)èÁ鬔€,(,V%t ´eoäp`¬¦0T7ß„ühãÁX”-À]W©ÎUüA ¸ùfç^’1)a™+c’®gŸcÙLð)|**.?ò%™¬ZˆÊQQ¨ä¼&*ŒB]_ݨr5'’C |BJݺÅÄÅ‚xd±ïÛô½ï¹®›¥3_AE­+›?ôRêúÍ'.c|ºòäMKÏàô§­`@•CR@|Wyc"BjøÖd²©Év2 $Øð¯Å¦X|ÞqýIvy.‰'†5 µj)±MÈõ²XÌ&ŸÝ{7­ ) !©Å9öv,ÓûàõY ÊnŠ6ü®EÚ ‡ŠÔJu§R*Õ£j¨)ìƒ2Gò vþU€öÊPݽ3 c¶¹R·yåºÐ—nè-úFm©“‚÷(2íÿÑ–û +ÏP+ÅÚ)MÑü˹&B´É••Y×m­Å•ä·­•@˜ÚRI¦)S­¡,@QY;^ñ’òÞûÛEà+{©ÆœÆãçþ>Ùi¼ûä4¾öÇñÿþVýaü¿·^<ù>ÊóäÿýS?–ÿ÷­þLÿï­øú^>­ÿGyxµ{þßx2ôjÝ>lþ¤·ì]¿ø~ì¥z€ãÍ„ûø{_Ë$½½>ª¤àWz¾…°ç÷ðöëx2ƘO>à«ú€Óä*fàê–&=îN¾''“f²cô÷»K9³j¢iÚ7s‰îâ+ùn7 ÜÃtÏí½ª4 <ú@÷>ûåݸÿ¨ò!m³4–ê\?ùÕìsÚ ’µjxý.DE¿òžU¹iU–êë[ÊÚ}M›èUE½]ë—¥ñ¡< ÊùVÌUöض…»ä¹QRWÆ•Q‹å=Ù‘zºtaGÇu -Ñ’š¬ê1„AQÌ`a~ÁL¶ 9œŠØBó\"RüCesbûy2P#N¯†dâwY£§d,ýy6¾$ˆW“Ù™L¡e:[ò¹|!|ôA<Ãk¢&¬ÿþ«5§çjÖÞ§Xµ¿7Æ ­)°ë¢ÆõRé-¬çë¢ø·KTUŸ¨¬ê{ºzÓT—6Ê­OYf¡ŸbF¡ž(‚YÑ4É´uÅ #pˆÿ¦\s´ªiüR,¾Á¢¼ï¡k¥o Å¥siÄLè§û‹²¼…/ñVã3”š.õ Ù:2Œ-mŠ•EĆØã¿‘=ZkÜ^â…íØòî¡4Î…vÃ5Ž[6÷u“ÿ VzêØ>`hÇïê]þå.è‹×ÄØØùÿ#cä¢dóî¨äqp}‹ñ –@³dEˆ*ÅwÊåGòÁ!qpï 'Æ¢13-”²“»Åē儖‡Ò0×5å_ÄmÚ–ÍpȬņϴæ”i~óf4½@3YTq¡H+OîQŽLqyâ1 ^‰i&{‹@Žà¥G|6xöʪÿÌò3EË@=j)ÈÈ).OvPáR|³‚åJšÙ@×`5ŠÏA4†lÔ„…å.m©þ ûB§A÷uôJÔcq…’äf“ ûŒlÓ8öùÄŸàç—Dz.}8rjÚH»" “Ù ¸ÓÇÑx s9úðM­÷Õ|$ý7M¼5ň›»³ÐþzGé:>bx—­Yæà™ï©˜L<&ÿlÇ‹µ¡ƒGp`ë½²öž™Ï¾Ø w» $Í­Ât£›Ô:˦ì¾ROV‹m!’’sëäí Ãã’RAÞ7¸…ŠžáE·€¾Ý)¼…HJ?\_iL÷ o¡hxñ-„öªl8cÊ•X¹‘<´†›Š˜§6?]l.@ÚQº‚å¸ ¬UÍÉÇqfîx³²'綇!¸Ïqù+¡tIn"Ì$¤ÜjÃéiÄ6ÖØF… ˆeobÙK^{+ËÞ:ÆDÖs{¡15WS3™Jš+©¹Ž15+)°öW_ûÉCÛϵ#¼&]Ë Ø_y´5f÷×Ùý A P ½ÀÁy§Gr~…ïÔWx¡fÆÔA¢Ð ?öqK§É(‚¸=™ˆ³É¥[›¤Äb‚Ó4ù†BÛòv~nN: ºX’±É¢aŽÜ6œ&ÌÅç‘à¸0 0ñ¤÷?…¦LõØéžÓ»§ØüÇÙõ …ßÙíBõŒp_p@)S½ b¦«.ëFUêkR&Åi=4/L΄·[òóâ V$ÿk¯=×ÎÍÄUáÈ´©%78˜ñ›9Åpô2jçºWiÀ*1QXŒÐ)y2ûR4´ÏEÐEïv^5qgdo`·”-ç’1ëõĨ”dÞ-Àƒ“­!ý–¤(±/ƒ,g·½ÓA÷Ý ùJ£€"×ÃO˜VÖ݈ÊÈã"Z'R¼Úœ˜DWþÉöЭŽÃ7x”E‡&©£AÞD} ãY6;¶Z™W–a>m0AØ.í&21‰åîÊ<!bá6t|÷8ò:=n„ÿˆŽ`FH{¬1¶ CGT\ÿÜzeÒþ|Õ©FH1%ux´'n… dês H·C¹˜ ÞÉ £öÍœ*~@ÏÙØ­½÷^¾\Ý{ ê¢ü=]×`éÀZKî¡öM;0yf‚¾Wµö;åLºŒÀä ‰õÊBý8jhÌEè‹ùÜdïm_WxO•e•x7~Ô$ìµ3r {Óì7ªô{@¿ù®ˆ}ï×è&ÂLzõàVô Kɧî¦GÛ)ó‘éÒxnÉKVJÒ­j({wYÖv³p+5B¾$‰NY\¬<¼*(®ü«d.iúêÍ R ;¬ø~Z"ì×a!¯Ž [Ì:rø°Ú¶²|Â2jíjåÈ(nAzÂdû‡Y~ Bh¬Ð‡h+boÕ ˆæ ãˆÂÈÜ_¥/V"—œN@Tóg 7-¸ ÂvcÝ6ìE4û%™Ø‘)jø²UÄë]¬-ÿ*‰zá€þz-üSw/µnS×Ý÷ëâ…eB,o"²+•J„°ÇNU~ã8|©Ó“ã,Àûšÿ-g<yå™LᲸV1sì§~;žà3ˆªiÿã–Á-KöS¶èå ªªB{)…pÌì ÁYD­”,ÕÔ¥bGwÉÛ$ UU…EÀ’œv`î\ƒ:h–Êp«ûºL¼Q"´÷0íxÕ u’ éi‡”›=ï÷eXfH²ÐõLÞùµc!—% VÆ- ÉÒí_?Ö?ŽÛIIt¡¬àäF¯qÉ£@˜Ø ÈòõºÆÉÕ:Ú1ž? väÉaØMO ËåŠ îß©AíâjZ‹ùºÚZöô»äȱö0â‰É—•/ ˆgi"Ÿñ¼6]üúHIï­š“)Zn{vÙ .U½>yyBÓ·ï—©—êíùb9^âºbÛ¤ÿ’§Ë™˜®‡ã©mßpe u…+2ÉKJÈc2¬¤> 5(I¼ÍH&NT ÉuÚ^+}ðJ`ö0û©`ÂD„=;¯[ïn”õ¨ò¹²Å(žFU>ÌgRÚkºí5³ÚÛwÛÛO¡_¡’ wÕníù~ü|ñoÌW<¹äUH0‘¦'²è†’9¤JªxÒÓâ‰c6â Ú%l&J(–,Ò)“@g¶Ìrw å“ÅÕ—P^n©¶òK(d”.¦ÐÁ±`¤•tyeS×Iºä"Kïe¯:À›ðÒ%Ì0ýxòÌ•¤ Æ,eýòI¢p²~ÉD6µãŠ%)2Iäï¹ãïa"qE Èèá>Z‹ ÿÞÐc(¶r(W¾ØÈ˜&5¶’á‡KÚµæ.iâ8!7ö½ÅÉe;¾74Ü×Öß›.㤨 %Ín6³¶s›/Zu«Ü÷¡¾æ_†vÚ_RRÚJ\%:þQý[;ºþ“ÅÿowkëÉÿçQž'ÿ¿Ÿú±ýÿfõg­ÿÝ­—ÛQ,ÿëËí§õÿ¯vßÿ¯ý(þ” ö)ì_Øÿ/eÞu’Øÿ@"€•½óä‡ý^žƒ)õï’$öv~ïÂWùÝ çÂÕ= “ý¯Ñ¹ojü΃ Ÿÿ ».‹)¥¸Jô'ÙËØþƒe¶w“‰QÈl„%ãA({°'Â;ûrv‰¯YN„_WË,q¸¶Ìwö(âRhy†uÐÐò&”΄i¾„ ÅÏB@îfÀ¿ _C¹ü›Å—½žf~{4½ËÒ%Ñq—B[|N.,qŠö„ Î{Ì99m@×£ÅuûóÑ„¼7ŠÚ*[öÆÂÚ~v"PGÕ•2sw6877ÕÌáX)©«¹LÒºË̵p›Ìå%ÉN‘þñPü½¼$½ ¢Oi!Mã]4^žF/Ó)Ó9â=ŠX›'ßã…âÁIQÐõÜjt½—ôG“Œ—XcxjÕ:â ¢&›Ð‹ “¶¢ëna§ø*ÚÚÙÝŒ¶^lÉT£ÿ“˜„ÃßQD<¿‰]*p2[ÎϪÚÑYV ÍdÊ®L ô‹æ”Í&OÁPúK"ân—3$Í l ú9¡¹¨ˆíÌ–Y/õœÜs~ýåWJDû†ürWcX“2&@¸™ QÉôy8§]^ñ8tl'1 Ñxwô²móM»Öohjúx‹ôvx}=œ£øóñ|÷ùVÕìwwwp^Õ‡9í²a%…ÂmHÀ™×”Ê3—_4&Ô8éÂZhõÞ`âÍÚôßµO›ä0}€¿ú˜Ë“¯åå1çùì zþÁ¿ã²8NFþž2 0c«Ê"7€{x8‡Fß®5»§ò}rîLY,¥7«$ÉìXI2‰ž'4Y®ßºƒéP÷€ØãÞ 8r‡Îáÿœ?Oåâ ½ó“;H¿Bxr~éXžÄD‚I gUWºvFLÍêc5Á¥A¥T£ Ód(3WB=×ä=–'&)Ëe”€ ‘#Ëå}²Uò¦ÏB^Gõö÷ÏVÙa’¡iOÈsª#n­LQA<ðƒª2?lB \ƒ5))µ¦á|2C7‡ r°Õ]]¾ƒÚ޻ɥÊ̈Ü/ØÈq“œÇôütíZ»Ùµ4ªI^²H2•$}ËáÝ¥YÙã›a‘ hST—ÊMD LùöLu±Á‚­úò’ÌWu?æð¨‰Võ:’ë-…d~2öG›tx븡ièò“Þ’;ÔxǼ†O]?]¨îádökD;püàxù2¨ÿÜf*ebvæá1x?AwF¡$[È G¡Ò⎎‘á–ºòRt°´þ@6º$ˆK±<„ÏÓäŒq=d ))-Sö£ õK¬?A¶@ÂlAmJ”!W5]â„â€se‚§{6LÆj€³³£©‘ñæËtË$––I3«2†Gäè”[U>zþ[/“¤á ’À¤½of J]Qïä•2Â8ZîÚq¦&l¾–2II2SÒ¸µatV‡CmD%tZxΖÕ*ôÜÏ-.¦áœ*ñWî·Ëù툤ä7úŽì½Níƒ;±,€:BÇæÒœÎywË‚udåp”æÞG$ýµ¬FÐK±SwA7SAóÇú¸ïlhƒÍŽÝ„®û„à¶ZäÞoŠ( Ärì û@¡ñEˆÆn|¬/·ˆÇqDÓè¬f P·îo&·ùbK»a†Qy,QÙ £òØAå±Jîÿ¦@ …bœ˜Ý„[ïþ"ïIö]Ü'ìu计Ÿ„‰­€*´ÔèOÇži'Ó*>i'¿«v2Ú½GpÌÍN¾è˜­4-N/¦î ÆÇLŽY-“¦æˆu7hû|ÎÀ˜‰;Ò10Ü›¢áÈÖm¤j5(ø–ê¯TöÄÕ,¡íY»jå¾z•û*UÖ¡QIP§äÐ¥¤)RV‹x½È¥!ùĽŒ^äŽ{‰xy™}ÆÏ«™X?^R[»j^®„š_VCÍý”9ëk0¨òøe%ýšKÙñwXS¿>J,Ù5)5ô}ÛÑF’„%B´†< ¨£}zB§³Uµþuç$~§c©Ü¢ROd3ØU¢Mg°w:„f69à} uG9 ¢¡OìÄdòéy’Ô[$è3s¦†kJÍNÓÕ[4æ=Ì™º­¸œõ0cÖäQÝ ¨ ªQJ0bÅg’­[S·ï¨ØŠÿ{s¬î;ÆÿÝy¹½ªÿsgwç)þç£*‹¼ÞSŠÂ^VÜÞ¼{«?v¸^®ÉŸÙ?¶õzîÌ.1zGFN&¤íVÑñ™Z >Å,,c¯ýѹØÚ.‹þÁ[Ç7u¥è½r:ôýÂuÜ£‘¼0S"ðÒd<ƒï†`ä ¾{TàX¹«GÁErÔñîB‘dd\Né.-KS„¤™Eœ DQÔÔb4¦È"¢P–ã\Á!pù¾´¾r™+Q³ƒìÅØQùÐý£qÜO¬Œ ãéçB­X”¡6reLL[*dÍEÁ‹‚_C%´Ý’P!?Ò¢H"%!ÀŒ(’v¤Æ‘¶øÌýˆ>JCÃdüïíx>ºt’Z½Ï¢gîÙ»g¯„lï7¯D _)¢L.“CH'©Æ©ßÝ€Z~›m]’#™’:H0‘\v5¨élºy ½Oi×ê¡[ð¾a1´ Vÿ§‰§S;ra%Ñé– Ý¨ø¼š˜ &ÐG“µy¥Ê˜‹_Æ‹À5p†b‹ ªPÃüç&}¦0jI.–³9†ªœšP:6Ïã(L / ‡ÌÆWL$„`Üé c±! nFÅÒŸ0* KÇå?‹t‘ýãõø¯ÿü-BÛ‡P¨N7ÿ,ÆÀüI`¦~h"Ù‘%…~À`¤6.æÇ4\ÜÝÐSÊ'ÍG*vŒ¡ª70óH‰N5ÈÍgmúqbBY,Ë0«ç…0§RŒ*Á)ꪥ®”.zø=´YHu…À=°`µ¥îùß!pÏZ#h¬æB+=d‘`8 ;®EÙ zqψÝw'ÝÖ€"gtYŽ9jª¤m‘·¨VZàŠ³²8¬õ›ü3Jv­Õ=íB{5Ÿ¤—[¿ÓîâUÛ~›,żß;é$ŽšD¦Œ4ýÚi³ ¶ƒ¸[s,‹F SÝ'âdÒî¤ù~»Öi¼Uz£ä˜®ìWKEî$/äÁQƒ_ôúö£^ÔêµÖê Ì¬C_àêH!¸! à(µ?ö@Rýѧî÷•=üè[ê½ùú.;¦Ãò3¡:Ì冫ƒV¤ ÕÁ'AØ’´˜ÏK}y`Ñ ­ Êid %«ð±ÍxSÓª7@ù$Ãá?bñ=$üx| ·µRxÀcŠC”ƒk§A¬!ÊÅAÊ¡¤ÜöAvUŒ‘py_";$WS'o¤”•0ÇbÁ\@_ÌFWWc Í®²C…²ˆJEÄ™¸¶„×5ú (3èõñ"m1»âÁ+X„p=b”ýty„©F2m ^¨òbªhL\ÎFœ®(z %‡˜@Ì)(©-ÏG| Ò­‹á«Œ¯| pñ–ãŽù»\ÀæLh.¶)å„¥l1“­gÙ¿›–W·%çG™ÏÌV½ò*_* L• ©pC~kÙ‹›ûfd@9`™ËGJ %01”ÀÄP N ÄWp¦_;¹FÂùÿÎ*²Owàÿ;ðÕ"YÄæÕ#?“áP¬9Å¡›ãPgò9[agá!Ä6Bìl ]?«0¤x×Q: ø¶BhQ…:­6j2¯²6pN†d5^|4cû<ÂtZ6”³Ð_a_BËNb¹·Î½´k9¿µê\Ìæ˜f õb¸Ϩ)) ý錄S—™±ØI̤=ø\÷Ö伦ñªØpä’ la4®Mî_ð¨â0ˆ„kCXᜠ+é¶qè%p²JR:k6Åõ'×3ha8ù‚7å*í˜Ã•AÆö•„][Ψ߇rP¢šMa€Äa)Aˆ@¾ ˆ;¾M@6¦%I@f·ÑŸ5LÎ~æsñé7bâ`ª†(~ÂLäÉâëðb©;ðdó¸æ1Y–1¾- 8Õd$’a ›‚¶±Qïm^ƒ²oY›Ùd˜× Ü•çÆAÊ‘‘Àj[L—û>‰M4èh÷½&üƵýfÄ¿ªô‹îÇΓ±÷87¹mUjg”§3•åÊà¨sJ¿ú§ßÁnåvC)Ëi”hÿódE³¢MŽ”8+YÍÜÇÄ%l4“™gg€0­×¾.p•´A½ýþCZq¦DaÐ@ˆ‚`ª ƤÖÃ*ÄZÚ±¨ÄõÀË$;“4“£”€U¼1úÖ3¼M²‚Æš½PµF°šæáµû^Ð9 íš,õÅt6ýÏh>3G_ô\Añt>ûBBdYÜLnVø dÇØ†­Ø6 jÞ,Æ“ÙÔðÞŒSl¬L92ûé¾/që{ŠÎEïŸc{&Üù̜ȼ³î0Úué `‹gƒñå-ìu=R†mŠÙ [’ŸY†çœÎ™ß¼FÜ ¶­Œr6jÒ@ÔÝŒøl› ͉c³À¶¸Å“i/ രñˆ@Hº412Š(RPCìÞ^Oh.€Œ|'™+LA‰:ÍÛÉІ‚§ñ1`Äð|QèÁŸ??êŠ%üó wOü£LË;=aLãë÷Euv{ïð3’Y}íŸCiéPõ¾B§k}BÐÐTÕËÑtD9¤äØ .ë §¨©’.ÉÊ©Ož——¬þ‰C^ÄΰðP3>ãÛ»E©d§S5C7"KærÍ‹z:&—±‚‰nÑD3IT³1Ĺ“k&¥È§¡›µ5‹a3¨Ã†ðÓué>МjG€JˆSsvh ëÐB@à¶Fèa¸Œðk}ØðÅð#{ƒ—O‡Ö&e(ñ™d{Ř»„<ø±ÁÝÝÉÑ&)Ì#fSX3>w >SC˜? NwWÄ©lýÐîÊ! õg 4áÍBÎX]¡˜˜‰¹×úøeÝóù’çó0- öšçòК˗w^] ¿C%žäŒˆ•¼NTõõ!öW‰Ø¬ãˆÜU£Éßg¡ØÓáÇd_eÁ„;¦ìVh¨ü]7, œN8ýÐÁÃ娣Hö†!†£¡KK"X9à{òü÷³¦;îÄQNi,efnÿýÕa´s»º zWÝÛï‹Þ¼ÂÀ#lCQ¦\‘Mõ»9vž¤i9L™–õ‰™Óâ0½¼RB2õgnî«RÿËœ{Ð]мêν.4çÝêsì-Þç8ÉÊð™Á®³]£+0ÂËa“:ýS·wÝÚù³“"ÛÐ x|j¸!!Âî·.™àð!cjƱlkÎEKîžÓ5äµfËoŠ¢2Uø^ÿµWœ6wtNbÝBÑ ¤É©û¾Ô<ê—Šˆ ¥†(ZMÆ´6\*c4I7é®’á½sA¯{¬€Xîwô¹ڽ£"D¸– B_1;}é¾7IP’b/˜ãzA‹:ŽúèzxñílG¬ ´9j_xŠ6Ô%Í…‘1öçbN:K¶Aú˜©™¢…’JK×S±ûŽÙ|¥™írflb!}’TQÈì¨ð{1¦^üVÎjDÓ­…5…TK6oÒ33Ô`fxhÞÃé,¸ïî—a üÓƒ2.NǤ¦#–É7šII).ƒqI„H;cI—ä6DæŽŒÄ è :ûYŽÑÊ™LNÎONÀsD.¬ÙÜséO{Gw6óæàvÁ&ƒ„9LÀø=ìdæÃk±} føÊb€Šy„C©¯lMÂÝï…«XLÔ#hëÉP§€ƒ}¼'Q ˆƒ„ª\àÀ¯*hg: »V^P”G+XàÀP0h€J¯jÙ)à´Lã?Àû¥`—íxu@P@5µM§À#:!…}‡òÆè{¥„äÎKYv^Gqo£€H„9Rø¿]CEçÁAŠÜ/ã=º‡ËK’KËZ܃0 ›öJtú>^&É.$âC:ÜÃ{#æ’ὡ½=îáÂ󪣋O$'¨Ýk¼¤øŸJ²tÃ&Xi¤;X3Î;OÈ¡‡4êTç¹_R~WK ³z€É%Ó¬òÈB)_í\¦ æà œRÞ:ðûíðÍ¥W Š„Xœ(à\Ç—™0‰U‡@v˜@ºä'âeâÎI$1É Ž{†ßÇdå n "@9nD¯¦”#<âi#ª‰§»yà–Žr åÙä5%¤¶É Ûä®À‹l é,H{›äÖu¿‰‚·~~Hí¤‹:Øçž.ê~îǽÿûq⿾¬>éÿåyºÿû©ûþïûĶ^DÛ±û¿§ûÿÇyxµû÷+Ä}º\KÖ;_ÍBu•;Ã>Æ›ú…0ý«ÝÝ~Ÿ¦sò)téC]gÞ#$7žhŽ[û`XQ÷Ò>1ÀhðúÙÜÄn•Ã,upχKúcßQk ~PYM‡xgíä2•42½_¥øÚÃ¥½üü{k/º&?j:À ??ämöhêßg¯Çœa¿ëÍá_èBpÍ!1£g¨[?Ù}b RÞ áçühuOÑérE§»×uꃘ³n=MwðRv ±qçûÌ‹X}¯ÙØÀRxËv—ëM}¥®sWº ö;ç}lãž¾ë}¬KxŠM©îãq•/_áŹ9†ªÖ1”¾2ÓïÞ²:‘¼Ç<{h;Vãd{7)XßÿöÅÑÿ/¯¾£þw7ÚÞ÷/YÿÿòIÿ÷(Ï“þÿ§~,ýÿ­þÌüoÛÛ»»þú¯¾Ü}Zÿñðj÷ôÿƒ})÷TÎk¹ãÕzû+hü·+‘g ~P/aúìùø\¥¼ÚGeМ¢Ï £|hÕ;â÷á¿é£áüâ£hPâ+s1P»™' dDiFÔùúôÃ]V΀+ÝPØS›u9±Ç¥­W|)Ô£>dßE öÅÅìfìßEh›}ŠN„1½ÄX·Î ( ŽH±œa¦â¥ª{u;™ÄJîs¨þc"¿^º·:LŽ Úú2ÄH(¾vºaUѪñM­Õ¯|Çûˆ‡órJS” ­žEG-·º‡“Iɧžt§¿šƒSV’-B<Ð!>[EŠyíò”x£Ù·ôö”o“ØÇxËÆËj¼¸¸]P€ÂJB?FrÆúQ4Ì'¯ÛÑï°ˆÇs 55E5þ5uÌ¹Ž˜íóÿ‚Q«»ä=õyÄÞhP÷Æõæ”@è·)ïP1Zû +øÔ#cYa?ü=ÙAÊÂ[hc!¶ªbk[l툭]YrkK{æD"ª ´ËØ‘zá1ÍB_µ*ªÛ$¹ª*‡újß»šïím±½#¶U!8$oGb» ßÇ4ä &î¨r;[b';U±³ ßÇ•éB쪢»[b7»U±»-vwà{(ÝsŒ–Šyo®É}œM.%Š$hÖ¦EÙÀ‹oFÿ™/aMm½Ú-o½‚Fs¹ÐñÃÅdÈY¹–磑º¯#~qÄ`˜™ØKæ²VØyõ"á\¶uOÄ”Ü?˜6F5mÚ6-$†àT¬ÛAk4mÕÑ âRÚ¡ xFqØ)꽺;þ2’itA´ž«Ì¤ò&{T Åê2æb¸ÀeƒK‹¤*‡2ûc¤’Zœàøû¸¥rü>Ñ?SÒ[köê߯…D°¦¤·@õ VÒnpÑ„Áš’Þ’Ö­~¹´¬¾Û+[?q>à`bËYçúQŒÁ®åVŒ¸ ~EÅ)¼ŠnÝ*r4`YÞ£X‡of_ÄÄá É3j¸¿ŸÏ`_ E…¤´@¾úç­¼\1NËÆ&r®O4Z“uΩ>Œ¤¯¨3UùÈO ÿyýÊF!Ð L1̜ބaŠaæ`¡»[V²R­ì YqPnwD=ÎÓ¶üÄ3 s¶…[ImHµ²‹”„ ôÄdÁ³«öü» l <»r3޾.Å ñìò2{Þ5ì#i6ïR¶bç oÇΓ¸%;OÚ¶ì<[³ûÙÛžpÃÝYM£;l¸_fBÜoÃMÌ=6ܨÝeà æ6\XBâ¡7\ß-‚‹Š–í¹wÙëPm޼ Ôwᵘcs ,ÌÜ›£¿JíÍñ¯»ÁÅŸÄ NmóÌXí'Ï—ÕP`õ4ŒüMæ—ÚPxu&•vRoƒ{p³¡¸*0¿…OûÝïÍ^Yt[ýw{{˜˜´×©µ™ “u]¼™­RÆÑnfZÒÖAJ‰ƒ#(s„ÆÖ5ø#dgýƒÚ­Íx¨ñ®{€©Dßí»µv"{†…›Þ²çš iĬÚ["f‚ O/ˈ'Á¨ˆ:‘h¦ôãÅ(ì?¶QW( ZÍ8S0žáKr=¦»»ó1‹«0‘oAÕqjyN´i(ècp^ ÆJZ¿õª;ØŒLtîî æv­+Ã¾Ùø>¦ê¦$êqPÄôä# ‹9»®3w—ò)¢c¯MG±÷nªª…ÚºÒ§—²X`ljñB­ Fí¯xÅP%Âå0‡E÷y•G©ëì× K†`ÁÉ夯ÞþÿÛø!$@¨ToF év7§3íÀç%øÙÇ0mó·‘þ:îàøø®²R|…°ä÷_¿m@x 2]œ{Øò+†‘ÎHø‡DÎN9„ÆéF„X@Y{áŒ)ÎÓ¬eÇ-…èo¬—pE– lÿK[¯%Gd.N²›»`yIÀx¤Þ§Ž¤®pè݈#"¸ vŒÆÊ;FlË `Gï@ú¶W”_‹—AVˆP ¡Vˆøc_½œÆVžÙ%6¬šÃB´ajâËiTRÆëi´Ê’jeì D»%´Ü¯q$™.ò?$²r9‹ïÀ½o‰Œb@ì}0y/pו ¥j~q§Oì>´!çØ,þj|/Ð}5´µ[&©äêhóÙêÇY¸™ÌÜýÆ'j}„¼ã)"x!ïM/›%EÍH) d¬O¡c„^)‘wް$¬Oƒ„©hWs*å²²D¯¤t¨ù$gÿ•)( .%gì_õ‘pޏ+3!ƒ£ öѹH9KØ•-JÿtÏÃDÒdÑLQúПõ8qøtšH>Mvއ9NðºBSÔ›áÍhž°*êRáÄ«¢noø÷€PE<=|²7Ž ûD¿ñ©DËM->Ýád‘¶c(fÓ‡ N¤âñ¯r̸ãf鬑ßª™ÛÓwš¶?™­¢žºU¶)üSÉÞ4€àW&oÂVA*B] üà|2Ðýœë[@ÿç¼ñmN§ø¶ñÇõÿžGÿï/¶Ðtý?w·¢'ÿÏGyžü¿êÇöÿ~˜ÕŸ¹þ_lïîøë¿úòÅÓúŒ‡W»ïÿÝ+x~ßÒpn×ï­{º~ÜNÆ œ¶‡Ó³[e¸œè#-,#Z+Œk´•ÚzfŸ~\×ïÕ<¾syz³@¨0-­äî]`B)©t « ôÖâô­KÇ·~ßËã꽯êŠWò½ªŸœª§j5‡9œªitE,î§v¨`¹BÖzö(—&B§ ˆã!ÇÝ ÕaúXíp<]˜ùµëªØôVVá-a¶æcÊð8a‡¦T2TïRÌGW£ùhz1ºtGÔæÙ`TøQ9¢&Œ(Ow2F”)¡I'¨½Zžåœ]µVaH?`tU‡oþ ¾)û¹ ¦YçÿE|Àl?¿1þ},æc6øó1 {XyCXêð—÷²¶ïå·¶7-„À]]¦²|ô£/Z—¹¾ÚìP]Šù/ »- I(õ”‡„S¶Îùìš@¯ÖË(pÿö@½Ô6×Ùê¿Þ“ú/ã±ôsØD¿güÇ—Û;P JñwŸÎÿó<éÿ~êGëÿlõgæÚÙÚ©ú뿺³ó´þãáÕîèÿzw]6ÝSÑMÔc©Ä"{eñû»ÞaJú̽ÿûgˆêÌ.1÷Î%ªžàt2v­Ñ­Ræ"Š—€ðá«w˜¬uKìÎÅÖvYôÞVî¬Ñ“S¢')K»Ç-1¹çü gtå_Î7«üd¿3„¦|^!vSÀ™f gw™ìh>ºAàÙPŸ“]Ž)ë‰IŸ3$Õ`Hw³4S7¬‹žz˜Ú☟û:¥¡a2þ÷v<]úiª¢gîÙ;T¦r{~ôʾRd˜ºï1óoÒªæÁJËhT+wc)¤VÕfJ…Ÿ &Q›iéËòë5¹IšÌ@36œ¼šÌ ú2‡Z28¿c6œÄѤ¨€y64D·ÖÜø¹’8fzÛP†“ÅÌCóEtP^,€ûÐ6y,ã‘”¥Ì -e)î\>ô|›ˆ£4vo;4[6 ùy!ÌUÇp÷£™Í?-@¶¥­¬j©+e¨ž¬h×£Ý8Õ­øó(Œ¹“±ä]·YÎLl…pÎdV+™æJ%·º—2Z¥¶‚º,­™WÁ·á–ÔBâÜYYÖúMþ%»Öêžv¡½ ‰˜–*õ;íî |<Ão“Å´÷{'ÄQ“L蛉õ²_;mÄvw÷в‡šjÔ0/V"@òîz0òv­Óx›¡­/Kpe¿Ú´ø|* ȃ^~÷{ýF{éÁjuÌÍÛêàÉ€Æ`q:'X¼º*Á aG¹àˆËI].Hª_ šb•o½_ vôwE±ÁßRïÍ×s呙팗.z9¢Áè#(‹VÞõ*ª /1Ms%H‹…‘ðãW)nkõpF÷ɺö#f9[á¾ç…{Q`pÿ¾÷ð®äµ¯d „¬ÆÜ Ö¶Æœ¾cŽãè¯@^õx}{ “Sâ%ç P÷¾Á 'µÒ‡DwÝ ÚZÐFœxe‚ÎÈV‘äb7ŠÊÞ[8…LAZœ1ÀòÁÃ`¾®¼Èìc1/ž¦:qû½£.‡CZÝjst(Ôæ+ýO aí ´¢mØutűRe,÷~?jQ<‰ÍÖâ‰Ñ8-m# ‰õ']ŽÀÊ6µë³ˆ@Û°MÀ8|^v Sîu’ÓTçv²ßÀ¼,Ù:v{l¥”f§–~V¶4Y-E- %¤R‚)‰+eWÏh— ;ÆÄz^*½ÍÛù@êj ©½·VCÞ1x„"l2ýã™7<{lÑsŽ ër†g'8š}ÁœÎgÃ[\°>®dR»$ªŒ„‚²q€T°fôf‰I¤N†g?gŠS°(À„ µî$¦ià÷T¯$Yí¸ü*-á›wb€i ÃÓIBuVb>ÜçÖn´[ÃÖ ØlTë%3²Î˜þáÒA?q‚ÓïT9Ÿ,gdú@%ñÊG|¡‘>˜Z~¥štžA “²)}娅ox/ è;þ ªqìhüJ&&Y¸I)D,ˉêqE ÔônAÃc0+‰¡÷4’ù”Å9|‰Eæ£á¥¸cÑÉ7„ChÎu(âç"u smˆs~¦¨è¬©éŠ0<ºBv+Q˜8`!—4ã,|FÍ1±DJ¯Èƒb‚àË\zI·âÓ1ìwß$MÁWC¼ªE¢C~ªí–3„#Éji­"ÛÆ† AÎØr ¨–ÃYÑC¦ÍDÍ $Ç)yAšÅ É†ªXÌ*u» %Iqê@d¾œg5:rtv“Ú¹ìêåØ*„ç6PZA8Û°`o¨0rfw\m2ŽåðTÏiOµxÚö{Ø·{¸€ öÙѺ Ül <çb¸4Lr2û0F¥ ðN$§€?˜)P;Wø¦Ü4+FÎu^É?b¡Ÿ–šŸHª!£†M€ã :p«¹|”ÙôŒ´Xéx‚‹j=¹íþ‰·j©Þi­ëÚaŒíQÕØšª®ò0ÝÃ^h๠Pϳý!qÇ[ %o¢Øð³kiwÉìðó±O¥¶4äb†¥ 4€â†&§í•‡ ¢M§óeß[œ^dƒœMŒçŠø™Ãú3”‘ÄõíbéRá†,M$æŽEávq ⛳è·®sEß¼™ÙBD±âwœÜWCý¦n*{&ßqצɲMW´C†„-1ð]w]œX0`ŸJ.Û׆Z¡6ôjÇ1‡˜‘Á”<Éǘˆr3|áµÖT *”h-´ŠÂ®¬±^«õ6$†3ž§Ö¶Ä› . æ§÷L¯ &Þû­ŒÓvE‚ú'9„!±Ž]’І*ßU«HžZVYE½\«¨—¶Šz?î*êY«¨·ú*:3bÙ}–ÑYö2Jhäû¬£Þ#®£¶µŽˆ|﹎z *kiÒøM—Wë¨Óá¢]1Æ*¤qa|[IuÐ+ MtTNšUáªm8—ÐÚ²Ü.Øj”è"&zU^~¼æ‰£ÉäÃùõÃ|xóp>\ ÈŽ×Ôpîø‚¡Z pðÀ?ˆ/nÏËñ’ÒÁù`‰”—2òõðSóƒKà<³sÌR9ü€œ‘Æ­¬oœî’œv{¶Éz~ Àÿ}]ÌøHl%6%!04bÀ×ÃÀðo¡QÌód>E¿ :†3ÓTߢç‰ÖÔð:@ …¯åoE:’ÃP¦Ò ú¿_ÿ+6Ä¿ý·ò}íeñƹl™"íe Ù²c>›¦Þktz£“Ÿ Ò%·jCYã¦hþ,UмJ÷4â­µÛ§eQ7x ¿ÚÍýüzwŠQU{­7oñSÿ]§yš¢~-‹þïsì ø×Jžw§ûm´Þ$#Nm¸‹æ1Ê|÷¤}?ºûíT‡Mx×ø:ßÇþ®h|ëUKEnãÛÆ»£?€îÞ4;§¶ .b—Ú©×öÈ·SƒÅ2ÿæg˜Ûæ6†¹{æîˆW“j9ÉFW[žÐR3æ³|…²»¾_ u+ÑC+T2"аqÅÆÊ¶½²Ú¬»)¬®WP®ÐÁ§¶Á°.auØA Hÿ™eÿˆ %;Jë—’”#œ+ú(™EÂð’$ÑˆŠºànuba=¢­pd‚!ïuŒ¥Öÿã€ê¨øA›E×’,¨Õ/XŠk‘­Žå,ÛFÇ4•«CÓ„Z0hú¬ÏaLÝ5»kÀvy°²í²© §j¨1¡$)sçÕË4ˆ¿ öˆŽÕÛ4ÚNÃìth€É5¼,¥f–W°Énž6Öe“í.”””·fÊË& -¸$m/Äç³IÀ„÷å;lÍC¨›ðÙ[9Ž›7¤}_梪lý6ð#4+ăÅ{”%8ÖÆL¶Ø@ûÈf<š›½ú(³ãn>“â±ÅŒpí+UÜkΤ]çF—¶“AÃŽS¿l Dßè\9]_‰Šç&(`¢'£ ü¡ ¡ƒ‡Ñ/f“϶¥¥¼Ž¨«–8Œm›9bÕ›,ÏQ‹X@O›€€-ë¼¢–f¤ÛÎ` ¥É¥7©n$Þ`¹¦¡"¾c>C_ÙQk;±égKÞÌ{æ’Ó°«Êüõ׬6`&ÛgÓdâv@u@RÌ àeÙ"KÒ©Ÿ.Æž>'¸&ÎûH+„¨Í(L,Æ—£Š³³E¨"j1Ÿ›9¤f6±oÜ5,¶£ÂÆÆ(VIÉwX|[€Ðã¨åð) Ñ«ÃÐ ÿ*B_@Äa«X,1-µ›%wéQìfŒBv\­7ù÷¦ìД[SÂ5ŠÈÀiêBso·Ò—$ùͶÐk#ž(\V´íëŸà÷€Ïì ÿñ,ݼž­M”4%yfö© &øBSKK­þv3´\2iÌn¾Ù–_ÝØEfÅ·¥Fõ2À7²Jþð`Óm 7bk™OœŠ/ųj´,ë}«âU ©Þ³$ a%>Ú†¬ù¥Ñ=bŒÛ§ÚìÞñ¿`â?ÄÌ1ñ”„s(-µXì…ù9îH#>:Â#Ù‘ð`ðY@!2‡cŠ#>E–pÒBÉÌE*± É¢tzPvN¼àsÍ\7PÃ+Ÿ:q6Ç÷Ç*'®ëÏ[¸¥à*@á µ|´fÀ·Ç(n„åŽ|¹”‹tC2±—Y wSø!¡þ<Á‚:Ú'À´qµF°m¹‡?ìþ m=ÒÞ½ïþkÆêw6p™¦FuQáà×õî䇭èU·Ì¿Ü¼ô6{3¶2†ôÝvsìY Q~3ÀåÉp…Ý<ì0gmê©ü7|ÑÝÄÁ6ˆ°Ã#nñ©•Õž½—k—o¯w—GL L?y«—{kÞ½^‰ÕÃ$hA.Þ@Ú¹w~Õ¢ÚE²;ŒË%ÊàýB0¤øþE÷Øÿ™ÈsîÿLœjÿoËÝQQèi;kÿw‰4. dT×-æ—ü^ùÔ©^MVHké!d…¨ºu…¬*“.,°º·l‘%,$ºX6O?Š‹¥ãÿ÷õ{úÿE/£/«UX¸èÿ·³ýäÿó(Ï“ÿßOýXþ´ú3ãÿn½|¹ã¯ÿêΓÿï£"SÉEŠÿ™eÒÄæ¡äÎãxÙvT¾øÆ6dÔ5§[šK„ˆ!×%4ëÿÌwÞøQeÞµ=’8V,õ–Ée¨mqãë1ÌÙxùMh§ê=ÂygõAé=VÎnð{mÍkYñz¦» öR:žH³åõídy3ù†÷dã%é}ÿ&¢‘Ç5è=g¸Ýôþù.7Lö’cqÊúÇ?¤«G(ÛX’ç¤]GçÊ24PùqÜ?ŽWGÅq"*ÆW’FˆÊéSŸhAî€8&ƒÅóÑhª)wÌþ\ìGåÜÊuä.Õƒ÷âËÇñÅGÃ*ÜÉiY w©áä,‹Nÿ«ð_…2 Ùãõ“wç>JR^NVÊ Ù9Z¯qæCæk´k½Z2öÞ Öh$i,"Êœ01ä'Í·1Ï“Â.ðÉ@š3·H—ŒíCzÀmDÅÐÜ+Z`Óöý›õ¢Z•/èj#²Lê°—Ès®ñàËŠŽì{<§traN¥ûè´­nÑ€ßê =¾€Æ7iiô˼›Àâv vƒ‘ã ;¼jðp£ZÁ8Þw>]ÞH37êMU]¾Y˜0ßAï’®,ú]™V‡ÆŠîPÞ‚ÈOæV¤/-è ƽèp®M«U÷…ž*|EþðþíÞFÔ..nALÖw—§ÒMIäþU„»2žË­Ç–„/w¼úk{mDCÃäk‡³øµƒ­ÿŸ_-~ýÿSþ¿Gzžôÿ?õcôÿµú³ãÿí¾|Óÿ?­ÿÇyäÎìèÿ{û:Þõ Wëöí`î½·}ÁºŽ¿áÇYjü¿³²ØoözPœ~Þ-à_õþàûå”S—;9 Í$Í–œçU®#Êœí_Fì›?WÎX/pÏÜ„)wVàQ¬tó$¯(g!Fóùl.Îg·ÓËM¶>áð“ðÊä·[Ì&·JÞJBrB†™ÁÞÆÒ=_–‹Ùèêj|1Æó”£´F¢­#z`¬tw"û zƒ^Ï8~!ºë“ÃúhHºÂ+tù᱃#{™@u‚ËÙˆUµ@ìc(9ÄØdNqüø¸7âÐñ:¤üÅpJ‘ô®|öq–ãBä»d棒Ýhß úue¥—0³¬§×OZ(sú•šTÕéÛ‚íàPôʨ|©40U ƒ¤Â Yø­U8`o)ùëß !²¥°Œ+-ûSi+ãEYŒ+£J9ìpkƒ±;‚ÁïêÄÎ*²OÉŸ’#ÚsóWMŽX_xëe$ýýzKLq] ¾†Ô+ )>‚³FpAlÕ]?[C×Ï* )Þu‹¾™2(Ôi%„\j-°%¶`B¾´zl|WlC9ø‘pÒxÝ.C8qã”Á8Ãx“*¬ìr~kÕ‰EµÄ¦¤ø§3 Yk…¥C,š-wG=J buƵÉý+õq Ì"áÚÀVÅE8õ-O&cº:ûÆÒ.‰#©Ò)†Tœ\Ï0PÑä ¾9q‚«ÇÙxà„ágŽ!ìÚ¢Tý>”ƒBãl ü2^àÍö„¤<_ÈUÎØjRm(ÒÓ Èl¨‹k8à 5L©„wƧßlS Ьu6ÂÈN †‹dñux±ÔxJ›º¦[ñÂ@É·Ù ÒŽs‘ž(bS÷Š÷e~5#í*ºòÔÍ#8~·ûƒ^/là_m¿ñ¯*ý¢ˆNg‡É˜{œ,¬¹­jgBIFRRÙL=ЍgÏÓïËô¡pUùÂT%†¥zʬºbfU^¥¦„TZqžTUd…Lª÷I{Ž${©º:ð B|Í”W¼ñW˼Š2Dz•]¿Ê ÉZc†! åç­ûk¼îYÞºk‰HÔÛï?d–X²'!ô“ƺ¡»Pa+¬‡u®~t~ê—IIGÓÒÐRgyø½ã Ux©Ty{eÝ•5{¡j`5 ÌÃk÷½ óÆX²4;ÓÙô?£ùÌËA¦'±í-Qø,‹›ÉíB³ÔUQÍmãv¼¥æÍbbƒn%Û[f!êö°³å}¥>.Gû@…÷Yv%ϸ$ç&]òæd?)¤Ëº›eXï6k]~󜲞6Þ‘À‡.¦nöFZ³€Y>‘IîfpR6·rêlRK+9ÊÛ¤›+—rêf_j»ã”N°¡»ï¤²*Ñ.Ð ÔE&ßß«ô^êá¿”ƒÚÕ¨FzÞFrÜÇ“oü¾XÖ7R~±.é~Ø8ìn8.—›âjYVª´n˜j¹˜FÞ6}šUýâøASØÆ-…ŒÁ&’¢®â MÕ7çå6˜š!šÄ Wý¹ûAvÄ#øA(my½SôÅž«ÓIxTBž9oÔ4D›b€|ã£Pd í9¿AYé¤ùÛsi—9$ ü"¯ÜßkjÛß0Zs£SvƒUË4t¨SøÃo»Ä ú o ©Ké]Ù½c3'ÓZ÷ÿ…,M.qº6Å“ S¨9Ê 6]kUü฻רhË+Í¥#W¯D>y­ð cŽ’1ŽÆIG$‹eÃB‰ŠB•èÆ^¹ájô|tŠVØÓ!Àéœo6bf‚ûy¤TðT— že ÒÜä'Ñ㾈m¨,E™0;-gÎï¿£ÇÐÚí{·v;­µ~Úv3ÓÖq !\Ù(T|9ml¿®@À”f,qjR‘»+ÑŽ‡*q<5»}^#Êìxf ªŒ0/°9Ú3è>ªEþý Ï„}Ñ{v¼ÁËÓuþãêÿ7MÐÿow7ÜÞaÿßóÿk5Oáÿ÷¤éÿ·¬ÙŸ6ÿ£½½mkþG{»Åü_ÅC³]÷ÿ;=ì²îu£"@OD\^à»Jqúü±N{â4ÑÎéô·] ×ÛíVÿz3¾bgö0tô=ÃñsÂCø òf£ÍÓ$8  B>Œy*s™ÒÛ¸0޼>„s=Ô Ñ]Ї{ȸ®d¸ *Í?ÙX0âPF>¿b«É)”`ÓÛG`ÖJæÒª“ŒÄüšê@/âÒîA¾C/7éû"ŠYæ>9´ Ygnn¿L ©ãóªš}Ý Ÿ,QØÕfõÝb´^°§æT}­#*ŠyÍ}gOí|̦,رžC©HN’Þ̸Ü%FBQ´h.}r·"ÉÛq;òAfÇ¿ï_FýØn+¬AqœFÅT<ž”NË·ìía¯ìò$œL'#ÓÿîýŽFBJñÓ #>«ÃLû–§uÔɳ°ŠÍL žéãôö‹9 îÖÃóVŒ³¹'Œøó`΋醿¤EEÖ-Ö·€¹ÅÑìgJ r¢‡ˆ7oLóZp6UË¡÷Aìx#‹;-ø?_²¼’e±nýDžˆ‚>/ßoÆ··£‰ðÓ‘ ž"?nÌ/#‚;gÌ™¶Ü9Ñž6 @Ð…‚šp ¿käïhëa¶­Gø~‰É¦-'Î5_¾^=þ¨š#‘†¿ÓòhМ¿°›ï‹¤3‡í8,§ˆ¶ô‚©"–¢áµXhNüд3xÞp)ärÇlŸ‡BeâqK¬-@!í¨P¤§fŠç‡_ØÀqëƒM”mPlá¤{y“ÿ ï—„ ·¨¾<³oÀç¶YW¿‹ÔjA×£Ù h9Nwvê(èxY_h%o‘uY~ywƒW™ƒÑíp|¥ßŽw`¢ÛµaUœé+¤ºí°¾ÒCF‹óÞãô#àÔ5йFå·Ó¯7‘Ý4'´\œÓ „±a,s1«ø0ä­Í½0 ÙR³¯3å‚LŒ•è{ ©ÎBÐ(O´û‡ñ”`¿BP–0JHÈžI`l;*ÈÁGdnN¢Nj¤,¼e)•SѶF'©‹¥ºK· žB|–›~` ¸‚µJ¢èÂ'²ÀYªŸÂ=e VÆçñ7<¸‹‚Jýå’ˆ³ÀþÄ d!‰ ¶Ò{ÎÅ}·…nˆ©u–,Sˆ×MvÑ€I˿꼂å0F¸fKëÇ_<øÁim¦Wpç˜ë[(§d ‡°.‰úF¸;@7CžâûèêJKÀøúȃ7 á¼{ÅŽ.³Zð ó€¬iB†dëš•§‡œÜ ‚A+o3§ó1±²àd¾ý32ÿE9üå¶ OÏǸ6âÅ‘7«($†‹à£qúãêÛ\Mi?©Ã¬¼AP –7v/mve~‰6-¥N=Pø¡ìåÍôãh2¾›Å/ªÈH,ÄO·ß§2%ÎÚ ªÔ¡“4xìô7¹›¢]6"ö_©þqQ¸u^…jyÓzåJ¦ceNÐÎc)8—ÅÅyP€8wrIÚn 7Ó¨fDXv=´ ¹]ëñ,‘‘ÁkCœõX›OÕE”ÛjÑõ—ìµ¾=àt”o-ðI1‘lšHÐ×jõmã7|Ù*S(e½8ìÕÄ9›½BßmÉ-³¸N ÖŠ2.öó;ËRŠÃ =ÂlüùzX½OJAS(SˆDòM36½‹¡9fc.–Q­îhÚ˜D€Å„Ä[oON&—Œ¢l‰)M¢23g…ÿ£•X Ùk–*ŒÞZ¥ë2Çz¹FÎ Æl¦ÝB|Ÿ ‹âsÚ}rÖÌóK:ÀÛ»óÛZðNÁXÑz Ô)¤Ì(¢å0žÙÜ€‘å¯q@.}޹RâòL“ìbüéÓˆÛ†šI¸Ö!™cL\YˆYp¨*ôÁTP´x„½‡všÊKÑ)ץʘ¾ÚÝXØM*¸Y4½¹ü ž×¾É’8—­‰ ú Çs¥&•4< פÂáIBr"H¢îì$íþ›ÃÁŸ„oÑgŸ>NùGçviá=5F9p‘w!Òû¨ˆý— Ž;ºA÷õ Ã#!{{’WÄ[!7S “±G‚ÚÑl×»¯Òâ TD²„Ö䈇BØ'ì±P[@Pþl/‘ONûƒ3g« …˜RÂl þŸ]õã1Fþ4ß"øàP~5mÏLüÖŸØ‹EôwÄeQîã®› ìRGA"‘$tcB°Zæé7ðe àÂÚï‚GG|‰: *€+_7ÜèF>€ZðäNr¡Ã~­ª†q! 5M+\œýÂ’õ*ÚèÊ C® )D”cáŸØ#Öµ6R„ ]¢´Ç¦sjýÐÓG%z˽‚÷Xh,y¡Srï±BìdÞ“TÞ¯VyÈ^,™ &C<èEJÙñ(b¥8ÁIâÕ&ö;‰vá+$àÊéa7p%î±»_÷Fgé@»4.wïãYk¬'°~ÊãG Oo=% ¼iËb}y°yi€Epv È{gËݳ&Iðäg·~A\Üý“S}IuºÝZKªí=€åœP0u#ü÷!E:ÑUã?‡[Á°œ.?â`¢“ä´zO‰k{B‡*8g9­ˆ2amÊH[>§Ó+އm‹6Ò¼ð™2;6ÎÂè,˜:mHäl¿‡¶ùeçͨ¢7x}à¥Û<ŽšXE?—àaàjN³Þ©¿÷Sö´ÉHUôø¡Nâ¼>kò×~Gª­b”Zá¹ú:·ÿB»~6ÝÓÁi³-ýXÅúA/¬:ÜëXm:¬6ÝV›÷°šÅcãA6DÝ´ªÉäB-øì4ƒÓ†K<ï–Éórh_›”l ©%¦é êú˜¡2åJTBŠü_­(Õ$°,!u#PHï³v×?b/¯ÛÃ<¾ñXÔ g©ÖÄÛámÛrw8Ýèe>‡ƒ·ƒ¤i%Æ€æq‘öϟʵKwg»½¸â}bKötv’Ü“Çu¢[_f¬ZeÚÄ6ŽF¢Ðî ÊôÓ3tMO­&‚W a ™ÙCdÀÕžLíH3IÄ|ÅCq…9àíuä"±d¶§„Åó˜úÖX'–’Ð¹Žº‡nÌo`Œh/‰³È ½ÌÐC¬*†ýëÆÜãeûÓÂÄw7ÑÄ7É©"QæÒn‹üBuY½ÕÔ¿ÊMÝ4™†c+øÀA ƒg€µ„6;å!eÁD~7 šá¦Éplsd7’·íäI¥3¦ƒ‚±©uêÝÀÒ´* tu¹ ~÷Œœ”Å›cÍ´¯?4u´8Há$|fÂÈ*Ü„qà]7v2‡Ôð–¹»º²\©Ts4ƒèšëгî4èSnÝ‚ o"È'ø¯íøÂž—pÇš`?®K%Æ2Šö»öŸ!D†ÆÑAx ¢}­ Kô˜›â&–y¼Á:”ž0uРJMŒà‚¨p¦ ^q$KÝͰ¬ë›8°ÖÈЃYÁ®ÔÙ^ÎøV <—ãJ û®Ä]©ƒ8†ø¶E 'Û kK5¬HR¦y·8<Ó’\\Ô4‰^.ðºoü;~|´ý>”°Ÿqî0Ö@÷[xû,Ùsƒ=Œñ' ©ÞG*VT’0®ŒMáè“…þåÒ†G„·½CŸ'ŒB†9iÀ¦±Òy¥wi]ðw^ï]Z9™:o{Ç*ÿùÌÅEX2°IQþBÎ4ì„w1ñïl|_]¡^ñFdï'¶D8œŽ )ïYIŒ¡Ìg¨¦€K”3°Ö{ëxåè);9cî ~LÂC6½ŠÝøÜ£a¸Ëª± ÊBp[æÃåí‚{¨l_¦Àµ'úGG8¤.-¼_¶ ðs \ ˜ê_è>J”Àï‡Ô­?ˆRñ<Ì£ùý¸Zÿ/öwáÿ±’§ðÿzÒâÿµ¤Ù?Wü§í­çÅü_ÅÃO ºÿx‹C`È:ŇlÀÝæU—"þÈ‘ ø„ Q‰î_M QøqÉGñãÊ냥ŽL¬Xð8aѸápáXáx¤nò Ãy}³zÎz‰êD©F‰êÆ/͵!ŸCÔŸm@‹ý6’q¤ÁqI¢ªp™’Kfß³ƒðû öw£ß›2Æ´HTµUT‹Lò7°«ÇxÆuü·r tñ1=#j“Œ°ÙáéGwá{÷wÅ2ç ÊÀKÍØj7Ê}/”bžCK9¸&ÙÊñŸp²‚Æ‹¼`—Ûi0ü6£Ÿ˜¸¿ôé}×-dº ‡ë–Àg+D ›+œ‘$(”¬^ËËFꦚ ÒJAFY6µ1S¾¦"_4²6•R§4¦g$vêÍœ?O„¥®Âíj6Ã}š,I̯g©ZYSÁ°áÍï€T—vèRŒ|3ý.LÕ20Ë9ëô{ÌÓ¬ÕwénP W+„ˆ2KC4'ªºÑ$+àºá^’äD%pÍY®,M±ü­×° Ø‰ª#,Ã9šßÈáÖˆ›ßX@ó5,ÈökjÍÏa©™¼ŠÖUk)æ½Ò½\âÈMO«xÙæÙßÇDi.€(ͤŒ)÷†@Y^Bh(ÛØ à›cŸpnl—­VÂV-±÷~¢÷Òõ5 â`ÝüίÀ2Yq©ù=`Üz{wóqdG§ã¹ßGªr"Æo‹QÛÐí%^MXÿ¬‚ÔÓÀÝ„ š/Ã>” dŠõã1Ž»¯Ïp:ÅÏ„ã)Ù,¶ýMÆŠu@=‡ó#š-{¿†;œkOAï¿|èŠpÇ)J>}Ói㿃Jðö•ü>tŒ¹-í>xÓY%êqF›C2|ƒ¦~­·BÀ›‚•l˜š…$ô0³%â) hli¸ƒÂ&£É{fÜ=æ…¨ÆñØæ1Ó;3=¯‰Mi&ÇonC«&ièI2nªÝ/_ÅrÕ+jº@{“­ÈxƒÜe6ÒÊ´ŒÈà„ ú¨—(¾WÖ@¼ ËŠª“Ó-Åpm×LÏÎFªáZ'¡Ïí¼¬Fo¿Ùy›Yë ãÁº ØŸí…›€ÑqCµ¢Š!r·H—` Fu€™hl…`6S6Ù§Wññcn+)þr~û(³pücƒì;ÝvX§ P¶¨†å܈aJ;ÏGÊ×ÐØØÞ¬,dÉ"DqÂö˜×ù ª„§ã©«Ÿî>ðZöÔñ ¥l¼ßhÈû fà‡ÊÒI¥ ö¯¦ŒgØaõ=¹±%ñýS@ÒŠñÁ V†Ìûqz{;½®ª¨Ãt£ bü/S]gÕ°«*Ö7¿m4JmøñEФ·Õ`€¨e¼‘ŽÛ¥ãúžvU“ P¡ÀŒìÿ†µ A-öã‚Ml¾VC«ŽáMÍUiëÅɦG’xü"TõÅ SÚ.Sf ÈÜA3¤ª–‘8îp ·7Œ‡«ìVG8KÆŸìsS¬Căž³U³¤'g‰]kTÝ@V×K€&VÇaD›( ý°#Ž#žѤ©„}ØäÔX7AÀ‰¦m'=ìÐ2$áÉ8J%V`&?àé¥ÝãÞ˜fÿüW3;Ì7(¢Ö>¬áà6ŠÛu*½~­ð¼å›Dh¾rÛ%4ôþ…íþð_ýý9CZDØøêL59q´2b2Z%7°KÛ uüØBzÐÈÖ³÷H$:œb6ðäWå1£J-†%¯›†íŒÝ‘W‚øá$Pb)èÈKKYýXaõpKÏè2E“49 ^(`Ò¯›ÙÈ"'Ï ºÜ@Û0°pžãm×> æÙ> Öâ’·”CåÞAXË–¶‰œT“CÉ ´«Eíâ{IàÛLœu·^$Õmï'{þýD‚w÷à1XÜëdÀÌ­¥›‰Kûºî xO,)[D±I<æMÂâ€Um;‹Û&vj›Øum{¹· U²²Wh[áÛ/zŸ ñþâ6 x}¯ lj¾¤ïîbZ/’£¾v=oíÍ…zt칬ˆçøE{ÓÜK~£½¤+. jzöú×Õì'à¼Sm‹ýï*íM!ž¡½Åsµ¡5Þ‘£‘sÿá»mC‹Ùˆ6µM¨Ø†Šm(Ë6ô|qÛÐó‡Ú†~umC¿¥lCóí@ËÜ~æ’t% ºî½õxe]Æv‘,ëJÚBr‹»ìM%Œ’w•0\_±×ϱ™ò2^d±›QNÑÙÂv#(J˸ªÝ( »Qyv#à~¿«?Ûâw¥úÿÜŽ£ôÿ Ÿ‡{Ï£ˆìÿ÷¢Âþ%Oáÿó¤éÿ³¬ÙŸ6ÿíí-kþ³ÿóß 5ÿŸ³VT ÞôÚ¯+ÁA ¨§ŸÌN<Ñz»ð°§;ý6BðˆñçÜÞ8D! O“©ž3êQ²gMvÿ6 >mfbŒšq€¦7ùÃ(†œeCÉaiÛ£o£« íúi †_X*_}žÞŒo¿\gp0 BwrÇR=  QÞnh²ÌÁ³7ÏöYµŽàGJš6¤i[ô€T0ðs5˜5 ¬vOÆ· ­'Ʋ“ª‘ÎÙ)3É=}&êµ Éí!“á}=ÑðÞåxáÈدŠéš! äQz2±}¾on ?µC3Û¾õ;2H_‘˜{ß^ý ®Ò²Û5Ö¨æZoÚ©½1™7Wo¬ÌÞÞ`¿çí Î÷ؘXM3*ÖýáÕlj‡íê"ªálÆÖ Ž[åt¾@(Ù貺´¡_×Íøó"H0ž˜ÔÂÈD»ÛTXÊE{ßèî7±ÿÊ2|).+1zVŒû•x$8ö±L %î“PáÀÌ\Õ<Þ oº­3Ø®{ŒÊô›Ë9!aÿ=>^¬e¿Ï1Öõh\ÏN· ´­(dWëRÌæÏ|¶ ¢«nèŽÃ$mãéHÊ–ÅzÆS¦ Ã˜j_룩,Û¬ÚžÇR+·‹ä­x“ËP>ÅhÝ-ZÏjx¼ßÃvœ!³ÛŽËˆê¶ÂE@8*«µg ®™º€_>"n$Ä´Eb,±’CU÷{íWË`ŠÏ cz½ëñÎîÿU Jt&7Š!Ìã 3â»cÔ›'*2®W?v©/¸å¯TÖñqÅ‘Á…œ<ΞÉ9γS峯cm6óX€ûº¡Ø,føk3ÜŸ¤0C`ðÞO¼üЭ'ÒAÏA½t¼ ý—üÍ£ßRyÊyÄŸKÒ'r2NF99[‡ |²>šüÿf¼.òÿBþ¿¢§ÿ?éG‘ÿ/iö§Êÿ£pלÿÑn1ÿWòÐl7äÿƒV!ÿÿ©äÿƒÖbäÿ1.­Ø^•@¹a¿lªÔ¾§thrHñ…žËB-)¼Y¯ÒBK¬ÿS ã ÑìgÆóÞÂxK¯óN!Їg!°FÿÒ õz\¡x¢£†È(µFv+ñás‹à”äc=ÓÈœc<Ö[3¼ÖÃê*j@‡\Ú9ðXŠC<®X£P Žl÷‡ÿ\G€‡+l×»é ?<Ù" gƒN §ôqÖŠ«p@CèBëðÔ´ƒÖªƒ–Q)Í/#V „½kçøö'Î~zB0šÔÂÊÜ¥±¨—P/vÑ´BvÙ)w,.6Èr œSp.ãÊlüßí›ËäÛøf: $;‡ÐT´Nà€ËAÁÓÓ/¿Èb5ÿiÓ Û~þŽ}yu臿™\¶‹3_Kz qwË4ɰfñ¾Â“ôTAU•!¦—JŒpz,küc .:xàÆPE¼_I€X©±¶èüîæ4–¤)HPt@Q0ú1|2(’°‘á6]—Ú!õ‡Ã•G[{kÜoÓˆ*µBhn|­ñÒSQAÌø¨ŒTõ“1îorÃnŒdJ'à=Ž8GÙõfF»]<å`Ô„§· öÏf`¹Mms×±eåO#j¹6qšû]ÁÆmþõ‘]Ùø8ð°r¢î+‰€VÕãêq5V1KS_*øoŠ;˜xdï |“`qÍwN†û·Ü©Â8‡²Ì¡„mÚ)#³2qÐzêÊD]ÿ7[ýßóBþ¿’§Ðÿ=éGÕÿ-gö§ûÿ<ßÛ¶ôÏ·Šù¿Š‡f»©ÿ;·,ý=U.[ÝÁÑ©ÈÊ(´…Nm!§jf¥!b»rê/N¨EæÉ£L<Áx†êudöcv;ºòvÞÇTª³ "(« À”Δ¯ÓÈú%àN˜ÀÖG±JH5Ö­È`:à ××p*q»B¨þÅ9,ÍõðbZ 6ÎãO¦axëô„¤g]U•È5é•êc>ñxͨ]‰GHÄ3˜¹BÝÈáÂ_ƒÝœazeHYú³¤È8Ú`I±q~Í,pb†²”h8zà‘Y%×FµŠ;ZZŒã¦Æëž;Rê%«RØÐªÅäR KM°G#š¬vT£–“U)ìÔ§¨h½½qÙUˆ'Y)œ¤ VKIQ 'h‚5m¯_)ìqËZ¶vVS”ÉÄ¡Q`åà òÓp+·¥Fv«’ÝgA!<12+ª@S—aòY̯ ¹®X²Áñäb|>DÀ,Ü‘•¥ÌÔ^«¤·ƒï¼§@@¤ÒMÖE© *JšË›WCp¾^ª›ÜbÕÔKõs#½óãspË¡I¶µÑ U++A^Ny ÔòM4’Ÿ¹›#^ç s5·¥¶NQsÛdØÖq¿ 2Išñ…‘¹—Výt´êk¦I× +¦k«"á‚ôûý£¼ÏНÊ}’½Ó@\}•$dÑT¬N! !fÐrœúµšüÿöÓÊÿµøß»[þÏjžBþÿ¤Eþ¿¤ÙŸ6ÿ··ÙÄ7çô|»˜ÿ«xh¶òÿ³—üì6[”bgU¼Ìá´] ËA†äì¼°&„„{Hù_Þ°ÏW0LßfòšÜjt‚wÃ[øe0š†7ç_‚&;n¤ü¿þõf|D[aR8”lmZ;ÄœúuTÓT]ðûë¶ö¡0 d¡Þ±P‰É¡w8{Éîó_ǦÞ!ÆÐ¬m@Þž\ o.‚OwWWÜ… ( °¢Û);žߊœ˜‘ ]œò%»È¤+ˆŽAvéôà%QîB-WÁ5„e¼ômv£ SBÝT2Hñx,U·s?˜Fby^LI²=îHÇî~á^áÂô¸\˜#FV†Ú-G†Y…äpÏÅhÝRw3,ÿÎ%–Cíp›”+x4±5F÷w¼ì §à%Ë>dëÑ ^Œgçw3lÛ?Ø¢n›G¬ü…Ë€çC9/ykFŒg®ôER]*ß‚Oã›ÅxÃJp*Öè­½/iíýþeÄVHôsú6šÔxÞÏãoj|ŸÀM•k†ÁÊuOÁ„«÷ 9ªýÞ¦9†‰·À¾$ØŠ‚­í`k'ØÚå)·¶DYì¸FœIw‚P¼ኪ/Š‚h;`§ØH¤ˆ¶‚(d¿ëBéíí`{'؉¶·‚í0ØŽØï–ðš‘wDº­`' v¢`g›ýî0¦ vEÒÝ­`7 v£`w;ØÝa¿CGq6nÅ>…ÛP YîËôêbtÎû]1¦"%0° \µEløuôßéø‚íå[û»•­ý¨Lc9#ý®Ã2×í—›ÑH((q²÷¨˜Í\e౬—vö÷¬¡œs±ïUcµplY€Ìä¯ÈìLû™¶†ÉÎ„Žºe ¾Þ`9Ôu‘ÇÞ°Òòö—Pž5¦Áň­—#YNð:¯†ç#8R?N¿‘[×¶ÔÈ=ûâ'Ïľp>œÁ´©E‘ËUÎÐì{Kê6ÃÑïNËnãamÂÿË”Æ\Sgcð]{.x‹•) ?l‚³™´ëœ4îbeJcJÇÎ~>µ”¶«3;~ìu@£Ä–6ÏãG, j.=cHM03Š•ÂȨç`EcK–ñˆ¥ƒŸæ¦ßÙÖª®M¾fÔá(úqÊöœTÀJèýÿ×WxHÇi£29åG­±•mülC >naí1X*û‰NÂÿG}¥‚1!ã6Äläâ] øW6ÄläØ00‚în9jI«HÔ²lɸˆ1iÚL`œ¶ùWÆl¤Ù˜í†îZ+µìç3Feüǘ‰±®Øà+ÛeØB£Ë7ÓÉèŸÛ ÇF<½¸H߇wåòáۆ廄­X{ÜÛ±öx·díIÚ–µ'ekÖ¿Ûó7ÜÅn¸ÛX`8džû}÷Ûp½¹Ç†VÂy6\Gg–´á²),{à ìÝÂ9©pÊáž;Ïæèž…bs¤i ~sÏÅ ›£cbfÞÍYªnŽwƒ³ï'¶yZXÕ'Ë—V‘c5$«ôKê—X‘{ÕwRcƒ[ºq-ÍnOÓ~ýîpP º­Ó×ìóõ So&a+A üà*ŠåµwÄþ;cÿ½‡?záûÈÑ®55ÒY˜uÆž«pPˆ×ζ-ÁRGŽ™´×âtÕbÛ‚h;Lz´2=Ö3ƒ4ó96Âk ôsDœ½\’9 XM–.ö+ñVW@1j@Ÿ4$•`Ë„Ëu!ËL240åõ‚íº¿'ÑæP!Ž„Â¬ÎÅ“Ûj(­Mº`µÖÝ`Ý$?ó(.`ƶØnH*«ˆ¤¾Ž&(®Nhnì£EtÃÝèʼnFxb^“p¬,V#Ö$ ñ·*{©0¡õ^ω<¡›­Oñå§BÁu›åª ÞÖP-öú ]Di6Љ« i¯žD5£è'1J»¿DDš¸Ð—uÖfQj\&/¤K¥r9´n+Å¿hé"2w²§Ê‰£÷Fµ:_+k‡n7…{ –¶‰ÿyÈ­*kÙ²ds@dn^´ / †ÊDôpMBý&rZ§sÃeÝbIóD~:èÕ‘§Å>UÓ(‹:JÁÝV&ÕfRÈfRP6J9 ƒê¿ Ue«\ Î"ñ-dßNéË„åöfS2MÔ,å߃«‹á ¦BëXÙàâçà5¢BlUä¤2^·`¸ð4ÂÆìØ‘&àkUëØX¬ºÑ&;Ï´\R•&±L´ z€/^ûu\Á‰íÊj4 ¬pðó7ƒÿªSÙí¡ð ¢Îdà—W^­ 1ì“p3ÔfB_O%3ùrFZ.%O ǰ¥¿jGoålƒô§ÃjÕE;>RŒ»20ÎF‰š± q €¦fcÉÅÇUÈçŒz|¯†‰lUX³±—Î×Ápžu®™{³:,¬÷šûTÞ5sÃÕ‘ÁrõRH_OÅˉÅã2禞sS˹9 7ä2çþ¾Îy8 ³*ü±Ä%Žqëfîu®n.c©³[ˆ+@äo$è³náT;b[Kv^·eº,9¹]á}k‘޳N¢ e¡fßCú.² ¶æ`û„Â…qmF(¡ ‹˜¹KÝfè45鬴à]&ë.¢ÿbΉøZ3ç¡Û©„¾÷nD•WäŒÄjøAŠ£.]§îø8Çnåu¹é8wËŒj6-“˜››sìI'ÉŒ})r¾Oгwà;|ÏË5Äì0³À%rNpW3+¼sé8{9‡Îà.zëçð“Gq ?ñó{à?„Ÿ,ù Žâuw¾yOᎅo9Çpbb°ü:ü:º©õ ÿñºªÇë-ã`lì{3o^j™³ùå²9gh {!„O¬Í×>ßJ“•k˜#íÈŒš Y§»ìó\N6Wy_8áƒÔ“\þ%bÍo 9')ÎCuš^jÓÔ‡³P›¨—Zlâæ¥Ê¬H<ª<‚›ÄB¦õR7Êü³Y=ú…˼L|ëä6b8ɫޓL2m·–ç½ídE=ÓòOïD9^ê@16UÐ\íŸÎË{•ÞÝM¶Î¸&§Gw/ƒG·éÈ ^ÜÂË 2¸{±³çº¸Îí.}>"0 šßozQa…ÿ­ZRšÏt\OÕ1Y´c ý¦]Øž÷ëÑÃúN§Ap2þ£òÓÁ7å7]ás[-‚|6¾g`»Ë–+¶ñ4$4‚œDþÿeJSŒ°ÕrXf¥×–sNœLç~¶ÄÙE³ôW5,oüõKDwÓqå¯2ŠzÂ?^Œÿxñ×ïžÚf ¥hRý«ló3Y'gïu7®OØíÈ„ÞQÅc³“_‚U{v[õû”[&ê)å–zƒòÊñ^å½ìå²·Ùò‰.8åG ÂPÑ¢šR¬!ü3_Àë$A>fJí´ïºån¾V†‰Ý’Z›f§Kãz_·úG‘ÿý÷æï5Â,â?­æ)äOú‰åK›ý©ñŸØôß³ñ÷Šù¿Š‡f»&ÿû0èƒs‘&ü;«¿É ú¸Îñœ¤ˆç’#;•)ƒcã”G‡°bÙŸ£¯7£óá-øñe8£8 7#?ÀQÉQ>¼¬ ip KwqwÎ#uH€Â8épb‡X W£L €Cä÷}(èvj ‘0†«ùz4$´ˆÜ3¼ùA~ø$øƒë›ˆ“d#i(•@7? Ï ‘m8“Ð%R`ã„àƒˆêƒ_*®Ÿ— ¤ðØëŽ”åXb ÂÉÙìaƒ ¢®×Ñbå-TAÇpá6vœòÇL¡Y’ÅBBÕÑEŠr$qšZŠ1¼¾#¬9Í©-§ˆ54ôãÿŽ.Üq^¬t„šº`Ê”o:DZûÅÑw:›!k—&HÕQW:ñزþ}|ûE‘Záš|3vƒ~ ×–[6C±õÑ Hu3út5ÊÌ–+Nìq"k<•ŸÎ0+ÕŒV[˘C“º“Yˆ¶œ 9PLV¼Dè`̦¸°¡wÉGà.Z¦w³À nžÍتxûe rmÈxyû…VuaŒá:?”‚KØ%¾ì n#ñL@Í1ÃðNP̘ÍJà—Æí™Á÷)ö¹tTYQì¶_fg,Ê9”eœ¨‰¯jQ©v\f[ø„_([Ñ€ÀÅ=8£´ee–b.QN‹5âvx·q‡?ˆ#85ÜÉÊ‚·x»¦LO‰7Ô¶Ϙý¿ZWX{ùIˆx–ž‚6R0aݺfßEì¤oÈÉ5‘[É©sË ¬nÃÉdüe|…*§C<=.i¤ öË{e³äMáM#T„+ó)aœ`â Õµ ŠáäV²H¦`Sꋌë¤6Kvƒ¸-âì— ë=˜º1F­ÕjþÛ$(“|_-`€$PZŒDr-ÀñšÍûýAòêÇ’E߆t(k=ûƒ5ƒ¾²a¡üK–‡ï8{MŒ Ò„È&<‘3–TÓ*!–TÓ€*O4)·þ„tC¯êíÞÑ‘aZ®ƒuþÐRõ÷½?Å›¯ñãÕaç-~ šì£]o¾z‹Ÿƒ—¯H»J‘>C$Ë×ÝòøÎÜòøÎråñp³È ðÒÝà­7!u/54|‹Œ$]_@"—ï`-²ÀÕjHÁw«„qm N…¨äÐj‹¶PÄÎ.ŒäZ¯[ݾa{÷P=ˆ#lÿlo€ýÛZšµpðœSr÷•$Æ%H¢ÑÅ.ÔWŒŒé']ºOQp¢0>«²æSÊ®ïp6ÔÓãR@º*ÏY›nX sXÅò«°Ý µí´îXc§uL)ÆöÓ/‘iý$ ÙIíՙIJ ¤‰“ÁW…I§ì ÖØfŸ5m£'Ž35»nyI€„UܳԽ6j4•$:ÜDG ºÞò·n\FwñfA™‹kÞ¡<þ×!˜(ÂîAOŽ«HÉcØGõ‘µ©·ZDm”G#¹ÑdΘM`É.å92GˆƒŽ³/N¡8‘© UØðs’l ~L Ëê­ö¶`©á’Ù²…õ#ãÓÞMMA>õo7¹3yšŠð·‘¥Dó÷ãŽTñ¼ÿ¹ÄNyåïfF8ÑÑÃC­î‹ðÏFFN ΖN:ÀŽÉé^µ&‘h½:&Itm›AíA³¤P7¡ª¤ò-+ããXžä6%KSVÂŽ¶&ÊJMÿ÷ßõÑÿ…»…ü%O¡ÿ{Ò¢ÿ[ÒìOÕÿímï„æüßÞz^ÌÿU<4Û ýß·þïÝëøÜÓG¡ T,èÿû<šÀ!žµÿ|ºANèe©i<ó™ìkJ¾BÉW(ù %ßú)ù`=Ãê¾Oo.glSeàTb†\kËÃ"·H•ß_3Ù†F:‡—ÝÜŽ!¬#"HË“BZI± QˆNW™bn`Õw×B”4œœd®ÎF·QZSµá¯¦ç—36_ QSë/ „Æ8mÀå"¦nð÷݈¬‰³[è.~'¹!Ô‚¦“«Ïó;POéT›q¼iø +ãcÄ)¬·™Õ…*U`t9paq•óp2 F77Sͳæš(àÀq3ºÂýš-ÔÑ1„}˜ÝÑ„dÐë䆑U‡Ü‚—qÕ¹ð¼DÝ hº lÆöF·ãÛãî&Û±ïÀÉòô| þD¬ì¯·µŠ~þbßO&Ó¾A“ثӺ܄—­©ŸQ´ÒN•´Pú~Ž«¥ƒŸ\/}/­t¡“þ)uÒ¦”NÓF/D±ìòÈê¿9ü™p—b·T¶¶Þ²å ´Ðp{=·Ø“N«‹Ÿ¯{g "âHƒÙ ¶Ònótß/B³L» i?4øç~ž >,@žE î.É"d»~Ø}ëï ïª'Ÿ~{(/Lqkt‡5rd&:mökÕPsW[_å·ªyFõ·3hƒ¢—®½Ô| h ò.¨ ÍŸÙ¨ë?;0Ê`b_)`qT‹c'Ç|„±ÃÏ@õ‚ùgÁ³ —¡²ÇÔÕÄ탃¨»‰ •ÆÑJHNâ¶Ieš¸³Ä lTxÁªŸ"qŒ+T ¥çžš}£–ÑháC£…˜§Ü¼w›Ž›Åܸ—¥C¢¡ƒ·+ô—UV†˜jÝ÷ ó²ÕøDéT·AÚudöM¿ KÇ€–ì4rÎNŒl9 BK ÓÓ¹òn"¾œO/ô9€ÍAFe[—˜Û)Aslô{_3µ–²”×+@’`+";^L¦wŸ¿ o¸·•AÀ÷6…Z*é¥9µÉ }& Ýé­h†l Ðm&orÝ»ÜtV v"3K¹ÐÖö^^éFÇBl,m¥2®?t;û…÷ÂN¢¬&‘¤È?H¾ ß» %˜’+T ãÏõIçQþÍË `Ö¡0ÛÇ·ãáÕÕåâ&Ì!./InÇÍ/ŒØWtç’«9¿o©$M22:iá¾Ê^U»ï«Õ‰¿¬ñÌÉI\ª6!ZY*AIö`Vî&­ñü˜"&6âb«-lYòoà7UìàÙãâÉ/çw77p)@h¹ë¥ñþxsü‘ýxbóÃ"vò*ᡱ˛Á-–ZH©Zµ ]ËÖTk%Û½Ö@ª\»)úGK¾ÌŽJÔÍrPÃÿÁwö…}˜VúÍNžlÛj Ï/¿o.`¶ ¦ßeã§ЄèjºbI¨8M¬^׿~½úÁšÎVÊ>æ#DK4 ”ÆŸ¿Ü&µ½ÁÚ>€DÐpÃþFéTb£•·È¨€x¡“³ój—…IIÌ?‰Ùé¬Ójlr#¥Ø °§ó¥›0‹$R¨anøFÙ(Œ³¬Cú†ƒÃ916Ç®¹Ÿkê±ã ð¹fW©M0¼O ºšFe=I8øùMk>¬‹iÍ£x¤ýð‹ë‚ÿ¹þ¿«y ûŸ'ýûŸåÍþ´ù¿³»··cáFQ1ÿWñÐlWíÞt }¸œ¶^ÁÛ¨{• _ Þ‡úî?Þ‡ý%ù¾D”>ÞG”>Ø øŒmû½£îý½$3]xa²>™o÷#·5?‚tzíV³ut_w½JZi9öè·KpNïnoåMcÀn\Ó«¯_ªlåd¿6§ ­Iû¤G0Šäšf”órJ‚ð˜[4ÅœÅüÀYA:õ˜ ŸÇjp¨« ØÃ8Û=!ë‘áï›­Ó@–,ÅS½HþÝW~ïóß“o‚<=£@I‚ÿ•I’Kaä* ªQÖˆ²F”5«Nî`6¾¾»ºNFÓ»àÇãáçé„qÒ¹rž,0 ´0w‚ü ±Ã}›1©a{ò~ß¾Ù¹ž0 þ—ýs+øÈõo {ÃÈü¿÷à+{þÃþ†Äÿ ÿV[˜‹ýÔ¯76Ž Óý»*Ÿÿhßÿ£½³~‚kJS"lJ$š@í½ëmà»F$: ^÷#Ù™dÄÿ· ¶ŸuŸ­ = w¿ôÉÊé#8 ‘ ._l<ØJÜ©²Ø¬ K­OdAвálÄ6ÞÇEÅWcDøø…ñuts ]Ð@ÎY‘s.¦Ù¯ Æ,¬Ðñ5»ÎÀe00ïqEÁ…Å€` œŽFÀiÍÓ(¤–d¯P++Æ{*û€9!ÛXåa‰‡B5aqDj°Î–X—Ëð7€_XR¤%g?õñ=þæ#³¯à½ömtEÀ ?„N7¶¦íìõ׫ñùàWus®G¦E ˜³ ˜§ˆ·ÆHP&‘ì’R*“µÊ†“ÏW,Ü3 ɰźʳ3€"Æuƒí¬½oXÃ߆gÔð·Ñ6œ@Qa„o¦ß«×ÿly’x’Xƒ5‚ ÈKö³VB¦†U_X?UÄ A\•ÞÙ×¢³g‡·z5úÄe€0¡®‡0‡&ŒíÇÀAÉ0£SŸÿƒ=û?Àõߨ(0Ž.{;¡VQD5o£OC¶kuÖîc%  ,;å…]Eo®Â €bݳ•¹ÆV¬?^°¢þÖ¡ý¼åªmEG!/ºÏþQ³‚T¸W&vM.•²ÊL©°íö“௧_U¾áÇNÙÝô:ËúµZƱ†/JXæã7Ë—LͽrD +Gd®l×’lékGä^;™ mõàl°î »»ö7Ã}ØÓ{øÙ/ë“ôKF),1;e››ATYÈ¢ÂÄRá ›³AͽÐD Md.4:EúRƒ·‹@±ZGÁˆÍ\}Ëý¸ "³ų¼ÞpÙ€q%‚ë»;luN:û ©ÌU¯=xòƒ›^¹q»Z·sç×#²ÏNí ;><‚î ˆ)ÈäÓ»w Ù9³K†á”Ñ •†DÙ3cM‰dSúib³ìÒWhÒÏL“å4EÐÄvkJÜ&ГiqNHÒ›(^TÄS¸-À=Hséšß?¨–d2u T¥\™EY¥PøHÐ×~Y,‹ñ¾–ã:]Cq0ÕbMä&!‡N@W#z/[…Pä ™´~–£³“Ìðü‹ÖO(`¬øHB) äfl6È[l…§¿à7ZÔÑ!Ó@¬õPÊ¿ÃÿÀk’{jBO¾y¹Å›ª0’1-o®rµ ©eìí¨XÕŠà€Æ]ÐáHaWÅø–e~ÕàÏðg[Ììˆ*å=BIvP㺰·Éaòþ¾e;e‚o(ÿ‚„]ƺ71¯×¯>Oo]¯g•`w‹1Æþövuo·D[[¿-Л%͙š&‚Ÿ@mÈ7&—? OFʵ­Ã­$5R÷ðB6¥”HÉÀü²ŠEVÀCf+ÙÒŒgPÓßÓŸ¦ùºÝ©¿T²xÖà‚È]hØ_`›å¥éÆ‚+~Øfÿí8Ú87,#@Á Æûã”u©"ðý¹NaGKž1Žž6»ƒNä'iJÐ(Ê^ñr¸üÈA1ý}êgõna§ø]”TUêÎIŒ,î;]ww±ŸÐ1Câ†ìºfGi¸¦ùÙkW˜©`Ó¬O[ø5rþºíüuÇúU7–L¨¢š§#±fI»6ÑQœ1%j:ÚU`9ø›¶•ÖcŽžÈ®DìÛ+öÍïì´cæïkùû”¿§}cWün®Uñë¾·º]³º˜GÈRždgØá(ÔKp·zn‡<”^f?O™Žâ¢ìMü-k2‰Š™Kµ ŒB³À¤f†–—œ§f±I­´ u”gõ;±™¿ûš™‹œ²XÝ,Z8 Ä7Ë7Œf­=?ÅÉÝ"úÆî½¢¿H/Ì 6PÜv¨[q!Šß›Ï§Lég¤::œZ̾u]}Ó=ßþy=h4–êùv„¾.BŸLzc8ÉÆZì`6 äÛÑÕm„b¾°ý/äµ$ƒ!¿Âô¹²ˆÛº½·"`(Ãë…;Èõ(±-b‹Ð5‚€xraë5yà¾\ÂsÓ1Éz¨Ui•+&¦¾W¥ºÁŽ%¸€µØ¬,«H:múktÜO½²*«íÃöƇSPãÆu&U¥ô8‚:«!Á¶&ÀðÐÊOwæjDŠTÊGóRÞ.v.Ú{ë7hoVWeõÍOýH§¾Ÿº =tùo!Ê2œKKü¬«4R+ÑÛ&‘MdR™ÀÂdVð¡{Ž,øû©ã÷Bh£Þ‘ž5];ÁYå;z‚é5DŽ"­_J2˜WÒ¯¶´îóc{Iô"aXy®Í°b:üŠ|³ÍÒ¢½¿.³Qb—cãÏ,UǤ¥^GÎ^G)½Ž´^G{W-ûåêwÄû)ýŽ"˹‰¾NÁ.nŸ“ÕÒ‚‚äÐ×V˜Úb¶å[Ì%?$/+j¥´¢À"–·N{4ÒšáXÖõŵoï5;¹éað§“=ÄòÚ7WsV_^ZX|a7 ‰EÌrqUw,³êr¡RØß0¹@ÇóÝhØüÜËøåËD묕KüÅëYçq­’½ êLp¬ö^þã½ñ*qÓ°2ñ¿b‚$¹Sp£sǦù·”ÄËà€ÿŠg¼*1AÓWØ SöWí¸ß·þȨ߳$ ³N ßxWâAIYeøÁ ã>¨Ðá^5GZÍw"³¸üÓ8ëTQZÁCûïe}BÀ»YÛdáN브ñ´=çñ*i©X7ê&MøÇµH<Ï£`mi6CÞ.lÞÓfE?¡mI«BÜ쀛!¥NŒe0rOad”û¤03‡Ï衈(‰¡{®3JÆSI³UémÆäHæêž<gÍ)oMάÊ7àò„A.„8”Ùº_Éroq*?·'uËß$Ù’8#+CÍš‰µRhêb0þÕ€÷Ê!ÎòòÛ $YIóÔy!X© +ÃÍhÑ®ª¶X&7eUB¯”AŠZ&æjC`^Ü-«jÛFrcî/ã¥æ—‘q¾I^w|¹’W*wçÇY'û¥Èä´[@òÉé~;ØOp/q“Uö0E\§œ›2®hã»Ç}jÎ)«‹{ëc )MÔ)±¼ýõÖ´_÷ä!0]J·ªùòpÒ@!³^•$PÊÈ“ª_µÐ=ŠË‘þiwˆ4VÈ/õ“KâçÚ5r‰‘tÁo ý)ê‘$¹fÊ'—K¾>kŠ™¥KÑÚÊN`êž’æG¬IèÇ”ùimmq¾_$Kkû”ÆrŠn§Ÿ¦Û±¤!u;ê–¡Wî­Ël”˜Ã1)œ»Æúʲ<«Ür'ÏrAN“Å'ýŒ|âg•þ=Ye-¥E½MèX~ÒÄ2ÿÆ^ðbÒ%šY(3+çõ´á% ³Ö¡l‹´¦¬åÍ8Îòkz°XDìÑ- i©â?žÏ.Ö%þëÎnÿ¶š§À|ÒÄ\ÖìOÅŒóјÿÑN1ÿWòˆ½§ùfpÚz{h A6OJÁñëÀ;ÁG„òŸÑGÿK±¿ ' J2KB2ž*™¥ 7X€€­b ðªö~@ß²5© Qø7úÌRJknKGœ]žòéaXæÀëµLæö|—œÉ¢˜«8·h`˜~þ0P2“ñiäðÚò‚bºZ*cÓ7 .Óå5i–ãð…|ƒ–@D°|ƒ–o8ô%L¾’ S2&#aIPRclClúK1±7!6ýÅäÂÞ‡]!Aþ馟¬¸©¢m¢ëî¼€›A‹CMÆ“[y€*›qÖêi `ç°S«µÚÂßßÞµs.èÎ7‘Õ(A•¿óm.üÎSÙ·fNŠ"è§>'¦á:Q2%ТÀYTQ2¡”(37Hf“À<…wýÆp2úý@§òÿ›Áéÿ¯Hv¥¦À‡ÀsÀ£»Ž__EòK‚»Äµ8HG€üS @¾A ”/n#%œT‘´&+ŒrUe«0òWÈV¼Bê,5òtž*£\UF«Œ|U°¥léS€-‹~¯ýK6àžƒ÷•N¶›±ý‡»œ(ØÀ]Œfã›xº±’²tÌ=†þ²ˆ÷ƒÑe,÷ŒHbƒ2,ýrÝ× Êì-@¾l²IqЪ¿?M¡SEs ˆt[Q~”Áu×@v;sKí¯’[þˆ¹yŸÞ„|˜ò"pµ>ñ½ ×IXG0ÒöpÌ#ÂÓvlÙ ]J5Ï3@oP«Ë3PápôzqO£Ì=5!¾xeQÜ×Hï«~Þ}Öà”x÷%65g®îG5«EXž«ûÐ ^'î²ÙÐwt²óÚàOœ÷Òßÿ·!;ñÆ$ ÍC–³f7‹JtQ!>já¶Ÿ• œTˆ$¢3‹ ”£e" ÑÜdˆ$"• ‘› Ê™3¢e'\5k}F¨L صU‰ýö9@™fF¡6ÎöÀ±Aó–Ç6ÄUFؽañÑpؼ´Ñ$6(˜ù_ì”0%R!Ñþ ¬Ï!$ÖL`¥©Å•û}ÐØ€Èxúy„`oˆPæ_è¥È Å^¥ÉÈvêñb²ŽØÕîVÅ„«Ò©`Õ"nF׬¹0‡ŸX>8-âñïæ3À†Õ¨³„œ:æ¬C(Á>A¾ÿŽn¦Ð§g"­ÍGm¾1ðL‰ÁJçÄà!'Å ¤Ð1+„Pе˜çµòÚ`Êbþ…Å4 8 _Œ/øý“X’ ò TvB>¿B6¤”}³~œ~9Àû~2\¼u‚ÅcËZëõÛÃÀÃñâ¾ |(y.(¼Dµ ¯[ºû|ëùo{ÛÑÞóßv~ýmo/bE$å…FBe[sâî9T(ÊòãÖ7ZíÒ-´ 2mÐÇ!~Dô-:Lh«Q¦ˆ2E”)ŠðÌ!ö‰>I…¼¼j÷1á«þ€}b·Eq£Ïˆ>ûI6=-Èí˜Ú°j®ßˆÿü:v™îut*Øj^DüwJq:QëW\ÿ;µž..¢?EÐßéEP:*¬˜ˆØxpø²þ¦}ÆõS„ªÄ΢õîȸð3I P†D LØÈö RØ’¤==rC>ÒNVáK=‚>69d¯3àŸgøyÚl'ôBB4­ªpÔ EMjª2?æãB°ä‘ýn"=º¿@ Gâ'€$#\F®,e7¯xµ'VÓ“Dvº¹Ê4È|V¢ÈH‰r`JªÄL®ÂKŠqu£1ò—ƒøíÀñ:T£,˜ªñW3¿ªÑŸß LC_i+Íõ˜ i¹Ð9³‰ÂÞð²zþ",øJÎŒq°šPÈž«`WQ þíöˆ ±FG°s\Ht&Úâ/&óÎ@À{÷¼õÅáüà Mrø1›À^`BªÎõ<Š Œ(6~ê{‘èyòÐ †T8ò…å *“uÕd†ÏT¦ÍVG…tT"5JB…2ÙAB…d!,­4‹ÝD?ª†gŸé£y†fâ¤Ú,ÉȹA‚}*×4O6±)“§ià”`¥ÄM‘Sã*'1Føì óbàæe"?’pþ$&’Ì -àTf‚6z ¢b*åb—Ü ªš›;”Ù!/ÄŠyDÊ/p]Ëx³©ÖVuÿ¼OA:L¯&ÔE<ÑaJi/-J(- yiQJio[”Ô¶ˆ·-Jk[ÄÛ%µ +/xê„âh`òl6£ÒÔ{ãÞªd2ÔÌ›TŽýγ ŒoÖj‡´ &P {V’ò_gBòÕ2*ÉJYDÖM£FR3=éH/´ôqÓ^(73e¶4Q õgÂP4"}ÊP` âå¦ q­'ë‡"Y¤$#'$3©(±z™oÄ"™Ybßæ:¼¹•h¹”ÿlUÕOEèfpÄ=|âæõ~.øÀÅê}?xáo3ÉOòu¯Ý_f÷b FJ÷b‰HJ÷ Èxžî±ô%mgL0O6›õY†ÛÓ?é¼ã_T‰Q2±¤ &¤šOI¦à‚8ãoš2!Î1›†¸ÉÙzNþM£­ecq1ÒQ3 5{¥YŽš¡£f¹JAÅ‚Ñ Íc΃s®×®‚žÇ€âx ÷tûB(—,eÅ“°ä¥Ö³Ú…Ô½£×­%’#‹!ªrœB+-Ž‘ÇÎJËGGOKcg¤·)ì¨ÊÝ(@^l>õÓ›[¸¡'?bUŽCØ” ižŽÛ¹‘æÁÉ;Wm ˆ A ØY\Oú?JCç[Ön‰×Û…ïûp®¶ð´_»u 2A¤&ï‡Ú·()3²JY¹««e<ìççwר/ ަw³Ñ—éÕÅèF‹Ô«Œ¼W¾`É‚¸lÌf@zû6²ƒP¬-r‹#¥Óm™%z"£<j¤IÁR')›T…§ì™1j?£ø†›¯§xeìë—DqhNê+¿jòþjÒ‚˜Sü=Ôaõ7ÈÐa)\ëgîïĶù?àöV$0z“D•Äv“ O' dc¹hÀ¯ƒc8WÔ j¶cÈ¥è0µ×Ç•Ðùšû„Ûåg>ÙGü'î—z'p†Aj÷˺¢+ó ÅÂK¼ä¦XŽ¡¬ròÖæÃMгÇ`Ÿ=. AÐΞâjïï6¸ õ”Ô¾úÜlõj™º4Þ‹ÎúÞ§…%zL[ð ïÙ<èZò‚§öyY ï).[y<ç…,xóÏ¥9¼¶µàE•ð'[ð`3Zô‚7ÿ®4ׂÇÑcø̽ൠ^1R¼à9&÷YðòÑÙ#&ŸÈa'=v‰Úy{.Ñ£ßc\;VÏë.ΉÉË‘rYýv¨~‹Ü„– Ôä‘VTE%eŽ"-¹VÐÍ[µË1÷=TîŒlÏv;úz¶•ã p ºýÌî>Æþ‚l,o§_…;:Ÿ%Iõ1Hš¦xÓ ²:ßwóúœ.§–ÇiºÃéÌr8]˜ãeºë¥c/@'É4ßH—›[á½™‰Cx2ò´2OwF×fÈ-rë[„ßBwW³¼ÂÍ?²¹Oi­4=¨:õ÷s{K!×dó˜B¹˜ù=,Ç—.¥GK•.ˆ¼ü^<‘™÷DÉ{y»Þ¼Ûf^¶¬@ni­ç÷ÖÙõÉè ˜ïd°Þa'“të]OпŸ_ò¥f2;ôÌÆl°4)-#Ö/9ßXµ&ãÛ1;;Δyûl_ѵ±GŒ _Äã:^³Ã"ªÆ‘À÷D“² L›cðkâ88Ò±Y¨Z1–6@Lyvô~£Hïê šén‹ô\5ǪÓ*­ÙÙO¥%-ø [‡2NåŒUgwí¸PC‡ë¥pÿöä Ò€íÍÁ§›é5í‡(·šÕÂX:CiŸåEe–HÚ¼:2ä$ ¤J.îu Á¦lRaåCÙU¥4µ5§³ŒF"«J¦ÓÛàKHšMF¢ '#WQ¶iÐADÜz·¸ÈØÁ¼bÁÛ ìl™á À¦&sÍÿÓå7k#ÿÛÝ.îÿ+y ùß“~Tùßrfùß¶5ÿýbþ¯âá{!ÿò¿ŸGþ7X¢ü$K†eý )à¥_8(€H8^'Ñß ý#/HöG3¬ýY3´ýac~jÙ_!÷ï…ÜOŒ£-÷¬Üïr3ÜŸä–ûtG·9\Ü/ŸÌïåhŒ•ä{ãýëÊx’ ×ð™†ò2[ÞøD~[³ q5㼺¼Ï»0ñô›¶Ú-üs™ëcÛ;F\W]JØ2„ØF§„Píl¢l0ÜWÃJšL«©~µ\¸HIà`.I &ÿûøò¿ÝçÛ;,A„ñ?‹ûÿŠžBþ÷¤Eþ·¤ÙŸ6ÿý½½çæü ùÿj¾Ÿéò¿Æ ¼=lžU¥€íBè„sÊeÊ`Žk$1l¨Ãé$ƶ"C+(]?`·ÿçw·Úë±¼þ7ÁwÞ¿¨ö:À”>ÖuL (üöÙ pÚì?¨ B<ø‚‘º$sÁ!JpKÄð\Ìšû >µøw\Øð ÿúì0[W‚@#¿ ¿‚##Àã4žðNT?ä+ÒÍÎ>þò)¸±Í% ]½pÊ71;'¿\‚‹X¡å’Ò¯MoFTìËþ=®éE×@ÂQU?@áÊJ)ü$uË&K/™,Á dïjT¼¡¦+sÉš;©Ðˆ¾`ãÛ~¾‚v¿*¹Û+Iƒñ)„¸J¤Aª\k¤¹Dj)•M€ª#~Ca"ø®ÚÅ Òg$]àˆ ·ªBªÓ8në†öPÅÄÀµÊwlÑØoþ}qÀP'&—èÝ øÂã„×X¢ûº41ÿ~/AÿwãuO{Ý“!}"hë . £Xž¨‰\—"ŠÏRq,§Wu}Ñâ|¶–:•=ßXŸK˜°#RwYêì:£â[g9LoÆŸÇ £eË¡ÀZe _'{V]"æžV­¹+Z®â[¬•–ǹ_hñslѶÙtMÐQW É[ùôÎØW.@'§*@­Èý”÷–U–í?˘³kæìi9®z»z%Z~Q() !8ª@H$¡ù‘ªB€BÄ«ÌÈÀëLŒ—ë–hð»e=JãKhÀÝ5à;ã†29)™y¶nCìÃ݆¶úé½@7{ˆ ô3D3SËX`4³¹.Y°¹â-=¬ Ä£• %öWŸ• ó©Íò¨À\á?”Ø+.Àg%wAP˜½#œÏ»ldzeA!H\u·ë‡Ý·BZl«Þè}Ū$¿.O ±²XmF?Y…J4ˆã‘€„m‡±ú ƒhªHîóv(Že pæU©tˆ¡!¨|QT¯¨÷,)z† ½Ðé¥è-ý¡ª{,jSJBÉõ’ j¡>šSë$ ¼«SÐ*ÔLbl¡Y– '^TfæIr­È 9tžV@E57èÍÔs£‹Z¡WtXXÊøÃÑ“—bX*º.Â-ã¬Å=£‰ÆNéÏ‚gН&"†8‹i÷ÓŠ14r´˜©ÑŒ<ì8 SP*Dí¥N¡HFÅr#ƒbÙ€ƒÍƒ›I Ý¡áã“Å9”j÷ôª=£¯œ•^&-[\uÁÛÎ{jq“5FEóžÔG³ÿù²6þ;;a¡ÿ_ÉSØÿ<éG±ÿYÒìOµÿ wBkþGQaÿ³’‡f»aÿs4@!L« ‘Æ!¶waý“Ýc¡#åPº«šù¬‘Ï‘æè6íA¯@·ã£¸ù±NWYŸ}ÇíØäÃôÂÖ¼:6Ci¹2þ2®†B7ždm‘Ñ€ÚdùâinxÐ)OQ¬Ïiµ@nà5HŠzN4“A%çÝiP¹ ,¡8ÿz3ú6žÞÍðv§é°>q2AÄ6#¶S^ Y„rÕFÿœ¾ÞòòÔ7ë"ÑuŸ‘³ÿ¥+ùB¸éAãჵ}tQ1Éhlý¯^„¢g/¶èÕ‹Ç¡±?JÒØs»s,IcOzÖn~>vY½î§V|óe,ŸÂ»ÄséoÃ2«ÐxïŸ\ãp$r©ºa²t¥\NT*')ÏçÖŽ?2åuÌ]a/¯Âî-Æ2]3ÝÍéà Ëgäv¨ƒo¯¤ž´› eµ4Ò¬±±®ÏÓ]¡Z†7÷òpMjÇ®•×Ôö2RæÑöþªK³i{SºÝ#ùŸ®Œµ”¯ÐÚ•(_Ö@ùº…+U·ÝBF!;ƒã¯N¹Êä¼ WtT=iŽiÂãe”Ôªl_êQ4ïðOmeuZ&E¥¢fdµz 3TŒ‘¿L®(„5Ëô¶ö40‹­Ôˆ„e% TmH¦Êv³»pï¹Zñk ¯%$h»¯Kƒ9´Ù¤Á·4ø$ƒ4¸[Hƒ ið#—H…48Aü“ø(Ã!³§:t 'ƒ5p2ÐÐ\³z¬›Ú Mc°ñÿœÞØc õîÕ'ìç8"Á))¦As1htZªç–àÏ’ªÁÕ g.NZœÝjœïyTÌFSmؽƞÜ~6ýŠ’î>> ’^¹ô5ý‡wÊû#®áÂÀ9âû{UU÷î¸S©¸Û ¸¢9ûÖ>s"§' ‰‘ÇnXG‚)ÜLQ/‚;7m`wñå|z;yÜtlöV%ž]ÛɳKló{_+µ†2ZËóÛMÙ ÏöÙÑdz÷ù ™½ ¾X+ÄR H/5ïÞ´˜Ÿ!¡¨;½Í ²ÍäQ¤ÛØ4[‰ØéÁ,%FÖ¢»Ôx‚§/:’°óJX×4:^üÂ{a'!þÁ1ŠäEÙÇ(Ȇ)´a°áaêÖY‘óùF4u ƒá§[€½RðrX•7K~ë1ÎFà+:jANÌÄŽf·_¦OZ¸L³³Ú}ýþˆª{*œ<Õ8lB[½t‰*ØJ¸y+˜´º4µë‰>PÒ æ$Añêq… \°x¦ÎTÃØÄm™Ã·€>áqrÅW8s‹PFýäÄ €'¡¯À–³ G§.þ{‚ÿÖ!Ó&ÒC:dxNT(9éÜ(n¼“µŒÁá^7'Ü4ÉæŠÐŒGº“**+­5£µÙjp wfÃ'Ÿïì +1l|A5 8"x §Ð )6ÇÑ'ßd©@>c»$« æ`â¦ß¿g£g±&μR›ì?Üê<#‡„/´e»×\/Õð¬±éšx³ý Eþ¬9üu÷Ü‚0¬ˆ á縉ÍWúÞ©¶ª­9Ô¾s}:^²(äù©ê§ä~å»NS q”}¼ðŸßÝÜÀ…9É –•°«Î^;Ç×ß‘–*†XEËPýnµÍ¥ŒTçA§>>P5öØàM˜žŽdÛfeÛè2t:ÙÛžz¶c§þk‚þ¿_èÿå£éÿÿ¾Zü¿Bÿ¿š§Ðÿ?éGÑÿ/iö§ëÿw·# ÿo»ˆÿ»’‡Ÿtý¿½Xýÿ“Áþ[E~¿=§"Ÿ&uùxOíªêéÜÚüŽ[›¯¨òQïSâ÷Û_‰/£вF“ß]¾&¿4©^nŽË )ãh)‰*}µ ¥ù¹Uúº2Úd ¡ÒGn¾TÇ)Vê«úýüú}9Mrý~7§~¿kê÷ÍéYè÷×D°PïóŸæSïkª}¡Á÷ ½V¢ÚéKø3ªö—¥pÃg%*ÐÓ•ïó#æpn̾̓N(Š5[t¶~;%:›ZzWS¯™ºE‡]…á™gC!f²2Ph÷«§ú{b"{ÐizpOƒ®ZÃ:ÙxïAm ž{ò6Æ(X:ºŒ è&ïa¹Ì T an°Ùmè.«‚ëjlWÀî¨Y, ºAÕo]ÐÁ—ëka@ä÷˜Äj˨í´%pD-Ã>@!á †IVi˜ÍD€5{³•!®ØlÈ"@±Ñj ÕF 1<¿FMdùXWÎÚ¾ÙjTIaì?"âöÖ§PN7 k6@FƒÝ¡É° a8¤åÀÕèSªá@›¥u§ºÁ€ìlbwü„À.ÎKÃx`ù1N„JÔÌF|ö©L ,Ì®ù;arßz*š¹ß~D0¨È?½ÖÒ¨ £¥õ-]?Â~ûèúÿõ‰ÿ·ú¿•<…þÿI?ªþÿâÿíloïXúÿÂþg5ßï ýÆ0í…þÿñéÿKÔÿÓ-r xwŠämêÒo0( ‘ÀxTÿË›¿Ðý/A÷?(tÿ…î¿Ðýºÿuwí’‚ úÿÔ(u™\û»êÚÿH, ü±Wïæß_‹8+tó__¼{¦*øuRÁ§Q°&*øt7ÿ¹Tð‹óôÿ ªå'iúx¡(v¡¬·œHÁZèá³yúwžþÑà©yúw—®Å_€§¿¡»ßþ3n¤9ƒgÕÝ#à>ho' Ò×gtðwu¹»úçí¼íã_AÈ °ýØ¡÷*êq"ÆžýKòîç†s¹ö':î§ òǃ´†ø"¦kÞGÓÿ߬Oü×çÛ…þo%O¡ÿÒ¢ÿ_ÒìOÿº½Yñ_÷ ÿÿ•<ü<¡ëÿEü×ìÏOÿu`Æ¥€• @üÇ;î¢Ã¿†â?Ò€ÿ/“ÿàÿ#ü/]Ç0©°ÿ+0ôMŒ?ê¿ZLR8XŠ®\ Xs³‹ù©ÃÁ¶Š°qEHXIkK÷8x !aѹg‘!a‘²ÕÀ¥¯˜7$l·ÚQƒÂv«'+,l§Úݼ_hXP<(ÌûB‚ôQ%¢#\,w’NgI`µFTÓÎf Â@êÊ–WdSþŠÒÚá__©PÊbîY9]Q_=±^õ¨®¢FhWOwD€l]iXpP4]œÁØ\ˆ ¾_î–K%Ç›±È¯ƒ"ÀköG—ÿ®Oü×ç…ÿ×jžBþû¤UþûPñ_÷Âm+þkÿy5ß× ùoÿ5÷ósÇ,-þ+JÐþµÒàG, .\ƲKƒ*—±{‡ƒ-\ÆøS¸ŒÁ󹌥@Æúõ+uÑ`2víÙab=1LƒûÀÄãí¥w ›-­B»%ÁÄÖ7BíÏŠÖÃxE(Ú5òQË0FÁ𸍥ÃÄæE;7F,*(/A–É'­«˜&ø¥ulÙ`-|Ó²aÄÜñf F¬®ŸÖ^Á^óˆ°cÕ³¹€c5¥ö=ÂÌrõ½Då½ZlÈÙ¬²’B‹¯©*O,È«»š¥r¿P³*A3{¥ ☳ޞCîïCv¬h¨h¦#4n¢š°Pq`»&£‰º³áí0%í±ÛÊ€Sé!ÜÕk‰VÓÿß®þën¡ÿ[ÉSèÿŸô£èÿ—4ûSõÿÑÎVhã¿nóß³uýÿÙ ¼éµ_ãm°Àu+ò›GõA½©‰Éf BX_«:þ5RðŸi¸°±bÌ–AI*ün5>£(î'ì\êV'K½½©èÖž ö©YãOHPv˜zö†Ûûx7š¨# ¶b¥oÇéMäXÈŸAÏŠ:T öF¨«ƒXÓöƒ7_¿‚|/}W(ª© eèÌMóòļ~7êh³:ÚÓï ­#Ÿñ™Ûà`iŠþo± ð1œW{OV&â1uÈ¢ËzU±Â½K w“Ûó)Þ¯FËñäsºê½›[çÞEÈ¥ºåkÝU&ùiµîŒ®ùî8¦Ò]W` ¥ûº*Ý/ÖPé^QOòiÞä3>÷¾…(ëÙáª×c#Ä™Ùãч‡ãŠ¢~Ï©ÆvÕÊÈ“Po&-w…“КÌõ§Â±‡«ù_e<3h—€^âFÀ<š¶5º”RUñjYÚÏôä>`ÖÌú|C'ßM¨kÇÊkª¢Ú';¤ês·(0MË”8um%xJ˜×.I¯Å?ºß4HèM.ËÐ÷ÙȽ^Ó˜zá{ï©·?[ ÈYçPÎ9 ¥iƒ¯0Τ÷Ë!lñW°™Ò¡ŒŒ¬åÕHSL~ºãðÌŽÊÉ‚d`5 À@Úóg£[iç ¶·ð#OÌŽ }–Cr‹†ÃyÜ_-Ù½¦=v‰öUµ(ÿ[(õ’=aY⮩OuªN¡hhùZIõvS<Õj»±Ã©2t¯øõ;è—@¿Cj3i2ÖåôÑET›¼ bCÑŠ‹Ä½x®ý¬¶l¦Cå Îut(]Ûír|¬ ªÖ€†&o¨y¹kó±K•ïæI±²fW-ÅÍmçdÖ„=jBär§yDÓ÷<åÓªæWh+ íO*ì?S-ùq`ó#Ú—DªV1ìÒ`Øøw—© }ñî8~­ÛY©<ªþï:ºZÿßÿqUO¡ÿ{ÒÔÿ-kögÐÿíZþ¿á^¡ÿ_ÉC³]×ÿu ÒôiëàíÚƒz÷´âqn—fº™Pá&,Ÿ¬nÂí¢2" 20Ý—˜ ÏÂ=‰›%*÷þZGÆhhmþýf,Äפ„¼’žÅ0^ï!úåeƒý ·v ]NpèNð½û¬€˜Zɳ±q”–«iåj²šúZžAjM˜Œ÷r±š( iúÄñ¬á<­"gB= J®èmªP}^ÑýöË5)VÜ^;Ȧbs$Ê lÅÄAe+(B‡hÙCd$mlOÚÆÀZúARú·?eYh0²´ «””Ôøe#eS¦„jKÖòâœÊ›Ëq*oÖVˆÔT£)ZXù¢¥ò^Eu7×”æ VR#™¦i© Ÿçáje)Dq@sžæ~³œu ·“9y¡B]IÝŠÀeRù¾­¼×çf=1²†FVÉë¶ÂÛ=)[êÌÓ*ì´Ôùj¡ sµ°\ñ•¦µéJ-ŒéÇex1Ÿá%mLÖjMtØÔvu<Ρ¦>5[-1¬±Q ÑÄQ‹å(!“•ªL,†˜,¬ØøXUÂÛÏè#¥ l6.þ^GGZPv÷ÁÛ°¢W ÿnj7UèeZ`Å^N QtF iãŽe˜²Uk¼ ³ ³¥àç×êú¿‡ôÿÓñ·ÂBþ¿’§Ðÿ=éGÕÿ=”ÿßÞ–#þÛóbþ¯â¡Ùnêÿ…þ¯Ðÿ)ÏÒôƒBÿ÷ú?Ó)òÒ¯ÿú?­ÄBÿ—¯ØBÿ·ýß Öÿ‘t¡| ÀA¡,€…p) À;¡7 E`¡,…"0˜C˜ÁéôAÿ¸´TȞ㦷šbÊÔ’®NQ8&žWIˆÑ.µWØÒûë Çv¥±ÎЮôجôQªÄ9”‡-KyXâÇòRô‰2ºÅ{©×ÉQÓÿ}\üÏBÿ·š§Ðÿ=éGÑÿ-iö§Íÿ(Üe?šøŸÛ…þo%ÍvCÿ×”‚·‡MvéΤtïšðĦ9f(Oµz$z‚„ÃÖí-)X¨[Åç缺¿Ö'ì*HÕ öñ\š*PŠØD•jíö(ê)õ+HðU_·OɹQ<¨µÓR6ã”p*—‰…~ÏêUo zÕ³{Õs÷ªg÷ª÷ꈴ’00Ì=­k&ÏG&‚LóÕapc¾ŒPF‹qo@,U›¼Ëu¸Ú|_Œ‡Ÿ§ ÐÅ}öë –oKFDk…¢ 媤™_å„sçü}3š}eïÆßFW?„\{tLþf5»tœøbb(7ƒ³/w3x%C/jP©~.»baûo¿ o•ë]Í9/ê $PéËðÛ(ø8¸È ˜72Î9áEïsÅ+kÊ¿^—>øÛKÒ¡PÂ?üé&Kœ\ƒ­œ 3÷6]²š&WC¾`¤gU½’U½Ršt M÷'TÛ”¤NÆÆY”¹}[=lBïöâ$=1vµ{h­+XIE¦«¯ÍÚ™r¢"[(¼ri²U]QiÑ3›‚‹…C‡]Q•Ü:…~.½¶17oµp5áôfüyÌ35?¯™€)K¤©ÿTçÚ­MžûÖ0—<]]†jr¶ø³YZ9)£ÞLR+cöÉßeñ}¬ÒÁÜœ(cêÊ/žW¨’ÕÌffø5±¯ñ½/% t#FK^’^\e>MÙÍÈf*ÆUÒÒÊÊ­ —Y—ª(‡5÷g1º|Lf|]Òéj1òÌÁ›`=°–b ì³·,µ»q˜[”Ú]-—ئXiEâÿ‹ïÊuô<ÉEÑÝM¶B1ãy›‰A©¹ƒÕ¡>Ær‘óÆltI¦ °p™M2³@³sEJ+»…tDw°_5#Xtþ³g7â¨÷zí?Ù)–Œ9’¸fÔáŽàq6I$"ôz<¸ G¥OC~°ÿÞ-Ö²cMÀÇ;í>‰ >î;¾`Câ ièARGvƉõm÷2áEø`Γ,Ip‡%Éß;ñVDäÕvŒ¸›Ï쾿óº¾jf("©á +ksØXu¿ ¬x¯²´àã`›¡ðéå·l¹‡©ŒeÖ²SËô%ÅTÆ2}I1•±¬]N’Óï™éK6ncfÊ(Ű®!4ãÔcÐ[¶Xœ`)eÕÌ„?îVþj¶2ŽÅ6Úþ»\`ûá¶ÎÄYÑöYßßi…åלvŽ·AœŽÌ~aöñõË/±á‘éÓ㩚Á‰‡MEÞú„æ¹ê7 4fÉKŠÇÐi¬A<×¾'Èa;§ÏqËJšŽòôÝ>įwŧR1ó¹î0ó¹@ÞƒœÞé/ÔÕÒ  obýÀ÷\úÃêSʬ-㬠¦õ/, #ëWÃÞ0pOqÓJP­ÈÕÓ"R©Lo‚cò&Œel{.ñµ8Û  ¶ix¹¶iiC¬a䦅Äâ½V}xï"¹Â"$“uŸyš ãyfS/×lòO¦v_€³M¹:õ‡½D<ùéäMs>…J„ ÿhÒ˜ßk>Ý/æÛ0×ÈäS{4ûÏ/kdÿYØ­æ)ì?Ÿô£Ø.iö§â¿ìDaaÿùPÍvÃþóÈ})iA0ÇÖQ«0åbãE€ŠÛªC»T'ú+Qä±(±YNãH ýE§âê->³@¶Hl”¿+ñyŸL c3²4+C¬Á‹ý‚êÅ£V•ñ‡'4º|àhp°O ÀñÕ´L›¡´g3º[ †K‚œÄe.Û·'ŒâŒâ)–ñQZX’¢ÝZ€¢ÑÏðzDêfPé ;œ¯7£oãéÝ ï¾šVÿgDÎà#vþ» •ÐÁèŸóÑ×[^žZÂì¬%ÎÝg [‰ÿ*'Ùu 5B7oè|°þ°N… þæ†ÙX ã_†q÷Ñ„C˜A$Ù…ø*ëVÈ($Oedj±`>4Àë¶$Ùru-” ™ ¿¹^Š™ÝÑRÍì ¼¿›3N «¬ué´í°•7ïxt<Æh¬ÕFŽÐc1¯+,æÖÉb.ŸXÀpæ:§íi–o‚ZšailùVX·ÖmADé:nq)ÖjG?¿ÅÚ£µTëtj«ÂÁL=Å8m>˳õ7:[’Â/ÕÚË’H¬ PãÈ’|{•ùÈ2$cL‡6S`Ã…" ÌNå²WÉ L–™Y¦ŸÅú˧FÍl7…+3}èF>–²4—)Ö‘³HC%ê° Êì$#S,ËÌçh=Í|èï#÷p«´ÓÚ‘Â!¨õî)‹¢¡YG57\Ó7-4­làU]³'2—^ƒÑú Ö'G„~Ô~½¢9IcN°L”&£Ê\´d½øÑÚêÅŸÊ£éÿ¯¢u‰ÿ²ý|»Ðÿ­ä)ôÿOúQôÿKšý©úÿípËšÿán1ÿWòÐl7ôÿí¨ˆÿRÄQžeÅiGEü—ˆÿr‰à²BÇá7ÀŠíl­N»_‚ÑJ|â&O.Ì|ôô@™Tè¨aƒýà¡fØ2`†š<¸öqftõýÉ£Ëî’”éEˆõ)BĤ)C‹1/DLóÕÛJ*¦óØCÅœ¬u¤˜v´æ‘b’‚Ĩ¬UDŠ)"ÅÈJ—)&)þ‹'dŒ#¸ŒÃÅ­$`‘‘#aØVÛU fS¸âk±]–rFM 3ZKã'Vµ¦YX×óD¯iG…Êö'ztýïßë¢ÿÝyúŸ•<…þ÷I?ªþw9³?Uÿû<жÍùííóÍvSÿÛ_(U¡–Ϩ±£x»ÿÅ×I·ÛIÒívX·»"qwp”yâ¢ü”ñP õn¡Þ-Ô»k«Þ-|¥íî¾ÒÒÿ¹ð”.<¥—kถtè²Û>®ANLÅzµ·ƒIAc¿l† 1XXèØ AÜ·»õ Úxïò_ˆ,/ðF§ÕMq§>ã-ùªv·³³ '©‹|«õ)Çì‘,¡59Œ/ÜÈá¬ÂUÔÇüÁbßÙ‚$Ú¥bÁ‘nò…òý1¢´j­›ãÕдô’fIìðŒÕü}xsñ ŽIÓïßdzÑ3 £ÐBHˆ†j«”pSᓬD6Mgt;ÓC%›Êa/@–ÃN.H4• lk¹Ài0—XµÇZ.H4˜ l›¹Àe6Ä–s¢~ïP5̈îflàü£eYŸUè*¨ÚŸ¥/•A¼û K± 0Åî£-m± “²?šý×ßW…ý—ïùIí? û¯§ý(ö_Kšýéö_[QhÛmýÿì½ko[IÒ?¶ yÞ'ÈËÆ?LQ-ù2—õEË”HJ")Ç(éHæ˜"µ$5/äsäcä#¦.Ý}úv.¤(<æÙSäé®î®¾Uwýªj=ÿãáÙîà¿N[kü×ÿ%kðð_§­5þ«8þËò+ öuÚZþîûê¯Á^ß$Ø‹QYÞG©Ï™g: f§‚b„Ä2:óɃ±²/vŒL¼‹oã[@tᢺFt­]ëèkL×Ó¥ž?ÓU³eàµ$VKA²Ò1k¬Öª°ZQkÕzJX-(±Õãv&µ•à‚B*¡5~ëð[™;Vé§x˜0' ˜×à%`_×,Þ²¨ðZº(€KÀp¶Rà5黆ùU<¼É/äº; (Y]t†BÁ͇ډÚÎ-öžÈ1â×ÓCŽ+ƒ¿þ%`a©ãö……E é*Ö°°§ ËÅ€=e #® VPYÙ¬½ÁÅg…å©Ó]^‚Ã:Úln6÷¶jù˜žšãQêÀXµŸn¶>orCóPYG0~ìßrFÍ2@,(M…ÈÊ*vu ¬JFÇIVzId]-ˆÃz"è«ÓÖ}õý>6þkúTð_/·×øÇyÖø¯ïú1ñ_3ûsñ_¯^¿xåÅÛ^Çz”‡g»‹ÿòBI®ñ_kü—~ÿÕ]㿊â¿è$%gÓÏéø¯îÿu?ü×Úí× öH°®ç”k û `Ý5l [CÁÖP°5,Ió”¡`k÷]OÖ]Cž$lí¾ëû„­ýw¥b¿º…14OÇuUúé°Ö®»­â㋟§ŽÑZHŸðX-vU¨õ½a´ÄC¹îz:H®ûzÓr\k‡ZOØ¡V%½ëŠB¹Š¹ÔJ'#U¢êêuYøŸiôTð?/¶kkýÿ£ÌìÏÕÿ¾Ž^ï¸ó?zýz=ÿãáÙîêO×þßÿ*:à¿‚ÿ÷îéÚÿûãÚv®Á/便vÿþ¤ôºkíçÚ¨³HÿÿÕŒ:×~áýæ®ý¯ýÂó³ö ¿juõ·î>p¼"±ŸÞ–ßxÃg¼ô¯Ü§ŸƒÖþâWå/¾­ýÅ?%ñÚ³µí¦×ÎäyŽOTȉ^f 6øK˜Wg:|Or‡õðm¥ö¡îú%¶/|–öoQá¥tQò¢€ùîiŠ—ïôMÃ|`“qÝ~›¼qÜ–»ZÙ€OY×I´rró3ßÙ¿øûw‹½§{â×Ós`_¬ þú—ðNŸ:n¿Qïô‹y»\{§*Þés]чÉg `HôçKÝŒb’dgY…='÷ìÒÞpqO¦_žC ÛÉýÞàâ³r•Þ|I\Üm67›{[ìç>}¯ ¸Tx ?÷Òµ2Ïá=ùÊÀÿöà‹=>—ñq/]sc×EGJ±«óoŒMé¶ÜÛ×|÷öV>¡7³‡sjßM Ìß7hk…ÿú÷“ÁÕÖþÿçY㿾ëÇÄ=ÌìÏ›ÿÑöë¯Ýù¿S[ã?åáÙîâ¿>®ØÿÇæ?ŽGE-öú¸{=Š 5Æk!ŒWÀsÇíõ$Ð^k/kÛÚ‹Ç#ãØÔ‹ÇÇæ7wc[ãØøùîqlu/0kXÁêê6´N:®ÉS@hìÝb·¼ ±û¨ v;kˆÝb·†Øy™×þ|Ö ¿¿ÈO¯(¿àð\î·“RûÂý>~Ãp?.céÁÉ_$•…†åòÒAïYÃn[4z7{~£Ò‡þàWä¥_êæÖÐE“úÃB…ã5Mþ”â`-è(j¹€³µ5,rIXäÇtXd«b èwfé›| i—z™…’4ÀæœÉâ2°’‹a%-üß|ú'âÿj¯k¯^Gðã½ZÇÿyœgÿû®ÿ÷@³?×ÿÛË(zåÎÿèå«õüŒ‡g»ƒÿëwÕöyvÒ:vÎÿ‹ž6úO nè÷˜à$ îUù˜×êÀ˜çûK¸sëw¿„_ ë_jü%`à,•K€wônì T¨ ’ÿ N³A`–Ùx×èw÷â@A8Þ° 3ƒNˆÄ’óP´Aß½ -ÁÅo(H­)T‡3 yv{ ]ɧÍ)ê5\l–†Öô+Õƒ»Á­6¶³5ù²Ò2ֈȑ ·[ Úîw »L@uŒËYlT—»¬ÈfáqLL›ËŸí×n³Àåó¶KÛ‚ýÑqò8½ñð ;³‡Ö »5Èî ìÖ»¿6Ænå ¶e‘eg''Ðt9Jç"¥D$û•úz\¤¿¯¬0Þœ¥N[ŒÐ:í®¡õÀYÔóI¾‹iüIC³Ll‚“ÔdÙ÷ýIiÃbvú%_[ °B0.Í墼¼«„‚(®Ô—‡âÊA}åùF#Ì×Ã:GÓ™—Äàxþ¶FbñˆéÜ3tÙB"1\`Éi+¯À½¼ÃŸéwH‚¡V)žzy¡b¡P*yñb•"X†3Ý?‡3¡bWÇç»Æ¤™£ØÂø¤z|¹'P¬ß}’@1þû¿Ô¼M^Ôòê‘yZ©o²'Ù1ù´b>Ði-–ò—^PJ˜‰²”¾G ã+ß}&—A,ÓiËÅ2éè´8\wiDE¦/)Ô=¤Œ`SÛ^Ü´x+ZV+²ÖBEöO¾(ŒT `’Òü*ZŒìæ12rœr¥q‘ $[[áöÒXzO×NýîÚµÓŸòøÛë'„ÿx¹Žÿõ8Ïÿñ]?ÿñ`³?ÿ±ýâuÿñb=ÿãáÙná?NÿÁ·ˆ÷8‘òÖ)ЧJ Xc9,G1øÆé ð'Ò»Òi‰ ÞÛéö¸Ä`à•y*¤áTj=P’1\Ó0 2BµFF„zÔß ¼}7CµŽ xƒ¾7`ˆdbÐ…Ê"Ð…bÈ…åQ„Q·ÛÃv=Ã1ð.þ}8¹ éó“cÈIØÀJ YLÉ®oV-??ŽbýÄ&•®¢ë”KÍÚÆóhÃ-g•Šo£•Å]¬tÈůQ©GÐÿ=UÝQDó{êh~‘Ö÷ºsZëkO‹ôv޾ö´J„ meª¾6ŸÕ]]XÈÁC`¥¯ltaרwÔAÐÃ%#-Èvu»±¹]‘Ÿ™À=$JyjNž{º…ÈS×%>+âpµJ¹4÷+R¶D¬l;ˆ¾Ae[®2m%z"O󔣆ñôJ°zXª"–ï®ú¬øå1 >ù—ÇKÜ+cádþ黯$Ѳ·ª'á[UÿlŒ€á­è¦ic=fñ<ñ¥†þÝPzf +Rc8¯S•æäPn¸¿$Dx—±nKí«Ìýc»þHýíºÇOÌáõ¡÷ÙŶYt݈²1°á¦¡BáizƆWÂóPï&¶/n¡ Ž*ˆÖ\|…<Ýs½wt½ýfq¥;6­Z\°LŒ›ÑÙRl‡DŒ€ 8±Ôå0¬_¥DýÃÿ¨Cðì›Ý²17ï7<[Ϫ8>˜³ºzJ+O-á¶Ù§/¸O£ŠcÎ{ªb'˜ýù"¥?i€íXt_ñÑ­ycÎÌø’+DCÛÍ,–š/™¯ÒšH‹ ¹°Ã6úi\‰|›ÑdÔvýQKj ©™°FoºÀÓtù³ þ’¦§Àíâ/¦§0ïÿÿ\ûO;þÃöËõýߣ<ëûÿïúIîÿÿ4ûÏWÛ/_xñ¶×ñåáÙnßÿçØž,OˆuÐóYMЇ¢¶¢õÕØ‡*}ÃÊ‚<œ¬M@‘ÄŸaêéVBõÊÚ4ô/©äY‡6-¨Ã -QÖSj—KmÖq-l¨µcg$Jƒ…šŸ"Á¦Œ–P\×¶„µ&?0¯Ÿ€ÙæÉÚl³¨Ùæ=&ê,3NJmo€|÷ÊÆ%ã© ßwéîW¤Í;!Ì·ùsœÅ“£xroÀ3ZL Ë@óÒ>b°ß*ëÇÃÊS1ô+à…=C}™eì· _†ÑÞ7k¤w?ïë‚^aSºÓºfp!ë¡yŽNîH^¬[ ,ÛÈî†<Ñ‹‹^Ë©¯ký" YÀ{/Ì-W%JNvŸšŽÙKÐT&D+͇o€~ç´ Ãôt“½G6­ûùùÍõÜ»Œ{Ü\ǰ„±dÙ4ì£u˜å¶ØÜ"ЭçIWq¨¸£W»œ€‹Üt·Å‚D},NùÚõNO›cIgË1„$P(õª[ŒúÞ[ªdax«}«6 %¼p&v|\ÁU+–ïl/q,**à_úÌrz4ÑaoÓC„ø§Ò£“_wF&l«…TÆ«èòÂë^žkrzÒý“¯×½¥ý›/ãÄ<¸:F™«ãrSñÞkêp³VÀé¶7_Èëµç{ù5«‘í|Û}s˜R…o~MÎ[]핵ˆo­ìz 5–¦sÊhHÉ´…™6iµRħC»¬­rÿúÆÿ\žŸ_Ì.ÿ<üO´½|±óòU´Cö¿kýÿ#=küÏwýÈùÿ€³?gþ×¶w¶_ì¸ó¿öjíÿýQžíþgo¯ÞÛ/‰Ãã½3DÃGDïk}þŒú&"è1ä©2Š<ý]Hõ¤,¤×ÚÇ‘$üÿÕÖ>~¤¡"!~ìÕjûôoÿèïÿŽè÷~O'´Q†3„<ÓKéª}ÒjÖ›}dÖ>¸´½¡‘=²®¢ ó±u•ö¢w7Ÿ'j²î`|9Ý~Ú‚u~­OP' %Ã$¹¶íVá©`¢ˆYKã™ 0Õé'9¤"5†Ô(I¼ããø\µ|¶×jˆ“n£Þì5L€CNbpÜé?£äר‘ç(ǧJ%D¢„H”O¦‘LMóÊ`¥6á¬V’Ü¢gQI²¾çJŠÙæ–‹#¾xM!”ÔÂ{Õ{â2Æ_&³á\*ašL¦óO“ë êÆ¤†{HŠàóáåp@¿oqd/t^KöÝêˆúŸØ9⿱3œy¶Å?“7øÃã¿[Mýcbÿç–óy —Z”A ÿßÄ7ùJçÿD$À‹­žpȹÉΰTxþÉ™µ†_Þ«·år?DÁlÒ?½æýÓz ý–V <‹¸=,²®ê­Þ¾ÒÚàÚðŠb­fè¦ß|r»5Нæ2l¼=Á·§ìW÷”Ñç1zØ…æ:&»óO0`NЇü3™ÂçiU”šWŒ™OXG9»Àâ Ù‡ãËøéZøƒ¢Ht@ Uò—ÏÒm<½Áå»*úèøÊÂ/'cTy"j¤1ÞÄ ¦ãêÄN…uî5à/ô< ©aiŒc˜—]œ0rñb#×W¥ö!Éç‘F4­.´f0/p@â²?o§ñ Ö.†ð onGËá|ô•nJ1€ÀL.µŸN7(+®ð%Áá±ù¾=á°XµEÓ‚€9a¾S¡&†¥ª(°Xg¦=ioaSç[7w£ù/ª$j¤ýéä¶Å9ñH˜6†-iRЂ´‰ˆ|ͤýª0ã©Þ^¢3f ¸6šM1,ÜO*Ž ™²š-T\T¨¸(µ8肊ÃÔÊ“ÉÂF +0J)0~èØW~¨¤N‰9ƒ:|Ùºüæ„}4B¤V·X! ÜJ+‚Êç‚îvLŒgXꇊ„8„÷Iõ÷KµM/U “sVjxû¡ kûßßYø§íz«X„™QŒ™™J<¥›ÒI÷Xÿõʆ+ŸðPwždäÃïN3 wö²ºQ©V«þ+,ìFs*£ÉøZ‚Õ2´ò‚ …ðo\ƒ+&.S÷¡×q&êÃägTé ¸^€,…H"2üWR„IGo4ì_ñÜÉÔpy×4ºò¹Ü+ÂN×iJRgÉ“'m^[„$ß ²Ñÿg5sl.28H„>I! $à{”[NdMŒÎâ-7Äd?´&,o4æƒâ(?ß@-æ)ëþLò˜Ÿá?¥¼M¯ArÄ?ÿ©ÑÜöû¡;ÏjŠ‘Ñ=áœÍde„¬,aª;qË43Ûœ]ˆû"ƒ³ô=a'ª ^F+àe$ÉÑF¿$/q“J[·|°#iÚg£”@^Ë•ZBV•Ÿ¢µ„ËX3cÞ5­Ê<¸C†âh´8G‡3ÉQ8àâv’ÁÓ¨/‡çi`x²ÀcO“ÅÙ|5³Z œùZR1séž<Ïñª„x¾ôŽû Ïô…^;]Ç3¾öK‚¡aÑj³Ã[.µI˜„pÃлDÌHªWxòBÖ)òòLˆE˜¬Òô–)~;˜Î‡p°D;ŠË» R³ÄbMÜzÖ4f³{¦3§‘T÷ßñt2ól’ ¶½a7xv‡`§ÕÖxNe€Óêè¡Dä ˆq|=˜…¾¸ d°EÆ…IÅ/´Ø¸ð¦µÃ¢‡ѽFä Œó…‡of£C† Úýt#x%A´¸Ž?”õaD=KŸ2 (ÝÃ1®,2šb\aõŒW&îêQc\Y§Àåmm,2ÿPd伸^Ò]E2ˆþì6¾@ë7¹ÜÐÑÕ?ý£ÿÓÉç1“Ãy„`tgè¯âù…}¨áÇ´Jóç“”5˜Ýø*žÆã óÎ]ÝýgíŸR÷´_•ꧪ¨Ó<î弇¢Ýò¹ÚØÖäöâëáø'!‡×'æ|’ ·ºÅ¼ÿT{¡§—÷c¦Éam±Ùì}»§çýdðð´*áVW™””rŠ$‡OÙ„êmz„ÐóDYÐ/r\o¸Ù  ›5·ªø æ¤ßRrFû\ _^f.YÍPiõŒtóÌŒ²éæY|)оHµÏ/03W¨rhÍÍ[èf—½ô“5‚Œ„ÖPã„ÆØÝ=ŸLç(;·ÂÃñõÏ j¬'±‹)Òhþ¸–Ó4§Xª§i—.al[?7ª„¬ZÝÆ:^KÂô2ôÝ·Ê[B„š‚óA›jJáü Í÷Ù§áÕÜšãê·üdʺïim ¾7&ôf§´³vCîIqoüŠl¤ú{R¯Bfýê ]¶¹³í½ÕF–D¥,½JÿFÊo„UH`ðψq¾»ˆ“”AT‹ ©&¨W[åö™'ÀÓ9“óFb[ÈáMÊ“2 Õ=ZeÝ]³þŽnSw§nöP%!2á*ÞÍb (šÍŒ=TæGYžn·Jj# DÚ‹˜ß䊓Üûæ+?t‘è¬VA‘UPd9eÝ+ª‚|ÃuYG–@$3vâ¿Lï¾£nÀ[.ö"·‰Ëå(‡¯rÎòV£SÍŒ)Í´\QMžCÉÁ ª1JrLškপ9­‡“Læ­YykF^çØøi ·^k±’m©0åÊeýè.cé%’Æ«4W k‘;)YªÀd•a®ã«^:rW¼©Mš®»¾-³ü6ToÉÚñ·MA®ÄŠ,ÃvüV-²“‰lRȨ\‘…x¡ª8Ûuyê]¸Ë M¯×åÑB]åw¹’ÚEº<²ºÀ#w€‰9)4Àƒìq$ÞæxOI{ñ“¸ áR – F‰–$CnF¦I Ì㕼f±«Ë,+eav>™Ï'7Ê óNs«–rME—¾ÎÎχš¼ð–²<¤P«(nn›tÇm½‹ä;›L&Ã]¤B¯,"¿†ë‚=’VùÎ&®K”^~åpF1Ì9À|¨¡Xø!‚7†Uú•~ú•~²Ï!ØGÊ-jæÿ Á¾rø í §ÉßÄ8þ".‡ÓøÂ²ü³»›&VœÇñXLãÁÅ'4»³ê¬aœPi݉(«n ëì‚G-Ȇ(DD!²)D‹P¨ETÙAªÑ"u ‘M!J¥`³½™¸X¯¤ÍØ-8ôñ”ÄIŠßlc0žª:•ž¦”’LbÆ1Z м£× ¦s.ŶïÇâ<>6ЪÒO`B¡HWÈbp=Ž«UF™$}kbO’þ _Ú'„n"„Óº%°ï«p1Ì9“`œ°fÔu±ZZGe*gWÐkOz•WÁXë¨÷ðUÎ>Þ‹ð«¾]å“Õ¢]€ÞÐíª¾Zåcæªká_q»$¶ä·pU„™Aþ–3G£àP ^w(ý*áÕ²ÈHY˜5‘lTö ×w±š˜vµÎ?tµWÁàv¯7—‡®vöÝŒ\©5D‚>¬¹b–Y°’ºUKÌÚ¤.‘¬KûaêâéDDø?¹Ò@¡ÐšRz Ýx÷ÜFòb÷óFÑ.}‰]±O)"]ã‘ \sh MJÃÝ,©lŠÒÙØ¥³)Z”MQ€MQ:›Rt ©Àa9ƒMÁ,6›Œ±[ÖS.p,¡Á+&i­pû8è”8l%u 7ç\ ˜†KåKa.F s1 p1Êâb´8£ £,.º· ‚i8´T¾¸GCG<šãaUDÍUÏ·æï¡Ò¡Ü# ŽÁ…”¹C J©AÇ¿j¥Õ | 7Îæ1ÜŒ+¾“2CŒŽ«ˆgïñŸ·Ï(–ÕM¢ä²j>âuQ Œ™%MI8ÒØÇMª{˪»YqhÈÃ× ˆµ”º‡mõwÃÔÊ;‘¢5-Ø9†Ù¬ˆ¬nt5ïÓØ”‡¯½Ù‘^í v$záZAOfð"+dqÃÊL"¦Î`µi±¾´Gâé¢ãpõ7†b þE{3zèÞloêÏ(Ĩ0?"»?£{ö'Vzѽ Ìõ[k”ývøì§×ã:G`ô¹w¼ª¥¯¤a£Þ³7ÍÓ*[6ø®Ç„64bÉb+ù¸©Ò‰¢`¢œF–Bõ+z-áÄ´œåVäÔßý:õEx´",ùZî6èÀÀO~ŸºFµN§Ùhã^BqÛ•µvݸH»“ðéF Ð5…BÏ X ãáWìy`ßǵb´ºF¨˜+Ì ó‚¡¨šaÚ 7-©=Å+¨pŽ[¡‡ÈeÅ2#ûÄ€RÊLùƒ:HÓ˜,žô'Ö6££„ÑæI!c¡‰,F9"OÜ\ŠÑ$eºl‰îËêª&³Î@–ZCœùcL€ NfDdt”êôù#Y,Ùå6²×qoÃ,ÚaÒ+_Ér*)¾æ<.u0)2|LŠ{¸™Ùž&S¸bºóÚ¸åº.,ê{R¤ºŸ4[¸˜J‘å„2½uFŸï“ªØžR¢”ØŠÖźž=”Þ|j‡¼PJ$ï®óGáwKh½Æ>Rö­J×gÉ” T ._{ºÌh±(}]z Îtwi¹`“MGñm<˜gºªt:üd2›ßN'ˆ:ޝ‭Ôáe‹½Ÿ„؃3í)€ÿ ÚHàŽLÔârˆã“ÑÅdŒA~ÅM<ÿ4¹¬`QÉ=ÙY$AÐÇ“ñ–Žm­Áå+ùcßê:`ïþ¾Ov’“)”mtÁÉ)r7&ãXÍ.ćZ41.Öcôµª™<‹ó¤_rühÖ} F#·VD‹ÀXÅXL:· ä´÷ÛpLtt{#{¿ñ‹/&—Oä3´âw Ÿ|3]rå[Í78‡åE\& {{;ŽÉt@ñlãùð¢*šs`5T˜‚OÆ*NÒLº × ˜\﯇qr_^>ŸÝϧP§ Öy‚‘`'—ŽX“ÖÀ Aqq¿|^|І ?³›Û:NÈ[ê‘þü5ù³¾õã6†ß¶"šÆM Hq7¢±uœ¾R`o¬Ñ§ø t ÙÔŸªnjˆ¹Õ«ˆsøåK,>'_d@㸠ÛD“ê}‡îÄ/ã9×½sg\ÜM§029DõhÆ9NÑ×¥ÇÇäe<NãKjÐ;˜fГ¼–ck6Â1 io&—€ÙhÑdæqxö”¹'+½›Nôâ'ãꊋ ®×árÍŽRýìì­0y±H–ˆª“²¥SÒjb§Ä´´²çÚÓ¡¨a ¡°ÂÞœA¾›ÎcÅ)+v÷ÃŒ ³Ÿœ*v°Šõ0s©Ç~v2œde`ÎÛïüˆ×"m¦»e5óÊrÙ ÙÚ‘$r¼óå¯ ­V÷*fÿF–›‹Eë¹ `^ z}Ç Y‘Ö9dù8°´ËŠvœªKè!,C2ú›íJ`ÇãMA¶¡±|HÿžÖ ³ê +ùäêJµÂÌžßÖ/´ªÂþŒ³Æ\(¼æ7c~H7ŸN¾ÆjžŸ©ö.ÐRSìk^© JC‘š<þÉÎno@Zè3ÅŒ™ #råﱡ4ŽX‹[-I'+醋¦*H¼â´¬ÈlŃK\HžÈ*¯ÄY•)ýcm;l ®F²ó˜m*ëÍà^mvƬÈ)Kô]+ë¬÷ýr¹ow˜-9T´èrσ–§w³å~]ö¾_•¤–î4Îë÷ÚéR3ì4½ËNê²SZý›§Öšƒ³ÌÉ.áâÖ3°6ŸŠ“wÿën8Eö—:°_‹Î† °­w6Ö#·£r§\ŽªNÞæ¬S6±H¬®]((ce=~]æ)mð ; S.Á¹sJëµ[½æGøó‡2 ŠRëøà¿¢Rçy‰߬mÀãÐ1÷’ÆÝM|3Á¥[žC˜ A–Ëgêfk·Ñy¯ŽÆé€!0ÈAÊàýòŒ Œýw¬†ˆ·p>?‡E:ÇŸ"ìW%gI•¶ó)H›¥»Ùž¤½Ü(:—NS§RóԩꨠÍïu„6!ª˜”6*›jXîÀPÜYEc(6ÓÇ"^lÐXÔ  -œíÝ¥Z…"o¸ãSÏÎ3¹fS!Ð9¥¢ Â]öñìfx•¡éeØÁ l™© £9'j¶3}ÚýPîÈKBš>Ÿ«ö±`û'ôçtŽ«»M>«Î§Élܲ´:ÜÂÓ½<‚ðx CK G£ø†u£EæD·ÙÁèzB×tÒv.>¹Ûg‚Iܱ)•„žàh œU™ºäáÛ»)¯}>v['Vóܺ7À« øŠñUá(O÷ ç_eEÚ¸>ÜQAïî ÅÝx\Q‡ª©è] q„Š}¨vß‹âÍìü+TS1.Pa2w¨½]®Å›U-ÒŸ §\@c±m îÀqKº^§C Þ_üŽ-­½oãs±ý²ºÂz&7ª'ƒéà]”—©ûQÄHU0ì[EôQ·¸'pØo7¬«ÞãÇðø¹½¿¹MYt$¿A^øÑ7ëzTU§5¹€ÁÌ·ËÙ×»ûÍ·­ þÛ­ˆƒæû:†Û†ÏÎY›>Oúð{þ_ϸ·mª%¯ÑÅÔ˜¼ÿá¤PhâîaEÁÿ2µ[ï¡øNeLØ €K'.Tää¸ÕЧdQ\‘ûDV´)Hðñ„,݆Ìõ‹üü˜Þ=õ+vw:TpE@‹z¡;ôÆÐÛ(í¿½_ðdÓ|†=°Yßm™Ujõ 3nÙi“˸X§ìüìô>®ñMÇ*‡Š©Hr7[F+zwçR#c´#PÀ~ýøä׊4E¦Ï^½ÅŸûÛòsW~fiˆ0A£Ï Å~©ˆî^k7PÏ&.j°\„Ø üì6aÀÔò»{ЋûÀET?¡Úêø€‚b†{2¾€MQ¾=µÈÌ´¶AH<0mx CIÎõĘ㫠‹Ä$°/B€¨s”’íÙÙ³$Bùÿm䨥æh¥äˆürF¢8°áêšj/W•Ó¨['÷IfîZNîffîÈÈx½e†h×'‚·b«cëcÚÕNïÕŒÉ"š2=Säfêd§ßqÓ“Ž óPhúã.F¦×EC}##b½LéÎq,­Äסát_´HNºX™?¦v$@\¨Ï B³ñL.‰g¬0‚CÓ–ÔëtVÈiÕ{z7¼ø,(Ã)'”Éü¢âQ´È")oäjX?VŒê<ð϶þ¿®˜&ìÛÿ#)øë]"ÏJJ¶Sâ~ŸÛðnr ËeÑ ëŽ\Ù—^ygt!S¬HT¯êÄviˆp_µ¼ÄB=Ç_`ï†l õV} ‡y«ëª?*bª£Ó¢6ÑÑ£Èü¦¿ÏJaé§l´ LÌ#µ¬ïôÆ uª~Ø1pFO2 ·º’„AÔ*²o¦•r«Fx NK‘¥ÌÔé+™ßµºÆ/“ßt³à(océ÷Em[ÁÒ}œ½á<„z³)Uôô‰2O¯ã;ýãt@²kýÜP?÷:eL²éRÕh•Ø ')0Íæf$'G½|½#_÷ìÜEgÁ²I~!üõ&§Ør Ò] üGNwúÍÎYÃîqc"$[o…¢‹K5©q’ èpªÖª—´)eéeš%”0hmëëz ‚ö¤º¡·Ì9þ64¢G':8ýcñb;µÙ¼ ™Ý à”=…xÒÞ Çta#ÏÀto#e{¾b˜MF¿« Ì ¯r¤‚~Ì7/”hZuv†V£*×ÿìU<Ó=H¨ÀÆÝgÄCø¿q|cÆ¥EjOϧXŸ–Ó鸎꾅;®hßæJ؉˙± ÊŸÞãj/6ÅÂüÃé{¶Y’ ݉S9£1Åye¼ï¯¤ÌnI§—VÈ)Àš%ó¸ ãïŽ G*H›å2wδZjN-3¡œÕ/Aâduà“= [>Õö3 u´„@N‰1mù<)SW±ÞbZ¨TWTÉ ûôÞ’è‚ŠåÆ -èOIAÛkœô =¥íêû›Ûe>óµÆíl8šŒŸIñ‚§l‘vÇ( ì¡õ"n¢ÏåßêÚžÎÏ9Þ7á×M½ð î¼JUK 1ÚYIxA½3äšæ[ª.$Ø”EZ/»Ø˜f“Z–¼ûÈ/ºò…éY°YG»S/Gyï6͚ѽþÞ³ç 2´5¥¨#j†íÜ‘ÝF¾J3޽H½AqÇJU?ÆÓ+«ŠÎl‰/J$>{sSB;Š,xâòåÔ¢èâKe ­P –oT=\Ioܬ{¨èNRÑvÍ®ª¬lë¬<Ë6qá™BP ³ÏžÖ툫ÉÝø²*Þ§3¼Ö¡"æ3–*ðÖ%Š$3(B·ï´! …hbí¸.nMv = 'ä`•Í5Åß±ñ.Yx螇HíÌÌMg—մͪƒ†Ù¯9•²7H5ŸLdµì‡Ý’]­Nfµ KÅU·9¼¹ ´•d¬!ä¶fæÌav6ª¢‡¢t䔩d’$÷vùR|…DA~ÎèØ ³;Þ1›ñ²&ùHØX©JG¥pwàìES¥x6gËÂ!fx,s6¶aÜßLœ•OM¦Ó ‡áUÀ23£³ E[FÓKMžF*üZ¡sé5žâx80êW»ÍP~5 ­¿ HÅò³! ŒBî6æŸh tywæ"×ñ8ž&LÝ¥ó …|ÃAñêUÞöÊ8Ë3mÖëÞþAc¯»_‘š-9z0} ·!GPI¶T®¾rôÈ!¸ 8v&—Á¬XL£YN:EZuY;lEKˆºœùè;â°‘ NÑ#ÕSO ÷‰‰z2µÚŠa¿À”A", ÆÐèwÐí¢Ø-ÊîÅÅÝtpñµò?‡UX¸onâõÇ/Uq4ø4“±œÜI~™L?c5:hÊÿµ#JІ^s·Y{Ã*Á¿‡³yUÚÅTÅï“QUÔjDd<©Š—q{[?¼ÞÙú±U }·sQûñÇí eŸö?¸R)Ž .‡Wd 6BCÿu™¬ 3jò1É(ž³c–÷UñúãËIö·‹Oã!švtã[¼"¬Ÿì¶·^¾|QA®}Šûà šUû1šõá&àXò¤ÚðÞÁă¦DIﲫ´Â!3'Ú´X¯iãSÃõ ‘ëSc•ÎpË-@k|wsÎÄ.&£»›ñÌ¡‹k‘2Iw Yå'¤§“/.ݳ*‘±*\_Œj¸Âõ*Qú«¸Á@Ë1Øüa¹Â·&ì%Þšþ02ZjÒH†dV«PÚÎ2Ø ÆÏúå?©FËIäBÞLÃd]7rªr30XÛIÄï dóƒm“¡ ÐXOšéN`c¡}ä2˜ñâzƒX¸¤¬\§ /Ô Ó°|‡1™˜Aî²k† ¬ž_`­›ÃVû î§äïËÊÓ± }‘õT@2sVæËÁÌazf¨U:º\èòŸŸêhß(Kp…Üíž±ü¬W§ oϬE_j§ylížY\]±SÉÉî™2bVFeË0ŠNkõÜX7Ŧ«êVò(¬çºŭBÛB·êάû#°® ¾«ùYÒþÅýMÄ} ñæ⮸cíL7­²ñ®ãªc­‚×ptœ‹/° Þ @ #é~ øŒ ‚.Ÿ[a‘n„(€*½¯‰óÑäâ3öÖGB{©•yøo 9¸BCïírÇ'µV¡f8@ 88¡ ÚjS,׉•½#°ûL)¾Ê3!Ëò„Ué&ž‹”òK·ÓÉõtp#.(æÂ¥¸™Ð‰ 'ЏóÑé’Û8skfqQ¦ a‹°À§Kªì…0Ë®ãŸÕniîŽA:Ö¶ôc…Z?œ¾Æ¦¤4Þ Q^‘»¤uœÚûÙtd£t˜[t‹#Çl9,À› åža,mãuKxw-ÝûÇ­öYË¿K‚)_ îFs!—í øØ®4Nzåri«öüÇ ˆ¤EÎ &£™t¾ÁõD?Ö@—§]C®W tÍ8Ó¥"é–©îIØ•¬‹|jt8w;/Èã2>`ûF8’•‹N˜Äç³RRzy6¼¾ü°cCVÄ)WU ²è$äa6µ)×–.&SôÐ9_ΰU35='›]Í UпF+ç /IÎ 1ûDÞ'ÏAjç_Ð÷Z&Lí9¡ˆñÏ[ÚˆÐ1¥Sc[”ðœy…‘VŒ¾çHWU"åd¥ôsºcõùlrãs؃qf{0Ù—CtH\¡¢Ž¿ñLˆP$ñFéÞöEr̹œûÃd%®hرŠÎ GÁôÜ5¯#¸ÕVêyõ¯ÛÕ¯¯}M÷Ò}¼«œv‹zWIèç¸N1 $Iظöj[O0Þ£H¨žâ ‚Ç_}Õ¯v'{5Àc:ÙíÎ0½¤óÆÚ ‡®ó‹bz}º‰ë3ŠF$²©q³¶4ge%R —OkÊHÃÁµd2]•cºFÑ¿Dl‡ômãçþ9²~ÇÝ^ÚVr“â¹òêò÷l> ý›*žÌ‚CÖÀüw83Aop¥]2<³û¸î[h×ÏoÌÏI†o×±ûqœˆÖ•g 3÷Ã^©îîL&µfYñ®Æˆ¿}¦Ð^é(ñT‰À1ÚW{G^é-»t o —žá~/™SlÿÓb„îIPò“ÙJ{°†Ås‚,À¯rxW=úø,5hTŠÌ(Ë¿ãAJ ¼QO¦7%ó®o#áË;²7‚68C‘L$A$i—Ëò “˜aöÉ~<¹áñxsq:ùcxƒÃI^T´'/¬†¤Úã¸ÅÆq8Í]¦¤*³@n™£s=MKrMn'mf§lX$w<’t°+M±u[h;Í><ãé®7,Ó‹Oéî±°Nò!ÔFúÒ0>iŸ‘/Ìc-w/˜)‘k€Eé-ΖKøãs<ˆžmjmÕ¤b¯Lº4 ä) óûŽš2â´å…g¹•fË¥+ ÿxN2¾é¨‰Œû­&Âq«¬k¬nŠ:eÚÎô:à§{30Эv1ÄBœMet©eÙkÎÉ¡7„é E¤ò 3Áž•¢î®S¯ô¼ 4™J¸E…Ìœ0bñªPÆ“±y·>^£"¾¬ŽA¨Ø7F#Õ”é7ºÆùˆîÌ# ÞðwÅ€6G[â{V¼Û•j ¬þÝ8QF @‰|€ËÀWª&(úhb{ñõpœÙ;dVÿ_|&6›†¯|½ˆ‹zBêbr7¶%6ºŽJ{“TÈÜà˜o^âh;‘ÒÞ ø%õBZC'e*`’Œ?eÕW)8FДヅšìmv”ѨÊáj”-ßZKž\<­ÜÆI3p÷C² ¿ÞÆË#^‡Ûö:L?ão ù¯Œ ‘5wñ®H½nø¯SÛÚ 7‘[IT¬f íú¤‘𑻿cÕ•Ћ _j™õ î=½ 7‹Ò½ö6â“*… ý‘¾þà%mØmÑSˆÇi…у àF©ÕÚ°\«œÜ•¹½òJR7‡ÿ•òto¯;åcÕŽ°v (XÏ.~Ú²×Mo6Ô¨WŽ'(øëÇ03Z-é ¨,[MQkX£Õß ô,,T¨Ÿ¬P üÖAü¡p“#¼ÆúnÐ1Š× » Â_]GK|Çáo産ȚEQÙyåý–eþ½K΢LqbÏŒ«’€¢e–nž*îÆ^nTƒò…0Ú}-„teÅ^ªðbçÓQ¾„¾ðdöž^WHZ0ÄY»'ý[ÍT鿍öØ~êš&¼ "¼‹2Qä &h.ù§xußg¥xý—àKd8ãÃ:_¹B‹H—í3ëgº Réà¼K*§‹Zr†!Cá`ƒG°4'P:u€©i¬µìüê´±Å>ÿ‚çHYË)Í %DµôAYÁtúÜåi3æ|pñy©)#…›ìù’ôE`ºH,6_ŒÞÍž.iûÄf‹âÖti/2[jj¶ÐLaíõÖ·2cV=_j¹ó%ðEÉõ¡LÉÛþ5( U9Q*rN]ñÏ(‘|!P×ôn8vÑrjÀ0´ óLð†”/2H\1 …I—™ƒ’çE§Œ}&Ž·>x¾¢¾4æ¶HÀ”2MÄÀ°F§I*7©Åà÷Éð^| ÀáŒÃâ ì±á®CuÓ+7AG„ÀmyÎ »H ¯.žd` 껌FŸSòŽ) ž°änÏñ]š?Q°:µ:Uøöj,Íš„Ô¿«†è£á5Fqð†ÑÄ>æIÆõXh5×4³²¬¯åN|NMÛ@Ęò!êÊðÞÙb_s|1•!§Ò.ŒøvŒ>6å݈)ë«2·+â•“h"L¡¬O» MkÊPŽä¶5ä)CÐ)B¸–­¤=D_Lf‘q”ã]Á¬ñÃKKgG3gñ¯ãýëD’À=ßqÍ—ŠƒTù( Ç+¶(G•§„ƒ¦ÕòG€ÉøÆ•»™…S+ÊÝŠÖö•±\¸ä»ÌåGjÿ¶¤`•^€“l²kY/–A Y¤êŸOq'i*n0QúÞ}ó²Pv(뫈we¿XCا×=wH¦(/>vÓ.)D¦ê°MÍUžbÚ)>aéÉ‹A+Ý{ZÆí…[¯€BUUNk|£Í‚uƒÞãÅ–ï@x öƒdÜ~e[ý^Õ«[ì«Ð~h0ÄÉ@¿g/Ýš¸GKƒØW|"x«¡Ô{¶+òš4$ÿf­ˆ,䮉JJ]—[·–]ó—CµºW¼TÅÖB½né¥p§ÈRH2…¿Ê¤,†æÛG] ÷RÖÂ¥fõƒ¬Š{áUqÅúÖ½ðZ¸@¥V¸ú0x¦µ%Yg)Ä“’Ô®°4ž{Hù³¥Ê·„´F[,OQxä .¹n–Ÿ–4|³ä€ÍÅŽ ÐoÅ X­bçl+î‘/2÷HC{»–ø×ò|_¿½Sµ­ÊÝ—Úæ¶ä±ë]ÿÒYCÌ¥¨jTƒØ1R]4B¤dÕèÃ"u`“ªeè%¨#8ó‘rb´d*Ú\4e[îÙ’#nIŠTCLÖ†:¾ÞNüˆ.íÓ’ŽE}Zj-êÝðâ³òf›%ghkfYW¥¹½tM%³Å{—¢Ã C#ô¡ê8Y<ì™Á{‰a˜‰-ß­˜A“sX³%ÒžÂüÙ›–Q Ý­ P_7åê£6:IÃN¬kÎoñ]”æñ éùµ÷†Ixé"[?^liü¶q2u„öÊ˵z×âw M5ƒ½l›+¿WÞDÖd3Zš:’„ŽlBY¸€ÆxvÇPæÙ²'»Î™ÃÙoFa&•®yþiÃùstYÉ>Å»GøD±ä¸5v?{Ì—½ä¥º›Hü¨)&Þ,ëhÙ`®TËGíœ }ÊÚY“ÈöކΥØ&«Ü@-·ƒGÎ`•“€\?ÉïJÎcj;N€s¦(ìhI[^a·â'Ñÿ]ŸŸO/ŸŒþo{g}ÿÿ(ÏZÿ÷]?Jÿ÷p³?oþï¼xQÛqçíõËõüŒGnr†þï`o¯ »òûF½¯€„Ø9jÁg¸m#6ÿe÷ç§@¤ÖþiEœô1þ[—HËcz¾:q§Z{Ú E ¶{;Ž@â­Õl(ð ¡%µØS÷Y¤†TÇGÀ]B=¤{ùžšÊݽ’,¡¬@°XRY ¼eéB¤œ ^;A˜1ÕÒŸ–¸ŽåÄ ø:PÌ2ÔúL©1uã9ö¨|¼×cv#ˆ†`{¬ç3cºL_¶ì'ŒsþÃÃО¡@T#[kd÷ØùÉDG]§Rfâo9þ¼Ô³ÞÍÙ-0]·"®;aÖ³ô]8Pk…õ]_>ŬÒ¡B«—§TwŠ€;PAØL*Ø”øÒº½~#žužý„îOqT7ÕÕABB•b<úê¾>Q¯©¡{*Åùdþiuê)±[ k¨ŠØÞõ#¯*p·¹û¨µ`gwçj"ª äLâg 7‚K‡È[áÌw÷Lò‹Åà……)+ôxh9¨`¼;ÒŽy0Ô`¤›$ŽZ›Gg›5+ü†jîlÇ.…õÓùç^ “PTš8@]3êçg–ŠÖ×Ïw›µÍáÖo•ßðDº[âì`£îþ¶õùnãïo†ƒú¬›Êo›ŸGvôCJx7JXêyD¨ÂåÝõ{NÐ@ZOqÑÒÁ„¹[îLx·Ê„ ·WUë½­Õyn% /Ù÷(߉5H¦ž]Ó%ª[gÛªAóŠ÷ZcI½¹÷Ìÿ7ææ&+`Çá6t˜À‰$ÀÝxª&Iøi=LN‹, 9ÃÄ® ÒÔ1§Yýë5ïg•ª–ÄR‚ƒŠ.¿OA8é¤1õÄfꘟ©'Ïr¸zjqõ¤ŸÁÖ“„“?qÃÉŸxáä½&þ¬“ùœ½_°ôÌXé¼P_\,+½l§¯ûŒýÂ¥·CáÒÅêâ¥Ge,G®ˆk@éÎ*yÁX-TBňÍzoŒÂ/»>ˆÿøQç<ðàçiÆQŽà »Úó°ÿ¡†gÿÃ+ë#<åµñŸ³¬ŸGgpÔk‘}Ù·ñÏ4޾ æÙ6Zdâýtöu¡](º µïö¬X*åÁûŠ—²Ûçï½F_F¢\]ˆÉ"@†Åai0Œ€nÈìÿa ¢—À76°,k'/Áé3¥+#FÚ“¾—ø$51.JÊàKþŒCO ô&6QlßÔºG¡5É\A¬ ka†Ï´ªÓyæ*›×†Ó©™!Ó‹©yÔZ0¤æQNÔÎWn”¦1 uKZ®ü\§æR÷ú©hyj´lÔªšÿCQRpèêŽVïìP™)”=F긜šp=3³Âš{Kcè®iQ¬BsŒX^D4›7*è¡fþ¼L€—WbLf‹è€ûǘÚ¤½Ñ‡J½½žqüçJ²çá¥-ÉÄ¥“~.©ýß ¥®w £î4†íº-ƒ«b¯¥!Õ± p»r`PøOŒ¸ƒ.ÐýŸ¾Úóîõ ŠxË€‚ÿInzùÖ0¡rENåQkî¿d"Ò†`œ\ Zw‰ü˜!1Aȳ; û³m¿áofÐ ×Á3犹̞£æ_Цï¹U§UÄíh0ŽHxß—\`»Q}7¤[Ž„´r˜Üj»[Œ(¯A2ìtI0—ÛÛeüù~>¬ýtý„«UÕ¬QŸMíc}DÕ'¹f¡;âÚO(îÞTÆæ€²òP~~Tb•t³ö‹É”¯jö=\G,žÀ=¯­‡%†“9²\È´¥Þvè­åŸâhvË6m—&Þo¶Ñ=cÛ¥Ÿke\Ù“3,<‡5MÖèþC 0‹æúX”Ñ´}ŒI¥€4Ícy9{†ÆÕùìÆïÓÉ;‚™3+Üà-]3w8㋳Ž÷bÃtp+q{ÖKÕÖCŒšx‡->ŒøÝ&xÔö†zއŸ†èùI»JT÷4.¶ø„þ£ÎÑøQðp– ¾ÑŒ]¯B™ã§˜Ë Ã#ÑÁûÉã¨\!Ùš»ÝH½f‡a ‡´þ’-?Œ° ›­­šo¥8/8¼Q,…Að½( Ÿ—1”)èÇH¨nIsÔÀOâ,Šº¦ŸôÍVKõ6­pÿaPج-KÃéU§×M€ªl‡‹X²¸Ð&û¸‹¤vŽLÖjTÛ[ÍÍÐÎk>)ΙoƒÒpófkåp#LæËpþIÞ¦ã̪è èkB2gŒÊæ›>¿ˆÿg›í®ÒM†§É_øû"üo¤ô÷Dº»A]BxU„±ÝÝ 'Õ^Û:icX·Ÿ¢ÑŴѯËVÁU‚lÍMé·cwo+ë"­E gÏåwØÕYÚÔ§m´Óõ¶ ~ÔF³…sÉ}ïâáÇÐÓ§Æ#¹¹£Á; f…»:Ë. ùÓàHfÀï!ÕNÝ … ì'Í:fÐñõäwþ–Ëÿd±1ÖÅòhÛJtÃV€mõL¶w'XLêilÚYœMÊWÍ¡)ðÐø~?fíÜŸY‡œ~:ÖVdÙåoho"°ésßZ‹)[ßZú× 'Õ< oÇJèZhžpxk·sBM`ñÊ•Ê`×ø zè·ÍÏwbpg CòòÙ€þ=ñ¼ †s}“ô?v£ò#{ ™Lë®îÁ2.aXe~Èj'Ðyy,²¿oÐ#¼§:‡‰+_I²Á¦.!»2‡|ùUþžGf9—  ƒÃõeWÉ·í¿‚|+Ó»OHTXÅèÂ%äY•Õ ˆhÉ÷å"’/†ÉW‘ÐÕ ÞdKÂg( wV) W@¾s ɳ$œ2”%?|Qx«}¶¹ƒRYû Á>ÃPÆHf,(óš‚Ü™#È&’'8; Êž=Á¸EyÐ'h!Á8)ï…ÁÀ"B•_ÓÚ¢âX ŸŒ,Œ7Å+†ñž¬ý”'!÷bÙ¸´Ë”­4–˜Eèõ*/sènþ t^ŠB—¶ðO(‡^X~ùâþ1dê ©a[M·,‰1vA†±ËZ›ËT=¥YКš°J'¤0B8n±–£“Ì;RÆ2,ÈýÁèÚ·“««­`:«getéäÖ^jÜæmìæíV$ÿfGÅßA÷öNi^/‡S §Ž8Á(æ;L]OOت‚úO³ÝöMGÓºç×M5Õü€M¯¼‚È ­]Ù:—ÍM뺠›yE Ë–!²Ã¾Ú$Z:uÑ¡%Ótˆ 3°Ð” êG]UeÛêz{-Þ5å×›ÊÍ&.¸É”I)’Uó¦7[,©3¾'y†1mo¤ÉXÔ2˜F~ y‹©FX‹ Ì(‘>©„Ð!#šU~KÎ+l@ ,†°CHÕ³Ò†EÀ0 Ài¿)85-áio. Fs03ôu ÈËäökÊ¢ ã¹A£$øjßuò„£UŠÐàΦºOóT œˆªF|G­guHïÛ¤åˆúì…™±Þã¯Z_½xnáÍ*Ü2G@Nú“ÉâYÕÝ„^äpL³Kú‘¤üv!l‚ü±˜“pæe†$Á_RÌð ­ódÌðÿ´Ç´ÿ¿˜ŒŸŒýmmÿÿ8ÏÚþÿ»~ûÿ‡šý¹þ¿_î¼ðìÿ£íWëùÿÏvÛþvSëÈcN'd÷ßB%Ãà’®š‰¹zɶË%@E<›o/éòÎÓó;®}¢#åOÀ±N<å"‰yçz%—Õ_éGrD|7“†¶¢u&®ˆþ›u8Úq8Œp¨p¿ûVCuÍÉÖí|>€ytIöÀä |8þ½´»±QÑÐW¯iH&äU]—9PJcê\‚>%¡\—­‚ÄF7äL,á†À`£ß!S÷Ábq°Óø_wRÌuÃ]cûÆctƒÍå¹ÎšøJ X³œÅ|°¶?÷³Öwt„d–^+¶ÙO+$ÃrY“ýýÆxâ&À›+ÊŠÚžŠ ù˜OBœÆú &ï€Ä@z®vá$’>¶ží\¾˜N”M;ÍE×ðÿæn4"„~:cßø‰Ý½Ó> ënÙäcA\)q¢²mD¿"ý½ªÐVún¸tŠtlÇ3Š¿þ>AeË%:ù™V°šøû1Ä`×C ùЙ*_ìnŽçñô‚" ^r§`&ÚO†z]’‹OÚ tL²¥÷ÂdE¨Xk9×:çzhXvﺆ݊JSf·W¦ *H‡—Ý u—“Åv/sÅ©'L½ä?/…×{ÅÖ%’wÊe,)˜²‡Ï½l˜=æe,˜ÿ\f²½Ês«nZ,WVêd½Õ9î7ɬ£åÈ)SÇB I{ØšùÍÝ^ƒÿEPÕ>HíôÖï6;ï;èѪ¹zíVç ¾öSÛD"hŽäÙÛ}ß(‰ gîa*j·½û!½yûûhì\ÐÃ;«Ø™2ZPØ"{÷Ãɯy¡Ï>º€ßïöê­Zb³_ùKìem¤ KCÛô˜,¤‹Y\ÛÉQóIÆôЬ­•e^ß8Yæi>Ë205®è‹XûžÖsì…=“ä<{á€!-Û ë}½¸©1{ìM ìÙßÃÆ¶¤•ûWûœ±œr±QªS%•:qá•o³%Í‘q¸Îü•W4Ë«òà ¶lnînžXÖ†:’»)QðþœÌ^/í&òÚÌgŒVËQîÅ À…Ù0µ1!êmêá£ý SÚBèåC(©ùZó‚ *Å+¬H¤z”!·75àM_5©‚·ZÛ­¿‡‡œ~ ýÆí jºÛ,³ÅS²»e[ŒJBÜȰ67±ÜðCÈê'1/ÅۘΖ™ŸCt6ÈW'áýšäznO*{x‚9ÌD+'DL|fZJÚ$I…r7ãþ„NÜR6vû›‰‰Š†ZÕŒxÄQ(3»/ϼ¾T¯NËŸáÑ#Åw&:PwÌßÇ[hµ†ò4½ð • ±à:k^­òØ•R ·/*óðN§â®…-¹×Àr¹_´ý§ÒÀœùjR)(­‚hþ¥À=DÑihøäï-Íx${£8½Õ&EkŒ;OîÜ/:µs×ñPÓ§à¬u¿#bˆZñ‡Cí9 0Üë/'x›1›ˆ/pv#7_ƒ»YLî®F“/Ö€IvÄ_Ÿ%¿R$ ¤‡ÄU(–ÄìÄõ¾Ž‘Δ@R¢ð£ýDzÜóIådZrpG G<±˜¿(žSŒIæTÅå&S«épI6sU  ¡„ y…ŒÂvöÁÛq(º§ø´ú\‰*ø'))ˆÌ‹¢ñÐIB\ã:Š>&þ#þ×Ý“ÁDkýïãPÅÂÞ‚°”®$Q²:ðÈŠá!YÞúïíG?à>Ç]ü7æ( å¸&N€£=ä!ÜÅPðÞë 1ä†äüJÛÈ©äAŒûÊÅ'ŽÚ7žÍáèc@‹5¤Ï[¬ÕP3ØÑ©x²WBé*{X£ÂŽE­…’Pôß%àDYŒ„ްIQ Ð0±‰^´–ÜJ3ºNÆ©w«P~Ÿ‚MÐç"»K1Ç¢œÉ𗜶†÷¥F5}õêƒ'Än©¹ZK<=ÒßfítJ5p’mTj¤àx2ë RÕ±¡ó’¹x¼ÍߺÒÇ«¡þz™Åƒ‹V°ñÁlvw£¬Ô‚†ß(9:“ÌYn~LYn~Xx¹Ñm¤<ü-m¹)›³òo,þøø«ºñZPê†Y›¢¹8©´ç&êQ×ôíá7NÖ‚kZl‘Á‡‹,4Ò«ÈŠšZ”Ò=öÜ•F ÃàJS‹rW-ÑàJS/ꕆþ6«§SÞc¥±øé#,@Þ[#,þƒÿ8ðø—¯·×úßGyÖøïú±ð2ûsñ¯·_¼vçÿΫ5þëQžíþcoeDäƒ@ò ÇBõ ^)ž+‹îÃÁM<ûñÍM<ªÀçàz2é»Áh4¼Œ+â×É¿'âÝðr@R«Ièp0ƒò»Ãø=ÊeÂFª™521"?ä¶%@ÈãÒr ³NY­± .©uâ?›í“V³Þì‹Þ­ù÷±ß3 foE8˜e!0X*’¹†ð/Hæñ 0cƒþUæâfÂZHVQ^ÿ(Žˆ[ré«pê˜[fD3³`鸘™Å3NGaf²3ýOè»D.›—ë+Tz‘Õýƒ‚±`5PüP×2N툩“ “ i{r>ÊÑ-b…¡ M¸²cfÉ@ƒ±M.Ûclº\rû#¬ì˜pt30ƒ"ÞA¹@¾¢4î¬C¥ïÃxö Òõxã/¦¨*£Éø{æ½?ÈaôUÔˆ[£!ÑPp¨Ù¿¦óµ…Ií¹ñËtôWi}­X<Ã9t®œºÃ¾Y CÜýÐdç!L) „åf"ŽÎR‡H+ ø#.²­fÈJHO´ ­HkÒãÖ¤o„í÷ÑgOëø »ÿa H"N¬•”ê¹f KZ–´·*\’mÍü4I@Uñ±:ÜÒ¥Qà„w“¬®f¾½$/ ðþ(QÂäÚo {ºìIWÅgŽÑ9HñÁdVˆz¥\†Å­D½¤±IÐϲûÒ¼à—ýã5k Áú& XVõƒe-eO„õT!Wr¸%x ŒMë-h õ”³ ­ñ]v“×ø.ñ$ñ]Vý൷Fx}‰ÿš^ÍÖþÒž¿(þcÿú¾ŸÿõP³?oþG¯·#?þSíõzþ?ÆÃ³ÝÆuß‚ÜÞïîvz¬Ó}×3`»oùOø`I!躓bEQBøoŽ÷៷n~¥M¯½tþê„þ„PÔÅÉEwpw7w&õd‡ÇÅ"¬•}‚*•TÍèú*¿¤)~²Ð·ÉŸºx­%nãB00˜Pž#ú‹ Cý¬&Š©iR$bÑ(%]Œnçï1N]“Ê„¨—RüÕyüÙ°˜Ú¼úݳ.T˜|>½3ò\L¦Ó¤†VÀEIYö7«%CZÝ’¶ð:—´wWB\_j×î×fÒ1TP%j××oø¨ÏR!b&‘€EÒªÚ §:cˆÎÑP4öz>7Sb 8 1£Ë ã-àã ÆüY{„ÓÕ)àxæú²'îR÷ªcU£çÎd ý2œ¡­ÂVößcW8G¹ØL&Wr0%b“Ƈjš¼:;Å`üU³› µÐÄbðÖ^¢‹Carº™è~÷ï×KœÙ‰á7*ˆ”éûòij A{ß’(3JÜcÓø €„}DdbèÞObÒQ‰Ü¶7âeÖÙ<Úè‚S %©\ˆd™þ/™Õ×@&Ê'ó®ÛȬ%R;«ˆ®Ø9ÆÃvÎÍM?½+ëÇg~E=ulEø«ó1½“^E´zýn>ñÿ»o1#~DôAšÆG©M[YÅECÖéã`¯ý¾"¥“$pá#º¢[:FäÐXý1!»r*K„öqÜCyGü¬–(ÓúÁU¦>FK4^uNÊú7We‚ì,/Ý,Ea²¯ß âø£Ÿ—r¬€"ÒepÝc#â…3kÝÜÛ}Û{ŸƒÚ‹D÷2JUADð\_'Û/ýì^Á+©­1*˓̭o|?jôS(ýèðªóQ¼ È/ãɘÐAÚ®×´FѲ"nGw3QÓÕ$B2p]UT8\£*ö¤g∷³áh2NÖÞuDFLŽPv>–9‹ñ{¿óûçXžnãþ$9Á9z ŽüÂîi Šû¬xcnäýï•ÄþiM&·ân<Žð†çö–ðzS QÆÛ)g¨ªšÙ4Š:†ªÞÁ~Ó¥Ëì-1¹åÝŒˆÞ_>ÁIG¾yƒýƒ·åäoÂAðŽoc>AB‘4.l°ÅÃý•bŠíÑä¶0vÁé8îǦ&ÑP&n‘L¢Lü`6¶ã¡^‘¾;nÑ}ª'îF“ ^% á”…&é%´±CL#.n”ñÏb“~ÛƒuÓ[5a¦ãëê0`×Ê·wYy‘Uü>²A™>ºhj*ëe<žÀ¬`b(N…ƉŽzc%ÇÍQµÄÓÊ—ÒOyæÞaÀS‹š%žÇÀɘ¯`,¹xº ¶át2ü­…„…ñÕ¬$°Ç\Ü\z·XuÈX,…‚^…jÏÑ‘6€9vä¾þp¤*cø¨âb6u / T-F8ß’ U‹có¨•S²i\Ä¿7 tíÑ&ð숰µ¨z/RÂ)¾ÜüȽ?^NãI/´³åó*ˆ/Ì,±—ÖlÅ~sì¼Ê‹)©y{dðöˆxKÛùë n9}v$0ê Vw$›y ãa{ŠW=‰§V  ²×H†„Í5¯Cb¥¹M^€lh6j­:ej¶¤áºMá§gÎg:Œø›`•¼û Çw±º1·Ã+ó†GÔ6øJ^í†TÆ!­»t×8ååOÙKÅ,bxZm謗ñÅ4ÌøBs0Ç‹h¼OTphX#CacQxà ‰euCílˆ]vn¢®‹TÚ*Ÿx··†‹f™øÜÔÿ帜¼Â°¢,|Ð[» IRÁ$\b0¢õÙí%^‡ê f\äÑ%Ìàz0[uÉGíX¨fáƒÞÖñ±võŽöå—Ç!¡!E@°…'»Ë4¿lêRãÏM'7ÇG¶½Ààßݦg‹½ô!¹5.sð(®²Öⓜv3Œo̻܆ÝeRJÁ5 $_値²©ä” £HO\1éRšDtIÓ ØRÈGKå k¬ˆ ÅQ¦è…uA½¤¤$l]‹ÐåV]à’z!+4tÁkrÿ“ÐÁ‰„œ…ÄZÅ‚âwѦ꠴þ182ÄúÀ„g,^„¤À–"&93ÄT) uªÀ`s†¾©”r„»î Î[ó¯[cÍã{$0;½,P)^úeÃ;ŠüÓl±Aë“?®b_õ$O{_Õ5Óér7×…)¢œ½š²…þèʾ: ÞæÊ[94ù¡VÅr‡îÔ©“PëöÊÉØËäÖ"m¡æ[dºÁ5ùAwbð*|qc&hœVká­GØñÜåØ)ëŠí.B›Pÿ»(´ mé…6Sl§oÖ€’FK²-Á¸çŽ“ϪdΕ%×|’&M÷¯pT@¨^©d õ‰+‹$¦yæ¦Ýõl0þÛÐûêÔZbðûZÚqVg!![iRÜà sr'Ãò‘s†‚¥ ûr1ùû¹ÌD-¨½¦{uß&wZk[¯ïìqì¿þøÓü×^Ô¶_¼¨½ªEhÿñj{mÿõ8ÏÚþë»~,û¯™ýyóÿÕN„þ¿íùÿb{mÿõ(ÏvÏþ냖ܧgý\;° Δó¤óp׌Ñ{4ØR¬ó_ðñ_{}¬–üë¿:ÇÝvVV°~Ü>Þ곘ùÙbþË¿}æ‡wФhÛ<Ÿþ²ÌÓXr–(úi¦té&tÖÔJ…zð&3A–ÀѤ 4ïÉÛå±ÙàdJU–{Êq;3I~IŒüÒ ´Ö’’\ß fÁUÅÈbð[þi˜ ÇZP(ƒÁK[ Óhд,n (Éxˆ}ÕN¼±xùG7²銬ð¥j ._]µÚ—¹&zÞô®[P¬H@™X%«o¨ë)Í¥e!¤Øb´ßÀ¼™¦].C VÞÀ!×ôçèQÜpÔ¯49Rá–º¬J|²“¹°à–t©AÒ“Mî¦ ÃÌ®ùÏãÑä ™ÌÅ`;–ƒñ¥Ý¡ bÒµÁ%Uu n,áF½ekVX¦žÂ³ö„§7¹Aäˆtâžà©¸s¨Ç(±dãIÇhn†òë1?‹çsŠ}p‰¹op³ü4ùbàžqo¸§¨0A£VtéûÀJ—ñÕàn4ç¢ñ-!PDJ‚ WiÒ°Þf3µâ%ªøòixñ Æmü;õóýnzÁÚu9—C#$!«ÅÌFcŒåÚÉ.i"»}lqãØ{YÆâZˆcz‰ö&£“´F@S®KX-p¹ÙÍŸiUŽ…@έc‰c‘‹§ÑQ鳈,hÐ/pÕãqgb×ÏLÐÅ]ÂV eκ ÇŒ× TÚÎïR†L°º±ínT½¾¨³™Pn“Ù<)Á#¯nÒëv {XÂÞdîEñÈ)Σ?É5Á¥.¨‹ŠŸ]¥ü©ÛÖL<9Æs{Iƒ” L¸É‘DÔ7 “(i„­Æ `‹<ìûš_‹< ìû_‹<ûëû›^·º+0¼¾§Íõ=Í­3,­ïgd-òì¬ïgb-Vae}OëØVßÛ¬úþÕyÆÔ"Ïžúþ¦Ôb)kêTCêÆÿÏÞ—?µu,ÿþ~ÿŠ©Ô«²A8Áשb±0ÈD€íäÕ÷¥°!qµx¹¯Þÿþz™}9:‹XçÞæôÌôôôôL÷|ºÐEêïP +1_Áp¨9ÒqœÅÈldÔ±UA«-Öñ ‘¼ë&q€µ®xr÷²ë±µ½Àý…&Òb"gÆö–¹.Ø´Ë®(—_”åŽéË@gì$³ÿì…ÒŽPå·4eý³Á„Ô ó¦%®±¾QºuI³ ]1½,ò] `Vº~`•\_ìÍ4ð·C€ú{ߤ–ˆ‘Qs,¤þh‚æ¶¹¦±µôF“OVLò(xˆøÈ¡ö_Æ#sÙ™`ø¶›; v52ˆEIð0,˜|#I™W*m{¤Zø¸’Î\NÐ…‘.ð5ÉGM2N¥À ‘ô„˜ÅaÓJžHjø…2&—ºZ yG^»ýBÄ.L/˜ƒfžél7÷žg9‰mÜ©Ö(8ÕØœ0Öet®µJ#9×ó͵Æüs­‘žk¼¹ÖÈ›ks­‘3׋¹ö-̵€)€ "¦ƒÜ D<$,Èìˆ {"Èl` bȽ @„< Ó<µ³Ë.´o2Ë|„‘„›êÄÁÔp-ª¡¡rúW–õ"þþTt®Áð2§¹Ö¡H ô!ž‡,©ƒ.®Û„q2ŠGÕ°P?*Bv†ãî%ÚÛeÔ­œ ^—œyh¬wÙ.7Áåš"nýÚá‹Ã<Ýp~'z=ÊE…ˆÏÒÔT•Í–}—ɰd¹Ž†Z§ft`€Wã–òûhæÙwàî ÌÑ(rAÌk3¸ó!yØð’P1äm¿OÇï€Ç8Œs¬¥EÓ9!#5M÷eÓ7%é}Zƒðëñ—»L”´¯€€â-ž-ñQx®¯–kçtŸOÆÍI£óÒÌÃoûÍÔ8ì;ÝZÕÝ*³Ô²vÑ©êº}<¼”»H`‘…aw0‰8]ü¹? Q{Œpi¦iA zeyDÝÅt<3¿r)ÔÆßVg¸Æzòè€É‘,}þãOAñétA¡ôg¹K?ôËÒ’[|5÷ þ4}"Ï· ³šL¥«ì³Á"Òr錀åfчÅäJ9£HóË °ºißpÇ?¹cn3Ü0g¸SFCOëov­¸N#ÎŒ@MCŽº.Ãny{ÉØ‘¾O©³(zÒåÒe(&)âÛeèù’›.‘ßöG`¯®»YïJ\Á[£*~8‚qû#,#ÏÆˆq4ÿ:€:}Çëh„Æg7Àkbžè5-XÍ‚õVm/8¦4¼}ºÐëÜ^~(éëÞ–¦âfWÅ:sòö¼ÚÎÃå*ûUJ$¨ËlˆÌI§«öU®Êzˆ4£ÈÑ™iöyÌvÿf˜AS†÷ä¯6¶ƒTn ÐnŸÐEÆC™]©;!èÀ"$Ç–Ö-èÏÙšcçø£¹-ö4g•:šAÖxmí Õ Ò¼ÜÀdÜ…²‹Ñ‘±Ã~0Ù¶Xcd´µ> ¥›QM H@‰ï?ýŸÿ»ZùeÐØDþˆþâÃßÑà6` e§¾v9;µ4"¥qó{à 9ÊÆÑN—ëey9æ”_Pt;Ã`8h'J•º,Egk“[Òq¿³SÔÍœmä—ã# ï¤ÉGf^ek“:z=â\»Ùi©ÿ<v”MÔ¡EeY§iÿÇ­Ó #p–Å:aκb+±K¬ØÑõ½øzmSŸaÁöFHtAú’-Ř(A)FKe½Cp¬} · Zjó´àÙ½Ö²hW:—Pcçò‹:Ö.#M]’‘Iµ%@ã=X?:iÂ3ØÿYV¤}ø’§ïš§{$ 5”„ý^çFÛŒœäÇ롔bg<Înïh ¯1#lÇ,È4‹Øg“c0Å÷±Á4Östé‰t¸»„¤UW&Å\wz£,¥¯DI5Ü݈Y’gæÏœXæË\Ì g. š3œù© g¾ÆÛ'ë.HF.´`ŸmCäóа±Ð›sa¡K¿ˆuâ¿- u^¢›MøáËÿ ”.z% ¿3ý¬š_´ȨŒü7S–ƒIåŸ,',2Ó¼qkÁγêH‡0"¨BÝ‘½'ÖãÑZ9Üvù;‡ãà€Àlƒ5&ÉÈak%¦è0MEðŠ×2\†äÐ q°*Ámܧ¬×#¾ZDp§eŒ&áásW6l+X<ù-*±{=ÓO#赪ó^äb­¿+‹ÐžÏ¹~ê|y Œí‹vöù<ˆÙŸ…zÖ>?=szó¶PÏi /ØsY C6¹UÍÐ9Y£ìœRF$Ò{èëp¥ŠB@u%¿ä…h¿y·÷ëydùˆ~:É@"Ü<,ó•Ã?Î~;Ù+Ó,•¿âxãoéw[¤:sn‘× _-¦?ÎŽOr4ÑÑ‘,Erà G;˜–‰Åâ]ûMë ÝíæTµÇ"”n°”Êt3ÚªúóÖéY¾•í‰ ØÌéF8ÿež¦Ëí‚ÌðÅî?ðÛÖî^ì"þ¬éG(óÈé¯í³¼®DH¥s‡@gNÿØ?Aóý Ý<ªK8ø yšÛÃãÆ+Ê>Ò:Ø)«ä@rh¦¿4%KJDœ.äˆMе§$LiÑA;¦¢SÌÄ„U#$¶ŠV;jšb‘Ö™¿^šÌ* ŒÔ)ãÚÁÞZ¨Ùƒ„øŠ‚Cˆ”VG¥´X…¸9o¾ti^ 1­Î¥éYïÛH~`ž/)c<Ê{WaÒÁå"YÎÉ1ÑÔå%ûÝ]“.·’<…ƒÕÇ$[ÓæpÌfA°L96VÊ#(‘µº¨èò”˜f05½ô´qlø=ÞæÒ›"Sx lbÐ¥óûO/;㇓MÓ×6½óJ @6—F%Bý yïÊY}[ØŠŽžØü²Ì˜cE(ðÇ>¿¤ÅaéH™Bh£Í‹vʧØ÷U_}ÈÓ³W±éeŠH¸¼§·Äô¾Ø1ï²¹¾ÛÈ}×IÆ•³¬ì—¬µY»$vJfÄ¢ôZ²kVÂ-ÙàX¼pv©ö¶"i¸’YµâY¸Ò9µâI¸’)µ9¸’ù´’)¸Ô[þS2p©÷~м7%—§õðÝi ¸ô»§çßÒïnºóÃHX2ýV,ûÖûHú­y²o¹B^,ý–:Àõµâî›dN.;óDD!ó²bi/4°ÂÜi²g.`Ôa9Üj&t¶>tÔ /GPŽ£ÍNažç4›÷ Þä7:÷Õ¢M®ÍÞdµŸ‹ÓS^–Vø{×Γséš"/Z§Û› - ׎»Ê”ÐÚë·±¸¸Î/«s ªÏ»â"ZH>gkhú½BÍŒŠeA™ŒÍ†b9ÕQ´‰'2MƒÊÎP×Q³VDØ@¹~ÝÀ0$P÷q<[´¿ÏšñÄ‚ê늗Vÿ¨Ë¯ù $ølÉÂ?4 ¢äbÕ¦•D”Å^òÑäC+ç,Ñûô!=OdøŒ'Ó†þ:û1c·0”JòËpDÇñþ‰{P´ý|áKæ'SÉüC¥’}ØgŸZìñ-;Åouù§N ª5$à`·*hV2¾§ã²zp¬¶?ÿaýªÒU„d¬¢2õ{Sû¥#TìýF˜W ØO=õ0¨ƒàö÷= ‘m¨úKž0«Œ å=ÃSÒ’uú³4í(¾œòfIm,Ý5ÖWÀ2V{uƒrü T_nø‰ Ékevb9j@³ Ug§±$ÓЙ9[­ÐTgZKEú“AîûƒäWjr»@“Ÿ¤1ëÚâYžÍ§…©sg]¬ïŒÑjñÓ¹DeÕ5xÂöòh0°0o’ç-ê&š¹ü!ƒâ­®•F]× ²Õ°Œé‘¢#jÿ`÷Û›);…|#9¾7â£+ÔZMó@nµ[bEº žFEÆû®uœ3s÷_‘{¸-­H¨¹Ž¥©.LÌ$ÇÆ¾Ç¶Ð÷Z: NìîÜo±‘…Ö…jbYB£‹]Kø­´]>\â+ê2KÄú”Q´ÄbyÂÀù¸$Ö•0ºöc£;« Apd_4T¸%ý“7Μ°;‚@ê &£/.$Êp‚q[¼QÒ÷nx+ŒkxËg0  áÛ.|‰‘ƒÑù8è^ øDA¿’oÙê‘Ê(»¬5âXdŒnú¤¬+WW,ÜÐ5çÓrW»¹°Íçx•…mŒÐ¦°õ~Δ«Ò[WÒvÕSÁ®sÂ[êÜ$›¹Kžˆ{9ìÆ¥ŒžzAÌaÁ±ÀÙÃW[g9™újÁqš·É®×“8:Œ†ÎÒ":ãššìp¼>wŸ—S×y|¿ÎâšJuŵHJº÷‹œtOñØùßF¿Fþ'™ÿ­º^ÝܨmnUk˜ÿ©ºµ±Èÿô$Ï"ÿÛwý˜üo5û§ÍÿJåùVÍŸÿë[•ÅüЇg»›ÿíôm)/ßïT +Û‹b²}] »tm<’mI&õºoj0! ¡¼Ô`eëÛAo0ì\ Än†[G'iØšÆÀi >f´¬‚ÜÚ×=Ò‰Á’)¿Uê¯Ú}ñ™Ÿ$kèÏ•™K;‘§eã²’oYuã¯VŠ*ç’ ‰‚º6ç!4PFªa–›E iè\5 ì¡ÎÃmg€W9qGK¥p’n ,¤à[çïéߺ>ÝZ½ø²Jé)TÚ ÙÅ3Nlp•ÑqßÜçÊ!Ó!†>]Oj”oàðGò.]Ý'¿>ÝO¬ãyK#¾ “窃Gš@‰ µoBˋ֪/“~w,z„?a¥Dй6blàÞž«¦øé’Éœ{˜|Û½ÄH†ï§õuÏ`|å#’‰È ¦äª“BÊ»!•Ÿ¬…ž3¨Â—;G‰×ŦJñ’Ÿß%RùìI^ò3¼D«˜=ÍK~Ž—H%ó$z¡ÇÅ$Þ‰dyqS¼Ì.mgz¡ÇÅ—ÖHÈÀbfçèàa£Jü‚¹?l:¾î…“ÄŅƼPêfì(sð î›3†žœÄ1ô€–­ÌM óúÜ$i•ÿ\y}p‹ð´ÝLwîÝêí0éŠM#š¥Hæ›H< a:ýŠM!'KnC/¡À[ FGÊj~Î=ú³$ÞñÂèT-Þ]þ¼d ºb7a ÝÑe´@¹2ë… “Þ0è<.³fpq¡îg›Æ.â}d"›õ7 ?"×]I°îJ¡Æç#éâ4œþT¬¡àF.\ƒ]€º÷A\ºàP"ç Cº³B.ÈgFä…€bP“_Òfu+éK˜$²/§ªÌ7åØ ¶åp¦–D¹ ˆÑå‡ì–œQÀ"دq>K‰6©A±½Ø²Ã¨ÛÇt\üRl¡Ž÷ÐÇsV‰Ã©dwÛï +žµS,»ÿ¬¸ÿ&• ø§º ÿÔ¶B+ShL*5|iÔÆ†C£S©Â?°]él@‘Îæ–)0Á,0Á,0ÙT4:• ¾Ž4jHcil"-¦1Á,0Á,0Á“-M£Š4jHcil" ØáË>€}†n±À-¸Å·\@‘¨!‰ $±‰$¶6áÛH Üb[«€2Bq"K|ÌÜ Û¾+(k Š"-F š”÷£/üâHgÅ7(üuÛåšÉÙ¢; è‘åŒËÒѤ17âÔ*ðŽ­â2GITPb)SÓq÷rÆÜ­À,˜ùÆ+'t+óÏÓ²¼ð0—Y繂I×dfº™¾Œ’¾0“¸’¾í’¸Ž’¾ï’¼’¾ò¢.¤$ï•äÝe1÷JZeŠaK½û³ë©1ÉKèð×& ¼Jcà%À­b—'‡L-¬ï±šUK†;_¨[¦Â :_y \uiI[ß˶m‘Pºó½o¬h¬ÁO9†™•@]gãVºÆQ Z´Ri/¥TŠÀfHà1óx$#%º7ݾ ˹Ƞí™ÛÚѤD„ñ®iûr¹âøbunŽO¡jæ’ëêwÂ0‚Ê0/ÏÜqX€@­¬©;tæt›³€ÈÎsÖcÕÇIÙâ·m7&ØŽT5ùwe:ªhwB¿˜PÓsÎK¬fU/ÊA9àbœö3ê¾gSÜÀ” …«MílY%¨!êB¹îŠr‡Ü®pÄ6©qf7S­É—ƒ;9ßoR¬ÜKÒpº…£Š9×Fé7Žr"·Z2ßhjÌ £ì.4²ÑXQ®h š>-Ùç¹K^ù3*o™ÙPþ,U¸! ¿J^„QE«ø»„Q¡YÄ‚ûþ[ §²Cx¾JLÔ¬Qõì8BØÖôþ3F™)Ý>4ÿ“ÿ}À›S¾Òu véúêºLŠöGh]cÆëp&Tª¶ý½Ï 66d0t s+ß9=Üt¹1à ƒ5·»v¤ —^ëgkLˆá',×´YŸmëÝ"¨žz´dC—Dõ'Í•hÉMóÎã…d¹Y¸J˜ ç³Í©}R9"¦¤iŸ†£u¨ÃCºGÎB›ˆNhé…îpr:s¦ŒC«m\Uöx7‚¨¿`³e*õ õsæøô¨¿d¨ŸM'7êϲ¥Œ´[Ã`JœÎ·½Çñ‘n…#Íbµë¥6˜:§þ½§¨ßçKÌàÉcÊö¡Ñ¨ñ;*=£Íç¤Zez– izO-°/ÕÀ~~hf  ŠÆhƦ>QoîƒOù㎠Ñ,Ÿ;3-6í_ µÉ$¢Aóf€Õá‚"ø –}ÒÙésvïÛhqž¦a-É™v-î¡mÿqЯý,ºsi ¼WJÞ§ÎήfÛ$-:©t©Ð‰q((KØìbS'Î#-¿22lHN­f0›zb•¨ÛFP™(;9øˆ«H¥±Z†Ù]¯sɳ1eð˜ÒÚ* Õ†c+¾à”_|Énü¾'ÐR®”ïl.£'ŒKGî%©Í_TõΩIY¶;ÏÊÁ9Ž%ÒƒÓˮǫ^ Ö„7€’³„ÙÏÛExèð˰³× k‘]DÂhÖý%@ቲͻ‹‹Læƒý¨2Q«PÇ)®ÓǦ1ËØð6×L›èà´T#p÷œÆ=§‘œFjpõÄL7¾:¼/ µÑÔ»Ë^iëÜØÚ»KD\—ME{¸’´õ¹³[EíÂ܈ ]dOtqC…°•fÖ÷á°šD™˜!Ïr¸L½¢âlLÑsyçÐQpjpZÏëÆU=aFLì ¸Áu'MsÙ¼Wáú’CÙš6õ(Û«ãýÊ¿… %V Éû’÷kL)FË¿&Øìƒƒ¬œïtvñ"æ³E7ZpK¬ó¸iŽ08®õ|‚È&¾È|É>Ðîµ_*'ZƒÇÒkŠ’òIf©×Té6QwdõÏçd(«£³ŽBöÇÜÂÈš.¿èãNŒ§™uV3ÒÚå[.;N’‰K"-z|Ìp±´©¼/ý¹Äi3ÃsÌp.»æŒÏû³öùžJìé€ê…i\±*Kôç’Ç{ ¨ïJÙ˜>ðˆÝô»ãÉ•–9às’|êÕÆ¿DýZåö-uðZŒ˜MDÒµ‰!­5Oò»äf½.]Ðèç/º$ö@†í‘Ó‹ß‚ù.äî£#F=\%ýUßdÄ]^µp?”¹¨‡:oµçF%m “M…åJ “ñèL³š&oƽ‹´þÛR©£öÛáà¶óìúˆ.ŠÆ7è(õf±žÅˆ©-‡Þ:\¦@¶Ê’»+¶4oo`—0¶sèª Ä>.Õ—~¤ŸçKðh^ѹ dªÏ?0V½«O&#™lX5äæsØEX±á'Ç Ð¢cÇž™rèU²×¿%½IwOØ© 6#ˆk@Œ/·Y§/ïê:Šâ}9Õç©ÉÂìN…˜Î"ÕxñeOúj²[Ü]Ó!ë¬ÿ•í¿_¶Bgê,#ª†ñÚ‰7b !×YRêÒíedΗýÛ¾bKšËQY¥J~>ÿ\ùÜû*®|ìäèaܤí’$1-UzØ´ºA؈I#m˜dsL¼M<ö)È©'§­e¿$É$ìšV« Âö”}aw9›Ì-ïÄvÊkžévP¬ŪھlX‘e¤ãåµ$p—ÀG¬[ŒqÝødÈAi¡Áè<$ûtvA£ò‰Æ}4¹Aà±î>]¢lU¥©;‘–7’jT¥½€šG˜w—cçÝ^¥c¯Gî­¬¾±Àvº©@ôáÿ¡[Ms¢NÉ^e“æAëü˜Òr4p!i7è[øÑlå]œx󎋟¼=h¿+‹Óã# áP^òØ)Y‹eymíÈòé\´‰×rZ[øsãÍÉo*i/ý¤Q`˜Ñ²Å9ÍOhQƒÕÅ>Ø]èú4ƒ†4Úãä­hEÓ¹òÌ‚+t&Bc;Ï!IxP`Ï(+‘“QM”­iú—ƒ­-ó¡N³¸¶_?:Ý[3ßè$Šî7.ô}²4Šy5ê×y1´6CŸv®A wûÝÛÉ­S”'.E%õ£š€²Kîè"ÛU*GÅu“ƒyo}àì¾…Jƒ ÏÏ)e!¤®„âŒg¾ö§W¼É#9k"É™3IΜJrŽ\’s'“¼O6ɼt’¡䌒Éì‚S@¥¤‰L™4ÙŽjtÒbƒdÑ<1 ú0’fŒÿU£#qÝw¾Ø}#*ë^ßùÊ¢ÿ–äR)d:½¥HYª‚Ôêj•…jøä¬Ù:÷ÒìîË 0ýY'q\í w§7\-„šf!j1·Úˆý‘ªh t‹ê&6]ªXüЍ1¹dáHþC7Yž—´(Rˆ ÅŒƒ[mp3 ®]¶ú°ƒ»1Çà²a÷Àƒ«‰Î3¸¹ãY,U­Ï˜­8c¦ç­õ ýT¼7ÞüÌ8&±· SƒcY1+ ãÄ A§#ï~ {‹(†.õ¤Oø’µÚÈC¶åÍïNìŽJvÁ§)Œd@´É~>•:ïWJûømÖÍfÓ÷4Žmĸ2ÛNɇñÊ¿™¿Œ‚ÖÜXOfœáµuÑL¨Ux`xše™t–À¦XZÖañÚº)k+Ì´u™¡æ½ä°ß hàVºðífºùvÛ‘¶oÆÚ¸µiudV'·:‘^0À×›×йç‰%ï°¢‡ÃUœ3O\«j1<\ÁyÕòÅ™¦Duõ°‚Nl¼;åêáÊ¡ÊèSIÏ7º[/Pç®ë¹ËÇ(RÐä¼ô’²ÂÓÖÃé;>_\¥£V7‘¢Ôíö:ëª*{x¦œ‡N2}>ìôÿZE´ÎË.ž,Gľɤ·1çg=ÞH&2Ybi§¡ÇéÕÃ2§Û¤ÁnÉÁ( ½9ˆLiÕ""”ê;§%9a¤-ôSbvÿœk#ñïˆ[g@ôÙ1¬›ÏΟ•9.Ñ%¨Åø+ænä¨ó碹uÅÜíf{?¯›éìѱŽz˜KÅ0•à¡K©ƒP†¢Ñ{ü’›¶qæ¡àcŸÊ4#·²žkå¾-Å÷–¥ˆoëÇZò*ùAXo5·eŒ*Äõšß”{¬!ç4"nG'6Ø–œ­~³xîþÔ"­¬lÄ,iY×fº))žð> oæšèrW•HŒë„§8îv¤’TžIääöÄye%$¬hÉÅ<ók¦ºóð?°þge£²¾±QÙªTÿo«¶Àÿ|šgÿù]?þç#€æÏÿ­Íçëþüߨm.æÿS<<ÛüÏ}P@©YØ`5Ùmó^u2Å—Ýܶ@ƒ³—e¶âûH5?r¡nüvna{°›ÝÞf½2üìÜô:}ñªÓëuo:ý²ømðßxÕ½êÐþÂ&tØAÕínvõ…’ä`”®å¶èp}©®WÖƒR$ði>ÄU»My½qpU“mâ_›Ç'GÍFó 6#°gòvðÍ#c®æc­ MK¦5ä•u¦ZÕDŠtö›Gje|UÁÅ Ôêúª¬ä\¥ÆxMWèè’”‚¯pþlýŠÅoù«… +<´˜†}öáàÐ)\h1 Ú­uvTh1 Ú¯`vLh1 Ú­bDèâ`Ðâáð  ú,ÄF™:ú¾ØÏÅaŸwâ¸Ïù„åfá¬ýB+­u;Xj”3…½šºZë „„?ü"QÈt/$ž¹]ò`óìž°Ú€¨}?0í{áhÏ ¡­¦J#o®5 ̵FÎ\k,æÚ·0×*Ý=˜2ÁBÓðÒ=¨ôÂ(éÀ£ß} .º˜^`•FEŒna¢OEA÷¡Ï•Û¦8z€zîËÀTìó๞,S`ÏXçþë9ˆçù0çbÒy1Oƒœ‹â8çmãØ—§Œ¾c_¡»ÈÕîÁ¯púW–MƒFWxèÁÑl},ëv@ÑSÁy1gkŽUææ¶ØÓœUêhaXãµµ3T!aórg S”]ŒŽŒæs±æ‡5Ž}Œ¶Ö§¡ï¶€š¨ˆyù*ýþþïjåÿ•AC`ù#ú‹E0Ê:·;¨ênØ…ö`Œ5ïa¤ø{þv”Åï0$§Ëõ²Œ?å—FrM|â¬FöÁS0tR„—rОWÆ/ÝOnIÇýÎÁ˜Ø¶ÏÄ+h›åÑÄåøˆ.`‹wrÇA»ŒÊÖ&uôz2¤Fo@KýçñP]îºìLÔU›è"þ[§Fà,‹uÂuÅVb—X±£ë{ñõÚ¦>Âíè‚È«g™¨î§,™Ç Ð'q[   w—[Àì?®‚‡;ªhW8Æåu"¨oŠ’ ϯaÈÙúšÌ‰ÖNšðD6p–È0¢&wjxˆ:Ð)¹ÆÚ\ÛÁšI´`¡‹Ø¹½XÈÊ¡;¤eåñ…•³°r¾Š•ãLÞ…©óè¦NIÞü¼´¤ŒžÏê¶³^í"ɿ𑪮1 ›œ»N8 •EPŸ³ééì†ZÝ'I“¢¥—éUû…¾¥NɆõ ÅÙp•‡ >s³­(©K\éÃEoIlë‹¿ÐyuËÜßs%׺çÅ·œìIºËíÜ–)¬Ü7ÉXºZƒôe1”Šþ ÈM7+ub7¿ž ՃЗ¤q:¬²÷ùŒ¨!Ð3%ŠE°år6Tw,¯'ã ÁR.‹_µ÷N_“«Èäc‰ a]Ä÷Ýú¹_ê>/²^Óö8Óm†×o`¥`ü¶ OF‘ y€o»„ÉSòg£‚.0J(aÇ{È ï–"\ÛÎ-ÛÖÂàFéˆqvù¡ßý&uÓ¤4:èÎÙ^=^‡”õ¢6ò2•ZˆØ ^CG:?øä¿ ' C“Ù¦8B†Å§(á/yÓ­ñ®yºG’PCIØïunôjM°êò•WcCŒÇÙí!ÀUÁN¸$¾3dx„Uãi4z Cd\BÒN*ÓT¦‹…½Q–Ò¢¤înm,É3ó'Ì[HËo,·¬ 5seî’wræÎS7s§¼’m9é3ò‰;W;Q¥1¸ Û8ígó>i?ë$Ä:'!2á?³&õœ1§“®Ó"ãb ßb:A§E(šªQ·]þÇŽZÄá8Ør»ãm°ÆÄ!9¾a­Ä¦©»tâµ¼ÈCrh%Ùh=ÀáOY¯G|µˆàÞÅÚv&áqsãôL/ì^¡Ç'†:4ý Á¶rÔðÅygµPFti‡“¿Ýà™ée1¡ä8-©»Nà-×…qX®¨æº°vg@ï,ÍÕ‰±cuÇéKÌ©Pÿ,BÜSiJr©nº-pO:fœxFî¶ÅwUCÅ?;©àÆš¡B‡>tJ[µÝqÙ æC[×Úî…Y2ÿ®)Z¹TQn¿ÙªýÑjÓÉY³,?hŸ¨vègš)C,ˆDœ?$¤%?OS±*Ú´9°q;ªPMó(Z•l>Üpú lZ}…?·ò Y¼€ÂÏËÂnéO9-µ™E~´»qEzÑÉÓr[·’§ÍIw® º…RÞþq°ã …ß+í®!–ÓÒÂÙs)ÑØN'×O‡›æ§T£‚§£ªÊ¼û>ÒºY3çþí’æM›—9ö»L¼ëÁýË=狀½É0ÓÇQ^],òiˆgë&N.ŒÆ+3òmFðÿv±ƒ¿Ä°e»Œ²óFZšÚweEáIŒ'Ósëã=i;Ù4ôÇÝ^H}–„Áöô%~ÒŒÁ‹„Áƒ„Á‹|Á‰|ÁLö"_°éò?#_põ¡w‘/8Á˜Í8cfϼU¼7÷Îüp ƒ![ð=SïΙ&øéû‰-DŒq€Jñuà°Ì¢²[rI­­{‰O…4»ró'U£Ê½%ýöwØÚÝ7y3_U›®-UucÞª/£²Cܨ–t†¶JV¢w#©¢§Ð(˜~´ŠÙõ ÁžžYaìñ öV6 } ñÂÂvÑ“úY¦ƒ*G™$~_|zr°ðéÙûWoå¯ÉLü¿&ÿÖÃÄ×ü"T›Ü™ÓÛ!ʸMÃ/ 5n QÇ‹àÛRÐãù ã6Œí£›¨±û>RZóqëõøÏ^ïcVkÀêé8Õ8®Ç0–üú”ãÔŸ F,wñõVÙ‘¶I$ð¤SHÒSƒº…Œë¹aÝö÷™Ý½O`¶ Øl›È á´jadv^`6?3†gï›pmºÕýÈ¡ÿܾo0À»Çg Å; £S›u¢ x<ûRZwYZÅÍ^âΔ.–ªPŒ.?d·¥ í«ÖIqaòAB'‘ t°ÏkåK¾Ñ-4_(FõúKQ‘wæ•&ÞñGj+×ã²ûÏŠûOP`RÙ€ª›ðOm+¤±2…ƤRÃבF il84:•*ü› Ñ©A‘Îéln™,0Á,0Á“ME£S©àëH£†46Æ&ÒØb,0Á,0Á,0ÙÒ4ªH£†46Æ&Ò€}ìLR,p‹n±À-¸åŠD Il ‰M$±µá°ßFXà ÜZ”µ„êJZ@/ ÑðZÖ®&ÒÇ F€Íø~q¤³â¯˜Vö­ ÂÍ(f¾; è‘ü£&G:š4&&‡W3ÆY…¿ðvà*ªzBT%·˜Âv—wB#våýc¡ç ‡~ÓÚ+ÛÁÑ@[;þ¹ìGÏ:Û”Å!üÿþ&¾† Çë·3†§Æ¨î¢U0†!¡òûœzŠ—îµËb÷´Q?ÂïêÐö¨µàP.óú­Ú¥$mb'×ÊpG©X“CCʲ9“º/Q½®€®-ï— VE×q~HY™7%..ˆ£›ÒM‰‹ éì ··9j::ÎöQÍ›ÛÝâ¡<,¿Nº—)>XÙa'=Â`PÇi{Ì1ä´mÉøþú‰à ?vý’M1m]fk¨u¦v[‚-, a,™bÔ‰‰"‰«–90èõ[ ›1LàÀ8ò¿«ð•ÖS·ÀJãq¨›íæ… õŸª‡çj21‰´ {˜sTnœ:××Ù¥e¯(¼ÑLI&¶£1=$›Åîû†Ž£ns¯­]S>oÅáJŒ©rÜñK ñ >BúÖ…¼âñÑb%Ò·¹©}é¡ßÜMxöñV+ïh…:„#¤±ÚYƒ!Pc†‚uŒàtßæ?³ÂéýëcH‡§]Ç«‡¶(žÀ—¼>À÷ǸûÃÞâô&Ù)ÃîÅ¢ã-–)xu~]—Óò}ZäÄN÷TX‰ÕŒ«!5ñ÷c‡'«*RÌ‹¨ßÝÁ>²'p¼ÕÔ:Ä?Ï}¯<þ ¶£bOu9räíÃ… ±zh1@v€¡Aþ«¾„X<ã7¨õ~K^ç9ã<·öÞ~‡L³áG‰¬¾uàµBþYµ2¨îüîŠâ¼†°w!|ûÉ…u~`!EAŒ=ÇՋۈìN˜ß´\æ*öâ ¬Xb÷—¾È'¢Åþ0ˆ.Ä@!—KÍkµ©g8jŽî¢…IÁ:ÙZ’Ê:dîï>™nq;½aÖ¹úÂ[ÝkŒˆ‰®©é÷O®·‡Úß6Ö}­”ôOÃRû`îéÅóÈãÿ^+þÿ…ÿÿ‰ž…ÿÿ»~,ÿÿ#Íþió¿¶Q«þÿjµ²˜ÿOñðl÷üÿœ»ðÿÿÃýÿíý¯ìÿŸÕû_[xÿÞÿ…÷áý_xÿÞÿ…÷áýç×Þÿ¿¹÷¿¸óÿæùçR«¿µC¾ë£]¼ð”GŸ âìÝP¥q:ã‡+•û‡4A4kðþ~¡xÄÂvãÿ>¦ðƒôI9Å%TUllˆàÅÖ»4[ÏöŽO’í&1ÎäA¥V’Ü(Kååc¹Z%xã¡Â(€uGõ½Ö[u ž §Ðårê-VÑxCÈ\t?÷ŽË*ØöPïNTÐEš-2c÷¬}zü ÊXÄd|õ˜Œöþ×ÉØÕ ô™˜|ÿÍ$ =†ýÝá â¨«ií Ÿ›&,Á˜î<ÏÊÎá™ps÷X5PjuJæýù—U Šè"Ð8®¬rù¤’Žiß#]Øa]ÈúŽLSVdknÉ NJW©5‹Q­ a¨HNí ëõu u/3›ÛŒ¸íëL׆ŒÌùµxuèï~GS›ØaÏwÇŽÀoÄZî͘1‚´c¾v y» ~ÔÂ’ˆAŒýI¼'‘ð‹x?j•ù¨é~ÈȌ⠿f½ : ?ÙHvdŽ`&1O<“×õ­"M\tsjP“HÄ5mÆX±•dÅüNV4F:EÏmlxQNÜÏÊO±H§`ì}`•\=\ ƒ9PWA+½ÇÓ;ÆÄ8Êœž:Œ©ãÆþ­Ò¿µàë*}]¥¯«á×5úºF_×jùW˜¹*(Ô|Xþ*ë$H„ ^bU ‡žKùré|qŒÑ òvaX¯€Í½Sb602š”Ú†Æ1Ûθ¹Ëˆ‹½/æ(L¦r¨X'ÆŠÛ_=©÷|öªJRú™Õëf˜†`½S9ͪ‰óZÅæ¯ÂÏ?äz)Ë©BtëËÓa•ZvX£îiØ Jb­i&Bde´ág_Ëô!öõNœ¸_Á³ÒïÌN ´ãÑK¹Qº=ÏsbùQJ)|¾î”‹BЉX¸ d⽃ù™3tŸ €ðP |ùq„a ¡'´ã q-?Œ••7%®P6)]„†¯9ႉ =~ #®î¬VBŽÚ5­®VЂ‡¶Y¶\ô á,î.#™Ãâ‹¦Š­!({D4FÎ~ÎhY5Lá•täq:-•[’«{×£0ÕØÊcuð¾ Sæ˜ä!kɨD:ÏI0Ío JÆáa8Kæ;÷åä¸y±Žþ±!„£F¹=5 ÕH=œ¯X3Ĭ’ÎäÏ"d‚eiMO³ #tXLñœu$MkE {u¨µ)ª%ÖiEDчñøZ†Ø“L1¶…‚l…gëÚ|ÇÙ~3ìWRwÜ;Ê–Ÿùcme3ò#ne!w¬S©‰ÔÜ}ñÖYeÙ¦Õj­wZt9T½Y‹,ªxPðNF™G:À2ƒ'ŽXNË  =+‡…åEiBöU9ðrÌJ_êBÆáŽcz…{Z_c®%œ©ˆ&o,Jþ°j¦ó‹¬300‚MöaM 멾ʧi‘ˆùQ&Ïd±Ü6Â~ 7=Õ²gºW«&#û‰~‰6jn‘IL³#à+t²Ÿ;NúÊFâ@ýêO•ò×ñ^GÚ¦ðÏò°Â±ÌS•6É®3¿[×E~¶ìâØ]¶m wkÈÝZYî)ƒm)Ï4Lf³j«tèíáŽÀ?ÕH‡+Ö1S-ÒSÚ¨­ÑŒ|KÇT@@ð4±¾)¼#ö¾5SË9©*2T±LÊ æ½4 ”lŸf“Š˜%¯ŸXa‡ÆÉ,4Nlä4о md›ýXz¤R)$<ÊL Ì^ö±Ó;'#¡ýØ$Vóo옪`ºçGè˜)‰gGÙõ0¥.þÒ`Sú# üÿÏû](0E÷ªã{¥¯ÌdÍæè•àâ’aFs:3,~TãüÆp9F–øðþÆ£™Ã¼LL6SÛŒüYMü\}‹Ä‹“ˆð5,ì¡HÚ1¼6 ÃkÃðÚÌ g[@m‚ž”Íl¸Ä„8|%¾J Íþéü'ëŽö ”%›#òz™<ë‹Yx"¡ûC?¸ˆÔä‘Xj’Ūj­A]9^e% °Ô:)ziÅãI–db¥ºî°µq-¡¨se-ÜÌ?©ê¬ÝGu2û¬ÿiËøð‹9´eí©´¥Ë ‹©’‡ ód òax\›™Çž‚TŒ+™€³æÎœ-ĸ™UâU³Þºëu.³¤VÚ,¦•6Ši¥” ‚7}……zg#W+mÎtðî|=¢˜m›TÙz˜}Re+fêF:àå³CöN“þ•:=±6OÞÉ?;eÜp|J‰6²ý„šcâTu‚ÁÉN¤ÏÓTv¦=« ïø?Ú«'ïÑÉ£¥DžžÝ÷$/~ Wp#žÿ±š}9É«üàȈ`¡Nã ´M¡ÞÀŒ{ÿôÍÜÿߨXÜÿ}’gqÿÿ»~ìûÿ3û§âÿWŸWÂûÿµÍÅüЇg»ÿ?/’Ò+¥‚ï* ñªÞ®7œk;ÄÙ)æB TK2uPäæÄc" À—¸þáNùºãÈ¹ïØƒ1Fék’`ˆã=¦!CøsyùL}‚%(ª¸#n²~6ìô\ ‰B0Ž%ÄSQ†Hd…mÅ4BÂÜÖƒ¸ìDÞe—Ýën6’—,yK±—Ñ žæMJ˾íô»dŸ -y…Ϩ0pÅ?K•m„eƒþŸ“äÂo¡×Ì¢€4 " †WÙÐ þÇ¢à„›©/å¨,ºkÙZÙ»µ‰FvŠË©î$Â¼Р».B@ öC³DnYtœ¶êè]3©D.G°éH ØT¦€ ä! ØdòÀ°ÜSB¸UD¶5T@ËŰ€l2E0v%1̈"ˆtЇ7yÌdð_!¬ R´±|4X;E”ÔÁâ±¢¡b(ŽÖÌP „•ð•o>Ë/§ÞyžåòÑ›ƒfùÆ*ŽZoΚe™¶1Ǥ¡óÜ×»`'Áÿg¼¹«S8«¥ðz-SË ðçÇoõÅ\uávçôí7rávöK°2 ¦N-w`í˜ûîû%'a¦•BÓ{éŒrj›¯­=†W’²oÿoÝ¢^ÌeÓE]Ô-™U$‡ÏÃ×ém QT·RüSƒ{¿»¾§r×·eßõE.&¯ûò;¯wÍeoË·Cš†RaÓñ¸[…“ØÕ¾ËHp.`k“½~uÄߔ쇟†]´Øá¥õ½Sþ§av7ÌF0 ¥…Ý«É%E˜Yt s•ç;.“~wÌîVCÅ2µh=„…G ¨ËI©²;#þ±S>ë¯ÊOñ—²¡òé^°Ë:—x»€¶ŽJ ÁÓáTÖØ¿ß®` t©lG«-¨6® 3Ýñ¹: êÌõ8€zÅ\q9;œKD­ÕHÔà‘ñæÅ}!G(»yXÓìA’ ¤K¸}vèïCówXJt¬O¬øˆ]ƒˆnËq®èjñM·âèd~Âp¾-ƒPùDÁñG±ìžO“ݰ³¸rÁl?G³?NÓôW'RÃÇJ ´Òý5çL;¤¡šV4xp»ZvÕó$rGh+¬g¨Í…Z.¨—ïȳi\ÀÞ&9‘âB-yYiŸÚ>m:Êç-vŸWbîóSRÅ {l®øSÄóœ)Ás"œOšFÞ }zý°1ušFþÈñ{žÞßïiùÿ²‹Î_ߊÿ¯ö|áÿ{šgáÿû®íÿ{´Ù?Ýÿ·Éÿ½µðÿ=ÉóÝñÿííÔ_Ãâõ±Óæî™)Í£7ðÏ«&|Kß!½Å•ííÂóWÜó§yšs–…θ½Í®ºqÖûòÂ{ã„ßHU„ûÖað-$q:Ää7±×wr_Ñûz²Ú¹‘ ¬Æ9ÀGþôÙG:·žwð¹»<öÆB£Éºt®ÐãŒ.N¡#]i£3ô-HUÜéBÓYnmÙò;ä½ø¼xðù·¾Û&~Š((†"õ¡çOð‘ê2|ïJaÜ]9żIž"|À ì2ê^cëÄú üêeE‘{¹Î_½T­&Ý"frLæú$=±Ò²Ê޼z#å°·åãéH÷ÚU° á8@ÕüDhk‹7ÄW§{ÍÚ=kï½mÄ]i¬©ÎÆY_¡”Y”csºS„ÁS¼lÀ_$ô˜N¶¹¼l_`X~ùèn¶½ý30Ú̓Wg §6 ÿ½Î12þF®·o/çðn†¨—¤ñ’Ž7 Oƒeml©Ãz§²hTƒGÏl ÐÁÖöѹJ®»ˆ“Ž¿<Ñ_ZÛ€°Øi™œwô¾ì½M‘z[Ø¥7Åxô`Ä7$T*þuPÌy¸ú`%Ç]Ö@;ßfªð P ±ã’>À)pçßÛ¢N¿ŸcG‘³ùüpËð˜>¿ÐÉgŠO/ yÚk¨Dˆ¢yd…ïä&0bãmÁnó”6‰M}~ýv7õ7:+…íƒÊk/£~Ý·ÕÕ­ö„Q¥eê/÷1PUv`µ"Fãì´•˜ôÇÝ^’òöBÐÃYJjá& O°öZ_5—“éòâ0?WZÔZT>[©WÁ€ÐX;Ø[Ã}kÞ&.yB?<36Öãt@ !Ø‹’©b5҈׹RL±4Igj‘íÌ9öeˆþ~íËÔtOÎ 3aó‰Æbó›‹°EsŒE¬™Ÿ˜WmÚ}B\¶¾Ÿû„®ÿ¯÷íøÿçÿOó,üßõcûÿgöO›ÿÕJíy0ÿþ¿'zx¶ûþ¿#i\¶Êxùãh·ñ÷îý ü{‡hsu½²þ¯{øörŽÎ¯^ýþ.½z‰éOÏø÷fqé©]êȺ^Ç9ÍÅ.ÎÙÛÿH·ùÊâº;iÃÛ"<Ù­ã€Áxvo»Œ"ﻜÆñA¯ ñ92°’sNelBª|χ7T8N”Ì;'ø¼e¥1ÐYÔ]¡ì)È.}<GèJÇ  ¤‡d€<ùg|†½h÷bsÀ¦†·¿2ê–ãK4—=¼U½éã=ÀÎH]wÐY†{?Îí0¸ÃjAÝÊ+54ØÚ[ûav5¹äš*«}ëN!ƒ“voq¦dŠ L?Ù¹ü¢ŠzNTâ5¾÷#ìY#Çøî,€dH_!#XÃßÒ‹#W}¤ÛØÖÏð$ºÖûÂ`ÍGoxS„#@)òæ|GÜäšìÒ[kkkåVè[ÝVb›%<§Ûì´Œ½ƒ_[®ÏLû§²ÙÜ‚….QÖZ3¦TÎͨÌÇʺިOˆ³GœBž Þy»yM#ßDAˆ†Ùu6Ìð¥ S¯—ñÔ\¶+ÂÆi—íø®]̵¤­×’ö´æ¸lï*Ý(Ì(Œö¾Ž&=ÿ¡Ã 2=—”Ìð M)cÅ/âO"ö§\V Ë´ÿFÈòœä5–%·¿œ4ºq0o|/í rTÔM;ŠùiI ³ûÞéý5ý¤ôçRïõê\J´Éèû‰VYfã®EÙm’ý¾i\@…æˆs7”µ[°¦ñ,¦ Ä®÷ÚôΫfâ ¿Ž”Mëç °ÙP:o;W”¸%׳÷|{k-½÷õ¾:M¼·ûu–ŒÈŽD‚%0êŽÆ2ô"!R#É6è ™V†«¾¾Õàu•Ä&¨ÂÍòoB[\' ïA®$žHáºù»ùÖ¼KßâgUe?ó•›3ž¶ð1Zp{Z_éùôM {mI&; 7wž•ճƌѧÛÁŽöÂä¾1±¨l陈.z×&„ɳøÓeÇ‚fÓÐ}ù_ UÛ®Ptm¿K°¹ÝN±f1®ã`ªÄºü´Õ'ž€nZ²ë‹Ûa"ÈEʘâ‚u6`ª€e) /|›Ñ¶ Éü䄟½™XÁÆ&e®^šîR€¯b9M™¬y·`Ö[”Ì‚ÑtÓX‡í V^Sž';ÜÁ#é:7x©fÌéxjÙWBÆŸô¯²áuoð)À%h ‡i"Sô[[ÿéò\MF‹áÄÈÝ]<ûÆØàçT n¶*[)S[öÖ¸!ÄØÔÐöÔ |#å¿våâ}Û¼²GTI ÊóP“ñ*]Ù_iÔWÚ++ør<ÀÞçî˜îåt蘯óqÐÅ‚ën¿;æéìaUøÁÎJ<ŠÙ•Â3-Eˆy\Þ_öyO3 ü¥¨Q>o'FGö ò9I#üyƒÙ¼Å–”Ä¡™$ Öëqpz9Bhá·-qhËñ* ,7RtBqøyÝcd¤K ¿­S˜#™cr-d>33ø\6ñ§u[[`K×ÏàÊÏ9ŒC¡n3Ÿø cùtútÆ÷‘ã¸ð¦Î¬œêóHŒ%½·l•쮤ԶS­/×ÜŒƒD3r›a”"RñØŸ«!za´>tl óDzUÄ,•gíó=GßÚ!ÕRõäi»üñxëÒÆå7jËȆ„{´ ž¥ÕJ¸# —²ÊØÅe Êœ NSèÔ9ÃãÄ^U¿™øÏõ­Eüד<‹øÏïú±â?iöOÅy¾õ|#ˆÿ¬Tóÿ)i3¸ñŸ»U:´¢?wËb¯,Îêç¿Ò¿'œj† ÐÚZåÛbõ»a·‡Q 1×Cw¹ØðÈM&} V?Ø‹º+Q_ú ÿê[œæÁ–Åqœg+Ý­Ê0ÆQƒƒªÑºë´ï§8D:P`¦]íù¦¤ ;]Ú‡2ãþÜ Ø¿rÆ̧p" kójüå¥è—H×eè¿À ó­ø·.Àù+M’3£LðÙxßýs &fFѧ¹Ý' )”#ëbþÈðO7öOÅÚŸuÍp9ñ* ‚ƒ„*ãFØØ‹$f2NZ‚¥‚X^¨0óè(ã‹ ÄÁiIÙPäCÖˆ¸×%D¡°Ffe•¿ؾ²ÂÎÐKä<Ì®{™‚<‘,Ðë\ÈàW¼ë§a£O¬F'Úyâ%}©F[í|Œæ¿§æÅŒCéOч2¨6>¦þHäó*Óh3\^åŽé×ȯ¦{¬ÂtU0Ö,1«·Ý~éTU!C Œ¹F s„²ä„¨ï"ìõK ÛÕy0öîѲÕJжÁõõêÜí³ÔæžÕÔ°¸L<|•âGû«•Ä5o®T ›Á›·:0çG®“I*bXv8*’©i˜:+×rDç΃‰Ö£vã$¯”€»‰ïG`BgÅzóLöd¦Xß©¡¾Oé«ca%-zB³~¾Ôq£p‰5£±íÛ‰‰ºð ó_•ªKbþ÷ªÔ_âàX²2ðëóõ!éKý€¡ª¯pNañüåCÇ$ ÛÖõ¼ây׫bÜ™ü ØøÚ³æUýý|7Áÿà{;t˜^¥õË030æ–cþx©ùÈyÌ·6ÞÇRe»‹ `˜ËðUZ‘/¢Nؾ]²<É[ hnÖù[ÐDh‚„$™I‰”&„W·ûiBeþžQ—LA(@»ÉQê'vb²5•:›2Œ·ØÓ¼¼ý;£D‡û‰ûyÃXõ†QËÃÄ‘Ö)ÃX¹Ï0rÈ:Ìc¹Ö5}ì4èŽÉ6€2Eì;41²ÏÛ»^¦&ö-´z‹jêÃo› øÄ/¢¿´m´Ö-}®Jla‰c 5²%!@JDÿM*ú¿%C@•°¾Õ¥4‰‹L•þóHà7Wæ[]Ê!ñ±j‘©ù$°„&SÓÿ…$>Ö4™ ,¡ÉlÐq7¨P‚–Ðd6sH|Üt¯A\ñõq•õcoã´“v@Þ»Hƒß¢üsò{µË0ù« ]â *8e¥@wÝâ$·‘7Œˆþc×ó¥D€xìœêA–êíý2ÿ8øFÀ÷æ Yž‚¿öÐÄÇsGG« #=v«³F3öÖbù‘Úò*ó <~‘תŒH¸ÂndË)ã5¯¼ðÒïw?t)~ט$^È {«Iî Ý«MÙDþjŒ‚%\¾DËnì©'¥a×®òÀkòÎ×úSˆäv¸Ž7¨tÇ 7Ø^r¯‡ƒ[>É®Ç~@Bsj…Ѧç0ÖGð.Œ´d@kµép¡R6½ÊM¾"ßY©è0bÚ¤{ÊLÉiu,®IL€ƒ@ü÷eéÕ-<‘°YÁÝâ?¤TTe.W˜|ÊÊ<{žh¬TÂ2ÖWQ JHŒ°È{bB8Ây½qhc–‡r„ØŸ¼ë®ò{(RSd"è`BŒ’9¥j 7…­ù¢÷üäPF9ŠådfϤœBÙ´ìã<åÔŠ)'#‰ê>É´ÑI‰á¨§@ò¦ÊžéÇSô“/'æȇQQÇsª¨pЍ(¹ýš¢¢ŽÕüÔÝ2«Vµèª%Ò —ð”¬&6åWù êÕYÇDr¹²Ô“îþLËUqåd:W\9ýZ@9U£Ê©HÂ/´Ï<†Í‰ÿ^}+ñ_‹ø¯'zñ_ßõcÅ=Ò쟊ÿW­lmùóþZÌÿ§xx¶{ñ_íÝ¢ñ_Gô#½ê.âìçaâØåÿ„0±ö®&æ ¯^|Ym-ÂÄþyabrdabæY„‰-ÂÄìf,ÂÄab‹01§ß‹0±›eQGd¥L†çR°¶X¬ ûZ—¶ HãÔ)Hàq÷KD”Z­šªú7 Ï]@T£àÕ¼ŽIz¨æÉ­Â &0 ý^éx¥µ´ÜÚ)ËØƒÖŽ#önÛ/zƒË¿FÝÿfkîa'˜L}¾  ºSsZüg’ÁØâff4ûðê…Ä9¥MM!‡ÈÈåˆÝʱ^ŪL“d²MfŒàÄed­fd†ÅhPôË@dá‹‘z ;*Üq ³EÛ V½‡€àÐÞƒ± ù›ÊÙ¸%üÚ1h‹PÂE(á"”pJ¸%üfC Ÿ0Áð¯ç{íßrN71³0pâ!ç»öë÷òçoxÞùúÍÉE>·Ê`¡åH¶v ”Ém}—›¤¸p#ycËøóø˜BwÚ»ʸ»ƒ)vrÓˆ·1Õ÷4°o¤?òûX=8Ù”*¤‘ë¥_Ÿñ‘ð3øM<+KÿÃ*5ZA , QÖÁth»Ëoøšã‰}%UV¿JRH¯ò.dï×µU{õ­têw©ÍöÛ2w°nË=L6ßN5ýž%H”†hJ¨ns¼A÷ÊLzEc^˜öâ·¸Ö«ÕÊ´ÆÈWN•¬:±ŠÂ¯ìP´<ÝDƒªÈ!‚¿8ñóq,Òñ4ãit9„ã‰&ô¼ KH뽃ÏÔz¯Z„›V5}jÓ§UÕ.ÎÏ[tÀ}­*ìêFŸºc„Å ÚåòfoÒW`fò—šæwHX1/˜¦æu-ÐP0VÕà¶u0¹ù@ûiÁjРyƒÆ+3Ë’œ¡Q€ýÓöKøgU¼]þ w¤«âýò9o==Ž¡eKFkÀ^Xôã$:³þn®bˆ¡ü[¼×ÈèU0He詾üHPŸM.§èNLâMSü›D¼KôÎû{ŽrÃæ¾7ÙºE :œX²ÑÜ})ºP˜° DÝ_Ü«vCøB‚æÒìXA]µê*FÀ=T¡·‡ÑXL,aŧç¢÷µ%p?PcV*ªŒiÌôóÂESWcq>ʼU–R™€Ã춃鱆 ¥¤‘1›í4‡fÊSKMÇä³)ØRñ‡éÈÕöî}ñ›|ìø_0¡¾™øßÊ"þ÷ižEüïwý˜øßÇšýSñ«Õ`þ/âŸèáÙîÆÿ‚•‚ÐÌm7¸ÎŸ´áÛ]m,‹?Vø¯Î°ÆÞe§×Ãýe£UE÷Õ]O8Ðl‚Þÿ7Å~v!ÖkeqzøjÍ>çŸ)?9Ž^Îù°–œ?Š ["0Kìq¬B0œ®ÎŽOž#Àš)²©`ŠavÙùA¿…N•Ý¿êRþ'$«ƒ‘ÙÁoeC/ãe]Š-À·U†î¡<§d _èò9ˆÂïŽÎeØO÷¿œnJçè1†¶žµ÷Uìm_7š0_ŒaåT.–æ¬/-™ÀÀ WH&èXwdêÔ‘~4”x\CgOD¾Ž™8튄rTå…7£d ÁÂyÂ?}È|6†c1ôc5Gû8Ìþ3éÂÊO2^áÉo0ƒ7×ç'÷n>3¾Ü¦]Ï£§öž3²kS±dG$ çæ^¥+m˜ÈádùhùÜ~¿3JKác'à®KI1À‹¯¢Òö(–ùw-câº7]+"ÎMlnQi>+‡6 Òá©’ è󦘲±¥Ä ãµ&«™¦?–âsT±uN8¸å–B‚S1y¥¾ãùÁ¿¨¯¯îG/Û7~§zÓË.@Ï=ë@¹¥—öÄÂßT‹zl%~_¯ë§{üo%ÝÏz³õ¶Ë?åGðßñQë?:OvŒ‚)¶Àiýí^IÔ¢Œ˜1µë#§t}¼T®dųö)ülŸ6Ž!§ëƒºøÍóñ³L¢?„½±¨¸)I’Ì^dž$èqÇyKNlùn˜³U¾Óüæ’¶ªwiM÷99YâµM×ufz?C®WXŠ#5ñ Nõ««5ÆÒdvXß…/K;YÔâAu%Q¶ä¹ßY½;Ç`ç–KX´o'·Ï,ŸÆž²˜QLÕjÎk£RV`nY;¢QÐzfõZ ¡ßXÒ–ÏÕõ4¨o«±Æ/Õ ³)'#è€nº¥ˆ@ö^[kaVÙ¤:9„ŸÇ¥H CÁMzÝ'½q‘;À$D-ùŽrÕXPTˆÎ­"¾¯g°½FØæ°¼«éõÏ=«ß! $¡ƒ%wJÝòŸK/Û¥îÒr~_n”þÄ[ž¡ó# \à{Ù $¡­n/RI¾‡9€fyÝú"ƒÿ?eÐx}‘ìˆNÒ¹¦NHg’Ùip!Õ),cX‰á†ÜQ¦ )(>¬ÃÍÐ ¯Ã·ÁŠFŒ90êâbBçøä1Ÿ2ØQ¡{4»—Yßá|ÐH¡‡ía ‘žÊsçN„O(¡ÖtÁµt»€7,Ê=ôD+JÍ‚ƒqìô¹i "ЇG¿ÿ‚z°Mt;]3ÁÝékA'¸rÈ5æhR+Õ¤2ÒsÚÓ$Ný¬– :Ó½g*. pü-_¾zôÌoKP][}ágkT‘$IB[Aµ`ÓÀ¥…æ¹ c ˜›Ò_TKYàlVŸlÄik\…Ûj0h­šj•K3@÷ڦЈ0 ¡ I2¬žØ¨SvOj‚#ƒòÄÊᦫ֡Ū5r^ËÕÛ¥xv†ƒáuÙÃÉÝQçO("XÈ|3ÁpüªìD[còa0é]¡f ‰Uzá«{f •_<*@„Ö¬.°Ä¿¯u¾ÇÛÂTƒjVà_ö¦cï‹øo6„oþ"ô›¥îêñ¾mÖðïÅy¿y}˜n[ðEö(üÀC[6DftÕÎák}8çêƒ{Q>ÍLÒ•ú­^K¾‡÷vî½d6‘«’ŽÄSnK^=¿¥\/¼OI[ûXîy<ÈPí_~ÀÝ-^Gƒ m lÄ›iÜßÚpçsm5ǼSõÀ62Ô :ÇVƒ}LúJäÒ~W†‚ÕG`Y‘½SU¯SUÌ.Vy2„õèVŒµUvôjð5¥C’9ë2•}€»94—éNñˆâ¾³Í‡þ8CG6¢¼”E¹R)IT-tA]êL»ÔFà’F‰¦·}×¹åàÒL`€/\Μ¾[·f –¾Â»ÜÐÝÍĸQ#¨íI¾,Èú¡éîÌ~ŒêØ,’¨¥‰Ç2¬4ÃÊ]Øš&z<³6À–B9/á79 i”¶Ü¶9—'y2j]‚xíRs ½P¸m¢ßíÖé’JpÌ2J®+%)(OvDÒ½ÛœØóóyl~6Jòâ¢õçó¨®Z…*¤ZÐöÖ ÿ6ወVê(ŸÊã§Äêvûø¯Py,Ûsì§@²~~zRYu4¦d]%¨«’¶º#gÊSjŒJ%Ö9Ù ni1•q,V´ jºŸ£6*…ò;U•j¢Zê|½¡0ª7*Õ©zC[¨7¥C­7èwç"½*y½áð3ôƒ-ö]û¿¿÷Çóÿ_<† pÿÿæó…ÿïiž…ÿÿ»~ÿÿ£Ìþ©þÿÍçÏ7üù_{¾¸ÿÿ$ÏöÀÿ¿ó ~0é´ €ivÇ¡ÆÏî.ÔåµÃÎm6»ÙímÖ+ÃÏÎMÌ×W^¯{Óé—ÅoƒÿÄ«îU‡ \›Ðagõ·»Ùacç… ¬å¶ÈŽøij_"„.Ía·)¯7N¨C²Mükóøä¨Ùhž‰¥z¤ÏìƒÏï. bg1_Dß…À ×cq;`{ÿ®ºŸ‹HtÄåzQQÆø¶Šš@ñÀ‰Ù¢&Ž81{Ô„¬¡'ò£&ÎÉ_éÊ«îõ5º“芯 ƹø¢ù¡a¼ÖSQ&A×vÀ¨‚²èw\eübãg4¾Q90##h Û‰Ÿa×EçŠû‡é»@гñä`U¼‚z|Y9³Ù=IɺÙèÒM¿ rGEÚ‡ ™û782w é>Sy·z]¢¡bbFÿŽKÔ’ÊÖ'‹È“Eä ¯7‹È“EäI„ï‹È“EäÉ"òäoyÖwµàèÍA{7~£ý» D!N,¢QæFÙy¨p÷ã·„( ™ÚÑ!CdspŸ¸Ù6œ¦ö{;æ=ž»ˆ|þæ $Kšƒ¢E¼‹çÝ„ªÂz¬àŒƒè„Ýbòò2h“’äºt˜Ã¸ÉáH]ûÅ?vß,bo±7‹Ø§y‹à›¯|#¥ÉD†äè+]a ¯TüË}µˆôq»¼ˆôßd¤Ó¾§ õÙ b}œøÑ×ðÿFã?ª ÿïÓ<‹øïú±â?iöO›ÿµÍêfÕŸÿë ü÷'yx¶{ñ`Û¾Ùy{ +Лöü»w´×8sâANw›Çeñ® ÿ5Ó Hâhÿ•©­øÇŽD´‹âC\ »ˆÃð½ÀDD[-ÞçœŸš æ°äm‹Çf–0‰ŒêάðìoOK²ŒÖÞ,y°í9aBï‚ø ÕduZ°Õ,§éãWù½©gZœÇ©‰ò¸&‹Y´ØwJ¨ðýAôåö6C÷»/]gY÷D]£²„?££ñ“!çR;#÷2e1Dßyï‹ía‘¹ƒ¹¼ÌË-~_“170GØa% hß¿/Ÿ-—~W8}@éU ¦¿îŒUÎt¬æbŠlüHç3þ@¿#t„uÆbÓ…B2l28%;l˜w¢—]×8ªÁ¸ƒ-ß÷ïX²¯²ý ô’ Êj¼èŒº#•öIt¡ŽalLiÇI!/Ãa6ºpøôÐÅÚ¥Ýé’Ñ] gzÖ½–Þ» Â. 0MFÝÕ1Öy3Á©¬Â^*(äëUüµÊ&Gk4ˆ>²1í ¯ºÿåæ²CX§íPúߘ³R\ñ?Þ§—ôÅÿüËÊr}±|‰Ž²5b¬3Ž×è[û/pÖK±²Êq—EB$H‰©Àþ ºí‰+ÇsŒõq„¸ÿ6ú†_€jPLo@˜Y€ò%ŒÉ¹Iüq)·ixo‰ÃZ¤¯{ž¨ceTSØÑÓHqYT”`I’šIÿ]Δƒ a³«É0[Òzoÿ¼Õ8CMŒý4ˆÅ X£êª@q fJãUv  ­ÐÚ’E’²’ÈŒ‘r%öÁôi\¨oÊ@ Ù2âð'žx¿ñS˜Ô^@‰­¦ðݪ´åTŠœf×ÀÎþ%Éy³iè6àJóçÒ IÿjeiV©?—€VÝëY%z«L…©ôx8É^ˆîZ¶VF5!Ã}Že#ùíeŽ‹ürÐÿsrƒÁw.ùYlÆX (³¼ç8 ãkWõšÓåÖ€ð7AóvLÇ$1›·` èh+Ç¡«ÈèúK´û/ÅÚYû|oMt®Ç4Ç@ˆANÊbÔÞÛTÔWTÏåЛ §ãÂ&9’ZeS,ä²;{Ii÷z«:´.»ZzÁ²ëºô/;£Œ Mâ2©ƒÖJ•g}~‘õŸÔÌ»_Žœp­g £¶Þô)^N-7ttÍ/ù¹;C]|茠s MÛñiØQ²¾Pxi`‹t>*ß l0ºXÒ&àrŠOéå,!ƒkÆQ¢ÍWdÈÖ™Z¸GscÝÈÂf–I]ò;vžfÓ‘Æ™?5íÓŽ-ĬS¸?÷Ó)oO×$)Ð*•ÞJíôS•j%“âÌ¢ñ@¾R¦ÝõR ”IÕví BÚðV–Ôvå%ìŸTB6Řl‡T©29òƃ;ý1Ž‘fXgd9¸hŒÑ@µv9¸lB·Ùh„§Eà ÛCV+wm è Ÿq¨äÉN$;’²Ç§)Ζ37PhÌ*7kÈä´ˆÉy&¹ùÅ¥Ò-§â%ÿ Ól›jø†ÞÍ쌷âºÓíÉô†Ò†Y½í–~,uûÂÜ#©l7ÞÈ­uw¥²M;½üD ™%‰bÚm-N+1]AB`Ý ¤ºJD?¹ZS‡Í#A¾å1õ(è>[¨ßÙŽÕU§¶84À-èl°[½¤ [T°(²j÷x‘qæ‚Ñàv*oÅ'<-À@kÜ;Ê0膧DËÔppÜÒ‘ÁáÕi~u[nd;iƒ@7C××r/p%¬CŠTã#[}ä¤Ö ×nˆƒ³§´®˜¸;—rkCGl‰öà ÐÑ^„èÐn”„Ž‘Wæ+b¬}Ý_tÉ—­ Âhˆ¯Ô»^¶~ï›—¬qÞÆ¤GõÓ3úùëù^û7øyzV¥Ôa˜pÓ{Ô[g§gy§ÃPà­Ê09u*½ ðXŸšUøo§549Sms¯ÝÆßÂgéZš¯ðý£7è•xÿžÀgõsÌ»ƒÔÁ àŸÍüÌ9oa’*¾Üi5öNð<,NrðóŠ'LÛ=?.YY:b1ͪDXÍì¹ÉoN`ävövê¯åÏ#úùª Þ}uº÷k›R—5 \šÇP`§¾K)¹Ùî›öÁ+|ñô]ø²{Ö>Ýkåä<{àTpGõ½ÖÛRÔ*µ¶u°—æŽJ GäÊþka/f õ¦Ó_ÛgQŽÌám ê ønž¥¬°­º÷ëÚª4ž‹µË)Ù¤§ ÖI§Èé™)ÂD;dÆd®7IoIf{+9ùÞñ'|+onц†ÄiËVM!„¦O e2ÂÍMn+|¶<ðr…ÈKŠùÜõmÉŠfM<ŽQ±j­+áÑá6~Ï‚¤Î‚WC»Õ>.¸?¼Sïmÿ ®²Ñå°{‘9¶ÖáÀ-]À o¶ ý,CÏ,má៻A—ÃUEæÄ #¯ÅJ+ÿŽŒgº&Êd¯#{cLµvØÚ©CfµÕ`Wm8®UâfèïU—î™ê÷¯=XÏÝ#ð2¶…·$¼îó¤7•òZäUlúnº€év¥ÚìSCoŽ®øTrMts7Ë OX­^²u ‹×Ë–aœ¬t4¦ÓÏ5)¥oFDï"ädûƒ‡>arßÉi]t?v³âÙ…ªË-±"ZËÌ7šÏxÁä`⹯+ôﺗK×{\;pN¨TVÄΟJÕ¡‰éŒm¯`âb‹›¸×%£Ák‡‘—Ò³MK¬S@'²ÔÊ-©YBºAYÈY[kÀÒ$ f1Œ¤XÅÆY¬N/Ìø<ãÕ8Ôþ^cæh¾—CÌÿ[ó’)¢…µì &¯F¨KYìô ¼fÅ­)EXKTí…NÎzsèTL¿8¤Õy¼•÷½MÌXuj^¬¦èM!+zrjßâ91KùÜWƒT®@°KúZŸת‰£ñS²ƒa¡A¹u¨nR8pywÛÑ7bñ`x„y‡ä“úß²z&õ?º×uÎ`Ëvôì˜g…¥MvíÆÒvÝcûuò5k„xg¹¥@˜uŸ¼ÁÓÄhCj‰ ÎEh3ÓÊ´Ê5)FÎLÖ u.ÕÉ÷­t|j)‹à³àÐ:ýŸwAj÷ãr ÷cÖU¯“lx«Ê£‰K‚ñ·t¬gaï‹0ÁòÕ’1DȬ-k©ƒ-е*qCiãB춈¶}¸”ñÝ¥ ¥m‰è1!!¯0𬑠oìè Q°^•åÊO¹+[Ë­«°ÇÄ3МX­ú”•+} ¼NÀrI9M»íŒ¤%¦©c¯ˆV<üŠ”ê*X©XÝ5#î.aN„ûÝñj0e=ô…ªàlÖíÀv•Ùöä7Ì L"µ»9GèXzóQ€­ˆ5¨’1~ãÚmq¼ÔBg¿ÍuÝ.Zó&:زT_‘ôа>dz- Ó઀È?‘Æ+0çH‹Ì$õ¸øŸå øøµþÃÓ< ü‡ïú±ñgöO›ÿ››ëÏü—Åüš‡g»ÿð>qº×:Ý q ÒÈÀ Úxº'¾u!Òtš²Xó~‰Ã ´¹º^1Ž¡yá#x¬fE‘hÚ¢Ñ$¸t$JÒÎHˆâ½P'b-^ Sð]@S<,4]dÐ<í½Ë.^»ª~2}ÓyŒÚ´"Z[‰gÉÒ ™G%·¤âU3ìÞ|ż˜ÒŠ·Kk9|i¤ð7.Ão‰H¼nv=Ò}øìó]¯ÓçQWÀÂi–ޤ&A*È$µ<8BÆSmc­²®HIå}>‚WŸ‰ƒ Æó”)p²0'Á˜wåx#¤°„]•£ìιª¡0XŽî ‚dè>è=¡AdGB'Pd²€YÀƒ|ëð 6Ëè ôbð 6¢µîG÷›ÊUaÔRØd0‹©šdïÝÝÒ¥)u4gUó4V %Z(v!_7ì=ÛV6®ØÒ36Gt™ÇkÖ1MêÑo&M‹™Ÿ b0‰Ôr¾åža†šœ¤Y2X2{¨¾5Ôñ°+ ¡ À•àÊ×\qQVÅœ\)‡ˆ+fÅYifF\Ñ8+î— ¹"k‰C¬ØtòÑV+³ibEB>‡Yá \ñDlÖB¡×IÃMɦ×WO„ŠìÉS†P—C5¬Å {ûÌîáÛ9zøÖëáÛ{õpêâ=cÿöTÿ¾ PŽÔö«áäÔ{£AÙáÍÞÿgïÝ›Û:’=ÁÞØØØþ6öϺžˆ+!¤¨G·<ˆ„(„}Ûa;@âP„ 4ŠâÏ|Žýû·òQ婢I¶n‹$N¬WVVVVæ/ÕÜ«™³‹kríµZ öÂR¡½?‹e>tã9 ^é]ÒQ¶cº›–ÍRk˜Y¹_míÞ™[¿zÄc“ǵ ½‚Æ4:¨$RmB:¨u Ð~þi Us¯¦FǦ)ž°átȘiT!©H¯Þ»Êâ— ND¦À,ÑFG¬hjÙüÔ§GÈ „=a¹dC·|š)ÔºÈÙÑ(-®‹c¤hq .¤‘Â1šºóéaÉr-E#KÁ5x£ÇžÚ˜^öÍE×}3wá7í•Ïí¹ÝÊW”¬UÛTËñââÙ”qÖU`3\{råmå­¼€çœ•×ä¥W WœncpÔM/5¥4—^*Oñ…Úm–ŠcÕQSôG^*+$°˜w¢K$¥¢QÂVˆ`+D°"Ø"ˆ`9ˆ`àÚ€?ÛBŒ~vË_bX‹|—ëØr¸bËá‰ýqÀÂþÔ a í v/h`´ˆ­ä¶„Ð\v‘ݰȮW¤ñ›Ò‹ØI‰ãègƒÐtðÐìÈ–?(˜’(¨ ÀNòH›ß»Öï ¨^þå¯Y·‰V(S^ }÷‚øjOüòKà«= ß½3¾šÒûÅWëÜ` ïBYÓDmíŽ(kMÝT ôLÖ•.¥›³Be*›œ+S<¤ãy9‰¤§éô³ËŒOà„w@oUÔæ/ÞKtÍñ,ž\9®Õ 0àn&×ZAÉ9VPró¡ä„f'ª,2€°ù oYU·tŰã‰âãZ,¢3²-Ty=(:[C{ÍoÚqqøžyæ<ºwL¼mw•Ŧ"Y]’Ú³D÷ý ao…°GU­ö>=Â^ç‹„Ø ZµÂØ{XŒ½Ø€ÿµAöÂ…±BÙ[¡ì©ÏC¡ì•S{e;²ÈÈsMN,o}ç̾fèzÆî9›$¼)Çàiy=˜fê=a•,4uÙÇ^|í6Umˆ4” Ûûî L0ÆšXk :^HkZ0}vIœšô 8÷ÀeÐ ÑŒù$Þ×ÓäBàY•üÓiÞIªæéÜjƒQª¦gÉšlÐ;·¶r˜{h¾‚nÿ¦3PT𕃼kMÔš½âçx–‡wÌÓ»Ä ßqY|Çø±}îÆ$ÌÕ˜œxq¶Ÿ.¶«""#‹Æ6'ö })¼¼>>k‰Z¥õô~Ñ*%åZµVø”+|J§E+|Ê?(>å½ Nþ!‘%½!X¡Bòg… ¹B…t>+TÈÏ ™ºjóMG”Ý©°Ë´Î«A¦<ú3›òû?8¥ƒÿøáaànÿX{R]á¿}’Ï ÿñ/ý±ðhõÏ[ÿ›[ÛÛUýo<ÙX­ÿOñ¡Õîá?vÉ_µEÖòNÜï©…ÖDù¯,<¡ÉãqiÐÆÍJõËm”Äê—“ÁP«á,òBÆQ{i´G5QJwš‡óHS×1(oñ$nã\¼ÅVë ?;®lÔbˆË_„_ó`»÷ƒŠG?D *ù䱤L¡÷ôŠÆn*G¯Ïz(>’ØÁ9ÀhÅÉ겿Xö¥ö.Nú=ø¾‚ò[nž’œÓòŠj¶ÕnÁÕ"-€B¥Ò‘¬±îµ€Ÿ˜F¨¢ýl4žeV@Ì T¬1ñ`G8ÀDл٘óv¯N‡r!Ëé±M™ ƒäsò­Å@×)AÇG`›† ^¯3ëóGqJ#¸p]Ϋ‚.Ý…›2ÞâmÊ{×kÔÉtˆL罩8ɲ‘Ëô‰à—þ@ÀAnL´…!”toð>öë ég9x›‚ƒôÓZ~ qÿŠ"ý´T0ð,"d§$e{x<†ˆ‚±‹2A1°½ú-W{ À »f€Ää@A;˜$Ñlìf"hPkb“&÷ˆ wqö€S8኶$¹µ¿(ÿRtXE¿LÝ ^$kÆ+ü²V-®O]"žUá½ifŠ6H¬‰A‰~—¤¡›ÀVh•^·K%ä“;"(µ*LJLØþQ¥zR÷’õª(›vl6ˆýwäÓÎ=ñiGóiç>ø”U'©s.ħçS·AħŸ~Ð|Ú±ø´ðiçø´SaR)>íX|Ú±ùô/…UöçhàìàBä–"±UjW À‘Má Ä:ò[\DšCžwE®B¢…´ ŠÅ&Ĩ,! oHE‹â£ÌH¹'„"å.((Ž»§2[vã õÙ¨®ÏTvJˆ—¢ÕÁ%$ã¤ü•Á+Z…RêþT–—ˆ}æ°¹“ƒ/`CQaOl Qbq‰²h¿=>J¤&á!Jt ›-…,‘SëaÌr‡H&ŰÞ›b>(…‚e˜ NÑ9Ú+‡ ·GUñ ©uv»¯r¨|* ‹:ÂB,‡e?þ£&Jf©¥UA[8µøÐšZΘb5á`|Ñ Äs• ¢ÂR aé¸E|Œ‰VÆDën²%iÚ[€LÌAtØôË/èAƒç¯Ñ¡eZóžGHvB’C²3$"p- N»+HÄ-0"‚‡ XMånð+¸÷°(”­pt0ÈC#'è`†V ‹@5P€‚gŸd Œ®ÃóZÕAÝn&a;x±éô‰@;,40Õôƒä‹[¥vžw:Êõ?õ„uøNó>aÉùÙ çÇ#ÄŽiÿÇ(âi'ă‘ñ'¼WÐŒÍDÕw„¹èŠ/æÂ0‡çý¸‚°XAX|&‹†HÚü p[|ŠÆCâSÜ ž«4a¥B€õíg‚§Ðêžeþ2N7 VÀF|EËË`" zë‘'#ó -XA[ Ò¢eJÆæèŽˆÚ!îž-¬~Ý ¶"¯·Ë¡U¸ìèFLIËA¬X@³N‚V(×AÓ¬@¿uC% “Â-¼u #Ǻã¼Úñâ(»69_»ûZs¬ã(I×i¡£wѸÒî/»¼Žä®»NlÝu–Yw¦‹¯»Îƒ®;¥Õ~)ë.¯·ŸqÝ- ü/¸îü$eÊò³~âq°@:< ®ŽÝäû¿¯Å†8›Œ/´i ïi»‚«GÿtàƒíP$õ“ج£ ¢RAMA¾‹j΄Èãh:e·ûª€‚¢ÌIñÎ&ºÏÛ6ÝKùh)‹ÄˆFU>Lœ9úHžª(„©]UÒ/RcÎfJ”¶rv8Á…°lqïV»µ&j?ˆG]<ÀT*äúP„·/ݲâ¡S†PÚ±4^å½bv4n“:ä,Ð&¼2*¤Û–ö°¼æ¾{æ¼’ '´¨oc3F³&Ö¾]' ýÛQ*Õä)@ý •Èo€HuÃPã¾éƒ‚¯ç°½îâKö¯8 VÊNýtm é|X M¡óö(œµ`¨¡Š]],jÞ}Ï5ÍÕªBI²”ôœ+J@ç™#;óDIÄÁo9Y²õP²¤³üBÊyå~eIgIYÒ¹,¹ýäÉ’Í¥eIÇ“%@–l>¸,éX²¤s;YÒqeIgQYÒYT–låÊZ}âÕàL ð1ëMnh]=ÙðßÏ8\‹C¸ª¬¥¹V#qÐ;’u«j›÷Q­§ûÞîÑ‚nêäC7Ý rqt¨\ ÈEÒP݇Dpãÿ?>Hð-âÿ·¶VñÿŸæ³ŠÿÿKìøÿ‡YýóÖÿ“Z-ˆÿ¯Õ¶WëÿS|hµûñÿr—'“zûUÙ`Ýй ½;FÌCÖ9Hm¹ ØsÓDbp»Q`,úÜX ‡”Rñ5¶’"æ#Pù˜o:°BÄw7 Hk†È©Ç- þ*Xt s s _æÁ÷Ÿôà­~ S¡–!±„nSÏ2¬x)s!YØ,.l yŸ2L9›aü¤·°LCGAË ÁâJ!˹èÚùԪȈ(þk1 86fDU눗l „8Äg‡hh^ì©Õp!iMÁùâj¦‚Ì'ãë)cêSÔ«I™Tì¬)ä br§Ó€F{CÕhåéàb fx5æ­…Ø’Ø)• ëÕb™‡r‡¶$MƒÚ,׿ÛAMš†íńλ;ÂUùÈY_v9!.§DÖÙTNÃ0›TÜ ƒ·s—Çéx`ãQ_yb“0ÈúÜdÊ=öA?®Ã![`’èt' Ñö±w Qs—ͧEqr5³ÆŸ-6@“Ã3Ï®&ãŒ\ôñR¶Œ&CŽˆZe÷’Ó cOÄV¥ºQ©)ÑDZ¼},G{úHì]IÖ\‡„v×¹ MÙÑS Ò<_[)̹ÓsL?}’é>J~„^fNÌ)‹oâpZI,v£2w0sV*„›IvÆ8=~„©Ð‡"9o©›u*Ò£°µÆ,0k¡Ed¢¿ô*©ÖøM8„†û-6ÕÊ ¬’U$gKŽ8çÀ“Xí;¥zi¡Õ*yW.ÆX&r»Çë£@Æ Íe«[w;1à ÙÛÆxvNTÇ/‰zåïŽóÌ+%”s8®ÏÆá¸ç÷!˜€Ñn„”èÖòﳩµÚm2aÕÑ_Æ%ojŠÐ΄ýc^sS€ê4(Ô^ŒGÂ_*^ÐBé„¡¢s;²‘ÁÜI)Msù1Ù6¶ÔœB~Çw½0¬\í»µÄFÊy!6l‘÷yÅÝÕBD€ØpŸÀR_Ðé 'tvXÃZ +Ø @ÄB9PzÛŸ!ÊÇü.jüPWAõS²äf@±U›Œ²Gpg{Wy…RõPªpc[AU­ ªVPU+¨ªTÕ—UE¶•%ચ­·.¯Z­€ÜI©gz¤åûÝL¨RÕñ÷•nÚ‡àHê×=G¿R[>ÛM´ñ£^”q¼79H|-¾ñùôï©T*etEõÓ4½L2ðµê#fÝe–*vo0œª‘wåÐ{Ü­Ç–¹ËËáÀÕc°ûæØU'õé€ ‘¤Úô³ª yصκ6!á ÿú´¿ºeÅ/Ä;inŸ³¯bSUK1Ó_@øÞ~‡LúßÀ´Èx¯й7QãìKÙ ï°LãKoš‰W á¼âL®»PH“–²ŒNA4¤z¬èäsÑ룠iC‡‰˜'YF¢ŠÏ #JýKyÿ-e룈^«ôÖéúWNB8.>½Â7{'S9R©³Õ™A­‚Ç£ž*%PÈ(>çkÃ89GIÕZ²qs˜Ý¬î›Õ½[³‚óO×çÛtüÝ}äð»éWS~spü¢$6ÒÏ®ÓÊX«KµK…öÚvÑY¼¯#)+ì?úÜûO1î¾f Ë9_¯ùzg„mB…ëú ã Ž'yI£Õ'‚FhÄxõ©.¸ä aHe2á ˆPòåOÈÝàŸ»yÞP Í.\<ÃDy CØË4Ž¡ƒ^¨p<ÒMZ¡þqÐ !¯v[òß ÅЕŠaÅÄ)®„ˆ(hÙ ‹ìzEºa¿¢FX¤á"*"äOARÞnpHù%'Ö”#~M¬ ÁÞÄŸ48Ñf[à3Þû1Àg¼GìÇË‘G˜'ž˜i†Íï ë÷.¿º0{øbÑÆnrÁ} º{éÖoù­Ÿƒ\AŸ\¹òiøî]‘+«×Üt¥žÑtå ºR|ЕKWº¨-s¡+?)DäbàŒŸ1•Ò™Åw2?ý-Pͳ“¦QcíŒÕÃ6c¡ŒÉÈÄ-s÷wkëÊÅſtøzVSé°~Ÿ€Õù«Ô^Û*E —1…|¹Pâ‘26!6ùy™öð*>v‡—ôŠârƒmÛÒÓFËŒ¡«Õôé>‹ «ÞqX–š²ä ›áìþa€@kÕDÕwý~ú‡E³—u¤^ƒ~&`P¾â¥ Ç’9lÄ ê`åªÀ~º%µ¦´š;¥9ˆÊ((‰QÍP.„L@¨;Çô«> Û©LÎ|ÜÉ´f!™&pL•d\˜~ZÓš¤øç†/5ý\A—^]A—~ZèÒ»®¸?pégZqŸ´´y /égÓÁ$ë—µŠa¼üƒÅ4œ|ó¶A!96/.sø(²à>Ù4áÕï Sõ–˜ª›_¦jÉéXÈÝòèà žR•eèj4”£~äj]®m!†x†×Çæv®~×ð!BÓVx! 2t{04Z%R_˜³æ´›]ÍÞ/Øì·Œ2»B—¥Ïbè²óDC€!k‰†xì <ö~Ác¿}`ÔØZì -vq´Ø”W]d±÷PÌ9Õ¹àBc©NaŒV™è ·Ç‡‚õu+x[zÍ‚·ýþ!ñmWŸüÿû~ú0 ·Àÿ­=ÙXá~’Ï ÿ÷/ý1ø¿µúç­ÿÍ­íÍÿwckkµþ?ŇV»‹ÿ»wH>߇ ûzØqLr ø)ÿ©·ÞÔ“GNAÏ¥nÑØ=CÞ!™¯àR„ß•Ÿ]’†Bø]Ú·öeû 8È0œ·&Ç­1zÝYR§‡HðŒ ÆÛÐóÀS 1yU#Lk’ »óuiò Öy€º5_¦Qງ„®{Øš‡§+{SPrqu­®Á¯)8Ý#kUü4€ÛžËIvŠÕ0&Š‘mTñ½½ÝʆåÝ;4¸ÂlÙLJ*л@DßýŽ'ÉHã^ÙAŒHPñp¢äŸ4æ UCϼÃkô%gö€ÁdÕ¯üK¿™q“|FQÜ>4²jAûa˜uÕ•“Š?»zèÕTNþ`4e=@*9Ì2.‚xÒ¤q93‘ø@Ä«Ûç%wÚ‚Á‘"÷d˜¡‡Qa¯½{ ÐòÐRIÎ- y(úcÚ011¿9¯ˆ‚Þ€ûòÖj;Éß»´/2Ýs ^ ;wFëCy›> `àYI¶"îÁOäAøåc÷A‰|¹pHWÇ^ |\ê¹"ïÐ÷Ò˜{;ŒXc¡ḵp¬ŽôXÙäÀŒÌ«Æ­ÇªQ¡÷ñ"ýá.+G SQQ„÷NÏÑ(+{ß^žƒ”;Œ Ö’WxÆ™‰e·ªy×Vy‡s›f¿oIUÕ4ÜXù"<™ÿÌ&cö˜È‡³Qeÿ`ÏpD.ôÞtÐÆâdˆ¨—ØA˸OÛoªÆ Øºn»Z'RDŽºÓ(OXá$›õ(p‡4‹m¢<Åñû ÐåhíH93šÉ±Žâä¼”Û.)¸¿˺ùfVý’Û_"Gª–S¸R‹aÅ9x©6£ã!¬€ÙrYÐ˦ Ë/ëÁ¶=ÆJ=Ä•+ù¾ŒE`»€ u6@=& ÷}YðB*ÿ‰z6_û@R7J[¶…%FÙF’Uˆ‡k¿$bàaÙòжdÙ¥ü-Üýð3“mãE¡2¥Á­;´a¢—Å­ãöH"¦õõK®³I ü®¨¢fñ°s«AKà,vâƒÓ"þµÈ¨u‚Q³Q©o=j ÓÒx±a³ÿÄ¿?/à•‡f)»ïgÊjÂØÑ/UG´HbCÁ)` Q`•¤pt䞨¤Þ •Q8>ȃĻÎkDÙÇxeÀî{ÛÙ{ש±×9è…Ãt 4ºÈùÐ(s†p>Ý@©µ'v9ðÜÅHâB»að*­õ²ÂÚúñ¯cÛá3Íïþe|K.ëH^õ‹Â‡Þd0¾š 4MN‹aˆ´&[5[ þ‰¶ øænŒ›Í1–¿zÛ:d»&YΛ ¯Ód(œfk÷õ¹âåøMtš{o Tçíw‡ 2¾=8‚­ùÛýfžë…,€Ï­Ý­F þÙL–XÐyÆÈ|Lgˆ´à{!…ÒÇqjñ·ŸE@E4Y;$M6ÂÁTp¾Ÿ<-ì²§ {è">wc éE"´L‚¥øÜyàðºH¹MÛlѸ[ø¸$†-”§–Ç[4B¶hä³E#Í<¶hä³E#ÍQ²1¶h,Çî É¿ÏÅœ™Ó²›4ÄNbs•˯ê¸]1ìÝH>z! ̘ý)V¿ƒf¥Rù íb½Ó™ŸÀIJ=ÀÊÏV:˜2]¸_1%3þp:¶‘`ð Ì£aàaÈÄÊ„˜=Déytð(ê{h‚à8º«Œû†q ªÇÂWxË‘ÒÎäΙYkZ-MšbÌ«ñYd¨âyš+wíø%UëÁl@Áx ©q¨98ô¥çÒLZö¿x!=ùOó²ó8ë]E&¬3Ó@§Å:Œ½z–5îÂÂAö'œ®;å Œ´¹„¬0Ïuë-b(q¦á2rf\Í0*škÕu¶½¤&|o×Õ,ôáµ1eŠ‘gê‚[(®áoöIea.ªÍç"{ŒPñdt“GGÊÞhñ_‘AË&†©û/Õý¥£ñ%íæ¢cK¬½ä~±{È8WáÞ\µ…ÓömŽÅÌ<œ„U¿ÐL!Fþ\ A~°~éhxÎ0+Éù¡¨¸4æ wxÈ4Ñu• ³wúLq7¾˜Ï.wl9<©Ùe˜ŽÝüEyEù¾[ÙÍöK 0Ù¼1Ô"Žú!P‹Ú6S3ñË¿í¶ødþ¢ÓÊ AýËä¯Q°:|"™déM±Š›âuks¦MØ l´ÌœÄ¦ƒ#+‹ øCn€¦N0ªq¨.~ÑÚ­D1“˜Å°µHµMOQkûÔ@ëCOª.m—fJhl'䃘ÇíõËK©][¬…˜f¤í‘ª·à^„W(¬‡h1óµa*Äm—·îvÚyêB]COF[EøÏðWó ôº…âû[j˜¿ôè~ îŸÛO¡ýŸ+²¿kEöw“‘ýA¿ $¶„Môô½…òC©%#°9üsÎÅÙ€¢ÑMÛ¨GFY5ì ù‚$¿Á…E·/!àœÚÓ›Hé£T†‰Z©Qú¨‚(G¢7DßÌ…°yÍqÚrq¶#ˬ߭üâªT/ÝÀ}r馢"›f8¤8£šýv5UÁÕ;¢ `¨\õ±5Ї18 #7bnD!sq ˜#§–ÝéÃÜ"M øïAÕØ@áÜñÛð×ôBrP[¨˜ à ¡Ö-VÑÞ@B0tÔ YÙŒE42ƒ«ü@=BÂL*T{£-öN¤pƒáê‘*6%ÄŸ)¶ ÙZ®h.E“úAL%±éÙ Y@hÞ®J¥7¥ºáü»!`x`N?¨ÇøKƒ^ƒ¶„pÇ¥Ãá1QåÌ 45_] ‡®õ+!7^f°IÈ](|õúj‚Ó¿#Çm0œ~U朋‹¡Ø†·D3°—ºÝ×Å€ RoXô&æ°Qì¿Û¢ܺ#ù¯Ïïɽ¢#(p„ÏŽÀñžX kEyÿªèOˆÆ(-Q·_<$+s£Qƒ`Qt€0 ÊÅáá2K_ôΤÀ7 Ìo<„®ÙÓx 2* X·ŸPlxõaLÝX«×XÚ:LKcÀ]šjÊaE Vû´ÆÿT€˰IÃá ›J Ib|Å%wà,4ÔÆ‘@•ˆJ<(ßH Q9Ù©]J}!ÍgyÌåªÏe¶<û³Áhxƒ³‚Ñpø_!jü©a4b+H»Bjp Ù’è D P#Ôž¯`x§òOWtëÔëà 4!þvÚ»PZ…®Ë‘¶ØÄ—à±iãÕÄ ‚)+^”)&ß·Qj¾D9YT>?PužÞèV.ÖÄ D¿ËŠì¢—â‹´,Õ«ëö«üÀ®9ÂáèÃÀº“{étL‹n0›FR3œ÷Ø€ÞÉ´ e5´¾1Yáo^#ûxš]R¸z*¹\°º‚OµjÙòŠÜòé|pê(dŸlð€l?‹#Œ°,Èòw!T–V.¼ˆ Êâb²°ÙmÉU—€dqY"ççK-»ÎÃ-»ÌùϰìܺiÕuYuõªëX«®óE®:¦/bѨ>Èñw]tê“écCúü5}ž­}âtÿá«é £Pp$:.nCL²Âú+´Ÿ?3ÚOÛ³  0\ì„DôTõ„ý IÝìÏ_öçho·û*Z~Q˜ŸJPå'|=TÝX%D¾ ò®2œ+ û⢡LoðǺúX¬|_´™AîœÈ)bßç WjVRˆ^OùBµX ƒff\tŒ§m¹LOÅùKtP±9;ÞHëg­R½t€ ‡…Z¥F©£p¡ÒÒÁ">´L/~)ËÿŠÔ"ý'Y_Ä¿þäôéLŠ3¶jÒ U{E©\ƒJ¦ov¨[;^·€öLÛAeÉw³´¸7øgƒþ$a§ÍšªI8ªà<áuXÄ*À ŽIOdƨ£Å5rÉ\®ávŽì‘õuÇ€„–À–)–yy6é¦dc1U0É“Þé¯À:×|KŠÖ‘k·†¢Ô½P3ÉÛÃ’l68-Âæƒåa“+'µ¨òv÷j<š±X_ðÉÍd—74Åß ´À?ô¯0,/U‡ÞèÆKhٜ哔/m+;ÿ’‹£èÙÛµ¢¨/ø‰Ù ï]ÐÆJ?ª©øJuõ+Á>3Swi…ör\7 Ü´( ¸oݦ16 •[A:ckY 0êÑþÉxü«øjŸN”‹˜–÷WÚ&“=)NÄ¿KÍ`$ZãÞ¨,.¯N*ðä›ñ¹ìÍ›ñå¯pq\ò¤¤,çQ¼³æ~ñȺøaùPgï¢WoŽv÷øùCB¡kvÚ7¯ä†EK“a¼´[Á¢5ÁI~tðGÃF‚`×þ{•§[Р * 8j00H€Rÿ¾¬àÓÒ4ë­×Ðü)sH.rœ'$Å u’ ¹Ðe;Çûûut>ùr¡ÛHZA¸yn’SËŸÇmY·ÅPÜ–q»%†Û²nË"¸-à¶,~Û-áÛ’èmº"PÉAAÔ.xã¶ÀnÏVÀnŸØ-Àu³`Ýn‡ê€ºY˜n+H·ÏéæX-Üíááݺ+x7÷!ÿ²Æ¿Xëß|7û©‚ülM&4Éà<0üÛmÝPU•åá§õUj´ÆQ¹A;b±÷Ô‰R^1«:§nµ!ó|^Pªƒ>·,p‚hÜgX³¢-nÛv[$¶oÃŒ^#:Ŧ3¯˜U]d:ît6–šÎÆí¦³áOçý„ßa:ïníY·ö•”¿] &ò̵]º%H× l€j÷¶fÀÖ¾|¬5BÇ)‰Áæ!¸œ»æžVm·…l yѤfÛ0ÛRƒË âÖ˜m‘ú ˆm1À¶eñÚB¸¶Z›Ïb¾–‚gÛåÑÚ8ZùÖXmžØ¶\Ovík#Ð ²)ÜI]¶¸ º>•&b6 €s"µsàß’œãÇf»|àî$NíÚÊôókUÿN‰Úc;F,bÜkUuK€º”*C¨»­šð`ès)½€®vÀ¥îðQ|uÝG±u`í¨py f‹Mu×.œé?¤†ðçÅ´›³G„Û+v:t„œ(Ð%Oä—ÓÚç®h˺ä6/l¹>6‡79Ï‚Ñp ·¼ÂÞ˜/›7;‚¡ ¤6Ž€YP²ie¾³‹ž½ôâH©Z8ÂblÏ9p‰%wÝ(˜_d×µf‘ìtŒlc]9쀿#zþ,:¿÷†x(âÐZð£´Ð@¹cõÌ.²“€ëGñdC|óŠ|ÃÃ:ÀdÆ€²PLŒ}ùzŸBºu›tL@ù$cDÞàýhp68ífæl²°•…è´×¾°Ú­Z·PÓ)ÔŒj¨2„Áæ— §D¾c.Ù•yešN™fPèn³dª²v?ôY ˜àUp„ä;PûHyžþŠóe Ÿ;ðÔÿt½å6-AÃyÏ`ÜÀLàŠ–*îîÁa‰=Gù×FÄ-Æé”íÌåv«Àn&yݳÅã¨Æ–8¯°³j‰¦Ü9-kÛõ×—vNäø€ƒ+bî`²8^‚zÐ/$…™ n鎱Rälã4ß¼#G5!’Í‹ë$­‚}Ü$›³ëØóë`o¦ü:ÖRuøV€@ž-ÊŸ4vüÙY?›÷ÁŸD™œ‘ï—W;®¨¹Õ‚(‰ œèø5–^Þ°¬füK_C_cñáSÎUiD\Ã*Æm ¶0?Ó€P§ì^¤ã¬gqÇTwŠ%l°ÃÀeWÞÆíÀÖ„EΨÿ¾fúQúPúÁCí ã“Ho=á˜v2?}E€ÜõcflØßGÄÄö&7•ÅVï·jhÝýÝó¬Öæë¼ÐÌywbUÞÞ÷ó<}„pu—ÜVïqÓ}Ü4­Š^R+@G´Áòa”ä)ñ^Ðó»Ÿ=ÿÿ±ñÿÏûµ¿þÿfuk…ÿýI>+üÿ¿ôÇàÿ?Ôꟷþ«ÕMùÐ[ÿÕÕúÿ$Öüÿ7;µBünc6óû#Hý›•ê—Õ/‰Õ/'ƒ¡¨I^·ú¨ˆp1à?ˆˆ±µ8ÒÄÿ^Áúå¤nšO¼ ôàñ4Uõìö¤Á‡Á Fè ž”x#'’àÄx2;3ü<… !\ÿÆ  Íï…ïJ¥#ÙÀºüïÔþÞˆà´o ÞüÑx¬fð@JЧÜ9Õ4gPá*Ôñ›!¿ß„ò@ 6 CT_Èö¬Wñ;YýZõE»‚Mä/И8‚áol"ù%×PO®¨ìƒ†û€‰’SÚ¨·þ!4åz€8ôwò$ó©ÈW¨þ6\Þ_f§€f:¼©`¿‡â@ÝTÅ?_b[ÿIþÌÿ áhy[;ïxùŒ @$3s¿â¿H`h ¶&iHp%…izu¢qOÁ™¹ ·¯%kÏäi[Ãý‹ƒô¦¬¨Ûd4.ÂÉÇë.â„'‚Ù&âB¡Z‹«~ %Àc93´ÃSµòôêÒ9’÷NjÆ¡ô]±MÒÐØàЊô—¯]¯&àkgZÖ˜ž[Ý…©é®M‡{®šbÓ- ­{'Ä-‡ï¹µ Бï"’Ù Ò¨x UœÖCHâ°–c¢¾€eñà´UðoŠFkD”Fù]¶(ˆ^MŸHq#Ö!¾Bî!à?¹¥P‰ës@‡'½™K”9…ùžo¤Êò‡BõÒÞ(Ëß„+I‚ñ4QŠæ>þ>®½ß!l4!wŠ1âÏ ¶ ØU‘ò€!ưQ#ܪšëßÓ¨‘Í—Ó'UÖ BºÜ𠥤€••}ì¦A‡É6=-Ë—Æ]Jñ/çùûö ªd¬gâÃ4e*^ã#ÿ‘‘Í7çÞ=Ò; $,sIˆû!á¿Nÿ-EâCí^H|ؼ¶$b—D¢„½2 }4ž!“Z´JHŽ'ÀW7Z_Y6@ãþàl98Ü7çì~V­¸HÜ×y!jèö7f|.¬Ÿ9(?×gm)`ŸØá GÅo6ïߥUGxø±—ƒ¾²,n Bá@˜i¬s KBÖ–\Üþ>9F»±›äx‘ðå#0`;`rî'çHýûƒÿ(óMþÜß/3§òUu†töóRµ|š«ìtN’yIG"çç±zîûÊœ0éáö”מ¢/å…jo,ë6½Se›¿»uˆ¿ô~@Á~{ñ, ƒêN>8ó—àPb³¼œ²8âxÀpªë6*´¾Û7±ÛÕ °¢š*H·Jî ‰3—X͹€æÁ¼”í7 挰Ì670û@ò £ÞíT]lHw`©_€’ ³êâÉÒ4ä>V;n&¤®i"VµÓ¥òö1׉ƒ|À4ã’åTŸNäà¡Ñ‹Ü°t8½©? “‘!R°&õͦװUKV’*ä¾è8´¿:%‡Í%FCuùûd'~,|CD\ÍòP3¾zŽ!Ûnÿná¶d¬©^Ë (m‚ Dß\“i ìÔ"Ú y6ïÛ|äS‘ߣµE玆‘ƒuKvPà±1â¬Ëß‘ò™OÁŸÈ¿»5ƒá¼ÔÌ´Ôr§%¥ø³åÚÞn†ãØSX@¸nÈ8ò8ÄàI ÷àKÕ pˆ”À”ˆüAJ05wÁ÷a'p·j#ÖA”§™7dvbÕÉ­ËxÏ@=©9$´6ß1 `H¿íÐe]K±K‘ë±$4βºÝ¼¬ Nä¤JÆõnŽ”¹ ÎE>ãê«]äÕ#'õ¸í—Æ™né¨ÔE[ŒEäú|pz®ÌŒSξ $麽!f¡Õv'Ðsê’БÇåÊ£Jj²¾Ò#-ŸÝ¸´_”v¥GxØ™ƒï¦ÎÁ(’ëW¼ÇŽãÚàÄõ\s¨ [Y˜Üâ.^ÈÊûQ0`Ñ-•2LR‘ OÐdíP‚"oLvµwä¿.N¸áSa§H±‡Î €J=¦ÛB8#ì¾õGr$Þz³±–t#8aëˆn}Ùj¦žG(•¤£|÷är ò tkKÏ09&®ÑÔ¤g8ʬp̲\µÆ×ÙÄÓdè5\¾ž3¤8šŽ?¡v´xÛ~ƒA*ÉÚ)‰×þæÃY²õ› +0ÁÒ7䈘Ó,k’TajÆfu¶ä¬L¹òF‰Yñ2…í“Ù0N™?z=ž\÷&ýœi^¡X…+ݼbÆÙ“V„UÞ,ÍQÆóS³zln mÓSÚ}¸p“ãÉ:Iæé̽¸×#¨D„pÎ ovÎ?¶N.5­\PÁ|g:ð庠ÚþŸ¿L?|1þŸ[Õ•ÿ×'ù¬ü?ÿÒãÿùP«Îú¯U7`ÍûþŸ›+ÿÏOò¡Õîú~sØÅ´2uLôqLé>ðßþ{„ÿäì÷ûN.ƒÃ®üçÓ”E‘§çgx~/Sãˆ)‰½Ã}ÀÉ_UÿkØ›ý:;“ )Y/Q¨b†~ÿ꽟d'xìS¤Ð·Ró\ &¢›M³á@¿ý:›Œ®…^6ozï³Q¼M÷ŠFò%ºÑJrx!ªo5§tv¾ìMPk;lîí×ÍŒV+µMyˆ’г<í‹ÚfœoŸÁu%—Äž '“9ÁèD=S´ªËS‹ÔÃ{§§WàŒà=–TèH«¯a»;eq€ÿ¾Ã oÊß×ñWè bSJÕyf|Î$ þ”ƒ§âÍG©+{'ýžØËRï—?ÌwÉñîMY~ýµö(óƒ÷ZÍWÍ#ø½m% µîšl÷àcZmj9íßÕWØq–ëº@qwǪ ¿î¨ÎR<ŒO`ΉÎi¿ñ;¦‡¯ÞÔ;õWG»RÕH¥ƒ@±œZÜYYŠ9ž~vÊšØÑ–¦²Ðc¹hÑCNò@9Œ\oöÑ3] ÈäóCýGåo¶hô‘¯Á[ò)ðªòèìMC3-–y)~8þQvþdoü­ûãOʱ…È«gt`Õ5¨¨šC6+Y.QDöñ4»œ!ûäc»µû©º)cÝDuŸ©Êð×ý"ù~’ÿ0WRVþ²nk?QŒ JîŽM@+œ‰)`…È ßÉæÂª„êA°©FÕ,€iÌ´Ç&N˜ë¦¬=ÇÀbhQG·ôI¦Ø¥ß³ÓÔ`d|§â˜rÝīΣCÓ™=‹óÈÂJ[Àµð‘ò¹´ŽáµCÙ*ð€™òhÉö!W£„<½y¡K¾^=zAÒn !܈ël8¬äBÈêêõ"\t î·äܲÇâ(ñàõõÓñ¨ëJö´AÔÉÉ`†R\3 sòNÅ#ƒ©*§½ໃ©ñr<à›ŸWo[Çûms‹ÃïÑÐïó&­§€<åâ¿ÌF—jĹ½áµFCû^ƒð?ÍúWà¤4[@®äOøn^NëlNªîX¿ôˆ¢Û&ø¾þü?/«/Úÿó÷> "_ô~ü.«_%÷xDNÆ€—Œ£pVØ/·‹¥ìr:ŽG%ìD¡!%ô`DÝc¦è“#OÁ|Œ2ìÞüŒ´Ïø»ÎkúƒV¥Gçrða<ã çRʼk‘S2 žüF0|wrãO—C°¢}È„ÿ]‡¯ÿI›7-£ ù9ˆ_вãËDîy}ªçƒ\7ÐÅš—zŠ’ËâÔY»rM¼²”Y @.úE Áž¡-ç~pš‡Vìa«ÑÕÅ œ4*º™òôH2§Ì8ûM¯e›š´îvªrὂÅW£æ ¼Õ¦W/Ÿvªe^70-ÁRevxU&od [Á'âô?µÌfç=ZI0Nô^ÚŒÒ~6¹:Á²‰’ω°Ü¯GêúÑ“Aášã8˜€÷ »qÛ‡m«ÿa0…Ç•óë~cb+!`Füöõq«% “ñµÚŽœ‰‡åR4+ĞνG"Îb¯ï‹Å”¢R¹SjTˆwÀWù<ë}H}ù:ƒ]3ó[ ÑG<„WSºmÃeçÕ€ü fc©Õÿ@æõH¥X¹.Yù"”@mð£1Ä!)‘kØb&×IØdÙ)Ùªl‚Wv ¥H?;;œ¤ô£ §¶ FÎFàÑñ[#+t$íEyd$íï¿×ÿ=&Tõ.Z!,×c¹Ráí§®Ç±.®.½8ùY¬Ù.~g?½^j5#ºùïäêŸô!4e¦mŠþÈE怉کF` D9²c/UNiEt\é «Ùd¦w_Þ¼Ädü,ºþ˜i‰ó¡•èß:#Þ÷.yÓü“µêÿÿÜ 9úô=²©Í§½iÌBs’èÔÛxª–gY)ù©@H˜ÑùmµNù¹Û :Ácdf/¹¶N@òŒ'™>±Yt’C©U= dZPÕ“«#'ÀцÑYf®*}ìlrÇrÛÎc\~tÍî+§ÇÁ^tv¼“¡r±OùÕ¥}cPÆ|ZßIZÇr‰ßÀØẫ(Ô.,’:Çí—ÚU”¤´? .)‹3èЧ‚6VÀ{Šš.3ÄÝ»1˧®3¼]x»9ÃÛý‡ø¦w:>HñK‚¿½Q\çLò.åÌØàqñF®xýf©š‰gœ¶(ØXÔ¡E Tã··âœ"‚í¹Z†ŸÈ–Ëó27x+RbéAEn̲aÆûÃI€ÇäB ¦»ôf˜nÀ0Ý4Ãt–`¨YŠ‘½]ƒÊ“¶r_†h¬©'¼ -Kx‹)î™d­ø íìSò„3ØŽtFç•ÛãûŒõœ€ Œ¢´èáÂgt_›šsµ!¦ÝÃNKd›€h;‡ï:G…FsO?ä¿/[õýWo Þ>*²FÇñgxûÖ¯R›µ¹·9Ò§ÕŒ,Bu¥ÚbÓò8Äú!mIQ`Ä¡>ðA–[–l‚üB¿%÷ë­ÖK,üx÷à°Õ¶²¤8á3݉C €õW»ŠãìŒIw…NÐ|Y]‘Mw— …b‹f[6ZõCÔ€ürJz‘Ù å&¦ÔÈò@ÖÅɑŜó¸úå 6ðϾ1}ø=*^:9·etÿÛÙÛ=ì~èÝãNS®ŠªEeû¹èä`0Úö\•-ÎùÑ«[êÖW`Þ-Ã*§E|Kþdü!+ú2GÀóâN½}_mšóù_é!©®„ Ö ÉV<PßÀ>–e߬®9ƒÇrí½¹r¥é À¢…ËÔLwl]Ä£åé‰~ ÖŠSž$}ImêR3f`Ñ&ç$›Ád£>Â6.ÚóÀÞÿj%§UÀÿÔ2²ÜbÌéûX¼”‘` AO¿YCéôFLâÙœ­šÐÀ&ÅØ”gû¤7ÅE̮ǖ¢Ç—7ähŒ;]ÿ—ñ`d-°1Ø¡ÓeÇKJÙ&Ú©·‹¸äð÷§î’?’ì®G†RU>É9‹êãÙm\ž"zÓ™"n©µ«òÙSÍ œ|z¿¢I™N®,¾í]VX‡rÿãÓª|«løΧêг1:^Á±¦w5ÒœYÖ'Yój†3fÝJ‘ ¶bK3Â>²FP;z·ÚæEá¸ÌW>h`•ëCÀÐx”)mÓ·óB…c Ý¥Ý.$0[¤.‡G[p{S¤ìŸªµ}XFcà"†ÐÁT­(_žà@e½)¾'ÙÅ“UÒÙÂh%‡b«Â4|è…'Û!²T?ͳÜ9#YæK–˜"Ùd†úže½éƒ‡¬üå„·"8gJî²6a¡„ëƒÁÊÂd,Pº¡"­¡EÐ*÷A hHƒ —ãñ”F³™•åPÒ¡p gUë~ÏÚÄQn Ð"Zƒ”8:°UWø7æ³>…œƒ$?T˵+®äG^†ÉA¼ =ü†Ídî°`x´ZdÀ¿Žn¡Äs½bñØ~BŠûoò×IOk”,Öz,™Ôá¯^Ÿ­ÕV³´ªÆÂæ0µ©å¬3G>Hù`øÃ®&!E¸1å¾Z°IäX;ƘF)cG°MwA7qêru>ôKÙÒÎbÄé–Ï®ÀáY~ ßÈéú0e_E/v™þ­PEÂþP¾ùn—£Š<ÆŸ5öî~AH+áU líÎÕ$æíï\çCÓ™@Jϩؽ:Jßñ¬â‘aw\;rÑ p‘ô#g¬’í§3w"ÝüP/xP³`\·ÛJ‘%=?ëV–Ú{ÞåY²`¥.­’?NAŒH9:ÚUÏ{@«Ë¼³ïT~Ý'¯d“€óäFç^ެw\šxï¼”j?iÓñ…Æ:ñÁGve‡p›"7Øì£ì>žtegN`JÉðú•uþJRÙŸ%,ÉØñÐ<;—ŠìùXn;ps4Éâû­‡c5c·Zä%Ñβh²Åín¬™Îeh‹ˆ #¬¬¾ O‹j·î׋Խ·ºË¼óѽŸ\ä*ÓA» Šãà.tàT y=Õ©ï ŽF,€=ÏûÝG*'°<€à7Gê›}øS:óû6"›aRùÓG­2¬’ƒ±_)å™NçoØ„ËÊ©"q!aТÞ4>æê,Ã7&¾‰ËþœŽ/Á tÒ;ýô¥K\ÌBÆÓœ¨¹šú– û7—pÕøMíÇ¡QÐ,©Â|È·æ% ýH ï$;Ë& Ø±ÉN®Fzán»§\ÒHêk†pÚñZXK¤ \áÁïäb#Vâ÷Y¾tùÕ[Ë—nB¾tÉð\0Õܯóör2&î_óD ßr¥áj<Ƶ'Ǿ°×"ü½èJìæ¯ÄûZŠÇK,Å.4%ívtûµxüIÖb÷!ÖbW­Ånj-ëâ w[‹Ý2Q ×¢½ p ~c–"¯Ä.ùíÝžžTÙPyšT˜x¦!6®^âå7ô惲á4ó†¨X6 ¥n¾ÔÙ°•âüX?°O#«k¤><›ÉdÎîÍš§¾r×W=žÚ§Dz!b‚ Ûz¡X)ÝA­?ñ÷©¼´Icð¶½SgÿCí ¡´¡ÿC¼Ù|.êúC¡Ä8u Üiöù7Ìü‰7œ¬ÐŒýûï…Ú;ÅŸ ëÕâï¿ÿìõËâØ™s‰LFƒ·²t51m þx Ô ¾¿ÿÞQuÖ`õ§‚S&NŠî;:ŠŸ‚›v“=|Ápîã„ÞŒ¯3y A¾'r“«š«´3‡§—§ä6^«k÷)œÓàÚO8ê*¢]6³'¤¯=¥,#ŒÇ«©2ÌÒ‡¯»ˆnJ‡”ý²]Ãñt¢JjãHÂ,ëƒÍjæäÍÚçÛàGnz€²¨ø¼'ä›é@[+´§;Z†èæíœt„´)¢Úy8ºÌ&m›äõùXàÉóB®ˆÞÄxý)k˜»”Ðî™Ie½ïõ—ê,UoM(…œ¡›R耡j ˜P] "¦+Ê'Ÿ¢1SôiÌoÍQ0ïºÉõ8¦{ñ#CG|2Ö ÷iŠW›PdŠçÌë6 %ÑW+¨â”êâÅ Ò*Xržƒ§îH•Kîà X@ °M䯫þÔ—pgÃã'q½Ù¿Ù d³!<µ½úß ¶- `‹eé&L²áû8¡sƒùÃkVT&œÖPEžÏñ/ã“ð@k°}!ñ!0Z‹Ôip˜Ð']©pCçÃõ¯!æc4¹]/0+ÀØzú.Ó*¾†ÚÁè­•ö×Úå­R{­Z~Z4×yÈ?r#†ÛÄú×_\_ð¶p} ”¸JÝ€˜¬8ÒºMÙº‚l`С‘o|`E3 f0•peíìí¾;ØÄ} ~í¼;ÓÔùgË.@²ëð?‹ j{ ¿,P½EçïÎk©BWø›ìåD]tÃtX¢þR*BeTƒø¨Ä§‡²é#]ƒ}Ì €˜Ú£à¦žbÄä¼HÎagŸØp§mé.|ÿŒcškŽ=óv}|@Š1Á½ð@Ρ-ïÓ^ƒÞ0-Ô.‹4Êžä1—¯éc?¹¢±P² nþ9^reB*$†_K•€NbâË ¬þиàÁ…»áþò/óÚÇŸ­w!µ·ýֻʧbáÏbš#¬W[ïdÁZ)à&ýv¢8—!â¶GßšÂÍŠ= •ÕIª'·a›Êë…¨´×öï›ß䜼ë|~ÉÃ|–û£“ç’2@ ö ñì_Oðè¹Î²ËiÅ Sroç#•²dBn¨¶APŽÌŽ,dçF–åª93×Tm€L ÷@>{µÞ½Fƒ€ŽÉC­Ã )E7³·—J(•Ãߊ¡s¼ m§EÎb¨—Ud=q0Ð!Ÿ©I6½ÎÐYäâJð" +¢>R™/€÷´‡ 2¹% éÅr*!IÑ™¨V©€ipéò‚<”E Ù䨼B‚xX§éE·í3l˜ñÍ3´M­°UŒiEksMìÐùЦÔMÆþJ™Q>¥ªH hêð†œU¦³ñÕRs “±,ƒ™Ä.;s9?C6Ç0?—)ˆÙÀ@6P`{i§œÈ®¸BOÀŽ%Á„Îóy•ÝOF+ã 2¡·D¢·qkFP×MñDzøÁx*š…ÝSL¯ðc.9Ü}­ai UÇíÝÎëÖÛïÊo»ô à~hÛ£6›_ôNÏÁǼ‡Ë:¥ ÂÄþÝó¡Üs$Yl ÃäÜh”×g|ŸI¢]ù3ÚÞÎÝ(—Çiï̪æ}¶ñ™°¶¡æîî®6Ô¦zpQƒüÝW<¶ÿµwyÙ+Ô‹/m·­ÇüÇ`>\ýq†BÊŸ‹Mkèú[ AÂû> ·06ɨîªÐ” Yo¤o7"þi½÷R¹RøÀƒ<®‰Ç;©‚vÔm„}…‚îY¤¿`0Ï™å8;¦)fÔ+,Äjvu˜',¢kll]¬/¢n8ÊL¨/ tÈý+F‚ÄÛ|å$„Z†TYÖ™ÍÒeDh'À‹ì2¦¦üô|< ël|qv…#eÙä™ÈGü“¸¨@EIxæ{vÛðÃøÂàǜׇ½BçÁô]½œý¼1ÝŒŒöb¡Ü6¬ˆï2òõëÉ3εPK„W ÖL”œêÊ^§A¡õ„âe2>¹B, ž )Æ&$ÙQç !f騧CÉhàz r7\/úš6NÜå¯!& Î$·`ž h22(€§¶~T }[Û‚s¤(ƒˆ‡[°Êd©eèär *À Ú†Pëô÷}'¾Ÿ•BõÚ’kX¨š…› BÀmÁуRk‘™rOdÕõˆ¹¿„(]Íj Gµ+ Úæœ&PªHI¥¯}ÙÒ~dpø€5¢[^0Š–ö”ÕŽ²³ª2ÈkåzßB6‚d¡=\©øÁ ÆãÜä,â6WN) q@¥ª~ÉNé |‘Á8Óêåâ‚sá>¤²qªøŠ²RªNÇ—7ú+  ¾/BÚµsZ§žÜ¡¥3…J§åx妳²õ~KXÖ(r:cœ$W и²x5‘ç•ALb\¡áÊb/ƒÃõ #Þu”Q–»øW… #™Š"ðB´åÒÆ0ÄÔQ°g1íZ4•Ü9lÖ÷Å7±Ï*©Ô *`,éŽå?›OÊ¢=®ˆ¦Žz[ýeET7kµõêæVM‘a ûÜ›![–¨n?‡ÇR ¹Ÿ&ß¹Í[›²ÍÛùm~ºmÞôÚ,ÿh\ýÒI-G¶ú-+Âr 0r H·u[ts®×(|ë "Ááj*÷Z`Uµ/Ì»v.wS(ïtÊïÓzíY~w¶±;[¦;/X¬®Ã9Ï8ÊË4M‰[¼DV¢ ñ”qÄÃdzµ(½Íïd°Û©½x_W6-G1Ë„îG\߸z/‹ñ‰iÊ™Ž/û €‡¨tRÀÌ®âD¾B:x†G )GàÚˤħ)R“¢c؇Qùï0•sÄp€êf|U¹Ç´har4J±K‘¦ÙâDfÑLfN³²•£l©e!Ø_ýà ,ÿ}÷þ=ÂÄ1ðRŠaœ¯üGžÏÀÇæç·ßúXðu‡CÞ®ÝöQ§^ôóˆã¥Ë˜^ë óM™|Ï‚„^äÁS¦€kYC³åÏ£ÝýI\Ãkòü)kùþðwG™ýš»`Y¶«”=²ÝáŸÇû€â¡SJ^–ÅoðÇwõN»ÙÞc**o[½µÿ¶#[½³ûß—Dwåß{o¡â²ø¦S%°âÛ&6O´»»¯üδjõÆ®|½U£b­ÚÁ.mÕ¨%­šš¶ÿV›«è¼ýî Ù•?‘´Yöð 2¿ &8Û©7%™ÙEÙ/9 pÖ–£ ?$#„زÈfBÀý9HGðº%í2ØG“—"-ds:aÈ´;û5o"åo;uÙof`¬åBàoMV5*\¦§erN;çd©Ûyõ’Ó±í©ÞÍ´ê¯0{<à¾j…ƒßïÑóÃwôó»¼ÓÙ{×)ó¥aä=´v—ÙÂâ‘)äÏïêðó¨s¸_6iï†ãÅê¹:u¸©ãz`P 4ðX&q$ Œµ ×"œ"Íýþõ#܉‹Â}³KèªD'¤ %ºš6’P…q8…ë\¡ß::'˜Du¸À‚7;v XšA‰º)A+>(±»Hí°T7 gƒ]‚S¢ã¶äŽA‰¶M„‰SBòÅ£ƒGÂd¾j¾–›&’+ð`RËixøwøÝæAî}¤£¯`Š©ŒtÂKÚ§ëWlá ¶Ò`D>î«ß=‚¦$SK5†øÐkK7Þ·Õˆo˜á9àˆöábN @±osW mœÿ"åÊMÚÊ!„ èuïHu/§qOrh"»y4 ¹ÐÜÆJ¤3?ЧÁ;€<¬ßâá—ßìA`nNíÏJøŠ”öÓoU7Â׈eh®1ŒGI“ '»ã‘陼¬‘¢N5q[¡eøØbiZ¼E¬„Þüw‘þèB—z#·üÂSö¾ÀËâbÑ^ÿžªXe­Trc‘ªÓÅt¬jg °NÝz–3‰¤¦9D;ÑÖ݉Ú- +@±¡*˜;A;IèFà-à¶ ]µ%«æV«1ô05'eTÕ^Èæ&ò¿¾(…õŠSùø)p;a€*•éN“*RArÓo!n]äg7u39i>áHüa<ÐP¨…ÿØüoà eºÁ"jŸÜµ]¥¾)ú郜¬˜x±:3P"Ç–‡ÉÆ6þ²ï M·/:ÚULhƘŠúz›ü–ܤn5þN’áÒ¿a5ov_Èsþ¯™˜‚U„/ Ì5ÚK”ƒó l“ qžžfÙ)#ú¨ªáx—  P‹Ð©Æ¡õüPÎÁ>¥¨4eà°BXö1Ñägòì*„õþ[Ñ£žÀ1ú1½«G Ižà˜¥£¤^’Ë:Ü“ˆìçÞ•®þ„oþ­ˆæêQå€9 ç-ÅA¡ýu2ž!ÚѹUC<3¬ájÍÍ©L³Ê¼Í mxWq5=WxönÔŠådA7:rÇø›PøØi3¶RͼÐ1ÝŒÅ5Á±°_,áÏvQ§ŒÅ£+®uŽwÕij/þ5dø}ötK\RŽ_‹]Áa%ãU_¾{ççTÙÑäѪÙä•/1Å›eÍps¸Ê…€äQu€¹dÕòë¹óuJ¼øÒExF„¹?¹34šð‡ßFÕJØw M=Óù¡ÕXGš¼vY„ñF%|Ój‹ŸÇÔš¶×uù°’O­@­/)Þp{Ž­ç'Zå‡ñÚÔ0ãy· .!N‹ME”XÆÏ™ÊªŠ¬eeë³Z×V­ãS©"!óñdÉY0œ»õôY5͹h^)0òú3Ì_㶆½¢æ °ÊØgÞÆ*ó³RÃv…î]´e¨|xþNE¬WìmßöÆ¢—ØîQ޹”UDöš,”˜e‘’ý=ì$I´ñÿ6 Êd“0~xÎ’w0c¼ Yû,ZÑ¢a¡PA੉aó󎚀2ç‰Ï†TÄRô·‹v¨’û(¨Á Іÿm-úí¦÷mž„0`Úãopæºá9|àyŠ˜Toå¾5d5§Ï¡|÷ó4…ùÉ4¶ú<»ÐØÕ¨jq¤¼©©0#ÑÁÕèŠlôµ†ƒ×…\¦Uâ´]ÉÙÇ„eÐñ˜Šªñq–ïx”­óð¦–/+•:—|)±t®Ó ñU‹â†ü*6Ų²ûåj¶Qù@T9Ý“¸ŠÊ+È´ú¨N¡jòiiP²^2°bps³Ÿˆ`ÿP^UÕ}»jê~•„f;ºù “÷ó]çus“—ЇÒ"áb€Ó[:ëíX/54Ô)ôªŠZŽ’µ’R%%åXýºà¦æŒCRx‰.’]HDÑì=£D|Z#„PeAæßóê–²5ÆtíŽxPÊ“óªÑÖÖêp¦‚jÈC¿ ’Ú^rÝÛk!ÅXbø¸ŽŒCðr\®'IFgõ/µêcµóXýI×f¶iŒôl,e‹áÛ–îBá<`:J÷¢ò;K+¤EéØÙí^+‰ÿÊ‚‹?dÜDË*ŒP4µ]ÀqSžÂ–)7Iµ)ªp).å¦Êåï¨| ’}À×él2½×¡˜ %듃 †3!qµŒ0âƒÜuÓ@Š3J¿¯]˜뮤oP×m( 1í”ÖIs>¯Àñù“ ¥vïûkîûÃWBÄ8Iðr„‹…wˆ„<–…Kʸ™Iše~9€¡wÄûl6Õμ"®i¿WøK%x£ÝàLû4#t§»ì¡ƒÚ ¾H;¢ßT\ûkí5:A‡K1¬ŠRAS´@eKtîÄnƒíJó»>Å/€¡¼gk¹\4ë„Î4ìN ‹JB8£<n&pŽÈ°ˆárdoëÃN+]Úežc9ÅÅHwrG€©G_²ºª]'¼—°ùÉþº²ËÓÁï›q¾u8ÁlrãÊ eK„å'®• ‘q¼™]ý*Oðdh»vNu òûè< `…vQœ±€R숫 تB×I‰B”#e Ñ;“`h¶B&dB•Ù³¢3ÆSv=5€»ýÁûØîðúÞË!e/±9Ã84`b€ èéhf#e”ÌòÈcY2ÁáÅCäã~v–(ŒË²¨óå™I<Ñ#xð—]/µÞ¯–]µº1xÜ«ÐÔ‚1j<ÆöK¥šÀ!ªÅ~;/ÚJœªœ~®Qº¬€nZ…åÍH¬zy{Lïi¥ Ú_—™ê§Úc9ÛU‘RÌÚˆ#sÀEÈDÛÏ& J,Æñ ’ ¸<$…@&ê]dN(}ì—x/-;ùe,ä ¤›(?¬ÞÑ{CÆnp0%OULÁÖÏØŠÛªÑÑ×i¶s6!o¬lBÒn!ä3dâ‹wd•#Å+GIfÙÊa–#Ã-G»ì»ìÞ¦7ÿiOÀ€=Aøõ!zkøºS[ìH vK7HT˜ÀH{YBù²ŽŠqå „iqz³ÓÞ%FiÔ¹kvs×9a0¤SJ9 vn>|õ8•hqR2þUI'”®Â»€ÊE&w_ÃÂÀ^“®Ô ™›J}¹§z†Û=äС—4FÜ÷%Å9Yû÷8ø—u(#F+ªFt6 “Èva#ÀIíÒ—ˆt—©ŒjyZÏ V…,ÓF`øº¸b§ë6j“¨UÊ_§e5‡ëÔßrÞ­àÏ÷[üÊc>þ®ïùÜwJJ¡å·Ý5jwž…Œ>^¨Çd3Völî±v ÃúXßÀsÀ„  V†)c†¸,.$/ .)²H_ÌÇáUis$ÏvÙ=ru7óM{“K³`w=CèNÂߨùë ì;&nGÃŽÏRø&XNeA¨)é¢8Š:tÝÚp2¨üÖÛçKü<¶s„Y¢TGÍäl»²D‘à 0ðóž¹Ðh˜Ùödð~ÁÆãB°…¬ä@rna狎B8í¡zÊá¹ÆG©ñQamßnÁ0ŽVÈTFF®oåÈ5Tì˜O;ŽâðS8HC¨ìNؘKç¶ `+›=Yb2<–X9Õeñ™/ñqGQ îhç0¤ ˆwNy”O(ÇŸMU¢,å¹â "ÈŠ‹îQFW‹yÖo”îŽ1Ä&ÓTŽåé¹ÅbÚãÝ;P¼Ä‚Êc!K:9à-ªnX•ó­¤d+<)y”¥^ùtc#®V:~)ôqïèÍ¥]ÑÓ¿Ê»ßlÝF\˜L§Ýë^ùw•Aaé½ qèå9ÜXã(s áœÐºVµÕ¡Ú-w6¼šž£,>sS‘ZiÞÂ3ž )д²en"zùPWî©ã Hx{õÙ"WÑ5Ú¸(ëZiÊÔ J†l²¾'»rbj +шÛ:µ@l¤.g¸‚CökŒ&s2ûEUhþ)¸œŒ@pé  B zê>.{Є!@öð÷Ãñ‰ì‚ÊŸ©t¦ëT!¯­`| ©Ÿ0¡íßÓ ½Ý?ÿU<}V“G¶=ÀºQèC HA'IÂAQÇR"A¢á‰å¦ ªÜ•˜o¯LݨP|ÏË£ÉßNñåÁ¯:Ç&$õTÇß.þƒèTš‰š½à%€‚fÛ²-kùH¶VÖ\`©³I¦ó˜[{´2&âÍ8Ró–¨v 9ØDWŽr½Lº½v䈹…ª?8Ï^^¢íJ£€3?wªÆö«à’^S†MD„qpØ2cœÞÐ:ù‚Ѭ‹¦r6ä5"ÿRNÀêÇÓv"â2˜lÏ’Ø{{jÝ—˜L±P|<Ñ)JUSPCÂÜ~ žÝ•“ÕM•+Ìh¬þxÑ>ÇkÅN^U²‹Œ}uiNÒ`XðOÒ”.ñL3Ùšè×jÖï¿÷ë¿ÿ9Î r®‹%Ô¿ÍIªÝ±\8ø¬„û*áڠ{'SÉs²æl2‘í<Á×Ó+@6D“:æYƒCÀ@£ÐG}ûOѦV”^‡x„2Ý«Ã‘Ë hÛ‰¬!P^NƇLØÔj¤[(žç21â¶`è@b™kè õ@'ÛêÓAÇi¥¨³´åöÝ.ò€:ºÂæÆùÃÖ¢J(^Á‚)õ²Èž6tû\âà¯‰ä³æKþ³¶€ßÍÞ[)-¡55·(ïàØLaïàPÔýFÓV¼ìéó†N¬™n×”À­ËdLÓ'$93`L óÀ–Ça7]FØò¡d±‚«T¿Ã…È4áÜZqrŸ ®«Öã»)Tv²°øN³× ÃØ¿gú»ÜäY´GÐSØÐeTx›g”Ñ—*Ëø†Ä‘Ÿ¥‘ã-öE_©rAR*s˜¶âL W0àf±Ô1›¡¡v¶SÈáC¸´¿Î®(lÄ`Œ´Áô3¸^™‡ÏAÊÉN¼'§a3|9ðŸÞòÈ]›K¯\Ö¾ goæröfÀÙ›)ÎvMz¸Ê‘ÓmG;Æy2š=|§Üž$FÊŒ²ÝÙÇhCPºœ{HÓ•°sBÑî X™ˆÍ(äËÃ%3n>àü°®ìá´›Aø…î¿m¢1G4þ‚³ Áݱé2ÁŸÄ¾¬é/+…vÑŒÄ^°ƒw»ÛCßß’p>rg´k\ÍÎÝ–2ü7÷±ÎP'Ø00Þà„Kˆ=Í/s¦Õnü`<Èc6ÄwU<Oñ¦õRìžSCÔ ÓꇚípÂ:X'ö}ú;tíöƒÃ“Óq|Ó†ÚØÓ ¦»Çé8ö¦cËzi™é N<Ät,;œV íÔ ÖvP¹  7mûÖޝÍ]’µfN {txâ-[n‚h/¿ fÖ}0¥˜&â²há k—Ÿ4Ï™[XòÕŽ8¥MÐéýÝsïÝ.oži»ÏpÑÁ路éFØ`Gtå´ '£ÇõB»SnwP£vî—ªEí–LvºIFh”âÃ`<„£¢6)œÈd3»šœhøUЌȦg™Ñæ¸ù"&#<’}ž›;އ² vmv÷MV``ãœñÕ2Y{fè­mm†n¶7äþ&Õv<.‰ÂlÚë—äÈ}¹¦]¹åŸk–üB²B„•"–§mçíúp<¾œêó5Ç[5ÝTëÖiÄÀ°dúsÌ!C ˆÏ¨·¾QÉ>"beàV&“ÛœHÌaÂEóô.eûÎeºöôÄsRÁ$ñóF“ñm 6$1}øñ1͋׭ãÃ7 –¢gžÖùËhÂ’‚G+óqi6F£ñ fvd_WЦh¯æ€%ÕÀ¹wÑáó´L°ýe 0™F§U•ëPŠ'°gðr‹^l»c‹¼õËøD–eê°á‚Ô{P1d ‡S×#vVùГlj„‚“Ã3‘erÒ^w¬ÆÃô&& …ç)°oèHKuâÐAYhÓŠ­¸îcßÏã)(Ø©„º g<²o=ßzŠWN¸òs6bIPY"~+ÿÝ‹‰Üó¼m]èã\á$îoÅà|&iC¨¨:E÷Cú0È%çàZ+¯´ñ8D¬½‚rJá¯!oŒò…ÃùÞúä©Itû‹[GÊXü‡.Í p Ã&âÛxÉe°‘QVÌËè­.A-»7»9±œí2 9²é~Q£½n º…é݆ñ8½Nõ´ý<Ó¬Ò‰y£:Og¡ç™?CŽsud,;ãëõÓ›S@ ŽBå2`´w Áûžò»s¤K¡'¾ ñû Z¶GãÁ4ûŠ\áû~2/ˆ6™öµÜÓÏ&ª÷+ª¶Pˆ‘÷)Ä’‚a®X¨¦ÅBõ^Å‚°ä‚pCÄ5$Êͼ!Ö}Š9$|‡%:ÆÌ¤ÎÊE´L]F îà —Ã+oßäì-r÷|/¹ñÙ]"çŒéOyŸ:Và?[€<¯(µþÛ¿‹ !uØýFŽS Re¶ÇÇô£‹£Fÿ©S'øRær†e² 1×¢Œ4ãÖn®9rص î-:k†k£ˆ‹–E+OG*@ZÁ_ÿ:PñaZ;è`ž°KÀ?×Ã×.<ÑÉ@”²W¥… Eôógé…ë ÖxÑ\*éÜå?X6?dsHL/ ØDr–EW/‹n0mÓÀľmâ–n€oõ¾—䛣ܛxç]k’àô&FxÉæ* K3_‚ƒŠ,·‹«÷çe|‡³ÖYÇË{ñ5s¼.ðåB!«2J~-uXðˆŠ¬š¢È\ÉUSѾÑó$âþh »v#Ç8âhyx¦=®LˆÚYïÂm±®ÕQüe$ ÷ÂöRJ (êk­ä{ƒÓG®Çg‹¯Ç-È®^]oA>û\ ’çɬÊN|Y§GJcŽØL²Èâ„â ,ÏöZÍÓeô]]È׳½®:géúÝB»³Fð$"~Ò*ë8H¬-Ehà?H‚¢¨9L)¤ã™Õ4YÄ׆ùÌÎf0Gê mÁö*Ä ŠÏgd¹„GŽœæÐºˆ† oMÐ ¨ªå` ˶ BZ"Ï‘ñy†ÃôN~0`lŽB¢j\› ß³9¥KZF'©eÈm&¦eÀ„†J†ÿ±ÏEÞ“ÓÈ£MÑ>ÉqlíJ†F ª²]†¿çTQ˜Þûêóí' ™8OA9v”í'ùó¾˜$<Ö’ðØeïÄÍ2.es·Šp—(ùò4ç\ª­Cõ1þ骷Ÿ~’q ·¡ö{¨,µÍÿâÉHo_ÈÝòvY« !D¼†<ÿžÚÜÑûAxéî;Õ…7¨¦jv k´ \vt°ÁDHïÇÞ†áÓI`lÅ6ÀÿÒH{,Ž&1P Sú@TˆoNƒKÍu4¯~‹{š¯W#ëÎÂ\u×Ù]øÚ g ^™sëÌ]iî3Ü„Skq#×­·ÕßP_Žl7žì­|Ø+)s7é$põâqûÌzH›‹Ãr›KŽB?8q+?ºšœAÝÆŒ§u AcõöPªB@v@ý•ã%?p¸úÐÃë?ØÄFÒæÂâNʰ(½Ñ g~°×»¤ëÆïgÙºÿžd RÑð¦FgÄ´(×™èÑxp:˜yfer…6ƒ[>×e^§W'¿ &²º¸ÂMµçZjLÕ©ÂÎ2$à-Œ>ö)¤0ò2)Yqª8ˆ»€™¢1ÂÀ}2^Œ÷©<â±NÇz;ÞQ9Yµ´°¤ÏÍ\÷˜¦Æ@l|Aò#84Û[QM_çßL: 0"–K©ª—ؘÈÜ=À›Ûí)Ù¿½˜ìßþÉþí\Ù¿}7Ù Ùþ 3üìùÓfX«~Ò¶N¤©™Â6ùë§;ä~bGU8w<*GUsçÜ%ŸŽèe³ç¨?¦àpkmÊqz·Yf§k{KÄÎØ¾"1Þiói(¾ÜbêÞB –uøoJ”4sßf—:'t78%SŸqé‹<bÍ N¹‚½©óºÂ?ëBT@ý2vˆ¶›™ŒŠSÙ2§]±hxZË=ð:Ÿwð ÞÊ;ûF®´”ú;ÿFE ¿ñ¬ù§8aTOàŠ7ã«iIÿ2׃&B8ྠ4ù) r x/דÔC„€¨;RFfÍŒ ±àêu’E¨p åÔw"uÝÓó²8¹r#3L5¹’>oÂæËV¼«UŠÁ²>ϵã„+Kïq>4À†&I†üÿ»M?D_<ðÂ0JR@Å lö—÷d˜ÝRjBj¯q÷Ú#âÛÖ–uù ÷£p(ÄB»È’¯™Ðˆ¤"°åh÷±Œqô0îƒ(m€óÜò sÅñÆáß"øpcÌôÍ"ަߑu}PÐ Ì®©@˜¾Të €™³ÐE¬cZè{­ð¼¢·y§ÔVøÅÚ›xWÈ?wí*C—/ÅÃÍ4âŠ'Ç —Š_8á9k½ã;é ÖΟæošîIÝ †O_ÉÛ/Ò~ /4#¸ßyõŽ.¦W„se®Ó^Ïx“RQò ^}åXT䈒xQ,:åd='aËlpEK+fV·ùwREtÓÀÀX+uaOe˜+åTlyki/®%Ü ˹ Ë•Ñ|Ö}šOfçc ¿L6J#ƒ%îrÓ×Qçpß]–³:Fr8T7¡î:à5öˆÓ0÷W6íÇ£ñh2ÍÈáW6©B'´;aÏ• »r×ñ¦y·NãÁØ0;¡„Q>’ 1—‡rOÞÌo=ÜG¶äÑ^ÄAºM2*¶2rϵZCÛŽq‰í8‡啨,BÄöªe"ÊCjq"¡s®ã››  ô·é“—< x¹\=•ç€Ò—ˆä® DJ÷Ò~«JåŽnc Ö¬·øêÄÙ£¬@.p¼ù5Ü0ãE¡±ìô^ÿ¶_~ýE°üŽLzÙ®9R3ó¥wpI#%ææOG¥îæb2Sz——$ gãXëƒ{y¨Ö Ù?SGF S{ÙÚ,½Û,¢ð]I_Ëbþn3y,·³lMç0Ï¡ßøï-rFÿŒzųϠW¸È0Ï¢zE”š+oÛyò¶]ÆÜ«QËÇ%Cì;ÀÎóvÝÈà={º™ë£‚Ejó‚Dƒ™2–q8¾³/Pr‡$1Tªâ­y«RÄ0òw$¨ú=¿‹n_‰€Žäî•Ãm®³pÞîµ ‘ù»WÒf¥­Ýƒo¿s-»mÅp¼5ÑêIuzùǺû,M3Nm i¼Q1é!¤ñ¥ü1Žß# (ÝÄÆÛNän_Ã÷Îð–òzL÷pY¸è¦ñ*ó©ÌÙÒÜØ qMB„²m„p.Î¥e,ŸòQ!(¹\Œ7ñÈFn~¸S#¦&(¶`˜+èpâ«Ñ(;ͦÓÞä¦>à9¼)‡» ¶t©«¾@Câ½äÇì rÙ6’]d Bî…Ðré彸ӑ#1žÄ:J&ë¡Å>-f!ÿÁÌ­v(O6¾YoúkàVag°Õ°à²]rw·óSðEfÌ'XXŸ¬Ÿ)+Ý˻ֽ|%mCÚŸGÚ&lT:´ã -6„ÿ\«ò"wPÐ ´òšçääý×dÈ2_¹yzoÊÍÓå”›§wUnž¦•›§qå&aa·åÔj“Úƒ/ºxMWŠQµÓ¡¤!á-|:.Ó®êÀ÷É=æ¢÷+å #Ì>ï*ÁMéÆ.ý=‰°Ñ󧹈ˆ þ îPnÌH$2U‘Êr!F»¹tÁë ÁÒw/z—jÙyLØÎ‰mòn¤æ¢ÚYïš2sîK]Xâù÷¤w¼!½ãÝè]oE³w§«Ð[]‚ÚG¶¿äÍØÓ97cÏîãjìÙ¢WcÏît7öì7ö4v7ö…ÝŽÝçâWcwÀâŒq çnl90N×Bá\Ž}.4Î%`8ŃœÈÃ3¹[› Šis!q^÷.áfL¥ºö)ÎÊâç'JšQÿi±Ÿ¤sDò‚û®~€ îØøûö<åjÑ]<N;ÚÚ28X¦zv<êM®:y:Öîu¢½%÷Àaf&ëÄCN$ï1ž¥<)áƒ÷õ”½j±â³ÿ§âü³F ®ªüÈBU›©{9o¹1ö·ÞpÌQUdƒ&W‹7GdU—aYýʆ³àÕ‰ÀaÂÑ~³²Y‘ûèúº[£K¦ã³Ù5fl’¼×{Ÿ©²ù|<|¨ Ày6I/Ë0 LÒÏ_IÝðl< z¢‘Iw˜Ý”­§ãáxÒ“:äN!¨!·ë{¢5ëW*šXýr2ŠÚF5@(Zì„Ìæ~(ÕUyö«OÞ_]`†[½³7ÛG»{»ûUG]눮PŸLz71j;o­]qÐÙ}ÕEÝ^w­ÆÄ`'éq:³ø‘`bƒ¸sÖ¹½°);ÕÁàá‘Çܹßý’TRU±ã$ÔLCUé±µ%míÇo?~§âcÑÃQ+}´1ÒL(àÀ˜P°o‡ùþì,2Vì'¿FS~0d+Ú$@ qÖg•ðYt‚¡—#Ôq}hA¼)‹*&·wþ{õc—¹#h¹•H ¿ ç²̉>,¾4[HÀáFÓŒP(®K ååe²UoêFQNиÛÓKÑ‘EÅx<‡W¡¸)ÀêìÏÆ̶“¢OL›”ƒO$Zt<ž:‰‰M°$`4ÑVË-Y>ô‰ËŸƒSpPZeÂý5[1á•…'¢bÕìNëåXýÇ¥Ú‡ú ¬Äa®&¶ÄÒOÛ€Þ=ý`òl“Ù%Ü1­8r²~ÿ¼,De½ Ö#fóh˜£'ÖàcQë4¼f +/7ÁXcÑ—-(þ„!Ä£±¿@/“Ô­|SøT *ô¿7x*|S@]§^ø÷åÄdÞë]~„g¢"9 r:ˆñ*‘î¼ šÁz0íÍ`ÝüŒÿ•J§ü„Èèw8,W]æöNø¬ý.TŽ2¿ÁçBu;Z§£ì?ËUU_â_kÕía‘Ó¢SÔ¯3h[¯¢2ß§)K8WØ€!í+‘ìØ«e\úîy¬ISwºX—r\ïÔ[{§ú¶Z Õ4t²²±»¶al{²š£³òV±C—ƒC;êͦë|ÿ:€‹Vwv!d"­’½shm»~¤U²{Tïì—ùãu98ßë4ŽêŽ‚›˜"æà%°ýð’áôÆwšíns'.·U?Á¢éÔAPœ)¹Wt§½i¨¤ 9§ˆ½ƒUôâ-\ÕGvC)d@^DÖFB#§¶TñìŒBÐN¾f?‹,¾Ý*:5Î —xwË­4*Ð本–Ô€LûBð„¥ 'å`ݶU ½ŽQ¾$ Z'à,:kŠc *Ø€N:ÖCÝ ñ:bn8÷BÎK¥ëF#t|Ò¦fRN „*MöPAöm¢ ÈRËè*̈́ÀÉÍÀð¶ úѸ3Õ qA¶¹N+ÌM9ÂUF¬yÅR¨Ã4ʨæš÷䯶bÕè4 %¦¸!x>Iy„¡NùÑ‚ë‚@ñ;´GúÛ„K€ºsŒ¶¥•ê@A±=Ö{3›éªñ‡Õýáeêÿ®‹þo«V]ÿäZéÿ~éK×ÿÝÏìÏšÿÕÍ­Íš=ÿkÕÕü‹g»­ÿÛOÑÿ­Ô€‰k9j@AÙG¦ ÜÏ« l­_|[o¯´wÔZd¼m Ö·Ò®´–6pžÆSy•=E‹ Ö&†µ|eå2§³±p½“is¨9(¢Uƒâ *HbŽHüþþHä°ÝpìÏø¦‡á#ê­V©Ýê½vC`Èê%ȆS†ML}jåÓi^‰ÂP "RöEæà_3D‹dôLÿ¥p¡¥Ô¨c™`ä/)ʤšžr•*c$(¬Cþ¤E•YÕØá–– W¸¶ GA8 ºAw¬k‘÷•±~¹£R4™ñ>ÎJ•ÊœJãL­ñJm¼RiúÜ£·¯›;†¦d—³½ÎŸ©úÞ&Ìõ&‹dÍ÷Ýr€òî®”{ߟ‚lÖHItÙn´šds¾Õ0釄n¸!>OJG,ë.)Aº£ú^û¿+âþè¢a~%ª#E1+s÷Ñ58nÁeZˆ×cguÚ€{ñËÊUÒóñ}ù0qüZ{ÕÞIE+ë±êÂÕ»ÔfëmöÕ¤tö¢{¾ò^,E·¾Ÿ­[Wíu·Ç­ˆËí sðÖ‡û„töjêã^Ðh&» 3C5«’¡ H“ßÏuƒÉû.6A«¸ÝÀˆª ø#tèдï¢ìØ_(çñ(¸C÷(¸—í2Ó7Üš åL7nÄPsˆ@“Óe3cºØö€ö¹¯™FK£+MÜÁ´$0‰kt4»þH9†¼­ ±üjÔÒ)È7ãI7M±9>èl_@Ù"e3â"Ý&±dÕn€°[Ýì’ä?'ˆ¯¾ê(§¢! “,ahc™Ä‹¤UŠ¥¥§¢ÉG˜hjñ ÕüƒäÛ—ì± ¼áÆ—’ÅŸ{n“ɣ⛗Î&¡1À™ cûãúM#ˆ5ísÜjÍqmÈy{È& ¢†¦CѺtE6QD¤V™F¬B´­E@ËÈ2²zN·Z$…,KkÌüÒBÓ$KkéZ³ S[@Ç–w¯Nß"1†è$u.FíÞH¡ B[,™rï½§$À*õéûÈÑ—/Ñ$|¢È”‰Iâï}8É%g¼=²²1Jct‘ËÂh4¾¡Y 1VH¥ ÀïªW©ÖzÜZo®7ÄŠ‹õ]ï1¿¹F"h†–/Þ•°~~Üa­4Œ’A22Ä,nj»›µ¥â$6wÁq ]¹©ô\ÅX?šÈχzÈ”1›ZbBßeB5-Ü,}Ó†]@üšbŠ5¢”Þû].Ãþ;¹ÐößÚ³UüÇÃ\+ûï/}iöß{šýY󳺵µiÏÿ­«ùÿÏvËþÛAÇòhÑî¼éƶà~6Ls°WNq›‰ûãÏ«+kqªµxçM½Sß1ü[iXRÔpš1‡H³(ó(.Ó®Ü(p% ›–»œ)’•êÝG1r6ì?‘¦“—¥&ß&Óð†ôöÑð3”€¹ÞÐ6œRN—:¤Dü²€#éœ*åèËHшǨrÂ"ÃXbŒ LqꘂFÚõH3?Œ¾`É =7! jÉžÛü`µ‚– ?GŸ´ŸsÝ ‰i¸ '"ð DIšs-éWa¡£¹˜å ª„•²H¾™, šs1oì#^¤²@Òþ4àè]/ߢƒ5O»ÿ0›-Õ·ânµ=¤Ül k)@]TCÔ·iÖwê£S¾ µ•J§V…[ž ÿx„ã"¯§‹©ƒ`f0nÉGÔžSÀ%2+7Vþü•P 9'7¾4à<›=‚/ HÞ`@fÈoÄÉÂÖÓ“Y¾u rÜ ‰«K¢b.6T²ì¶zT6 çpáqŠMÂj,©¥‰S·™Üúª!V  {ý¥õüiÆó@üÊè¨BÄž«±æN$Oõ§Lg’dC.b<êçnÂ?_=×s¢EW< èê)í‡(VôÙDŒ]ÃÄ™c–/séM„ù¥ø{é¨ú gÕ¼W-TõÑÉþ9¹4î0²2²IZ”¤\K’<*¶²Xª’܉úº—¹oÄ«Udìk$/¨õI/"2¶·C–áßÒpŒçTK¿ª—`5]kﶯ †ìPæÕ¥Šú8†V5¼»h³Ñ Jì`¢Âí$zÎÐ[¶V(L>}Åj>£ Y&RFon9vý¤û¸ÓfIæÚ¡<ÄÚkÔƒC ƒ¸Å¥½Ì¤Á& Ú .+N¡ARÀ?æz·î³²?æ©Ë#ä[½1ÌsŽ­‹½bŸ˜qkbẖU‹/w[”*èŸl/ƒ5©ÜþÙ]Ûôg '7²êcRúÒG?4º]ß;v}+Ï]n ípFÑìÔj ¿& >KK:åsÇfª•ÛÜãv›‹Kù§UJ —¢üŽÅÔ×Îæå´Z’ôïpŒˆŸ#yæ&PvÄðþØûì(HÇ_¦Ò.9Ïêh*Î<æ%ó}ç¸f…Œ(qF7ãC8ԕݲë!׼܎€Žƒ GÀ ÇÁÍÄó°_§¿’ôÌïkø<ùnÃxWÄž{^ÿ=ñzÂU±½Fê"Ëw1Á½òK~°œö£kJ¬ ¼d8÷“¸`z5 Ó#y Òè˯Prì¹7ÖV¨¶rÚ9ÛÓ2ROüdöB¾¼_êX(ÂÈ7èœåöu¹ÃÂê—Kµºá‚©` \÷h ÁŽÚ¢ ²yr»œÓ¹ÝrÕwº`}¶3œ]ÿ"NÅK âщꕲµ¢¾ö‚õe"6“T àœÏt”Ð^Ð\x‹];ù8\çñDîß×™&¯Üˆ$Ü>È&¬ö>¾OÊLI^Wå€éPÝlªÍ0áÖ¾§p´»üˆ&Ù[%´ª¶²€†#AÒ 4¢‹ëÔÓøûñUËv *^wfO@Ô)ˆ;RÔ¼þº„ú_'mÚ9ãSÅlJZ?ûáõߢ.àTsQÆäÆ‚k©‰* ÙÃaŽdZ ÔË@¿l»y£¡Ÿ`OÔH:hr»…¶’t?³[<äIùÖ1¢öt]“‡í6Û¬*[%dÓ%]s´³?úBåüJþ–J9>_KB µXžˆœlg‹[ˆðpX :<ð‹:âUœ­å™²È4yý68}n ›]¶ÖæœÈ#aV¸û6¨m"EšF­Úâд  Xo?AU¡Þ𠈓UÈAL-0¡æÈ¾PÐ(mç0G˜é½^襩IclˆvkÉ )WÀ”sOr ÝïžÔÒ{ŽQº HƦäñ>3‰”¢e¯GÅ\[“\D2úÔ5¸õWˆÖš¾<¢,šX¶²–‡M^Z¼<¸R“¹–‡MÏò°•cyh»–‡9ĉ£8¡éE~èå!kOuú2*!Nî¦^9ΤÞuÙ º5Q~@Âg¯!š”1ç2â“2É¢ÿ˜oK²â µì_¦ru¨-ÈŸÊËT§H åÜç>uTUM¨ÍÙyð\¼ Ð…ÆÜÔPgx¦Êݩј›–Ý÷ŽÔ îx–€ÜÍVû#A»¿N ¨ÿÙ_áÿú®Ÿ4þkÿùk_züçýÌþ¬ù¿õ ¾%â¿7VñŸrñl·ã?w ©‘ŸðSÓsÂG½pb"§û#Bk•Ú㎅ë`m®mT7òv.¹É´¸œßp@ÞSÞðNW#â(No=þÐîP†»»1ʰÝ·núÎc2 #TE7XÑt*tB…ÐÕ¨¨Â‚ ¤ûü‡šç§3w“o?ÄöŒ&U\è¾Û-ŠØPrSUá¦ZøÚ—ÑåGøò-¸ Ûô§õ~x]F@öŸ:\M“•'šp cŸ}ýÇ!6'¼Ð€ _|‡‘´¸eá•  ÙÂ!¾ˆ”1ú¤+dJ¼ÞŒf“ðãhÐgâᄼÖI}Wf”.9ž#è\„eX–Ѹè7­g@æoA¡qÄñH×ÙUá›ð«Š#îG¸Þ¹.GCtI@’z—i br`-º€%ŠlØX„Ý‹¸Ø" l®ÑgCµQzËÀBJì§|ª5=ÆmÀšRóÙÛª³ÒœÁÐÈRX@Ñ#{ÈËL0nÄD%,·Iœøˡ׵f¹¨4¸†^M?ÞÀÈ‚¢>£3ÿM4è³;¿ £¾€íK¹Œ¸Í·#?h¾N£Ë Fj‰€®¨™A8RáÀ2aPé^p Ä¢€°>‘€J{ýþÓÉì9-3fÓ8oˆ®Fèh–! #Ë€Åè³Æ.µçë­ã2ÿùgüçÎú?6°2,X¯QÓÙ3¨rFŸ{À(W½h€-ú~íÁ"DÞ‡ÐFù§l–c4O´­\À/_ÂàÓpô9`8ʱ¸ðuX—ÇZ¯i”­ŠîÓ#åŒÀ6FFWëV@¤)§â`¬h9½_Pd-7ÄÄY*Çÿ̼”Räx/ªÞÚSxOB&¾„}ˆ¶ÑÑöÁŠý"¬‰}¾â‰[—Tfi¬ 2ÅÓnA‚gË.ð.埥zeü,ŒìÉeây:öT£­]«ƒ]Uüã[ÂöÑJ».KeäÅf…ºq#þ@í¨òÀÃ’OÔ•m‹† Kõä´'– ÒƒÂÁÕ Q¨¶EÕ¶ôj[²ÚVþjc!³]ØH¸ )옾™SëLävn'bÂÕÞæ¿âðË» ‚­‰Ú„¦:šNG7 @–Žª={w™âq§0›ÌÈHÂkP{V,;@ƒ‰:sû´€QhÕ”;x;(>iF‘.kZh]Á{=õð]Á)“$Z^SŠIlÏ…ÖÇ«@[ ­\*´œÈROâ]¯šÉ‹‹·Ø`3(áÀ¶Úð)fFµ*+šÉp8vš~¥qC܉¦kI”k·éqD}ábZqÕ©Å+žeò<ß}·Kg#H@ö»_ÚË‘ÞhN sµnÇ%“‚mâNÂí©#.ØÖCô#Ž!–uc;Ä^Ž/çM+ÒèM8qB9Œ£‹Ÿu/d‚¦öøõŒÅÒp¸¾ÓƒïGÐá¥5º¨3™¹ çjäDVW¢ÂtúM‡cÐ4›°ŒiÊÍ®ŒÛ|;FA«7†9g¥£Fûèi{¯ÓÝÏ8úððáÐåàôý[ñÜ|1Ñô&ºi/-@:EujDD7)¦þ£TVøï1œ¤(ËU¢¡(‡å£àã=}Å>Þ§‚Š·0£}ú¦S¦•þåâx/±é¨~¤‚¼sÆfïw¡€}ÊmâÓ^$&¹ÑÙ-»b“eôÎñŸô -N‹Iv37:‰ fÌò]²Ü!ú[ ûN÷^,¦n”‘—:ºÚܺ´kâh)ö˜waµËç"Ʋ»kÆX²%DOÝòý³±dU'â°çª~–|× ª&šúß·¶hÁ|(3ÇÿG‚âêÿšœtV’d¥B{4 ·ñ>s8©“ ^GÃ!îk¿½—ïmÿ†Š¬KØC #„„˜‡)'’ÈáVkÕH) ¤Æ/!„ôçè+ ñM.ôÊ!5Ë^´=>‘G…d¸RýD7BtÈ­;¨%°l#²1Á+±¯èZP”ãÔŒ’cNß%ëg y(Ÿ'ñ$iÒwy  †yj®¨ôî˜â¬!>žIq¸»Ím¼Ii‹€ÞÍ5£¤_þ®½Ý2ó»hTáF_xpzw÷@â¬ö‚uËoµÌVâoÁÍh²ÖšÎ˜B lçf¡¦˜Nªo¼l‰í¸½Ö.eÄÕ»7,W2´ZÐÔ]R¾ øDevœvj¸š"n‚¶¤@mÇà›faJÐÓÙ­ÍR{ ¾µÖ Ê<#AAÑÖŸ”(µÂ9(Ù Jž0)Óh™ÑÃ6>?WÇfô½»Já Ê@-±ÂgMª{ÖXÙ³fè\r6Z”mõQ.Qô8>†T‘Dõ½èb´6z·\ÅZ§Zk±:iM*“ÖZYå§®àç.VPHbµpŠð¢õWGb§˜°¤üZ3Â;>- Ì– ŽWN™8ôϼɬ4eúصÚ3HsÝ_¤fLãŸGÞÊMøoåJ†£ln_÷Ô6¶k&‹vAp¤…ÊÔd)Ö0PO.Îi$˜ÜhöÃòÌÑZÏsµ6¼Ã­jrJ…69•$y^†cÂKGˆØÿ¨AŽ,Òr R«ýïÀŬíõ–“Ï r^D"N=-­N‚âž]­Gõ²¸ÞÅ«Oû^*44}Fêl¸ÚB=H7×»ARÓ\uRêã k‘I+ŒN/e¡è%Å\»áËÝëES¢V¨èn[ZWŽ §ç(ñ«+Z¼5L#ôþn°ãµÙ.œ3ú#õ*q—8¨<Ñ„ÃÝ&V/½¶A ‡ËK2äêíÜ7Ðç…w›/”úÇwÈ6§ÛM·ªøGŸmuJ‚-æZ}nÊæžÉŠd—E>Ü#.4~?üybÞÒY÷ØæÝ†ò@kAMºË`b°¥:M 6iQ5Z´\ò0ú R *‡·«Fx/æbn¹—‹ã‡Ž“œo ¹§ˆ$#xxÞAx5Õ¼*¢ãyX¹ÀýN•ŒI¡TºN*Ñù¸ˆÕjb¤ÏŒZ™0ùçE7’pâÜ/)ïÉÙ“Ø|¯NºÖˆ§Îëázv̸¼xhSwAB \2&7°‹wøFòX¤­!OäñÒRt,¶ «]”E:>iÃRgdWë×!IWŒØxkoþó(©c­t\ùÒÏTUlJ%µÙ0ˆã¯”ç•1"¥xB–P¦ÎqÏaRõeÖxˆ„æ´¬EU?›Ë²¹€ËÕ˜ð…\¸VõWG¥“´Å¥VŠ×_j“{áõÂ^Í%<¸Y-î ¸t×ìÊí·à¥kª£yµ¡Kôè–qbe ““˹žìÿ)¶Ö–ޤ#»qäN$onÌg”ø¾*þÑ7fYÊš,ÂK‚D´)7Ñ<Ì÷J-sÄÕmý®oЭ$KÈ ºåß pƒ–DMcœÝÏtFѬ1©;5Q:Ia{ ÏÜ¥OÌݱiÏÅqËÙ´²H¶¥¥ÝæÞ¼5¯ƒšùÈç^þ¥ÛÒw÷Öϼ»åÞÝï:ÔÇËjëtÃ>é-ÙÈP”åW¨B¬óqËIyýP‰ƒÐHŽÖDLŸ‚ŒÆ&gŸ-ï™r1y+) ÍiGK=ç-}É8â­µ“K Nx™¼Ÿê|—Ióhw‡Ýá‡:Ùý*k}þ“s¡YúÉÎ;hªiï ŽïvÏZ úñn˜[@v„ÂÚÝyKÐZI.ì8~¼KÜò#uÙ@\¯´‚H®Ì¾·a¸ªsuÂ.js×-Æ,/¯{…H\è•ÚÒÉš»&/öHà &z×½ñ²) |¥íïrNH°` ¨` –ì¥Aþ¼Ð`éL©].dŸÀÇZ-ÚR°ýy'A\2År5ÁZ r´anx±<íȬÞJ¬öµé¢ÙíÄÿ|ŒäÆ1ËQ‰Î,ð"šeê„5 |ÈfþÂ|;¢˜e3NN”37”W E!X+DúlWø]DÜt¯´>¤ z ¶éšay7Û X ã´œs&»úcµÎ_sÊL™oËu0© ,çæj¿êpíÕcXòy”LàxÝ·«{gÜ®4ø,j×÷íú‘0»XcŽiô¸A»~Ì®dW>È.˜Ü9)9¶èENØ®¹˜ü±âvýP°]Úå@Ⱥ€¬ï‡µ <–DÏÏeܹt¬fz,u é›þèÉ +½;KR!Wgmp¬l,»ò»ÃbÝ –Ο¹0°R#€–g`=E,+ƒH+?ó¿&ÿX©²ÑŸ²Ød«DL¯s üàa:d,…í\Źzóœ{öd8f£™î7r}"YlgË Ö±Ý[õw…¯½Ç6‹¶|\vБԶ¦„‰¸á T—ÄE‡M«6.‡"oF”ºQž"ýéáet;F‹‰ÓO/®‡My$Kß<^DùgµˆAY%t£UZIpðó—“Šw1Ú>hä+gÉP)”Ô Š¸=hâ‰EX¬‰jbtè-ŠçhºFŒæÐÇš%„¸Ô}Éó@Õmâ¯6Ö‚@¿±Lïœ0àçÿ¤˜K%áPíÒ«€ÔÍcÕKû©:T¹µZ^Pht”²ÐŽ˜"’x¥ é°dSÉDíz­W¤^qØLŸ oWÐé ÃÆi>µøX²³$ÕI/ØÜÐ8’®$øÐz—F.9Áh^Ú¡ X‚r¤+l¦J™F\A‡ÔIE¬R¼¡×S²¶!_7CñǤP{WˆÁr’œP5›j+r¹ôË*àÛâ!~3Eš»lÂG…Iø] ç ”[:aÊZµ\üÁŒãY–ƒš‘$Àü•AíQ^ÐÁÆxĘƒ qÙ’03(ö˜!ïJ¶9SùyL;Y©Ä[­\§«V9…ßîû¤Õšã¤eäY×Â<'&ä4†¸w%ÈÓ–1÷Í9­µ\ç0&·ï¦ CêR˜SWG2õ È¿›Jþ5Ý?ö#Ù¦y$‹û­æÝ¼Ç´ÄTʘ5kË“BYön¹^]ü,§¯ù$Áç_øó¼—XÖrðZúÏ|÷î'½‚¹²R^`“µë·äÔ×â#Ø"4Æê›‡Ü—#'½åQP5ïù3­»œ[©”m©¦µ¥ê!BÚ!³•|Z¯ËsêT37 w逸–E,' nÚRóÝñp3Õè-€‡»d8Ü98éÖžGƒ†ûL=YÄy$`¸K7òdÚwZF·=g\ëìÑž*öÑž7­¡~ÏÌ#Æ‘"ìÊÔsçŠg¿è¹âÙL=4=›½§uöžý‡¶÷<H{O‚r÷dïÙÏiïy~GùýÞí=Æ^ù ®|Wþ=àÊ_ä‡+O%ï®@É¿Çeâ}<øß+ü߇¹Vøß¿ô¥ãßÏìÏšÿµgÏ6Ÿ'ð¿Wóÿa.ží6þ÷y:þ÷Áñ»Óù ÀçÅþÞ¬T7ö7V¿Gÿ®:ºã‚b˜§;†ß#Z¸£v~Æ÷VãgÙ0?ø)‚!J!ðiùd\P–½Ip†Ã`Þz—Ìòqâå?EÌØNDòõÅÉ™7“ü?ÿ êйó`=hÀ¼Ï`ä=ªxNÃ`4ž~ øÀª6¢“¶P ‘ÿâPäZu(r9¤leRƒØC}«IErEh·Ñçj\Õ@áà qã>ÿ;èÀÔíTkÁÿ¸°’þ;6`¾ÔÄm*_@šãîKÀr <™]¨áBý,Ü‹n]±@/ŒtŒ…^}Ê*Gî1Aü’Oµ*WY("š¤@ì j ËÔnx*DÂóY®Ñ5ÆW3l(vŸØm}Œ²0‡4.%e3Á~1ÝÕxtè8¼eD!>“O% d2»s@N¾ÁÿÀßCÂ#²Áãqê¾L!Vq…c¥Ò)” ? –bé¤ ?”Þ±çkCýÄLðHœT™®“©‚yg¶$½ª6N´þ¾Pë¶Þ bQ yôõõx÷±PÕûá´±9"š&‚tR'Ư PŸšœ‚¶ƒø¥÷âü.j6)Ñ å,1!Ýò$<·Ç Œ)u%E®?”œµÔœFUO BW«qžBܤw:éSdsz ™;×Y—` Ç:ï’Š¨‚ç—àük›-ƒõ¯qäL±ü(Àä~ÝuF'Lç&‚:óNüu|Šm®Mƪ¥«¤;"eã¿íÓÝüï¾ûßÒmÕ¢ \4$¼‹$ |÷.©Kxéå!³Úþþ»×wÐ]+]´Íá'éïÞ>îàc ÑÞló7Õ…œÖL¿ x&øüï¯÷NŽ𽉤I@²ÕO?´i½– Í~Úéâs§:ˆ ï…bŸê¼Þè–Ä;ç<àåÄDx§­¹¶ƒá¬*‰Ÿ³@Óµ¤ß&jú/qNÔÌpÓe.4¹ól4¹Eâ$?È,1§àÞ ,¸à©7nipå<Öd§±ë î>@à|@nÕ’›à÷ÛÆ&#Ös©Õ锡¥ôÒ•¹1•;ND¯³!Q¹ É?[íµªæ',ÛcÀ±£ìÆJ¶7#8¼~ údMœ =5Û)ÄË2ø¬ºÝRê¸vÕa—8œ5ÑðrL++éäùQœ)ép$º&üšIò(òÚnßñü#$ƒ h&ãX B”„|H_v­‡íÕ!eš.aî'fºá)ª¬:–jÂ3Œüªá’;ÚIYÃéœ,»òlŽIÂb’_Šôõ,GÒ:y+7å$þã¢êò u¢¸jÕ‰+NsÖ) 5<· 7e¾_Þç{n£Ë¡×€hÑ̾êÒè³Ö\g¼nµ”øÙû^ý<~¯VJüŒï¥à¤X- Å¢vªîg Øø™šñŒšH ëM'¦šq'ÍÙ]²tücš—íÑè:º¤‚ Ny5@ÿÿ ¢vYÆÄ@š’ð}h"¬JÄ]ü¯xÿ¶?(ÿ¨²S4²yìOCø•3J†ÿ˜ƒéôV¼›ˆò,´9WVµ¦b1ÛxÄŠ‹hàB ý!KA° {ÚßJæïÖA'R ? ¯¦É$ƒ\Œ¨ÜD'|q‘fð 6/cWÁ Œˆ1Q}ÆCÑý¶Õ<;k=9»½ Çä?ŠCwøûp}6Œð!Ÿ wÛe -qØ®ävFŒcÙbß~c.pôÆM;Üðf2|k#¹Dhëú3äv‚2§Z뙓XÌär|úA#k{Ÿ[Sñ ¼Èòo3Ã1‰f€9Ó(²\Ò’YŒä.ž€Ï\ôÖš’ÂvI½ôŠýÃ3ªf0‡cµ¥ö6iÈcâsOÜ?”ö{ :Y"Š&BeèŽ^ÂW؃ŸnïUšþ\uçøýWM§Câ[×5~€+¢ 3ñà‹ ãAç®ÅWâu(ò´êxP#o^šN6ÑêÓš§Ÿª®¹ºc]1qqݼkáp[o޽éi~O°Ú?ëË£‰n9óD·ð¶ÊÿÖSœÇÝræ‰nY´?t œzt¾äû)a,ç?X‹ÿñíñÄ<_ù?ȵŠÿø¥/=þã~fÖüßÜxQÝLÄl¾XÍÿ‡¸x¶Ûñ.;þãhâ»–"¨üGƒ0w®‚8VA« ŽUǃqØh½‰0 À؀ЊNpÂét!µ¾rÌYøõ2¼¥µgúÝ‹û ü8^†A‘‹“eL”¿–rr¼À-àÇ)¹9³kºìþ4£Í wCûvÓÆ 7Yß”¥ÈýW%×ä¬È~´äêPP̯Eò3¾í“g.Ã5Wt*° ·ZMo2 ¼‚…·gµ”#ý$Bö]…à¬BpV!8K ÁùiYd舌Âë(l–CŠû¨ë!-2N(Ør·XU¨Ç*ÔcI¡ó,+èT-Ó!²˜˜N’ƒ¥[´8»Áùœ=sE×nq0kO,¢U‹…g‘™ÏΆƒÑå'óÉaG¯ò_³hLGÂÞt[!Mø§LÎÝÆ¸´ï’ ‹ý…-ÎB‘Í1´ExK%šAˆóÔÌÙ†¦ïk” Ð’¢lŠ&tµ¦ÝGÊ:£š˜I¨!<»ò`˜‹솜~rìLãƒØ„Ýò6ÙËÿÃ~9è oN›i´7ü¹ó!öž£«y%úöŠÔÓªÖÓìÛÿš…ãoÔöÉd°þK½ zA˜âëå Ï0&CQçcPe‚}ók6N; ’Ž{Ú\e`φ£ ÍøÐ8Ô¡jiÒ™ Lî(MëÉŒÅoön¯Ìñ”ðÔ\ ÞI´a6ÆJzñ¯.ö6z¸ Œ0O-†p\Ìø`xñ‚ËqÇŒæ½ð ]TTÀ˜îÂy¦R6mðýp8úúÛ·º"Xd¯‚üÃioØ[;žBoðåQv‘ 9'Òˆ'>tí «Z¡»·½Hœ_/£ 5~Žˆ°´"µ°5#lmcžˆ®£·¯›;F°Qptr¶×ù3¥Ë™_GïñO¿x{|ÊŽ_íþ‡^(þ³‰ÿl¥(ï;^ì}·ù!5lË• -Ïþ~ä 'ãrÊ÷V†8¥åx¿ `o”™Ÿœbc;IY2û°Š2ó)NÕ>š‡î*M¾n:ÓíG×3‘0…X6C±!ªæ #Ú¶ù^åmGàB; ±lvÒv^¬ÌŸðÁ°‚QÞ9œ«Ôé'œzB“…²TÂ9Ö½ä« ±åzuÓ~•æ¢ù*[/o9^îœä|Yb¥'×nëQEVšHôN*d rj¥ŸYDvÓ^ÉÜS¸À±4Á¹ø@ˆáü£]‹íϦƒÜrõnÀq`nÑ+Ž_ª´ßÂ/<ÏŒ¥æqÍSõ]ã/ÿÌŽ¿TsÓÝÊ»kæ›f?Y°&î`á*Vs«ù½b5_¬B5W¡šâÊ ÕÜœ/TÓµÕrVܼŽÑ‘Iîðz!ÉЈm[M&øy”VAŸ }¾XÅ|®b>ɘOmÚ„3A¼xüØÁ ²ƒA­xIwóê·3_Då6•²è¢½¼¨Ò“ˆ*uЃ_Pû®ÀôE{‘ƒúI«PŠÛê SÜL [ Klªb¤Î#þ¶22‰â›=Éiça¬üÓoø—1eì¬ø‰”múÜ?ŒÏR£MU¸'£S|Ò*«Hn$Çr§ÊQ{ å¨}îà­ëÚò½Š)\Å>îŒY–21%Ø0Þø6Ôãÿþ5¨=–ø¿ÍÍUþ—‡¹Vñ¿ôÇÿÝ×ìÏœÿÏ_…†îÀ#Ò6Á"öálMUÏnf†bÕ1Œ^½Õ.ah³ô`³¦ÖˆQ+†»ƒ0ÜgÚÙ•ù§× /&ÆXl¾ïR&ÜCԣĽ+%oBBð¨ÌàjIˆŠŠhã×ó¥hI•$ÔÆ ñyúPêãÅ¡¼ ¡¦~±ü‹k±óÅÌÛ:è¸Txí0-x>O”¼#Hþ(O¤»*wU­†Å¸%Ñ5|®(îžêïÄÍdøÎAÜžáM3Yк¤4¶Ï5€U‡L«¡ÝÀˆÌª x›p"¡™q8ßBÔ—ch1!B²A@¢…Á­:ìrÔÐ[j 5H’ó638Ïæúö¹¯™FKª±p†Â›ÒÑhvý‘`º¼­ ±!hÔÒ)È7 Î,vÆíC"Œ¦²q‘n“Xl7@4‚ÍxvIÒª¼*/XP@ü y™vÃîR &<ËvOE/’t†ˆ©æ$ßni]\ ²f,òç^…Ûdò¨øæe…³Ih 0l)Ñ4 2íØ@'Áì9Ÿ>)µjË$¸7Cÿ  “›Ž®}ƒª‡MÚ{`¦®·Ï©»O‘ÆEƒ5ÕNÇZ[Ý k"H‡¤åR¤Žúg‚Ín Uìz“2´5LS^Ç/ô£C¯D至ñålê¤ñ¶’üÖ¢ )ü±~(Zü¥"›É·MjkÍÎa”»,«Ôx¦ÙíðŠP{–ÜÅñæ›kûFŽÝÔT,LÙ\%ìÛ¼!‘_ôXÉý VIvOα؆‰ÁÞå§/½q'ÍqšJ³fL ? h Rˆ'uƻ¾™ 0ébl–nÒåAÍc×µûÕðDhiM펟ÊÈ»Et:dÅÃð%Bd2—¡m!ôªê £já<ĉ ó´IÀ6ðE»Úø@Û÷€)”qaö»nW8s«ÅñÌ=•+2:êÄôÖ%ã3œ:r%ß­rBŸñiÇ宬 :YYêƒ}PüšbA×ü#£×|—aÿ¿Ý|,öÿÍ­ÚÊþ÷ ×ÊþÿK_šýÿžfÖü¯m<{öbÿó.ží–ý߇þ³òH½¾«À2sÝÍQàxsîŒNä=€ï+§hQ‰`©J™të(ü‚Í qT—ÈàFð xЃ &oû °iSw 0LrÂbÌuÈúÎKÓ€l›½4ýCkF×!YÌ–n²—íÕìgz±)mÙVz·‘~é¹MŠ˜ÚDd69X4³ Ì»BOuŠK(¾Ô*yµQ¶GÏUÙ‰P ÌC- Š]´H$?±ë=tçBù^îëÝðê}”“%Ípû5@µN¿ï+„dcx8þCfóW÷—f¼…CäæÌ3±lRnÖbuç§õpxÊ y¾ú<ÔýÏJcKº3&3övˆ=„#„ßË(§y7ddóXJò ,è$ÛÙПdwö)T…L¿‰D ÷â‘7íF›°xØ'¢yþöÝžÄ tçß ;TU¾‚æJùü½yÏ 3öÂäþßPNhLA¬/øÀ›í:yzøÈÒdÿ|@‰¡/±.üwúö¸ÑJõ·˜Ç9DÄž×Äg·§zè¾Ç´i^_‘eçÊhwZ5kUŠ z,Ùšy=Wà§EMð3äV’p)¡[ž +þÕ¼Mˆ{ÓS3ªœK…ôÿô.ô³96‰ùçäÝTQS6ÒE(·¥!¦lcRïÆŠŽn+ Ž`Å€¾XSR’ÍÔœ,°íUÄÛn‘õ@y…âêÍ®¹_Ôï`ð–§nF±äl·3NºžwY¨Á`ðq B…4,š´œéˆ§DOa!=ˆ-¤ÚŸÄAy<úP%näY€7…“_L » (õÂðBÛí[œÕbs#}þ&Äi·Ô˜æ ¸ñY¥8C0»A¡x¬j‰±²†H?‘ï0>Æàhc`|çu<Þ|Üÿß#ÂÿYá?̵òÿû¥/Ýÿï;áÿ<ߨ¬%ñ¶Vóÿ!.ží¶ÿ_ÿ'áÿçvüë£i÷’¬Øì Fò&œ Vþ]]OÑ-B7ü©±Ò­ða8D/€œÃiLåã,0U4ŸÂýÅ}  D±{áïJÈž„?¡#¡6dùêÄØBùüM·?Í¥0¡Ýrô2IõûÑü£b€Ž„Á†ætž„äö’ô%tU7‡/!•úIó&´Ë+ëï ÇÂàÓâI˜«›¥¹!ÔFÛAlXÌç v_P7‹9~i^_•Žm:Áóß~ž"½®FX'ÛAS.Yx§ð7Vá/jŠümðþ±ôĤ]µ7 1Ïi€) EŸäÖŸTø²‘§ûdŠðÒ×ß‚›Q?ºŠhƒçf|¨»ã8g"àKcö7Tò9ºd_4ËZ=h¹¢MÄ»’áý½ëqxQvÆ#x¨WY¢œÆÞ¬7¨î‹L¥j&Ó÷0±{íÑ4 ª/žgTzÎÚœMOÉ¢Qô@púò’¡ê›§{­còRkÕ9*¬Â)ÒeÞáWðߪ6?,ÍÿL‚ÅÐölNÎv?›×á«ÞèÆ_å {Ò9]‚SÛn=Nþírj;ª·vÞ”3Û¨˜²õ¸«u+Hþl§¥ ;¦rØãFœwU <4…'{·“h0>)ƶTO£˜ò8žFÉ쫱§Q3ÃÓ¨‰w¹Ø9\š†«‘x=Åר©ù‰§=Š–Ànl5¼ÞFM×ÓI«¦¤æñ7Jœæod¯{¥ú Å.BIç ÓáËu;µ”sX–[n7¶²´òyÑœ®»3"¹}vhw˜Óe¦•í³“éHÄÂåÂåà0‡õz¨[¯ãP0Ÿ×zÝÔyÏm¾nêæëÖºͺèÏššv#vS3b7=FlÕ§mØjõV¢Õ­L+I # ¬=ùÒ»Å3Ä0Äc…ÞMÇC,ºG4ÉAaMlaŸC¸Aª/Üé¤+ ¼OËר^³MZrƒ<¹_ômÒ$J¥®ÊúB#V§ôÞ2ÛKsMÛ*´¬.Fc »Q2—Ú¢eÍøS–Ùòayyúãwz²SÌDx[#„ì "•`†{Ÿ¸-oVZ»¿¸˜îíŸøCg­7 ªf'•1j´–RÝÆÒD‘k&IO^g¼m¹–P‹>»è¢@^M×â'ÆFíqFÓé%Í«ëíéÞ6/ÔtàÅms+Ðq‰G¬’ø· ÆÓ %‘ ÌuÄKjÿ—V³LEÅCÁyeÊ÷e%ŸrfžÚ̘/@+ÓFÀ¹m\í4šz§œR¼½ôŸ™†|ÓN.e0z3%aTÞlQÀM)é¢ÉEëËKOE/’¸SCÕü£äÛ™Ö“0ž´OÆ—’Å 2’ɤ⛗üÉ,*ÍnF©ˆp³5ÇUå:ÖŸF"PVÎFüýr6£H­2 [lÊÚŽÖ¢ ‚¬q3ÁÕ¸ ͆a’4cE²ƒ_^hºÒâjºÖl Z‹»hX±/Ú™\¤êäÌzJµ xCBi„B)n±Xêîy áNa‡ú¿ôÆ}äÀR£|‰NQÅßë È¢˜œôŽ\QÂô²®nzŒ.r 6Å=hxPìân¥¶ÞÙåözs½ÙX¤óz—3då˜Òpžš iÌtX2 ƒe„Œ1ÐlšÚgm¬ &ˆå²Iy¯¢Z÷¿÷Œj'LÚsLª¦ÒUó÷ys8u~b`ËþûXâ?žo¬ì¿s­ì¿¿ôeØ¿KüGusëEÒÿc£ºšÿqñlOØÓâ?VàäõS€Wà•xe^Y€Wà•xe^Y€Wàïm>^™€W&`ëùßœ#àê—°Çÿ(&à˜#V`q­,À¿žøxe^™€W&àeš€‹ ø»‡êÞË¥ÛÇW“Gÿ»¹²ÿ<̵²ÿþÒWlÿ½¯ÙŸ5ÿkÏàn2þ÷Ùjþ?Äųݴÿvö»…à´SowéÑî¼éƆàú>ýÿ6›ïÊA¿¦I6çøü³¿×éÀãô¯° ÏiH®=n3r€'ÇÏ!ÙkÀòJŒhúÑUÄgïK8á °¹Ó®¡ôv€gK”1à§·@ìgÁ~xlÀ‘»{𦢫4ýFå7õN}ÇÀA¢ÑKQÌi6ç]ц&1àóØŸ]o›s36:ó½,suuYûâk£À­+¥Ê½ÈW¢ÂýøOUu98/pÿæ2~ÃL¢d'aZ†ð>ðÜ`F‡G„ç &ß&ÓðÇóOöèTÂnÆ*RäÁ’¶˜£Ù°Ïw.€iñp!î„T0L)‰%•ƒÕÊÚrÑiäƒØ<¦˜£TÕÏLÝÛð™26#ÈbÜÕƒmÓó¤ýd ॵE úµÐ¡Ñ˜LEëùSzÏfê•©ïáñðíáÑðïÙ5â©:0÷¥VĦþѸ޳Ìû8r”¥ù"D×ÑÀ„)q ËAT +l„J8<­!—0¤L Î+¢ ^—ƒ} ˜Ñu„jüvÂÕàÍÞmií©ï/Ò}GG¤±ûˆhvŸôM:¡—ŽJgúû½I<›aŸ€Ù~ÚÙ)°¿ ìWDQIàé¨Á¸hVË9¶£aŸø…úÌ­IjÓꯢ?^Á:>} "Ñ$ÃFËÃý¥‡ùp§áø¸ö¨@^ø­ÞÊ8×X„íeäÞDÓ­Y"›ÒPto,ó.)Iõs£+ó9íœ'{dúí¨-At 6uý=b«é'‹Rô9_}Î+\R’>¸uRùsPÆ9Îrë#Gj»í{Ä¥!Ú²U??'”‘ç…¿‹Aý7šðEni¹GÙô1ý7šWÁùiçlÅCV†Î´w.GãqûÆhû7V%Ć¿ž t9ÔúÂþNqxݾFÓY_yZcb8'Gø Ô¯un_è¨UWaz!¢\½0,«bœ}FÐý""ói/ᚢžÄt@èÜeó?¾8¸A ½Á—Þ7¬8]Í d_U€è0Q—†W.Ëâ"œ;£!tUªìR}m‰ %™ôR„3S¼!On@ Gbª2y ´òƒ÷†ß¹¡–:*1P@o #õ Ö^*Yä+ì7ªwDØÝ,)Œ]éꤾQ<šæPx Ĩ®Gñüi«~.ç+¬Jd,‹å&Ioɧ-š"^&ŽØ8¼Y›ñ€´®³6]ÜvBÒrß^ÁÙ.夥w‚÷qØ$°­· ùðq½Åœ¾OmÜF+vv1o:{©í¡ ¨Í¹{Î<í·xüÉ8Ÿú‡rçíYû´Œö…ró9¬w÷à<üÁß¿½ã.œ»§=øÄÿ×÷÷ªüQ£rý9?ôv‹NÕ Ö­¿Û+›NâÌï@T??þ³ìî¼¥×{­we!™”…fb‰ÎDõ”Šó#¥åŽ’\ŽZ]`ÿ@@Ë[;oüݦ×Ëò1Wkæs9ºU‹ƒf̲œŽˆÑ¢u+•Ÿ çr°Ïê.7æK§OLMb=¹ó$ÅóçÎ^F¸Q§¿²i¿b9&µSš÷Ìñî~Þ—_$_nä}·º‘|ù<÷ËŠJwðêìwóãM3Kfz4ñ“ïRåm§ÂƒçtebG‹v´ ` ]¬R; k©¶QñÕpÜtZ”½½ÑËÓÀn¯Û¬JÒÆÉõ@û‰›VíÁ+‡`1 ÿŽGq¤ˆÕ$Mâ9e¾rp;˜M‚jìÁ…µƒµØ~Œ>G¼°ÀPîÝN¢ÁhÏqÞôGº½+åd<·WŲ?”øí÷üÎ÷Ÿb}ªW»£ø0e­Uƒqh·Ì±Õ¡ÃqË3ý×x;C›Ü¼kæpjÞG£Ñm0N£zÿÞÞâ‘êrŒRʤè Òڵ߆¼ôÇÃDÔŸÁÐ!Mßz0º-Ô‹¨ùÓâCØq™ï¼ÂAUb…qT‚ Þ†|˜ƒ*‰ ×*v&Àí®€ÚíMç Îâ6»ITõ‰'}Zï cLQ¡b{ȹQÞÒVfíJTä F¾ó)|Pc;ôôRð,Á1'è]L ø³ÌÂ߈vÅþy^ÖÅ?°žáóFK˜ÔxûCQJãf«àsÂØ“-V£Æå@3ÅÑëC…Îãêì J“¯öÃáæBF/@8ÄåÀYk(…) ’àI€gÕ~Ÿ-*É’'‰Ó3Ìw<6ŒØn£×x%C>‡ŒgS9Ÿ™~†Â½†àÝrU“Ø€YhÓ;aäXû‡ÅhCÊ¢È-|¶A~«‰Âu~([Lz¨µÎ*bËÓÉdWã¿×¸`vÆAÿ¾béœ|·6âWõõÿÙ†ãG¾Ì¥œÛôÂß­®kâ·ž§ö_ìºZ.i¤àsO?’¤9ÔHsH¤¡ÍóEJ‡-/Ëd /¿{ú‚¡Æ½ƒypp‡(™$´àb/å2DÉ`}ˆGÔr³ÇÄ*¬à(n''ëZµV«}i¿{Ä]Ôè곊„óäTé†þ$°P ÅÜ® çÁj‘5Ór'¢:ŠÊ#y̋Рl±hy{/'\~kEõj?¼‡½ ëõzSÔÇ¢ZMóĬýÙ˜Ô¦’/r—ÍuU´Y êÓ€4uBk"Ÿ Û'ï´»(²!» ¸Âç8×â[G{±ñÓ]sIJÀG¸F§ûéÙmµ‚JÏJÁ>c Àu/ÚÎÎrw…S§¾½V“ÆÆÙNóšM:Ír-x७Ÿ6ns#67pëu%)*™¥ щ?×t ®×oƒÓ· 9%¦½Fµ©’Ó·õ!üT8UÆOÅ/p„VÙ¿²§$~;LÑ(!!àJ²&ðCÉ!%¬I¡¨U™ôré™Xlð)ÆM àƒ¡oW-–…Dèl1¡"膡]PJ ^ÏRTÑ1ß«‡:, Ž8yVˆËÁéYˇ±v9E#¢59@¾ñÑ(‚–CXxn8–!,y¤¯øÍQHdš fÈñèû+¼Y@S–º+téÿ¶>Ôœ l9ÑôE‡ÞÂÿ{˜fó1­%Èýc»iBê3wSÕ2õ\æ–:w‰(]à¨z6ÎØr§zU™B7UÝðl¯Ò†“ÖK®µV‹¥±r ç-¥ð-̬B%¦'„·ÜÊý½“JÕïК ¦zþ· Þ))†‚SbÑÞw×Ösšgïño(±Hxƒ:û±ÆègŠ}X]‰ø¯ß ÿ¯ºUÝØÚª>¯Öÿ¯ºŠÿx˜kÿñK_FüǽÌþ¬ùÿ|ãÙ³š=ÿ·6ž¯æÿC\<ÛñçJÛ;9ÛÛÍŽIÈ:å`Gʼn¨páyÆñ í¿àã¯F{·›V|æ¯öÛN«ÝyÛ:†2ȽZ(>S ò†ŸY(ƒ’u©h( ÕãèB:€ônÂI°ÞÜ„ƒ2|ö®p¬~Ó ¢ëÞ°ü9ú÷(xõ{¤<Ó :èM (ìSZÔJ%µE3èRmC?Nä¿4˜Ã»ÆàèmJëiãmÿÙl5wš§A ¸xÝÇcþÁÿ²üE"ibÎôsdÌÿ¢&‡ƒ M˜-,‡£n‚² ?éï¥hÞŽødÒ‰/q¿Fc‘(ˆÈù .$Ú+VœP`„ V´P †ÎŽ î4$Š‘ÎÉ*n2ÑdÉ RŽ4¥ZÑeÑà¾ì ª_ª@M%«îÒ­yŸ@eÝPo0[b“Œ±¡~¤§gú ÀfšpõþkYz(‹MP”70?>öІCü=D˜u]ÚU„cóØ&ƒÀn¼ú“?àVqaÏQ3MlÒ±û³ÃH—è'ÇÅ\ö&¡ÐöÍeÕ\EåªîÁª­µ[ô6&…$‚ÂàêŽn½†04cï5ªîÚ1€b"(O:v1fÿrÅó“pŠF´‰oóqôEsÆÅí@`&†ÀQ°õÁ˜Lá6šýðª7L¹êÞåexK~w±£€ç2"ðŒe/aç¼íM&ry%lº/£ËÀ·ág!¦ûl|ÉlÍ6–9=C'DAF™Œe†Ó-I7W]þº;ÐáZˆ<½@cî¤]ä1¾¨?H={¦U€Ï$2†¡ðí‹§6PþYDa—ÓÁ·J‚Æ@T£}ú| ,l"Ó¨U Ÿ¥Ã^rÛ/{ˆ8Æm_¢Ò& ¡ C¹Ùq8jÁï°Œ] ª~Ltô¥›ŽY€ðšp[D!ÈÎØ#°ð6ñEO² m´‚¤¸à†aEÄô‘ÖŽWàÊŸXU«á ˆ¸¶oTØEÜ ¦`Ì2ºcQþûS6 îädA^ÔãýÑɃ(eÇǃ1 àΊ .!$=G4z~§Xô`™áèw‹DŸ/=ÈŠC¿Sz 4]AJü°|"ÐÖKcNàƒC¡â`aޝ|¨Ð¹Í x—Òý†ƒD!¶ôà<«)l´sO<òåY–ëŽ=¨¸rS:¨Ÿñ€zãi„XþcÊŽÑÌB_³bYoÆUD ï¯8$Œ$W%VÊ6äYE¡ß4Ýp~%\Ä(:À㲜ª¢Ù¢ï˜SðsäÒ7£w{bH&”%µ¹ŠxzÀÇ]ÂwòÄEhcîbäzظ((_ðxJĸ÷²ãÆ]!ì™cmÅšÆ!˜–i ó‡Ñû´áíé·Û0((u ¼eЬÈÚ¼¤êNê +¿be‚ñÒÜïۅä8ìÝZWÝ*3×òê"²Û DM¹;x×ÉQøÜG£™C¯jÏýI-"f.E4ÅT^Yh¡"T’¡ZŒ2C\¸çnÇCì~[êàpµøÑ€a"^úú×ß¹†’opáïrDØô‡™sí$iWâl¯Ê§â¹DCóʤ&§Ó~ø5ư †R|iŒ€¦IUú Ò–ž’“§`|#½ßì–©=ñ|âÁ ãÿãòÔúÍÚSS/ÌéK¨iHQÓ*•·‹ÚÀNTg»ÀBMî2Ëž„È&¾Â·ËÐób̃¬%ÃÁ×UŽØ««(ô•JÞB—±à·Óñl2} ÛÈ“)bkL¦¿‡Ž`C…îñ>:œ ð%pB˜&jOKìf‰ýRí ¡ršük<- É-wл¹üXP±ÚJÅÍ®¿½fç0ìÿ¦Ï«í4<˜²]¥@ ¹ ÇH<à”5q]Õb'ªIä‘DÓG´óZ&³†_e.èþõ8„¦ŒïHÞmtˆ8 ̱]ÐEÈCö¥;6ê¨i cKûôǦì¦!çØ£¹ì)ÊÊåhf¨ðÞÚK…âÔÀÔבý•¸a¢ÕüvóL…Í ÎÖÚeȵ— Œˆ-pèÁÿù¿ëÕÿW†›È?Ñ·"m†“ÑM‚4 ÀŒG·ãÚ¼&„H!Ü|Hè;Âi€Á¿ÝR]&ééòK“8f-DÆÁ01t’%JÆ)RfvCkܶ{`Û¾­ mÕ˜/p;>"·à½ùHÌ«>F½©Œ¤%¶ú¯Ó±Ì•gG²E8öiÚĺ}Ú#γY{$ÐywlÉvžÛ¹¿ç߯õÒçØ°­ "`€¡ K>"ŠìI±¬N† ´nY § L.Y@I–Ü«máp sv¥w 5ö.¿IÆŽt!­Ôá|°Ydà>ƒ “&©Ö„óŸ&Å#”&R¡ æ‡ïif-W@vÐfmXhgC:Ì'å#Ã}I9TøJÊYI9ßEÊ1&ïJÔ¹wQ§Pç`¡¯E•™ð«ŒŒT»pW±K‘uìÿHJN£+û}UuRªò‹Q‰¡ü^R•ôKq+pL7ŠXÓ¨yæLBByäbxGÁlLÍ[÷Õaç „'‡W0RC4ç3â9Ôp4,3Ól¢o&¢ÑVà³yD@~¹˜èXop=ÃT»ÑÁ²¨½a¼NÑλ«±¹’Ê’ù"4•Wˆ2(æ®ÑêŠ`A¥gS5VP½ C};šDìÆ"E[.T»öKåy$µdc­ôÀÅáx‡ ~3À$× ™á¨þ×Q³Ý9ÿ«yÚÙÛÿ‹¢ÁŠÁvðþcHl-^R1¤¡É¹šKTÂ…>Iw¹ÛÈÏ|“„¨«=òûeéù[•`=NÌ`1…å b×S¥z0˜Ü¶F³‹A¸k´µÚ/$6C¾„óà71¾TR•ÜéC)¼ùܲ@ÜÐhÀa8üGCª]ÙÍ&³ÛÛÑx*ØÚ]ˆâõĪXÑØi³s¿Ž? ¹šMgÌ0ÅT†xÓÙë¾!–¨!K´ñå‹Â¬ß BE-Q¯„é`=ê× ©?‡Û°ä‘™Ùo"ŒÎÇûk\; '¸ jK¦çÔa¸tÑþ…y%‘£3M·¯¤Ý˧áåÇaô/ åWEyÊxÝ›Aÿp…D„òCîOX²Ú‚'ΫvÁ„øë&Ã_µ.,µü Ò_'IìB(`EH ú‚IË¿¥-;ï›Ý=â„Mä„ýAïZÉ Ub»äŠ‹ÅÞtÞÜÒôÉ _lÈ4‹Øf“"0¹Ï±‰i¬æ.¬¥Ç´ŒÚk•êÊ´ðÀ—«Þ`úÖ«  nÄ4΋çÏ‚º[ C7XF7ȤË0º]F·ÂÇ'ÍÝ;$Z✭C3ÇâaL6Æàm.„Á+Šø§È×üÇ«  e(^ÿ!h²?Á¢‹ÆŠî·%¦ŸÖÀØ«m<*œ{ã)œéEJûd(¡“åÉG 6þÇ»Ž0#xA\P4ÑÏÄj<ÚkÛ&ý]Š¡à`šP˜ãmÐÆÄ(Ò¡lâU‰K4ˆ& ƒCž“‡0$š‹ƒV 㾄ƒÑU+„ÒæÅJ‚É,©Ü™Èa½Á¶¢€Å“_+Å废­ñÐe29|nÚi-þ!fˆVŸ#u¿ÃÄz@Ý5o™—ƒrU6·4¾)áÐè ¬;Å…úF4´ZwŒ¾ø#"òôO+ˆ{*_®Ó×M³¦^Æ ži¦ìOOÙUÉ Ãõª0\U‹É  úø\ÓqÄ6¿áE*[:ˆÉÙIV˜0C8X™ö`/â-óþ½=PÜå,m»œV›»{ûõ³#Dš øÁÿ’êhŸ’Ä Þïä}÷ƒóI^¹ÖÆd¯<ïÅã[9^sv+g•D••g™oÙ„ ×jÆ{ŽÀ9û8W’ò|J„™-ð¥5ÐurÌS´q®H§KþÌÕûÓÎY÷Ôè=ÎÛ\=§= z5ÊUô×éŸÇ{eš¥âOoüËÿn›–Δ(Ñ:ÇFsßO[Ç)+ÑÑ‘xŠø†ã©”Ílñ¾ó¶ýÚßíæk¨jYÈß`Á•þftdõgíîiîŠö8ln¨{†×&t{J®· ¼Á1šáÓíÝ=W@í¼÷­úy9èžtNÓšì(ÊRîþµŒbú_ç”â]#Ã_H; 1M=m¿ÞS=¦Ðaïd¿”Çïw£ )ì‘èš‹†Èü;$\Lçæ' æ˜jy‘ÓiŸÚûb ዎÔ&V^ïU’+x7_‘‘ÍŽ§¥J”6¥$4ZÊ›¯ÌFƯ%Àç´ÎùËÓÞ×´,œ,Ô#I¡ÛI{s¥A$t`ÁAê—R€Ó›êyA~sãVäsKCÖ‚ջ…!}E#XO—l‚xtbl4äú˜{r^PÏSŽ…yX ®é•µêº†ß¢mjylA)c䣀z:½ÿô²1^nÄFùJv7^qa4¦–Qu”aaÍ%ioòYJù:³å5±ùe‘øAóDàŸmz ÉB[#E&Œ,BÇ/ê¹E\÷köò!ÈN“Â"Vüˆˆ¼Ç µ"wкшße±,ùîNê»FÖ—”me¿ í%HÚõªM!oêÊã"º¦ev v 0FfÙÞ¶#ß‹?}‹3w‹7u‹7Û‹|cË~#;Ù‹|õ¹ãÕ¬\/òÝß“ïf¥zQÃàÈO“•éE½ûÌ=íR½¸ò¼œ;½,’çÅäÃ|‰^¤.Õ^¸vßz³¿è¨ëŽ5“W~mA(1 ÄeÁ³”§>ϪØš.×»y—d_«}À¿)­¦S©‡2émæó¬o#ÊÙâÍù[,ÎÅ ÑYž©ón}ð}WÃFMcra""kV/ÌÆ{+€^¥cuvµÛ˜ŸW³ÕK„ÅØÔ¦]~ÍâÎê/W3\™Í’ÞÉ!3%`EÝ¡w&Ê%@y]y¯jžY#i‚5´bc}ÝZ…ÝÉZHãý*xÒt篒·«Vö*þR·ù€^XÇÃÙˆ$Ù8•Ì#p•8ÚÓ1dŸ®%*§Âá 'Ýeèt°5OC±ÚÞÓÄ͸ÇJíÅpüŠg@”½læò¦¿‘xå¶R§ +Õt]›9:×PiõÂ0ù²i(Á Ià-› ïx×0$t´öZU¥©?€Ý`¦Ù”º4ŸRÍQ†.Û'AÌg—‡ ¹T¨v~M’;Žwò›ÐÐJñª´>¡ö± iUŠYš÷6ȇy`3÷F{á¤Ê*šðÀÆ õÒŽÏŠ¬>ñ 'ez+%6/}R'©#ÅçF#]¯Òf¸FmÁ³™]¬^‰CÙ6³“£™÷Ö€õ[€%‡)FéÝjAç½)Jv¾'šBH²‰<*9„LçaYkA±)ŒãZ× t®¿o'Ò)0/©Ñ!µ®­ ]ìÀáéÒ_ÕÅO÷q…Õ=¸"‘§1ò»8ûbÆËƒ„®Œ_È3Øwµ~£±pÿeq RÀ~QŠm4¤?L0Ç2êb'5j­mÑ3l|W.sóÈ¿æ×|k~Â_Ϲâ“ÏþŸ…íòA‘ãd¤‡Ch.¦Dc,{‡Ù Z¼ÅÄèè¦RJOzãèQÓ‘ôE£dT"ËðI#4ãÁh6ùfâ…ŒgèÔÄçÙ!”ÂçSôê˜ш€6o"¸‰nu£ ÷yõøE⢒eYë‘ÌtåŠdš°£.ºþ|‘ V•ËøÓ¯KeÓl¹fVÔøwŒó`")0è ŠŠÈ\üçIZôªë²k’,²Å%K!aRÚ·*0hÆV¸-zküº›‡ÞS¨žs#Ì¡øná<:ŠÌWsn„Y–½^‹ÏxlH+ ¥ÍsνÔÛaw}æþº8-37ÕE•¯ßgSM×-¾©æIštþdM2òÿü«v/ @råÿ©mÔžmm>{^ÛÄü›[›«ür­òÿüÒ—–ÿçžfæüþâù¦=ÿ«[[«ùÿÏv+ÿÏI­´ ¡ú´~¦„dÍ@š,g³R-Š4/wMqAiÉbÊÚÝÑ`4îõGÁnˆ'+#LEV¿GL‡S º´„8©ùeÒ3Ç ­ŽÞÌ.Y©Z`´ vÆ•¸xüSKdbÄIðèËÐ+:€wN¬LLNŒÃÞ ¸ÁñRø uÂø@@ïÔx"j22SXQ-A w„<]§&|;AØ&á[:{:°¼£Pöž…4o"»ÏÖª¼ÓeµZd¬ØO4ktÏýñ*±¬³Û[ ƒG=Š–'fT½^B½Pݾ)×oÖªÛC ±…j¾1 Ø=Ù”ÎK½ jÁ?U Ìå$|½‹‘ì 7ëÃ"Æ(BsP„Gô‚Dô¾Ëônâ>ò–l‚0ÈÞô($V/G¶ z0 ­Vã𣳇¢ˆ¡¸#j‰#õ éš.1wŠ¢{¶^ B©¦î>Aèïï2&„Ä‹IGçW8/DK–ÝãòçàÁ›hXhíVLxÍ’8Ü¢ wêÿ‚1»-±©dFÝ"ðvbÆÝê÷)t6Z(r‹}”3–.};׋ƒÉ<ÇÑœÙ,»xA+ß`ÄÉ›B­Tèo ŸæÊ'¸c3Y’yõ©o Q‘bs€i|£J¤;¯‚f°L{3X‘?ã¥Ò)?ÁÅâÚ’i=g^`pˆÏÚï÷‹@Žú\®Z‹x=y%"ŒÅ¤x ßà&~_¯R ñÞgÀv)~_‡…)Ç ü0lÔv1•÷àÅfDZaÉ=Üdä’ÊÁaÊþÞl.#"f÷¨ÞÙ/óÇë²ðK\V L«é’b2Ã7ÈÅ6ŽÞèŃªÏˆÝ@/›–Ó)Õïjëv{õ»ÉZ^¬­¤KhÒ6·K¨Ã'ô¤æp õ¸Ëñ×Cth¶YP'y\òN òÍ’žh¡å3lƽÀó’éé†Ãè#â¨h0ÉÉjX„[p{ýp ¸úÖâ¿èÊ!¨~¢<î(9µ™‹°| 5¿~‹©ìe3I²áÆÈfã<3diÒÛS¨’h•ö€} ç¿ÑK¶–£F¯ Ý>ÑíŒ>Ê.z|¸< Â…nU7ìÔð~MäIͯˆ4õWEÿ·U{±:ÿ?ȵÒÿýÒ—®ÿ»ŸÙŸ5ÿa²?¯Úó¿V«­æÿC\<Ûmýß~Šþïh¥L\ËQ Ê>2mà~^m`ËÌV¸Ò.¦ l%’>šO¢60¡–[¶bÑúžŠAA†Å þ¦¡#œG1¨’Ð:ƒR£ ô"<ʲ•†0KC8Ï ÂSyµL«e11‘¤²\* ”g¿ˆŸdþ&ÿ<g*DŠ„ LÏ`PA²sDâ÷1+U=»‘`¬=ÚToµJí†Tùµ&$Ñð‹ÁèòÓ$ú·†¤MWóJöŠ|Én>Pdþ5 v·7™ÀJÜêuÞ¶É€¨s0ò˜ŒlšTÃzeï©21F‚Âf›1ƒÁôötl5Æöu”¡ÓêÝ€ €2aVrvhî(¥üšÌXj`¥JeNEr¦&y¥J^©’ýªdŽ×šsr¶×ù3UÜ„ùßd¡°ù¾[F-Þ!ª†QòÞ•øáÛãÓЭ¢P5ð¿V£ñëùRÔǤMúã†ø<}(=²JÉ,´×~çÿújtø¡ ¶ñC¨³õÐVRh;Alet\*¼vè~)CŒ¬!‡kØ_‰Ñ¢Æ³¾|ÿ ü<)‹sê:iº-×mU<îªZ –{'ŸŠª¤]åWÌ€59lµà01Â.œAÕžê}TÎk6ØÏ6(p7rÜ £½žáM³]к¤´Ï5€U‡L«¡Ý@vªB@‡vŒJ@B¦ÈÊÁQ£àr -¦„Çl ©‰…‡ÙP~AtmÃ÷˜šCC½QVœ·™Áy6×·Ï}Í4Z T…3LZƒq) f× ÜÝÛÊ ‚F-‚|ÓàüÀbg|ÐÙ¾€2ÇÊfÄ DºMb9°ÝØÆ#ˆ%$­ÆYAÕ'J¡Ã4ÏPôey™vÃîR &<ËvOE/’0Ñ ÕâAªùÉ·[Úc¸ý¿Óf,òç^…Ûdò¨øæeÌœ p@0½½Áà›vl “ †ò|úÄ*T™aÕ ÎáE…€Œ ؾAÒÃ&m<0M×ÛçÔ×§Hà¢Á‡jý&ic Ð ÑlŠ ÂÓkXêœ6¯5T±ëÍ5´5Ls^`â0¸tKzduÒx[ˆ}l\‹.bC })ZÌ%aÈÁ-2«­58‰v»ØDç—µ„6Ô^ƒkP‰¼zù&Ú>Â+pL›R³Äi âÁU’¾]À’÷E•¼2u‘÷ä‹Í˜§°4D.dœ1Ñ #{bR¦éŠÂ7F!…rRk¼+Œ›‰þ ›®Ç +zå·êÚ]jh¦Ù'íªŽ†Ônâ÷¸¯©Òè`Zwï@ J¯žZ Ë%ÍÆš(Äœ¦V&˜ŸHÓ$àQç NR˜£8ga®ëòVûŒ’<˜Òf¿ë–pi3÷XFö!ÆžÊ% ™ bjë"ñN› ¹„ŠoZð“1™éÄsæöWV– ¬,îÁ(~M±žÇ‹ýã ãYøÒíÿ“ËÇÿS{¾²ÿ=ȵ²ÿÿÒWlÿ¿¯ÙŸ9ÿ_ÀÔOÄÿTWñ?rñl7íÿÝØQ5ã?5qàüýÛ…½w/iüï;Fƒˆ´ÒI7€Z¥ö¸Ýà:˜A›kÕ ]»;—5Ÿè%%"‡až(7qߥل1ýù§¿FÃFrNû?ðbc|¦,l“o“iHPy] J+6©bm±¾µ …P¢J©®É uBµaëÖÐ@ŽÎ¬³ ´ÈôSÁmôy4ÅÇež(dhñéN-‡³AN¿€Ñ¸§ÕLòI€¥Øþ±Û·½ñTÖè<‘hFþ:E¿$)¶ÙãÆãþ;C_Œ{µAmigA×*˜ÇÀÛ6­¦&ègÖ’¥ wØ”í"=—öA˜= d7éBì‡Ù±£Ëpò’TuUtÈ(×Z™2ÚF‚VޱRéÔ¢á4_Bw®erS|“渲XÜGCÿ e‡øºH[ÅË´ý-›ËÛCŠ÷s¤ø-à …V1 *â“IÁbeL€ ì ßÿ³‹c:Ëqø™Ð*¿„㫆 ôS™Ï<ÛèMØèˆ G"Ü…ôþhŒ‚ÃÞõdŠz dÍcT|Ç#øÞë•¡xœÖ Ÿy%”^8«º—æ;”=g7a6-Ü6§0´ÝõlTƒß_Ðøú%쇲éK·cæ‰ö{ ˆ‘C£¶IQ2þ¦5š¯Ûg­r°w K·uD_N÷ZÇK1~Õ»ïa,‘Ñ–` Ü­·êçþ¾0“¿9ü~Y>—lϼ¶×z£»ˆ9”ÒÀ¬yH0U4CF5óbõÉq—á›dê8Æ£ä¡ÒovŸª^ðÐrDÜà7Ä=©ýkÔw jØÅ ±Æ‘˜æVeÑ¥šÌò‰YŒ5ÙúHú%Š´€U) Wµ¢»(!ÑÒzDû·ScÍ9Ëš7ÖªcéÏ-XI”ÕÅZý¹ŽâÜA«%úQį$µ5->$ÙÊ3³•¼rr°‹™T‡²Éô¤È[É:Øbb>:%}Ls6Ì÷C ˜ªȦEÔâÑOuzWb•š¦Cœ°dµà¡ÆÕyÁ**~žG ;A…âëBÔ%Í©a–]¥Ï- ‚9M» Î\[†QÙíãÖAGšåÀˆ#Rm|¥þÔkâÒ7³†Þ,†^rA© *=årÝ› Ørð€cˆI`ˆJ¨­8Çœàƒ¡f‚÷*TáDñ3+T°ËÐÿöûEÿ»U­®ô?r­ô¿¿ô¥éïiögÌ ÿÚJÆU7Vóÿ!.!™úß]£Þ6>”­(0ØôÏðOøçÝ)þÿ’•ÕoÈ–ábiQcý1žxÝZc•„5åzäjåVo|ù$òäÓ+« ´qq4RŽ’Z ÙÃÉ\åÇcüC–ž¹+ôÓgnP)Õ…æÝiA4yÑ(5àØ8JäØHxÒ°«Y?$dè úïv‹qà–a]•ÉÅ #0BikÈm!¼šÒ8³RVDÎììˆÏpÔq Dh ²b?œDã°_¢):ÒÁø^?B¾\‡B×áìŒAop=GÓ72 j†V#gß§¨þR 0Tð¢b·Û|ÝBÅ»ry)¼+êú|?¢8>³Ã_>FÀ¡pçßáx„_/ÃÛ)ý"Vž«¨'µ¥…Xé%¶’ATeéøN<(”þ‰+2¾ÆªGŠšŽ… “LÏÔ)–å=B±J2\†×pÔùª–ðèÕ «A4Äa¹ ‡¤æ&…¿h Gª¨¾Ç‘XÆÿN5ÈÃjøe¦ ¹Vâ;½©{£Â“Þ¡Çò»R ¦Ãp4 ÞiÀŒBµ$ˆø èðÃ{n¢AŸ|nùˆ×»€J°”«Á¨G¬|;Š†è»Ž¯†SÞœ_¢Á€¼=QÑyÓ»üH:1i³á¬ÏìzMqA¯ß:™]»]NËìÊ=¡Oc4D3 Q´À*c"øN– ¢OLÌ\›Î×ñOþÿ¹³þ ¬ KÁÖkÔôËÑl@T¹ £Ï½ ˜¶˜D [ô1üÚƒùO«ÐFù§l›´J©æ‰¶•ƒ øåK|޾àè'…9 K¸R㤔ºzµ˜—ªºÆº{ í¸ŠsÅát‹—Xy°µº1HÌÕ³m½œWÁ“ú“퀞oéÁ«ÌŸøs[Ê"W!ÃÚ.xxéóA™w&’ÍO_Z•v±Ò©1I0x0ÙõŒ«RõšÝBos\¥¸[ø[ 1…·ËZcÛV+¡:tW k²†ÑP7y)ʦµÚUL\†Õ\UÚ"Ðó°Lå'šiQÅI *ߢ=!ÑÖŒ.GF—mâ¶‘¸Ã‘ÙÂÑ8Y‹´HV–ãÍñ6÷é(ýñÆ{ÓC,^Æ–E}0ã˜g‹Û]£¬ǯ ö1{÷*‹¨»´"¸dÞ"¶‘§“Ëå•ÕrfÚŒf§bÃð"M³»o1žÅ+°0Ñ|ýTŠ'u)ÝMÇ£oŠÙï;Ê»+ YN”·C Ú”ËÍdÄòJA¡!]r/Í8[ x*8Ûy{d4 oeÅëOpY‰žÖµVð‡ÅZâUµŸh%tŸƒÙÌS6Jµ<½œ$XÀ™ Š· Q^Ê®©’=#õiç«_õŒ7B­Ïí'B~GIs^Á)¨˜Ï–À¿g.éŸÍ]é¯ÇÂV¥ˆ(¢%ÚRòLgLs)Îæ¦T§Ÿ^„ï8C+SKXeÚ½€¼kZÐ29âC@»üÁt¿G¼;­ˆ¢Òx"u<äÛí4ˇ$I%øÄËåO(‰ªoŃá5÷AõÊfI1Þí3ø~-¿Pwоbßæ+Ö³µ=S/¨?Ö¶²[ íÈÓŒ­9š ×£Q_GôÚ·`ò‘Î¥Âßq@ùÁ(Äsl÷$Fí ƒ'I"v„9I„0¡K/% à¤)yLÃeö»’ý^Òdz}Q8 £«‹ãiÅü“ŠÙmìvww Õ}Z¯`9ióºÍnûBÏ1aSH –±e9}µ°†×3Z™ÞÌ+–eHãX:w»ÑçiZÖ\»â•]Ó0ƒ„¥)™»õïëçõa¯ó¶œ€Œ‰$ZeÍík.?//R°yûô¤.>ºüÙæ·ü!ýƒjk`Žã:æm>:„QysÖFü“îRÚàæQŠVº‰twŽ0Ç/F“á¿Çüqø AÞ¾Kã€:‡GeþìˆOx6’÷¤Ÿo¶[múxŸjHiµOß`ªcÖêó£m|»£\  w8ï ÔYÁ’î±vÖ*hî4.§5ùD²šùýíhr—Q¿ßèìÒçÑÉ>}¶Zôq"°¬wŽÿL!ú­à0âçŒØîÛÎëF‡?Nøó„¿·àwA^”“4Ï?owa¥YG.ñ:–E6øúÏÉ ù²¨>Ù‹yýá§²láÔNÚ,N…æ‹o„ ÄÀJ &Ê‘úÝÄ]ó:>ÁEUÞv*Æ"CëN¢€·fíÄíø/ŒûJ "…D#â?߯¶S°\¸183 ܘ œ™Mûù9pfž%ß=Ãw«Üµ‚ Žÿ7 wnÛs´ ©B·8åbâM_S~O6Ž(‰¶¨ùf;µ-]ëiæÚ|­G0 GeÞQ–3ÃÎ;* ”´'å§ ¶ñ>OF¡ê¥í‹ð:ˆâoïå{Û¿‘…  Ð8üœÚÙnF3vl‘B†aˆ¦v²qÁ?lnÒ*Š ½Ið% $<Ü-:ñ+нrˆ×±(Ønð)u"= €‰Å%& °¼©g¯ÈñªV¤޽DZ.IŒºÌX…õŒßÇ*§é>")Á8âiË Ç\dš yÒ9[xHIÊ0r6ùó»®B‚ž…êëR‚í&ÛôŸ^KKHúßͦÿnIÿ¢¤ÿ/Dÿ®ÔïFû\Úß˦ýÆýÐ~{QÚo—´¿Ú!í'•WR‚ÔO¤ÿIŒ a€%¯<Î,CµÆêW3Ý%(@5F=-Ή8•:ÌU§3ÐWå — <½ÙVo%ß°ë‘ÉnWNâí¯•ÄÛÙ$n. Ðùc§¥é~ëKó¥y¡Qáí%¾à®öÅ®b&+ƸEšÇKÀ†Ô‡â¢1Kç¸hÚ›mrÑ´3‘ ðV袙‰Š—Ô Û®>š6IºØ–Ø*PýWôÑ´Aƒsg°øöÜ^ÂGÓvôÑ´3剃&gIòœ4ÎKRñm‹¢Þ:u5RÛ…EÚÝ.sÚ˜KJîE¦¹À,¹2”Û)ÔœtÒ´7-ìN–a»ÉöE49 ç¥) d€Ô!‹2€+ù»¿ƒ—&‡øóÜ4wDüIeDü^Iü%ñ§17 Ñþ»IàÏ4º/ê«i¯±¯&G‡dàU]§»ñÕ,MçÅíÓåè| RœÎs|5ú²±ß‘¯æk[š/Í …}5 áÞZ ÜÁUûÛîA’ãjè÷Bp«ôkÀøåB7€íÔS@\î °îááý_Öæ<(J–óŠ\Æc¼ fê8~XH2Jÿt¨‰©§•XíH—ê‘aaDª3Û ‹ŒýϪð„ÏgTax‚oů²°$wõç>Lµf½WM½ 'U6ç°Ñ>f”kɬˆ=ì=Š”JÏ4E¡É&2ÿ¸“]p¢3€ð @ئÿs¸*‰i‚…9ð!\!(hTùÌ%‡V)èYC'@fÅ%­•#ciðûµ?º•×bMÕ9ʨá¦ÓùÕÕÏaÌ´¤?q=ÆÃôø©yòµª<‚'o4‹Š‘Ÿjg\b¥d€d¢!´üGÿ£?bÖóF\Š$3ÜLm2ß{êœÝf¾æ“UIfc<‘¤é'õZ<í`.·ìKžV¢ï11,¤r„7^œnvâ_V¢ÜRò‘cŽMU¦~RFŠ·Ÿzo…ý+1‚’w%!4a!†1«ð'͍)ÞP& 31›ÿÀº8X"ä"ÀZÒô¨ºM¼T«õHÖŤø$ ÿÛ [êÔ½P%¿iÃ7:A|7mixt4E®Æ©­¾\'öõÚ¨Â;˜2ÛÁ\ÝFî²íi˦Ò2—L ŠÔ$´¢brõšÑÚñLrÖ.jz’\õØÊfvdˆ£$ÒšvŒp>²¸1‡%šªZ—Ä™úÑð6§*›ŠE $õè†3ÖÌbH à±ì6iŸ®Zþ{,<¢=±µ†ûÀÁøæ„#¢ƒ*ÕL£Òaáö0ȸ¡ðàäß%ïz6È;ò®?\Ì„DrÝcT_ts`ö´ÕH‰™¾¢#˰€§n[Á+HÙvjÓÑaHù)b6Xì|-öX®Ï¯6¯e ý·ªÈw¬Š|¢Ø¸TRqª«¥ŒFs]6â¸*Þ6ÕðäÆž…R%yg`²ýúéù¢ÎGzc«u¿Êl/K™Íö(qÕ¶,e¶§”ÙÞÒʬÍ%èDŒë¨áZVÌÑJ$Kht™©/.‡+P‘¶Ø¶ñ몴Å$3MÆ”pÀAWSÝç: X.~LÓEÍJ¢Îk£²ºÙËêªë€.}ÑÚZ}վ臣¹J.YÔ÷,«®ÜÆvÒ[‹Áþ…uÕ<Û¦˜ÓÙIdfÈÅ,=3¶æí‚ªÀ­ÜyÔŽc÷t¥" !®&ãkøÁºO¾ŽªFè¯År …õ@H[`î%ÎŽ}U¤ž‡öZ‡3 QMD&IvuõÔiÇÌ,Œ'&³Â2væìm9oO67d“°TEŒ°Jû±·a8Æœ¸Wr‘x5Û¯E¾8¤`¦l̘ᕞö`s¿ôwœÎÿ¤à´¨¶5!Êv:1’=h¥µS¬4¡j¶³cFô?ÍXqµ:’.x®MÁd=>â0Û4›Td™¥©³MÏ%©MÈuiEzZ‘ü3G°KÝØU7Îñãòní  gkƆÀÈPóR.î(´ÖŠb—‹ÉÈ‚FHÑKã:nÓ¦ˆ‡áòÄæ’f…XÔ#uÓ˜ܑ±ÄµTËT"E9ÖGê&‘?+\ÍWájf„RsÝ%Ë,H?¿åíL o1§²¶È¼¬Þ]{åöÔr{Dáôq>Â’äc€ùﻄCtèW–ï#ì)?õm£I˜õ{5iJ ÷\ »Õ]Ö/ðœ­J‡Æºõݯ+hÝXÄõ—¯ÅPqùÚžï*@ ïZjoz ×èé7Îþí¯ý»_bĸ¾OF|Étu„A?ÍðÒ7ƪ]á§S×¥],˜Üòä?áUm€ ˜R§—Ÿš'„ï±ãùásÏ"NE3Ú‰øF{!a×~x®½VÂ.éK7?‰[.|"ŸÎÞ« )câ§Ù§ÖQ‰×Rì·N“'õ£~ ÙOV<]ìȾKµSó½;<³ßNB%¡´6ON+DœØÎæAªwogöý‹ñG ˆ¼Í©G"uGþËž€OêËœÙOx£ã1šDƒx˜Æ²^f¤¦åzf_×p­»ü”‰¶.|Ö(e" iM;ÆîèÌ~»pܦ½îgö]ʛﵳ³ó\ÎìȴȽó3{~ßßhNA£¶å=,hƒm¬¾X,À¶«aˉYµœ"V­”ˆ•rñX¯_Y´3œÁ‰˜q)œ(¢LÇ–ŠË´’èZõ&Óf m4XÂl 7r·¢c;-íØì?á.”p§j§1Ø[¡k«•wp'u+s‘Í­Çjm¸¥Oï,°TæU-d÷zzçKí犚œð»ÃoÑí=IhßÖ阥ºR? ¯äù™ÃR>ŽŠ|º‡€“…´S]Ö v¿ ê⎃¿ÙŽƒ!<Q™þƒ–‹½Â<¡9J¥TZ܃`çšu÷&¬v§CêY^§çLf¬¼Á]H% µ‚óêÓŽê·:ªßŽofiGõwÃpž'VÕl¿ò<ä±²æ~L‹-¶ÞÐOrY!MÜ#iâÆrœ25a‹Ë)`ŠÒWowŧð]®x0ßË1nÌ£G«7mZY'—4 ÃbÞ¤[¥>¿˜>_jó¥6¿Œ6)'‹ð+Uü)]¡Zÿ’Z‹Dó5ù¸_jñKiñ_äÌ““þÞBõ=ÞÅiªúîÂp›m§úŒÈ8&\viûÙ©˜îº4 CýVà,wJßåJ'ó½Bç쿜?²ñ²ÕÝ7ÔAªºKž~n¶´¾kÛÈݨrµ`ëÀzA)stƒ<3Ê»A‰Ô(ÃÔˆ÷Þù‰ýÖ²'ö—Œ9¯bëf1,«¼®_øùa+¬À%ÍrZWc‹°óƒðKß…6û@²Ú„7é{–d²&h«‹T¼È¹ý, ÖI÷tÆP´:ÝÏÈåÔÎîÛ 1åÞO×{]Žï{yÇ÷ Ü󨽛†?žsXð ;ñUúF·K<Ãß~ì9aåþÅÏð;o“ºÔ^Ç3ü–}ìz¼ß9UŠEUN¶T£ù$ø2qÍÒÖ ™L·í‰X®s²¬iÙ¸(ÄxwJ8ãh£ÉT°­Ýœt°oFÙuWu[_›ª{G¡Ÿµ=‚áröÞE€ÅÏÞËL„åßBuÛ UÛý‰X^Û‹*ÜÂU½Œ½èù{“ï?€²¹yæ|ÑE}.jFõä ŸÁO]¤b‡ða‹œÂwHرaÞ5gGPÚΞKÚŽ(–¹#IÞÉ[OQ°-‰'ÿu=Fa¿¥Y¤°R"ǧ­‘?rÄp{…Ý}›GîsU”lY3±­o»+8!}g‡î\Ò«e»„qwqf½Å7zè¾ð¾RvìæåzîÞÃs÷ɋγ¹Õ–ÿhçîÏáÛ6RhÛñའõkzò¾n8鯯_Ò=È÷&ýôFý±˜^úCHƒ+XÌË`:õ'·á ÈG݃V­yZÛIð~Ûð:T™bÿè•× µÃÿOÇðÆA ð÷ °¶MÿçÆUz¹ŠºqÛ#fWýáîÊ ahÕºí–; Üxyb8í³ùd$Æ7³Á5ˆì¨|€2fv"¾àÅG¼‚ÐxûK'òÅušg½N´K5mÁ.èêËù‡ïîöúüoOjé¿ ¦kWw1Æööö³½=?¿ö”~n×ùozê϶ÅN}»þto÷é³ú®ØÞÙ«?ûþ;±}ÀÄŸùtæO”߆þ|šÑš]ea‡§"Ÿåù‡þÇïþþ»ïÚþ¥8Šð³ïþ þ«ÃÿÿáßÿãÖeãì¬#Å7þþû—X“¿‹>ÿ_ 3Õü››aPû0÷'>ìØ£à»O‹;?=ÝÞù¡þÃOêúWþdðÓ &\>ú#ùÿ¹?—ÿŸ=Ý݉óÿö³’ÿ¿ÄÃÜÞííwŽ{gG^“¶ sNªë¼îF>Æ£“£sØØñ¯}3̰µ%Z 0DÞˆþdŠª˜ŒÑ Dþ˜bíÝZ}š™Sá‹éøjöÉŸ©Ð?'ã ¶÷Qeík¸-ž£(.APE`ÃŽÂï@ÃÛn4ðÅ~0ù-·UíÛñp<ñA: FªÈ^ã•hÍúµw&°ÒÎÇàúÕ[ Èp_®ÕDô'P˜“wók0'¦ð™Rž¼³æ«fÇÐ/a„'‰Æ°·¨ÛÆdâߺö ¸¯ˆÍP%9<îí·šâ¤Ó<8ê{‚NÍѨ›¨~îWxt|#=™OnÆSª¨ô‚þœV]%æNɤšŽ‡sªœ†”/&(;ÓÛé,¸Fœ‚FRØØFYÉ ò-(;ûUüàÓûV¶A+=ƒéâvËS6..Â[úw_àúó·€*nzª„ø ‹9õbÅœ0ãHf2T7ƒc2¹±· ^Ž:š“Ë÷þ„ Ž½Ì§@R0‘+Í´“"_ˆ»ÿõ4°O˜@o‚Éõ|F“” W1ßg*æ£ÁL ÇŸ0…d2ðÙ¬âã=5èÍñmgÃ0<äŽ «m@(…`î?øva=Dw„h‰¥Ž´•UkëI*ª F°ºŠÀt«Á͉ü-‹[ƒZP«UŒ'}n$S\ÖF Çûù…Ø–€Ñ’œíÔ÷ˆÇ)cð¨•,¦wÃ0)@ökrl –†ˆ' ¥¤7ùÈšUÑFI~Uµ<#p|<¢ß[LÒöå8늅‰¿õy0ã—˜¦2»°ÇA­è‹Áß|N"Š^'ZÝlmö~¢vD‚¡ó¤KNXÆt¦)‘šDzÛcø}ä§·>ˬ÷˜½ö?Wv3²”SÔ¿B­’eIŒšØÄQ‰wûÈü˜–s ®pÁ¡“|(N~Ò» ÆÁ'ª ƒ>Ë lIu àÞ_‚0ö«Hf¹´J¶Ï"ˆÖJ,`¹Ó~ûÍZ³ËPHËÞ†+½¿‚•Þ¯qO–•Fx,+­à>ÇR{—èt¸ši6zƒ?Rƒhv[žÞ` VÉ— °ÔÇíc0ï€Ì) KïåçX/¬9¨( &ø ¼4¼¥}CüZ¸‹¬@x€,ÆýfÌ‚>çFŒIò]õœì@¹Øª°8æFz9žûÄ•Ú!‰Ð«xtµ¥ùèžœÜó ©iJFóíY³ã5ZÜ œu^Vù'(~o›ýV#ì0êù6µ\Š—óÑ%ïGºöÒ9òºGQÇíÆ[K/ÍÏÁ%0ôÅ0]àë Ô‚Ô΂)cHw{ÿ–cBŠŒ¹Bsfyè'ÚNz²$…©ôË0f€\”ýJ=þ È>|¦E‘NL0L{w/ùî¾ë»ß›þ§hŠØ æ5- “+Œ×­"±N÷¨*¶â€Òùdô¯Ð®Ž7ÍXï2¸…”•ý*”}†wˆš·°µ`Œ‚Þ<@×<Ý]¥ó(…§±ÉªdX9%Õ>Ëð·5Ý ÒÅ :°ÝÄMQÑ}TͱdRœ€äÆ ¤;îο¤ßnUéÿë߉ `ÿßÞîniÿ‘§ôÿ}Óîÿ»îÏáÿ½ígÛOŸ%üÿ%ÿ™Gî½1ÿßa‡÷èˆ8F1G=´Ð?:Óƒiœ—ÜJ¦'»ø wk;ëí9„Î7“ÁPÔ·wv,³wx°#wãÁëF§qp¦»µErôIöT`Z.®lïdžë±[៽ ¶™õƤ g3J2.èµ<Œ¹-ã:ñ"ðÐ|W–šØGÛpKÂ40²‹ãÐŒŒå«’À0“Ù=2¡¢F6&BT*ËkZ.zpz0ÃîÑ«6úðBEµr.¹‚½ü=;NM?½\¾ÇoФ+ô2¸™¡'Q Øùw=U®«£¤c¨Ê†«ê±-Æ“Ùû±žyTUµÎMŸm¢¡4¥­¾';AæL®§œë–šg9k4mÀÆŸ0!árçzý`zŒÈiA®HeÔÓ-áÜÕ=œ‡Ì©Yç!@j!³rb”ûrL¦/³Œ¤€b€¦â|sH ús?,2+Ò€òÉ„ü¼¹£{º7Áåàj€ˆºaãW7"E L˜:y¿cî®ÞsÓýò¨ñè¹ öm #ˆŽRÙÛ“x½‹¯Ï²° }UBŒ¦åºá#Q»‘:r6õ~Š |GÃÇ ‘kŽÍ8B0ÇF„¬ XÔ»mô˜«‡ÄõÒÞ Rh*Uxt…¥Ëá†ô¥9?‹c&4Œ+QfÞ’´‘ 8– 8u˜CâV±âJêa2A1E‚ãÒ‘çp<{îC@€lß–íÝ#,ÞÈ·¦oÚFð¦h×£X{÷¾L8&¶§[½êúgƒ+Æ1ÑUUp@N'ò9%©Í¶šÑªfJ)EÕ¬>8x#»ú4˜?%Á¦³¸÷*ÀÎãŸ"pC_i@÷DmÔlEá0 õ/âåx4S:…íxOø ׂZ0›Œoï:ÒÕVñ®ì¤R€jým ÛDä˦ aô`‚5²(ˆúG·2Ø@@àçãFo0P-ï›%åéÓö†Î G¸½Ð!äú÷ÝG_éo¢ª‰ëçFÓˆ#-gl×7ºOt’¡sIg67Žê±tÇé5’ڌ—òŸƒÑ¥Ff½Y¯Æ=Áêîü$W±]@¢ƒÀAÔʦm é…il.S‚iÂGß ä§™qm#UBu-Ú7ïx—™rÈAØðøÚ‚ò}0)+Êø\nEÏÏj²«”5ð¬Zy?%°¥¾Rì'A¤\r1Ì=.²wbèi§JÖÿFb M†›eJshòPˆÌ}¦Nâø¦W_­?Ç“‘,<Œ¥ŸàOØ«ÞFõÀéü&˜XíJ0G9¡&y`f_ïáÓ{0§#Ót€) ¯+¸Ü*~Æ=ËךùöÌÏ)iÝÊT߇ÿ¨vÏLl “Që_'·Þ4kp6P¼œC&ýTò¼†">¹´9Ä—Btth]oËÝýL¹ç°æO7£¥@S‚Ò*üÙû©¨L H3®1¶ÛÇ¿ûÁ†a;À³%Ng¯ÅÀØNÖ”ôÈÕ£›ìDÊ›YÕ(ÏÏ—àÅæ°Îá1~€¿XçÅEøhvzo/áëwãqÓI0ûÊΗ®01}Oáùwt¨½? e3ˆ1Å$eKìÀ¢}”¸åk>̃É-9P¦ÓùuÐÿI÷KThÆ^Α LÞšbݹ¼4˜ädɇz7³÷0{»|]¬’Blëƒ-"˜LƆ=t¼ñ. t6–E‚¹0Ír|yÙ<ƒPO1º 3AððÚiø„³-” ‘îçihX¿2²%qèbH‰J%‚à™ÿx¨ýd'ññ¡œˆÒ Ø…Þ¬ÉàFÅÖ¹°K¼.5”Ý@~UfäÊSFN‹LoxèM69ití¦á—®P#\ùÚöá65Æ£ôø‡áÜU#·Æ—˜©B®omðÖñ«£#IE´N{ÍοWñ¬g¯!tù§Ç?ŽùG7+$áóËçòås~ùœ_>ï¦{ÓùÐ¥<ú.¯Ÿ?ÂÓZ|b þÅÿºYu~ñœX•O‹ñSøÑ k¸ÈëëùgV>Sn‚ü'V>« ï ‡ÿàÞåu²ºñ:tR­óf¿•áå§cTê`Wó¤«NX¥.'ŲIé°×¦óQÖü ¢ùKÄôUYž¬*+æV¹Öý8¥ô&*a >JV•G>«²ôFU–›åŸ§üw>Oï(5*œš%ÊFò]`¯ŒðN«ÑôÎ3pÜj´^Ó|¼WÍtüÑ0UÙ]5þZr ¤‰Ýœvάh)–æG¾öpT#ŒØBÕæhS¶•ü†Ä|CsV±N´xõÝDƒ®Ù -¸«Úq§Æ/iß':86;ð <£Á¹ #ri Èón²E7Ö‡„ò<‚ò\ƒòü8Ùƒ æ¹—l¡ÁÉ9*%†ù][;Zi%LüªyÇgµJYѯÇѯYIq‰ü½¨cc~ѯQÇçØ1þgÙŠjØð4é $òÛÙùƒ»ñö9)Š–œA#ß°Û³ä»=|w‡‘PQdË3•_fuøc²C°Vb="æe‡üe6¢»±Ö̦k.º=S1Ô¼•êTÁ¨Ýsü^4Ò¡VÍEðn0¡éþ¯Ñ)÷•ŠØExæ‚°»I÷¯ÇóY"%ÏŃ>LAøçf Ê¡>PäüS0*ݜѣÇBv{e±I"µÖÛgÕÎ× „‹áøò76”Ñ3¸–Ê©––|5ÇŸ¨Že¸V–0Ð*=ËüšÉ²‰\ÍpaXÏ0‹™²*b~ÆÌñª ôÀ+N+‡ÉmùŸÚŠ(ÆÙñÞ«7À²¿ÐWijªÌy=|Äv¨xòÄL`Áƒá±#õ²²Û ñ4VÙ1Þ¸÷]˜¬:ÒK/2*ÔÝï¹³µUˆVO<Þ¦šêO¬V º,[ÙµBI,g B"F)•»›Þãú¦·™Õa л<ž‚‡µ+‘§KhMöñÒaIJ[0D&œqPI¥CPOBP½ H탫¢€¶‡Ð {›^zk½zMOÛƒÎóiªžMSÇL§ŠNÒù‹PW ©Žh¾ô¼ñ8Ö%)ÎQ— –³¶ÑÈu)jMÓ}ÄèNˆÎ6`É4êdjèÎrÔRqBíhµ‘^wM¨;‰•B–nø¦š’Š<;Jíe$öº3O· ßËæn)èÍç᳈ ­mÂjên;£ÙJhó8—6Ÿ:ÓæqI›âk Í5߈û»g mç™3W”ÚNÉ.éÃÞ-»Ü³4 i7ßgóJãÞµ›ö¢,Ñ.Yb­i3_»ùÁ™6ïI»)ióÛ×w§Ý4Ši7?:sźi7%»|;ì²Jf±_;a)2O±žmä†YÂÓÎÍ~¹`|”ò]‚뉃ögHˆ(S±žÆšIEßma—ô˜K¨AcíìÅŽÄQ1pÚ‹ƒ“Å×a~Ôc Áä–Z˜+ФÜI=NçQŽÃZGnc7grQ§È­ƒy²3sHXÎô)ãýœq.nÞiè–ïÕv¦½¸Ti»…nõ¬â¡Ûv߯´°nû.ƒ¶ŽÊ“‘8ä´Í 'Jp¶(œéªˆŠÔ¶¨H­SWPÖzص‡\B]ŠNÓÆzX\cÉ'½¥¢Ox/™Z ¾Sè±ýR®¸X§;: S¬Kè6›d££i–JZÖž¯…–se÷2r{Ý™§[HÜï9‹ûnÉ"âëa'ŠÝl0P£P‡n6…—j>_ …®¥§+Zïœ)\¸Ëë<%»àS²ËÜA…tœïuœ<¯ÿ±D2§!b‰¬{àJ–Èv](Ô!Œë¬ã”ŠÏ×B¡k)´ïNÇiÓq~\^Ç)ÙŸ’]ÈR0Œ‹üñnø37 ‡rÛwÊ5Ï;‰SæÅ`2),‹™"‘T œE"ËQÀ4Êí å:qâ✱\(7ܡܨßöqeÿZWwK¼ò©>È/óDØ–µ,!Øðp÷n ˆ±›­ _|ƒœ•sñMx¦ÝeÖ-9§óÁåoò 5VºO§ƒ‹a`ÀÛæãÓÄšžý(uÖ¯¬zù+N_ŽGÓ™¯×ºhž`]®ÒAw—‡ó”·d¿ :•¨ Ö…€ÿ=ÁWeSy©÷ *Ðó$,è"Àz£a¼SMü*ïÙæ®þ‡õb@ïUFo‡2C]#p]åMs„y““ºxœ* 1MÅï àNvbta¹œ‹Ù¨ÂM°ÌË¿įA_rhUG'kè$ÈÃôI½®AuéÂŒ#øËZq=EøCVʬaé2n:«‹ õ+Ì®ÇX_¢ÝN¾V•õÄ&A~ˆùTÄ?ÕÊ|ÅêìÉDCheüþ`ˆ%^6âR$yÖÞÜTóÚ;Ÿ³7_óRÊycÁíž¶ä…›Ì5—ŸËâpôýcaTeË4^œnvâ_V¢º”HƒiŸUY6‚Îgxû…C]uŠwq™TÅœ  ïX`³®f²öÞ5}¼Rgb6ÿ€Pl ÇŸD<ÙGh¼Ðyô¨…Û5j4ôWãAx׫¸×ä–]¼iÅ7ÐB|7 Û–oOäjœZhËub_¯ý°Ö–Ûè`DEâIJíi˦RA3—´Áø5jÝp½šÚÚÑLrÖ.jz’\õØÊfvdȤðÁ²bš¼ŽZÛk:¤¢GWi·0ôƒé`‚·/rEF`—³âpâ‘°4ÔWàƒ ;òCü“ÎV‰eß%Yè$ñîíÈNAh„ÓZ¬¡‘mÓN³'\MF¯Sx ”;CT‚ˆ®j7 ÐÄß·ÞŠA”ú€\œ\&`Õ4•è)9Þ“H§bu¼OÆH_®D&êqGÝ©†?cë ß=d`2qÖØåøæ7>º¥wXveôØsá”<8ùw˜óËGq*S—)‰8¾¨²H³/s[Œ]“ÐP÷µèOêUù[khV ÂƒI‰:*YB¥kS=0ÕW¤ ßö÷×VypÔ±í2q¨t7¬×xL¿e&¤x8êÑý´¸Í]Üâ’ð§ãS+xBÈÂ%4ÌhÑIm™>ÙÓñV0oUSIF‘æ¾±FÃ, ÄÔ dË##ÊM.´VI.BU(ï±ìaÓö~¾f)r”Ka‘Ñ+'‘މ‹Ÿ¦g wUs%Û¤}† ‡;(D•ĒÆ3õP¼k:z%„{ !,¡ê°J‹iÛ¬]UZÕÝ㌄ãÙfýJ©A§VýS¬leéP”ZÙ;]Üäk¤áã)L’®ç U_8iûªð+RsÅû^ ï™&€°ZIRŒ«EŽ« †»Pc3)•µç_h8E­ÓY6Ù0é@äÍÛ,ø\ .ƳH³Ÿ“íòTyQH›G¤[z°éó vªJ/R´úmõoL¥—jºã\PìÕ˜lwÔËÆ~{>œ n†·Rô¢Ê`×%N-](,ó}%duSè6Zïbhdƒm¼¸Œ§ŠUö:<Æã‰G¨á’÷‘5».CÕÍ…ªŸ¼u„D,5"E$ÄÚm¼‡# ø¬’ÎLxì5ÉÑsÄŽž¼%i»²Ü`óß—¯öÂWs ×í³òd/CkóŒZ€~cÐcïìÈë5“«•ªÛ¬¾UwÇêF÷¸Ã:Qº<¸¨ûuÚ@æn;j;ïöwQ'ÌÅ]‘EvÏ 50× é:ýäk÷¶%6œ•ëEöÁöû 6ËônÅ^‹…‘ä‡ ò\¤Š§¬ó`v´¼cÉsó+±ß®ô.y¤X|E¦Ä|ÖÍÇ´(€¥›I`}ÜLè˜GïÝ:¾¬ƒIóò[Pϵ ð~…”ÓôŽŽ'åôüL·Ê°CéwJ~w¯~'xÒLFÍñù½QŠn×O{N_ñ`+äÁhV7ïάU¹°c+{¬°e¢ïü¬â´¿BÝÂQþUÜ-q®‡»O:›2s²úq_­Â†’—â0 שt~a—a½tާ˰~ÿ.Ô\GqWÖ‚SÒ£(­„l%[âÒ:°[‹ø¿Í¿ÈλT:{hçÒk;TÔuÔ¾ÖN蜑#û °¯0÷[QÔežíâzÃ}yÑέa gо³@F×~rD©öYðª¥D'ÙÁ =2ѳE6Ä2Y³béІX6º!2qð(àÓ‘1ä½¹á ‘íÕ—í¼9Þx‘áÎ>yá¨h‹|][¬Àc+V§y‹%özaK- …‹|E\3#f’‘1*V©•+¨ïä:0…‹r.VI+QÕÅÂÛ¶ÈVØ…ƒÎ.ÜÔv᪹‹¢)¥bE~|Q ±Ô}EŠF3^¶Isá­"ba5n{±ϽXµó^,é¿OE¦µ©ƒ,V¡ ‹Å’TÅng±@ªªRwì¬åèziÞ猯ÀÅ,²½Ì=wtçŠÓ¿Û6}»‡ûtü$}º¢‡ôlvƒÈÖõ–õŒŠLç¨XPm³Å|]WÃÕ¯&¾¼—„¬5!Ñ–ÖA»¹3,ŵë×jâgÿ¥~¹”ú«•pÒ¸é¤árpŸŸ¥|¦Âªe-–l,–ô›ŠåÌ)sSé-ä=µ¡³ˆU8úP·8Fc¬û5jM"²pAU)5›ÙMUR«`÷:ô‘æ))ÎB‘¸cÅ—[':YÞ˜“êÏ–Îw ’»·`–Š”t Ö7 9—Ìw.IÂBú6zÊU×KsÕ W¤mê|…Ê®júnÌ»˜|šCÔÅùÚÓ`_bJéP®rBkïáe¾×µ^þdÍ,G/oïn¼¼Ž3qË Z™—·§yyí W=w)º(=½–'ÕÓ‹D›0ë³½2…÷óT™>Æ*/å?Ö3Û¬ÿ8cÎIqa™x`M¡P )ŽqkK)I¦$,é¹^ +ö\ç¡“µè\|ç8¼·³8Ïe§ÀˆÌ,˜ewÎ=ë0èÅÒÜí¤XX Æx‘1©SòÞ’0‹©4…kçñ³ÊHDïAE"Œ-0‰HWe³H.%±é&« ÚhÅɉ¦<­ÉoÊøÊšXO@”ñ•‡hK”ñcne|% _s|ÅM·ÏÌñ)@•…’ÕE¦¦¾Xùh±” [‡°“cæzV® ¶ žm ]¹jAkºr¹ÁÔ9vÕ}”aÁ¦ñ_ ¸•WÇG¬G¾{±ÀÖa­¥8…C.KÄV\¢!ùa—2ßÝ>Û2r7‘2ßýþ¢ öÃjâKdÁ—Q œ¸Ã¹=<ý¸¸»ØÅeÜq‹¢ŒS$^±ŠhÅ¢gvŶ‚V(´Æ+Œ< v©òN>|Mñ†äk¥g~M´ù JÏ|!³§P™’ VÚ.ÅvÄ*-a-¹c‡ìAhýΛ×òE ÕˆõŒ ¤h}öNŠ`ú.‚Îå?Äz„ V¡R¯6Zð-jÊ+‹8¯Ù*EÔã{ ä–Ìi¬ dÎ÷Ù†F^Éœö:–Ì!YÖÍI>ßHÝœeÌ\Èbqs¤,ÅS´OŠÒU6ùwÓ­]&U©§,Ås7AˆÕ„ÊB«´#Bõ  î!Ë&æ´ ?Y3û¢XW?ºÓâGå¡…/¦û?ˆ„ü2²“ÄØ·Ù)ë)•õ”ÔSÖS*ë)Ñó`­«²žÒ—¬§TÆPÖ(†’|¹ E”æÈà Ed›!¿”•BÈ„ýQVv*+;Ù‘µ®á²²SüYÿˆHYÙɹ²SâC‹®ØµÖYM´½³×ØW>ÙÙÆø‰?ƒåF}t[ñh<Óc*¦§¡ôç ebð"¢"¢ªO iâN$Õ ÆÓ’U pÚîL3c‹ËÞÙò64s3íqZi?ölbÀسL•/FZ®®LÇVL¤÷b‘aí¯ôXÚÑUŠ…Ó¦ƒ‰ n±ZŸ¥Ó#ó¿sub%Þ¶®†wÐ3Öþ¶ egE<Ž0‰®U'„ál‘­œZêKm;„ºG !ÄùYò\há­Â©rˆ³m¤¸W4â@¹hRG¼P~ òX`ï^n×^ÜzXõN¿Â…륟Wuái˜¶Á¯ñ>ŠdšäZ)6€-RÌù/Ê™¸Íç ¹VEhYì¥ýUåî¬Ǧ¶jA?îWµãNM‘y$¯“”²êU/­ùvšôS#ÛF:©ß´z™)í“cUDÍ;>«)¾­5¼Ãšö!\Éå*îƒ+E|Õtw¹]"¤iîaËx7ÅÄtª¢nWÑPœÂr-¢§»hèJÿÖß “ެK”- ÖueòeÈ Æ%ƒr±eùâo|M¬ Ä{œ'­Jó“ø¢4Ä{*®ÇÌdίGSNÁ›Œ?Mk¸Urƒ(R1¼¥ÖQ‰×ªâj0kt–æ‘ߢuj–¢2¸Šú±Cüþ`è_ ëÒܬ‘al¯Šœ_™-èYÅK& ¶³ª { 0N ×Ä5í$¬Qˆ¦µyšK¨õÍÈn§9•Ü:ÍŽÀq‘8zÃcþÅø#ÐEº¾ÏŽ|ä¨6*LmËÙø¤Î.ú†Å@L:+DÌ_‘0õâ.‹dƒ˜×²^¦ã¢åªêî‹öcXÆì¥Sþ‹öÒþ ±*†°z1„nó„zav~pž ¤)è ŽpÁnº¯ÝjÔ˜h.–ù´ˆ_Øž™jhÞ Â´©É騷9?¤Z^|×6=Ϲn˜A¯m÷«ÜÙOœ²ùªí4GãqØz—òÅÁ–xÿàfšê£²¯“5'¡›“+–êǽœM²ž±Iö^P*½jV»XÁ+[þhì”ÅoGc˜ÕÞF¦ç‡ÛnI÷ËeܧÞ`B…QÂ=­ú°ÅåÞ·srïÃ+‡Yí´@K~:þÁëž÷&=ƒ>§"V²–}ÂíÕL·ý…&›½";×Gž`äß6º¼Döàt ±ú$í…ì餰T¾²½Ÿ¯ÔнVXö€6ëE‘z‹L»—çk¹+ÙÂí3QßÒïY Uÿ›©§äÍXã"I5Ä,“ÞMŽ6툃Îc5TN•šü›W´¼ ªµNÕòZµ´;RÒDvöO¶!L ádm«Á¡èÍï{1¼gš Âj…$é±hÐR @ 3i,)E©q«*5ÿ¾Bf¥••’tó‡V‡­îx\अ3í›Öˆõ”§»á–obK6YˆÀ³rN¬&[…ëìØ¸@ÙŽIáùž>~èHgúܶô${•¨ØöaŽˆ%SÅC½†½®œ8Ìe`}¸ {ÔíKtx,v·Å*Õ$èIݱ+6û-$Ëö‘WÞÖÒ0ëF™yÀ–duè‡~Rºº¶¬yË'ÂugÕ‘tP9çŸÊ±´Œw·æ—ÜÉ>\ò›L€yT@»1ä±wväõšöãßvgÎ’¹îv?ž¸Ç-Ö‰ÂQê{†×)-%‰çĤ½:¡nQwÝI˜ƒ`UW6ÿäk÷·¦£(”vinQ–m t-ºÛöRÝh±×rïÂ4¼W~dr_íf»¯ºdýˆ;öb(EQz²JOVéÉ*=YÆëãÉêEG¿ü‹¥XiɽÂ= Ü ÃÀ¹¦mêy¾Ò[u¯Þªžíàé=¸°TžÓºéÛiÀë9Ñæ ¬Îáe¼_ :¿>OX&IÉËÄ¡í °39/”¶°À±&vPÊA¶TOÌÒíÛ½ºmçØq+Ʋ2K·b¦[1Õ¯¸Wúí°ß­_qïþýŠé4îFëwJÍëªíú~±…+u|«Ž¿ˆã÷+Ñß¶Ñt¥ñâ¶¥&ƒé<Ìš¨jÓ>:Ó½èŽušbŠvŒä×^á^I~ð·¡h*ñ¥=dX¸sZ `ѵSƹǜjÙ{Îy¸Ý”bØJY§”Ã^8W,Ä«¨ʈƒÕÀÎsç‹è>—8…p½EÖq¼lO»Èñ‹Â·œ¦ôâ¤.‹|Y¬ÀÏ*V§?‹”M3²? (Ó"_Ÿ.d;f¥ˆ gÜcΉ¢ÂE#«$Œ•èçbá[«—ÆrººpU×EÑR±"¼(Iê¾"ëTŸÚ­Z–›Š]zq²ñbÕþxqWh¶6uБÅJòrÄbe±€SY¬6]U¬$cU¤y—óª-º»í¦z‘‹ÑÂ*d¼œW÷ÜêŒÖ½ŽðJU;W·šX/•μ»ÁEw‹ÌSKÍ*'¥È™œ ã4® Ù c}ƒúP¼LAÛ]*8)ìηÚk ð³”UXõ³‡}Û¡«¿µ@)_wŸ«pt».r¯á‰,.S´ð" {ÏšÕ×›ÍÈ}.Ro6;Ú¡›%/á˨1(¤Wñi¶WñøKx³s£ãÙÕùÎEh÷â^,vÅ^}³ƒÑHnÎ.yÃBúHõkïR6RáêÉ´M½‚¯`Âôʦïæ½‹É§9VÝ/2l/;¥t(W9¡µ÷3ßë °”Ç´h­ê®¿ToñÜõ·oqï±PKMZ©·x)â(=Æ–'Õcl½çp%^L^2ÜÔSkø«¼”ú[¹'1’–‰/äH\ÅM ЦВH‘ëþ""Y?|áÛ¿dØÁí¢Ê3‰R7ùšL§Y6¼°ÊË*­MWn»·Åô/u×bkaF[0T±H ¼°ß¸H¼pi?~Š…-z!lᦸ(\g„-ÒuÚÔ[iYý‹Í7YÑÙrò©)×kò›‡‹YêÎé5ŽÐdQ†]¬QQ†]Œ¹•a—t„~Ýa—¥x¥ˆ,J›‹ªì‹UÈvE‰õÍ•*áö»”øIOe×tï”û‚rz¸ë@–5'¾H +û.Š/ÈÊ®O‘¬g®…~2¼÷êÊ)$Ö#‰¾X”kñ—å´DøäGs Ä_Š„Î–ŽäGaÊ4zûl³#+J£ÿV#eýýE¬‡Å—È­/c8q'}úIrq‡qŒ¢e #çžb~VPm'Ükc-ŠXò ùEbë(X‡G$ºŒ:X‡¨Cò¥ÒA¿.ê|¥ƒ¾¸ñS¤OÑ…ŠñwϺ{=!²Æ{š¼«B±¼«±B6b­\ýYšYZM8!î=àXðF¬y` r-õ^['K×ÂÉêcí#Ù¥qî([W§±‚º:ß;×ÕiXÃÞZÖÕñà Êâ:Éç)®³”Qñb@,c\”%{*ÙSˆ²t•Mþílyeº”ñ”U{îÇõìèí/º ÷äí/+øàSVð¹3§t^”ãI¯ôêRÃï ‚O´ÉÓjvæ(WŽIEVC\MÆ×ð£@U™—Ù NòõÒ7þ•«¯‹jeºFVjc‰f®ÚX™¼nÌí«K^ÏÐ÷kìÑ^Ÿ¤vë›÷­ã•µ„VTKèçZBwçI½ÃZB÷àR- Åž² Ë¤Ê‚BÉg¥fÅC(3”Äý¤ßÄ\¿á'kgn”ç’³žC°¾°†vYY©(õYCß{ÆœËJEe¥¢²RQ&:­M×áx@¨‰–•ŠZ¥¢µÏ;3°þá™t0R &I(BNâòI`)k"•a¥2¬T†•ʰRVúŠÂJËše™$ùÜíA‰Æ·pPâ!”Júqu¥’î+’·h©¤µâ-Â[*XU8¼´Dé«%•ç"¾¨ð@ÒýˈOcßPħ,ÃT–aâçKÞ›üUD_ÊK±§¬±TÖX*ã%åq–QeÜ¡Œ;”¥žÂçaX e©§²ÔSWkÁ(K=ɧ,õô•zJ|hÑø+ê(¶êEËâØEqµzÝÓ®'ù2ôkª­Äã¦U;îÔ™ÇAò:ÉPºVÞÒÞ|;Mܪ‘Îm#XŠz×6·OŽU5ïø¬¦ø¶ÖðkÚ‡DjiÄ–«Á®ÙUÓÏØ%Bš ¶ŒwSl_HÕØM]]n܈=²½EvU])âú{aªu‰²ÅÀº®L¾ôXá¸d=.¶,_áÖ|¼‡Ê ÙywVœ'ÍKó“ðOž,ì‚ ·¸òC˜#˜—ãÑǬG©…ÎGꃾ˜Îo‚‰Z·©ìC¥’ˆúóö‘×ö43™¡¬yÍÚ¶âÁ4ú¶Y{uV«'¾ƒçðX<ÝGhrB©ç­däBâäñtñ"ü먹µÃ¨.ä"{gG^¯™@MžV:<ÏžZ•­Â0=s„)¶X½Q,¦— ka›Œ‚Ë`:õ'·&¾»­Zó´¶cÅwÃë´ãûG¯¼^;¶ý…nóƒÐñ«GªÄ 7®ÒËr)hæ]õ‡»]kRKèUÁ´µ£qI¶S_ÎÁA4Ðm·Ü¡áÆw‹¡À´$†bôØ fóÉHŒofƒkãQDR•w"IÀC2C´oé¼ ¿ê4Ïzhkn‚ü_¡¦{~¨Ë­?|W>_Ù3ô^~{RûKÿ]0ýø×ÚÕŒ±½½ýloOàÏïŸ=¥ŸÛuþ›ž:HãúvýéÞîÓgõ]±½³···óؾXÏ|:ó'ÊoC>ÍhÍ®²ÃSáχòüÃ?ÿãwÿÝwmÿRwÅ[%|ð³ïþ þ«ÃÿÿáßÿãÖeãì¬#Å7þþû—X“¿‹>ÿ_ *Öü››aPû0÷'þ´Æà»O‹;?=ÝÞù¡þÃOêúWþdðÓ &\>ú#ùÿ¹?‡ÿëÛ;»ß?ó}÷YÉÿ_âanïöö;Ç=P„›¼ëÿ©‚'q|t‡ëëÅ݉Ýsø§ Ÿg¨0`D±®#Ý\fÂÜÖ–h5Àž{#&c´Q+g 6¨Ø­íÖv6,=Æž­­°«ƒñh6\Ðñ‹[ñCöÛXN®A²63{€ú> f·øÉøï&ÁY«ª+êèÍŒßëÁDœÓ`8ß~LFsÕƒÌÄkÿ]0²ÃD5n&ƒ¡ßÉŸHÎä$žSá‹éøjöÉŸ9@7“ñÇAŸ§S¬!ÄgÁh¶IF¤Søý1WãÉhà‹ý`ò[0 n«Ú·ãáx⃱s åIHò¯DkÖ¯Õ$\gïµrÙp:˜&3ì {ôªÝˆÖs§Vß­Šc°õ/°6Ên вýC ££Ü’f6\LÀ˜Â÷Ã<º)e×½¼{?¼þååœ\Áæ×Ð ûÈAßVÅ ý{JÿV^Wßllѯ8ìs:ÎU{X_è$À‚~ô‡sÂéÅ0€î_}yè__ô}ÑŸ«â5þˆ>ûL¡[ñ˜Aü,¶k‘%Ø>ii ê{M©c×já/¢ ¥?É»ùu0šMñKÙ‡wÖ|ÕìèD $Y¸KòU›™QÙš¯ÆÁY³³Ò^œ¡-€4&ÿÖÇáqo¿Õ'æÁQ÷èØƒbý *Â#·J…ÁÚtˆØ¶Ø¢‚¿žÌ'7ã).‡xÁ΂IÑ›KFþ'Z4#r.*°ÚDKbøC죽uq»å‰k$ÅgeŸÞÀH°r/„WŠrdRÅT¨¢žþ4î™Jy~}üøÏøãógþ±­þJ¼ß ê Eý›âüÿΪòýüþ¦øuÌ?lïçŽoðì" :þÀøò{‰ ñdö~<ƒì$´©VÈ9çfOÔRr…h » Å ¯äòq2 ¿ ¼y=¢OzrXùvD¾Gü;ÉH®b÷>¡=¼•ôõr ƒ: fþ€]hÿe>ø¡ÍÍ3‡p0¾€÷G u}] /úóK}ò/Çq3ôGídÌriÊS ÿ¤ ®oCÜ壃 þŒޝ°ŸÆÄ ÎúÄŸü&~ÝùsM—þ4À‘ç£~0¹Ž?©-K‚âÞ aði-ÇýÁÕº—ßÍ@㞢?8”¼eþº÷gœå|ôkâdðq pÍPö¾»Å o¼JbÐO.ßÃ(¼†ý@të–S`3†5òûòVÁ]A&Ä Ö7íä’W#ìˆf+®XªK:Y x}Ç–EÀ›$vÿy«9 ®¯ƒ!S™ÜñÝýsMQÁåxÔg2š__p¶Ï æs¾†õŸš@xE®æÃ¡€£µÁ®ÜŽÁºñ‡°“Á«ù‡/OþSüæ_iln(‰ÄŸÔ|IôDÈ Å8@Œã‹(ç†]ûþè2`tÁërÉ•ƒ߯—A>áûòý øˆÖ+Zh„Xg|‹‹Ýj Cž«Qõ´úìÏ,3 ®ø T%@i¨0R˜ùÕ&ÿë÷ŒãîøVc>¡OÔÿQ «y dÐöúëÙÉŸ7ˆaüÀµ>ìÍ´‡KÜD\4ÑÖ-Ô|Z‹wá+b4a*t‚æ$øÀç€æ^¹èDãÐJTDÏ;lv^¶Ž ÑœË_7ˆƒÏ³ ÀA‹>­ À-Qd?`Y:ø›A¶<æ%`\?zNóeBŸ øÂÕæðË;ÐÈæÂp<%> µ¡þàÝ`6•ò-Ôƒ%â ÿ6ã +ÁUq0ª|®£–Ѐ+¤êVÅ«‰ëVê@k±qà/N(ÊñÿJj½®‘àz.^¢Œ#騉8šuÿvä_ÃpÒî4“îQ£-þT ·mXOè÷æfX}c ¿ï<•Üö¹¹?ŸÕ·v¾ßÃ×A‰“þ¿]F'¹ô6ßñ(Øš’άD¤R(‰F¢è•$0—O1]þïK9¤Vr¿{9€`Â5:¾¿MÀÿ ß}úãÖî÷;üîŸñ=M>½©©%y®ny?î#å^'AD”“xÚ¡~@”ÿGWü¹8R¼ |ÙS´tžEu‹Üñìuu¸öŸÐu3F>EL³Á¥Æì Ù¯–Ì‚­z½Np?àNLß >É7ðEl$ì´=ŠCÑN³û4è1Ø&¢‚扂i·ô´»WWÝHc ƒ“8çÑÞyö#ülE / óÞ.Àü,æï· æïuò`!½…Ìö>@¥x129•ð6(D[ª°GÌâÒ‰eªà9 ÐRD2D l‡ƒM«V+½Êö"Ëýù;hÖüì#%³¢$ª™ÿ•þ}1 P]š7 ßʇâú£^`{‡Í”¸7Õ@èR$sûˆ´ÿƒ¸ª½§·üÛñ\BšRš5£ì´Ç µv64“Mìèê~ö}ÔØ¤Å3›€š‰û7)ËzÃø~N{uÊK ¢ê2øÌÍ?ÅÞ쥾9¿¹É|óUꛜ¸54­®ª²¶B,ôìXHAèG¤¾S˜œÁ!^¬ézݤØxž2}{Vƒ±ãÈša±ÌšìDÛÞ‘ˆ&¶c}‹÷û– !t;öÒn°”ï³í¢ÞïÓËÉàFÉs“,äCVYpåc>+è4Á„;2qÝfïašïÇCÚN¦AJÙjPM'ãÏXN0ªÄÙqëÅü³Ù<é‚b6ÃY¥ ¢>{qØj´^W5mÄÉõ°Ž ˜S ®„¹¬ÁçËàfƺ6¨¦R“.QµµMY† n qþiÓ‹)G5âË_Ã9*5±BŸ¼ѼIk·ô…-ˆ@¤‘–À\"×Í' zAl+æùõ)hŽCuÊàØk²¯ ,3j!Ï!Xú wvÄ\ ÒõlfÒ3ÕÀRبç̦HéMÙË$õôÊGìÜš8¶tbÃzÇUØb˜xÚÐr>´•nšú`A^Á:ý7S›æbC#2MŒIä±™ð&‹ezRHqFî<Ù¡fQ¯ÿ°MàAB¶”"ï¿^VäÙUâ½£}Îå<.ûΉçFœl¦¼bº=õÓPý$ôI²Û@epz¶iŸÓ¦`ókÉÞÉ ÓÄ?'}9 ë¤m½è“ÑW$ r9˜ o«0Ÿé d/[®VX"¨Ñ;vn¸£´æñX~ˆ[?Wƒ hís@Ê'¢¾ó$ÅYVÁq“?bÊv²é"Ñ×/ዼ¹¼ûÖ½‘ cg‘ß2Ò@‘uAm ŠIË "]O ;ðÀb1|>¶~"}Íö8>¾0)Fƾ$ÒmXŠoð脤_xÀÚvê0µFÍœö)¶¢}«¦ù¹‚¾A6tì®ç³9 ¬PEê8èú$étϦJj:©©Xnü„XÖ5BQA@Úúß°U~œ&·gÚÙñµ,vyu–Æ.Ø[äæ”a£þ /×”3iÕ ±bÆÔlW^ÂÄ詨°æ±!ï@Ùèè«&\Ù±ÇàÖk ä"H"&µ2d–®zC¸×40òÆqVž†tm'82Ô¡ŒÝí<÷66¢ð¿`ûq×U Æ-?Æ,ÓÓ€±Dw0 ÷Òòþï¿7¶ºVs³·IóÙ<ÿ¿g¿ÿþ—:è­ðý†P¡\3óÙM©ë-,b½ñLƒÕn"=BÇÇÕ$¥KÚ„oÑpíhš#¨ÔãÑð6¥›‰Ið˜•Ï@ÆÍ,q(ÔdAL§ ÑØsÒ¸]VÑÝÜ sú} CN±]{&Ã’ 콸K¶5æS›Ôó\ 2 }Päâ`õTM9Ô­œ©o1Œ¯¯øaÀJJøähZj㔟ø¦O=Vuí®ìTÛªÜj¨ÿ0­¸ˆ‚•T®l*S*_öƒ›€We̘âí—Ä„ÊèßÁpY Þƒ]˜ÂöÜœúGÃÙÖJ‰¿8e(56Â8œOd¸Àð#Ž›óË!Èrf ©Ú¸t¼ƺ ¦¦ja…%š¸×LŸ¸®S* Ç 7Ui{Xm$ö`¼:¸f  gúó@Ù{ØŠìã}©{‰¢k2ú´èö„î\ÅßkV‚²pçÂl)£ïê±ð#aÇƾÍ+?¹d«ö9w”Á¶¼«Ë]­ñˆþHM!–g™Ù<ÏË´þ㦷ŵ9I¤v.Á–P/djÇL-5?r>ÈÉG|"…;d&^˜K{Ò}"?¥ Þ° C²! 2 ³Äˆ—#j3”†»ôDÉ(GH ô^½ÜÓ#»?Ü"ÎóhÍa‹8§T3ÕÄÅŽ&Ôp-ÃÖ¼£x/5R^jŸo9 ²Ÿ"Ò[d;Â>÷ªX‘$aɣ͟eÊÇív¹õH÷¯JØ ?,˜AaFHdÉr@™ ¬MbËu ù4’¶5Eõ£SzÀ0âìý$ôªÈIå×f?cÛöÜÎà“̦ن@• µ &s=RüOBù§q|˜þ¥tXÊtø“§r}Çð\(ñQÌÕ'¢•áíOº*Ôy=ިċóЬL‘2™ªVX!€§‚R5&Qq´ÚFì:‚m¸’žŽôð“H좵Äp»æp»¹Ãe˜’"´&•³Ç¸"ÅÁ“„iÏ„iÏSÜõo'ÚÙ`"Œ¢BiÌHÃ>E(@\üåÿ P}úëŠßŽ»•Fåyu°QÅÝØø=ŒÜQ¾•ÊÖƒ©Ì£»šáµ(Õº ¯ ¿¾¯ÂFðÇ$³ð\÷—Î1÷׋Køß{³ ·Þ4^7‡x®þòêðßî^F7Þ´À½ã3êē&tò÷ Aœ¸_öÞ¡œrëøÕ(Hú÷@ -0^“æ ÿÒ„¹¶ºçÍW~ £¿É¦Ãí{L#=°“J¾t$%›z_6ºgŠxje‚#L†àR¼œ.Y)Ð×t޼îÑAÛacÈí¤üþ8òðÇ>Î ~î8dÊ ð‡e¸æg8¨{£ÅÚQóýV£›>§ÃC\ÁC¯Ó®ËFÍ·Àþž±ÉF¶óB‡ ˜Lz'ò{ 2NÌ€Lˆ °ôï-TÔê‚,K¿Î@mw~!- äÚl¼=ùw@ÜÁ1ýrm㊘øã—ÆI*6ì³íà‹TëšvAf¾mvЍz‚åÍW°C#IáÏ댃ËùŒrÝ1m8e©Íî Õ®(hîGÙ† ûÈix?â´"apZm<ă‰QƒN¢˜2¢LH4hhC  & $E ZbUl¨°TEvGÁu~‘5Þ}õˆ*%ª¯HÝJU‹ «VÉ®[Ôã%Öu.FÈ캞Òu'êšëú<¿ëÝx×TÄRÓG¶ß‹·A½A£ã߯ÎjíŒ1ŸÆûh6°vêß' <ÏóÇ$˜Y²¼[ëzðL<¾±TJÍÚçÙD ¹æ²—°\J­Õ¬¡f—ÑUbÕùö=¢ñv»ÂW<ËêA_ÜÄת^¬øË¿=¯hì‘^䉪Ӱ8ªˆGl<ªŠ­xñ*Y&1Ö¿=ß§óÁåo2áÌ«ã ö\ŠdÙ<5‰Lþ½+3Ó ôLÔèän”í<¾¹Aß Øð8xÒó= {eÓý?ÿõ?g›ýÿž‰MÁvûïO*¿ËOÿ}“…OßûK¹ÉŽد'3¥ûjÔß_]qƹÌìdŸÞ£55}n „©J¿S¸®xç´VNi}mÁX&‡¨Ó†ÑƒL»Ðæ¥!ÅRÇRSKÆù¤êÀâjE­L¢ÔÞQµ¦¶âY!¼Ê.WÉ µÚ¹/ ÿú¿ÿ ŒÝö˜Odh^ú.7¸ÎzKo‚ †’Ù¦¡b¦:¯E»Y!/¿/5o¦ƒáx¤írlgDxàWÔ×dKètý« = ®ç×f'aKî†ÿ »A[½“ôéD~æŽ>À± o= •Zl rÄâ/O¸/ î¿~¤6Z4Ãà[ló$¶â›ž¶æÊ”3zbÞàfúsKÀ '"}ƒBšáÑáÏÂ5{Ë‹1ê–#0XÏ<5Z¤Î1`3'Å¡ËÌ,ljÞz‚¡ 6ÞÔm'äa᭹왕EyŒö¹9!9U©œÅùÜ6_:¢¿óÜ£ú_Ì«Á_˜[ö)º-žSÙÀÊÿÞ HXÙ®Êi|é°Ü,¸œn?Ó׬«ÎaŒVÆnÆÓéµYŽûUÄ<Þ•ìD´›‚„¼JE7òŸúX0Ÿ<ü˜„y7¡›’Ý®2Þìüùkô ^#ïúC{ª’ìâÝб„kSÆêä3†êÃiNU˜?=e©enXŠ/»§0÷­,´ ìpS…Þ7¨ ŸrÁëÉ;ðKYѶ…ŠH^=‹á*µø1d?–âÏr’rAS`–P·Ðú`Ï Ãª¼j±í"qqCÂûÙÄ—M¸âJ0èçe¾¯åõÊÐo•Z‹Ô¿ÊQ”iP(:Ú˜Žnl%L5è>têWíü¾þ$«†J¤$K}D´œ|5²>È®-ÀGñsy|T¿>º!Ú)yè›à¡ú’î÷‡ìÞÍNSrÈ7Ä!»KrÈî 8d7…CÌä8ëpa”Š mu,G'ÒáÀ~<÷ŽdP(¤ù=¹Êøä¦[LŸ„¶:e_…U~,çÈ•ðæ=‰9)§ j$k ÛZß-a!½ÈAŽò—;JÄ8𵮇/É­UE(T_ê½dx!¥TðgOXVéÉ>Ô;m™°WR+ãKh­öSþ2¢¯pn0pn©@f‚Øõ¤ Q•ˆä6 ç…''»zè_Ù å=I| úû@³ ihNbx“a_ôIX"9czLY ªé÷kP¸;Û<Çiò›“»8ÿGÞ ŒS.Xà?H5¢w6#±L2ùMËi|ŽGk¨½C+¤ß4—]4hüÞ‡ñ§­ËÛK,Íf-EÎ@¹ Þ`íFª.£ú¢„%ò{ {[L0O„ cr‘x”6;‘ðV€ÈsÐòàK Ñ-CDÀ§Xé{ÇÑ'Ê׺l©Pèx  f·5N¿¤jD}:ÕçóVZ½LÙ‰E†“èÙJ7׋7¥ѶIít MQeFa®Ý6±¡ú€ÊÏæfíBªV¨œÞ²âŠÊ¯ ®®¸©šó•JÕ”Å6¹œh¬x¡YG°Ö€ çm¥îº&^bÞ;§N^ì<—ÀŽdõ¤ÐÚX’ .eˆ.ú­áà7ô8¿#÷;ÅCùÔ¬öyßqßú¤Î+÷5ÕËì«*x„¡ Ýâœe/~àJÂÀ…|#w\®Ë›}ŠŽyÛñCUPƒÖ¿°/Ž,ß©Ô ñ$ÜßóH/|LÇÙD¹Ùú †ã1çž\Ðå‹”_u‹€WwNÕl¥{"<¤ÂÆÆ: ZXÔLÈŸÎDf8/IYTùn¿Á&sõzJIŽáj©¯­ƒD½È”Hdcù¢ú$õEÆãéÜŸÄÅp ¶‚YðvZ® ãPš¨guCs­Ê^ŒÚkq7çFÀ¶h ÐÐó|ª×Œ>ŽòŸó ÞúQ±?x§ÙÚX„z B­ý1q?²¢ìæÒ£™kóÍ/è4—Þˆ k<ñ Œ¶±©è‰SÊí¬ N ¢¬•g{U±ÇtiŒv³‚ ÂÌöL»Ô1^¬=Ĉ¹Ô(LUF¤`o¡ô1$¾.ë+Ÿ_5ÿÔ=ßÐE/ž/¦³TW‘úõ±ØÆÿað¨Üµ 4‘Ò¯Ø6z÷±z×åI¼û™ße‚Þ žÜHüú9Ñ)}d¾ûÙ:î¯øE-ù‘ý¾q̵T©ví-L¥͇~`éúÝ= Òe«§÷¬5„¹ø½ú þ鯞SËͱÑÎÃTyéÓÊNp¯« Ä<Ù]!©².à|rú‰à× ¢zé×õÙ×]'_—s¯gNf˜;~±©ïĦÎÿî­åä³KK¯;Ò}}K͜ɾÕDïLóŠä³)þ.g.W[»®9¼Ã¦¥rr2F·k‡)½g•ç=2N&»À$°«_gjXç/‘ÞŠ× M.¼´‘|ˆ±ˆÉ é#%X$Ö„êhÆëEv¹kô8$*^¦‡/ÃSÕϘ ¨VÓ½@7æ\MŸË݃¥¨\@|v„»C§È?îrî_U7Ôz7–ÿ¯io !Oñ%¼ø|v/ñ1n#½[ë#áa‚GU“mަùž=äqª´4ÙÀ4Á¸>Z(hÃOùÈ1éË‘.;ÚÁz†7â ãÿQÞõ3ï{àŠ(ÓY€>ù“>ú;ІC‡–Q._ö&Õríf¬ín6Õ|vÃ3òzQ€Ö Œ§ñ v` “/ðJ¹ÁÅD®˜÷&o Þ ÉŸMЛGF›nÚGK¾½]Ç㈈䪴ÅÆÐïb¹_›Àãë8@²ÊaU:ÿÈýïq©rºY#²$&»l˜ñA5ôWRúžŠ«Rt  J‹¸ãNuƒ~é~¡¤ þ²¥mÐ_ä`ö´,a£/)÷£ÞÒå‚å9wYùÓFì­´¤•vÑ]¢º?eP–e©£†_‡MSÇÕ}±i'-òðAüeªÃ&†u.ðV”0a—’7xœ¤/‹Ñ)¯òÅmX8z•’|5‡¬vpÿÀÿø3­Ió“gó±«r­+<Œ“ a}e>½YiW•êÍFuG ¶øS”ÁsžZ“¨-¹Ò !ñ,þ¥?ŸªÔ"Vy׋·«¸'…ÈùàËÍVüY¢Zü%ô²ª²_Z7Q®G¢Ÿ?Ê~Â&ZGÆ^£«KZE'–¬‘5›Ì§”ÜŒãµ9ÊBW[a 3Á Ú¼0¼4kKG¡Ùl ‘Zƒâè*:=¢ßÀÅ`¡3QÝ2ÄéÖG/· ¶ÌL3.MSœ±ú™ßÿª2@hUYÐZ‘Úd¿Ùø×š•„…òÏ…(­³š:Ô!]téÒC{í¿¦²²äž0$ƒw$²`CÉas[šVø(Q‘H¡Ó‰¸x:þd§ÖÉОŒ·:Ì•ãzaz¾–;ÍdâU|B8Iïf >•:¨g¥PXLͲ¶á¼NÛî *¶­Ü¦&h3¢Œ©p§IoÉàcìÝ |ÕýÉɶŒ4gµ‹:·k­•/ uŠlÉ0¸JÀÈy9\ [J¤Ãà<¹Sžä~Š6â¬E|H°ðf´Ó>qîFÎáI.ÊEŽ4fg<ƒŸœc!É´§RÕ¤äØÉ$JÙ+6x¤â8'…¥oMH{$„Tb¢ÁS»Õ©C8|–L”-òÉA±œÊ’ùÆOä‘ÉÜ7Ûf•ÊýÃCg»¤†å¸Øùl—®2„OèË‘ l²BUÁ©ðL74ƒ]àÉ_öz`õztã`–€e•gÊ¥òaŽÕèÆ£¸÷(ùЩ`m9&Mìa ‘–UÊ„©XTyVŽ`$œi¢Lï|Ƴ¸Îìa¡}R>Eæ¯ùà(ÓV%ç²”¦sEayøøl“Xj3ì./JãÔHÃ^€È™˜» ap!ܧ¸P dw¹IåvÃîKéPØV.ßÇSyé28¼Íù2`–tšÜzÜdD¦šqyð†¦í,„8XJ´ÇÜå¦3ÊårÑÒc›J: ­ Š„Éè̹:?q¶yÐuÄZöJw=÷¿!rC­Úœߘ”N ›ˆÅöìá…¼2–.>,Ú…HlÖ„›â¯‡[4a¦ÀûɸZˆÝÂ]|0C+źXénÏÏödøÙ)ùY¾`h Ú®_°›‚úŽpµÞǧ‰…,ié Þç²™íâs9ènv=æÈU€² ”šÎ]ñ6ÛB¤×­ryŒEÁ ö²$&V¡DkÝ,@h"9­Å¡X™ŠUX&Z7 k¾iÁÖEäÙj¶ô˜9{À"$.Ý%­=X o‰EåÙ ž‹Ä%ILÜ?û‹UJÄU©¸ÿ]¢ H,¦·%  ˆª7 ÎuI^ÉŽ¾ ©"–,â.´G±é/–ØÄJÔH±"MR,+9ŪÄÌ’$»ѲŒò)V…†å‰|Ï2›N1+ ‹Y±juP¬…L0çtï;õHÿ•h–b%Ê¥X)©h]ãòÅ:2\`÷(ïV@¯÷,ú‹ ¼;3Ì›:æ˜)ÑüÔjt)7æ†`Núõ¸?¸Â ˆ_Müë­îåûëA&¨–ˆy&&¨µMäè^a™œ8Í—ypÍú¸æ-e&_-¾¶J£RYá[ÅZ4Y"¾Çsø¢YôÝž3ëM1n¿$ZWöÄx#­{À3-„k^†‘ö—†èÉ &ÜVé2K0ÿH;32¾Âã%—ÁpÞ¶J§|ðà "éƒ<úyc^x‰…6ødŽÙ('‰MG7¢äYÐ!6ë˜Ñªnq1òÝ4½\c"úeÞ8.¢?µÅŽ„ °E÷Úìïlœå?ÑŸ”ÊÎiýXŠÊz:[@×°ÔZN{ôÃz›F©æÍ"xtQ œEU.eÎà6ŸœÉ¿ qóAŠ…‰›SÂ$nËY.#c·ÈÂÈ’¸+¢Î=_¥?9g­"ễYXÏŠÎÒW7V)ÜqkÊjfªÃ|>’rÇð×ðë ÞFŸáýU“Ùû1Ðsà®(_9LD–¿Ðo-+Zåã9,õk~J±–²þšóV¶“(ù@7»S™k.R™Õ{þ¤W8›Ü%fÁ4 ¬\ëÎE(UÂÑYqµ;idÎ^rÆV±ºå¨¿:ÆtþúÎö®>è@`ì‰ e†?lµŽOèè7ç… €Õð'P×>laÅ4ÜÇYÕÖ,]t:1º\Ûè@€Q]7*¼ž¡Ã%ÉÓvpRl‰ø:²wR±`•HU•’Q¦Þ«r†\v¢Â×Rsa.‘Õ-L_­Ã&éÙïÆhÇcxõ¡*õÉOcËà\‡¢¾½³^c¥ì±½¬<•=BÛX¡D‰OØŸ©9ã–ìH¾–ÛÆ‡ÄÛY,RÒ-óðÞÑ9] :§û×Ü¿.zJ7­]ÚÝ´ö"vBW+øÑŸE]/`¨]g ^¬Hn"UU«»Œ¨ðQßhMÂêênêáRg„Ý4¼ä±‚ãa¢<«ŒOyVùš¼×³ÊKËŒ9“ê–€Ðw¤Ü([çöX·N_·^ßãÖÙhÐìJÛùkãvGCÞÙhÛÁèoàÌsn/º^.­aÇ|nyUǦs{å¡éòд½‡òÐôúšÎíäa™¶ DÕ'ÿæ,ʾ¢£×.­¿Åƒ×bi>ü:N^»ÍÂè¤<{]ž½æ§<{]ž½N勜,Ï<[žò̳ùÎÅ^‹ýåÙëú(Ï^—gž-Oyæ9ö¬F$~éýåÙëòìuN7åÙkQž½–Oyöšžòìuyö:ÖMyöZ”g¯SžòìõêZßÅÙëÜÎôt­B kb•‰b‘ &‘“þHÂâÕ¶\£Züàµp?{9uüzÑyÄŽ ßé,Vrj[¸Ü.<øÉÓ¥–%:¾ý–ånb®E~‹eÏ~‹ºæê+ÅÊ%Ó²½.’iY «m÷"™‰“ߥd*¤¾äH¦âÉÿâ>–%vðî!K¦‡ä7­¼zEâZ¤XáŠ@ËjeµŠ²Z…¥ZEœÊ‚yOY°bÝ V˜ŸÊƒÞ°QrnNÝ5‡Õ]›BB;Û-YA銌×ï¸EÁù,^¼>åþ1*Š?¹:E&Ó䉥¤Z¨\ÅöN.Ò¾þÒÅ;î¤\GÝ­\Öˆ=±‚Â(%!«oPÿé/ÚGv®Í‘që½Yc#ÁXé+d«y ¶¨pD*³è'ßcÚ‹-hˆÝÑ›[šƒ+]ä5ÆêaóDsúÐ,–b¾¥=\\£žSÂ"6=me¾¿ú`ãÜ]¤M®R²>yþ\Ÿ– ë‰à¶ ™2l¨x,šMâa¥ƒ„¥W“LIp¦zÏ¢yæ™P=‰ ÀªÃ¤è*vÄ u›Š¡ÁiW'LðY2jýþ÷s(¦³ ˜ µØ>.£PK(Ï’Û€:”ªt`>Z;îÄddEžÅÄv¬¦nȾ€ìlƒ½Rƒ¡%N vVSŽýV“×W%$òŰÝ&w±Éö<öÄ -Ò™èÎ?îY0hÌÒ7Ãfûä¬û‹ØÐÞ…¶ðs×ÆÎƒ;Ͻî/Íæ‰iþßžWD'ð/ßs•šÁTÜŒ£™¸üÞõg,/&ãË ?Ÿâ½?£ñL\ŽGƒÉ» /Q/޼—Ç(y€­P¸…°=•°íé°ýÛóŒñÃ:dáp£Ë@øW³`Âì»5{/'8ý7Ñéb ͶBý‰ý\ &×S1_áM¯æC1€îHÓœÖÀ§ú–½wÇFÄàœý‰øèçÁ”N‘] àŸ÷ãOâÚÝ ä_Œ?òU|k>ê“«!4™½ŸÓ÷ãa?Õ«k{«·§ýÒòé?î´$ÞÜÒ· ¬«stØh7ÞIlÝ<Þ©†‚‘$l07æH<75¯Yû`#@壴V Òd°µ n®ÓGºÕJèÄs¨#ùš9qaÑ$xäSGV,ÍÇ?•Òg¤.—€X†0,Ðþ˜­Îw±eëúc1…µ²«ŠÁ•(çýÉ-¬Èé›ñt:€õÚ¨iKCšS:00ºV÷d*m߇WH·`úU´¬×Z¨½^‘îý'QGê¯ïÉ’o‰eÐeò›Öf$·é+æ ® Æô ¦žÕ£Äè™eÛVhÐN§Íb£&Ž®Óˆö¿‘˜Ž¯¥sÇûºöol—¼?Ž'Úf ë¥m¢Ó “ù5Vy7øPÜT†+% ˜“à¶×`Ä X‹M¬Î 6ëf{B)àWY§Ô Ð,0¼ÁÑŠ>¨:#ªjC@¼ÿ]½ÿzÔ=Ù¿Ÿï&Ïš?bÒ¨É.¯^ýoð^pŠÌÌ€BÁÞET=Üõƒ‘’À}9Ü4D!èrˆëKÌ@+2…·Ä'³§MfÎe ¦*OðY­èÅ)`â"€€ãf‡:¦¸Å‡xJC°†,û—5hä ÐÅ»ºö/¦ã![„?ÎÀ̃ãÙ”é@é[0±ážÉáP‡£°[îp’ly¡äàÞ …\†À6v§yÖëx¡u™™È{Ç/Åá«f÷üOÑ÷!cþá»òú7þåoOjéÃÂ|ü\»ºƒ1¶··Ÿíí üùý³§ôs»ÎÓS¶-vêÛõ§{»OŸÕwÅöÎÞÞÓï¿ÛwKâ™Ogþ@ùmèϧí ÙUrx*"üùPžøçüîï¿û®í_ roÕ6†Ÿ}÷Oð_þû/øÿþ·.ggù+¾ñßð߿Ěü]ôùÿ‚ æßÜ ƒÚ‡¹?ñG3ß}xXÜùééöÎõ~|úS׿i÷Ó &\>ú#ùÿ¹?ÿ÷v¿ßKð?ü^òÿ—x¤ÒÚÛï÷@“mònù¶"^6ÎÀvè4¼.hÅðÿÎkø¥!«÷5^Ò/ðïÑÉÑyFtµyÚkVE§*ªb_‚ÞâOø§ê3|ù²Ùï÷ñßôŽPÀÑät6ÉBy[[¢Õ8i¼ý 謰ç(BDþ˜bòÌn­¾ÍÌÆ ‘ø ¢]Í>¡’Là¿#Côã zÏÅ-Ø9ƒ5TG΂(&Ó ¨" aGá÷  ‚N6øb?˜ü ƒÛªöíx8žø`2¨§‘?Ëk¼­Y¿VãÎP…ýœT×:0‹î+G#´ØÆäÝüÔîi¤Á¼nt`‘š¶µµ ugÍWzKößÉÕ䕤¥¡u‘ËúÈz £Š“Nóà¨{tì¡Ê… gѸ“ ¨¿XmãáTÄ&Ú£G¬>n†Æ¬eH°¼Vz¡ñ²"¦?÷+ üffv˜ð@þ|}$f lû¶ÂxÚ µvUÅúd>ó—åüðçÌUx+­ž4©ã¯ÙXYD¬ £z,?÷Áèò‡ØËôv: ®‘¨Àö€*Ø1É¢Ò[PÁ÷«øÁ§÷vƒH}$¼­‹Û-OÕÕF*|Kÿî“•Éߢs0è匚“ X=c°A7™Ðáû> wX„òC;ä¢NÇØƒâ)Ùáa0½œ n¸¢wˆ¦Uh _‡`¢q¾™Rw7`²‚)ôŸs»2†‘Ôašª„&å˜èåWC[° ( ªJFH£fŸk…7‘y°cïÑsAUï+ÍÆ&ýv°Am6£ùÁÆ&â]µÛ·ttUmlnžiuôŽì¤uôÚ¡£_Þ0ß z0ÆÍ]| ‡`\êꃕyD ¯ÅÒl“¼y1Ÿ¡?(êR§Höý*¢ìŸ&ƒÙ,¡¤M¢— Sûj_T gÂÁ XÅwh«F-Ýø% kCÒ]Ý ¿F²‘üاÊñt CÔ¤Í_MXT8N›¯N”0“i´„X˜óX´ÿõªòsæÒހȯe¹{9 ˆdþj>Ìpº/&Ÿ½DUB[`¿¹1ÚIìÈ1Ñ« ªƒÛUø“=ôbðf;¼ Ý'Uö.!Žä¾*‡œ³ùd4²™½WÁŸAM#u}Lƒªt×J¿².û`$fó#¡AÙ¯¡,‰\9:‘ÕÈU­Å$¸`è 8_¶Lôaûf§Ï5Âp£‡Q;PË ‚kwðžÀí#êAE‘³ \CH'dšwct[Œ¢|üP!D±J²º,…žû$ /PÝ`eå"íÕØ! ûPÊ#dÔw_v>Ÿª«/ D+æ4øë),<Çà°IpÀãM”¦×€)}p²Z-„”™JØ›ÄOÓò‡—@#‰‰ÁW OÖúòµÄŠúÁLÂöŒˆÒd¢O¾’Úâ¿Epaá®çÃÙ€¾¸•=*ÁaÈ¡„èl¤ÉÁÛ”<à2Â1oÔ°C¿P@—Czß h屯n,è¿hè;:Q9öUÖ¸FÒƒNy›ª~Š4ÅÈ7y=Û€T_}J«ã 'ê€C_:;v©`SÖS”Óp¾˜].‚!»”€!;¬¹ƒ±ÊþÔ\˜ƒÕ.Œ$×üµ9(²6lzElc]œtu½8K,ÎÁ’‹s¾8i‹³o,N1{p¿ŠÖe®Iˆh̲U{Â~-þ2ZP†U¨¼1{î§XkÍhnéR'f8Bï% ?¤öúÍ!Ì!Œe¶?0~êƒûÚ2,ªî׸§¤6¨R|*…ømrÃC0×È_ñ0\¨ü¸†¦<¶úYuWú.Æ€½- 6V6½Thl¦7¾®Æü7†¶"A iú’´•Ç„èH0CsV2Ô\+ņDòvDò¶Æ=%‰„üYD) âÈ´¸LvHÇ4¡m5tÛ£.·ÁÒA3‚: '\,ƃh7þd6¸ä˜Ö@u´»QMý4*‰(åÓxòâ2쵆3Lµù™|NJ³òUùÒ@…Ö}B±ËÏ¡33Šre‚#õ… Ç‚¡à mŽÿ?{oþÔF²ü‹þþý+:&n Œ=öx"$À¶If<ܸoB@cËG‹—óîûß_.UÕµv·f,3Ô][VVUV.Ÿ¤A­ŽÑky_øTŒ `º ²¡8d¥¦×^˦`óóþ¬óîXj1H¢Ve(SØäé…f«5%¼0>-Ú÷†ÚXØž™Œgìð?]+žÞÅÆzçÌƵÍý+•£¯2½鵬U†uíXœß'›Þ8ô{­Ò3˜aª¿‰#¾Od•‚ƒÛúEó=¤MxJÚ§†½Èˆº4½ò_‘)|ƒEqÇÄ–Cˬ‡›´ÎLz-ÌW‚™Ýõä¶7 1U|5¢š›ßw]f©âîW“öŸáþGõ"‹ ½Zu@n_è«CtÀE;¹ƒ‹É<âÌþ¦«Ü&u.¹•‹æ YÛéø²üî *h’>ƒ ÕâÏôó]‘ͼ?ÁΛøÃ‹1ÿDïZûÉŒÄJXa²À7·3 ²–5sýdÚ»„]tjÈ3‚q÷#ñ}A?ÿŠêºnjØHÒ#°ï€èécdzªEÿ¾”ìÆÒdf6—‚oÏ¢­ñÊc›œ åb#²˜#ºéõÂ;a÷WÜl}Ùrõ­ǫ́œÆÃ„wqÎÒ¦.Œ2ºù½.2áÇ,Ý•ÂÚôÕì9åá{é¡¶¶6çWz¡¯dµí>/D ìM.%{×tUµù†Maz-¿YµôÅÎe±¨h¤@x›=Lt§Œó»¦9Y{žjćÔ¸ â):H 1º×J°ŽÄ›e2r=Øtï…`Ì€xݸLœ#v1B÷ñ‘I0~ν‚L«:„Ãñˆ4B† v'ñ_¡…Çn bé‰e«É/ÁjrM+†ÓªÂþ”lf7)"¤éxw_õf“p5Sr‚"¯A#†k*=_ØK*­'ŽÃ "èádÝ¢ÏÜËgcv2rFã£B’xV¾Ò¼OfPËùå*>º“o»7îÝ{5—Y,'­L‚ ÛÕNµylx3¦"2äÎîÑÃEbd#ýe¸«Ê¶´Ñ±›±Ö|ãíëúaµ¡Sæðm.$%¼•Ô¥¨õ–ýŒ,¡ {kçíðD÷8'·Þvšâ©Ï˜¼º©þ“00¿U±ª‹¶ÞaÚ‘·C<@:‡ô~Ô[)޼ÐO~½}þºóG)ê6P‡2Çß`FðNúj6¼b6L#O£ “îúQ£Ú<|SŸ­×Çüó¬#Þ?~¤jõQu¥P±”Þvg—Â?M믧£×ÇÀá%üId‡ŸWÝ’0¨ˆŸ]jñ°ýg Aá…SìÚûãN­Qõt­>„ ö¼+%:õV·~˜THÓ“èe|5›’€ÝÅÌÂÊÏÜ¥à?™Iá "§ kÀ[»ô5'nv^8N^`þNÞ1zŒB-Q 2×i‡kÚ«äK^5ðíΫj£{¼“<áåæ<1ÉUqÑ9€ 4m=¨mè!㪠ë­Ã|Åyé`+qi!Úèön`Çíû·³[ãU^¬*ž],:1$3Àü ï$£æôNmŽf´ÿLÌŽ¤:‚Ó7L{í sb_mØhAZ€“ʹõæˆÜÚ%Sœm¨°tzl¯ëu¢³X ºP±»ÐÂÈ÷Ýàû{ÎûpµK/²oiU±Až,­PÙOÙWy ?s »³”BÆ‚d|âQÁÅ>~mmx£þÕ,ïzWIpÌ:`ÐËŒXÚ~TE4" A6v£“Öƒ¬þ-ˆó RN|èÆ² ¢²<ò´w]¸1½4 @à¦zŠN ?EcÅ×>¾]¤Vë#ŽGì"‡‰]ûBÑi&X© ³ecÄø0c$‡GáØjÎÛý'·2ßäÎ1¹ú»•ÕNneÉeikÅ“«*]drSç“7¦ZÖ¾dfßO˜ÆÑû9+:È? *D¬u졼°À§.‡—m”¢m©ÞàÁ IEs&9! –g€p·œX‘Tfˆ†Ž¦Æh4$a(®0‰!å˜P)K!ž%|¾ DEg¢á[cªMõco—ŒE .­sô),ÿ²\g2ù’rY´´h–†à“/YÆXSÀÂŽO)|8Â^¸Ÿì…I©þÂÞnTl–ð©ð2xBX"p°Õ£â¦ú _ßóáoÂïûá½Ñ$†\Í‚ÂD ƒð1.Ü}½ï‡ž¾?ñõñÀ%äY«Á†g݆´¼¾ÕI÷;ØE^̓’µ"d¤·qk‹®‰j™áF„6:lÿ’:DÖƒm“JІ_¤mO?‚ÌU®1CWës”®vÜ~Þ¾ŽoúW}Ô€zU·úÔ²º€ï:pez5Xï6Jl]æxjþWQÿi6Ø•G-$ ¸~ÙJvÃ9)}2“ÞgÜí¨Ï-ÕM1ÇÜ8»ùýÔ#+2A¬<%¤JÔ“Œ³È®ÚÚ¢ô9úâ„1_¼žÁ‚²yv7T-á½¼¡mîãú†Ùoþ£*Kr³žÊ\PÆäg1•½¸ŒÂ9xÆÃ-–þ Ä!NmöH™°A™æ “ pŽF´dØBá' EA(«Ž­ÚnгñÊ…‰S¡èl{Ý‚‹Œam€ãÂêß»I,ÑPÍH̬ðKÍËÄNšu©Å[š#é¼òÄñ¡QÅ·«Ñ`5$ÔY¢Ø,rßõΣ¨¯-ïgQ{çä–X‡}D'ú³,‰åiªÄòÞ=õßë§þÓ€Äò,õ6Íþ’Ú/F¯àf“ßb+¾ý˼"Q@®CíE9U&BTô…Þ»NžP]ëe¹ÀWĶ*ᮄhÂ"=V\É!myN8%;ÇS#Vü&`ró›ÖL¸RÜÎûZjOï&ýÁhh©(es(¬Ä¼:f¼u¾ª6ò@ÜYøo÷• ÿ­¼_ÞÝß/”+ˆÿt°·Æ{˜Ïÿí‡þøo÷—¾þöw÷ìõ¿¿w°^ÿñáÕîà¿­.œ0ŧÔÂ2eë/øñW­u=‘¿ýEwƒ´Èß6ÛPyM@ò§.¨¦Tc‰°¹`çx.øQØoPÕáMä—2¦ñ¤w RûQ|{Jð³÷aÐFozƒAÿCoXŠþýw½é_÷Hì×+:éM éN?¾þŽAFÝNjNf0-yÍ\¬È¡Óbˆ{zŸÒFcàêûĿ֛íFý°~÷¢­;ü˜{ †Y1Y¢¥B_I ¯Î5RãëEüZŽmX?¦ ø#ýKÑàë{IALDÎ"¸«hE4Z‹_5LÀÈ‚Œ$2à¢Ð€¢’ëÑ =b’€‡0R hAŠÊ ŒÈû ÅvÔÄÈRÔÝ‘9ÖpÛû†~!–w¹ÇýRΔŠD„€#Â(4õùøö"Ø|¥è–#ãXjB o ñݤ(†‹ˆ‚">AÞÐLwKEÇb4 ŸLýŽ;üwô•ÝVj-oºò±%=¿)¯Â3ÜC£ìX_ ‡Ž^LøR'ÁM cëš(¨y˜Züƒ‡wSBÍo«MÕà$VÁ5¢;ù"Jð núÃ>ê²=$AI£;‘ÏG\‹Gƒ/8LŽªOÔZX€QÊz¶ƒ6Æ’÷Ö_ú£ÙÄŒ{ÀNá!±3íq=G#ž^QMù#í'ìeûs+)`°÷YD“] zý[R}ˆ‡ñX)—æ£b9C¤J0Énn s4Яؚbdò)íO'ñàFM›Q 3ò`dFùa2#R¦»_,‡š© ,«‚Í\jæÒ ™¢¦63Z9Sc˜¹‘3ÕDÚЙâÁC‚gFËágJK•¸&,ŠŸ)ªÑ¨<~&AبSVD°ÈÉeršoD¬‚šZ/²&WæƒÊ´@2eæ†ÊŒî-3"ÀÌÚw<{³Á4*1@–ê_z«óþ¯úYçøÕ_u r™ÄdÄAƒv±¤ñ¼$m³óÏ„ øñêéqœœ~ 9ÿ”Wr‚ ašô¯g0($Êx AŒÉS@躊 áÇPOó«ÿLÎÈ‚åŒdN’]0uÒÈœ™¸Ó)x ´F¬6[ÉÀA[ʤ${`€)ùF]cé[œsLYh¢­ªã™·}¸ »ƒ`8nšE:Žo“k3ðB‰$9D |¹ë¿Š»$Å'‘lJâ]øø*1_Å’Ìâ…‘%xzƈ ˆ•(¦é*àLWd:ˆéjL—€/]vi~àÒeQKW Yš…Wå,]­t.¨Òü8¥ÒÃÑðÓìÞª <±¡K£,ôÒ³e€KC˜¥Ql©Ùê"ˆ¥ùÁJ£•á•. Uº4JéÒ¥ b“.Kš ‘4éœ8¤Qi”“0 i´R Ò%1H‡]yt9ÐÑ%ñFW€Û™Ž¸$Àèêú¸8¬¨}ˆ¥ ŠFY ¢yM žh´$¤èÒh¢Ë#T.!†]9tùá-¶"þžNfl/ó`„.º6èJATÐÕB‚úð@W š t  ~üÏhU gK¢.ü¹æçRpŸ #}Ê †šäö|%YgK:Y GÒ7»§¯¼ºå{«‘Ç&¬çádFÀ" šËZ¢|¥Ùú'£ZšTùĨv˜g†pMPÉÇ fÂø”˜ •1AE¢Ê¼Mö)™“íX\Ï(·³yqÀ3GD*%emëÉ]“UeÜ-\µ_€i…jQõƒ¹Fª¼Ùö¤šÕ<ÆU.kF¼Q£xK‰¿ýÊÖÙ’`®+Àq]Âu)ôÖ…[åR9L[k‡9ÖÚaÊZ;\¯µÇ°ÖVл(6¯Ë›‘w`¼ï2(¼¼Q oŽT7Z ¯†¿›‰¸kÃìJåz~°]a׿LœÝ¸®Z,»\]»x ºn:¤n”…ª›cÎÀºQ~LÝNb~ 9Ûü*‘gM”TS««q»Ÿã8 †Wbï:ïT´mð†\¨|Ø»,ij¥4>“)^|:Å¡ÄW´ŸâÊFæK3¡©+aSêvb¿&'.~O2¬ty»»‹ =¼’Û®tôÒ&”c'ç™P=8uGÓÈN°„RRÔ×:¢¨R^®¨Õg3”(ðŒ¦ŽšEÔ‚U«*€hì8ÌɳÈÁT­å„ õX`¡©3㛩ã ÅadP þPx„‰ù‡-x8E*«MQ¥!…5$ J5q`I°ßÃ<¿ÚV“ì-‹¡ëÀ¢¢|ÀÀ)hÀÊ„• éŽÓ-¾¥vFƒ•H $·S…ŸmIJ:âãé÷;XÊùJ4ôǦ߱~Ћm³ÐÜÓ¯GQÈyxe k[ K0&njô‡¨ZãõÓÉYøÒ£'§—ìz¹:Hà s)¢)F úJ¡?açTÛN%gÐ_ZºoÝäG#õñÒ·¿>EØ@ ^ø„(¶ÛÈ]ðK±h¾¾úq”cª~ªžk4\:™Ôt»Ž¿%Db(Å—Æ hÎQ¢"f¬Ý8g@ê!ú¤¡7»cjcÔÚ¢kÕê³vž£w7ýñdÊ]CŠšnóýÒó¢6±)ö%{«Å]fÝ“Ù$TùóŒÜÂiVî¯êLÂQŒ:¸V–K(…‘ÂÑOgc¸<ÿ RÌÆu¹“éOÀ¡#ØžAž g,Æ 'x¹í»°!‘!R¥'™¦ ƒÎÀ­yà(`'ÿO CÔ‰^z·W *êWÛ©¸Û•è§×Ê•ý'}]=OÃú/ÙM tù«xŒÄNÀó÷U &¥¼ë¢Ê;]EÐÏÈrdÕ¿Mù‰Ãÿ0Ž{SòÄY†|ÚèðßBõ0ºøÎ—1O%[ÊÉ!¼ÉåÜÒ¹ã±)»gHeöl>Žeåv43ìðÙÚKÇE©+(q&CôÎŒž„à§$üá§öPóöÖ®CE À6QŽ~æã«pñÿü¿Ûåÿ¯;v‘¿¢¿Št¢/¬ÃnwÐÔݸýAOX¾Ã)ðÂqRjÄÓ覤»Y- Þ.šˆ3iô•3hèŠ'g:HS„¡(ÏKá—t÷³[Úã.Øeûöh}+'|Çqƒ‚a£?ănåƒ'4Л٘Í`>Hd¤£þÛt,Cp®z3á=Äÿuçt@œç°H óžØ’í'¶÷|Ï^ëµÏq`[3õD€PN"Ê(‚b¢Q1¤¥ùðË9¥u»ôÈÉýã&Àxx£ò…ñÖ¯¾K Š ‹ ‰zÁ5vwDþ¡wѸy¸ÀiR<‚gD{⦆JÔ‘Jÿ2Uâ ÈÚJ¢ MÄFŒY.)‡"ýîKÊ¡Ê×RÎZÊù[¤cñ®E{u "fë[±(…žoÒ OvžD3ø[¹sÂà/®ä¤4v꣚v¥ª°åLåß%UÉ¿ÇôJÝZPÆéÀ®ÀÕð‰‚pɈ"êÑÃ<èŠ â!¾™^‰`\DC˜™H­šD~s-Ò8þó\¶q.\tÖ|a©ÝêÀø4ŒÞ0Ù§èd„ÓÕ8\I·Ê¯H×üLù#Ö®1/cTz6Õ"é®aªeÔßDˆ-E¸XÚ/TЊԒµÚ?Çãmž*øÎDû—\¼ÂC¯=Wá™Ð`“DY™œ«Eãp,оH¸ŸÏEº³$ +ÐVkéA®Žœ<8~±R%²Û)S;ˆH› .‡m¶~!cŠœ}¦@¾:_†e$ÜÍl:ã)(¦’øMç¸û†ˆ\A"7Eô¾æò/¢ÌÌöy\2V…ÑnÒw?Ñu‚W?ÀI;™Àü='È5˜Yĉ㠾íSä<,ɸe€y² äx+ŽIa}Ã\„g{ã&ÛÚ×¹‘àzÑ4¾ú8ìÿ©ªu¼îÍ`|¸f}8ô„{Ö¬µ‰•Oû‹ýu ìõt„ñƒ¿Aú wd0qbˆ"$X|Á&ü=m¹þQï'ì!'¼ô>¨ÓšÀ d˜èµÕGðO§ñíÍ!0ÀµÄÏF¸Ä3ä öíÄÒ˜,p‘1+rR‰–2… &qhˆ ²ãæÕFã¼dý¸çH5(êX,K\”#Qg‰ëšYâDà¬f¤É&êÜ\õ¤h‰À•SÌÕ—I1÷[´KL¬RÇRþ“+œÖAå›/eœ‘N«ÆÄ¶Åp28­"oZ8ÄŽ[cÞ¬…i) ÈŒVÊqYâ‹T0ÇJeenÄW¾ŽQ©ž8ȹnx%f£[jî?Àõuô9úBlŸAPÞ S­4÷;ÁƒºT<„‚æ@¤è úÿe?:Áø ª”°$; ¥Òë ¡iÊ2él8íÜÚçÉT©/__ÖÊMU¹ÎT¹ŠL•ëD•D•°ð:Qe2äG¢Êʪ'w¨2@˜d¢ÊÕeª¼‡4•µÅsBεòaóU>æ<•.Å4L2ðhɈÁàJŒ¶ø1¾%ÃÐή•B02PjšÊà6(ó + þ {{ô6m•˦SóM…š>\´éôŸÛK$ø”̇·ÆB‚Rß‘¹’Ë#˜(ê8tëX'½ %½l ˆ¹ÅÉú¤ôVÿý)2…ö£àf›ô7Z<;䜩C}ôÏþ:­à‚iß«¡ˆm?œAF?¨x©¹b(Œ^&œ&+õ‹^KZºBÞN•YMßD#Kdl©ú™[ Å B„Ó.ŽÉÝrÎÊ;nåæþš–Eîýÿ$e2³È­?ÿÔžÿozU¹—`¹òÿUv+Oö÷žTö0ÿ×^eÿïa>ëü?ô'Éÿw_«?ký—w+OŸØë¿\)¯×ÿC|xµ›ùÿÎù–&%5ÊNœ+N’Ú­7ûÖô{è<æÉ‚WIÜ–MEIEi©àJÚÓÑ`4î]¢£öŒ$q;*Þ«â1ù´V€SuGŒp"¸ôän>[è‚×Nä¯âíô„kZ»ø«–zÌp3áI–?¡È8÷fò*’Nt|µJ²×`%C„&ú4×-œñ¦ŠÓHáÿRÌà‚3s*3™i\®Lœ¹Ø\påwÁ°Já °"&™)]4h‹¨‰Q%ª møVã‹F Ëg'š>gMäuhäúrçQˈu4A¾¬Ù‹áeø¼c¨4s"QÓGá¼nž¾ 7“¤h(ÅÞÄíFý&zWø\Š>"w: Aë’N_¾Õ—),}Ç3@sü:cŽÀ›œ•l7:™³˜d:_*x*1-éäj†Æ!WhÊY Ê…VqÇnÕÀÞ}Awò2úÑöÉ™¶d`ëe'(Yã8„n|rý$:*[Ÿê«(L»å'E×,¿hüoôÄt6^ø _è+ïæÏà úŸ1äiš¤¨Ã- ¡ˆëtÿ5–i~’ôGZýU_‰3â +áÄéÈ­¦÷eÔçˆ` k(FüJÄSq<•±[é{V­7a$·+™x–Ü|Þ^mýÞû0™RRX÷mòâhàï^3Ò"¢—‚‡¤c9¿‹ŠÂ«X†f¾»{t£,0þènÿ²[Žž=¥'ðç×ø:–©z–w¡üÛ¼(ÝÃ>àqç;êQ¾ÂÿPÄÂãÿ;wWzη»%±¡±M³½oV}þ\‹x›u`Ž»TÛsºØâRãçn;óº¡Uk@‚nhBÁS@Èø”iÄËb4PË+ä°³ û‘µSÌ6Èì EÄ+iþeR§W«Ô++µJÁ$Î`LáÊAPŽÀ¶£ ‘¾›Xç'&ZÍ£·Ñþn$g[ÑvTÖm¯úœÉU!rõ©B·¼÷ù °B½ ê¶ýKxžxŸEl#9. ¸[§U‚Fí×Ç;Ô’ß¼ôÃ-êyV!¶Þö<:¡G'ΣÄL¡fGNòv¤L›6\–×é/½'Z'NÌN’Û>i QŽ»7Ѝr`ÆÙQÛçŒÁ˼n|™”}IÓ°UEÄÊ{ìgS¶\K/Tt"+J~ÿ9ißÞ pŽ2²ñ¶q¡à?Û°…ðn)ÚÉ …¯äÓ ‹Jm™S{€j]·ÈJ:¶„_IŽ‚ˆÚ7I)ƒ‚yÍpgU/­Í+ùúÿ›Ç£ÿß«¬õòYëÿè¦ÿ¿§ÕŸCÿwB[ÿ_^ëÿäëÝÒÿ¿ª¢fÉ5ø•ÿk•?R¨¹B­ÿªUý¯2Tý# Äþã1æ 3Ť]§«%¸K/+•ƒÔ‹‰:n¢4ëi¶ÑwÃ" ÒÓ¹{­¤eÆ:\EsAèÝÅÿõ¯áYÿ&º~‹†E;í;Ö Õ\†«è¯‘•Ömìm‰QKHâ ‡T Ïa`h þÈP?k¸,”óĶ4@=š©!§ÕÂÉÜê©w…&Œ4 Æ-nŠ1À~±€õâ­͹­Qá¶?,4¨E»ñT£,•i;°S#†ÌyôðYjø_M-üögžÞÏù1F¢*ÿ³c$ b„?s8åàÂëa›Kî#çŒE3ɘ YN=Ê–Ðó¦sù{•뤖ÐT€^庮M/™ªöy”ëžæ»¯P/‘ª|'ûªÔÜü8¥½# ÍÈR†—ä{+ÔåVB¥_Ñ8+P¹/ùÍï„ãkCºvÔ=5ÓƒDHØŒ8T'nÕ *m¦Ddª€T]÷7g,HfùC¡˜n§³þÕg™Žvú&m¨èšmDA-y”èþ,ýšôm |¢‰ Á;Ò ñŠ5Óž±ÑÝ(«k6ƒ$l”"뚤ès,|ò 1r€¥³5" Èp‚ö‡hK, ¨vûd‹U›¸r%1ËÐ'BIl)€ l^‹Š8=zØ¡jQ½»HFÚáÆV!ÊÏ[FG#©îÆzO,mwäSxŸXzwì—¦}5û#'HÉ@çMÜæO¶•éÛÛ!âe1ÈÈx%º\EÊb„Ö1ÑBÉhàÍFI˜¯´Á_q’äô8µÐzs«Ö!ÁDÛ'¾ÖY{¾U/‰IÖÿÒ:%ÆÕo¡Ìv{C+ÌüZ~§UmN§EyÞ NþǪ̱ŽÐì$KÅÏŒïî®):pÜëSDÜdv™%Hvš•þ£ìÚ|¨Å“a¤.ë¯zB÷"2}Y†Š°ÿÕZ‡ÿˆ>†þ|óXôÿûkýÿ}Öúÿú£éÿïiõgêÿË•ò½þ+•Ýõúˆ¯vKÿÎkýÿ¿Gÿßy5‡þ¿IY„×úÿUéÿ÷ÖúÿÕèÿMÆ\ëÿÿ…úÿL€n˜e<­–>šú˜/lÀÒ6€•½ ¯þÞô|(£‚£grmEZôf³$Ô ¢úG~žuºÍ}zš Á×ùFõ¸uî…x¾ÖÛÿýzûΫ¿_o¤Òeát\FPÿc8in;Ã/ýñh(2®ˆvZ5tK&V"Z%ãÙˆ6JBîß.ã @8NI ÁúÊ¢s5T§+/“f6¤~Q†1}*Ò`o2¼’™¶+VmÀj¤í Ò>'5 w¨½Å†VÍÑÃs´E" ¨ÖìRýMý™˜¶ ÚùZBÖ‡$ÜÜÄ4Õº¢Oÿ®»˜Sð©^Â\ôLæŽ4Ž|Ÿµ Qk ôI ‘ÊVKÿxú¹ÅF£B¶¡*ÿ$™‚“­“ÚvÙ¼Ðà ”½G~'ôË‚B‰Cºk±Ñ¯!¦¹æd»ÕƒH‰ü.¹ïDvT2b™èk“ ßÁÑòëí3{…å];’ݳÖöÉöImK…E`)ÅIOC |E^9 «‹Ò´Ä»ç‹‹Þ;…çì€øfŠûEïUøKk„W¤áo ø7\ÆñàÝ´Ž%cSV Ë¥•‚œVe–ƒÖ¦¨œ¢h‹N” ¿›r€©Ó£W»f³Á?O²Œ4âc‹)hU”MÉ1íøã+oˆ“Q"l ê$V±µ1èïø˜öŸþã±ÿ@ýd¹DDÑa}Š^ŠÄݼªËE¡8äU:ºCæo4rŠdîØô) L U$+1ç')ÿ ÁÂEÓ"çu³/«R­ÍVMf³oÕÌ<¥FÇYQ†ªJ™9—u’;æ%½~#êI:I¢I/RÄþ3‹9áyo2Màšmvâ Ò+¢ì¤°£_Í=¹ÝÉþPWA¨11s‚èæ0 -ëé989«º§=%¸Áwp®á¹G¹ æI ”¬É“Ó„•Îÿ`3Ú }G59‚? { ÕŸNÔžäϱûã`Eùrž¾;îü™nýú£«l_'Oªq$e·ßß¶1›cšZ®U#L©–ß8ô0ö¬%ìsÍsæ"¬sðäœlÔ‹ß\S—æe«1ì5<ÓoÉâ;–ˤdççòeâ*ø¶ N”ãÓÛö3§ùnŽÜlN*8îƒUZÏbÇÝÍÌõ¶”y¯žmÞSýõ÷gi[`¦ý²LÌy©¿˜I¥ Á÷td’‚r6HËÜqE>C}¯ÕÄõÞ¡Kk»‡Û3Öôë·EjVbÏX$—sp‘4ìò–¥ $TS–™(U–uè®ÄÏâZH*1ƒ„t6Ã÷=P´îøDþYTd=×€º*%µD+YKÔA9 thê’«Îtñȼ'dDÂQÿ5c®ÏŽ•aÂMì¬-Š+Ù.[–ÃÑ]³ñe ÑIŽS í°,8Žï(Ê‘Ä2ƒcÔŒ‰>8­Hnn Q‹ãì—Ô –.˲( dî lÒ&>Œi²ÊttZvÀŽŠºI³×Ђ㱋͘¦`…Í4ó˜Õ[-:$Ð(Y¦h+´‘ÃêÂ91˜â‰` ÁA£;.ÌÖ6õ¼Úmû¯/¥a –¹sÛ÷vÊÛ •UïÆýÜ“Êe¯šùÁŠò˜ßT;ÕCCkLÔNѤjÖe$»˜•¶0× Üúœ6æ.G¦LŒÐ”ðPGE¨Ha*G´öZÆðçææ™üß AªØ2CSLÕJ©…µØ¦ê4û1ML”ØÕÔÜm–õ;X÷.¾êßôc-Ý‘°y¢qž››ÖÆscäýbR´^>£—.Éëg¡wÝwGÃO³Âá•KÁ½†U[Í‘QsÔ¥E/âE-R)«'2cÏÔŽh˜øŒŽÔvDÛA þ‚¦û³ÜûÄJ¯—ì×–vÃÒ^3æj>o‹Z g>ÅáÂⱄg¼Fù`Ögš±Ú f¬¶Ã5yfìï6úþöÖ{ ô˜V9µòœ6OŸ‰¶ Ý”Z×PÉSZÉmñÌ‚¸€qóìšœËú%“DÉ›pÆ#=ïµn4 m˜6BM×e½y¸‘b‹\: wô"®¹3¿©ô‰[¶–·ì3Sù˜x.³h÷^¢[zÔ#R0høÔÊ©Ðõ|4dSÒ”áNĪV±­ ž3Á4˜AYt#’w 2ÉãÞ +îLc“ºR¢lR_Ç}Ϩñ¹÷ÞÓÊœQVòŠæ×X³–\\¸Ë¾>¾[®šMضh6b™šþ~ ¦²¬Tb޵ËÁŽoDøx5£: i¤o,ßQÅ"g)üAýñ÷4­“é‹F‰E_b’ˆY4š³IîL@îÚ˜°Š¦ÿÿpÙûüXôÿ{O×ñóYëÿèÒÿßÛêÏÔÿïï8ñ_å§ëü?ò‚ˆ®ÿ]«¢oÃ[8¥»õ£c>¨oáŸ7u8½ø¾ìˆŸpùò ©»5ü;ÔÜ@0âþ$%kJ)¤l÷R{ßÿ/kãù-Ѝ€Y…»á-Hö˜ {л½¼îmÖ6¿•pš/aê®ù~AÑ' ^HqQØºÒªÚ >LÏð Þõú¤@&=j2Y±&r_Ó9 0…D£¹ ÓïwhË8þϬ?ޝ½`Íáhún%u£¾½¯û½i<øþÂ*ÒEBM¡ÊVGXÄø»ŽnŽ:&À÷xYñ•¯¥—ŸP—0&£'°ðÜ0‘H6dhhqnéæ’½a'½[—£ÔšøÒdFŸÃlŒ)ÆE˜ca0Ì9e†îõ¡ïÌë:«ÙÃoX%œE±(£ßñÜ6»ÀÖª¶–<íáuïjh±*Ü ±Üµ¶ Aʤ$Áb ü~%çàþ ö.Ú}^–euæ†^Ê^óî4—Æ4TˆÄ÷’:_0ÓÏÇJNYC¯E\niÂÈ>ÕU©Ó°oéak;uUÿ™EçÀÜX£~XÐsnôܨw>kÎy©™–Œ[T†CïéCh¡…äN„6AÎ^ŸúMAç(H%Í4&¨FÚÙ“ú|K‘‡¬A+QBV¬i…V"c”‹›‰D7^ÍÆðþXr±Çt$vÝ8Ž:;‡;Ñp*”¢ÍÒv¯Éá ä9ºõj3:A¬¿CŠò‰Þ‰*Q¡ü˳2ú±î—·ËO*÷?8G ßñ«3²:õ×oÎdlœ?”ï÷5êÞòK­Ô•è‰ú‰ñ‰ï9pÄ't8MÎ Îs©Û¦HÆ's–ÇpÅÛê¡vr_ë¦ÕQ›Ë EåÅèõi´ùÍ\sÚ¸àÌÇålLΤˆðMÝø³A«¹j£ð3.^ ú0ð „²9á߯m3šf~ÊikÙ„?ËÚ¼F¶`mˆ©Ïì÷á\Èk ,K–]ˆ¿û4ºÖ¿ä•fö+îL7'ŠéBU{ñõÛè ã€Ôjò"#n“Fž5‹Ü\­š¥¼Ûz®º…ÛËÙØÄÍIýñ8ŠÌ\^‰> .ôu••ì<Ä©ª²&;}TŽ„fÊ¿#Ezްœcjd©’9&ïÕè4G±çdÃrØ£½{˜ö¥xCãú²ýÅœÿd×='ˆï EâFîj¼d?ƶ)̼ßß L,-5í¹¤¿·çÖ:ɸ,ï”KÒð™ã ŒãÞ=ݵ s [ˆ?^pD9XQZÄïVðS_Ä[”±¦óðâ/ÁŸååÄÆ’D¶ ¢?ósâ/Ksb¹ìP¦¼›‡—% ´²<]°«!øwßGìF#†\PPY» ?¦ýðxìÿëø¿‡ù¬íÿ?ôG·ÿßÏêÏZÿ{•'O÷\ûÿÚÿçA>¼ÚmûC\HZ¶ÿ¢ÇÀ#ˆt˜2öàp2ƒ>WvË»ÿ³„ @Šö×1þ«È¿%Íÿ¡€¾’á5§…E!g‘·¤ò„rü c¼Œè#e™/TK5ĶB,Y,ß~¡Hƒ.–Ä ¸E8²ýÛ>çWqìÍÓU3!æ¢f\Àˆ$ ̱Œö" ÿÿÚþ_lªô0›Ê›ú=¡9HÁqI™æ§…‰¯FC´,¡ó,ö¯—¤IúGŽ ¦nª'ë.V"MkxÃÁ4?n{Ÿcrù•¨¢¿Š±eŒéƒñ 1 ¾j¶¨†¦öÉ4¾›Pæ:„¿ÄÉ€+e…¹vÇ׳+n¨¼=Ôåì0´eÿ×`,c½z˜«¬w¥0-— ¦µ°c:¦?V‘nþq|CîËUc¼¥¸ý ä)ôŠûˆÝ¼~ÃÑ0FCfÜOi)N!ÙÃÅb«9~Éçï€ tÌ×Ò‹ªÚÙÙ)µv¬æÉçƒ×Dvè@û±ÿ1ùkhþ1ó2¾?Ÿ«‚ŠËYíá`•Ùþ£›/’Aš÷[t•ÃÊ“”®ßSÑŒ—¸DÎÇ7ñ8ÆB«çôGs."™—r¨È¨¶4åj)”[QXe ªRzÇxìåÊ=&Å–®»ÄàVŠ«¶ å23™]}„~ô¦¸YØÑ˜ÕB¿ô —ô./ˆäOLòý}²} >©5 o—#± ЉäÙ t"ã»·%6!Õm؇l§›9h.¯•%]nݲ]øT”yvûÃëø›'ÄØŠRÑb‹?ñqu•èD}fÿd÷ÄaŒeDÓܤÅNG]ƒnÏ'æTùvvü¼¤®è…PÜ£boêáBvK!H6a8X¿~ì7Æfòímïšp?[BÀÀ\Uú¤ v¨”†8‡Ú¦æäôøÅë┟a\Ø5Á3âÁ¢l“_sŽÆ9.z~.æàëÆÐ7Êõ¶Y8&S±Ël¶ŠC?”»`—wÁÚFÉÞXUɲQ@l›íÇ„¿°wUµsôo𮚠ýMµñj^Œv,C>ñA¶<{Ó9>.EÝÃÆ«êaZsô"T¹'Úã²ò ’VQ7óªñöŒªÄ«Fÿ£oÏþ1Órþ^Š~û®¯7àÿTc£ U5¨šF÷!ŸãÏz(–?¤ÐÁÿÚ•0éªöÔ*U»ÐVíø ~§©Ã·Ç¯øßJJCøü ¾­ÿÿÁ_W›M¨¬-~R×¹çáŠxDQ÷tF9ƒbg‡«õÀóMÝQÜ‚d::z{Fù¦›‡o¤ +àÇW••ÌB)#ÈíÝW}ßþ³t_N~ÕZ*­¡¢°N¼÷öu–ˆDÙÇ8™×«ÅÚÿG{ð-™;Í/Ìñ››_b°û¨¼W—2»ë|!Ò¾à[QVËVÅ?ÄÌŠ¥®•Ás“³*J¬¾GÝñ8½ÍݳÄeÌqÐüìžiý6ž–Þ i#ù]ëa#23¸‹ÊñÖ+ÿ’8-9þ{m¡Öò©¥èþ.4ĬŸh,“=åUÇáNH—„Ñ0Fm£´¬òMCyØX?|ŒÜ•Šã†ƒ³UšðiµÇ³— 'Ä!n²⺥A°þyâVÓpjt:³FÒyþ€d x~ã{šÂÝÇ!’äEžo5çë°Z$]¹\^Â5þÇ*òtWwôr %ˆÚ(éåWÔgö:Hé3R Ÿê6Õ4Gž¹‚Å$³cØ3gŠWƒ…ÅýÔÇÅd~ø]±pKù)Y5ã:ýæ›|rvp+™~7H|DNKÄe¿»œT'Nªß '•+H¦rh[ªûX©LŽˆeoú1‘) ~?¬T&þ/ï¥tº.x)ÂÞú_CNúÝ夊Ÿ“pâüœô‹»›Ç4Y±ÈÌpàn5bj2\¼. à!ÚôläÊÅÒ«ßþ}‹!ê1BFÏßLþVÒƒ§dM/Y£¿“’:ôÜÕy€'<À§Î;ÆO´ž„øÌ7À†¿©ñ»%jF‰šY‚:Ú p8•pu‰#øew±³à ù‡¥†FXøhû„\)¿< »nÏ/_`u^fÏ’”üîþ– !ëMD`ñìRæ°;db”M Zát¹M·ôcµ²òZ7G&“øhBÏ4l=ëYN&&i¥<«l¦=ÝK}ºŸúô‰ù´²køk2ueÒM˶`¢p<™ È®ïâ‹æPs€Lˆ·Å‚T¨5zï‡è÷v•æÔáÃ3TªÝÙ|„€®þüBÈVgU䪴½¼b9ëR…b pÆ*håüLãCÚ¥D\ÈVk™­VvÝ­Ö¬VSb"<\`þ½ƒ€jž2'Š7Ì¿õ2ç¤Ã¹t~QûÃ;ôõ°•m ,jÏ+ðþÜÄ´ïŸÀ÷¨ó£ï+jõ¶ñ}¨bK‹¨™2Ù¼~Fò—ÊÄ5í§†RõJ!,÷®û¨ÓíO…/u¾òÄ3RW¡nÿèíYôg‚¨·LVÚÙÝï€v[Ö¤ûªxâ©â‰ª"ñþÃìñ‡æ¸vB ‹JÃ?[&Cè/Ò‡Ú+OÄ+_ŠIšCþc›'v³õlnV¶ 6øA,D3K¶±"|¯íùTÜ·RÄ=뉮ªŸ9×1Á Ü‹Ÿ…‚Q9}äÖ·Iß» ¤ƒ?;4ÞP/jÄ×ã–pöX+ªæË+„^Þr¦–  & °Š5ÉZ¾6ÃUx˜ÌîòÏÓÿèÇYòûêaíw¶Ì§Åï!=õœ5 a(p8´ù Ñ;µÅê-XbòFßÉ{Ä–*jïSUÖûÈ3â}ýö¶2ѦÈÖ‰Z¤¶Ò‰n¥‚ä"Ćâ5øf‹]éŒ|¼¡Êkfå5·rzŸŒÍÔLÍÓŒ± EC1ðÝRïœ%‹¶Ñ‚pyПإ(Ý*õýÄäM£~õý6u+¸[ð%{s³®mèx QŒXcU7—­$cØeÁ꬧ºZjuôÞ¡Aø¤bc,‡É3I~rèìN:É;~’S©„äèy&ù¡IòŽ—ä'(ïxdÛÎèk‚ÁwãXµ Ù((y· ÉôpBÚòÊ.í]?{>Qý yGô,$íé}".’t=£±²#ç)U³Kí=›/9ј>š@d=þ7¾§€ ÄÿÂ!·Žÿ{Ï:þ÷‡þ$ñ¿÷µú³ÖÿþÁ“§NþÏ݃õú¯v3þ÷¸Kv¼stͤŸ 2vßvÎàßãÆáÙk_\°­kPŸîQ½Yâ{dGü¬Ku%µÐ8¢ØJ°|§#‰ü£–V|=îcðî 1îL ¼af'“"è.(޾˜0›óD {ö´$’ð¿#à–h7Šþõ-|uIßâ÷réÊy1›3û 3ÄkýŒ{OÍ÷x9ÞÂ雦óµÀ4lÂ?G¤c%àî#‚–“B?Ɇoìë6ÌÀ9–L/²£õ¦³Loxwš¯;ž22[Qt²äE’øú1¦=Xس©8Lœ³d¤à/äG­&q$xŽ>à>‚Èplo¥£)7_{!ì÷Å»Qä\!Œ_Ð_@€X˜|_ÏÆqQ‰:¯ÞµÏP£®¡OŒ§Æ‚¦Ü£¢:¯ã+Ø* JD‡'lÏq¸ߎ~§y¢VЀ·L×(ÇôòoÌ~ ¦'(y:ºcžs˜¯êP?— B´ýTÜï§bñg^9ŽYIý—jIé’*]…9 z<‹_P&uÜÖã>²¥^ zSŽžð¾bàå$ýqã~é ’õØ»,¶cJk­­¾ÞTÎ2ìvÛ¢ÓÇ“e«Þn]º°Å è•häD ›á(Œ†`½MàˆšÜ|O#–^"ÜËhç¬óîx'êÝLiÃÊÀ$4|íìKlÿÐÚªQâ8x{¾üºmÓåEHo«…R‰ÒAIì[… ¤ §1p„…Ò‡ÓÔÙÐô:Hüè®E¥ºÝ xJ*­ýi>bÕ–$ÖÙ €SÂYèñÞOµ¦a¢Xû.aÖô¾ÓMÞI²Éè›E×î±ÐÓ¢5b!÷';5npÐÿ¡wÿš$e½à%’;õjD®­”)©ãÔnì°¸Ém¶¤£BGSS7byšø™Ÿ/4tz|Í×ÂO:,,Dj÷²m\Îç{áW¼Ýü†F»hrª|r»¡²³‰&ÍËîcÞèÞØ¦³×ˆ¢r&ÞåG„úø á"4îìO¨Û/,±àn4éãµÌ.‰„/|Ú*·'Sçlîé5øßÝd¡¢HÞ='úsjø?³Ñ´OW(ÅJ°Áþ¨áÊoõjð ‡ pîϸ1n£,=Âùx3}å“PÖE¯~Á]3–7ञ³3¡È™¶•Ä(½/£þu4ìA÷¡¾Èk ]û:ÞŒ¾Býc©†Ô:/ï–Qoðµ÷s½MðßsÒÙI]6ÕÓ¥^\¥Ç·…j…†ÛÞ`“ÙuœŒNT«Wd´^mMnãtµ›sau©¹“0ÀÔ9E`Àý‰„¦€Hv¾Öü¡‰ã¸V“:[ê8ã>/›8«ÛØuý›=)}{<òU…‘E×Ð(× P®“P®ãRÎÍ$]Ç!]g¤ë숺~£Ðßí::í::í\ÔŸy¤-t¡)—ÈQôg ¤Î®ÐÓæĘËqÚG•&U"©#z•A°œ¨È˜×w€+fRŃIœ|ñl³µU>0н‚ÍìÃht-Ñ%)àLÖAaqÌÂ҆͸ÍXû,4Íï#\„Øî{‘¢5ì¾1œ8¨LœLàÒ}ýB ‡ÒÍÙ¼âÒ\Í0Þ$ÝÎyIjLL” ³yB[|6 %'ßH@öÕû\Õâñxdí·°Ã¡%ncèÎEÍ%Œ…msŒ !…z9«À”TKd‰Gî¢JÄÙGƒ¥·#„&C™pîéEâûÝôú¸rK›ˆÔ ¡vѨøƒÌXŠ.gÓäÈ.%ç´yìòQêÖq©Ü¤I°þôìû-jI^ÂòxHÆ¢ƒÍ3ìòÑ›×ǧ;nƒPA幸ªcyY/!¯¯G77‘„x“Z··þLF·±Wƒ!>b× •÷@ ¿ö*ð`BuxU/…>‚-cW,à &ÁJpz¤ÄºžÅ¤²ò¤ÑUÔÛ{®ÑM§øÙëî±ÜÎÿ^x¯ù€½,$/ÙdÒvþćï:¨y©7ªÝCúY?Ï»âZÊ«Ý3ø“kñæC?}wÜùÝ#Ï*Xîj묛f˜Gl¯·.ü8îtòz܆ø‰_bf”FÙ=²ɘ ¾ý«<«¾ƒÿ@ã>³ø3\I³Þ‚ÂÓSmuÐÑþ=ƒÖjõ×-„Ӫѷ5ñíqZmŸ§R¨Íî Uö’ÅŸÕl´Þù\xÉ!%íè]³ ¹{úжÐ÷¾âå“ùA³`ê¼*‰ 4âgƒ~¾AT>ÞĦ«V=J¡¼pHð[‚ñðç1â{½í¼>íÐÏ&ý¤5šRQ±kÅfêqë<…Èg@ãh½ÎJNZÕ•ìbî(Âc;íœyÉ’0v_®c bL³jÈv dÚ)ÈL´¤#œ©Á7’WÕF÷XñšBç²ê=O­·â©—Ž­ZO±íìþ¤QÑZNqÇq'߈;©#î¸#îäqÇ3bOÌó%¹bÉUŽÃhXtF1¡èø˜ ß¾´Ÿîl'{ÅÑaœP ÎAãQ¦r ä*žgQåQÕ¡ìÄ ÅLçÎ ›fçdEÍî©[67šÝ/nYÔ P[ï)ˆÅÀ¤POS³®zƒwk»ÒŽVi'³Ò§6O2¿It u ’â^µrðœ·3iRÅì2þÐQòûéYîùOÑu<¹÷/•×}nûCºönI9·ºäÂÉ®;ˆ­K¢òݨ?œê %Š`¸~å C×/4ùŠjo<×ãDrmÕø¾6‘vWyYe¿º² ÿ¥¨ã½îÃ.>ø®ÊߌƒÑWÓ’ì$ƒçóg§hlpjèLÒ <‡,BÉ ¥g› ×l¶0öïÀBaiŒ£ˆð—m`×-ÿÑÞÚä.So°Ø±¿Eä±Y¦wƒõcO„ì—£1_‹$8-Ú¡u’r´l<9 —픯_¯óõËÀ¬Œìƒ!Òæ­ì'¢öµ]»22¿¯øÐ.@û;nLÜŠʧ€T«–þ/öÒרœtó¸eƒnªKtȪô¾:¥ 1_K¯cô-½úÈáÙCtðÒX¸zèA®m-ȵš[5C`«Z ,G‹‘ü^H.*\@•§{ Fò)ߢpCèx‡ïJIâª#†Õ¥t-U¤Ýmï›ôF‹`»"Ф1j4¢ÿÍ…J\ÕÿQ£Æë „fY“—‚æ¿O 3%WÐÃx(ØjÂ}ìˆGé+`\1F{öø*ˆCç%\¯Z±Å1£%A–`µü<³Z–_Ó•œGøHôH´Kÿ7o´&Ùð6®Éw F€-úCÄÜŽŠq æ‹õ:œŒprm[wá´ƒîz t’ÕYx“Căn³¨Gv«¦QÕR‘Ê[Ì0zòjÁ$¡Ì'gÕwX(ÑNIâƒ-®Õ$!ÊH¥cýZ­ h§¢”A°žT ŠÑQ¾UÞfšE?!"1½ìÙÁÍþ&³UÍK;ÉbÀ¤½q¶Q²Æ(þò 5epÀ±1ýx[ÒÜO̸(*àÞ« Hî"ÑÖE²ù$}sýîæ¥o€ùÂ9ÅØÜ75Î/ü·õ”.Ü,ðÐ߈žã[¼âò„ï˜÷=£ª–UÃ’¥U†×Ó” ¤x³eÂkÙKZG;œ¥Õ…cð+ñÉc*ƒì“ï†FdÝ­pøJÁG#Õ| Þ ¯G $ÇÐèÅe|ƒ‚['É"jM·Ã©OìFYŽÅo¾¸K†K³o|³`õùš°gÐ/º¦tDÊ­5­#¼˜ZΞ“æD!èäNÉÝPÓ±…¼Š¥­ëQ¶õ$dV¡ÚXxéZ“<.²<p<¦5´¦â†íSÌg€Ò¹¶YžfMdSâQý•÷@£í†ŽÜ#´T3#Ù“®v NþáSÎàBßÓÁ^ô…Ì‚àeïêó¶–ø3-.3ïá¥IAöÉJ†GqQ 9¥5ßí r/-s6ƒš}ñœòF_:«ëKð€=ü_}Æ}q6”{“7y’þ¬y‘‹“z3Q²[I|±@ê*L¤.bjêÅ"z‚ˆß) êPˆö¸!j¨ꥺæãŠué¯uvű ƒ¨Å,ºz·Q÷/yR¥$‹:É2àÕ½²GÛ„² UYx$¤ÞågÖ)Édá›*¥äúÙ¨N«EÔqöÖcذ¦›§:rǫ̃ØS8Ù¿^&¿oª*=%ô_êe—ª¥ê¥4«š^Ú¤vðÊ? Þ¹¨§ÏEøà›s’0¥Ýæ?lš¬“ÝøÊ‹|êM3P ,Ú½.Ú„Šö’­I^©å^²ÚÉŸÔ!j˜sÁÖ´k ÖçŸÊÞ”,Öi¯ËÎyvtSR|Y]et Ž¼’õòÕÔÝjò¯ ³µwaÙUðfö8˜ìoðZ¤d Íg²?‘>¯º˜Ìn¶Ö çkúª·Í¿9—w!WÅEý¤1kR˜ÒÁ}ˆÛô!b(ôÆ—öŒË®R·‡2}h‚wÅ\­ö]\T^oÉûLäþ4zFˆC5è±Pú«$¾è=:vp¿=ï*¾ —=/¤S6²‰[ñUѶœš<•©)‰#ÍÉ JûèøŠÝÿç%$uÜéwꆬ>j]yHï}ß¿Õ÷_ÎŽÛ~ô¸û¸0@MüÏo÷¸þçþþÿïa>küÏú£ãÞÏêÏZÿOžîï•üß½§ëõÿ^í6þçû,Ðîq«{¬ßAª)«ç W¤kû:p‹Ÿç2h~„+jÔ—CÝ)=µÊÏcF…ʪwãþ¡EICÆð’‰å I™‰–B&­3Ÿf»¹èR_ÿFxS^”Rš× ¿å ¢:À§áz5"êû…!Q± FE͆DõàâÊ»,ÔÅÁP- Ô¨Y@¨ÑYôïB}¡X+êÁ¤]õµ®G˜ Œ/&!ˆd¸@6PܦE7丰¢ˆW\ñõBq\fXO‚ó€e‰5<¸©8¤tHïÏ9çÆ¹‘_‰,)௹‘_i餀¿þ€˜¬7k\Ö5.ë—uËzO¸¬’k\Ö5.ëÊpY“b *« ¼š‰¶:/5`«Æ8à(¿ŠÕ#j—A]hB5ó‚3H½–lë° 0MD= |$æª×‚¸® VAÀî©% ·Û(sOR)E'Ñ2Etä‰[âµ»ÇDÏa†±ñ–½³ã["<øš¯DÖUSlîƒïîÞl×¢Šú„X_5§ dOgõ©ß%†ƒ¡,« xOŠár0À b ²»Ù]ƒì®Av`]½ £MƒØ]cìFkŒÝ5Æîcw±û/ÂØeEô|´Ó î$Ý4q[ ÚªTæ}DüU)êÄÔkI½¿äЯ˩!K›Õéwú|C'ÊùêˆrnåÜ Êù²Dq¯PÆÍWÞ¦æ¤Æ±¤ÆÃÜO¹LêU¨‚(+¦­òA)ªl¢,½YhmãÏ"šK±ê\¥£b@±bWúëK tÿ¹â¾N68VÆ -™#ÈŠ!«L…{ó«Ó™"CûöݯXÜÛ VñL 5ÜÅF³Œúq|U´T™Ú€‰K¤^Ÿ0Ëf·F‰ºÌ˜³*Å7κOô¦©%­Æ‰³‘K˜ë0¶5äì»ÄI]lKÎw“x¼1‰^Ïú¨-˜ÄìØ¶¿S.Ó*"ܰþP)šÖ(ù÷„’_?ÅÏ–DÏOóQÄ$ù<ðúÈ~¸ FßϲŸ2àú„ÙбøW¹Ÿ ¸¿<ÜþKßÛK¥o[cé/…¥¯½ÑÒÞà ¢‹þʱûʱõʹûʹõJÍ}¥–¼@éç˜ßz·_ ÀGj-ZÍ“Làuà_ ,ðºí/x}ßž$^«ó&3ø×d+ *Ô Ò4‹éI~?×~¯07Ì.jÁ׊7r'DÈH pà,ûü ž¹es'P(;|¼Š žÑ,ŸAᙟÉ×þö °‰~…G˜ ¶Ÿlaâ;°ë7¬¬f0â-¡*´¶ÊEϦÇ3C¹‘‰Da Ú~c#_z Õ¡;ïXÀAR¨ò¸ ‰Ôò•K%Í‹<˜•Cx3äK̘ۥ÷Ï(’é:àÝvޤJ$Ü—øi[’ÅjF¿ŠTn練SÏõ±]©ЂÑs½¡9ºM³ø5d–ÖÍ|IŽ€à‰IÙ(ÿÜè~5Ç*¨¾í k¸`ø¼c<÷hqõ.Tæè¹ì9xÐÔ5?+ùV%ÊT*§%\‰ŒÃjÏÙ{Rs°¬Ó¯¬Ó¯¬Ó¯¬Ó¯¬Ó¯<ºiZ§_Y§_‰2ø`~e~åïL¿òd~E½¿N¿²N¿’|æK¿ò$;ýÊA¾ô+¢ç)N3)‰YÞ?®Ì,ó1ò¿|¹Ÿ ä©<Ù[çxÏ:ÿËýÑò¿ÜÓêÏZÿû°þ+öúßÝß_¯ÿ‡øðj·ò¿œ³¡Y\;i¼åÍ#¨»¦ÖZ¢¡€u†;g˼IXŠ:ÑJ„è_bB\¬û/•3E΃or%IiH2ËÔ(ž¨¼`î“ÌYrÎùGYÙFÎ9-‰ÈJâM>‚¿¦%9_8'£4È`ó À=2BfάŭÁ€3_:OV2èÝ^^÷‚Éø±ž1&ð·”5ëH'PÞ„¹“&Љ¼ ¹’&0 aPbc-Nú„3á¦0ú‚ðÞ”yQÁO2®C?žx/Q8)›\ýˤøª&¾ÖºES®÷jv½Âª77ß@'ª‘Õ³äQ-½ûJs!ô'" HÜ·É2ËÛŸÉAGf¤&ÐáLMZù²d¬(H]>aÁÂL/¾Bàj‰[ý°ÕÒ)T†¨ñ^€ü;fõ?ˆZŒ¾–wô~ê{E–^C)§A)‡Á€õj2pÓÀ€õj¸À©`Àz? .°^E"¼ìÌ‹lÎb0_F°^‹¼F°ç˜é6¬u§ácÂÒeø€?c„T2€èž«7d˜/dœ¤ k”ä·“Þ­<}z6 ]l®ªúMÚŠq—׌E+¸àÆyq„mœµq^ÐÆ|˜óB6.ˆØlTo`@)…£„ ÄÂ04E#²öÁP3põhÀ9põ ¿9põžºeÏT= T/SÏ9^[ì5D½l@½jäPoÅ€z$_'CÔÒ1(4tº am± '€xƒ^Ë-÷¡<ÞÄ{“87@Ÿ‰Á û Ã͵çF˜%2ôf!zƟ˾gúHûC9çiȼç4$‚ê¼Ú«èDj/-Úãú:?*œÑCcs9°¶ó(/X[! @Ê­ ­-¨åý»0›Kó!±ùQÒ4:)$6!°Kh*»rÄ&ñ°ÖHlk$¶5ÛߌÄ&-ðxïOF¨—2“ è[UáCd[®­pfW ±Y7ñž¿f2Õ·Mì‹Û¶(lÛ¨mÂÏùïÇlóA¶-‹Øæ¶= ^›×¶Z›p>¿/¬6kSÒ,XǺ¹cÿ ¼ moÓ !(¾~ ¤¥qÇEóÑà ¿üø·àäØžøæÛ¤ÑøFk£ÄÿŽ(«ß<Ë8иoCô…¤ñ…Ž.*H C–O¶’ÀdÒ· ½e 0…Ϫ4äºÐ¡ÄÆ 4 w7üdV/o˜CÖ§A@âñË¥9xÁ7L'w&< 4ŠüPxxårO²§¾äC¢NŠn"Ù#½!ã ¿Õ6Œg¾xíäå†õ²E§pR²³¦›„+;>?L˜›²l³-Ê+×*F l3ÉF‚ £fMzù4J ½¶g=r&>0—½Aox%@ÏÖTGx€¬GÉkI±Ì'Jç‚•!QE~(µYxÀ áäЇ™ðRoœŒqàéÓø‰S ¸ ËeÖŸŽ¡I|À“N ÃF‹¤ñcF%°ÐŒ-™°€êcᔨoÅEZj½ ª"écØÒt•œpãÿ#¦?vI×$Ì?³¬ßÒ,ýFýsÏï^&E Ò½4þÜ”ÝØ[vb÷WÒ´R[e«~¡JîÏ;±Ovƒ¯ú1>ýÏÊÀè"ÿvä—ÙË»«Ý ¾ûÞÞ:î†t°,ß>]MoòlH߆ôôÁ6¤ðÔ®xGz–½tÌ­ ãÙ ž-;³¿¬¤i¥äŽÔñîH¿Ì9³¸”C¯ºÒ—@yÑ’¥[!‰[~yÝ€uî߀셾”½ñ÷ùqÄþ‘`KâwDœ ³'™çüGæy ‰ÿóí^ @ÀÿÙß_ãÿ<ÌgÿóCtüŸûYýYëÿ rp°ïàí¬×ÿC|xµÛø? ½×ªjëÐV2‹$عDs虳<ññvØè‚Œ舟UaÌçŒsŸRãÏÛÐCü£¶"J"Já)Xzœà)î‚îöyЏ/:B›f‹zÇÈã¶_KƒÂݶßy@<$æð¬Ò2£‘Yø\åMÔ¥•€+½ÿ§ +½UuD½¦èO“®÷4-½ëEÑ¿ÅUË®ª$,¤Ó¿±}تhĹ”ž‹b/ý›Ųá¯ÅRjÆ$³ì‰Þj™CDÅeÕ ¢žèi®è\ˆ¬Q©þq¨T‘Ö¯ÇKuŸ¨T|^e">uï`}à@¨Q^û±Øf—±tô¯­ÀW*êºßû 6 vT¶ÕØÆ†jc1ñŒÂ‘íºø‚¨Å󸆑U%È›ô¾ÑÃCºH¼m+µ’'[C.®Ú)w„£$ÅÎb#Pšp´>’7«Û8LNë]atúpÄÓþU‘â|õ*’+×½Ö¨cÌ…:F2\v/0¦ø–â=¿~ì_}Lg+”|eŠoÝ5[ÉË1¼¤âX9õ#η,ÎýÄYZHÁ&ì³{ ц e rè%FɈÅñcOHÓPEö˜öúC'‘<$}H2$ï+½rðoü$6æëŸ"qóšÈG\È)%åò£BÈ-2;5sv&1®åûžž5Æ3¥kŒ»5Æ]’!wg qÇŸ5Ä»°)ÄdËl°¯/æìh_°ûYx_9c-ü5ØÝìîQ‚ÝýÍ‹àÂÞaœ‡±´^``_è™â~(/a »QG÷8SL|¢) ³j¡_¢‰Þås<ùzÝ~‹>Ù£ù¤Í Ýí2 }Ž@ô"…› EÑ_ßèn”|x rNHÙ»ŒÈñ^ $l-‰ñDi‚p:oz¼/ m½£j>:H)Ü/>BF§AµBNdþ–7§×2}e)ëw®Y Ào?±Üt¤×¢’0&pe±W¢°½\%ÙxÕrçÄÍœ.¯.2Š(TÚ(ƒzx*õ¦.cµâä¾ß ÕSMQ†…ßÛÞ5í‹-(Wfí­Cà|†CìÒyDìÂgŽŸ_:9øEìð.ˈ’k:órMRÞeœŽÎ8§³ãtBŒó`|C¶¤(…oœž ãí¡v§—Wz¥9’ZUW,µlµZ†ÓY—IêCÚ‹kR\JÓUª|á’ž¦ÝQˆS0Iˆ‚`hp™“€ j]QçÔÓD’¸£ò)6ý:Òk׫Ñ4"!/žÊuIâCsÒ-TZ‡A¼Ò+fb —i ^â"¤‚’Í4äÙ ÇcŠjZ4 (ˆ¾# ÑEŸþóUMÿ¹9ý {,²…æ Å#°€Å †ŽMg ‹tqqžy?O›÷º³ÛêìuÕ"Ñ/c™+Wî›l*H8ÃË/„àÌÍî¾`ä[¨‘tGWW³1Zðøæ0ÏŒNðeà«Ä_ý‚ ½“[d®ÞðûWkÁ|Ãx,ç<È8ÿZXe U¹b£*²g7ax¡÷U·R©ëUXMxšðí¨V±ònZ¹sO9ËfkëüW>X=‡ž%©á+Nòí†[)Ç¡ðs .£š§-é>5Ï΋èµÔ–ÖðÕÿ"øêW³1µ nø•›º¦lø=)ø%F.èÆÕ`vÂ-®’æk7‰¼¤KIžTÆ«] ¾³Fƒ½2`Áßöèc@P‹®cï!Ü’ÞÌmïsì}ˆÕÀ~p5@¿ "I¸ð…DbtÆ«4 ¬BЉ¨%{c‰Éº‹…¯/¤wÒ|- ÷´t én‘KܱΖcoÄ4Çßî [= é¤<3ö´ûÂÐÃýry§¼SÁ·„[ì» ta#z=ƒ ¤¼¥ q®Æ£o$ ^»ÍÐÓO((?‚¼}ºî#:ß.³é×XH¸Ø™/™j_•Àkz;)°Ç߉<ÍÔ’ N¾–ÄÃbôëKBܦÍ;qú„ø]/fRB” Ü¡©q%]d©ñ¼QèñT=ïà/°Ñ~è“Yê»Öé”Õ_A9¹‚ÃÓ›ysâ‘ÒZ€ÑHïj`ƒ,ؘ<°ÀOÀ/E­·øœ+ò¹ò¶«uL¦[mukâç±øÙ?% ù"0ú% IßÑoI puÀ|üĺ :?7z>¼Ø ÏçA?'‚~´4„>¼ÐmUKBXÒ¹ÆÒ_c鯱ô—ÀÒç‡tàuEt[Fã05è}û‰†ẆARZDqQaý•c÷•cë•s÷•s땚ûJmCCÜ»‡¼„k]ÈMmg#äæ0ýOj:@7ïó$#ÈÈ`à@òçÉ`àd$4sO㓜ü^Ó~?·G”2¬}»±Œt ž”¹Ó%xRäN—ð‹[vÉt ÎÈ—N—à®ó*Y§Kø—¤KБè=9d2…²ùµL- Ã :¨„X3 º¿(Ðjª²i>óÁ¨—ì—]pì‡gkÉèjs×|>OÍœŽA\PÕ\ ؾýýjÊ0”§Ù$±ƒžµË~¦%}‹ÊÔrk3oŽ‹U7•’åÂ!tD0Ôl/¥7Ø!»3¾lngXÉûÈ~DxÜ®š^6%ÆûÇCÔ³NбNбNбNŠ‘™ÈÕrdè–QćoŒ“ìµ_—Ùhõµ?‰í<"×…¼ˆ¥¦»°¢ë}'•@ü0‡'oö RÁøÉ^`óYÙ»ðUô¬kŽõÓŒê¶ÎLô·2ý_UƒŽe]NE•õtµðˆõ•å±fNq-߈MºÅG\Ë1óÀ½å6‰æKnBB/‰-âßÙNì”3ÿÄT'?\޹Ÿwæù:ÛÉãÈvbÌÆ#ÎkÚÖ‰Nþ݉NòGKä917ã¿'Ó „ÁÍxÚdoŽÔ&Œ !¯=¾# þ_Ç“þX…šèÈ&èä²à‰µ`#´x…´|­­Jq«|€5{¼OCáða~O®Ñ¬JÒ¥œ²ÆãPª–(%[KÄôæl‰¼Ïô´/oÚ—MãËE“¸„u{qjy\¼ÿ™)\¢”,.‘Ëã~b¹ƒWƶà™%¨<&ÀÓ«X*FÊ…ù¾¸CølŸA‘ø:¾éûºçVZ=Ò9·ÇÞo¦ y`KÓ…YéKd£†Âéæ ¤Í/p¨1t¿†Ñ &æÎ JaÔ“KQ¡[:ƒÚN‰T“&âKütÈàˆ)£qea6a§>{˜'æèiÌnºd+¯\£¢8¸{†¾ (ß‹àxÇZ è’å(–øÃi]ê‘€ÚßômT<¸¤TÎæãŠ“ÀÀŸ¡ÙtŒO¢uiº t„”ŒðIÝQ—]zº­óºÖÊ×!gqûïÝŒ"•Í' æ4@ '¤†Ð¨©§í å!À¡7›¨K÷ÞpŒêÜ€wÄêxçÊ*KU¦½%’- PLÜù›ÍMKH—#Nˆ Ïñ5üO  ¤Dèô 8>ç…+Ûè-Ž÷Ù®Û}ꘑ-éÝ<6ÈÈ:®è˜¢¸m<¾14e”“k¬…Ž‹è蘯&´'G™1ج“N¼™rÞñÇêñg¾'I §Sâù³8Q3(*pë©8·‘ c£Åá:; ز¹ÝR»ígöØïŠ‘•>)mÊy“柸'édË“9íÉ‚3–‘k¤my3¶äŸ1N’e½ä± z.œþMÂIÑæÛ$üib£( ¥³Êªöˆrå¾6‰Œì\sä^{¶ Ëe$æZ6ßZJ²µ_îu“ÌÙÊv Êõ—¶V³Ó™%9Æ‚ðÏY9#è©ÔræQ+g^^’ j•”}bm5)Ðövm/–íý½e@Óó}Ü>šü_•ÝuþŸù¬óýП$ÿ×}­þ¬õ_Ù݃/íü_åuþ¿ùðj7ó½n4 ¤´*Em×fsTŠÞ—¢?Í$Za sÞ|Z{;åÇQ *«Þûƒ¨²[.{œãƒ%A¡á4\¾PX;ÏË$¾¨å`n¬¬œVF‚ª£‚•*eÆß‹wÿœ3…°Ìñà eaF£è5¬ÊÉv³7þ<ú¥nG×ñ *ÀûEäËA|ûÜTESl:Gýßÿ}‡þªDˆ&sù ÑS¦#øã½-7¿E[Qmó»­‡þ¦ç¥©÷ 9USø­ ¿öu[} sM°†ehm³Â[æ+ÈEl»k"˜D ÿinµ¸ªÕ8?#^7¼‚bò[è]dI /úŽÍxãIÌíGˆ&'wþq¯Q1¶dÍÂÌ7#i 'ýÉ8EÄÉ4I³aÿ?³ghFå¾Ñ =GV!”?‘¯|/ \C¨`t9å†ÙJ×3Ü’N;ÕQSwÚÉ3 ¸]¤‹*Œþt³Ð)₯Ñg›žMaWì@õ!ÁéöÑú7.±Ÿ¹L½0‰&(€Ä”¤L¤˜Ò€î§a-È©ð:°ÿ¥7@u¾–Ä£}ÑÜC<;ˆ{“©h€(­ªsütæí¿jÅÍÂõ60k‘8ÙëÇ`p,Š®ãáH_õq7ã Jo1-yRÎ,'– •$“îD!„YNšóV®jN昨c—Ö ­ ¹¿¬¦rìt›PŒ·›+IÎÒLÉþaì,´i¾I0t”XàîŽlôÊ!YOÓÁÐqI²½|ÞäVœ:D³äNѺ±s/ITÚYTl'è¥",xÚkÛ.A  j^¯¡V(?o•ÚÛªÕ.š9SD‚ÃeÏŒ¼CÔƒßdGέл}áPŠBk»]œ~ÄÎH`&½Ñ}ä²ýÞ]üßQÿZ:N@Vw%™ÚÚN ËÑÂSJs$Q€Éˆü‘Њú0~‹Û°<ÆüÓM\Çpè¾+ü9yÇi”—ïŸ ”tY–zöž¦ûOru!žgæDœ8#~0 ËÖHB&ž$bTQë³[=\C”lnÁ±Y€ZÜÂZð—ÍVÍpúãñ%7^.&—~ŽÑç*ɦüH0ž. òô•ÄÌa·Zøµsº†³ ÃY. ühðÂêŸGþSUŒwpNFW}á”Ëìi®–&Ì*äuQVT·ŽD椬p7‚ÿ¯Qó…Ø-)ÒªA ÞW„) iø*bø—£étt‹ç \§`Êø]²p·eA²3‡d*¥™I¡P ©$s)äV£ßŠ~Z²y¨äVc’Í$:COÑFÀü¶}†ûðïMtÎ…Ÿôw ÞÕÐþU«à?{)ú‚Vm^ñé.æ‡J;|Kg¯›çÆÀi׌6hÄ7ëœuÒ€àx×Jë,·ÌÓ]ñÜmg^à1øJÁ,xû;fa2Ý)î 2µÚ AŠÂ¶2~åÀjÊ€ r“šü>yõ59"7pR[+K¿ÃÞ–Ai"ÀQn"pdÅTȳ^‡Òè¨gæœá•êøüòÂÍœ iX&ÍÉ9ڜˢ·(HP¹ŠîÙEmXÖT{Jî{JvNó””^æ.FUým"ü ü×ö–·Ñs–ª¥U"ªF%s"ú0ÌI¹hz9˜¸·ùš”Ä0S×4I×åàì¤}  šƒ*§Xr™¿^¡5mêøQ[µÃ£47a¨0 g ¬òää¥PWÐ肜°ù7iÞ‡¿W¬%G¯{x §o¨`Èï‹(tvÄ¡DbØð÷ H X `C˜£ÄŒ+FJVGÉ4\^YUAµM½öI‘Ú÷ÌcÏØi"Ÿo;åÊ7ô¤L6.­§A<‰n<¾—I|’Us|г¡mjþ)ƒ=¤cYó%²Øü«¾FüØj6µ‰“` Íó‚3'MAÊmŠ ¯§YT÷Ì‘5`~Äc7J»QO¾O@è|Ž»Îæ7ê«Á[Mÿ¤…yë,À[Œ RM Ë>¢×g J>RÛÉáèî{t„ú‘÷!¾j2ɰä¡Zïêó×ÞøÚŽÑûŽ<‚Îæww#êœ6¢6ïµ½Tª’½g»­xÛ³…G¦î\í¹v.Ã7Ζ²ö1c.\:IîÍîþÑýÿ>ޝÿ_ù`íÿó ŸµÿßýIüÿîkõgûÿ=-¸þåõúˆ¯vÓÿ pß6Û§%úq‘¿sš â•\à‹šÐµ©;÷yœ+Û0Â`_br!©sçóæóe_шœ¢FF¢3ùmï?¤.‘Ö§õ]ëßi›Iwú»(p?æòøF‹Æ„S5Ñ"Æ) ºîöU+Ú0V¤­ÀJ,<+á\„‡›” §>rÑކÂW‚”=øÐVˆì°!û&Éd«•¶N Ã}bæ«Òµ‡ÓGmÖ6¿‘aZµ5ý~׿BÔ&Îõë$¹ÙEa80“l@3•VXÛ-¬xÅ‚ÈC;uÒ~knvš~{†fâSó§ÍÓÞ0Í&ÐM9iUßÐgA´õFæÓcEÙæŒþ³š“ #,ö†œ¥.è@cTV£Ê(»J_À0¨ã%žz”&ˆ…Æ×xqÒÏÞl~OæãŒ=@™3äujó›"…ŒÄ+¹F[É-¹7b¸ñú™[_£»"qÁx$²n3'á\ž¡‘_2c!}»ô¯úSDðb§~ñ’& Ò'¢Ï©¯ûC"Yl’n±^IÕen¤mÂc¡¢<-ožá‹7ð_¾½(»DÍWâÌ-Q¿Á÷…ÏŽË€”=ù®5Ͷ>ô± rRuÖ{RX{7Ëe5Ë ¼þ´OG‰—‹ÚÊ7Ìá”þòygeâ:æÓÖ;uxç”ü$Š£Jû‡Š ÙØënà]Ýý$íÝâ9µx;ÃÜÂq øº•”ѽ¯<­Ê,z‚Á#d½Ù„Z‹RëÂG­‹USë"‹Z9¨u1µp­x¨•Ó×–7ºœ.¶9¨áf3šÃÒ2óÅmoüÙŸºRîÝäÄ6{”üð¢Ät©¯w>pÔ_wö}Ã]rè¶\~N™îe·ÊÏ[;f¯{}JÎ-Ìb ‡iÑP¿ôá,Cªö½KÐÒ/4 8ÜzõJ’4¬"6w aBIÌvø%˜ù¬ËèiŠÝú•Q~¥4"Ât÷>z©Fñr—½”s¸œ¿qò©ÔV-чfPM›×EÐã3+¹œÝÈ4oUb½Bõ‰úë¸?ÂæMþAI!»¦Çèªd$ÿo<­Úuù^|—óÌHH x3{½×¤Ð$Œ\Ðë –8ô*”ßñe<}e99oZ–yƒ¸+rxŸ.AÜÓ0qaIñá-’¡Dã²±'òxºÈô1§&_ÂÑlY»£×àtT?g¶ZF^m­ÅÖ†š®ÓL—Ù*Ö‰!Z{^³¾ñB>ÕÐûEW.–˜Ù‹Ì™½HŸÙ‹rê$]¤MÒEh’.|“„Ç{ŽIº0&éb“taMÒ…1IÖ$]ø'éøæbEyÓ‰ÓýT^NÛ¨vŒðýÚáù¯¢ ?’§7%èÆIÚRú0™0¤ÿÕ$vø‹}Fø÷í J¼™ä’a» ¾Æþ)œŒ>‚”òft÷#DÚp`MvŠ+ó"]È”¬´ Ž×Tw-™^¥K';>E VšŽK¨ÂêBáxrøŸ;oÿê°uƒÙz—È@Ê»ÕFµsöZ˽Ûy{V ;œÎëÚ¬¾_ÄýS¤¥90,ó"󥘜@îÕÆ©´.3Ç£ÓªÔŸz•+µ,Uާ§Ug}:uÿOÏãôµFº‹é.¤»’î"ƒtaÒ]„†y‘Aº‹0éRëL!ÝE˜tA§ãĵÌò:& šôd¨nÚUêÊœiW3<•a¸Ïq&ÐP 'y(Üû¨;eü}C»|¹}ô©T ´žd¢ÓS Ì sùïð(ÊÎ ˆÇduVuÕ홦qK~ÏÕ7£lÏU“ƒµ4,RœÀÚïÛ`ÛãÓ½ùó{•çÔÌ<À½X}lÓ<¶rzÕÂú)§xÕ^Àu“µEp§´âjkºã!ÿ½m„´h[wʸÍpðÃczkËÅQ«è l/¹ÈD5«xüæDr¡=Ó»¶¯º&íнġ.J°C©ƒd𽬠¹Ï߯whFÊ¡DâèèNU€túá¨Z aU6º±€Æ«’’4jã%9ï \($@“H%–—’ɳ?NVÕ Ñ­^€Hƒ¾’,ÂYµJç {žÙLò:õÞ;hnn«²ÍÅjƒÂÛiÞŒôI˜ÉxÝ× ïò§‘j¨÷„L¦Fëeý+ñ…¨ÝÃ.Å.RáitOrLMp }àchÙã¡DÏX XM8õeð {Ø”ªºÔLç9ý5»¦š¯¦Ðàüs‘5÷v£iÝßs¶«}c»â‚Žpd-騍ûÿ &ñ£ñÿ«ì¯ýä³öÿû¡?‰ÿß}­þþð‡ãÿ·öÿ}8ë ÿ?¸’$¢œëíw(!×ø?þßaÁÀ Ow(pó{¢&@àÿ‘—§¡ Р?ý¾­ƒ×™€(YÔü}RÀ¯à6‡¾D>HÀ‡&ù°ÿšlž5±ÿ¢¶ùíKuXESÀþé €¾®‚HTÊ$˜‹ÊÓmÆdÜ  ‘h€YLo×TàªW“(Nfc-½NŽt§úØóà–˜jyÐþ:§^´¬ qûΫzÐþ0.»°uŠ›§¸À«ä­w¶)awÒœ¸æÆs@ít®©{ÚÌ”çÛ3(æÐ( ¿ª5Äášpœ5ák½1 Ã¥±úBŒG‹ÔJ{Ïh~îú˜|ÂuY!DygËþ(X|Í­VN,¾¤d{KîÅŇ¿¬¡øÖP|«…â«å‚â HšWŽEÌ9 øjˆ)×¾?(>Â||í >10·eƒ¯êÃà³IãVä¥U~ >¾‹,Á‡uI±Ü @ߢ®Uâa¦SÕ=£ñù¡øš­Eàø:žžÎïìT}Op|6*Ÿ¶]+T¾p‡ŽÎ:TŽQûÖà|Ùà|Í–çk’S‡d©lp¾æœà|.2€|‰ëËÒà|Í%ÀùÚ?8«çK-šΧÔÈsƒó¥•\98!Í´$Ü ¯š!8ðÌ? œÏ'Â)¥Yd⪥ðEUî©„àC=àC]Ú‡#«§ƒ×)3Ž[Û/‚à&º8óÃ-t¢±²5¯imX0}Øs"Áõ­¦v×/0˜Ï„¥ƒ—2`úÚ[Í–ŽéÔÞFa# Ó'ß·ñË®„ÕÍÊU9kBîWÉ!¦ð1BX³•¨‡¥H;dJsÝ`%Ëû€øÊ•ÍoÄG—áo&_{^¬4‡o[`¥µÓQøtì/™÷«ýÀ{jÊÛ³©©ŒKLA­­Ô d™^¡d¶²[‰!*âˆ|&«6MB.lG .Þa& M6!âáÁ Hì-f2«xÇ*ÍçNa=0ÛéÍÂn–¬‡0´ ä­þ#gŸIuF¤v•žQ¤žI Ã~qVÜìõ!¦çÖ=™I5§½5©¡Uäâá³ ßWráæRŽ˜y…Wƒòµ’¬Â+tÀlAÌ4ÃŽf'*t,Ÿ ÇëCí…Åf]´*Ó­H"бGK,ãønO(Iwµ' `åG"ú ¥A Jv¡7FðÓ›é’&Qd ‰Yc¸&1|t_¼çœÊ8Nª~î‘+Ú˜°DÂÛŽb_ÿðÉÝ[¯ ›Ö:Ål2­sCÏ“z{EÉ¡…›[| %€ûôzdJž•U ¯,Ã7MâmRÌ€¶²–\P÷šÉ‡·Ø‚j?ð‚ºH]P?Š—*ld¥y½T9K4–Û¤_kPM­ÿí½®ª ®±í˜ª\V}žüx®-ä¹Y«^‰Ïn_yXdC· ³f½³‘ƒ ¢.™,§k·ÙջͮÌk+Ê’'/‹Í„aʳ·ãįáÛqq¿)TŠÑýïMásQÂé†ç¸K·rï9î]}„wúE “·]U#=y!ºÊ´7ëE›ÑüOA‰s½ôˆnÙ”€·RžÑ/Ú÷"¸),ûåÿgï]›ÛرE±IªR©Ì÷¤ò5'uEÒ$-R–½·÷x*ÔË¢LQIÉ>ºur.Eµ¤Þ¦HšÛšš:¿#?#?1ë 4ºÙ¤~±Ë–D6°°,,,`½`?K„¿Îe¹±ÊølÒ¶d…:0Cæf¨w¬ñÛb˜×ñùƒ_‚„Ìc:C#xbEkŸÁYH^YóaI½¥%EÕ° …៱.ZE¾WK7F´,I=¿ß¤žgžÔÑR“z‘<©ËLê¨ôñÎÏÈœXúRO.¼ÄÏ8÷¾ &!37À"ŨhQMô…œè-w¢Ï3NtëÄœèó¥&Z»-<¸=ó#ûs}?ˆé°tîØ±œ;VÖ¿YRs/“¥9C~æcO¥Å33'oFVS:_²L“|èdJöX^šT›jÞ¼dîñEÍ›¿· ã¿Åê*ÛT][s3Õx ¿{Ýcº|D‹TÏ ªs3öZi\KÉ]CfkÁÌÐ)öŽSÇ-ñZ¦l¹–™sòÙ¤¿)í-Œ“ÅÓ²ìLAÖoƒâ'ú®²…t)Šƒí %6-ãC…èÅÎJ:E‹â20‘÷Œ“õ³>¦ýÏøÓÊþ'ñùIõÿ+ûŸ_û‰ìkõÏ·ÿy±ÿUÝX­ÿ§xxµÛö?´W³àÞ\Ùÿ¬ìÝþ.Éþ'áÊÛ‰.¤íÜð8 æ?-ŽEÏ– !õ­Íe‚0iݳ®l{#Ë™Cñ£„4*ùØê'Ùð-gZd9³´ËšhÚæAd9Óò[ÎØVBdÑtm€LS§c `Pn|©¦Nd.”ðÓ $Ù Y}éøMîaþã‹·0ÏüÇGüµ›ïøÌÔ;²Vmò…sçþõ[›ÿÇ÷µó9~rº_Ùù|Gv>i¡³<Ç“Åí|¼Nn¸áû™ù¬¢ã=¥™ÏúOeås[|V>i20 BŽAÈ`žAH-w+ B®AȽ-lƒå,ôJ}zËŸÑ’ýЖ?s̹F æ\[üÖ1纷•mεœ•6çZYù¸V>­“••ϲV>ób¶y­| Ó c%Ÿ•Oz ¶ojå³hÃ9V;÷Î úD¡ ç[ùHÎÓ[ù0]>ž•ï¢Ô¹{­.þý¦)‡]×=­|8]Bø™ÆGw­|xù;½jS=¡¥¦ŽãUÓ%*èîmä;£¸Ê¥[ñV[ñçžÐ&|e $Óþgòùòû±ÿÙ\éÿŸäYÙÿüÒOdÿóX«nþ¿ÍWUOüŸUþ¿'yxµÛö?í³œ88Ú:-âÏ3úybÈù¸C›y}ò…”(pg¯5Ž÷±Ün~žb-øq†¿ÏTfó¹–Dõ4K¢U2Á,EÛûµVmÛÊNÀóÍtÊAšLxâ ¤94—K"ùšŠ ˆø‹yÆJD_¹¸áR25!)Ê '9î}8ÍqoÒkŸå¸»…(ðBÖN°¼"k§©“–CYÈ«ïËK'”•Oä°n^ZŽDjº4Sç¢²ãø ÛêTÆÁaz§R@c£ö{G¾ ü¦ªÞ˜—x¸xUÔéq\WÕ &4ñ`*Þ=kRƒ]]½),S4– Ç4!ŽF®­·àGÿ KTD´xÑ<ì‚5 l’Œ ŠÐ56:‚a¯²4`9¨Ÿ†‰?þMé@ÿYmtùÄ •3WÃ~øÕŒ“éxÖ›ÎÆÁ5“÷¬'G¸ŽgÏw¥™z=f:òyƒd¼ÛÁûþÎÖhÎäI{UØ4l;þ–¥·ë±Ìò‰­V©UY¯‡z<f“Ú¤” %ÙèwÒ2ËVåÂh¨"\®ZµèMµ¹±aŽrr½¿{†õe`.Eý Ì£RêµuqZì\Z—ߥ· …ªx&Úøë¨ëk¹–q±LþÁ•×P¯H=fãyÝ\v¦þï)3ÿË-Ƨ_O¾ß,+ ˆŠ$“˜·)žs ©-!ÅÚ¢Šjöá©{ÊX¢á$ d ¶nb‘ŒÃ@à4ÙÀ oóº"" øá+lôG˜$·±!–¤¹Ã(îp>½åT>ìl>N|¸ÃjÚ“æ¥Q¹h(ipä :† jý>;L¢àN¤Ô6©í¢hE‹D].2ÊþÇ Ê‰Â¬Yi´i¤›PF·&ƒWüœö²¦Ä=”¦Pr1ÓfÒK––åäi!["~Ü©æóÜËrm˜û“ ] À»ÜWöqL#4I‘ÛíO†œÙµGXn»íìõQ²RßÂ5T„ÓƒñºPÏDzíË%a¶ÛsR!H,SDY’… ¡ÝïÞ^\v b‹¤ñµ,çn2¼Å ÍS[p#,&ôUDJiØÄZCO£R"ù mŸw*,HqD-÷)ŠPCg®‚_R.GË —…) Œÿñ?Ôž¿¶VfÊGì@” ŽNPpoˆ¼´Ànô»Ó)[ìQ1LÌÙýˆ²¾Œ“. Ó$³iñP‰ó3[ònýƃc$Úž’ÁäE|ª&mqôY P±mÖN×^ q³?:ÅáT ×þpê4±Î)øÔMˆçŠlMŸù›>›ÛôYrÓ'Ùš>ñ7}2·é“„¦\Ó’lÚ¶¡~§€zli)ïÔ£ÐÞÒ òvxu' ã±Éì‚­žL—Á¤7/"&$gbôbÙfßÁ¾Œ§–´‹}Lù>¬¹k¶¶Çôºˆž*§d˂ҢAA[±K¶9zëãolµ»5wàÈN]‰õ Û£Z¯’*³^åÑBqT,U3Nv„±jÚ0û®5LRé†l-+¡XlVv]dñã¸þXMïµ£W+tâq¸(ÓAð ȸØú=h[¤?–qØóC?Ì¿ÙÖ‡ íÍzBSpBxÓV§ZÅé—¿))Í£ˆ¸|Íï±Ä©|¿ àå˜r„b’-Hr(PŸ3HÜœù´œ¤I@äž:®@Êôô® í3Î÷ZP§ed0"˜JFÔ£?TÉŠ Ë®/áD™gž-5~gN˜Rîú‹?xF²Æ/æ[¨e"Ïø©ñ;K¿³¿³22R|üdþP%ããw²Ôø8üž»~Â2\€ú‚¯zÜH<ãw¢Æï$eüN`üNÊÈ;?Ù£?TÉøøÅmþ‡0é,az5&¶“Ö”w!ueÁw+P÷ö™÷ †E·y@…Ó? R8Ð×eq8[¶äp|ìA—ûr?®`ûÃáH| û}‚ÃLÐé&îÇu¼Ä,Tì­„üÔ3“/Ý‘ä£u¾–èr¿žwëƒK'ýdÖC_™îTíWyœ4þ»Jã=þJšýöñ$#0ÿpÀ°€8èö†ênD7°à¼/®@Ì¡Óp|8ù¬|”Ù9ãJš±KѨ(ÐÅ´†í¼mhÃû4ï<6ì½F²ò¶ê¨A‚ŒKøòÝVÒ;õP}rÏÆÂx@"à éͰ9áK@ãQµ&˜è\°VÜZ£3xËÒ$Ý;> ¦Þ!S˜°ezÕðB)WËkçû»Çmÿ&¬¹Ò±®´¥+•]ƤÜ/ìnßOêR·xaÊB2³š „œ+ô‘Ϻ°ZÐk¡Zúý¥ØêNØbûvx^Á‹ m/”[Ü!.õ·3BuÔÛ E•Ýo,Ú½¹³Ø ?‡È|XõŠÊßé¼ÂÔÑÂú4Ô´íÚ77Á~_kvPù ¿NùWš¸èVs~¶ÑTî (šÛÿ¾ÝPYÿ|jÒæQëäIþÕ&ûäÎîáq‘(€~ Ó|qÚÜkèD]I³·ö™”·k‡)øì4j‡ÛûEüÝ|«Êy̲ LÑ-ž‚]f{s•‰þmû S†ïI17_Ô üq-À‰LЇGYh€”ÙH"YΊ(†YN¬@} gV“Ž™9ä’™pN6OéÚm škly™ÕÞÚ€wæÂ;›/fmÀ;qá̇³×žc?þÂ-?DZŠJ\Чk$Ôµ`ÝÎâ ’#Dß P¨=Y ¸ÉÀ Åʺ8 ¿ÎgºUkÂ@˜4j˜µóQ,‚Ù¦©!OÞð«÷{‰B°^E¼ºBÊÒí£f§Þ<5Ò_¨ÈÀë¾Vu±é|Ò˜©bd÷Ð~Ê#•±Ór'Ô0Šë®Á\ë~Íõh!s€h§YÀ£Åöÿ}7þ›«ø¯Oó¬ü?~éÇôÿxœÕ?×ÿãå«jlýW_¬ü¿žä‘;­ãÿ±ðê“Âø1å¹T6„”m;µS%,­¢ÉÏ÷çüÁU<—1xnÇÕAÄŠfk:|¤Pní4÷ y×ãȪÖã9a:WhRkjixo¸u࣠£kh@]#›bÛ*âè†e"]‹Œˆ£Çð5ó ¿=üdAóï,]›o‰cÆÆ ·³[Og“»*ãÚÀ™ñy¦h#-è ™«á· mБí¢Äõ_ùƒúœJÖö…ôs [´vXUE[ï¼]]G, Ÿg‚ñ_×äŸç-S*ÇN(Ûqhضb–ÁÉFæe ´ƒVy)H³Y„ðÖ0j«#úÙ íx<¡\e¢^e;+›Ø_Ä&ö‰ûû]þM6Í -F‘—€L(ŒiÙTæ—¶5GÉ„6`êTZJ(ðiie4.c9ßpÔÀËxþÊ ›,DM« gTS ,4­ø*¾7úG±Ÿ ƒÔ•%ê’–¨+Ô%MPJÛÓ¸aè<‹PÚ^jrÍÌ·XõU_Àà5ɲUÙµ~s«ËÅ#ü“³ H–ž°¢owOŽ÷R“ÑSHw–UYÇIG/Þ¨åF5GuPº’’Ë¢>¥}îƒ+ú0#tÖ…/Ð;’ë)!€‚' ]Nƒë»ÇŠ~Ù¦&;:ßmÅQS©æŽát¸k]å¨ÒAy}çÙ:•FÝ+}²î|TÛÙÍþöŽZï[;Å…ÍÿÖB/ÉòîA,툋ì¯*#¼VÉ–o›Lð€€;ô»½ÛI¹‰Ãˆ»Õ‡†U¿àƒÙìÕ¶ÚºõQ ÷¸“”(wZ§»‘AÍÊœoas¾9æy1s¾9æ÷1çó˜»e·æó˜®¬ù²Xó/jÍ{­wk…=ƒ ÐFæ¬íJþ{Bà¤>2:޼tæïØ4G™#ÁJ ¶-¡Ñ¨¬»ö1:ëq,kº¶Mèø¶5Œo[+;NÄÓsz{³ 뎥áŽÿv vñ²†ÁÈ,k(2—b³=c( wÀÛs¨þAÓy¤4D¢ãyÞÚppMœð[Ÿá Âbâ–äc¨ÈŒOî$Æ!îg*…bCœE0 6= ·½Y¿Ï™ð…þÉúQ·;dHUqW·Ñ¸l­1üŒd‰³ºCç«:<ði°äçä-×iY.†m8'Q5<Ò審†ë»¦¯pD %é–IÍ/ØÐ nˆ’¨D­Ã» žè6BkDïàáÉ= zǡ×1«°±E ‡³a§vJ Js~P¥ˆ~ej`Mú=Å·â´Ò¦”e£Nä!Ó §„?žK&M F•ö<>WÎ:äz–µh|r¬aÙ…aa®ÛD®ÙðtÅr;'\þµ0˜ ÝBÎã½$ÉÌípÐ ,H¸\èÜŒ²mÐ+ˆ‰I¶™35œæü¸´ j1dôË´ùŽp•“ì⚠ݦÝ4³‰(¦¦p72g9 ïŠL"Aœ$\ÖZP+@W…5û’×ssƒ×­m€ E6Õ².A±gª˜½¼……o®+$UýÒ^ö?ûÁ¸„ÖÓ,ñ¹¥ß”kDº56ΨÉd¬’Žñ¹¥^¥w+Þáöƒ)Ããq*_^ÚJ…£OÑVO¹N Ç¢—øüâ“ ¼Šäü4ÙàUºlp('ÛÚÁÓ–æ¼-º¨1}goæ¿Ù›97íÝÎk±í¼æìˆï¤]-í"¿YÛ¹-ÅÀ¿~#&*U•ý¿~ƒÍÈxk:Ác½`q?\kW>öÒp:¢GÑ·f™ûDOÍé`þ^ž£ÎiFaäÔFNç®ðCúg®o¶Ùrçâ0»,rXª(J2¥‘×dFN¥FÖhec6W±‡ÓÇ¿óFZ ?° ¼t¾‚•êÙØ6Œƒ0g#v¤¤ÚkÖjá j•1À]ÖÔ:ʨ>².ÅDAÔ(hÊ:O mΉ¢U/¤>š›§…–ÁÞÅd°ß-ìŤký»+ƒ!t Fdôn® vXzçÙy¸OA9‹ÊKèÙ¤ÊúÜ1DfÂçž©•2Ë;‡CúX£µj2 LXÑ$Ù_6K‹ˆé;Ùäegæ^Dˆ¨Íe1¥c§´'¾S_§Ñë¢tjv ‰çÅ|µ²aØ»Hj=ÌB`>{‘‰ÀR<ŽÍ: ç²1ü&Ÿÿ\ÿ^ü66_¬ìÿŸäYùÿüÒöÿy´Õ?gýWª/7«¯Üõ_Ù\åy’‡W»åÿÓ>;XWÊ;û 1í3ø}xÝú’]â®ÜÞ)€¼>Pûýîî±?Ç[Fož¹ò‡PÛCT_ 2Z%œ÷»ÓC±3¾N'mb¬pAâ¼{=.è°¤@ wã`Þ†cqL‚~¨kïãÁLAèÂm¿{ ü8=¨³Ï÷èÍàÈü_Íb†AÎU¼Ùvýía-šÏJ¹ºQG £uu£ òþ[c\’zÖ/Æ]ÎöÝí_ƒ=½¹…Ë Èžpîöz³1eÞµ^¶=×òvû h÷˜~žÐÏÜ~ñ]¾DÊË7d:‰MŸˆý(,º8_‹bEß}eUà>*vÿaž°ë‡Çúv½#šhwÂrœig켕è’%±Îôj:äµÙT‹Mîc0¸lÕ©®¶"oÕ¹†Å±MtØšçŒ $Çz£ùÛtªJ—ïeJÓ<®—‘ÃB·ñê®ÆÃ[^8T~G·ºc¬EvND“ï‡'Šób|]Ø"ð­Í^Ü™Œ“°N³§¦H A~Jô³Ób-‰A”}`Z‰¦a[Ž$»³^uÝE Ô 3âŸ.#rY†¾¬/Ù¨ çÌ\TÞE«ˆÊ»'e܈eL5¨©6Nód˜¤¯TcÊ4ÚKó`ºý$‡ívµÄîsæõ!R½?[ãÆ›OÝw5øßÇØ?ºYQhß°$tÐË Iœh&•ª™¥Ï$–pͰLs§Å²:¨åÚîhö‡ƒ5Åg𘞗@Yá1•#ÖQ#3bXVq°#Æ&”¢½w)Ÿ‹%âä^Ghþ¿?åq8º¢™*Ï&³ä©‡Ü(¼‡W;h´}ÔÎu×ý '[àਈEÄ•LJL;•ZdÙÑØÞâ¡_<ý\ع ‚1¥SDº¤¿Ýp(aGùÙ%cÎE$â¡ã‹²|Ï„¹XÒñÚu³ÈÿïT"æÿ6Èè÷Hþ_샵Ø~­±'íi;ïdéyaë\>mîXÞaëia…Þ#€*–ZÄ…Ìw§V;a®Ó¯üy‚?jøë䨶êoÓò`×ßvö)Àê6ú@}`8‡ÚõæAQ´ŽŽ:XŸþH¿æÇò2ÿ¤ëþöa­¿ð‚‘ÃÎWŠ‚›K ývý­R¼{î=·íwuè@ë´ß]x1.Šún«^÷áÏ,Æ•´¸bí÷­#ÀëÏ‹üÀzï¶0¼Õ»Úþn }ÎPc_%ƒhuÄo–«ã]¨÷ Gà=#Ù~¿UÓS=¾x0y3,ß9|[í³ÝíDš ûÖt’Ø«µ;­œØôRÖ¢^q;ä·sXû³¶³…±tazÖvp‚ð×I«ãi'ÍÑ—`Gp§Ù:¬&Oz}§Å]]ܧ‘«uV£Éü3;:Ö>?£Ì,Шµ·ü» ki&÷Gë}íØÛÚ²¾…‘^¨(æ;X‹\‰°Òœ §;.KÞW wq¾˜àÿ»˜ÿŸáQ'ÝÀš¸£§¹¦Å|þ”]v/>Ùwl‘{ž—9”è$>™ýô4„ ýäÈuºä2•¶]üð,}œcþ}(ò4vË(K&VŠ”<Ò¦NQ%æ#IbEú[׎§ž¢÷{3ˆ2»×ê)²{íE-0½»Ðù£)˜ÛiE¾Â‡gv#²y¹ôÜeõWõžwV”בŸæè7^jqž_óGU€vXŒJMß>ÇÊò lÛð=Ê$Ïù­Ò|§›ˆêÑmˆÀʽ=Â?Dæÿ¥+‰ÖðK©w×C5‹™1¨¼VÏúý$¡bdÄF;;à6 hÃ[¡5ð\(>ÁÛ®ABrß«D¶v ñÁC… `T.Ñ ÿü¸6q±QcL{8µV@›ú‚ôÓ¬“‹¸2)áÍmÐÅ(7ã­‘ù„f©;Sš5ÒE*k º éA¯7\’‰¾ôŽ0ƒæã˜<¿„o*¯%ÞR½ÁZ½á£z r ôë9ñûTrÏñ…·Û|9~\ÑfIGŰ/c1ú²!øZºÅ¥O”Çm )( +*y(jç)ãü-ç—*m(TA|.ƒQ0¸œˆáÀ¼‹Òç Ö® M í©¾Úâ|Rk8q·Ãñ]´·6i,pmAcÛÈá›"Gþc$Kn±©ZN$­-CÙB-Ëñ5çVã½NSÝ=9¤ÐÜj”#ò^¶Á3¶I‚¬ž3õÚO® ˆ”zñ#ë©oêÅÖ¡Ä`^.Zê•ßß¡tJbÃ-]å¿rÙr”åÓˆáQ ¾ÆÃIìkç­v}¬" G!Š××ñ8!…^ã²½îÓTB dJ4ý4›V)v¤¨âñƒ/x^ôÁÀ–°¼SO7€?Ÿaul ^ˆñ¬ˆUðáÏgPž=mÐ-'á8‹saÂó ½RIPFž;B{l²Ô¡…F…èvd;…Dc b„ËàSB~~ØxarÖaw'¯>}’ùûµ Ojg&´ä#›ç9ËÐ2^q£•#â/¥Þª‚ŸR ~¢‚9½Ñ”&wTƒ;)ÍíÌkÌ‘‹ÌÇH/†µf¹›ÑFΚº"F“•KŒÔ¿3ò/ ‹âàëv`3‚å:2¶<ãri»û9èN ;‚öð6vYkG–,òN Ðq.wX¬å*xX1n×ч¤<øE¢²yTB…½ f4&³þÔR" ?ã«þð Ý{þë_|ßø¯ýgUüC‚V%þSß‘æ‹vªæÙöG/Œ¿KXÂb Ê>^€Ës«èux1~¡'gã"]”¬þâ] ÍQ¾ÜF?8Tå,à±Ö~ÕG*GjŸz’'D/†ðMwæ]}ý ¥˜e¼‰ÕVE—-Ü-”ñ_ìÖ÷JH3%:h(6]œõ/aÀ»—âox“…tLóÈüf‡xOhx”ÿ[ÙK¢BmÉjýá±D ºò—ÌŒjo¹š”±Sy™°V»‰tĆ`‡H[º±Ä0æ£Ö¾½É9²(ŠUüÑîWíÓ•wr'K»£T¡ e®–ÞGó,äÇ>…¥&P†ºÜr"OC8át¥«ùš·±$Á|xS®Ò.:’A±mÙ·å]:917ŽÄ‚ŒýÉIFìôããutj†ßiå"à»e<ÎYüÐý%IFt -0aàM‚šSYOF¯ŸpÉ>籘»ÍÎPóÄàd‹Ì2Á'{ñäî©°Ê çùÜÁs˜€~Ììa±Þ¹ÄæÂ¡ÊœX{»VDñ”ÕÇE)K,&< ÄG#ÁAv[­,ÈÈYÓs&ûaŠ‚™Q©¸ó4oØSø’,1bÙ3õî–yåà… ]ËÌ“ É•³"ýØã%ýOIú¨3ãŽ~/¤¿Ð*Œ¦+ã°Ï'ýäÓ€~ôáœD9­:Üáø.o‡ìé±îí¼ñ\Žúsþ•‚µŽRaš¡‘ôpà^Ä\@f{2ˆßÕŽÁÜšõ-,áZ‡vvõ×3§RÛþSQz ῌHz,™cni}ù!ÿxæ=¦›O–9òÄMl.‹Á)ž‰-3Ì@’X •Ö’—fcáBuS]BM|A’¶^bpùçHYpŽH‰a-é»ðì}G¤!² xΰ2U’7Ø,dGë9íTïñ‚@”:ïN“χ™$j,ã[É‚¼Q8¬šÐˈFìžGbt–¦ŒOy–¿²!|º„Eúo\áBPç-ÉjÉheQ€©=ëhY4wÎRQž´ð—˜"s@˜´BCBßùê݆ Tä’•[Í\0|á±X„Í¡w3Ä„½áxŒ‘°'áõ`vKw5ÌðÚ]m Ùø²àZ$ƒ‰q·33ÖÁI®ôŒA2¹œ/š{PPì,#70Ô’ ¦£Nfí&1´ívÆQKŸév3{Ã?κ÷Ê6´j‹]fsQ{ú2› í­ò‚mK·þ§eë‹ØöJ#±xu½µÒh,Pß¼¤ÇcÕv{±ÊŸŒþÅ*?è†ÎOíÞ[áb›!?'X€±±/fA‘Fd=ïꇻ‰¶e4uŠì¾å´Ù—ÛË÷e»]h7y>*1$ uç!×3ðÒ…ª'Û,ey¬‰@µé}ÉJ<„ll€Y‚¸D¼[Ëcñ¤)âÀa€Y‚@çßñ,Yzöû¶Ã7:?0ÏpÙ¹$´–¥;iŠo¿-,ÈÎì3$æ{ãƒlÇÁÄ=ƒx qO< ÷÷`àâžrŸ¸·è'îËùÄC±‰{’é°†ûH‹â¡†áþ„ýÇ}6Åx¤X˜MЇáÄwÁì>}óö;àø÷”Å=BñÝpFE߯Ê^u7õ yÜÐè7f÷‹3¹G;=g,šQ9o›ÔòS.‹›îgŒ‘ƒ~EâvxÉáøÞŽ»·¥vïæ6¼œŠ~ø1à€í¯€“ÃÎEêilÐHI¶0O]Î 'Ý$hiL v¼:Êä·„zÅMÜ–M{•eÑbÝXtsLI©òÄá|Ê‘|hÝ*ÝhR²ký’ô˜¶ÿfÒ£@ì+iŒƒÚGù4ÚuÃúÃëu½ ß—QUì’Î\8HŸd8Ö‘r(¯ »PyÚ†¾i6X(TÑÊwY|?ÒÅÁ,Ћ{zñЇuäKmÃóÝy„™x墎Àâ¾¾Àb™p¾Yß7à&÷]½ÍMîËÝ ýôÜdI³¥æ& ‰ s¸Éñ2BÏÓÏ„ãpõ#s“ž ±¯<A,K‹|`¢«˜«˜«˜VÌ—öWaRŸUØï:ì€ý­tê…ˆlNçD®Ê0µON@ž¶ò@ðp½Z¢K‹ôgùð-ÃG% þæ©«a³Y€  :°^™;I¯Ÿ:ã]¨f º€>ÚÎã8î +$€Œ¡@ð“+ú[v§ÚW,y)é{=)!¶¬’çÇç}.JäÄŸ¸TL¿c§AߨÇì¨ïú®À!æÆ0ºx%Vœ¾´£]صŒ‡£TçÄpzg¦×fëtõEþ¯ ÎE‰ÂL¬»hÂ7¯_›È * A€C'ª§&š&Æá¢éM+n¾u¥›6bKRÕóˆ;MÃaÔ™­zE’ÑÃ/b4µˆá“ $=Ò›Zâ<¨µËË·çn_L¦A0Æßeð9ìV¤ Íù:qίü•0Ë^ˆå£–ÃsÒí˱¼™—°€Ü|½U=«Í©Æ:å­Æ.õ® ›Œ³b8ùëB\±Àq¬Ïµîz»‡Çö{‘7êþmøÖnø¦òºÙ~¿»{,d •{­ Û»áÈ áDŒ†á`*nƒî]C»Sf ãa/¸œqÓ`€‰~0…•¯®ÃÏÁ@¶1˜Ý^c «2 Æ$MTTÀzsïY#7_ÒLN#¾Ix¿0ñ΀ ¥‚š„¥é˜| ‚‘èöûb~N'âK0VI]/‚þðK„´˜û€å E¯;› œ ;î߉àk8ü`%æë!õ†apŽo'b2ëÝN®f}»ßØ)“1íá˜õsЛÇBÑòÁÍ߯¤¥W2w \Rß©Ö>Àô—FÏ*EÍòˆÀ¾1²k ¡ŒÊÍÝò'±©»Cˆ%¶°™»êˆ'±÷ò‹p¼=SMíÂÜI†È¼©ý¾vœämï×`Äœ$4xLrC°(ÉŒ&&&O´v;§­¦Þ'¢ «í‰·í³ƒõ轆ù׿ü(O¿;êö>>/ÿçåõäóŸ•òÕ#´›ðË/þ~õr“~¯Wù3=Õ—ë¢R]¯n¾ØØ|YÝëøcó/býp‰=³É´;T>öE¤”ƒbWiƒÃ]ú÷òü/ÿÇÿú—ÿù/9ìöÄQ[|P ¿ûËÿÿ«ðÿ¿à?~þÿ²¬u:-ù'ÖøáÿÿéùŸ¢ïÿwØnÊÝѨ”?ͺÀ¯§á øË§ç0Š•?6×+¿Uû}óv÷ª;ÿx€¯ó‘ëÿWÿ¼õÿªRyµé®ÿÊjý?Í#÷ûÓ­ÖÑ)l~»¼§Urâàhë ãv‹&üÃmX*awH.7ðö ¿;K¹Ü=nKÕ1Ž`WfñPkuùI\2®I©$µãÚ6Þð͈Üç`Á¥•4TÀ5`Ë™B»pÔ¿S·¢’aui÷=+Ç+æÚcxL`g)ñ欜wP­=2ª‡gËàJÄ~xFǹ)qŽ!‰K÷JSI©‡ª1I#RN2Û«e<ü¢™ oEÑ„Þñ ~sQÐÏò@7ëQ;M«±ÊÜÆ ÈD“:6P¥€ÓÌ{HÎÀÁJf–&¬ßLašÄƒ%š5kLžó"ËÇ¥B¢Š¢¸ amÓù ‡"bÓšð£À}Š9Â@/éoXT«Éævò€HsÅ*ÔãtÙmák8-šßÕþs8À/aëÙQF =§0à‚(!NCˆH€c[ði†ò›O&*"ojg±¦‡Gódͳ§ðªçò¸ö(ñ¨Ág8y&Ç+èM¡dÿΓÄU‰§…¢¨,Ù4Ì^–µÐº´WFó.×s \b èþ¶û¤«Ã¼¤«›®¾ Çi³]„ÂlêêèVw ¶Á<ó¢yÕE¥Î$’0¯º°jð­Í ÝÙŒ“±V³¨¦J A~Jô+Ðc-‰áxùÀôM#†ãØ#a¶;!ù2è`òЍ.CrY‡Î¬/é¨ýñÌ\XÞ…[¿bI mcPn d€5Õ^yFÓl™¤1¸=iôWö!@@‘ûFí‡|BW@«ImúgŠv–؅Μ]ÈîýÙ7Þ|꾫Áÿ>Æ>yèaçÑS†à¬È`#¨$¡s¶F÷Z 'D3©TÍ,ux&±D[iK—2L`Xö ÓnïçÖvG“°?¬)>C@ÙqÙåú8yêvv«à!7ËŠ–•!¿#vŒ79± {x»E'–¨C¹»Š*©Ì_°D‡á¸¬-«êáŸK¾Ë ¯Ø|kû¨£sN¶À À#ÐÇ8GÊshªTËEdGcû‹ï~ kÖ¶5 ƘýV)Ý"â(ë}!sÀzJà‘0R0ç"q‹ÐñEY¾g”ˆ‘r¡*–å‹Ö*¯M3ià•ø;•€ÙÖ-¥P²lmXÓ•§jqÓÅ\„ý~p Û7]}3*oâ1íîC›Äqt-™vgÌÑ\1~¸të¼W†oÇpÈ?Üí˜wÝì”…#S^ßYçzôis‡ÏЇ^%_0CPªŠ¥¬ f}¾©ŸsßMn‡ä Á±Ž•g¤ fÀÞÿ˜k&rþ«µÞbŠb™#@ùI Å0Ò1„‹J¥´¯+rÆ øÕL÷:~„+è²GëÀ–ÛEÁ¶lEe/4E'¼¢4óNi‘mü(“U‘<½ÛjÙÔ‡­åŠx±Ù£Ÿã@£¢¶›.ŠOØõ÷ŒÛÊ^4ŽÞÖ·k ³"L^ã¬ÈpE6;J¤ Ò…¤“„Œy»é¥¬:Þ¥o艽٠Ç,¬YÚuZõf»¾á†<¶È.E2Md#[øg¦ÈQ¦=íì~…e‡·‘žf<8cn"Û«&Ï6±%c£ kU¾Þý‹¶i½çêE.V´šLÁ¿=»ZG£èä [d'é¢tK-J³Ø"½-²™·µ 7›’v¤w!ZÏ¥XZ'˜LCW¤o‰4€DEÀU¨{JËŽBœ2Jc{6·ÀYTÞÊ@òeeû†&±.ýi×l®±M¬c!¨öeˆ‡¶ÅúMX×ËWÝò9´d j?ÃŽ~˜Òæ† £YIoô…[¡±Slj5^ÆÑ¤ÁBy¨ Ëß3Õz´ß“ !ÒU"2>¦1p¹OާÇ.~xF-&ÏLljPHjì–}^}ºRl¨ä!8u|+›±&y$uˆ+¯ŒJ±×ÊcÁ± ÿ·×9ƒŒ±,°Æ1#sλ­­F-'ÖX—b{IšŠèrÒBÓi+jÁ±v 4Uv;­ÃWøðÌnD6/«»U6Oå„©ãüÞÈÑþ½¶½¸9}Õùís¬,ß ‚Ê^@o æ;Ý„bÇ(4À[Nj§œØÉ”ý°`†ÿ×é]LHQûÊ_#N6ï¦hW„Ó°ÛÿÉ75ãðú³G ®I¯-M£åe„ÁAýÜïß׌0üÒ"æ¯RÈñ­³Â:æ/#7Ù Ù“§„¢«Ì“)Ú‘\ß±õÆe ZáŸ×&‘ªÓHž„Ú¶7Ò“å7Óƒ¥¹Õhr0hPȠŽ£Äy¤zD\•Æ_èaGg¸õ¶GgK:ÀÿøkÔ"™ »ÛQ»º`^Ö¤_‘[’t´CˆP§P¨’ñy寴€·ïèµR5Z†Òf?ƒK´fBk÷¶àˆ§éç½lƒGp“Õ—yÙ†zímCíîÚÉc]Ö’_ø+¡¡¼AÏxg$Ä)¸ºâF9îp@’RáÇ6!†!ÈÚ¼i µeAõ½øVß)=µY’MľRì'*öµøÉn.¡ô–`£$½<®‡òŸ“ÑLçP³ý¢tØ ûk9ÌÊ+ës»KÊAKÎmë딼÷LÞÛ²“9'ç~ìœÄ™Ð° Ù‰¹;Û±ÜÔœ‹xÈ3OBâèÚa^>bì½ÒW<E<±§HR6bOQá‚¿ÈCç"N,øP©ˆb™ˆM™K¤æ!Î’Vp•†X7±JC¼JCœø¬Ò¯Òãók®ÞO¹zWiˆý%ÒŠdÌBÉ«$Ą󝄨ÈA,IòA’gƒ±ÊA¼ÊAœá>ÐW9ˆW9ˆW9ˆW9ˆ¿}bï2̆Ä*ñ*ñ*ñ*ñ*± c‰ ?« Äžg•Ø~VˆWˆg•Ø|VˆÓŸUâUbñÃæ£\e N¬¿ô&ÍÏw’gs•˜¡¬2Ï}Vˆ“ŸUb Âò×\â»áŒ« Äñg•xÁ¢ì0Ä*ñ¢M¯¯'<«Ä«Ä 6½J@¼J@œð¬¯ËÆV ˆW ˆW ˆW ˆcÏ*ñ*ñr ˆÍ6•úƒª?WIŠ-I±{4TFǦò0fÊ÷»Jhük$4~¼ŒÆþ–¦„Æ…Â=—Ú*ÿ±gò`šÉgW‰’ñY%J6%ÇÛúó$w‰’Gó2%sPÚï9K² ìÏ’l#þhI’͸?«,É^ˆ?t–äJô^Ãüq²$ÿ¼‘ÿy kù{Éÿ ­ò¿>ɳÊÿüK?:ÿó£­þyë¿Ryõò•»þ«/Wëÿ))ɘùŸ;°Ã£dÝâäÏ; Jò´sŠÿ«EQ?®Ÿ¼Áï[PvgNŽV¨²Lžgžø»Ësü ‰œá9^b†¶KJ)ˆB;œ>·›UTVŽúœ •¾:‚ÙØ{Á…Xß¹÷`¿lžÍ“3ë$ˆQë8{Z²OHÜÔy<Ÿ1ûÁ/1°¯- §'®sFß‚=}!èeÙ†úãTÿQ•E`"ÔðÏä¤ÀHò£Ýê„_ã âiæ:©’ŒòjœîºP®ÛG Óq¨ÃoªdN2y'VnœÊÔaá?Y-25¹D£ÓÚSYó¤üáæ| 8™ ¦zÊ…ƒÏ¹Z>_ÔÙ¶b#˜ΡÑ, @3ˆ'-Œü@³ ãfÂWI¡Ò’nR5±dÒÍJ ›ó îØÍ4ÂIsNï*`âñàÓ,—nÎÊ‚[;Z{-d{8%êøJQ¤ÙÎb‰‡ãK¦ 3¥WYØyw6¬,yÇJ•X¦ºÜ¾:ƒÛX]WÈM :Y•ŠÆ%HLÙèP¥M’v½%óë ¢ µA_fPã5&ÆaWF —øŸþn"3/þ ÓÓaMΓ9™²º+ðêT·]]¼íª¯íj¼í …šNn™©‡L3Í Ç@aUõ‚ÉÄh*âïoDˆ?EÌ.Û´ý¥;±Wè4÷n`þ€|(ˆ:V"æËBý¯`“ëö¿`Ž”‹@!r ®×ðYå]ñ ܈Aw›¨9ij™@7PL²©,y´êWÌÔLÞQ4Ù• ¾ëÐäønÎ1¥.«Û<, Âaæl¤~JMý•yÏ2y“•çÔ»1<×ÛB­Þ'÷Œ§/’uY¯Dߨuêk)yb¹qš ¦-"¦)¦ªý]VGö‹e®Á£EöÌ5<'³°÷¸ùt6 7SË$„i‹®Ü%w6–,LA%UÚÒtÚíÛâ \@)8o߀3‰ ;¹ÊëfžóJÿ ÆÃ²©Þ©¬‹ºTîØj8ÛÕE>jݺVˆÚ†ú1„ÜŒb#"‰ÌíñÄÁèümÕ7ûøR­€ª‰1û¼sxyÂGÑ&jP‹öec¬ñkà÷~ Óoa UoÍØŠÄ!Ÿ îPŽÇ÷4_À_¼|—q&&Û‚ÞLð¤¼F@•„; y·>M}ã£_x¬µ]4…B‡1=ſґídÃtžï‰SÇÂI™¢$¿4GÞéÊ?†PæJc_ŵGsî’¿ZÀ*F£¤v27§›W'ÑÚekfBQ%SófêÆW“ïFÿ³¹¾ºÿ}’g¥ÿù¥ŸHÿóX«ÞúßX_߬Äõ?/Vëÿ)^í¶þ§µ‡q›[µf›vÕfk¿mo¬˜‚yÿŸîñ6›¼µòþ»…rðóºîÀ=Jú»E?M©(NVÝQõûÖ¡´1üÐ]LÖÅ·Tѧœ…I DóF“&Iáiõ=[9Æ€* Á(mú½Ç$SN¤)jì%대”çÚ‹Z׈IçxtR7Á á-R Ô6é;±É°?# ȈönÇtœú>y—îHØ%ùòá‹JàÞWWa/ÄË%y³‡97"k‰$ÅÓ•m0Çâb8ÃDøò–¬Kù&R†]±&Fc–A!D„%Pѽºq#õ[÷ÖÕé4QcSƒaÿŸ¶èÛœyvÉ;å;TŽQ•\'©ð¶,¼oÞþœ]£`¯Û@3=ÄC+Špµe€Ýìr–ÕœNLÝ8)а”ù 2*Õƒ‰¼X÷6"[eÙöc)­&³ ¯¨öš¦ôRCd«c¼Í5ö®¹§Tùí=ÀD<‘ÊïGx¥òû9T~[‹ó6÷ÅÆÊ᭯䦠žÕT¯îÝKrñÐ-ÊÑ%Lˆó"$`¼·Ý¯¹J±©ì/>X]yž¤ôöèC¼GGD6¾+Z[»êˆ3>®Ð.» ¾†S©àbaæ2JχŸe†Îþ#ãg%ø©!‘¨DK„"ë~²ƒ åCîϼȑ;ªýx»ÕËÙŸ¼«2þÐiiÓñ̨Cp@ÚЄˆMñi þ°V uF_˜ÑF}à}=§³K}S øªXÊ\æFx ÉQ¿JŒ_ÆQŸž|ÀL ® a•í'œÑ†§’ŠÊæ3ÖÍ*ö€-ItÅŠýÛ!´  Î}\®–ˆ2÷j–F—¦W1Œ‡¢"\;ÃtöK8Á+` ?ò9p…l”oMb2¡HÇ&¦HŒ›ÜÂÙSÔÜ0´jwwz¸i—P[,-Üv?;%¸H"_»˜RI" VÓ’:øŸA_Hýk¤;OPÍËòÃÚµ^+…·³[ÓÿkŒh3—^QŸ‘P^C4ÊO¨ö÷ÅuùÚ«òç¾½›iGtNq)½,s¢eK»ó>Õ$^£žn>˜ýÖn*zT@m<„9:%Ö”Â.éÞ¥YäßäéÙ>:mvŠhýp ô„ÍóäNî·‹¢Ñî´vá7þ«ííVøW•~Ö}^Zl‘Ùjc‚9Z\1fÿßvSl`•ŽC`=Ÿ1 ߪ7Ûõí¨¹Ú@GjOA}q³Ÿr£v¸½ŸÜoª^TÅ|Ø,f¤1ÒK=ÑJƒé¾òjw­é±ÊeãVªRgM;Ókã¾Ì)¹ý¨¸í¦WÙp«€d5ÈyTF0HDÏSùCæÊ›ªò=ÌFZ{í71lDÈH‡ÆÐk2ÂfÒLo} –7¡ä§s«ßò¼¬ØáæôÆ@–©ÑÅŽ(ß:ßvø®Ï˜=_µŽ·šæŒkó\¼ñììƒám[¢;ȵ$ÎáA…®¢õg#0RNíëä0廣IØ¢%É Û,Òî^„«Y«4Ï ’ÇGßWÑu™Þ?Çötv†ÑIÆ9ØZ–: ¦´74BÈ­ïDÕn[u¢LDbZc8‰Ù`b؃áh„ç™ÞE$ŠÒ7•&¨)›Õ”Hòáå Xv‹.gKb8BËÒœ\£Âl¦ÊoÞàlàío%a¼Ù4|’‚&‰ ,c3˜)lÖ[´ìŒ`¦Ú®Çò•V@o1y]¤Dƒ:%²²4ôh"¤BH‰ jµ×TŠ0{Pº“õ6_À?¿¢3<þq‘§ÉžM¶¸Ž! ãŒk BÊ"?©øÞj´+±£˜èQ$W}új‡ >Do,(¾x6ËM o#d¥S]«êCFвØ`¶j,:ƒ`ÝB°ž Ij”$.õR¶>èÊÔ6Õ\¬ÞiTñ™9¾;Þ>7­>7úFtnfì°êmSVócÉ#¨ŸŠY¨øÅSPñé· âF¿x*>}**¶EmÙ®žH?„*×Y¿kBÁkÕ0'bÜ9ZðgžrB;{˵·lžXÞÚxãÅ×çyu1bcïðÆ)à{[ÃÁ4å-Øy™®Fõ5ކ¦ª^ƒ!HF], -öƒ‰q{8áFƒ§¨3g‘¯ //Ùâ"y»ÈÉop†l×a¶xÀH|% ò„µƒ¶c22F¸ñ™@ fEzÕQ&âül !Óq$ "!%$Ô‰äžëw>32å<àžñ˜X%Xë‚Iô»™p0Ï m“œèÀ—Ë@ñh+ô#¯ÖàmxeWòÒ/JŠ‹ÔÆ%]J™6n)¸R –ÁéVÙ‚SÍ몗Aot'|óÝ¢Æ/ž¥f‰¦j„c² ¼ ‡Â:>R¼¡¼¨MÝeË{EK Õ¤A\:ÓÆä‚g >›wÞ¢Wݲ”Î=AºH”Ç"ܢטü”¿iM9a®»á ÕFÛã–cYLÉ#Á7n§­›ãóM×Ý–Ï-QÛ ¤-z¸lèò Ã¿ÝX‡ŽY¸ð1æ-Òº¤³]r¹þiWžËoò¢ÜʬÝzã'‹†ò̘óöŒIŽŒN†@¦xxÞh2ÆÊM¸T&bëI:$›CŸÛc…±¢±k§–"cÉ]DØ:9¡*.p O¼¸—Ç{:Ö£:%~ªààº@±˜˜wëâ)z¦&(i~Œ à@xãÀ?ŽÐþë«øoOó¬üÿ~é'òÿ{¬Õ?7þã«—ÕMwýWVëÿi^í¶ÿ_û,çõûS^|«8ŽÆcÄqLõ¿Kw°[·nž³\R¤D£ ü3ÅK­}&ðÆOù¨)W¬(wA|£Šü…Œ %M8‘OTÄ"¾x km¢ùi?¤Kt¤ô@@£îxveèzy^@©œîd ~… ût¤“Ö- ÕEÀH_ò)Hù ²–ó•rƒ>AH";,!åþÜn^‹¸¸Þ4‘‡À¼Ñ•àƒX Ú¬äó 2áÔÊö9W»X Œ +ûË8œNƒ2E÷úј L—š’éSó@.IE¼2„eWEW.—i "N^ï¶…Æ8i„ãœêŽË„¡LpÝŠŸZN“©Åš/…CàÉ}DÛ¾§tH0ñ—oç[÷/b=ïöwŒÉ^m»Ãi¤ŸÈ(<«=û2Q÷b–µvcè¸ñô\cè˜ýôÆÐ¯¢kÀ¥Í™A–ÌnÎl›'GwúÂÒ($͘ãö[v´9QÒ!ݢʆ©ê†v˦ Q4(±»öæ0檼Oã÷ìFt;}}›”Õ)œ¬~ƒç²¢§ä8©LBüg‰ê¤%Ÿ§Ò–´Šâzæ'Y•¼<ÙÕ2 J*©{^Y³Áñ&TýõX”û•usä‡_&Py4t'>þjLõ6¼Ã³£PHxlÇl_u5<þjL‰_%v˜ {žFK<¯ ˆŸ*X¾–$Ú‰«_Øá+Q5HÆW)šé$^ão;~ÛK\¸qãÄV­ÓƒÕ24áÄ—¡ôw¹t¾wr÷–ä×4cœzˆ^¦´¾t§ÐmO[dÚ»Úó¢!©&{3éGÍëEîš”bU;ío’Ú{µkþ »&;z¤Åj\ËA~"›y‹¤R¶„ƒD†sÑ#¢•«}שDÆ×Ì 6¿9+ø9vn6áû—ÜËìKÎÿùÑö~Ûzi«ÛûÈêÆd\÷Ÿê˜`öuT9~–nì–ãÖ‘ÊÛ3ɰ0ò”ycüý\¸°MÞë%€’žœù¹9Ö˜9 ¼d‘edƒG»^ÚœÌ$멤üߌÉ/)o" Sسª…‘eÅçg¾”›î`=d€C}`kî1]“\)É’ÖRÖ¹J›®åf,qíØt ÓJ1qFÅOªH›WmíhL­ßrϹÑJ4¶kŸ}+[;ÛþëëwÿýÕÊþãiž•ý×/ý˜ö_³úç­ÿêæfe#ÿýUeµþŸâáÕîÚ}È)E[Æ(ðÉ©‘…Å/CøÁà“Á,—HøG ¿h$wc²”,Ÿ=ž»œ§¸®õ¤÷ý9ýÂÂð+¿Éü7òÙàUza7¼> ‚Ρmt„ó¢k–çKRŒN—d¥Ö$ ý@?·.Žfé⮤Ì©x/˜ÈÞîšñã‡sÑ5²i—A„ÚíO†dæ'—œ²% &½q8R¦1{2£öûÃ/hqÂQicô§¥¤¿X®RÆHòîc­)ón _ä9a”`8föý—žÛ¦‰žœÚ.îÑ€=Ui/<’€ýå¬GNœ€ÁílÚÕ=Ÿ ©²-å©ié‚Ùª&²W1S•Hpl± ã¨lfÊâƒ9£KnѸ^ື~T·ãz‘ÎËRª£?h4ææ9µ\Z•_î+âÖ \OÕ}˳ §ÆÞqþÓ®€ýaãQ³©9@{Ëúz áG=â[Œ´ÄkH­i;ÓÂè ý÷š¨DNÒF™(Ü“ø€¢a±A+’Š[­è$2{ï :J<ÂòDþ2t³? …*'‚ºÕí÷€FbKI!! ö¡ yšf\K‹W,‘Oœr£O“hÍ®\“+X0<Citg™ÐÙÃLÿDRš`èuÓNQ53êâÞ3¤¦ÒÑ€}0(ˆ:[މ[™/ÆE˜òbtŒxíXç§v$'\·IÖΧ{¾–ˆ­ÈÞ”WI=$ŸÛÚûGHê‘`ü]¤õ@öshCjÙ[“;06ÀþvF^ZŸŠe™@$7š†Í™Ó…d²mOMâéJ3Þ£x_ûÞGïŠ7ÇÉ¢“8 ï3ƒ ¤N1aÄ5>i:k÷™´'ÁÞNüòkðôþkpÁ„2©3rzÿut¯ü6 q5ÃWï7ÄÙóæ˜P² wõ~Ã}?Ôìì>æÐgÍóão‚ºü€[iƒæ¬R'ÇR[‡î2“°º˜PÒÍÉydõ&-ûѼ”G& ÄìG™òHßÿ|7Éî›ö¨¹BáØGÇé¥;ü­Òq¦ï”žº--m<9<—¼`áÆ­›.ïÜž`ïÍêä°Ûã‹£ðJg+_ÏÍ•ƒ×ò~ O¡˜>ZpTä5NŒPØ3^xQ…¹ï )öœ5É8«ÿЇœUf¨Uf¨Uf(ý¬2C=„˨í3J¤Ä¿Iû;ì.PÚïTêsõ]ÆÑs/;‰ê«êD RÕ‘pé?¦{¸F$ti_þö†³þ¥º˜Ô®¯‰õõa^º{ŠÓÎüš± ¢ØMÏf%7ªÄv£ëqt|‹.ãIÄ7©D0ÑæeíXÍø€B|Š©³`éÉì[ô±qôº³I2˜)‡ÙÆÿf¾1àµQ~èqŠI<ítÆ‘n—l¯7³Ž†ED8:+ÏÊ¢‡Éì™ûÏêºìMüÅŠøy ÀšG­ÃdŒkô:ŽÇcä©¢DTÍ·* Ù¼|Uºx v™€éÌ_”ÓžCÊL`{vF0(Çp|zúK–侘û6Ó€Ðɶ˜"Ì\[‹¥ã"hñt\ìÞB9¶îá+¢ˆŒi¾âi»ÌÙ5ß³ý…[e‘4_žÊÙÓ|½T•ïåÿa)¿x¦‹¸£Þ¶aI’xmj£å8Úáh¬{Žkcº³£Ta1ÔÕ5åŽ>å§na×" »Ç¸&ÄŒµŒÃä`êŒhôŽ¥‰I`n4}š¹·Dn±Ž*±%æi·ˆƒ†9?ñ˜Ùæô¤¤^ oÈ*þð9 Ðu Û!»|cá{iìíµ2M÷ÇFT†£²7Ú?/n„o˜ß#€%,ðmÛ{²ˆùý£…þ©"öz¬ûLI†~óÍìþƒí:÷îéñ‰3˜Ë=¹üx!{µIÛ=,Ù 4«Š:f¶¨ÝWǵ|úƒÎûTI†øcPL2p²ÌRmæX8Y€Ò’-œ,‹,ÛØéq´ÂY+üñ^ZáIøcñ£Gé›Aç«\U"Eoä†äÑáÆDºRÊU~fà Ægkˆê=D9œ:þYÆ£›º>ÿŸU·ç“Ï’Ñxè˜Ä¡]ûህG¿rfvý#y2 {•}'ˆ°“ð͘¡ÔA 9‹›ÉpØç©š«ç©=«f `£‹$•sÄ*¢3‡š®ZMŠ·Hr¹Ÿ¯êIÂÆ¡æü –Ž×˜¬±¨¥vLì cáÄþ˯-c°¶(hVˆ½],Ž[,ÒV<ÎarÃy=Ï3-5`ZJWU 5OŸ¢°hÞ0kÆ™1Êüe#’óGHô„Gô–³HßFMÁFl9¤( =a—Œ)øã¨©—È2цˆ+?oàì(†vY:ç'%øJŒ¬H¶6ÑÈÙŸKÏ«È1Ô6½1Ô^Ø´¼¹H¶LØæ~L]­ÿ™|7úŸ—«ø_Oó¬ô?¿ôcêgõÏÕÿÀß•˜þg¥ÿ}š‡W»«ÿ™cý éÂÜç×Öyl³éZ"'ärz¥Li#—S2µUÉá@ûÖð=ÒĺHRª•ÈDD#±#²ÂËGo«š'v÷­l¦„ëtš¦šyŒp'ÞX-F¸“l±NuÒyÒH'?y€“ÌÑ'ÜKþìú©‡Šâ ´°D:ËLj­’ ]_³HãU_ãsüñÓ•06I¯t0…GN~™œòR™ö&ä¼ÜJPÈùMƒ ßQÆËÇr`|=Í"®Q†K”OL‘òæüCÙg+M âפÄ@6j»Í3u)W‘È÷)ídve¡¢ 2ñCº"ÅaÝgS´¸?’ô6’"=^™¡«Qù¨U6¾x\O!FÇ…a֦ޑYq;Öxo!/¦9Ú¨¸ËÑ\¢˜×‘éBÔä`‰è©¾Ê©%£áVY2Ó”f;ÅSà3JG^µµÙwÝúuÅ߇TñÞ*Ê‘K‘Dhh¡§xæëÉZâÍÚÜ2›·Ýdð•rôbf@FâžK”x"òðzfm¡ ÛÙC»‘´QE³È;j0žäÃÌñAŒSÏõ±Þä!* ¬¹%|NYq¼'`Eu?Y£íÍýèP‚y“Þþ1oÒÌǺÿŸT¿—ûÿÕýÿ=«ûÿ_ú1îÿiõϽÿßx_ÿ•—ÕÕúЇW»sÿ¿Œ|âÜðwg_Ã~Øßý2wý)‡ÚŸå:¿]ýa¯óåQ$í~ç>WùëÙ/ò+™¯ñ««KüÕ%þêu‰¿ºÄÿ>.ñŸêþÜ·ï£ÀUÉÛ~‚ÿAÊ}ñ£\$Fuêú‚W߀fÚmºÏSBÊŽÜ«ÕSô@¾§"ÓOT¼ÄÂéDSK,ÖJuìj¤³WbÉ^m[sîG£ð*\Xmo@,km­uµ9­ûÖHvý¬Rª?««$ä*ƒ-¾:ö¦·v³`'—²3`c‰j¦NŸú;ý£åÞxàÜÂÒÉäžäÂö€¥¦ŽIÙ£…2~®¬[ßϵV'e·iAÌYÂ5äö-Ù5½kÔúÇM¸æ'{q$¥~õS?2Ì‹E’ÌÇ•æõ™°4­Óõ“°*Åœ…)Z›"}yŠGX¡"a‘ "¡ÍùëT<ÂRi«uÓ7+ð÷ËäUOÚîÙ£ŒVó·-?k†c£—ôÆö*•Ñh JÅ ”˜3H:¯Z³QfCGÅ×jœ?ÿÆó¾aù€D“8ÙŠúê%kºKÕ ¼¹äíß2ÊIco'²¯$qf‘ÀÇîØPvaàØ•|Ùî dï¿!½ònHÆÈù¶¤J5Óž”¼ÄB4.²0ÃûQºì×z2µ‹E ~[3ÖC"Í#>úñR€Ä»2Ÿ°ÅR›¼I¶ P¼È¸Å/°oû0P«$÷„Rz+¨Tü£\‰ âñÊÆ:½]MU§Gúß›ëàÓ?¿ýï‹+ÿ§yVúß_úQúßÇ[ýsÖ¥Z}U©Æü¿66Vëÿ)^í¦þwÿíîÉ9uG[EØuOø×9i0ë#ø±Û>ª5áGwRìÀjãýZ«È¿ëù·S+Ь?Îñ÷yJ¸g~ñÁ©ÞdåJÞ»+[Ï÷¬„`µÑ8ì£ú÷ù]IêÞ’^jöÄ-¤ÜL#50]Hßµ}9·H<»rúŠ‘èËŒA$$õ×LWòÿ™LCû9Æ*œäGúÐÉ1®éõ±²¹ó÷kõ9-«(ä"e­ ¯aúÑ<b„[”ê’Q7‹Ü~±“gu9Å=Ü—é»X!¸8¸Æ×f‚öŽ/¦!Áˆ.Ù/‡³‹~PšÜ„WShÝÓ›!§à9Œš—º5L8v7âL3q1Jî50#®¹ékC‡‚1EݹŒ#©T꾎֊[ùך\1äãI¥°_8¯À®ˆ *ú¢#¿à‚±TÄo÷[;JÛw…Tûf­­’H"¶.%C™´LáÔíO†Ü3N˜nvªÝ»™©'4¤ß}D¯Ð.œ3¶úxÌU1žÁš£sÌáFÝ0}è¡ÚüØšb;C.Çôj3·‘i–âªaRT0Ÿa…ŠWñÏ*Ѻыþ°÷ÑŒÄ)‹ó÷FJ9š1‡` åŽ!‚áaÄñ%7êȑ;bÐ@iÒ Há-)ãŽKN5Ðí÷¥^QB)Ç"¦¤‹åȳуbmšcæa)‡“ߌ J“/ÍB¨”ûŽˆæÍ¼’æŽÕ«7øg>PÔ)" ú"qãx>eY,å.<Ù]v)æ+Гû#SBÖҥݫ½°[Smq‰ºâa” V®Õ<"œxËç‹@;¯”åªrÉB³ý"W½ãíß2ŒŒäC˜†Xó•×€¦•Ñg•×M7ûr“e5²ûÃ>á/èfxý÷•&‰vøê†óF á¾5;‹ØÁä$Å"Ç¡ä¤å‰GÂ}¿m]Hç#fE@Oèİ7u& ¼²mÙ‚;š²ñ]>žùdö}lÈVË„6à6Å@v­]1u3Çcï`"¸Õ²€á˲,æ˜î—’4 ”™ÕÑésÛY`nㇼN–¹íøæ6uV3ϪÅñäqÊwüÊrö2AÍ;†¹g°ýè f‚qŽcè8Ö1cü):‹YÄáˤâŽKÅÇ©TÜI¢âÎPq§Ì¼TÌ×i FÄJÓ5f™D)ÌùÞ‘¥V²¶ç¤ †fBj(L›XÕï‹UxÛ½茔 5³¾}¨YD o%ùÀ 7ø?12‡‚öín7 Š"p·&n#H€ù‡%·â9Ì„à¿N)ò= ¾¤VÖß»Q×½y"­˜é8âºV8'ÕØ0v†×ºó:‚g0…ÁŽÊÃNN^÷þ™/jôóîb•'!º †é#XW”GÑ3ÖÙš }©Pää/º,r‰sŠ}Nm>ª”Ï©,»v8è)c~]P/Qô‰Þa wbr£R«.’<ëXíDV[f:IÞ…€¹²ÈNòlâ-T…Ò8b›}A¬nÜ›W¸KÚÒ4õD4¬3 Ǖڋê2`~ßÞ”pÆÂŽY˜7‡xguŒƒnbfSÍ5ÍÕOŒ)[–«Ÿ”põŠËšèû:‡Ä¦n Š7%ç÷ óû’Îù÷B:få´_"íX”â£Í$¨KÏùÏy™!%ϹxÎMâA­á9X'£n/X„€0üJ¥HêÁ¼?¹ŽŠvõ’ÔHWÉËÃ/K´Ã&´í³’QŽDkÎè$Œ R@ân@Æq‘7†F§+ô8À6€ÈSÿG_ÒV[Ô‚ùÅ`ûì@®”ƒªWÌ`!±£Æä ʰ ´Å››Ê¢Fy|³à„<r^`kÿ‚uÕ¥|ˆ‰àÜQ¼Q¾°¾-ßl^x³å¢›™TŠår¹Ø|M•OÎUfå!:X^Êk#Ôº_e]â8rÆû®¡õ£<$MwžUIÛä‰;Ó~Þªù7Ú¨4Žëgü}‚?ÚÛû-ü}žf{trºÛRýöÀHc™º´–©ïÕ[mlb~™>‹L€i‘²ñ=G3+Àëë´;µV‡£"nãÿý"/‡8P¶Õz'yjkØ®j•*þ¨ã4ϪâwUü®ŠßUñ»(˜Ü¾nP©*ÿ¤~ò‡*ÿl¤‚Ù šMüÔ‚!¨µaâj#x±…ØnUjø£žg »±…-nU±0vc »±ÕÄÿy‹!§¡&a¬·+84ð³…?è6vl»ŠPá'~›Ö©m´žÂB@»íýúÌbþUð½y¿ª´¤0Ôcêb8D‚ÒÜÚ'uü°Ûøÿ?Ã_´©êÔN9Cÿ¬ò¯:ÿ‚ʧü_¥iÝÂÀ/§ €ryók½Ç±yCÿ¾¶…oòû4"}ߪ&.k²K7;ˉ /cH êá60±äfvµC\rð»É!pjÇÿ^•¿uÐÈxÉ>c¬V_û'Þ.±Ö:¹K èY P·G f,°ª³¾Ì ÿ(©×ÙFéÏës«³çVg«s;ë”q>+¿†îé¹òòáFŽo!¯•SµYuc=”¡~ÅZ¼¢&Ã^O¦Áhb3>½W›|Šƒlü¶± p€€0µGGÇ>özy7èÞ±IFŒ‹ü²Íe÷=¸0ÄM÷sÀéÞ¯†³Á¥q¼Mæib8Òš·ÃËðêNf5¦ ¦×_nàøô9õZÃ/žJÊØMUxÍWNesÀè¢Óµ4¸P…¤άéˆc4ä­)Ÿ“ª¼h“Q?œR´.|Ó½~æ2Ô¶a?4•7¯2ô]wŠª+¨‚˜B.zã—¼|Á«[4tüxÝKcjhÖÑ 4è÷ù6>Ì&Y£|Ž»Ãñ%Û‰Ð={YÏû‡zGõï¶û5¼ÝA-‘¦¾@T€{ø…5òrhèÒ™Io~®%Çñ•™f5þ#€ªmzf¥¨Y[¢q4Î t?e¯5î3=Ö ´@JÐ¥6¹8Æ…’°*êÒÑ fƒSoÚעޥJë|Á9™LñÆ_DOå5vÿ,UòoÖ9ˆìŸo°§f¡êki¾õ&Êæ®ÇÆ‚L4ôâlA;«n_ôº“à5‡N æ¿™)ƒ]v®³XïËFåm/çŠ@9Žvm?;öÕqÙ^&îÌŠØQÙÄ®c·¤pÛJÀ-^܃V<„‹#tbVÙ«Qþ{l”£cÜR‰3rQ{Æ:h(„. qÀ'I±‰9p(ÀTV xNß¿o›sÛO¦9Â*îŸÞ9È$àcÕro:dµ¸„Ÿ$!ǶÊcë[S¦%)˜–DCÂa¨Û±P=<§Ý×F~ð*êh'xCˆfŸ“[à¬b2»P–hØ/jñˆ>¬íI ÚHYâlÉ1ñ‰N([u §m)¹Ü¸Ž÷&I+à£Üͧ`þ*=í½Õ úõœë%¬Ê’Õ”¢B²Q…½‚Ï=*|Ž\$ÔDRø­¨6“S>šOÿzðQ±`ß³áô†÷1êN&"WÿMTófXêÈ4&òí4a·ø-¤7Rã’vWÛy’pƒ*á¯Òmõ½.œ.ïÓá¨,ruj^~uPâ0ÀÏY2Ë›;.78´²ÆÁmÄLEЭŒ\—/…ÞÐ…BRš’Ì9¥²—há8FÚzôï<²äfŠ+†/·xZiã=l£[ôA1bê©dŠÄBúM¨–ŽI]´:oÕòáZDdXTwí]‡~¬æ’t '3n\ëHm›‡%‚o´ƒò_ÌÅÏj8ªG½K8iÊ ùt|tÒ`291QÉ(6)C4oã3·—¦Ï4@ÎEˆi5–1Arsv¾)l'@Ÿ³ÙD8èÓQ`ˆo“¥/U JK­!¤EóI¦ZE;\Â0Cžè}ñÆ*•”Ö’öŽ9ïâÃ-B3&ªHO'" ŠxüMýá9xJm Á%Ý€Kl,òÏNŽedú™÷êà1s4¢ÑšåÉea§rLØâ‡#Ÿ.ÈLEŸ™z–}V†ê4™ÔhÚ|ÆIù|=C<Í}ÑìÃÑ4ÓÄ­š™ư­fbƒ^,0|¬ÃW–Ù JÙ¶‚ïŽ[{¼ÞO—ÛåK ‘¥»…gÙéÓiÂ=ªUR¶^x˜—êÑÌ2ÃF¥’ò¬4†UTõÎ2Íwo^_0g¤¯s‡¾ôçÒRôµy¾ï9Gª_ólÛ¢¡bì hõ^ܯ}wHÂÜMý×:îÞé=Û4¥55ŽæÝƒàë`S»/팛ŒÜÎx8‚SÇx8»¾ÁsÌßÂ[u%÷·¼ukÄ Õ¦½ó3®/ªëÖõ³ÑN Ǽ¡1Þ`ÊLäJg&´‹5ØôJž>^ùr† “ØWSQ ?÷poØÒùG ¼Ù@–û:w ðñ :‘úÝ¢‰ 3±±NöÆÜ¢‰ùW¾oµMšß¸ :r©…)©=í.»ãKÔ«lÁ™6˜º!LÕõƒªnT1iý–@ZRñhOü}¿ËkMsl/£kÖ’õ…ï"É­Ðq+ü¾¤R2vå[JYl™x­Ø—>îÎ¥%†¢V!¿=Crîɹ3$óCYgU]F¤ŒRc&]ž³*3z0ó Äãùž ºÏ JÝ–'7¦ÚIš§øq!RÄ•žÂ§÷O×r̰r”I¯OÖåkÒ¢‰4W±…BXÓ2B++k´ÿ/£OæN£ìá¦ÕC©¶ö5RIj·R†ƒÏœ5°Ï•F•7wÞúËâ½áÄ®_j÷ÿ»šb<#¯Íle[f9žÑŠ7¶1ôüû™;ÇóÆZá.c Tä$ŒÙ—NHKƒW›òÕâh¦Å„îÞ w–aŒcQúQ°TAzè~w|ÒÏMwÀ.9Ókô¶{=§³Ë ïj¿rrˆž£©F¾PY'•}å•òv¿öyOj‚Ñšr8! ý]æ0Ž@ˆ>Xc ‰ëáðÝú'N˜‘kFôSÎ{*9iÈÅ:×|AÚ-å –N±T±ôvrl#·”|%sÃõXàÉžª¥*ÿxæm.9m‹·µ¹ÛL¼U6+R6Ek<æoí [&Y_¾oébÉ$-0ѳ¸è¢8=ÄŸÄÃìYÕÙµ«ÄÞ½Õ¯U­ 5=Êt¯/}1½A/t0'ŠcŠFýÊÜà}Øÿ€²$åj»ÇbTÞ¬T1ÄšÕa%ù¾­zˆ&Ã…ƒw.å}‡œöÍ"7–D0è×ò¾…ÿñºp)^ŠðlBVÑ é3™þÃìåÕŸu&àØºy_Ô`.:Ìã«ë©Šé½ðò–'ÅÈàáºAMäæõfN»(!áæ ìúV6…ޏܮàŽE•=‹PÖI-]»âª¯¬Eêq…¿‰çVv<õ¸GèZ£ªZ'¸¬ÄZW5aÒªd}žÙ+Z—üõû–9ÍáÑÓàé—á°%ï)aLÞ‡žyò‘°k]ì;¶íÊÛs+몾T?Š ¶cP(uR vb(ul”æU¶PB/šÊ‹¹©¼HixßL7ÖÙc/ÕÇM”ùš;jÕßÎZßþJRb>ýxéËОÑÈÆZLP™I>¨—­YßÝ ¶© ¢Ü~)ZÝÑ–{ð¬š|cÒ¼LEõ~«vÛú½íVÝÎPUN™ô”¬‡²c¯œŽÅ.ÃuG:nG:‰ØtœŽt܎̯êt$=7âü›ªß2.”s·“牘 ×,¿íÖÞÎVÛéêo™/Å*¿'nÒÞ•ÓI öÆÝAŽ2f [æ›ÙÄWRÅ!å çLÔ‘|»öÅp&|GseÛji[ò¯e·]ò§1…³‡>2u›ñÿ³÷®Mm$KÿàÙØØØçýnìËúOÄ’ _ÎxŽO„¸!lIØÀ‹%Ô@{„Ĩ…mžç<û9öcìGܼԽ«[- >s¡cKꪬª¬¬ª¬ªÌ_JÌ>ÐL9n{ƼËÚó™:z Ðo¢àÜ™u›å›ªZöùæÊxè¬0¹l˜ò)Ìâ4ŸµÕë|•¤Æ=±E:¡Ÿ‚vüT”AhQÈäABÙëoUÁõÃ6sÎ:êÙŸ údÎ]ˆ¢ ÄÂ8 ðÂf'Sì;HWtK€uÆ©`e3£ˆ÷é÷~æwä¼€2ošMzÓl††hˆS–]S34É=Ž‚—hlˆ€ àBiJß‘;7BE%g¯±¸[zÁ.±N·é<9s:5ÑmˈN)“9O„ls¹o¬£lUÇY‹]Iê·Ü‹½·èá»Àb&ìGBf#îµÞ‡Ìå_!NJwB¶¹—ŒºììÅãfI¨åáãÓ7ÂŒ9&´‹dGM‰d\b³éÍÀí šð‚@ΠuþK×.²= 9ªÙœ3G¡S`ãßuYÙ zPæ˜!çé]²ÍÂKBQâž°Ù,g^RÖ­‚Öܦ‰?áÄS×Ó¢’Æhˆ}‘®V=½ø\]ÁH Ê©àïãà—·Cxô+Ï0äá¯'©V=øZí*E+žÎn§gñй›ŒUØ©Q2Ž]moˆç<2…©°JhôTŇÝåù–ìòÌt¬¢3cÔbí\×$´Ÿ¸ï´5Ûí>…¬|8ùØêT¥£¤ŽÿÃÆ*BŽW§­õÁ^sÓ5ít¹©Íµ ­f–V¦«”¸*­ò-Ì7ˆ¨7Q-3 ©{ãÕâûÎt,O<°©¤-±"¾n ’úíøb”£;êçôÔ%­³WÄ&bŸ®ôOrITDŸàQ7O²d£ÑãÃ9ä=æù“;báÌð©xÕT™]l“:_4½ͦ*øÎå5ý¼M]^³Z:y¥ŠW—Õç¶ùÜä3{þõ¨.g©|×4°Ì¼kÁ¶…aª*ýL¡5!é7„kñ 2f”ÜÖ~±òá÷mù¾}º<¤ÒJ«¢Ø¨-¡åbó¤Õ…jÞºA$s¬=¹þþå¢]÷PÆÛzuþOñ ÊÍIÓæ4íÜ4 ›'uîõ¼–ÁŸç…éœf£ÆUËMÇ5âdŽå—C5¯æ×öRWJkðÁëœ øcƒªM¦bÃK°ÒÇœ›2S@««.np À³ù¥i}iÚošþ͆&±a“ØÈ$D@<•”nÈ–Í­ffœã$ÑÅ¡Œ¹jy"»ùz539Ÿh²9ÉN2ô’ÆôfæmH`[4QB9È¥e"êÏz”ªM%¶ƒ/›ŠDS“ÈÖ«ÕÔ$²/©±JÖª24 ÑhÿPj´(í Fû‡{ŽöM}› {‹f¿`®Ѫ!;—9|nçVR¥èÁz£rfRçX§†ÎRðAAO~ð»€eòCvjù!0¹peñ/½ Ï!›!ñaã$pt/ ªá´¶‚táS;“ª­S!ú §rÏ`6Xð?ÔxŒI–g‡ÔFÃ0;û®eÉ-c“fäv£iS‡.ÈØ¬È’2/’ñ´™U½»“é5£“‹è,2±GÛ×ÖRq&ƒ_=ÖZ–Šz7ÜÊK!÷®î{ÇpRÒ¨°æÕBƒ'T±³Ú™ íâ Ži&Óo– ÏÛ@&o¥ìâÖ_/n‰),cL6G]ÌdŠ›LQd–)‚–™"×8S”²Tm ›h çh+ßJSäjŠà Ø–Œ¸Ó[ 1±þmõi.HÝT—ѯÕ5ƒ²ÈÝ‚äÝX=M'™63þí–•(Y|…­‹8‡–ÅPp8àräéÁÐ4ŸŒéDaôˆÅdð  Ü–‰ Ò“°`úŒ…;™Mpp‡¿Eè©øá¤=Š&7¹þ¬ò)V&®Úœ5xïâk`[´ïµI‚V‹AËCeÕT˱uôJjKzørhg˜ß¢Ê úp[‚e<\ ‡ÔˆÐáæ³€ºß£¿r æ½Üê¹õËdÊôg¸œåÆC—Ôh·h¹@x%™ ì%}N»¶¼õ¼òšQÞ!33ÃvJúLäñ¦ ù²Bò¶ÂB‡vÈ>õf9ì» ýìQˆ£Ú!%Â<ËL±Ùa5ªm•(tü4e ¸ÐŽ*u…Sηz+á*¸•^V5Ê+vŠ¥n“ ¼åÞ3” Ÿ÷vÞ©ºäd]¶‡îJ­C¯Ï4»qCä©C¾šàã÷K4ÿ*{`4¢+{Æl“ºýk‚cÃõ{wŸ®&£!E«ŒÆ)_[ÍÒ9AOü â@9k^¨”œÝî+8aÉ‚cÌN¸n6U·¿ßOV æt–Wõðv®Ù•¬Yœ,xé,X ÖçÙè ckÕ:¬U,ºen¤cp·Ì ̃ ²+¼26žžõe%h°'2ÎWÎTãš±oÓíu7ïz0¯¶Î%¾ 2|,Ä67+bŒk)è3&s#„o˜8Èr¦™ÏšËšA–5MÛæú<ã$1ÏlQ°@>/6Èž8“BÅvÛ±Û-«Æfã…g¹h}ÉJ‘±–t¾Î“K¿Zoܯ¾h6Kâ«äÁpÑÌLa7Í´¼Á·œx[¹±I†þCŽ åo,®1Ñ #b àäËÄ¿ø¸Åx>"„Çö6Ñ0<–mfÝÿ•º+l`ÙÌj 5 ¡¸fÍÿqç?ïÜRù_äÌÙ‡!'(ùª™ŸM:ʼBãhO’UÍ«Þ'ÚÑå›ÎÊT͆=ìóR©mˆé” ­¦C+œêЩV8‰C'›$ç|×jKQ‹¥ZÜ,ÕâF©7ç·¸1§Å9Cš†¤òzM.Ä8>ÏÁ‹ãKçjòS£‘{ã(ì¡ûz0ÊÞ33B?e¯„âܧ셉P¼ÿÔ ¾ãÞ OÇRBëd;‡+A=Ë5Õ: ú,TSêÖæš¦3 T;t’£¸ÊaNuâNM¶~Aï3~L‡7h2kæOfdù‰®›Ãý™?¥qƲ•§o‡ÖÂí¬ñªê:Ï3J[06ÙÆ²¶{ÎÿLåËŽHtGÏvÖ!ñšò,42v²²U§n4Øpy®+…PJßy˜ª‡¡áɲêÌüñ—7”ÛÈqÎkð]Ð@± Ö\>lÐß&ü ¨°íbS eÙa¡«ðx㻢}š1Ýò 0ïmÖôæòc?0ÔõŽ߆6×77ˆR¤öÍ(r 4 w7ªÊ9¾'ë…~þ^ÎUžwRžwçiÎŽãÊn µÙsWÙ]DgÞuæÝB…ùe‰¡‚<θÁ€8å­iÎ^Ðåë`!¾æñÕñ£”à«ï=³_._…|}Uz šc:Ç1ÇgùI†å' ±\Xn7û@DZç¤ãEÆçdÞûÕzã~Ͱÿï÷6ˆA‡·PЦ—¢ùsÆËå:î¹!zy&E¾óKOýn&Biqdׯq!wÞÌqý~¿Øàé\æŒu}íÉöž°ëkßç»ÞøÃxÀ®ÏJR c$¨,üNS²1=Mè]ÐS×AN)¤TWø÷»×3Š v¿>[=^¥q2^½¸™Âgmmíåóçÿ}õòý»Öäïôà¶¹Ñ\k¾x¾þâes]¬5ž?_oüM¬=B]2Ïm:‹¦P•_GÑmZ’]1‡›"ô¿”çù?þ׿ýÏûÛ~t.úâH "üíoÿüß„ÿÿø¿ÿåH¶ƒžüˆ9þ_øÿÿô’üOæ÷ÿ–ÕèV‘Õßn£i4ư÷ûíp±ñË‹µÆß›ÿùÅ/ýè"š&¿<@ƒŸû‘ãÿGÿ¼ñ¿þüùó¦?þ›ÍOãÿG<<Úû‡½ƒCX’¶aeéoÓ D{k».¶Ûoû½M MÜ|„Ûvg{s@±šwUXã:úxÙì`Jüû±GŸàï>ž+s`c´ökµ;E” W27-…°ÔvZäu -΢ºlŠzèúj—b7š#‹tr1ûŠ@²(óÑeŒqY¾$C†Ý<'_VqmÄã1h·q\ÇÂ5!ý~3%“é8‰ÄF<ý5Åwuëíd4™FÉØB –)ùWt[oEg6\]eb¤v|‰)~hƆ^ÜWWEÿ<ESÑ’šE ¿É5~4¢Ö&šôµÉëè2­» ¶ßÚIY‘}ÆÝ!»‚{£««`êÒšN£»PU:oÛ°¿·©³dTDM+.¡*POS"Ùí=;ÇÖÁ!(?â}o{³ÝÇðº¤S)ÇÇNEV¿ö*² µB€—OmY"«YüQlßßNo&)!³¾á‡ç1¦‰¿å,¶vb³ :~ EŠè< HCÁBÏ?C/:b*í•Ø¹ýöæÄ`n q©b¥îÊ: Ô ŒM@|ÓÊHÞyu§"Ã)BHå|2ÆéÍdLïf“hÇÉ%xåa í Áð:à’° û êWü—††¸«Õ®àÛ®ü¿rƯ "Çüz'³˜ÁlaÃùù–ð*èf y­*«*/[­…Îê Õ(æXz%ßÜΪf`Ôwˆ7b©·ôZ{Ddx˜XÔ/^–Ž•Ågm8dž•ƒ¢êÞÏ­ãq;·})P̼tr;='~ÙxÄ)ÈÏe.‹ ÌÅŸÚÕ×^?,1–í+öEF–Ž(âz¿@ÂÛ´.’LC„j ÀW «>‚gW²tSm 39…¬€@FãK„Íæ ÒT/²³„ãžÅìh2”a ] žØ˜_ g³(¢( aŠ4W% ,ˆDqÇœS5îg™0Šð@B¼Y ÌðßgÐ*†UÔ\RÁMœžéBÏŒ'Ü®>uÅqx c…Cm.ÓdϾbèp'f7t„[rºŠX§„j ^SuÕÚk¬»ŒÂÛÈã@ôõj2ŠýyŒÖ(QfÔJ®$šU=䌒v .‘áøtÅÜð‰G Ö2ÂÕ-Ä5uìÉÊóê¦*ÿ 4jƒZ‰TXTJ·š?…eY…V_\0¢Îg≯…*ÇSevJ÷‘çp•û\uSä2ý¹ÊÝ E£!df›+¯|…ýaS˜SƒÎÇ9¯p`Eþ\…UØA­3‹¥Znp:ø×m‚ dZ21_ 1~¥iØm MÛú Ï@“1»oz0p G6iwðH‹S)"]ÕD)ßRý±3àR>™9j¼½B¯bö¾k’Ö®G+£eµ$Wè°´yÊä*Si)W•'@õ ú#%hÁuô­Ò€ŠHúŸzvCô¸)Ñn˧öÂŒp™p½;žMïê2V.ŒìÔä:ºLÆÑôŽ9(Tèߦ³û‹%ÛFRo¢dê¯ÈZîÔlcÓ±Ímv`ÖëS{Õ¯=È&ª«&hïÎöÑfb s.èç#Ô¤¬JØDh¿£ñ•Òj'ÈFF4=¿ÂŽE;l "|ã:3ËïJ}ùعo¯’ö¾¿ŸÓEÉ…\%hFçчº©e8®A×Â]±Øã*®÷-5a{ÔìJ@òбÙEZ¾±©d´µ_Xïr‰RN„µ“ÚdTÿËe&®<[%­â¯_¯Èí­0ŽœÔZ‚¼ ð&´!p„ÁìQ`Ç+W5,ÙXKDYL<6)ë_ZÜŠÙÍäÉ-¢e†ŠþX6 Ri¹ÅÄ›‚­Ý  kÉ,áÐh ¨Tœ lB8 è-™ÈîDátEÛô@Å’"÷ÌÁ Æ&ŒË¡žeyÄ|ß,û±ãOD­7(¿èd A÷_“4V£øÞs3mºï3Š{Ö(î=Ò(Îîóþ øçãl;q÷žÆ1Ì‚qÜ{€qÜóÇq/o÷œqÜ ãý}{çÖj|KçPí¾aïƒÜ]…ÂöU’NEMP°÷·ÛdJÛùŒ(döI¿ðXå­I<Ìì†l “óóÛÜlá\zž¡H¸¢$ÂI­QJíAo¸¡/wKÍš•îr³ZëÊók> Ͳ4Ñ›iÛÁ•_­&x…ü1| º:~T=Teï$®‹ôR%3ˆ½ÉÃ>;Ľœ¸ˆ’Í(«’_œ:©úäo%9h¨0µ§ì#“ŒîV±½º’Ø•¶b. »£’Ðü™t¨yèdêôÖʸףÞëy‘\¤È^Í›@øÈû;;½çuz/Ðé`νÞ{È^ïýà^ï•ìõ^^¯÷îÙëÝ ù½Ž×V¢xöV½†¹ÏØU¡z`'ø% ÝŠ¬RV’ºÅ e‡r )Òh_âá—þòO IT¤93y;T¤ædOÉB=޽rª³­‹Û)®ZY2ÒùWrj‡“‰-þÕ9û·o¶=½Y/á͆*~/"ƒ–à XåÔ¡"éHÛ|kü"èæ‚gÔ¯tY£‹Ù„D*ßêwtZ4‹~Çò$ï_ßþµü¯»É½yˆÇ¾|MA$ìËÜÆ®ÍÐ ªny½oõZûÛÎÝa…¡à­®m-¯q„8Ð/è›s3¦ÊîLÎA¦ø‚²ø2pã`°û±.vzûØÙÞÁëÉîî êP™6üØk¿Ý(P¶Ð]!Œ+¾²Üƒÿ:øþ@ν~ÿÐe2®ÅùlØh¿íî×Åöû>Bitzð¥¿ß¡;ïáOwHÚ+ºÀþ´× pcûôž¯ïÜŽÏù쾈%>t@~M·:­ýÍÝ:þÛÝíËtÛGÐc]‡‘©ûÉ j׿=“äVý„Òv|´ÝÛè´Û°»K`q:5ú¯×îöÛ›†`k£_GG÷`åP»ÎF1Æ!™ÅúvY۪ƅôxŒtÏ›?˜;Q{—òo ÒIÚ@t‰7ÊpÖGcBG¢–I iU¬€¶KTß¡°fÒv¼´ªlq“\ÝÈ/}X²^XòM*y_¿Ô]²<:Ñ*v_-Í.šŽ¯å¦á§ïlíbÂîÀAPPÖ«lÞÌÜ`!©ÈY†›¢^QldøŒI§çÔÛBš–ìS@šýüÏU[ÖÈ”R`dÒ,?ɈW•ŠXâ;fЙW¤1—N'íœújjüp›œÿªL«A{½™¤iˇ™À¸CajX³G¼g;3ìu„7ñоë Ó&˜$gÖŠ‚Zx#WY¨u?º}0'×·×fYÂNô~Ÿ'¸y3)XÕ@Ïv XC«îg”K½gý„<ðAûZ¡Wc‚²éÚ°–©º4g©Ÿ÷°Š ý¥ëf9ýîØ³aÝ)^uC=¼G‘ª ŒØ^œÙ7ÅL9è[‹©f6ŸŸ*{ÕP·eC%ØœEÉ(Ñ8ìÛ9P×O¾Žë2Ôð׫8´3±ngÓ›Q2 Ïm¡r¦‡{¼áÂîŠ7 ñ7øÿÒŸþíúD0ßnôÛ½ÎJ£ª¾ö–õ½oGÉছîp1ÉT–;®¨â7¾Ùcs¶°QÖ2®]&®¹À 険1†:¾îÖñO•¶tQ梉ŽPˆ<ÒT,R× ÇãE*s؃M°&›6Á ÎFHÍvèH›ð…éoEƒ¢™ã¹RˆŒú'ƒ²Ž•ÙCœ½te¯ƒ½°[‘›S&ë  QBQ(Ð_‘q°[E¯'L]ƒ5!Ãë0•Ì&ÿeÉàïÙPÀ¹©Aâ¼ÉVd;z'n¦ñ—drëÚOéÃuÇMNƼuq¦'³Ûs«b“Š›N&3i7ê/l«ßUŸH2Ѱ×g?lïñM[¿™§ö•ŒE;8;ÑØkFÒaÅKÆù ŸV°JX3²óv‚Ubh¿WjߥSîpd©Î%wÎðW«ÀHW.ëäÿ 7¥æØª›7âsç^â(žXáùY¯SFŒ:hmZ¯ !Ý$X TVìÝZw¹Ë&ùtKkRçam_ù6̤W8Ge5y']AWËDÒ‘ÿ ƒÛäÌc™¼¡µ0 5"Œ‹qe¨0M;œ&§f>íÌ0 Ð.‰AsÎßyΡù&G@™i×uùj Î á,ÊôTáçùU°kÑvjñó÷FMô«+7´óvÝÑÙtÚb6ŽPíͤ†ká8BÏ“†Éê[[9™èÁ:wXçd5X IüÙr¯Ä@îÝs ÷J äÞ}rcMj=Þ£Æ{¡‘ܘë8/JŽäFc~ìj8C¹Ñøþ¨ Ô˜OX5˜”ÌNÝ(œFLàúfà4ϯϧÀ¯þò8þÿ¿M7þÿÏŸüÌóäÿÿ—~,ÿÿGýóÆÿóµfãyÆÿ}ýiüÿˆ‡G»çÿÿ¡w6ê°jî¿?!wÿvçþì¶3Žÿâ¤@EílhX:û}ø­ˆÙÑ(èÑo|úá ¹ê?„{¾$ÿî o®5 òO¡c~ÈxÅ,³½îO4”pê—<þL'r]òçùÎ8ÁôßI…k]ËY¾òÂs—BJ‘:]µý•w•ˆB~i2;ôJ0”PFÒ{‹ÒœCæõÚ‰A(ìŸ_Ýb ,n’&–ƒ*º¦Ÿ@†“Z vzì–> 0ˆ±tŽƒ5'M,ÇdU•йaòxUR­Ë¢¥ÍÜd:»š°›­Ì ãä®Ë<º9½¹ðf’ήoG³D9­²g>ۺ⒂,âƒeà–¤z´à¥Î%šÌŽH{Êÿ´]v‰ó’RK:1à8¹•Mãáí¹9¨µ:ˆÜ€U÷œÝå´þÃk ÅüF|¨íÖ>ËñjóÃIµ6¨Ñ?µa‡ãá/2Nþ8 0Náa´ÁÜ^z-´ ¾#e¾»>¦îç¥Vn¦»…U_–ejƒîËè¿ìˆ`«»†L•Ú˜…„Jº-“£ì„[øIñWUQ~=ÉTr»eûHœ/ÐåäòÉåEyá€4ú—ÜeÙÏdz¢ÕÖïf:AšœØn²·lËÂgYŒG¢Ýe… ÀÖ»TÉÛ±ñ“¾ÿ ˜šnxŒ(@·.<¢Ì¡*Œ\mASˆÂ+ÄÏIϧÉ2;Á´³x4ùºêÇð8’_a%Ц à¤M:oªN£Ð€šÖùT[ò¢öàˆ¿q0cP-UŸÙõ‚œº±²Ÿ‰KŸùd¿YŽ&#/z0¤Æ$4]‘ª¿,“vÍc¼€yÓö|¸¤CS¸‡ d@ea¨¡Ðî•ÕT># îÌeuÕ$µ¦»ýa;L¢'Ë׉«iXʺYjï_v­!G²}çá˜äÀ 8d4´@]¤Ñ]ЫFŽIØ#ÀD‰áå’i³‡ ŽAÁƒÐÖ2-  œL%Òž—$g-5LM,!hþ®ª¸t7’“ í`†¯¯iy0z0š'A‡;!Ö%Þˆô·é¬²’™„²ó”b †%¼F˜Oèï}V¤E~³ J*fÕÅŒ¿QN4YQšäÇÐ/lC‹7Š‚œ ë.ÍL‹%Ú«V@;ºuó”P‡J;¯«•Ѻܾغ9á`¸õ‘­?;TdöøÛy|3ÓÎ寄褓ãkÜÂË««zi/ÅÐzÝ®èJMôçÜ#Œ4Ïcû–­ƒÞÛ]wb.fr™±BÐú$¤!Ÿ·k ™Ù¬;¨á—ÃÅ.³À‹ï^.NV‰Ó–,û&Ž(‘‚ãò‚¶Ú´º¥Ãþg\W/ÖšC½ÆŸw¡¡Š™³Ê£¯ʃ˜%x2£ˆ8E”èYFÙ ‘ÒÜA(¥T’µS­ç17‡©DJÑpVbWÂQí¸¸Ý-¥ V,%¨¢ žr'.'“¡„}»Ž¡¾.òŒnƒ44`’‚Bw'_cÈ-ÏÂp Ï<üÐhÔºÞX¥síü‚|Sm¬m‡Âo·XQÚíÀ"{Fß4M µõ®Íí0 Äîö­ka ëH»ì•†;yê5œà haS¼Ù™ÁØ,è5<.C“ä4èî”Yt”ì¤áúSõäFÙõ9îªÕ*‹–Lk÷R q?>at"®ê4)ƒ?f’;—ÀtÍ3{ ‰ëµ‹ûb˜PƒˆÈVž¨Ý‡Â)}]ôô*àÓ¶Ró¯“ÑDž1€úñzÌ8RY¬ýé5žÔƒ”‡€\*KÁðÖ0ƒU'*;ÐÛ©Ô÷¦ð'³»á>“<0ª¥·gÓ0lÙ=Óøšña12>ã¾Â©™µ’¥`ä½hCOÁ†ƒ[êd‡ŠŠ¢Am’/`«0ªËU5§xÖ~`pN $‹¼ü•Z•–X w¨Ë©Ö1ûa­BU³ß„jÀGã‡òh<£žÈiHµóg˜‹ÍñO4²D䙚sކLYn†ï¶Ë²/«„Ù§¸è1é¤J“H–¯'À×9ü ëwˆÏ ]U™Â,2$t Óh¸ª8‚ÒCÊÑöÝ&gœßèÃßw㺪qj˜ðìeƒ~ù~|§€­ø"ºÍÔ¤¢AGÏíNk»û±Òî¿ßÞ¬/ñì¿T‡vW^7ªÏžQ£ðc½‹{:î9XŸ\õ ÍX»DuF lH µ+“&î‘gùl€ö×¼^šÑ*p†~Õ–…9 ;’óÀuïhaâM¦“1.E™!IÍ}Óh¾¦9c«ÓÚ…5ïKŠŸ>ôÖÄùt’¦¼|½™$ã™ßTŸË¯Å«°gÙ—x\ÐnØ0ÀçF#+<²äõ×¢gi{À¡;>}MÆÃÉW¥Ï…‹%$`v¤³ uóͧÛ}TUúr$ä‘0ÞÛi‚×{Ñ8Æ“ü@åèSÖZ‘-7o/PǪô]Cþ`vZymÐrA:`ê¿ ¡3ÔíÕk´½ƒÆÜ‡ JI`½Öí?kæõÿó×¢›œ¡—¿ßã²1ï[½ýH>¯ ¤j Cãùÿ…Œõû4DHu×l„ öž@ºŸ¥òÊéÖ¾uÁõI–z!4 dvµ ñå4Žf*Î=üìvÆ3)-AD·S§ ˜”CLèÞMü(™þÓð¾Û®p] t,D³²œ+Š~z^fi<ŸCã¥G£ñ"C£±VL£áy¹‰?ghÔŠ˜ñ³q__[Ëxù<Ÿ€›^`£2Í¿çxéPžpæ‹—9:Î2Œ£;Ýó¸gG9Á½‡¶­ 5„3´z˜‡ch¨ëGØã+Øüb°;AÊ6!—Ž\øJØÕ~—îÂ/ÇœˆŽÛù$Ôb#¢3˜a¤öxÍ[$¿ó'ƒÈgZ õkœa͉§IŠ7føÌ:É9î1Øpåjrž[À…L¡Ý6d<‡±M`ét™×XC¾|ž7K½| í'Dît6½=‡µ¸.õ.i;r—;K­â©¢oÄŠ–$µa×Ð$D³Iã¹…ä/%+ .$ªQHe͜˥±M ¨»lÍ×ð6¢”ïq·WOÎú|‡NǸ(¤xa?(Ü›é„7Uf,R!gð³ø<ºåh.ÉØ:2¶…¤ç "!'žO®ÚD*¤sÓýÜÚ Œ’ëdZ5Dû¬‘%ÕU¾œqc`ImX0KÔðn‡B|œÓù)­ƒ#73ǧ0%_Å£æƒ^íJ«C‰ˆ¾#.øD w Þ¿ZµHúP›64sÑÝo£½‹»hÖA…«êCì› ïq” ÃÐÞ™Òzƒô #ì¡`;¤e§‹@϶©È€'·7/…¨uë‰ÆK¼…k¼´³ûÚøª˜×wÂŽã †ZánhÜ ‹ðíZ U[hXÛÁ*Ö±šÒ –~X4/ x··q€ŽÆÐe2YH}ÑŽøÃávïJouþç$P|J]¨$vù…Û(v9Î^—É j³*Ýæûãº\uy‚@ÿö·ˆV‡QW ®þ´C±ÐæbÖѼb×1¼L¹ŽÇ†ò1£4Øpdw¿Ô_²â¨A‡›÷Ò<¯A«…r³Ä”å%þh%ÎÄšu­Tß“xa©tS¸ýaÕŠÏœ‡æ´`{Ic"ÐKnæb0b^+º’Ùƹ bs¿2hXd—¨¶ðÛÛrð_Ï3”дò¢÷1'u\¾yË0]?†ìÄ c*İ“,ÝàÈHN<6T Ô|,2×4ˆ-fí“hÔ¹ð`cºSeM–Ád¨¯ò¼'Bàdx>› NVËŠCŽ-P/²fý®¯$ÎÕp’­X^.Ë2"sfÏ®gM™ãüƒo˜JÆ}„ÒŸÔ |€œºoƒÚH6¤7“)ž`{7٠œEç¿~Åë<‰mçbmŠtm8-}‹”A媭’w"$¡ ̆u+U±8dúâ|rsç!MFÚ¾‡m°ý^`”M Á‰{/„–!S7·ò‘nÚê½Be`WAÓ壒ۿâE5Ý¢|†´µkJErAú/ßfø|àQ‹™ l¥¤Ö~®­%NøO+ƒJàDuÎØ0‚áÂa²‡‘¬ ø¬k:š94::>1H¦Ê å8h‡"ÆÄúé=ÏÂ'™š»{ÛkNÃK'ñš$ùÙ3^Råwdaf ›!ßñ­d14PhsÃ*k€ç²Þxîs–\ê]Ô/z³¤6šª! ö¹ 0ùlG<¬%JL\¦×¼¯ÚÝ7›Æo™VYõÞEGËÇ©·ö³tR¨ÕԆɜzRZ¡]íÿªKµ½Û†ÄÃL Eš‹É¤Ð¢áë¾úÁ ɾ”r°½Š{¬œJ«zwДljγɪ%ÓN=p Cׇdl)=„Ýúù YÂ¥$’7yV׿÷(?ŸÚ¶L®¨~jñjŒï §†“ñÒ,_¹|²ÏtØúv_$3>ÚfF ÉBÖóˆÌœz¨'X@O$›†…ùø‚ŒºŒBÚÊÒçvl1åDõÍ®Üã²ÒÀ²Tó»[€µ^ɽfñ_¤†´hž8äÔ¨Hò:®èuø§ï=I#Œ?$$b7mùxŸctøp™¹}! â>ÉUÛ_œ6Gq4Eƒ-ڤϦQzEjÉ8ƃÎhæØ¨¼fÉÍ­WÍB½C†tWšò#±^ç%™ë×ùG)ÉV›ï«&{\—Õ× ;šo—ôçGÚù}>ÿ'IÇÑøwƒÿó„ÿñƒž'üŸ¿ô£ðoôÏÿkÍ þOãåÓøÿvuÕ³sØÝà%×V»ßmua±7ûzƒÖÝ~CDçéݤ“ƒ®vÓÉÅì+[ÿŠ^"7ÓÉ—dÈ'b!H! ¡‡€÷ÑøA ü„â59—DøÑÂÃÑWðø…9©½¾ddyÕN“ ZcF]¶•Páp ³‰õ)Ä`žP7£èœy†zë(‚0g¢õÀ:î•ä­— ÷zq‹C²’èŠe+ÀuA9üVÛ{¯6]i¡éšã1Ôþácž• ³š51Y©’êQÿ^SwyEy²¯¹»ÞèÌàKþ×Á¤¼8%p­Õè£èôò,ºþòð‹Àâúß‹µWOúßyžô¿¿ô£ô¿ÇýóÆóE£ñÊ×ÿ^¾|Òÿ~ÈÃ£ÝÆì´Nßn´ö?VÄ ×êbG:ˆ£X‡uÑê¼ßmÁ?xF…æ@”w7êbc{™ŽñÀpóØ:Ø2*b@•\_mTÃD­G+u@jSí²~ô.Â Š­øú:¡ent9Mi‡/Ñ0ôxòŸ±› #R»lBï¢jÐKâ!™è)Ÿ«…5ÒšæÜvä4-çû©ÒvŠZã(̹uâíý÷öf{ ºh†g´aùa1…ZŠʉ"0O#YBRÂçÊ& l &‹ f¶6*’6adI¬Ì㊂Y¨ó«1$”‹£wìVdìâÉtòqîÄë7MË£Zt–VZUúç[U,Ã>`Æ?ÞUÕ¥  e© òra>öë¤ Ôñ˜‚¡{Ø^±.ra‡4”!üÒbGa$r27V~ÂL˜ìyµÛ:vL“ë#{ 2 'Û”zÎð¦†ÁÎ&·ãaJÝ{è:=D—ˆ©2c’‹Ñä«ÞN)ÚUHûkAKŸ$@AÐã»!©ä4 p„V·_A&蚊"¬A#*Ýåu1ßl2xŒ*uvô0Èøª¬^ü7n·cu_€£[*¤@-JùæQ…V´ï†ˆ¯¡ô!3A_Œ}1õæOéÝõÙd”à=ÖÝO\;« 83-!ð LEŒK€@ÁŒ€öÅšàO¸ï¤«i‰9z΂‡–R“ÑöÿHTP,2OB?S¦I7ƒÚûÅ™jfH‡…»L96hŒŠbTƒ¾Ç©•ŠÂºPqìíÇ„±‹Ü[è‹ Y5¿ÎÜ€ntZýÓîÁ©ªKéÑ¢c ÐXžÔæA÷¡·)‡Øáøü*_Zøvœ`_%(Çú}íÆ‡ˆÜô]TΖ봯oqµÀ °¬–ªgw±zvsë©P «ÚýžªîuJTuà:`™Kõ”næø¨FœE|9†X(@öŸÙrïð…À ˜_Ì¡] ­Àv1E@ÿ9ŸÛ¼~°ð–ãdkÃkdz‰®ÛûÛ]úI­Ôcá§ 6°<Æ”\¬ÐGËD‚òQ21ÅÀ¨¢TÅʽ%-×6¬ä É=v^$SKÊ (Fè¦~|ÎBó(˜0lr$®ŠËéå4º^åÊø"ïäG$(¼Ú½ÕríÓ‡Å}gÁf9dñÞxþŽÑÜQðGª “ ω„þ€šÎÒxÉ¡@Ž)¡¦(Ò×AÒætuŽôË&®h¸Æ¸¹8u¾#¶T8¾•ãU¨¼|PrW@t5âSäÑ*ç§êKÀòóªçNMËN”18Gà:¶*>a/S")Jck€´“¾AΦÇÉDM/׎cWbóñÞÊI®/^Ç'¹þ 8.+¹ŒŒI,OÆ+È»v‡¿'ØJ˜ï "ð]Äa§þušÌfÐL¾pèÜÞ ÉÜYg×Â~¼˜°ß[ØW9ÿ}„&nòZmŠQ¤qöþ–CÜ4¹fí)9s³ ß›ötÛZ^«[^pðu'µ€XÿxãÔ*>PÃÁöþûºè·v¶•ízØÙ#c´a+ÿþƒ}ýþ;ûíîý…Ï{[ðÿƒ¸’±—G]Æk/¸Ùã÷%n¢Â¾p|‘Ï•"[Ö¢îkä¸ÖÚè£'òÛ{¹¯ ð"/è­–ïöEÿHW-4Œ£ÖݼlYEúllþ¤R(Ë`ñ,›KÒ])Ç¿(ã®´/}Á‚©s=Ç‚©3~c{NNõ…/è5†qÈÃUË8‹íÚÙÉþ=?{À?¬µö:Ë{‡hPÌöÒφJtf fø{ ÃqQã"f›czþ\nNÏK¢-eíLý[XÛÔ0ÏÓÃ’d²ãÜ—ÕGFW.üfÉ&¤މµN†žZZñGœl«®Äz±û ŸÐ¬Æë½œÚx[2¾œ]d4yÂ&OÝØ´I½³Qqšáî…\@âD(ºÇn ó‡£ËvªÙáþ‚¾ŸûVŸg’ïg’wó;dëm`íycÓÊO… d-)”r.å8¿”c»”cSÊqX´°'ie„nˆþL£;y •s\h% ³K†ÃD¿1øÚtòÕô!ôF®HÐyýè6¢É8¹¾½6½*^ÖxÝUõÝAôô’g[ÖZ-9¨ì׺U³Þ“¥ž*ʘ¶ÊAR¢_!ih*~/&ñ·èµQt‰8>³d4"x\r5@|V½8±ÂÐrÀ‡€¹7ñt…Ïr sö¶0 è¡tuž½ŽõK{wïXˈ0Ó\`>]`ÄòŸ“~z(8Î+UéÞH5°Üp­†Ço¤yP Ñq›SÕzœŸDÎËP¬Jù %çÐu2Js¥¢:+jõ^ýZÆ”_HVò.sZÝòNª·Wð^ˆ¬éÙózïˆh6 y,V]!7Uïö¶–Û+¨†ª›å„ùLKDVƒÑOï•Þ9DË=UÀê¸ÿj«>-3‹jTuI»ZCr Èè­Œ¿Šdÿ¤â™æ…}8BµBu´ÂST=¿çi ÂŸeaM½áºfòi þâöJ{ù9!? ÄßÉ@´…ĕΧ¥ôÏ0‚ß¡¾wôøcûqÙ£ÇÜGE£[ñþÐx ±òß?<­Å —ü4’ùùÁ«ôÓH~¼‘ìTÓÃ`òN³”¯:ž{ráý#?žÿÇô|2>´ ø=ü?ž7^<ÙÿçÉÿã/ý8þ2úçú¬5×}ÿ͵'ÿòðhÏ܃G`Zæ{›Ý-íb{ƒ(7í-ð´v8þÓ~ßþX›û[ÛðÏ‚„؈@‚ I ²R¾%ä¦\ü¢(¡è3ÓÓ¦JFÈÔ@_C=¯œ9T¬}ËÐ(–ü¥ëMNNƒÈi‘ê¦çK&Ï”›XH³–á4±í»:rGöäue \ñ²èî½^Ý$_&32³1¹)f[ÝÑ}_ëÔTÈÎ( tÝ/´Ú$žÔ×»–giû¬–oì/LOŠJbñB›Çª-µÒ§j –Ã× OYŒÉGUT*oA(1°œN‘¦ì›Å³úžbUD«~C!¢ûn˜j5ÿ%âŸôz@¶QWX„¶÷CØ/Ô´µ®vðù¤€$­ÊK’e7̃[É—·TïÌQü÷Z}Øp¶Éü\š™ó‹NÞî~ìî×Å`ÿ}®ù¼8&´è·>nWÄzп Ò‘õÌ Åò !XºÍ:O&ý ¹Bæêû­£Å¬Õu¥ô~E_þ娩KA:‚Š<Å s•EßÇèäVì ™Qå,9W5ù 7— "h(Ž—ŒN’±IX™˜‰g£›,ffži’±3Ïɘ±4§ÅsêÅ27¯6:/0!ómÈIN Âzäâ÷Й\ÙkxÏE†é›¼6³Ë’Þýá*åìæ0Ú;nŠ+X3oa (´\Ð\‰v¦EúÚÞ½=ÐõnøjòªK÷¯ÙN´ÉϹdîæÞ0S ðïrØ`¤†Gy–#9W²Ú(Àª~¶›Hõ«õ®Ü³{ð6k­ÀÇUÍZw™£… ìv‡ŠÛÄ……²¬DÞ—ea~Y&ù²`ÖBRøhU.[ÓV¡|™ Õ커͛թ'CHȃ/œ}I·¯šÙ–UA#‚jÊmR)5?àŽF·ï6+xâÌÕd¼ûö¢®5M©¢Âhi)ú=¼òé· IÍpœŒ}.7‡=Ó$ݧÁ§¹Ê5Ÿk.·3]¬Îм5Èæišh/j.9×Nº}…dkc¦4ºVb¦vƒ B‚íV`P¦t.)X‡ÂÒ3Q ¼⽫ßK Ìry½)ò:”Ÿß“¢üôPï_™Ú•ñ>d£žd‹`:O¼-Q™€ÛÂùQÇÑÜQüØÓȼüCfZ¿:úûÛ1À°r%¶$j ”'…Óø<Á°ÏQöÞÌu4•K"Y¢j”ÍLw¿T‘;&2› [ä‡Õ{²'|üÇ·ÿ»H¿ÆßfTú,JÙÿ5¯/_5› <­ÁÇçOö??æy²ÿûK?®ýßcŒþyãÿÅóÆ«Þøùêù«§ñÿ#íüçÞNÿèoº[Û[º 9¿ß–ˆœò³Q¥‚ºSöéövû6vt9õ/ûlt¶? yV] –îl—%°±ÝëB‹¡ §ÝƒÞ>Ô Ùènõé{Y::T­ƒƒÍ;†ê”¯Êñé Õ.’†lì•]ø.?”$³urzˆ\| Õß>ÝüÔ¦ó’µ½9‘x´íÖÍ4a(”Ÿç6$Ü´?¥MdH»GD8‚ì ×|̛Ԓ²,ë¸ÄTãØ–Z™:p «FËú÷Ze~¿%&}•_ò™t\a¶R¨¥VÅéþá±ó+±)-GaV¡,ršPþ–_¶3§Uäô[\]gF³²”0&ø-°~ˆäGŒ´*Ô*édt«`œ#c`ˆD|k<hæ™ ¿¿Á†~å7¨©Æù‚;Ö Èˆ}DppÉ‘š:ãŒu.eÊ7±¶zU ‚ªz HŽ€æ©¾2'{P˜Ù´ ¶WBÕÕd¨ND¨=Ö°?˜OšÇÑ®_]²i›ê_Gßõ)h(p?Ÿƒu%ú1±š¶É‘ŧ·)ÙÐ5s ÙEwBgBÅ1P§Ë“Éxt‡¸ëˆ=Ž·÷à;ž£ÖOÄE† ­Ñ©W¶RåL[õLÄB6Rê{0’h²<ò`Y2˜â ¥Þë=!퀢ÑmÌÎʺ¹ +T¢ò¾*m ßóâa,Ò¡iª¶øçXê£uk˜3r 3á;ٚܞeÞ´ñM{v¤Íl˜Êb6\ÌÏp–tÜLs¤6¬Ú|¡"C¾µ´gw„°ä!ÆÝ€%ªå»—dpUÖ@Ŭ´Àˆ• ›MT#ý†D„–ye¿ÍJÒùd ‹âltg5åÞ£Îé"Ù:t1¢ŠªŒ`„d˜Ѩk#`l tnDæ²øS³9,T¤ÎŠ š¶\"½R€…èF_5ª ºâ9ý†Œ‰9°z þ(!ÃÃ,{ŒŽ¨–¿¾tþA퉧.]:¤ ŸG O`¿Œ‡:Ü s ºçTÀ"™"b8¢lÓ—UÑóHkxé‚$ áØÃ‘悯I2#%¾¤¼I>¢xÁêÌšM¬é–!€9CuÐáí¹ Ó[þa&»“ÐÚ2·â Úá>3ÛF—[z¼u$°8@®Py ÏSlÚ¿ž¥Ž…È’$Ÿi›s]hÈàVÑn±»Bi¡”>ª§®þª•›ÛIáå]Ø0CåØfÓ®{³îx•iY§ö®ªòL«ø¬¡Æé½ð窮7[M³UÁä-™ÚúI:,Ö8ÿø¢õÙZ?ØÔßê5lWR𩸯OªxÍÏßÑjè4­2Òê1‚¶à‡ øIT1—ë.‰ïNÈ10[kx‡Ý¥ôlg1R“ÙTy&œ˜Iß Ø“wÚÝSd”éyLSÜ×–cÇ׫§W{#Mó á,WRØof¶˜"°ËÔÎ0y«*üQx%¥Ð–8 çiª<¹{âÔ4×Ýg>Ø€å’î©"¯zv§JÂôÕB%P¨ê¼Hó0ÑÒšŒQÀ¤/Ô\Ùÿ~‰¦ ìò²Çþ¼\¯aÏÃK„3¡k–ê!@ôê²K­½›ã—£ä$œ[9Áàò¢g–Ãׯ`¨œ~ó#Ôr*Ÿë0VÄ}¨z±°V ŸP70}"Ï(cf5i Ãø› =»»¡ñ¤Zcõ2$=Ÿ&gZ¿;‹)8ºp¼žß«Ç ‘ßÂrOðµOŒǶƒšž^QVcËig cûPÕ£î‰]R]µ:6•ÝŠ•ô·é¬2F;™t]Ÿ_U–¶oÒd³V®vSüô–o™A)þÉW¯‰eJ»âŒoÎë~‘Ñèz‚qRâ)2ot§6ΑThQkjºîÄŽŽmª>PÏK9ÚÇßf&†ßå4†ªL¿“¼$Ø…R+ÆÓ:ŸÐYÌ]eQ¤CšƒdßÒ2íñ9».D/¿7_k Û¡žŽ†U6UÂXW¬ÐÞ—8‚4,jb°g´9´÷§K#34 ¤aó(Ÿ†š›qšh r€M¯œüßÿµÒøï:ÌXEþ‰¾±r:¹Î°&º¢n¦xV ²F;'íc{²ê§îÄ3q‚{µV]ª}ΔjœyœåžÈ=l1ÝA›PŒ©ÕÌšÞ^ÓwB £º}#^AÝö”94WÄ7eNˆ•qZ«ÞrÁtÔ!›r6Ält(Ýxù‚h]ÜN16’>ƦÝ…R~ØŠÑY^@/ #ð¿”^£/¢lX@CPbž£!õ‰òúM}Áë!‘ÀVe,ÙRމÀº›º¦Z×>íŽÖ¡7ÜaÝ£¤Ö!©u­uÐè ž¢›C‰Ñù:.˜Æ¿ÝÆ´2T(êT¿².¡W«´ÁTæÌ†ux•H ' Xg —UëL„Õ#ÐU¬‘D $^S ÓªèRó±´*"þ¤U=iUÿ­Ê¼OªÕ£«V•V ¾U«JÉú¦Žpôj' |*r*Ϭ0ø!«©yQ ""É¢³Z\¾Ú–éÊ?“×Û¶ï#ïu5¡Á+P9t“o&mN†·ÑȺµ;ž5ß«\9§œÃl ãI¥Ñu,¾êzÝD¸„‡ØrÈÔÃ=·}¬ö[61êœêñåBg'|¹’Ìô½ÊœÊ°“ÉÜʨÔf–‘£>05ªãTèÏ?FŸêh*ùXyÖýaKD3}åÞðU`Òľ*kI3Y¶»^_ôãP)}ÚpZKq­“sÄbªãœÐUF<­:@\8 ³ 8ÿUDMí,{¥Òâ…OJ¼0ôî5Î2ñ­ü%²ÚFÛøòËé4®W¦œa\€–RÛ5ól…NšúÝš½”VR¶Ñ°ò8\Z“E¨Žñ@Ò½¨í|ˆly"¼‹ƒú7ÖViÓ¶]‚榠Ü/QÈaàYcmÍ<»Á•BçB“/ãñ9š!G­©Õ½‡Æ >™Ùÿ¦?êóÎá* ƒ‰}›¢ ¬:0>¿'¿á Éú6º…ú¢èŽX”) ‚^tqÓ< ÏZ‡ñM)VñT«4 6³+뎸1è\/Äd}•Î&7V8Š„ƒ˜JÝãsPéÕ«0¨uƯ(£DI+EP/κ1’N JÉþ‰‡á·ÓÿJ–ÿ]ÿЭªéW‰²lb%£jWóDÅpÚ•üdUÓ0ŬY”ÿX"({ºQ,Ú¼jmõE¾ ®­þ,ÍAÍXÒ‚H‘g6VnoÖ@ãáÛ36ì´>uq!V‚‰C- äZl-9h…[z¶ ö4²²f°pÙ†Õ¢¤ñIr9&˒ܾ€¾ ¶BÚkdñÏ”„Ü MÀ Á×0(\ ¤®Ï•4(0‰ï¾ÅU„xª(åñe4ò´^YeüõG“-ŽI¼Ù(d²ýº8:íZ û­>Ÿ’½+}“T–ãÇ{hgŽ÷ÛݺÀYý˜ÿ9â¶àß­£^kP`¾u‚ï‘îG•?Ÿ‚LŸÈÜ|zŠO½utzD¶ûq§ÝmuNùùÏ'³ý¾_»‡o·?¶:¾w:Ϲ€!Ct™® E[tÄax |UŒG7ìv÷­ú êæGù9¿æÝƒ÷½e£Õß>…z··±!ÛG æ{Aû)¡ŠâŒúîV•Waò9Ï/´OtêNÅé$¢ZTºÓ0.ÜmÜœÒeé0©šß#,,ÝÞ>¶•ôlî¿W?5H;Ÿm0!q¾HHKþ^0DMïÛOßö> vu† ‡¼ª3€W}â|>“6T¢9!« Ÿ;í„^Xm…¯/‹ Y¼€Ä¯ê®éß‹\ƒ,¦@ÒŸ‹ú”­SzG§íAo{YjýBƒ~Ë/J'¦U®¸ü¢æe¶Ž|!«ãôVQëa îœÖ³€•¨ž+®ÅÕ’ÅÈ8mNQ 4ÎÅ4ËÒ8“­£÷°@Íž{S¹ÆZ°A ‹GŸYá™ö±qšŠ! JA>½[3Ÿ~ƒîR¡Žæ 1ïžqlÀ—Çs…Nàînâ öC&áäKu¬ä;t‹ÀaÏxŒqÒ]ã;V²Ú²tèš% ŒÎ’‹YµÆš]-Šãogë|d¯ßÎA—Èü\íl›k—@Qs5¾`qî™ZXXxÞA :à&)w,›Z˜¸‚ÉŒ[öv`µ,r@ßÁ±S°Ý(ê…l¢œÙÁi“Ý9!Áøæ9„}è}JÕÞ²ÐÇÓŒð;Iúël^ðŸ¹C™hžØãÌJ ÅLÂÁ÷hñ<)+ž'óFÃI™Ñp¿âÊÝàÂÑp²Øh ¢$ ÌÅùdóönú)ØÊê§xך­åaÌž<â˜5 ÐÜ­ÚŒ¦ ŒÙ“c–;‡VÇU¯wû[B–g“Ù•q—SQÍ5(šÜ ¡$˸[ñ³[¢áæHðôIÝ,âå\NÐÒyGhÌûuâ‘ÈAÒ¸-Óp9Y¡L”yÎ%pU¼=ˆ—/_1‡¶;‘`˜ë¥uY˜J„(]JprÜì°gyµÍwÍÈáGà€ÆKâå9_M@ýãoÏ=£¥Q·£°€jh†eTB!o†ÚhŽmæ|æåjiE‡8xjO›ou@›o<'hÔßUÃç0aJú„žÈ©üêaë8çØÀg£nó š^Æñ¶Eîཔ¯#úRýi­ÆK©¸xõ Æ4šÜoµaCŽÇuS7û@óôêÑi YÎÇ3q…6Š M;¬¯=(óÛìLç{û¾Ð.qåK½úv;îÞC{—¹2¹ÎŽ«QÏD¥!V´~Vu;ÌžÞ±FN…šEõaxºÅêÛ&®ÏI^}|ÎPð0$à÷ðû8s^ðÀÙ:26§w…'Æj ñ¤!tPlŠÉ›Í}QNâtžµ:õR3'@Åm3EO„tkYtZ>¬uÛ.Þ¹çÊ„Kë6W¨®7+²œ†e«ñ5dƒµç$ãƒ&“ã]†×b‚?3„¿ú±ÑžÐýÿýÿóårúõá ¿é)…ÿß\k¾x¾þâes]¬5^¼\Âÿþ1Ïþÿ_úqñÿcôÏÿ/›ÏþøÞ|ÿ?äQjgδsØÝà çüþãÛoÌ44øæA‡±üƒÛÿüÇGþ/Oßü£ãÓ¿»…&5×keyåÊðéOŠOŸ•3 «>@<ø}aTw‹8~ Áœã{X(¨5å$¢ýŠôr:ù:»’¾[˜—†ZÕgôïa•C~‚¢ÙÈI ËŸØ}Ü¥ô D:×+Øx™4$Dà,:KFèz$÷CÏo̸/VŒûa<¬Åsšy3™L¥Wj4J'â:ŽÆ©vDÚƒæ¨nyùgPHꌦÆåBÊíØCœ÷­Àœÿ=(Îßüà¸Íè§’E¸XÌgˆŠK¹µáV¾pñF³Fhµ(†É­N°ìŽÚ@OiŸi’^™])ŒYd»vM¦Œè>˦0/ñ‰7\¨Ù¼ ´œ¬|®¦s€J‚È?Ž .?¯ìVÿñ&ùÇ›ëd\éÖ?/ÿ:2k¶µ¸oç¡&3i‹ðHM³Uõv6îÁý‹ý[.ðδÁ}¡:áGµ·a8ZˆC‹÷9QßÞÜ wê4‰ÿc›*PP}!õ¼:™Ò¾Åy1A×Bñ—(¹YÿY\1¹nÊ…M’gÊM,DǨwQ°7¾«#wdOîPWúEü(·´PLr9ÛÛ*X<ÉÞüþòê÷{0d—ëðyÔ¥c2cÀI"skc™oã fÂZáûÞÃ#h>%$ã¦w+t§Ã_¿[FÍÅ-éSŽl°uD¡ÙÃÄye¾sŠ9̳ãGœçÞ+*‰n(ѳ7&QšéÔlªþ3G2ü2ôY¿S £I½QB¥>>îãžÿÅÑõ—ßþßçü>íÿÈótþ÷—~ìó¿ÇýóÆóy£ùÂÿÏ_¾|:ÿû!v?þçvkÿ£ð|sZ÷»xßK§0uÜï·»›Gx;8hÍ9<¦´ÇeOúÖÿø‘(ŸNúʞƱT¡ìKHÐP„¤ð±D2ŠÆwžV˜"ÉX‹Ç•EiÀ¨èˆDã™a¬Hë F-uͳîÄë7"Ý\Ed!ÐbCoh(pûrúvWU{] ÊRäåÂ|ÒŽ3pDHÁ{`ÞÖÅ7úáe¹¾Œ¼×b4:sDASC$cèxðBîô0éÍ4¹†Åzt§ÃèK÷(EÆ ë0˜ Ï @]"fªGíÞc4m‘øUÚøEaW™Ø9˜TršFI<ÝNH7ú A6:ˆ††¨t—ÔųäZÝšR5ü媬"œaµÆ±›rãFh`†d8< :MÎ]IgÓÛóН¡ô!3á2Cç4ÜõæOéÝõÙd”`§»Ÿ¸vV#˜š™–¬b¼.LE+HS ôHü mQuMˆœKl±düe2ú§ÉXÜðI¤`R¯¢/±±QEq¦šRãaáI­l”wVÂ9öãÔ©…ÐÄd$9Äè<É!“A¦Vy@vNU]J¶‹H€ŒÀò¤6ºï ½H¹fc‡Œ!¾6 ì«åX¿ï±ÝBУ8TÞ °CeÄ‘ª,AaY-UO–±\=»¹õÌ;¬vu¿§ª´TÙUÍA:óëÌùÜzóœË^²tŸQá^lÿV{»K?ÉÅm,\ ÜàØqÖi»:²”ó;âHz‡–Ä9‡Š„¸¶ÙMý_\$ç N åZ¦£+–Lî2“‘ÒœÓÖ㨟"s¼Ë¬°Œ›'*éíYןËit½JÄ}q²ãQ?ž^‹j¹Öéué“y‡,ã¿}²‚~4 >„gyl€¬ :–ºK¨,— ¸‚›¢H_IŒ$š—®Îd|>¥#Yœ“IVŽ˜…–|8$äý­ÿ¨B奃’§^ _YAÚY^¯ªÄú9ZåüT}j·Àü€:laOçT™ò§œöWÅ'ìdJ”¸K^z{ƒtµBË3Á÷“«¼ª>âC¢V†5*× $<'†C¬•{’¹ã‡g¤—g¾x"F'ãähž„»s‚'íJÂa¨cÔÀ$Ærü:Mf3h&ǘpèÜ’‹ÆÐd×#àØ‘«¹#àøÞ#àx•óßot@M‰¦ØE& é#Ýj…üû;Ø¢ÖÅÉvO]7Q­ ‘¾<âÔÂÜ|6˜97j ÂþñþÆ©U| †ƒíý÷uÑoíl«[ªðÍ¢NÀßcº£{ûá=üwÄÛÝ#ú{¨êÂ8\GÛ=POë.œU>ÜUA‰Ë¿@y*TxAÛUŠï¿i¤Û)ºnì·ß.xÕÈi± ÀÁARo´Z°ZŒRªî Û3YúÙWÔ±úóè0é4ÙUCžtäwÎ2X<Ë&d©Ò|è^çÉ*+”ž«±n`0‚©›~ênQêu?5¨Z˜žî*¸©æä|éçÄ5–WÔߎ‹24tÃíkJÎ)áÑüœä9Ácøj΀–ê F'õÝl'£·Éù¯*Š%ì×o&)ET°AÚPdöeõ±o‘Ñæ›Õÿ˜6øšf±*¹»UhQÃq¢«ºR#kg»·ÑŒÂ+-M+j‹0¾œ]é –: ’‡FlàÚ†¤ƒá‰Ø v7“„OkH&ºÇn ó‡„ËvªÙáþB°*VŸg’ïg’wó;dëm@Œ÷޼⿵£Â²þ” J9—rœ_ʱ]ʱ)å8,ZØ“´ª< Ïä‚,Œ¿~t»ÂdŒxü P%£Ã·¯yª¾;hêXòhÆ ÈtPÙ¯u«f­3˜¤! ¯›Qt·äHùÛmLñ£4t?Oèñ·èT¤Qt‰~¡âCx£WèU<ºQ€ß =­Ž¥È„P‘!ö>а{nïX÷¿0SXÖçr‘Ñ l‡5R„ûPY¤Ñ’û(Ï y†ðˆãt\äÌlpÖdÊ)9\ÀÉvçvêL¬¨àªã æQ>ìå Cq‹Œ¡Î‚?åOØÊGÑʶÔ|¦é=«è§‚WïœN 퀊¶:&Bå3N}ZfÔ¨Ò’vµ†äŽí"FË@™æ…‘BµBu®ÂÓKÝêÙL!8áϲ°æÍpe3÷4Òþ,# öOyiâi¤Í©Õ#Œ4Ç6п§ÅðÏ0Dß¡~¼›¿«eòè1GïQÑðU<‚?4^BœXxˆ»#üi)}§?tœ>Þ"û4Nw!öø«wN$±?ôÁ—ùñd³ÿÇy<ûÿ)zn>´ ð=ìÿŸ7מìÈódÿÿ—~ûÿGýóÆãeãÅ+ü7Oöÿ?äáÑ>ÿc›A¿íÀ Ê  µsüaasÿ` ãè-Jƒï (á?åADþð®­›i2͵µŸËrË#ô§t-X<ÈfWJ°”G’(’ÇE< Bæ ÙÒ€D“} øÝ<„ß‹ïȯ:{Q°²E|„p´ì`+¡üðå ÷Xƒ›•M—~Bùªè¾$.ÄF CAæàŸßÑÀoL q¾ý×kÎë¶÷zÅÍŒ¿˜: ò›?0h%bª$㋊øæmUÿõ¯Ö¿4É˜Þ ãx4ÉÃC =‘"þ ÚÌˬˆSPéUk­š¬\‚FP_… ²¢!¥•Å=]‘‡ÑÔ€päè‚~ÉD¤/at/²v÷ztÔêvص •Qª©>wé,¦o2Ea`6Ë{ÖÈ5;a :шhn) ]ÕN< ÄµÚÀ¤¯ ‚)7eÊ]+%L¾Ÿo/¶Xç7v~Iá߃ÓòJ-‡¹‘xÒ]9»[éÚ†ë2™²¾?àÃM`í©¤k] ·vîÓˆÓŠÖHE‡äû=m2ˆšmoÄûZ§vˆ3„ ²°!ÒÆ÷5|Gm„›Ž3u€~ ÅNcÖ)yÃ'ÜTÓH™1ØÔ_h~H<Ÿ…¯YÀ|*,Õ|‹Ö©˜ž˜ÄjÏŒy|²¯«yi¬ýí(òf÷ôÍ£ÎÛ*ÕâcÉéi3»YܸlhòûÅ$OÄ?éõÀBž{¬CSé§‹5m½ÖÕîŸ&Ó_SPÊb«ò’dÁÍ#óà¹åb»sT³½V› èMíîÇî~] ößçZè’Ú6G[ë·>nWæ± X—ÚÕé·öÕÀÒ•_”R:Tn§µÙmÖyí›!>€y¬âYÌ0VWJë•úž%Ç$V üB<ÑûJº×UYô-µNÎØýügTùKιy~ÂÍ¥\ãוŒõ«²gÍIŸ±õ,Z»ù†¶+ÏywÊfÖ±Öªb¾¹*õÕläʬšB”ñ©W‚Ûÿ ïž­ÈVᤓ_‚Ö•qú’ bVÕÆÅƒ4íMqa€•d&¤1»Ñ¥ädꚃò> ¬À!Ç䣅Œn™‚¡„ƒ/¸bòøwٿΦ|Á{íPt}]iU)7lÝ}«T¶&Và³…x½ïäÝr³Ö]f þ}‡çp«ý;’yiú{’†¼{ÜG“Yà”w:Ú–‡"ì_,7Æ8á*iÅk` Ĉˆü•µÖ5ÖL~«".ÀNpÊ\ÍîrC÷ÈS£ºVp¤2„zе8Vè÷ðd¯ß‚$4Õ[×m|Ÿùïp/Òóƒ„4¢ê¶‘ŸêS?£³zBaWŽ+ÌJÊu—Ö\[Ç Võ.¬Æ¦LL‘c™O&šjq-xnªÈÞ$ cÄgÑðìöD‘„<–ù΢ >M.¯f+WÀ¦Ä[v σ¢u+²‘5ôÊd+¹­}cÂ{5é‡Ú~7Ê™†‹ùãY’Æ—iŽÔ U›/¤4ãÊøz®E–MδzwS(Ú8ê\·Àê1hFbÑZ'„ŠÊ'Ƹa£7MO/‹(ª±åÜ0Ðñ¨jÈQGH+IýuÕêØTv+ò\u¥Ë¥-'rˆ¿®C˽ “;ßÖ'±U|ºñÚL—h°!~LoÓÙ3ÐH—@}ÀÏ?„N`a£ð;¯ã#<Êñ!Û‰'¹fØc&@;u˜‚Zõ©¤¿Mg•1š†¤£èúüª²´}“&#¨˜µèpµ›â§·|Q :ñOö¸zM,3aØ¡ûÌiZÝ/2]O¸>ž"óFw*†x$ÕYÆšš­;±£b›ªOÔóEŽöÁñ·™‰Lt9¡*Óïä¯ö±šÔ‰ñlË'tsWÆCÙc¿‰æ Ù·´JA{|ή ÑËïÍ×Ú4t¨§£„a•­s0 «³÷åŽ ío«šìmíýéÒÈ MiØ"ȧ¡æfœ&¨`Ó+'ÿ÷­4þ»3V‘¢o=\gXÝ@Q7S<ÙY£}“ù}²ê§îÄ3q‚àPµV]j}ΔjøaœåŽÈ=k1ÝA[PŒƒ¥µÌšÞ^ÓwB £º}#^AÝö”9bVÇ©7eÎS•qJ«ÞpÁtÔ¡kwrÊÂlt„Ûxù‚h]ÜN1X…>ô¥½R~؈ÑÉW@- ã¿’Z£/¢lX@APRž£ Õ‰òêM}ýÀë!‘ÀFe,ÙRމÀº›º¦Êï¥Cï¶ÃªGI¥CR ªZé Á<,¦Ta•M©"âOJÕ“RõoQªœÁû¤Y=ºfUiÕ³ä[µªt¬oêG¯vòæÝ§"§òÌ ƒ²ŠšeJ Ò‡,:«Äåkm™®ü3)q½mû6ò^@ÚÇ™zøwêÐædx¬;»ãàAó½Ê•sÊ9Ì2ÊH]Çâ«®×M„K(qˆ­hL=ÜSÛÇj¿e@¢ÎÀ©P.tvÂ7+ÉL_ªÌ© »UÌ­ŒJmf9êS£:L…>ñÿUðñ7_ÝœOÑ›>‰ÀŠ„»Å†°'rèFÙ®ñ'ÙPY*mÍ’ƒ@FgiĬR# DÏtTÓšƒ#{™uޏ@fæjgÛÜŠš«‹sϸ’“ Õ·,¹ÙÔœˆÌdܲ·«ey”j œ‚Ý@Q/dåL N›ìÎ ‘†ÁÍ!ì3@o#ªöŽ‚>–˜c„ß¹HÒï\goÿÌÇDóÄï TJ(_¾Ô ˆçIYñ<™7NÊŒ†ûW~4èކ“ÅF%Y`.Î'›·µÒOÁNS?Å›Êl-ÿcöäǬa€ænÕf4}\`Ìž”³Ü9´4¨ºp±Ûߺö?›Ì®ŒëšŠýeî$ñnÿ­ÙrÅÝ(ŸÝ 7G‚gAêšwÏÐBær‚fÇ£8BËÚ¯‡ˆÄ¼‘–f™†ËÉ e¢ôȳ—öªx{08/_¾,â+ŽlwÁ ÝÖKëî&»l)Á¹q³;ÀŽE\å Üi׌€vŽO¼$ÞA›óuY4üäÅÏsOÐDidgç * ÚGUuPˆÃ›¡6`cûµ ór•´Â#JƧg0U=pøRøïnü÷¯žðŸÌó„ÿþ—~,ü÷GýsÇÿ˵¯üñ¿þjíiüÿˆ‡G»‡ÿî­ü' RÚ]ýË“7ÿèÀäïn¡I͵ÆÚÜvä4-ç?)0¹%.R¹Hß!oÔª%˜9AwƒÄUä·ü\„Ö­sYUÀ!xlåÛaK½„KÍjeî¶ÎvøÿἕûïðÂΆ1 ¡÷Cóž•ú)F¸nQéž,7ªµ¾²Êš›ŒÑnI37òZax@=ñ(Ý™Õ)ú Et‰03ml7º#‡C½ÛM=wd7 #\?Xhoébü`×ÑG¹8ñüK31’!8STü<¦Nd°$¿Ö‰Va¼ÉöMŠˆÌò-Bèj¬ŸŽÊË@¥ënàEèïùëX£dh|=‡CßNÄ5âïœÅ6uç˜1Ùþòt6÷g{œó¿›É½ªúàçÏŸâ¿ý çéüï/ýXç4úçÿÆËæÚº?þ›ëͧñÿ#žUtç°»9Àx0òþ€Œt+âð}ç€nÕ•¢ögíä>íœâ=r ; ǽ‰6æy:,÷üiO ~ª(£…ç“VÔD–>’Æ‚ƒÈ‚x‚ƽ8Ž\ä44´ÓÕ%-v¦)‡®YäƒÃ|˜/i²Qƒ›•M÷ð~b,] ƒC2B̳pu•}ýüFˆ~cbhƒë¿^s^·½×+nîdüÅÔiߎÿŸ½wíj#I†¿ï¯ÈÇ_,‰BFÂÆÓžñœ#.¦eƒÀHØà÷ìúT@u ‰QIÆžýïo\ò^Y¥ÚÝVÍ´‘TU‘™‘‘‘‘q¡_ØódDÅ /*â?ør«úŸÿ´þ£qèU˜àÏV1]ÖçH¤3ʘÛWÙw(yáQµÖªÉÞQÍ¢[+fï‘þž3“Up ¿Әʱ´J9–2¹ÛÊYh‘àñ¯2¡é5QS–ªÅvŒµØŽon0³Ö$écy;œð§ OâÁßíÇ÷ðñ=Êʘóxý¶·¼V¸nÚÃLû®Ji‚¶‰4”V  ú‘ʇ9ÜÈ÷–¥,šN¾Y}é hȆI>ÛW}Œ™I¦¢Ar–—@ÚËŒ3çÔ€Ïa`Mû9Ô7ò~õFÛ¿¥Áã¿+ìHÜ"Oõ6%uÙª„#âᦡöJN I¨)é³¼PS&&Í}n¸ó]Gÿðƒ.;Ö{’ˆpHÏoBj*#Çšg³ÖYaw³sù \ ý@«è.¤-î†ô»,Ø^E Ðø÷ úñVÑ]HûûÆöˆ«¨³m+à ŸèËT̸¹‘`Eˆ°`iV–üeR%{4ÖLàßU± P‘Û÷²³ÒPÆ­ˆeòHË­RÆEùÒd‘ &ú.PµŽÊr£ ÷gÃir3ü†Jæ‘LXÉÝe„šÏ5Ù™™ %9>, J$I¤*2Ÿ<Í&óa™D>N‹¹Ñ‰ *YY…êI‹¬…ã2ËqØ‚(Ô0ÖŸÉŒ/wåw«÷Ù™ÚñÖ*Í×ÄÖj½%nËã6‹§€ÐÍןu½= ×òñª¿ïˆÞ°wWù jOnªJ–žTQÛ‹“)‰o㙇«V¤nt+_«úÑ~V,àÒ§è¼|ÿ×!õ~Ú(åÿÓxÞX{þ¼±ÑhеÆËÆ2þç‘®¥ÿÏO}¹þ?±úç­ÿÍæÆsoýo¼ÜØX®ÿǸxµ{ñ°•¿éž|Fã{g{g»bò©FƈC‹rµf/#lq:JòÚÄß61ˆ¢$”=Ì £òD*ïGÙ·"Q‘[!ŠkÊq°+*› É?:UrY02…WÄ)Ç"'½RY^Ù¥3Ôœ¡ý%¡B‡säàdy<ÑBÛ“i‡y›µOlj‰é4àüs±ûUà,Q­úlvÐ`0§³2¾7ž´Àk³Âˆ)vä:­0æè 4¥O˜ˆ¸f’J±“Vn7¶äÃ7R«jža²©÷Áa^9ƒ%_¡âÎæ•’Ždý@$׸2b…J¼A—"›Žq1}K§ñµ¬üê{ýà‚Õþ‚¼³.¹0ê*—mŒƒAs‘\‘²ñ^<[¬Þd[»Øf°$,¬«¡ösÁñÊrtØÉ`ŸP{„±¨‰·Îõgõ/’hĦû²Î#BpÓ4Ù嘓 SBõi¹h<Ê„ŽcrHAáÇ­wx16hÇvBÆ[Ý©ŽÉÕÿÂerËTÉMå\Ï)ÂXèÕ¦9³IàNWب{Ce3•UMQQ.=‡jèBãÍžN6*¬—Êå1´ag€NTU•ÄCÞ$ σ¡©Þâ?¯ÅÓ.:Íut–³-Epgïlgg™;m¼Ó ’Ëx4ž¥ÞÝ“§‘xºƒìpñàÎéOÍЃŇ˘ë7…ªWç‡^;²™õ=ôÚ`Ĺ£½OÄ; ésHünDÍñKäTú~3…%)™°<ï•[VKF&Õ6uAU+Q’]ê(Nò,&Ž\×µœ¹@…këÔ¥bãVÙz¹Mž'À§C«Ö­åþ´à¬wÜ s¡Ö^Ó¸Y´¨ò¯D˜vŠ´%•ݘŠ>y#{¡§ÙÛ:qö8¡É …k‘^gÃòtY5^BrjÇb Ÿ3̘ï yneÑc¤]Ö]z~£|‚ÀSî`s‡Ïû3 ¦G¼’ƒÐÐËK¦ê™£Ð[Laª7!A¿¨RNâÈ0˜M,ÿs Hƒ¢½ oß’k¦b´}K<"yÁf&«‰FØÔ9@ ÌÎu³–¬D°¸J2 Ë· Ù8ãd›Ù$.kð[xë^8àfa—µ[^6ò¬têçlÈ@A•Á°Ëó5MÊ1Ÿ„y\·n½ý5™Êê±,†2PNmÌ9ú3æNë +ˆ9¥½¨FBNkC¿UñXjŠi )MçfÉPÖo™<Ö¬¹Yz@¿û!±jžï…•®È’ŠdܹvªXc•hG“"63MFœ¥$£cˆ€š¡]±w«.™4¤N”†ßiªwr•"«2´«hÜ×zeý¸óYA·*üñndhŠrøD¼Eó*ÑÄšŒ¾x—ïCÇ•[ê—>×ó˨¯þé«Ü­Ó›1o;×Õ+€à©ºß–"ã=(2 ¿­" psÑ …Éð•‡+X)Ÿ¤ò”q*¿E°VÅ }¨VÝÇW ¯Ð40|Ïuß{š!‘Œ0ˆ¿ò‚ dßnh9©ÑX3€IÏ'É™NSrR(‘Š\3@õ³a õovÃØžÀ¸IbLñC>WžÞ‘Tm¨§‹žS×£®Á&‰^U­‰MUªÀ¹êR— [ªÛ9À_E0raòäÛâ$ŽŠõõW†]¢§‚xÒ›ÌÒé³%,Ÿâç'@¡ §÷G€(üÎûÁ(E1±5$}øàŒ™Šò4a”Ù|<øPÒM¦•úD¤ÃþõùUEWå´6îvS<ÙåSC‰ŸØëê¡LÉ6døÆ>ägªýáõxOy@ (dŠûJƒh¬)nMyUl Ût‹È!É‘fò~ÿœÄЕÉwb€wÛP$eb´Öø€ÎbžÊx g M#_ˆɹ¥] Æãcv]ˆ£üÙ|¥=š-@ uvKå6`qö®ØÀ¤#RÕƒ3£]_`¼O. ÍHî0> Å›‘M4P6À¡W>ýÏÿ®6þ/]äŸè[• fãë jú7ÐÔÍmU@k¤7 ”ôö©î?½OæâïÖZ‘”0ºüR*÷¤ñ-rA©¹Ö 3¤Â‚‚i¤|5]ûD£¾}%\Aß6 ÊM•𦌅P 2³}A³æAS$¾FFÉÆÆ ‚u1›cÆ$ÝMaô>(bºº‰' ôg r¤ãEdƒ­ ŠÊs„ 8Q^<°¡/ x3$PTF-å(ë¤UN÷—:´¶=J JPôÐB‡É­ïK R‡Ò?‡ûçß”­`ÿkÓÆP¡ZéÝʺL¡&ó‰×SÆ`üzˆ ½¬Ë„dhL€]Õ2ˆ°t¢Šµ’hD+>âa1¡ŠŽ´J¨"àK¡j)Tý!B•³x—’ÕƒKV•V’z|­V•ŒõUpôn'Ï’}(’•gvüÔÆþûºé¬—/µe¦ò¯$Ä©äÅòºË¹„N €„Œ´Ÿ=%V™1³ùˆï£]ÉSΜɚþuLµþ¸_7}ÜB Cì;búáZmjü–K„²S? ]˜ì„OV°¨™¤í9áx‚¹QO.#W}€5*c*̉ ¡:J~–$+StKô/¦úÊ=Þ«ÓÄã½*KISÙ¶»__[€u¨„>í·£™L,â;ÀJèœSöVܸ >oUÉX•”4ñÝr÷P"-žö&€¹‘¦×Èeâ/ZøKd·´ñ%†m—ŸS2°Jš}scŠ €¥Äv<[ “>dþ´f$¤“Œ}ˆ¯RÙ²1\:õQã…¤gQ»yÈ᜿úßX«“Òö´ ’Cš‚pÿ™⬱¶f’ÃßàÎ7Å!À/ãÑ9z‘ F-Öê_ãéž|ÙÿØÍùÞq‰Á{]T`(jãó«Qò/<0¯îögÐ_$Ýa¢ q3!èM•ž y<ëÄÇ|$XAJ¤²™^YÄGáÉÊYƒÎáBLÎ7XâÔÎ~n f âSêàtŸƒH‡¨®Ã¢Ö/Þ"4­A½9ëÁH8) (%÷ _?ÿo²Òø¿ªø‡UMßJ”› xvc©-*Q—ŽÀýdJïšfÖ,ÈÿÀH{zP^µú‹|B\«ÿ"½Ï€ÍZÒ„8Ñþ ˆ×›µÐtbzöÛk}ìàF¬—<ºȽØÚr¨âqYnœi`WØM”}èÛU@­(Áa+ï-–(ph¯@FËb”¬Ì.\9í”=–¸J.kø·1>°è^*çY·Wø…%v‰Sí5KÇb¸6!Êå+4«ŠeâÜ6_D¤`'%C± »ŸôHãÞ¹sdq°ðÙ~³¢¤çIr9"·’ܹp«[˜QHgln)E!wJ1%`‘àmà*ÛMi»’N8Hâ“oqÕÇLzHåñeèI½²Ëøë˜ø ½ñšÖæôO‘*ΩB«òÝ€Cðé;t!†N÷Ûè“ Ìú”ÿœD²0oÄ%P ||©PidõLßHP¡b±äq /šZ¬‘UµÈ×ø°©úå—GvÆ.Ẇ²F¼™CØÕ®‘Ѣ߭ù¹ål#«î{~ÇíâÔ‘S¹8›­îÎgC{û• ‚‹ëçT±cÙk²°íØžò¯ß¸j¼¾SüpnƒVÍì×¢9c KCµ mgPÜ´;€â¶U%g4Uó×ÓLçhŸ«ì*"ÚÚ?T?§G;©ø q¾HKþžÅjð°ýáóîÑÁÇÞ¯ú…,~A^×9”Ûë>á=1lª‡Š¦š’݇Ÿ;ã„^Xc…¯Å€,\ÀÃ/#a÷ôo=µ‘þR4§ºpr»w´óQjýBk~ËoJ?L{XñøMÓd }7!»ãÌVÑèaƒíöœÑ3•èžK®ÅÝ’Í0ùy5«ËÎŽg $èk﵊“0« :R2 •‹¸>´É¸Ý=Ýÿ¼e¯ÕýLŸ?l}æ©&m|€´îi ß7åãóß¶±ò÷xYö';ÞSª …ðO»Dßœ4…˜|C§¬z)û»vyeÖ$&·uû™éÉúTXÇ¡ ¼«GAˆk.2ï«O5õI¾|L굺‹ú©r}U‹,OZƒ%-d`×õÑ¡|0 ÿ²ÆÍd+t¾Á=Î7èf!!ISD1‰Vø1…!'µHöÑcëQÊ¢)"\·È–3ྻ›Ç¨óγ”ÔEíÁD*ÉGT§ daËÉ5b~ i2TkIJ™¡[Ÿr^ù”ûŠ= Ádî‚0ºkÄ༻¹¯æþîvÄÜ8ÑÓçˆnæOúWÞ³æWIÀV–L«åÔ+dz4)LÛyhTvmCÓùk±ù9«Bz­Âb8õç8ðk ànQlzë×j¿Ê3n\‰ HSy®>…'Ý™¬GœYÙ/åÛ¬`7ߊª)ßðrÙäP³+%BVm•¢XÕ¥ì­2÷\å>ȵÕãÁΙìIyë­Lí§¢”Ã@Wƒý;uPèöÖ Ö-›õÈÙÞ* ÷»R5îE= V5û¯ÿ§999yEÄI.ÊîÈ‘,õ"¢R-aì­?aNf'MNZ'ìì…ÈÓËý!×§–›RK &Ë)ôS©†3ÛòWiìa–J:}þ­íœ×$/ ÜASA‰bÞÿ×;æ5<ÍÏ ¹mžÂÈfÎëè?ÄKä›*¸ Ì8¨ž4HÀ«Ïðýl1½·ŸaÙ` ™Á ü[‘†êÿ˜š9ê»4ÍäŒkæ”ÛSE"Ú AS Õ²Øè—ÈTøZˆXÍÓ8j*˜ëÍKp™—YQ6;*å+{ñŒßËáÎò!N”ZhHÎ %"Í7D˜Ž”$¤»lo!ósD©ÏŒâ2£«øüwÁFu>:Ÿ`ÔyÒfD¢­ñ)¹\YbpÍš`›¡×[íº·±á«Z̾âˆ&œ“;Û•{—t¬PÜ"£©¾·cÎLMͤ‚͹ö²0 0;Á©¥> ž“»DM/Œy­€GñÈv{ÖÈò ¤ \R|Ñ,dÊYôΘìÉ È®ê|À>´ø_µ5úX‚{r¤?¹ŽN€æ®P‚ùÉ&Ïè*)&‚ÈóSYòü4o5|*³îÖ\ùÕ \¸>-¶(Ñcq>Ø<•H_¢¾Š•Ál/ÿ köÓ®YƒÝªhú¸ÀšýTbÍòäЦ€šËäÝDZCÙåRqNFëGõO9Œ¼d¿¿{Ð;ž˜‰ÌYOíÝ{ijó8_WD##…&åkÀ¥Sñ:v’€Üb[J2ò æh¿-vÛò‘—+ké÷hÒ%½Oiš¤÷Yz}é„¿Ú~Kà,ÅZ©³Û§>,K“zؽþä2¦LOp€He‡’³ŸÐ—ê“:ž}ž¦ââåKqKŽß;'mP‘¸{* »Bh`^€Ü7ü\cwŠóÑT\¡§\®»vç‹A;åü]#»dýLÂ~<® \ÅóÖwwrÒ`{Y¬ÞfŽ6€´³‹ÔÔ3QiˆU-hTÝ ³ùT¶GÍÂq’¬ÅzÄb=÷èS^|Î eWAì®>/TýÇT·¹Ã’÷`“\Ð ¹¨IÑ1ÙÑpŒy,³¾IÎM–ÍFñ`Š'7€u’e› e÷=R¶Ç)¼R–Kwt¼:ù"Tw Šé“Ҏǧãó`Þ0Ôx|c‚˜Ž~íšhðW¿°Ô2aø=^~þï›/—“Û{.^*ÿ·[ÿ{cãÅ2ÿï£\Ëüß?õåæÿ~ˆÕ?oý7Ö^>oøëÿù‹åú”KÉ+žÏÊ›ãÎV?Èô¯‡v>jië`Ϥþ¦£¶¬l\x™‚+ˬÕ宿lÖj+s©‚[ì=&©O'µ´v_y¡¹"O¹\ɿ٫E%ìRÁ:®ì&ù2žŠËÉøvz%c€ð] TVÙ;”SoÖ:Õ?<øeN½srW=¦™/ÊgƒeÏ5>ï£w¾›l¾»s~sàíÝ^~ïÙ+:ÔÚ§\6Ò!—ÃÖUñˆé‘à ¯ú_TøhÌ)*xY#ãøÊìCãu2Âì?© k½%«Fr°Ü‡Ò¸?Á<8c™ß"æŒynuÄ&ñQC&ž]æq1#“¡W+ÜÇ$cY²Kã9GžMìM¢C¿Â—£d:Ä2'fãá>䯙r߈ì@Åoå¡ëvÈéî[çwÝ]zeåmØD ¹ÓøÅx£ÌËóKþåZž×ù·¡{ä\›xg|‹Çe§T±UÉþuÄ31ØÎ˜, }¤zt5Ä0Z,î‘CxÍÝ/}bm$¾Ébñ%€‡èa~ ÊZ‚±§i\3’ÏWãÛ‹a:·ÐeLª%Ø—1ÿ0”“ëɘ†x.—N ¹úxš*²Ñ!Ý‚’A€|Œé9®0uÁˆOÞâDÜǵµTâáݧm&6,è1ˆm¢Ô ÈRe{ D\)ÂÂÕOÕ˜èá4‡D·)NFï¢_XÊù|˜*É]l<¹;a·óHç˜Ý4OvO2ì›ÌüG˜ßâsÏ^{éé}‚ü1 ô3GfÓæP^^ú¿ÌCjGå|íÊX%Kûÿbÿ Úÿ×›Ëús-íÿ?õeÙÿhõÏ]ÿÏ7^¾ð×£ùr¹þãR»d‘ý_Yÿ;AÓ?Y4–VüR×_ÖŠ²ÓGgª_Ä>¿´ÎÿAÖyU1î‘KÅ--òm‘W¿öˆ^Ž­;9ö÷ÃÚ^í8coßÝy<{ûŸÉ^þñ9&jßk,¹aÃS+²qœ“ Ï[’Ï1?ÒݬÛdªk—;Î@u¬]ÇsÀ–TúÒøußiÐÚ°×íË\ŽþŸ~ë_¹àúc}©ÿ?εÔÿêËÒÿhõÏ[ÿÍ/Ö›Þúþr½¹\ÿqñjïo÷Ú?l€üú[{‡¿¶ŒÖB©OÐÅ¿‡QIÏÈ.í宿¬} $é2Q! ËDgHB’ö:|”uŸ–„“ ÿ=-ëê§, ´L(Q8Fh¥–θ*£¢ÆpO*?v¤Ó7ñê5èæ7W} äiq<ÏWŒç9‹§üã·jÄ/É@-|šæ Ÿ )+‘øJ¿s!n˜K,´8Ó=™/LF"ý+}?d?å ÉVp!U |éf’\Ãv;üF6 <™<—¹rLÕ`«ŽgoŒä8…¦EÿËäX%UMã£ÈdÊrg¦Ò•Ou­d|T"¨=žLg¬Ô¿…Ù%Í’Îaa8•ÎJƒ¦kš\K;Žuêª*žÔe÷0©=vk„U•R#Y~ÑΆãóßWÓédv>ÅÒñ5´>`$\Æ#˜Ï¡Î°MákO©gãa‚u»¿=áÞYìSNñ©Iu`uˆ««ØXy®5À'˜$í_#bn° Öõ’Ñ—ñð ײLFR‹æDÓ}uN.Bð ”d˜,2N=3 FƒB³¤sߥÒÏõŒ—±dÐÓéM|žPBt ]}˜>#K@ðÐ*ÚÍ—åч<-ž‚)eö$¾Ωv™!SÇL_ԣל‹}°¿Òk`fù€:Í·|0¡+Яzqö>ºZ^¥Òãg´pÊxJÃÛâø2ÓÚ±ætZÊbæêÕaîs‹É#¢TOi›Z›eãõœþò;nŸ™[2-Ù2ß¶Ì´ £ÞnïïtèG¹¥ŒDÕ¿_ ‡eëÓ®yÌ”C4s Èd6– ýñÅEržàê-7¨bs¢H|ÚE#§±w,n-.rw>ÄšS Ù_äŒ8ÞJ:;«âNq9é_× ¸OÎëh³CûM¥yƒSÚkik¦Ú‚ ¸Í­bÀ+íÂ$€57¥Éè|Bf3äM4‡'<6kÞrûZn`Ô‹Ò³FO»Ó¦û§JX©ÓŠÔ/GuRç÷©÷¸qÅ ¬V”æÄ‚«•Þ .Vuêâ#ºeÑC‰ËõSàßÄ+YÒæFõN)§ ê:Ô@™ñVnªòҼ¡w#¦ÓBbb/ëhÐÃÞÎþ!ÌIëÍŽJî>œ¤ðï)• y Šî;üï4нE£‹“#9#•z<·«¹©É ’øŽ¤ï‹žfÑ! iuÛ» gñ3½X–]%v†˜¤;ˉ–kÓ¨Sª6Ÿ“²M “J¹Y¿E0/UöÙ`ÎqÙ”"™ª¬":˜1 ¨5øtÓ¤)|žŽµð$  ¾ù·{L”×ÔËÀ §E/4ì¨ }®ÅoÊÜóþ›”R„iÐD YÄS´W?æ§±]ÌßÏàÉ\?ç›qJÕ,mÇè &’]Ç,aø”ü˜D•f²B{0þˆ|¤ê& “°s7aõfvãQþfœ°eƒR4ÄÀ¦æt‚0¾˜Üw'!ø·@šÀôö,S ˜|LÛ8Íoâ4ÔÄiÝ8lâp Ž£i‚æ©æ˜bŒ¡FÂ0zdÀ®'©®¿5ߤqCVånÿ"Æ %¬h²î«ÇÈ2Tcþ«C†Ð)§¤åÍ®–‹ƒJçšUÃ÷Å؇q…’»öÏÙ ÏVÅ¿f1Õ³Ö¥™ÕÄ_ûç ÿ û—˜!ŒJ.ÆqŠùÁ®âá*@Æ¥°¤Ý] eYÍÄ5á´½;Õ“/Ì’Îfß’AP{œûËcc‹Õ X$¬,^?y9 ú "bÂéÓ¢Äv&?»|ò^ZÎI—è¼Níçô™PQ3¶OƒÉ™ó)²Ù‚RLÈø]´w *ÇT‹Ò™åå—ö†i>çdZÔWíæo@ŽÊM[³’I•ícM}ZáñרÓvµ†àÔ´WrÒ'f‘“—ý¯†œœLèDyõÎA¯n†È™Ó+”À*Ìw#‹æ3 ‹‚V„µ¡„;›Y‹Kôçg@?Ëwa@? wþ³0 ÇÏY˜Káé‡ä]oQ5zwò¸,íϹjOŠ–­B%üCë$ƒQ±¼ ƒ渔ÎÂ/þ9Ür}º×Ï"ÙýäÎé¦6zòWÏô+SYk_@;ƒõŸ$Kµÿ1Á Àûö¿CüÇóµ¥ÿ÷£\ËøŸúrâ?dõÏÍÿ¼±ñ<“ÿ¡¹ÑX®ÿǸxµçèžR¡A; ÄËÿ°hèöaûC$¶ö¶wàr„À\Kű$Y@‹ånüÙ£K´‹Î/%äúKF—è<¿îœÒVR E}DóãJò¶uºèˆœÃIøÞ]OGXäµ|TŠö‚չدû{3YpâdáümV¶Ü AðÒÈ æÒ¤L„+t»”Ž÷ò þù5VÃBƒ¯[þí5çvÛ»½ê¾Œ¾˜>õòÇ?pù Ì¿‘Œ.*â?øn«úŸÿ´þ£Q˜¸YLìúœâ_•ÍàH¤˜«C*䫃¤Y9ªÖZ5Ù¹}o…ƒÞÈ ¯Ñ ?Q®Ñгd”L¿­Ršeb2Ä‘éZ¾ö¸Ù<–I7T(N‰H’>嶉þ(H@ú 7%qio”ñ™övhû 9º§šyf~ÒÍW5“Œ€I©î Œ(Ð… »|½ïó5ÈÌ’ò†¼­ÞM·Rhå‚m[µøå«Ç`˜ê©Å—ŒChÒ|«xpÖ4¢Ï¶§<ç}gqXЯ°Dâ9â]̆Ê›¹£ø'Ýî‘ÔtŽ!² °h‹Ý!eúz­£ƒI>ªÌÕVç%È24˜æÞý¢s|“R–9l+Ûd@Dy×ê‚À='M»ó¡³‰îþ^çþö´0˜²=×—šä¦9©pº­;±ôÈ.r@ÎM¿žßÔ6æ`ɵã'ŸžÁD%ܦË:j¤­N“ öŽºð÷¨»µÿmäHÝ{ðšV9€ó—Ö}Ô2¥>{Éõ”6žËaGçUí»\à, ýƒMž‚.RÆKØîûÿú™16¼ó¥|LJ™ã;3«ÌÊA€æC¦Pjl#I"‘{zVEOrè–¸‚Meâ¤h<™Év_”ñÙ±ƒ÷èä"p®F€x«¡ã…`EW1ïx‰Áã¿+þñH uœàISø aÞ9L¨)y–µPSæ4Ñ}^†ç;þá]v¬÷6¤g7¡ 58[eE»Yë¬pщž}èU.­ø½ŠîBÚânH¿Ë‚}àU´ß oágáÐu u¶­’iâ”h Õ ·6Ò,¬ŠÆ,‰Îÿ`ÉÕ_,£y£óT뢬d–Æš©ÇÎwU}cË(鱬°ÒP¦¹ˆõ„HËÊR®FqV÷e ü=,Ðè»°tEr7wÃ>kðßP1=rê;‹B¿»ˆŽù\sç)3©0IY†l‘lJîªü³9`?£©“äáÕâÂÝ»\‡Ê²¸dýØGè :ñ¹¸§æ#]”g—«÷Ù™ÚñËPàŒÍAl­Ö[ⶤ+‘ïÿs‘~ýÆ£A|ož¥üÏkÏŸ76M±ÖxÙ\[Ö~œkéÿóS_®ÿÏC¬þyëÿEsã冿þ×Ëü¯rñjÏä=zÓ=ùŒÖêÎöÎv…,åŸ{§‡;‘ñêýj*Á˜®ðòEŠ­ƒ½÷Çä´‰w6Ë¢t §˜;êèè3ôºó½nYøÞfg»KoEæëÖ¦n9Ú) ¨u =Ç®œ~îµÚ{ð.îñ0ÀÞ¯åײ`ŽäãbûÓçc€ØÞ…Ží|ÞúØͲ$ )—-3í–¸þ²¾PÁ$ºèßd9<áBãõ£×±YáùĦ–˜¢me.)ô¾ Õ©UoÓ¸|:p2箌ùZŨø>¿¬Í ã¿äãé´ÂÈ¥W ïÒ“kûT%&N1§[òaà/ò“d,ŠåUæôÂáp9Í%_A.h½RÂûL—Wòö¬Ñ ëGº i÷]h:Æ%÷-Æ×2œï,„ËN¦X¦<Â_§“þê ªe©N”ò…r Â‹H—š\·©[ÁˆR(ÃʾÅôi|Ǹɩ iª{œÝ³#§ú8—<È€Ïi¯ÌÍrA•Ÿ}"@í‘ÎsƒÏ£Éóaõ/’hĦû×ý¯hçD:¯°ÿž“ðHtcB5/“C ?ÎlÓcׯÉó,:cÒ©Š'btqBEÂ'qЉŒñ(¦ñÔ¸ÁŨ?‹‹$TÖ?§_ÙN•«+¥YqØW§ë¥#DÏx ¢Ï´$'å,Ö)¯½ÙÒ†ræ‘Gä…rjÃþ¨V¥Óä!o%†3ÂÐToñŸ×âi}íº úØÙV¸³w¶Ç³³Ì6ÞiÉe<ÏRïîÉÓH<ÝÁGvpü€¾‚¢h†¬p±Ÿ$—WÓÕ+˜´ULÊí4ž—ûØíÈfÖeÑkÿ=çŽö>ï4¤Æñ»QTÎ1ÜÌêÕHòW¦gRRSÝ¿Ž*œUWÖBwTn±)L-Œ³¬“ÙÊlÏ •>T Vy+…ÿc†^šJ5QήkÊJ ºøàXõtøÍÊ—C„rtènÊÙáÖ¢úaÚÏ'Òš8–ñTôÉ—QV{Üb_EèHÄ©ìTm{T Dz¥òÆõaÇ6©ð•¹Hî+"ú‰óÚªÈb=FrÑ)d¥;ÊL7ÍP˜ _y¸‚•òù7QA*?A§ò[K`UœÐ‡ª›Ÿ_¬^¡i`øž!:ùdÕ$# ⯼ °ãÓo7´œÔh¬@„¤ç“äLØ8‹)T…E® z‚UÂdÄcʺ ºm‚åŽØ±JÃÓÛ"’ª­§õtêbÔµ"%Ñ«ª5±©œVĹêR— [šr€¿Š`äÃäÉ·ÅIÛ^v‰žâIo2K§Ï@ } â~~:†aˆÂ,RTZ[kÓWÁi?Θ)ÜM¦ûPÒM¦•ú,¤ÃþõùUåéÎMš ¡cÖ¦ÃÝnŠ'»|ê "ñ{]½"”™òÜ0}ÆfùMö‡×c,OyC®$(î+ÝH ±¦¸5`'v$lÓõ±€~^"É‘¶š"U—“º2ùN ðŽ`¯¤LŒ$ÐYÌSäŒQ)/âArni—‚ñø˜]â(6_i÷ÃfG CF°â ‹³wÅ® ­­©!gF;¦ÀxŸ\š!&†U|Š7#›h l@åì?ýÏÿ®6þ/]äŸè[•xãë jú7ÐÔÍíg@k¤7 ”ôö©î?½OÅ'ÌrTkERÂèòK©Nö\PjD®EÅL©0@ XMK!øj:»&÷‰F}ûJ¸‚¾5l”1ä*£åM«¥ Î@hÕ °£=:C§80| ¥ëB$Q¦UÒÝØÉÊ3; ~È j^Á6¸tÓY!._jËLå_Iˆ;Ú±Ïït.¡Ó !sùÿäÆœ fý¡u2w44ß©]ÉSÎÈš>iÿ:·º_7}ÜB CìÒbúáZmjü–›†²S? ]˜ì„OV’©{2—ßööŸÛõ´á2rÕX£2¦Âœx Ú¨£¡äç{2[,Þz1Õ‡Pîñ^˜&ïUYJšÊ¶ÝýúجC%ôi_ -U¶M°l8ˆï+¡s,æÈšê.è„ +‰dLd†øÖñhßrAQ"-žö¤TL «}^#—ÁRßJ”•Ý6ÒÆ—¶]~N1s7€åĘ``)±]#Ïè¤÷›?­Ù# é¸c;È+áÒÁ©â/$=‹Úõ„ ÊÓǃ8èc­NJÛÓþ%Hi ÂýSªr 8k¬­™ãñÜù¨(( ù«C‹¢Ùf­RŽIþ-{¢;àÿ>½RÊÞq‰Á{ça(jãó«Qò/<0¯îögÐ_$Ýa›²,ô¦« ‹¹¾Aò˜«x¢E ›é•u@|ž¬œ5è.Ää”NÇ7Ö|8‚„Yƒø”:8Äç Ò!ªë°¨õ‹·H£A+APoÎz0N JÉe‰‡Á×Ïÿ›¬4þ¯*þ¡GUÓ·åzÄBFÕÔÊeFÅ9Çt˜í§º†ašY³ ÿs` íéA1j÷§µú‹|B\«ÿ"=â€ÍZÒ„HE[§Xvn\oÖBãåêû±íµ>vp#V„‰KÝ ä^lm9èZšÛg«÷£1ˆéÛU@­(Áa+ï-–(ph¯@FËb”¬Ì.\9픽¨ðÐZ>nc6|±I5Béö ¿\>NÕÏÓMÀÒÀ±®Mˆrù ͪb™8·Í)ØÉDÉP¬ÂÂî'½ä¸wîY,›$Òv%® Ä'ßâªI‘ÊãËþГze—ñ×ÇJðŠFÁf$¶:=N‰“ÏÝ^«‡uvùƒ|7à§|ú=›áŸÓý6z“³>å?'ügÓ%µzŽÇÛŸð>Âý ^ÁÏŸT?É·1íÒœ™éäó ùŠÃ‹oÚÖÞgþE~ÆßóÁìv#ñëñî·ÖÕ±>ú츺œÙé!DˆF¼™PAãú;€cÀ«Â9º¶;»ê+H‘äçüžwô+§Ô#õm³ÕÝù £hoð FÒ;j™åw•.?XfÙí:®¯ûã›ß¤šm"gdn¨µî ŒwÇ0§u9@²Uóç‡I§s´O6¿¶¢¥­ýCõ9|´ó!&€"ç‹€°äïùP¬Û>ï|ìýª_bÈë:G\{Ý'Ìç#iS=4g2d÷áÁçÎ8á‡ÖXáëF1 ððËHØ=ý[AOm¤À£¿Í); |n÷ŽvÞ J­_hÉÃoùMé‡i++ž¿©9D™í‡CŸÅMÈî8³U4zØg»=gôL`%ºç’kq·d3L~nS ÎŽg ¼ßŠæ‹'l®¹½u@Hp ¿û€¹ìµºŸéóç¢-Ð<ÖüÌ ¹( üø±µ½ý±hµ\²òwûܼ‡wMGÿ´¬á.arc“0ÐMÑwصó)£°&4¹ÇÛÏH·Ö§Â:I^= ]{t‘y_}ª©OòåcÒµÕ]TV•lz3ãÓRãVk¥%ì`KqWk0œÿ²ÇM¤+tvÁ`Yyê0#”S}^áÇÉ’}ôØz”R{h’PÙ¬ð@Ù@°¸ïîÂæ1®Íe?K9XÔ>¼XEF×ΫV\Ú£`xW œ¡[Ÿr^ù”ûŠ‘B ¹dî‚\ºk$â¼»¹¯æþîvÄÜ8ÑÓçHpæOúWì³æW ÃVNL«åT1d24)W[)cTm$C#úk±ù9«Bú¯Â2;õŽé8ñkŒDoÕj E Û~­ö«<ìÆU5X§+*dòûvgRqä¿”òk³‚|‹a— ǤEÎHËYRvDÒâ<>û¬Š«œÆ”Ö8­4¢·Ô|g«Çƒ]Ó‰Žò–Z‰Ú»NEiˆŽ{wê Ïí«k\69‘³µUî v¥jô‹z”Í+ä%»û¯ÿ§?žœœ¼"%ŸeˆäЖzq©V1FØŸ:'“¦Ž@6&½íÅüˆþmîSËûCEå˜ ªdçO¥vÎ,Ì_¤È‡Ù+©úù·¶s^“|)pç”óôe8¢ÝP°'¼¯M…ÅœÜÛæ)ŒÉfwô¿óÎõÎMï”[i‘‡ÛAEZ"°Égø~65˜NJ¶½ øžDn=‰\ø·"M5Ôÿ15©ÔwiÌ >ÈyÔ80*·§Šz4´‚¦Ò¤+#jÚÑ/‘©ðµœ ªyǼ¦¬–ÊTåÌÍ™ÈΟH¹Ë><ã÷Âl\=ĹSK C¡Ü¤92‰S‘—t—tâ­p~Žèô™‘R\.uŸÿ.ØÏH猜OúÁìH²5>P%-KR®YÓkó~ª¤éI›øª–6³¯8ò §éÎvåÄÞOƒ·Èhªïí˜3–@Ss¥­`s®m-LÌLpj©¨ å.PÓ c‰+àP<²Ýž5²<ÈQ—D¨_4 Ù‡r–¼3&{rB ‚µvsûÐ:BÕVèc î!üÉEþä:Šþ™»B æ'›`<­¤P\˜D|h ÏOeÉóÓ¼Õð©Ìj¸[såWƒpájø´Øj  D ŒÅù`óô&}¨‘ú*Ö³½ü3¬ÙO¸f 4v«6¢éãköS‰5Ë“C›^j.“Gt;sªAWœ“T¬ÿü)€‘–ì÷wzbcc#Ð3‘9ë) â{xÆ çëŠhd¤ÂD»s­<¢tz]ǘ[lsJF^ÁÜ(íçÅn^>òre"Cš~I-TJ)©…– t _mæ%pê}¥önŸú€Ú­R=þ^rS ƒ'8R$·ƒCÉâOèKõIÍGOSqñò¥¸%ñ“6¨”HjÜO•h]a¶ 0/@~®±Æùh*®ÐÅ.aŸ_Íóå¡‚-sþö‘]»~‚`?×®ë»;99®½œ\o3‡!@ãÙÕj Ꙩ4Ī–8ªî„Ù³™íQ³°Gœòk±±|Ï=ú”×#‡sbàUô;ƹϋqÿ1"Üÿ@¦° ùrQ¤k0³éÁk>åñtÊfǬœì/›!+â=áO²³5?¤0Û|)â‘´=bá ™|æ S·£NÎûƒuzÙdìãêH?˜HLu5ߘp¨£_»f(üÕ¯Bu‰Áýüß7_.'·÷\¼Tþo·þ÷˵eþßǹ–ù¿êËÍÿý«Þúo¼Üh4üõÿüå2ÿÿ£\j»ö<=Þw¶zøA¦t=ü°{ôÑ’8¥°Ú6[oʦ¨V—_Wd™¶ºÜõ—M[m%%Up‹½¯4ê¼Öö154W§YpŠÝ‡Í­û'MªûÐÙt 4ºw¨>߬uªx´-èóþ¯Êu†v°ùçsø°÷* µ“ï¤q͘e¿ê"GÎY(AÛÉ—d`rÍž}£pRÁH®•ž>DÿÂtj”*£éžÉsAvB9fÐÛ’i/"ÔæRœL_„†Ä”š"0Uk4¦ø—ñ$-kMh«åê³·cvgÖ†çf˾Ijuv9€g¯‹#Œ´Qˆ"Éì3Ç@8ÇË´Ø– œÆ\vô'œcLsŽû^KpæÉ{påºÓåøÝÞöƒÇöÿú5_>_ú<ʵôÿú©/ËÿëVÿÜõ¿¾žõÿZ{ñr¹þãâÕÞ=Þ<:8îµ;;~ lƒÎ±ôÏ*wýeý³BçÈ‹8\ΖOd]ûSù÷cÈ}J8TÂr¢R§üš^±¸:bZf|Ĭ.? RÚXA‘Üqäí RvÕ>Ei¢Üæúd1þ:…ÝH´7÷A¹Š¿ríx×ACÍ OùåoƉNã ;Ôôê:ž&çi$€¦©ÔV?O®<í¶s’ù'Iï °?…¼Ø­bt JÐ,•KûúÑ4xbƒ+_MÈr§°Úä\°˜Ý[ijޱV FîX%v2uJï§+2µÿ]ûòÑÅò;!IŠãj/¯Çòò¬®nþÂmßÅÔ3`‰™ t 8©´1ç#üq~¯tá×.ÖM2ºÜ)> ·*ôÒ*Þæ7ñï© á„Ÿ„W‰ëÐA¾û¡0?åeëgýÁHwÑÿž¯ol,å¿G¹–úßO}ýï¡Vÿ|ýïÅú†¿þËø¿G¹äníè›­íŠèî·öö0ühwGiF¥éϾ&ÃáX•ÊË÷ª@B@E*PdÝÇ“þ` º#R8ÊQ]«Tñ—˜\Ì›@š¶|•¯D,ÂMĘ*õ!ƒ>»bÚÿ±Ú È$µ’×}¦JúþÖ¯¤@˜ÓËlµ,賓¾,ö…\+l§Ú9%ãT·bêô Ç—x—§™*k]\$ç v¤C™z°æzSÚsføöÅ7UHuôhR²Åݯ#€’e,¶@Âæà4‰¹¼'ÝrF­‡,°zÌ4•â¶7äT–'+DixHœ¹`ž'ˆålá Æ1WDH Pᘠm±t>å·7£h‘«þðÂê‹>•Rº J}Xf“ÐP"r…ˆm¾ödë(nXƒu®¥Šêe|ûI>Œ¯É”Ê8íì6Ö*D1Õ0ÉDÖ¬ØPMJÞB¥(ãÂlÄŽùJobrüŽQjZùã)¹Cþ ï]9\ÔÇžÆüëýQo1ŸiSE¯áxü{ Kò÷XÜÆè½ª©9"6àIò}&e\Ù<Ýh¬ù2N¬…Ž÷ ½Ân¹vJ+r¢Ô>…ŽÀÓ×êÛÙ#>nï5WîoöqCP·Õ¾§L> ç¯Rùôò80o·s7ü ”RGÿ›ü0úßóµ¥ýÿq®¥þ÷S_–þ÷@«Þúo¾„‰ÎèËóÿǹäÖèêG ÿíSž‡Î¦Éò° gz­ã÷ôï!îmÓqïyÁz1”wnõq½Þø±HÖº™$C<%l†\â²Î =v“ù÷§‘ž§ï<ŒsRl˹ùg›?æÏ3Ò…|ü¤ÂýS§{ÔÏr™”Ž|´šàì\fDà§Î&ÖæØ&+0¼ö‡â2Å.°wô02É@²d¥ ôµ!çŸ%:8“ÌQÝjŒš^éWRÛ`/Jñ.½¯Õz0Šüw˜ÕºUÑJØAñÖ)WmD0H¯RµD WG&zà§c©žñ¸Í‘–Š<qûc£G{3ªçôà¼1ýÕ˜kñ|a:æq#ï1 Ý*,œ]œ@žC©5íîÀÜÌWS÷%U_ºþ4±ÉÈàÒ„ÜçIÀR´‘nsAp*p=D{-i…“¡x§Ç‹q:ùèrõZIÙ’ÖÕÐü>¸o“J;wÙ…]…Õ±ÛI2Æ£¿Ëü$©>låà}L/bi·æ]‹h¥ƒpJ "¤Ç¬ŸÇ&OJ< ûé´Ê¾FlY2mó†4‰o [Ty“RbØ Ù\r€ïÑÐÇÝ0ÆV2î}|1ä“ô¿+£”¹ô 8h³¨÷„eÓ[Žîúa~×UoÞºpòºž„8sðã#?*@¾¤ ²sàBÉŽ äx38wÎ`™Ü7³ ¹o;eq‹Ó‰Ðu—œ"ûÊ·EU ¯,âi±YõÛ×(6³p1—«Ø@˜sðžÅXÅèÌÌú¤$JT‡wî§Ãã‹‹Õ‡è´Ü/ðKtrNSü8ä@w.HMF P×<š}_/ :$û{@òƒà°hÊR±ÈP* â3ýŒÎT³'²òµ’­(ëwV6s¶H#¦A÷°œOê(»šOï4ìÓаGî°O¿sا÷0ìÓ:Êfòh `>Wb¬%Š¿§…}H¸¦µ˜N$ïN]æÍPŠ`_ií=Z¨€Vúk¥Yuú߯•ÑYUP ¹vñþ®¹¿‹÷%CÃ#¸_‘ÓáÓ»øáJ~¡nÚù•¹a[¬Šiö/Ð4¾à¨x˜Wõý¸7Ãÿà>ƒàÔÖô*%8Âgxð°¨x©Ê4j_ضnî~Ñ{–§k|©4^%« Jë‚ߨ ¥’¼º®šÜf¸1£¸)³µð6ðõ¿‹‘ f•d¥a¡ï¯F…`"~äï<6ó l÷¤wJÔÒ€ù·ÃŠÞOŒøóÅêÆ¯ô}ÎhVšöx4RfRàÛCަgø«æ·ÊóSÍêt|Ór!ÝvšaqçƒÎ5:£›Š#¹¯¶TW)øIå6Òš¬:Þ,«Ì-ÐFRûœƒ Iž£¶h\¨K½ù(þCí{¶*NjØE çc<ŒžJ…L¡;Ÿ ‡³tJ¹ Qqb°C}±åøkÿúf3¡Ñ~^‹¦\Ž× UãpGðé…¨À‚£ê+ÃÏ®éwõÄ>ñ|B-ç fGçÿf ýŸí_ÉÜÕOi_˜&ýaÝÕO9 ¾4QdÕÿy T#}÷¿EAxO< ›óõ) rJùÝt@ª$§ñ$¹L,á‚)ÜV\IOø’À~¾ä¡@Õ}aYÊEŸX“Fø]³ïýø÷°?é_cƺbKß§£ƒH ÿ??¬¹ÉD^kô°Ì¶,¼]>÷\ØõxÑjÙ»;²¬õÑ›],“½ÕÚ À]ô8|áBÔR8˜%ç¿K[ šÜnÆišœaŠ1ë”zÓ`¬ ¬Ô#:üÙ*ˣϓívwêu†mU˜8"Žškõ³« ¸.Û›ár6j“ÖÃEDWÄÓΘ<škŸFbµÉÚ«ðÏ*ÐF$o5РIJ¾‚zŽÂÖËm¨u³X/NÊôâ„l¨Ã}p1µKÖ6ªêA²!Yƒq—Æ]p4J®’¡Ä$Jy¸$j­¨n[ ÂG 7¦ß÷ñÙµyÆöln´m]\Cwn#aµ1W''þY¿ (Bȵy˜4§,´eÇêOZ/;cÕ¶‹õ•Â)’vì)Š$;•X O‰®ñxœ_IØG’Û‘²ÝðȘ°a±Ò|œœºÍÊÜJNl”œ<$JìnPû„ÍZ¥iäÎøÀ-¤ÂÍêµx7³ •Býœåœü;M½G°ÙEæÀG»G*¹Éà/ÄZƒ¬5Bí+¿’»Òœ†ù‹d°Xˆ²èˆ‡Ägžáj× å4²nÍã¥'yû†?]Ù Ðg¦+å§ÌŸµlOîÊ?-gH™èµ÷uåŽLußYW­Òëªå6j1ÂÒ(ñzb–Õâ«ê¡ðâJLå0sò˜aæº/™ë¡d®…ïšÄ*‡íEÿQÞ˜ P<Þ÷„âf¡8J²Üf+÷ÄQ#숣s8y˜Ïeâ+ Ï•kŠ8xÿ^ˆy6GŸsgåbùŠsÏÏòØvYÉxÿ{%ãïåæ+ ŸŸ/(ß/weAOq+) >Ïú¸¹=Iß=EE^^ (ß}uÜ•r­w%W¼Xñ9¶‡bä-`€h"ר ¼f ¢YÖ!òÍ“‘e3!ž*o=”½á;äk®¾ßâàÛ,y¾Å!Ø•¿€ÍÁè '.Jæ[¾ %ŽØ”«ùΚ‡¶8Ø/¡¸Šíd„ù!JG¶¥åõ€—ÿu>jþ(ñ_ëÍeüÿã\Ëø¯Ÿú2ñ_µúçÖÿ]_ÑÌÄ5Ö—ëÿ1.^ínü×V§I¹?P„W»» Ÿwº½H¼kuwð‡Ö‡eJôo` )ëQÀûð¸H¤VÈ…æCZÑLTÄzQÍÚ&(k¡, ]•}«TJ–"®8 ?bßA+ÀM±”žê¤ÍFɹ.žFu&1mFŒy98y"¿¹*½d”Sf‰4s³#ö¼Â¨Æåœ ¢6d$Jü4/žð@… µ™Ý@`é æ[û)Ï$œwø‰êõ~u{?ÚP*)Éxª ®V]GçïL—x€!\ó:$lLྞˆôJ•û²b}`úÚ8¿à"L.ˆÔ_7¢ì3'‡©§šöS¸ü$}]óåÈ¥UbÆYc†CvÙ"ÆíÖdñsià¢ð汸B(ùåœÌǬ‹D®O@ÝÄ¡á1F6iX¼É-tX¦Ál¨ï\‡ªNâ/Éx–R¤ZuAu¯mŠäB°¨§–§¨ôչ擩Ò*“%¢ë‚ÇJÍŒ5»n$5'£dš=»ýáÀ"—µz9£×n€/1Â"xr@ìA׆À – Íz>Q2 ¢H­^¼eéb{Ô—þ%–º•Ã`*Â-IBZ·W¿œè‚º"íÁD*J!WÓÛ8JSƒÓyþí.cöÒ%wÐõì×äòªÍn¸\·{¿dO;ÒýqøMŒ`9 D÷ C{ú€œc÷û“ó+ÑØˆDã—¿ýM¢ã(¾Þ5:_‰Ným]7ôäÍÁQ洞…7±ˆ!ñt&Eäé´rG±Ú,ŒÐO(Ï0þª}€y½ƒð/7 BŒ)ý­ÀŽGOˆ…´¶önêÐãélÎ ?Ô#ñe<¬‹Æó¨¾.àÏÍM]¬ÿ­±ºþËf‘>çÝšw¥AýLÖzkNTLNÎÈ=ì& SšZa 4ÕÈç$ç˜7E"€T9 RŽ'ö6¶B ®þˆóÏäóöxÿÐÐ0}Ã!°JSßh+ŸM¾±þP•…C~¥!¹¤·ß:‘·ƒ>¥ôùLˆ+Ú;5½Eà,ÕÇG¿Á»èË-k}|ŸËj$Þ½ü>·özJF>ØÛ†Æwö‹ü\Ãv·[¡V·[Ýã}eÈË:Éòë‘|¬ 7¥½n·OïÁÍ–*;oÃh@N†Û‘è¶wt¼•°±,0óp5åœ|ÅxTÌ‘ƒxF}©¨†Aw!ôfo~‘Â7;øX¿û™‰íÄQ»¢w´Û}ÿ½„ÿ˜ƒ«ñF` ZËϽ`ï#­*nóŠÄß´@<@ÎÐê™ÔQ|üµÕ›;;qðaçèãQ»×ƒÏ›§°{žHd6×ü#n;ˆØF±T£'×BÍ".U,“ÏXÛ#öýýq»gg\4^¬¹¨²aíª2Œ=¹ë¡ÉÕ3‹4U1Ç î kPü ’`Åyf=ƒ 9÷ªv–ƒyõ£go/9oÍ»Ìn½ÝÃîˆwz Ÿg§jRCÌ lT:­Ë±¨îï·Ú±wpp(VM§º ´­G0˜ˆ8¹løE¦a˜œÂÉAÎ?od^ÅGL·Õ© 3 Ð,¬×,h1®ÌZy™é4Ÿç wÔø%Û‰Á2o ÐÒŽÞF|wž þ-„AZ•D°úU¬¡ghÛŠ/ЫíZl³†P“x;Üiõv¶ ®ø°³Õ;8Û°ãnÁ‘€õ¿µÛÜî`ä×}Â@íîl+V/×ssñôK¦‘ŽDG±uºµ×îìê=F·0*B"ÊêºUHÆþ@‹/°øŸÙ=ŸOv¡¥û…ßG’Op•ëµ³ü ‘qq5âÿ¨h·EY‹… ÿ yÕÌ®á0ë‹Sz”'Ûßt¾Iň`øû‡{@udœ(¥t{­Ý‰žìfÆò™ÃLˆŠw~©Ft´Â"B›ª5kÁ¯Ý¬›YåOØ™ÜÍ$ÈÆ^|=½X€5²ûJ­X<òã Úßyõ¨×kkÔH:ø¦ÝÄÕíÏú|Ö(+$¡Ù›wâA׸2ݬ[kˆËƒîàåœÿŽG?ÊùïóÆ2ÿçã\Ëóߟú²ÎhõÏ=ÿm>±î¯ÿf£±\ÿqñj÷Î:ùç¿Ëƒß?üà7¿‘;öÂÛËÃÞåa¯sÝça/ôù¯vØK6÷rÐ{Ðù±zñÜëO~Ы‡>è]·>îqëòLòÞÏ$щ·òp2"v”?„ååCQvÑÃCøÊ= 3žûDSîh÷r–Iä8߀©š\ž_ºóøç—ç Ÿ\ª÷ðÌòmÑ1òÚäòmñÙ¤ ïˆáåyäò<²ìy¤$™…O"Õ{÷~ù¶ÌR.8q|k4’„¶sTx°Èlþü쇉rR>FTï-Ä“’ñ/{€èœÿÝ|ûaÎÿÖ—ñ_s-Ïÿ~êË:ÿ{ Õ?wý?ßxž=ÿk.ÏÿåâÕîÿán{|¸w ªË© €›øwsyrɯ­£Ö–cýC„å›ÊdÕ¾MFé"'óŠõmVîb~‡§â||“`šó!™ŠU†þ¾˜ÞŽWõŠuâÇن蜡ȟ7Kà!j°cêOc¯Ö°O”º7ñyr‘ÈÈlÉ]mzN1V›N‘¥×âéñS™¡ÿ˜²cÃkýÑå gÑ/^漢÷èP¥àáUÅ+ ÂÜ~ý×w½ó@ÕÎ?_룊;W¿ËÂíØp[Ü;§ë™’tV;í žqšŽHŒG²âáÌš’¡[bîßÄÿÆòßÈÎÏqѨ†¡‚µgÃÒå Õ¥ÀæÂz¤r[› ¯ èÙ Tý£CÀMÔUY³áXÛ¤r©0³éÑmÞÃè6ë );º{?ÈY,kÁ#‹½ƒÝö–sB öº­}0){‚À·³­4ÝÐj¶žÿV®þŒé¯î¹¼ø²õ¿ø€ÞAÿk<ßXÊr-õ¿Ÿú2úßC­þ¹ëîmxëýåóËõÿ¯vWÿÛiZêßQ¯ÿ4—ú_±þ§ðT^Üi Òûf*æ2N.¡Ãýá,Nù$¶‰…Ù›"ýv à¤aS¾®ÿÕ!PwþÛü‚ÊÆÿÍQH#˜Ýà p›ÁV`¨—ˆ£³t<ÄJ+tƒu9šàké5Æðùï•8 .£Á© U™J#jTýBÜ12ÌÓ;x+ˆÇYiZM¤Em”Q6šØF‰Îãôà²^‰IÔ ›ßºp¢óãèÜI—Ô×??ŸQ#ô$ñ­˜ oRqÖŸLð4ÃÿžÍFƒxr1ßZÝ¿îC C2ÒB%°€zÝeôÚóþè<e 2i¼`€ab×ð.Ì@«¶µºYÛü»¸J.)ÜtŸ³½…‚å&ðu:$~6B–4¦fóûtÚ(𫌸UÑ‹£8°W‚\Õj©^èú[œ÷ÓXE>|áñâPTíp>ç†AJÄaܾ*.ú< óòÿѸÀÿÒUr=*1%ˆ`1ú°w×p¼ñ×sè± ´ÕxÿŒQÓ«1 êàöü*¾‘]½w;AÉŠõsjÕ»Õés¡Ì Ý3Ñy…PTXH+°ί­½7Epð>Áy±½P°`h‹‚ ªµµß¡±Ùö›HàGÙ¶‰Þæý˜`Úû£P–ƒC ?£Ê|y» 6Ct÷É bE`¶ßЫú‡ÿBÆœ7ñ=tŸØ„÷6Õc›ê©Þ¦ã„N¿µDÑsÍ@ˆ?|ßùôU/\cŽ||+ó¸àœS/¶ßp2MQlÚö›¢˜ã°Ó°DqäÕZÍ$}Óçòm¯Ú¦ à}Øowáë&üPhîìÔG=ÚÙÃÄaû½°á‰ïN |híE¤šlPh»Jûxpô.mù§óæ`Aƒäz½ñc›$Xëf’ Es­Ñ`¡Ä…€ÊØ1CÞÕ4݈W5Çr¾qjpúå”wì”:Ae³ëÌ8SÀ"ñ.¡Îá¬ËÔv@ Ù7þþëèfÅóÞØ’¶åßõ·Éò Qwc#ïæ'L°4í'#6£&S,å49oRY`FYŒ.fi¬lWRõÊmU£‘öØóñŒmг±¶#ø;Hú—v$OOehzÕ'»W Û.åþJ`úrB„¸ÅH ‚Ñ^J}q~5N¸ÜÍôv,¦ßn¸MŠ,rƒ”ôºÉÒ7´ŠôÏÍWRLû¿cÜQ*R}P0R ¥ƒ‘¤„6]§æ¾m¨LgÉy=]†TëíÛ+˜ 1!æä§ýk'îÄF]Ÿá·¤©v,ÓxØN¼QOÖ¬ž#©Åý5ªýmVÿ;¿J0+ ®­ ¶Ìj Ù÷9™JÞ:ò­n©#_ŽdV†øÇkñþƒkºnMÖ:ÍŠ5Ëg0fà¢iLiÊ@É‹ûô×î¤Ý‹l1IY_ÜŒ¢¤ÊoUœ1€4çÄU]ÃÍêkZÅ¿U#µRËß’³‚›4¥;c.-ÐÔW>¢–úÜl’²cZ„OÁ¼Ž$²í÷eï_ËÞ¿¾e0£1C* 'gÚ@aî{$ª¦R&p³ðyÊpÕ‹ßf×7ˆØÓ.¯„FÔl¤ñ”ß± 1ˆ:˜Â6æ¤ùSPÁec2º~È&bÛT-®úËÕñM<2‘• ©ÇõH­$ÀB?:ûo¡™•ÒàÅüè³^>T®±èÁ@-m~Žì¨5“=Ú€—¤cî.²*:ôHiÜê„…²jŠËIÜG?CbpÚF^«UÏšU`ߺ-ú‰S àhÝî\šÎ&ŒÂë10!m5a†MŒ_W%ö‚, YRðUDÈ5Ò™2ÄP·q”@ÃS‰«n‹uñ®÷Ÿ´TOv|ößÕÇ…=ÃûÀ>uå lÊ1‡ÄV÷9ðií–ÙEv Ì};¾Á$Ýi3:ࣕë0ogÀq› L]¸±aÈ蕌Sû9eŒ¬Bç`ÃÂÞ ­ÁŸÿ.sÃÎF0Q)ôy%ΑkÑ‚Ër3±¤·D/Êt5âWöƒ¯Eã•1@Ó¤®…ÖŒËû_ ØÌÄ!3Mà˜iÌ;µÙß¡Á‹Ø™·?÷<0ëóÁ$(3N¥@K.ëÆ«Zëk‚ËïªO®ŽÔa¢Y~7•D0Œ/¦N—)VN–ܘú(³Hi^“Ù8)Û$Š”¯WU ^çÆ'^÷¿&׳k+ªõÉ0þÓ'øÙ`I/"Í=‘ñ@âI'*E¦ ¯Þ&èÓGî6®¼3llàÀpÖaó*«ÜiäÕÎ0ŽÄa¿~…I¿Ã”aê×þ®-9n=«©ÜGH‘âLc‡OÇDfø£ñhÕÀ´)’°*_›ƒUí©œtHrŸN×ëî×CX°SPyŸæò³i@ø¼tÄ ZqKb^2Õ.,)Ž&ó_³djQZÑý¡«D?Õ‚Ïéç”Ρ%ÑØ{Œ g_&ÃYAi~«Ln€Õ@³¼Ù™½4Sf¶ÌR#úB&ÖFYœÑúïx2ÖòŠŒ›fÏpzȆ¡•™ ”fM®¼¯Ã5 g¹¢öѪ\m¸)™U]ûˆ=rѦ×(îàýÉ„ãñ‘"”B9–ßY¡S åÔ—¤ô¦êf$ªˆGb‰ í°˜P8šØ;±º²º…â&z Öe Q³JxiØ`ýʉ;½0.'1º3?)ÆdP(_“úl8I%> $RwÖýð¶ÿ-µq,&ýAòµ†® hã‰oÒdhâ)Èî°8¦]á©'7É—ñô‰Šžè¦víŒ4g’˜ä’#Ѝ!IÔœþ"ÿ‰Al¯ÕšÿNÖý|Ñ>¨ùèWÔÏJyÓ¡Å*@kÓ#!ÞÁ9T4 ,ÑÄ A/°GÈP!Á, "›Bo$¾'Up“‘YÙï£áñÅÅBm —ÀoÆiÂþ £fĽƒÆ㓳d:•Xõºy½æª º£%á®L½aï4eW“Ël¦Š‡£¶h:Z¢¢5î”NOaaƒŽÌåÎE d¢òA=ôè:+> ô%ÈŒH‰òk]ú˜Y#ÄN†ö¢IL5”KÕu3ɲ®¾š wóÌ*³4RÚ²Q×µàgë&ؘ²ÆçØ' BaD:l2U™üNt‡ôfkSÔ"…ȰÙÌP—bÕš†lQFvéEôÉš@ì}Ƕ$A(¿­N¯4¶ÔÈñ  3Ç1I.¯¦Å€êA3šO®*‰Bûx@MÊÍ¥°ÅPQÌÙ7¿+ ÷œÏØ90è̹(Îë$²`ö6¬]³¢`éŒ4¹±ÌÈRBMþÍ‹ÂâE2Á­ƒ­vŒq¹u9=%sEŒüö¸\}ÄV“‘G`Á¡#ÿX÷Á˜¬WC)ÔWZrl¬–VTbq-;ãM—]0î0-ëÙT“è·ªfJ ¨!æ;y£š7ÑÎÃ+ï!Ù‰FµŠVÝŽüb>7ùsE~©úV6\Çý‘T4KYNXgp¼ñÜÖe{–¹™šT˜2r!Œò8a1 ¿ +¯ >#.âÑ–JamozåáÉ«{¿¨YŒ¼i ØÑ i•Q¿ò{59«2:ÃO¦[UmGÿ]À$£Aü5kJ™f¸™±°z†~ïÍì6qŽ;âƒùu?ѧIìó§ÖÖ GâàƒGüÒ “,ìé³kº¼Æ¥Yš,×ÿäí3á:58‹6o‚½çV_':ôà×&iÇ\£9?k¯–ä9Z¼!Q˜³áØ{_î& \§x8›Æ1ËS¼ñUI‘²‡û5\N‰ÁÛÕKÈâ ž´¦É5­)b[ÁՒޝ}Â$é4ÁÅ/RÍ©¤Uxã­/rq%¼Ü´‰'žDš‹ÕÌÊl­m,¸p¹NóÁ¡Mïe¯ÅšÌöGüÌÖcTQÏ.¼ºŠ ¿âŒi¨•±µN¿8H4/ €÷>›  Íýó–¸m£Ö‚1x‘Æ©œPúУÒÄåT2#‰ˆKl±ëBP5Up ÍR³‰_b‘ö,'«ÐáÃo¼_Y !²—ߎŠŸ‚«sàJ¿Ji4NY»‚±²D)Ê“LÖSÔTÇ:»Y3Æx¢óÙ ‹þ‘*4fAÒãWpØ8È[…DÀHHGÀc>YÏ„déÙm›ùCˆ£±# q8ÈŒ÷;f<“ñ-1SË–Jã'N€â84a †²+ûÁ`‰c䉂‚ü_ªY‘a–2¬t<^¡0ÃZ±üUç …‚ô1ÿHDHU€^«—VHOè:¬­DF`1ý¬ ‹‹Ðb×y“R "WzYÝs/ËCbŸ*‘'ezl!@Oië‚-²Ð|…›«ÒÓQ昜å3RéWHB¼öon&ã¯Tv æQá¶‚ÅȤ8åIàÓ1 CÜäŒÒŒJñtdp“˼rf–‡=¹•þÓèìéÛ'ÄyU.ª$oÝV†U‹$íE‡å²Ö—Ø'é&r±Ú 3ZTÅ»´†ØF¸6,šæü_øŠ³1in´+ ÌÁHcvHu+W¢‚(.€’S]ðÏDï{t€<ŒAKóé„3,G™¢ÕMÓ½Y÷«zj•¸CÓj謠¨?Ã>a?žL`be¨”\Q „ÆÚ`sÑÆaB§ãjôùDïPèzÝJë MÁL®¢´ÎSª„®8£¯ “´ç7”CH !6éù-èÁþ¦/y3@+—zD‘:a2¤ªÉ7¢žý^} Tö>®L w¿ƒ0·Æ:¶‚‚¹de·íþZýc1{£ºÓÀîüŽp4½Td?í¯L¤U€Ô OÖ`5G¯ W'ª£Ã)¯@r³*«Ý¾ÆåãzáŸyQ_vô˜]0n­À)MFŠqüÛ3p£úh:»@¢ÕÞþa#¢?M®0‡¹.ÛXcî0ïÞàð§ÈõóÝ<“n›ôõN±gÊ=5o~üz% ³ƒœÀž‘Ägj…`œ.f [jˆúÁQ¿îöêëÙÊ4üîêÜzj܇¶¶íà"vrQv13ëÁ›cŸÉº3˜žÑVk*T^Ö·&•졹'tÚC¾ÝtîÉùÅÄE\Hm•|0‰Ž³¹huü½D™˜ä1N5@_ò*?âÃêØ ¹2!,ïÄÁV6|( Uzü Î#ÛôóÈúxK@÷Ò·²èÝ+FÊÂx™‹š²ƒŒßý.Ë,éLÁ"”,X„j MhôgÅnŽô׆ä7 §ä:º«“nyïÝÚÃÞíñÅNkè¦Jõ©ã>Š[–•ÍHúlãz÷æÏõ輻žIï ÅÈtklƒÔÇÊžP}2œà•×¼ÖôpŒIÑXÅVÝ»½)¿aÖØÒVyÅ]Ðñœ¬ùJ3/_sÞâßÂY"ÊA‰Ö¼­ØSJ³ÎÊìÍšãíW#.Ô“ ›ÙýÜâ{ð8gڇƒš{«ïÞ¬4ê»;uöÉàÚbôY÷Z€­Âµ_&ä(ƒû<ÈtCñAFHÍé©îï†Äm”{Ù¤ÚÕ¬r^-2«íó,÷aOt9šÉÊiɰ<çé G4O kP\Æ#Š€ÀΔ†Üü)•í©—¢ÎFë‹Bfëã#Ër­'ru'ddða[ bçîv닼‘aÀ.B³c–~†N•ÃþÖÕ½éû¾Í, Ö³3Gb ®†½Àœ¾œ³T°#é€ÛgÿGJø1-lŒ:ç\Ú$ÌÚ›LÄ*/®Xh1´ÈYuC¯õu|3èK1ìý,žÅ¨ªõ–¯ê|¤?_õ‡_2§)x) ·£BN E¥ÀÂ4oJùêØ+%rmÕYÿ¤I^¿¡·“Úf¸½íPD§Ý¯×zá…Ö‘ðyCkÜmhnGË ÍEÆÜ¡5œ¡…†`VþÍe¼‰Á#¸b÷¹f°M Ònc, Dš²‹îa®!!ç_b€:¦æ×šíÜ—:™·:e^³Þš‡ðl; Ÿ36“¥×Â6ÌãsÈ'¡Fšà\Zpò„o¼ÌÙœ¶pA{Xzu-¨82¶¾H@µu{k\á-dý•ØtÜHß—Ô@PLEÞÂi}Zç­àµt ì,sw–,$ŸÏÀÂâHBÉäó7û²«^g™K¹ëwuwá®– å…ÙtõoóH-+ÑHEæÝ˜#geónõ°¤¿¢ç‰Þ™»9—aA!ÃpÄFÎÑ&ªeeq>Ò öÕc/9dpÍ|·ÐY]ëôjç⤌(ÒSÇ'åfDØŽØERå³þîZ˜vDzýUY<ßË´§9„}L)ÉÙ绽•Æ*ŽÜd\–§ÌïÌfžŸêsóÓO’ë3t9ù?k?JþÏõÆ2ÿçã\ËüŸ?õeåÿ| Õ?oý77^®72õ¿Ö–õ¿åâÕîåÿÜ^Élë`ÿð}$ÞwÛŸ($çî„_ö¶éçÞÁÑ}éÎɘ8'kçÏR<(äi+qÌi7 ¯„OD7â=àÊz·´™ò™€®Ÿó}…ûÁ_h’+²S÷Ÿs{Í@ò’§qeY_olß”ä†3!S)é3ãO?§À` £Í`æàµ«±NvS”mŒf©0Ç–©s"'“ÖˆüÏíG™G͘tÂÉA<y?§ò“uaÀ’ ,M'ß°P³“ñrƒEqÝ^¤;pm@6¨W/$¾ øÔw£úû±½èøÖydn‡ùù —˜16âËNþAO H'#õîg‚ù©t"ü«þ€´I—ÀUùKæŸW|ˆÖÓ«kqÑO†n-Ⱦí¹âÆã𠩇*aŽÔF(ÙÒðþ ÂÅd|«t#ÚÞ³0p0Ï* •Uí×ãA…tLüuÁ4›œB€éO’³‡crR¸ÞÆâh6Æ“P.iлpÆ#+…´«ƒK0@–2Þmý!»h^ÙH±‹»ª¥¼»XùÆ€¿u|´÷a/¿‡G›ô÷(møÿnûÃÖÿíì¨æøÀaÍ Û'hm8Ü9ÚÇ?Gûô+þôþ°‡@?íz‰w‘ØÛÅj0­†ö»ÛM¬"¹GߺûûÀ˺‡ðo>¸¯o ú{ˆá»=d7Fz;û‡4î|…¹D!©;;SéL 6wN`¶:œQ^Û[‡§‘ØÞÝÙß§Ü#[ô ù÷%üíövÞŒádçhs¯UÔ¡pärÆD v>äwWÞ϶s§émÀ*’ }ï`—B¦ƒC˜-ÝÃÝÂäPºÑkÊŠ.TqÓN¸!íèõ°&c§ù‡Ý^ ÑžÖŽcŽ ˆæ`¾ )éÚ£`‡=/rÀ6}°îWÞóëþó uéÖªµð»/ïv˾ü‹9št‹gZÞûÞ«[­½=I¡ñ” mO#±*í¯ú¹¢(Ú÷³äüw•ȶHU™Ø™ÐÎ= OYù!æ x²Nt\¿DV‡ž øgMÿßrÝ–5›eÚ.ŒxÅ=Dp»”¶Ú Ï1‰>‘bp®Ní6µ¤pÛ–@²‡E¬l»”ΪëÄ—,OibPÊýº‘=6^úòUª%+1ˆ¯m²Ÿ´â@«®¯€„Ö¬½¥Ž™ Q]a‡éfÎó«n¼y¶™ãt ÆÆ§‡f?š[ò-D¡2{ þ‹VÇœ^®è/«&<ã°Í¶Ü©)®’ëXuÔ" ªÊA´3åê<:ñ›‡'ýÑïÐgV;çìü¢0­Á-MO–XÕâ8i&9ˆƒ Î 0Š›%ÃÄçVí[Û¾+£YåçUv-ÛÑ?TÝ7zG} ¿õ|-ë¶Nò¼ÍÊͺMØÌq;a/vÎ"dR›¦ä¢ç[ÁŸaí”kLÁŠÅdoeºzK€•û·íB‚»>t6« m^É*ŸñOvqa¸@0Atw°ì0¾hÝÂA4k5xù®Ÿ@_Ä ºÛK$VQ?›+"s¤/¼ÍÏ¡ 0¬û(ŠÑ}|.{›d9¼OÏ1ø¦{ Ý)åƒ @Í}¤³ïÆ€´ßËW:ûRMw[EÁ•Z/É)Ô«SƒR<ñ]”^ð2YËr¡ãd%V®ž QÙO¼ÈaiêB“ ÏÛèºã!lTàʨ[D»7“1lx×Bæî<O§ãkµó˜% G+M'±å}ŽÂº²Ã1Ï » e&÷Ó¬+œf&.VX 7<Æñ̸mÏåHˆíæ<æ«ÏÎâÁ¤BŠ&,]ƒhÒ~j ‹eÑi¤þ’/„¿¯ØZ„|• õÎy³ýÊœ°G¹£­¯`ñ^‡ ˆtµ±bì Ñ y+à4¤ï>Æ*ü9l„æPãu(@AE9ü‡]´f(ÿ¢ßošÅFpCx)”Å«ñêÛn¥ÙS]T\=3Óµâ]Î4®È¡í3Óã×üÇYˆ~{ïÜ•/³Œhá!rVk°›¸­°ÀõÎyA¿S­od˜éË€Öe›Zò3#^£›&3Ìô[ Ú"ŸÍ~ASqL¾Mšõ¼®·åÉb$Îá‡2) –±ÿI,Ïâ¶ À*\ý-(£ó‹(šg‰-¶”×tPþ‹Í¹›~Ϋbþ-rY¸ÈòÜ€K7šYrؼúáÑf&:4ºSfôª½ÒÌÝ œNÊ}õÄî¤üã­æzŸH‹ãÕ(³Kf%ÞS»”X”[^¥_ª6½)ë«$9ý&½ llÂãÅYªŽœqÒ)¤¢ðdpÙž$3ʲ­”ÒP'~ö¥dáJÎÊ:ð¢èsŸ|QaÀ·ýTßÌ‘«4[µSÈú1s%¶s¡¶Â\%¼†¶é"þË;€Ã¸Ê½§·ÜœÿU KeûäœÍSWu_áˆÖì–ZN/לBo‰¤VG¾%·°?.;Ø<Ï;!rPBS!ƒBÜÖ¬|8R¶.× Vw¬—I¿)ù2ë2ÖˬåÌyÛ<ÛÁ–ÔwÒeÊ5<bÁ„.ÅRgzbÄŠÜ ~ÉQs´yF~p¸®Þå‡ßrWþæYoﱦ RÉ_ŽâUÞë½ìÔÏO’|'&Žrzþ@éN‰Å! ðЛzÈ:”:e–igqyÐ[ [DéþÎdv9•w Ïã±@E.Wk¹½Å™oDRH¥Ü\¼ùʈÆì„Øà:Jiû¬Ù¶MTw•‹>莞,¿Û©µ™ðå€ó–J X>¹…>m=åªòº5n«£<ŒT¹8iÞ+Nüˆ§'Òæ&ª‰‚–Öó‚–˜ûÖä ÿöÞ´©$kþ>¿"ß7ÂB ¦JxëÏl¶¶ H6nn®W«¨<>€_ôKŽÑÒ² Eåôÿ¶¤³xûC¡!¾«ÎëbΛXZ_ÃX†Ùè|v!Úzd<Ò $Þ4òÏåå5ø skOáÑ4£&-Û¤¸­}àÑ„óAFムɜLK£®¿ö¢Pı½êyR†Ã©rO™d”J€%t‡dbN|éTâk²òQ#‰¤ì®ÄPF¬cf"ø/ÍÔ=_3•Âf’ñ¬ã,9ÉŽô±\ŒU™ú‰5Ÿðc|z:'kûÐX×ñV˜f˜HuB©8igªí40hˆÙÆF™N³E#Xºþ«l‚¨i²:©MK»(]õgÚÄ,»áê´®r%‘1µÔcÔø×G-«L܃±ñ4’c´À¨Á~…$èðº¨ôTæ<„K›v‚E'Sg“=ÏrD¬,ˆe-g:˜’¯Äf‡è¯77…áOhÃ)æi7^“n•¾-Øbg㉋b²ß1,ŒdV®dÊd|é‚Á¨þèꎺÈUó?ÓÏÙÃÜ%6JjÀ6™Í''0gîny ²«%àv=*oÛäŽÁEßÛ Âƒ¡FñÝ=¢|''åh€V<å³ LÌÃå|ÆT„îi†¶³”`n:žÈ”ƒ³kÛAn:?‘èOçä¶TgMO3¦\¤ËѰIòk›däë1‘!9sš;~››ÃÎQAhËvdÁ¬È/JSIåÈDK9СCdÐ[„œ†Èwõ:fÜBqNµ"æ3”¡E#¦|*×7³ d,YMEs~FhJ\‚.5BŒÆäÁˆ?˜zY¶ŠI˜Ÿª3­¼w–VÆßh¥¤¿‘W[Uûéüf ˜¤î9ÉøùUÿCW0ák_ç|ƒIõƸtp?O|ˆúæú½ÒÔ-ájòñ}÷·}v.Ù~ÿa{ƒ/þüs‹áëƒ~)[GPà˜¼EÚH üñþ~¢ûtÄ'ÊßMúýáðm=ß1cY‡‰»¤“»­ƒÄ„Àb „u¿.Å{¦JOÑà b$¹"׌Š~ñ^¿Xèßp'…ä¡]Ì…Ñäs®|ì©ìY•ó9œdpL¨C“NY8­cC“dmfΔ Gþɾ<1ß':!²Î_¼Ý´p䨲â ‰*®c< ÔS 5(_YOØXˆÙÖÝ6<ÜÒÒLÙªÊ$@>ß²aâÞGU2`Èjß ›?Žýφ¼éË´æÎ Yž¨“ñ5~?øgâ]ºùš¬_§–­¥‹Sò³ógâÛ ½%~öˆ×–Q4YBk€¥ÂšýüºÝîR]Ú˜J³jkPsUºÈNÌd"Gmú$w;[ÃX`.zÃ35_»W_åªv¯ß—vbÙÀ2ÜÊÀc[ÅÌEå™Tþ Û\üÏUÇ"û¨§ãÓ!¶ a-®çt>“Ó«¬¸pz¯†ƒY”žpQÜ£ñµCZ(ÜKVH_p:zð¥Òãñlñ ){Á¾Q%âÇïétµHÅ]¨é±»ït´R)e¯¨#Á>ãX~>3vg€z‘¨ê¨´¥îqQVWQqBÁŽÜ£™ µtÌxçcVF_j8 Ø#¨w^ÕlJK+·=–6 /W7îtì9g’eGTÕËŠp¦tó ûrÍoÛWc(ø‡pÌ3^2ˆÞp–!þ)e‹ÄÎl/Æ^;Òå{šT«i ¨=!l„PjŽ]ÏÀE“Œ¦"^ÞQ¡0+ä—´Ê’w”Ù›ÛnÏ"‰D!mW¦&HÒ —8ŠDÜ>\£6/,ÉÝÛö«¤G¦î[Ÿ°”'\¬žÃEûjú‹°Ö޲ƒ¼6Ú‘Ús­C©¡ 3œOHJz'c:_ê6åPP¬Ê žå$j'†…‡³lÒ'cML…`Màþ½®)Å”3«fçm+çÕÌ9jmÞbUv¨’ü\gfSgŒSÝn¼(Ž’ëîÕ’_Ú~íØíF™2±öÇLÁ²œËö|BñÈŠL\zp†ÀØûT©¹ÕÁëߤŒÊ|vs…Q‰€ŠE£°mjçNÄ/œËÌÃ.üjO¡8­¿ý°ÁQ"¢0Ö ÏgôÌ’"%Ëž97M{WÁ8Å îÌ\µ_'¸fë*ÑÇÏadõh'u ;©’±?PX`7Bp]ì´Þ¾ëÊJÑ@Á88p#Y]ÃðÀ:nðš8¿äK¾THaªB Â×—øµ Ä0Ɉ»»@a¸îw>Ð_¹àJ™‘uÙ„ŒL¨Z‰´Û…ôh·S{)Þ:÷‹â£*¸ •öwóc &bÀaaø·ñ ~||_dgV2.ïöÇÍmý­w$ÈÜÿMÇ’Äï%8u¿|Aÿ–·ƒSŒÉþmûð#Út¶6Þߣ1EVq0ۇݟÈ..ˆå»„]Üs¿®²‹ÓplçÐ.®FªâßÉ&.ý1a{µ¥†V=àV$<¬‰Äfœ ¢gÑ.Vh7KÒYap+‘@ jm¸lq8É?ëf)ÈžUþ\‘™?:<~þTG6^È®Œ”°T™ç]©Á꫘£uz–2°é¿&³JjÅzEªŠù)á¹eÔÑœc× å2›¸ì/FˬÒsc!e•èUõ’AtÔ-þ§F“ž±…!š*„´maÌ—š\Ü$àm’5ÃŽr†tÕ1Òh¼eÚ=‰ÆçP}Ãê Mnh€· ’*Ç„þIË(Óv3Ö6kµÜ`í–n=šƒX9h1Ãü.Ñ6£©™‡²-ÖöšC™D|Ú?øõnðÚ&²Fm|V عš†ãÑýŽ6xO'ÊVM z g‚°MzØe-ùÄ­–홣ä[ÜD”î:˜0¢®3=²¬O—¸·£Óœ“};Í®fœ!j<9ïp§èŠ]Å9›¨~Z§€XRÍíUŸ¨TýQ¬¾ßYÅ ð‰ÌžôŽm_Ý`‰ë,1´“Q2>NKJµ…ž‰O¡ù®Fs?#›æ¤Ê´v½0üL.9©0JNØek£ø‘xdœšW9¡ŸZJ{˜ëh:SÙ“”ÒOÒô|—MlÛhs•BqÙ0P^žç£>TÛ˜²’J)±Ô\S.É."Œ8½É ¦J²Pr0UÞæœ¹lÈBR±1¥;œ-pÝÈ)Hœ8é3èô( â^˜ë½n2"¨’ªTê–Z7¥šV©¦.µ'¥PZ>mü QE…‡¸òFÚ’Æ>6'"Ì“\¢m¢ÒÄ‘ª‹5€ÈáL4}u%}hݼIõ›QömV7—‹‘)Ó|"­ϤŠ~³þĽ$ÍØâïv öÖÞÆ çìc’&’Чu·ã¾ß ˜÷æÅkëo‰T1ÉHTBÅI)ƒK–² Ó¥‚ pÆ q\Ã'ºLntáÑXÙ»h¹ÔùXiµ Ât8v4ô‘öÔrV\35<›ª¡·`I.l÷ÚƒÄù–ÊýR1;¦¦wð–‘7…}•˜áo/C<á‚sÿ× ÓnÇZ$ÐâØŽˆë¢UxÈó¨ð§&±È {0Úg=:úþ`G_bÆ\7ßüöîÃS·#«-í©Û¤È¼Óܸ¼Ú÷¢.zh ~†þ<Ò«h£DÞ#Èîžd³ktEáÐS{hÀ=—½?X©Uá$šŒ¯&è“D}§Ú}b]Ý FÒá-â²ÇV³ÊyAÅÑ•–ÐÚÓØ qŠNõ;™Ü¡°¿’òVR>3Űö'7 ¸z"_Svžè +Z6…$>÷39€ï7âr0ì£WÖüòŠE«½”³ ÇìxDfê4O;› NWqI’†&éhI|Ù;½ F²øè‰s8×û¢?8'Õî÷ŸNç'³IïtVGÙ+ZÓø‹Š}öÀ‚15S0ÄpðÛéláŽøÒø€!ðÏßÌŸ[WkÔ~k¤´Z^r>$W…Ólðµw‚Áâ{ƒ!öè"ûÖëg§ƒËÞ«©?Uߨ‘îš¡ÇZ&þ±/Öh)7èwGÏz–M.µSà„6Æ|—&ÒlG.¼ãp#zÛ´=’—íÀd|­,UÖÿ‘P¿ìü¼'*Æ~ eëp)†Ý‚ÛÿØSž™Ò5zQG–wŽŽt«„sôíº€Ž¶V">|ž°Á‰ NG±z¤»¾ÇKu$ˆØ¬²to9©Z;½¯”âw|á«áΆiF6…dZu£¤Ü†Ãt\“tIà‰#˜žNrœÜÒ\¿ÇeÜr±RÏwßYÇën0U§³½v° ŒBŸ§”¼šÝ€÷ÒÑß& IÏýx ¸ Š °ÙR<çxSÓt6H¸ÞXç#“%a}Ôkð¿Lm/3Ù<¾²³±DGßCã¥Ì€ƒaEžò’C©f©I[w& ½YQi­bU,¡´¶ÁÈœ"6&Â#\ÉUrݳl}5]rFÎ>‘o™ÕÑ^é–/–~ÇMZŒMd.m!_åþï°¼6•Qqgì0€\G n¹péì§°Rݳ!‹j¡0߀Ä2š{Šòb¶òYHÎüj’}EÄ@¥ïééür> >çp«“„6>qìú`ìXKºÜÁØYåúú8Ü3á.Þp‡ÇàïNÞu_û4Ê"QFÛKÑq`¼£¿ ú ¶Œ“`;IÙ×£6ó{ÜÝù°õAË÷óËóãÃðñíÃn|n±‚V—õÞÃØŽˆô»³Ó½ï`öÖÛà»··dL{òõÛû¾¾~wòÉk~Ÿ¼½EqꉬÜ(É–Ë (.Šo€fO؈I¿jÈ¿~_AI‚áøZì&AÒ™‹ÁùÇEC›g<¸&½ÓQ9S•Í€Z=զКÍS™´zÚÄ—û T$&ú®ôGT˜Í7\¾‘× í,%‚Ão©Õ¶²Ÿ$Xpl#ó§'.Ý@~ÓªþÚÐY6?Ø`„L—±úÓCà sÊÆìd<›//Ç:Ò^W´i6 ‹C„ëð¯ê* ¥Š(w˜ÂÉdòRc§}tqwEÌUŠBX•SxŠ~fCæª$ Õ7]ÅkyLjæÍ~¥7Äþ«,‡BèÒ+Øóþ8›òK—7kd=ªCÍX1ˈ˗‹EZ¯cÓ!àÚl¨Î`nhêÍ/ÎìÔ™Z’/êî†"ƒnlCIér%ˆÙJWHm‘Õ š”“˜R ñΑ•»6y’0’ðÈûŒ¯fƒËÁŸRx{5f2»°Õðbd‡<š)¬k[¡‡ö ‰ñ<(éDªØOëNò?0ßN7K2F¨{áãóˆtA»v´W;_<«„*üÅÖñHÚÆl5]éQ¦\JW§u}‰P×Stä…ÛÎßm ý^§>IÉÜÛÀH Ñ;ôw NE«ÞZÉÂzF4n;²-¿Ø.\ví”[e7pÁ8R›…ÿ¨VprZ<9O…³wí¥wÒ©%Ï3Óxö‘+W)îÒê³ Õç1Óñ1¡›FV¯"Ý×ò)lÏŽåñ3†S«»ëXx9IÖtÏÐ!ºT/c]BõJML’ž0,÷2gð€„YrBžŽg,¸^(ñ&­ýão-³X¯©gÜ#ºmåÌcu&êv¡æ±Hþíù…^Hµ)]µ¦‡{’.aÛÛ7…¿Ñ+ôIÚçÛ$9±“ét¨ñò ãËvRÅÛQbÚÓfÿL·hµ ­Ò¼ÜíÉÐÍÓ²÷ÄwÜpŽf™#ïh+ØÀÒuàQã†û”75Î`³R„Äg1apÖœ%fihr’t©ÉIdÞ´TO?ìȇ²Ï9Ó³ÔT$±©(œBÜ¥’¥4-7âkÿ¹þóØ®?Ú=ÈçÑþó/ý±í?¿Ïî_´ÿŸ'鋈ýç‹ÇýÿÞí¾ýç:9å´Èöó¼ì¼ïnXÖŸÆœQÙs*þ.GÙP_Ö’³È6—å6ÙPHxkË·ø¾Â¢¸*òB#%œÐžÉo`è&ˆ1ö], „—úB\“mŸV+÷8FÐùàk¦#Æ²Š¹¯÷f^Œ ÷`Eü~ý¾Â’?1€¯¿s9U‹MpÄÚª%£fƒ­¨Eq…‚çás‹’ ŽÆb8ž’ <›~Í”Wª7\L#BJ[A7ŸýÅI€û>ðýp]¢~U14|UÿsÀ¦¸6r¥®)àÒuƦ—|sÜ™ŸaGôFIŽ#¡|Y›oBO²ÙŸï¤Y%ûÕoƒKV¶G •™BñmxpަƒK8)N4dP!˜&¥²¨ ³ÑùŒb £œ•ð@Çð.SÅŠß\SÂX¶TêŽUÛ®NeyÙváß&f»ÊIà„j&ÃRD=ZξvJ¿‘©…-dþTgCADî]‰ÜÐO±{?ùºŽ½†š)ß"CΕ;X<¶Î`Ñ1zŠ!˜6¬ÐÖmˆaïò¤ßûgK§ÿ¿ѱ€˜¨D ÉpÈôš‰^"Ã@ʗД6EzfÁ9#}𠬲…Ç óºÅZM Á[`”¡õCobÛâôÄÁbfßÊn]çq~ËšQhƒˆœò™£ò|èlBz­°—°a-³BQ°X ÍŸZ€zÅ/Í:j4b½Øz8ø's>b@›5µFR¥n,r $¤ÍÌø|pJ¦&“©±?¾Ýè¶ ß´?½YcðÿS„o²ƒ#Ìš íÏÓ ©‘2Ìæ%xÒŒéw-á°à“Œ¦§ÇèÂ@W}’/Û|-VQ²UÞÞX•hƒ¼²g½á” [ek‰„Œ«sÔÝzוéõ`vzÑ€4š 2ÑäááÈFc­c‚i¿fSN4¡Âé&í\÷ÝáÎ[vþ²¥_Z]Oõ²gÈüÒ2}Àô¤Oê^å$bÔ>ª Î}Ùêf£Æàâýà~muÌà&Â/ÒdË×ñxá´¯QqSà¦ã‡!§e­‹7?ÊáðLË£ åG"wŽÇ¥DY• §\ ÛÆÐ^‘0åE@vˆÈ/mNôþãÛÖ–cZ#7V7ŠüÕÌ_ 2=j}Àøž- µÈ?`’Ø ÿÊŸ¸mR028RðnÔ}¿I¿>á¯ýwxƒÚïàÏ¢™Á|çðp§ ׃¼i}hmïÃÊhî³· À!ÓjVÐwЂ¢-w*ýÀð1ì:–J„Äm̬Þ)1pŽ}Õ»{1¬"@šR=¿Ó©{ }ÎáªIݯn]¨ùJʦÁh, wÝ \?ÆWu$Ù}Œ\­-*µÍDvŠDÜv¬‹ ·_³s[1Ì’_U p¾Ü>ÆöÑ#çý `¬ùÕX¦£²uòÄyPÀ ÖIa(Êcú"YEùšÊšr /æMÌjÊëb¨7– Ï*ù"вÆYJU'­EDÆ1—ÎbAHfÞyBE §Ë½e¦t g‡qu Z2(i0û–Â|:†{ •=ÕgÿÔ^Òa¶]¥7Q+Š;d‡ÝÔq¬ ]œÃÅEôê!³úɾgÂñïÿûßÿLeÑgŒ—fâÆI ;½ :ô5#S•ï¼²öÿM5lƒdì Î,ц5±ibÒØ6Ö-Ôi¬’¸JY &ƒµ ¹zØÚVd$n¦KþäÈfäDsÂRØL‰ß¶î·^ô;.¯³–áÓâç,l9X­«·âžE…ð ì–<d$ã¦OŠõàvðFŠgRt•Z®ŸM_ÙàÙs§3±##öŒùõØéb¢÷µZÎh Ž'^kÎ ¤Ìünns)|–Ñ=”è£(ϰMW ¸ÓòÛJ|6ßåÌæ;g6­#Ç?¹ÌpßµÌæs±Íï"Ã3c£dÑ€¢ œ Üçòmƒ`×ôQ9Ì8Â6`;ÚéálÖ¨Mç`=rNs‚ÈH£§…|#÷VÎJvJaÅò>â8Þ˜»CMoHH kÍ£ñ£u³Éfú, A¿ 7  2:NÈ‹+MDÖ[º]Q·\¿N@€Ü4*˜)a:Ë®ì¾*®•;Q ‘“:Bz/‡(:a}ÃB¦*áYT&V•š) ¥ ‹ .tÖE § ¯Ê‘»[æÄpšÜR»Ì!à\®ö¢Ytz§‹CÛ|ºáo~Š [#À~Çëæ½Õ4«oóÑ„X'vŽ£†såH14s@n4 ¡¡fÇ®‹lÖ³®è =é²’a"Ÿ©ëÖR…ÄÅ•è¼*Þ¯3ØÉ–·9€ÄN·2L„òÊžLe‹WúQ|vFª^£ÄÛª —yR©ÝgjÛÙõ àF€KüêõWY]yݳ´äkzÎF1Y&aÿÃu8HsT…™E¥KÕxÎGÌæÇðYRiÜÉ5,îÂÆ·š‘ˆ’ Ñ£÷ôhHk$õ)d–fÜ‘y?tJE¸#«æû‚šóëg3îÅl‡õ¥¡fçYîÕO²€z*,+òüggEž?²"ês?¬ÈtnG¢ç_îfg[ ‰è1ñOb—Oµ¦k–³ýn,â†Ä² ‘X̉([$bœ‘(Á‰Rü‘È‘X,æ’DìDex%qKžHÜ‚-KsF¢4s$ÄbÞCÜ‘ýÈYŸ[3!y«vVDÜŽwbHÄxQ’-‹9Q†9Eü‰¸=‹"Êq)¢,£"r%xåØQ$®³åen“o±./‚tDî¢00byFä°1"ÎɈ\fF(²8?#J³4¢W#Ê16¢€·yY˜øi1‡#–grD9>G²:¢ˆÛ÷Çðˆr<Èe{DàgÍÞ!kDÉØÅØ)î…­+pFí3}‡’•,¨ˆ 1ì‡Í¤Žú:´WDè'ÈÓCeÿ׎‰Iì¤ ”•¹%9µˆÈ%Wã§åéBJÔº«T‚XУV®“ç-µvA,¥µ³2-µ_ßÒj»¤@[ø.Þ®T¢E<@Oë&j‰]ñ²¸í4/Ù«§0d4wù~¥6”ZCGiÕÒÊVÕVéý$¦9|랃.!êW+gCIØO–íßEßÕúd)·Bê»âF£ñ7Có9c:gÏ¡±†ë~ÚYuÞáñi©u¬¨…ã ˜Q§FŽZçíRjÌèBTkwŠÏEJûÑÒZòÀÇ[GÔåE×›K-3šL–Xè7Љ¼•nx+Ý(¹ÒN‰{Qâù«T»Õj7B´©Ý}¹ùêTODUȵˆiòò“É×åôrI3Ÿ • Nâ«%š$êf5º^Ш7•Å“ÀQ ºÜŠäQ šh} 3Ú;²ZòèÎî %´’uaosØÉ*(L°^…{nÇØ€<Öà¹a Èn´q»Ù ˆ<–|›K•ž=â"’ç¹<Ïb‰â‘2 wÂ#+¿!lmK[2›Š…„”>_b’]¢í›Ë™MÙ#gÁ‚é^Üý»…ëñáv9Ÿò€"t¤Õb“J?´Z±´ãÁx£òéР̹#³ƒòQÁ…å½<"ñaM,bGît5:ž ntd ÎÉ¥íW;âm}?¥y1ˆÅä¸$W×ÙOâµÂ³ù¯¤žÇa¬¶?vW%fßfa ‘ ÑŠŸÁ;¶Â~ãnÓØ¦æj šŽÜ¯"͇¨âHä[F¯ Hä[F²®f,à‡óІbøÀèÀ›&曋ˈkm†íßãܱØ_bÓ®&?Ob,g<.µzàÞk±»[Â5ÏÊÆ€GÚª‹K9]Ém¯•et%Ë\}}|xçlc PîiìND¡ 'À<|íó 3Äx«"±‰(’ä'£ËîF¦ïyè7­IŒªP÷ aaTsð%²¹…”‡Z&Ò£hA´¡ãcåW¡»_=Îë¸ô汃»Ûo7î~ƒg`%†öÑ °=é /ò·ŸáËͰ&î¼ê gØmÇý¶BTˆ[S3W´6z–ªÇÑù‰¬œšÊÆ­À)eüfžWø,¯kW¹­º;¼:À¤Œè–?8? ²(ŽÕ)Š™#MM»¬É” Ô¦]öñÿ—²ç²å÷‡;t¹ñŒ^ÞÒÌ+yù3™•c¾äŸ]J„Çô+ü)Mºö!¥Ió5b*ÅA/-¨!M].™·“5HÊCЉJpLW_>c·QZtt  +°¾ø¾–}éú2í+si,aþ—sÙ[,Ây²¿ŒAa )NPêÎB€\±O!/ȃJÊ~ò'7Þ›eå@ªƒ¥¥A²CqI@Ž'h©C@J®CI+§ün‰r§^Ñ€E|“V‰ þý>æmdk¢´xM,#aå„l¢´œM”ߦt \03W(žËßüq /‘ñ'·Ü>y»²=qåy%»”‡ª‹º»G …ÑÅΗƒÆPAOó_äÈÅâF!î,q lfo'wŒ<"}w@в2HÁpÁNÍiyt°ʉ«¶˜NåÅÂ( ޝbI²³´Ö­V &ÌŸÙ²âXþ,%”5“YZ4kªÜE@«úºXLËŸ|*¶´ÈÖ­v«)+¾U£\BˆËŸ»ŠruÃeº¦Érb]þ,£/úò\銅R]±ð²d“ÝGw™…î2Qi¯ÈøŠGÿFŽ"¼ÈRb±è7M–t“±ßYrh~°ïLšæËÅÏç>“¦?Ä}&*WqѲœ×f±ty¹¹-!c¥/ܹ’æÐ.7ωh¨¡œÈ9€¾/)xvuÙ³(c¬f—fâŒ;[› ®n´·W¬sIQ°¾»ÓÔ§ëéÈ´Àö»HØ1:+°zÄÙú ¼Bˆ~y¤Öm y¤îéãæzöóäzö˜ÿåA>ùŸþÒ;ÿÓ÷Ùý ÷ÿ‹fò<Èÿ”$ûÿ!>’+ñò?-ˆ¬ü˜öIsRòÕ÷Íö”ZÙžR™í)½ÇlO¹YžtÎ#„ãdy¢riã䦑úÉž){n$©r¼"¬´F NåäˆÚ¦t:µÎXL¡OÓ³› áœ„Qª©#2œŽUÎ%™8Êd’Š'ašé<2£aÀä•ȅt¿¹Œ(¯± 8¯9Ö{õ6éŒÒ’錎tjªmL¾ƒ“š®Ü:;QÐêwÌN´õ’ý·äûyLÛR”ÃË·‚jHYúû$W±³©,“%Òw+Q‰•'$– äV92–ÏŒ!{ª"‘¤BÆ!1º+! (0ÂùÔ¢6JYÿN: %År… AÔ {ꥇLnAÐ ¼šÓ–ojÏÂ,7!#pO¨M8o£zÃëÞMàá¢#l‘|ÓV‚oV7Y SûÙ9|›·m;%‡œ(”XÅ‹iß‚Têòáyc‘3"…'¸óô™2ÑX›¥"w4Â)„Ù«™Ùså‹;6±ê%ŒÕ5I—YšíZhîç¬MC/NLøf†ÁBXƒi¯jþ¬°U«…¼l.Ö—§ž¤ÖéŸõÅ)çe´Ç×¢õÚ‰/[$*A ÑG¯yeü5°Æß¼E¨ħ-—e¥ ¦ü|˜aÏFD*üñÎöø(¾ÃÇ•ÿ>ÿyä¿Ïå?òy”ÿþ¥?¶ü÷ûìþEû?MŸ'Ïå¿?èûݗÿ>¯ˆ=ϤŒå¿$~Ó‚wò)íÅþ$Âo²“  ”¿('ÎÍ>Z 1† «ËÙÍ¿«Ë)¦IGFíÎ"ä¦7K‹\i±6ÓÃÃÊòn2ÏDåt@¦˜þÏJLmÏ‚\SøùåˆúïÔú»IÕÎ*ßAbr1ö·¡>ößΗX+}h¤ñMýZ7áo)— 2µÛ×ôÁYÕÇGƒ†j'Ùì:ËFœð !ÿjªk³D1ðÊ'ª|ºbÉéÕÎ!£A”ør†P•`|ST[ÂI”Õ°©:Æ’Ñ¢îÞtÌæ}J㈥°w—,f$'„ Pެ%³o³Iv™ oÄ÷)`Àœó@—y3žË¹È—|óç0;ƒÍ $‡Š{ $6@oQó0:UBJ¹$.\¹¸-½„”È{ÎÉ+a3$3y+€¡•-· «@R³,€`ëLJY9;½'ŸdR{BöiËiškOמ?}õê—«sH éÓµæ/L©ksÑC6æŒ\kµ|NMü;;ŸÉà“¬GDeÚ;Ë áŠJ9|eTH_µÒÓ.#ÞSîe )ÝwrÙÖž=ÅÎ<ÿE| ,>›Œ/¡èá«:#sæc>U¸úvÒ;?ot/`̳ñ¨qÔ›`æéÓùÉàÔxvÃùqzáÞ•Ù„ž †0m«¨†‰0Qì›ÎGõ.lùS* U m™„²RGf®ÿ®ºv4{ Ì1U²U=²yøú2WóóP9ØK§‹ßîÀ黣xMó¥¼Ö*ÂO˜vº.Ã,`¨7ê¨ÿÚÜèì°lû ü€ÿ;ûº´fïñ¦HU;[ïßlðïVû3üþ°ñþ}"§ø'@¨@ªôoäAÄ¿ä³&ÿZ¯‹|ï7á*öisû¾”w𼎳·T÷ª ™mÞÎxžcn ã wjÉ‘?ÉgMõÌ•­«*I¤Š$“g†Yxß®Äúa™÷»m~Ò¯…Û€¢Ÿ›¥ÿ<ì3Ãñ¬öÅ&ÙR<_‘7¹†T Ä4ORõÁþJ+P‘ª@]±Á&ïNM¾^‘‡7%dýTýÑŒ^ߪnKÅ×Q5œïMþžj í&K ´i´Y~  45M¬þÇšèèÎw9ð¤H¹#ÇI±@اi&+võ_ž‚»½hS6¥#·û'g+xº0 £­ç^Î#üNI ´gKúÇ"3#0Úù¸ËÙó Ÿ¼…'¸±] 5([£·OÄCxH{p ‚#[(÷AS?È+/ðWÎV`ÂEê¿ê14ü”Û×è+åCàÚ)×NWô._¦v“k7eí¦©íô[9 Ä–(±å“Ü2a˜?ÅK†*v{ˆ'âÙ>7Nt!l¸žëy6¶9d¸€Nx(¢IZnÁu§÷u<>øé³áøZC¹TLûÉè|ÍF¿Ø° ;Al„b+dUÅ;ÛB—”Öt6>ïôEotCwT%Àû% ¤\@Ö'é\˜æÛ@ß4à¾C7 ,oô©ÐÄkÉVÄ“«é`8=Ñ«¼”]ïfæ-‰ «VÑ}¶/pS£Ó;û0@ˆDè…oÁB«¼bÇÙ‘&@OekvÓ)j³éiÕ{‰H/B•é¥ÙÆE¸ÄåÅkº\I¸H‘ajän±Õ%$žã‰ÅªÉSr‡«6Ë0CêPÀ0O„¶ö­ëGáÆs7M L‚IC06æß-ü`kÚ“v–\bº¢ì,¨ª™ KÚŠ7´ýÄ­q5¾†+'Lþ¤×|ƒ¹„ŸÎ`J;o`p€TéÓ¦Ÿ*Œ¹sµ¾©ÿý%bXïüØ Ëõ"YÔ‹¤ a毈EÐÀÞ&—u©†ÁÅCE#Îá4Ì›(;á•Äéeìb“áºh:ÝQ—¶›cp î¿SîØ)wì—Kr"?j?é&Óø¼azÿÉã¯ÒÖøŠlÁG}qLRcÆ<úηF/ÄÝ3°pèX šÍË»¼Ùr˜í7Þ÷àÁGÑŒuTîj¦w»Ó¾)žÞaŠDB@" 4q:ÜwMù.õÞÑ`ÞlI¯Ü-*MÖ\ãà³öv[¿¢á5×ü)|ã±=o¶êÉ'<Ÿî~˜Cñ|Í*þ&ŸñYØ¥ÏzìÏ,S=ÉÎшU’°?ËÉ×¢Z1ýaá›n¥ÐxÜ_ô&ìôe² >ÉŠéÖTÆžÀx‘Àu@íñh€‡üß6œv<ãk¿zÓ(ÄþøzTæ?ìX¹q(9{<¥†¹øšŒ˜¯°’-Š}ÆQa¿%®òKE™qrR r¤}Ÿkå°¾ÆÕWªo°’ÞšiuÛ*¿élÛ´j½¢ÍI1 ]pz»ixÛ?ÿM4¡¬ÜMôNQÉ‚•¿u$²ØMôÞ%¯ï7HZ c]çÆ¹Ë…`é+¯°[óO1‘¨úMø(öì#Šæ£ÇqùƒN”9ëDñq'ŠO<ùz]ÕÎ;ò„8®»ËâÐ×Òuß®;ïð9ççzç9E#ý‘14ì[sÍŠ‚¡#÷Æäv´ Ñí3ÚŽì@ñk±ð¼Q©A°e#ò³Ÿì†ãùZƒãÓ¨?VwA‡a~Ó“Ãì“/˵xþ£Í—]ûß?ýï‹Gû¿ù<Úÿþ¥?¶ýï÷Ùý í×מGì›ûÿ!>¼Û}ûßÀÞl}ü°PǰfŠ›Þ~ß©‹­O‡ðýÞßü@&ÁÊî÷Û¨]Þþr ­Y·>u÷QÙ|Ðé~<Üßû]¸èí~Àßùpöw¡±·­ÏT~o}|O¿ÛŸàùÑÇÃ=h†~åÃ(m«Ü\M~nke¶q5 Eº–$‘‘–ø  2&Λ Ô’*”agZùvÁrXh¥EÝÆ’ñ3"½e\Ëx]TñBË8Tá/„™üwÞ ^É ˆ‡êOÂYùå@ý™?”íŠî ­é´OsUÜ Þ/„îÐ2¶Ü/\[n'Àôf:Ë.9ª‡Š¾9¢‡è¡õ—ð½§ÃƒX‘ ¸‡BEj{Áö™³ñÞðFÄÉø °…N†ÐøõÅàôBL²Íè#预†‚vÂø ›Gy“}AvFv†¢{32Õ;AåØ$ëÏO9vÐáF0ØÂªœ­Júõ›MªÑÀmN¹›¨Yó»öG÷„€X-©y`<Ê)Œ·¿ª¶#}T£2fÀß53å¸z\­ÂMÀ/zƒ%Çh²Y…¢òz‰ëýÍšc, ïæu1gb&a@O‡Ùè|v!ÚeTE\‘x‡Ó åŸ5‘“Ý™Çÿg6O.BˆLQýəٱF¬é˜B2…cEÅì”`œùžÐbl¯2ôÞð€Í..)@Ç`ªâˆL2„„zú‹-ÕÄ*gƒÉtÆ/Jýìlȱ7Èj~ð§Îy-Õ€!eߌfûs9ÎÀÇ:Eö3Yˆfg ºn  ècæîíPƒ´±Ó9=£É1Y¯RìRm%Í]2@T>nmå«všKl‡-‹‘jTD 9oRþ\eÜ\’½xïÒ†x¹êÏ ´9† §ðTfQ“(I©íÄ–¡ÞÀ¿>hùl0꫚hÀ¬ÑEŽÑ£ûNÒ Ãë¢ûÝs xµ²jÂ2̦P@ªç’FÆÖcâHïåLÓsF¨™­ȰlÊÀéi8QØéxŸ'Øbg㉋b²ß1,ŒE[ÚùÁ˜Ñ¬Øƒún$~î¨ ã[PèþA–åÊ`ÛÝ>p\¬ºE“ ¨Y MQòO÷ƒ«Ó÷qÄfÖp»!Æ“ÙÅØ¡ÙxŠ…pà$ám%l±s†'§ÍÕ‹ƒBùÛÞWx¨¬"мfK•Ù¬å[ˆÛ ÓªÅÏæÃÂÁÊn@·ÚäÀ(öÒÒǹÀEœgo4§°mÐÏËlrŽ»b˜}…CGQRÚ cîyòÀÚþkŽÎ2p0Ȧ™›]дÚ<Ô”ßöCÓ;nüšøûkþ¢AšVw.Ùª¦å#g'Ç:cApº%*§ãùˆCJ¡«Àü ¨=@8#½!9LÐL¹†8¡Äž.o«m»ï˜}åÆ3ÓÔ”8Ȥ™Í''€a‰=ß³|ÙU9(S•Ðþ¶ýç{Ë¢A¸gÂíFáÁPÈliôl1­f=:=ƒͱóVìÄËÞ·JRo_ ¸ …^@‹VÛ„q_Îg|3{LZâI6Ͳó‰J?7Ÿ(Lþ}>µõßÓñð+Òp©|Få6м,LúÙ¤.«Ùj,3øº&õFmR¸(ÊgvDozš1A n›m~â"ÔDðt’©QñÚÛûκ&éÝNLsþÊmÙgÎpl‚,Ò÷0ªV,@¹ãåJÛÓ8?ièCàr0¢åeDíÃ_m}*àuò6Û»ZMk‰=í䨧NCg¨/§ønDÔ'CôîÏ'n¯ ¡Vä¹Nâšéó YçUº_‹«ñ€æ¬Údy1’fzËT»j¬X7 ø]sb¾Æmû4ê…´ðtZ·GÌ× ^hhÎWré²dÈI§ZFÜô„ sJ{¤ãÙ (7Ñl9Öpêèd«3—ÔÝAžŠK`xV¯”ô€>–Æ&H Ï]©ñ·'†rºhšÐØ”)Íî¾Ât (Eô, tž=™:äd ¦rUõ¯2¨¡tN[q&™™†w7 &ŽŸ¸}«P„Ÿ©‹ÑxÔàë ,ŒËðRçZ¼Ü\yýšŠ -›¼€ÊŽ"%tXal³À ÊdÀÔˆÝqÿíøCv‘]¶œ,g‹.èÛÁWh X5PsÑ_UýT˪¾å/«a}¸fàØ“ÅOñ ñÇN¾Æxc ÜÖÔêAO¿;ç—#òßõþ€¥ö¾!¿‹¦‡íO–Š˜šÛU9îu„6–N-G ƒŸÓ1°‘Ó«1Ÿ“ñŽ¢ Ñüz<ùc D9+çÁ]m×߯¶¥ªÅpl0ù«²nª±{r‘c2ß=§dçÂøw*a<’æÁµ'ï­â¢‡&ô8ˆìÎ{Õ€ù‡&Aé”}*÷nŽû¦º›‰Ã9záþ÷DS%Ï[Ë0(êfë8ÖÚ>·Ë8–Æ´ßwÛ'-ÆaüH·ßØÞ`ÿÜâ_ûEºØ™-ô <‚ÿÇu±GšܮȡÂo f‘~jçÝŽÌmu7æžûvçǺÅÉ߯äï ŽÌ~ø¶.¾ìn¾ßˆ4¸¬[¨òö=×TÊ{) T<µ¼[8‰²X-×ÖØlM>xÛ€UÛYYÐkãÀ6È+Ÿúåe#e–sú íB í\ ë>Xs¬Af”êj’S÷•_—<5¸U2ë44ù wôˆ|§W+eŸW—’2®TÄV=©‹†ŸþOš.9ðÕ*Ìp]›pz¢Á™ö€r–´óê¤ ô¬¡HR:Ç×ìÛH÷)ìÀxüÇYv…¯®X·%E‚Tñ J8tÕÌ&¹| ‡/šØ÷*}I* ñPê|mFUí<âÉxó­Æp7« j_­¬µÞó,¡[ŽÅL¤Ð@úXÔtFC–¯¬§ÞYЧ ŸÃ£*6kmÈí/v;Hþ°,>6õ™hÊç[6`¤“hêËð…Zá78çûφÔ8ñÒ¸šyÍŒ¯ñûÁ?OùÃêý:5³L.ÆÂ¯‰´ZuÕɖ׋Ã5ì#*ˆ‰Â…m½tØžÄoys˜M{9•1È7¹{Þl‰âÔ½l€Ýô °‹N2=:äFshÓ@?Í÷è±õåp”>£á=¼uŠœ+ü…>pQb¯ZMõÒ}ÂÄŠ¥ÞRÈbKcœì¼mô1س¾Óq ‡É^¸êÀ†W4ó¿M«ßHä¶ÏñØ-ì½)æø0º‹¢ãX›¢O.tN ýî ìÔ_üh;õÇÏ÷ù¸öÿ/ûÿtíÑþ÷A>öÿémÿÿ}vÿ¢ýßLžÁËÀþýqÿ?ćw»oÿ¿Ô-&_8ª ÃY>‰rJ”Œ²|ô¨Ä5˜?þe˜e²ZN[6ù@òÝ9ô9]KÖî`›ÏS®<%\›ü=¹zRB½À8?_pÿVù¸˜–MþþB›|c¸olòó;¬lï ã†ø“aYèWäü±)¾v¼´=þK¶Ðb…Ýì#:°0̶qRl¸ ×”!”&2P‰…¡# H=› 2Ž(,Å96Ì´j]m¹Œ­c2cßn”Ч½[!ÿ¢ ž¡ðxB‘Šo•MàM¿ûgØ—7ÚžÆ(%‹-  4Ùó›)ÖÍ[–Á%  MVés[“Õ=®^ •í:ZzNJš(mÞ﬩m­â®®^ÚGÓYÛtö 5‰@YFK¾9 pñ'pâöW=SÇÙ¤7  V•vco%f½n©ÀÌM3eC˜‘w #Ί¢wD#4À›úö}w²ùt¦£eMôî0|g‚¡ö‘Ñ8U*Ûæwœ·-c6Ÿ¤g"_&¶€´mùØ#‹§B;.鹞IJçàQ m×?•=DŠýÖlׯiÔVÕBáZú® …‹9QfRù,eK󠆮‹í¢Û¹NQ’C¢9̦öViÈÈžÔ#ʣܳPÅü‡œY`¤½fG ÌEoxÆÃ¸ær”Ue½¯™vÜê÷‰¹¤g0QúVh‡i0Û ©<1³ÙÜm•KLÆggÀ¶7ŽO„>Úó$°¤=Ïä<«Ó çðz%IÒ3Âb^[`N2œfŠwÉ$*†ê8H½Ít„N©´b éšØ7V9ø!^®YÖзû@ö½ËçäÎ9Ž]à¥åÆMîhnýÃì ß‘Ðî~òøwT».  \Ì¢V¢ IÐe•LüXyYÎ&ããÛ¦b€ýŠVdV®íí¥R;Sˆ¹Å¯nÔó÷œ“Õ2•WFzÌBîÿF·äo²àÞ>üAQ&ïÑœ›²üÜ%·—ù©-»›~ù‡¶ì~á×å{U76Þ<òÕÛ¢¾$k‘Τe{“è¡ÜÉ.üå²váíŒÏ´Áh€â&T>H^Â%[ú‹Q< Ýÿ"3r+— r“ì+I à„M¯²S¾ŸŽûÿ¢÷u€WÏùtÎÁùYî +BB 5û1¯„r»:…CýTÝm0 @–+ÈZ£c=^h)ù)CÁÊ}cS¼S•‚æ‘¡:pÅì9bÞ ü®öò\ˆLÑyÔeŒÖNt ŠÛNœÛþðÝGDŸhøa6`CºS!Û5yhUÜJÝÊhä¯8\Oy¡ÿäVÙÃ<²“ËÊŸlY«zÐÕq}9†2NFi‡×»q+wɰmG̲íŽÓ1rlw%;¯e°Ú£Uüj›yJÆË¾˜GeÌv ri†gb!]6ÆxæKÍZ·4…øß‚¦T–&=híÈ#;?W"4õkYÏ»ÎHœ9õ­¥?¡lŸkz¿í½î¸­§×ùcUê((°‰È»¥¢ôð=GèÌ2WÓÙxÈ" ƒý@2ÉIbƒhgÛC’Ýàõ¶ƒð ’áË¢£)c¼c•d…À®XøÖ²F(9ã„Üœ/)¦ØÓ1£ë1§œE |©l¡ILöí4»š±Ni<9ïpóèÍ7 ¤|5w:-iU@,1óöªO'x ¸2r –ÇéÓ=¢rûƒ7Ïï²0»m !?ÙÐöÔm +ÑfԲ͆­çÈ“e7ÖÀ`ÖÝ8*,.ØÞ{|@â 8ù"zÖy;o7²íÜÜÊ+¥Ï‚¦!š;Vìª+ðÃqƒJ†‚oô9ëôj÷r;L ÆI²V°ñnåŠ/×b8úÂ=®^§ÎÜ®5ŸÜCf¥MeßÖìd0KÌîRS×ø¤iŒ.2Œzs–cHÃåÃsΜqNû>øiª­}¿%[|Þ Ppû¯É¬ÒÃ`.'ðc…ÎÌU­ò™ ;~iO様`ò>—p:À¡ïùr\ÁK}ÇIIÄœË.åCÙŽ÷“’„Ø1ûqLŽÿTgèV·ªRÛCÆQü¶¿'ŽÕà§sѪÒW¸À3 ¬Áê])¼š >Ó—šzé{ü£æmÄÀ×*r4qŸV¢õÒ‚z±J®£UÚŠ–qwœ2%¼†„:ä?vÝÃ3:6>HóÏ·h]S1@@ͩВtB‡VFÓj§êq[!‰)ELy¨”W¸ÓuÞä’`Å’¿*dÈï,­µïCÉ)£;€÷=ykØçª2ÿM¬¦vÁF¢±HW-®Á”ÚCPÂó‡iõ«5ÿU,h´±6#+ƒWXRxª°‘Ø  Wœ=uQóé 0×½=Û¢§u¼³‘žERšò놃2¼iY4γRpY{˜¹,Z8(l I"½Š^Ú9VÀå)ý3Ýé¹JER2:ÚTXìSOqÒU BëˆÎÇÜ€­þžeìZiIi¯®Vƒ!^fsì¥ðl3…¾‡ÜB^‚ðæ…"–4ç.´»o6únJègÔοF©´»IÜÑÙ2Ø¿æêŸùÜþ’‡ŒÑ½^usT‹Êf0ñ°X! àÆG”`rÑAêM×\Ôö<—ãBðÅww{zÚ=cR¿WKäÌl›/…©ÕnJ\™\YµØûX.¯)›{qöâr¸Ë¾üq—uý?_ý<þŸÉ£ÿ׃|ý?ÿÒÛÿóûìþEû?Yö"Ìÿ”¦ûÿ!>¼Û}ÿOŽ[²×énvé÷Ç}ÀD9€Rä¥:*8^;X¡³Œ£æOï¦ÙÍH®fßÚUS»dzó,=4;†¾»fY—HÇÓ±Sán;G-íøøŠR|°Ub,Á‡¶n®‹Þ™e4Ú—vÛÄ8-l“‰Ðñ$›]£ù>O(=§9]¥üÙ—½?Xy0l‰¦™j«Ùuʼn8êÕT+³d6r÷“m U›5¸¹OFÙ7©Ÿ”®‰r‘¢ô³+rBt-dgÙäRûŒp¾nt"“öAR‰¨B­;éºyà«Ø¦åþ&§1ÖšÖÅ}‹x{‰÷½Ë“~¯ÒZQˆn -üA@mäšJ½Vºèb"‹ÊšÜüÃu ,?m“ñµ’°ÆTÎàA$Š?ûî‰J?“‚å˪¡¦ó!9³Âk±ç¥P¸½8ìÑÖJÄÿ"׎16«®ƒÜ²ñ|•{œ4ª/3½Ëyg©è—Ž¿Q™8ýÔëK›¤™0úÝ~•ë€å:aÀ`“ˆùÚÇÇuYÆfoÅïŸö‡Púvå¹Ås!×—}¥†}&‰6 ì]I ´޲m§f¦Ò•›â\³„ï‘#oÇ|ïA}jî(Éé¡Y"ìñJqîu绋Ž3·ïGè;a÷®07‡<HFgCQ2N"nCT/ÃD£›¢úæp`ï ‚•ŠIz(Y¾žèw9y[zÎ1ìÕ©a:·Þ³U®oíÔ=a\)ß|tÖà1B÷ˆázù8Ù­ºV%D¸HLC¿¤±vž1vxÑöá‡[l·XA«Ë›`ûsßÁ³;­·?ÀÒz¯ØF:°©fn+%l˜,¼5FÆ{FÆA4m]‰ø2Ò>J†DAnÄÜ.Jx“AøÞ­m¹‹Ør,[÷ž"r¿ú.¹÷Eäþ€F‰7ê–%¯‡òðÃ+ò ]šW ù×ï+-F‚±¸v6<¼œ_pL4#aóÓQ9sš¬l,>ÕÖ%Ú¹W¥‡ìis3âºO/hw+³•ž8Ÿ÷&} ñ烙I¯Ùë÷ŸÂA<ƒ–f¢²…œÈ—ôÿúMÿµ…JwÊnŠßR«m;89™Ÿ+€îjzb€A‡ó:­ê¯ ý—¥ÝCv<ò•,0kzœ6Ûó\Žu~¬“ÁÌ(±9XXâT$¿2‡¥/¶Ï!+«±Å º¸»"æ*ý.¬Ê)ÎÞfá´^!0ƒgºŠNÖ'ƒZÞ9 àÍ~¥7Äþ “ŽN•^Áž÷ÇÛÞŸ^ôFç™5²Õ¡f.²o½~v:¸Ô怸<òIQëulb:ÄDG:Ä474õægvêLí*Š t÷C1i•„,Õ)Œkí ®£ÕÅ¢U®3ñLj]ÜGÀüB[Gä…‰‚-}Z‘(‚ò‹ñΑ•»6y’,÷Ì…|9ø“qóòj0ÌdÊNàÂáÅÈvp'LA 6ç‡=ßâœÝŠý´î!›.óá¸J{ÝšT>;ò.òQLâÇ][¾(µt¤meÑc…¿xáÍ…6±& M4v†œ]]_>¬äR(3Á‰âŸ¡ä £&')«¤‘‘j*«NTü;©ãÉüžy.”/Ànì|:œ^õ7jÆ,‡ÖcJi"8KT¸*%p8ò£³Þv'!ÿ½Ä¶s7Î?GˆµØÓV½µ’„Åʵ„ÁÙn/bÁärîv[ª#ÛŸ@¬T+8O-BñT8¸¬h¡2C8Ïr¦ŒmÉ[ÊúÔ_š;¶úeQn‹æ•›zsªÈ‰O†›FÇCqüN=;Ôm²ޝ֫L73¤¦ ¦J?Ä¢¯roHžð.À(Ý›n­å4߱𷋮5lå6žø¤- =y ^ýl†®þ¿÷èÿ×IÿÿâQÿ÷0ŸGýÿ_úcëÿ¿Ïî_¨ÿþ|í…¿ÿ“ö?ò‘Ç §ÿ¿Ÿ$Fü R©,FÇðÏÙÇÎA gwÂÙP@-È2jÿ—Uú7’rÁzªt;l/ þÌ—ízQ–Å0YâÀÒ6êŠÌ·z£aqlg¥,ÅYÓYve…<âYž]ðsÅèRIŽ¥ œu ±ž‹ñÊÌHä˜*Rèÿ€µÜ×-ÌÆ3`ôß8fœ,2RÐÚo”Æ¡0¤˜¶ÀØÉ¦uäCʯVÜ4GrVö^K<÷r×ÛÑåÖP U‡_‡ø× ~OM«°%[Õ¡¥² 3§[¢B2!œ.’³Ì¯®`d¢m1_Ã7J²­4d¥œÚƒÑ)  tƒrxq­j¹µsk?æÖö¢U—3BOÝÙ$>–K>g÷é·G'zj ûÙƒ,× áf¹v«¤~•4¨RsT¢tXÊump«–Å.ƒº´CM’u²í$LÐB7v˜Y<ÐÑ[á`Â?êTÍ €ƒzò¤8LP-uªÙnZRMKFiM9FëáÙ{Üy’–4î^Ð ‡ìVJ­Jwpž¡ÈC!¥±éX“¬_0}RVÜ’i²õêÇÒÛ×$ €Å²É0,l’úS³†5ˆ4‹ïí†=›ËJéƒJn±)oÚ±}¦KßËù,nDRÌàÒâ¾jqû³:ÄuÿôÌNROѹ ÀrÿÀÔvŸÔíKJ"÷Éêso'²šD#E—ø&¦ð7 •áŲsÂĆ –¾é z[(¶ Þ¹$6/éró’ê_á¼H£pfÒº»Á‚ù ˜’³“6b éY­ð<‘ÛšpE´é×Ìð O91 x²c™KÀK ŸÃȱÿŒ~ûŸõÇüÏôy´ÿùK,ûŸï´ûíÿõ÷K`ÿó¸ÿäûݳÿÁ\‡Ëü3Üö?¶Ú­.™Ÿ¼Cmøqtÿ[uñ~†ß›…¨7¡ðÇÃ=JóÒ¬‹Î‡÷d´Ùz+“¹Çlzóoƒá€B<‡V@ÍÕäç¶`W“ÁÍ€’Ȥ”ø  2æCï?¾mm9òk½b¼‚ùÂw6+¢¢e-ˆ6¢Ë]BģÈ {™0$›îÙ½«pWèËç–´ú|¸È& lY¢Vu·(¶EÌÊÄnX*yù>‘)ºú…‡¥9C QS#Ëݸû䨵B"c1ÉzCi-òqot’MÈ5GêðÞ•°â5ZW¹ö®†mµ{øigUü¢ì£ä¬¾ÿêUx³ñ¾³³j*øcUq5­Ê¶>Òù_”†s:—Fpõ¬éøÜròwÚ=)UÓ²¨ZäØîäŒ×îÙN½ó`• 'ðÎM¡)ƒž¸«ì/1Ô*Óé4Þ­2¤HZÊÃâP™Öâ2vg}ÉÆç²w΀˜MZ;ˆXhOމ닱-4ð7Kî¾"—,7â ê³3¨åÓœnÝ­¾ú˜Ä¸ƒ3µ%4æÒ µXoŠt‹ó1KÅ¿ Fm|!G–!=šO•L+Ù`¬i?:üµ K«£lUõ Ÿ|nÙ`ì^êvò–»GK3Ìì|ãK$"¤œ¿rÞrL6kúMQÈ?Ãmd®ù€N 3¡ÖATh4<(Ž5†‹¨ÒgÙªÅd“Ê™DC@‚Ødz\vfózâ¶Ä4ÙŠS¬7ÎH¥ar‹¸Ù-däR8ö&ç¨q„޽÷3Êm¾%ÎAAÖ8L?U”šµò­~³B»¸÷G6 ëÄ¿¿ý[ÔÄ¿oþí¬LRkØ^CI6eñ¥ÃmZá‹6-:p[⻹ʀø¶k‰¢»˜)lùÞ©ž!oe÷¬ˆ$oÈtRrÛègWÙM/¥ÈWšRMMŠÕl2›ONôâô&ŽR£”Bœ‘•½ ÚñŠ—z \U#¤»æ¼jøW¸´CžiíØ-O;”ÃVyò±«b­ììÆÉ‡>o£Ø 3÷€×‹|äÌnP¸#ùxñÃÈÏX òa¦¶€|ì2ùØÍ£¹K‘—eÖJä,ƒ4”õÈÇËû$‹“îmª´»…䃋, ]—|œ _`%¡±g£Á U1uO†‘Ýŧê7x=Eþ¬ú•o¡ ÈÃ:(ô©ZíFjúòyGÂIâ”ëÉ€HÙ7t¦ú꣧Šéw³Šxò 5#Oäż£æÀ9>©ë+{µÉ¤Ì¿ò"ó(ï̬XÆ›»‡¡f{âMSWݨ¦ó³³:tÍÄ9°>³ uýB9*’æ`4š‘ÅËl.#‹ÈB%Wßî¬òÅ«JýÍMŸ›®y}ܺ£Ô “Œ'@ø6ä ÙI\w'²i÷û*éI1ø1Ò5”º¸½Å›@§V଴ðáFË9›Ë·€¾ÒˆÖýÞ°øý¿qœ-·œ}Ó çœ€Ô´ŽCðkÉ›k ªÂBë°]9ðÛJŒ¿j ™ÉÒdŠÀ»Êà¤?åcVÍÙŠ_+È hîÿ~˜,uAtÞ¶Ô[éø‘|Çë£Út2·pp‹¬Ûì(wús¸ƒ †ã7J÷BYt#%™]‰›+—kÅVŠû§C1Œ’ÂTõßWÐïVJaðù'ãs-\&~¿§?Xñ—o“¼ xË7ŽZ®çSu{HT[P-ÄìÅWj–âZH¥¯IuÝh+@#Qú.À¿ï ü°ÌüK˺ÝåªnÃ0¾^Þ§½Ô%ñ.ô‡Å,ù.u¶¦yÈ]Õy¨ÚZ’›/hÀÁÊgå¸~5®TÕ÷·„;vkÖwF~½Ô«§¿×pæÂz·º‰ kþ…DîOš7¥‹$¢$ kw瀊ß„ÜÝœH +úÏ…Û°š¿ V×ãÅp÷ÇgI"l‹Ç£¤!'ÓtK…BÄãŽÝ®ÏbÜ×Vð,þ ¹Vì1s!n%cޏ¾òmRÿ6XÑ¢÷Ê×Iý+|ÏÝ×sd÷Å`ÊËñ4MeÉa*5û¹!ÉþEñÓèUγ‘KFYHDzÒÏÆÍþ”È”öÅrf9äÒÒï*Ž”ÉYfùÒ]lïmˆiü!,…­Á;œb)jÍ®+< {„ •–¹SR'àGÃð Uì‘a›K¨bor6Ô_øá€á üÌ€9T`Òt mi|ˆ&SN+ÿØq†¸ëô‚‡¨®ÑK q×™9l Æ ±Yrˆ9(rMúö=Ðgý(WXI;wž4ÛÎE.L>©‡ øœ£DõåË¡éÄ—Ü£—S¨£ª4ç./\*p”¯&^ŽÔÉ¥ü)Úž¦PÁ>ÕŸ2ô…?’Êà¯ürù<`ŸŸmå 7hŸ¿ %BœVÜíÖç ™1òO\^W3U ¼•C”ú£ØtÉá“rÆÕ™Õø«ªËVÒq-Î9P HÊz̤Ôià°²WtA—IK– [ý–sØ´Šß+lËéÝÝ2A<€7ŽÛ*Ú-§N§#yêv <Ö³È^ZŸ¾ÌQÁ÷ÿíŽx\æ\–õyõüoÁ+_}›[Ï-¥¹O_܇æ>WqŸ¾¼ƒâ^a”»-p"_å¨ÂU Ûú¸*ñ‘Ÿ—´,j Á–3#P…[nx"yÈ<Ôj;‡œø?_ÓŸ%þO³ùì1þǃ|ãÿü¥?VüŸï´ûæÿZ{ñ¢Äÿi>æÿ{ïv/þÏçXo²ÄD/Ån‚?0>{ó¼¶uš×’áz~þ”]íñ׌¼×SÀÔrqwb®¡jÆhžÌ´ÁŒ-–æsêf¶"VÆÕ£’ß}Ú8¹i¤Vv(Ž2"[ú?èMóÿcž çû?G}˜R‘§nû6˜¼®l-Û•ÔîJÁi‘DAör œÕ Ó»€Žã¶šN‰nV-Ó•F‘Þ&fãÄvÍ’©PäöïžÎ1ÚÞÎzâ n½óáÕTœô&2ÓòùTk°&ô²wƒ¡X# `@‹‹É{0œÈt:øŠ‰íG§ÙPæÞ2é’ú2®1p}b£ºÕجnþ*.``Ðï«Iv:àØ2¯ßélH'Ì +=ŸMæ£SÊ&Œâì¨"Åëñ|ØÇîaÔ…¡Â\A߀ê5@À¤RÃ!ÅEžZ«ŠÛªÛLÒGt¦C¥·ã6x¦&Ó”Óê¬G+ ØöŒt_5(§Zß@ºèM.‡˜¤g[fé÷f=|»†s†ÙY_E¾×Ýú§q:Ja3²+9ÜFbA.7ßL.”îÑÇ"(ð%%‹ X¢…‰qŠà`àê"8vJ;fÑé¼m#uxÛN󻳬ɯև6ýü‚?;ðcû r+ð¿[ø÷!æ¥ùP ¾í˜n;ÒÛ[ÅW¸m ¥3w9#3ê Äfó0¨ yCúÁ?AÉ ü¥–±‹Q 6Q¤ŠmªRÝM]JûLn°^“þÞ2†QfŒ0ÓXßy‚NIª®Zß Š+Ajw hú¸ðºÊ!`Õ°Óh ‚ã­VSÇóDC{_mÓpд$f‹äZ£ÓἬ,›ßØ| Õ^¯Ù"96nÒ•¼áv>`ÿ¢Æ8HF_Óžªb¹@µi¸AØ^ÑêÚG0#t£s ØËÉ Î"+8Uw,γ¥ß¹1ä_±û,ú(û6C¼á©£Úq3äÃ?áVÝIÉŒ‡ðá) m¥J¨Ð€§›úѦ¿€0?oËÍO-:?ÿ½Ó“’<1 ÓÃK=c@¤¼ÖÁs=…îæ,é†ia7îå_Ú-4FýV^“¶a®KLT•F¬J<Ù×ÕajÖq©ÝV'‡ÎláîmtqÖ·:V;4,°6Dc«[Ýrð¹+ xÝ*^‘c£`R[d‚Ç |E·ïJùuÌiÀPŸuuºßmWÑq,Ò¼*VSö´†d P‡D‹á‰:åãÎ4ÌYÍÆšÈýNÑ?Éùÿ·ÓŸEþ¿ž®=Êÿäó(ÿÿK,ùÿwÚý‹öúlíEâïÿ4y”ÿ?ÈGž'®üÿËVEm´»¡‹ö¿ðãÃ]T’ãÿT`È¿.Þ"¸ú /ØCŸÓµdío¥t‘ý4»ù7zÍM3NÓßV³¹1/pÿ Â@)´~·ÂÀéËm¢èÙÓëÞ¬Oÿ÷¦\4¶e2-j7aZ7MI¢E÷ŠåS©ô½êdÌt ÿÓAc6ôFçsœL9½‹+Ü9f8ƒËÁ}”°yÇÆô Í?¬üê]ŽkM²IX‹ù¥ãÑå*X¸Î± Ó:÷Uö´PÈi-A95CЬ½Qþ*2Ì}‰P0²òÆ1¼Ã•Ê`Ì2 4YùŸ5b¶ÿb|EºÌw®†X¤„ eãõãÕíÆ,/)î„*{-¹y`ß`ÆBXwÜß]u÷wPË„vGÔÏ ï>Ó‘üs±²®ËáâX<<¹ÎÄË@#²Äª7Mö!îÖõ<˜'з<Ìï´Ckx‚¯¡ËÙ¦”Áòk*¿ò˜Ý¾Öᚤ©ûJ.¾JÐ̹Ec_lX÷Â{S<:&O%O¶Çs3]Û3ù÷õ\ˆ¶WÈ©F_ÑÕ˜RŒ÷ fö–WUBf'˜ÊÖøêÆÂÏLš¾»·ac¦ I†t(0ï»m€ £ mðb;’7Ýù6½mÜ”í4Äå-LåüäÍ|8ÄØ ÛüßZ=‰;tÄo;9äM°@ âãC+°¤ÃÝJC¦‘1Ö2h^eò1PŽ˜_Ù8gpªs_àd¾ì?q”®ì”i½ï<á¨&û–&Opå€ÜO^W%× ü:e'·r@àêŽ]Lô‡}»IJ}ÿ%  £/Jú†%î“ó—³a·‘¦RŒœDEJÂ9'܆À¼R"_ži[¬Oz™ª—kþK"NöË)jÄiNª_¦yÉ#bb”È«£â~BŠ”D(R³))’D•¿$EJcÉ{’x)AŠÔlþ ŠD¤¤YŠ”/Ò´¢¥ è‘u#h6ÝWéR÷Íþ¥GÍrôhÃ3ï*É ÝÞUÒ NPH¥°•WÔ ¦’òÑòé–ú(ú…?±8=Y+(ÎMP!S|-:½VdÐ)n‘¡¤&…Ä0)K E‡Ð E´œÃ6°BµbXÁš„V宥n0”ÑÉ!€ªJCèânáÔ+Üô ”jª†š:C š³‡ú=)ü:κ¬–§ñë¼-—¬iµ™*1®¦ç˶mCàÿ1¼ïº*ã8Ö딣&üœ°^¯[ñÂþ¢ßþ£Îè´Î¡¥;c)sÞ–5_/¨·îÖû‘ç¤^›…'e=©Τ柷Իuÿtu¦¥Ïi|":38L{“>F6Áh4¶èο Yo£·ƒÊ®tØÂ«< ¬#­KQK)ŠP¡‘Kê.DeÁIÍ ¡î‚y–דEÍ,%¶aXHè·}¯âYa+nµÐiê-´QuØ2T¡4MK+bÈÂŒ¦Å«/ëê˺|SŒëªJiÌ`ýA-i„8M…8ÔOqÖõ³ü>jC1î4-Üiº¸³~Ÿ¸Ótq'¶/Ú/²ïÿ6˜±‘š “„ê8â®{Sy˜³Å€ ”‹^P"\)Ýx|Ù ½?ÿéÛÿãü;€¹…ÿGò,y´ÿ~Ï£ÿÇ_úcü?¾×î_èÿ»ÞÛÿÍÏý¿äûÝõÿxËáŸÞooèlœ¢³ñ†t’'‘¿Sfürù/É >Æ‹Ê1Q¤IV®§ÛµÜIoÕµ½Þ½A6*ܪŒåK‹½” ÈÛXÀ*È #U‰oðŸeƳoA°Œ'ÃìRP€†kÄ8bgQöŠæ+ÀÄŽ24ÎEtÁ°+_ǃ>Fi¡VÐÌXÕ“‘Tþ×ô<a"(ÂÊå¸?88½ / 'ª”˜ªÞð£kŠgOGãQc”C¯Aƒ§0Q#¥“ƒª€ˆ8*öté3hå*¡â»à›ºmGWW%ôëÐaÑÝCü©¨ù> AZà Á«(E.«€Ñ3š‹étŽÑìIsÌy,l8PŠÕ@‘‘Hž2R¯âÝ`eÖK»Òô_“Y…‹®Tbec…쥧óORÔ 6É8êÏ”òDikþ g ngÍãDHÿx­-Ò…àŠÎíf™¹õ½ÔdoªÉ¶8óN¾£LgÙÌóî…cU®„âS1½P†ìÚJÌ^1ƒáðþ¦[SÇDÞŽ"ŽãEÈZù1»gDð˜|‹#DØP¨¯8𔑵§ ·׃á»8ŸRœˆé V/WÖ3ö@6ï6W’… ܯò1ÐxÐ0µÅhÇhNçÈtu¶ª— v~F>*vu Zë^ ô‚õ†×hŽ “"ÍÈžtžàù {‘¶§³©z’f !d[>MO/zgo,N1g ŒPax³*Ïp>ŠJF0Ûði#-\ ·Â‚iÄ I4âÁé…èggd€m¼T¬LÉèûã"…{,!9åË×"%\ƒ8n!‘Ÿžž îÆA`#ÎgS ³ïåÛlQ˜û eGÓ.mdn¸¢Îø×ꈧ côÈBÀ,¹B#pt”@‡xÒ*X`Åžg@¬_]œÌ‘ÄP0·›N¢ÃŽuL‘«Óˆ–\ K‰£D~núyC¦8"¤B6»$»Ká,û=ÞA}pCè(óÃ&R«ʦ?ÊJ÷§;á,‹1&Ñ(ï‹ v'b8`C&SaCêaC1 Ø@,lH=lÈCw6aC! Ðî%Q ØJÚš:O$fëƒ1 N‡ÀNgJ;„ÁÜ›Õj¥‘¬,XAlÒ]èÇk\›H_¨»6;!¦…zz–ˆ‹¹xzL—ÒøôŒIÕì!ª3^%‹‡¾h¼-qãmáb=—^ÁVt:i™¤Ñxç‚}=ùY\ë‹â3ø Ö­àÅÞƒ%£.rh';Ø\Ö›OÇÇ¿%EиëaWÏ–ñ!Œ]ÇÑ|#`#Å¿Rük³E¿dò‰é$Ecª!íì7±Æ&ÝÄÇ›­ögz¿ = 7Iø°Éín*`Ö1üÚB½*ùšðþ?+r`k½yS‡Ÿ­ÃºØß¯‹ƒƒº8Äp“6¾Ð/’r „£¨?ÈcùλÖ T‰j3t”<"϶£ÍÖ[ø¹½“¯D†½"GqÄ£8ê|Øxÿ>²b·õ­ƒ4”ÖÛömÂ[20š´–¢ÐcòR°b^ªÜ=êÞýÍž¸Œêé-Û!S¶ ÝȆ؄ÃYêô‹2§É†eLêM©U!õ+H ¯ßVîD IN¦òypê†gHûÀyéØÑÁNñk¦VÍÔ¯i»ßíg“Ù|r‚—å3W ?Ÿ0ø.NqF$ÜMêî¦×ÏMêʦׇÍT>uŒæ6y}iñªf°2Bpúï”þf´¢R- Œ¹i½þߺŸˆŠµ•“$R¡GëSßú©=ŒQ›f^Œ T³Çã!–üê©m¢¸é"UuW'Iª›¶µ¡\ž$õóú¤ú±±Q†·Nñ“çÞŸ ýôt28aôÖªø ìûqÏHa<ááRq18›qÁ‘¯ê¦e}ÅÙ 'I¬ÔCùB{,RLÀ $UUO áq0TÏ_é!Ê¬í¤±ˆµÞP ºIuz’Ú/S _¾´ý';;2ESî’ìƒmÕ@mIÝE„Ôq›ÙßWq7©¼ÕÎbdFåh¤£•L¦™¦@§(,o àVåA  ꣅ­0©.àB•Ž–èÜbW Õ”70t–Iíà0,§Ó¡/a‡¼t|E}²ûñT Qï|)¸ÄH¬NµÛãY&cà¸ïCe{x6Âå­7”Îˣƈ,`dÙkïÎ"W²Oº#k]˜§âl8Ÿ^°¼.ÇýùÄñ0BžÎe,}ìÔ* ”¥,i*Å =„‹É¦ƒé x  µÔ˜ÔŽu½ÆžÀU¼?TÂÉ©èÀÈH²êõDWÒQøë(wä˜(¨¼ Àûòdµ‚ ¼ùìý{W9ò ÿ¿ŸBïžç<1Ævè†Lf2›=Ç6œClC{ö¼? ôÄØ¬/¹ìÙÿÔERëÖm›Ùà™î–J¥R©T’ê"GB¼¥ ÝÜ8¯=ò“Z—Ë©‘–ß/h˜\¤šWõC䚆ë3äÿëG.6îX_4 `»ö4‘’ ˜$»ælI“ŒÕ/4{P‰¥Éƒäm„Z¡µ"eâGž «›½æ$‡þ qjWbë¼¢,Ï+2(èR ;rÏXü𣓠ô²‹"ˆPRº»$ŽS*VJA^)O(HÈEu2ÈEí»3Z¶‰³ësßäí}0(½ÆKñÎá¡ùq÷N[ݰ`R©=ÔY¥>ŸÌN&qëÓ9Z|G›Iyê[L|)7²¸|å@ Ÿ<-ñVŠ’œÉ”ûˆ¥Å5gØ%R°Q”pð•:K°AYj“Km±³ fŠ´äÍ‘ÌZsÁùø•‚û”¹V– Y?.¨ÿoñÔß”×ÐîüÑP tñ¤oAß*ì|äõŽulxQcºM+ÿùòŸµÐµ^œÍÓ&©Ê¨<—Õ>“·#t^#wlÙjÙ¤ý€[ŒÕ~]fSƒ´ôRf *¨ÃpØ*ªyÑÅ·Ô¥–½¹Å(ï´k°ÒØÕ3Q?}‚®AÅ輰Б;ËB ^„0°7Pîí•<Ö2 ;JoûC–gúƒ¹iRæ"x6ÃGSåA)7ãõfÀš›ú‚§7´h±¼¤“ À{Íx²s&Êt”ù`ïÇ>û1«únnŠq)ŽpÑãÕÒÎoF!¸V’†;º$egØGïø («¿¬õïäÀÙöU¶„žì•¶#£iêI/Ô•ÚgûëEêÕь޲Lƒz—õ€=gò„°®š¦·É9yºhj0¾÷£FÉÑ Ñcépûn¼ýš]"zEIah¬]ÆÂ¾]‘ËÇ$³ÍĉýÉØK εÂWy)'‚´¨è’dåA “÷Á-ìVˆ<_oó%z7/æw~õÐòAj/íG;—ïCí,2wb«¥ž ƒ{ðÌXŸ0Jâ[ÁáV³“xmˆ?ßÿ‹Á%… [X°¯ñ ¯ùn·_“¯Âç4NlýáøD›‹Ž>zº)<ÓPc'¸¬ háÈ Ôʦ÷67P¬{+j°öÿÓïãü´ÿÿ?OûÿŸúcìÿ¿Óì_èÿ¿±ñÂÿýò4ÿã#*{ÿß‹Kâèðp§‹¶èh…ÿ6Ñ|M@áÚ|÷Ž0hÑþu\d³Ý9Æ"ï±ðûüt§«å¤*ØÈçŽÜ{9|8r8,…ÃGÃ|¼ÂQ@ψ ˜¹yÞ@õÇ µÇœêª‚»k¬ÎNä—Br¨MìøcëãGår_”ëe´˜ä¿ÑP ú*ÖèYI|å(¯¾o0´5‡â» ®öUV“§Ùç*7þ±l³MWl“šlšÄzã w¾Ö9è×î@l?ÃæëRªØXžL€U›DCn³ÿfÿq÷9Ñg fµ:ñJC𤟠‘Þ°ÂauŽ8f0°6ñ-^ó«GÇÈÄøä½z‚Éþ¤HÊ«b=‚°f<:&欌 $â§8Éh¬b`æ8C°+§4içðx/•®ó•Ìå²ùdÈ$àl¯u¾Î``»ì‚¡^8‰CÎsõx‰2›‹Ë¨OvòÃb°ˆ¦‘'Õè‹S¥D½Z ÄYP§F%ú×X¢;õE5ÂÃöO™óÑ ¼i",*¤>8q/’i:‰êçô<Òí/Óî…–k÷X·û~™v—(´\»ï—Kùv±£å}ýa2±Óâ»-±ãâ».“ï!þ*tWRs°íÿúoJÊù¯¾ßi€šÑ?hÓy†dûþÄé|ØgOé²»rEK â*®|Á¦J øTBúÝ”¿·K+úõõßÈxOé¿¥i“<Ø+õEU 7gƒrkMZb‰¾txáRô;(¬Ó~Ȫ8\S2Q62Ù)¢ úµ*1òðrÅÛdr3Ÿq<å<ØæWóQ:ËN+ ÆvÌÄÍû8Ú+mº¦ó³ª® ÷^x×Í®n„ÿ‘Œ‘}ÍKÛbµ0û26[€º hÆÈh¤F` ¼Çg³Ì2š)» ¶¦)zK Ó›t$`Û1iK#(íÌ1“</äQ¼‘Cñp€k«·4©•ÏC§™Oœˆ[’4ͤ €6áØ„i/$ ¬–ÖŒ^Žb’ 9´êl<ù1:Ot*—tt‘žcZyXM(Œ¢‘Fy|W:rØN“á7¡bƒ×GŽ´gÙ`0QJuBIá0Elt&ã¯)ÀN†ßÌ|ZÂÉdb#$ÇÎx͆IP0 `E'E1‹¸IŒdVrÀ?[Ð…«Qz ÄÍÄez5Ÿ$S™š"ë oB™&„åh£n­‘¯Ÿœ”å öñôƒÄ sðj•/“‘3.æç:k6ÒoˆW¯Å`x{=€ëðï¶ÖgÉ ¿6L[ƒ:³]ÀŽÀò=2fF%9!'©r"Q½,´ƒÛisƒø5…¥É ‰¯K¡P28¿FÀœÂïfðMÞ¾lÔ*"‚Ыj´Ä=81ˆÈnÍ4•#óô´'c˜Ê Ë·ò¢o©èg6¦¨(Y…×âYçÙ+4™ÉbÜTÓªÞÇêý¬®7Ï «7±z ®ð/ ´ó:zoS/z1Žæ°²¨È“ôêzFyÅ„ŒlZKj|0íÅNλEï»ö¾SC޳U,wÚϮቶ5U.…χ§~Ï®b¬ w;˜Nç7ÌTSM@›Äw¸­î/¼”ÖW`úo…Ö¼¶Š[8zÐþäY èöNVïŠHäF¯Q-uŸÐÄ…òËÌ‚AŸOj I†|îT"òŽ¢.äp$Î}~Œîma‚+—GVÛ¤Å#p£æ.4‘µ’¯·ÐL U³v¡Õñ»0”Cò‡ò¿uFÉô݇a2­×0ÐxVyÐÛ1 ží(ºŒ cl÷gu<åß ñëP+Kç)¸¿a@ûóá,½Âà"³Ñ¤J/é7:xE64zœw:oÜÎ4Gý6 »íš6Œ`×j89εðB];OŸ,[øUƒ‰®ÄV!~›ËáWm˜Ñ¸7CXn±ôo×hQE„Cøb{½¡ý);v;_’0hàUOùÄqƒþ’ßQx3g"R„Èþ^G¥S Ÿ¨GÞ9vØ»nYpb=_ùçÎéqn¬c4Öѵå‰>Ö†?–l‘ ©J^ƒ@ñÌS±w'è Ö2k™ˆµb­ecÜZ²–†u”=[ÏÆèņUÑaYýÉn ~ ñ»,”ïl°e¹âÌ_ÿw9³}Î<ú~œùò^œyô€œÙræËU9ó×Ît˜ÚÒ7¸\ÜGüVÃâ7ÚøN\^}X.÷Á‰êw“¿Õù»°Å¥¸ü·»sy5Gþ.BL¸¼š'[‘Ë‘…òŠ.–¿Õ\ù¨nâOΚwÀÕü0¬E÷âÍ ¾#o%p­Ê›ñ²ØüRpk¿ÿtkÿ#ìûÿ&ÿïÖæSþÇù<ÝÿÿÔóþÿ¿“ÿ7ÞzñË/ÞýÿÖ“ýÏ£|x¶»÷ÿ½’x{ÐP€*!úý”aÂþÿO—úK^êç`ºçŸ–ÿ×£ ¬E '¯²µ æt<üœß½¼œ˜~›Î’ºK` wMIÛ¿¨üÔèo‚òåxï`gD¯­xvX‚À]~…ò Ó¯ápü…}œ¨/žCžãë4ÈÃÔÛå#!19˦[³²›Ûùõ8e‡EÕmy§EºaÐqo¨ñ„àËéÙDüBný#¶Àl¦Yraèõøv&o›òm2™Í'g_ú 3á{x…¯F*œ#5r– yÐÏn„ 7G/}i5pÎcǾkƒé¼ø¡OLÑü›.Ûráñ™$›4aBIÞ,x\§¯lkL4K¾†ŠãÜA”œ†’É;Ô!}Îæ³Rmò)VâPÚX—êqñQf ‡`òö ¹ñfž–ä»Y±âøPü>¸ø‹^bða&—Lª$оÓQ/è(ÌáǤûÝÑùSþž¦0á¨㈄kA;²^NÆ7Jˆ†.þ>¦Äe:'ËÅ”@´‹pm>$®¹v4íåéyS›€Ç<ã¸À1ä'Ÿ.bAµk¼ÍÝ+p$@°PtÜã•K¼‰‡ ÈGé£E¿‡ˆ!Cl£2!Í¿…íP>æØ¡O:¶%« ÚÈÅ9Œ…ö¡u›²+v &c:Joæ7&)ÑL½çfpAòn¡bbõÚhÍ »1¢¸¯"¹–ÉsÿH‡¬‚G–yÑâX¸ä¤¡`& öäxÛ³åÒ$‘4´ÀQáR G Ö¬~µ.%U¯ª"‹ÍaHÆ4ä:1:×Yè=6…9l¸H¦ç“ô ¿œ»ñ¨¥{”× (Æ£]z=“Ðç# _OÉïåÜŸòTH«‹½û 8W Ç]–q1F6ÉŒ¥Rï§ÆJ³ë`ž#:Bx6ÁRŠôFÅéJ„Q»8¶NÄMoœçIJjn’m&ª>}k»!›EdWçnÈÀøiIÚT}iC  ¢`6?·=Ù»‚u£W ük´v;GûÀp¸ÓíWDïÍ>°;¨À]ã,\hjE·ÿh ÒIçÙZm·_ð㔠ƒži§ÔÁ´¹Á‚à ʓۺÃzXmñüª ½ïä!?Œ¿'ö3Kô—zÑΊ1ãB9œAϹ–…’5L¤7Ÿý„ó"àrâ„j°ÞsGa#áù­sÝ, „‚Bæ+v¼l÷a3`7˜ø øû“çx¸P)t¯ÆAëH§]øY†¡óÈ€” ØÐU­j¡Ë[ËŒ1›&A¶ }'ïº=t(@5Êü¼C•WûGå¨ß”µÊåV•UŒ,/›¨FF#¹8 ƒpœ~‘c²*2†Ï³ª`‹T¤Hö¨b…wÉ ¼Ã9Ñ!ÎȱË0zMtãà„³Œú°m<Ûûÿã¸DÉÿdæ? ëFŽÖ]ù»%£þa²aÌqÜ.ˆëÖìu+œ,{%gøO8ðípŽ7¢;Ûü‰¾²DàÞ(,iH´înÆW‰ÓW/q«dÊÏ£I—¤jˆùKþxZqþ ¨Â ÞDZ4·‘ÆÛ»É(™ÀhüF°w~=ŸøF÷“WϾáA—P&y·Éè<ŠR½ÒX“ö\dOã¦<“F9’ÍØ¢^b0žÌ®Çlðgymg/óÛ>Ëk;{iµ-'â|¢@ ¤2šæÂúÊ)): Age:þÄÌèugbb·˜ºmž)ØÄß_SÁ¿Ë~‹3îž‘DNž…0l,¾Â?€1h˘—ñÿþ¯^Ål—ÏžÒ^ùâe<¹Ñ1ÕêF‡Â–ñ{ cªÕk ¨?H(ºBJyù-Ò­•îÿþ¯qgÒ-G·˜tF8:E:^†VËׯôâÕì.5uÕkªOI®žŸÖÖÓ²\V?­­=§òÓ»q\[2)@qS¼Uħ×Q%®ˆT¼ÓMf¥j´†‘IÇø ?l™wU}ÎN&ý zÒ®{‹nrIOÓÌ1o˜\b¦X+;œ„L2gÈKÂEauŒÙL>åA/ øÍ|B–ºÛì:°•ra€ã»ô¥gs¶¼ÀèC7*ô¡?„5,jÌ1Ò®wû»ô»‡Ú¶»ý‡2ê%¨‡ãB$Ìr~»šn•/e©š™§Âà˜oŸ©m'V.JD=K{†,¢L;µÑi…MD×µý¨|àµQ!v+H›S‰©ÂYS›ÎRóê•nøµ,VÖ¬"±_$6‹Ä>”ØûPø‘C¨†&TÃ#T##TÅ|bP¢aPÂ!C—†M—†A—†A.Vn8tit±ŠÄf‘Ø/âtºyœÂmFœ7`½H.‡À€¾¬Áhå…LçÙu÷Úܣ쮗nN-\ë¼b]¯˜9²ö›Fî›-õÈëbÃÌÑ™ÝLX7]Æçöm×Y2s§’ak‰®y—²d·¹uÐh¶F3ô]oÑ×ò 4LJF<ù=¡ôÑ}%‡êjÖ,Ku.ïPÏÜ`½2»Â$Æä$Ž*™È¡oÆAÞbòF•lbæ×^nŽÜ…ùÍ)¿Ì˜vV ö®錵ÒÿWž…ÔxRØÍ;R5H»£Ô<Ýõ Tr” @ÜjyæCË ålÇ 9UtG¦åzõK¹ñ;’àžNLe‹¨"zžð•5b·FìÔp-Eö6­±SC‹f³N·Ë+;h %©Ï9Pß¿7JXЉ'¡Q&Ò°ÛÅë|¨¤ |.ÓÑEXùGk<ФU"Ã÷ÎPšÖ¡o_në™̤ FîôµëD.‡bü0(nV”-DسaI$î+Œ<KÊ#›šjr¤£Kò%¦ù]ç4¡™R¬=F9*ž&á)¡YTÁÖ] ,¯µ†ÛZÃjÍŸzí¡-ÇîNjÁ,k彸xÆ„vøâ½æGôÇn”€+±œ1Š<Åbé9²RõeZFÛYbÜ_Áñ€¬ ãظä/³"°Òuä^òTÞªã/²½ãm'ƒ;Õ˜ôðÊÒf5×™†Ô¥ý;Ê©üm{vÕ†Ú‰+Þ€@—¯^‹÷ô×i¹Ü—GêïQs²ˆ Ð)Å lI,Ôtî‡b›¥0ùλ7—‘¥šŒë$·Í·ŽF˜¬tÀìÀÀÜ¥ã.5´I½î<ÛÆ0Ü]|ìÁ°ö³Ù®˜J6űW"vJdÛfFήـajfaTXÝ(K‚øÊ£qåÌbGWTÔ¡Ñ5.¯}ýŸ.¦%üvõ½5¿¶Zµ .pýSÉÐ eY£µ¨BF„¬Á¼®V&Â]¶öTfg³óç‡p6¤Ïe»øô¹ÿÇ´ÿ¼þ×äG±ÿÜÚÜ|²ÿz”Ï“ýçOýÉì?¿×ì_4ÿ·`ú{ó?Žã§ùÿží¶ýçÞ{P?>Ô;}Ø,á¯S ÝjÀ½VEìá–`*é4/UN©ü<ÅJ§wŠ­ A…Úw>„M§ßN(;k <{÷HÎH%î6Sé@ñ‰rD ¥'² šÄ¿§¹ç^‰›$sÍ-ÂùCWþqZbdü€Î²âŽ!§’Sda`2^ñö^o ÎÆb~{1ཽ„a£ãx°•ÑE‚{`Šƒ†Éˆ‡“dpñ-Ûk•Ìnâ"¡­"ă=dŽ åFÄ”[ëtè}á¦dò]@M‚A˺oY ÏN“Èl äPš;ý×¢ÖïíÔÄ+Ž$: [*M=Iþ5O'ÉÅïNÅ7uØŠÔ^q 9‹T”8š+Õ,lNWÂ&ËdÍ(qŒ·©MÅí$½uF=ÀÏfýeX›ÅF­ä´Þ”@9Q?†âr†a/Š™Á8Ì6–ma$þöššø§’*ÐÐÚï4𨓠ٞÅ«CîUŠB¢òXs]3NÐ R’„Ñq/ÅM÷zYa~ Ø&˜KiþŠN#7Y–ylÀž…k<ŽÏ?aŒtêÅèb0¹` KŒûi"jÂÀÆ2„y221ФLEpÜ£ 9Meœt´93¡ =jrâÑp ³D¼j}4¥Ri oÛb,Íùç-Eq¦À¢·ÊhŸbÞi€‘\41—È^ ý]q\gÍr ^ņSóÖ‡Ö=*kì骕˜êfp•Žp9D¾iþÂH`\Ï!‘}R+š50†˜Ïæ/æmBþ¹òŽGtDi@0yMˆ_ZÄRxì.#zUE[zŒpGúÄißt È¶ w ©ˆéà›Ã–ÒõhmvÍSÆêJº†Æé².ƒÕ{ãÍZÇ–Öí©M¾éàF­9Ðó±‡Ü#ÇÊX³u,jµ'':(T)Jù½RZI×**¼ ^½‚Tèçû2Bŧ4Þ+€µ25PÖ,ʼU*n-–§ù³UÔs’ó,ð€‘¬rœ"S~¹NÑïÅY>d.wK^ÉжRΞ.XMNåo½Ž’özr*ëÜe=9uÖ“–‡VEG:††¼Ðåçs˜v#+Š®\sN‰U‚ ÎÏç7s2#3õV5_ ti9K’‘T•/~÷!++š’b8³–^á„:Èé+Ú‹È•É 0u_-&§E᥄ñï*ÈOk((È—‰ ¼.0¤sQôèÝ>E}néèÑiE©Y—ƒtÈ™hÔ}#j=ŽÑCɘñþž H]ÚÜÈRœC5£¢’Aú=“Ž0u_¥×©%%C2.„=™…ÏÅëÁç„x'T9£Ó0ÛI91à ž ‚1óŽMT¬BP8Œú `Œl0ú°ëÆä®`^‚ì’wòÔ=”L!ž2|=žÌ¯®¹{æ%¬Ó›x-„P Åè.ôÊÖ&M.Ëm¤¼¦þBÍR¾œÚ[+!£•K„¤ù&„ßA©´?äØ˜å8ªa‘¾êpqG3JƒÖ´±ÉÛ©¯eÖ#èÿdL”77ØËPñt*š—V§kHCŸº§@ÝTœÑ¶Tû‡f;-µPÕÒ$¹7yŠ»tsĵ̞ à0"r|Fà³Wû%s¹_€R¯R-éCíÁçô~š×ú¥Ñ¡"€{{p6á4ž˜ž"ó½V7¶429p»ƒáíµh|K&ÒõæfßÈÿ§ÁTÂÌb@9Rn`¬ŽòøB‘ä/š6ȳ¿ì oC-M¼E/Js3Æ£Žñ.Ã+&ð[‡ñG¡í‡ú&«—bЋ.Æ·3B‚A:êä3gu¨_£PùE?îµTÃÛÛL†] ˆrVê:@$¼:ÿí·—Æ"õÝšZ¢i„F—1™“F½‚Ãì=d‚n?jÑOtêÇôwLo·zM˜vlÝ[?)¤Í÷Û” ‡ãH±>úmÂ?´Uêõ ÀºopNE´j еú€ÜÛŠxW튀æ:{˜'þ…Ž˜™¼tÐ\LÝã’Ø Л_`»ypø‘4ÁF}›~wŽ¥‡Õ›Ý\Ϫ;y8m7Ð÷Œ²0ð¿ï†½¶–Ml dÇûyzþInDqgu;žNS¨¿\J€¬(EXÕY×v¯Pgâ]­¾È0-Nð:A±ÍoÂÙ 2É)Îa0!sK”аǙ^Ó Í “Ù«k'Q›|@èíz¬rªÛmÓ»M÷€s¢u©þ·w°ÿY0Ãÿ‡a¨KœjÀv¬³'^K¤°ÿë:ñ{çTÈk•7³øJ»U%3•O¨z‘ÜbþÄm.ñðo6¥TŠ´}“«Q¶:¿Õßì wµööl$…´OW“ï”Ñ$°)“F\!ÏNÍT£_hÆOÊ%âöÒf Z$Ï•lKÑbÝŠµt úÉy¦Ù³ñçD.êÃíºQƒ$}TBYtì öÅt”¥×Ï5HÍJ½«ÆèÏàpƒþ\w‰½VÈõH.&˃\BÝP’ÂxD«&mßuŠbÚdYûo -tÀN­( ŒmÎÅœ‹»Û¢l÷ãÃáíîÔ˜g3Ü?êÀC—cØ›qS®õ;AHo0pWÂg¤“Áù7_ÈÖ˜ÂxZ¦BQ9Ì_°Ü”‘´á¯7,׫vÅ߀ç |u„€aMï ¡^áã­#D€ý«F††Å ôy7Äüz[F]ƒG„º*÷8!pÄ Z«Õ¹ÿ YäÕM/òêVNrü°lã髬ϥðä:}•pÿÔ®†,ÒŸà±>vðRޱÌòלJ´6àÒ` _‰öË{±»%I#ò¥ 3¼aBÂO¿½‰ý7}Ä‘h¶NÙñ'¶wúªLН•‰vô'l䡹2 ãtüwßwûrÉE(!…ž£äÎ÷ÒêPÄ3¹ 6ž ynlWQÃÕï:“Jè‘ÁZ-z…ÖÄ×U,f¯ÀA§Z›Ì^$ª%œœùVGκY‹º,ËåôJTsJh¥UiˆQÿbù(?D¿Äùä(¦eN‚]#΃©÷Ä`Ðþ¼ (ræZ¯šè} š&<ùÛÁ©»|±!ðÏÁb:V†ý É Ûx·qƒÖÀ3ãò29§Xfhs¯³-³Ä®ÿÀfÛ[ øthŸm'¦IÂAAádÎ7ƒO ÈÐýÊ~5²/çŒM2¬öjŽg)ÒÍ“l?S{«¢.›X]ºOgÙ•Ó´æ-qÔcY¾Ú¾# ÌevŸ^W‰W´Ä¦Ñ4…yÏ_gœ­[=bIç n­,Ê” ШHàëY{Œ}»€6sÆ=xám¿~±Ÿ2gÛžëtZéÈ”H2íWH®DΚÓׇÅΙ&zÞãëBÉœ)…¾&t[#v-0´%£ zNk~LÓ[H ½gCWþ­bÏ> ™]ϧÏdIš ´¹ìÙ|x•HYi‘¥„©kþ@ç³ð~šükŽÇ{Y·r{â˜|¡q)Ú6º~tz)ÍÖJ°Ã_›]Ëýž²RŸÛV3ç×t¶Lç‘Ô\Âqˆ Á/hœlœT*k®s×ê3ÛÖD§›™QHëþ]wëA‘`èÜbUg?¥Ì]Õ¯Žù*/ôJt—iœËPÌ€c?X‘ãñf—ëð$©È)FÕúE8õó@HÉ”P™õ(+ZÎeæÐ~`Ÿo‰ €è=á>âÛÖ§Ó)nGSfãLqã=¸DâC;»ŸUó«Ã”º ­©ÀÁgó+4®‰ÏdŸ ø¹´éÛÑP½ÄÖüC@ 㺃ÎNÕ¿€Zukánoð9ìfc:]èy)ÔŽ7õjà¾êoJ˜›¾]™ó æ´–H$t@ÔèãËø6»q‘!6Ÿæ¼£ÓœØj‚ìK¾X}‡få´G—zLÓ·´ˆÇeźòÁfY±á[¿³BµMHU„]î{ÙrE65²*ꛬÂÔÀAUŠ­JtaLܶx´Ä·‡AQØÝŒçƬEWa ÁKïÖ7+dy_åEwTa1ˆe½3glÞò1­ü*5<zHÏÇT“µMHÅc£á¿¶¾ÂÁ¨;cókxlXêºõ4w÷Œ¨ ­½Ûa¹*“h¿¡ršIƒé´(¦ÇàÔƒSw N Ç>§Æ0œ.3 Y9§Ë„Q/¶ê¹ƒñÛ†U)/Éa@”ê%‡d~\°G—uÑÆý„Ý£É6DÔ'ý$¦¢(“S­;ȦGEˆhˆ”¬G’*Qü0bå‘¥¢m~V‘êQ´éî™&xìýfç|–¯ÌDˆ9µ÷ÀhNNùÀͦ…lUÇ)žÔŒÞ‰ù À7ihôø½R«Òòn_ÑF(»£{ºÌ Åz²šSÜéžç“½œ«µkáÉH‘N@ ¶í­jì!–Ú3oëÈòÆBPƒê[rBúŸe׃0Ú5sy36½|i(}fð$Nï< ,’¨ WcôY7(óJ¤bÞžäÙ½j¢r …è*ÿdúW­ó¡p¯¨k^AÚe¯4W4DI_rv™Î´›ˆÙ]ÐÅt󜷃¥øw­¸Ú2H².ƒïíiÊdOrzeõÌzh´RmEafa<Ðáö\8î\_ A‹èuêÒÈ@°sJa)¤ÀÔèe–CÐ9ð–¶²Ìß“Y¦^(<2€%_2—–m`Ö¦Ó(þÎç_ñ‹™_<›³Ühj{xÀaø_¦fÅÿšü@ù_·žâÿ<Êç)þ×Oý1â}§Ù¿hþG/_¾ôæ´ù”ÿõQ><Ûø_]PÔ:ä)ÔÁ̯2Œp¿~Dñ“ÛÛðã#þþ¸b ¯ÍZ¤¼]½Ïœê€Õo'飂ý–×âÊ~VŠ&ö®¢ÒÄñ?R4¶N#àG´B\0+ l¿ÄÀ; úV?*ñŸùZæÇ’Ĥ±JêW`,ÐÃ.æçò’‰ïñ†q\Qgkiœ%FÕÆÇjiTý´Î·ú*A¤ö ÐnôÙeÛ' ,bš/ QF<¼=D(„é¢Àf·lçÏL¥§ÙV.½Ia Ð×ÕÖaÈ{Œû]TÊâ}ÿH–g]sš`‡ù†±/=XôÝA¢à+üC]ô'týy\î—¡!¾± §cóÔá#^CûÇð¯/é¯ýoeÛÝÙën«”‹9?ᆱ.Á¿[Äå%úÞ(7(=H5±d€9ÞòhÆc/›†üw¡"þ[Á0Þ‰¿é0#ÆR8g'ª|¦›Qôµ°jÞÔ^ŠÁá&^Î=qŠ3©Ò~]‡ç1s?'á dûúçÒÖÌ/ªý‰–ŠS¤Ç;¹˜ÿnã¸ÔÀW /&…´dM’[@¯Ö Ö|ïÅ;‚¥ùŽR¸Uš8j6NyŠÉuÉ’W™_}æ£óëÁˆzIâúù¯wvq#ï¬E:ÎðW gÕðâYMyâ|Üz rÈcôÖ„cw¼¯fÂJs _ çåÁ•CÛ×4î?û5†4î4$äwêÄÇP'hîŽÎ´@׸|Ü?ÖÐß³àI˦)í›3…bAÊ9$…™³°rDæ¬L§¡ ›öðâ¿Fÿí•FgŠYÉfÃ\Q–t²G˜ÜdÑ9®†³ÁVºÏøÖD.Áñ:ðM:U‰â™oyÍül<—Æ>*ÎØçRô*]ÿ$ã3Và;|ÿ£ßùïõèÕˆŽ\eì0zDÊú*¢"~1#Ò t®¾%j/ ££)à6_%4"úHV r‹/αÔè8¹@ß ’v}jt14_,>¢D0ó‘’³·Ö16Só)Ù1©ðSÚ;½â…ìÕkQ2“5ŒæŽúÈ_^›ñëšv¸P¤Ã!ì»&**–m‚’| 4-ÉÁ€¼¬ˆOðk“ú dy-âWšAJ0¼Âù·vïw×ðó:çÝç¨øÝçx…w@-g ×ÈÕ% ¨Ò«ÔˆBºûuVœTcnÅ©™#SÎÔhá8Õ圹H.ù.fÏdmœ:ì‚ܳ éJÒ %ƒ x[Wݬm<›ò^`A¤#Ðn14 Y±K Ïø7Ä!ïç)ˆ—Ñ z0™¥„öñ äÄnòG :b–›Ö( ×Àîåu˜åï*ñ+¾ (//q²ñõ©Ü¦èx~’5©8+Mº†–Ä) P›6í v«d/‡%Ð3tH!VT!º*Ôš#”ùíî$¹´ÆBtÇ0¨3ñ™èÄHÿUÄ_[DIibä.g- Q²5Ú6ƒ•¿ŠzsŸoŠçÊíd9¨1ކܜWÄf ‚ýUôëF5úm«"ÞÎ@[²ÉCå¬6ÇßâÞ%uÁ½ÊsU‡Â²ä"½Ó ^=ÄIý„BœÈH'»;ûûüë˜âœ4ái~Ou ÌW¿ú]ª ¿Ž¸­ÃP„z˜EêË[Ó($´æQ:Y÷Øa<ú¨:R̉ÛÁyâ`ц? €^XÇ8|Ó,Ä=:ãG%Þv⥠Z®ƒ°á¬>ŽÅšóè,ö:΋.´†ÑîFÐ/P@¬…[•Ÿãˆ tG”M‘il²Ó)[¤ÎØÂFÉ8Å€ÚˆðÁ3’À¸â—£N«ÿ¬@BYm\¡ yšë`èê6Báî†SÐI6î­¶Ö#ÉÁ¹HdœÙZ]UR“£˜-îƒdç/Aì%½PAòèÝ9èT—¢¹<Ï-TŒ%ð%  ?«Hë0ž¹b 4‹ŠÂaeƨØã”#A`vb"ìC”Ó—·Îäâ¤ø;YÜ;Kð-žl¸D–LÚ9HMŸ Ú”¤ÔNÈ]“i—ÎåTöèÀ~|Öh7¥×)ÚœeµqáieKÓåÌ Â.ø"ÍŠé]ŸÉY”COºhÙS;¸hp³7ÆC7eöº)-…x ËA¿`Ô] £j/oëùÌ”!¬ ~tÇ9ŒÝª"Γo„C¸l1æÇh-PÂí}´§KžNa" Á"b¡ÊXb,*¤›´V;$÷)ƒYLW°wÆb5Ù¾X°ç!ÐWjèñ!ÑåNùèhÜñŠ…KEE—´y^uŒÌÜjÒ7Q€=ƒ/ϲ»Ú,c*±¼¾¦u¨³»­Ý=¤À*2YIcn.PÀš‘Q¬¬ƒºÝ7õuÍÛû>o»ßßå Q¦(þF|r'’j~& "G…Λ"‹‰›ñàbâlYLàÀ-<¿Í·;놳xÚö_?Šý×VôË“ýÇ£|žì¿~êiÿõ}fÿBû¯qô‹—ÿ1ÚxšÿñáÙîÚmGû¯?‰¡W‰;}~4C¯ÿ–¥×öBK¯ké•Y±3àÉ–ìÉrìÉrìÉrìÉrìÉrìÉrìÉrìOc9–gÉu×wO–c -ÇþK&Aw² z»Ÿïføs\ ô­§ëZâ;]ùS˜Ïä!Ÿ»òèî˜kÈú,Q>.c‰²‚|ùN¦0K,¾¶MKeè²ØÌÅ1rYÂÄ% Žá™¸Ìî,4¿›1 ¿*°JØþ¡¢áü|Óþ#=~ûÍè)þÇã|žì?~êOfÿñ½fÿ¢ùol¾Øòâÿl<Ù=ʇg»mÿÑjF%ñö AéÂO*¢·ÓíáCEìÖ÷÷ëüý°KÉΛO Þç @o {þ!a35,<÷´ùPÂxÄ0Øô{y3à3CçŠÀ(­£ó oцx–‘ÒUB2¥òV¯A0î4Å#ûéLH&‘‡óx ôµ‚©‰FãÉMéëŸôaŽç69EX ¥°¥;s<:„Ñ%Ù1Оh3 @ýŠ¢¤N8Éþ­úD×jz“Î,9¿¤2©Ð¾Ýÿ€wÿDÜ9 bP.Ç’TVÅÃ¥î|ŽÌî^÷—°VTÄÆYþÇ`x{=LŠ2P‡Ÿü3DÜüÏ?2zf3Ôk_Àºüe # Á+¸Á…¹ðªÀ£(j‰Ãp¼ÑÉš·T¶ídt5»Æ19¡aûÀ5OœšK\…¿õnÁÿ¨Ê©ðUâƒò°ª `GvûÂí& ú®;hiÁÀ?<(ÊŠH¤/‰2ð2‚ßý?ìX,K€ÒhDà?!`ª–1–i©‡Šß>£¬Áka_3pÍUÀ5ÇÓ…ÿëwŒ#Ï䢋FëžqƒjâìÄ/ú@&ÐÖ^½ý¦"Þu‹ÚÁRÔÎ ¥áÛ–„ík9÷™!ÛÒF¯Þ>¤üפŒÀo`føÝ>Ü%VæA¯…”Ø9ì™vº¤ÔÀ ß‹á_K:¹ô jÿûõˆÅpy ˜V076¶Û©PÏ¢ ØÔ=¶·útߺßÜSÇZKZ³T¨ÍÜT òSßqý’x¶s;M‡ãÑ3Í'D},±á´Y‡H7ÏáyìT=®³–½ƒqTïX>ïv(“=½£¿3 xû ëå\Ü¿Jyƒ5¼R™…§·ÉyŠ $&%3M)-´[”ʶ‡dU¶uæI׫œh0”««)ìÝâ,sRs…€3ñŸ&¡&˜ü¡·01tÚ^¹·Þ,7ÃyÛ{˜óvÿ0½~¥;Ñ‹Êîë@ÎyÂkõTe4üñ6¸¶,y'4^Z6C4ä>«‘URÇYbÙžßÃ^Ìo±^à­ê<¼(KòFå^´Þ‹Ë=7£OQ×ü]—˜‚8BµÏÜ^\À±Î Ôìo/^Š_ï2î]‘‡p¶g„ÄQ«tkþ”Zw 1\•ÄrîQŠj/³POOK É:r÷§fFw?Op“L'ôäå U-Á V’·l,ƽ’¡‘”=ˆsÏJ=ˆÊ^bæõ n„—Wªi÷@.6^É%ƹAÇ]«\Bœ hÒ' Ù˜h¤kX±á4¨“˜t –é'ý—ÀZõ¯€dÓÅ=Þk SÁŠÔ—‚J®ó(5Êõ¦—ä68ìzdUªh„Hm÷u2¨É½D™iwèÀ|jÄ8nrEsÅ‚eü±ÎµËˆŸå—ûbš–¯ƒœ—gRcýuT¯×ÊaöØÈî¾CR¯ e73ôšœóÃ)6¹Úåü i<‹Ô¹Ðz¡Fu9MFrM—\P4ßÍlK{cN![ ü¢¸$ŸOif±‰ón±•§>åéN¢ yô­®š Ûª”<„棔<„¾ó?­”¬º¤s?Ê%‚ú\äl-ªžŽ²h…Ït”æÂ-ÔQVÕ²ôn G×r4• ®U ª*½»°Ñ£«*tÊ¢+’ÌPA8Ó{ö γgôË­[ÊŽÓ+tíJ/Åd<žÑáñp<Åëv˜Ä{ø“ÞÌFú|€Kö:…•e“U¥QÉïëªQ³2ÎPÛݱ–=/¿£…”©¢³Û]¤“ä|6üæà&”ÎgRÏ T4šÑWÑÔÔ­Ó7¤V ­Yï)CrªËh×",³$ˆ¦Ó4k{u}1!éÙbyU[xcJ¥–W½ÇÓÞoëK®ua«™Yù?Y†?–ýßt4} ;Øÿ½|=Ùÿ<ÊçÉþï§þößiö/œÿñÖVäÎÿ›/Ÿæÿc|x¶·v[Íz[¼9ê4ûx•‰«g¯S‡Îv«Uðg¼¢©_\‹lS?øÈLÑÆr{¡_Mž%­æ¬H<2_Zݨè+óiRUu†.ïS´ôÌ‹Áçqz 0XJu|;KoÒ+s:@ÇKYcÉáç×Éù§)5Ðt¦H`ÊI1¡l~öëž^²¹ ¢x˜Î¾*Pñ$Oò`r9ÓIgõvœŽfÒ^„°èÿï5þB(*6R­ß=Ú@ý1££±©Lòtp“¨IJ×Þ@tÌ4n:âŸaHo`êBÑ)¼Ïò~Øý‘VÆ^+2îÖÁãZ ŠDÉ; ŸL[ŒXñeð®æ[£Y2>=O.æ8Lh¾s CS…gW“Á°ÆãfðM\G’Õg ÁFjl¿ÃCs©- T<¦Ir;œg (þÍ9Yâ½OлGllÂà(K‡1æòÀ‚Ù£¡] à >Ò!ös ‹3dbäÝ|$Y*..eì`8À…5bžcó2ƒ¹ÜN§ÈzBNa53`‡‰Ý®uvjر5{3ñÓlLý8zÊÿûù]ÿŸôÿŸû“éÿßkö/šÿ[[ñK?ÿ÷Sü×GùÈc:Ëÿ§Ý‰K¢MÁÊ+ 4ÿÑÛou*¢YÏâÁn£â£•gð¢€7ÛŠøÐ…-2Clo£Å%l5và+>VD«óæ`Õ­Å¿±è`; ïˆiЖÛ\¨=˜I=ù>NH§cÆ6$uyÀòw,McèäHðØâáPѸÜÓ¡È :Û(1zeébDh–Wñ3ŽÄÐç„F™œ:ÌcƒÛPž/b[¬Á*öZLÎ…“ޡ˽Öo… ¦âQè7Ü•þ:ýëŽ+Ö¿M&°‹9Ói 1pb‰ Ý$ÐÝëUíu¯2ùÕ¥7J§.¾âŠ§Â¤.~°¹m»ožà½6ôWµ¿•ÇR«‡ÉWÞƒñ~†=,jçC£,4-ð9UN/~©h8ê©üŽ›?B·3°?‰°ÍXŽVË.[1[vƒþ±Æ¢¢¤8Pb(Áp~g‰ @D˜R¬9µS›&èM†Õ³RéÍÛ¤À¢;B)ä r JQÂës©Ô” åB'«è0yaŠ»UÕï-O`äFH]™DíÆaOü¥†-ÐæeÈG÷„K1J ßSD7ò°gÈ=+¹UeÌ»V¦':pU˜T«X5£É[dÇʈæ™àh4¡‰N¾ðG$#([³oz:Ÿ’3Eóu!Õ¨M:s,cß5Èiˆ\˜pb²McŽaü¹Ñx~u4º|J =‘&XÁ–jEA ¡1ŠñLâå# ì0†·ýFWòøÖ’ŠjLvŠŽo$º4gæÃY 3;Ž!VeÓóámÙs±&Ôùü#±X5a0½Ù·*1|ñ AhÌå‘ ÷J%÷©¹ˆÅ䉧gÉ+AQÂp‡/@GþHé¨åB†)æq™ØÌI3óK¨)H.«ÜŠM´h´v;GûZT%¤ÜçÕ/;o ¤å¿ÆgK¯„)‡-v¶ÝÝjoêí–¯Û<_¢"àB¡×‘Ñ—ÄR¦ÿÖñ.uðd:ÃCÁYÂaXóägçÃBØJŽ¿~ùk&¨cãI&¤eCr¸EdÂ0ZD4[\èf–LS ]Ê´gãùˆÂ˜Î|FU £Êˆ«>Sà š#b:¸D“ P£ñÔ ÏÕ8 @eÞATU,(èQw–̾$ ŒKºüóX-P1Äæ)j†kt®$_˜0tÐ;T#4í ¦¤ÚGíC5úMgôÑë|œ\^¦ç)J»sµ˜2 eAJS8Ø{ùˆÞuÏŸPéN ôûŠVì‹'¬g†øì(àÛÑj´‰*‘^ ¤«±£Üˆm:^ t\‰ƒ&á&×·K˜{¯#ÙZã.ÃШt>ä ÃÕfC”&˜»zMžÊ°ÖÊ%AǤIlÂó™TRˆ" ƒ;HezL‚j³Ê‚± ƨÔÿ;3Fcc|è®6zV¯fYàp ‚ØZ ¢ÝçØ\^ÐÉ+ç>Y‚NPn}¿Œ¦ïyÐ>­…Êaƒ7Æ*¿fZÈ䨛0<ž9±xƪg3‹%8M¾9¹3ßœ,âÚ‰ÑÞ[tQ·Vª ©Ò Þ’·¨¯À|˜Û±ö©†^ .Æ ßÄÏÏçx³+ öä„–¶ùÔZ•,îDh}‚:R†Ý.‚!^¦æä/0ÕH¹x®}\•Rs&nÉW¡Ž­&âT¸W'¬L\ &2 »Úv~0a{VµáÀc…Àð×9'Ëáàªfõ“q(«OÜeI"¸MÙì–®€6ŸuŽŒ”bz¨k=ìA*[ª Ö0À=|ŠL0Y]aˆëÒ`3Mߥž>ȶ¯,=Rl¼!bva‚QÕq~Y|q‘^\>'ܪk')DâÁÀ\ï”(’ŠÜ)yM”IRB=Ô óLéðz#¥>ƒþÎ+ÜÉ+ƶô’}z›`wgæU¶šB~ùÒ—çðm4‘N^ê>à øžÁÀmý"·ü~ÿ¶s¿Ò¶B@ñ&ù°¿ÍG¥ÑèlW@ÃðžÖ’® ¿ùôµÑÅ]xÑlÅ!bñ5¢æš\·Ù…ø_ôZø£[íb8mª„ÌÖÂ_mB¦¿ƒ.þGqLnùG­(âŸÝ@ð>¦R1UA$ŽºT±‹ñ?Š‹"ö'Hž$Ï Ò㤠1À£B§ ÅǶÝÞ‡úaIláqç©þ»`[Çè©¿U1Ê…Nn[%Ðv9»k³u,[hv§]~À~ÕH‹bäG/X5d}»¾Ýzˆxô*¤C©ÍSyÉèÜBæýQëVëNsGÁ(‘U(d"2:ƒ%H+Ñè*]U%€Æö`áUB½_wÀãˆçBYTŒ?èÌCýÏóat=ªªý 3'Ád¹±YA6) Ä}å'üv«€N›\ Ú 1Í‚¤*†.K/mÕÍòõ?”u@Œ5Ü€þs3¿É¢bÈM>{•<—U5GÊ3†ê$èÌŸe{tËÛŽ&©°2jÖq=…`Ïóhé?âojuÀ”sä;†_V±K²Öî×xøÂŒƒp_I”‚/åH£8Ô!–Ð À<äàæ8‹›DhhzùþKºkȬµzg»ÆuÑ/œü_‚}%UŒù½Ì\ ÌKƒóUª·DgåD‡àÜІê‡Öb–ëêKëGàoB<èrûÃp¾¢XC%®ÿ_˜ *­À6êò@ S̬µ¡ÚŒ tþây’U?É¡TÞ|RÖ Ä:0ûEω¡˜uÛ;ar¦ï<…uýn'‚È4§…1SsuQù•‹Þ”8òòò(À²M—䢫›˜ÅžxZP'²Ó¾Ù À±Ü ŽÃ¥ô€’¾ßwÑ›TÞ¦«\Æé¹;mq¿Œ5!_l8å9-Ó[AÁZ·BS’å#jÉo‘qr¬\wLÙ’S/PPáôÖ}—y n¨Ê]àÉhºœm®ÙRšþÔ÷嵬†¶‰j%³À† ¬è'±š¸^')6°²0ay(± ËE"Qä¹°ânªÿ<¼È˜ú–Ïd dì– L+‘I@.Â7¸´ ß=_äüÝÁ|:M)Å^  e@¹ÂPÿ¡x›~㩱Ë$x*9˜9Õ qö^@7eQ§0žj¸…7ó ã[x«rÔÕƒŽß¬×mÆ’J•e§²l)ÆìJˆd+ø“L±S-0ÁhvPk‹æ™DceåÆmRžãhB…'u ’Ë“n̯Ìr×à“Aƒ ´è…,ÞÅáÀ‘(x»@*Y©•™ÎefC4uÃêÂPÒ‡’3V t4ª¾£D’QwE *‡§­ùð„È@=06$؈S,¢bRAëâþ…‰PEDä{š}>N—aSîá1£ÿ:Î^/|cƒóäš na°›oB’¨ñ?‘ãïh2/°Úà} ­¡õ5¡lÙþnyd;1W/æZL*÷'öb†›ŽBEB.KTè¹:Iò‹y+ÓIÞdÅé$Og}: ­O"ão*D_–XtÝG;g_GÌÙ:¯¤&¶ ¢…vÊ-ƒN~p«–¡ßjÅŸ`Û||5^IEåÐ8t|/•U´î§ÄÆ?®»îîås·´®²»n<ˆŸ´_³ä²Ú¯1‰ ˜îJ¥aÆ.ÌPÉ?³Fˆø¾õ7ÞŽj`ªžã ¦ ùaty¼²u!禼É$è"Ùéï[¹1´šã‹„-KÆ——UexGV4nÉ…hJ—€ÁÐôdhö0X$Zù+Ž]ž%ô$£bmŠc/Ãm”e$d貯Ïê!¡ŠU*F`¼¹ŸøIâÕe¼Za¼xXkYĺb­bA¡ÔV¼{€`Ú-£@.]¤s×â0ºŠ×%Â0ÂûCä[£X+(Ãܸ2'.ØøŠlØBêKÓ·•W`ú¶rK„é ŠÕñˆ˜Ñºª©Œ[¡ 0l(MGnÚ¤–C€w wØús3÷ÙõË^†Fî;äïøÅâó‚VV;° 7ZYm÷õ'˜­å!ç#³Üap 2]ZúKt‹Ê¶dYUÍ-kœad§Z¥lÑBRiyŠµÊÆ"ÔUyº¯åj±Ù™ˆjhÙ㑌ŸW:‘³-wM\p2¢!RÊ©w¤Ho”hKÐ@*Þ†Pç`x%òw°÷hd¤F&ll³Å&_']2ßrÙrø¸†Y‡†;$%c¯Œç,áoÉ"‚¬Cl*aµ”€äú–Sÿ1΃„­ó»([Ñ?i}×Ó$™œÚa\—?‹â¹†ÃcK©ÇO'TÂ+œP¹{È“<Ù/ÛÈ“¼m¤xÔ³¯@ Ð…‰ÈÛ¿+«ó¿õ'ûXñ¦?NüŸ§øóyŠÿóSŒø?ßiö/šÿ›8ÛŸâÿü—>ráµãÿô6Pm=Ø?|_6üëR‚Äük¯Gy) Kƒ"úÀϼS~!wÐSd·u|ØïÒïæA+íÒoøNþð€9hïô0Îæ›6ýX§ñ®‚±áù‡ƒî»¼HB?Kü €c‰"»KŽôNG âñ£¡È'½ÍÌȲápžò^ÀÌ?7‚PwÀ«¤Y…‚!7•(tPnÓV°¡EjœÈ¯È>T½ »È\%ÝiªÆ\j?\ÀªäOnXœ–V }ÔÛÐ)ÖÏÒ‘N:¸~Ë"ÛÐ9g’ÒF‡.m“KJ³ # rE÷Ò‡KïdL™îùÌC›ÉH²þ&Åö˜Ùè“ iÇöÌå=Q˜&š‡}|§¸¬ö0™Î†hI*Ä|ªŠ\¤8Áªªz>ýkè÷Ž·9°ÉàüZÒçÍØèU¸èŽ8I1ûvË)ưëS—‚Ž€„Ó;}Æ`R2×|)j¯‰Ýôs2BwÆ;h¼¢¥)ú‘+þ7ñ#äòH’ß&"2ü91³ûïŠxÔ¬ÒŸ½jiOX‘=‹¡g‡ÉäfÎ…käÞZê´×£µ* ÍÃn`4t*]Ko@ð\¨q¦øL%(Ì.®hèýöuüª#'äÛµêìz, å­,«0Ü ûÅC«|ø'ÉÍ !çXžÉŠ9Šx¼HÏ'wcŽ.#¸h `XŠFë’„&ÛPd¤¯³ÉÀå;$‡‚VÖØ¬¦Þh>Š),O‰¦ŸD/ÅÕÓØ` ЦC–!¨Ò[‹KGºtQÈ`^R bô0ÉÝ%J­/× Ÿ¿Ø¤cj3§èpV–l 1Üé€Mþ×í|†©Ye£W¢[0v*û$æwˆxc˜q p„æ )'âl8>ÿTC0­ýö;Ý»•Aw$Ю ”¸¨(‘Ç¢"Ìu«gߪ…r½Š*—:]Ìᤒž!ž¥îªr=˜:ýÅHÌ@´uìä:L „®"+‡H(‰TÐTÞë-¤r&É¥hΨ4Nj à OáD‰áž¯„unÆ9±û h(N{ejv@t ÎšŠ‚ŸVšWAŠ¡¶_ÃVU³ÅEbÐÔ? ÀPáäeĘbçÅ‹ÁÊ.aª-ªÐ)/*™d`%‰.Ã|O>‘È[šâ'É%ú'wDÿD)h;Ãj¾c tŸƒÆ©õw*Jôê"¹²Ä¥‘†Õš^SÚ9DcÕžf¢ ƒÏºÇÒ,ï*728Õl<þ$(æ]¤ç°ÖáöK½C.|.g©Q_-̈«·njNÝ à¸ÌP«­©¢&ë>žá¯(JïtPÑIt÷IÙC½'ƒsÈ`Œ–ò$ùMoÇ#êA.LLW €ƒð›62*ªü¨ »G¥wj¢P¥ /P=&ß$¥èì[aݱÄå(ù¢Wu£®Ò•ϰ$ê8çÌÉ49§… 3 á*N7&ã5¹úæªyèvŒòñÇUó-/,ø ÿõZ»ê×!G¢ à²zT£æÁáG»»³\ÁsÜ&}m×{M¼Áèô±Íf½èäýd§Ûh׋°Y!–Ó&´×éîÇ([ÅüVWÇ”ŠiQ¨Ÿ>úéhq[@2ffÿoDÙ‘Þ éŸI¡]0[°ë‡»ýZÈ \‰Å2:½{§p¢Ü ±W¡[\aÓ­Pâ# ´Wå³äض8)v0!Ø £÷ÂE6ÍX£“[ãe ÆIq•ßÜ*¼U4Èolx“WÜTäÑ›µÍµ<2¼[Àö`d$ǘ\ÌïY5òÜ.‰g|Åó¬"ªòúR—sS‘™ƒmž‚©ñÁ§XÀ}9vÞgÈ'uõÛ[ŒŽWKÙ©¸s0<å-”º‚±Núz³ä–N_ÑùÅ·ì–Ê;u¸M&’"]fýä˜->gŽÈ^*z¡Ä,©ëç’¾lÉ*dˆgmyÒÔ®YuôŸ„–Ã(¦#qD‰'Ó%Fºð PÂÇkt*fA¡þázatGÓD±aD€¡ó¬5‹€10†õ/@;6ߢ¶l`-¯xA÷6³aŸ× úÔÒ?¢Ï È#aÐHù˜M#ÍóÎŒu² KÊ A&„|³)(Îå‚Üï e™Õ”¸A§[³ŒË íiúÎmTxÇ—Òo}«Ém|+o“ß-6IiA1”• X_bÿßb×ßå[ž’B„øú;ÜœjñÐlr=lvCâu‹,C.~V/Œ×aÍœžðUûÛ°/±ÈuÜ2«Ùä,3ºâ¹±çù }œ~¬o†6Là—M-ߊªïUi’°å‘01PË#l5AZ¹t¹¤t*[—ñ…D$´Y!uЗªºX«.Á¶F>và s\67²§Zü¹àÄ×[ººòç¸x/µµ¢/5`Ý;ØÖÆÝd[xkûª?ÒŸ¶@%´”b˲€0äÅ·w ÄõŸ‘Y/¼bè5IBÛæ"4”à ­6"s‡-$´¹ mnÐÿ=™š*Ù2/aR–þLñ|á…p)mhûãωq¨˜\dúÍ ­êb0äÜBˆÖ¨­û> CÕÉ&®ïÏêÐÉNU“•”wë¦Tн†SVÔõ­Ûj+ŸåëÂ!í·ëk¿x7Qd3’Á@ZÝOrì1 £ÔÔúµ@+‘*ÅBÂ[Ä¿ãzl­Àòï…«0õdÝÒŸŒn^Çr×å_–Z——¥‰x@q­i“É_y¤¥Ô˜ÖzQœCÄb‰Zhßk vVUgQÎsÙAÿ¡{—ŸI„»Œ•GY{ôŠh Âê·ådœƒ—¼#nð·2[Md•s8F[99«Ñžü/ÆU§qˆ¾ð„ÇÒ> ½ìBá§ñµý??ŠÿçVüäÿõ8Ÿ'ÿÏŸúcú~ŸÙ¿Ðÿ&~ìÎÿxãÉÿûQ>Rwpü?ë™ÿgo¿Ýk²iEØùSj}Gqܧ ƒã½)}:¥®‘ÂuÕ.¥d5ôùôe& X{ÜÛ㓹CúN¶2?Ê|\”£%«Ð0ÙòŠ>£Í%F é£ÌÉ´k|/äkéVªªj×Qõ ·¨ñ#³ôqßü¶ ­N³ Æà‘w‘Gj]šD§³w)úªMqû±¬ÿçÙ7#½*Y1o«í¶™F[^§œup>#W0Qê³½mУLû’ ¨É‹ù¹LZ™b×x®5åuÒºT¾m¯ñl]öWyà®pÉm8׎”˜çv¨ý&}zi8ÚÑÉF™B¯ÄÌõÒi &óÖj¡U5¹ª*/Då”g€L[ÜSé{ó]>¬â,èø0‡ûi¹1§Lµ›ˆíÔVì0èú¿ù J3^’x |,n_1úwà4iŠöŸøèl<›odË×9Y^MeÒÚá·‹ CþsÚ<‡#Ÿ\êŠ\êìö|çºGq©Sî&°ÐS<3樫ÉàÆÄ/äv·„³ÝŠq NQÎ&üÓù’CÑ¡T¶2ðÔ¶§µç~`Úe„»¯3ß‘=–ëê‘R…óœUŽl.È÷g?g„Ñ zÛ¹ba˜|N†ºóG®!5 ×ß…•Ày‘——TÌ ­Üõ€Ê´lœ=§‰ãþ}È·åð¸YÂs·€Š žÛ/EŰ7KŽ3çÝ]·Xwn·íà «+=m—†ã«ÿ,Jç%E¡µ5 £eM¯îYu„§§å@óŽY´ê5^Ò[Ë\­%ªìâ=ž˜Ž_¾ß•í5ãQææD$wërÊ—¨A]©â#d ÆKz¹®VZ¾yÇô1'£É8ã‘ÿÝݲr†?£ÿ)ˆb$¾ÅñE.[&³‡¼·Ôü@g3§CjP f÷îäµ¹‹ñ†Æ`ªWr4}7Nñ"7éåÿrâ\¦£a¿éü©è“Ú‘â-sâÔ “ë…eܼX3E©ãÌmOê}C¼‹'vñ@!Ë$è—ÜRAºŒQÙ°6)<>W#ð5÷™¥ƒÝC»ïfÃ~ÝêœbõµOR™Ï VöòWt-d~<€`ùªÈf…¸À 0,›mˆƒ$¹“?úsVKðð㜡ÑÏ™J›ŽQ´",·ñYàã¹Ò,N/3,2Y‰ûÇÑXY˜úP“'¼%¶>¢!‡K‡ÃóÌ T–sý®}îúp7}ð>/íyêÎøŒ ¹QZ Ü„mMó@nâDzòuýŸõue7×>®¶[«áñz—Öª‡@ˆÖ>þÑ9ØÞ!7×öø‡GóÇü#.8ßílõÝ@«àíÖ~›ue,GÄ&3¸A¡¨Xº‹¥ÉçÌïÛ}\d÷åÙ&¸ö¶a[Zàüú§p å½ÂÚ\Á‰”“œð1Ã²Ž¤‹;·Ü* ; ÔXàÜù«_åh·å†_e ÏNíEz/—Ëúò.—ÌVñøSõS’Ü¢tDÑm½æ·¹zšB&¯‘d†&#íþñùº6£Ù‰¾ ô~V£<5Jìå~L³Y߉1¨ìŽŒA„ï~Œ"]ºe’ —Í Œý8Ç_°{ç˜TÉ A<ß’[p5[12£>ösìësªVÄÕû^lÔþöaõÙ|÷@ôÑÕ.Å0ïÕòÉ©ÃÍXu ‚tjÙæû@…×ÖZoY¾>vöž¦”û¾k¿ïzõß`&´Úi›Õäãumd½/¬Ÿuž©¸ËäÚ–æÖG%^½¥ÑdžýEÃ.ÖP‘;ð†Ûzaç`¡#?ã_‹îrXtó°èúXÏzæ­äë fßí7iÑ-„Ù¤;›•(8æ£ókÐW¥7’¬/OŒ‚÷¯¦óqæIÍó¥ˆOª‘O5ÇØµ7Çúéõ7ô÷M 8‚H@Y(/ŽV¼S XJ´0OYôUaÁ’²Ð^§Ðñ'.—qq‘O¤Uý†I¡­ Á‡×¼96¨‘,SVò÷K•R˜ “¨u–dèp ´­S!ZYç0£™Ùˆc‡rM»i:YìÛö#Ï˃ê%²=Ъ:tð-KVàÒ—Uv (õ¾4AFÛwÛ%¿Œ/˜p‚ÂIäÉ'Áâ{@)ídqâOòûï9â‹Mzè!`×Ð)í[iDD–Eªf̾Wö9N­#m§c¾ÈÃöAÒÒBh¹Ú§vÕw²GMù»'/²Ózî¦g!¿µá̳>õÛ†žº™ Ê«Uõ9)\^… /®˜[xëçÈ9RÞXÅ›o«ã/#[¦)ÍÈXxÉmïr‚ëÍC .σèG•\Òá‘Þx^ RéE $7Ð!ì¨×;óaÈ P¹›Ù}÷Ñ·ÊcñŽÓ•âÒ—­OóþóO`¾ Ȳï¶É¼ÇÞ²®Âòܬ^rËø«³eÌHò_Ù>™1­²fÕ<†ù˜ÇxL‰µŒ0RÞÖelÈî ~ýÛa”íàðoÚ=¡±îãoâ Tº6*ßa'÷«5Q9/ÚD¡;^ýçsÇ{ôíÿwñãøÿm>ùÿ<ÊçÉÿï§þ˜þßgö/ôÿÛúååKÏÿo3zšÿñáÙîúÿm—ÄÑaû àý·]F¼.,çÛjt·ÞÑ1´VöÁûxá½ÎñF”•zà5÷êÝzÓ² @2Ë·!+€Ì/OÓTzÜq±€ñLàö|‡¼ÌÝ.¿Ëun[ºÞí”4²³+r.ÛÆÌ'Ò“ÂÎØp‘uì4U¹Êêx~O{)Û£Ãu倢xôŒû)ŠLv“ŽÒôÉÁZ;óó!0Ï`DÆÄê ÁHßl¨|R…N²é6y¿u(–çEÖË'ìƒ0M¹,ÞÒ³ÛUæ‚Iç¿LRÌÿ¢üú^¿§ÜÕéÍ`8$Ï(@•†WÌÒI)(|•ÈÎ;i.&´ñH¸'“q¡›‚tû]eçƒ)@bºÍo˜Pºð~’Ìæ“‘ô¹Â ÎgóÁÐë"£Ê"ðmÊå3=Oxp(ùƒ¦¶;¦ì’Ÿ *Pê 0Ä^Lç7·2÷áq9³ôí8͘ìéìú&™¥ç5Ñš‰/ép(Ðä ·ç70¼dœò%EÃ*qý¾éìœÙÕmpqñ|:?›M tS¡M=p,Œôh€x˜ Qó+)b˜~bfkâì;Áp}ô×GýW6GÔ}‹‰-¼Ûšщktž¤Ÿg°Ÿ¿¤d1y|À„H+°šúSaFH«ˆ3xò%ŸF|m:”ýXQ¾?”S"³CÔ’¬&l¯Å³£g¯`T‘ýwÐrez¾û£í¢÷¬¨+TºGµÝÏË…è ‚ú;ÚÝÛ÷n‘Óݶ‰ò*NwPj&gÙ†bîË,¬ìoÖ]×õâk-sˬÑ, ë Ù•;w¥òåÈg|ZÕ]À^¦™Ç`!ÿê®ìP’Ã3ô޹‘<ã8Kå{ø<â‹#û=sò:.?€ûbGùdñ"¸L*ÜEu"¯¨cv$¢~`¬®Ž!³\gW[d]!¯ø:žs»h\¸ùlYcKÉ@ÔOåÂ+“ÄMg@j“|hy z¼ÓäBÆ-õÖÊ'¯|‹ˆÙ$ë;².ëÞ®9Ö[„­8ÒSóÎZË`ÍýÃ÷‘üã¡Í;r:x·ØI½: ðîºw„'|àÃᚤ?9þEŠÂá¢h9=T×àØ¯^?ª(oõ‚#&ß9Ä´ÝݶÙÅ*´‘îu€àí"§…pJ+ïDd»ŽY­rQ è¿{äÄÐéõÕå•ïúÀp*nùüîìT¡ò޵{uúÝíïêïâtÏø\2Wèø§³œÄ)Z$òäŒRÂHÎtˆˆÛô‡%b–«ªeDö…Í®Eìë ±.HHÄÈ늋oùôW]hÂ{>ŸQ3¬ î‹øb`$ý'°ÐÄ]%`=ËñÓ$µ9˜÷Ú‹È_1÷¬1w|K.RÃJx¼NäáŠö¥¬¬lü‘k.ª“5”$ºk¾è/Ö/\®p™>} Ì+uY-¬÷–$ó²?­Èp+“žÔd¡Œ¤GÐE’sñªjÅÜ_Bx,§­ÀrªÁç«ØÂ˾d—×túåZ»I¯|y“cþ§mÿlvË–ÿ‚´·yÔH¡šr«âŰ¯?Mm)X@qÂ\ɇ\Ábè"+lk™™[n jJåER’ûè9¾ÃÓñ ZýŽ0¶ÖÌôìÌB„ᆨD$ ïÙ]èï,¤=¤Rx²€_Í,°¼§Æ5]fïŽ Õñ¸/—ÓÒ‹¢Ÿ½Æ×ë–ù x©Ä:á¬_òó®~^VvÆh6|êÇe½ixCsP*ÀÙx&ƒÞÈüT|ÊiÂhœpö ,ä½T’ ©cÐŒBx*¡¤¶|†eù¹…z-Þ™˜îÐú,ßY…9:pºÛúðŽë`ƒB£¾10Ž_Óïù¼Æ(G0®ãÞ‹lEÁªÅ3„„Í(îüBú›Vak^âÃU-´¼ØûZÉ´`9·1‘¸ìx¸¨` dõ½ŠÄuš~y¾Rá;êBß@Hâ,"Îåx>ºPÎÙxvpƒ7/|ùï„&0*V}vâ–ºŸÚŽþ5OÈx€£½õ¬Eûþ}­*—ÝÞº¦‡”’Rk ÙÕCºÀ‰À¸Ò`¿×÷¨‘„|É"·TÓ[3>Ñc{wƒO–Bp]£`C³ñXvÍÈá °êÆ hz5¶CÁÐÑx<¹Õ#´í‰Lƒ̉ÎZEÚ€¨èJ¦Ç‡þ(á·ï<„¢xr~xšU^c¤p>kÓm€!5NÖ‰ùeBý¨zýˆ&­ïr†ê8"eí§½aæaÄÌÀˆa°í;S°»xlè/ö"Ô_} Dñö½áIäw†;bøå!níGÔñ=ýÊö%…J,w×9‘·‡±Ëö2H¼EŠóŽ,ä7îjœ…`:¹c•»+âϽÜ’D>˜d2 CKyj‰!)æ·$¤ëéÌ"¡G–•éĻlÆá.mELµM9Dø6I[søfç.}ä³úB0Rv½SÕù+ê¬ËÔÖ¥»výÓå+“ºªjKlX]\}Ö Èç¨]. kÇvOšËWïÙ5³‰"?,œu6¥ðVT©û€t«Êt7|áé°ª7ùïçÕäc¾íXw%qê°îrŒÚö})>³Ù:ÀºKriÆÖy¬» ƒ­C¬»DOšvõÖ]fëGbÝ úCŠ`ޝê/díýëaãîí•øÞ.}ƒ- >gõL¨/}€gìí^{L39%žqH;Äd(ïlÉü|0B›0eñŸæÓDªiÓ^—,Ø2u-O? lms—<7Ô++…ÿqVÖ¼‹¹à!ÞJŠù,ê!ä3©ÝAíâ-ÚàûgûÿÇÞ›6µ‘4‹Âߟ_QqîkÓì±çáÜ›ÁHÂÛ‰s#j m!q´x™ïos©ê®ê®ên !ãA=c@êZ³2³²2³2›˜HÄ– =Y]Ó+e„áÅ^ÀÑ! #v˜LYaøÃ3‘~‰…br²}ûQ!¹(º,Ÿàæ1A,¾þib|²§„†Vßuä‡TÜ)ÿj#NÏÅœ1+Îfï˜ñA¸Ø!€çÚ.çÞ+´Q>`—\ÌùÐýq1›cæÎ˜g[´ì‰qv}þÞ¤å€uêÃÑĶãEœéa6…\……XR‚"ì/6(Btÿ÷îêö—Üÿõ6^½z•Ìÿùjuÿw£R•ñð¢¹×Á?”÷×Þimï(yo·;ýô¼g¹Á»YÙxò7xCŸg9<ž/_’Ceð!𔈨o¶j<~ŠkåкÀùoÅídrÿöåËïß¿W®Æ•éäkÅïM_þýéøï«¿ý¯/%•1‘ÝNîÔ]( #¬Uø“~pYŽnd•rÏÿ¦þ¼âmš—ò²Ly<ùÙ÷©±ÿôªÛ›¯«¼ ¯%ƒ¸ö kÉ´Üùoí"ÈB; f¶˜¢{ftS%¼»bøb®§_9d”˺s¨åDÖÏ÷“!ž)›¦¬…A¾Õ+îˆ/ðžÈ ÿb˜œÇÛáßcÛ\p,Ì‚ãë»`+ºËE/cm^vÇ~¬ä9—¼Oö¾n)ÝäÒƒXéI¬X‹‹bÅFF&,xÊïâ½'gtÁ%§ñ&“%O¸d?Ñf÷G¬ä—&Úìþ05“tÅü DPº <3&®Fé¥i ô¸{º•ð®È-‡õ^r‰ÞÐg^ʾî¿ëàz`—ô[žce¯z1³-áDN=ºITÀ"kòb®ºw‡PÆã®^u„l‚ï <ðfÈTÞ˜¾ºšŽ¨n·×£{ñ%¼nÀ¡_¿æpi±åÇfJ5´lX7ð•Þ´Û_Ðz#Y=|‰—Nüñí°ßƒCÎe}½€}˜,iõ±žºüïÖ£Þi]A_î ^[/xe7ïL¿êJ uxÎ’E¬·A¢ûÅ’~7¤8Ó[°¼ä@Öøöái½‰g²FnlŸ¸j9íÖÃÉÙ»úžq¥@ÀqïT-Wøu²—Y/ì×ßÕ;|‡£~r³8ºx`=­}<øxÀkvRN#0í°”hÕöëKN Ÿf¼@ ”gbÀɬD|áêvxþ;QëïþÔŽ-rFÇL!º“ |FECˤŽ=ëåD ˆ kbpa[AÙ8y[JGGÝ“ŠâjHy­D;œÅ¹žvÖ¸w½­zÛV ª#|áà;Ä<†xI+/ÁÉ1 :pSV3çÅØ—­ÝƒBã%åŠî·aÀÑXÙ…Pº].—Ñ j‰S*NB 4Ê>­øÜ–¥&ICX§Õ,’»ƒ[±¦ÀJU3»›¶.„¿æB;š9ÏX^Àªü5ÓcêÌÕN+unÑ… GõÓ´êçËEZc¨û. Î;«•“Ô!E *×ÎÒKPLìÞ‹,¦í51 e©Éüe5—>á÷MŸ°¾ G3 ¤ž,7 ¢†Ñæ>X a=/¦Í“`¨æþæ“\–ÿØdÙˆq.³œš6g,Ÿøƒ_"†±^ùh‹ç³á®g™ñD¥˜&D‚´*òA%ûᄵª Z£“ZS0A0Qy2ù~÷ð~BQ8)êG@ ‹ò’ŒË5» ißãI›'íÔV“˜š•a7GõtÔ¡n MSX¥Êãˆz)bFY›h7E\ælÚÚ4ikqÔµ8ýÿóntótâ®ôËyVñ?Ÿõ£éÿ‰ú3é{ ¾Œëÿ«Û+ú_ÆÃÔnÆÿ¦oŸD.ò²¨3dšÄÙô aR‹Ô¬ºÞDÂ%¶„Æ¥¸'£ž±›‹?¾÷¯HÁÜ÷7“Û0’LUkDŽ8–Ò:OE}«¥ »¶u^±Y]3Ç)SÏÀdCÿ)Z 5â.¯ Ft$ó˜«5Ò¥Ä Î~@·[upc¼:øBœ_ý˜Ïœ Uˆc5 dÉÁ u¢<ëÁˆ7žŒNêƒ0t¿ú#OP— JÐTä•$Ã«ÊØ˜Gä_ö*ÔÃODÓà IB }9§—ˆš\fp"?P™»f‚Mk&,S¦B*3ÿLD³Êƒ2Æ ÇdåÙ3A‡8 SthâÐZ®én*»›!0¾P´ã•¨[yCz—;¸ô“øî¤Õ…ŸÌfËšÜܧ+âÌŠÛï‘·ßϦæÆ°6^„ ³¶Vù³ºÄHW’×1Þ-n̾~CÏÔãÈ—aÛ‰È.D*Ά«ê¦¢³õ*µŽEªÖ.hd O& ˆo0ÁÿkâÿÀ‡ªúÈÊkð +µæ~…@ä4úbxÞä‡Éªö‹|^îPómÒ6)ý*òÂïÃå„_fö«¸›[¼÷j¾Þ«²´ìݬ"O¢÷˜™“¯yñd¶ôˆM“‹-5f ÓÓö$<Ò<«¶‹è|Í$š>SO­Åá@$d<&×ÇBƒdÞ;‘Pº59­wÿÔT4ºþgà?ýW]ÿ–ò¬ô?Ïú‰ô?Eý™þŸÕ­êfÒÿs•ÿe)Ú4Y”Ös̓wêžÏÉÉ>…c<­•Äyý=¹˜DÓê§ç'õ½zG4Ù"¿ï˜âÅr(A`¹µ8 žÞY´F¶ð£2ï ¬×Œº!Xl¿˜ý(Û“éèÓO &)9r[ ¯jÝ߆¬‘ñTÒG%'8ý/eEaóñ6Ï8¸¹ërrY±/Nþ_G& ‘aèÖ•ÃG_Çp ùW¨N’’ebá0»&»Ôl¡zw2Æ`‡ÏýúœËúã¡95šJpè†öîh!Åiäzz…Ò”!¥a ¯GÃ; 6ØÒó¹¨4Àª|èjˆ¦Y#AäKþÇ£.ê&°‘ÿ?Óc´×ʯ··î»7]eô­®ƒA0 äí¾f·9®ð©ºì–&ŒÉ CvÛRta"Qí¾¦ñÉN±žÝöÑsïʧÄ+”]@FïW~”?^nà°zSÌH bG›‚Ç0ÊèiÁ¡ÛáõK,–‡W8jýÝ’™âªvÙŸèû­"¾0"t+ð{?¹±÷CÀ™~IüÇ®?ð¯VŒ…:ô»°ìþX(gÕÓaÏ Dû瀦-:ÆàêsÄ·qé?€(k§âx8%g9åVJA®'Á5TÝSnD%ñ­úGI ¶K¤J® yÖáWñ¼Í×/7¶aô`kã €6òïñ¾Šâ†º h ïu•=ÏIè &Ád£µŠPÉpÜú5ÂFÒÕDN¬Z2•ýX³&¡æ›QŽ]S9¹õÉöU6‰“ý™û9™bÏôeÔéI!X[§ûðCå‹A6›Ò•Þfû6¸žˆî3Œ“{oe ÎíÒ |p‰‡*ß_fPc <Œ¢^Atÿ‰ªOÌòó‰p’ fÁ¤äÔyðp@§ˆ@¯Û]Ýà¨H*B>Ä™|G 3êø„J`úóû¿e–d2=…ÞŠª[ vÁê3‚ÆS™½ÛŒR± #B½&2”¬qé»cè_rŸÜUE-:k¸zY$ᛜ§>!èþ¶:áäÛvN×5î¿÷ce.¡¼/˜Ó+”5 È}÷¤qrÐW·ÓÁWÞ½|ÔhCkxG\6u v7tTÕd$éS~éSÄGë÷*aÄÙ î½]¬Þa†é€’‡)xþ‰1O¾ßÃlÞx‰žì_0 ù°‡Ú8i‰7éÑÃôÖïRøºUŸéâ+ î8."òÈ«RPS‚5¨þñÐäǾÄ;~Véç^³ãÆ—Ýví=HýÀÍ.0Ïù þzW;%á¿$:ðÿ鹬®œÅÛ°sÕlÁÚsú€“Œ‘õmjúl_õýz»ç/Cuùí š¥è'QôÏ¥XØaoVH~Æ{‡žÊþøjE+¦¡5&Ÿ˜{¸ð²¤”&Æ\¨‚Ò—µ5 ávFY!¢@+º&ŸBâ ‚‹W¨­• \ÁV¼%-jJΦêÖ¦êÜJ·•Ck+‡8 ë%-ŠÃ…o—òTÐv8*£rˆ,´šjõ :²…°ÖꎳÓ b-$Œv¢†FÃïÔ ®¾jè0Ö‰¥æ€8%643$œ„¦¤qXæÊ^« ' DvpM,½PÑä»”Ö $ƒ‰j{Ës©¡,ü£¬2švÇäª> .M« ¸+µ!ŠBEü'Ú€û£öø%Õ}`UB{©Š8»Ž|/W×Z&nƒÒ“ƒi4²ù‹™›7x†­ƒ ½ƒÚ®ÙA+&1æ¤ UçmÀÚäÝo•ÚC¸5NŠ‹¢¼Ñ ¾”'úMEIᆰ‰,¬•ÐnR Š˜æ:¼N16¢fÁ~òuZôŠAù ;]#@¬'5 ‚WúRþ:]û÷Nðï»`P”¾¿ö•ù'œcú~·Ç!ç¨b­È¦ü ÿÒ“¨Ï˜E½€j¯t‚µ×ŒTè’›Ñì­ÉÆ×ˆ•þÅZâÝU¿ÞÆÈ¿†FWêJÐÂL3—¨È~?ƒ“IŸ¸‡ØÞ«aàöÈ›ïk'¶ÐB³§E>©µÛÍi^Òž%…B¢|È”!š}ÃþjÙ“CgÜ`IIhK‰Å+a‘ßÇ¢Eè9 ˆG™;Ÿ¡€µt!â)>ãšV™È•bŒUWËÇ240Ú5D“(¿“DŸŒÅ®:¥èC‰ã\×8'ßq”sгåët^dPù› ØÈP.29~IIj½) /¨¶ jS4³¸Ð¬ÎAnºM ÔÃÂ)yN €QUk¾BÞÕ3€XÑ•áL„‰mé‰Ú¶#w"±·Bƒ¹Ãž_€–Åqò¯4ÈCÕã2 ់ $ ­,ú[ƒ|£¨Ãþ• ö¯3qbÕ0ÙÖ. à™èãРóŒL–²Â‡ñ¦­!1!FXÃÂs|ãXÓÄ¥,1ü>1^‡ÑÛb+[>As--E‘Ž63îçMÆRQùuä÷…¨’°yâs'oü¥óúu^_2õÿþ“Ñÿ¯îÿ,éYéÿŸõ£ëÿ‡ú3éÿõk/ÿÅ[ÝÿYÊ£öËTý¸i³  FºéÒJÃ?¯†Ÿ wºÝ~›š_³ðÈšýܪ}lhäGWj³¨è²Tô+ýJEÿôUô¹Tô§jåó*²IkœÔ^ŸºúSÒÕëÈ!¡þ8¡«Ïi&ˆÆ üóó™ ò#+ب]ånѸ߱Q1Æ| lžYfi«YYÓD4<-ykKRVŸ>)e5µþ[©ªWJê%)©I“rJéGu5¼:5^‰4Eô³ÒCÛ@“Ô0ÿ† fsV R0GZdÜÒuÅ& ­(>Í\ƒš¢ØTõ–ÀÞr»ù»NÅnÎÇÔÿNžŒþws¥ÿYγÒÿ>ëG×ÿ>õgû{ ú_åÿ\Ò£¶ÁTýoGóÿÞ?¡Pû+Íïšß‡j|U„§ýõÇÅÌ:ßΓÓùZb6ͤÿídé;+ýïJÿûôõ¿_ë¢ÝÉtÑÞ¹hϨ S„îÛfPûE†£Jïáb¡óÑýÅ­ý=W]ª{d5,¢ãô/S.N];¿"õa޾'ÍiMn¨9U]JÆÃмê =iÓŒ~®Õ&]’DnéDe&XËYaÖòFoÝ!)\I[e*[ó«ZCßlÏž"RÏœU"d½9G½R1„%}´_×4V®xž¬Çõ¬ÚÖ3Ï Í.ZŽ —IIÕ­6âS,Jï»ä¥º˜y©NR–js1Ku‘o©NbK•¢Ê·/ÕSQ Ú_Ž‚lÑúòÃøñ®cdz% „Ghgcö)5â1YԒ΢rÆRM;º¦¨œ;ÿÔTÏò1ôÿ·ã•þßõüCõ+ýÿó~4ýÿ#Q¶ÿ÷«×IÿïÍUþÏ¥²Æ?wÕ?N´r+ôÃíÁŦ øÊY¯ß€c¸Š\C¿U óXtsw;éέÑ̓k&Â>Šæù5+Ö9‡:ÿò§£™n&lD˜Í|1¥?fœô_#v ¦ ½Íб2]ȯ(^zJ°ôÚn»VZÙ0Ä?Ú†¡uÀ0àMQ:¬S¬"_] Þ°åšó…S6뇰º€Ç}ãS¬Âj‰±ÌmšôÙF¿éýÖCØë)ZoÍÔ?DÏ`ùAyÊïhçˆq¬S Wjû]8¦½r¯”Ô$8üvÃA]è†-B7¢ç±íê‚`ö§®^Ð1×–nThžªYФX_¨ø¶K’mS±(ú¢—e¾ÑañÚa™¹Œ3¯g£;—HØ`d ƒ:¤£G( Džcýo\8󆇎ÑÚ óZÊËÆ™79p&Íö‰€tÕ~Úwhp, ¼“ÜKÅ,¼F0ByŒPU B ›)ïoÎûÀeNlyÇ®VÚ“4üy®mNB&g¼HPœ—¶c;ØœÅLIÛžš[5n§ÌšW8›jÎÙÄf»q$ÔòW×ñ¯{Ʊ¦âíÄ/]yÊåb ¦ýÔF×vþì mwö„ßÿ1í¿×OÇþ»Êÿ¼œgeÿ}Önÿ}êÏ¢ÿ×ÕíídþçÕý¿åÌc€Î´?ÇÌÏIë³Ãøl„+‹,‘ pïð5úðÕ,†fË´LCóáÊм24; Ϳܼ|˜Ë¼Ìj2ÑÒŸñê'¶ê®q,ä’š²¬' ë‡qEM4× Í¢·ö²*ÖŒÉGË9: ñZ´"ÃèkXÉ5GÛæY­µ=D´}?nÐÿd ãÿ·áÈ 5'Ý€ü›¢¢ƒ«[LéÖ®(üÁä÷µýŠÃ鈈eŸçÛL#þöA¹"VË¿š(ô<œöûâä4€I½&™¾yÀ±üoþ ‚-Ýß|$ÿG÷Φržˆ‹¯*‘ž´vŽ£fýáïÉ E†3Á†'6ªbcSlÀg[–ÜØPmlêU…·)<8©×Þ|¯AªZÕM‡¤ª*QÝU¾7w×ÍM±¹%6U¡Í ±é‰Í*|ß…ͶT¹­ ±å‰­ªØÚ„ïEáÙVE·7Ķ'¶«b{SÀn{û_2!ù ФdùÄv+„Ö·Ã~oŒp‰ñ)Xž4B†~ïÿ= z =n¼Ý.m¼­®)ת0P¿;ž°l7rÑ’ AGÔL…ý$LÏ”Zaëí«DƒJF wÕ #•»‹ø4NxªÓhž¥×¨×<¨Šæj£ÍZË?VJ´UßÚ^ ñÐFU®ºcDz¤ :x몛 ä‘|è{½d ÿuŒ¤ÛÖð3F á¤8»­¡gŒ$‡¨‡PSëE§‹ðIR÷²•§$%­¤Ç½ÄK*bÒJ¢£;ÒpìQ´$÷N`î}ƒˆ:’ˆè q ,”q WgŒŒæË”V–6 cÙ¹ c°ÑŽüw‚h,bÞe„5„Ũ8CÆÆÐÅXîN€`[±7XsXLX%?À•™iS~ð\`ۊߎÀâêÂrÁ:€rŠáàG`iÀ­rr˜ ?À0ìõ2v€íõ]@ô.e0ûF`<ÎÍÀxÒ6ãÉØÌϱáYýÖbYý&5èÍÄê¿Æè“x£÷JÞlŒ>1‰L6˜¿0.oÅq¢bô—·¢ºâݺbGwï¶à»›wDZ]çÝ¿€#Ç› ðp_a¸k,<¦åo,üØdḈ‹Çø1ŒR‰òmijv鬞“ ÔãÁpš]©:!3·{èÊú] ÙjVǹý3mãݯÁáO¾wùo–T±”Ñü¶aµ­Î ¡nÖô‚‘^rrÊí€{D]Å`è“#Sp-È&HÖPHÊ–¥v6ÂQ†hn”.ñlŸü#ªaºD~ù¿ÃÒF¯Áõ~Çbêv^tè@>yAüÞ‹NåÚÜOc½Jge19Mýï°F¬çþ4êyzß ž§)=Ÿ\Ø{6Ü„´~©¼Ùo¿×E½ù€µ:Ô»B¢Ð@íѨä*%‹=Wá iöxÑ„QgÎ`Ò]hG÷o"}C`ܰÔ1ýžaQ#0x½®N¾´0¢—¢ÇÞÄ:¤z9g;97¬Ý‰4ŸÔ8È €H:2`b[½ë‘ÑJ÷Õ¨'È%ë˜5Ž ‡;”¨s —ÖȈS<^G°'vG ßO¸ÎZ¾M`uÌ"›&sÙœP8˜¡êðäÂ.Ë„O®Õ¶yƒÇû¢ ƒ¢ì·ÝÆÆWt^ à§9yXhÓiÓSþO¾—WüjÃÓhxmôí¶9‚óãtwTqÂjæ9Ð`ø)S.÷èŸ1BD—FäFoñ'~w&:èëïh:©;nÍ9='R§¦Áý8v])H¡†ìYÎ$Fžvì¼²˜9/hû°Î¹íì>Øù2/{²ÜåŸGcЋ`Ê)Ô%VL9w; æ¼Il²1cûyMîû½®›·7Óqz1’gÓ[„è¹PÎŽÙŒ\•t9o¶%áþ‚âÀÚ¡˜w9R×¹³°8%¤’Ñ,âËÂ= Ð~ ;9‰Üî’ Ê ó䉆¢2EË\n8Zdnïí‡ïÜÔ±ÈCëg!L~aB,Ž%>yÃy²ªÑG•¼Üq«v$¹ ¯üñøIÕk³·óG`s >0E1*°’s {ÈÉÙ¤aïp,ðv0H ^3E¿Ý,–ç¸uÖÓ ç$]”ü‘µ‘¿ŠGöK_‹OíTÖ(ê|’?¥rJ› iJ‘â­Zß«a_Šio‚a é›’¼ÃF7³Ìè¤øYÉ= háø,K…æ‘*h§ŽJŸ¢Ì{D€òàÊÁº&=¦DR~Mã÷Ü_^ß!åÄñKOvOgxŠÒË2 [ËTžžv!Ue<>Xü2Õ‚í¼fÀ$S—P²Â¹Ç?Ž‚6ìŒíb¦õXžn!SÆ™É=u ×/8w±t ©¼*Ê^ê s+ʺêJ}žWÙ0óEÛJþRÕÑ‚¥(:n¤öÞÂν[mÿ³nüsìï©;{1°÷#–¿³ëý¸•ÉrgvêZÀ–¿PŽŒvš's¾šYÏD™Ð´ÑÿÐíÝ[éÛ’“p•XéÛÔ§«4¼Òµ©çÉ ×µIÊ¡k®iÛÒ4¯âWê:žÔŽ`òcýÓ“ÓºÍutž(î (ÎìŽÔ(Â’eáWڅУ£Æ!iÓ?Zh ØCnB”İiG$#…G£|\®–&€Ë=E%=¯Š‹HNDw¼<ÿµáÄ k²H‰bt…\®b¼'qÁ£Ü˜q”ŠTí\qŠIÆdÛ¦ðÖ××B¥ùT¡ªmòm ô<§†ÌRÌšÑddÀÜlŸ[/{³´/¡EÖ°™yâÿ0jR«…¬z³¬V}VĤu?™oÝã~Ùã<–˜Y J3Œ3DMëÖ÷+Q³$¿3#¦ÜVÄß(JP͈œ6xå4þŠRà…9¹ïúz'öæÁžÆ¼Øc=(-Ás°^Še÷‘5©,‹Ë «IÈþ¢qsî¬[BäÝõ6\òöØQ6ŠõyIËŠLVt{ˬ=¥ÂϱÃ(²ËØ\ÒõnV²›§ç”$ryÒ>Á=„5Ì&>«ó61#mˆOrïKG +‰Î$”¥Àjž+" Å´œÃËlì/sáß×â¬8×ñåŸwx‘`Ÿ0·õ0ÏáåI]fCKýè2'f>Í]pY(¹(Æjo}QÛ“<®Ì‚1DûsXгIÎs°Ü¹%¨_~`±€4Ï©%û¸ò$ÉUbÒìLj,d²ö5ó±(zK?ªŽ,C¿7çdqQäö0Æ0;ÁÍ!0>Õ}o^ÄÎM<¸ó¥Ù‹„#wxjæpŒú3sxTó©f7óß?™üß[«ü¿ËyVù¿Ÿõ£çÿ~êÏ¢oó&a‰åÿ®¾^Ñÿ2¹¯¥çÿ>W¾QÞïsWâïîôGк£Ÿ¶àÕµ(ýõ“Ë£Mh¿ùw—ðº HûÀÜÚœSVE˨=c:ís‘'ŸvvBíxFmUCÏ©íJª•UZOac89ê='n»Ž’çʰ}ž•aû\¬2l¯2lÛ3lËlkˆÈ¿:×öy®\Û93SÛsm»sLkŒõf,ÉŒÑ-Wm<7¦¡–©-MUc515'RÌQ“À¯`®ôÓaþédêóìÔçf×9²+‡ù§×â´®H?äÔ6žÉlRoˆés,!2uEve£Âý|)³.ÒoQJK­7µ±×.ïR‰üŽa1=C6Ê …@z¼®­I’c.’©&¼ïÿÞùò§£…“x …ê üe-ÑÌjfðû¦¹~Öùð)rÎn»i….Neò;K§‹K5÷€z®y–^žTB;Kò­Ð›:OÞ¯‰¿Üù½l ÞìYqLöþf¶”*ï„.y3“¨«€iQ¸Ý ŒÎå%:Vêù,\É,Tܪc|QÝp–& æì¶Rg·iÌ€Ž0»ÍfG}©ËJ[)³ü³4Ùñ5¶NùÑì•{9³9®¢@½í uõÓ…ÂÈ%Ã;(ç|‹Òza‡ºÁŸEªc)â¼zb/j”È<|\8dÄÔPIµÑÁ+7®1¨^‡ J€ØFÑ©ß×3,tö‡»3Ûýâ?²ïmd!ˆs>?Øbý¼áq»pOŸÞäÀ'Û²â€p¸PWíÇ»9”ruÈqCˆ hÜB0h6Ǚ،ç1U-kkZÉ\y.=¡<]Ìr#î1ž7¡xÚ6mã`q§ÙG¥ïH^Ú¾³ÿ1è«ëðÛÉãq›RÇ…‘c­4*$Ûã;å")lަ[9éT¨†3XTˆ4h¾8]—ÅKîim}Ýf³Vh£¾ÄÊé1¸ñ—²['9Œ°b„Ñ"'ïGÛ†¬£„¥†‹ÇOE¬&a ÷lFáóüFáó§d6í¿“§cÿÝ^Ù–ò¬ì¿ÏúÑí¿Cý™ôÿzÃKÐuscEÿËxä–nÿí(‰·Yû%q°²ú:­¾nEçCí½ûÒÜ{0³­·ó„m½ð#ôI 03Xw;YÖÝÎʺ»²î>}ën'—u÷ÑÌšL³æ~¬ë9 ;¯÷»Ž}½ci Žƒt]´U‘W|š­ÒiÊÙ¦ZµYÔ(íÖ´sHвó”Ô«ç=¦þ÷ç“ÑÿnWWúŸ¥<+ýï³~týïãPæýŸ*}Bÿ»²ÿ,瑲Cºþ÷Sòþ]×]Ýzà ‚áƒ/¸ù/}z ây”Ÿ²”ŸVJá•Røé+…?ý6W~Ô´+ Q•|W¢Ê³_þÑë>ªžüSöõŸX×9´ØÈ½“ºr „=ļZƒãîûÝ^0¸Ü'z+S7¼É'Ý@2Hk9½¡„J´oÒý#ߤÿÓ=5ãZOâæ‹1£ëŒd°­™ì¹†c´’>£à™(`»ËCSr  ši„ ÔòŠU…[lD†Õ,yk«ûM¿›y¥^ÊX]nZ]nJsÛÎu•É+Íxɧ@(˜}‰i–»Jyo&Û/ä¬ëNÒóºrôïE+e)¹€[!¹IDaí±­® ů ™ð‰58ãÝ ÇÆƒç{è1¯ü˜Î­×k–p·‡$ºðÐë;q+k-\д´ÎsáãSþ Ÿž°¥Õ°ÿM.ŸŒý¯ºµÒÿ/åYÙÿžõ£Ùÿ‰ú³è¿ê½Þ~Œÿ·²ÿ-åQ»xšý¯³kÚÿöëµwdÄཻÎâ°åî®,„)B ÇvÂFIBóÁ¶ÂÝ‚linkag÷‘­…y…¤ë–:bMO{Ù%UMBÌÄW<Ï€ð¬\ÀÇ3aÊéE(°2(® ŠOÝ húèEÝ*è4.æ2æ1JF:×€ah¸F‰qv¥Œ¶‰#iåX9ë¤âEÓ< ë›ežläëz0¥í_¿83Ž'ìϰ2BèM]ækèä…òÏWÌ®9|öÕ]‹ÕmúŽm!QF?Ô[¹F°7}-zÈmø.Ñî<c…5ànÞ‹»˜øª”¿`9µìj0†’^ÌÉ(ÝÌ+tK/Y3Å*jÌ)ñ\ÃR\¤YSwÓl¿Âaþ;‹-ÒRºXè¦à*a ¬WÑà QZ®ÏgÓ=Ÿ­ÌùØ2™ÚÆ‘°—κà)Y¡›^“ n ß73¶Ý@z5ç¢ÿ‘5£È¤ºøEížÏ3/z. à™aÌí¸ajǨ ).%¹•Kå·Ú–â³ãÊÙ—öÍlÜ)f6«¼q/§þ¤Æ¦³¹4ˆÐ<>+me 92)g 9õNd«g5½¦p߇¯´W•ugB®ú¸‹½9+ÛÉpÊc xö¥žÙ…i¶ëíõ|Ì'?cÉ/(ÉÅØv{ºÓïƒ1ÐËãòƒ ¿NÝ}N„Œë‡-¼Ò˜ú!”)Ò¨ËïI¤z©0Μu¬yåÄïõœ[®—â8$¬¾C^æn(¤<ú`x¾±Ãs!°tïÕËx³"uÕ›©«ybÆcÛ™‹²Õªá´ÅÌ¯Ä ±U7ß®f†w tukV„®fÊô²åt; –Û¡ïêâáè–ūٲxF&S»Ë•1Û±ú:5&Ë#;Å=Ò6¤|í,"ïüV©©AA’ÊиÝíø1|БÈó®áŠøb>ˆ9 ‘õxæ¼ÝRÖ¨þ1·c#^»cÔ¥Þ´7©ti˜”ÝJnxdA!éóWÍô(]ì®ñh8¸¹‘îw)g˜€*¹`6T«À«ÍùB‹Ä«Í”ó® è ªáVÂ5 !2÷÷¹P§;Ÿ’»A>çÓÎnºó©éÿù„ò?¯â¿,çYù>ëG÷ÿü5ùŸ«ž·eÉÿüjEÿËxÔ&šêÿyîðÿ\e^ç/ÍÝyR¹ 57ÍçÁi ;Yi ;«4Ð+ÎßÀ…s i W.œæ¤–êÂùLǸ¯ä¸FiñfË(m¤‘ÖÛy²¥£fæst<ÿõŽŽ+_ÄßܱáþÊñ÷ãÎ*üļµTÚ¶ô’b¾lÚ­<®œÚ®:tTl° 5-£ö “Ìé?"²Rk;'ûä¼3r­Ï»ÇEìh±Û©1#Ýú LñdtLÐ@ŽßÒÛ1Æè~OçÇl&˜t,;×b-Çç1›SGù07Gƒ$õç÷óÌ·#¤Ãr9ŽÙ¬)}”òv´ò(ýyRînëâ©ù9¦ÄtY.L®Då•'uŠ×cjµßÎ#RóxtDc „êÊÿ1‘ø“ôt¸d-jIþQÞ¦ÇãcCî1ýíòæÊ+ri¸† A7Û Òxq%=“ZÔ§ «ÙGEù“Åä‚hª38/Ï?Ñ'ïœèB…Þˆ–@³CI—.7³7ÀÇF‹Y|¥ÛáC'ýK<Ïó{ž?áp—«'ö˜þŸ£§ãÿ¹Šÿ¹œgåÿù¬Ýÿóq¨?Ûÿssc3áÿ¹¹±¢ÿeÕOº.ÍâÚÊòm­üCWþ¡Oß?´õ‹ýCCšLu K¥yˆZ E ‰#ª°]:‡ê¬!¸¤È¨<‚£émWzš*ÿ½t?SUÊéeÀ"§Š<óÆêTQ(cΦ§älÊ9î#žîTy*þP’.©§šKj‹|7~¨9]`£á1áÛFØÌ!:m6q„§6§YÇ–‹Qǧpñ ”˜fÆÆLIÙxÇÁ«§q¢p¥+”î¤öìñ†9 oâì„Öü}ÖéÄó5ÞiùçžN²vžé¤fkL&D&bŽÆåÑkuÌ%o\·3+4#êhÊ™-;äéò²Cž®œ}Å#:ûºÇ¾òô]hÔQ €+±¶Š?ðÌ(j§ÐiŽÀO(ø¨Š‹ôÐ)ü³âê üðåý…aF°´«¨¢t¬¼-+µæ>Né¸rrP9ubªÈëm›î¾–ôhüñEóÐRÆHŸ[XÑt¦œ¬å8Ôº9KÖøþ9C—âkƒò’\cs9éþoæÂ?nìÏ,8=¦§k&ƒ›LÏÄ­Uòº¦›×Ù\;3åa:f¸væ€gX·ª›¯e;¤º|_ó³ œ| šÉª¯²ý,ÀqÓ~5›öçvouq‡î­@ìûj;wKb¯$öK¢ÕñZô³Ž?«ôwþÞkƒÐМտó7ðð<žÂ˜«ÞF>ïN›¯¥Âh?žÙÖ:³ü/ßW0Ëû©ònk_ÝNGâº{5Ž‚¿»é"Ð#¿ÛÕòåÏrŽ^ƒñÏ»;]%°!é¿  ô ×q,Í·Ú™í¿ÐsfWü7HdÿeXäÿÆoñë]ú¾Å¥ÿo­Î ÞáŸðKPAü¿ÿ¯²úV÷ôtÀÏÞ–Ý€ÒÁ«F˵ÉMçä7°nèÿs#RÞ¥€[Pm‡*AÝÝÝuhôßè(¤µZDg®²ÿÏhR kÔ¶ïÿÀf®†ƒ/Ó›îÄ×{ÌáÏgz½ì·:aÑÝüE÷òÝÏ_T=g³ý´‡°£v$+ñj?‚ ÕúIðA}“‰?@е´fúî0öc p‰É‘Ó$R Í#mHT9 Uó´TÍnI=è›CØHîjwÝ›`€¼]ŽB°éhƒ>S±ÉëxLžB ù4Ì»ï#fâ?Ãô×Hw™m7sRæ6#Ç>N˜—„«Žå§#òƒÜ÷'Ý o"¿N§Ã:NÓ~\³ðÇ~wtu+êƒñ$˜ 77†X¬pÉ¡³«1ðËéÕ-ºÝNÈõ¨5¼ë/¡óÔÈïM¯|[0þJ¾„ÝÁ•ßïó8ýÑh8—$WH&‰®Sq¦!½È†€ñãé¶àZ»—}¿DüAg DÀ5tvâÕ–r®úU~K¨(‰£ÚÉaIÓX½— %®C·é£îÛžÈ-ž^œtÎOÒúáÐØÖÌžQ¶-÷LØ4w÷È»~ÕaïÜ£=ÔƒMvуsøævÍÚnŠ.¦]Û‹tõw§5Üf¡…Ní~œBŸgtw² 6äÓ½#r@=ÿ¤nDÛÝ«ôrÉ~êU÷7(€(î–4Æ‚xqù ¢n=›âú¹½v\Õn&TWïÎDMäQoJ³¼oXS·¿wïÙ•iU: ëzcêÛì‰:7†ƒëŒ3ÓTåð±}D) Eß`V•òžÖ{B±é€¸\Þg'2š{@àÊØßp^6*Ú7{QÄ ‡ähL:°$j ïh°À¯-¬Ç €¤§,dàØå 9ð—6`Y´ÞVX[ÑusúëæÜµ)I­gÔç96ÄCÑÊ}¦û7ç⥬±¶~Ž|eÁè[˜ŽO°û~Ɔº§d†d¾ºÅóI÷êj:ê^ »Áä/°;vÏ¿ Ø—cº“鈮>i›Kܶñ¹òî ÂGœ¢œãÞ^b’ˆ»r‰yì$ööâ0 YîîÊiÊyê$ß—¨S+î[øÉüe«ô¥Ù‹°YE¨ÌnFY,¶/¦ßmŒ2|âómx>&ïàù"6›ð)2$1µƒ9}÷j{fÙ=wY„»äÎ5X!”F÷\e™ HþÒI1¥}µt°òçöjY:JØyiø$™ªñ¶íáarq> pS‘=w‰¡{íul¯ U›]NžM.‰Í±$Tq͆ØüØí.‚qi0êÁ ›pJ¶j8°rÛê0ÙtŒÙ–8ÑnzÕ ¢áGo#²Þ*Zjc Cý vK¨i »´‚λ%Ô‰h¤‘‰$hR«Dòuúi”q¨‘Î%q·"Q)NŸën"”-–±¦ ùÞiR~_}¦&eÝþ{ßï?ûïÖ*þÇ’ž•ý÷Y?‘ý÷±¨?“þ·77ô_õVþKy¤bØÏON(íýÇ’¨7÷àç'ú~¶Û§õ™í½OÞÚ;G<ÛÍ]ÃI‰>¶+¼B‹¦v–@>e¶ÇO³ðy|óbò}¨°|óÑn<ž`Q÷ý‰ëÌ%øÔQ€ÂŸ„²„ l^2×Áh<1 Ôµ’Öilç¯õYk¤*i3k¿ßWú9iÃN뤻U Çq×í÷¡Ì8%ÂØDB“B+Pßoƒ«[ a2æ8)]îýÎï¢iH…!¢˜œÞ¬çßûƒž?¸ú©^Ä@˜'à‹„fæÕÿÁÍä6½›FSNS¯¼èï\W¡‡ðŠ…&¦DCd6¢`DFâf¼†f™G'>Ú­ÃIõY†åృpWr).ýÉwßǰAWWÀ™ ãòÇ 7YJ?=.x>9ÀóÉžOvð|r‚çÓ"Áó©ÂMFàaV>ƒÅ›) (´öU˜çæù#f— ÝÃNÏOê{õŽh²LÃòÙ(@oØ~ÿ'7ÔyŠ¢Z¯{?á( ¼ð@!ÿ%KD5^·Ê‰–dÖÀЖvd hþ`×7QW3E‹@ { cp#;z|ÒS\½¦½?¢öe,c®’6F:ƒy7•~F‚·Vjªk¥J¥œ®ENêÿO‚½:%8Ô¯%Ap­tZ@ @ïxåAkW¿ùð±Ð(Ô×Jëkˆzw°Ü=øªŽŸÉ]™.ÙVÃ>½ÖNÚØÍ%`jz7u£@¨gWOij%9„P_ ‘I?ÃG@°À V0m‹‹Mû±"CÓ.6 ,4ÛÔ›MOfƒý kÞ•ˆá°Kf(„’~O¯…õ ¯<“ψ Ê|šbtR0ÏS¥~iØ ˜%¨cÞ Ût˜>YÓU ¥U¢ÖA*%ÅC–0lŠ¡YeèÞ•UrQÚ%5yØ¥QrhuìQ:ñtŠWèS¢u²'•l}Ÿl M)Õ üz‡G_ÕŸ§1R‰„±JÊü¾1A¢N$×°Äì°qˆ¨3„ ÅYŒ»®¼ëT6’NÎì°¼µ«‡ êÆ7ÐÊq8•xÐ!ÒÉï©¡ª;,–6ªæ¬Ãâ ’Ç®ø Òãç#ÇS°DFŠÞp1Â{9õJsÚLLj="œ’Zîx ‚iÓ ·DYžUÎ?dŒ¾ÞÞH~'’·»ö}Cꛇ"Ðñ•²a¾‰èëW™¸rŒ¾LõÜ}s,ÊXRw¯¾Ž%yIáÈëlq“ÑqDEú×<ÍWršØ{xã@Ó#Í®²û,OšÊn¥³û©ÿ›<ýßêþÿ’ž•þïY?ºþïq¨?[ÿ·ñ:éÿµ¹¢ÿ¥å(Jµ|Qêÿ~F éÇâ½úù.|É·Yw½RÃ_f\‹îˆ=ôŠØ‡’øH1?ÑO[hÊ_”#‡…!_0ÔJ‹ï“ömtEéƒ áÍ%|÷YÅ ´¼ã@y®À1’`vÄýðjy-£Â`ˆ´E•û Ö€¦âGøƒû”óé¹Å1åÿͧ#ÿo­öÿ¥<+ùÿY?ºüÿ8ÔŸ-ÿ¿ö¼¤ü_]Ñÿ2‡TbÊÿ›,ÿs ×ÕÀ~0%·ÌSÀ¦ãPü;ý(€ h§_qøœ£Œzè܈ ÿl=1”ÄOzû÷ïuhX¤¸?*ñ/CØÿ¬}û9íÀó3„ý‰Ðï²òUw .}ñ·?’[Å]÷Ga£4èJ âÝÙÓ»ý>`ÑÈ÷ÉΠÏÊðƧìßxw‡š1ˆ"òn“_ !õ‚1H~w¤ )BŠÜ‘P(ò´‹¼8\ÄrðØÔ<éð܇OÆç¸iбJ/2óQesG]þÿŸ›Ë§"ÿoy«ý9ÏJþÖO$ÿ?õgæÿó^ol&ü7Vþ¿Ky˜ÚMÿß¿Þí¤ßoãþ]`ZôUß- ?Ô:û°×܇?ÏNð·ewSr É$]ì¯ÎBìt¹g—›H°KxüÊ`蟦Ɩd`Ë5‘k4‹Ã±­ÉÝ‚ìš"NîÉÈ“­Y"O2Jaž XíËQãÌOº¶[¡¦?¢UÁF§ti"2ãt$Ï@~á+nA“¬©„‹³wÑLt!‘ÁÝ óê|*•zh*…Q9[…` Ñ–âÕvG7ê;5 ÚÒÁž¥ƒ½¨Ü{Òàd øå2ñ£¢ªAI›D­²aÆ;-Pi¸‡®{z£my!elàg„›¥îêNÄw@êÞpà”½#^4_¼Å=ݬ+ÓÂ2-@£PSů€”$n¡íKŒÃz?òï¦ýIpßçT˜z;êA–X ¼’F{ØÇcLf7Ãñ$êÇÖ l®ÔÏ^¢Ÿ]ìgw¼JíšW¹:µõ2òïûÝ+–Áä´@@¨Á¿¨s¬WW· "½œCíÇå;G­ƒö ~¨ñßû=‰6tis³õ| (Šó¢Ò¨ ¸ É·Ã)Ô»ôiáëcU™Êm¤c»³I´ºC$©õßrx¥…  »8Óhp­_TÞl_UQL³Özw@µÛ§ eÝØÜÇŽÉçœrWÑß8ø; àk’ 6!󜉾ÿS9~þ7Ñ €_¬Ñ¥dR ï4Å®êW•'E¯7cì_ûÅ“” '{Ç%†f‰hÕÙΑ‘Té]™H lVž%³©™¹L® ÀýfCTÎZ¾\³‘ð ámØvôeZ<àú ˜€¡€ñ1 ‹tàLpZ>Ôv÷Æ`ÜMï^Pƽ(UêH愌R¦r»a:/^UmZÌ70+¤D4ÎФ„_rïÚw0qnÒ¸Ù¿ÿ[–Aû8()ñ­Okrµæ0Áóþ¥½¶CÛšg1¥‘}¼±"\1RöðÅ^òvƒÐ¯O‘yj—ḰVb¯"8áŒbK—†çW‹õò±º‹±w¼žø«zQ=ý®Iúe¥4{:ht~˜&6ÇZ´¢•,‰AÚªìãý';4å5¨™áeV‹îáØ–¼ð$Ôe¤$¨B8µ^hp‰Ï]Cìs~嘳 }¢ëo‡ N8¶màx•ŽÝ9¯âüõnwqNj¦ýÇ:öŸ•ÿ÷rž•ýçY?ºýçq¨?Óþ³±µñ:iÿYù.åajÛ”ý§F†‡Õ‡í nÛÏÊê3·Õ‡€¾|cO;~ ©ç ÃÔ*àvl"¦QÚÒça¾©íÎhö˜!üIÍþÄ¥ÍO±èídòÀ,ËÙÐrZò”nqe XÔ³2¬Œ+cÀʰ2Ð3‹1`¥Á_iðQƒo‹¸$èèQ×õóêã?T/oƒ‚¥fÖÁð{iÛ³f¨éÒõI.M‡n„Àz½¡ÿ¿:ñŸ¶VñŸ–ó¬ôÿÏúÑôÿDý™úÿͪ—¸ÿámn¬èS{Lÿ^Uúÿ³ÃÃöA'²Ÿ¿ïP¶è’xßôðG5Åðá¬5kÀøÍŠ÷´-ÐXí~ô1³£g™sŽÊc6H³ ¨¥™Eãoi×3#¤¼a€•—fXþð¯*ÿ•޳šΫ šRjq\ýDwº!"e×ûàÛp‚ÚVGÓÍ‚þ©µC©è½=-yo›¬öêhï½·Åñ-!ÚÕÕp„ èþOn×ïqàk¼;¬†à÷–gxx$»ƒav`dªå­ï“JÌMˆ/qû‡–îž'*†—ÝïýÉö‘¾Ô¨àílÖÐ…'z¸ôûpNÊêMI¿ì4`½^Bzäßc´öÁ„êG“Û!µ @ð^ïè"íM¯&1[Ž'±iÿºïK箕nlÚàBJÒÑÂlCšiH ¨l΂T³Ô®™ek¢2ð+bƒ1&°Ü R¹ a‹Éõh8˜PÁõsQè†ÓâÖþÔ»Ê(ÅqÌÖ]Zõ•qÉŽÛF«_iäk{ëçz}4‘`©¯±R¶€j¼t3*Þ[:bMØÆÆ¼*«˜º`dÅEîö¡9ùEÒ2ÇÆå¬@Ò¡ÂQMz0ÝEÝV­[ÿLßÖ)ÉSØi˜“!wXýp:"¶±ïCêÛl-\nW™0yÄ(š%m³²[½«  –cÐ-Ÿ€JÐàýdX=_Ô|‡,¸ê²X…‚]¯ÛÇ]êyÚ÷À ¹¡ üL%ºh›(øƒ+ŸÚ«@³Ó¯~ØÈå´vMÊ É…®Ýë’0ž ñù槸ö(CM8òϱ£»â€4À̦_º"¯x $žvF4ƒ±¤»h”¸°{3ò/aУ!êV(R*5ȸ=^"‚¬‚?ÀšãôšÀI…÷úUåWT0~K)+D¦4í)ºuåáÆ”:FÔ§¼§, ŸÃ—ÀÝRYŒÆÏµðg~lÚÂm†¦–öôRžQ´ñØ)­Ãÿz¿Ûj¶d"ÆÓm²Án-Y†#˜D³uZuO™›)ÅŠÏdNâ†N›*:èiY7£t´DP€¢ìHËÍ‹ƒûqÐ^¬E·^%1 Q'l¸Pzi#‰¡š|X-Šº®%ßGZ¸ÃC*rg’cס«Ãß»÷¸¯†ñ¸*zÓ(uì!ÔËžXÖ fÑ,׋ž÷Qã½ö}X*‘C}‹ùJT^‹ð¡I©Ô c%ªz‰j¬DÌèÏ;r›Øåq$ÝN èÑ¢VN:•S7üˆX%ÖÓ‚Ô Š‘ðÔÇbÍ”#.Œ(úTŒ˜Qñ޹ÃÓ¨³Ó°{k¦mCδŽ6ƦÝ&X»¿á´¾ÞAá³V^_ýI1x{W à”1XCaôŽmþþõĤ žI7Ð5¸˜ïõ7l7uL¸ ^œ@/J:ÀPO²‚ŠQ§èᤢ`5ƒg‚Í2J˜U¾] $á–þšlÔ¤´=@Ü ®À±XCR6bžÅýfšgƒ·$ rLÜé·DŸvþ&Z(¼ú?Ç!ãÍœ:×&+Ämq’à¦\E¡Ü"8¡måjü¡Ìѱ4ÞWyжrU™g=‚ 5_u7ð㪈âr'°PsT:êÃ'ÀïZ!0IþØÆ@µFªªÕž¥`‚Ø¡twâ(d´³ºÕúTÊðu´”‰ X¾ò, …ª–Üenìùs ¶ýÓþ;~*ö_xVöŸ¥<+ûï³~tûïãPýW76«‰ü?ÕÍý/åajÛÛqûos·$»N;°ûX„bQ»øø¾$±îáÊœx`nìÊÈ*Ã0®Õ/1ã2K›ðaGdÓÐ$nMžÅRÜÖ-Åã‰k—ËbŒM@Ù.æ?ïÇ-„ˆH|Em·ß—7Ñ÷}"TÀéȈE†ÙÝÐÔJç´š@¾Búèð܆>¾Ê¾Ç7Hg£î÷åH4ƒ*—{?Þœž†×&÷ï|qÕûã’èM}?éŽ'£áýmp…¡´¯ü~Ÿæ E‚ ~3N¢Ë èDfv„šw¶fA)@#²öFæ:l@ͨÀ9ò]cWŽÏn"|v¦õZÖ¥9ý¶ûÍçÛ=€bçþû‘ÿ-NÇ„ùÊTÔÜs6:b«€ª­˜Ý4»1Æ$XîäêÐ^º™ßjÐoìššV|½zÌ O$lw$yAÜ„êïá8f~c·¨z6|.u˜Íü¶vÚtꨢhˆïìü§ºÐPÝ_OûýˆEÛ­,ï˜Ã~ˆ×SâÿuäRµó˜­AVëY Ö(ÌÙ© êš”eײùÃ0‘ÃR¬‹SF©CT•õOðÇz-¤™ÃÐÌa… i¦©hfe™_Yæÿ!–ùÐ,ßÀíN ·;õ½=2Q–D«‘rœh4ÍDt‰~½$Ký>LG·×7¡à?ÕjÏKZîa²E)ê†W)iÑËä íï¼fý]ÿ& صW|¿ `<ýáð^ŽÃÛˆ_ C+PA4Ð𚼊YƒÁÌCdÙ2C ’6ŠÂ‹¾¢¹….‡¸Ø< €FèÐHØ4€ÆÜþÉfc5aLtp'*•FÕCú¦}^€?AÃZ¦‘ÛŸ ^?éOÐH÷'`³xxl:‚>^§‡}.’ÖèL-EO->{­Ðj ´½&ÞîhÊêo8E”½µõÃBCý¹ÞIx'4*ï:Ͻ’È£ âEsçî`ŒŠ²›·IhÊt¥V¶%Ç©[!ýŒ¹ˆ%¡×N"Æì._“.­F^ÿ ž–>ú»"­T!5f÷®0[Ìh/á_Û{?Ȫڛð;éô ÁJ¹"5 wÙ÷¶2°0 <·I„št§…Þˆe¼¢‰¡ Ñ,¨„¬.•:<žÂ?jªšŸE ˜$r8ëã ‹Vþ“D³s™àíŽÓ „ 10#\Âó"º‡ÞøW¬»cµ0Êf^›ªÃ냫#t?SåjE-F þ]VkÅßHZ7™Àz'jDR—3g°-'³…p=óóÛjJ]®gqN‹%Æ¥šr$Äa‰C¶ãÆ1­7£j¤‘î:x̺šŽFxß"·\‹ZŒqKŠR¬[}dæ«FŒ»(ÔÁºsÑ[(Hj ŵEä€K´†¼Vß)2|2Ý™"¦-…;Ë$9‚Á±’—,A fòz s|³ø>‰ÐwI¹=!<ã>OîZ$²1pÊyvŸY§eþà¬?‡'”˜ÕJ®Cx.Q"°Ë)”Ö-ïsy1åò(N¥ð[k˜ £¾Cëû0l×:ŠIO£Ä©ŸwgD8AüËhš?4vÁ凨I`7ì‚ÅÈè²a$Ék>IÍ­âG¡æ–´¶‘ò–“ýUÙ¾—X›#U6²²]ÅËvMfFœl—ä3<¾5K¡ïµåt2¶Ó$cKìDÄ뤱˜¸·…^ÄÚhH[9êc•8Œ±À–ÏÖA¶Âzô‚ëëàjÚŸ„æ/Ì–õ8)ް/'C©ãžô LrŠÌtÜ'Ò_h^‡¯p*ª€ÚqÃõŽXdl"f»#¿–IÖ 5ÒlBŠjc¿¢7„Rlr úX\ÅÔ$a‹4vÑ­C”OkD?²·á°.t²2a°c1*²›Ø©rk#¾’ü1Å•°½r%œë1üÿFOÅÿoÿeYÏÊÿïY?šÿß#Qýo¿~½™ðÿó¶Wù¿—òÈ=ÝôÿkmćZ³Ó)ѯÏtª¯ŸÀq§~T/‰#·àLJü«§xuA•ÏT~~ÆJŸùŽüÉ¿êÍóyÄ aõò[„gŸl~ŽHï6Ë ‚ŒaÀ d ÀÌ% , J¶<9{Wß3,7Æ‚ÌâØg1¸gr¸ûP—žwa\Ù,‡½ÏwÒSOÎz"æ¯'„İÈe<‚XŽfKþxG¸œþòõP±Ja¥Jbx20ºi9]¯ r‡-ȑΠ}u;ad\èNz‚Ȇ0´ëg¨ðŽF%8&ú#>¡ŸÚ@†ýh”µˆr(…(æ7¦õµ’ìZº%ãmÀĸø7Ã!ž³p:PÿÖ¨ќٗFFZã²…0¤ÇxÈRÿäýó$ý\AÅ›à›¯AÄð”ä£Ì·ÁÕm]zä÷¦Wg[шÂk«å¹üéŠ6ò½¾vÄ_ëG뱓Eá¯ÏkëuúÅÇSy<Ö]ÿDÂûOƒˆü1$½ègäQé´.*âmä6­¯ô£[ÃÄþŒU<¬´*oáp+¢ã&ú«Jc4Ÿg#{²FeVÁ!ái.9,öhLqY¡3åpÔc§=m\G”—¢†î‘‚ع³=`p}Õ'D[ã1,mq”cy÷G~·÷ÓˆºCÄ&³1DKÇÂ{ *{ôtªfÁ5•4éFèà{È©yú¡a¡BÓ’mH`ŽîˆÇþѹk´š aè#1ì¿;Ø­0ñSD•{˜#Ó ¼:jí#kÄÃô„@>KØ ·ÃëRZŒÊ ç@q†>C߃±_2æûÆ @# ¢¦ ‹‘?¾ ¦ÐÿÉA½›¤ãaa0gê”s9"ÿªn00‘/êе1tbûŽQÝØƒhÑw?EW«aœ'Ö*š#(\ G¸pÙÉÈD}'§8à/ÓÖó숨ñ-„ÌÄ"Ïmm½î¨G)±è¨”(NüQôð®øZ‚嫵u* %P¡¸QA̰Ùh@r3- œDû r:Ë<äô†Kh®k“P˜>∠‡ÀZ;X^Üü`W «‹SbÏ_‚{¥T£¡“¬Kªìs½‡G´Sû?`¾ &’_q²vœ:¦ôp_Tj›ðù–Ëj ¤&b@ÀÆ 4~MœŒÆ¢|ÝŒèèAdsô /Ä£ µCÜ=æ‡Ï^gñŠ…¡*ÜøP@åhtƒ2&Üuo‚žÐz5.\«¤¦%%IÄ1‰’Xÿ[”Ååï5Â0Ì|ÏD"¯z“@t‘Õ;ÂîÉ÷aB*Pƒ ˜jF v%Äÿ£ãÌÏœŒ 3ùÐ’c*‰q÷g¿ ¿D‚\›Ü2 -À0f`£"Ê:H³‚‰ÖÊ 0>ñhô”!¦{§DŠ®ÒE›Ô¦Ø›\@c ¯Xš½†óØà*v!¬ªïÙŸuÿŒ|^‹ï9zb[ùõ y ¼‡8£¶v¤ÑPvî’cŸúœ¾O%/Ï>àÎÀ³Äg“8Ï;ÃM­á^‰X …Ò¿ý’zïi› °‹Â×Í€I¤ q uô)Ó“z oM²:Îûã l%Ó%ÁŠª÷åºà¦Mi›.µS,©)Õ†±å-\VÉØ<ß â*“Ÿ÷ÁF€RVüãÕ:^p2óH]F'Sš…šÈ«Ä7€–*xR¬?2Û BÊ»UNT‰²Ñ!ö5˜rO?q†4ª¯áŠTúí±CŒÄ¬¼Àû¥P[tëƒ0Ì»i@î#wø8£V«=N›‚JcGgT„†¦q°ªðB‡¸¤Ý4×r P°Â)ÄF#¼<€ÎÀ7¸F}J f ÅxTdæPZ»'”!ÐèvÈMmà®Û½Bïb {µÏ GH½¥'P 6Þ À6jàzÚ'"2Es’Þ í´„ Fc¾”xðòjœ®™La&r ÄïmÐÊ£;…¡bÁ&ÙK*ê8MǦ¢”Tò–d²…h¢@CJHƒ±a"Ó‘ÒéÀ„¸¯™` ‹NÀ“[—< ”ì€ùw0dºÓÌæœUŠqY*™ÅÛ#BË´ƒ/‰q‚ G©M£'·p„¹¹å™©{ufìqtO{]œÜÓÀ”<[K0ÅÚ(¬¯Ñ¶E ž´¾pKô»X/Ððô7¶Qh»7pý„RR05•6C¬Ÿ0N)~îO6"•V†¢ Sô" +™„IQÇBÉ lrŽÕ•hǶv))ôvý/@W¹0òoº£žÁûk…Œá‰f¢Ì©ÒÂ_t6Ê`xð•-j&ã¦>  øØ…m¬Ë7GZÝþý­Øý {]{ƒ#/²KûÝ7|Ìûo 8!tÇÚ]¼Åͦ¥¤ñqäQ b ½$Z5Ï¢B£ p(Hm§hÃ(·oƒë‰ø+bñµþÍpûÚ]õ·P+ .Lòƒ›ÊáðŠ2RÝ1kXO|8ú‹Í°™óHº)‰v½v*އӑ<_Ê+5é6Zß"}QÝ,üpãG;ï›ê›rùÍÖëÚúª:y.xš0ÏÚÍ l;c4ÇtG°+íû×}™^SŸAØFž™ˆ7[À ^oÆg° H\@ÔÛçá]ñîćt£û„:-N;ŠòŒ†Lr-TðˆGµ ÄU ‘HŒZ·PsÇ îv}’æ*z#ÒБàšýà.˜TÖhÿ’\#i¡¥±Ê×Öë’<™áéŽy4ñƒW¾´Ýä,—Q|=Ø@‚šŒ~’¨4•2†>Ø1úØ)Y/ׂÌ÷­;ú©rbkù8õjñnD÷oè6>6?ˆ`âs¦V·Ò'MåÓ&Í îˆí´9‰4ß&晘œ>R0w{åÛáldñÆP8´Ýc®×h>z ™SKÏóÉmïˆWñ©±åâ0õ“†'EГF•UÒÒ´C «ØÊ$çb,‚ÅO=”¸ù´óHФòz»·!+àñj£²µ‰_¥Åè™ñFpO¿Ü›é>°íFo­$vwK¯ÿîáÙ}`rËþ¦»·ÎU¬““úÆtk=½k{{Õ*úýžÁ÷ý øÑNñSh`©ÎÙ9üÄ¢ïá߇#üÁß}xj ô½MiãäCãìƒ`íìáÏÃøy„ÿÎð’ï.]ûmò•ß´všmšE³Ý‚ï±ÎüÇ_¢3MóÃÅùŤ}Öê¨÷aæëèýñîÞéùçuû…ÞÙ®ŸÔšïå{Û=b~ï rFɸ§¾qªn¥w†ì{çŸJr¡ßÍ÷UylÝ”¿·äïmK¸òM÷¼£{ß§gûÖ9®T«Øbf2$#×.ª,Èäú…Ù[iì %—Ñû›êª³é¯HŽ…j¶§ÝÕÛC0mƒÉ»<Ì:ƒÁÏÈ ‡v{ÜÇy9b#ЦÉDß‘·=)Ìš•rxëK’’ºÝ Í=žwštH“pˆeL¥y^À¤H¦—Óþ/ÈE§<–rŸÜÛ" ÏG /j"¶ƒÃÿ¤Ó•'·ÝAy¢Ã0„™ÙÿÑð>R^]úãI¶ TRuÛ>,ʽø2¼0‚›1µÃ¤liåP‚Ùv͈9  Ò[‰M/Úñ´ÂéÅ\Iyµž­œTSÕ·¢ÊM½ÏÓsT¼™ì9'`ÆPRÓp&….ÎPÊŽV±¾¨Å%8›Fâc‰Ý³ð¤ Bª?@}@¬®.èF*K"ý-T WQ¬9ûµ uVŠ÷b ЪÍXmÙæ’˜5l`0®À:C}Á Á% ãžÈä±èê\•ö;ËK¼ŒµËÐ Á1.‚G×ã6UÄRµãKE!HœÝOÁÑX ‹ÍX®¯XÖzu'±ÚÐÆ– F,Ž=¾¡e¦Ú(XŸèNÈ'ôU–µK^EhbÖ×9¹ mcA¶çXvsIàWñAûMI­‚¥¼ZÀv« ¬[¥ OñÅ9Í. ¼•·}0Í‘‹íá ¨Þ¥î€9ˆMjc ¾ïØÌݤB’åV¶Ð ÿt4ÓÔ¶!òë-{ðœ%¡BàeE‰.IZ ÷NZ‹Íu\˜—¸&t MK‚`éÓ(Ðã Ë‡í¸Eƺðæ ’EÙzE]—.äS©y Ô5„“ óVÿRÙFÃñxˆžÚLª r<Öé¡:=pY õ6¦\¢—9&:è£ÚšcTª׆:pXFU»ºšÃCz“WQI†íMG$)NÆßïÿ¯ ù%–w¸‘ô˜OFÓ« ãe=ÖÞ–¥W:$ÿü¿‰ÉòÁLŸì«Ù'6¢&+¿°AÆUÕŠ$wqh Rn”²@$½‡ pízr7”ŽŠûkʨX,lYvJ£3ö/žìKQ5÷=!jÙÙ¢áŸÈá§îm±áãþ3ßÚæ¢M¡º®&±in \—…Üè@d]8A¿%_v¥ÝWÃ)†mð)h.:QM¢²Œ £C¼eÒ ¹2l˜4€If&Ë1ÝÀ™±Nhm¾ò6p; %+'=éŽ9ÐDdêQNP]òP“ׄ²{Öa?¿D“¨‡ôð>QiÿLü±Ãf¿A~Ì$Â;OïqŽêˆ­>)©¥zßtLÖ%bòÖ¶U/tÅ­› ‰W1©J²¼®uNƒ)3»(lò`-%Ýe½öpd«O#³4¢R^z`™kokB ñdqŒÆèÌÃ&’<ê+몓K¶`Œ7n«_âÝ¿û#ôÔ S‚‚8úØZÔ½zýŸÐΜ.ÆŒGYåå»îØ?îB´À›L僜Pº=ŽáÌ×ôÖx®ŠoIb‡Ý€hʈ­‡HÓ?ޤ4]5OÀë‘9ñ²Ù#žÐ.Ê-Q»‰ã¥°Ç0IÖ«®c'fÅd¼×ŠÄ£¶ŽJ–‚uóÈ.0k£hÅß8‚®æ:‚.TŽÃ6ê¢Û ;UÚnøE#YÃs®ãìbTBÿ-þ£Ê )°Ø:MÍeB%Ïšîì‘Ybe{Ú Q9kUœ«R¤_–Ñój•©]ZÕºåÈ66¬ˆ?ÊTˆR‹i #öbámãû~ ImÑUƒ×â%A)—QÚ|GðZ‘î‰ï•ÈÒGc«*(/`8O¯ Lø’•éP?è¡;)÷ïLÊøq:)#+ãò¥?™¸ú(pÕæÑÙš¸Åk‰C ɦ´Ûrº†deÒ„'“áð{7v¦JãK âè=âƒu»ŽzÚÔãã ó'2œpV–*l̲ñ‘ÇNËŽÜPG´‰SAŠF>›¬ýὪnÆ”j¾?«se(Y4j‘‰¦¶É¤ëd¤%ޤ@4~åQɈL­Lìz2 S'ÃP ‹7:ª<ÛâˆãåkF»Â.âžI ²Þ´‹Æ¨ÿÓ'kà×äëæ)’ÁŸìÛzh´Yç0V;ºao޵×ÖZk»–¹ý5¸'Wé÷èÇ «ýWKŒ¿û>³t ¢€~I}‹D sxgŒw?†Ôœ Dt×·i“M|úÊÂ'SÊp:yŒÒ“Œdv’hX–Æ0‹{¾ïeÂ/ì†R즗lïm]Ǽ63¥Q ‹‡–ãèÃ'ûÊøF[~åml¬Ã×hCû°®8apb\›rÝVŠnÔ,¡°}YÊkQœ®„gœÔÀ¢†wä ˜W%®Á€iäMtÚ¨…q?¸¹…µ_Cø0‘[+÷‚]â™´ÕOAS!xÐR!™Ê•Æ™ÀDÒ¤%¸U…¡ö!¡zЀ“uL°N 6ʮґÊ4î¡’ðü¥j|½qôÓæb­Þêå£ûÄh¹­¬•¤†¼{9ü†¾—Ñ5T¹©Štå2ê}Äòû‚{áôRùÌÚ× qAMþR}b7;‡ÎŠšm‡äÊ1&롺€Ö¿Ñ¦hoHUäÐe[DxÚmÕ:º°¼ ]…_¢L[gyÖÞF ÃËÍz)[rßÅhí¶ý%9#wuW‘}<ÕjŽúr?m¾¯ gšý}ÓAä(ü§{ß ªÖÂ?Ð5§-³®‡ålŠ~HyÔÆ5—déG‰]â ¾À§Ö“¾qÔ¨k5Ü)r¹a*õ‘Ö"­§MÉ©ks¹&–òØ]³ý²JÄç¿””ûIáÎÎ'q¥?º÷ãpA"&ßkMÜøRÀŽÒа٦ 9)þQh_­½|c¹Ÿ2*Ó`LçŒ( vÎp61×pJÁ“@›évè«I²Ů>JYÆeá³²<©r±¡¤èŒBŠÒöÎ?Ä‹Ú r梄®%B,Ñ0|°NFÿÈ…’têlã&Ϧ¦”É ]¸Þ*ˆÊu·?ö+¥è«—ზ2ÆRHK9ë+z¢^1rôþÅ)ýAr¾6¢@P.¹ƒÏŠ˜SІHÚü¬Ü†FpDZhÀ~ßC‰4‘)·Ë¸”ÿ®8¡ a¯Ê^ æMù ¥?“,ˆ­‚)•­ƒ›ÊE¸i¼;¨åf <íÅG’5xRtrx!7\Y!GqÚ¼cí§§½Úh=m(Y{·Ý,Ø¥ª„ Ì\=¾ß[µ:¦q“ašÃÇäòÈöÚiÁÁ…:œGí˜+ G~ÿ£ý`2éûö MŒ »S²¥Œ±…¯pl'ã1¤¡7S™ as…íÑ% óÃÞ¹¨‰ÙCÚ;Ûº1Œ¨Ûj 3€&·)%Ç b¯ÚIË'£©k€<Æ-)ã¾çFh|$]K¹R¬ùc]~D…jŽF °½Uk¢èéçÝ”Ë"8+ªð¡v.eG§„>j‚;ÑHóÔB,çšÊ9žz®ñÔÃñÔsާOJÙˆÀ·6,¯õƒÁv¢€þöUê[{¯NI»};½¾î‡¬€s<ª˜G9&î>¡Û]X>›%£2†/ÃÑUQtG6~•e¤³nï ˆÖŠÍ…û.zs#w)|Š›ô´Ú*\ Ñn6”ûZ?;w©ºËäjËHDN×á12âÊÖz"7áÄH&u3K„¥«™¥«yH+'QÅÈ)}¬um¬õ̱Öccµ–Šîu¾3¸‹VL-JƒÉJšbêÚ!úª'ñ•Ð )IÚ¿é>Ödu wæÎ~ðW%åè¦°Ž¥‘ÈÉ#…Á{ ×+Çä°¬}ƨŽ+—l kÑk+…CŠ ˜zt‰*k-¹Q.KÚ²kÇ TILï‘ý€ø¥DþЙcŒºÚ›AwL{vÜPZ\Å/Pâ×78A7‹[+:eß„;Œ QR¾?Eo4¼¿§“¯ª^ñ¸±8ø¥›,/ÜF_š*Ó­¾–NBã*}N·ûFÝdíæÑÐeùýpd1þF-¤Zµq¢‹•f¶RBË5ØæûYb-f þðG‹Þ€CY‰˜Š+¶C®Ý0ôÍÄÛ ©ÏÂb…Vãùߨ_F¦c(PôÊ[d.úDšrK{ïÃö¶í‘-YÆeJ9IÁHóµ7+«¡qór†Î'ÔìhJÃZS›Ñbšo²¦ðBסi9µ~Âì©/讪]èö*¡´W÷£!íEA^ëcf,¼S?Y³¢y÷ïÛ“ÜðúÜð9UqAúÇ%÷°e.4·R®¦ðâôÎÜ},äÄ<}ÑÊæ÷(ÂÞv£«p”z€4)DIÌKЂêN ¯(\xu]­CÃ/ߘƒ³N’†Ùâ ÉxcC++ÖUÊU ó.~”§µa6‘/Ž™ÿÅ{:ù_¶Vù–ò¬ò¿<ëGÏÿò8ÔŸIÿ¯0Ø-] ÐF„œƒ¨\ÝSC rVaKU­tUë㽄sz`cÐÍøœj3Ði¼®\‰Fb%vøÈfþ1 #.m¶ã8âhÉ·™!´5ë¨ê¡ßÑ&þl[Zš#V‘¥•¬ˆD*ŽPR“¯;Yr§2Däf 4aø\VK@;H£M;Móÿ^®ð¦jy“ÐE Ù[CvÿR´í]`Éuž Ûœü\·+q " è…4jÀEÖô} Ô³ÖF‘G[å~¹EmŠºªßœï¼+"ŠæÌÔûÍ%¬¿Ù\ÈZ"­pÍŒÅN®mÊ*Ú—=¶´ì"ÌȳN#U_lâ0²ù?¾>á|©¨«}†)¾‰·¿I•r´/Ib3fù0Q0öa•wù·{Lý_õéèÿVçÿå<+ýß³~týßãPý­o$õ[ÞŠþ—ñH&¦ÿ«>ÖÝ]ºR!€[¨\+ ¿ûžÃévÒBðîc¯PöâOË-ܼºHÔF:ž¥()aœÇSSuó9Væypœy4›ö„ÔŸ•[º?ÑÒÊdÔ¹$å´ѲVó¢R6¯S[|‰™¬Û*“u[¦¯O(=—õûÏ8‘›^|xŸU?5vë_:3²Û ˜ÌÈóYÅxèŸ+`˾º8ÀÙB*K_Ô+ãYÇ•á\æKM¤9\‹+ÕÚ FáKÐéñ$A—&zŽòhGnP¦µ DUO5ÔÕ$-oV9Ë\,Ò§ÐÂÕı&(L›v9ËÄTèŽ.çí3v±© ï Ï>½þÂ9»fª72i÷LõR&Ýü‰\ûލà2Á*´@¿ aä Ì‘vpd`ïÃÒ¢Ÿ ä&Ë 9‹W“kŘ#Á2ß¡l½‰Ü¦IîJ†Ø›!…>qnþ•Ø’;c¸cqJCcg3øk“+©=Òïq(Ë’L»\T›…LÏXW¢í‘7Æ5Þxxg€ ¾&·@iÈL³džØ-˜tÆ4cêÜÐDÈ+?ñ:¡R §gNÁÙ‡çNI3lI-ìN&îê›9†;Sµ®°AùFâûh –á§ŒÝ2ðä¨eUéX¢%ÏÎÉ0ß—bñ k*P#È'Ñ5¿p_1þ"}Rr±™÷s³%3Á " 9/¥H§SοŠJhº™yaÚa˜†ëØÆ— R@ªAJ¹¥$‘’ôëVï£Ë{fT|¡G‡¾âàü zŸœÞÇàÉ-ÍÏ Å<ÎW?ûŒ°^œÍr®z•œue>Ý7ÓÓ'¯ˆgQ•YÝÈ^nf,GÝ<˜èä„¡Ý#ÀÊùd6‘Ê^Ç=ŸýÅK6÷9Ì0à9…½ÊnãË´W?is7íOX.â˜ØzÑdøbŒéåiË-ŸÈ'¯Eÿ” ФŒyP’ø ˆçË?s¢x™^oc¦<ñTcåh™Íl^€¿<›æîA§fæÔ„ù8OøçLŠ ?«™I9ÝF¦Ý‹“w%•23 ô´„˜È9ÝS1Úíé'ñ}J?¹YîQËwG­}ú}zJ>ý»µýR<Í¥>ZþËÖ¡üõŽ~·`ÝöÏZ§G˜&³Ó:ø¸g÷âÒa¶ÿjýÿì½{s¹Ò7ö$U©Tžÿ“ÊŸx«R1)‘´8’í]íñyK7[Ô…öŠ”äÕSÏû%ެYS¤–Ë>©äsäcä#¦/À3CݬÝ圳–D\ÝîÆ¯»Þ‰ DŸÚƒ)Äœ“{–¿kÜîÇÆ½S”ñÙ€ÖL:JoîÇ`~2Z«@~2ú®B£‰ûÅVW:ZÙ}ªR„9é'¹[x#ÁÍëU¾c´ÊŽÑwñâèE ³"òÞÍé¦ôÕH.wQ™AxÒ¡9ýÖ«´‡æ„ ›òŠ4m§çþíÝÒžå<+“ðÌŸYÕèZÛLå ôŸn‘é¨^߀´ ¨ñ[ê+7L€ ø«½müáOùJh-°=ðÆ·‰`ò¤=N{Ú„Õ7Šk\'ÇhúZ5‡~Ø»¸Bã}šrÛš~Pâ­d®@ªðÉnòÖáñá =Ë,Ðx|‘KÕþÝ$ubž•TâqUäùÍö7ˆDìja©"—»M‘ÂXß¹—ÝJ»Éæ š“c9¹>öÌ<´‚ø}~·c‡UgãÅ=™A\:5Þ…z-¾êÔx—»…›hVhfÆMùŠÅõ íËDåîÆÆ€ Õp¦_æn´ 4N{ÀÀ°¶0 „:ˆ´Ó þ¡”XÃ%_º…µîp½Lð»µ÷Ûøé¢á¾3Æ–²S_º–Lx¼ù3gZgƒN·ÈÐEçÐÉMò%6½äh opJY -ª¸þã ŒÖ8“ª ÿÀcA2$£ .¹Y1ìP³ ±B4#âé ‰Ð` ™=E…Sƒ·@ ©Y•QŠØ4FX!ƒD£ÿÅ–ØF>6$c†8dÔ JM¨Üêq)IUÅå¦]ÿîªK ÔÈ2g µ{*›Ä$V=ÑÇ%——+H\z¬éŸZ¼§ÂÝØ{^Ùnl9]W…íÑ4»¼UJ1Œã>Ƹ\ b×pι;„·}²ÖÌs¦¸=ñ–_dcßÀì-ÃLíyv}·ê~m9ØR|ï$øéVäÄÖ{*ö 4Ùqp!Žd2õØS¡oxB"Å'IrîÈÛ%,)1¯]..¢ózSHÑ1á.Ù{dð÷ *Ù­H`kJ°×ÞixyK&u8¥<'!¦ l„ C¥ œ {ÞhƒÔà7{a^©í#´Ä§†v> jÕ'Ýÿ €?¾ †“­¸7²Rá°tRaÌhF”óÈ l¦ ý“ n<£&˜Q'€Ú6ìëV‘§¢[2¡Œîk¡lu=ÛÕ§—ûòSA8F¶Í¶QàÚÈàƒèìxÞ§Þº_0«¡f+˜‡Ýf,šIæ‚bdp÷ô ?•[ @…ò¦PÊ:²a@ç¡6x5f+ÎW/Ó{IÐ-_פõÀÄKTê¡àšû¡ê-’v¦ÃLëÑÝh(KÒú»Ñx:¾+è ÒÖKnxÁ‡. Tò¶@”–d@ÕãoW ÅJé gGyf[&Êß2~¦¿£h‹Ÿ°Ó±†›T@XÙhÌÉ›¥Þй:©l¶ÊÁasï4t(AèoöI•ƒNÐìD؆1Pׄb9@üîI)0A³¤È¨‹q/MPñ>H¯‰¸A<ÚÔÄàúÁxr…qÃ[¼o$Ã[õ‰xp^‘W+¾W1¸™–x‡Î+-["µ\ý%}e WÇ£°™o×®¡7v šÒéä]&4á-eY(Èjÿlí#ï£{ÞÌ k “íÃÂÛ9iòs•H7ꯖ*jzB"E¸R[Ré¾mîÉøL'ùÀPO÷ž¢=ß;@µ ût¬)Dò-Ùj¹j™iS(=mØÒ|Ó ˆ>oìP å+k T”(@ V€£ï»Ÿ?¡LÁ}ߤùjI¹“YI?rvÖÄ<Ùd[Äìa%b~†”ÛP¨d¾ÔŠE¯,Ú-Ä%V©Ä«òp“œÄ¡W/£;ñÉóÞu$®>¹¾öQ‘òIxØ¢^†PaØø–lºf‚v¹–[.ƒÑÊ *k9eÚ·¼å|üÞXe(MW'Ÿs!§)iÑsûà¾iÖu¾¤„4þ®ç¦Ÿ1ÇåÞn3g R·ëŒ))YµL;£æÏ+Æùq2›xÌÓZ ¤œ›aœ’4áVSæßì(H®…âr€7ÊØþqŽ`ºïKÚ‚m¦þãi ÄÓ¢âÆì.Ë,õN—r*{®w=Þ½ç¶8 € GÒ:×Ý8vª¹Æa¾^¶0¼`#˜ú—­ŒüoWA«([§¿¡£w²ì!Ê!9R[ ¥Rf¸·{§ËÍŒX¶Þpdäg{¼7`ÿ³oÈw„fÞà›'Û)Œ¯Èº„U¹AP®Ž­¸ò:püÚÝèërb÷gt[‡ éœIeàs¼Z~‹¦sÌð{,”ÁÁ¢â°e] ßoa϶a×]ºßÜîŸE²Á{œÑ:´ßsç+Ê[a<“Α¯–Õð‚Ä8þc²˜ð¨}“dEVosüõi†»¹¼õ¦ÒZ–’Ü 9¦¡¦¨÷“Aï'b×;.¾åé‘»òš[ެ”EÐ=–œèƒ‡ èA0ušŽû xÐÖ®ÖE¦T×·ÿ1à¦Â3LÿP˜’¢Sò¸ y¥aKy;”¼CŠç3UÞ“¦ŸÔïM12/N7Ç›|œt¹|F†…;. LüO+ߥÓ”¾ à w­‚μ#6@«ùòmX¿eÒ·žÃÕ•{r1öQyè¤ ³ýt9“¯ßíaLÜnîñI/ËO à!k‰°èÐF; ®ÓY`~ÖÄLhàì ‘ÙXŒvGáJål‘³Ò[DH,‰R»Ä»Vž2×ëéF½ççÂÕò.eÙ´âëÓœâiÄŽvns$&±›Â¢ê®£›àÓûÎÎÑo=M¯²Éšìtú¶몃xøï^÷¾ÄèåÑùTòo¾†Jz{• ¬@(Ñžêɪ‡kÖ‘1BnÚ²Ô+ õj˜³Yõw—< Ñ]ò$üUÿmõù࿽^à?=ɳÀû[?&þÛãìþBü·µèÍZÿm±ÿŸäáÝîâ¿­.ðßøo ü·‡À{0à¬ÛƒíHiÁ¶À`[`°-0Øt» ¶ÛƒMOămÁ¶À`3[X`°-0Øl ¶Ûƒ­p>l 6Ûª5‹ ¶{<²™Y`°=&þ»ZˆÄ[0EÝyb<6ßlìèH· ^[M•ËéÏÃmûõh­¿-§°> `·ì‘x`ô]IŽ%ࣰïÝÈÑv9œÕÆ©#8…½Óå T3ÕdݲnY·€¬Kÿ^@Ö- ëÄß²®Í<“uq  hû› Pƒé(D)÷UÈ_JŸŒèF­¸e~e" OäâA‰®†a3³‡Fé+è—Ó϶Z ö©—-Pû¨} Ô¾jßµoÚ'ŸjßµÏ=ÿ-Pû¨} Ô¾œi[ öñç Ô¾jßµoÚg< Ô¾jßµoÚ·@í[ ö-Pû¨} Ô¾jŸZ§jßµoÚ§-Ù µouÚ÷ÿ·ö|ðÿÞ,ð¿žäYàÿý­ÿïqvÑþõæÍjfÿ7_­,öÿS<¼Û]ü¿5þh£¤e¦È§Gð_+ûÏP` !§O­eÁûªOƒÑ‡ºÎèkLj\|¸½Zй§€÷øÎ–„Ü3ôd;OˆšwªPóLä;  ^Ú\Ì;†.ÁîÖhˆÚíט€€ÆñÅŒ×cÒˆò4Î’3"h«A<5ÑÀk¤/S„Ûùlð9׳Á4©“Â-¥¸7ø §çéÕ5£´)À,¨Å(üV\ÿõ‚.ÃJ˜0ÙJ&~ï¥Ö0ˆËßÚjƒ§@V7'b"’>‚šàQÝ€YÁpƒøf*1é¦ÔÜDbUË6’ád÷ m8ì³ñÍhz3ëÉü·¼c#Â&.¢ <Àn²:M ªóhHð ßu•ê,=½06Y?Æ×&‰q¦ØE T8[Z"¾¥ˆæ.­°B$Ì ÄÉ®TÒ‹ãúl4¾®Öä«“I ÆÅ¿Æˆ”f`}ÐÃúr¡·S" «3äKáŒç”­‘¯øÕ€h3ÃÈ¡"^V6f„ÑÚ’™§,šyÙÒ†DþјMÊÈ;¹¸`u£–‡QV<£ÿu]ôIüº´»ô+L9üZùõ¬ºÔ]¢KÆ…tÍ2ÜÛ¼Ø]\à[‰û#Öíp6«Å+VÕö‹S‘c`×å•pƒ6ñX«*ͽçô&@L=E½²«`— Ïíãàå€>…aðeê=ôw%mÄD°=&ïò`ÜÞao06ò]n9c³%C¡°Á¦ð;šëСz“>ƒ×/7×ÛÌ’Kì*ÙÃkVí]ÄaªQ-‚Z@p/B¥RmÈÉ_ÓVD$D'³Ú¸Ç_“Ñlb^ÈÜÜ8Ð(dCqÓÛõÆ]Í[‰µhµ£(€±ÑOS;¼þz§9»ÌRü€·0n“I\³Æ0¹Í}d!J‚§¨mÏ…'C mœ± žÐÄÈ&œEü±Û¢˜rûíXoëÈ Øƒ·B¯]sw0íÑŽ 3†Ó±äûäX àL%ÂÙ@Ò@zG=e>âb„íÒ½›H8«•ô…!ÁÐuäŽUÝ’A$CLéñ‹ˆðÚWäFZMT.Fc\¸Ñ°//;^xc‘Iˆ|ËžBfb)zÞì÷ÆËt]cTÎÝJRKøY²Ü¬ÁÕÌF”_U—¨0‚52¼“l5`ãš‘õæœ2ÇÃNΆ‚¥KR—Ð^× 10ÞB—BuiÃQxR4./¢zaf'öãÉÅ8¹Q*uý< ¥Ñqá»J$JêøÈç‹d*ùNÅïU:ªn öàwêIüÎS¢Yh™Aiü˜8içËòk!±‹8ºg˜ƒvv :¹ûuï[¥ [ÌetR˜< ÑìTåÖ=*§apÙ X5mvö@ͺ%±~ÞKøl°.8_¨o2„çõQ÷ôv”Ñ 4:0èK¶ÄðoQ"üïN'ð /"$6毈õYåˆûT“+[ÀŠ®$p-ìÂéU-ŽC€íŒÔ¨6e‹ ܳ‚7­—f8 ;ð´÷tøé]+•¢‡G«ìnsðe •ÌäI»¾1UKBÞ¤d=ü¹NŒhDG4‡—ZÍ_­Éy+&Œ§•z†—eðÙôŒ½uªk)F6ö¢~3wãÞ€3Ó*—Eã<øð í"lλ!sföT¾e×9TÕ”Ùgæg¬Íª+sÆ1E¥Ð±ØW~éXå!Ϊ¼ör—rê,_Ne6^9Å  ÷g fiÈíÏ@?ßóµ¶f&°¡•R´FÈp! ±6mJ"kTP©3Á¿–³“‰ƒ¤–™V U„¶0ÆmÍi`.-`4KäZ-^!áЦŒ’ÆU¦ßoÐ2Ú°S6Á/¯—Ú¨|Øl-=™Ò(Ô¸dâ„Þàù6\°{>FvvR@®Áûæ‰SïÑ ›4úÐÝ© 0›³Å«„5m-BÀð‰Ä±Æmt“âr¹Œú~n6ˆ›q°* ß6?~›C ˆå6€›’3ÈRíËG©hG+ëh¤.gÚD¶jNZº0NK‰^ôès÷¥Æ#ðìì+&&'S;Ji®'ƒ‘<ºƒL]gŒF·«Bi_ê8MŽ&¶¢ŒTéâÀ0ó“”}°’†€ ïä=*>Á?u_3Í©:cÌŠ.y@©ù'b_ÃéšXÇ®.¥§¬žmÅ|Iup7=Êl‚­Ðeid²EJR“R*ðzÎ-2Ç4eÏÖršœ6*KU[ŒPŸ¾ E2ßñREf+I¿ñõÂÞv¶¨¥«Fš7BN€áL0É=÷g‘F+ËP…³ÜL'XÉSè…0÷L¡šIg¢|zޝ2†ìøµ¤‚©÷Ûafp•+ãøsoÜ÷øæZ£îÑ\;3G«ôð—f™Ñ)m|²®ßj ÷½&ŽÜkEƒz›`Wp·’ ¬ƒ.0ñkÊâ7” 6§¢µµâòÈ$Oñì»Ñ¡…SÝ [XÈQ—â¶~Lµ„\Û8{£ÙXž/¥+þü>I …¯¸#c­Ö@øl`wÿý\¯ÿ¼ö¦†ŽÕÈÜž5çPÏ™ýþÝÑMjµ:'ÓìÜjZÊ€®Å„îõûè\@>O¨ÞÞVònm1‹RZ—Ôô¢ó"-¹‚—-¾cwîâåÞCRME낱õ^œ”ysZ¼}³;OÀ…¡¤aÚôÚ¡uê$s¢¾%h¾¥Ø8”¦zcã²ðˆ Ú©ʧêšnj«¤­z„–ã-¿F”UñEÑQsßbkΪM§¶|ê¹§Dã`®*Ì5¼ÛFsìlC S·@€` :Ï—xe jסô~ߡۿ/ñ¦8×È,UÇ]*ã‚S‚›³7Œ1NGjbΈåúñŠ­WoêÔöL­³dÐ;Î-[æeFnRå@ÁíÇ$XVŽ¿Dß²¹ÎÙéX òê ÒÑsNºüX~M³ýsM­‚§¼ZÀÎQ$¬yñÈÃHú~Þ– ÇåÀ±G¹(‡.q—H oKPI-”¢D·ÐÖ¿šibHº—ƒk§éeEé,Ù½hƒ¸¯.á¼Ä5qâ=ï¼v»(†oåÜ…£kˆ fQÿR"_ŒG“ fГ[5³B@½sìn‚&•Xkó>¦“\[aŸèL`öjí½RP¿VÔI#b`Ìø"¤ÄögcÒ§“Û›ÿ*Hqòþ7’¡“éxv1Åó»¬ÇfÛº´ÞÊHäïÿ53X>‘™ƒ}=ÿ`u#j°òod\‘Q$+ÅÈ%Ò²@%½Kpí2=+ eÄ…âþ†*t{—K¾”zgÉ/ìKÙrOÈŽz$[ÚýÙý\ÙætåÏ݆б‡ …hI bÕ \Ö… t"ò. ×)ˆ]™uÄÅh6Äh¼òDÑSS#p¶‡ÐÜ–É@€~JÝ0™þ²ÌL–cº‚#ccPu‰>j® 8Ôšˆ—“ô`AÆhxÓ>ýd%—ÈlNk gšDÓ7=`˜Œ’ÐêrÀ u߇+´—X(œ„ÞrI×5(8„sV…‘à Û0ä}*Ñ*éçßëð”?-®P(ÜûßéòP·‘ÏdwvJÏFÜòZ ´¾h/$|Ú¡lEù%Tˆo°˜ ›¼'u«8m¿.Glˆ-°ž¯Éo¥¹’P¯ÿ5™ } &†,_È <œ&ãØWßœuŽÜŽ@ïÇC7™Œqû¢9‰¸KÕ×0YÔ#.û‰9ªxvƒcT—?|õõ-'`IvD²›)û»¯z¥'®b2 $^8RlyÓÜœ7§Ììt$LŠ šû‹ ÚvæJUÿAîRc³ô¢5Þ›.Áׄ<âÉâ2O0Ї}5yÔWn´#×|-@?ÇCèàÆºAT0 Ñ S‚šqØêoýqï&é¾C;pº˜0©ü#y¿ãÈkM€žù&ù°F`µ3Š<âûfkreqÖIý28«ª*¡IëCÆô`LNÑ1Á;¨S‰Kû™LÝДLȯJ³6¤¸OXˆ·‚¾ÎËG9†‘3Ù·"JÒBÞ;ÇÌ&˜aRÝ? m7U‘îúOǽ„RÞߌáÐÜ`gç*XÖ¿V”#†¦š!¤ù¤ÈÝdEi" çÙFxrq'AAë¿ß!ìUÜM\<5áéà” «à¯ Ý_ÈÙ‘Šø!pmеYê`'w½pØú!<íN&3 ?„ÄMq:K¡"¹½±¨Ÿº`( ±RŠà³õCõt-H{uÅ*ì5”ðCÆ£N0g¦ûJ\C“’׳ãÄ”5ZF HºÓ0Jß‘×"måõœZD(»,å=°»vçeD›/FoÞ¹ÿ• îìËðÔå=8,؃ÂÑ꺟ã) Æ1ÁèA.ÇÄo°kð—J{ùuõåÏžëš=Ùnb:]°ÉÐ9]›‰K8› þß!õ¹£C3IEæ©ù±Ž‹!3Ö‘‰<‡”J1¡tç‚BYôO…NDZ#‚)Rõƒuº©"D;Å"'í¨¥¿¤Ì󿲦7DMÓ{™fšôJŒÆ¢_Zíw¡Îóôã”B!ÿå%f3é® (ÐÙ$öWeÏz ToöTåTöJ±0 ÍÈÞïÈüÍ9Ô'¤|Ø•„Û”ŠIë)d…ÅI 8íç'ùaµž×•"y¢zW†h„䩪Šn`îêÁdæcnüÀvö³n‘‰i3›aºÖNP·æ‡L˜¬+=z‰Ên<¸ÁÒ ™N±ÿv ¨™î 3çN²àyäMÈÓ°~`Þ!ýŒŸ¢Ô@ülcV/ÃAC»Û럱&Í›$ÌyœLy=äb¡rÛ˜Ö†µBäÊaHûGŸÔuDu™ÿlÉ?ÑÈWD£iì4šP‰žò9…;D¹ÅJ+œn|”úLPëÔàÛ´§ejHÅŠ‚¯Ëö§Uª?-ÝŸVÉþ´œþä”u²9©¬¾Ê0¿}û­ÿ­Aí¯s5»¼hVÀ™/Á˜¸.zýèP0]> RP±´P0†*ŠÞØÇO¸²„ÝêõÅoH@QèDîa„1r—Êo®›É¨­°K2`ÜæÃ©Z6w‰ÂG8 ÿd"¢@`}´I¹²·ž(½qœ-“+Œu ]:*,•ÙZ%7•³òûÚ2úÚ*ìkËé«·TºáÞ”;†öŠmyAm`õ0ÐQ‘)ì‚óÆOgé•È w’ôÉÒå0¬ÄTîlÉÇÔœƒ…¢:ÖF 2·¥U´ˆàzuG+’3Vu\¹lE2Ƭ­Á9:`À­h·eµ&¹"mËÿi C/¼ný€ú¥T~`0AûáçaošÌú~ÚP–E‹Ä†/ðT®éë+œ (Â"l©›Mdf`xkMùÇ¿‹þxtsƒ<ycö4Nõ¯{_boŠ þ-có¬¥ÔZÚÂé”òŽýóM ØëÞ; d^_÷ÏòÝܪzÔãýíc<ÀÁÓvvD í>Ë÷Dz^¢~ôw¾/2}MEÖnïŽBÞÈÓ]C2m!×#iôÃ~ ·¤¿—r¶BmŸìÈUÇAyz‚½Åµ‚®:žË¥âн¥pcèújæÛcimÁbsËþ)Å„ø¿LÝ™P`¹Y_#§dEÐ_d½õ´w¢Û[Ë´GþMÕ›{S”Ü ùH]¯\W§ºžèº< ,:Óí"ÕžÐÜf 4óU¶c›"twæÖϸBSÇé1]œô›·Â‘íÑ”n|“#YTä奦=Ä ÞÓª—ä(â|›1±B!2Ôê†/Ї ÒL¾Õ`·e’t)Ê…JÂÌÕr¢OÑó÷ no`Ñõ¬)j=°5 /ÉÜÅÉÙAu-F˜FoÈ+ù2tÝ I ?ü¹|RW`È¿Ià¦ȳv÷Ü8vþ—WÏ&ÿË"ÿÃ=‹ü/ëÇÌÿò8»¿hÿ¿Y{_fò¿¬.öÿS<¼ÛÝü/åU­ÝwÝ©\ú¤øƒ.SÇà±z êÃ#'«6£Øš„Ù4C¼b`Ï-y‹*ã¼mpþk§87üÚÂŽÊšxû(q:ÙÔLû6Étz1±»á¾!Û)Ðt;–ו¨¨+µGë‡k”¢Ä%”Öµ×ÿ º.Ê y/˜_ÝÛÁþ9×銌ÔF2 M†l½Û«ÂGIi<é=ÌKj6=Ýà™ÜêŬõˆL©%»Ý½Š'±p¥Û_4«ySÔ†Ũ¨6™ŒØÎþaÓ fx w)¾á$ÛQÕ=†Q¦°\œÀ–7"›bޤó>] ª2ÈŒKE…Mr|{;m>XnÖð5iR Iñ’TÃeÉyâÚá=aϪBf7I€BÊÐò•ïf’?íU‡5™R0øüú–ǯÓq!Ö4"t‡Tª·Žˆß˜+ƒºßiÙ_ë|N3\Cn79Ò…AˆŽÉg2Òóål‰ îcF®J@ í÷¾s¤ºÄÑåNýqL{ÞBç´AóΔ'iõƒqÃÓÜ>¾,sV{%†ÈâWÎh}{Õåd ÔÀ=NDÁûÑiGÞÜíy„0î;· 'L—¸Ó9ã1å6–• ×›`—oMô&˜»ªë4®Bš!G°Ž.b蘅¶Óäf‚•-#¨/“eäÁí?H²ŒÜtžiRŒt$gw¤OOJ #³Å[íYòýQ[&ïŸz€Ñ%°BlžÈP«}Ÿ‹Ž@žÜ9ÍŽ£/ŒñꇫOšÍB-φVúŽ”4Ïæ Í\Ò<ó‘ff‡Ä>Ò”i)Œä&âD.¤öo–YÅ“sÊ—QÕãÉc<ÉãÉ]wÞ ƒy¥½:žw|Îk*x†E Ž·¾j÷xŽñçŽ÷¸$»‘c5öTÙ£ÁÓàu_MÂLCW¤ShΘ*Šã… í V¡6Ž =ÔJ{×É„‚uç'¹Sl»Ö쟚 Áògß7å§÷cñ§»áÉ>™c²O²“MlSiÀ.øḻ1«™V2s|2çgÉþô$D÷ÔxIº?Íßè§%vz>ÑŸÒØa8öy£Ñ8öëºå{á»ß Ä^V–PöóAØËºYø÷€ýM\þîÙ¡M|ÜÅ« ;]øwawn7ÂßÐÐ|´ó®s|˜çØxGPñ'Þ»ílÀ?‡m¼ƒÁ’@ n“þrÚ9>(€¶FÔ¾5¼o³õÞ°ÿ‡OöÖ0 má{üñÁN;ç%{GN¡{?àÿM…ˆ}ˆem4°Q;ûgyÙ!NÎ!ߺÜioÿîÆþE·7?¢I}[ 7D7¨ŽÃf÷­-œÆÍƒ}|´Í UíYóíƒÃ-¢â†Æï³ï ?/¥ë–ý\„ú\û¤[!Pµœy( ý~çðÐ#77¶k&"ö¯GMúyôî=ýììts–q»{txèíPÉÚŠ±"}‡*Æ7=Ìð­ÃBk¹@ !éyaæ¢~|}ƒòd,šhÈlšPCÂJôßé±üΔ½Fþ›É¹‰ö7ëùÿCþf=ìo™aÛZ 9'­Au Ü7âöé«ß1îÆxbõeÌ{ÇŸßÑ1ùï5–Žyi…~w£_õ§þØ{õnO¼}GÇØw¼WV:æ•–÷Ý-çÝú›4&32FÄ"ç–onF2µ„ æ,€ †Éa‰Q¿_3—ލNý7)@WByÄ9.¾K÷Ó˜ À¬ š'e>#‹á›a”3¼m[”ØNfà5LÅ:D-Ç0¨ i9W,C—%ÉðevÏFnôØaï⊒:ÿjûÌÏâ­äîñ>ÙA†Ü:<>|¡‰Å¹ Ð{ñRV“ß©0N`–•TÞsUĸù͸7n€«O-,Udˆ\›°3±¾3NŒw7 2¦û©ØË%×9Âc%ñJá´ì*Ä» Í$ý03÷ÀB'£å²%L~÷óF’äÀÛÁxÍÈ7 ¿îNAc´SM®üÜv9BS›ËowÕ—*âØ› uÄ@ÑGÉHÚlÉw=Ñ'©+ ï´ÉUVå»èv³}›ô§WtZ„©]™ ¼^âF0PÚª¿E€ßlÔ½ÂËÑô~N3I5dï\NE+¬$Rv¤ÇØhš…ºP7…‰G¯êÜš7Ĥ†–±¯6+gÒñç]eoȼPê%þ£õ|Œ’!ÓŽï–¹sz"9|€&@%ã £[d&i›6À7^U,Ù2­áÉ’/™‰œ&~‰à6j±€Ì%ŒkÖ¥Ìâõj6ü»cû¶ŒÊ <¡” “þ¦‰vjW’áÅ`F§~ºädU50d©nµ³â´`ÏOº/ÔZËŒÉÚÌÇÙHI[ÒØª3n &Ŷ^Ì&ÐÎŽCa(7RùñU†¾$1YÆD·wZ!JM†ýä¢GØX7Pdª'Tή4ãx¨N rçñåˆ=®ßeFÔ)ÃU‚Î5¡@ì£ö§œN#ªí´µï£t)ȧâ¹Úˆš^˜>2¶SMf/Àß—ÕÌ®Ê=Y("Ú›üRÉ¢ðŒ…:$ذ±Veû£êÚ(ã“ 7G+þc²5ÞN㘖óÍŠÂLH¥ ’mB±yl£f~G£k¹G“¡R®éUÙV* ú´¿WÙÓrÛ‚ÐgK1ç1òÒ5($ü­þè–y³Þá0+t»ÊèŒ"OH„¼%?îõ“Ï×2_ö9†Ð:Ò]ÓÇk÷(z;×]_xÙïÍhÐ5ñÚ—è™uZwRö^ŠÕŒ²xÈîm¾ÒÅfu ‘è¥êÂgcF4Çšîõ:“l=”0ÍŠñk {Ä$WÁf$¼'ˆ[ïÁ®’Kï vÖ ÔÑ[$•–IJS>"µ wNCæ:‡ƒ áÌê{ÌÈ釅AQ·"P}a“á¼Õ`>TpÄ"Œ†í»¡H:„‚&ʃ_M¯ñ4+ê¾ ›RH¹‘ˆx¸ˆ–K!càa@•UUX ÿZÔ Ýa¢ŠÌ[0ºTΨà¨O£’&±BR£Þ4ky¯ \E“šD!ü&ï»õKTÉ(§äªUr5TÒÛöÂà ^Õß`®KŒˆuлA›üš|NÀZ<õÝäMx,a•]…¼ݹ˃wîuI™Û|*ᥧ·£:‡W—)ƒ×þ1KÔ’Øœtq'CN¤Û‡8È<Ô…´.§OïdŽ¥S‚þ¹~ X_({{:FEá¤ãTP^3½*}Qùî†éÇ D !¤Šœr‘*†3¦$\.¦µ1µF¥GÔ@\ð)š¤ü^B_t×Ú‹H>G”‰c·‚#ݯ’ž…DðGCÐh¥¥2zƒN ç|Ô€…Tyô‡ñmnHpøêt4bôri>ëC0¨ `6¡‘ kêZ5ÁŸ’e"oM}™Öx¹y'~,‚% ´ÑGîÒ¹üa¹,êDŠƒueæ ì¶Hß³T1éY¶´T0s+Tó±4¸,]ç÷/É÷ÀÃo¢ºFùU…:~|ð1§ƒÆKe—Ó^4ó|š=ºÏËQVª~Øj‹ÙGí••O©¤ߎfƒp`#Ÿùd? ëÃøóĹªaó5(ëN~mŠvôI‡¢X²é8¾Iú(ÎS– Šò|P”d…"ŸŠtfï;±„öáÎl~Í£øfГ) prSž†S\¼ ¥¸•pçßü«.÷ÀS®‡0õÇž$lmMîì¼²«fY÷£Ÿ»!ƒ_~–¼sJO\Ó ^‡ò¾µgÝ2‡>3Yeùñ¹+œÙaþ³E”+ɸeϲtZÙfôGÉF‚Á•оQ¬H)¥<ŠlµÜÿª8gDQ‰“ÆtU”d´Å[:œ)ÃCì‡êzÇ.ºuÌ“¹Öä¿#„  Mº^ Ý3MÛ"…Ò97‚Ù`Ó¦Ú™š‚ûî¹Þ3' ù·§Ì0òTÎFpÇ 5 c¨ˆ=Û^“]WÆ›6LˆR 2O)«ƒ0•4Å„ 5mÕ4Åps5EE²³Ý%%ö tÏ’D{ù’Èx•±ÌJKºÏ¡ê«VõÕlõU]ÝÄ—6a*ÖrSsñä2|](¨Ë”¦ªxˆ¢DvA± þ%Š´osnÀò)6þ*°ú¹7òDŠ3F}<è}'µ 5A÷¤²èiCq¶¢2ɶ¾À”(àÔ©_G+䆑—¹ {cîÂÿä=©bþ'Ó7áMÏ”›mcÞ½[(öK3mÄ ð—dbÛˆÙJÛ„Ãʈ£ÊëÙËA­/Äúö¤ÆS’õ ¡+E.÷Û“uÁxoýW¾*n¼Ð¨•åF «V «A6ø:§2ÖY„œk|J/Ü7DÆñdÒ¯©¸‚3ßgÐø‘©XàÊÙì‡"ÖyCó.¢šÕÕ¥Ô<ðwxö ¯¦ˆ]ÞB ªy¶äØu¹Wk¶Ûy¼$yÌ‹sØ™(áIkÚ”™~žC›V}&PûïÂÓ¢õz«ú<”j5´ê4&Ø7s!æšLó¬ ÙË<3*†ò¯+’Í¡¶!GŠèÈÇnI§œºŽÜÊ%WNÊ”˜Â…ÌGzgwá†Bèz6Ù3D£®L¥Qš'Ú¯5ªÎIlgg<+äŒ?Ýš9øéÏe t‘P›ë36rl³MÁËÎƦ *¦†Y,Ë)>óþB:Ug]Â,Tg…-7˜H–z-ΆùÌ'R½}(+ŸšÍ‡Pr9lUÌÌ%³¥ÂFÅ}¶fÀ]Ëfé,D~Qã}®Ttg.—ÆÃÂËìasÓÌ®Õ4GÉkÝ<œö$t–óÅàÐåyüÉ0S#ì…ÊQ¾pL*K§yw1Ò¶ø7ÌFYŽÜ#–Á¶3MÊ*øÃmNw¬Ä*äfŽR•UJÝÁñØ¥ö•µKçŠIg¥žÉ[o¬ƒsy1B¼¯Ïx%NLl{ÿ1KTl¸Û€öL1ÄŠÖÃð0ŽWëÓQÃ4AŒÃ¤kÓçad‹+LùóŠn2™Ä³±¨lœ¶Lf›?ÿü&“UÅl¦Ç•å”5¹$)PÆ!&ךȄ‡jç¸wƒ u^Ç"þÖCÛ¤!ÞÉÛ–ç„X;Ìⶨ\ tSg[ó™Žñ]çxm CGð☷ЂÿG¢‚wAш~2‚‘ÐÓM´”^ñ¼w>ðgœ õ©//…ŸaÑ.Ö8¨ïo3.Z#¹^êÝð28|#6R^Ÿ.ÜP&Ìœ<3²_ôcÙê^=Ç›n·ïOø\Ø~+·Û_½[û9š=·/ä}ü¥¨}v‘ÎzÃF cˆÊ½aíoXË{CÐ i‡7HN;Bœºé‰Á ôÆj¸gaÞmFJ%̾«f­³J'h(j*>φšM¸Z®×ÐÞõu§j¸ë‘¿ëöÆÎÆdãH—qü…ûb©(£”}IõrÃa°Žf\ô5©z¤ª#…Gä#-â¶[1t–¯|5WËtßa,˜kz]ŠïAȘAŸ&føÕ<1ÍÄe³¾5ÔaÖŠ=^3;æÀüÔ¬V-‡£h]2¢Ùåì*R7ìsTß±ÑÖ™èMœê·1Æ?¹$•{ø¾“«EÌジ`Ä\ÞiNöÝhè6øþ›¾aGçþô(Bg¸‚ô¸cHœÌ¸#ks×('h–Ñ7Éb*/ìÑåeçΞW7Lan>Úoòåcã^„uyȨÌIZ.øì†µ•†p{$c™°5ͯªÓ%Ìú \I¯æ;!êR\XÒºñ3º¼4¬èhëI™ã+™–Ô—ª'¤‘Ó Ö¨f^\Ÿgša‹È5 †dïkÉì˜Ü‚íc¾Û¹}\§â+¡®FÕ±±pº“Ý4£öæúû„ Ý€|Í)&ÂY"©¢½ëÖ†+tÍ].ZÇæY9Jñ *âÅÖ‹šxÑÆŒ¼Çƒ~㻆†¹(2E¸Ë»êfÖÚ“f9 ¿â Œ§…é}%˜w¨Ï:ƒ0ÝL{¬pÀ ²B=dÑñÚç±÷/ï‰Êt]¼¸èV;úpšZ3žp¾WªA´ÍÇZÜ_å:5^¸ÐmµÐé"«….a}&ð5uzYç%IýôB§=Öðï%ÚÛg^è7åú,]á ]ïSÙŸB.×6R$ŠŸ4Q˜˜ø^Y*ÀÒ´îáÄŸ´ø‚íž¹<›kýEyF9gBøi®l‹ÖGÞxlKi0†ã“À%ÿLp5ßñTE T¤á޽ ÇÞ$¾,½mŒhEJÌ-óé"s’k­‰·>×ÊÖ„/ëÐFæ;UÇ??ûgêþ~ûLôû‚Cñ±·=ÖËÑ4°Ò½këÚ*‚æã4¹‚±÷k7<!õà¬Có±·Vßc{>jо=†}›ŸûÏÐJ‰ŸOÞÒÛÝ|Wôï¹n–qPY»÷¦ 5"ûVº|ÊÜXƒÈòs9” àùù¿á÷×+nþïµèõ"ÿ÷“<ÿÓÿö?ÿÛÿøoÿvØ»:â“¢züìßþø/‚ÿþøÿþÿÊ5¹ÑíÉ_±Æÿ ÿýïN‘ÿ!ýü½]70=\ÜøcÖ÷†˜{áßþx ³ØüåÕJó§è§Ÿ_ýÒé]öÆÉ/0àÅc>rÿ?âî/Úÿ͕ׯ^¹û?Š¢ÅþЇw{çxóèÃ1H¶bÍŠ8þxðÒ¼ïocì3ŠVü·ƒYz>`Òš ÊʲóëñζÒêuq°ñqckßÈ~®RW(éÔh(V«fUp¢û´fN“Ñåô–\|ÁÔÈx“$éó™W5PÎvãás‰Æ5ì»nH¿Õ$—£ñ0é‰Íxü%ÄßkÆ·£ÁhÜëÄvŒ×G8$oã½8˜ö ÝØÆÍ8ˆhŽ$wz°!•E !Ó)ù’ÜoínmlY›hJk´²'«® ¯ˆ²&ø24qv%\/Ý—´S”/Ç×'_K›ùº%ÂÀªàO£MüõãlŒi5ð×·üðçLQãYÉ9凯¥þ~}#º*;ýe®é 1›¨KLï&ƒ9Å»Î&ð•áå:òÅzÆ«ÕËq±“*wœžï¥¦©Û¦)Ûo¯bÊŸŒï™ÝÜ`ØâX F·ø‘-Ð`ø’J:(=Ì7¥ÜœiÁ·xF_‡îÑü1 oñÄeœ—óÀd¦ï¼Ü­]7··êfeÿLs@ïo—jËãœA·Ó[gnûGOôR ÆnDèìÜhȨxð¢A=3ú¹±iö³ lÍHûW!ÚµóRÔõ÷Zx©:ªÄ¦V³5æš\fE£Ò´ ç•4—ðÙ±k|_Îlå÷zš«Jd£ÚsJè¶`R̆zyáp²n~l/nç/}8]&õßk¿c`ýF%Á_. Ëþ[¥Yû½þ¥_ýÇÛäoÿ%ÐÐ7¤[!’5úª_'Ãʰöû24×°Ï“¸ß’)A ¶Úï(G]͉á‘;_ãÒh ³™­«Ñ ž|ù.‹&ÿâ˜i¶;^Zê.QUüë`é=å*0*¸Ž*¾ºwÓ â ¿8»rHQ%öŒ7¥¹x ÙÔ?ß±ÈÖ;Îî.Aâ6uw%5ïÄ%Q'‘Ó¼ÙÒΧÞx¯®v*IU%² Ìbù™Ú©˜×§ä 6Î'@ÖÓ8ůW Ê5¡m*f}V›¿4C‡áS¿CtYT^ÿt™so{d—v ý†…v¼í5âìqÕÃ|ñPŒ&µo¥óLä•Näêü'ÿ’ƒn erº4-¤%êÞ:B¯»{´ÓÙe•jz5Ž'WˆËÊÓ;“‰¯ú0?ý÷ž”³JÍ ØyL#ÀvÎU>R2óXt ëHââ++LUÿ¯'¶¯Ê%zšiïl½ßáõ‡hâèF«Ÿ“ÂŽR¹¯vG{ŠžÔ• “FI (¡­(ôœÈõŸ²_¸OðïpïjAxfþÇTKæü$/O±,äÍú©ó|n/¯¨òÈaMøÀÒÝÔû™?ý)5÷ÂÜÚ«ñLÖx=¯ÊË:éIeyÐñ…_X””’ª×æÎM©‡ïf¦Té(½+ÈÚøë ó Œãél:Ç–q>“‘3ö4ÜF5ã@PÄùÛ w›òŸNjSÛÐÙ|lG‚mÿ¿y6öÿµµ…ýïIž…ýÿoý˜öÿÇÙý…ûÿÍë×kûÿÚÂÿ÷$ïv×þÿѰÿo||«ô¼mþ5̯1™%# ØÇ5ß?Ñþc宿úas}ØR¯¬ØÊÂRÿ(–úf[óXÀÛK•ör³ú2z#x˜z£Fû7V—R1!AOe`jÃð±v[f×ð- ¥Ëš¶?V±,*¿×›Õ¥ßa¸¶QºY¦m¶P‰†õß«™fض= Y´±ßÆRî­õ€™mÎf;%ÌÏ ñÂ@¼0/ ÄÏ×@Œ7 ÿBFâ…ewaÙ͵^îmeàÒÀºÛ tAµßÛZnÕ›®Óø"ÏŒ›é9ü³Ì¯zD ¯ŽÀèë»R¥§"cå5¾È³ñúç¨-êЉ$ýDfàf¶í¿ßŸý÷Õ«…ýçIž…ý÷oý˜ößÇÙýÅñß+«ûïÊbÿ?ÅûݵÿþfÚ)Ðxa~p0ÍêÓ‚+ü²;ƒ[ƒåóÌŒÁV[s†CçFCg'„ 8¦¡ušF·š qËåx¦~ÓvL{Ép’®•eûô®–ž«r˜L°ÓÁw^å‚&6TÚ»q|1cHßÑÈlF…îʉÉQ™îŒ¨Ì¤øFޝ6aë´Y9ÏÚÔS††‹BŸ9ò CÎÛµfuaÛ^ض¶í…mûÙÛ¶ví…]ûïb×~D#v…6“kUŸæ™¯Ÿ}²× ]<ÞnüÛŸ·dñ<ÌcÙÿ§ãgcÿ_{³°ÿ=ɳ°ÿÿ­ÃþÿH»¿hÿ¿Zm¾z“µÿ/öÿ“<¼Ûû÷tÉîÑFÎ2G;äè¢þÙ¬‰S4KoÀ±âüñáh?®nö/ðaܧ,>Œï@ÈKB ”sL…y—+–ãcËxzOæ 4ïVøô†üüÓ¼>‡î¬õàk<‘ƒpZá0Iê†%tò}ÇUFáè¦Ò­.Ý€LFÀ¥‹šSN±4‰P¢Ñ=:Þ‘’Ø$˜_{ ½p’y#¾O,‹d³ºT¹YNþ¨ê7W.–“>Œßzã» 8¡ÈW&CȶéÕun¦Ò½û}öS™ê™\wf jÁl9YÚÄ…¡_jÙâ´y£›Ååo°„ÊüJ›¦ì8¨°=ª§Ö\o”ü¤õ`µ$É‚U9DiïaÚùÌ(Ÿ"MIÃö%v–K9»A'b7õ‰õÔ\Õu.®fcqÑކ”6ï5X›àÎ\Ílä<–¼Mû«ºE³–믒ýï6¨%é¯jÂØeû›óÏ]hÞ6m_¢´ÔOЀsetǬ¿‰7C€ \Œ“sà½óÑ×88­’Ê6ƒþÃÓ‚áø{~ª¤ˆ^Ùyg7‹:vì)+ÂpõŒ¼Ÿ\K‰8Ã+([ýd w/z´ZÆOö22Ü÷§ñí÷©PŸhx{ý { Ë8¾Í`“šê w‡Ýq´V cQçoGã/ЊãÒäGJ*çæŒ u‰ £ì‰§@ûZY™tqj÷ål@²Â­¹.‡pmP ïT¹™µ¿ÔàªçA‡a±J¼u[mÜ#”W˜ £ ¦”L¿g»ùºa7¢{v8(¯í¨L_Úº;ë2«2æiZŸL 'Ø6æýž¢ Wrº?â,ÔÙ^\\ż­ûºãñ=“´Ê?ÊWÇé >´•­Úë©ÃBä™cW鸛ÇOç9&Áü怢wŽŽø¦JS&Bkï|o„'ÿ£ðà6[ïÛLJ5±ó±Sð9ó™ø³U#zäOsŽÆÃj£èîA7º‡açÃ/Ÿ(ôëSûÃ|}œ:¢å/Âvj¦û‰úuNŸ¤oî¶Ñ÷•óÖl{3V²3Ž~¶ß+bðx*¹ÑZn圞w´JlôÝóšíO£·['5¹aág'Õïµ±Ù¡ôdwqµnHðMÑWŸj€7évK·¶vÔ0™£ü„ß¶Q€1çõäîüŠžÜ”lQØ?H·É´'uãÑ€¤Õå`t›ú>vL7íÇÔË”oùpÙq UdÞ`†Ÿkè¦ikp} ¨ø‚ŒT†*ÿÁañìªa M5CJr»ÁV@ ©Ö27ÉøÕ¦¦¡´Úªµ¡aKÜtšBa ´~ŒËhÖ‡¨È›{æ-h;ú+\¨¿º¾9§KÃR¶“qêÙdS ßBŽ«w.:XÑ£YK.ÎŽJÚðG½Iæ&¹*)©!–oZ)üÓíİ?¹•y©~o‹Þ›þ¾ÌK²ÉÑkÙýëøB7gƒŠ¦þlb¾ÞBŠàbŠñïc.&bK’ŸôÀ‘x0Næ-ws²›DA:'Ñ®5-Ÿ(Š ÛÄíNª&¿~IåÓ¯9wâÞ¤6X+A±ì7⟠0WÇ $LÅ<ÐAÚ]Ó¾æÞòB)j̶^÷U&6ÞJuû˜|óN7`¬Š~Þ]lÇ­º‡Ë–‰1 ÕÙOe÷ö0ßd°Íp®.,[õ¼f×hï4H VÐô½1Û©L>máMT"2Ëj¢‰œœÒX{V‘ŸÃ˜¹ÔÀísµ·x‡NOÀ~z_GI?e>·xB¿ çDÏ· ! ŸÃ—Ý "gû ϧ=cOí5Me> .©b¸È•‚E?¢Ù(-Zѽ=Ÿ âçy+Éía±À÷Ôµð÷R,ûè ´œ²‡ŸöpE™ÔüZ¥Þ¡&ä Q¦æQ¾Msª%T^j––ÖŸ|á>üXLLªÎ.sÅéçÔ–”¬„Ëù·RÞŠßêß^"”¤ÞðNú†ZØ0ÆS3ºÂ«×'³TÏÓŒLº³U•4‰ß›¤$¸QMü¤ëZDeV“Ò²ª€lZ­H©S§…¨â‘ÍãÑÃüë,Ùf>÷×}Æs–Gͨ.—[ëHô»«18©]p3y¥sÔ Ïà2«ï ‹ã‡d€4”[hïÅ%´Û±Xé¬Q\|ïKì©zžÛQzîHéZ³ƒªýä»Í9ÊÌè/™¥¢œÌÄtø«¤¶æˆïkœÊ)™»²ý³MÍ™©Oð“¢V”AGÐF”Yø%ª+! …Mäü6l£ˆ#8Uw3‡díÊ5îÆwOÔÊJEª¯|Ï=©4kͪ¨ mì5«Uôï¿„cõI%âÏáã¨ZõÔϲçï9õ{¨ô°·®m¼~&ñ@û¶±2 õ‰¤]ÿî~xN½I¹¸rÛÓŒOÓ럊Ûû(â/v—.¸WžP4š‰Œf¢g'aŒÏW3ñÊfì{V©CåR™så<"|ž;(>S®=Йr9t¦„>ä,Ô™r™ ,åΔQèÙN=Ý™rÞãd <=Ÿòv±§g÷j·#ô"ã1ƈõgèu~Ê7MÛÍ\Œ×²ß¸-†tç½ÍKŤ¼ž9KÕÉÔ¯”ŸI.,öS`)Xóù˜Ï`·9­l:ôQlðVþìõ¨ s2ÇLuX=fc¢|ýõÁ©©ÃF†ÛT:¬Í[Ãí_–ëzNÎE|·àœZúìíO4Ï{|#²Ïï2vhq|ÿkß=¥ Ž›Ïw8zÂËuG‹¯Sj6sítN0¦Cuý¼©»˜õ´h9GZ6tcÆËzÔÞì©hû`Å}°ËÆ|” Q—ë«]6>(0~ýUœ·O-•³Ë.½·ú‚U‘óýYHñ<n@J>¦:0ß =}:ýCIðMžÝ¥<1%Jj,¢^80ãu{Ñýtœ×wÑqlíÆÑ^ ×EÚÈà·×¢âèýûæNžm[ê–2„eB~z€€Ÿ!Ö§ÏÈöÄ!Ɖ}¯É;*$ÏŸuTÀó4Ü<\X€·­–¦¿çµUÀ)‹äeY­Â7@KÆå±3C²$¤¿nøPŽâÏà|Và‹+–€=¹–ò…azaUÆç±¬Êõûš•å¶ ™•ƒþÏewßæ8@ŸyÊ=#P–]+{þù]{ŒÍz?2tåÎ'ø= UâUÿKjîð•Ðx¢§ÓR¼fÜÜ¡Ýÿ…zÅÒßK©<æ"¤¿×íó}ñ¼¦¿—P•ÌùI_6ß²^„‘ÇðýW²{#ú{™½=åŠåz¡4+”g…!QôùO¹–',ª,¤|÷Ȭ³€”n‰ÿ>n~}.øï«¯š üç'yøïë'ŬÝ_´ÿ£7¯šü÷æ«h±ÿŸâáÝnã¿5O(F|¯~ãpÓ‡‚ЏãøþÉj#['yÿ~ãc÷ÃÚn´»mPïÚ;ï·Ú ÔžuáC(ôþpÃÓÀ(ªã¡LûJàµÓ‚ýºõ±úïr&ï>÷@“ç’ß§PjíÛéÚ)»•ïO­¸¢¹Âzeðj†õXµÌ@&ó Òû ‰Žv>Øím O ~êÔoÁ®jpûPëgsBÞæ“J®¹B— ûU1®OMœ8DúVøã„f:»>Oq–Ç£Û ,!æÍ>_ÁJªšPB[ùR a8’‰„9¯‹Iòùº'Z qŠa¦ü‚VïM}C'Ÿ˜1Q¡Î™*{ÞW9~q Eïâb†Fe úª!Ž'3™¯‰1TãÉÍhØ'Èq™R3öãoŸPÓÚØ°Êfã¼î}&ÓYŸÑŽÄùr4Œn)Qâ4¾™`Ð;L®O•;Êù* ³»Ò«#|€ ä>ƒ’£ý²æ›8¬T–«@;ðþ†ñÔÐyU|>À&ÉרiÉÛÐq¥Ž Á?ø›nè¢*Ñ{S…ÚÅUžø‰¶yöeÀÑ`èçÉP¥i&è´‡NC{q5M ¯1"KûÖD÷ÆéLq“RòÇF#¸f•¾w°eˆ_§œV/™Þ&¤A†Iþ%[šNG×V ßc¹õL–ÀÒW0îyˆäÁ4Ðjqøx³D[ï9×POÏ¿€Ü6KàÌ‹ƒÞv±†;JWlâhàm²¯Ûwék¶§Ã0ëqú&¶5âþÍLRúÒƒJR]ÚNó,¨×<ü[ÜW±3õÊ|¤â&ù:"¾‡óÕ™ÎÆ×bÿ1C\{Ù6+O¥Û b`5Ȇ{´“‹Þ”S=-Q‰Xô˜û5Üaüy|f°_£±ÛƸ[ º–ŒS69Ÿ©mÁ™w&Iĵìê™MQó€å;„•&IA<1ÕU «3•¢FâÌS† »¢Ê£rf£ìçÈ «)?:M¸Lo<™]\ñ¤žUŽª˜ºµ7˜è$¬'‹ÜÄ!žÄÛ¬<¢<Œå<Öš’lV~ŸÁiäû¡Ÿìcà´²ú[š‰BkHtñüåÚ‰™¤¨¶¬-,·cm@·ûc„ë¨TtI e²1ð\£}Gg?ˆ4ò™l’O s5‰é}›_¤ŠˆÒ4*¦ªQÕœÊjÁÉP‘*R>…˜û¨ÎIpÒI¤˜TÙyüzŠLùmµ äÝYfÈͳ"þñúÿ´H%GH ·Rã<\®’qõ¿ý_õæÿmhÜ.¥š¾º™vE¾v6¼¸ê ?­Û½W;øÈÞÁæd© è)hõc>DÉìG=un‚V2µ²·|#FL©9$õÛT`Nx‘ùð(²›Ò—$+N&³››Qª%ª“Ë "I#æ”6êã3˜)«…áhø¯x<£áà»%Ýå‘´u¬S‡ÜH(9ÅîÒ[H+š/;¿u+´«¥y…ÎêbÎÝÈÒBüÝG¡çÕ(Ê-Ë`,¹é«ž1`®õ¾`9¯Ä¯³Ñ4Á­M'Ì %ÒX%tzïy+{²„ˆ/Vn•y“«¬-©ô*ïfcÛ1ÐøÀ> ˜çÍûhh‰àIšsdsƒ÷ècêA<² M\Óï¶ ªf¡:²½ä:q}æ­Ù‚Í8þÑí«NÖC·~7þÖƒ³ãÈìdhVü0&â°7U¾?Øl¼lïu¶Ì2[WcØðÐÊÉ(ž¯ož©|¶yM¬´&èc÷˜¶Ê§5élœ¶7ý~QAÝ'ííƒôó#ýÛ¡٬פ1 (/Þã(' Ê6lšchtûãþ l(Šˆó 2/Ɉév«ÓÖ,|/¤„Ê£ìÉîAõUÞO'îÏÃ;”`*Ù5'÷**È0Æ¿«·½«ˆ#™nà ™8‹›FŒçúoªÈg>rʪ¿¥§^v½Ì-ݨŠàšé#¡Ê’)xL‹œ–ò1°HªeZ0®! ÁÁ‡«òCcÀ›*HرÌ÷€9Y*ìÁ¦å–7›uÄ s-ÿåŽZq©E8¶m´mMV~I‰Ç¦‰ÌP§$ü >šÓQ”®·Ü–"ÍïÉŸã.£i•ÅÄ[ÏêR0i²Ç{Ç-¢Ü›ö• Új¦ÄÙ1:žÉÅ\æ<²ÜK®˜–…Å O0$g»ªúJ?¬%F¹ÑÎ’û&81 +òÕiË&]«v®¥3È{¸M˜\Ô÷UñþCïL³Õ¤Ù:ÂÙŠg¶~ še§Hìµg¾ì9á»8êÍG3J¼8ŒnAýP¾0©•±åw0Ý`oO´{mN":E)î§ýwh·,ù …L¢à‚eᱡrH¥ªH l©êzuþÀª4ÏrйèÿŽë/Ì =i¹"t˜Ðäh¬äÒ˜º‹—½Ð‡ Þ4ÏcþœSÞôN¹sÙG^'ÂÝäQÓG‘OEÆ–ÖÃø¸¼Ù®ëÛͶW(ý$·t©…”F rŒuAcÖ€jŒXÓÈ×`ÒÅ75 ^CþÈÚœoÎ( œ@-QËFí.YØfOäHíÎaqcÐ?yX.÷Ú¨vdêéœ+î嫦ò£Š<¿Žl~M ¾ÔªÕ=k6粉tçS-{뫆|{¿`Áç\óòË~‡•·û„=ÏažÆå Óq D–šžð.‘ŽFÞÌ•ËñèEçtü¹šoÞ”M„RïJææÒæb±1&e{í-ò¦Û*TQ-‰LbÁl¯vÕ|mR–Upm½z¾a{NçK‡wã ¹C^þ®‰(™ÊvŽH¦,®Ù\ JEg÷3çï•|ÚáÆœ®eêóuEä"ƒ†e/óEÙë!»[‡Ù²·Š–Ç›ßY¥­xëœâE´ÿ[W|…ãÿ>Ö$¥L‘¼ôÉÕ°PšçWøäˆ>I­(høS órú f7·½q"x{¤ïWý”JÜØho7̢̌a&BµÞÈ7³ÌñL¥#¬g•Š%ü’à#² ñȳJ«ÊÁøðÛr³Z­.ÑŠŸ…/pIןG+ñÝ ÐñIØ ÐòAй)Šl”sW™+ÿ.ËW.I-§‹–Fs²(òó6ºi¨Zñ¦d›c(ÄFè£{ÀZ’U¹$¬ex'XÍ}º½ò§ ÖÄ­×K­wÊEtïfج(ÛTYRð\IyÆÔÑZ†<ÜäÑÇj†>ÖB²/5Jù7zt;4·:úBè^*çÈNþ‹ÍƒýNëìž@šZŽj¤"ev¿„Š1]jrÔ¿ûC«+»’·¾Ìg3ˆåÚ¾ž{mñ•š¸ÿ&ËYß×¾ÿß ’9—ª½_jç§kGû½îÛûu÷žWhïÏKO½÷ïM?Ý›:Þd¨ã§2š¯ÚÿÌðòÇÃ'Ðì|1BµõsL±.ä~¶Ža|»#…ùSíËdG"Ÿ½ø+¯Ãq‰+¨"~/ n p¿í¨yòç¾ßfÝÿŠžÑý¯Åý§y÷¿þÖqÿë‘váþ_{ý&ÊÞÿZYìÿ§xx·;÷¿"¾ÿõ©&~£[\­öü¾E®}ø}kÎXÑó¾…ºÃèkL±“j¹«T¾€ ˜5YmOÐ@ðþ’'ÎaKÞDêÈŸŸäÏßäϹ¯E'ø> €`uÄ‚ùǽ¸ô`ÅÆ#vŒË×ùhzEè<;ØÓËX1ªŸ¯G\òýú:žŽ“ *½ÀˆŸ~|©n]Ðņ Yqqñ­&ø–Å¿âÊa¨L-ª5ÚP/FE|«$U!þ…ÿVÅú[øD\ÐGþÈ)Qáoëü­n…¾ß¹ }Â%¸tÕ-Qæ·å¯väÜœèÚ¡ºÎÜs”0/• þd5ZumE·Ù¥Ö\¦Xø%$תÛ=IßäûûAïÿî„?õûÿ¥âA¡L‰EM†c‰cOoãxhÝ—@nJd~ÖàÿI¡í؈ 7šãƒÑý­L÷/ðW¬oi8$&_Úyà—–x%ÉŽûÎãMb§Á­¥“øàဘ¼@¤r~…óåãç-„†«‰.-Eðß*ü·ÿ½‚ÿ^‡ï~ƒÿÎZw‰6k!†Œ¶¹oì)64î'ü„Jë“i¶ø ?ýÍýô ?=s?ÝÂOALµ¶¬˜ü´ã~ÚE'Q§µtfغèÚÛr>[Eçú] ð'ó‹5þb¿øÍüâ·ò mš]Ó[óš¿€!Õ­/ä ù[¨NMv׌I° ¼æÎtWù° ¬É¯Ò´ðÏ2mtãs\ø‡>§;×°6ß‹a]ˆN\ÿñp¦ëüù8€;œÿ£…þÿDÏâüÿ·~Œóÿ#íþ¢ýß\y½Út÷ÿÊêëÅþŠGJmûü‘J­íš8$:Ô¿Ýc2loi()Ù?´¶Z]ÑÖü<‹~ʳlínmlY7Ipr-'r9SõΣ~ÂÊÝß Aï!ëÉ´B¤((å ï ;Y¤rOô_øèµKó¹À5.øÐ¸ÿÝ EœÐõ*Š‹Š/§BÞ¯$tá4d4ŽoÆñš²‘7_1„ÒÄ6Þ%x]L{3ÊWüoi©Ë%$à|“èþNxýT¾Û7/©Ò[¼‚Iu©3ÓÞ—x(Oøú†?«j’öWž4µ,5ÍÔ[ñâàÅ:Ƕ$¶œoô·[ðí®¼{+¿/m· ˆ™b«qGßÕ5wâ4WxP *oV9Älï|RÁ½S­¢/š&–¦ÍWˆŠk¶Ã5^¸ƒ“„¯Šè4j˜“ÝŒ ˆb8šòe×äÒjdãÉ'=9Ÿ”˜Òü“ó×·óôÐŒoÉ›Ṵ̂"ƒ÷Cx\>£ÆèÿÙ›¡X©%5†0BKT!çµ-ñÖüËÃ<¾hlŠ¢: GÃ:aŒ9™Ã‰¡uºÛ:€e£·s'9ÔîĉËòœfº¤æ º¹ý¡`ä¢Ãú!‘``[•æ:~÷µ¶^mdzGÆ9¢ëŠÜÑmuÚ©:S[øN9q[•õš|eÞ *‡š‹d_h’‡µpíÑT¢á.ñ°ãoì3Æ&´)F7ñXú–†³Áà褘 NMo Û¹è1pÛ0ŽñtíTÞ þÆŽËL½¡D¿3ÕM{Å :ñæ »•«rQk’_/]%ù9"ã¡Vž~î"™3ª<²ÍŠxÑÅKTxüxa³f‰¦¯Î¯êTË ™vi¤pÍ“­(Û=ît£ÑÀKf/¡ÓæàøTáë÷QÅéiŽÚúà-û¢:/‚äá$xyg©ù²*š çX’öˆ¯¶«²¥Ç\•ìbè9(·*F÷ÌU±Fc÷»pUÒžòªèÅÐ]+Zóp(¡…®ÿT‘„¶ýÿü¹Äÿ­5ñOó,ìÿëÇ´ÿ?Îî/Úÿ¯0Ü/ãÿ[YøÿžäáÝîÚÿ7Õ¡¬{´ÑFxŸœÉ»5Ñé~8Ú9Q~}Û>J=Ýg32½øëÂ{Pú¹‡÷@¯-¦Z=ZÔ°I`_.­®®\.écx@7B·Â/Q>zY.ìºô8¨ÍéyØt]tŸÌò:`ü! Ak«bè‹ÀV²îˆr¾ˆ‡6îã0¾so©Ô|ݼÚcî–?ÂîIS0RE©´+¦j_u vÓ‚øÖJ×(H‹BäYøÊ–Ƹ½‚c5yRК8ŽžÊ‰[2u&™-èž8=|=DÿÏ.Â*îV¢ªhÐÿv+_ª¢Ç'¼èkSWú’–ªÜHeø¬E K›nÎ1šá±·WÉÅ• §5CiƒC$Àß ü÷מoAÏ·È‚H®B9Ýò7ÏÜ'´_®9~:С —[8£·WÈ ™ñZ°‰Åá ÕöYO¹ã>[癦hAKVÚºÿ£ä—…ñóxètèÊ.Ø+`ðL#æ Øúðñ7 8<„Ý£ÃÃù ¸Ì¯³„”›élßÃ$|NsÅhýÑdwí”Æ•í¿·{ä#¦^ } Eá/ŽùÅ1ÐÛ ¿¥Pv|_ú–¥‘Úo{Öåß’d: ½0'Qv0Âð€:A ÎPBÆÎtç³,Ét Ó妹P'ö'a3=ÕÏŸ²Ç‹%ÑÅ© =J•]Þã›Z^f‰47Ãú¬ôÒ*÷‚ÓùL7·hOˆ:ì¯%qêÝå×8¶†×'†Ú¸ôÛ-G¸îé¨C%ëLèî‚[óÂSjÁ%Ÿ;À‰ŸçìëîƒnêìÊ7™Âbù× Xâj.KDL2}…–u°l!žAà“ŒÁ—þ^WpaÄ/±f´bW3°±Vý\Ô,Žš„GŒ‹QŽg¦-J¿Ò†uÅèœâ°=8dñiŹ…Å¡% •œOz×zíâO˺€ð[û{ ?RIæg|%ýpI—”ô3DßLÐ’~/üˆøNøQsÑc ¿­tõ …Ÿ-ê²¢°@øYÔóW~^nøºHò½*)ùX¼IDþ=+ù^…%ßk 5 ;d‘ vÙÓmîY–~£°mßÉWn£ôp;Ãݺ8Ü>ƒÃ­ŸépÖ™¹¥»ä0Ëæ!7Ä(¼âÿÍœâß#3óÅÃ}Ä:¾BYøð*.ô’OÝâŽÇ™øþgzæUÜÿOuæM% lÛ'=óªÃ­ïH›¯ÞY–ûùKÁ&½«,¿ûÍ.¹¡œ…XäÏE"ÿ§’"ßà›úÐë|&UÔh~ +?/޾wôõH™ è.gß6.hÎùWå·q×n!·šã¾x¤3òÓ‹À»|-ø'9øg©ðyO<ÆÁ×Â-±¸o èg‚Q‘ük6ËŸyµ¼3ξægŽl6ƒ°•<»ëKƒ®tT~ã£Gð§è“æºPþc³[è%þk¤·è×ÃG=H“cŸ¥ñ§yœ†ŸÕðçûFîè.nb\»7;zTwñRI‹i÷nRã^ÞbÓú,OÎOî-æÍô ã¼&ÅÁœc{Íç9]?„Ãø)è0n¾*T"ÖÐeÜ\ « ¯þTçf–íÇ;7›‚щRÞÓwÜÌw—ÜÉyÜôz>þú¢ð)|‡÷r?¡0üó8ÔsüÈf‘»{ŽçXúñ?s)èç…?ŠÀ7è;n¾ ‹ÀŸJˆÀ;x3n´.¤£8÷ˆý]¡ÿŒGܠϸ™ïy§q3àïxƒÜ½ÃK*jÓ’Mî8ËXïN^¸í—?ôá×ô?íá÷GxŽŸ2´óîÛôNžã(ÿêÅI?šï8Z *Qàò‰Y|qžû ìw"Gùþ“àØðŠàYxYy]# Y©ýËOwŒ^ø—­w?ÜÙØu.?ÝÙøG8—ÿ¬B²èPåß.Á«æ\ŽVÃ2pCÅ,î9"{@ltt>ÛÍÔ%ýt8¶‹çnÿûùùàÿ¾Yà>ɳÀÿý[?&þïãìþÂýÿúÍJ6ÿçÊbÿ?ÉûÝÅÿ}OáÍw7j˜¸šsÚc²(©-àyõSž×Ÿ¾ïSnÚ>¹÷ÏÞ÷iî,}ïÅçxˆ™C õÁL3Îæ°&&³‹+l³’˜ú3z.*¢7¸¹ê‘2[Áe=TƵ+ƒÒð5l•!¡¾ Æ ÃßW„"@6Àpƒ¸®ÔŸ2êR>ýFÄ6•a½Y­ËþÓ`° ™±ïމ+„;Æ?1a üL=__펗Ê(hõÚè07Ôº4Ñ` (õÍ@o0˜„Ff”y©u7 !/•/áèC(X„ãúÇ[j~D% ŒKB½Zج>ÒR¯Â= › ÂFšÍÛ蜳ŽHÅ cw ! ù/­‹Ä%{óÉ\y˧\¥¹\i×#[ðS5êRæü6ÿHdBÂ4¡à§‹”ŸPðSƒÛñä,³LVBAÙÀ„|{²DsI°Wûín¸{›;]Gw‡ ˜ñG ~~j8òc£…á<¿?ÜÚ­áÏ¿Eð³}t©#¼ŸÍ[<Û‹PmÄáëÌÁQ«Ýim¥ínlv©þ½b~~¹ÎÖÆ·¡‚üth³#$¸f×RrD"´Döö‘Ðò@ š hµÞÔÊ”á,ÀRÉ4qZÆN¸Köü–iœÉtÆ h`ñ= ì^fE$%¨YÇ™®ÈE¬h]º\•ºŸiÛcšÃÑÐòWÄ‹úN^¦ï¼0Ë9 ûä8a‰+Üjã Ûmzí¢Ô“¾=ç™Qïâb†*É/$2càÆ(ÕÆ1!Û<úµcÖâ=]ÁÍûRKh§‘÷²wÿ]vRÕ±¥ÉK.©Ú•éÒšÅåtã%.i}Íóü–ú äL›kÃ|ÿAtñ–Ÿ3“íø–+£fb~4™¢ùÓÆÅÔ"§Äž¶|Úõ p^zro³0=ó0ë²4¬þ™ÊÌ=/ª|]§ÈÞdz&@_âfa&³ó!(w½‰L$¯¼ãAoš|eèìâ»9) ¥¬»šYgWY‘˜òZeéK-º1¸òæÕ÷j^uì7a¸ƒýïÕ›Åùÿiž…ýïoýXö¿GÙýEû¿Ù|½¹ûõÍ"ÿד<¼Û3ö¿ `éç¯jüøg·Ò'”#aXÆŸIµKí‚Ø†×4¨í‚ àÇ0¸°ü-,)Ë_÷ôC­œùJ 4³ùïG7á¼}|ˆÆÀ“)&:‡ôÑÂ.îä½í‚+ÏÎ.øË/±‰•_Dë?A'Ÿ‡âÖ AÉ’LôŸhŠsÀ?è›Æû»qc®NQJÀàñ ξn°´¢ÜÄIoPG c?•úQòf¢ä&eß¼àldjµ@ÌžÆt4Ìd4Œã¾Õ4z1ˆ{˜”³ñïÆçÞ9g ¨QhwtG¬_ŽŸïœh ¿L¬Ü™Ôw˜Éøâ f”’s1Œå\ Ø¼Å5 d?ùºLÃútûƒ²!Áº[ßÒÒò}‰éÁ6¢JbÚ¶ÛTö$¶›llsÚ‡ç5ëy`ó0·ù¨æa梩y˜^ù æaŧ‹ÍÃ\2Ç<ì)3meæ)¹§yøžÖa-äÔ\d©üsÙ±ãüà'81&Ÿót±n×jKk´k‹¶SúáQþO¿¼¤«žvýÍŠÂíl±qÁË-VQ8åm™3aÜïê°Aùéhoô©Sñ°?³ØM˜¯'ú1›É“AΗjeè¦ë„©m:Ç´u@QthºÅã=×k8 3dÂëâr0›\Ñ{]ž+%@ÎÜuS¶Æß¦8è‰Ñ gŒ•ÍÙg<±ÆSË ðÈù×Y2§¤Á‡½éÕ)&\Dî¿7ƒóÿÏ5¼côsþ?[é^õ†P ÀÑïºnýòƒÔ¦IÕ­Â~|ÌGV"$ID0åä‰ðŠa8vÔ€2b({£Z8ë¡hÏ8îuè€cÇ6@Ù7¬²× àà«Ùã:x¤x,ÏÇ'  ·ý?Ógÿ½º¶°ÿ>ɳðÿü­Óÿó8»¿hÿG+¯Þdã¿£W‹ýÿïv×ÿÓM1AŒ¨ wM uMR«í­Ã­­VW´1êÂKd?e½Dž$±öR„í†ûòÚ*­ÏZ6ÃH€[Âó,w…C¬^l~NgR—|&¬‰ë/{dKêâ2H߆““^ìb¦ƒ‰s{upzï¾è!¡]ôg”"û‹×§0I½#föë9ov+@€»•¨*ô¿ÝÊ—*ÑA—}¸Ú_<-mê–¾¤DUnY·äCâ–ÌÒ–ÍLe> zL°•à<½Þ¥“úôJ¢Ù¹ÞOjœÕ\.£ 1”é"§Gпñè¶lçØUØ•®—òRr}´¯Co®¥¦yLé !ó2‘ýgJƒîñÐBC¢Ôíf+׳Á4¹$l Ez§ºA¯›Uˆ×Ã$Xy7ûëWJ›º’‡Ú*›À+e-¬'—®ü$\Áj¤+<±–Ø™³{fÔ2W€-‹Þ`2ïfc¼TlvÚK“ª;˜9 ï8_Á—@%üÍ]}ÞÒ€fÐ4.÷áþÚôq³Ê[¶VÁ š xI©Ú€wÿ½IÜ‘«#âk” "óÞ¯b>l“㔫×vê½pg†=Åâ¬ú¥\ð>/¸Bž”˜äAÜë£JÍa–4Ã@ñ%0Ÿ×½o•&ôû·ãºÄ¾ë¾”½*œjQÙ·v%ŠHàoìÁKþ&]ø’62Noï"V©:¦V 4àbukNïà¥_Pgú¿žýáN±-7ý¢'Ú–Š]k¡žŒ ¤ÎãÉÔ^a ܘŠÙ$îkÊé>åtÔ±öcò8£åRàr^õnbÕ "wð´Ø0k¨¥Êï} TEV(ixŽO t]bË1&˜)Gü­w §cvèaZ_±l°˜oA{¦~iç| ‡è  &qaœBæÄ¿Hsï¦úf4Ä)¢š]ë\ú( +³)- 1ò‡d–+m$»b&ÅÐ$™»t]¯ZN1àûÀ” J¯fø•.ðÕø¿±‚_qSÙv¸>ÐB$ÿŸÓ|KÑ?áv¸©Uü~;% ØÓ¼Ynš3Åò¦9}[¦+i¦±…½Lž`¹vDa;«éÿExÙñiæM³|šjšT„ʾ›†ø25ìÐ‰Ä £áîž´Z©ñ~ç^†˜@'sƲ|xßÚ²cØ·ðËøkß[‚a!\æ×YB"s:QöÁx’@q'ndçWŒáÐ#«Íÿi¡¼\,ºŸz`q­åû–ã¬A0t-c-_-vƒŽú-Q͉:á‡XæZšîOŠØò8¦ºð½¢l/ŠŸYÉÙ+Âq ü1Â+NhØ­,V•þ‚#ܯ}ét¶Œuù/™u¾$7À[¿#\U2@ñM0 ÏÀ$饄>`.¯OöãDcèâê´µoqçS«ë©å÷éÁƒ«rØjëÖLbðA“u+Íõ¤Þ¬Áj¯¿å W\y8W’õßkôeUB¶Ò'‰Qàe'¶ç^ÆÞB·_]‘_zL>¼piÞ ½´O:-t ¬eäqµ¦i퉗WÁ{=—å•_¬ÿ.W›~-Ä<ÉbÓÑÒÊežg…Õú¸+L?À;A&ú½š%(s'Íž1õï4Mé¯sPîp’‚hî)X!Ï\7w˜d¥Íh×’š~«k!NaöÞ³~2²ÄU û(¿%SHëe×&ýˆ°ßd¾ÀØu°)eb–}bÎŽ|H(gµüP€>èMŠeÍÀ ¯ë?™íL‘˜ËÖ†dÅô ~é* šE¤œÍrVa0Wu‚òVa±WþbâNÂSä0X!y,ÒI+p½“åæúfùæ6‹ÿ¾>¬YÖ‹µµ˜ÕŸúE­È‘¶´õ=dÅûõÖüXÐJî‘(3™òÞ|bW0;ZÎaWúeÙ /Ζ ðak~ÔP΋Ò"?Ž>ç‘þâÙÐ'×’ô¨ôõgHWùêÑeJ§9•/Íà²Â6†½\ÄW~8 »4YZÔ Ë®pf:ý‹ö7©êë5KjAx\CƒÀÉ,Ö’xàjcwKMFA8J*¦ÅJƒÈÛ×…ªƒivþO •£´ÚšWï0[Í ëK·Âs‚ŵãÿ¾=›ø¿µÅýï§yñëÇŒÿ{œÝ_´ÿע櫵Lüßêêbÿ?ÅûÝÿû¤¤ªD%ð§ò>X¹ayÏ=ÂþpÂ^ZˆÃ\ðˆû£F`V| ý£Ÿœ¢eÎÀO|ÿ²Jb:R®q­)¢EºÙ¡tu'NÈ[?%WÿåóƒàïcLsÅvòa¾â:äm4† øã*H”YÁ…UP¡PJíŒ^¨J†Ü.£~Œ~¥]qÕ›ÈÈ£ˆ¦ Ê ~CúÁaÄ}½ÅÔƒë¯Æ=¡W—i*$nüP~_‹¡C 0xkâÄMl5æ åJÛ’IÍ8Í•˜9äÈ&œ0šŽÂx(~€ò*m«j6$J¡/¨xGMš|†°[2)Ó²P(nZݦŸ7ž C‰¶jíT Þ¥æØ% œbËŦ1.²§µ´ÀºeÓÇI¸¬‰ÖAA[eˆ§ (h ƒ‚èš|¥Y;T±W$ç°í[¼í²(¾G žC)a"Cª:Ì¡*ꕌµÖ |jx|.È$~TÜ›UR·ª7nÁŠT°Q5î £îY/dwѵ҄wv#øoþ[ƒÿ^Á¯á¿7ðßOðßÿÏÞ›7§qlÃÿçSL¹~õÈ-^îõ­’RprHInåy ÁHš–Ⱦ•ÿž­×é@–}D“XL÷éíôéÓg}#=9çá œ„s€pÎÂ9@8ç¯ÿ‹Ö ëÚ\àQ½ž„L?+NŒÎÄLš cå´·VÂÛ²Æ6vß:¤ìÙ^ˆp)¶áß.ü{ ÿ^ÿ*~YÅo«ðuz-«X³±OìöñÜ…SOkWx–Âád¥åj¯¬ûºS%'ܪ+P²Ú?ãØ|þc?ªÑGø÷ý˜ƒ›ÉæÀîO·* *ØxéœBPÉ/Gùe\]iÎSB°jIÄBAm›?’íÕGRƒ‘Ô²Fr^e¡½Óq Ì’¢Ÿ×¸dÍ)YS%kθw2Æ}F±έG˜?>ÖôgÉü]A(¥nÕ/Z³ŠÖœ¢µLa¢?­»«Oë6LëöלÖóm.¹í”ÜV%·Ø{èàÇmü¸ý…×Ã.ºmÝvŠÒ¨öVYº—«/Ý,Ýη¹tç;\rÇ)¹£Jî8‹üê‘9Úœ¹ç;X`çÛÁ»èŽUtÇ)J3ôj„y½:ÂìÂìþÙæ|—Kî:%wUÉ]µª[_ ·°ü.~ÜýS¢š]t×*ºëÅÉ­n­€•Õ5X”=Àʽ¿VžïqÉ=§äž*¹çâoçõ¥ñ?îáǽ¿8:;E÷¬¢{NQ\–ê*,mu –ö%`þË'ÌOcþùK.ùÒ)ùR•|éî‘sé»GÂÕ_b—O›Hm"§èK«èK§(.qu•»Nu»Î+Øo¯žöÛçì·óW\ò•Sò•*ùÊÝ™u}ûÒ;˿¯ž6ê6ªSô•Uô•S‘£ºÊ%¸ºÆ%ø5ìé×O{úëìéó×\òµSòµ*ùÚÝý_í^ÿ¸»?¾Æ¯ŸˆÁ—%NÑ×VÑ×NQD«ê*²ê²¸ ~ÄO”ã£ç°(<õ[îÜoéÉ·"‘’râ/AgÂÕ«[Ôû­'RôÍ"w ¶ì5Ørñ´¶Š¸ ßKëÈØÎ„T™ã *³†]¨¡Ú²†ÚÌj)k¨ÏÜ&%'¾Øê3·±ä6ê3Û¹úÌöÐgÖ¾¾>ÓˆÕNü}GŽ ‘Rh¾S~ µU¤?µo\¡YÛɸM+e­„µ4íÑÓdþ΢= @­¹´§¶Ê-¿ö—ÑhÖöºú´‚Û_pAü¢ÛVÑm÷0¨­r›«ý UšµW´Ê9< Øù6ÐÀ/ºcÝqy‚Ú*||íI§eë4··¾ni~>îþéPÍ/ºkÝuÙÏíU˜´í'fô:Íí,æëK㯾¯Áǽ¿2:ûE÷¬¢{îmj{®vûI§}]æöƒùôÇÝ#92 (ðòi¥Eåÿü/=¼Û½ø_Ç{W§Ý.G?Ó?“üq׊óUû¶£|ÁÓžüSp¡ êj»B‰R`jÔ”ñ|}nÎC ¹õ“üþyݸ[Ççbð5§È[ŒÃ1a䪻QVj:á€A³2fj‹§·”Uó’R“é¼P-Ç x5ƒ+*Îæ§M´p‹ºäÔÊ›››å±žÂB (Lú áóGþóõéO]²Be¸<–üdJFÑV¤./äÕÚ‘¤¼]jÊT«Ÿ°ËÂ'å²+U7 mLœè’_IVìc8°ÒGI"æÅV‰-“ W…ÖD(ƒöV˜¢d<˜ÒÒÃ|Ìïc€k£ÂO› ç_:uâÏ_vŠ~^>EŸÂSDiÙ(ð °·äfZ~þìiùy“á˜iÑ·Ö¹e û0•Äo0Ym0‡Ÿ=˜ÃM†có7#…Ñ¡‘®#Uÿ9»—Gåè˜rbw»æš€¯ ,ð ñ í4ÛgÍCÓèþÁY9:û±‚µ<ÓO‘ÉzÑüÙþph}à,MÍÈ·¸?‚o0QÔOŽ/| Ç@³¾ÄpNÇ~¢ {îàƒ&SÙ•ÐDš*­VÙJ~Æôć tÞÚƒi…F£"†-§¿£`– Ì’w½ˆÜhá]ü…Ò­mtKÝ´ØË ªw»½î–¤hFßJvÕT0tìÇÀ?^¯{ά¥»gzß-¥–ÚZ·{^\uB2ø±AÄú1~Ð÷?[ß#ºÂúþ'ü~!Óñù“éá#ÿ;òŸ½§ûßWyžä?ëÇ’ÿ|¡Ý¿tÿïÕàK_þ³³ó´ÿ¿ÆÃ»Ý“ÿ´1ÉM½yÌló¬Ñ¨“/ØOORŸðõ€'j-QO N´­T\1~ZWüÓ>—Ô´®ðg™NnYœÃÒWïclrŠö=™"”1ü e†É î/— ¼¸¬zœæ$ʽ€’ÍÄÇ{¬ _Ëš¸Ò½7ve¸±¼‰tO [åjÑ}]³_cvFïýö=4©MÝÆ5ˆRB µZé«úNŽXpwŠ/M¦ÿ0¨m8ú~ Ä åQêz¾Eˆ¼³õz·L1ÎìUAÈd8̈`ß`7.˜kmé™»BË„gkˆ@Ú)¹‡†ê5*-¦” ÏûÉÈEI1)ξ"V°ËGŒ~iB†»§wŽCR-KÃ%oÛ:9ø\Æøì—ýùà†å6‹;‹`ªµWÑb†QÉyk&3ºÓ£Ð& ú`ò±r²0àq<¿™ðšÍ`åü¢V3:CÙ²·ðK C Í»kä3‡Â¸«•8GHf +ÆyÌe㫽ʣ±ÐÒûf*pö6k¯¶«¯v··^V_¾Þ}µ·órïum·öjïåÞÞöãˆZø¯?BÐ1ùÓÝ£‘‡z³®Têðô¬ŒñɢÉ-G>õ€°ã½p’÷%’.Éç*Y¡K0Бe5ÔlE*2½ÁÔ}Íóª/Å¢ …QÛ!q,¢_©ÙÊÊp!§H* °-£mÁºyÅ@pNÊÖûç[›“-P»ó÷‘cŽð¨9åœë,~nÒÂÃÉÝ'‹úJ'½Ü„Ž$Ñž~Ppt¾Ñ¬°=˜I±§3¾§ ´ÄN÷¯–Õ?äðæé.âüº,€3wéÔV€"ª(dm±l?`,6»²d$Û+„¥…lë® `9½„ÿpVâH BK\ë`•휹°“)®,ãk?Éø¾ÐãÈÿ¦ýoFþ÷dÿñ•ž'ùßßú±ä_h÷/ÛÿUø–ÿUŸò¿~•‡w»'ÿëì“ýppOkßxö¾Õ=…ËH·Ý9ÉË&݆‚M’ÊïöÑ©¹®=8QdíO L|·€>×›?Ã|ìè”î0<‹Ù÷9g9>[ìˆm±\1³Áº˜Ÿ5ÔïÚ:‚ÈÃÉíÝbΉgw£d>G‘ÇÝ$Á¾Ý'óx3gèæ$#ÛTòËÎ~4‹¡Tü)z6öwô Väª2Lúד±É"I òâédÙäŠR.ÎædÜ„ºÆ¦îÁY[¬åŠ ÛQzPÒ:´­ÞÙõ%{^WúÓpú³NŽ¿¼n]%ÓÙ<"ƒ$ú¶ƒÉxÞ—œƒ³Åe¨o9CÐýþàS»Q‰¹ì.Q.9ÏZªæµtã@ߢb&Oø!ȆÔà* aX’*ˆÐÉ•[Œç“ÅàFË.µÿÆœžýØÛï4Îdîl8Öl¯6Åveصšîš?ßv•ÔÔG7ýßQbíY—Œ¤´»WÏpièÚ2jÚ±uï'Ñ`šÌã)ìAŒƒA¹¨£$àÖþ¹½Qe'(‡Eñ)üÑ¿œMFH–zB95Ó@þå™ßôçåÚœþc¶ÙQžÀ¨ûƒÁbÚ|Y3Pç<‘’«“ÖÅ!8B±hf- úRÁüåh2ø0‹ºÙäµ`ø—²Ì¿’\Þ'è妿þ&Ü@ë—Ó¸ÿµ ÔéÕ¦‚·½Äm0KfŒÔ˜1ö…JõZEL4¬º(È ¨9LÕÒ6ªˆL“Åõú®æ‰çƒMVª1¦28š²:d׈R)Ô¿*¾å)gMàŒ¢ü5}m½Á=?órµÑæ\Oßq Ðé‹Íĸ`wbÔ Qt?Šçsæ{óšrY£²Íí+¶'¹…NÜÞÆ£uk6ÇpÀþ–Ì£úM2¡šÄ­ß?ööAOÆvÅÓÙ8‰NúÓÿ[Äð¾uÐn½h7:g‡v™Ã›)¬@9ŸÄëõí¿mèš§z°l\?[»Ý‹ÙžvOÞW¿{CÖ™°âþ€¡ª.(&Ò§7R\¨šeèzT^²Õ%S%pUý:\ïHÐãÁyvÐx”(–˜×%ê§ÑkmU[qqn¥6ð1Í¢ga‰Bb*²ÙjlRSe‚Áª³ØˆNùÌwê—ÙÂbM¿ŒžIùc#òF Ü×j].?NO2™×,߉ƒg¦=–YòçL ð%sc:T)Köç*|£ÀÈ­ös¥/ñç¼]׿·æÚß-•¯wöŸäëÏÇ•ÿ_~;òÿ'û߯ó<ÉÿÿÖ-ÿÿ2»Ùþ¯mïno§ý¿«Oûÿk<¼Û}ùÿ’ÿ·Zh:rÔì-pku€§ªæhð}­5 øü¼ÿ~6:ΠèW6Œ÷Ís¶0z_oý[#³>áÉ 9p¡sI+Ô2Ð f_úÔ„óâª5äéÿ\®õŠÀ7ùë‚g£¢“* ø¥þÔm­¦œ8†;ÈX\ÛùF2B4ºDƒÚiL2¾1;×:N1jEõ¨õ?0Ÿ¼OÄp÷™g£äî:ÃgÑe2‹é^Œ«i|…øHòÔä°/“$LR€Œ•—¯Â«l» á+\Qý¦Œ`o'SssÂ;y2OX½@t‘ÀZ¹í"¾“4MR/XÎ;˜La”w“ñoÕñlžÜÂ…a‰,2žNÑ“|,ðT "+K¦ÑuÿÎ kƒ° o~l§çw3ª/¦Ø˜ž*4‘…‹"ô’DYÿÅWs¨“\ßÌ%È·ý„äã¼=gh, õ¹ùÛdXm´‡õgñmR¹O†ó›™ô›e™³è‚»Ýs{ôEÕF¤/êæk‰|á]Ú…-µv»•jªeQW¨F[…¤X¢uø¡$É„Ä+øãªÛ,ý5H*Vä–÷(E íå³ï@õWLô.gvT™Ú’2º“Q <ì V;%¯@û¡ƒXõÌöŽT|ß¼ˆþÝjuËæñ÷Ý_)k”‚7Œ’+»©`iyìÿTàÁ•hÿÑJøíXäòTþ€ƒNO5ðÄ®A²Ñ! fßcØš³¹#F×Ó-ó+d+oáN¯®PS¤æKíT&ëz¿‰ØŒ7™d9ÄÒUˆØÝ&™ÞF™é&°0R îH:|álÓÏRù„òZÔûä̧̾ÞåáS„PBv ÃwtØŒ¯ìãÁ•ÕA¡Û‰á“KÏ .ÅÃfÅ£%f^|ô¢cD¹º ÞEÄ@žÃøå¢‚Ä4e2‹ …®›ªÉî4ÕMàÆÈT¡çØ•L'ZìÒüyZ§±4h/®öÅQÚO” æÏ»>>½)ÇCêq‘8¦L\ä·¹è¨Ù}®¦Ôc'ÔÞC¦` ú1ÜÀD`Æ9œˆûÉôà Øõx¥Y¨•Üy¸PµÕ‘"pm°ÙšÏeИ^]Ù{›Œ“ÛÅmt—ü>™«É<›/¦·€8ÿ·ÀÓbS)Í‘_2q5SrøaS¡ë@´ô@ßÍ—cUhúhÍUŸœ–þÓŸk¿¸'ÙPT­q|=˜,Æ®Á÷âmÔ~£<ª»A(ú†w·“ƒú>©ZQ}~þO7«º¬^%ªÃ}®†ÕY V»0…åÁø×êzÞ1ØW£þõšÞlOÚÝ?›v—<ÙÊÑ÷û-¥°I)z]5¯íúJ÷©„Huvë!9`üšÝŽîòƒ4Æå¨‰%øÊ&t¹ýPŽÚãÃ6:@7~ŸP3§›§-*€órLiödììÃóÎq½K|pÔ¢¿OšðíIû¢Þý>OÅœ/ò¹¤Ï†° 5‚êhñX ë´ý©€»?ŒZ)Ì‚þlø¾héAq `õÈãî³éê FTC¶»tŠD¿>d6ä+VèKõ þ{‘že*‚ÈY¤háÊçŽW…¤¢’ÀÐwè…‘D5 …ÞWªÅÍÓÎ&ü}ÜÝl‹TШ*EÀ‘üMô¬ º=áúo–ýû’Á‡bô«š®®>b‘’—ùWÁ®׈ÇÿøšÜl‘“ƒ˜¸7)^È«'µP*AR/òˆÚ”‹é<¾ŠnÞ •€Ã#²?ŽŒà2#9÷ï·ãøãÜ®$ÐTU¶f‚úÐ4°ÅÍDé6°‡ ‰Ž’ñ f„?z+‡ç›»µ¸³ Í"˜¹´æÛؤI]$ Œ¤º"ÝÞƒSr³?TÔ蛉~á=å­›UÍÈjB½Ü¥³šHñô¡`OóE“ ¢‹_4 ê)ÂV X}…wnÚÖDw¬RÁR-î0öÛªêŒÂ)ÏoØ¡•É~SüÎð'ýh–;•[Œ#?+S‰¹ÏDXs² 7‚\Ïp6ÿ¿áŒ?à¿êȃ!Cf¸!hÌvj¬Oxãä˜(`о&ÀŒ )>Úš¤ZØÞ† Aq&µŽº‚ -Ðö=}¹ªîBÚÖCV—~U¨[Îké'ºL¦ÞqØüš•"휚Z›"Á¦-Œyè¸%»ëOìj3+Gipjí¹å¡¬hÔžàßéÉÍ]™Þ]kzS±çè„È•ÈJHÖ‘›´svœÐNB9™)}ÒvyâE¤†¬±\ `yXFý@#$®†‡›ùNÎHß$-’øšÒ¡¸¯?šÆýá'‹n#Y'Zq“97ß—ñèwnWQÁ3D2ƒ‹çõÍ<Üà§ïþ@$ê[JRŽn&÷1t‚nìŸÈîz2¡wø<ºL®á|ÛtîÈQ'¾ü§–à. eáXÙtVUŽÄÄ#¹Ru@xÔ ™þè…w"ñ—ƒ‘¥È¡ãÂm Ø&‰s€ßØo×7á"+Àtð–2¿ÂZxÐl7œŠ SQëXLâÁq ã¢hùÙÆœp®Í˜œ—ô+Õ[w>ÑlF;6E¯ôg‘wÿ½aªƒ§«MUÙ³h^“iïn5”Úáò¡2 ½4æpUÌà¢>Š xÿA7°³æ$Áï‰#ˆ()“wt¨Ù¬EЦ¢ô…|à ŠÌ­"‹d‘¸×¶Iä2arö #˜×lâtgÚrëVª«°càš‚²Ö3ÍÏ„Þi6F-¶y·0Ei…|nh2kP•q¤‹C&0½+ÁæŠúµhtŠJ™NÒ”¿w¯@Â4¤%r¡‚ޤÈ9°W‹ÁªL°,”µµG]b8ý`h…­ Ê%©[îK DQ%"<£…“G„q^¤<ï§ñï:èÌŒÆ-H×î `2YÌà´ˆ?ö)Â|ªÕ#›ÈIjºOµŠx7§Ê1ã{8›Ði:k±jïã)‡BÛ:»Ù<¾³ù«<މËXQJ/³òäÉhé—«s´C´ÎRh2YeÐrÃt°âCf”J5·³jÀr#±W€'Á‘C¥üÚíP¨FO×è¤k¬6my3—îÊó—7…lV(GÉ’…]НÕ@Ï0Ê}ÅÆ«³}ÓsÖËD8o[úOo]êæm€†—ÁèýÙfÝz †Â}¦Î¿ð“MéÚ£@éQ9±wX&/e$ DPÜí9ªøY«D­§k(›¢ÌŽfì‰U:Ú³:Ú[ÞQ,~ÖÓí…:šcÇec];…uôÛ?qtþVg U©P?24 ±¥I8üZšWþ?üfäÿÛOñŸ¿Îó$ÿÿ[?¶üÿËìþeûoûåÖNZþÿ¤ÿû*:Æ]ù?œ·ýöq£vêèçcé()ü†kçYž Óà å&м’G{Qâs`œpø°.°ýƒÖ)ú5ÛõÆOyµíP3Q=lonCpñùóè$VHÐIÈâ*äZJ/hq²Z{m%X¢°‹Wy]E¨G„"¢°` F2›ˆ3ëƒ`—\£‰™Íq6Æ“èz÷Ñ¥JŽ5ÔR©P}Qƒ $Ö[ ðS»SÄéÀ²Ô;VOá¼04Ž ¡&¿Œæò³›Éb¤Ã´ß.7e?P-cG•{xG›Ñ}üþÙ>A–>*œiT躨pB³ñ ¶b|7™Î£Ã³jY馦@0>Ôã»ùfÅoc”*cM#y-Gï£OQ *V_ïí­ _#š­¢_Ûþ&*<Ûž!1ö0'ºGÓÃ˘ ç}-Û9U=Ç’PÙ¯š‰q¾•«ó(lÌo¹I-£ üã³bÒ:½)¤£ý§˜Ëdªð·˜êÖ%’½Ò¼P>Ey]zšÚkèòa¹ƒ‡‚3W&W€>*À!gÎkŽ®b4å=¤ÄTÄ…F>jSbÖd¼ ™‰bGüÕiÐÐöl>+®Íž­Ý´Á,¢æ4k„ËêË|†N8¨EPÿzûÅtÄÍ+ÞïoaG2 ÎÐ{ 3oB(¨JŠù9höm‚9fs&4ŠÁµÒÙÓ€H¸‰5¢Šì­]Μ7iBþ ï‹««¹€9ñ„K*Þ’q?¡5Žß°=s/6ñÙ$k£õ?Üa’¥Ûþào]ñÝ,é¼Ô*o¼¶IÈC-9BÑòÆL œªj…NÔ±3”ªQ*ú‡uæóÌB[Y‡+˜‡è,7«fŸ×–l7ÒDÐ4fYê·ÍGÏ|3[\R·qVúUâãß!Ž©W8EbãÁ+K¤Ñ“Îãþ`'8”“H}åèráDTÞArõôÇx„Oîáâs7M€ÈÃÊÀòp HiaÛPÐÃ5£÷pÎôíP²<1ÇÁcÙ1Ò‰Äû î†]3ïprZž(Ü´&ïwprMTȆÁ4¹#74€ƒR—·µò¶êÐ…ß¡%*ÓÀxINbqÁKb¥+sPÈDÛìßÝM'16…l¦ä\óCMÿƒUþßß~•;ùx0‚Ãkf7ðGV E¯ˆÜÖñ€»¦8¿ý™Ë_Þ&|ÚU/ ¿ÑÖºm`Š/jܔڎÃâΘwMÝH´óº&ÁퟡUšßïÁ‹ÕÕÁy© ÑdŠÀ—±$WÁÁù¨WŠUÍêê­PÈå°|ÏŠD¢Üìî11ÌÐâXxá_! Ë­·À—S|ÐÞ[97Å÷Mq)Ëq?1Âhr }²9A¾‡dßÂdŠ9ÆÞâ6£Íf¸Mz¥Á°¿è¸Ù-rÈŠGDÍ&W‰‰ŠKWëdnÛþ8/$çBÍ£ß$ök‘°³ö!k. Ÿ×G-?LñŽt,ò©×1@vòÊM‹â$WÚŠK ù IQ™n)t¼:WB–3Ð4Vu\Z/ž/Ú€-ž8Óqïy—È‚)”^ÂYB§1FŸÆ½Ô®Xİ"¹©ÿ¡ØùYõÔ/ô•E¼|JÊ¢x‡¢“ï‘®Èû·w£XKÁ m¿ñ}MÍðÛQe>é8!epÅT4sÊ÷7ïnêÐ‡Ï Ü¹C÷9šÃµBtn›zO®g ü“ ¬¬$rùÆa÷E´ LÃŽ2¸`_‡òGþ‹›™Ü¢†ˆ]`M¯úɈwºQAá4I¸Çý‰œ"$oÒeÞR°¯í7ÑöW@§tšÐ§l²cuï*@«HV^35ëgüÐm—qƒ÷æ¦^WWÐGƧ4îevˆv§i0BŽ’yóéž B‹áÉV[ÝÂç*b÷lSÅßÉ9 P™ÑAyQýbÄ!Â×ÉXõ'§#SØÄ·ñ<lV°&+¨вó†¤(aÊn©ÙzÓì1â¤åÔîÓ ÅxƒLhÔìmT+ÍVváC< öx2®ÜN`-&ãd`«LÓŒ(z¼k!Ë£Ø9?\L±+°¢ƒþh°€ezÇ[<®ù]2ø°¼3@4ÜàÐ8‡›hÖÎûxПųòr8À´Â-PM‚e÷ýì¨W?nín¸ÿlùüà9t¾kÐ6†°ÌîĶ_^zÞøqSÈsª&:oa=t‘sH…º› Tè<MóÈ ¦†¡@í#>K–)r'+†ÖQÜ{hƒ= ð‰A-‘‚·T|Fø£Äç´øÒG kí¡Èf;´òâŽãÔÔl‘Ž?ëd3 òG>âà‹Í£}°"|âY_ èp)Û ”6ÝMf³ö»T;± 3ÂHl7é­@9C^r• H¶ÿ&ëÞ\ãúÁWUõ©‡ŸpFõ¾ª*ÐDZa¢QÔ;ï£EŸÌÒû3Ž{¶=ÿ\3tÙïzìN+ÝE¡.PÞC¼sÝ£¤¼ýVÙ§uÑ&‡.Ùt ùXUÂfÜÌÿgÍ–?+éŠ ÐLµP,Ï‚¿¯$n`½P¥`åç-û‹n®â8<Û*þ ϶úÔãOiü•w}/ Mòs5ü¢’Âk6k¹3SÒ!%Ìwa¢vªÌY¯Œ§9®ž:Xl©SïPòce(ð{Œ—Öh¯áN‰«,ßXé!1€=BQ§glÉž¨Ûåp2ŽÕfƒFÞ @ôé9Z(üòþŠž“:¦tà†_FD:ÀÕÅáˆ-Õk d#ú"` MXj+·ÔÉçžû¹~íŠ÷­µàT‹ãöÃG&â˜7¢U‹v|ßžŠqxÜÓ¦HMŠÔˆ—­`‹T\E–ÉÔp‘œ"•)J‘*d#¸»ÐMu÷¸gˆ¤îà _@JT³T¡Ô6ß]œ–$ ˆ5ø±¨´‘®Ä#ú÷»ýö‹Ú«µ­­×¿¢J‹s@q Î&÷b ù²~ïOâ›PP¼˜)逼¥T ëšÀcæÒ¾ö.@,dvOÉØ»7q@f¼é&k,ôË—¿B—´žF*?K×|†ˆ]VúÑ?ň«tÛÿXø£ÿGùË?”³ÿè>JEÔ bè®Ús'ë¤îŽz6 ©ôà7”¨ù–½T‚ Ýí}ép&23ì,0D%0ÒhçE"=;–)GF!Ý…è ˆì‹ù𖏋¬ñCYŠõQ$–gJ·gdA³xD¢wm¿oJ³ùt2¾Æõ°S¡„2ÁQyo‡=Ã×[É=ñ½£æ5Ù—51¨Ê§]yób!þ†¦kù­É:fYI(•¹«Ô·ä°À ór•v†ø+›(P™ãÞ¯&?S$@*ŽY‰ Y‚϶†ïÓ‘›Xˆ6÷cäŠT„ãöŸ>Ç­ô›Zæ›m~ÓK¿ÙÉ|³› m/UG\†tÿE-ëw¬íz“Ë»œwܹfË ä /¹Íž#.á-Y3hUK?à,¬Ñÿ탲@ˆÌ!#ÖŸqè3])Û‹S¶gP„.B qλ°ÜúÄQÏÁ½C_"Ûã NÅœ#™ ú¬­XSìD_Ö:Fe¬ŠNmm­¢ÌQ¶Eòe Õc»Ò"°Ó#Ô `Ö—$(ǯñ­{^p_”ƒ+¶Ék[€ÁA‚•í#ƒå%ÎÝÚ¾€âÝœ–ÃÅHÌ~DÈŒ‚¸_ÅŠ:óýs€ç²îDˆø«Âéœ^N CÓww|¨ã°ïÒ †Ž/p£P3BìÐÕ*Õ͈¢óŸDE‰°$ÀReðâ~¢/î%÷mWÒ]sª?4=)ÃÌ5~Ž¢œ9z<)ï5Äñ”©Q„ àüæV¥ìÏfÉõ˜rOÁ%é2[#p䬆e“'¯›JˆÀãAœK•QÂI@ÌàJ à©'3¼Ë £ÚÇ‹†Ôƒ|[Ñ SD‰uæÕðöò´ÛÚHó¹-í8&ÐÓä:Aµ€å'[ކPìßÎy/Ñš¦!6T\Q&"ΘQ±†¡¥~ìà]‚³UÔ ¼+Šø p¤XÄèr°“ê~ô9Qq©|†‚ànU9„¦‡Â¸o eƒ‚†q™,’–†Ð[‚MÌR‚ÔL/Ø&P©6섈;>†RùoôÆmUÝåŒ$ÀxO‘bÕ~*0®ºˆu¼˜û}º!ŠÀm¡´¹ÄR(iƒ¶ÁU1U+@~RE<úã¼gŽÄEšB%¨QûlÔÈ…ð9¨Q[5j‚µ¿jÔB¨a>úY±ŽÙ@”U9|a`$Ak’›µ Q‰zF¤‹¹¥²ŸôŒ)jì8€¬$‚Jx霪"‘³"¾¿J‡óxÕàUñU–[jÁN ¹ßùBn«›¾¨ûÈœw¶Ô¬¹o~!±óFò]Šô.ò,ã†I‘Ú¿Fs¼ÍI­úW>ODBæê%w¶µ.°´µ ’f4&ï?ÝN¦±{¼dÈž­I²Dé\˜ÄâM#LwdâÖ|Yât·â†[1µ,Aá}ºÁÔå÷éöÜ•…œ†YéçŽpé‘^]´²ÈO$QÊýÓܿǘ­MDÕi§"¿±È%ÊÍTo"—æ p2±—[þ+_üÀ‹P%”•éÛè~ˬáb§t™B3î©Ð*òv!)FúÊÀŠvY¥KÐŒÓéuì ä 0Å¥Grw×BJøèI I¨ÜŸ¢ŠD –]YO¦”×zÙÔïÝÊŽ.Ï[býÿªkˆ8Íc‘DŠõd}¨YŸ²°åT†|´VjÊ7Í“<"%…#IJ«CL>ú2Óh5±i”#9Òb¤(#ô¬³Â²Ig q‘fZGæuÄXTl@Á㲑±§CJˆã^帵–"ÊÓCDžÕŒ)áŸ×ròÑ7‰m.Ü}òâ8Í'Ñ…åÔæï!FB/d‹l'$úÂÎZ™å{ÊÒGŒöå SJކ–f½€OÚc>©ÊÓïŸ Y^ºÈß&Ãá(æ(áºü87]YöwmÙñRMÂx¿uLÑ«ì/%gÏæìfj‘`Ýj©’jÉGÀ“wxøã$T“²Žø£Qÿš¼€,Ýô¦1²-®º^#T¢‰Æ•*ÔZU–OgœØ¸Ö·aÔïˆhT™Üen·¦™1ªA¥‚Ýà‹r  Û)S J.6R ~U2T›^Ê6°Ìî–)`óÞK³åHu[lžX7'=“/·ì”áÜzÚ—šù ¢aôl‡ÏFµ¼¹¹Ynë葃¾F¶Záñó/ R9LfƒþvüÇù´Rñç)ìÍ‘UºÖÂÂ?hÏ{­Ž½Š§¥¨¾$ª ¨vl?uLYËx„äÄß3¾ž°·©¸¬¨ØOŽ¿©ÒþSæ1œH çÞl¨ºµ`~$½År½F€© H¢ Æ$´®B%¡˜æO€?Ëü‡Ÿ¸ ÊÞÄ8Í ¨=â\¸|×¾en*ULï°œ­%eí–³¹Tik¯eœWfë¥ÃèG¼ÅÂÛKšT×sæÛ^ôú„¢…iìátG!ôñq§÷0Üiž¼ž#µª¼NˆÏª¤ÖÖF7Ø¿¨;¶Ð­· ºõºõ€nÑŸݪú« º½k4‚Ô©&§à ’'6×ÁŸaå¾É™ 5!%Óc&£±trÌT4Sóª–? t¬UšŽººö(MéÙ„='J¨]tÑdCöO$é%†0¾­QºÂ}Ñ÷[ßiv¤ÆÊ¹liƒ»:²µ7ÀtÆãMO\…tí*Ó¡åüD… „$Hä€nõ~uÝeáܽ:±:‰;@b~ÃpLr÷N6žÜŠTñÔ:õØÃ—Ÿ(³ºrËv£åHD³W8­á!‡+DÍžÿ†r%m±»˜\Zh¯^¤Z×0^Ûgº„ꨅÃìér¯°ëxînò(K/”·A&¹´:ý.DùÑ3“I¢"Cz^oy/‚{OV”í‚¶ïÖw4ÏKªxøŒÓ1k©…î¥8…QþW«_|…ñDüo¯pµê-ñz+\[u…mÐFB6E¥L:„4ÐWÙø³x®,¥WàÅ«Û9Ë^¨l¾ã¯Ä¬âÄÈóy̪m"'û3è0ÙVžÀžö )M‰]<Áƒ[¹k+”éQEÅ›½J³E¢i¿‡áîynfW¿ûíó¸õ'x(Þ¨ƒÊ¿ÓÁ>ü‡ãtîEŸs‚^  Š¥Óñ‡2âlÛæë¾“£Œš­ÓÂêÜ!»ÖIqÆÍ4)B¬6"8Ñ6¾#2cÓ]ôñ„€eï8âF/¬>d£8õ…Ÿ Š 7ò6½ÒdÛ†˜SéˆÞ€ejÖ•‘¯—qÖÍ¥ŒµÕ%„ÀîÎ “/ÙZ*ÖòåT! žÜ«™‚c•%\~VFh¸æœdÌË"HKw¦DÝøËÐtÊÂÇ” ³¬êš—®a¥‡«?Zz87ÿ[üíä«>åú*ÏSþ·¿õcçû2»Ùþ¹µµûò)ÿÛéáÝîç3:‰ß´ÿWÎ}UÞUÖ|×Êðˆ”äËKüåÙm7ÖL W-~ÓàØþÝ4aú·jhV–?ÈÄ¡Y+mÜãç‹ÓÙâ‚hňžóðœqálpyF&Ë\æ(2sÆY©á²[œqvÊ8ØÌ×DW‰ÄˆƳdêš?°%.ÇLŸ¢ Z'’ÃÊ¡de!(AAï¬OÑ3ºP>sòN`m@Yä,&Å4^Œ¡/ LöÝÿM(%v—äÛ…~7šJZ7»I®ÈY%Ý’BY'~z>Ó¡ºI*]¸äXÐèà»Ãàþc6ä,cKpC%×·}ø ¼[ð»ÿà÷ÿtË*sUaPôçŠzî”ÖÉðÜVØq-ÿ_…$GSksV=ŽÛË6OæÞN2¨iÓ’ŽVø;›× ã;•hŒÞöhÛjbj ½¢Æ8ÇaC?ºŠ]q¿x ÿCFh¯ Œ8­È",ûÙµ¢€LÆì·>©¤c­mG¬XŒÅ&“¢u@}Î28$ã+tÏ\¢¼ld#~xX#œÙG94)'ÿÔrPcOé¾zFº‡$)SÑá)ÍT0)Ù‹¼Ônn²Ü¢êY9E™Nû–a,–Ÿ†,'÷˜ d4d¶¥ ‚åhDzt¶ •_mlS|Ì]:×6#&»ùKe/ f˜ÊÄ•ò¥ŒçÓO<²öJ)§ìúÁdEŽ—zÌL€8»@ú‚)­k¬œ†òNÑ×xâXYa0¡Q¨«$žú0Hí"…V›¸Šð5Œ=˜×jª©ÅØ ðéµ,‡†¤•‘!¡®0ƒM”ê—ÓèeRK• &ƒsCi®Fhþƒ™¾¾ÖÚœýØÛï4ÎB›-gþ‚Kå¾ÚÊË6·§¸¶Þcž&Ç£­­ã3ïQ”›«Œ.KÊèÇŠ|eG$síƒíPÿn5ŽºåNóøûî¯\ÚØ'W®¹–©`q sˆ.ÔÿÝw©›%üö,òGù*ÿGQ%1çÛÏêyÙà g7“óÚ:{™Ÿ}mI.+?·JÔePl†½¹4ÑÚC²¡¬“i{•‘dM{ ýÕ¬aÍU³“Í'óÌädÈ"“êðÒÎúØœÞç§3Ke%Ú±)—“òµ›•|ÌÜÉìË Æ%÷.tS—ø±&5Í–DÅPYyìš™)‚L^ •5ôë§ý²³{iùüÆg1p‹ìžàÙ‚Ž¡Ù›K'5¯jÞA*’»¹‘ývsÁˆ-¨·–´ý€§#À[©Þ"-šÜ½‹7œ^qì2ê1eÒ{£ÌUy "CPÉ«î¡e¸kÇÆ^úþ™é·)ž„š¬L‘E »1$}DJš$ë²Vœ.’ÿ°RVøó/•Æ»üvgiBßÚZZE_-ꦒé“odF÷Ù›7žB¨»·#“¤C4Î@Ú!»2Pã²ÎCÄv³e7EHpú…ŽC›e'9‘NH”k…`r}nÞ¢£ÓÎaã µO;÷¸#õëÙ>ÄÜ.ð£J?1>€Ë¨w²rö"Š'P'…y½g2éD'Ч“<3Š iõÂÄå %:'™ÓÁY‡ꇭ‹:n–:5¨x ãi`Úšì–T¸qÚª{Œšg$ƒßãï»(Ùjå€áœÁÌ¡ŠÿˆÿgÇÀ¬ÃN?kc€Žq“— i¿GÙ’8q’-ú°ÜGgFÃ⦡|Fê£À:ègYŽ#~_xyýZ9¹ÑáéûŸYq$Y“:}ù} ¿åw­e^!У%IÒ©‘‚CÌ̤¡Š¡îß ;’ãvxY¹+ò¸ðþЬ<-g&‡K(»‹ÀÄ w&›%—‡IÈF¨ª 0Qq^§L/ÿÝL/d?ôˆI`"o¨A¤‚±€!ôÒ‹·hnlÝ£tî*˜TÍY 2Õ“°“Ñ6YpCÃËIN£‚÷!”7!…}!‰ð¿0ò¡æØ[7¶Š›:FQXDL½¢èšªzÛÿH¢ÛzŠU|’Éø÷[Ì/+»$÷ Êî448H’ý êîœoÂkŸšéY%d |\’LŒÓ(4˜0¸ké=…½¤>ö‰ô :ãxŒ‰« AÛ ›w:«NE0zQñ¼MVNÄ£_hP>¨ì\=º÷¸ zL¡ >iqZƒ³È(K¬¦8i–Û½UԽĽ¡«N¦%Wá[!© t ×tÃV™mb¸…ÞöUF]Ø€÷˜s…R%À©3¡ô-œ•˜"%âPS‘Ї˜ê“«÷“j*öð'”Îä£P¡KÙÔ%²Ši¥zÐs–œHbL[fsp€Æ}R\õg(*ƒ›À™Ú¾§¤Q`=A¢ô2ÃXäfs R}»Í54ÎèÍ}â;F”Êg%Ÿã{G™š´rà6!W¤Å˜,0Çd¬Ù|„é$(PA¼™­Ìæ0tè@È'R9ü("÷6†u4§Ï_§ŠŒ/Qy £>?o•Ñ–ÐÉäTp åÌF:÷3 œ»™œè¬,H–2!¡Õã`ºza·f=”“8VT¦ù[fe<þ¬Œ$6d¼TjL”Ê•9îpKK`÷ë×ôù3²4@"_Ëø²#d˼qJï>KïUdÛR[,¥õWÛ%‹Ž›M[7üíÁ󠃙öçl^uM5_Ù‡{Û:\š‡î€ëcSÝõ*ÈLY“éþég•eIçí°Ù¢“þ´pšêô密CóʶIó§†å‡„±–³-¹ÓÒù~µËnÿ.Ø'Ä4²¯hø¥öU¾úÎÅ%Tûñïð‹°³%P¿’b°Lü=Ï:\§àTé/Ô|^ø_àhóÓj¬‘&ƒo˜™Ú)ý¥Òah8S’ykq¾·/*>N쨑|‰äòá¼iqBØTtW‰žyáå餜F81EÊß7ѱ½'Á̓û%rÒ`D_œ³ß§Õ£Á"¢i1B[¯Yþ-Ê…¥kw¶J0ƒEünp|ઠ8»ó€MÔñ@“*æÏp÷·Kšž!4­-¹ â—c̉ÌÄÉ ²ÒÔä);ä5rr°±jH·ãS@ëZº4稅BòÕÓRDÿä€Âî„#Ÿ¶'žIjæ8Ãhˆ õa=œDKB´Œ&DA² æÚïh=$ÃX»)‘ÃÑÄsWˆú n1±xs{‰ °Îx¢n«[1tu 8ÄhJ @*éü‡ýÑ€2ƒáùcÜAœõñëÀÕ€ŽŸh6ï_£r–ü¾²œS·“ß“á"íòã‡&¨J‡ÚtÁÀk*éFP¨ –-ˆS•-&l¶mg³ñ|d3$ÏCæäˆ!Ä\MV*47ªÅ 6Ѓ6*ÀwÅ )Ñ’l;‘¡²âBqû 9WëÂ9>žjYêsóòÁOäœ :O)±+ÛȱO ü¡(i‰Ò!PÛõ–‰ƒr៺PÏ –Â= ÷Y)˜ÑÊ·päüxÏ„è¹åQÐ༠éȸ+œ£ì(d¼™Ng.„ žby*¡>C3Ö³QÓ,×à–¥ñ[¥»VÝ@JÊØGù8¦) t¨™C`ÔÐE:œ: Â…yùyü…‚j˜F fká‡ÌVCK&ìúÅ”bÈÎèò ÎÜËŽåÖÿŸXç_üépX]þF¹Ó‡¦¥˜Ò"W1º'A¯´å˜¸] …lèç˜cüúO„'S„@híÖ3âzî&wÄt ŸYw6ÄÃ÷e8Üy™K@rb=NÖ"ÇS"z¸i…rVѧQ†+qm¨„»™ÌÐ{ù*åáLœ‹•/‚“öîGVº£óm¿é‹Y¡1 ‡‹¥—fwUQvèVÓ¼ÒX»K䀿öK3a0ΆÑ\©„ýsÀ#S †ã™†µ2&€/Xk…”´ÌK8-Òý'㊖ªxYVà”ël³Y}±Ã™µà·¸BzÖ©.µ¥pwLÞ6”±ZIˆ°[²fÓäÌ’)â,2l N‰y°¨TG£ûL¸{Ä]TÀ}@~¦©cT°!|„®>øÕÇ…¯¶xP2 £¬óžt ˆ¹Öy+ÅŸR½2vOj°›é†2«\3¿‡V eJ(TÕBWn R˜zÃT¢çÝçÌU) ´e\÷3ÍY¥M‘EJm^É\$ÝGusóÒa±Y›sºH؆­#Âô4ìD*ÔŸLqôšäÒ_oé§…$Ç"©Þ¹{Á»u!)MéžÑÙK”×h4Á('W©4¿üà&Æ)«>#È…tÅÍÉãÐçtôœ€[5>,¹QCXaâü˜f›³—ÿ‹­«ÙÉǽ/¶®°µ?k]±ßÚº:$pÕu­¸ ë3äùeñ·ƒÇyÆ FzB”E[ hG‹%Õ¢Š{Õ£Öÿtm®›Ns–¦ì®ÑÝïéÜV/ ¸-VäIÑ€Xw¬"v°Í\«Æ•©Hò^rzÄPóÉ$º] n,Ñññx¾lìZ]ãñÞ÷õý‹5¯yÄ\ǧAÞ|SŒx„L{l¢Lã9š7º’ œ²·‘•¡¹§îÅi(Í&—%ÑZ3c)uY£ž»E=Ÿ}âÁÃ&ÞÈÄnpx̽Rš‡,ÇžK`¾ˆê­AªH­`0Ær$HèV‘)³çy tc8$ú°ej=³ÜLÎ=€t@ç°è?Ø,©ºf³œfÜo4µçƒlËœþ ³då˜âlQèoÀ*ov¦ðô6ÌPÉŽ÷önƒ@Ðu=Žš.ë{Ff›u²AÀxtÕ7ĵô˜€ð æ!,–•k^x€V‘78Ù¼ÍtMN^øf»äÏ;'¸ªdEËÜ;‹J'‰e©’ ‡ MB»ª¯!0YŽÝŠ˜UÌ$#Jœ›VâRÓ4™#¾¿¯›iEsç ?^r+‡AkÀ\OÙ¼ÃØô¦|bYj㜠äÌ3“F4Š}Epþ¸l@ÁB‘ÛYOô2 :soQ1úžã5Ì!ô)¾†º@ºí¡$3( yðDÁ\¡-¨‹‹MžS>-Ç4‡óVÄZ1Œ0CÔ‹AO¬ ªN W¬åWÞ´ g(^‡lå"˜Àư¬B…O@ã†Ô"W ‡¨á#“ëR&ÖÊð¡0Ú”‘ß\15Û/h¤Y¹;Ò³Jp²Ô¥ÚúTT¥"e†÷­r:Íܵjõ¡1'ÃÒ·Ûþ‡xfŸ÷j…6£³ †`q`L1â|H˜Iœ‚gŽ>qœ‹`÷"å ‚â06½ æÏC*ŽG%ÓðJ^Zƒ¬£µ”.+WC4´ùržùµÇÃ@[‘fps.Çá¤æ&ÅxÿÃOÆé¼ZÃÁ¤è&Gy~ÃÁDŸÝQ\¾Ò. _Â<“M@'Ñ`‰@Ó¡ Ll+ï‘%oy+á_mû›ÌÉ*˜&  8ž¯§ý[Dd É3v² ñJØÜ\ç}+Ï‹_wI4HVbQA/·³z¹?wzt3Á“ ªf‚ý\rùI_>Rw àÌõW±sÏX&Ì“x•êĵ¬*,ŽBopxÖî.ÏðÄáÐökh•\A÷Ƶ·jâê­ÜcnS螨ܷÞv@ª­ ˆJc\Þ{k3»‡–9¯ü9°\| NIôb¾{“7êð^ºÃ!w;µÐ"Ḍç÷±°úžêæCœPVtCÁþç ‘Û>ys{bq¶'>[ëóí¨Uüçqüqžr1ÎvÂ2Σúú@[W9…h^ªYÇØ÷ÑRÍ>=ßàãæÿ½úvòÿÖžò~•ç)ÿïßú±óÿ~™Ý¿lÿoWñ°MåÿÝ{Úÿ_ãáÝîçÿ=Rµ€‰Æx®‡­³.†L>laØÚlëBeë¥4ÙåDP ð tK~w,A*…yÍ®_ßêA×ø—“Ûw<¾µÍÚ·Çžw èsm«ºõ]É œ7ØY=ɽ«.†(´ù«¢|LT_L§2Óíæ¤Â¥•”¿[êw=#nË*|H‚k¥Æ]3î1¥ºµ —=­¶’ RœLJÄÂ\ÇÁH :™“ÈœY oã>Úyq¿y="û«6y6é[)I¼Ý#‘îöáp¯Ž§/ÑÈ+-ÖUÝu  E˜wøÁË*QY~2F±û-¯ÔôÀV±:“Ì&䢸B®Õ‡ç¥Ô.’Y&q^p´Àx¨²—Ô½6”êh…싪ýº´Ûz@»•jªeÎÞ·,Ÿ¡•ÄÐ ]j©.Õ±Kº­BR,Õᇴ"h½lQó}•‘o/ wÃzIwµ °ÎX¶êÄØMšÙ‚}𯷅úYQ;:´ËôfÿýûÎéO¨ €VÎ"c¶È>æh$,ò©p†^D¤›·ÆI)åôµÕâ.©€‚4#*CØš )?kb”PŒz«’©}öú-í'5å$8o“ûd8¿1ûqOñõÜ™h›1˜q' 'h”*Ñ#™3¯”èqipѵ¡'Ì´]=h§£ö 2y½Ð¥:«õµ Æ‚é ?½˜—÷y½UMÔÇ]~;ÚÑgPñuó 2isL"׿Æè™sÖ<ÎHS¦iõÌ'îñ¶˜ÏÐ>M#t¬ól®µWZà#z<[¬Q•ìí¼çý³Y‚È1å~ôSZW§ÎCÚ;N6[«y†ÿ€œÃÞÁ©OKÓõ&&óµ=$•Øåõš±àwFɬNˆ o·Šh@vÕOFè/Px[-f¦czÊxôçÏxD©y´KKÕú»&IŒ0‡³d1ʾ(?<½‘“Ã(O©BŠÿ·‘ä¢^ÄÚî’Šft¦2ZµtMJ?,£Oý´ÓéTË«ƒ }Žö1îðÙþE{¿]UÀ$w;?cÑìku“Œ?•£(¹þ$(IwsFñ“á÷÷Míe\©È:hÚ§ªàhQNêžÆY—Z2Ù{( ÏÑþa6órîàk1ÏïÁi¥­z£ÕÝÇß4¨Ö2‘ ”b,­QÂêÔi«?«x×!xÙpxyà'Àé(‰üÒR)¼(\Õ/í“P’™UÒñÔ›g°Â9¢‰e¹w¨~Y•ËéÄZ¹w€2'ØÌ<9 ’¤ÉQØpH•hÜS+•=³’ 'ž~&m ¡¡ ¶šåC§l©Û=²scÇž‹_P|ß±ö7P Ý4‰‡*µ6]#·U´”<3cíÜN†èsg8qtÉ[K§ì$óÿDÊ–x…Éœ8әǚ’4hÌ|2W¼åeðnnWWdßPQŒ(Igghi5åT†NŸeL…GÍF£A½.3‰@)Ó‰xÆþ˜“„U˜)˜¼^`›ífWÙÉ„GzD¶$¹éÏð¬5~lhÍ+Ü®J§b2ŽF³‰’ $–Ùæ…î2Ä1©9`1š·Ù˜(|ÀàÊW0y÷ýéP™éÙá¼¼lä"‹ÒG·…Æœ½˜Ï3!æ Žqm›ˆ FÉdxý·’ß Zõo1S…ñSñãqÊŠ‘×-˜EÎÀJ»ç­:&ø8±Â=ù9-È¢ø”)ã½g¯ÍR™d10í£Ïæt9-V𼟵¿0Ÿè­ÀPþù®o¾}ÏU%™hK¨ W\ÔŒËFegàæÔW,w“¸iÙQ0l¨‘\è8ú¥ÔíØ‘Q²ênèº3SúÛÃBÈÉûyëFÑ¿×NšN 6¹úh)?J•Àq¶ºÓò; tå=ôXÜÝ™ Ô8¿7“{vvÁÚ‚„%`CÙÆ´Ä#›¹°’ZÓ ñ5tœ;+•Õ€ñô–U`–ƒïj9Š/ðØÐ 3K“‚.^r ³W ™˜+'³8%âOGu€9'’•ÀL3 Úç^-ìRÚ x±,ñè_Œ£hÑ*ZË+«óšéŒgŠÓ£z7¸½á™ýómä­?p®KupZüÏ¥°ËâÍúŸ9HÍœlÊg][ë{î’ö@çÍ0œ]µÁ5åm5ÉÅ;µà°Á™c䯊)Œ€Ìv¤@€@z´–¬“©=q_Ê:”Eè%0Í•Åd4žÊ7l«=¢ùý„@«~µ0Âc¬ÝjÕ*-Û7H4XUåDS%ó.…hÍ£ÇDÀBÕ"YòÖòÍ3Ul@6Ÿ ´Å¾£Û«õUÞs*ŒZÖÏã™öÚ¦UdÓt(œ&ÍB;*‚í‰ì½¶x6#6“hO™ÑzÆÜ¢´c;½–x½P@ûJœÜ³’©PjqéJÔò¼±Tí =íü§™xîÑÔ/gö5L2 ,Ác®BæBd¯E” Œ +BÖ‡tùòÆŠKFŒ™ôAýE9@äZð"'±“0ðnÄ–ô"6•²‚^(àéˆbîYj}/$Ó ËF1ø«[[RÊ\vTÈU{wvl¸NØ—ŒÍ©üx³±CÙº¯´5k¿5kK¶fÍ ]ãïÌ—;“ «Ø1fk,ŸygZÌÖìxËèŽÉÛ™ìì·tcêb+ïË.Aæ*d/DÚ—5k_ÖÊîHqV_b¹à¶¬émYKoËÚŠÛ²¶t[Ör¶¥¿žz[’8jɾvžáE×Ï@·\F»7]Aïpf™œÏ-ç«û‰‚TÐÆ9É<&Ct>¡Ï7fÄêë€Q0gB”h>d&|Wê"Ñ@¼ÜÓ¬ã@Ž7ô]=rÇWÆ#€ì_õŸ¢TÄÞ#MR5ßšŒÑbk±Šÿ>ÀÚ¯—&ð1%(Ô9;ÎagŠjtµÀèjë.å`ÎÇÕüÑ9G‡ÁQä 5ç*¤·85‰š¹HFذpÁ8WJZ‚'’)ýó=Z­ÀsNnî†]uo9dá’`¢åÙ QZN!q‘œáh›8ï3…ƒKädF±Z`ûiD“E#*®ÿd2'äJiÅEJKŠ[DyIĶGqÚ:p æœ`Ù’p¹ÑU©Z{U”£6yþŸ¸\Z"ût¿2Aã­„C‚cÅÔWµbŠy&±~ê”tv¦)ãÜ‹l ™¿‡âZÉ+¦¥Ëé”BÔ†ðåZ6÷Üvý>Pžy\Qpî‡"uÿ;“_ŠÂ’Àÿ•ia`¸ýH‚ÞzÜ Y-~ WYg>:Ê^¨æëb±XÂ.º[2à«%cÃ_%}@J»jÚÓMfk:ßË Ò¯ \r‰‡D½¦ˆš¨C°—ƒCP¯Š¹y´?À‹‚2Í(qb[nÛËp°†PGÑ`åxÐë ¾8JÁ‘Gî$«¼BÊT³R g÷¸8¹÷x8 H¨Y(¹ JˆõåƒP×ÿÊøgBpØè'ÞgAô«­~µ•Ñ/p fñÑRü³çNE;'ÏN?Øve_x(‘˜Ç–káÿÐ(µ £ÙDÇÀã˲:0⬀x7²EÔ¸¦~:Óè„hFWÉÒ«ÿfÿ]Ø©í‹hNDjLÔÜ-P·‹pfo'Ì(n‚·ˆM­³¬îWÇ/ÂtÐç”ãÒ™¡äL3ôÞ§*-¿Š“ÅÀs#mXn¤&0ñ“é·ô¸þŸ¿};þŸOþ__çyòÿü[?¶ÿç—ÙýËö­º½•Úÿµê˧ýÿ5Þí¾ÿç;åÿÙÀzGÍÎY~·öá—/°ø¢îi«5 ô…8*ïLú•]Ù ¡÷7ðæ| 3§»Ê™SÍ»Ô X5šŒŸ¸Jëûp†ºb¼,3›U~žšë·™ êÅ™×\Ü+ßaÝá$žEn0Ë©Éz㇢+‹Ÿ&¯F…'ßuÉ¢ÒoÊdz„œ» ©'V/êz“ŒW"/ÎâT8+ò>!¯ rÈHü~–\æ8ˆ({F<ÕBh À¸¾˜bM=â²íñEÿF9x™à¿Rnѵ‰}‡.?Ñ5DbÅ%Óè6V$¿_L5tª”ÎTN³è‚öùSá°utNû¢n£_Á'T¹Ü4jë·ðz9CfÈDpÌwUm3:~¦ ¦›ÙRAFl^>õ¹.˜AÀ`*gºœtì*“Ó‰í5:Sis1“2ÞDo¶€ì›Ñ¿ÉTŸ®Ù¿JNH†7Œ' ©`i”Y`Ÿ)+ÐøÍå?èõÊ{Hö|Þ\^]¡¶Z #µ3`3nÆ›¼Ó㸰 ±q(çì4ÓÀq ó  Ò;軺»§¿/NÇL ÊkEìSÈ{Qc}(ª6ùÈ–aâNFwoC¢v6½òèÊŠÀêÆúS­ú ú•>Ê´pLµ¬™á·¹“£iº¦§©éòÎ… â0›7 70_ÈNàÚ`ƒ±>´ÏóÐ zfÒÎTTuÜnØéÖ"Ñ+ø6èè¾õ¯7ŸœüþºN~3ùЋ’ÍI锣Ø#¸ê!x°KÎsü¥aëá´ lq3Qº ìá £düAƒ%3гœ1ßÜ­Åݦ ¿Ù¤ÌßĨo(½7òÖ ˜¼íAÐRw㘮HŒxp’ìŒQ¸Û,ï4•´-5#›RÓRêQ©¨â !-Ù™?6FDZ-…íJešM[™*¾¯ªêF°*íjT[79:€2/-u;iÚ©3EQ»s¢ñ’©ºš(g;2€º›¢÷àœë³IÔUÜTãÜ-}QÀ~SÑRxlYòYMãþð“Ÿü Q0檔Z–Ù3$,n ú‚q¦Ä®R^ŽÇϼ5«Iäâî@°™í2úq¤}(ö‰ü÷È S\&×°!7–,êÄ·“ß)»ŽŽà‚ûÀÕ·ÊþA§WÜhÀ'®cl I#‚ÙÉ|_ a³ÛÖQ¡ÐD-jS5qEšh;Æû-«à&À\év­†ÔRËÈ< ©(åK7?²õšyóáÜU%êãe:Uµ—À«>a"L)á ¤xÆ(áBIžÀ1ªLyjvÑöíåËÚ‰§Ì”8‰¶¿¯Dgþ´s+º:ÃÆŸþ"YÚÞ¢¨ý5Ä.ÔÔ;n þ¡ìñŽõEÝUŒ¯Üþö’©@PXOjÐ’Iˆ!ý²)a æÜ/ËË€ /9£_Íy8:gáÙœ€vAÞºï>pÝÓöA½ð{_}á÷V\xžÓಫ“Œo|þÂïÞþJXú•"r. PA)@¯aluóZr!¹ÛÞ"ˆñrמEÅûwOL†Æ]ƒµ8ÜT[xn£DÌr©gãé0'Äp(%;;\â-„ ”‰ß6Èß32¿r Óø­"ËUËo†"ùÀw™j5¢:ÙÄEïÙ熋<„yÂÛ¾²¦9ÍY…ÞiÞI­ÏkQVsaˆ6+d1BNh³ôéú(\—ÿ^|B,“ëÙ/#gÁÅeŒŠ)®J’©­Æ*Ë<[»ÅÏPpÒ§ƒrpÛâ\ÎÆÝ¡”¾¥J¼HVf/ܸÞîÎäÙ}çÉþóoýØöŸ_f÷/ÛÿÕjn†¾ýçvõiÿ‡w»oÿùÙ6/ÊÑq þõò"sŠ•¨¶/l´ÈÂPÛ¢ÎKkOÞ·š‡ÍnÔFIÓZÆß¼ig{ò{L—ΠûºælƉž˜25Dz8j®×1ç\nª¹¢Í%ã‹É*77Ëæ‹òÎ>ÝÞÆói2À(‡v„f‰¼L‰‡g‹„U§Æ@ÒÊkƒBú餶\3¯Ÿu'éon!¿OàaÉ®F“û²,âÓf\Âuê£o›Ä6”ÄÁñm×Ä›ŸÃF]Oãþœâ ¢6D –J…ê @Njs6úÛ"óWQÎi>XµˆúD†6£`ŠjÄeÔŸ¸J(4E°S-cG•aJG›Ñ}üþÙ>A–®ÕT?:Óóßuçÿ„fã`T|7™Î£Ã³jY…âšæ&d S‡ëÕfuÚc4ÁšÆÀ¢½[Œ>E5ôò}½·÷…Ì8-ÄÑX³‰ þ… ʪh%¸Ž*ØK }‰PóÅÔX@·\ !ãŸãÞò2êÙK?D„~„Ñá%àÚí¸]zL«Õqv ÷àÜ>ª1kaLÖ«dÒŠ7¹«ÊC:ó#ñ;ö^L^×oGgûѲÓþزˆ.tFf‘¨ZpÄÀ\6Ð6—NÌab•¨oŠv7QúmÿzœÌøˆa°D‘F”$$¯DGç©2ɰëÎWW nñ9F¿D£ÌN”“£ô¾‘h°Dšl¢¡½ŒM !8)“¥Ûþàðøn–Œ&cßÜ4;Óc~¹jB¶uwvQfš ÇÀY“Wd#= ;oäOCp#ߦDŠVªoRE‡p8µO»ºŠ4=–àÑÆˆ,ÃFML{õãF”>ÐaOÆWýÅhN¡xl=ãX¨­÷â ¬8N`?Èæ9>Ž­ãÄPnYT{ÛÒm@ö4“oMÊÚnHóK‡¶oøâ§·ÇF— 㛽)1ÛÓVl~Û=y_ͼƸõíÓNȳ'/4úQÐ3£ž?ÈŽŽ,ýZ§Ç°¨ã2Çñ¸‰Md_Äx£F©Y£h Ôìud^Hް`…#p¢.¨-g;Æ5K/Ï ‘Iìˆm7ún¨É¦ ] äÿYUÌL¡5¤5ãøš‰ñŽL‰ö¬²tÖ¤s±4UF« ·‚­ÖUƒgòc@&VëÇŒç‰æ›ŠX‘#k(R½ââ…žá†(¸LÝùƒÔEF-Rc­ˆ«e3}dãA¼˜²öë¿óTÏ+õ<«óKúŸ16’Jdz)pR­^øÈ¤ö鼫¡“íl½¶°Kbî|'FIéÝ÷à½v±‡ˆ+ÓEB[r¹òæ‡'åÍ·õ¸úŸé7£ÿÙyŠÿñuž'ýÏßú±õ?_f÷/Õÿlíî¦ó¿ïÔžöÿ×xx·ûúŸŽŽÿñ°Hme~Ú<;¥wI«]ò/ÊT•$»¦Ó/Z¬ŠPîÉc ÄïP‚û»rÐ&ñþ&ÜXY¹nò!A§R\ ¤Ä—^Ͼ*@": ì_‹þ¿t²ï<¹ÓôgùŠC‹ÓOeËËE’ž¢d%ž=$Õi¨ßÿLk-ÿ8¼ë¬!øTwá‚‹Ñ[µ¦1ÊÁ# ,9ý=_û­þ“B®Í@ãUóÍ kô]¡yrsÒJ;«$l}òÃþËúaw-¸L«+÷òl©y¢dEe_¿~ýP²Áz%èÓyLõósã ZËI”Ïö8ºÖI«Ý;±Ò'rŒ&¡qj,§GGõæqY~×¾ ôþ‘äÉêyL¹òCÉûÈ E+£ 3ªf®)»¶&IE,ræPÓ-‰+Ÿyþma4Üg´âÐ$,[!¹&­ ÈvÖ9nƒƒAKAíÖÑ%6Áuz[e8«›Eè£c8®bà)ˆ8»ù¿Õ!ç š€ ÛEé]~dq+'“²UÁdê1ÎO,,ÆÆ‘¢j ‡¦ë–ÂOl­ûQõE¡Z‰j¥EQm Kr«2…~„ɹí,0RG »÷šM8ËØGÒ™b®xHõE­Œ–ªY£± ¡4Ý·ÉŒ¥M>™ÇÉQ§ƒ²Sv5í_“)ÉeŒ¦({U¢t‡ŠÊr}€úK‚Æ"<…ј¨ óœÌo’ñÑõÞcZLÀYÄJ ü ç P<‹c™ÙØßD¤sƒân)“!JõêXâ;I d~›]Q”ÉŠwà¸ÍîÔËÒKÉ'­çuÑíãMr#‘?˜%Ihôö¢ªd%cÔ»ÊoÆ ë†cïÏaЀÉÛÄßR –ëd>{lË(sÊ¡¥*\Ýœ9æQ«ˆÙ3`ýÒý³ÙL‹ýXÓRå­­¶d/)Ú©”¶ ÓOEET€÷ä E ‘ X'qEóˆsbðë¢H†M¤Œ¨š!T¯¹M7‹vÐ{i½¶´ù¥=ÐCWÙ© Q|ðIÑâ4+K²!uPt. þY]à™ÆÖün¡¿«ož& DA©¾êÈrõ$ÜïKš$£*•JÑÉi§.& ²lœ4€¨ã+»$QçDB«±ÙPйo±%ùs°,©\ ÜÁœÈ†¨#‘˜ûx42€tÁæ$-iª¹ži®ÍõÖlNQ“¦•tË1ÓÃÊ.ëj”@/(&B9’0ñx¨ëöõ·f¹S$JMÖe‰/ âÓÙ°fQAe¢ì:Óy‘§ÊYl­ðÎïôH$)߸ÂÕÿÿþÍÈÿwŸä_çy’ÿÿ­[þÿevÿ’ý_­î†â?ù}‡w»/ÿ?'ùÿy þõHÐÒv2ÙbæÙûZ¼@ ôN¨ŸöЊ­Ý9~¿$jx•­ojvÔpLžÓÖAëôÊ·ëŸÐM¥Ñ9+G¿@Gëð£yÖ{ÿþ—¼ÓVLò‡(8¶1ÃÛ·¬â`ûwÓd„±Æ« XáA@Ô‹˜åg¿Z”“\ßÁÇË câ:z–pF”-Œ8êaî²ÀäŒUªÊ±Ï9åÏ–Ý vžƒ¬°Rѳ…þÑl¯éÀsnx<6:G•€µõM£TêF×מprÿýûÎéOÍ“ý.tíLñס˜¾P™•Ý30й]JÄ Æ­]³è°§¨û/¬jrýLÎWp 9_Ã%¤E—9œ1¹g±XKú ­(ÉC)øËQYê7ìè?¡'›”!™=dê8@œ˜ÊSÆS b¼8ØXË?âói|ëDÔ×qˆUü±Î~û¸TÈ=–V,GCç_Më~Äãøc2GÌÄÄ«p÷C®ûi2ŸÇÊ9¡õEºœ¸.×ãÄ™õЭž3˜ªUÊmŒñ)aÙ• ‰¹ì¹6fpÏcÌõ"G®ˆÕÒ¢ `t9š >8ž:$gÚ“‚ïôý™lv{¦»…°ÒSý=y”"“Hzj·¯¤æÙÂÁräA7°"¼]Nãþ‡ìT±Òܹæ»Z}K/ÙgÆë=ÜÏ^ &£Åí˜ÑÑmÊ1T¥tØ‘…%©zV¹ '\‘/j(ždNNϤ€óÉPÏ2õ 2ÐÃ-”–žà¶ÚðÆ?VwY»’>y1ƒ&ïûíQÑ*RÉÎ÷)± ‰ŸÜYp”Ø ˜§ÝpŒÏ\}bW,ô¤˜µ8‚7ÐU‘§°ç$;ò,f¤€ro«Äß¼=±Dß"Lrª› œ8=”­æb_¡P\2QÒy¨ÌæuÞÆásT¤\7¢ûºów×uRRë©SX=®™.oTC6ŠÁýbÛ%ØÀ‚‚´MŠ\ÃjÕ€þ…GÇö(;T(Kla¡ÀRÄ,Fùä„8É%eôc)ŽQ¦#Q¹1W”IÂK%AžÔÿÞx¸›¡Üê†òX •:qN¤ ÇÌİp gOÁ¬ØÀwiÒMè„â«Æn³‘®ˆÝI’¤ÄÌÛʤwmqùv“ôŒ0H9p£JF ÌãѤñÙ .Äœ4<¹Ð(Š6 ů*n*Lä#¡qqœØŒ GÒÚ¨-ÎGf0GÃtç™›vÕ$ùA’)wÓ¬V8£ö¶a¯Míà œT8•â"ˆGŽ¥’LùA<Å×sgòõV '³0~“Hüd °ek ³ø®Ïž&‚11ÄÑÚ¾¹„•ðú 8 ºV>ŒÓ€ã'˜üÌLDài­àUX­ÙdP ^R©¦¨lxš8íÇ?Ô­7)¾­¢6ÇŽl!>¼'ÕôøÚ‹³ÌÛFÏÈ|rWŽÞÖÖqØV·ºð.TßfBøâý(ÓeVvºágÍ,~,þÃßSñ•Û"€ÙA ’3_0J(ôIÕvµ2¿±ñ&PtöÕ-ï¥ÞfFTpFçÌ ðƒR«°á"ºí|¿Ý¨@÷GìMè½ÇñHLQ+%”@}(Jþpi‡p‹Þ¬Z× Þg2hÑ/R9Óß;0$å@kŽjù¤9SÌRÈÚÆ”'.ÑÁµ  Åd<™š»®+±gÃ{PgðØæ²Þ¿´&.ì÷ éºÄgw¸-Ÿ Ê¥˜Í7† ¤'0[:€¸öÐ׳¦æÃË4¤f'o[ô‹º&×y¹–Ü" )†Y2™@!ý‹‚äR¾‡Mzwzð ,àóóçeUŽ»Ý.êŠãÒ¦ª\‰j¥0¦tB7Àà ýÅNÅ%È=¶à«þ\­Øx2&Õ·|éÞBMC¼·ÿTMâÖí»¾’;Jê‹(”îʉÔü<0uS• ÍðZYš^šz+GO˜-0³«ÅˆØ7zù¿¨È>JÐ/a.¢ š]1V²ÌÒÁþRéS“Ì^"Á) | WÉõ˜ ÛTŽ1Ê%ð.kÏŠL’1ç(´-ºìí~§î QÓr°¨´š([âÒ!aN"‰Îð%ŠÝ™ŽÂJÞ)sP^L’¼ÐTP›[ò0a{%ŒB›¹QœÁòÓ¿š‹g§ÿi„ü0oÞ÷}´ünJn¢Ý7Lduµ“9Fœ‰šÊ9ºê'#%œæ;³'ãˆÄÈ2½«ÜIZ¹š<ÙçÿéíóŠ;ÉLÆ‚†ù:Vu+O!ç'\ë~ßiÀßG§½N~öµüükÙª»È >ÃíÁÇíå±h KPp‡ëÙñlÖp$x 4Î~h¾Çh4:†_9뾯a’¶nçç΄)ü=þîü˜½"ušCŒpsÐ8FumS¾i y.¥}ƒ›Õa^°*Pã‚þuñC™ÏPøE)Àù~Ö<ÎÓ®·êT®%¿/H§ ÑI[~ÿ$Yèr PdÌR÷î õ媂ڼ8kþÒ ?å¯ö!æšË†½}ßý^EûÁ߇­3ú}tÆŸºü»•›K @‹&›úi«N€à7‚ß0×ô;€Ns6½ýN³ûs9ú±]Ȳ]Ðz]Ð-8O p6ñ÷{öËQçè—.JB\iÉï¼@¡Tà"{sœu; "ü¾@Hù‰£ðÃŽy™ÝNkÿä ¾¯¢(µ¨2¬àñ |×F‹æsôõ9kÖóŒRX+Á—~<ÞéXŽÅuÙãÇî †¸5&Z)ô¡%t¤=?®ÿy­¹rY˜8ú™ÃAýR¨–x‘H::Ñr;"ôpýëÏŠ³†:!#fgfí Æœöá®@žLƒ9*ã dV„° ñã¦J0ˆ+„)ŠŽS‰›ûç4CƒKûÉè×Î$óI, ÖØW³añ1iœ(/ªØ:?ÚÉULÎÔaÚ›~B0 ”öŒÖsÎjط̼–,ÇÄH©_ï›,tRt˜y”7È¢*ö µD0"néTˆ³Í”O‹éRâ8Õ|¢µXFªUTÌö¾AvW*“°Ö_EüU’žIpV_Ò(@\?™ŽÌ“ëÅd1sd×úüB®[©ŒÁÆÿÏÞ›6·±c c“T¥Rï|O*‘§ReR"iv“ÚîO•L-¦%Ñ2EÙ¾~ó¼S”Ø’ø˜"5\,kj*¿#?#?1gÐ 6ååzæªg®%õrg?¶Ve*Ñ; 0*b‰dìVïݸ%nÕ‰?æÂfÊòÄ,ë‚ÁìtÒ…Þ6 „ƒ%~ÓPÆ åïSºkS;l$ÙáôsíúBS¢|Ïý‘£¡*nÑ?òYÂhÃôÕÄ¡â9rØøâº, ÃÃôVöRÀn¥=¡ËdmX÷Ý*L™ªLF?åÈ|U3Øöµ-Þ2ësÁ–C5‘lبÊXƒ­ÄàÑ›U69âÒÆ41yÑàë Ø¡Ž‰¹¤RP§Tø™ÖÓÆ!náìz¯qÿì2y‡ç™ÌÇiVB~“Í®ÝùcÊÔ×)¥ªä¿…ùDí7ÏUžJý&½wŽïŹ•¿X|à,U€j ……@µþ¹N–™Û\•€s1#¿S³‹Þµú£ËŨ/ù¼wB`hé´WÀu`ϳ7Yî£ypOÁT›`æê\;úe Ðr%ÒÅÚ{´ádIWî„øcÝ&Ì%­ßÐËLÖH5®Ôöò^™Æmðͼ÷Þ—ÌöÌ¿Öyµß&fÔÿÁ£ÖhŠkóy‘UÚ3œKÒÒ[¶¦Üña+‡¼qXµ¬g‰2.X™»g²@œ6*ÙC mJuèñ‚^«Ê6¤w]:9ÌF£´^"mšARÌÙôTA/ScŠßËù£ésDâ fjÓÚ¼fy¤€Ò,Jºe.íÜ~UÚ'΂àî¬cü8Q¸ñ÷º\ w 5zÍz9TAn8ƒä.\l',1Ÿ&IÚù}*ß !Õiä%6$n;BzcyÈ^˜›!)³›€Õô“/h­ÿœŒ2³ïéh‹b{¼ÉV0K’‚‡~fÆpÔó¬L+%vÚHrǼsn?‚u€˜»kfU¿A…%e‘`zL˜OL†N¦êó -]jæùƒzs¥¥*‹]‡gͺEmioœ.‰L‘Z]×F\NŠ›K±«Ñx£}nž€Ü7H’;ê±]¶ÛaºDÆÌ˯Š4Wxì>°ðe ör"p€ XGÝÄ] 7‡%0)5àÎH£øEꤡWž€69¨ÕAý!°[œKÂ&±3k;‹ŒÌت% °Zu§*zº„ á?2sÀ·sëhr·[Çž—û˜ê±=Q™Ò­p™‰µÁEî gŠOyR=Ü8;½ÓB sÇTãçÅí–Í•}]§ª¦kösÖq|†qdDe‡‘U}}óðK¾¨•›Æ¾qÑi&Nþ´$B:×û—j¼—1ªR+ñÑ3KgFýî×¶ð¡_:¶^ʾb/óºo;á«‹‰a¢ôØFºz^`ÎîWêv»ecÕy€ó…* ;ÞN¦ÝЂFöóžô.I‰Ð ŠÝ·Ó` ³KÏÞšç‰üƒ½û^)RôŒÏög‹¢êÍK XaÂA yª 4jza¥Jrœ(ðRû¦D¼ïZ7š —dTͪ„wЃ•,¨FJ Œ40X5@7öQ:Ï瀡1`È‹¿ßB+ÜN*ã;É.Û+õò<¿‡Á/‹Í‘°uôEî[¬;j¾S9ô5sïTÁâЗA©F6œõHB:6 ù…?x¥ÊûX’VùgϤ¡ÒÜãЯô¬¸1È ŸÜQ8ÖA\Ô@—9tmpÞɈ³²’Ü“\ÐãX ?4ßqÑxí «>âàäT\B~íØ»ÿ móCCc5ZMÌ7||Ó~Õ€½Q7†æØ¬ôUøÐ9%œ¼•ñ©†î‰9F|Hǹ!$¦F<#`'G-d4ýBGñ+Í‹ÜH¼X|›óþ1½ŸíÊ›«+d)•”@;ÉLfŽ ŽÿÔAø´êj×—ÒPãkoåkn,ðL·“†O¡ýÌËõH/°Q¶gÐú{äTN%ò½“I¥GÃÛ!Øk{k­Fûv ØI%~ßl:Å%ë }Ç“^ ¬ùn÷%o€{K÷¨ôbÃ3­€u¥õ]þÕ)¹ÅØI'¤ïM¡­å åjÐ`rõG!0ÒOÀH0!-×F g(wÚwdj“ìÛ$¤âÓÈ©yr‹|UW›ò>öÈ‘|e¥I9P ñÑl"}rµt­ò `b‚šo묌pZ…gG–ÐêTU^ÉãàÊN çÅ,ýÜ0C*wvȮ햙 Øøg™À?y¡tB›uJš )å}ënW>w×ÌŦ^rºÙ:^*¾=Bû6ßË(` §ñQoh‡P‰.n;¦Y^Ík.U÷(è„ww‰tF¾O‘¹q– æxÀ¦Dö=¡RžØÌ!)|«m*ƺÓï篙÷.ßY®k5½›÷}5!öBˆËÞÅ—Ç÷‘]Ï`*qÖAjDÎ !« ìG‡2/Òè‹`"ûåÌñ^þ×U÷{ÚùniYÂÜLj?¬’š D 5®ÜëD;:©– è‚ `>ISßÑ,ú!ô1ny6£ d$p›rYÌM) s´¾PºØGâETÉØõ4tć|˜xDŽ.UîÜ9(–Eêqj>eˆe ͼ¯<Åv!½œ©P_OH+§•Pvb¼d´˜üQH—˜¯I\ò©gtôˆá/]%£«E\òµ©bÜØÈ¾`§öNÔYà¦ßqnëy<Ò&ihñœi*ÕñÄ7 föixç÷уóábÚ_šNe5v%ËÙµéC/IFp/’+Å: ªä$aÍ…•ÍÆ»]…øyðÐ1/ò’ºT Òc?Íë3N¤»ãÍ6×Þ¬Öî0Hå€ä]dˆ428râV±¢ÊB9Ç¢HÁøçºWÞÊû–åÁÆNèHZr¼Èœ–P˜Ã6Z^¬Zš³]"òš“I;¸XÉ112f<›Û9½½d &,¼é¥­'«OŒèf F¶÷±¥-šûœXÉd¢LãË1»jÃ(Ûeß,)-‹-åŠ{g½Àè3†›\£‹0í.¦¿XÞšékªÑ¾Šr¥T x}ºQ¾wtƒ”Ü‹–a†óÜur¦Œûüs±™û²vP(#£3ƒÈßôi:§l'Nµ«ª¥2sàÉí°J†¹ ìefJ m Û1¦wõZùB…f´‰ì”CÊ!æ†bÓó´ëÆE9ÖöOÏÖPùgêv°V¨ Ë{úWþ’‘A Mc:$ùs}i3ËYÞ„á—‹Áµ,â7 b€Òã?þ×yl¡®ž¸Â~™uªŠ8Q îã·Næa÷¢³Ñ  á¡k›IÇÉ)Ä,‡y}Ÿæµœß«;Î&£euv­1Ñ0åIyÛPØé‹ûéó·II(ÄÿnÊgZŸüLfˆÁC@9—$ökì'}™&ÿÇá_³ø4¼½ë_æHà²Sã霜à Üæ”I¦†D½¾DJaMé}’zá(v޳dy2Gseé}]ý2eÊÆ°T·JÛˆA š9SA2›+÷ ÃöH<•Æå\ó›í`Ãqü}ѧ(«¤?a6Œ¶x¦ÒÂ,?Ë79"ÅH¥Åéø/eBE¤Ý•üÝIâ9hÄ rѸk”+øíyòAau<Ÿ>«ëà kgrǸï~g ;/Fa…èƒ-n?è¾äSH÷ûPHסý«Sˆ\Ϙù Õ¿ÔƆE9%RêZB^iôµ¬:"3¹pP89/’¤’ @šD)ûïð $­ñ\oÀZ»y¹@-ë•°‡z>™±‡³ÑIg‰f»Ñ»š5í΄XEÁ+8…ú{ĺ“kÇXã”#‘…À ìfó:gÅ9Ã+û(¤ia U¶ h<×Þ¦wm©Œ«¢¦Cd/§‹KÌœMÔž^´ó°ßLê¯.3Oafôü#ÙÈׯãȰ̓죎Ð×¶Áœ•ß»Ñ~ºÂ€'•¾”I÷¾?äѧ,´:Í7˜ü=zŸPM ÉBÖ2Êæãmé|¾¹VÉÉí™Nf£†s¹w&`»`6)L¿ýॆµ6Dzq)Tg19¨Ö~þ!áÁÎ7r = g|c©û€­¿ß7ÒQ{º£˜Ó|zä>]PN`1˜HÁ çÀ¨(äZNĺLüà4­Æ[Þî¼4ׄ<„±¬ÅbŠŽ›Þb»Á_9<åŽé}&$™‘‘kþÕDõ¯fz&Òhiþ1Ä0'U;Þ¯ñ溄92—2Èi–¨!FÃ4xåäßÀ)鑽p“šW~TNÑ~p¡ð" ö#ÿ0D±ª%V¦ PL¹…9ùÌÅêZ¼DqöÒ׬1zpï˜ûT¶³Æ#À°.ªû"r¸8ŠF­’u 'Ÿm9û'3Ò’¯—3©œÈòK`òÏt|ƒòÉAVÎP«¨ÈÒäuJØÙ_¾„TŸÈ¨ ‰¡S©žU¹È^.µLrÔ—4ÖÉ“7 ô=%1œû³ÙâÖt?B—!õÎ˺GÎ ¤u©¥^ º •Ætn¤¾ú¸e]Lû—Ÿ€“'OO2ÏÞNÃ+ŠQ½2–ÐX—7“ÉŒ–zÍc‚cË$Åîek?z.³䲆ф³_–|¥  È‹È*Îâ:N-ÛáÄ2cÍüw 35®B„vFÞ··äÜ¿˜` R›® i‘ZÈõ–/¥“”Å–Ì€\ÈKÊB*«à?(  á¶—øsQù£5Á”€¦BÚC'®!y`hå¬ï¦ð€ªÀ 7—yÎxΒеî .ÔœT¨ë‚ <ź^k 5Û1 €ƒœpÐZ5ϵ,ÔC+—hÈ”‚•U=å@‹ËlE|õl^¶Yéï…cªý“Ç¥ 'ëž$Ýhï–ºEp"´ŸJŽÖC¤¹ÙQÂ’eã±àÙò£5È\rÑ)/Ú‰Z³?¾–+ÍDé›çiU<`M2V,Éù¦?BëµÈ’Œ¶Óz+AAíÖ]ýºU(J iùj“¤Ü©úTHòâA•ºÆÒŒ¡þ.Ñ»-ÝÄæð¸8‡Gæ–úZM__£¯ã˯µ[þÙŠZ=¾¾J·'–‘¨Ë?,Ó™‰å=§UÇÁ@¦/¿¿Aõ+Žr.¡>Ìs{«/ƒã…²çËi<ç‹Þo3KôŒò—u±lD¤V”¿è·½“±Ï–ú4•Å„Œ„jF¤}p›“ùúaê —„“%-Fı ýSªOé³¼Ägw%*wiL;t (Ï•—²G?èÅDLX‘Á4x0ðözTá¯77ñÐ× …w}¬X¾U ËÐCµg„÷è¥,?™ˆ²£86B+ÿ7ß{6˜õ@TS×ÊgG^¦¦ÖBG¤çéÑÿÈÊÐvkdg#§#æ:sµªÞu‰ýIÑå€Ê,m*ýä\ôÿ‘ç·¢Òh$“‡@[J9>M®°ô‹Ã7ÉdšïØ1UÊ r3HÓ%,°¬±Vèf•ëDá5 ɹ“ §È¯å[è`$oí%k‚|—¦žãK&`ßý²r\5]* p Ê7GfY0]yŸUå‡'ãCøãч%¥•ÓŽøKɹ € kŸºŠccоn·jʵÄ@hSub‰½Y…r´ÔDêÉx ” ƒlA ™hâÏrlØ—(K["½XÆ{s¡v9Æ„m¾9³í5#jš.9é^¥ù½¸®t"ñ—jf«¥HÍ/3䩆5åÌ<òe)Ì)žmŸ“‘»Ë;Í„a-®?=]_uúwýËOÏk`íðËQ\»úæmÔëõÍfSàÏ­Í úYùoºâÍ:jâfccÔ£ææææŸDý›÷Äs-°>tåÓ¨¿˜ރ׮B¨á¡ýó_åú_þ÷ÿõOÿóŸþtÒ¿oÎĵTñÞŸþüÃÿü‡ÿÅ@îöz]ù+~ñÿÂÿ‡óÊÿ”Þÿ߀éa6ͤö÷EÚcê?ýý9`1úu£mÇÛ;¿žõ¯úÓá¯ß`ÀO—yÉõÿWÿÒõßhln¹ë¿¹Ù|Zÿ?ââÕ~vþ²ûæÎà}:cÏZDZ(‰ª»¼W°bÂ#÷Vµ ÑénëHÈ¢ñ¢ô9™R¬F-®Åå,ƒb]Õj ¨5ÁXŒ RÏ_<ˆ×ýÛd&ö’ÛÛd'ýëH2¯@¶^÷ÇñÛäñj8è“„bzMédºÃd@qÞçãáçþÒê†Àš‡}ñ2™~JFÉC-Ø£× P\²NÍ.”ÁÕúšM®æ÷( áŠë_SÙ/Î*ÃÖ½í%ãq2›aQ7³O¡Ñ&:»‡âx>ÈŽLõ‰mŸœ·[ížè kƒ¯Õô/âì²[Ø^/¸0AM×Yïôö÷»&\&  ]L3郳÷æüåñ¾8íî·Úgí7AzÜ5”ãAÂ`üÀˆ¿ž.¦w2çÚ ¾ø¾¦VY¸ñŒñXªŒKÄR还Á_T· [©_’Vè/â/€ßáøsiã¿àÝTÕdZù=#™Ý•c)ug#ì^?ᢔΈ¦øåñîÙß×Éßæß°GÚ« ý-ð1ÂPåÄ%HAcìjô8r*JÃñÝb^V³$Ÿö¬hÓÉ=¥…Ú#‚ùPƒÿúBÔÓ¤“€õ¨5¼ŽoÏ—™zÊEZ$Ãi÷(¨™ßs_ñ [%ãëù8I›ý`5ûv¨¢­#õuTÞŒ)Lì=dƒTè;Ngß©ïÎùuùÜ¢¸p ccPRÓ^I?Õ1ýâ[\º‡°tiíðNÞÚñÚ³ö÷¿$—‹y#„Îæýy¢w€5½PúpÔù¥Ò!Ü”õäì꟰+´©ò‹ó1¬é‹ÇwÌãë,ŸµÆ7šµù³öá[Íš1*ÿ¬5~Ȭ5‹Î“k3ùUý/Gÿ÷=T€ñÿŠžôÿ?æzÒÿÿ¡/Kÿÿ]VÿÒõ¿…7]û_=­ÿqI®ÂÕÿŸæàz3^Çäå¢8‡{ÃÀî 'È%†äƒ× @:‹ý.6„SmD˜ýËZŽ“ÏÉHDdMø}Œ ¥õçÕòã- ü¹Öér¦iJ;p3§çPlxí"(R[ŸëÑú6jõ²ŽŒÍÆü¾œûcq¶˜ÏS­`·?LFw7UØ™ànk2%×Iªó5Ô´J÷úó©” YV KNAOêáqVVÒŸ…4ĘÿzÌjí!LÉd°¸Dwô‹Åè:‘Õº'£ÅEµ›€èySÍFT}{4¼ÎÅÛnZÉ@翹ê¨Ù³w{0²òm ÎÄÐo¤Ò¢lR“»êtr¯êñUX¥J…A‡œY'-Û3 wÅÚWU‰Êj¿áÇìê*¡ç+À?üXTe‹†*¼¢¿È(¼˜®Á„Ȫ¾IYÝEÅ¡ªT^#=²Ù ËÄ‚RCËLöºû\3ò´ý<. 0¶#^—+6KXšUˆHŰøww@¾ÆÌqØ­lû·ÕáÇ«ÀgĬ ’–Dñsë›,]ýCRnÐ?Ë´²ü2ʤR­˜úÕŠ«³- ' w \ˆºûg¯*â=4ðõ:M¾¿šbsy”2÷1Õ¶=Û–A[F²?eÁˆx¤…—kk½µ—jÁÿx­]‘•$û.a\õ•ù€¤ ¼¨¬¡>­Ûò¡,P¦”ý‚?|õÔKêM a„ßR˜åŒHú1£&{oßI5N÷\HøÎAµ+ò„_lÌÎD‰ýØñ‹jö“ªù%«ÞfÑæz•FµÆÙC(Xiœ¯å̸ð ^}ùºìßæiç±pW1SEéŒÓQ>7냾—o+Ì8ÉoUÈ™³]ÑCŽ™ìÿiqöY¢X¥[6èŽûóÅ´?úU~>M&ÓA2Uõ úšÇáú«3Y öŠFT×§žî†c|ÂÓ3Ü3¸WØ;öLà÷<*ÉYú'ïF}ÙúŸÏ?MüÿÆSü﹞ô?èËÔÿ|ŸÕ¿tý7ë™üoqóIÿóC.ɇ8úŸw%Áº†v§Åz øþmï¿·žòø"jÖet³Jn´–Ìv–æH£Ÿ¿•VL“Ö{'p—&vú¬iR–­:¡:€Dî˶¤›ÀWùË™øBx|¨‰ÌÔO†º¸R«Õ*c¼’øR¢¬ñË ø]\âbÆ·Ô3ýêß§ß«ôPÖÏ–«AÂùË貓˜yÆ}‘H4)¶Õ²‰™m9—‘g,Z/aé5$”²Û=97J7‚ïÔp|9e¿™‹d~%BÍüPc8Õþ‡¶Jç›ë·¼a=¤Ãúí«‡õ[á¤ÃRþG+¤œ3zÝÊôš•Ej¸£”F߸ÑMÒüµèk±µÆÐþú“d”kãŠûçoù»âxï·öjžY²,F¢,Ú¿™´Œ?°€†v@0Äúm™…ΪòÞ…àwåkèØQBèå5øzwrúã·¶€¿5^UýêãU@+©àŠ6îãXàºo(FhXðÝoá}˜ã$pxJ·þo}Yòÿâ'’ÿŸâÿ~Ìõ$ÿÿ¡/CþÿN«ÙúoÂÒÏÄÿÅÍ'ýß¹xµ;òÿ9–c<ÛßߣüÞžd}/«º’dïcuÃ%Ñ …° ÙYIÊ?'cÝl),¦èOsË2< À3q5…;}±#FoE©^‰¨­ÁpÆî9$ªŒÅ_€ Ž·Uú:Þ7öÐÁ%!ã¼ØÐ›Î;šôk?B‰È¥ yY1ªiÉNvÆî–QR–y½”ü¥GÌdú«´TXŽ–‘naw@€ž8ä¯YßÙ`OžÂfY½h™ 5·sizpìàpA%蔪aeý…5,¥¾Pþ>LÈÎSçª2VH‰ÞÉH§¾Ó¼lä`1¥ð̽dÞŽfyÒ #E6‹©¥n£ù]‹Èu„ïñõt3¥än“ùÍdÀ6·“Áb´ ØñÚZs›&C} m7;ñv£Yon67¢è‡µ³ÚÁpvsÛ“:ãÙI ±z™ùš¿ø—Bòå‚Ô÷G³áŒ¢.@újÄÔÁ>õxó „‚/5·ŸUÄI~S#ß‚šˆ¶w*âîUÍfED;;uµ›ÛÕ‹áœjƒ_«A™8†=E>à M šºÅ¾¥î£SŽ|X¯0–VšdyZ ‡Xx“Äéþåt2ƒ%Áñ‰ Aè.=6²€q£…øwŽF|D¡g›>~WíÓ÷q~;ÝP+Çï-A‚ó\ßÙ¬[?GVÑíüjr”&X:9†ÿðÐJ»‡7zx§‡·zMª~n„Ž­%µ>NJ„Ц·¯«Æî©r1üófÏа'¿Ì앨sÕ¨¨ÂM jkîÀ¸1 !Þ¨o ó¹£¢åòÛˆ}mÄ›­ŠØÂÕÚØÚh‰¢æÆòFÞF6àȹ¸ÿnmn†FÃŽ·´‘¦·‘:àHlmÀ0 ‘F½À@6|mDÐ=˜íüw§j¤Q–·²ék¥Áf M5ê[¡)©oÉ–—¶êÛØÆvs[Ú µÒˆædÛ‹¯­`j³‰#Ù OüNT ‘/º"„7ë8ý¡uÒ€™[ÞHT÷¶ÒÜ„!ÂrÁ7vBÍDq³ÀÔGÞ5¿¹ð‰€a,Šv¶ ´â]õÑæPE¨/Þ‰ƒKe+.°³DÞU cilGHhõFx+²X"ïºoD@Xbûï4‚;ØæV‹rVþn,›M\ùõ(ÐÌF¡Ù÷¯ü&îö \4qs#ÔH¼Ud£Œ¼k?Š·ê81¸_FÛõ@3;E–È»öã:Žqí—eÜØ,‚1ïâàÌ‚­¸‡dŽ™Ðz)²YÆÞÅooÆ´Æ‚{2l¬û?ìÃ@c.˜­ ʶâ"ƒñ/þ­:-|"‚xkÉ!V¤ïòoÂ"Ä]DÁÓ¥¾Y„wñ.ýüǸ&·ƒ¼ X½2ö¯ü&nÆ1L+"- mÉ­"'eì]úÔJ³ŽTÞØÙ -}àÁ 4â]ùÀá|4‘Žãm`úmA™wé7veM\3ÛÐX¢BK?ö.ý8B¦Ió²‡Z„˜—†wéÃé‚ Ô·……­=4˜í";LûôÍíç6Jf,ã"K¿á]útìoâ¶°Õò…h¬á]÷:1®­M¤ä wÑ,$RøýM  ·|ÚØ‰B„Y’Mï·ñŽaÕ  <^Š/Mïºolãj¤ÄÍ „TˆEnúùý¤®ˆx1]‚rTä©<ëEä¦ÿÜÇ%м-Â\h#k‘ÛþÕY´‰|_ö‹“Mÿ™¿§q•Í`ÀQòøü¼t¶EYh½l‘Á7üÌ~DG êø"8'Ãd\d,~ý^¶— Òöì„ö}8Œ œ.þ3¿\ àœ´c[¡ÁÀ†]€À6¼Kk¹cºE¶ÉM¿Zk‹Ž.lÌAòv®bӻ웤¦ÜFBŽƒÌK\ädÙôë÷vwÙÄ|§À¾ùãBúðM?¯ªÊmâöÂK´Sh^üê=2…4"|5ÂâwTˆŽý¼>©‘€3Âm&êE f+G¿‡ÛXD6‘Ææfpb¶‹l–[9¼>nÔ&Ù¶êáµ_dÛÊ9ówHý‚úÝÍ8H›…ãg÷·#Öïàâ)wЍD·¼Ë_ÚCâfP•׋è,¶rt|xÇÛ$¼F¡y)täoyÿ&sú(Lm.q!ÑxËÏèÇȈmo±6çZ-Þ¥¿‘9TÁGR[þ…¿:ßh‹”oÁ]¬Qo;‡Ó'ãÔ&"³ÇA£^³ߺí]÷h ‰ÙæV+¶Š`l;Ǩפ=Ëer ÛÎQï5Hž l#4–"ëqÛèG¤@ÞAª±>·‹˜·ý‡~s›…( » 4‹œ`Û~ Uú°Y"Âõ!Ã&T„Äü ¿Aª]RºFÁc¸¤"­øW>«)AÞZuâF£Àö²ÃìÓ&¹ÅþàùÕ,BÈ;þ3¿AFÃm¤çhs'lj/rïøÏü:ùÖDHQä_A>/@e;~ ß‘210[Qè0.rïøOü-”'7QˆAÌ òEŒz;~Å>ʪ‚¾šÃDVˆ{ÙÉó‘=Þ"µH3èþÇ…Æâ—òëˆ1ಇ‚ûX¡-y'gí“qjí—[ÁeEEŽ—¿¤66V„‹°kBöe'G³k5j`€i šôŠÈzQÝï˳…B ªmi÷Ú›EÖ N­wë§šMRŽùÊF!Æ2ªûD®<1rLí Þâ¸ÞrÔ|È…£ãÒVPß*ä5R÷/ÿú6yŒ CÞØnÍíõb8ónÈiá¾Ìn=;AV¹,Õý"?ù n!o²rØZÈ9-g @³A¨ šDP^¤•w¾&ù‰’~?¤Sж‹ð~QÝïÒ³MŽ|ä±Ä1±˜Ÿÿø§½?ÞASF3¨±~¤ÈÄøýù☠{ä?„»oX3^¤¿ÈÑy¹mo‡•d…6´—¾Æ&;v k¶…]nŠp€‘ß§h˜|nÐr5Âçf³ˆ5)ò{õÁä ®7F¡±Y/œBž9~}Ù߈㌶·ƒNThú=û€¨µ þ nžbxó+ÿ¶¶bår‹a׫"Íøw‚8b‡¸m"† Ú6 ¹öúÝû"òRl§ÏfØce«Ð&íwï‹ÐòŠ.w¸Oœ¸QhËñû÷Åñ†ÌÁ©)´KûÝû@,o"»‰ÇN¼8…Ì‘ßÅ(ýÔÉÁ3ÌlÚqü^~;äz¹Cò(èà¹Qˆò;ùŨK…]£Ã1°ëjÇoˆÈ¯Ÿ¼ûAÇ¥¸Ø!êwôÛ ƒYƒlYÛámš'gþX-ç –‰‘á¦Që§wÓê'íFz·‘Þm¦w›FÂM+MÊI»CyÃŽßáÿMˆ?ëb::ßÈZM(ãïҀȋ1¬ÎoÄVT¡›FXÅÝM8äOw{×£î5×Ïm¬ùF¯<7ã¸ÒÏàß*=YƒW³ß50sJÃë¦vS±ü$Û”¦›Š³ßaÍÍvì4Õ0š²šŽí¦# "Û´®›Ž²ßE:ršŽ¦FÓbÝ¥Ô´gQ¶g'o€r8(MÆ»¥„К`¬ö܉iätÉF¼26Î)§Ñ<™~†Û2^9m îL¢Ó]+Qˆ5)Êëæß±ówƒþö,;õ"ƒþg‘Ü(qs˜ ™‚eà5DûÊ–…ËÉ+q7M.‡fËÑÄ:•´#}Ÿ;8ê_L>'õî“érö²S-Ýß /o,@÷Cx2Á"¬øÙb.&î™êpI)v{V–ùè%.ñ# Õû\Œ\4 ùÒ¿œÃÔ„õÞÙ¡K(Cõd.f‹; \§/9J]¨×ê5 pì\c´7`ê«Ù|xI%‡/'S@ÛžP¦á‰L˜2 ‘Ùp¾Péó-03¬Xð@e朹ÝŽ­mÑ©½¬Qƒ—ýY’vmv3YŒ4@ b6„í¶ößþl|.·Y\Iv).Þhãì}ÚÙû¼›eî¾éa1³ôžNî,ì¤NjmuÇWX¬YÀŠYP¦zÜjÓ£AŸ ¼ Ø·cy;¶o7äí†}»)o7åíü¬RçOY¥~’ËÊÿôߥþ/ÿS¼õ”ÿåÇ\OùŸþЗ‘ÿé;­þeë?ª7âØ]ÿõ§üÏ?ä’Ìšÿé#–ùØÃ ”ê¸"ÞQ:cø··{Ni ÷àŸ÷oºGÙäPÞú_ÑÏ €íÞM‡# ¹Ä£.UÞL,É$ÕzµÛÝmYYBÙŠ•òæ”~G“@8?IÓ‘úJžïž}¾ijg 5ïd²iœèUóM4ÒM“$óÌP¶¨äjĹ©^bÞIõâ¡J‡B:£UÉ2 !k>J®æBÖ›b=’€ÀDB S3Ï pdÆjLkeJšXÌóªÎû Ígüom­'KwA =ê.Ïx‘`>·9¯–ÊÄ{E½Ð•¼¨?óþ'-‘a_cÚŒšWøå+yGe׿H©Ÿ¼H‚—fR^’©µz» äÓBÂÂq«„RšöÖ"Sòy!ž?û…°…½Z-çiW?mÁÓW üD>/ž­jr¯åX5ÃÍ|ÅÅ–òÀ¯ NÖŸSàdâ´w˜jr"‘K¿¥“>Þ¾ZŒ(«“úòÕd1Kn&£À•©Ò-!¨…&…P«Yüõôö¯D=ÃôYžuÒgrXïœaË3}Œy¦û³n$弼ܟ•zE¯$¤a\¯ú3!HR„®Iò=Œv"‘ö›.0!átÕŸk ç/i¦jl%„‘Ì`I¦Ež;Zo&ñe ÒMœãþÙ $¦ã}ΤYûMÊ×B„NฺŸçsÀÄŃIé´JMŠj²²ÏMy©ÚD¥–Ç^«Èò%ýêXÒ¡I"ç¤b­ú¼í)E••›ŒØ?™~šÁÁž@[ Ã|©S¶Gš÷. ºtR¶‡¼ZRº—}$_饪PJ©¬ÍïÖÄi2Μ .7…£~H‰Óö’»y­b3-ð÷Ñxòåóp4Þåül÷wψ¶¼`šmÝ.ÿ·î¯ÿ§kõ-.$ïgôÂWˆo÷Ãéo±×zC?÷OÞÑn¸'¯Øñ›ÃvË‚,ŽÏ`<ù-óãÇXPJü±âŒ ….£gpæjª‹K¸WÕ:ûVIø5‹’ïK"úe,dx´Ûã_&¡J¡!êÈÖb²â¬xÏ…©]Gð·ÕÑzôË­l¸ d†ðQN“8M%ñ¬ú ™¾gÄ“vdI€xR=^¨²OïòYÌÓÒ—y=7P`#Dóoj@Þî"†ª$²ÈVÂ|­Ùá6{U ‰Z`§âKr—™FG™×ô¡¶[’ÈäÞjq+í¶…ß<¼òÈôŸ¦~XÈòƒZU]:7…iõVO ¡(H«'„úh ¥Þ¦”z«(•€i"Æj"ŠÑjg"湞Å*r…®t£Š\siUOÆRr•X°qb“ëm\O|äšß–DŠÕbzobÕO$VF¥ÓW(»ab]Ë'WûÏ|kÂÇ'c£/[ÿñÓÔhl>éÿ~Èõ¤ÿÿC_¦þÿû¬þ¥úÿh+£ÿÑÓúÿ¯vWÿÿR‰9½înç „³6‘½Š8ë½éî¿Sv#iÈåœàˆG“òW=WT9Þ{²×WXôäÐŒ©)¢™Ë7*¥šš)žicø†f„^‰Q6jl-À iqPZÑòðÒ5=\Œ&—Ÿ,«­„!hñ@¼Bx>Aò#]ÈIªì@X"ƒ„ß!õ†‹éÐ3šŒGrBXEÄÃó…7^>ã¼ýè5MË@|;>¢áGKãÓ?†Î{tü¹ïwq€R劄U¨bÉ”ÅÊ΋­ôElµÔ3^¤IeŒ-k²=`1˜ö›É=[WÐhÓ' ––ÔÎbBHM.N ‡h9\ôpüÎá>f3ê_Häl¸ú`#èÐr%€eƒÄí+ÃÏâ¸à\ë=CÛZÜÝa©îû¯H/5$ý^CQþªRÚ'Ûh„š¦ú™c«wpURB6Óë¤H˜7‹Í»Ž’r iÊ|…FxŠ}GB#ZÐvíߺÓÉ}Ñᆆú÷#Üj z˜œÝ%—ë¡Ä, ‘“‡òª°lê*£%B¢¸Z‘ßuÀø™]PR¼|KQ‚ _ôG³‰kþ+û¼S.¿‘wÊÔôN)èQb¹€d¼Íjìá œãVâÛR]€—Ë5A¶ÕÈëeQܼÖn @\Ûç¶ÿhFDÛ§rÏIù–9ƒ©sÓd6·gØ[ÿÎÎ,?™ ŽavÓ¿K2Þ`*!îÂÈ‘[Iì-‘?˜<ô/¿Ð'fÙ¨¨õ«É&Ñ•|éß‚¬/î‡ÀŒaö6˜@3/@R ~é¨ÿäï àᔌè\ ý›Î†_9QæœÝMÆ™¡q¯?Çon'<š +‹9Í?-öñÉPE $K&a’ÌÍàM×àxqBù \£ëýk|[Ÿ#ñ9Ÿ1_ÎõÜüãÿ^éc~ÃøMþ/Òr© Øú¿#DyÕ5¬ÿ+0ù€lT×øÿnF¾›ò¾oú"—@^#Ìk"ôÊ!îyÑ+—ha% I*:qÈÇ;¹°J4µM>þI R òYJ9”ä¹í®„Uüž.eËÒA,O‘ãTöh§±Âî\2sD¯‹?~\¿s ~çwðíRÙ\¿Â·Ke~ý:߮ު¾]©¯ ‡–W͔՜Ÿ@'_ÎOR@\ ©œHöÔ«ªíqeé)x®VGä3§Øu¾NÆÉ( ;Mîjǽڑ¿ÏÔþpíÁCìeÀq ™˜ïG¿ŒåŸôk6P_ˆ`„£j[çš ,â°Èq¦m¸¡¼# aÛüqÑ“ ÚÊó#¼¬Hµñ ;©ú²øðJLÆZ ®æ” ÃñÕz¬Pöæ3žKê –˜Ëê,Æ#رä˜ã0,gyÁ¨“ê&ƬB¹(fE ?€ò‰oÕD òmÿò†´"ø.Áì!ș굊 ?±µEÖõ>}^™D(n;h{RluGçŠ ð£›þô–Æ-,Ì×°/ú£šxƒ„†¶Õ ªÜ#Þ5°k©"ŸóËYHu÷â.™Â6vÑg Ö±þ#ã¤?UFˆ´Ñù @ÃðôÚ·Ó­}_Õšvðþª¨Ï ”Þû`gà1@‰%”ÂZ>OC»g± R³,p° ÿ½:éпp<Â߯|Šº6𻯳á¥OS×îôºíÎY»•öy÷%4D'.³(o»½Õs æ`Æ °€éÑè;Ô÷õ½WúÞ+}Çw©òÝË|ôí~Ȭ—{é˵dÑЂwÏó^âŸëRªÈEõ·µÞZ¢œ´×£ùG®æñ,~ŠÛù·½,ýïå觉ÿ‰ã'ýϹžô¿èËÐÿ~§Õ¿4þg«¹±™‰ÿ‰Ÿê?þK²¶þ·u âào§ûq„‘Ã(Ætß`DïJþº‹¦Ñ]öçXQ/ܨÕÿ•4ÃQýÑq=ˆÄT~ÍvCW…bÂf¸º[: 9w•ПÝ7·RŒEºÀZ®œ—‡õH•Í®rù4 ¨!èôsê U’0Û݃ 7Ô5Q5jK¯ˆ?£Éør]ìqŸ Q³âÁ­í–Ú•×e† °vØ´áÔhÄÌÜè“Òk—¤š t*ãJÆX½ó Io ¤qM—&SqÑÇrØâÔ±4š‚^bVOeޏó‡Ô[—@¤JæôëâÙ!:îò’Âáå¼vl¼æŽ6ç“óô“qg9ß¼Ê~“â0ç›—F×R™­èŒü‡¹×xû~8€¿Ž}¾“ø·k¼yN· Åò`LéE¤ÊMt%ÝÞ¾ýÝzK/®ØÛFo ô1í¯³ޱwø²×= G7E·vdÆ‘t§[æ_ïôè~·†5ͯ’)ÚŒ,5‡ë…ÃL 0-¸:a¼ªáóB »Èÿú†y‡ ›•`C³:·Ì¤£·[˜G#  6_c§å_‘Æ &gç•®Ÿ³Ýš`.aY_©C“AäšÂE¯\XÚ§ñdüd:©}»œÀ8g'fØÕ7JŒp­p®] îjIJw$¥ÆÌríÐÜ©¥µFxÅIÈM0æ¡£Zv ­ºpT !et( ›¤§:ðib¶¸„sm†šIŒÀ0Ÿÿ¥Ïü”óé°’ÆŽöå¹ ;ÛŒf¹ÆZ¬†)ó[˜ykç©,³Ò˜ÆžŠc³)lmñø+ï¥íæx\3+ÿØḶà ø¯™?ž—íÃÎù‰äú#ù³EŒgDÿbâsà[ÏNŽáÅoäse&Î:»þ˜Ð“Ö+¥‹ÌñÍ®È×4¸olh ¶¨çúãsŽöШœòý”ÛÔÝ—Žã¾4™DÀú¾åa¦<ÎÝsòÛãзsûÛóзqøÛW¡o39Líoý>òòÛføÛ·¡o7Âß~ }»é·‰É§©ë~6)½ƒÆ jTÜóŸO eA¢l´¼õÓqSÔv;{˜H·³_;pø‚k‹1ÞßpßÏëÀ–Ûq¼_kHpêaŸÈÞ‰9çÀvüÀ÷¡ÿ™oàñѱ1Ú#Ê÷FÍœT¡¡º§!£-Ê©›NÜ€w®áu<Öq6ªñs•e‰ è!`óȰƒÚv°Ü¾6<}õL®Äôe›Ëïkf’Õwç¿Û´¿‹× Eùqá;Æ <¶4k¡‘9k‘á“ Pöir1”p¿çgŸ>LæÊÅ=‹$ç£áña8àó:~öLw–Ym:UŒ|Ê ¦K$áAÞ>o¡6 oE™`æ?Ôg­5 5¿€ã’-HDÿŸÑ|›uÃñÊÌQ? ?Ý7ü¿fÃkÌ4ƒR²Ô) vý’lðÚ}Ñéwã4Ôdiï0=qÀñÐZhõ§N¤÷˜ù«õºçûÆ7È]ɼgƒñ€2Âíß dà+.*Æ¡ÃÉ<þê4…—6HqL"ÓŸ%³Š|—ÝÕL³dúýûfiöå\‹)—\7‚ÝÆjÖJQbÝÎA†I4)ƒ+Œƒ €ð/¨À?ï¸úL|ÿÎÚ+¢MSíª{q=ÁG„ Åÿ ¤^/ ÏÅC„rƒ€·Œ×NŠZœ€Ud+x®y¹J ¢ä¯}ùó¼Äýár@T&謞æÒ ¢Û9f!y gŽÐ{9ÿ}¨¾ƒùì_ÞT$1ú³c!NX3Hð…Ɍ҉ÒÙ»½²QnHºóµp×ÁüL$~H‘ã%‡>èXÄ™\]é;û)%žHΠͲòýÑõ„2 ¥Lç7C®ÁHŽáx×Cè‡ô žÞÎ0£kóÑ» ÀÎ(:ÓßC;ódŒBížv?Ÿ&#ʵ?ÓÞ§s»£G*dÄN‘ 4^Ê@ŒâlÅyOæýŽ ZÿrN5k ˆ¬RÄÌw9·E/,”‡2Ó— RádT)†åxÈ-–ÉÐØ•]á§2ØI»è¬±”i"ØCâ~¡™Í¼%nú³,L"³_-ÑêÖ#YÂjÏœ‡Uäd+8AM€“•GfäfÐa@È"FÊÒxȤ~ÿõJÚ¦ s(V©_lâ*0š“jdާeÖŽŽr˜æÝ άVìÓD\$°8Él><è@vTñý9êfsÔT¼…#ÁjñÜž†Qr5Ï,Züq^t!zõçª`PïkF‚‡È‰w(ï°Lµ=œ)Ö¦ÎõäÑãV.~:i ºíÞ.n9í˜$  8ª.F ªçNÎÅd>ŸÜªWy#f÷¸ù4Q!+t>ÃH(ì­‰î%¨c„š·§Ç!£¨ oÃÒ‘LõgfkõРfµY1þZ¶‚B±?´ºÁ?Vhâ_èG†ÿ¤`þꀉ*È1Ú)îÃÅ ÅÁ¡z¬š 1X Gœ ½.èT}µ€Îv“±¯Vp>ˆff:‘í?¤U¼ îÐo0¨ª~Ïï«lc6ôü·÷á-ÿ‹`°P»ófo£ŽöONQ:ɯé=€ÿŽá¿wÇþÞ@=üï%ê ÷Ú'Çü£ÔÁwTçø¿"h.þ‡7»xúv>¼{|ú ¦—û½`‰ÂÅ)‹$#öVþìËT¬ú“zh§úVoðO'{‘ )1w+?’!të°WóyÇçÔŠP}0yf;*i:ÅÃBpß§(ŒÜO¶ÝOx‡Ç¹íØO{¸Šÿ^}Uþv6’Ÿ²îN&œþØ L®ÊD¥"‡²2ˆ85wŽ÷kò0óv•”0K ö•Ê£®„üT¸WâþyÞš£§–h_hÈgÉ8úÜQM ì F8íð7ß_×¶Ú¸èyzw#y»kÞ~„@ðaz3ENtrçØ«(É™-뿹1¿$l¼ÒÅOÔ„èáp¨.œ=É0J>'šuFdTÄl2ú¬¸ ¸;œZÌÚ£hFS¬á~I9å:{Ãò\{–jö±'v›Ä;lJ-ñ‹¸Ä՚€NÝUVÃcx%ke$æÓè¡z»ë}[òv™·~A‹ètލQ,–¡ûÀç|À X«Ñ„EfÍš2ˆ!sÆ×ÛV™Îqúœ( óü¡v_ËN×þ¬ë~ÖåϺÎgÇø] úØ96ß–·­—éX3V‹È[ñXôå8=!åQ»W¢æXýÿå,yÔÉ3ö@Ö~鑲Ⱦ™»exÞÌÙAÂ[¯p¶‘ÍrḢ±Ø¡Åªé›Öÿ!TX° ˆu¶F¾Æof»³è² }ð%d•ÓC§_ÚáLJÖì,ºƒ2‰ÅäeDh»Šû¡ßÔ„wõ„w—M8óO΄[7ƒî¼ùƒ&¼mE[a˜ˆšën`®)žVÎvœ™íFÝô8–l9JkI;eºãÈ­½º¸³Ìáuäti«Àƒ†K[™á3ꈿNÝÃXd%(M:ß8ƳÒ6eM1y’ìšµå!ï÷Ì ´ßDö­c‡]Š¥oâµ5‚\u‹"Ñçñ-¼M§3,سsâÙ©…w³>qÛ÷lØÙw²»³Žw+–8•|± …â 3¹¼Ñ^"oKðáXx7s=-wϳ¿"8K8"{ (÷À£}Ï£tw‰J|ptõ“†üÔ|‡€÷`É¡fžÆ›2fÈÞ•ó6Q`ÙmÆÂt3³%lÔ³Aù±{©Xö󏦨þÑOãÿѨ?ÙÈõäÿñ‡¾Lÿï³ú—çm4Yÿ§ú?äâÕîú8ç<é‡Ìó=ë8®YCÌçò£AUð3;ƒÑ ŶÍˈøz/cú«ó^ÉÏfYº¬ârp5YÙ£„)×v9{·G® ã<7íRIC:J“ÃzšmËñC5…y±L×@\M'·’É ¸eð[â Ž”?AF‘÷7ÃË¿ƒËL”úR*ô9ep² ìÄdz[&W‘A2Nµý91ý|2ÂRÞ¢ó%ûÀpLÁEÂ,¹¤à]É”¡Ô?0¿€Ë… šŒ•÷š‡Íuåà’¡Kü{A{E\³­a‰´,æ`Â~hÜ-îý4Û«ë@c'à†vѰ¤ÑŽ\8vc¢¦QÕ¼•øg8:3ýoÂÖ¥6I E™.eÙõ¹o©dJaê`LRzIœ×"£(°,ªht•iH ev¨Å,ÿ ‰TÇuÏ‚#s´º=6Éw˜ žóÀà1C;Àg¬/?rFôÅcãt¾§Ko‰Þhrù©FpþЉK%Ôîc¡ÊôÎ jׄºÔ%œI(2ÉW§‹ç:À“tìsƋ—:Ýuà6qæ3™Í¡ùÝñì;ì„™*š½^}¾{©éÊ|ÙCV]¦gujFêú³±“_)ú˜Hü§l{fùËÓ0 ‚áso¯„§ä/¥€ Ñ®‚ر0$ŒrU…$­‰ä£}Zó\SAY+´?›M.‡ý¹¹û”D€ d“ÄC<ºÉÉÕUµx³”´Vôâ¾ %dÓýî çL)ÂC*y\Œ3ÏÁœKb©/ÑX 8‹ä%Ǥ!Ûòùrª,Oû¼Æpd>m2Q •R[y[®>UÀ¾YŽ–9ÎëîL7“ˆ)±øgy‰[f>þ­)¸4—'rNO,¸1äð§y5v$ÍîZùÓ¼Ä×´À4£c?2&úDO4™l2Þ“Ù‰µÖñNÖHã·Ê£†ÅIªO}J’;|tÇz\Mcñù_”pèЂíçn‚¿Áã#êbÉ£ žMçÆa« b1cµJ§~>d…ŸÈ¨½"’e…¨6¥ \Z86ý'¬1Ìl˜RÉGÃ%ƒ0º^|4&¶ „|fx¡2(|ºNí¬é'è´J×¹Å5£½½fƒ°ƒ°§‡éÉJÛ ßnÙÞ°xW>ÆûÚs—¤ƒæÍA%p¤´Å, ¡sþE²KZΘ\?ÖÙgÊØ]Ù·Nñ«ÔȜσ“#Ë6=Þº7Ö7é+éðä W+XÈðÙá3rqÆ¢+³ÂB‡¼¯öèk)(/þù\mšüPºÉÐýH§À!ýeFMQœzÒÄ®…íˆú"]Y>º5Êàæ;R¯mù5“œ¶  ©•åqáû^¾…„WÖçIêdsjúØ`°ë3Ñ^¹býJŠôʶá ùMq&5‰ûJ“ÈÇ6&Óø/nŽ@ÌUšAl#ˆØ·<Ä·\ùÆtnø,ÚhÌ✱烒A¨é´”¢Æ˜y/~M ï÷!ÿûóñÌ^ô¹K—ˆZ/ž¥¢žN“»¾LŸEb Š ´»§Âˆá£sÖ¡-VT3“ŒEI²2Ô*9I2M‰´¨|ÀÑ*ú ­~ÒËöÿú> åÿ=ùüëÉÿë}™þ_ß)ýë’õ߬o6¢¬ÿWü´þÄÅ«ÝõÿÊáN?æ{å+.˜MÚ“JVY0 •j/¤2dïCØLÇk•Ê#² ýÜndÂ*=^ßüJ°#í¦tEç?ÚCŒçLùˆí}Hk¥¿ÊçA*x[зŒIÎãh–ý<.ITùÒm%…½0œ+û­Å⻬ȟßOÄ,aw×H:Ÿ\'¤õ%=kŠGì¤ÃÊzø•)c1œ vJ‚7R6Íñ¬QÉŒ¤Ÿ öà¾ÿ0K=Ó¤oj‘ûcöùEyâÀË“©¸Ls….Gè¤ûos•aô#ÂÕ«ôA¡†:²)왓ºæuA»7)¯;–*É k¹oŽ5>·>åšðäbñs¸X¸>šZ,ÝÞäej'qè•ÆX•ç×F ÇÜï w<WåªR~«ïìcµŒB5yÖ`ñþé<Æï#ÏP˜—·ÉïÇÁ›ÏâB¥-3­³”Øõ 8S1Õ¸vɰϧý!¥Þ.uªGeÇ /·åÒü·i³LÈ•ñZV»îv„áøršôg®mñ£3¥ÀŽç£=€Š0—Î¢Ò ÔØeä¥gÓãbò#}KþÕJŠ9’ µÚmnOΑ3ïS´ Íx<—À¤¡Q¡?¥¨•Í•[â0ù2»À’ë;.ÀR:ìË`v^d ,õ^ ­„ᘲ¡Q0uv³oì¢v oçƒbx™¬â£ñ}æwâþáòÎñ —µÏ̱§ç9ó¼ÔMæq­Á´Ç8Àžã;Ð2 ¦™¼ë[è/Ff2>2”}/•¥ŸyðUÆÙ;²Þ¨°Rë݃jÑÝ®ŸGÕ(àH .Çìÿ]v6owË>™JVÚÆâJ‘~³ã;vÕ¿¡9˜~[Ò™F2ÙÂA¾5ŠºUålK{‡û''eAn;iî¼”÷1Vžð§ ÄA##_Ëã>[˜¤ËË«fxð3_wiŽ•|YiF¸öT˜„† ì& þ>°WÆHüªæ½Û¨Èfá7æ«4bNShg·b3´Ç æ7Ãé 8Œ‹Uêl¨£‡a —€yª£O9óHÔâÇžL¢ ‹s`õš\=ye°–(þåÈìùˆÌÔü>µ\¶WUZIŸ­£ÿxîÇúKÖÙ6vùŽxB‡cEàE:Û,é=©øñûV¢u9Ï“ôë»&×§ì1%u6+žëœvcÂ-®áëédq7ûEûÝ -‹àv_1jq z¿u˜›\¤CsDæÆÏ>º.#\ÁK“ÿhb-™n…ïûÓœiƒæŠU|o è7ýÏ*–’„Y^„CgÑI/‰tÑ­†ÿÝYêVáÁZäÞÎ(Â<ö”—YæPTG©vp›?Ü%ë#g»$~8ýú¶Ì¬ÞÁXg}üÅx'¤yŠnåË £2P°ñvìy{d”“¶ßnÀÛDÖÆ½&ÝSûrVî© "™µwŒg+R¶Ya~Oê÷Ûe @ŒCp™Ó¨^Òˆ×s†ñ_ù¶j^Ü^æ›MÆ©%6©Þ›€ÐzvB¿å‚+äêÝSnÞüïkþ÷´‚™Žé ïÖÅFíü1vÒ4§wî üô¬"^ôÞÀQ¿övÏáüãcäŠöóö8_ûLiÇ»'­WäÕ}ú›vbö{ƒïÚ-ì_ÞzsúlÉŸÚÝ|ÍÉÝ7¡\ÊON憓ygŸ>RÙéÔ½zq/ó•¼ÀÓ.ÍïÕÝ./Oðe†‰’ô’v6|íÄKÚ²‘Žk%WûxeW{O*YÜÔ½XSÞa2NTT—ä§ÐÏÝ)$ù‘93dâ,³"Å#É8ØPöHg–aõRÂþ)?é5Nâ'÷¬4‹âÇ’âj,©xG'ÀÔˆ×ÛÒ¥<Ûv` Ž=“ï¹å!eLš|ª"ÔÊ ›‘'§…Hɳú0ieòŒÕ Nc«’åGnŽ}ÄþÇÜÉØÓ~{ †CþÐúä-„W ›·‰ßšYíÊäÍ1#Å =é_ÁÓƒFÆ3>Í·Éýîä}O«¬ééë™O]# #®]ÎI}êm8"{ºÔð6<½PîDÚ)¨• rLÃ’Çâ%ê@B‰²}®ê‹^>Z ®»¹™â× 7éKÒÖ$§;jºÀdK‚Ïy‰^ƹýâ¦'¯¤í-}wT·È3=¢ÿ“gMLŒAmù…l ’ &ÌůÚî ãÁª¡ãÛeÓ¨‰ã±–¨MOrÔÆ–gR[*÷+~P¢s7u=™OF°PÇà£6ÏÓ3ì#ñ°åîß͆£Éø™î°BÅ#Zøeb0×ðZúƺà‹Ä[îï©ÇL,>Ðh¦±þV«’û2Sn³ÿ¨ò–"¡`VNø/74j•¤KMÙëPƒúsöª‘0´oM‰èÁðJm" |9eZdéo§ŒîÜã2¿E/kÌb©âV_)¬”Ò׿ @YÀ"¾’Œv§`àö‰´§z¥Ýˆ¨[2mºÝOª³aj™žN¤“`]¹ÅÛþ§„3]Çìª3J‰µÞVÆ& <ƒw›áÑgǽ<™Ñ\f2Ò^L²Em|¥Ê˜§ ÷Ѳ5òÒÏÕd1FŽÝûUÑ›¹}§·JQNΕо&™\lZh’aÌ´ýšx”Û_Py¿±Ô…Š:“Ӵ޶… 8vŒ“òȈ—;Š%‹jð Ûœ<öǨÁæöšbÔŽ÷k´â™Ñ³³¤©p¯Á"!Å-®ñ´·V nÕ ø'“Ïšüâ4ûxfå<ôMû3èìkJ<¯6°T”<|:U§_d’K“,ši‘¿Ü1?Ôüï¶ÍOìdØ Ä(ý32ZþÇÆ4ð{ödßµp°Â¤¬4#ÞéÈ› ÿDNö[7 :ºe½6SÈd ýúOµ½è°·‹ÆRt8@Ý­¾ØÉ!7Þôòìð™SÏÉ#»¢Œ`IæÈd|[… Ž”Lä{Iöp…šØ±þçBÏ…È'ÆwyžRW({¶YsÈáÁ.fv€ØLäó[ÀEéòWsØTF«Æìøt8Y̤M‰r’i„ŒÊ„'ÙÞ¬ QéifÚ}E Á Ïpª ‡l‹Åfã!AåÍzgU©?Â*bšY‘ÝÔ"‡pÛGƒ*g3-[¢tÔÐ…W zf¥;¯ šK¯š"jú´VÏš_[â&A…ç$W§ð4G>Uªü×ðõS¥áB÷ÅÅ åJ8\Â\„ÖkÂF3•ªÉ`¥Êu‹#&qà^¤;5=nÐcý¦z+¶ßj¦o5Œ·f-1´Sâá+C¯[¡$K$hÉc胲s“¹“}3YÂW#Ex,½VÒ'±~2N¾Ì•S%‰&úƳKM”MöêIŸèz]*™¥’:Xôeø25(†…¢$Bè2V°æ#XUãB®)ÑløˆFxY’1‰é4«¤!ü9Ü`úà…ñ»$5Ÿ¾*WkÆ ýr³Nñ¬×­EÇÅÄcŸ&Äb©,*n#Ïm/ÃçsJië‰òÔH]Åf#™òÕhYÉÿžö±Lúp„B_Žs«Ùˆ„Ãn®˜€[«ˆäËer7O©ØTè=GºòL›OSäÖ.6Ml®Bj·îö]8ÌÃ`z!éÄeΊ0P¹Ü“Ë+0σ¶1‡qR|SLwøO‹ÖOrø"Šo3oñ¦mú°h⺥<¿Œ±(¸Á‰ãc)2t¯™t1l»D^þ}ŽF`Wì3”œ,üÈO ‘Ñ|å…i€9‘2¦ƒxm›P²ÇG@Üšw*–£çm‰‡ñ/‘°§AE“f¬Ü¼ñ–MòLB*ขžh ,`: Uþ)õ~Ùc-J Ð='–™Qá´œNž2ÕP𚬷¤ÝU8ÝNõ+YÚ³£81à%‚–AKƒD6MG·ÃzÏÍ·wliè_ új4ažB騇T,™/kØ{RØa †JÜö/oÈÿ›ÂFúâ7ƒá5é¦éëÁàùlq1Ÿö/ç´>PµsT)^ ǸÞ-Ø©9eP•„!FÃO¬h!A89­ðo¿éßZb§NMÑ_1-‚6ª#Š#¾L†Ÿû£qÕް?7É—þ ¹ÞöGø™úUõŒ:áé\E\ÀûD|³~aì¤j<¥Âë“~(ˆX3S—›®…à!kæ_„›1¨xù‘/Î*;ZÚ!Pnù·²ƒË‹xXŽé•ÒYŽÁγ¹(á±q¤Ü13ôRÄ.‰’~[c80oGN*‹œì:KÛ3Œ*:i… ½ä6ÍèÛÉhÀ¸6@¸ñµZsªR¸Q+3™À ­“‘¯V^Ú‹U)GPúÑq‡it”±P T® s¤ž€pŠŠïšæFåüX1ÍàÔY¨©.€3Ø2$èd 38®Ýº‡ß15Å#(™°/iœ¸¤a¥ÕÉ#ŠœÔß)›•ãtÁœw°“v„h"'MR˜(¾yÊ…•lÀíÁWp²Z,˜]€l6\ýXZü 8ïzå"©™IÝï9“GÙLå±j¦½#&¥õ(Sî_ 0n™{À Ê¥ßf•…ÞýÙ0n˜Ä+âx¡Ïú6æBùRØî š¶ã4ûKÓø”¢ø/â­ï‡35§‰N€‚ð #AÖÖÊE€~ùä}¢BýQ7_ˆ¨šQí"«>ÖVÅU¼«l®åœf‰pBuËRH›]N‡\ _Î çb@æ°0®Î‰$ä/’d¬w8'qaQæB|w‘úÓç±ÐDµ?À¢p&£‘æ?,¬¿4VÿÛTQ{*¢ö}#ýu 58ÒöSöª¥ÔB1ï—"o¿IÕµÞþ ]ÃÐûVEñ Y(MG×£fì4Êy÷Œ?õôæ1ÑôŠØëtO–Óë×­®K)º¬ú´r[ó[Óƒ°Ô!åqÏ;‚§˜úbêå‹âÂSL”@n•#“Õ厔ëC^›îXAFYõÅVö‹GDü/Þ÷Dü/ÍàÌòˆÿM{ŠRl®ñß(ñÏÔþv1¼ü$¦É|1ã¦Âv¬ =ÂH¯,¡î)',!ÙÎkÏ×W†•ææ­ß7 ÚÊ}ÎoŽW¢Ñ†ŽåÈú–dÊò*ÇñunÄVWÓHk|-ª«Ždܘ\ÊÐ<œ`‘𥗦‰aYÇÎÐ3õýúQUþö_eƒ¯åÙ I*îÛ8ë7ÆAõ1y}ÿòA”.€3#õðÏux”Î<«ˆ÷uħ«˜$3æ@oHÐMGÖ§o¨î`8Z»æO딥k6BÎøÅ Íü"fgjÉH£»в”„Ú…%ÆŽ\3Œ@E¯m뀶ÞSdÐ5C\hråÈ ê¢’S`QÈ»›o‡ÿP¡Áò¯d,IFð`LÒŠ1Wv,_òôV3öR;ɱa%ónÅz¥,ªæßÇõs”$wF"Ö<ÿVª®‘ÝôgíL¦·œÄøxRì ò‡úK½³æUô#F–øø#vZ¥_¬sŠá¿kðŸh"µ e[Ú’3“¼Î 5­Ìؤ¾¾NÝ>ª³ÜÕ©îš'%ȓ굧”¤Ð9 Hƒ¶YºÐXÇÑS’°th,{ + \·>ì…s~ó|ix#¾ˆšuZp;ƒÌ¦Ó´tÂó¥rÈYq ”ÈE¢» ÔPø—µ’÷:‡‹Ïýˆ¶ˆ¾j†DûdÝþ„ºÝÌ÷3–A;4Ä2õèC‘Ñ`6r£{‹â‰½4v÷ ösœŒ'Û‹M8ùuP¹†üÊ0ÇBiFè`ž›´äÈpŒq~¼”Ö8_±®'hÇG¨r1êÙ‰(á\ß|n¼‘~un|di„ÊS#cuŽ,2@P¯Æ^«Æ^›½Î: ŸßT¹f¿žçr¿µÓêî;¼ì[cX& Hq`p;g€¯eAç–İ_°Q—aÏúÑïxHêœ+êêvo¨ú—ZVèˆsüÉQ'LNú§CÊ‘ô©Êež‡ìrj%È1 o ­~$ò"›K"%:ÚrÅ£y% {ÎÐâ*û囌ìÓžÍ mʾsJP?‰šÏŠ•¼o<2xÌŽÿjþ<ñ_§ør=Åý¡/3þëû¬þeës3öÔoÔŸÖÿ¸xµ»ñ_M²ãµUÑ÷½ýc,÷NZ©»}ÿ¦{d+a Æe5jÑÏ—Àvï¦ÃfEâQJ½V èªÈ˜.Åa幤Ð]“$=ÎUò'Kèú0›sÕóùÍbfõqU{Àý®¿¯³)h ý×ÄÇ¿Íæ g]Òn¼O8Œ%ÔýÿŸ½?íj#i@áïó+ò{ϱЂ©b±ÛÓ~Þ#$l „Œ…°{ø0s §…DK¢Ýî3?þfDä¾T•ÄÒv7:6 ª\####c½;óÍ:œðÁÍn(N/¨j•;P¶¸ž¢7Õ|4' $z²ý1º!ûB¼éâªòÕ»TÆF:#¼ëº ÂÕdd^d5ÇÂTÑk¦Œ¥ÈXzrµÀDP ²Ôúy©N™ú ™úC¢šõ*»6Z¬3ÊÞÁt६D¦×ÓÙèj„9Ußsò1ĽP±·¾á~±Ò‡¡3O]bz‡0}_`:.Û_Ù¦50Z;ô³0ȲDE¶œ‚Ó[ç’?XŸdë›S¶ÝÜË ŽkW7Ãÿí¨½ìßœŠYÆà2аhïÄèŽI46ÁÜ b§ )¾ Y”“œÖØL20¢…så ×hÄ-BpK!ÑšX`ËQ¶uΚ8ÀŸÓÉ%“¹)B¬–ÆÆû’N}è _ƒÀÒÞQ”„jÝ; ]ÀéÄJy•]ilÑYèÚ}šP’-Jê·¢t¾³µ8…š¨ñVV剰ÕV¾#bá,2½£yõl„Ö™ûXÄÍh Ñÿ èúlÀ†¿à”n4¿6üp ƒj8§ø|-áô^ âà¥Fmþ}¾eë½ù!É’`%3Š•½ŽçXØ([K"Ó:þ2h}Øä[åëhq~Ýàóhl6Ð[Žf›L¥ úWrª¬`£ñÍàCo|ìþÔÏaó—΀ŽY°râÇÚÝáƒ0Zdt*Í)ô·€ „ß· ÎA×Ï&ç,XwTÞ Ýࣥ6ù¯3HðÉkñ:h„N‹ñ–ílåÅ!p3Øá¢ÖÙ»'}‘ÎŒ¿{y=DN;Â¥·üzDÕ þuK|µSÞåµ³‡”hciúîÇ÷–e4.öV6‹øµ_Ü\:‡ †í`x9üÁa…&?=ø+¾ üB¹‹1¾ùYxüIüJùï£p =:†ŸÞ|ÎÜáý;Â&úÕS¿à\ÿB)óâÍìõû{ƒC^ n¼Ø=èÈØÁp§÷™ã}ÚÝÍ‹§ñ>=Ù•ÉøPÚ ?úÅçõ%º2nÒÂЭ­-Ô§§""°×Öò.Ýæ^{G8l?«Ã‡Üþà½ßϪ™ûøÎ=ŽG@ ÑVP^`u8N 64¿hñk×ôÐ\Lá&””½ev'„nزírß{›àE. ¸2ˆ¯ÈÏ´ö6NÈ#~3½»H|wñ¦î8‚WÔo¦qbo…ÙˆWéW ÌûÈ\§ê›‹ I€©’1‹­±^ÄU~j"1u$"[¥PÎTÖŽ^M ³T–Q2(­)ÈE»›æÇ^2ÓùU~Î’VÊR¸vD o©Ü¬n æ\1!sË웵ßd57ÛÔ)²FÔ:»â×7«-¡ÛNŸÂéÚ&’ÿ÷§ÿ÷ÿ›zƒ­ït’ ¾ëͯ1àÉ8º.t.&¢öÿ¤ªm«_Pb;/™Ì™US8Ø#„gB!hÛ3&ÊžÑ6!ÌÓ™Q@!rÕ¨[«¼Àaª`fPé £]UÅQÓáÔÞ ÞKfÃrˆ¼Ôê–ªÀÏš°P«*CµŠ1¨ªž´Ž ¢EË8Yƒ†Í\ê§Ó¡Ž:»'|N]uÈò°fŸW§´"ôˬÙS`®yìP~ÇÁ¦?Š`Ts¼Z¨!qÐ[+ФŸ¯Å9xÄÌàA´™”;­µ+½µÿII_¦ BÓ¸ò³|ƒEáš,i¢ï5ue¿×šÇüéöN­„D! Z}VDZz#4ÎÄ# ?¼í€Œ—Þ H¨+˜[-M`E§:/â’UÇ5oÌ:Q7#‡~ô—ž7VC,Î%tÌn7ݳVi$/ 8Àex‹l6ú¼öàjN¬âBÏè>b& ÿŽ5},sNßûa3êA·©¼ö˨ñŠ?çsàPÐÏA|[ ÃöC¶:¶˜3Ñ“ÿÐÑÄȱá¤wÉê™bÂ× k𢠀 b ½m`Û5Ňœ7â>Ð[^¿†}Zûà‹ÅÊa‹„Pz—‚Ë;\ex 3Ë-3’7|¡Ü ŸVÛ'~d>Ÿnùiƒ— åݵÈnÍNå„~[IÂH¢Â߉ÁsC®SÃNÖ EuI£œeë %€aÃUDRñ­Š¢N$ÞÔÄ08^èÂÔ€½ª2œZV¹/6Œ[úL±Öº%1Ü"ñTƒ_c§O`ID «¤¸×¤Õ|sý}œ¯¦fŒsW› 늜CÞ‰&(º:›ÜVóp¨7]ð d¶WG¥‰É9^4³+Üéu;D¢]KbSzCD¡uöb¡y“°IDšôáÄÞCÔFœ¡¹Éäbzy‰ª~¥‰QU'3ïSÐ÷²¯ Þ`=¿Oó_à ¡Žÿ:üfT„è¥Wd›–e¢íŸÙ†ç9ø¥Ê!«å-ü!˜7¾= a¦ {PP ²Ýº4Á5îQVÛð¼&*šÔ”˜ þÓ9}©üDÞÐR`V3Õ»©o—9´/ù§µþ[ p;z'V’-üMþÚc|§ü1®fZ5€óÄÇøÎ_xŒ‡€¿Ù1~1¶@H övàA%¬¸zLªþ}îž·U ×~ÚPG2©VH æÜ¸ 8 ¶,3Á‚ü‹Ünй ¶÷ÀÊ2l‚± ñ16‚œ„,úŇqÞ™Îîy¬³ð]uåÃ=¶ ÷9âÙj§<»×AÏîqÖ³’Ç=+>ñY™CŸåŸûÌ8ú•Ø5Ü äŽPžåœÿle€™¾Ú¡X=åVÈ ¼ò‚û8ÉÌó9¶éÑöHIv€Ì]¾fˆË ‹·•ô}ª›lÞäBņ¨<ñÈq¤‹XLšöB£Ó*ˆ:‚» #¢šMKÒ Íh`U?«ÉgNÅ”HoÁÌ2Ê´Û02ÎŽ)ãìŒÃP)_w¹¤ò²£”—ñTHì)=ˆ7–U]&IN¸˜|Ýe”$¹~Ìæ(>„G!4¨à]1 ë:&£Y¶Ä2#I#×W‡JûÍæè¥&U(R­¾:º¯˜±®*ÿ0ë\-½ hS¸z6õ¼¨ŒHܶÀ|ç£a*>©Ð»ÚÚWþOº†z³ò¾3¯§àüEÁìR›\š0×V”ƒþÉÞºõ-Bš8©mã1Ö–RÉ€l͇˜ÇT[5ZDÁY/¥ú)à° ¹j¥Ê禗SA£R“ðkÛHXzók"²3R Æáð?)†œ¶ê+­ŽŠî]—æ§Ž‹Ù´¯nS¸˜á©~bdQª~lÚ³ ,¨9}Ì–òŒŠK ô»&I§Ü•híá»‰Ô ©%‘Ú*Eìåtš.BÖVB솿CjOƒÙŠ'Àm覻‘0ÀÐVk%_Ø>ûA9¹µ´)CùßUíË¡9µT˜ê#â.Ä®`¥ô¡V{å4®"l Ê]ü¢yÙŠ#gnGItv[+Ì.Ò\îü„yšáVùp²`ñ StXªŽ`r=.÷/O'ÛÆýóÐ^ˆïRDÄ¢ë=¼ˆºbSc¬ëŽf]Ѹ½ñ°ôÙÝØÝµM¥JùÜd'Ê¡˲¿H‚«ÜrÍôQÒ±o¤†‚n1g#LÞ Q°YvV.õ8ó¹€P’bLÞ¦›u8YŸ2Ù¼wù†\À²ÖÆ@ëil5éÍ7¨'Q6œÚnS]Ü+í½½â˜a7í¼ü‚Âr÷ê C²29’ôg©’0„Lk¦h¤ý寱|pV?ÇŽU²ˆ‡Í_*ÂۃƞƒR’u<ìô*†H¾þü^60õÞÇÁº@¯ÀDÈFIVý+©[Ú,lÝ}½íߥÌÔÄ@ÿ|ÅOá­ªX¨/Ewkժ̓‡ØT£=j®a5'nÞb¶~‹¾ §Ôþ@…šˆ9bÑ‘ÇÈ[ï}•O®5“<~~™2Ö³p/Øz€G¹ú«8°í¶mñFM.þ,lÝ|ü)²ãp«izè ¯Få´i«ÞÑËhÓ–‘#8Ó Ü‰;:hfBCYtÄ@í3~†þ>äg¨HåènÖΡެÀ‰ÇÅa`owŽŒâ%ðIv#‰ÊÎX 4•§rL´K;‡±‚ø»ê{u0¢â@iÐtlü>p‰»öŽü¾`ø«Æóšù<Øùé©ô~RS©ž-ÀNEúD6±pâ#ÂÂg$~º€fÑn "Ž Ñ}d‹†lÛCBs5­íxš¤UVñp©UTb¦%W‘æCÙ…I\«â§å‡‡X´1W†\R Ã̵V+Q= nß@}¨œêÊÚmÈ&mkÔÞ»ÔÔé:NF^a/­wÒýo¯½S!Ʀ®üÁ ÜOëì‹pÃu“é0/P¿‹0¥ì_Ÿm ` K† aÆÐvÌeãÄ_’‚B^Ò²pv­·µœVóÙÙÜ–9iaIœ<^çÈòñ Añ4—1Áv$/t”¡¹Ú5»95]Fûð¬`jXÔལ¼¯xX‡"ãLõD(1“‘ÝF]Iòê{rðH^ÿh’7?“€Sᯑ¼ýô#JÞKm{VbáWÕ‹ösN×òbû¼¶ÂOóäõlI‘=Ë—Ú³‡ܳBÙ=[ê ÷ìXè˜ï7è‰õÙjÝ2—×<)<Ë×7–½KuáïœUÅý¬œÄŸ±’Bÿìú9¢ÿðì|Á[Õ´@ À ¤þLÄM,gÊ›'ûgÅâÿt£ÀWÔPZ˜{ê/vM“¸ž€}ï>¢iò—øˆõ,¬BPNóµ÷t ]+-ŠiÒ´»W•„•S-xøïK*¬9ÞCÇÀʨÌÒt&P–¿ëÍ^{]Ë——¶+ÉTèð-P”Ði°ðáPB³Á¬3 ǽ{8¯b#ÿ¤êwËKÞ›“ÂrËlb‰–ÏŸ{|ìüŸÛßOþÏ­çüOòyÎÿùþ˜ù?g÷íÿ$M¶¶½üŸéóþ’à(œüŸ±¤ m;+Ã2y?Óï;ë'IÒïæjâ×ÈÅ¡,ÀS¼ %EÐÈޢqÝË’‰;S#qgªw¦"q'd¦×}ÀŸš¸S'«‚&–K؉¥ÓÆÙ·FªruB+”®ÓS‚•IQ©TVNט‘qR¥ &ñlcR/•òpÊæ|€óËoÞò²zÊî¾ð–Æó©L‰)²{êtŸá™ •ð?p*|)8¼J¤ª|ØT“p-MðyK™iª+e›ÔX'‡É6ùEå°M¶éÚêÉ#ýÎ3y¤Ý[«T¦H#m 3R3d‰Fm7ä“g}$ªö=f}´—h‰DÖ:AÏ©ør£œz¢Ò_“7Ï:åœ"ùïÓR éTV:LçJݶRÒ²åS•‰¡îuÙ[ÁPp­‘Òøoò‹JI{kê-UÎ*_Å ò;X‡Dodµ—’¾2BE‘HŒdob kŽÏ–a -ldq¡QN•õ ­!O Å2×\¢`|4BÝWͯÖËL[²ËOoBìáøëðÛÜyÌj"(aUþ!žÐ*2hyÚ5­ˆv«»dE$mˆÊ ‘Ûw“˜ÁœD”›$̉)*ÿVN© Ù%ÌÔqÈ[¥Š=SÄÌ0@‰ö¤8]iÜ ]HogS±F¦Pš S.r Ý÷º"csNê~X©Ë”O¦D»T¢]êáì°ÝRáÓ>nr´¬i´,U˰i»Põ¸+Ó’ÈîOÒCöÔ‹ì”Ƨãsp>-óˆ*5_o!–·3L´7Q^ã²_:57‰Z ¤7ÇEþ†Â~k°rmŒI$Hˆê¯ªÿ¬éf«FF×Ö0//Igä–³LYR]N Ð1¢ìM¿²Î[+=Òêµä.½ÿ-ÜŸjS÷¤»©|JçØiíí¢”RÅ2g77¢®Y°KlÀœÝ·ÄÖ+·ï–Ùt9;î;Þa¦­IŽ.oûY—÷c|lýßÎ÷£ÿÛ~–ÿ?ÉçYÿ÷þ˜ú¿ÇÙýEû?ÝÙL½ýŸ¤ÏûÿI>´Û]ýßN…uZ>ÕY¯Ëÿ÷Q\µ‡*ÁÏïøþ°Ù=úЬ³]0ôŽKè:í_x#G{ýÃ:{ßù|4èãïÖGÞB·ýósÜFxA(ÀŽ>v÷Žù :ïºø³ ÊÔ“,o(ø^Ú¤/£»Ü\ßø‘´—ÉÆ¬ª½”K$W€…–k%—‚£EÒ_âÂUypõ–Qˆ†Ç͇WQì‚p¯"þ$þþްËÄÇÝí ê?ûE-†Wô°"b³ý,ÞÂçw¢»Ï²_=#¸ÁVKë{iƒÛjÞãÏmTËN”æîö–ãÒÙHiPI;ËvQß{JBò›lv—ÀÅ×)›ß Çc^mʱÞñS=£ ÝC¾­¾’G4 ÷ßCw¤1SIGø:g7ìëõèüšÍ²ßîF3Þoš$Ÿ…6D¼Ø Ó[¹óßT ©QÃaŸ“æ÷r2Lorƒˆ¶+”÷@}(çˆÆ=0îò ^£`?`°Úãß·±~\0^Z^''uvÍ댄1E M*g.ΔæÒ_ ;Ùœçb=i‡sq[Ÿ¿ñ}LÑÕ+©Œ&kð÷†ú¿RÔä‹TyiÆN“juÀáï”þfg(Ïø<€r¡NÌvùXSÑå†)Û†n¦ E¬¢œÿÜÍÂ*ùõ:ãs?…~ß² f(r××;øëó€ÿDvGÔZà‡¨Vbƒ°âH“°ø.&É&ýg¯[£Åç¤ L„)<û3›M¡³ñ<ÃQý—²_‡rß8PxÏÙÍíâø â ÎK›(èõVñ7vezp¥+%Ï_À©vJ ÓËÑlŽ9Ãm7 ¼ž®®Q\☛{<=ÿUyDáóá|±RƒH- lƒùÏ-õ;àêœ6®‡ 2ÆŸßáÎQ aÈæ·¼éÑïÙ˜ü5¡ô:û€Ò*;ÀöÀ$9ûãv<:-Æß¨ö%_^ð"ÀÆP },ŸæÕtÆ‘à•飹°ø:…V8ëw•Ù[g —€^Zµ.²Ë1)ÊQ>úS…Δ͈Îv!– ÿs7^ŒøEÈGŠ`DLÄ3˪žJ«öŽWȆœÐÌïøéùù‚…ü*êÓ¨t32²7§¸do )1ï’ƒëîœ(>¨«!œ;‘túp4âJo¥Çu|µîÂw9¢çñ\Df‘`c Ö‘ÿwG¼÷Ë=4Š©²É™ïïœó½Å*œ~žÃɆ³Â‡¯×Ö͉€D4¢ÑÎ5rã/‹._ð™ùšÀ;Ë_3BµC<ìÔe:¾°NúXX§ÁH þr6½¡§Í2FÈæXó:ºRÈÑÍ#<òHmq\5š°Nä7Æ N#ßH 7pnaÝ*œ„ ‹1¸?œ†_³ñX€€Ÿñx<åRqæÅÛ7’E"Šíü ìD«ýU[5hó:¶c´ŠÇG^«6§ÉâôÇáí “>b"<0æU®ôútgÆ;@V­8Só¹•ëáÜ™°Ãa™.²´[Æw7󤶹/ÏDíå2æ[ü4‡Ù0s³qj·+É~Ãk¶9VึhЉÄ{´+À9¼éå7d´BÙ£ ,Ғфˋ¬/9ú[«ÅiÓŠ°;´t‡h @°ŽX¤ƒÒã+Œ6Jp b¯xGÓCseºŒtTø0Áü^ìvâýEyz¹4&Mz˜¥é†—&ÂòÝciºEKa2£ý˜¶Žñ•éubR—•†®E ² ]XÖÈ"3Êp>ŸžðœÇš&_€ônˤî"+w9½¼l”ïÖ\v5¢0Ã8VJ_BDÕ±ÀÖà Ǖ›»ñZtÆh³l4YdW3‡Ïh‚ߪ%úï;`¶§ãß ÂÉ4‹íé ¦1]`~°õÌ$ç¶E@áÕˆêqìò /ãÃù¹O`Rp²×?\qÂÖ笂—¸ð x¿ç#æ=® ¾# òü9²îÅ{Ó…q¯k€`Ìô5’„vÞ€‘MîP<È1ü=¿^Mà4–㤵XL§¿²Ûñð<£ …É×+QvH­ÝR0”";Ûjk@p;á€ièÀÊ]€°Áê± sÛbøkF0‚evg\j 4®fkœ w,Nʶo]a}PŽÿÝÓé.gk.E„‰UÕ}Ö‚ ã13ýQÌF÷D‹0›™ôV„N'—ÑA jžrý(Ìðý’öùa˜©ƒ„¯I½º&X\r äJÞ1"hœ½’bPÜæ@›Ô¥ß¹Yºqg¨÷´ wŒê¦ìð©I£Ùx©u5[„½0èPöÝY“ÉÁäEV]_M[~£~ånB”0»Xs¸_u«ÅªVA~Ï5©UMO­_bj¾H’ÅÆ‚`âÅ Tî9•6Ük…„\¿Ò©³äq€WKVŸøtÌ)‹¡&oêiŠõÁ£i8ý‰"C⦤D?ÈlïŽÇ™º¼ÆÊäoˆÀxŸâ#sœ„VçµO0G‚„)›óyGÃŒ>E+‡|cx¬Jv¡ýeàÚkù8ãö©¦Ã7:2‚ ïF®±cÝšIÂÆFÖSÊ ‡<­s$ÿù-ÖÏo%Ém€Ö«fò®†³3 JQ÷†ÂÎVCe”ç±Ån ¶PŽs…9“;ЗÜ"g¢„èJ(R~¤Ç¥FzüX#]Ñi‹U™Š™Ó¡FÌ6rx«M^µ§ª‚â;ëH~Bcð3»¼#Ý2ID{ƒáÏDÜÆˆô˜ñq(ĉìzr~Æ9íìŠ_<$¹ÑÍüËi†Sœ¡K×.FvØ‘‡uÅ:DŽçWýÃl?›”÷ÉŠûïË' ½±Œ(HA,ÛåÊòÇZÆw*äÊwüÑŸGü§ð~î|~÷~vá'ÿŸgøÑã—6¸¸¥93í¿ïõ£ÝûƒC ®½ÇJ5k zïŒ^³ktÖn}<úoÔÞöß“·ÕÚÜWâ÷ë:ûe¯¿Ûm:\É ì°ùKpìQ'0*ƒqóÉ=”ã+¿ I¬Ð~bbgÉŠŽ´U<5eªºæ;yJÜĹãØ@ÑñÔÃ÷ƒuÊ™lÛ¦Kš [WÁš{]hÇw8“R¯B?¿Â¦[¡Bba{´ø¨`¬[nKtzñ †jqî± ÖŽ¬eZQ;Ñ0ºp“P®Â^JçE5ÜÈšÂÛj_!‹e­o¨AÅ:ã·þ_³ì^ݒɈа`ÅoPP´ƒRNo§ð×LÊ äÝSÜYf ƒSQÇ”hB†È„û;/HlqZRÙûЏ<Üm6K?‰[pVìȘƒræ@\à9d48TϺø ^ÁSÕdû³=Nª h4Ç)=láS Q ™Ñ Ë‹‚€£¤p­.œùdäD*ß®YÁšªRÝl(a•?ïŒtôÐ à´è3à¢FcÕÑE4ö%^x.ß•S>Žnï9¦mà?jSxùrªœ )`ωðJ“~+~¿”´™^îdR’m PŽ6´îÄÖzê]k5Âö«˜‘â ]"¢ß}A»©wÁsFÜX#»Fù¤‹OЬEiÂCmhhd};’iÁVJÙGª*Z;†š1M¨ãßù"˜ý=%‹ºXËŽR[eÏÄ_kˆ+KsP³11Ð2ð2—Èþ4ŸbÙlÆÉÔ ãÔ¡ç–&›¯—%›ÇÃß3Sc^×íqЩô©&èkQ@K”éÿ+‰[m .À¬Ú©]Û™ÀÉdnÓ©èî†]-·x`wËfÙ-ªôAÚj!Ì6¥Þº·Dð=_Rä4ê çµ*‚É“Ði$´U ²W£gW£{|lÿŸWßÿÏγýÿ“|žýþÑÓÿçqvÑþßÜ|µ™xþ?›éóþŠív×ÿ§˜µ>ý"X?æ|ÎsAAåï!ãàIÑQgLŸ¥øãx3ä&´‚Ð?%xáßÍý§¢þ:*rÑ1œ…–ñBT_B^>9ûByô¼ûâúöð=c¹öä4súeiçŸWè´#lÐo'#½—kܸ˜^‘a/ÚÚ€~Œ »^íç!v#·^P¨¦bæïXƒ„Jx™à€KÚ;FÌ€Z¯¿‘¶ò¼0¨§3ÛîÑjùÄõÐ=Óy¾·¿ 3Oi7-ÄMçµí|H›†à(o9o­CÈ6{§¼mvŽÙÅjÖÙf£ >žc‚Ö›ºíE¤Ë-eª]`«Í!«\I¬oOì ïa­¹ŘûoeËm”q=å8$æŽÍ„©f ô¤ÙÖ#*ÄI‹o±ÝG!~Só M.o°„a9‘ç»3éÆhÛ ÒÎ=$ÃDÜnw1r¾frÅ*½ÆÁZÀ´Äí¸²¸*ì3³™´m@Ë"ûpX&vç˵£¼¿u†œÒ©=¥€aE +)1¨/4¨%uðö¸¾ÈʨA9}6¨ÿî êß}yèUÿüîÙXÕUÏ7Ö°Eï>ü¢wCŽOéð¤¦ÿE¡‹O;5¢!_àÛoÊZÎ?uIŽOzùó;9ø½®9ÄÞ%ñ {c¥M¤> è!`þ™~ ¨ÁžÂ*p²ð}LÚâÎô0@}à£Lùåám4¡9Œ6‘é3R¨ :Àp·Ò²Óí9}s`ŽMæÒö³_Šûj7 OU¬zPŸµheU3 ò­j÷›O~ï“9¨³xß7‚/§º›ÜÑÝYC\æð†YWÊCÊ0Ò¿Î5à°žtº]Ç—ÊÈÔš¿S™3pÚûí×2 pb˜¯ÃÙ‘q'¹ð©†~ŒºFëנؤ¸Hjh!Fà¿7…Ïþ0ß¹?Lž§Ç³OÌ>19z6Ë~ø‘ÛEšEßË*Úy¶j^%Ó&Å-Çv ¾^Â0ZÛàFL£éç>ý<ª3þþâ³ý\g)˜E³^žŽ¥ )lùÏÓè½£ã:ûÐ}7â‹É+ð¯Ó$0…{[K÷?rl£UóÓèz…·Úú€­ýwš3»œßï³Mö?Æ&;õ\Æ&;U}ÝË&ûUyãB±ô]Lp«Ÿèg©|–š#É1/¼®Æ)Çð}6ɤc½`ÿÁòÚÎ=ÆNñÀ€+G(¢ˆ¸Ð‰ë…ÝH¯åÞÅD£üi" ‚« ÞÄyKé¶!4…‹ÿüÎ)®í£Á(ÁÉà I©…Iµî­c.‡xÀÜôàЬŠ[Ñãõ»¶óJÄoe¤5¹ ¾q54.Ò›@÷Ð ‰»[h‰Œ @Y*ápG… ì„FUo6â‚tÃO },E®j¯¾®´ßÖ¦9¬ž*P°¼Pj30 ÃJ¤%–ž~AÅ%2ïÃ9†r޹; F[4{$RaßQKª†cÀ ”ê™&X•ö3Á2]]¦ë•ÙÚðó¸ÛF±ÂòF9濉0mqþõ„·Cf½˜kTËÃn„ ”^ àBÄy©±‰ á¾îêÙ[¯·«ÝñÞh AÍŒG­–,¦cºti{ߣc:òœïÝÎGãéä…çvÊûdPaJG/~Wuå69y¯!eØDTô¾”ýʯœf@>êFCÌ¡¸z *úgC§}ä¦ÁSë’€Þ¯",\oÒÜs¶ý;ˆ6”ÉC…¤9£KqMUͯin¥#¨KhPÆp¾¸¹"3B ùí̧L%¸´ïÎŽ?'o”„Zt5d“ {P|âöÓ–£RÖ8,j,:¾Nó‘b«» DG½šP7 ³JU{¨ÎrH‰ˆ›ëò:1A˜¼#iÍŸ½?ïâ( -RY—ˆç’Ký ã|-ÛÙø8ˆ?—Ó» äþlÎIІ%£cÇÒ )²GK9Þ¿BáOé†q²<ĘßÑ­Ü€£¨l×°UP§8X)™ÃHgüT2˜íûë Lu¢ÉåÎÛ÷É¥ôµâ”o}­º{ë¸ã‰ñ²ÃçJo¥ ’)ážaÚé#â4 þ£Áë9¨Pî•}ûÐ>ð~=IªôuðýGNŒ8£±¡kxÙ~ðJéµJ5_™ÿ»c3.¯<> †ÍÂ÷×áרiïö h?m…JÂ}) !·›<ªuÍŒo§Ì²Éôî Åt`i²o ÁtßãSkÀ/\”rØ„ 4Óù|tfzóÐ瘘Ñ¢õª%^yÉß@ÿÛlQV«iíŒÿXC} ¿ø3N¤f—0›©m†Å‰)&™…Ïb ¹£!ήã´ìtÆ$–÷­—JMÏÁcÐÅTZn>21ûƱL›d·ÏÒ‰‡·œbÞÎ@ïé tñ]·è£.]âš³#¹ŽævóÓ«%HDi§p¤ ñšûG€8âê¡=þÛ¥8̹ñz=”ë@´_¾yi©+-Sy'Ø?**ªîYû’hxk7Ú**F [Å£&¦¼ÿq€.wÀôŠ•¬«ïâï¾;•»NånnårÇ…¤Äê ùÞ±‡ã‡¸ÀåÈ{Oˆ¤È{¼>… ‰á-1:èÖ:%^ã)ñSàÚ`lr´"ñ#…§›3Ñ‚)ú“ƒ>ø¼ì=šúYÆ(G¤hMð ŠR”_M©-9`ó±ˆp-¯ÍÙçÙíB^ €·Á§øž,¥ ܺ;'Iˆ9’ôäˆ+ö5ȼ»ò¾º+;/»úeW½L|éIi†Q§¡Qç œÉ¤û¦h‚ˆu€ÃTùi¶«ÿvw²Bv:ÿ8srˆ™KV踘jC Ë­Â)Zq]‚ÉÛ¸×8ÐÒ†ƒZ"S[18‰6ˆ¶o0JºÄ+U9EÇ…d,ɱA|;\3cáñç‡k≾= )1€kà?Íü–š·ÒBZQÅà8Í"oE“F3‡‚EuVóT¥NLÍi‚^‡¶¬Z ¢Kg®6p1{6!>±;ªS=D âÈà% §æâ*rFbœ~÷˜óϸCã|K"G”¸[°–=Íõç®$Ïþßÿèéÿý8»¿0ÿc’nò?>û?ÉG0 Žÿwù@?øÛ•Kê¼<§^,ôaø\p–(QÏèeŠ¥+ð.¶ü›órÆ›X>9ákÌÝ$ÜâÈÃÑLàdñBmC3Ã9Ü“dŠB¥ç" nrj@Uò:ë,P34wå„Ð ¸æ¢!-å"þÆyÝAPo¢|+ íºÕ9X–²IƧ¶Oª¢|Ô Öp'mð`AkR„v¯˜çx(ì`%ïÂÆO<¶Êãù–,éZBçT:ˆVúÉVáè¡?nèOw£ó_Eøi }ÒË‚ÞAD%-õQÒ²-±•†$”QÞ‰«P,°D¢ê¤ÎtÕŠ$äIê¡×®ò/oú‡;ö›¼ k´¦,jçw34×֯⯯Aø6ÑŒymÇÀ×ü,%_M°'B˜µáù7V9ã§"ºpªýR™™©,½2µÑPÙÀ‚ãüðü©ˆ4a²«»á삟EW£… /.^ÎïÎ3ViòË!§Vø×«¿Z`i ~K¾Í4 çÓ `ѽz®yi¸‚§Uõµ¡þ’l3ù–£¼ ‡1ÏôÀ¨u÷lº#L‹éÍÍTÝ4ÎF Í`¶K½Ç!’ü±WZšƵœéáBZõй#ò†¸¿Æî&ª|UÎ)àÞ9ȱÆca+‡Í`L¼9Fˆ8M@nk-€ýÊp ã7ÕÈÒk0ò‹i6'~áz8¹ÊŒ™ ±vsý1¼ÈÎG7ê®Ë#žäõ^‡.$ß& ‹±£¹_€ìÜ-ÊâÔð8†Nï$u7Å0UY`4°ŽÆp${Zùš±_'`by ±32Þ×ôhvJŠ(¼‚&vŽ¨Ì±‹;»m„ù˜e¿÷6½]Œnè†Fcà6PR—ù‹ rÏÊ ¶/l‡|âÀ Q¶Ã žxóiÝ*bÜä«I0Ú…Ø "íˆq2q–„™)>ПÖÔ˜€=¡§©ý4íÈÇ ³‰MñxËôÄ…,3«8Ûs„ÓcïŸúÊz?x>ò:è“|@vø‡uÄP»üg•ÿ×Fÿ“ÑbDc@9:ŒÑ0†Qýí xͲ} Ö?dî>5¾ †qŽ”Sæçê¦\ÙÐé̬m»Ÿm‘•):OÄBo_Gú5rq Yì¡cªU! ä†`Ên‹¨/àìÿ%Ü-êÂá  ¬§ÉVIJéTùì r[!‚9§(óOY½Z™…9Oªô]ÿ…8]Û÷9ªÞPå­÷üØß—¶­²ˆmɦýùú¶»æ°:Þ@;zxü¯ÈÚùkHM½déhT7í ½Êµe*CÙ …3ýÑkÁÂé¿186=pl…üò% ÓíЉ¡|á&ƒßaåå‚rMD8V>‘!ÏÀ™•Æ3Ïjƒep€áõ¹Ü,Æ«}a êš¯Âó†#›F쇯&ÔWŸê;Ï.wb«ùZ®-žÚÖ‚o›&e.:¸´÷½S¼±•_«D¢Ø™ŽÎ*Ø­çy¤?.ÊíÄwÛ«âÝV~Œ`§K‹°Â _E ¢ ‹ ûkÙ ÅÛ` ©K“ÍD‚S@aˆ_w3§n7\·ÜÅp‘.v}n¯£Ènö!që”ÞT&Œ¥­_[Ö‹Ïy|žècÛ¿ûÏ­dãÙþëI>ÏöŸÿèiÿù8»¿0ÿÏÖN²ãîÿtãÙþûI>´Û]ûϦ¶ÿ<>ìwN1 ¥j×ÿyö‰üÇçÈ%✗i-z*RF3ùÄ›Q €tLiSº²iiú¤õÙ¿ãc~@³RÇç„–T¬.Å”°4-›ƒ‡Z¦á)c.z`%á1S—>Os×’†­–­+NÑ2x=)²vÝóùÈ&DÊÍm‹6NÌêŸæ·’V³²BIÓÙ É4d#@Uħóéä·;À-°kž_ åiSJ”íÌЈÐághÌ$bzUŽ?·×(ìæ,Žeym,Úƒ„"‡Âbµø$ŠWÚ¿ûòR=áä+<1ƒÝ¡/,šïޝ¦3ÞÂMx N|><Þã[vÂuÌÿ дuq=5,ZAUsBr„Ž€Ð^¿¹f¥ä2M/D éH7êùC†Oö+m;šýq;ìÞŠMjãæ@÷Íþ““üÇ(µ”m¹Ì?³8øä&þ!BVs÷føÇèæîÆJJ¥9Ïe0tÒ ‰F¦Ly1ˤ±OÞ®žsÈ3»–jN£ 4 _„rßÜ€•j¬«Úe“ iâÂDr‹åƒ¢2]6J$qåØÔÐ\#’À¬ÓX\›0pó N'žVÓ8„ø’ñóáÐýÜek&ˆ+ÃçoÙåx:UÆÓ«ÿMY¥÷’PcmÍ1_Å^ÜIÊ7M9“ñ¼Å*µxIHÞ@’û5\\aÔÝ£±t@{bRÕEš‘®]@_*ú|OhE#É,\¾Â{LÖÀ‹Ö‰»£sRCEìË -ÍÙq–)ÿ;4hASÝå’¹•ZëGYçAÄæü´’à›ç–«†£rÞ@!ƒëoÑ!$à÷£Í±Mò0´™î¸`2X%ìwÖÄ|¯áIè—}¥+ÞØÃoëRñ;z¬Åò7Í£°‹dtY’†‡ÀÄK˜Ä¢˜¤Hö 7ÅdNf´”lÜd°jÌ¡÷ùÙd¢$óÊ ‘Eô"‰N¢ÐQn±‡WÙš£Èå<—ð$vmzN03·VYˆ r;õs»áNm#¥e˳ob}`† Æ*•P©`ÕqÛƒ h¤ÎV§ ŸëCù²WËäöÉ#{Ê‚ 0„²Æs e[ ,qÜ0šÑ¹Ö–Ä\‡¦D [”h% ¹<›«Ìq ú\¾w‹_Ãܼ­V|n&”(”à'ÈÝ©~ ÞÚÌ×U.?QD^9/ !gÃËì,9/w¬ë¾¹@’¤‡œpn[Ê·Íè°²»™ÕXE\þk|kUÍ/ò~Ñ¡ž¢iMtl+È{žŽ•WСj´0ÛÓ³?ÝßÅŸNå‹E–ÍõNvp°RúŠOôÂÓÞÇöÿÆYès—£ Úç¬È;þwŸé‡ÈÕâm÷ÚðÒAµ;‡yZTx߯Sb hP&‘ú,2Môúð°û'y Á΄Rð;%¡Ñé©;"TлÙ}îvâ+„)ꘋ!êû¸ ¶wÄïOâ÷ ”Ëàá^G´ÚÚ,ïcד}ÿÙ›N >„*$âU_ûU‹?%¯d­{y6—Máääé"^ „RcA„¦2£zõf‚þ \¤sÝ™ÄTrgî–hÜuúáS»Ã(*âŽKr~ñªFô!€ž•o àz×þŠlõº’dùPá–îlÔ#ÀŠ5ß—'Ö Àj ë7? l ÿ&œTˆYÇ‚69²ÔE6h¥ÊÁ™î*(ãuìÏ)ï¼÷*»‹@ìA,¿Îª>…ü/Zi‡ )ô3-r%ïláêf=¦P$t›c·$ç&qÁœRm`훽¶âíá Q¼¼dS¢è Ç#$}$5¼´ØVØü}Á‹w¸/M‘Åø‰(rß¼rëíÕ/Þ^ý¢ÈýEÎ ê» E®à$ÁR©2÷ïM™ûA™ûôß¡Ìý¥(s³¶”i(wVA¯cN”¹/ÊÜW”µ¿e¶ë#ø+(sª)s¿eö=ÑC p{œ3—Üx¹0´tjÜÝê« &¾©Vá.¦¯0ÛŒLyèŠæäL9"ÇUS+:9ât ?¸Ø°î;l˜t-M^œïf3~Óí¬kúk pó˜çj÷}zÀ£®s ¸{ëð™cË a°zZuÙ÷À2Š|Á$iµ×ñ0pùaÁûÏ¡Ûàä—ñ/´Û]ÿÿOvrÔýhèk{-PÑ"*CmËæH ·Ù‚ß­{d‚úþõå¹VçûªCò²ÎØxú5›­ÜL ¼ÕÑ/³ŽAŠoîÆä B:çád®²ŒÌÁï"›fÙÅ:ëf ,·ËM¦¼U†xCÑ8}¿wíÁ-(_¸Od\FŠ×”Ý<à? ø#p²«àOê}®Ç+áÌat´Î>}L®ñÑ¿òÑ,2t?“.Å׺å„af(Œª ¶¥ð Ê‡b‚#XñóÀ©ˆ®âó‚ª-·ÏOTµåôІ¾YÆþ“,aAØ1˜á°c9çÏÊ@{W/Ê¡„ó—¹g¼'Î$ã½}€ÈÕ}¹º)"W×ÿÈÍþ:§77ÂÓëË:;ò1¢¹³ Y_¦³_a=¾*ìÿÙ$ëó¡p¶Ê ¨ñü|6º]¾ +Jâ¡Pu©Ç:Mž{‘rÐT·‚iÌ}e&[è¯ÔE§iÜøÝGLË–Æó$ÜÐê‹» BI¨žtáj]ª6VÕÜqYNñQŸx´þ]@ìë!ƺ0AÐ{=¿x¥WKÐОôDLÐwwÃRغY´ûÂJEu“7Ì;¤E*Ä2"±º3 × IXOøØK_? hF ž=¶ã“ìT¶l ÎD8Õ“ÓaÏ·×ÞÃh;s™a@ÁØHÄ,G?=BõãÃ蟔„/˜ ÈNÖ±jZ%À ®†Ö:ÖŽŽ¡m Ä2!zk¡:" tÍÀ‰}Í1Œü2šëC—÷@ް®—‰Óa Ìp~žMСk:»ÈfV4†RÓ6H‚ž?\¥× Í»b'ÉzF˜HÃcÏΘd„Ò…t±ðE@Ó-ÈȘKöK>,6›¢£÷ ï æ0Q§k¹ÑúŽ“öܹ 3Ñ\Ñø¸ŽøB‚ÒiA1R¦y®À â×à*Z–ÇgÁns‚Dl…eC s‘î‚ÈPºîí,ã<åbt;ј ³K:pZÄIÒõ†úä°‹%¬â9»âØßnHo˜O)Ú‚mâô€„¸JÆúqîœï3íò+óqVæwgkpS»š oÖ©uM|t}¢B ¢ÍðmY2ŒJÇ$[=+BÉ*Ë ÷Ü¢%.½ÆÓùÂ^äOÖ ÷OÔ±^`QBñ¹ëÛ?1—·äÙ…K,ïÉj«{’³¸7Ã?*¤;?c$Ó¯q•…Ã[p«`éÔ¶j×PWV±o¼}Š7Ÿ¶JmÓVñ.m™«X’À‚%V±µÚ*¶JlÑ–±CëºNt‡ú.~%Vy«jîÍ/².œeü<°!‰>Ë—¦d„_hœæUD Ö À¢%9ÖÔrŒ{ª˜IC¦¼078T/FçË“»Ä| ; ðgð‰P„‚#· F®„zÿ‚zÎáìxÒì ´®®‘åzú•ï…É7ûDž{­¬?; .ç€(Þû.ãmØýø¾Ó²\ßXÿã 9šóˆ7âñÉ.ÿI¢Ý}¾À~ ÈPŸBë¸Î@—~Øp¡½ñÒÛmóNѯ?xOnyðõøKóhÅ|~xt9¼ãƒ ×~/Ëæì;lþòØŽ„â«s¨ï`J“²z+¨ôrÿ¯Q#‰ÖèFj¤F |6˜‰:(®ì;xo¯E óùU<÷D~(äרö;iåרñ‚C(’½5p¯2K"H/}D÷¯Ç8b˜(ƒJlM6Ü17LUù­huo%hÚÖ ZEhÙão-1|µL÷rêüTÖ©S·ß¸®çã˜o¡E¯Î?ä9»€Ç¦ÑT\°ëì’£œ€ãòëh®GŠvÞZK­v `¥óD‚SN¥Gvï†ÝÒriÏg¸¤ &—³9 !‰uEªu !C¢èTÔ7¨2–© a‚z‚‰v³X Ú‘8~‰|è¥Ì4ÓÐõ<“/iïÅÏ šÿ •þ†£ê˜ŸR}7L(c[çî©…™1O=^TÈÅž|fp+…S#ÍKNªçMÊ3¾vަ1xÔz‹P~ädK×cÜØQaRƒý ü ü ?Þ½ÜÝh ¹&gb–dr.õà ÔŽ«±Þ‚¾®ÄÚw‘Èü¾ 2ßYv㉠ŸöþS»/ m³ôy›™KÅ<³|;× X?CKã/%Ü5‡#Š)®««œPDV°í€›u8[„äø,d ßPh'‡â&ùsu(?¡¿?($Üe°ðî»Ïu·ûQLóSsêΡ]¸þtd¿ ù¯ÃÛPö Ih- 0:|a¤kP0ãL‡a{€ˆ1YLb*Ht*AÁŒPÂaP=4žÎ}Mþsûè“óbRóAg7ñ äHhÂüá·Ðåżx¤¿‡ ·–óøôäÞ¶ýÿâû±ÿß|¶ÿ}’ϳýÿ?úcÚÿ?Îî/ÜÿÛ;‰·ÿÓ4}ÞÿOñ\ƒcÿOa½tT/ŠUIá%eÉC'_•î‰Ñ͵Ôc†à{÷êÀÊ^¦cØ_ƳlböÔèž(*ÛRŸ%ðK¦~³ó°¹a5(Ÿ…if.8Ú1pÙ<ƒól ±„)ÄàK®% Š€‡ »Ì)p8tù%ó°ù ŠIú½ŪÌåÞáÑ´y»pl‚ æãûúªF*KŒLÙ‘Iažˆ†‚U¼Á˜øP*8´ …p—â+ßM5Rǽ¤b°²:EᳩPKk¨qTšÔAêÀ™â¼"~ÇPNŠÃK¼0öåCPD˜QV:]ÓÞ¡o˜2ÀÂ_I!²V%rÀ‰gÓâk¶˜ÝÞ[Ú£U õç"h 9E)›Vb@ÂéüIÀËÝð?pLU²Ó˜ ô™„Ž~¼.8l¤ös Ó÷ž#ÃjBc5S¢¥aÜé<éÕ0ƒ›Z°nXmyƒ¦EUÅ7»j?RU6ÛW½ö‹‡,ܰڊ ±bͪ*p4¦fÈ¿ª8¼tÃ-ÅùY@ =Ï‘õ þâÈô±ä?Ùw$ÿÙz¾ÿ=ÉçYþóþòŸGÚý…û'ÝL|ùϳü÷I>´Ûù¬$ Q ÓoFÀbMPw4Ÿƒ7¬¼Ã@¿€ä'DY&zC³Bý-' Ú°Ñd´A2QÔ²ÐMO¤ýKÛcoê{ó¡TcóM=?Åy ©y¯ø¯»IËo‡ m–¹Ðõ Ï Á¤íaŽ®×oÄJ¡® ])¶®êÙâ¿Hí 1ão–1¤÷q[à#iÊä]"@;†®C-ˆJMj ¥-*Gs<ö G# v(*åˆZ¬û’ÊZ`6¹íüë­öi^¶Qí¿ì¶Û3Û%ì‹çOw;8‡[á™j–Ëf,[q°„&¥™±Ùìèáî¶õ—ÿvhü;!Ù•cž(O½œòs!püOÏò•ˆîrÐHÉV ™WþìÕRÆO{߇@ìö±ä¿%ß‹üoskûùþÿ$Ÿgùß?úcÈÿi÷íÿ$ÙLRwÿ'ÏñŸŸæ#Ø[þ÷)Aû/r$È Ø–ô•ø€ØM4Õ’Ö$ôû8ŸŒØápöÛ ƺïÐCI÷XoH>VÌv‡gÓÙp1}C/›AtÎ °Pg %$ ‰ ‡ £!ÕËŠÕ)S|½bCß«ÐtEã8Š_º²-#ÛtƒÑ®WöS’Wv®ƒÈJïÛ+3?tlC=Ú ÆX…`Å0†é5ÉÀ¢CXT†åžÍqEÄu… m£?q'ÔÙÝä"›]ò{ áwúBë˜0_AŽì?´qË7XŽAä‚ËR8Ó… hôbt‰‘u@:Ì~»ÐÍÎ1øéÁ:ûŒëùÄŽ;¸ ×Yo]nA¾ò|ugë`õz½Î>OÇWüétn¿··ë,ù)i¤›(çI~úiKk†ÂFŒ™nné¶¢+)rêÅ1úÏæÄ-BpCyÛosÖT0©¡û‡yk8ÏÖþ³ŠÕZBz]63 $5dúq1 ©æE_ŒÙ[>AøÅ‹ Ìjæ÷ˆ¿Xbâj‚{•ä †etb*6^6žNo×¼^79D²ÙÍhBD„SþUHq§h—©kã`n² õ\Ô”ýØÍ„ü׋ŽoéŠS›¯ý0a«ÂXC’E³wþí­&XT7ßQªÎûCñ+lX¹lD*H(H¨RúÕêÒïOâ{°bdª÷Òm¶>䌆Þß_6ÞÜ=FÛS ò5XILîÄ *ŽÈdØïùñx>%Åñxtä§ zNa?tB[Z–rHTä·r=û13”Ûy*›B4Ù0畉˜NÜ¡¬ùNgÁi‡ÎÑ,;G?ƒ 0D}ÍBÇÃË  àZa”bMQ¨8œ¡Ý—²®,b¥qÅ5°b`À¦•íמQ6 •EêÍ÷ž¯ïþ«!‘´Ší$R´Aß© ;6‚Ä }œ«uÓ‘~{AŒ|öbn)L6’ðì]fF«QWɶxÓÛ:bªU#HSÕð§´"ز½/0hZž:QÌékç\H=j„·Ÿú®`ÄNkÑÃhãöös¶[\aô)yVÝûcëÒïGÿóœÿëi>ÏúŸôÇÔÿ<Îî/Úÿ›[éæŽ§ÿÙz¶ÿ~’àØýq§ÏjŸe>ÏjŸÇVûœ.­ãIµŽ¬;1©ÎèŠÏMéxP ýíæ&S6-ˆ$Ë%ØÂƒ«¨'õÎçÓó òP„7 aÒv*Õ9Њ§ÑYRñƒÚ¥û)­ø! ¦Œ£‚;7–Š 9Áú™ù¦a]LÖ-Üqx¡.-í×üîL§ 8­¤õ­úN½¾¾¾&] Álp qG-%p•:›þž u“Ö¶V’úf}›%–9rp¾­ž°é¬²ƒoÓ;P]f³º„Ÿ^`³š2Â9êF7#ŽÑÒBô½‘X„¨€A3ÆÓ«Ñ9ŠÁg#œq¹·Çï5¢% LÁgâü«ÑK2 f£,˯¶·_'L&ÙÀë8Ëð‹áLæá¡¹ÿ5†Wy¾j£ âãH¨ãzÃÞœr:8¦@| r„Ð ÿzËQ–ð ç´ù—j´N–—Qì°­ª9B*wxƒ×ÓñÅÜÚ‡ëZù"3i%0ÿ–Õ¸T! Âlöü ŽNòª'£ ¾cE‚ Q05 ò=¢bH=AÎÝ(90— hdÓjD)/8ˆï& 5¦-"T¼×î|>~Ùëôþ'µFµm5È·"„³ÄôsŸ_.Á ÒŠ’.§d”rÊ&_ÃDÇ'0X[ãähStL†Þ*ÚðÄ©O$Zê“ÿÝ ü )¹¨§ºì²2ª&µ /« »¯.ì¡”aËjÃR¶’>¬L¤&”OŸõ›¿a7½ ƒ„KÈé^æÙâ @QeœÛó–ÊÔ¿d]2¬&ß¼ö~Ä='{}lãˆH;'!«Ø]NÿE’·#VŽQi¬ÉY¶ø I¦(7`"=Lþ*õ_k·Ó”qŸƒú?,€™ ·Im ¤•uö¡Ù}Wg{ü˜|áßß}<éó§'½v¿×©g¤VðÛ6|ã­áàUHv+?:°ÌuÌ¿m‰qÐÊÆÒªÌ€Ã ð90ï°³%„ü×Q¾ð óŸ_>tºMñ{·Îr&t€úÏo¬·ÛyQÀ>óŸïšòæè¨ÎŽºæÁíÅ—¥]gm`Zøl¯½w µé ÿ™Ð/P~örFÓÆ‚PŒ7¶‡šFj•¶¼ÅÝö(Ä>Á»x;ŸH«k+x9D`&Í“:†á??vsÚàoù8ýf‹å4qgYÅ0²J÷T‡°¡ÛÜë}ÎY R*âºlÇÏJªb [„ËH«°¬Ö˜Ú¿GòPžËrpäœ9ã*xlé°:”T’„ük1eôÃ)¬8êðB¼½ªE“£øsþ t3¦:¥@n¨z:ðô…øÁõ߆ÃR¶‹ ÂÙ ¬ŠÊ6˜JP[jL(Ýä‡ðg•²`ä§§0ð4:ðÔ8æÇáÏ6KNf驸£7' ú}Ïûæ~ÏpÆP9ë1=¢wnxêSi0ÐŽC”—Ù6곚 ýaõf@FÊßV¿Ã…`GpØV!…µÝc]«‰.Ö˜UåXͰ*;b/Y(œ÷ñzwo} šn¦Âü+?ðk¤ˆÄ¿¨ymr`­LévE‹¼¥ªø‹·hÓ¼’‚;Ÿ–Lt‰UïI8jŹ+žÍY/vä …9DÆÉ[pñ+¸@Oøí/hL@·yRuó,ÊË‚êîSG?-z!âKCÏ€°KzOÚN3®Ö› X¤ríÐÀÃ÷ƒr¡’ÚÚ³ @j% ¬—øfÕ18xmRX³Ðî‰çvßbИ™7QתMë‹þ ÄöÉv,Ôô[Ríé²¾Å$YU\Ý(mŠÒ…çoZ´5<¸Ù-Á#ЍBá™VOzß©[ûâ›mд5f";¤ƒß¸X*ÚzÕ9î´ÈbÃ4‹: ˜Es´¦ðÊø=ÇKgÁ<–Mñ$}¨ªR‚Ę}Îù1k« ª‰Zä¦Éì_£«†ÝHÑl%üªQónûoB8jT5VÓœ?¼¶S·]T'pY rªzpXߎ bŸRx,øbì±Þô+»„8Ý¿Ý ÿ°v”¼êˆCƾˆ©¢vMˆ_ Ž]è¾6ð«5• çÉ[³x%G³ìtÀ!`Lñì…¡Räÿ¬á#)NpððuÀ|]ÐøÑil9Dæ"? ¦€rúÓ A)Ææ]^éƒKŸz þvÙ¥o¶ôɽßÒ§ä-Wοëú °¹ªßÔí7^X(Ù¯{0û-¼o{ýn—í7Þ«Ûg¼¨. ûLÒ ](ˆºÅ¿8#ѨŒ¤8ŒjÖÈ×x=;N"m¨J2ÂÜ|ù(Ô3H³¥®FÐö5—'{μ¨#{Ýœ•C6øv4¹ªKFL'WëNÑÎ÷ÑùâÄ€IÜxt 5Ñr WFdVI›Ê¼Ì³z"“3J1…÷oʶv‘] Ãܻ۩4gä,1ϾñÔüzz7¾@UùšðœÒI›¶!|è›’gu.ó|_o ¶uW°­¼†G“ˆî½ð(8~·-æ•IþUóž»þʹKv5^P–ù"»uókÆÍ ²TÀ$œ’iKÛ4 &+tœ’ýKø"“A;²•!s]¼Šl]Ф%ÞÚº¼G«ã@óÂä…óãx”€YnÆ×U“TŒW#CîÖàèˆìè ‡ñÞúfŒÔ¿S,ž!+AÔä¡™<¶ª@ xô`##<¾½¬;ôq®¾aÂnKœ"¤“ ˆt±`!ÀçMëœÂ§ÍØ!Å >Ó˜¶>˜bÀR s¤Qsª‘ÃѢ‹æ||mªÿÑ`&6%ZÐ5/>)XXÖãŽÈeu]¥`xŒ³›_K ëIS3KèJñd›Ö‹àñFc‡€ÂÔM…nÂ"4–@!ä»qmkþÆ ®´2-‰„(fênkðoŽ×4ÿdüô!‚O­yRc†¢ _ëBmoþG°aÕ*ÄB§F¬¨¿TIü>ÏŽßðÒLqˆgÓÉ•,À^~ÒkšJÍ-ÒAw¯£ÝOg ׄ„¦¾ïIÑ*OsGêÄGû–<ÚMÛ/S»Nƒý) D;^ á39ð!VŒñQà‡©"¥˜NùÃÉyæZ`Ô„ ê\í7ÄÃîÙ‰¡¦€([³ßoïQ ¦SöªÕÔ-Nü*ÙÐUIŒö2ÔzŽO¿Vò<ûô?ÅÇöÿßü~üÿ_=ûÿ>ÉçÙÿÿý1ýÿg÷íÿtcssÓÿüÿýI>´Û]ÿÿâî]- Ið”ÀhhÿŽC'ÝH6ŠëAé‡ J°šÃáîFÀϪÈÃ*×£ÊpœzŸë…±…/TóäÉÃ'l’ˆÊTÖ  $Ðe>:º¬€ûÎå{8ÊŽðñá˾°w3pcIéæÂÅ’<”ÉA{xñxï80fäg,Ý×…[l ·õáx<1×;L€ƒj[éíoVyupæûÚ©HŽìÑp%\ØÃ®ëbqŽÊ ëèè­-Ñ~”gË•ÄÙ–á©%Ç–rý<Û–T-XBëªûŽå9iôÉwK[<È6HWªc’ÿÞ»99õJ¯`á ,‡†VE‘ L ¡h‹4@e½"Q¶‡ò±R ‡Ø3ýMâ*^¬sÜð!Ⱥʰàx'¶®ïb:eg£+éÏOþ¶¥ZÒ¾âr (Yùbô;ºæÉºh?­¡ h³¹CÇÃ+Ä&, Ž)Ÿðï!:Ög‹Ñ9«8!-¶¥ã4Ùo›c„ Øaˆ˜”XmY6-[ÖŒ¤QX6Y¢lZºì{V~ d&U®¬ø ®³yƈÀUj¢Ž%¾¿hKðµšÏ(À‰‘ A|¤'<"n¬’¿Cü§“þ ïûÅ/ëÍà×tÛw‘óÌòž·]äïãâ¢ÐÏ} ¸(ô\ÏÉ}L‘¾Éë[9|£ro‰¨ÞÛâ÷NWîòÁ¼Lf»sÜkör†…ïëô{5nÑ2,HµË{[—ô¢¦!®O’_}'!%„²¢Ô@@lË~O›Ú…HU*sΞ0>C³t¯.Ú·z'ÝÂÖ†3zé?Ö˜M‚Ì%Ç£«Æ…J Mƒí}Âñ^ÍÛÞH}( kô†P\ãpz‡FÏ[FUzü*4âMaÌ•@j:»¸®2¦v’|mL]¯4¾sbC$õ ’t/AO£ŸŒ‰‡—•×T’àBn °låv­½º%xå®p*¦¢ú±^Bùú•ÿú¾–gŠ¥øóD5vØv½µ©õ†I5ÕœÊÝ~ÕèÓõMÎ÷ÚÎiÆ;€–päöM‚s†[Ò‘ÛÕ¯ÌÒ^Ü>¨ü%5ÇðÊ™¹ÈƒÐ"ËÝ÷ÊFgãy{TŒ"¶=S{2ô ¸Ö’]Ij™ö(PÚÔË:Õµ…M¢Ê@4Ï¡Îõ´ÇpÄ“Ô(dÍoÑ(î–·[ÔÆtûA;Dõ°¦‹–4ÞFÌ÷¬îÂ.9û®¡b´¤ñ¶Lw;õÂî.`Ÿh¿-Ñ]¤3·«p9ã­ÑÕN¡--YIqLÜŠûˆIS³–8†ð2 ãW«hÀ€Cú³ ‰Š:½{N—öа¦ý´îŒ7—Õ7Û%Ç>ßÀÝ™ Ù%>«[s.îN—®ù¦8A!ƒ˜ßvCÒH4Ç3Á o1…]BV°ùø´åé;è¶’'¾ %º±ŠtïMo0ùCÃGoâDþE!1Y8[¶á¶7Bìf‰ˆ]ZäŒrmÒ"ü›ð‚d0ªipÂ_`µdó|s~{¸›‚÷ò @ÃE"r3†Ž™X¢FZtŒý¤=”k%4ƒxa³yÄ+镊¨ ÀÍDòß |‰¸eRâšž®c™üSiMAKq…J¢ëÑÅE6]ˆŠ¬Ò¶mžÝ1Õ´§¼.Ô9ã(ðäÇÈv¤gãì|Á÷Ÿ“þIám‹báG¿=7Dwè´‘†‚9ñÏ;Œ„É_GçÙ:;¿"`>¼´Ã;‰†<ÄÔäòðˆŒ~‘IeÃ:{Ïa>gÙçÙxŒâ]›˜]Vàw­M&æÈ¢å9Ü|m$ýé7¿%öHQr#5¢öd€[áq X§ úžÜN s?÷à!Ôxå£ Šš±2Íç‡6vâÚ6O¢8T_¯7øÓò¬TQºó Hš Ëüé|wJý:§œ:§C4Çð©º%ªûÚc›55Þ‰èÇãŠ>…AËR[‚8¸Ÿ‚<=¬߃a[dé¯I¿kÌÂ/¸ QµˆÕkÀ.iˆÌ… 6eõ!¢—Ôêò>-$ž µ 9ƃ›ÏƃË~lû¿­ïÆþoû9ÿûÓ|žíÿþÑÓþïqv¡ýßf’¤¾ýßÖóþŠ8eû¿%ïÃqy€¾toŹö{›ëɳýÞsR!É߆-ôÐ6q³ŒQ^ k¼¿ÄÎn˰¨›€ÖlúÇHxüÐ}²ˆ€×(„jÑj4hâó”è”F:°Ëí,û}4½ƒ¬4à `ðMiû¹¨ù\Ìz.Z!b4w›¹B“¹èX ,åp6Á-7ë²Éâ3bæ2ôÚë¼ì,³¶bS¯¨M™#­Ò@$ã» @ H¶ ÎÀ¦ÙÒµ‰[¹-¥W²‡^Þêê.*½5Óä©TF¢ê¤¥ë¤k¦YS AÌŸ4©{¤À¨*e0q“7Ï ì½éÊŽª¿gÚº½7’3 iÿ«ô5®Õm¢†RºÛbjKô_.cJ«w<€8\?½LvþbK+I¥ôK:ž†í®ÄÀ7Ö·w6Ñ| k’iS’Ÿ§’EF[Â\kð¡ÓoK«-2äZÆv˳ÖÂöðÁææfþ`µaÖ´ÍÀÊ¥ByT+/°ï뮣8›|AwùÚîÂ1Û<„G þäŽÀðé>6OT¦iHévóƒá<3¨žÃÅÍŸ‡góéüŠÕAÌ$…˜eç|ãRM ó%Ísæž]ŠümËÛ\ M7㼈ÇRè·yê`†ÞFH<µÒ¢‘¡–iDMƒ7 ?jýõw##…‰.»°gÉLÃ0S©šOü€X»©Sé•Wé'¯R3uÌ+T뎌¾5œó)¦x m®;ãu'i(œìi2û¸ ’SõéµKÐá§’è§k€áb^ÿÁˆ½L)†TwË„„+·4$šz$[ ±QY†›æ¸†˜¥º6á'c’p¤ Ó$†ôŽ7ÕM;£ } ;‚'?è!Í.›ƒH:êûûì „ÿQc>©¥t%œ¨'#óA†£k8î¦ZëœcØl¨¸?f…=R $ƒ%®²>»iU7øÒo­4˜ÄØDô¤s»È2’ů…̲üâ–ÌL‰`WÙNï ÕfêcOømœAîæß\ØfÙ|tqÇ™f ëÀq4ðáÓÕ%r ¢|{ âošÌL]Áh¶én?/ Ÿe ‚7b—d~Û3D4~Ûzìx§%f§ÌFúm»½æEDè0é1håŽóJRIÙ4}㻩Ê!ÖSÆõ¡Ó?°GŒöøÁ.ìœM‰ Ú [‰þx`³¢´Æ˜Dƒ˜&›&5 XyP3jˆí«‡'i[Ï$-0›Òµµ4I3ß8y{ôðséÕÒÄ*Àl" Ú©sŒ·B]ñ=pu–RwÁÀˆdrÆñ v}øúc+ä•i„ïcÙtsÉëœö„m´èóбò¹¤ZÑç™Þù·¶g)/ò𗙀ôlj™|œýûn¾Ðwzv2Ï”f¤G2q¼] „×7 ³n¿úBœÚg Þ²_a£¯£gÎ+8ú¶“xxð• rü=¯•|.Ÿˆ‚ßs9£ýºãÅ·Þ6¢ŸÃ…ÁLK“GA›10‹ô‰éç¾0Õ#ºš”%y‚B½ ŽÆ"vI‰ÐÝm3µ²ìÏ7÷7¤BDÕÏößÿèiÿý8»¿hÿ'é«tÛ³ÿÞzŽÿú$Á&8öß÷÷6¦O»wˆò¤CÓë¸Z·õÙêûÙê[0–+Em´=ʱD‹›klý+¬À·µø”o  ì¶Ál–`© ’Š›:”‚Êrë¨x‰"™=“NÑüóÒŒ (ßþ}-ÁU®¥9äÖÀèž”"o ” Ãß§##;¿Zep0+³Û3$æÆ…&Ê1kca?^l®\d@¾J …äÔhž yq·ŽÃ$­>øž.ÝR#Ñ8LËWKe5Šk kZ&ªé£‡ºÌ'ZÚ¶ª0þä=m†÷1.äQL».’Aa俯¥ „;½@+…‘1;')ØeʯPBY\EBQ&k¨ÔI:×>f×R˜Š•ÄKk—yô£m|MåDƸJæøˆ¹ „"¹È4ÂÙH¦Àbf™ exEó¥ý’¹ÕÌÈUm’2ŠÐRž6ˆ¥óÔ‡£\é¬ó„ô{#˜8Ý OíÇSÜ›ÉÈDBDj2'•«'0lƒÒ’°Û´aW¹Ô€\ ÙÃANGÊ‚A•ƒ«Ò°Ks`ç™èLfÓñ˜è:?!]ä|™¨‹dZo¦ãmÙÊô},ˆ5n3Ó¼¨Ï ÕÐðÈNjha4ô'æÈÂS¹ŽÒZ*CRQ½­\œp@¹µ°«‚»zuƒ†¬œ”’b`sÝZɃƒ €dy˜yÚ%¦¢„‘#Wµ[L 7ƒ¢ 1/=}Š­ îÃ_ ²UcgÆÖCOÖ©ÙÎ_1˜ c@):L¹¯"Èm.Gy·žò>Þ*™ÔÕÜ76u/X¥ÔY¥Í§\%ËpëoKåÉ7ä0ÍCwñ=Ô\™N²•O wµ¿ÃÓC€6ù A»Â)T°æ©dkZ5gø»œÚ±8l³9ªØíUU±¶þoçûÑÿ¥Ïòÿ'ù<ëÿþÑSÿ÷8»¿Xÿ—lnùú¿çøoOò¡ÝîêÿJÇ·ÔR0÷£•)ÏJ¿rŸg¥_\Xü0j½'×èíx=V¡HÙoà&¸˜²?³ÙtÍRóAmWÓ÷u´¸†õZd”‘4ó“ Z‹æx£"ØVŸ5{§Ù{ÖÌýhš¹g}š¡O;n¾ËÓ«Ý#Z8ïÚÃ$6{õÁ†©ÎøÕ#c7´ct¶³û¨ùä©à3‡“=/¡†+)uT4/Â;³+è–œ8"Sl»Ï%œÜö”™<­DU5,‚_²õ}H‡ÙÞ«³£ÎçÎ-tú{-þû°Î8ïЪc8…:ë¶›¾nox÷Çh<ξE´|Zïö½©¦¦îm§œºªõ¡Ùo¶,Á®˜€3.¸å`$ÐÞS=Õ¬PSU©´*ôûxYUÒŒG.KöÛ*P9ønÇC¾–³ébH’ZP·°Y6³›áb6úƒ#4 ³z¡ì?»\€§ ü=]]/prðÿËu6AÈpîòE÷© ”L„€þ*â¯Ã3YæÊÞ¼eGÕ¦|‹ùÕl°¿JƒÍêQµ:Oy{#C!Ãâzz…Êc1ás†Ñ|Z¼ 2¡Åû8q{°Ý8xÓó¦!§C“^b8+XBèëÈ)áT~÷‚UÞMg|c]¨Á‘JfbÌ.>G•?ÉÇ”uŽsUþ5]Ã_Éš`Ýü.o~—ï×Rí'kº]ÙÉŸ ݾvå×5¢6ºI_d—œ¢ U0¤³oüÖ#Kö¡!ˆËÉÎá/6‡Ÿ†r‘áË>¦"k6qçÂ,?óY~æ¬jnG¿OB«¥Æé;²àS†ÊÇKî4…ʯõ_k ¯3ZÏÖë4ÃëaÔ ¶ÄÇš(•˜Øìë÷©.>…#ɯŽc V¨n.Ò*½[g:ËVÇìJÕõHäGœåÄ7Md‚a|—ÿÊñûfz1º«¨˜€:üpäŒòâ›Üd60›~ãV=ŸŽïn8•þ¿qŒ`÷€c÷`z[ŒØ«Ñ8;ˆ=Ÿ–ÄêðF0# Ûr{#i ÷F©•Ä«Þc&Kã•=’ÕÐRÁä>XÍ’\¬M|M<=ÝŒÆ3»NGŽÂVÌ‹GR¼d¹{¯ôЇG²Âx0Y ßôH «çï½eÑ•(êŸë”NóÃüöb#0{üIJß)úìÎ`Ÿc™³.ÏP 9A¦Í•Ôm£š˜?¾ÍÎù!Á™[>Å}‡¹(bi‘Ë¿àç‰ÙL“ÁåÛåyÖ7üêÂKÕ¥›Å”%ûP²mE no$¸Å—˜¥žlò¯×£óë(÷h¶@ p'ó†hsyuŸ‡s*  ’:<­òI¨ü.”7ÉWÝ%NâFöò+Në A–œÃåÌeÏù}ÁlùԹ`y#7ˆºqQ¨ò=\f¾*¯Þ4EÇuÅþSyªø§Êâw(êEñh›MîðNÎ/;¸…E®¼xò½Ø¹d7ìç·,©Ã]mtÃ7àh¸ÈÌvfÙân†LMvy™‹DV¼@oÙ1HRÆD Ãl@(>Œ–3ŒB“I›î‰Ê‡p]WË`±žS¬ÿÂîùtŽ!dHŠ™úè‚êû8 {ž3l*'.êž®ðDRË[‘ÔÓXc 0u<#ê»+?ÅWO9ïþ‰gÍ—1;Ç€-zk.8aš=I?‚YìˆSŸ&`!Ø  Îhñk5'ß¼QFŠòMÐm{­ÄàA"h¢Bd+³!šêÁ 0IܵN-ýë-öœ˜>¾g¾h Ó<Ùrê4Œ5;EcíÞéëüé»u¶b ôÍuvL¿ÊZvæ‡ÚêóYŠ×ËNzÓËñÝ™ýúe¯¿ÛmZZ!dp<ySoÕ€¶°ñRhËL~XMùõ]…­÷>B_‚”—ƒ$o’zØÏû/ÐêÀµ;ÍJ£ eô`·-¤È в§TY?À¥>TïO9£HóG!eÚ V´›WodûîˆÂýmºý‚™†où*Šo¹Å{¹Å·Ý✢@ ÍÏçÃ8 dÔyˆ£ìð÷ë½½@§|ãtWØ ’£¿ ]kZpSu $üt7:ÿU±—ìv:Ÿ8Î:†Ì‡Ò<W  ¾û&ͺZIý`AïÀý„ókUÖtb„1`ˆhµ±%l´(lBÙ[ZËi\CVØæ´*¼d0+¢(p+@pÃv`ñ€L+è˧¶)Ò©Êè¶WC™G"¯ɨÃÒ’‹ïbí_ý°kÿjµµýPä"† Ë“‹dãÇb3~z,œQhrHOjå5ph#~Ò0°øi%œõɯ°"½HÒÇH–d2¿ŸÕOVc0“bÓ¥Á´:Áwð’ÓóÒ=¨6õš“l)ÔûP¢ÝƒEƒ:ð±ùX(ËDO.(PÜDÎÉ¥HVct“bFwE*$ØÕÞD…¶h XoMŠùÖ'¿ê$¯Õ]'´Zß¿›¼ZqJ®yiŠñ.ÉGj YáMŠÞÕÈF*¸ÖÞtÛI~úaW5Ö5-f]Ÿüº“¦?·‘&…4&žô–àxEñ·žô|Ž7]ãMK¤šnýxœFº<¯ù½¬þj|fº¼@ÕºïØ1dãÞ¸ý2θ¶ÿçâ{‰ÿºõœÿñ‰>ÏþŸÿèéÿù8»¿0þëÖÖ–çÿ™n=Ç~’ív×ÿsÀ¼6:{¶•C©®ÿïÎŽŒñ2ÕB;­ûºr¶—ñÚ<žÎÈz‰,TÑl½ ?F“óY6œ£ƒâì‚Ϻ2ºäƒ‹½Î‹5þ jórY´\û…2L<™gÂF:¬³¶£÷ãbÊ:“9|áh0‡Ñ@„R˜î\ØÏGf`›n¬³¶iôw<,nF"=t*=£ù´ZÝLË„1m l¥qÆohlAÐü—Sºm•v´œáð8›\-®mǶŒfi5±Œµ§mé 6“Åì[Ýèƒó,ÃY ±] @ÛhÄz–eQŒOv1õ€cÖ­´Á•“/%¸qð_m>¸DU]HùUÿEUÿ%«òIe·ÙíA!5„ RfDú @÷-ÛxÑëîüœŽË»1NË,ð3l&ˮƈ4jð‘Qa9.Ðj|<ή†cŠTú„ö¦*r¼×å×=ñ>hlJ%@.x_ãR~µ¬Ã (}”E|OöÁi}ppÔäÐ(ª !–7!Úrïð—:Ni(M¢¹³bPa×fœÔf¾º’á) ÇzÌð”/ ±¼Ô8¯‘\{÷mª#[p% X¯¯§lS]cHþL1ˆ^ÐŒ²á™µæ[l6ÒXWKÙ]^ÔYãÁ /{7V‰Cqcq»ØœHù£ó<•ÏqTɆ+ À]ˆB ÙŒèÁˆðÕÖïSï½øC a>P»}ÀÄ5ÁXjæ«÷ÆrJÔvèÀoWhÌop`k®nU K¨9&x˜È b‰F´¨ƒt†uêfÙ @ ˆ².˜r[ˆÊó%W@òØ[Q-R¦"$Qí¸ð]±3±ÕðÈÍt¤>ï?²À$Oâ5áô3ªÐvSè1s™|Á]¦í²Ë´µÊ2uÈeÚÎ_¦˜`p;w™þ?öÞµ©­\i}?ï_¡oUŒ±IlÈ\²'©2—$€q0ÉÔÔ)‹°ÀØ<¶IÈ>sþûé›®KëbBØÉ3¬½'Ø^RKjµZ­V_|} a¶þ2–ž]| ‘ÌRZÈÁ¦#œz7¢'Ô´¡@”øˆ¦28Ã^‚Åó1Æ#¹6àHÅ8äùFÒþ²—_¬ÅçIwöù…ðóû&yUQñEéâSã´€õ–¹žgC$CIÅÖÛy·+ëËô>»‘ \MB>IDKõ(x·úr¦znѶ_4rƒ”7ˆÒ^´ QŠƒ9Ñ*„O¶ê^w ËxÂë/ä4D<‹üâ§ÌÒRŽåcT; ¶2€ÞDHÈ8Â0ø™¸À/…à6u'ÃF6eŸ*jä—g™š›Ø³­œîÓK¸|øá_s¹¨áŸýì½ wæ§g…´ ý۲슘×VD¶ä'”mB<)‘›4Mä”l{%·î«É­‚’~“™í1¶ºþ Ýø/à;Êñî(ŠTç¿FV¤5M½/([¦ÿ_®åäݘAÇøß7øõ‘”7ùÈ ìÈ+\‡ó N`äèj—ƒ^nR²àÚÜšÿ‚X{÷ÿÓÿùnîÿW~~¼ÿ{çñþÿý8÷ÿßhõ—®ÿçíVöþyùqý?Ä#›°ÿ¿ÿ{ ïþðî þÝ_ët7àÏÁÎþïŸsîýQZ4\—¹8üJ뀣yc:ìÉý‡,¢ΩRÓ“!GöUÓ«éÿÐMê9XÅ^ ËÔë˜l„мT·qZ\ZZZÄï#ùN¥ÃDÊß@…CâØzX6%ùCpPùÏNPÑçº/7™"PÖÔͬÃkíÑxÔ%³ôS"CÀÁdFiF‚¯9žw²¡ÇÓšî’¿D/Y÷I­_ƒ {ô ˜—Žx.© / øÄU‡\ë!m»±•ÆÙj“dzù\?%& ÇäUtE±ªÇ£áÒ¸^`\ðöã9êŽ'ê¶‚™ÄÜ!Î`%12¶o¦MC{; IÃGð¹ú¦ æ7à™ iÀMQ8|÷ ‚¾Qƒ2ä•O_xåöÛKøþ;ƒµ£ ¨!%Y '³Ïd1ÁfH²žÄÂÃAÏÔ+õLÇL#R(µûÈ7ñàE"ÔŠ4‰?bRaN| ¤·ùà–ƒÀ_˜œè—¡#XÔ§œ p(.RÕŸ=*"ë{•¬û9FE-ÇG…°üñCIq×]0š¶ˆÂ™ü˜óFP#Œ‰û ¦!_—QöëãŽå÷£³º´y!»Î|–‰îäßÄÌ $NÏû0è55`™&£mޱ‰;u[ˆišhÐ臰ºoªd5`¤…Àe†6®’{EÉ„û’ºIŸëRW=•ÖpoU¤B/e‚—9÷º1þ‹xá&ž ´XSíœý)žøÓ­‘¯gA1蟣gù^Oÿó©ý½è–Ÿ?žÿæyÔÿü£GÿóV©ÿÇóÖÊOáúo=êæÑ‚§ÿyß®©× õ¦¡Þ‚h½OCáOUA½½†ZÛßÃO]üÔ}TÅãñîwQ“ˆ1B F&¢v=Îû¶>û²†ï¼o°K|n:MðíxÊöW”“Šƒ\c}ÊRšcAK»*õþ¼Qê/û Šuoá’ÈáÅjV™Pßt&*² ›=17{º éG®Ãa¬0LC ñZÐßöàÛÞ©QL>ѳP> ·§t4µ4‰>°¶‡3¥ùâ´¨¿\<Ћ=Õ„À—áª3QM¬J@þr±†Å¡*ùËE)O8¡µLcóZöá<¥J¨Ÿ¨µ­­¶Ñš qnr`¥7ónWüv^À튀iŽ'Hä áåP…MÓ:ì2ê× {ì#Pš°jûŽžŒ–‹¢õBÜóf”ÎxËÂÍÛ¤Ÿ€mØa™žïUéy…BñžÓæ±çö<º¢ïÒõ×7J…±žÌéÐ_Xîòꌾ„Á¾è¾ ®vÁTò·Çù¢x€¶ 4µ:˜LÈæv’§7£Ódr6&öEªj|7Po0ýÆiú1Ek%5½9žM¤¾7" Â/fô¢Ì‹Ì¿0™P‹=ºu–|&|Mµj ¤6òwºN`EÝ ¯§›#µ¹±±° 6ô;=aØÉø4QŸÇ“Ë©nbø½Æ#“å@¯IÖ»§£³ÚÔdýî“ ôs:ªÑ–îÉÉÍú5L¦Îª˜ÎÂÉ‚~'CһƔüƦÁaÈt¡%U{‡©kNÎÉËÒÑÐx04Åj˜^ò^±Fêfý‚æ•û˜ž¹ý£-)è¢ÛRùaOÚ^wDÜ903•Γ+>´pã¾øâÆÍ`¸¤Þ!Y~N§ :NNo†Ìô±k4 Óëñè”sjÊ$pÒ7®“ ì¿Ç’iÕ®èO9J¤šÅ!ÙFgçí|<<ýaÔ”ÆL'çm§ûº¾'8Ï‹á¼ëm±¹ ¡ô ¯Ñ#¯ Êëw{E`ð=ÀY8•5¸¸7àŽ¸Sv´1^DÏ»‹yr»Û9¶Û‡Ð+päYøá5||ßÀß·ð÷-üíb[óUöÙÙi¨=J¼ÐöZŸ3UÀ¿û›oàÑïßFSî"¼ýß÷b‹ücžŽÝÎÎÚ[­«ÌúÿÉû;h±_£¦ï×­Y~mý!Þb Ýö[Sâ­>uÉì©ëq*×uœ®æ6½º¹Âýq<Ä|[Ž˜åIÿRõÏÀº^ÖP×åÛ­°B+¼™£Â2Vx[Xá_~—ä+Ò.¹~¼í ÂÿuÇ ‡íø6T¯ë&í/@èµcHÈëü@¸öƒéj§NÂ[皪æX(÷€CÉ¥Év4ÝV7þÛ{£¿˜¹}Ó÷ø¦ƒ뉗ܜĮé3‹Í~WYÜõÇk~±üÚËü´O¥®Ž¿í¿ù×Ì{ ÄRï`cɾQÉ\foF4…e.ijˆÒ§ˆ*6y¦uWSO6v÷ãÑ^e8N” ;ø¦?X‰{ý}Ý,…ï5òÞtÂ7Ø7&N„•w×#3Bƒ@ÀŸ·ìýQÞíTw°P›éKä¾FE'Y€vy À¬mn–½x©Uh««ôÜ¢£ÓÕÃTÝCu2˜&Á ­3æš*3™Áã±Ä”¥€ñµˆŽFœfÒÝÛ,t#CŽÍ–[¼îÄŽj–az¦–†Àºü§4¿ƒä…X}ÝÏ…€gž©ÿåâäzÀ!FÂHSusáô™9eº€}Ø©û¡Øú°îOõ>Þ$þޱbúýE¨¶ÛT‹{»/FƒñœŽ“czÈïÄïiF¹,Ø,í™Nvë]î¥W¥Òlí•wœ7…îk¼¾]Ü+ÇEÇ‚ä àYîÁá+aâõìJØÙ)Ø-¾ìà…¸â,}É.…*³¡˜ÚPÞ"¸AÒK¿SÞ´7ýÊ,®¯éŸ«¯30ÀÑü–aO±«éÜ>ñÌâ¹û‹o‘?ï-"Z¨S7C>Þµ_ï/’”î×a¶ˆ ï),<÷ sÒ~æwæË5¬¹eê;äÔÌ·”yËŒ‘»×÷K•xDÄD$Ô<½Ä~9ûyZsB-ÏKì[ Z3?ù(g°kÝ Xƒ]ÛË€µý V暨C¦éG>ó* c:Ö¢;FÉÖ‹×@G C©D™Ø Té:Ãýáµ'Ši¸í¸8–b¸o¢p—ç…‹¨õ~xkÃ?—à—ráÀ0"›=·ÞóP‘A @¾qÇûö£qÇñxöŸ¯¿û•çñÿæy´ÿøG?ŽýÇ7Zý¥ëÿ§•Vfý·Wž=®ÿ‡xDðí?wÉÿ§ÓÀ¤© µÝ‚ÿÚ µ¹»ùžÍgm> œ€4ºwsEœ³»éçkÜÔ|>A‡»x­„ÉËi&’IÊ ¼¸Í’ÉÉù`ô‘Pü,÷l’„qFQ±‚IîOéê6ƒ²@œRŒïÊ6ݧu¾…ÛÊÉxxs52žNŸ©)Ü×¥V÷ý¤!Ó§.5eŸ‚9÷|vÁx˜¦U¼fO£¸§%´O&WèãÛIÜWòu†VÅr¯`=7žNp”.ðéx¤¯—8* bp¯­Rõl«JØn×Q_ƒ+}!ω ús~ãÇiz’L—pú†_Ø™E;V¥#¥ ’¦.œÌB¡¾!“¿Q@Ķѧ®«Ò+¤›©,8ât]6 "'.§ßÄù ûcÝäO™O•vÖ Fü°¡ÃÀúÕQHaÔÕ;Av«ZtìØûrjyoI­-©Ãómkl67~ž&£“À]Ï–þ&ß·GãÛO^íw¾Í úþ7°Ûb>Î6íº¸ÃèÁrôŒ"µnÃþ²¬¯Ib×ÕÑ€¬¥aI7…ƒ i“Uçôéms¡„Áû~:HeqWPî¶>d³þ€Ñà¶» €æ\šfÔH<¼(5Â~@­æv[Â6Ûa›­°M/ ©}-Ê_azHw×SO)¨mÝL90-·ãaM9Ê¥Îá³Lq}U/ªv``Þò’‚YªÉètñ>“¥ŠÍ£¸ïÒ&eo)pZb«m ÔÒ X2˱h*HÛ²XѼ–¢»%ewua}WdáÉK¿TÂ(4U´cÁ˜–K]œíepÇ„€ÿzÑr²óh#gæMbÑ –OÜÜæÎÄsÊU˜µÊS¯¹à¨Ø4=/˜‘òì8‡»Êÿèÿ¾|Gþ_?=žÿäyÔÿý£Gÿ÷VÙúoÿüÓJfý·ž¯<®ÿ‡xxµú¿?Ú5ÕíïuÐ_‰þ=”GAlèã›uü·¿W`ó E ê*–]5a„Žð+üsÔ{··“—^蟧OŒ%°ðæ HïˆI‡x†Ó<5Œ}Â5Ï[þIQO NÉ<˨Õ÷¡ŽñVúÝšt†¿îÕ¤Wø5ŸnŽjÜíùTš´†Ÿ’©‰RÒkáÌ÷´C’E€tÀ¿QVåtä™ÈŒ¯kýîBM@hý¨Ž¿ìQüJDR}Õ‹iÔï"éI;-!}os»@ûÎë6»º!X:rd•fk‰[% Òúõz¿¡áÃgušŒÆÚço;äQ@¤\A‰ÊDdužÁ®ùìE˜Õ.Œu×zL Å XçƒOxÉ3V'C ’ô#Ȧt-Ó€>bA?ˆ›à”Dñ-äÀŠ¡3Œ­hü"UcköÞõ7^ ‡)cf‚ÊtÆŽ‰×IrŠ 6Áýt {0Ùœœ''—6ÿËmÉd2žLÿûÞ‹2ŸA/ÒZÃq!\,ó!l©xCml¾y[˜åÏ:b ޝ#~¥Úðý—¹C½EŽ«h$ 4_ì(¸)wPl²»ÿž®¡¶vñ?ü²]p,Ø™vcwýáÔ×mclxòÑãð";ÝÞüÞï´ ì-xÐjá? O´áŸ#t_Ì|˜w0>vÒ¦¯àåÈ~ÉÇÖ-ß}·c±_ [ü¥àT ¥Úm·‰¾ú;»µßú >5ä‹ùù@ÌŸ'16«ëBÐ2ÿG®ß(òƒœ3£âúÚ»Ý? QcÞ˜ 0Ë•s *]èô;Êxvñ&¯Ó4ˆ_4 `2*ú^-ãïee°hƒS>Ío—IŠ›Cý 'þ[d5 D×õ ±,¹2^S,€€£Û  .o·—Ã:¹å|©[œ"jéH ½¶ä‹²Øî|öaO1æXdQ&™Œmä{´‹.MÆ«p÷‰µ”'îä¾$‡Ã§XE¡C=žß <ºdÃ{gþ§­šÆ§‘³QÔT øxþ[†ÿžÃ(¶M·IV¢]¾Õ"m+#ú{-¼­^m‰ßV6q$rP:e›Ü“\u/üƒެ=©¨Žë‘ï(/$;¼I”&ø­ý™†¿Ê$yDMÚL ci÷ZØt·VÍ<_j åШu&ßG>’;¦¥#'§º.¡/ÑÁ†¥ “ìg}ÝHŒæª­u4cÁ<µÚi=’ù¡>¾þ“fþiSx¡?a6aFÛe%¤œ´@ë`ŸÚϲ¹Å»ø^ é´Nxº-mÀ>Â?í9?ùœË}ߪ´³PÚR*G“¦SÜÈx:ÊiUïzy…¹Q‡HDW”¡\„Óæl4¶ª—ò‘Š,{EZ.tßø#Ð+èµé]v¯:hY ¬ÓØjÐ3”ËJÛÌ?\’BÂë"áu‘ ‘ u*úÆÜE(2 F¨Š$×’ƒÂíÖ_öÿmµÝ¢\Î&µÍ'ɽ,IvKH²›%Én–$»C’ÒFNaC’Ý"’´#ŠR])fJfù4}G´m¬x Hv^TÆ3!™ÿËÄuCyÚ0ÛĶdýWÍZl­6ƒ¨6nüëX–¡8óR„O’ûx6°}= ’:Leݹ ÒÀ ¼Ímf-v‚}Ë$oÃÚP4”æô1€›5 ã²%èÔ KÀîÐ5¤¶©í@ ס®Þ¨$:†>¶x#]•—«±— ÐÜ\h î塤‡¨Ç©˜r—ª õ5au?‡K›Î!dÁµ 8 Ö÷¬0ÂQ'à^׬¢Î’‰K)þ,I*u˜L~å–_¹Ëd¬;D'ÿ§Ê²KDC…=Ê¢¶å£–ež„y…<4ÉÁÓÃîS¾ó>h‘éæ ¦øEã­ë#¬EöQéøÅ½žH›þ«,xÃpB¿º=edS™M'ÖŸ±¶ç§¶3E>å9yás[*8Êì™ÀBœÄɵíI®YADX+#ÄDؘŠ 0œ¶ÜQV±ô VY¬u7‘änÒOƒ!ª°W°Ë+÷¼Ÿ~s$T[™VA Âòí†/ÂÈTT~¹áË4ÇG–?~ŒˆÈl2´iKã ¾)±t' c¥‘+´ùÒ_¦Kѽ.Eôº…áu)ÿ(St “γœ¯”—ZÖÃÊ=ÕIÇ Î~q|Ür»˜‡×Vù@2]¼g9ݼ[Ž#ÖÙÔk»‘æØaP%Ãô*‰EƒÔ$Ÿ6\G¬9ÛÇ¡ðC‡­ct±dìÙüî§gj+úN9r+ák“îX”ÚX¢¶rݤ'±Ê‘Òx½A†ö‘w[ün+óÎNPAbù¬É;›íï¿Ï5Ügž‹²Ÿt¸÷xåÒBFo~Ò߃y¢w˜ÒÙüjKàð¢…è…/S©¬¹>¥o¶Ãñö©ØHZ|D ºìO›œ°Ëé_»pO±‚ߢ3¯T™ƒÄE5*v®QÊ«íq"ƒ\ÇDÖä£C©¹CJ%P[”ûí©ÛLÉ[ÎLlÑÁÅ©]Ï!tæöêˆvÆé϶ןí |Ý7qçø%FÆ¿†dŒ+? jFdÛufÄ…¿/;HÏ;ŽÑÅg…3•+€Dfù`ÚY0F‚šÌrŒˆ+sYÉ‚ÑèÌ=0ÖDÎwÄ ¹gG_„Ä'Dƒw¼\Îü²òœ*اôçx¡§ÐJÑÑw©¶Ù¥œE‚Kç9,'•–0MF$¡};ðr¢ö¶¶·qy¬l1›ØŽ² Â|ÄS2B©ëF‘ `a¸Þ2‰·ZíÌ Ä¦—c;2³gºÁnnrÎ3úe’‚Æk3d:ög]Æ+ë½ÎßEZYű{V48î™9P-¹guM@^-ç•Ý2³çl»`í÷娲¯ÛAq¡äû¥ýñ°‘³|ÿ¯³ïÅÿkeå1þÓÃ<þ_ÿèÇõÿú6«¿lý¯¬À¯ÙøOëÿA^í¡ÿ»Ýw ŒÕ[©gÕFƒbã¿Cüv˜ç½ñÙZ^j}ß^[¬s=I‡ªý¬ÕRwzPW¯µ·½Îšgë‰èÖ‡œ<¯íU™ÂqÅ+R1p£·4ÝÔu×}ÍsÍY§õ8SWãé h‹QhCG.„VÝdœGñz ŽbZ#ŕŒ”¢öôVÑ¡·Úl5èö½Gx«K¤ä°’õú<Áä]Ä Ö÷ÿèï½^R›3LG?UÇÃñÉ%¼Â„F¨†E‘ºÉ§dâù*@^À{ž›ëÓÁ,‘´åÇšªÙ5oÄJÑVóp¬ýŠÜ쨴²N f×[®!;ñŠ‚ Qúžëkœ‚‰Ž?ãO6WR°¸xŽ-™EB¾”£Ü³ù¡‘½€îQ pP¦‹eºAãsa3Tä^Ãê¯^š´÷½ÕJ°tú’ÒÀnÆ|z>¾¢ Ggl_¢VM¤ïa‚ÑÃÚ”niˆ9“Ð4U2Ïqá™é÷Ûºÿ¹餷Ÿ“‰^UÃ/¶›.ˆíUo 5[¼ˆò–з‹k—%3Žïå2¾™uÍqŸ#¡ìAw|ß *çÖ¯Óf4ÔGì&1£µS‚– *O’3˜‡Ñ Ȧ»ØáZÓ~G2¢Ü%Œ¨JwJFT)±EŽœîr,5݃èŽ|ÏA’õÍ2iêtä½`EEˆÕ'Ôu ^ EHZ»ˆÎXnò\÷£ç{¸ŽÒGáašh}n¾i2û· $õ©ÇáЈ.©m­æu'H»\P¯ðêŽ8¦ŽC3Kö—‚ÈD¼>8±ý¨àzí²q))[H¸-+*Zòñà5$‘¦.› ½ÿ–é ÃtšBM·¯Ñ6[/ “ø¯7³ÔgaÇAŸƒ¥ê÷Ôý¸í´íéb¤§eX}µôïBQOyŠP.Âù&©È–½Õ½ïa.1¤È ¬àµø2â‘è¾…ïaÈ¥Úeá¿äv@Ìì?Éd¼$AC]F“1zGÙüƒLj«žÓ†:¾™9+úÔÏzE‚kŒnW»2Êpÿ7ºÒ-OCío¼ï~¾ï2¨k`?ÏíD;N’z‚¬²…ù‡] U¹MÿÁéq{·À7j{¿¿å ޤ«ûÖéîbîÁµw]v?C¯Àõ6ýÓn¨½"?½w‡œcNï¹X–}ÀsN\纈«Uoèb½™×wîÍf\Ä?ïÑ“n Ó@Þ·Cü³Y”f±$ýaÆÿk“H1»)M.IæpÚÃà°'çã1)8¶®ìíPÔÂã:rû¹È©z„ÄÙÆšn]g2B¿ÖváæK#÷ZøU¢#°¤C¶:td{« pEÞ¡³ŸP1ÜEp3ÀÂǃ“ËσÉé´!ÛéH\¡ðƒ*ƒu ÅÁkP‡¼ÁL‘mí´~ÒÈ¡ãkŒDœÜ60ú?Xçl2¾ÂÃÄ䣄3îrÈ Ò¡%q­¡Ô¡ÄX¶ykÅ«Ž lÓ0ÝTRä‡_3w–¶<̨E(ÚTâ7`Ÿážâ(\¨l °fë½fovò¥No} EÝ>Åß$÷ÀmüÖ LPØWfù™ÛÒÚøú‹?wP‡äèÍ–¶`æþšÞåö-õCôû1ç~`à¶Ó(•†±I“HíWf2¬ÍewQ °PJñž¨ò¸n)JD+e‘Â’ÇW!%òND¦vµF~ò› å`†´(o;ÂrFZVxÍsJùwô ì’ŽjBÿé¹¢³”¼Á6²UoSùíí\¤mn45o‚&·] ØÍb°ƒÀØñÛ¡U¥À÷¶¯VëPUârZ¶ÖÀvK7 T?7²kv:~ÝÍÝ!6C’Ûæ¥‡x‰yÛ?'âëȺpÍâa;Ü^”ÁmëîÐn§‡«É‘çPÃ94ä¡tXŠ¶Ã ‘(ÙÉ ÅzN“|e¹'* ^„­l•çãáé4 âµÒð§Žu³%øf èÍû²9;wN°Ù:û¸4¤ŽY—™³¬‹ã ó‰&on“âNÖ Ø…9%ìƒsÄÈÉÊÅõ{L´j8÷ÈÏM…NB4î]t#@“ÁUøBa…™Á–¥Ê@ìh–ðwúÙNYFµ+S`;ÚEû¦3ÑNÌœë{–KÆIdòáY'?þC™œípH¡–.$G¶§X/ ­íAk¶ ÷ õÔ°…:TF¹9Þ7ß0¥‹‘$3ÛNp¢àé°§H“M¬VÛ>äß©ÃMý%Ǚʂq´Ûu[¯éÂc í¹òºÄ·(¤DÜ‘"SÙÑ8—¡ùs[:(/é–‹” Åì˜PO n9h9ÏV €È°a·a¶øâ¾m»Æ÷™£µS°¹½{'hóÞf²Î:ÇD¤R î3ÂWÝÞM¸¨+Cõ¡‘‡ìϬÃk=3‘f”Ê QZ Šèeiy£  !x‰×À¼- ¼xI8ðÆz],¸Üá·+rIÃKÆ#ØToÕp˜ÆØœ¥WÞ1Óþl+Õ¨}еê$íµhoiöV½‰ØZÅÓÓf¯ÆVšÍ­Å¬˜RˆüÕ¿¹ – § ÚÂŽI®'h³©2ü¤è„¿µ…sùE‡ð « ÃàÖœ'|†ý¶ûåJÆ•-Q˜j^ZLoi…82cßÉŽýIßEr ¼«€‰ŒfWiþX aËŸç.”Ý›Ù=Ò…,ÔÁ„²x^¡éˆ EÊèt¬ï9\fdá¸[ébëÅÈÅ•ñ‚Ÿ~ʹ`Zs¾ÛtW[¡ö|k7žòMWkºÚ?T…œ8RDZ‚óô¯¶èâ¡ÀµµÇ$d¸k'Ø gÅi&—yÝOÞ}¶Ø^Õl4ko¦¯Ø}ú6ò‹rSëdþ]—¶*ȹêrm¡ ¯º€’ÊoºÐµ즫íßOåÞtQÊJ禫¿é²˜Ñ¾À?ç®ò˨70w«yQo²ÊQžØ_縈šã xŒ>DzwQÛ±SDû@$î%í¶xšç«ÝBÎm“ÛþvÙôýÝ5 ‰åÝ5m;ÊbÚsp ‹yçȼ §Çû&ètß´x·ë¦æ¶sU´í ÛF$)¹qê5õ„wçdÙ/ÕÛå¶3?³*Q:ÝŠs-;ðàªÏL-gùëy-›Ä¼[¢ÅâK¢[þ¬åÜÿÐízAðý!»+¿”O%¶$¥#÷?‹e÷?ݼûœ‡f>Á*6œNdo€+ÝÉÌÄÊ´¼2‹E×:öˆ9á]ÿüb夂WÑ{{ùc¯mâò¡bÑ»A²—?‹Î’òË·¿ú ®hâ÷8‹ÞOÎlw¼I&=Æl úÿÜû,Vº÷ÙÝýÏbüÞçg¹÷ùµÊ½¯¤¤EÞ(m\¾5à¿ì½À{Ÿv[†¯×ÅýÞýñžî}L|0ÓÁE¹ÃÓ+»áÉŽµÊ †ïûÊ+žÅ­ÕæÖ–{ð.:m‹à¿ñ˜»{ïúïúìnD¢x=ƼÏ8€§¢gš±íåÜÛð#àÄSx¿}Žï'ÅŠƒ: âÇ‚¸@Fx9hÆ[Ë,X'˜1aT.µ¿Ù{ÓÝ ŠÊw¤{Îõ«NëJöCøÃò®¤³ó«d–žHO÷±§˜¹vÊ!ºà€C51†jcý=Pæq2ûŒ‘IšÔ ÀÁÏK˜£0ñ0 é ûx<™‰uÊ@ )ŒÞ R¤&„ÐÇtéyð¦$ÛcŒódƒíQ‡9Õ¸‡Øt:V…” wý;(Ù5%ÀX:Ö›”-‰[cÏ,™[¸’`r {ˆwÖC¹Gi'ãäì,=Iã¦#ÿzÐXû2@˜‡ÖolPûÙQI *šy*l¿ÃÈg&:˜ïyù¬áÂqpAÄ~çߺÞ+²DÆ8Xb|‚‰ôäf4•hˆ§¥<è¯Cé>ãtßAêÎÜÑŽÂpGK~‰”íd¢ÂØ>N’ÁŒ¢;B)Ë…²÷–\ ãšO’)Þ¼ #|p'ƒiâa8 H:‘Á3Ïpß÷ iŽXA £Ú‰l8{öÂ<rç`w×ÌXÕÈ=±ÍÏÍk_Ù'h‡«7¤X¬7%áoöØše_çgŽÓñ^4žFc”B4c¡Pãå¹õøš0Rõê„[Þ+¥­X;”ýe‹Sµð>'&¬î»7ý%ys÷Ï»æÜᇵ[ÏŸå\ð¿î›ž°ÑÆR­X¾š¨‚Ñ¿ù?‡¬I­È%Ùÿ ¬-ǰ¶Åšü<’rïö(Ü#ü{ ¯IÿÜBS*¶†ZÃÊyªÃB…aûûVÂÓƒ“)1Ú@èwÖüù8ÄWJ ²®çAK‘gÄ›CY»Z“†(Mi?ÕæÔ ®îÃ?¡rmdìT½ §÷¶F9U¿©uZ?VèÉ¥:õz_ÿÂ…>§³s5Œ“UÂÈ!ùDª9V7Äü°#š6?çBpš?Æ™æóü’Ro©šÿœ&£1¦1‘8 lÛAúÁ†º%ò8FHH–£¦vèø”à%¼ø>N…z¥£|A6æœÀd)G0йä0û Ž%'çÐØˆ‚­j¼ºJˆò[ãÎæñ´¢F¹ÀÁ´É-|„½…+N«W µ™'Àiþ,±gØhS† ³d×aNß+ÒU`Ê ÞMã‚I*$³ªuj <‹<#]ít|•¨‹‰ÖMxBG/û3Vž"41pŸ0^=ùÁ “@?"†gn†’o´ÃU÷ä&ðÔF_›ŒƒØÂ<¦¹‡Ö8í ŠY)L4",ìY[ÝÇ5‰‹M™ÕVsmš‚J}§®H§Z?¯ÎZ~µñèâæ#i™ÅõR¹ˆ§¼Ó¬Áüh½7y£tV0e„˜º6øå¢3!M8ñô;ô—8¬‡Ž«‡vñl›K{9(Äò}4ž\!£euelx\W2IP;RØÕ“‰B1­FÎ#¾Ý|ßa=L¨ùn*e”Ù^¯ËÞ28Ö~SĦÞaÊ W/ @æÚ‰:íºWA^›jW«Ö¾_˜ ÈÙ’p·±¨ ú+Þ'ë‹-¾QqUãœÒéÂ÷ŸpR¹prXع¸XU@˜gcÌ 3õr™±@l¸<]l-¦Ma÷ZŠç³vþ¢yyºðÛËô·—E™5B´ëº êWé¨6j\,8{I³Z>Ê.iV—L:¢V ëãòü™wŠn¡&éÇó,{\@ Ъã\ù(žé…®BqÇþ4ÔþœâÕ¥Ü<žPº>º¦É©Î$À¦ÈD@Ê›¦ÇCïÌDpšâÑo¢1ºRÀo^µhklxB°Q` çp3ñcø‰âÈÐ?–|4ÇL}1~“eâ,nÜ@™fÌôÜþÙz1ú ]EŽé“yA[_&---5Tåæ—Ô¢¿èˆ{ZPäÏ‹E Ü|nrºêð/ Ûd2O½õä Ïc4$õÅŠƒ3\c*  €Ž8z;'6ðÒ! ¥iòMæ%÷’(Ÿy AšÜ©=ãs®¾7ü¶þÿ÷¶–Ây/}Ùj –FÿŸ±‡M Qhz§´úœ™Jlß(¿ÓKîÈSõ7âq¤ üùoÛI·Ô¢®VÇâÐá6"q±õ—© WT¨QaX1lÇϧé BVæqK1˜9ëB||Ï´«…æD¤•$†©·ÔkÀ.ìk§7°É¹½OußÓF*ýV™§ÅRé0FÖóóo$»¿|HL´§ 5n,§­xãêB„’Fç4Œ¤Ø@@oü2%„É—9®ÝC£„ û ÒkŒ´ÖñÕĨMP6ÒÖ ®õT3¤K¦õ#þɹ~:f~ó|jâ}F’P*Gfw˜§­Ö9ÂMØºÜ ‹ŽƒSgÉ€Î/º´qkíŽ9tqwBÒðÐPr@žYƒy»h}fc“U—aÎ-Ƥ¥¼šêú¢iðàNKÔ\[Þ²å[ÍÍ6£…Òô*…^#Pp¥K‡êS«HȰt"cÍÕ‰¡t² )=†^‘o×Ô1~j †Ø^ðjëÌ ›ÀN"lÝ0èCGzu3„©HÆ7ÓáíóXø¶©rYl:ÕM§Ðtê4RÓ wÇù8ñ]SJsÊ\›¥NW(ÌfqDzíc‡m׿þL=8=ÕfJSL”E#xEü”ÂýBÙùi‡b¬¿ÂTg†ýÏ"‹Ë™¨aw¡î3jÎöô·Ìòö w§áÔÞp¯jüËC!c–ðtp–༢%©áI­§;µ# õô }D›R’ôråõ õKyϽ[nÍ•Æîm§ûzÞdvX‡¾>å¶ËÞL䘒Eì´zïðŒw'½Í~CÌÃø]ÜòÌ&ª{½¹·U¶6{kð/l%ø¥»ÑÃôf›½õ|D¬n¾éì4Ô›½w‡ /j§K?íìèþÿ³_p9Öç$tœœí€ÿ­öÖá_¨|T’îþóÓEƹÞÙÇ1­¯¿̬»seÉìѺ㩜á®sDî$§./@ÖÆHð_•Û.ÚݪYíøk©)“¯-!Wp’uŠ eÛ"|WÈ%ôî£TÂ%x¯Ízvzöº¦– ¹%î;°Ò~çºN»Xyg0‘Zœ†-*MÜ:#i(£„ㇵs­’*œhEŸáè4¼9ÍÈ!žý°/!E]@<J›GmfáÁ]TÇ®@…­XP}±!`“TÚ.j²ý¢±Òi“¿º¼£6¾BTÙÈG¹>*ÁPòŒ¦#Cé5·²C!Ç}(ˆV¾Ñ8UFÜöGê>™H-x~V©gÖq»oîbVæ>åÂëÄã/,¸è3"ˆ¬¸>Ü0–Z+€¼3)¯goòóˆõŒÉEEŸ‹Èˆ9œ¨³†ú‡rcIÖ_8ÜÙ—ŽÔêcÔyOñ•xÝÖûn3*ˆÑed·L_ê…;°gïÜ^ÍàÁ6IE< Ñ܈KwaËGç‘Û½#'ÆçSyò'¼:²R!q^Þß‹YÒG8§Ãaf^_ô3—NYW/ƒåG2yÆüåuWá‡Dv m±Äx—Ži«m«k+ÞT6~H0^"Ü6)NWvØx~ˆ­Ü¬i¾H=ù\|”µ\îOÌJ_ðpzÁçT!<¹^,x÷s®Š·D£./2"M>ïȦës=ië„Üz™¹µ9¿ÉÉ ¦* Œ·kÕ¶fWB«r…‰¾£cXsW0 °Ë‚h첿§Þ©ÎÌY¦ ¢€ÈS â+æO ÙÖúø†Ö&î Dj o†¢‰I)ð‚Y¨£›¼_´»†œÑCËž÷ÆG=йxÃR‘)3ÿø§N] ^ëw%¾7/Ž+õèd|3Ÿôô6™â³¤—ÍcGîz@)•u‚ ) g‡­í7ɯ޸ªï‘_¿ãMò—b“ÜyøMò§ïwAÿ’¿ Q÷-«º!úýÌꎭï£-ÁÙ¢s(ÊaÄYuKø{е#keßÎëÅým䈼£-<;Ò¶Á›–ËáÙ9¤èOUö©pÌaNsÓúù‡¤ñ’êLï_GÔô‰ßÿ\eû¥ÀÅ×UOñ ë|D&?æ\Qñ v=Ï—´‚ðì¼>[(¢D £”#m—Ÿ>ã18î´”uVréácïÒ÷–Ó÷†±y¤X—WÉiŠVƒ“dz3œM3û÷‘äM÷U>1°Zåȸs`nÇJ¯;+k<â‘@žðÓ‚„¤«õŽRþ©{¼wÑhôâ¶u”UE‰ê€!•o¼9júG”‹­9Ö¶æE·rÕíZVÙÙ»E"%hk7˜|‰,ð#ñµH0,WžP™¯ýŽËôyùD6¹¢U”+4mü¾äD/ušÌŠœ ‹:wn,äîã_ =iÈÝ~žè5{e½h/¹[T]¶ž³°oBáÍš‘ÁŽ2Á2̬ºެ¯²éojä–”µ†òËŧ²èő֎§4Û±‚¥«ÁÜ- Uä§ñ2Ï3õ›G¿½,%ŒùgÛ™êZë)6‡Œaa¡î´,Àra`$²OãÔ*ØŠ‹lQ)Ê÷á/¹dÄ4Dȱ=Ï''ª«‘ñ–BÊ&º6BE¼ûEPÐ&)½~!NI Ò«dj¬ËW þû´@Pá'—.ÕüË©âZ*_HµXòæÑ:C¾à°Î·µÖ‹‘Ø^ɦÖʸ7؇ î^j{»sáãÙ…°Ž©(ut Ö‹‰Ä¼›¦_«åipñh/`2Ø‹¿ÒsÓÕ)3·…š<^©¼ððÊr WHÈcƒSbƒ†,¢Ä†áVÆ) èŸåm…{^éV”e5К„$úFâm޵vÝòÌöÿÖѸëát|­š­èh«^ˆŒÂì0.Úñ‘Cbc¸Ü1ùŠ!ª(5]®&Ð!ú)Ly£|%$§èÊÝnkŽWÞ º° W…̯͢½$ øb¡Œ.D6²qb¨dC ¤IAË0}ŸÞdŽÃbwaž~¢Ú`‹~ÊOLϦsÙJi¾‹h<¸}ÝÌÉœSBæ[^ҩؼWô[ôXxΓè:ÙÀ|(ìœþ:׌kW•LÞ|W²²PC‹øÄ–‘ƒomQ:°vQrJŠç%·Üj”VªBvËÚ½8hŒÈÖǾàŒ=Ž8vÆnªéͦÒi­ßÖ.xîsùÛ«‹»¿ÄL#z2v7JÖ’!g4EVÑž¹U¾cnž12WÁ6Š=ÈÙAK·Ï*ª5—¶Aå*T©Î!WB.Õ(OqPéL³NöˆÅ2—§Æ‘¯Èk H@±zeĵ£_M[ü7WÐÏEš¨¢ÃøÎÎ9y"š²çÈÖ$x*¨ÂÅ2süÆGIr*™gàt<3ÎéYr »S¬¿ëS|v‘ +Çi¡‚(¥æ71Ø™B‹Å⥂l‘¿\«î—ªâ–™?ª¶/ íhù2K”0ÞYaôëKGÍ!Zµ‘“°*ðð“»Ny–L ÜnH‹1ú³¨jš6-Ô™›,ÔËd C ÍÖâ&'éj? °ï…RpèËwú&¥7sMô"£Yžk4sñ)É5U¹\lÝùn(sá¸î±ÓVÌ;›žÏ¾—2®ˆÆPH¶bCR“°x'’*·pˆ;ð>wn¸ŠoHøy ™CU¿êPæ¶#YÝŸôRéÚCÍsó¡æºüP_qÿ¡ì­#‰§FÅS¤ÙU•¯BÔnCÔ<"ªâˆ*Ö2½«¬ï½ÃÕ‡šûöCÝÏuWÙH¹j¿ò%†ú®ïÄÔœ\€á¯ÕØ«ÊJ{ñmÏÑÛ+ÞµWÊt÷*«¾o­Ì³%«R%¾*UÖ«B}½rÕÏ+¦€Î›¥p—÷¶;½Ù‹M lØú<‚øÃI28ý‘ø8Í)sÑ¢;À8­åì÷q¢t9ê O`ѪÀ,„ê­4ì³õVöüi=e! etöÙó½L :öÀûJ©# ÍÏ0°ú˜aàÿÿô컉ÿßúé1þ÷ƒ<ñÿÿÑÿÿ­þ²õß~öüùJ&þë1ÿǃ<"øñÿ×ÑÛëÝ*YÏ~@ÃYøgïí>ü³N=ö$ö&c/ÐpnÁëy£ýÿñþ·n Ïíg-kÞ]ë?t…Kh-ˆÙ¯±LHD"ÉÝk¦Bbõoé-¿Ý—ÂjÜÍù¢û¯¿F¥Óì˜,ôÊOŒ¾GÍq¤£º~pb˜Q„êõ7ýµ¶{,B" ¨ é±9öäëéY3™Î(¤+ÊÐ?è;P’YoåÀu>Ouœ„ÉÒùÒt LoNÎÉ&[‡WÓ8‚¬ŠÃ:HÅ’‰à‹¨£V0ÄþÔÆysº}6_©d0¦ ¤Dÿï›ã¦¤<àžA9‰…Áu¬^ Ó•AçóG,˜ÃC vž.I>ˆÝz·~Pÿ.VØEc—šúlͯ“ÉÕÍŒAÒœœ$€Œn4&ƤC(äbb£›}z@¢^‘WRYA¼f*òRµ_¨×êÚœšGNDßôý›âPŸ±| ´ÝÐäÂàØÔP’bur<â?:‚9Ý¡Ãú˜› œåÎ8÷Ýp¥GêcúIÓ”y ñX3]hSÚí¬æc ó÷\l.aò’Ûk #ü‰(m=9Ü ýÀ¥Pà‚Ãe ÇãK58‡“ªÂðk³äã™k¼:³ùlîxô\qa ‘t#¥ð±’r¢š-U“®èHdsçy§wý à>à*…RG>ZPX¸·€¹0bœI× Å+ xJþ;€ÿ~ÿ—ÄÿP%ñÆ?„Ia•É ‹ìÀ6p!Ç¢‰)írª)³*Šâ‹JT<è¸Å‹6.#3 ûÐ&ËÁÉx<9•ô-¸W Ö'J¯aDŒÁñøSbpc9.ò MW0'<8ϳ™k¾Û Vu·E¡ú¤.S’JÿÍþ]íDéB¨óVÏC&ì>I´1ÍÁU2 Óž·f€®ýæ¯ÏZê—Ÿé |ýœœ&##jb2%9¢ÑìLsŠþ‘ãkL?ruÍRŸÙK½(ê«ûïºï7ðÿlý%ÒrÉ!ôž'ƒ]*£éÖ GßÅ ‡È~GÆNèM2J&"¹íŸœßLÔ…Tžòì¬!g¤Nn0×O¦®\·/çì‰ê f)Cdo3EpìÝØØà¬Dƒo•ôÎÍlŒòç ¶ˆæêýx¸¤–W`/©Ÿávk¶õë/¿6Ôõµúyåyóçç:£ÈŸí¿‚¹Õ° m˜ 숄½ñ1¦Lð‡Ã¹Æ‘¨¯ºòq2ûŒT‹†÷–âw˜¢w E3Ž:˜êDÂÁ§¦ru89æz 2ÕæÎfïuó×çKÏžk2L®üðYr¬Hˆ À@þ×ÃE¼œœw:Gë›ÚÑ5è–Kÿ¥èLÍ‘sç‹™{× ¹9Qo)]àVCmç÷ru§¡Vwjw‡ &÷avàÏn÷`¿¡ú;»¹ mDIßím|àŠË­ÔuIŒ…këÁ·]J¶CwŽ(»öŽþÈyþ)ríþþïü÷p·@ßE[rQ"h‹CîuÙʶx§ ·û¿ïÅ`•¼u!Þ÷µ#– ÈV¾¸ †)‹ Á©!ëËOh®áM6ééx‡G t« #]: ìëCºê6é gô:x*‘,´¦Ï°Þ]-Q:Æ®qcrª0º%óýØ6«»h»z2¼†]Ì\ˆ¯î¸ï›™÷´¤”Žê g]8Ã7ù ï Aµ^ôÐïæ%4Gã…™11ÀUkO2WpxP‰Þ:†_8¢lº²;Û  ã¿‹bJ. ÈÔ„úß bÆ 4ZŸQ7)õºQ×ÈôŠ íÑk¶ÍÂæâÖSf*^ÂÔy/U'8Ôn9œ œ¬!Â& 7$ˆOG9£q˜Žì`£Ç‡ XC-o-X"f] ©ÀPgÄÍœ®Qk‚@À ©×CÂ` Nª³’’<§>¾„&àù˜ÌÔÇñøTéc/˜µ®P ÓËD­~Áíôs26/GãÏ™¡$·jº@x K˜_r¦N1 ¬!É¥ˆƒƒwgÕÑâ ‹ê¾ ¬øq}¤&ÉÕ áܰ.,ènÈ(¢„è:¡cérr§Za ±g; 6Ð ŸÃ^XBәɑ Ô²Ëè ¼žƒvƒIg?¢’ñ äD¤ £Ø8NL X~£/˜dªy¢eBÄ–N”5I?¦¸ÍÉY cé |–Lø´}àÂ9•®ê.©ƒ†ï_”]Ž—µüÓôãÕàÿA²îohÃXÇm»Æûíh§¾°z–|zY¦m~wŠ|[3$ßvIs9ÿWR‰&Y=êQMˆ‰_€JP> #­ìjs-ùT'Ì-BÝ´}ŽâàÆÛ衈1ß"b™–`àøi[aÐ+îݶ€ÎñE:õéc>€‚`Ä*»±ÉÓnÌENcŸÿJQÓ*» s¤â›‡'Ýyä%D¥iÌAXÆÁUàÉ9["çăýÖÒÂ|òÏÉ?Í u—‰ùª¿(ôýßÙ.SÖŠwÏèDV 74}ñҰጠŠxÛ"—-G;t½’m›ëšz²ùÄ»Zæp¥Ä/QòoðAÁd‹€˜éàSBO˜)ž2Ó¢;Z"gb͈˜é{ˆx+eåš–k¤iÓƒ¢xÑ4Ê£€;…„¶gbÞ&#xËåxAá&•Ȇ„3'žZæÚŸÑÁ´ò€¼ŠØŸ¢z¸ø$þyÏô¢ýQ÷òΫò­‹ª&‰ë¯ÿõ½›$zö×ÓïÆþoåçGûŸyíÿþÑcÿ÷VÙú¾Ün-gìÿVž=®ÿ‡xxµö»ûñP𒽂wÉ£‡£Dæ+DÅš_丹ì¿{+ÀÞøSB&-m ïj–€ko;{5OåïcVи/Т“¿Ànfe{ÁŒÎ®Jˆ ú|T›ÓpW§bâ$7‹½ÍëØQõlzxù… Ñ=•¾Ì\àks‹ŽèØ `‘ôÙæEO1eóŠtDDÅ ®(ÁîD§œ&£ñ,1æ|¤ÕÀAK–Þ["‘cRæš:†ÄžO+ظç„ï:Ñïý„ǃ½¢zrN¦X:N¬1)ô:“JçØK*m×0;¡m—t46à“°°ŠŽ‡dšP(é0ª}¬æeÜ¥™†y~o –t¸A/Mjã ç5ë6'¹¯u±Ð[ËcJ§–­ž;V[@V°1Äå…Ô¦M̲¬·\Õà>§,‡i’â+„`P>qù†ŽÎKL=÷š ¬!ƒ2],Ó ÉM<ˆÌÑašzOéÔ5p°g=lÕÄK«¯Ö[2_*õJ¸Bjý¼:kùuÖÆ£‹›¨C° ë¥r!•§¼Ó¬Áü¦1œ¼Lló,bzÙ´Ñ™ ‹]$ñô;ô—³fC\ <„°‹`Û\Ú³¼óœõÆbžÎÏEø¡v¤ðR`\Æ 9d͈иÀ궈×~J Ìg':žœ²™¨;_KXý•xÀâêÞõaU±~¬×z‹­…§í…°ÅÜUlšoèÁÉ×zw…qK  5,9¨/šÖ*7 bl7ÆÚÓ… ÇÓl¿ðŒÇΘoÍ¡VK1êå%¸€Qa ƒZŠœ•¬š8/ñ¿s tCµö¨y±sA`´%Ž>ÞŸé)]º¤ÏÑÅ ‡B>åÊ q›< ÕçI:›%dzéÙŸŠRR[гß+Œ¢Ša߉Z$¦ƒÖÌ&ÓÁ`qx Õˆ3ú§Ð Pûå>käožäxp ÂoÛçr2š•ኔÜB·±¢««Í‰ [×,AÏ1Ö›sšƒQ $nÕ° ‡. ±ìÓÄ8tèâÐ<Õp6íˆAûÛÙYÓø¸æÝβsQVßÞ²§»„žáWhLuœøY µ(æ!y,ivÏ0_ú²àg!/õb¡2l{è° [ÓMpŠÏ¥¤ö¤òd•c•¥¥iHTÐ:7VÅ„OyîŠpx–0½9Áø2g7CZÃnߨ R§£½äåp‰Í›aN‰„@Üü¨óÕ—Ù[ú§“ °Ïó$ÀÊ6öoŽ 0 PdŽ`nÄayŽ‘zl'ϱ¬¦¼©Ÿp +6кóóyЉZÏ““Kf"6Ç­²’:üÎáÐ!á?Éd¬  yÃ9Ùˆtzt7¤)¾²±lÍ6¼Äe[: ]g§™žÅÓ¤RîN3=·¶^ŒþÂP Çôɼ ­‚ e0Á‹ ®ý£‚"bPn>7MQþ¥qa›Lñ‘X˜œ¡ê€æqêæÕtGlëp¡Ò™ ÐxŸ`&½ÏJ²K0JÓä›ÌKî%Q¾Íò4)J2=ñá¥$ NædD(4½SM6ΟÛ7^ÐLù cño¬Ú Ÿÿ¶tK-êju,n#[™ zÕI/-Íb+ÛŽÖâð!Û)ÄSÈÊ›Y‡<§3wA¤×5h­ã+ž-¬‹~FäÆÂ ®õT3¤K¦õ#þqËNÇÆ™âÔ$ßæé ì&×"êÚù&fuE¦Ù:o­„rCztƒ;CYÆ`²sã¾'*Ç‹º’Þ@ü3Ar˜Î£Yƒy»h:Ø®)«6:†VS/‘¼šêú¢’Ø> §%Ú”2Ö|*i,ΰ-”¦W)ô9Èš1–Ž–0öaéDÆš«KpÍÐÓgèùvMGúí CÄ€ÝILaþþ—аuàÑ+ƒâFÉøf «vØDctæÛ¦VÈe±éT7BÓ©ÓtJM7ÜeçãÄwM)MÌ)sm–ØO˜õ3/[߱ök7ÄRÐ}z*9BwË(ŠFðʤzŲ;òg‘¬¿zIqk…ýÏ"‹Ë™¨aw¡žÉ¦5Üþ©â3¬fyWÀ½ªñ/…Ö^QMg Î+…gÕ< Ó!Ž˜?Np ÇÉråõ<•óž±ýϵÙçÿóYîcúúü« ù»ïÞl®yvß’R«!ù´à¶ A™ÒуlÿM ïÍÞš ÷mã|Æ|(è[CrR47Y× 0V”i˜þÙ/¸ êS'$ÊÓÿáÜ~G(Ó‘e±Rd8AMw楚=œŽI=û﬽•Âû{j«!0Ѻã™×1ñEk µ±b@ü¬þ©ûpœŒv·ÌòŸi:Þ&á}ɸÑWˆOž³IgJÈ}c"ÈÔá 2.¡pE–*ñ´{m³ï“°Í-qŸ–:½õ%þÁï\÷‰Íb EΞÚbÓXˆD¤Ma:¯ÃE_+êB;§ „¤l[E —£ €¾‰|òGµA˜ò½¢&WÂ&{êôYnù纼»ŽÜL º™d«’¯Œšz—OªÚе–_ÓÕï7éɥ޻[˜=Ÿ;]èaZ/ˆv`¶nÄà«ÁÉ9þ=M®AByÓ’*Js'ì!h¥\ÓD™})¬F´{¬¨ J]=¡ýÚ¼ÚE¹5pvIœNc­Hà4lQ4ºþ.8°¢ͱ©³ª£dp¢ÕC|ŽƒÍðæ4ssíî2q»ch#!Dœ2°«©0µï¸ã½RÊIù€ØeSCJØ‚7Þ-ÙœšEmÌfâ0%óRéF®+ ¤]à”3r>àÁäj·ÃA°[:x±M¶4ÖóòÉ ÝuZ9ˆ$‡LõUÏ-’¶Ž"cnH&@Þ!/ [»ÉQ2Mö•H$É>‘aP…‡üñ5¦õõìš!ö%7„ý ÖÎ{Ê+ÏK®Þw›QYsನ—ü1[ðQdlîn¶˜=Áæì‡ù òñµ0˜s÷ûù‡\!Öy­|Ý‚ ?:ÓÌÏU¶Â_bžÞóÆ!ó ë’)¬0¯ÓAìžïaáÙkw}J·PLp\(qd£ûÅ&†Ux0{áïG];öy =n9=v’|aøº«ä4EsÀI2½Φ™íñˆ›¢œC:¡”vOHgS×üïü¢ž iÄ`]¨ËØŸ™¸4¢º”òO]5ƒ‹<£_a¥Xò!Qa0¤ò>G}¡Bãù0Ånåíµ–­¯ÌÅ›Íåv[–Í­<Á\•$´:œì'ñ-`ø)JC÷e€V÷¾XòæñkóæULšW1öÚ_˲兩ò°†ûäÉ+I’§%àÈ«’äy™ólÚ¼gN?c!Ť%á®xǧÄ! YD‰ êÏ‘“;9猣0ý{v„¥[Q–qÔD†kvèK‰·9ÖÚuË3KئGî‡[Ðùé´£õBd!ÂÃB;>ò`Hl—;&@1D¦o.ÎàM)Ìqˆ­ŠIŽM¬ÅLÞ ó ã¡KrNÏÖë &Ö®ñ;ƒްD6M^úu¹Öey¸¹e#T§ƒ§'—^6 Yj­ˆ¸‚ÚlØ4~r÷­—iªlšÊ¸ÏBmÎ9É{è¹ÕÝÆœÄ­ÎñÕA]Á޶U¾Ÿmž12——Á&‡=ÈÙßJ7·**UQ  ¾"ü}åp¯tÖX''<{ôaYÈS¬È‹WªU"8XE0bÙQ©‡¦*þ›Ÿ™:— À ¡‰*º…ïìü‘' …yŽÌKRƒ§*\&3Ç—{”$§â$ÙÑÎø§ã™qH§¸dÁ°‹Ãú»>Åža·¥°rœ*ˆ8v´WÒ1Kôdˆœ92R¡¿ —·“µ,ß±òÓ(úßYߨ žÐÄx ì«Ýéï …¸™´Íén+f6¢þ,ªšE6ÆÑå5¸PçÝ·Íö<ÙÒç™ìó²=‘Ƥ®’>‡=¦!`Ÿ—çêó\KÓ[r•’¿Ãtì5þ$yØÌìä;s¦çó€ïNŒGœ1/ú)$ŸP½O®ªlþªüþ?>îÀ Ú¹)VÓóóÍ7XU]ß®ŒÊýyFå®îo«®¤{Wó¨ßÕ\xõJxeoÇH 3z†"õ¢ª¬WwRÉ«y´òª¢b^«:‹ÞUV:ÞAÿ®æVÁ«û¹s)SÄ—ë—+kÒÕw}1£æœà ­ÚXUÖ‹suŽòXñv½R¦@VYrkežÍX•j’U©ÆX*•«x^M¿;KáþîmtJïób2{u„–¾1öÙ`8I§_8D9e6Zt'¶œ­>Nµ‚/çØî‰÷dáÔ*°p ûå-V’³{Wv¶i=e ¥möpó% m%Ã[S©ï ;kcò¯áÑÿ×?^ü÷Ééwÿ}¹ýÿùAžÇøïÿèljÿþVÙúo/ÃëLü÷öcü÷yDÂðã¿ï­kËSŒ3²ÚÀØ\ÝuøýÁ: uˆßç é¾¼Ôú¾ƒº°Îõ$ªö³VKÝéA@6~Æ\‘à‹ƒ¾úç2%‘`sEw¯1@Šê¾!ÑÝafåÓa›š/ØûÞ:– ¿'Sè ±šÊ) Q2|@Œ‡õåê*Á¬6È)ÛÛð‰BI:v ²žù×)GÌJg?—óÌAAŽŸ÷;ßT¢Qîï|Ös^š”…ïéÕ¡fDPr5€¶0&§W^bÚÝŒx¼§&P¦ …éë °ÃÙ¦³\4q<6DM¿s÷f&T1û/ )0Øô†ƒ{S¤ß Âo¤YN9w»nð¿]NRHŽ"<Àä ‡#ÄУo¢=? ³ÐÔ!HªÙ Â,¿+DrrÿªØbµˆÑ 妙™ê=N„*L¸|¯có„vF>RÞ9‹Û¥Ìú ƒÓ¾dFÐÏ# Ž²1ìÌjóƒS9·~|â¨Þˆê#ö3ãš$ :Ú{c’`bË"ÑQ—Gä‚‘ÁéåÒe0¢*Ý)Q¤ÄFNèm:+ Gî²4Mg½”Õ7šM†9eC.ßàônÀÇqFB|D¢òŠÃ¸þMïÌOƒc€á÷™Æ‰ÊYÒ™$דdŠI8éÙç¿c¼öÀ2R«±0,·MÜ09rF¢¨ì“þn1yœpN‘»còžPéÑé~’„ñŸ…½“¢%LS/SËÞdñ0s!¤W/U­LO€o„Ü€ò±Héäg[âFmÔ¿¡=¢Ç`ÛM&1œ»³[ŒcíªÆôÃ(/"Ä Ô®gš?ŽÑ‡Ç_bm]‹ƒ¯FŸÓLÝM“QªiØ4 €-ÞGñÝGT†ãá«"ÞTPï­f†Ë[ɱ^<‡0¼ÿ¹I%Ñ2›UF„TŠ#¯âaîë×ÇázÅÞÒÎ ÉÊîK}±ÀðJñ#óŒà¹1Êjsû ¾Å(¤ðNïýï-Møbˬe cö#¢âÑ2pS„Þ`妚 nàtñ ÿƒÃÆ¿œ¨Øø†Žµ|Ø!²dúùäü.‘šSbÕOµT.³¸d-ÅN¾T­Ãg u»à¤óŽLñj—S(‘€`RÅzÙ3I÷Û ·…Èm;¨=þÐ ØñкhÑš²=qZémZÝ Ø!땼_Ð­Ùø#ŸJŒ™X°jßóðð˜…"­J Žç@aUÆ¡T„þ+ô&§õ 0n皀Q¯íZ.%|3`¹6Q´©ÛŠuö?!pˆÜTáÓìîɬg®¨³®íZ+K*0”=6¦ñò/Í‚MÖz¨àe®ÇÂÌÞ˜Òù3`^EÔ„D´@®ÈšÆ7i”ù4áì‹ÙMq3Ùóõâ°J/ÝÞú»a^/*_¿õ¥”5­të£EÜÑ«Q¶>òûÛ\l£(µPi#‘e•·Ašíq1{\¬º=j GÉöHW™OÎÉ­X^^4&+YÖYEèêûôåîÕŽ!Þ;uåŽÒŸíKÓÃLUaÔéŠ7˜¯EJÇGÊççžrX)‡_±Nƶõ*¯ۙ̾D°|ES…>êH›îÖäá¾°ÃîîÔ®é0ßôzoýÑôúñù?¡ý÷ô»±ÿ~Þz´ÿ|çÑþûý¸ößßfõ—­ÿçíŸ~je쿟?Ú?Èë=´ÿÞG–Ì`=« ;Ò!vóå:ñ“Õæµ— Ô˜¥ÝÜ;;æˆÓ/ÓYre :ŠÜp§õc´S~J~’[J¼FÖ!0"KÖ™ò†O¶pŒË`67íë LjGß{š«w–¤)¿%j86ãM}7ùI›QNh!VéÛ%á…ü &n°A±„›-„ÿ“shldBjÇ2ÚN‡C4ãõÀÐýªÝ8;Ÿ$ÓóñP¬SÙZ@’`Â9†>3ʺÌcHdßà ¿S±ë¶àµ*]âOZbkÖu›ÜO§ã«Dað‹ETr“ksölÂjym¾H³6ÌßÊžÜ5 ϵ-÷,À´éBCñKqâót˜æþu]ˆ¨[çžõ°U?j9­±š{Œ_*õJè ïTëçÕY˯³6]Ü|$5³¸^*q `Œwš5˜НN^&ûC1½lÊ–è̆E°³ð;ô—3¢mYùâjà!„]üÛæÒža¦çí=üØðtNEµ#…—Œ7/}… "T âsì$$f§í)¹í« ¥ïäî€Õ_I†zè¡pGׄ¾¿ãTòHP#+Û`ÙJ°lÛd‚Œäl´¢•¬US7¹´{âœá»PéLh}Æãkí(¹é,IÀ(M“o2/¹—Dù6¥áÄRIkÈÂ’Ìkuš“¡ÐôNhõ9!ß9Û7´þÿí%wä©ú›Cˆ7èç¿m'ÝR‹ºZ‹C‡Ñ~øËTЫN*x™Ð[Ùv|k§ O!+ó¸¥È:ï –•tšÏH%âˆJ¤ È#õ–z ØÕÞnïSÝw4Ñä~«ÌÓúíeúÛË ¶Ò>5ÀÿF²ûÁ׸€ÄD p ZãÆrÚŠ7®.D(IatNÃ;œ»òš—j3ŒOx6™¬áÉt&ð.ˆô£­u|51út{ÒÖ ®õT3$×]ÄR?â·”Ru8ÓS´3¿ÂŽqê Ÿ“k‰Pl盘Õœǧ:y»#F  §Î’ªeØæ™V™Ów'$½ %‡él0š5˜·‹úˆ½OCe[CC«©—O^Mu}QóHÀ>†Ó}‡.ëè|ƒ** 3lF ¥9Ƚޛ1–Žc­F"ÃÒ‰Œ5W—ðЙƒ‹ÇÐ+ò횎RßùS²Jü%Ñôùû_*ÂÖ ƒ>L0ÞÅͦ"ßLAxÕ± gŸÇ·M­ËbÓ©nš b¦Sjºá.ã8'¾kJibN™k³ôÀÙþ„Y?óRÓ;l¸6Ïðg¢èÁé©Pä]‡R (Á+“âËîÈOœôT°þê%Ü„ýÏ"‹Ë™¨aw¡žIY©5ª*ÿí¦¨â3¬fyWÀ½ªñ/…ŒZÂÓÁY‚óJÆ5OÂÜ¿#Fæ"Å$Èq²\y=CýRÞóßu‹áÔ16Œe·ÏÆ÷’™Ç-&âJÂùÀ¹ÁQÅ¥xŽ E‚ÜjØ›½5IS‘?vŽßÚ$µ˜•£Ï6( e£SÒ?ûh}jZ¢-ðN"{„©E0f_á[C%3ÉçzgÇ„fSäý³³öV ç»â0ÌF´nÁxæõH$\Q€¬=Øü#àçuê¬î7unW “Žf:t6‡µñë‘’Ô”[B8¼:E(¹)Â׊\B/Û> 2,Kâ÷Ú,a?è4·Ä}ZêôÖ—ø¿s]ÇéÈŠœ8µ³ ÚLdYz4}„é¼EP|­¨ íœ.’²]l\Ž‚úþöÉÕaÊ÷Šš\ ›ì¡½ó³ÜòÏÃòÝõÖ p¶”[ ¿­Ÿu]×€l¬¡††Í6Kf¼ªjê ßò>i¨¦Üö›rb‰èÁŸÓ+nã÷¯8†²nç«ÁÉ9þ=M®A€B Õ’9ʨ ›Œ‡V.6 I°ù—†`Dû°++€ Â×ÕÚáÍ«]<) Îή@ ×­c·38 [T“l“mVD Ž â&ͲʦýêùHÀ'?8 oN3G?×Â;“E×tœ[N?OºSF¼·râ_ÛlFˆJdï:—ISrXÓÖl"*%/…{äâ5ì[Ûö-–þ#Ö?ÎBIOü¶ 3Ñ ¨ž—)RúﮢÊaš9HsªïÂn‘ðŒï³¾^#Á–y‡¶0¶ü&G²6™È"±šû\D†AâÄ×èŽêGÁ7CìK¶"+Öù™'œ÷°j² ê}·•‰.]Wš‡¾f¢·¡ß;؆wxòKç¤OF@ŽÕxh´ÝòÑéÙ¸¹yCPZ“ú.KËK*î®õpi#RèÔkū٥N–UÑ—×ÿ…V&aCÖݺ3³élEöb[™%t¿0ò8<(<ÇØsú7ûH^òöü,-r÷˜¹òî Ì”H_ð0vÁç2™[<©]9ç•f‰32\7y û:ŠWXZÇ:!\ž#¡ÞðЪ\Í}„ôäÊ.Ž–Ð ('¿+ö¹…ßSïHcæ,ÓQ8È‘ÿ©›´#Ûš“Dyv#ž¥GCNXŒC›‡r°Õ ×y©ßݬ|2Ѽq‡PÔ ÞˆT¿Áv÷˱Ýí<üv7OþØ^Ÿ¿ä¯OÔÚÊ"mˆf:³XcËUç7U$¥¨ËîXIøÃ\Rj!wÎëŽlÉ^r­(Ê´¬ Ìx$E ræäw!Xá?æöóóIÞ!Õ™Ô¿ŽžéNˆös•½è— ¾²8dt]RY¦<ˆÝ)óÍbªã¢…Éúœj¡¸Ö‹GÚ’3>1|HÆ£iÜ7ÇóÉqÍÉc¿Òë–Ók'åiÉiŠFn“dz3œM3{0e?EéñtîCíÆÎ¦®Q Þd9fAÖÖÁ" €LÜOô ß5†D«ÕkRþ©{Øvh´ ì¶Ë“'y†T¾ÛæâUhc¦LGZë+“žgóˆÞ–e-OnZ%Û·ÎDª9}<iNÒ’$¤U3JúÑg™ô£ñ6¥‰GçÍ:Z=åèùFï#ûdëéq-/A?3Œ~lj%s_TN7Y¾îqtÎt£w›í9æÂÀ 7ŸÆ©Õ °½YM"1iïsÉhÎ<¥8TW¡Ò/ËØ —èÚHñîAAë™ôzø…˜$H¯’©±Ÿ+_-øïÓ鄟¢L¨ó.§Šk©|!=ÔbɛǯMÝZ1okAÒVØl-KØfkÅîSªµ$O«–n#¯Jò·$oµ™[Ÿ9ýt.*5×påƒ<608%&0aÈ""GX½rŒùzÐ?ËÛ ÷¼Ò­(Ë8j"›5 ; Hô%ŒÄÛkíºå™%ì þ­;Á|ƒç[,èøZ5[ÑÑV½Eˆð°ÐŽ<›måŽÉP QY©™ŸBEž-²UØTúìè9ªyîF€Œ‡.È”^>[ùšØfÆÕó=Ɖ®´›¼ôëriéÞp#Þâ’«ûä˦s×HMQVpù§Šˆ+ÿ…Ñõø™ ÿtŸ]ø³ƒñQ¨„º²Ïâß¹Á¯€þ#ª¼SñDl©E{ñ‹íV¨÷usb¸{ÖDÂÁMd×µ×Ïy´¥±ƒ'eól_Â\Õok—*8÷¹üíÕÅ]ΤbI=3º[ˆ“¶Û9:Ú§h7Ù*ßK6Ï ™;µ`ƒÁäì-¥K•ó·ªzW¹Ë[•ÄsÅÆÒ£´òNÓ•ýuòײçD<µ†¼xÅÞºQ(Œ\«aE4;šæðÑdÅs¥ß\Dà ¡‰*ûïLøÏÛ—Ñ,9Gà¤-ÛÓË®“™ãö+95ÙŸ‚YÔéxfléÓ)2ë,¶†_×§à.ìáVŽÓBùÂŽ–Ã=fLÔ &ÈÈc[%ñ¼ÃF"vfå›IÁ¶Cþ;ëD‰®Oé¨9¤4œèG©ý®ï ¸—ØPÆ[1k»ôgQÕ$°/r.^~ uÞ%qÓk? kœ¾æ™ ìðò3³§çŸçìðò\žkIzëNî&òWž·[“ãÑ­Ù°/'#v/‰ù‘ÒóyÀ—ÆiÊX,åN¨Shï¤SPßÑf¨ª+¦•ÑM?Ïè¦UÆŽ1xië6®æ/Qò«¹÷èJo5Ò[Í¥÷V_¡úVö®‰ä/sº/Rê©ÊZpu'E¸šG®*ªÃU±‚±è]eUß´ÞjnÅ·ºŸ›Ž2õw¹V·²þZ}××!jÎ .Àð×*kUe}­8àæ¨loÖ+ej[•ÕܶVæÙU©þV•êiU¡ªV¹çùçմʹ³nðÞ¡ôF/F§~X%y´ØÇÃI28ýÂÇ8hÆ)³Ñ¢ûŸ8±åìõqª|9vO`±ªÀâ'„ê-5쳑Wv¿h=e ÅdöHòã ÷þÀK©7-Õ¾o'ï?T»ÿû?ßMüïŸãÿ>Ìóÿûý¸ñ¿¿Íê/]ÿ?ÿÔú9ÿûqý?Ì#{gÿûCMíMaךö; uøno;Å;»{y©õ}Gï`ëI:Tíg­VVÀ©ò ëòŸò;P¡+HE,GÂÜ9@7e°¡O8SsGèþ öÁÔn£§Õv» œ[[{®“ÿŒÓS“ëÿ©:-Õi«¿@û“.Rwðß‚|ì5»‹­½x2gMíቯü>4pÚ¯’Áˆ\Z1\Ñdv>æØy~Îëé’R$FõÊvÏÖá0Lö&i4÷Ð7¤8ÐN6 U8I¦IïÈ–ÝPXxÎdüÙJsâÍm+ÆÉµ@,sE1s»÷W¿r·>ÎüŒaÝH‡oÇ7Óƒ\‰Š¾¤zMu7?¬ï<ñP³Ñ}ý˜¨:F+Mz/B¼N](:â-E—”»Øà€±¼NÒÿw°ßBÙëA„ìL\B6lp$bñ¬ù8-¯ÀtºgR»SnÂC‰É0oãÕkŸ$דdŠnæBœ)ÍÀE<0ÇH€¹ͯ§Ô·ˆª[k5vLXµÎ߃|v2¡§ÌÀ5”¶‹ÆE»!¶ûy<¹œÂ~–Tn«çÇÙôyÎê•ðP“"W¤Ç7ŸæX|^v“Y:K€ìD90Ý(Å`ûz¶Ôð÷Uø¾=ß~ÂПQ¨ó/ÏK“5‡PÄ ÀÇH¼9;‹úÉTÂÏIð´ËÙ9‚𶉠âÄ¥" Þé„bK1%ÐÄ SüN4Œˆ¯©+Õ„z‹xhr`\O¢^ V—~JFú&4;1·Eš½Mú5 ™ËÅþÞç²n &7¶1´ä‰¶Tá©I7+F= +ÿÇôÕfž°ì#%xï4A³…3/Q[ àn)Y(¼ô˜î’0KäÒ™¶éP: ÒÙô¬a-Ý$LXÃ:f8÷ Á‚*¦¡†À=·2Ü^Éx%8ÔVø¥C_䔈ª©…%ê® `0àtYSe>×!Ä?XúĪɈi³ÅROMµéôƒ¿^©ï!N›¼-Î6OüµX<±Híù#|QæUж÷! 07—,q?ÖÀŠ}R Rd¢‰L(ýˆGúN… go¨9žNTÏmòÁZÕr41q¦I_¿hSïÉA³å*—ïž%÷OÿŒšC¶èû+ë¹&ir»‹-/¥/dùeÁž4µ¹œÓÇÎõõð‹éKG'wÇæÎ&ã+?Ú6,±'{øÖIº]éF»ÀÂ{]›VÔI(Í™\õ±XQÀ Œ¥^v÷÷Ôî–?žþ÷?Wßþ÷ùò£þçAžGýï?úqô¿ßhõ—­ÿÖ³åV6ÿãòÊãúˆ‡W{ ÿý°SSû›ë Ñ¿ÇôkïE¼[ßZw¾µG…°÷TUGr@"º äeÂ>!|§0ã#LÐWª“×Z5nˆ>¶Ýoïï¨[îŸãùOh>ž¢ªéd “‡™¼g“äz88á‰7ÑøÞííì}X²Jê;’ÝiÇÕ3Šrê£È²e½ÿaï÷×$¼Ê{­’Jfj×=ÝÃÿäL/q+ªœäkê#c|ÒÚé+t+’¸ƒpnÀÉU’‹ ³©ÚÈ+€t™½':ŒÔ£°S®ò‰¼|‘VæÍÙp×L Œ\ w(~¾Ö÷.½Û[BûñÎþ"fò±õŽ{糕—AÁY¸ŸÑªWÕÖpþÄn¼km¼qÊ*6q28°wË9&é\'¬¦ž˜˰îwHÚ`3':sØÃŸãŠPÛˆÓm‘D_™”kø†_êê3À)2£÷‰¿}ŠiÅã»¡šÆ ‰ÔØ2îØp÷jf€\É ÌÖnëÚnxÒÈLíÌÍ ¡®>åMÐw´U>=n î'|ØÃ1Üß ‰¬þ“Üe¦>+ž­‘]î,ìDg!:¦½šBPÅŒÁÎÌ@U»è;ÿ]ÍùÿŽÇÕÿßÜ´¿ýÿòóGýßÃ<úÿôcõÿßjõW°ÿn·Ãõßzþhÿý ¯v_ÿpÐÖ1f°²’Ò)ÐônnÓaJö:ÿ9uþˆâ"ÿëw‚ú{4¯¨±g*О›lŒªÍ=ΞKÆÕåóIWGÃÆrÖ8 !IÀé*M9`᫵c{*x—I›-†UÚðJÛ€å4bçœ$þæ eŒ´8Xëí0–±íé÷µ6Z§Ì2ÝÅ,KAS]njè4åvûnMuuSæ¦$ãßÑñp|rÉqSLny“¶AÑQ˜ƒº‚.F£Juéûÿ?{ïÚÔF²t ß¿¢ã|±0‚AÍÅ3ží¯ØH2x†ñωA¶5‰‘„=³ãüø·2³î—¾è†€î½Ç€Ô]÷ª®Êµr%Å_gϺyªfçŠò›ýɻɰM½üZ¿;ó5+ Å±óXø£†•P.ûûh|Mæwh¬Údúå1Õƒ%ðóúúÐ/Æ{U…ÃK]$ùÛ?Mìiþ«e T“¡˜UæõTÂGd.Ö•åÈ[jxKSBôª'tˆŸÜ_ê¸;@oèßÿ¾gí#¢)ÞPóÜl±ÖÔÂè[ Ϙ×_EØä·.fµ+Ît7-ÈnÂû«žHÍoeô…°=ú ù†cÖâM‹0¦ró)滨¨´¡PÀùx°Þ °9ÃÕ.'ˆlJìS'âkŽØ§2Îê±OÙŽiÕ±OÕM¡žº8§½´Ú d6ÿH\‰X»ÆwØFIº[ò1M­n±€qwjþ튪$J¥—›J9? ½~)]z¾™Õ×àøÚ />)]ü¡ž! 9Î*ùeùÞ’z?ÆÕÖ_)}¨cØwuië†T6ɪœÄÈV%Û¬hEàm_WÏÏÞ ‰È.Œ3Ä— ²Ùªñ€†lÓþ»>üï½W…ýg%Waÿ}Ö—nÿ} þwe?.øßuÑl·í¿ÍÂþ›õzÂößfaÿ}Hûo.ëïnaý-¬¿…õ·°þÒêþø¬¿lƒQcoºÚb ½¾œÕãÖo©¦^~Û‚Œ½Í2?êƒÑ÷àÀ]tàÓEÚ~Ëù)®…x±àæª À”ÊôÖ-ì¾åÆ!šôÿ+Â=°™mûãѺ^uj«p8б}Täî©›øŸÆ’Å2Õ 8t…XÐìwÇÞ8QoXÙ‚Â'ÏÈ8Q}j'J6Éå0‰G¶U¨È¼ê5q¦Uã²!»'LyM‡ânuàÝú¢5nADò‰FO´•Â’)í¥–-DSÌß¡¢ò>‘E„œìLìq®¿¾YÇá‘‹CZ‚›®5ßhQÑ¤Š°‹5üV½¶Y±Ö;,È‘4ok Q YXÖµs TÆ”²è]ê+P=½k£@ïÚ¸Cä•ÖvµÇ3Ñ@,fÎ4z_pÊàÎ?aʤbpá§€­?²ç…(Çrç…UIg@AmrÏ („VÜ ó¨ø†a¸¹"k^x;Θ î niê¡I‘6ì㌊òÙá›G퇠ðŸÑÝ×éxmðŸýÿYÍUà?ÏúøÏòfºþÏÞ¾Ãÿ÷Šù¿Š‹f»Žÿ|8{wÑÑOcg\÷§ ïÖ¶ðáóÃA(^o¶H£ï=äˆÙ@]2šÓ^šsÆexÚ%Jp^åwìq©›}ƒrï®îs[)ø^÷¾ ,pw"t 45èáVů›Lò(ò6øaž—*«$h|t~vÑ9Šî'`Ë…±Á¾” ‘×T`ËÞf¿¼'EmüßûsïKPð±îoÈû+tŸxž_|ÂÁ ˰êC:Èý!k»Þ÷þèÞ0Úó C NG¼Y~µ24ÄCæÎ$Ÿ˜§ˆ²m¡'gfR`“ÖËRk³²ñSìèts=y>i †¥ºaˆé)h£Í¬nš.Œ¯ŒlÌ¥csoG9ÞPw…ÅÍâ骫öü0KÜ” j[h4i‹4ò=3^B0í,c!‚iocB.3£:µ.'ÃÑAœ>8ý5q@z¢œå’ å#;ôö«ClÖÅâ;9äBòã6:ïâF™~vÖŽ¦¯ËU‹¬'FÓΊÑÌÑàVgýHúmŒ·|-P\ê»Ö[™{µñ1À!¼ó5íü¬oG3Œç¤GlÐå’]½SqµI Š4…ØbqË«JDÄÒº"Çêo²Ÿpû°3Ü€\¼!ÅÛ"7°ÙÙn˜eàš[!ý:ÆøN±v7ÇÆçmÔœ91Ô×½do*ö®²z;Ŧ2·Œ¤vIQ¶-‘Ô§ÔÞ†¨¬[•2þ»ñ/TÃÅ«DÚ+êq†ÓÄXêò$GÛÆÿüc³a ‘-xp*A¹ÅŒÎ6.;7ü+ëP|6¶)ÚÂø­uæ^ 3qlíÉÐè÷%[±‡›þÜ~ràú¦Å~žiqª!.ï.¶+~¼U³ñëa™ýgŒ×H²wÈ– ¡b2íC7ŒÔíåÝgÚ§?†}|Qš'kZêøZ‰.6¿KÉÒú+†ÜÄ[d7°ÃD70ëMé÷þòPi¿<ë ývø²Í½3Ùo‹Të‡iÅEú­Ì Õé7®Ì¢ýæS~ÿg®ÎÕëí‡Îï#¶o=~{Áv­àíTÎÑ>fÿí²ÿÁ2]ŽN`ë †sø¯°·]´DØR‘E†úøEèO…'jA ø÷ÔÓê~Äa{yK&)JÕj hÉ,i ÃÆùZ°_mê†ù•í©Ôï„$]üÓ£þ/S âŸs#ªBŠ ðÆu“­|‘”æ®f3¥Ý³ïOAu÷íûÙ{BGu› eû%Ô59PÝæ’P]Ü™œÜá•5¡55‚ÐtÚ`僂b‘xL0á-³}æx&ß”z^æG1L«¶tÖwÝ[ë&ìÈoaò¾´b7­]}Öié·Ú/Ù0mƒ'QôS›iYÞQÂJ®V][1|åmÖµÕÆ›¼±Õ[Í,³•¿cAª$Ø%0Øá5 “Cz ˆ¯Ÿ‰"ÕO=n\átoYº}Oº-OºæD¢K…ç¶Òà¢s€GÚšsâCyô á2)ßÐC[\¯¯RÖÂrs‹¤g"ÐѕЀ[§Âs"âý³Õî€OcNÜ¿…q'+¾VñÝËËüü+б>d_VŠ%ߊ®“C³$©‹ da?ã[wâÄug¶é8ÛjÕߤu%¸^5a&8“*Y ³}²¯f·/_ê _¾'|s­vië–½fתÞX¡6ÌPËúM‹Z½p¢š<ðÐ<´‰ëXìk¯(Y“þ’/šÏ‚|±—Æÿ¾þ¼6üJ¡ÿ·š«à<ëKò?–6ûÓæÿÞîŽGÿs§RÌÿU\4Û þG§vT“f¥óú;Ný8Cöðe#nâËJL¿Ç ô˘€—1=?؆ä¢ÊR}_ÇÝÐY’|ãmmÚ;µcÁ^nÞ¨|‹Ò[ΠÅÛ@BXûs/Ž"61¿¢ +ë’3ˆÝ|†Û›pc©þ…TÞHös8"Xçª ¼ ”ª½”IIâà“×?±$îzã[Xë¶I}öŠeðÏ5ëi`£°޽ý†,ÑþmÓŽ }bÀ¢‚kA4ºC¨Š­#½ ¶Ãó#H4è®{Ón0ÙÞ2·=g]±ÁÇÞ¬ô°ÌCº¬Aa‰Äaõ-±ZoÀïþÁnÅÆ¢ÛÙGmü)ƒá®w5íï þÚõþäàáqïŽ}ÉV àÛÜÞ úWý)Ìv¦g³¢÷m4è‰30ø´ªÁÌ­Ál­Å¼|0 €Tm*©*i9!ËÊÈ ÕO'Ú»0µ*Èõññwpõ`oV^Оü­rAÿ-¾À‚+ùÞñèÇÖm÷ÏÑ84€3HB#ÐþÑŸô^gÍ„Ø:[¡,0Êh[ðÈÞeªìQÙ !.»5è}™r)Dà¼t¯a ÙÈïÀˆJ\¶Àwý¬ÙÿÿõÔÁŠ_)Ý­1pÏfÍñº÷¥ËVe#ϹxVÊ9j-)Þ 3% °µ Òd‹ó6[´þý†%ÅþiÚ¾èy‰[zÒq…'Ýfÿè‚TÜYÖ<˜ØÛjµTYæãâÀ[¸$Ê<ºÓßõ¹/½éˆ¯•âbýþ ÖRÉÙAŸ5ð¾îÝõ†× Sá6Ô¯Ù ®‘\iÕ¶ .éÝmÜ”X=6¢ južs°æÂ–ÚMA’ðÆý{x¼N ]1F}o0ééüÚ²éŸÌ!g=U,o%RRœh@ÌBqbOn{»€§úc4žýJm!¾“* °q™}DÆ8¸“Ǥ¾Æ$ J=‘ϽeJ«ÃcÕWÊ_óÌê7+™v<ÓPsÇJjæV*8„bmÅ3¡8aÅiCöq|Ås,kqò²öyı·W¶Õ"§+ã„…c¶ÑbŽÓÄôÕ€ˆg^Sâ„5%¶×önSC"6W•xŽU%N[Uøx ;ó¶7+¯ap†?ÛædÙ+v3Û—Û¯Œ¸¼Å†ˆ¤Ì 6cŒñ6ó',@±½™ã-6— &³»5ðbðJ,K†åʰ_eY0uãZf (>FÛÛÛÂÆßÞk¨ü†¿pQßFC4åTÁœ($’*D5ëzô½*$BŒÔ­ÛÑñwrÔá}¶ê^}3ê òÃý>!°°³a6„Í{Ðoð½¾ç¿A¼ •ÿ©ü/|MWÃÜÊßz~«ªneƒ– —ÓQJ­ºiWÏvy\?ö%n† ŽAå¥ÝÁá׆˜ÙÞ—Þ¸7¼ê‡¾ƒ  w´Í¸m‘@Ø¢á]:èM{Ñá9+ü…f7¸±Å†îXŽõªˆ 6)Gû;l`¼ÞÝÝ:Ø/ƒO÷/Û‹sÑ™ÁC§s\m¤xéð[¸§ÎN†Õ:~‡Òø))Òm¸ŽBŠº2à¼~@‡ÍêɇN9j´?wþàwúp•kÖ[ü·gáª}bãê_ŸvÙ{ž2æ÷È©^žýQŽ9øãÝY™ÂA'8ê$ùyÊ}Ôê4ãp{¥¸áÓå ’ÇiH5¸í1T½¨¶XZ‡Ûç‘£ìŸ=|TF"1&ØGÈ!¶}….<ò„Êãç|ž.Ÿ€ðkÎ ø4ö~ºëýtÏùÔ$@&d±•'ëfƒI3<¤ð­.'ÀM6|R"ð¬‰ÂÎ8Ž³Ï™xýXØ_ï.¶Ñ%'£óOÛx¾MÏŸ±»—-.¿ng÷’c„¸åd#Ãw¢³w¢Wvr8†ÒÓlçIÓ“\œ½ˆ¿d-¢•&µbæTÝãŠ`R1+~ß¶ôd“Jé&êIÏ©wb1ñ*f®æTÉšp I6ŒÉ‰Oã¬uç§x±qâ{Ûú†-Áî7H ©lˆA½y~|™€jÉD4O±žø0„»¡ëOàùCÕ­uì«›é‘÷72MÒ=ò¤· ¿”Iî{ïÙr Œr„\ã¦RâØÑ¤ §½Á?FÉqáº2tМ) }~šhsˆˆ3Þ.Å”å{Áå?Ûÿr©øu•ŸKb?Øz ÞMeÜæk¨^®o Ú¤ñŒœïMä%{Ë—àÐSg‡ž¤$e °’)l±$>í¾ü´÷ò`X=¡Úª$‡"K®…>Èfj,°¨RM©ofl.-§Á‚‰Z &ÓØb‰ø›,ÎÜdáš8N?7Ù–êè {»mµ2 sçO‰gô~‹Â¾.ïÎ<ào죺ty9«@ ÍÚˆû}!}OEð73‡Ø“Cläö×AÝ#žI{«nT_•?ÜqüöÍʆdäz¨ö'¤0@Àoµ5U zÇL;¡lIsF;âì9‡Í™6lð 2t*t۞ɓ†Ï™ñBÅ­—Ï6eSÆÐ™Úéj¥ìC„_6<ìlƒUº)‚ªßhTÊ–òvW%‘²4ôG“ºÿi9ýç8¡{t‡sïflþz†­e¦CúNœ´MlœZ£eÖɆ¸„»/áh¦C{¦&ŒÓk5ïá'šûÏûs¦C¼³ÛYÊA>ë)hîc>¬n¸²ù)óQ_{[f8ÓšÊÒyrÎyÜ—µ ¦ÌG~íõ›·¾Á¼“ÞgêÕ¿òc¿°*Íu®—¦©Lç’lÖÑ™Îóvº³œåjaf´Ð3¼j˜YÎï¾o޳;/ ýk†«¤£9>´È£¹að\úỡ-–>›îòÞ cáš1ïºÖâm ²ÌÇ+ãD˜Ñfª/ ùs\×þ°í_§–;!¢Ÿs£‘ÐÎ].9Ús†•¡Ùa‘8ËÈ0ލê1þû‚'“nˆ EšYÇЙÑ_„²Ê~pæeì8õ§vÎ ­Lo­JkÏëÒõß®&×k£ÿ¶{Pè?­ä*ôßžõ¥ôß–5ûSõßvâÊž£ÿú+¹Äöàðcç¼þÛ±¥wx~TŠN>Ô@Ú~Äø^àg|!âØ%ƒ×t¥IÉeIC˜©Eå²$ô’5ì7!\Ó8ÂP·lÂV0Åè¢IWyæštÿßݸwÕŸ SÅp4‡¼ëhë?ÑdfźäœOÏŽŸX> ¥»ð KàåSºó•P…q¤|úv4ð>¢æÔ%ç>¢âÜG®Us¥$ªž,^Çš¥$ZÇ 3éjâ…S±Åò5ñÂÉäË'7î£M>¶o™¡§Ëã¡oß yQkÃI¸<Êr‡òÑ­ó…½–ž‘ëV?ÿm^™½™´ö>ÆN¡D«HÁ½ßr ælQTé3;ƒ Á¾¬RFÂhº¬$$•ír«Ú’ŸðKíÀÐö¾vQwÌÕ¤›°/&_þßÉÃÿG›Ñùÿ'¦z9ê£FE-%¼ÕÖ¥·’ôép•Ò%Ûþ’m± …BPhnmCqë¶Ê0Εaœ-Ã8œ![÷rdwgÉ‘ßÈ2Εeœ1Ë8”e¡3Xè >A™ô¥‘ôO9µ/Ž.ËÍ™%w7ðãÛvD°ÇÀÐГþXN=–X–Júe€ÐÕ U3ª—zŒÎYD}:ðJPïCAÈ}5¨/!”ÊQ½úÜ­žŒ\šm¶›-kv6ÀÏ\:—O+D[{Z}ˆO‹pÏÞ}3 àÔ¿ð—.¤°Ðˆ²´ý£÷µ§+?* B*Å,÷‘äÂŒ`z–pöꙬuœ¿Ö¶ÈÏ5–õŽÍz››­þ†p o %eEE›©)âm§P˜ž¯) Lu èC?cúÙN¢ÞÔyLŸöǬ9ž"y¢kº¼ïÃØà±Ô< ù{Jò>‘«—L‚ÿžš¿O&Ñî¨$è÷ô$è>J"¤‰•(¶utü¶ú±qÁñ ’Ö`»‰jë,'ø3ÉD7 i‰/¼ŠPyåµøx:jT¹ÎÖY³Ã^àÏóÃýêágŸ[íà {èÁÁy|Lˆ!‚¢Ç³Lx–m"Ã^#ÇGX¸CxôÑøPý¬˜Gú82¢íØœã#·nÚ„óßè¾i‹ 1|µ©Iÿm™\}:ÀôĦ®hÞÖ®ˆÛbí6ò°o)¶+Fæúm$4üFÜo¦hÜ*†»¿D}¯þÙ)k&IJ0í•ÁVè/y6Ó³0vöP¨ÖEI ½÷q9ÀP™é䕯zö2«'Ï>)Õ“g©”êA¬Ê<Õ[\ØÚ½pÇù?6V °&†K5“K]a;«?§5œþ3µàN|"4oÀ|Ào:NœÙ`` ã„Ôâ O-NI-æe‹“Êó²Åie‹yÙ⤲¡Að ¿;!9bx{6>¬yAÓÑN9 U¼ ’Ò ŒË„¨L’F n€¨?§Ý¦ ›Bò¥wÓ¶gð5kÓ2•x+Æ€MÛ2Ã;mÓªÃt™U"m‰ñ”ÏÝž-49J9[%RB®P ÑbeQP×kA®ÚëÚÙ_©vçä-ÕJç^jë^l9ç^Þ6æ½ÔrÖ½²½ô{Ek¦ÈÒŠmMõóh<…Vwø„<Æ\úµ´¥\ª~í1RÄ´âapDí_ZÙf{ÁE!…pDv¨°«T]Ú¸ùɹê†X¿½]1þŠ“Æzm˜V[}Ñ’}uu‹Ðš£Wì§õuð@ì/¸1Ç‘òë<¡ëtZ[,â^U¾§<ªßhZÙìî$´nS†æÙ̽ž±<·å«©õôÍxM%Õ• x}ã­)á áÔ7ÊPae jg®ïG”¨ð€•^)+eF$»ÇåÄr“åÉlxŒ=íf<úÀ‰ª¬‹}ëÀSÜe|}R®x¿æNÀnEùæ_Õÿ‘õÒϘrgè¤F{ÃÄJ2w’´¶¡9!G7ÉÓ¹¶È©}RÀK\=.ÕèÎøUåÎ4ßêpµÁ“áL»;”Ÿÿ¤¥oæR—ƹÚÙ|Ùϱàá´plei Ô=û‚UK^ðô:/kÁã5Åe+Ï‚Gý¼oö¹4Â×p¼¸\yb ¼Œ½àÍþVšiÁãÂ| æ^ðÞï Õ0¼ày,gó,xùÚ9`é$—­#Á™Rl¶ÍØnÏtØûŸê»êY}O¶ΆöDZöG|”´áKŒº9Ö“‰õdâ”db=h­ “½aíßÏ•è¹^ìüs7¦]ÿ¦ÿD“ûÏÒW‰u>牠³ÅÕh<$r Â×ó>dIþ4›ñŒ;ã ‘J¦b'i(@"&Ú½±¸×8…È™NSŸ¿žìi¯K“êíLžœ(9#%tØÁ¸nÎ}ù3E˜ð¡PŠu3ÎŒR¨(š³æE)Ú~[e[Ží²ö*T#»në9¶•V'wZ‰kšnóãlÿ`kåkÿ3ÕþÁ­›ãk2ôÌÒ ¾%xö~È–šwA¦?=êCda)¤‡úÒõ¾ÆƒuÑÿÙݯú+¹ ýŸg})ýŸeÍþÔùpÀ>´æe·˜ÿ«¸h¶›ª?ïbd,G­rĶñUxçWQcRàŠúÎ>QÅ&ÞPú0k&4Ã÷"š(ÎÎA6e™ *Ì)o)h:›7(ââñ~¨–()T6a-_²¤S´äÑÛ:,bÂ:S„æîÁ¹+º…6Fãžò_mo =÷¸Ô?œ••z)ƒkصðKt'Óh(Ïq—œG‡?n‚aÄá[ô¾nu_¬6¸EïK7Ñ6þï}‰  ÷¥ j,[ò—¢qrôî¸Ýx›A‘b6ÇvÓjкîÀɃÒlåMSk%O²-=íÓ¼i«vÖ™ÌE‡PßaÇyü2Y9°§z9ªF9~ÊáD c·•à _nÝlö7À‹‹Ú%ºeë°ðs$7G¬=×=‘ ¯Þl¼ôÙL­>êâ2ø:Þ”Ùð1}í‘ñœqXßèÖg³+©' ÝϪÛvEÑ}{™æšldáøZÍÒ¿äöpd¬nc2¬·n»nþÕFâzëÔè)Xmún‡LhAüÒÅVæ…1g¸j[³3’&îŒî¸­¼~†–›¡ãe˜îd8qœ æm7“¿zÆ¥9Ä)ÿ·Í²î©¶™ËUÍ÷Îcû€:¹l-ÄEÔ“Ë$àÏãñ´1Ji;Û4«—3;Öà Èæ\ƒÖ& ë„}JŠÝ!-0T…ýAbûÙSíÙSx¶•=<[7àiÅ û}ÈÐì¾PÐÀ¤É@¤at"iÀoß÷¯nø’“ím&}ÖY†m•5æ¯,Ô–™©>ìOûl‹8ÑâE½f/08[oã{v+_¥eGØž1+ÖH­h+:5ì|•¨ÁåÍ #ìÜØ¬ˆt¸ŠÝ -ó¡ÅvØ5›[0“Öæ‰¸Ÿcf,[y¯Vš½a¦ÔJR‡°th™ÔvSUv¤þ`¨pµTy} /Ý2¶{ùF_Æ£[zá¡MÛ)Vgxä€y¦Ø9{Q&q?ÀlUXð¬P§‡˜p–ðc?¸×µ-Ц<<¤ioi©éÙèOz+ÀÚH<ª7Óy½ÁKØ4›¬‰Ê¼qX“ô€%h¿K†Ý´wz=#€g,†À®3övìigSȰ”.ðügÚÿÆëcÿ{UœÿWrö¿g}éö¿åÌþ ö¿W¯ûßA¡ÿ½’‹¿-û_§°ÿ=û_gYö?2P,ÁXÙ ÓŸ°Þ„ €Âø €ýu2ýu¤éFô‚l ‰WØþ’ælaû{¼¶¿Âî‡v?~yì~µ±ûÝlV^sÛýNɺc2d÷Ëgó;E;J ö½þëÛrÿõ0Á®‡CÀ4T(°—¹ö¾(dòÃð†-m(Ÿ5í}~cŸÊkÂúú>=–½iÅÊ4­„uÛ@ˆeôZõÊ&Ú+¯û[•ršM³Ù²<\¹)p‘–ÀÎb-†ýïóÚØÿöv ûßj®Âþ÷¬/Íþ·¤ÙŸ6ÿ+{ÿ/ÞÛ)æÿ*.þ¢3íµN)úíøð¢œhlÆ@¯†/´\VS¡Šü¶FÚn1 ¥p9š }ñ­ÚìÓèŒG»†Óëm_÷k£è¨ª!’8ªÂÖǪ©€i€?Þkö¸2½Œjì?H},„ÐsðFüÑ ’ÜÌ[{HÁoÃÝ2+ë;øiÄÑâ…/Ø{ ;×f[ܪ&û…üÖýÞ‹>÷@ žG};å• v Ý×׬›Í×øÉ—è¬57 ,ôÆkßÄÇyÛë!¸‰RÑŽ.í24è¸GÉ1í_eNÿgt <Àgˆ€ž±ÿ*‰a½¡åö‹ŒO¶ì'ÏŒ'Ž@ˆ×}Yv5ßžhÛ–€60G A AHT>‚˜Fža»„(C8Êx©æšÃÓCŒFAkÃŒûö: p 2ÄøÊ^õ´‡ùc/[5ñ¦nÕŒõѬ:ÕCôœ§µGOc‘Q{fµãa3…ÚyX$ ̪å(%îŒ}• `,æ ¡…×¾þ!²<žü7û„#›ìh-ÿ‚‚VøònT[¿ £q ¨EYÜ–PšÌ^Öà3€z/cÈvh$#X9„½æ$ŠÐDqQPæ‡Ó»|‚Kx‚¦ö–¤®¥¯)zš½H Ç Ú^@{)¤#êd)Ò‹R$‡'q¡:Ú`ÎiD#x"N¥ TPâ XB; LìK<©ÌPæir}P9 O'Âõ¢þ4ÀgzÇùÅ?X¦&†DSÙøðÔä­èR×B]lœ®X 4ÑØ¶üEôB³ÙmUå>¼É4ÚiÉXÀ-fº”7kövWw ª‚ ÝÒ"ñåZ|yÖL`t“ºOoWêÕ¯¤eè}mëó$cÙâjšÙº°…ÀfïWÙotÎBÊAnTâ-ëòîxûÔ“e„Û-a¢ •nzÒŠlM° diAVƒ ƪ§ÿ6 ð cÆMçßú_¦3œïÀÊi$Ä©i¬qÛÚP´e›ô¦ÚîŽ|5)+4ÍÉàó@ÂKàÐ¥X¬Åâ²ZãåEÞ.&ÁÀJ¡BlŸWŠL¤.á¿‹éMdÞ…ïx>´JUñ²¯“êŸSʾâÁÆCyñAz±]ñÒHÌŽRüú¶ÌþÛ°9rë ™ä?¬D¬ ±ä$¨¡j¿¸ŒËÆúWöbéÊtÚ3›Ž£Ù'wtƒ4ô¹}jÐ>œ™Å­°|fÝ@Tô[øgšÚ¨{¹À©-L³«˜Û0i¯G?†?ºãël“šÍ©m^§Ì=9?ZYæÇ^âü`éì•M'=öí¾X¶ PÞU&r׈-ZvàÎýÀáÖØ\§Rçu+ü†n`S{Ȧö0ijÃàlm!7Iü³ê©­ÿÜÿ„Y>µ³|—Áÿù¶>üŸ½ýÿ_ÉUðžõ¥ñ–4ûSù?•]Wÿ«àÿ¬è¢ÙnñÞwÐ,So@xiè\°²»bll9´÷ê4Ÿ5âø¼7¼ýÔt ôûþA2š§«ô«sh.Y¶;–æÝñ{d ÀD[éFôc³¢È+ýoý­Š6“ùT&ÇÏðăJ’buNËž†±·"¢‰L„3»ì”ƒè T;¿÷¾÷G÷<ï ÕÞL ñÏ:£ÇÞ”aÐQïï«ÞÝ”§§§ $µY©]_³æ,ËßL¯g?(<ü`eg?Zˆ<²¶‰v~…¯ÞTDÍÞìÐWohÿ> ´çÏŒX*nߚÓsVïËGøŠ2Ûò¼ŠrÀè ɱc+>Š~÷8ùùq!5;gÔxl…Æã#×xœG×1üìƒë:6â¥è:6úŽê¦S£]µ „&úˆK9(>Þ"Q^{¡hÚf¤Ã§ONaÝÇ(î|}|Ê…¨¹­k…d"Ýd-[þ¼²‘h¼Î®©+3ºßFÉÂ’‘¥-Ù¼I\¥%7+†¸$ì0ÖC¼Ò^…ÉÈåpG¦œdË#'©«V&¹Å嘄˜<@mšM`’eÓX Àd#.L¥Ïè2í¿­‹ýwo¿àÿ®æ*ì¿ÏúÒí¿Ë™ý©üÿ½ÝW—ÿ_Äÿ^ÉÅ÷!–ý7£wgV3ðîve½ Á,±êݸ?`ûëJÅ»³L½ ¡…X×R´Ñ6È\Ôl1Fä¦ßˆ|šÁˆÜ*ŒÈ…ù‘‘-ÀˆœÅˆüÔœ ´R§z4 ¯‚GêU°n`CÎ03²0£ AMºÔ?G$â”}| ›$Ø'¥H7~µf„öüXÁ,HK^”¹ÅlUw«ñlX¼;B~¡1WUL'¶ |ž’–©›ÇqAµW.d¨ýð^Fš_… Ó_ê àïç0:µŒ[5’°¡6g5.¼jjGBÛ‰‚"@P²1«H4‚³)‚0ø²¦wÖýPüq5ºÆ—·,:;{§,g×nòìÒ»Ë|*¥QPÖÖjKÀ^ l…g¯ÖÞptÿõ…Œ"¾Xk¥7 }i¸¬ð¢Éñ 7†dZ£©(†* 4ÛDí>Zµ×‘Ëb+Û0Ø©Hµ-:Yõ‡¸á¢]Ûr°®tņpM£ÅO¼î-4~°bÕGqö>Š²é ½´†áñ6åmEþW°Ë?²FÓ;2ê~™ò(誂ßiûSuü¸áG0ä|c < Ý<‰±ÝØôÛèÚhÆÓ:.ÓlÁÜj]b½‚F5Ý—NO…Æê)l6á?»A°·\y}s#14#/à=5;JùÆœ&@¼ÿ˜È'•g£³†î&ÖhÇî¾—²Ì “Kvœ`›-:BëõÓS'6ž’Ã6çlZøï)þ[…‡6±=”—F`G…¶#qŸ_Ù"àXb-«s¸+Î)÷ŽÌÚ^jb À–ît AXgͨoÖkKOÒ£ˆýîðë½{X¥+§vïI å) qŠÍþgtÀ·‚·/Ø[’å²s0ñ;£?ú“Þ ‰sÞWaÝáÍmé5ªKøB»áÖšcþ<´E ›ûÛå¯iøü‹ ˆ(æBøÃW«Äò7·ê[õéÖ]öiÍ@5¯R×Û³Ok8f3$â_uÍ–4›QØx'û«ûñŽv8~‚²‰q «šPk«WÃE¯ëæwyÁŠ(J†¬§l>–A¤ûz‰‘NEÀo¤ôÜù91»é@¯¤¡×ßÎzÙé;:¶GàŸ&Ú±Á½ üÿ¯Aÿ‡®'Šÿøÿó¾4üI³?ÿßß;pñÿÂÿk%ß5˜ø»±Xüÿyº­%ßnÌäóe"–GÔ–ŽSçFó›ó¡ùíÆãGóUô@‘öÃ@ú­Bú¥áÖÍf2.£’ˆíë iõÈí›`´=’¶ÃúFï0‰îë @ÿ@¿š¸Ïèoåú[6ÐoÏÜè/€þ§ô ¿Àòư•€üñ‚ŸÈ¿,è]×J„ÒÓaøÙs8Tf4êƒfYÍ»­ÝH‰Ý¦§Þ2€6eô0,,‡@W)1ß@k»ŸÙÏ)Mˆ­ðàÒ„^œlƒ–žÃ:± ïAÙÖ˜{ölƒ }­ Û€v‚>ºÆÔi,á@çâÁf«fr|ü‚Û-É0`'Õ,ƒV´æ4ñËõåPóÈÊŒ^VG,jL­ O1ˆ²Þ†ÙȬ؛õ QÇÀ n€Æ¨  •-Pë^Ý`ý‡ü¿³,üŸŽK àa)Vǧ›0 S# ¿NÐÇqë/°ÿebÿû/°ÿû/°ÿµvò“bøj»LNþ­uò$Lƒp¨ÂÕ;ü·×" à þׂ÷Ï´‚_'>½¢5àÓþg‚àçóÎþe„å‡ix¼Š}Êîu¯&@´8|6Ÿÿ–×ç?î<7ŸÿÖÒQüøü[صpïq£(ÍA<+v:ÿ€Þ„×Ëj%–Þ[å–tÿÏ[y ¦ç‚ül¤dLXbß÷ àA '¢ôö_’Ç?'ÌäîŸèÌŸ~@vÒ"ðEÈ×,—ÿ×(þkáÿ»š«ÀÿŸõ¥áÿKšýâ¿î8úÿ•½¸˜ÿ«¸øÂÄÿ;Eü×§ÿµ³œø¯x:]tø×ìP§PîlÊý¥[éæŸªß¿ ¿Ó¶}üÃòýz2Iá`ij x¶á`go>l½ «Y>Ÿšø<8`ç1„„EG›E†„Å–ÝŠ|ØÁ¬!a[[M=(lkë4ò……mnµ6ç €6¤_"XõF´ÃÅro%áý•¤ vNŒâÚܬ{¢¿zã¾ÖëäÉ”E ×Tê7’V5+±>Í ®6äbEvÕ2ÒŸõÖ"1œ+56OYã‹ÛUÁª ­^÷¡T<÷Exí^‹K^¦ýwâ¿þ«¹ ûï³¾tûïCÅÝ÷øúÏ«¹øÆÅ²ÿñ_s_O;þkg9ñ_Ñð¶è𯅹0"?b#rá)6ƒùizŠÍ¶ðãWá)×#÷KQŠõÛ1‡UzŠuŠp°£»öØJvuØ@ÓhuØNbÀ]+õæ¢Õa³E£ÕÚnIê°õ QûTcÑ^‹v\Ó2ôQ´&®iéê°ùcÑÎ, ‹pè €}™\ÑZšni‚;ZÓ•ÖÂ%-›4lÇpö‘HÚP¸ñ¼k‘d¬a6—^ltÏg–“”X,¯Õ"bÎz+šX1Á-0USêæ;ë‹5;w9± EÔ¿Zy4Xх摈@}æ',ôÿ.y 0øhä‘|bœˆË†‘EÝͬ$øÞ"ðÝ3òóáðƒ^÷º?üš‰oÍÄ·P‚FË~ùX¼>€ž ߢ…C%ŠÆcÏØˆ¼‰n÷ D~]ùë5DäËšM:,_6¼Ò³}ÕÙkp>6^‚¸Ï9)k°{NøÚ—ÿ9«mB¾)è6>^N¹ó"ÿä§Ì¥†Ÿc Ý ¨´›8 °½ŽÒ#’KwêЮñHãE>ÒaÍŒã[X|+!¯=çYG?ážì ª¯ÂÀW2ºOMæÁ¾S¢º¶È~-þ1ÑûŒ!b;Ù³€>W©î7 Ò \ýÅZHÌzûr‰Y§û þòîDÀøþëÂ+{/GÚtÇZ‹ Dò[ÿËt†ý2Ûh;†å(é>éMͨ·ð!¿™½öÛì •È Äy\lÓ¾ˆžø,ÿ:Êh^²·-»¹e©^Ì48D=TJÊ·•âž©gÛ’ž°Z×½ãGï¨]ø‡ð2SYRB=mtb5&o‚‰ÆBXq•˜kÌ5^l/{Ð!*hŽ:Úd.hØís0¾ ô‡-§C+öØÐŸåîÓ'> ß?&ÅÊšy’Ũ¸^Ó¬T„Øç+,žE?¤O«ZÉÖdüzXfÿÙȳw<"±$ÖAÇT\Õ°òsÇ„þ¾q ÜE! i]:þwÖÿ+ôWuøß³¾þ·¬ÙŸŽÿůýÇý½bþ¯â¢ÙnâMˆ.}^?:foîNµu^8‡éL¢ÂMX]YÝ„=è¢Ö# †0Ó—˜uÏÂ=‰K”îü¨#hH5ÿ1î “4îYlèéâAÄ<½¼dŸÂ±Ú†N'ØoØHðwëE9»³ö ÐíÒ»p;dÏ´g:©Yá3]ÂS,'z„0‚6÷üjyO늛DÔÛë úCÛjÈ?ºÝx»ME’°í­§ÙtMO«‰2@­xs”j´‹œÉ6p±i%•´¡ Œû;I÷w8õ”=B‘¥--Ũ¤GDذî¼PwB¶¥ íF¸uNå‡Ëq*?Ü^]üQÓÐVõE]qeÝÝÜÊWN `š™¶\óÄ+ ùÎçõ@·yâ¢9jy û•†b”Varߎ®û_úÊOB¼š?ßOYÆV6ö݈ÙÃà Ýl¹ª'uõ°ô‡ˆÚ^íš…?q˜ÈŸ°Þ£~úÃ!®óüm<í á™öËC±rÒo‡/q9£ßäX8\ÀX8ÜÆ„\q‚™c=Ü÷*µ6Ì·Y9ÛcÍ sæD§ç—¦]7l:•^$ } nÖ­ðÊNسC8@€£Û.øO³Gà¿v·^_,H¡>“xî£ÃœYç)L™Ž3óï©[ÕüðÉv]šJ«Íu-'MyZ ¹ØP]«­9}šP)~eÁu*5‚!Iâæ5è䂸1^S7IQ勤4<Å]ÞqaOÙ¨Ü qÚΧÔÂèÛ 5{å>|˜ÕÙ¾²êÃp3;‘.IÉd`Vý~Ê‘eeCñ(ó1Í}fièlÐó*o2ă­v«˜°u=ïIíï]í{sÊ֣ࣧëQ5ô]Ü?GëúD42lÖõéëhs X­ùZQ¬ÜL˜ uáÄÍNj}"¡êÇ6èÕ 8‡Ú°jBÒR9ÙJšjïIÚñT’ÌzUt\Œ¹ >€`NûÖøÜu)fZÔÄ+“pHtþ¬èž ‰¦?ÛÿÑÉ^¶¢ôYU‹Ù¼,»e\&þ·6þ»û…ý%Wÿ=ëKÇÿÎÿÏ™ÿ•ýbþ¯ä¢Ùnãÿ+ð¿UàÁÿž5ü—]¹Ý)à?#Åþ+à¿uƒÿ:þ#Žtÿ=2ü¯Sàþǯÿ[þWg›Õ“Ã,pÀ4î/p@~ypÀ n§Šš8_ |ü8 »Nƒ0pAHÓ¸uÉ8aŸÀ¼ Fˆ=¯°x3†}7' º9Ø9åE=â ØaÝ‹–ø9¨BŠæ%Š8€X¸þù.ÿû¼6øßÞ^aÿ_ÍUàÏúÒð¿%Íþ´ùW*•=Gÿs·Ðÿ]ÉE³ÝÂÿjRôÛñ!;igBý/qãE^h†Òf)Õ+c£'˜5\loIÁBñÕ¿`ÀJñEhh%"~fðÃCDÆôsÇ–†Bé‚9.Òa¹×t;Ç Å…àœqç…¼Szª;ÙGN•κJgn•ÎüU:s«t&«ôžGäxL.²«˜äUÏVŠ9zw\}˜o=4¸b`0ñvÀ°U8Ä|î_÷»”(%¾fŸ¾Á>©ñ²lSp8‰Rh€'Ž&a€ ONP‰wx¦âLîØwýï½Á?ÂTÝ›FÿXÎ>¿Zftñí~_©`ІªO#w4¦*L¿u§ÚYnÛ;)ªšx#4Ô·î÷^ô¹2C M²ÁsÊ“~ÍñUVšÿ¼‰nB·7„•Ðÿß7üKiáZÃ:¡PÑ)Žç¶U¦–Óð¯2“oX°¬Þ©¬ÞiEº¢‡oÔË”„ca£,˜mÛEmyÝ3yË™è»í9Àé2fRV‰™(µ{'Ó“ˆW `+`é8uYá×…]\0.œ›9ä£5ÌÓ¯­)9õæÂÁ¿Ñ¸ÿµÏ¦»þ<Ï™{i+£ oêSlê6ϼ9̇v§c_‡³ÅŸÍÒòé‚`ªÙ2>>ükCüÝ×Äîåœjbbñדy‡ˆ«Á;˜ØñÕÄ{¿þR¢=פêñ’ðo} 6k6דq¯ê¡Ùp•ÆRqXU ›d7óΙ𷨘ëɨÍ/‚År`%ÅØÏ³¥ÃëÖoQ𺞠®¾‡b7Ÿñj]^9ÿ4ľ“h(– x2e¾øÝ-ˆ2h2ìE͈õmgoEþ­eLœBgü™êŒg'YTÏΰÍ(‘-„ò·Aºð2pWšd½¨ƒÂÅÁ-ª bûï÷Åò/ÖD,¼Ùh“µ`Ñbááðà fmШP¬ 2²­Šéæâuð$B²äI´|-’‘îwñ­ˆœk¬ú7Gþþ=è—jpFÄ­–ŸªÊ ÑyÞŒ.僷çY~É´‡B²ZŠC3I¡¥84“ZŠÃ,9M¾ÿÀ¾¿à'¦£‚T†m_Úáà1¶,›ë§˜ŠÅ¼ÀË_ÊŸíR桼8ã·ÿ=—¶}e×ÄÙÅíyãø"»‡&]>½ú&êÕãç§Ÿ$ :ÃôÓi\¸œ°öŽ6~®ì4eãŒÙÙa²íìgi‰F{¥-áÍnþ–H+ðûj 4kVÀ; @K&…™óÍ!ø(N$¿¿Õ†˜ì¾˜ëQª<7÷ƒ<·ADÁ›í…zµÁ壠ež«Rÿvê”2Y%ÝˉO`óØxrÀ™‹O-æ\䟪6ßMÏÈW›Û§efÁž˜Qb_Jµ{7"L't(¿ð @÷;ðp²ü»Å—£!~æ qÁztú‹Î(déNXŸÕm­¢D‘6ð³é,×l O¦FÛ耋M¹*õow‰xöÓÉÓ›ö|ªhÁ½I}>×|š/œ{‰œÊG~üÏoëÃÿÜß-ø_+¹ þç³¾4þç’fªþË^ìáîÅÅü_ÅE³Ýâ¾÷ŸÞêѱþ¾^@¹-zÑPixw! huj-Šüú3@i4åáG:"/fK­žñ™E™EI üU–‡bJYÑsJ¼ .ù¾¾ÅÆ@ ê¹G[à}çè5U‚€ýÁhƒ~lV°ÿ­Ÿt·@©–\@«eܷ쬷ÇÇvƒñH– Ÿ´ái¡p+²|ø‰Ÿîmài ÖÍݸ÷½?ºŸàùß`|áãëÛÚ D|G-2cÔûûªw7åéé)Lî? B- Ø×lœ–åoIœ d/TÀú‚¬>ìG&¬€^b+êÞ²"«¼;Eh&”Y oåÊ ÀÑåø€×´4/²=Õr$/Ô ùéz)4»÷K¥ÙYº2fküjkÉxõ¬rêҹɖà¼Ó²ž±ºeê5ª«½®`ÌŒ¹‚1W0æÁ˜Ó™r ‡¸Üû§Ï‚{´ì·Öûˆvv[°yžBx›ÍöHˆl Cò°S)hŽåiM”’Ø'*D䀿Þe”>rØmlÐ!‘ ˆehÂÇ)]öU² “Ã}Ë£ÂôT(i!¸93 WfúaRœP9«ì½7ɵ¡H½`ŠT’^V뽿»}´ª`9RF²ZïµEÑb Žò›Ž~V6¹ª–ƒW‹ËÌÁ*}–Î{’bj|ج  9‰Y@*MtOFjÑ–‘?ð¾à<ôeàÿƒx]ðÿÝýWþ·’«ÀÿŸõ¥áÿKšýéñ_öâ]'þËÞA1ÿWqÑl·ðÿF\Ä)⿬€Ј‹ø/ÙY‹‰ÿr£ÿxeþˆÿÒhñ_Œ‹ø/Ï*þËl€zz‰Lˆ:¢¬×< [ì3b0®}xÍ?}\‘a`ù]6¶^D†ñ^Ed˜4l´ˆ ‘aŠÈ0Ed˜ÅG†9]ëÀ0xÍäń1ÇaŠÀ0F)4Œ>եNjYJh˜Fü|aHÿûk]ð¿½ýÂþ¿š«Àÿžõ¥ãË™ý©øß«xgßñÿÝß)æÿ*.ší6þ×^†zSªë`Àõwn´Ÿ¼£ð@xÍ$¯õÀ^á\ xŠ'®Å+P¼ÂC¶ð-b¡q=‹¸¶­LU„ \¡¨³‚°Öëõ±Š1§1ÅVî959‹’ÆYsBˆg×ø¡% Z^&û¢í£Í…?r’>„¦~«°ñ­×K»Ñ*F§X,{bí‰ÏœŒ‡†CÁhxüqÉì.̃žwâtô| €¸²¬H[¿z8ÍL0u“Õni£˜2V¼3=µ­Xª‘ïBÏþ)ª£’f†øh¥—Œ1&Ãj „|š)€ ¾òÀf¡¤…Ø´)r %íÀb³Ä'Øû‹%@ÈÉKèØüœÝ¨ÞØ‘Ž£‰5M¼1鹊G~"Ñ$¨P¯@öð¶³±0ÔÕ‰ Õ‚y.ÿÛ]ü¯°ÿ¯æ*ð¿g}éøßrf*þ·Ë¦¾‹ÿUŠù¿Š‹f»ÿí†ð¿F>"ð± €»k‰® <\_ðâSçS)΄B¶¸8 0˜ÎÙ>Uýô‡_ò÷ºð1Xòïºã©xòýè~Òû6À$QM’ZÉ–¾ì­Y£@8çD8q}+Ε#œô^Y: ’ Âi_Oá|{϶IlY=ê±±:07ú6£ÖÐd„Q=î³)Š ˜XØŒ:ëMÙ.FÅè–U†¥y~ÕïÖÂQïnº]6ìïÓáèïïP$öÕyuI€ë’‘Pt_¨’Ë»†Šº§…5>?Àg|> àS{ØÀðà+–¡™®C¢Ï%‘?BN‰¡8%Ƚþì>›z­„Q.èu÷A¯˜Df¿ÑõÆZÙuRåÀfÃôÖ3ÜB0Y‘DËMÂð]4vËw9¼"\"mȪ›iÀ2ÁÒö„LÂ{µœ]ÿkx3ÚðmC ¸¬s×^txb¶£s1C°%H€lw Èvm.ÿýk]ðßBÿ}UWÿ>ëKÇ—3ûSñßWñ+ÿâbþ¯â¢Ùnã¿íBÿý©`ÀHÿ½Ó.ôß—ïÂYè¿úï¿-PÎÂóÑ œ«ñã,„á aøB¾†_ ?àÇ$ ï9]á>ò"\Ÿp¼&Ïã….|øh\Æ/J0¾‚ñë$/¥­M^ó!G:^áÉ *˜OÂå:Qñ]=íå=:ÅRDÝ&6mA3 È©ÐRšWC>Ê #ßid¾Ã/ ýb/[÷[oK·Ü˜M‘WTÖV‰*çl~¦«ýGÁ;Û9ì±½ÖOÁ>[ôç“§ŽÛG*OŸOì²§_yúT-zò²™œ hëO†ß„lÔm­I™­Ê=iÚk÷ˆ8Z¦Ê}­{u#´Ò;£Jãþt³¾Y¯m‘Ð}ø]ÖˆX´Ð=WæÀZ¦)Þ£ŒüWc˜ãs‘{®Úá Ùêl'pÏ6Ðm9ôí+®¾}†•/’/³å©Úw¯¹à-ê2ù_ÿ]þ׫Bÿ5WÁÿzÖ—ÎÿZÎìO›ÿñÎ~eÏåüÏ•\4Ûmþ×§ë0÷zGÀûT°À–/áQ°À Ø#f*¿M¥S¨xü´Pö¡W”N05õ¹p*Ф˜ÄEÔ(„úœIØ%0?=zF¢Áÿ›Ž×†ÿwðªàÿ¬ä*øÏúÒøKšý©úoûöaÁÿ{˜‹f»Åÿ»èˆ7ûdzÆëè³ þ_¼Þ쿨Cß{È-‰Ùà^‘ÚZœeCt¾ÇDä»è²9^Iä®ÇÎÈbg¬vƒ˜XíÎÓ †=¯n SÛ¨¯5Kç X·:Ä+‰P¹-‡nEÍé¦ÈÛµ‘‹lå£k9.•ÍåXŠ2²µRØ][+…Ý•¦†Ü®åУɇgäÚ8z[¹W4"|l€”=â›ÑÔnxˆð.oÑO¯‰g«þxçÊŽe†9fÏÎbF¹|†YZ¢³Ú–ðe7KXKn™>J vQPÑeNÂ×Eg- _ô{þ¨,‚ýi’N %dP]’ðIJ@1ÓX ?ã]°Mr.%nU»°»À>–N¬döTvF/‹ªÝ°YT2Ê, Ó*ލX׊hÁ;rMœ? ­*-F-’Öä;ÅæG³ÉÏ‘ò°¡Bº‰FCvÒ2¶D·B­œ Ü;ýBM:§tÓEçÑ%žè¥øwŸ¯FõáÄ…þÓj®‚ÿñ¬/ÁÿXÞìOåìî8ü¸à¬ä¢Ù®ó?Îj‡ZÂ,T÷#¶¯¨á†È·-ö:/GvÏQª$d½}r.Mö©)4'Ø6·£Gêa+‹»X½a÷Ä>úÀza?zÛûíì²£ÞÉûíÍJ8ÉÂ1§Î{]iDyø'¾\¹$œ]­ÄË4uÔ› `qïªÏ†˜¥¹AŸ-×}° |¹D0$QÙŽÆ·p+§ƒLþ¹½íMÇý+83²Ç¾÷«íO{Ñg<d»ŸÖÅ“9ü6ô&7ÿpȰÿß.æ^Zû€üÕxÙxíŠÐ "<«]t„ÜFu(«ƒhÝgÀ$Ù} œ%eEÿ^ªnl4á­/$ãT™¥%ódÇ&ì`8¯D?E%ìtÖìzúY¨ ùhCw:à*,¬Oª5·Â W„ÌÇ3vc]4œ U¥£Li)ÎÂäžUðºßE.‘«Idòv tkŒwê)}Véôm,—N¨™¥Ì&³g¢É^wµ ÅÁñr=à€ž%ÚbYÕƒ–„Ár§G›ƒ]‚uÙ¦âþ ÑDàk^Ö¾÷éÛOhä‡̉/£Á€åõÚBb©í‘jÅ–«›ëÍÊfëÏòŸpNþXêÃ/09 ›ýsëæzãßoúÿ~ó§èòt”ŽLÇyC¥ó'>}Û–†å?7YjŠæQË0ÓhµmžHo±æ£—€ð(²³¡e3*œÓÇÔBŠ ¹Š]γ£åGÃBÓò˰¨[Ó͘`Þ¥ï'¹ðUë­ßZÍ uÓŸ¸C1·\˜yV¼@Œ M• 8ö<ß y™¦ëîËßeÕ'AK@¼yÝçäSOxö©¦xvZÇåèÓqGl¼¢)ì&Û;G›;t74þ9§lŠs{öm0þêb;æÛC]²}[U};(«lûÈ2>æ?üçGö³Ùh}l«`+ øŠp^ýí¸í®Büä¨ u°®lÓÜ<|/ Ža(“)‹ÛJC$…mà1Å‹Ú9ûÙ9?l,™¯Ö΀ÌßÉ¡t ,l>{_¬ìÕ)¨­CŸåý€7zÌÆ!38ŒË?<†3>UrÃÆó3£]xJIG»rXâ=¦-nÔÖþøEün¶Ô…ò7›…¥âm–$°‹V– M=V÷óîIÆx¡Q8ŽÅ«Ô|Ò`ËAOaXµ1Lk¦ò•®ìØ)„++›³%0uб²µYg̲0aˆÕ²(ÓRgLøÜßÅIø»š÷ƒixÕì|›ØoØr"¢œlMaM…Ç#ð°•Ülø£5nݳ툊bÅ“ÕDL«UR¼¨â—Ô æk”mþÇ‹´šf­¦NV_dM?Î^SǶ]½FJõð¬ºÌê­¬#éCVVv)CvžŽtüßõÚU~ÂôaU½Áai2Š~°=k4M£«îý¤‡,é/ì4hÔŸžzÃûá%Ò\ð3X1`Ké–A›6(riBd×¼K¦Ä^NUhjjö4{ë¾äË,Rè6¹XÛMôîCtñ!Šw<{,ß:zŠbãÕ”š’Z™‹*WÞ:*iç7ûà¦mVàåƒ+2´ ]!ñ£íúOâ”j$øÆ¢dâW `ãkù‰Ø:þÛûë~mðß½ÿYÉUà¿ÏúRøï²f*þ[Ù«8ó?Žãbþ¯ââÿ=n â¿ç° @ì—l'Ù]úSÿÉ=+s¼Ãö-¯bëžç…WÓ¡Óóœ¸) Â\=ÁHÐtïG¶-ž°cÀ´7¼&$›­#ýAÿó6u]H$+NZŤǽëû«Fm@HE ²HÔ÷&w½«)d‡úd?F*l³¡¬Ü©…ƒfÃP4õŸƒ#'Xõ'§¥j©_îJz1M†°ÃŸ~ëNÕ³²x5®P ÃVL¢¡1o0Í—Uüëåy‰}ô­;‰F`-¢$@:„¤zbö ã?XëN‚`e܇8·µ4wrÛ À¾'ì>ž4pijc‹¼E฽ÝÙœ'´-„k>S ·s£·÷Ø+¬,GŠ 3*b¢¥ù X£AŒ¾]úùá×jnø5òã¯Õ•á¯~øõ\ ü~Ïæ¨ë>ÎI‹%VRà°çypؤ,ÆÀcM¬]¸&OGz"ÉgüU|½M®ÑXœ|]T¹Bó°×ÇØÓ‘‘ ¦|ø‚ò+³w >1š‚ƒ1k|„íÆ¹˜nlÖúV?OØheo3rf•糇¿0¨ ¢ÄlQ6ô®T‹½Ñ„I æ(ܤ¾¹gïXüª¬-9ÆÄü6º\ƒ¶5½»ÖãØðBÿ•ŒžŠX EƒQ7 Ŷaûab°3•5\Ä‹˜pÙŒˆû#eœ„Ë~ ¬03,‚U£.<¦[†Ú‹:]t:ÊN Ç@ÏsàY¥à8d,ÊÀïO{Á\Óã5ÂN4g0«VuvDê³WÓ{8åûN ½sᇇ¼Ý(Nè Ýð/£Rü3‘ËÛ>ç‡ WxÚöýÍÝâÍYöJb:.ë¾íç(¹¬ÊT×;‘ …§ÏibÒíNÛ#òÁÁÚ=Ýa–ÚvãØÀ¢5XGÖ’v«ì­²¥N£ök‡Î¡0˜ Xç¬q¥l c °”v"óâ¥nnŒ-c4DˆUD‘ ^ÛäyoêÙÄñ²‚U4Ú#ß…%ô1Uz7PiÙÓ„³À[2új×–^–Y HL>ØFŸ—êÒÀ7!5º‘gÃhCæY¥˜Kv³E ˆ[dž(¢“ïÒñŸñ—Iÿ„®'jÿ-ðŸç})ügY³?mþÇ•ƒ=ÿÙ=(æÿ*.þv5ðŸÎÛs ÿiuÞŸ^€oéWøQK ÉÀnÀX”쟷Ç»ÿ5ÈuO^zíýxWbwa_µ¨Ïó@O‹ñìcå(‰âàø'ÿ#<Ð`Tq©ê·êW™=„%ªX.ì‹M„¨ ƒ©'àî·?”¬GÙøûg2í!/uÀFl{ìeFŠ fHO÷¾|éC Yiãwƒt`œ%¾wMž||hOHj0ú<º^Oø]|…#!•/{å^.Ø#„³C=ÎÏèi—«”cÐ»Ž¾Á˜ÀÀ(GýíÞvÙ*—I¶ÐYŸ+6 j8Š.·y ðéù‚O!ç¿·µÆÁÛµð!…ÞÓœ©õtȯº,†À¤{ÛÃQ; TÉÂÃÕ¨Äö¬m´¶Æö˜³­ßòÆ~k·6ŸtùZ›µ5›¼Ns[‹„ä4Ȫ˜;[U¨"5]­˜§iT%Ÿžõ¥[#SÒZ¾‹y¥.ËV_SŸûµ®Ñ¶Oïøk7)Ù>— hŸËmJÉmس`úy`]_?‹—>êh›Ü&àÊÑë^}SõüîÄí»úJ)°:íc*L׿D—ÇB\u:¾×ž¹·ìÐCaV|¿ö§Qt¨ÕêBo Uzm}e[¤ûkùîà˜«žŽ„Ysa½¶¨|¬åùÀ—˜!ƒô³J ÒÚ6œ´©Aæ¹hR×’“Öî„pý˜ðàãw?ÀÉ’í'0]—;rØTyl]ì^±`,jÁÜ Ye!€IWöÔÚ`²bƒIO…ÆLj?"™æ[“¾º¦?Ýþ#›_Ó,©ñ²n»7l«‚éÂù›½dÂ2ñÏÇ}º>äX«µ˜9¿ÿ‚Óhê£m\§½;ÜT±ÓȘzlŒñ(ϰB<Þwº¼PNÀ^,žêö†©Οi.ß¶“w0¡b€Å&sñ{bqØ×€¸¥'ó¾sœX¼%µ»nÂᇭ‹2R0t2yQ6ÊQëS¸Çgçìžó‹Îñ9ÑŽ«o+ô#Æ^ž ¾0ŸõÌÞßÕ˳?ÊÑÑáü!|ÁqóÁ~ž×š¿-Ö¼, ‹åvÌîRŸàJ_-2-à•œSí<7ãÀóÔÛôÇ~v«råùÔÎ.3?l ›«NÍA&é¼=_&™„T ¡Ã¼ÜâHœp𠪑v‘¥ò!t“i ‹¦ùeÅÇH©MëSôÆóbކÿíGŠËζµ¸›Š?ì¹ÊÑÝà~Ud­1!о jÍ/Ù¨‰ê~v®»óßMúƒÑPÍEZ¯“<þå}Ç Üúô’Ñ>‘dúþ'ÈOVñh¤N6ÖA×`«ì™]¡ Uà ÊTe¦7ûL¾Iã ›¡1ÝE÷Ãivƒ»;8ß\AØÃ1lÁÆÄ¶N@Œ°7‚Ávöýë{¶RÃjVc‡”jô2ºt…´á½‚ޏ5œ;'`×®Xª†[.=ï ÏÙBµ…ç\ —”ˆmjw²òÔ&ÛáÍ<`\¹tõTà`Ügg†¨ûyRê°_åAU7^ÂËhÿ®±¥î5JAÂLðõ§ ±­5KÔuغ>.-roñ ó‰h»r.S“ü™ÞpÄÆqnf9²óvöc‡–¡Ø³L  ‡¾kî0ã¦(imò¸Zžm [óŒ[ÅÈ„M"ió6ÊÀMAÛ*?‚áÑ ,ÞîÉK¥³‹%d­ÆRåÝŸR·lŠNñõ‰fý‡˜”C¶ÆÀ‰V¾[ lÕ“ý9ßk»`ãô‘µ1§Bã¸.õfˆÅ†6骓_"‹½ôûFÙ> @¤½ìƒÓÚ=ÿ²ˆ—¥³Õ6_–²Tò¾Ô7fîaó=x/þboöå=š¤^e'ðöô«è -.seäŒ?iù-¼>½(MjO¿AËõÒ~ê_|ܼÄäS2‹–ñV‰¼/–ˆì•À¨£Kïë7ú_ƪTÒ6šÊ@ÉÛ+ÎÔ^4á^òfó4Ô ä&“«q†­òªzÆÞZGJã,ñUÜúzpI VÞ-÷ν:µËGp¿,ÀûœAÍ·˜®h…Å'}âi‘i–T¿ÿÄ€)-»zZç­2¶=g_›u¼tÿŸÉôËúøÿúO«¹ ÿŸg})ÿŸeÍþTý·ƒ}Oü¯½"þßJ.ší¦ÿÏùÅÛ þÛ“÷ÕY¶â›ÈEe7³˜›–üšàÈÂzT‰¸±>¸ô§¡PT2À<›Y»—áB fý}Ý›ô¿ çúÜ‹î'Ä´¿ ÿä¬м{t^{w~!éYe95dûƒ1™ÞçÀû>‡üs[Z‰ AZ>7|õ£ $º Wš£ÏÒÎÓñýÕô~Ü{-†Â9j„_5I)jÁ§eÿ²¿÷¨‘_Ê-$4–þO1q>hHÄ÷Ìpë¶ðÑYWÓ&Ýq‹1Éì¹dôd±²¸ƒ x¤„dôT,Îw>ìºþ¾2z +@_×-›ÊEˆ-Ò)Å\9õTÜx~´D±×I¯½½£<ÙQoÚí„Öâr½u2ó‘Óèȳ±‘U"ÿ1éë+ì …Ë@“í3Yá½iïÚ˜±x}î‘î>Í•kt²-¨å‰ÑÞ‡¬$ð¶úÕ‡„iËÉÀ9ï6á–aöš‡ì¬^Xøî^C“«o¬HhO ØsÜ*gõÎéýÝ…Šb8±!-¥o¢W°_Žïk!ù¯¡ ÄTbøg7ò]rQ)ÑI 7Ç»ðÏ^ÚÍôÄ.ܼ›ífzb/cÊûòþü³Ÿ-帙Ø?i7Ó¯àæWðÏ+ñ~®›ëáÎÇ&ñõ„7òˆ/¯½Iã5¢eBl°,ðOú£ MÜÝe%èî±t÷_é·`—a/PC`Ý^íËtºÐ¯]èª.´~wÒÙ‡t^É$doî< C:]]èò.ôb:¦ mÝ…æë²áCGvôžèlaÖhN“5Úd‹)"$éìB:{4Eš¢ ŸÚZp &³ ÉìA2Ð)݃=þOj¿É[Ä ZG)o»ìù;“õ0:Å£Èh²>ñcàc% ?, J–ÈÇ:=Z«Uþs“%ghˆ[ês½_8çÚàMé]ågn¥Ê ëɈ°Yä…ý=ž"$¼ö—©œoNxD„ÍY¡^¥ ÂÂYúI%–Þ]®4ñƒ«vªT¡1EÕØŒi á¾\†#£0t9Û£2ŶN"Þ¹©(&ž¤LËŽR6=×J¹å‡dÎæV-lœ€ô!…±ôÁdxE)$/ã†{¸án¸‡î÷ô4‚/õx CpÃ=Üp¿/ÒHfNáãxÒ€îá†{¸áþ€{6œ÷oûl5üS6—jI«ïNåx2Þ35\jpÃnÀ ¸a7 d¥C4¯ˆ7ìnÀ ¸a7 è‘„‡â¥º ’€pÃnh7¬·k]™M\<_Èœ.’Ü´F“$,¹”¦GÃ^Z¡fhfñO):Yê·(/YJ@cÓ` ‰àÎN ¥+ê gÕK×Õ6«çâŒ,ÈÕ—dé@i÷ã>2®jtf¿4@·°ÆAª]ÎÓaŒê·5…¨Šk‰—‰ÿý½6þÿþ·š«Àÿžõ¥ãË™ýió÷`Çÿó`¯˜ÿ«¸øîÄÂÿØæîmõð¢œ9 (m|lœãöÇã# à v'"(£… §’!^h;Î;òRžƒ Ä ¥Û=P#vz¸r Êž;áEÃ)Ìw”M@°,Lf9ÃDÓ¤r¥‚{¬5 ÍâÃó]ÐŽ¸&pV FB’ÝÁ+.f0Oð¨7¹÷ïD|*¯R€pG¸ ôÆ`ë]s£Ve#aŽ€Ýì˜J©ÙDƒ©oèQy4-ÿºïúŸÁŠÉV5 ÕôÎAƲ*¤,ñ/ÛãmðQ_ |ç÷o=´µ"ßuªŸ1ôð§ÖJâñw=Õº< Q ;,GŸï§`0T)h¨xGOAc§½¡”U<ßxY}) L½¯}%ÐàØhÚÖ ¨¶°1úC¸<Ïž£<ðYê~™öÆvÙõ^Ü0â´eÄó£ ~4?ª…€}Þl»Û",ú0«úlô‡Wý;6: 19¹—ÕˆêLîh6![„À"¶£0Ê@W÷ßï Ì f€!éª&®‚{U×ªŠ¶0î±ZŒÑ«”ßé¤`èËrq\žÐ<>A¥k^u¬+_š›½ý‡¬íh k æÅ¦Ð×Qæ‹à:4y‰½&ÖY3³T׸ú|†ý@š¼çö¶qÙñ1%Þ…®y÷®æmò0Äœû"ÁÄ}6Î]J©c#–5OT[µYÓ_±ÑçT/%Ø4†¨/ÄàH5§!ˆ4ТMY DÇ:î–ôFûz¤V±Œ ˆÕ%sj© çXô¿ö‡êÅFQ1ø£FÎ((¸>D©”ó;6¾ô{áÛ^ÚŒIÉ0“{ÞC# ²b`Hˆž–eêF “oˆÛ™˜±ÎóÀ }¢8,Ë–«·ÀˆQØ.¡e“lÚí'þjTÄźw‘ä/ÊfQ'DŒP/ž/\oì7êW6 ñr¾Dh(&¾Û¼È'ˆ„D·£ë>¸cT¸¾Ð‹'^’W£;>K yÈ&ÔhÇÁ4Œ€þëbÜå°ùÐWÖÄl BÔS'Dm­0pûã%F•£ÞßW½;c²k¹·/°ì%I·÷#—4{¼³•ËÙ·ºAäË "ÿX‰Xjwív .,æIAOÆmü…2¥²µ‡oš8áíëúÀ‘eBÊEr‚ ‰Äk_OÄx §²Ù2*’¥±Ù<ÒÙlQiÂFJµ¶±íìô„ôfn|3²j5ã¬è4/õÛ¾aKq–ݺᲯ}Ù}â[ÈiÀ×ÊØBÛ¬]ëã”X›ò8/çœòo9;ò­=ëi˜úf}ên_¯y¨Áƒ œl®GÈRO‹gkd=RâAß1˜{_Úv@ÇÎ) ò[m³=îÝ ºWú ʸ¼'#Gj!ï¢e¼zFÊ0@§®±Óµ†õ¶µ£k¦e×\pñ0ÍŽ =yh€qWýc]$mÒv\®M-ؾ[ǰ<õ<7¦¬‘Ѝ¦õ"p_†¯T snL.Ø·°…°Ú¬9«WkÙrT&'qûÕ¸Åz1ÔÜ=nä\ Xߥ\Mzé6i]QœaP+ÛS*áY3ñò™5t[l÷GhZëN“Ú·ªÙÝE‡ˆ×ЇÕKIƒ«4/FŠR¶é—Š­}¹€nºÜ¦”ÜnBø(©›ìœ¤rä3Ù#Ez,É%Öè°øòͰH:ç[ŠÞ%M“ÐLÀPœöÁÌ6Æ™DɰѳQ”Ž}þÒg½õc4¾Aµ.‘ê6—áVõ3×¹>ûøJЪ»BVìjD±ÕpÀþGž 1\ÎyáÌ ½#pçYѦ¨â7ËqHÑÔôT.KìÜR œ¯œÙd¾ÌXÿ` ;±ûÄ×­|æj4÷&wÐ^`maVòûsÃjûîP« ‚U¨Çü¡êŒ9Å—}Öÿ%¬— ć|©ØNLOD„ÀÓƒ´¶­‘OŒîqoÐGÚlwb¯2òN¨GåÑÉ`@H¾IéF“¼Œ·;[¹íI†­+½$u!£([piX&õÁ¤§Â£ôÑ`R—Émw0€Æ”i^±ühÄæáý•]…%¾FKðm÷†m1]"³­ˆ,€X¾1Æv€I;¹cû³LM±û²%ôly z!÷o“ð©µöqÁ¡f­Qá UÓ›•WñÞÅM²9‚é·ü¼Œ–ò{E-ÀK+5Þ+A·*qGØkj휢2 ^ƒl ‘ñ[¼‚׆ÄuÙпžSðšÍêrÔú@»Î!û œ&ƒ]GâÞyÂþ‚fq¸†UÔ‚®¶>tšì^×úÈ~žÓ^î¿;'¡èfƒ}å©Íîežâ5ªÍÃ÷eøÙ:¯ñûBnheûö„ÒevK;üpö&xȶÏkè¥ÆÚbËRtÊþÞ2ÝÛP»Û[Ù ›HÎp`£q¥4¹i”“J$q:7«2©zó|¶?t¶yжÿ–fRâpgn¿­6ÎeŸqÅ=<NI}ñÇ Ýë‹Æ.»‹†K)zqÞýÒƒ-!DÖ6n¥Àn%ñA>êyΦ¿X‡Aá!(Z@yR;¸n‚¼‰ß¾àáXåðÊè18·‚ºãS˜âƒè¸¦ù :…é>ˆûö#™|_yžz›þØ/ÎcnÏhMk/%>&q´[òE tÿÜñŽq(¥éÑÍ„Õè¶8n­oªÀû4ƒGº"º/Ì2OEDùÊOq|ÑMž>ztò7…v§ #íÀ U‚Ô•4ªWT6Œ€\ Í9Ñs~HâT/1Ô ç„bó9Ÿ>]¤¨öü^+ȳý·×ÇÓnŽ ²V£ìú¥qt™3¡ý쵑k U³¬^¹—Ù½rUÆ;CÃE…Ç®PMæ–=ΛX†=+ÜtR¸H†>8Ù<©dÑ=&/çÊm/¼;käˆY‡«‹ËÉ&º…¥T'f¥áÕQÕ ²ZeÜO(£ÙýQ¢‹¾òK3|ÅèêÈ0*ø™Ô¶þÛœþÆ%‘^MN— Ûó^6VÁ(y^ê£sè! «áÉŽ¶¾-XM^T^”CK Úˆ7¼™dàÔ R¹Ùʬ¶ ­ÌÏ;Ðõ|ÃÕê“CŸ«’®¥—Ïs¬úoïƒÒßÌv.”#2U;A«„ðK´Š÷q$jµ>O)â£ßK F¯èÍŠ°ÓjŠ„^%Õ*¾~ÀÚjî—a/Kv]Œ»Ã Ò^¼ýD¾eòc>¸~ÍÓ ð8ã;çUâ;ç üιtß9—ú;çÀ·Ê¼ò½s(«ŸÃ!§@ÊJýþ½ÑáΟ_eüåÜ›.*_vx¿½ÝjL–/ìå ùønÒŒ†Ö1Td‘=d Ê —…4Ƚtýé—x]ô?v÷*…ÿÿJ®BÿãY_JÿcY³?Uÿwoç•=ÿ+»»Åü_ÅE³ÝÔÿ¸x§‰žYÚ…èÆrµþ}(ÑÌÿZZðk‚¦¨À‚Â\êJp¢¤, !ü:.IZ`ÑÀ›VwÍRµöçÛù˜™$ ²£´TôcYœëÐa_÷~ƒd¥úñøýðó`t¹˜‚ì:øÊ*=ýv[Okôzmô¾÷؈ŒjêùâÄò]Oå 6PR=|C—¢\ß g6Ÿ/ªÍ$òyŸÒ=ÄY¡+…G¬{’.Ø}tkQþ£[YHŸŠ³æ:¨Øß\§8OÞ\/ÌyrXþs“%WhÓgÖ¦ÏÌGM££jlÔjÜ›ülT•ÈM¢àúMHkÝC/ÌÐZë’WºÎ<ÁBB½P¼êÙ‚mTÃu¼lAX6¹ƒs²Sx'ž7:m…keÝ"¬«‚<„Š-cÜ×%ðëÊ‚7ËŽ#¹•ä3±èæfv­^]>MK’»æ{gμrïíûþÕpbcë2{Oú¬SM¦§r(DëË.Ì1ú º·*š‚ºþÏÆ0pÃZë .„祓òÉüa­y”ùÙ"[ïæl-s‹(¸µ¿jòp²Yy}²yÚBUœÑöàBCVŸJ&â¥[¾V8Mä !­[nøõ£„hÓêqŒkgbˆkÝ2¯)¤·æÍ›ߺâ…î‘{81ÄýIÀÅ àŽÞY‡.?¿>¶Ñ›7 {k‰Ùã\ÙwgÈÎ^4¤ —ÿŽ¿¬ þ»Wà¿+º ü÷Y_þ»¤ÙŸ6ÿãW»•؉ÿPà¿«¹h¶[øozЫtü7^oô7õœï=Äib6>Ÿ8Ûy»†@îòq\%¬ÀiŸJ$ò%¡«ÖÑ-`Ð-`Pq­ièéQ§g€B ,´ÀB ,ÔÀBG€}&=$Tt=,*jvÿé‘+Ñ»>{š½à¢NõýخךÑñáùña9êŒnÙðnvÇWߢx·U~ùù—G²Ò]žmw«†ð_ã\™’ÒÇY’»±¸ÜbàÃÍJ7 ßÂR­ïB?°ÿê¤ãÂþkùN(a ÉíFQǨ°e^_Iç@{}µiT[¿ ‹iPÈåÿgï]›ÚH–µÑóyÿŠŠùb Œ$°gy¶w„00#À²Á˜™gOhì ‰¥–|Yo¼ÿýä¥î]ÕÝc[3¤îìºdeeååIy[Ak*{…Ý{õª!mµøó5ÿìÿ‰ÝÞ=9î¿Z¦·x^ ¾g±bãñrã‘Â2¥ï=*ÁŸ°=ß›ƒøxÿ¾ÄLe§õm¤Wb@¯ÈÒÿ$õ¶¹dô1ŒGÈ#što:Îk‚< ¦ Žye½‰ÿÛÉ–î; ÷¬‚‘HÌÁä:]G]çSz šÞ¡ÄìT·JBÖCز§ðØTm0DZA”’ôauˆÛr?õv,qcÝzàšœ‡üŠ|p”c"­‰…F¼Ù`:wyòa>Ÿ|Œ¸ÿâ.·´Cw(™Iâ§EDε‹ÂèrvŽç(OB*°ÞiJü•LÆ1=Tž>=/¢ëªÝq¾*AfÔˆuÑôïjçѹµjïÖ1ÂõÜå±ܾ¼™Œ/²Òµ'a‘)c\x*S8]ºõÌd‡zÖuùw½ûØ^húÚ—, 8¯÷Þ)4³¾¶˜÷xã›ï¢£“ÃHpëÏ{VIîuÃRÏÜÄ’³+#𤰻¹½éçã¿Xï}Ü¥%Û /¾Nµÿ!q“ƒÑÔÎ 8²C•ÁºpÝü2‘$MÞÔ~zŸ‚JŠ–Âò>X&K­?Y0n$>œpݬ™ÝÒëAŠx¦ôºLü±°Y?ö®åuðÿ¶Ã7É[[tS«ð&yk»|¡1»e2&³pt£ *%P¸‡xŠ U“ÔNÖɞƇ_6Ì–’a¯Ôj_è¨þ´‰Tr}3ýB6\B Nfpx†˜nŠÕˆÅ6ðÕÕ€"‡»ë]^¥ðóq ïn«»Õ­¬u„I#»·œàˆÈ„K~‡± jÑ£â‰ÑÉÕôQÄó<:QIB !ZøzÔÖg£I¨³b”)'¤DŒÆŠ!j°¾ü I;·Ë­’.£Ê] w•ymGF„”·· <ÕIú™¿9£/bvÖx9¾ù"µ¤œÁ¾Ù†ÅÉ5 v_}I  ¹wÛỄ]êâΆGÆnn_³/¹1ãÎ,—d©»~@À;ðo÷1¬,9BíÍ{ßÞÊÝÙÀõ¥×N›*¸cQÆ].¨ö-Ÿ®¥I |µc}tPôõ<xâ­¹Ë ú%rË­]¡øê7ÂÐ]u•H„F£ê:2îë1¿ÕER;: DR{.‘”ï›#b¨ÝUù&Þ±‚8@,H¨jS‘üxZU~lW–1q»¢‰l—ɧqù‘0¬¥šOŸ•À–ÝÃÙ-ì,¼ÅÙ-L°ðìö¯â³ÛÏ|:@<ŸÐ-"zxû9rxû×ýÞš[ëô¶:º™×}ÃG·È-:Ó¡ºüºM_·é4÷0j­fáA š?¨6švh`¾ÕƒZ«YI¯¦-s9µo»œæ;¤µ£«hC,±©}NË@ZóÒœsȼǫùª~^ŠòyFOhQ™´”CڜТdŽZ³]YŒ´#1©:­5[eb$oZü´Ö,™À óVFèÂþ£ñ®c³yüÐ)\·ºÜü¯ìÁäm?]åÜ˵Êÿú¡/;ÿënV)þçf{»ËÿÚÚ^­ÿû¸xµûù_eó W~…j]÷†JC/+¢Î'kúkþä2*fÿ1¡éÔ…ê‡Àƒ‰©W/:ki»Cx¶ É”d˜‰YÆEjcf} ®Ž%ƒ˜B²_¤âx·Ù_vN‹Éïéì”&ÅüasÁÃçj%•7º¼Q֦ķ¹KZkV:ýÁ„zw4/mÑ„´“*™OL®®*™O±´5›Ny›Ÿ”&Ûê–Ü®œÆVš»N];;u-œ¹vTž¹v·9_;Ξ/»x x² ¿Ñã~ÃÍþ#”‘G1À¡z;4;UÄCÉ ðÐð¬õÔ õÔ·;É|YÆßró9î½ïd§ÿÇrqûî'ã{ë+/Ú«ÜZ)}ãiþ©ÒJ—êÙŸCv¿¹S?úw™úÁÙ 8v%PEX€}Tƒ¢KVyÁô?RåÃ4Óâ'‰^CŒáðòiŠ2ˆ\©GŸù†hé­E‹²}0&Å"j@—'>·X_¸©·n¦ïUYBKEE¼ØÔ•ÂÞÅfîháá°}&ËŽpKoÃc!Gà²f®®´lŒ•ƒ ì²ìÿW ÿmeÿ»Ÿkeÿÿ¡/mÿ¿³Õ_¶þÛÍ­üúoµWþ¿{¹¤`Ûÿ÷ ÿíä¸Óë[‰ÊyÍý.e2b.À…ØGsÒ¯893cV@@‹·ƒ)~rœd ¡Y¼„£`2K7ã?D?Eàd<—ŸÁžÔ¸õ¡Ç3}[×B Í3kŠ_â„ý¥£Ó}Àtv1޶®Z<¬]µx3vªÜÇÑCWŽc±}†êYhËñþ›" »õ >ğݸµç…õJšÁÞ 7f™>—ŽCkÛ¯è­Õz›õ'-QwºãÚCÚFÔ1†dÚ°~÷ ø—Ivâ—Å™+ûI Ùv{L “H¬aÓ¡=”µÍç½Ææóë° ´ÐA¤ŒÉèñáEïIkCßkÁÇÖ›ø ýØøòR?ÕÝ·ZpòȼÖ%$³Lõ>~ô…dôV~éÉ´úÅqô°1‘°3Oý< ä×ó^{¤Œ¡æ0 $:HG¼¾{'j|eÓaé;¼ ø©›ÃÚ S´<÷ C ûçn‡õ“Ñ «¡°éÀXoˆ·Ö·ðŒ½‰ÁŸXÃÜkæ ÇKC³ ›WÂ)½1z|h"»xÆ4„õVO°Ä•æL³pïmwšúÄØ~‚ËÂPùNÐúÞ*M`_ôWÁÀ'SµQîφCñ†Ùµ3Rû,¸4s! ä¯ ¤„ùz8hÊOnÄãg±P%„Ü2ì‹?§MAÞ :üfSl¶Äf[l™d[Þ¹¹©h‚‰ÀÕmÑÜMõuŽ2ö6Õj‰V[À¡¦¥îhmŠVSøIHí¶ho‰¶º©½)ÚMÑn‰v[ŽR[ê¾­M±Õ[-±Õ†ÏCÍÛêÖíM±ÝÛ-±ÝÛ[ðùIPº£dê‰=äX6—Ž‹ç°ÝÇ5æŠ4¥ã n’ÿŒS. ¿·Az·ê<³ÙTû•‡ƒŒøpú~’$:k C¬ß0™`îR§¶õüiŽ Óñ¼Ae¿ÂꥦÍÀ[Íbý :A° ˜Võ~à`¼A«‰h³eÙ1ÈéµÔuæÕ‘¤,ãò}nßéñ¿Í±ÀtÛzKA_°”€g·-öô–„¾hõkZo±×…¾ò«ˆß²•o§\JÖM~‹§ZLÖL/ߏÔZ’:"l[Cg<ÒŠÍHœA¶¯áìVOù’2#¤ŸœÃŒnÀ^G»ã$¹Âýð]2eMg•W›F˜C˜uN-ØxtáOuN'€m%Þ`Îa2a–`øa\YØá µåŸ0ü0®0`ÛJÞÀäìÂtÁ<ÀóÈ)ƒ‚HiÅ#'÷ÒÝn±&Q¸lÖm滂MÀ¹ÂsE7ç*Úœ«dSpÿö6†;õ[Ëõm"ØœKÔßNÐG;q Aßl4çô¹N”Šyàü¥Iù Ó AoIù «+Ùm+!avÈî¿Çe·Ïí¶ìþ ÙØÒ×û oÀÃòØáži“? ÈcW„;ÃERÜ“Ç_ X~YŠ|ËâªG¯ßî7D¯Û½‹í¯_uŽ˜M ¢èço5ÄaQÀÔà Ëâȃ—ûæõÉñ¾ÄÍ ÐŸ;Jëõn°•KÒ²'Èk)šêz°ß⹎ñ\Í|X—&~2W`“ FDCÅN‹(æB¿JBÅtä×âAUû_ O·{¥z ¥å ýÚ89>ÝÛðnà ßGÝOZlSÒÏìw`Ð6œ&‹ÖЕÑuÙo0ˆ’x"Zæ£A3#¡›¸¥ÁQêc—šÜÊ–¸Ln’ÙfÆ#fT§©Ì5~ûz­@›ôÙ:|n[3ðLK=Ó ·= ˆ-Œ‹VþsÞâZ„"Ši—tç—Ç §&ÕŽ¢ì5ÄtPOæ4/ø(7`~>wÿøM‡ÌˆJÖÓ«¥[¾£& ¢ÈȬY> w5J,_ò>Gx0Ë7o;¦‹Hßœø—3QäÖ o7Z¼™¸–Ä]ó„.ÿ­å.±%ôgÀ#Š2f¯µ&¥_ëîõSW {ú€jJ£È©g>nUaΠR°©z\I뚃9­§îS&»Ÿø¬< jÑA÷Ï­e;¿¼aÖ½Fª0*Ê#º,šžm©/ió ý˜óP% æÐ’AïV°téCúO±³nE +>VwVU§ù=zÝ•–ÎfÉÛlytذŸXÖš9\H¦ßŽ#™í@mÐìõ¸R¨ÕöÃ_~˜W¯>ÌMÓýjÖ._r; åùãf£ §øÊµÇ—›ópåáÜ\yx×\YY¹Hà»Ñ®™ã³ã’o’I„_w¤á‚ùuÇ¿øËÒЃ¨L°ðcûØùøÃ-©iA-ûòã1ÍÕá}+ÚßWS³×ä¡&WÕ´}‘ì©.–£ïË‹“Í[é2Dò­X”…*}¦õƒ‘È;…Ùp£Í®ÖlÙ Ü;?¯ú3w¿Ú÷aUnñ›YÊ@¾ö’ÕU_}8'«ª'îQR{*wµ$ÒýïeÒÍÿLLþçöæ*ÿë^®Uþç}ÙùŸw³úËÖëY›Âa<üÇæjýßÇÅ«ÝÏÿì®ò?vþç]¤}2̤©ƒ=W¶'_VΧ$R!ù³ë&¦Øu޽ˆ¦{֭Ķ\Ê ’© …ÍC*.Lä~5˜H•Dù¥PΟ>ù-¤NÚ¯^eN~™“£é*srîÌI—ß-q;¥Õ˜¾K1ÐTÕÁËC†fƒëDÕ¸SËã[I‘¬¥´®æYù;™£î:àë?Édlr#ÕÙY‘z÷Xå@®r W9«HïZå@®r W9b•¹Ê\å@ŠUä*r•‰×½ä@ž •~uNO_Qä«W252ðžU.äš ÙýJ¹hO˜ÊmQzliž0Ì!GBÞ¦¶]6Þ€øQ«äÌ›œÙw“3I]Ê¡I^φÓôføå9Ú¦j§õ5þñ¿/ p%~rŸ¬ñ/¤²å“<ÝYzÈYžs§yö‚ižUò<{Eáé‘DÏ^<:v¡y=#™<~rÜ ”År¸=:á“ñTe¤†ªñˆçk.^ÀtK=©=?ß²W–oim9U 0DIÂe$}&˜EV-y¦U…#Žóµ1.¼†8¢YÈ$ë±Q!¹Ì6ƒ<¦\¼R6©ž®I½ÎMÙ|€›Å€6¯§ó6«…_WÈrtVP8ëðVÁÌçõ1¥Æ9ñÇ”_6˜/ç/’ÒÓèZ¥itöþP  ²ëŠÞY-U00áԽUâ¾¾Fâ=KÕïŠr'Ìf+Ë‹«7îku²RÉûʳõìµÉŸûþÓßò¼QžþV”¨°XNYé\ÅUPîP9w”eÌåy#—Åö@“ÐrŒ·„,´F|o½}Zd¨£I(E©¶·Hë*Ε‰«O¶?\NêZ~iz©dËRž–œ VÄ-ËÈ 0L¥\°¢\Ø…Ò«ªLb\+ó9ö°ë'¤¹ŸÒugYÝï:#ë~/7ÿ+{0ù_O[«ü{¹Vù_?ôeçÝÍê/[ÿÍíVói.ÿk{kµþïãâÕîçõù_Xè˜\Š; ,ý½Êû²Áh¢å䂪H…ž‰ðœ‰b}öáÇ„ÆÿK6M®)9˜ ºžÀÞÁ¡º„7–®T-Xš:†Ç²ÇV©cß@õ=dá ´F³ës&6!·ø{\v–›5Dº‘lp‰¹K†+Úd܆ìlÈwGÓÙæÎcÛðmE””AË3µÕê²Jh ŒŽ òº!ƒ‰I£xRFΦLWÆŽ3óäö¡Á¡-Hìó&ÑLŠÿˆI‚ ¥H yë™l&¼¬ /ª"l¦™ª`'ÉJä¤Ìp=ø\k6zõ‡’d°&•ذ½Ö“»oWR° (±œN?õbR¾¢e»!þÚ;VÛf©}›ïÆY†¹›Ò¨âû9ò_WíÕ¡ ö¬!;Ú¦Ú^‰WA­€ïÉGòç)ü|uÔ; ™ª¹ ´Ù—ìñýÎ{5ÑÄ-ìô¡WívÐ"í+(S¯^þVbçoH2 uûìþ¬ØÅ“ã>ü<î¿„Af›ìü zoÎâÉœ‰ÿ4`âç;£vø£¹,û%vøœÝö¨ªFõœAž;>Mk9öØöímñ¨ž.ݯv(KlÙd^“ÔÝÆ‡—{¿;,@%8,á6óŸ,Gà-¼¨ ïýÁl¶°é_Ï®©ã!>¨6ÉÐix¥šç êö$Ô‚ g6t ⧪S*c"ŽñQ¢Ç©àöAV‹D|Eƒå—ÃÚøyxvñ[æù`õ+ Ð…ŠasÆfuÉm'å_<"½˜ò8•O›LòãÑú Ô¥G ÙqyFŸÁéÅÝS"ž µ&‡ ÄjõÏGe]©ÚÞØ¸ç£]‰÷CÙ!¬®œ–v%ªì·ÿ¨¤ýtÚ¸›ö/{*ŽÊ¹J÷fÉ\Ua*\Qæ5¿ù„È P»ã$‹O  Ry…‹Á #:>&“«áø“ÓA~ê…Ï5n‹»,é3\µ¨«ùëïÁ|Þùµxh°ÁP‚½vÝšì/< »Ëš”räåÛ´¬ôñ××âäµhmf •jƒÔÉMqvM­©¨y£ü’\ÝÄ;ƒX#ÿDä²TÄô;¤6ÖƒŸ¨ãOEFb2­œDŽ9qO\9ïó²ýÉ¿gÆÿ·½½²ÿß˵òÿýЗñÿÝÕê/]ÿ϶7ùß+ÿÿ½\R‹rü{¿ŸÖlÏ_õòú±u¤²W¯õ°}z£?&dnVó­-î=£ÁëÏë<+sŒõçôŠÁìš‚›“ñ'Ž^ô”ï NÓdtÉJ é0=Ÿ ê8@"¼`¢:I.g‰H§YNÃD:5JÑž$ÙMr1Å7Q„ý§1{6êÉ)χ­SÕÚ22Ò÷kiìñÙ¿'ÓZ‡ª»Á\¼‡¾ð1}?˜šg/uú'e‡#]>pþ‰!͵ýµÖ¯ÁGoLžAq™ÞGƒá÷“_íý8e¯m_ÀÀfQ7¿8Á" žåžË®Ã!å”]'@ƒxÎEúÕ" 篂—îA:Èzëç_Ö{UìN±ê¯MF²‡’ŽÊ|˜è §M{íò‘¢cÓÁç'ÉU2IFÚ«x×n´¾È9’ ÝQìj7Ëf£pýëX9Õúó8ÕŠ^1A¥öá)v¦e:ÛD8wfòN}½At¹ÄY Ï2÷ŒQ’R^òtìP! è Æ/ø} 7ôÄx*>' `$“àÞÒW ‹d«ö·sN)á û¤sB6\ò¢ä!î‚j1¬Ó/Žqˆ ©Ìè¾Å›Ì73¸ôUÃZm6ì=Uœ«ùûÿrZå|¶‹FKÑ…[FkfÂ]E¸ÛÀß­ï˜6ü[£ßêîznhÒ¥ÆmÝc;‡ì1FjG{Žw˲TëQâ¤UZëF3ñÅk¾8¥Ž¥zm¾Ôá¦ÓaÕj¥ßá^’]»þçÎ ;ó,Èü —gõ#X'¯#HÜXŠ-œ¹Éðwºé´žh6£(©9sÕvÛm5VYµÕÞ­õkÝ:ÚQ£¢ß]/ß(_‚lT×ï$Žñ2WœaÍ›©a©'fjÏþ{~& ì¿O›ÏVöŸ{¹Vößúrì¿w²úKó?6·ÛÛ9ÿOssµþïã’û£oÿÝ©lå6à²K[cóÀŸp.ÈÄnr}ÀÉ~7¼Âñó78ç§ï£†øsüŸ±ø-½Öe:.hš\~ÁM»Èj¼QØ"ÛDüsi_„r£´˜ ÜnSQoKw´Mük÷Õ›£îËî‰èá)"[YÁWVð•|e_YÁWVð•|e§ñýzVð†Ø¡Àì“WoæÌ(Y %dy9 wdxo`ž *ãË7Áó-orÛÎwŽXž šd¢ Oe´gåúðÛðw–eÄ߸{+¾ük‡3"t‚ÅŽIÈ¥‚c³¹±«ó ² ¬`z ¾r¬œÅ @¹¶†Ò¬FL»†¬jKq lÜÊ'P†fEÂã[s ØöÿÉÕéÿµŠÿ¾§keÿÿ¡/cÿ¿«Õ_¶þ[ÛmDöâ¿·Ú«õ—Ü ûÿñ~¿¨ûÅ(Pûô˾)vV˜%ª×þÞñ1ÜNÿ:Ù¶ß}ùC†yâI¤¤YZ È×2`:|ÆÛoä*ƒ°òRØ7¿êWOÖ¸Ss¹€íEz,”(ÓµÄdÑ%`óµÇÈ€®ËQ}~:¹ºJ/R< H‚źdËGö’\œ‰d2OÄùx6ºÌè›sàs`øKù·B3¦2ŸËÆþˆHM_§Æ×LÀÍÏÙrj}…ÝH$²µš:Ünewg7‚MÅ.u@(T7ˆÂL³âدƒ÷Åz€Iu,ÃöM‡_œÚî«l:ÒBmyœ{Ä´3zibÍññ=*¼Ôa ¯G÷Àµ¿—í?4²ý%ŒÑþ†$•%·ÔÜâ5æNŠ+Ëqgî¶\ܙӕùªæ•UÍËÕÀ O\?^EOn¤—åôΖ0>gL)?>¨ýyœˆ¡yV›,-Z›/mË´ñ&ƒ‹÷¦Ÿ\6•3ôŸ×°Ñÿ HF(÷ ?>nuG†g'ǧ{(*¹ÍÌzæb<ÁÀt#èä˜^%•¢ꞤŒ¬¾°43}`á÷ôÙ¥U܆<|6íµ‚á¢~­sûê0ŽZõË9,³©M im¸NmÎ@”Sòc 2_Zë;±˜×#>8¼ÃÃOˆRJÛ—«³‡6ïCbÐèÒô*±,.µ3Ag?¥ÚR‡Òý<…])63ÙT˜¯$3-E»—5Í IïЯã8òG_ôpÓž¤v80äzð¢Ë%¸.¦ºj5ýÈøƒÝ‘ô÷jÄE+ï?‘Îo^ìE1Ê$nÈi*ÿ„gl‚'öžß£û7t|;1(zA×/÷íœV xe˜‰>Jb”Ð|µ…¢dNÞ6¾FT9™ßŽ÷ ÛC7©ö²á3õòõiÔ©nC4Ä¡B,ëýoþÞ›>õû'Ç{}Žèììï5ùG‹~/íì0Úê¥!>VÆN윽ù³!v_¾¦ I‘4øÙÿóÕ÷…¤¸0VåâX”ñ?*®cy}¥\I¦9â¶ÏîÏ]œiÂNÿÊ?{VõÙ¦Ô[D=ïßkU(¯9p ÝÃhƒÖžr»BÝ/›!OwIoz‰­z4ý'™ŒMx$(ª¤ŸaÀ0jQ q3œe¢©{M„zâ±ÐÓò¦oGfìÝdép<2 ‹ån:¦¾o¯‰´ÿZãG¬Ï[èŦïŸàût¯vÇæxâVuƒqð·ÜÑ·|ä´ËàWæ#ÞAà3½¶¢Nù£ñøFÌFÓtˆ&¿›<¤\LPïA-  ÿdh!wJ_*_>¨çéå Ä.Ц8itÄš8sÚG¨y¸?P¾Â-—´7=˜OCÃýÃòs¬«Wdœ>sHáWü¸oŽÎ½$Ðjº?™W0°j6ØTð\›‚Ê/çYí~Å(þ«S_Ãgu`8üeäÞë´‚Éñë¿êJ+u[4È…v†/)P“Ž ±•NëКšIFcààÞ o„ã‰utƒ3ÇHiS4–3ëâ™íRÆÚç)g¹S$¬RTŸÇ쑱ßxÎ%>é< W5EÂ9rØâ;îPìÑAõØ“ð”8ïÏÁÄÚ-€ÆmoŠÃPãFE \g‡ªÁÀ³‡Vƒ=Ò[ºß‡°”šþÞ˜ß3qŽÄ:$°KPóOcûú¡»UÛìÁÜÚ4æEµÝœC«9‡NsMsàSÚ5¶7£4Ýúz<$Ïîh´çhy`¢žòDa§B-÷:QOo1Q4%Ï ¦Äƒ2Í9ŒÆÏárºï¿žlðN™ë«`@ôdìÖÞcŽ-{b¢;™9®ñˆÕä³@²¡-Ãjµ¾Ñ{§–Ÿ#ªŒ­öômIDš~«Ý ´ºt4K”ѾMç‡hÖeµ ¹çÒ;hÇ sÝ„÷5(èOX‘!{›C§U×^&“d±Mp0E[.šä”[$zK\Î&V½û¢ÊÚ²¹¡µë¢3då“uo†> Ö)vÑÆ삊càü¿f¾B€_Vqè[w IÂ[øA¨ïÓ›K´(j-9’&0ï© *”&B'ZKiÚqŽ†Ñ BD3<-“DŠŒ«˜¸ ÷¸Véô(¸Ô¥È?{[GÍ8ô¼Cfæb5‡ª sòùI]l “ 6ç¿ðn§VV&r'AjK(…@c†¹^ó4¦ÇJ_ª[¯Ê©M®[î1*TÌXîjC96x.õ" ¤NÂ…ÊÝ”«55á:„¶;m€JÔ2);tÌA{qþ”cèàòBž8pdQP=äiy¬&%4'–í<Ŷ€ÁÓ‹©,F´OódD=–Ú¨¥„:'Sc£ƒ)Ÿv=§LQLG6“¼F1ѵ·õ†¯‰¿…¥T9=åõ_ËØ sš®»êVéûJ·Ä¹)¢v€3ÙøþåëÚú«øCs3²=†ë=h`zG2ÊP4meˆE…*Bˆ²¢ö {¿o4Æp‘ð%߬#…ýŲ¶ ÁÇÿf„§ì©å™´´Í5ësœ‹f™ž¨[j4Z•Fƒ—Óš”ÀP`b)sõ UAÓ]θûz¯0(þ…Ûh$Ï`˜þÇrQê»õžS ›±¯~„”Yåð<8íÈR#k%=* \óùý‰|ˆz€ö§ÜR&Yï¯J†/ñòò?>5ü§æVssk«ù´Ù"ü§Uýß{ºVù?ôåäÜÉê/[ÿÛO7[Ïüõ¿Õ^åÜËÅ«=—ÿq¦Ô›½ßO÷v ó@ú˜ ÑšIÍà$È—AZœ Òû~ü½ÓÛí=¯îù›‹Oë?_¾~õhP$´Aþ, Í=eé'ß>ˆÕÁ ºÔÚ´µôê×w bÉŸ‘\¯È/’Fc3Άýå›±"_¥ÔúB99VÊ]¬=úƾLÕáa’˜Äžø‹yP“£]ñ”Ö#ÖÀÊ_­ô áe •$t¶p–¸U¢¤ Ó…Ì’dTЯNÂ@GtÁ¦ªhè"«£Eº![|©Z£ß¯Ì‰®ÁÒ•¶¡1k@‘€'˜‰±IÎìR?œÉ£{.“é z.a»ÿV(e¥ïRŒÞò§ÄšŒkXMïè”O`V,¬7åsNeÌâc…)ÑM±ñ0 ò¥¯C¯K$Ô¾&„% q¬‰ÆÅ K¼˜ûÁèÒM޲ÁäÚ"­fO÷ ä»ÕhÙU3N˜È%‚áz_¹l31cvíªâä‰\³·ËAÛzÉdÉtJØy—øô5î¤ïÇŸ¬Wäm‰ “;Á& 2å¥`8|0NùÕƒ‹‹ä†¢ÝLÔA䆆˜e28Ù öX§‘’­†°èÒ‹÷À´ÉGš÷Ùä‚yšŠ$6€jNyÍÀVI¡›3nžä9nÄbE-èß$˜‡Êý½’ök³‡#Á?!#ÃâÅÕß)gü Bþc`²D†nHih ]œ¯){s«6ì¾÷°ï½±Û>û†?ñ†ñô½Ûè<¡2ù:„\ˆËÚ73SRºöÑnßQ¶û¾›‰¡å‰Ÿø³£ß Cï/‘…Æ >¡¾© 3I#œñR9ÇQ”¥9Þ>ñzr£¸}~ã­S—‘Õ¸„„ÆÛç2Þ:q ŒÁäEQ–¿x«ÔE±„ìÅ%$..–³(ÊÒo™±(,8LçÆÈ‰p1Ir¼ Á_£ò>BòµÁ;Í5ûaÀ@³ð•¸"Ùb¤'Õr¦·Ug׀’öà?Úô‹#˜%ª‰ ý÷Ìì³Ô2~Ÿa…gkf;hpˆ«•ÞÔ‡¶gS„ˆÔ¸ŠŒ¬‰¯áwðCJy´¥“í ­4U)¦ïó†&@}s_jÄHß§ ‘!Çò(›¡æbrÛ¼„/³UjµÏ±Á“Èf.ÝËq’™jÙ’ÐwZ|ˆ¨e &J÷7EúÀü¸ÍŒ8KÂrfjë;öÈx…&Šœ="ý? 0ã’B¨U¸â÷èÀ# uÌœÂ4ð\ÃûyR2vëô÷·ÊSøÅ€º”KG„”÷Aµfƈü‡\SD]nL¡-œ—®,‰áàu1µTàQI­aÙlÙw‰ï+ïSê†lÆ” ÌqZÊæ§ÏV,n›aû²Jp½5×frKɵóp%¡jÙ¸)¸’N•D\aÛ #k¬§YÓ9n‘˜¦|xVˆÙ}ðëé—›DÔ´žrƬÎfœ¼ÍFLË >̱Õyhîé·½jön­ën5˜kYºh}:áI˜×æ†HÍÂÇÁ$Ï5ígùô{Ã\zÐ4#½†´@¤Ûñð¬ˆZØ÷ÜçfŠÃO+û î±?>÷Žª 9ÿþGP|TÖþi¤”¬O¿Ôëîíë…Wî¬éy¦è˜Üx¨IUºL>Pb(Í—Î X&4×RvBQs3êžbÐæ3»áÑž÷ݤ žQ1¡ÚÐÓò›-g®Añ[©i8¢®A9m<¯[«áOe¥$êr—K;KMbÄŸ7 çu÷LÇ“o››°WWi2¼ÌÔ¬ÂSÁ#~:™€^û¶‘GS+Ȧ?‡Â¡f¾ã}t”¡Ú™æ€xLôž–ÛÍrû6ôÙá¥O…JMŒ(Îq8¸¾x_Ó©m–¤âf·ÄO¿²c?I.²×Õó"€†ÿJ ép‘Lpð€ü"ÀÍÍ<”C®éc8GÃzðø’ÏSV°ûï& 4erËàÝÆ6~ËChû„ΞÊäRŵ¢}’dœ[Ú· ?þȶ=ÇŸÍçbO¬Gs0Ãï­°Ü.Y«_t4pk°ìbpfläŸÞžÙ`s°µ> %›QL`Bdã¶ÿ÷ÿ¬7ÿo$6‘?¢¿ê´fãëÜЀ3ßLRhðš[9寜eð(™ Ìýì¯u2зÏe&e]Α07t’%…J{Ó±}vM2î/¶ycÛ>ÓXAÛš–­DÇ…tˆ·Rå#5¯ùt›:z5›à¡[»Ph«ÿ< ´Ñœ6•,°OÓ&þÝíÓ%pžÍ:¢Î»c+¶‹ìØÁý½ú~mSŸcÃöfH¤À#9,Õ†î&©©ƒ¤£¨£ED¨¨¨SH0þ³«ã¡i'Ø•Á¼qpñÅwÿ=KHRפߺ]g$>ƒ‚‹F>Ì~%e¶´xÌõm™ ;àœ&ËÜÆê èÖJ¢ =:\ g-‡|àw¥åñ•–³Òr¾Š–ã,Þ•ªsçªN­Ã‰Ÿ±Ü+=ŸUz™Þí,hZû’¢<·ÃP¬DNsr‘:ñÒ¯ÎkUq5*7•_K«R1 aŽë°7–F+*#K6ÉðŽ‚y©XŒÌ ¶§ÁnzD°6î= @ÁœRÈÌ4ËìÍDRQþ§'s¹Ÿøáz®cƒá»ñ–Úµ ODÝŒŒœ¢vWgs%“%ßòIZ*¯¶M®]§?ÔÉ‚ÚΦߨj᱓ã€X¥èéKô®ý‹Ž:QV²‰Eý=pq2Yç©‚ÏBå”ÔHÖŽ:u{ÇgwOŽ÷öÿ¦äœºx.Þ¾O¦\ÞMEÈŒ8—s­px9(ö"Ýåv>—Èh¬À»zãxLrÅhì)Ö“Ü –ëXÕôßÓ¤÷`F%…ìŒgçÃdÝX´­·k^Èm†|ɨ±/r~‰Òå:¹‡*üN†q…uÓÐtÈa2ú˜NÆ#z»ö›e³››ñd*Ù:LDózN*ÖÈ›i¯"Ø>’ÉGÉ W³éŒ¦^È¿ïõ#–h!K¼Ê%éª}÷ýÎ( PÕ’ïu ,b³Gçè0Ô“ç\ hL9–ÌŽ×)¦6cÎò;”Ѓ–ÈŒœ:W;ùýO˜çQ9:µ4qÿ"-Ò~]µÓäâý(ý7æCkR¿fÐ?”0Ôàb(P)ë-8ó€3­ Äßç°þ¦`é£åOpü¥[’Ô.ÄV©AT”ñK‘pxù¶Ûß#Nh#'ìï´nÁø ~,¦¼H(¦Óäú†æð ëV ̆L«ˆ}6 Sø›[Æzín˜zq.!©Õ5HðÀWƒa–Ä䕨©†»1‹óÌúY”tKƒ’ŠEqIEhRÆ%í»¸¤||²"…r¡åÎÙ6Ö­QͰ1¨i÷6…*ÿGlÿ÷ ÑÃèÄ…µã?”'Oþ'ºèa”ȼ1¼oÿ“6•fÉŠS›¤òO6`$,2eÑ‚x´nSÍöX–ñ²YšÙgb=½ÇÏÝñ†ÄÁ4g pçÛ`͉C2`lb©ÄAS!yâ×ä!LÉÜ`^‚ǸO Öu=ŸÙà¶cUÊ—OûÙ,oÜàÑÀ ÛŠ /~‹J(f»ÜâaëdjúÂcgµPƇ¸±å>G’Š'[` BÍq±PwÀS®Ãå ÑTÍÝ;_´rètäN}¡~Èr¼Vwœ¾ÄCá«ôÏ"Ä=•Š/¿3ÖM·®]Æ <ÓLßëê#…zT:®šõ|4>} ü?ïè8â»ßð"“-ÄÔáÌVX0ï8X¹þàx/Ì–y÷ÉwS 7J›»{ûÓ#Äö•Ê ü þ ¼£wBƒ~þ¸êó»ïŒ@[mÌ÷*òŒCŸÚ¬ðX°[_yœ{¥¬€Zø”?ôXËy._åç"¯ÏÕÈò¾¢†NŽUH;çŠâ1韕zr|Ú?qzë¶RÏi¯Øsù´p_5Gçäeç”0Ò ‚Ó­s+jM•ŠâJ~€‚>~¹÷ûi|ð´ÿ>ùóÍ,X˜Rü-~¤cA¾`‡“d¹{X&;zg÷èHÞE¬Á‰µG;˜Ë3ÿöøuï×xϺ¿Â«ö˜Kâ –ŒoƱzýi¯Òoe{s²`ÝmB §k»0ýœÁ÷7ÞÝÛÝ ¥V.T”«Æ59@*Žü îÿ½ÿ5ñ¿v÷¨srÜéõé7»8¦žöúêSit Ê*Á8̻ӅöÈu-4†%pç/I0¡ÄðÎÕJÃ2ÊXpØÝÕ è9ˆ e Üøuo#/s°ÜøˆJi Ü­ š´¥äÑ¢ ž|á6Ò<–Ãã²:§g=o£y ChR*spX]!‚0ÖÀ]5B,_+@½îêûåð»Û®ºíXßÖe<™¯«2¶°"$Ãf Trn,sÃȵ* èû Á~0ozá ÔÐô{c[H¯„ JÆ@iÕF@ß]ÜzØ™¯0ˆ]œ¾Ö¼GB°u…4špW~ì]>+ o3[Õ9Ð ›–¸úVì—T,ñ'±ØÊÚ¡A:œM,×ftû•1¦µ9Öocuv]œWdT쪳h%þœ¯¡ñç*53È–y2´ª1d©Â¬h‡ÅÎ$x²ÂLîèP+¾i¬™n˜“qyw ›’qø…xÔ}$?èÈOøðZlÿÐЬ ®Œ¼|j7P(®Ð1 ÅÕ šÙFY²žŸd#VAìŒØ°C3FÁhS÷pa”ºÞž¥½™1Ö"Ôèù”ŒG*Ô¡ÌM òØ·oÔlûwúj÷Fˆ(²iFa€7ÔM¡¹‘6Øp¹Ðlóè8h¹ü‡õ«ÙL¿ò¬xdºÊŠ3'5M7÷¸­+HžVI«˜‚Ém*£>Z|jÖq·^vä ËEÖ;•&í K%ÉÀ<ílʶâµÎÚK¿æ ²i¹™¡M…¼ˆ”å§–_Cš1¼Ñƒk½Il¸hΞsÀÌÙ)–ñæÍ /öä©·«éQÜX‰°ƒ)Êeo:8‰®HÏ7‘§¸Â‚¸ížwæ3Ï&d‚µe«ÕµZ†áŒ·½œ¶ä5-d¬òM<·PàJt¡b5 ¬ýñ!—/E?âB”‡ ,Âv³ðUæû®`6ppEwyÚ»o·C(3gSU‘Îò³Üùo¥ÿúž§¹ÎßZ‹upu¹™”×_‹IM 'þ³ö¼qPçPi„ØÂeô°Œc6+>ž€•ÊáTï6xf¡@;@|:Va2TdDfŠ8á2Z2ϲ/.”Ád†ñ¬t©éxyVú1à£óÇc»Náû Œø‹ÁÇqz)àÙ@k «GªŠI(É"ãBŒJÐ`‡úå*4Ú 9ÑU‚,”óÖç‚Λp~ÓµåÁÑ™«‚ŽNÂÀ~³#B«c½-æÉµ ÷ns"lã´[?ß÷&X0Ö7Á 'ª¯¶ ÎsÚ+}´â&Xfk¶ßëqÏ ™Ø ³´qιF;~Ÿ»·.>–¥û袆¬…öÑøš0âœ]­¼“o¥UŠj˜ºª«ª?Ðe×ÿÈ>~ üYÿ£µÙÚÞjo?…/6›[íæ ÿÿ~®Uýú2õ?îjõ—®ÿgOŸ5ýõß\­ÿû¹xµ»õ?úvYt×8¼#kØÆoSâr’R‚i¾„F{£Y—Ån[BBC¨¨„DÃúv<O—c±›àqÕ).±¡‰un&é‹d4ÅB—U&c‘ªÊÞQRnbGÏJ V.Z¢¬äƒUãÁ"‹¿Zœ¨y╇ã¥|S„IR¹/_ƒhÛg ÝîQsÈ;“QB$ç+!èlá©éß$ƒìÄ#\µ‚±–:±€/²½pú/¾–2zÉAJiK10-•øÀâ´APˆ68µ¶n0ô‰‘ƒíÛŽY]<•]ÌA2[:RFó‰ð]NVç{^k˜x2©ÞÀÌȃŒž$cêèiƒäÔ ðò%ª@Þ‹¹QïÅ|À÷Å`êt8¹ó>ÿÙ8è6îºM!Á^Œ¿xù" ìt¹ð¢;v~}>œX ….)v>Pv›\¹s!³ÛϱQVcðì%$:1Úm2!¸öª@í·ëQ•A õÈ­§ªá{S*Êh eé67í:”.ß\Œ¯ÇÂpñ.¾ó| ïÂ<xÞìøÏUF׊A%ÃGW§8†ti‚²P9Ê™›£lßÀiÆémÒŒe;TR·Âu:b\#–éÍÙùúœ€YÄt;_8OÅÊTÖ+OM¦3ós2¥Yâ[8{á²ò‹RDJò.b$ËÈá" Yì¸!C,—“.³H’… Ï•ã¡|e<¯Øa¡ƒ‡óÑ©ñøáp´oAtp,Ü7!\﫟ÝÎ?[´«Ÿ}æŒÍFoó‘·pÞF$Ú1báâ…»Õæ×€ÍiŽî‘»kí—}_Oî¬ñá„ #|š¤XÛ v Êþ>s“ÁÒà%§çÀ Gmôý?îÂBïÚï¦ìößíÍ•ýç~®•ý÷‡¾lûï•.YÿíöÖö³œÿgsUÿý^.¹ïyö_P°èR#¶‘™ Î’ ºù™²Ùõ¼Ðû5̱ùk÷ D\¯ŒÎ|ÝÂè,ÜÌDW´@ ÇíÌßN cS}˜˜Sþªjë&T+‚<ýŒ¡ìЂŔ"/,=úÛ°ÂïÙÐ^c/˜q@€u&æFG4 çAÃÔ’•w 1üF%äNÛ'6µ€ñ¸a”F{)Ý›vɹ=8ÑðÊ‚gªp>ª‹fMíj¥NíSx é=Xf~KGkò¯ºœ óåŽ|^áƒ2ä§}LQ8¨N ` ¼.GWÒPýÈÙ¯-õ«ÂJ‡Hî©NBX³×”þ[“´}†‰Ú±¿RN…–3´½GØa‡ñc.ùzi¶´/jTuËo»=‹uãÇU]9¢‚7G,É¡#´O‡‡ª½¡bƒ•‘,Å•”×§£‹ô8’­fÒþ›7Š.äÅ¥öGNsÍø«ìqâõT×b4¦4¥ëx–”SI¯ÊP€œË`J̘ç‚ü¯ L{¤0ZC‡)>nÚ°…-`‹G¨LF(A­*töñ_Y\²› aSÏd% «.®b$¿FÏÜ–ÄÔ"×8ÙЇ…o¸”¯0AäŽ O­3™øm7( `¶N)χ,Χ#Ê¢ô“qçC,&—ë^µÒñ©ªý”8Õ]zXGšå†µLÏex’XUEÏ•—A‰2ä"4Þ”G*“î9·€;—¤VÑìö›+x/I&ˆRï¥Aªþ”—º9«#¬HB–%T•£‡D Pkhê]AÔ&äÈvY•›kªæ8® ª—úÜöotö½’ 9¿q¾ÞµÈ—†uZª‘?íÖ…¨0謷‰¾~¦MÌ97I›YÐôOU®Ç—81¹ÞRÝð»qjW¼ßÈ%Ôñ%±Û‹’pçëŒdé6 ½uåFÿznôâ‚æ÷éNoˆäóEr3µU®qlSñ¨º±\ÌœÔ`ó§³çÒ•SÒVžüoÀ“/̧Jè«Ø„,®A]ºGê««ùš’ÙJéfŸuAœ@ìa]Ü=3Úý¸ä笑§Ë©:®–Ý~¸¶9Ž‘ÚÜmU/N?àEC¡³gƒë„äûàÃúŒË‹:±Së}c”l0ÓXý‹©£tÉÙH›èÌF´—Q¯ì»R/A]îz@U?•âÜÌ¢ÝÛûVºÓÙ̹:Ó ÑÚ¸ÂÂJõ±ਮÊä,I°¿I°¿!Iåe3wH”êúv—Ü# Kð\ƒ%¼ƒªgoìü ? ¾põ[¬ö¨x˜CàO$°—;Cá»”ŽcéÚ“äf8¸°ÏOδ19oä 3Gù…±ëÙ,Àg ·´†ÇØrúòÛ…„±+‡é(°úÌ€œ×ùÅ)¨‡¶v8¬JíÂæégßY´ÕMoÈï’”3nÕúî;Ë •78S(›Ík³F¶ô’_œ[þ|ä”ðÙÉ+ ¶Yóžá”O{žÒ¥hÅÏ ©©¶0û–å©4äϘ/é 5lKžKÆdXL‹Æ·#m­hŒÖâXÍ].®Í)|J—#§eC¨¨±F¯™xų%LÓÙSÊOƒL“ÿ&çà}¸d^‘5R aÀv\ƒAGá+ÏIÜ4¿l¤»e’yÒ&q˜H¹O/¸ÒIze0ÖêHkðx.k£àl}’Åæ4UŠøO3«®œKáã 6}!çAb‰ bØÿÑG]ôqÍ».rkž¯´¥¬u¡‹®zõom*gµê\ýâ ,弚´Üjr73˜ª—«”Wc#__%ý{ÿÔ½±·p;.å‘×ôgìÝ(Î.5χS«C‹}˜ÿõkÛW‡qÔ>æ1ç°ÊtmbHkÃã|l3½‡)…N2_Êè;±ÒñNæÇL•JÊ@dCÜœÝ$·¿ÈLÁQµm-‹‹"E„=[4ŠI›™l*ÌW’™ŒeHŒÑ4/`¿K¼B_ƒÑ{Ëî ˆßa|=øÊ!ÑEÁ*FºJ|-XŒª­‹Q-V‰ªr”wY÷Rb¼oâ3O@ÉrÅ©*1à!—®°×+ ¥‘+)U%äFŠA®DeM (ÏÙw8‚}_—ÅBU`Óq`ùËr‹]'ƒ{—SÛ>eí0Q2‘§‡¥Ê€¶'g]s®x/Çm~ž\ fùB½¦äY%Ÿ¿µÃ”+‡»^‹Z’óƒ‰ Gò"LTyoV´r[ºsq1ѱÚÃ?ãd³w(¤ï*3àþ*©WšwGêŸ@7í5Dï5Ç•<é’Ö`%â]êPM ùÓýµw ?û¼{õ¹ÞÆ«nÿ=‚¯Í¿EREi y_¼|‡w{Aë*'cu^¾áÊ¿S…UÐäÍkJFpi¨¤ &ŠOº‹lކ€¹ö2šÒ¡È9ùÌAB£Å3?üºdµÜ {œð~I†`ºù?qÁ:КTýÆ~稿§çÂÔ*‚³×71O2죒õW îoXÈÕ¹•9nÅåøDq³|³›(Q%ýE廨09.<ù¤9‚û`ZÒ¬?þôšVMŸ™3w¦<Ýfxý[áëìçgÄEÄž+qy¸^AìÍÿ ²66! ‹Âƒ‰]½o:ª†»‹óùîkÑÜÔ¨{ÎW†ü[S‚œÑÄëù;‰>¨üÖð ¾@žt{§^-Ž}¦ŽÀ ´ý…Ñ·4sçË…H¦û5ÄA²}RÑ“ 4{ÜÿDu›-—z9\Ÿ¢hösyo1Ó d6ùÃQ!!Ì”VxPÊK:ø„¶ª÷Æ-›; -Tþ!’…fÞàl–gGe¨MÆŸdH™&d$Kæ…~:žà`z¼§f§§õµbÃJkGvËeÿáÓXÖš°}v|”:…þ;"¥ç2åü¦ð>é²l¥-°°¢óÉ\ç¢Ý,,‹@¬´7£`žðmkSt#Bg§†Ê'×,!Òõ5ýÞÛ “ö¦ÿI˜{¢JG€“*Dy‹x²£5‹ Ú™†ùì {N"I’:ÃC³Ç©ÖõPè;>¢®S5h]\.O“a|ñÐá¬È® Õ/5¿À£æ£x9€ù ©nI‚ª DJ¼ EñÛ¨ù´?Y):n¶M®æA0=U·U¥èx ;Í0Ô0€ZujÅ2…ci ‚M­0S· pÔ‰fØš®xYG¡3Q.)2/'“Á(#·ppf8ÑBŽ`çJE!·](ä¶âBî,/äÎl!·rÛ!!ǯzoȾUÆüþ„·¼ói¡ì”»A2u¸¯"¦ª°IÊLx/*%hÐ8ý¬m³´‰ïÕËÿ¾“ÐJùßÍ­ææÖVói³…ùŸOŸ¶VùŸ÷r­ò¿èËÉÿ¾£ðâõ¿½½•_ÿ[O›«õ¯ö\þ÷òÀ 2Àßüñëñ[©P0¸êó—rh0>~C¨ŸE _•äòÖF«z‘ ©—c4ªŸÏdXÆÁà”ÛÝäú:6àçàÝp0¿ †ÃôÝ`ÔŽÿ3¿¥—ÒŽmBƒ ^}œ&—_P=)ÊCß(lÑÁ úÒÚÔö³¹.+ãü¶Yõv›ŠzãäÎGÛÄ¿v_½9ê¾ìžÀ™¼BÂúz)ò Í„q>5¬.ßK¨W«'ÐÇ—Xo¥Å[yôñ7ª”{UÓ‚_¥Sòã/òŠñ¨W|„«/èG¬•¿Z)üÂËâ*‘ñL~I:ñdþËñ Ýi&ÈlŽÄþE³ú%!+·¿8±_PDÖ'y ¦8Oß›šuHázð}aÁ²GlP/$&|B0åäÉÐ6ëÜM†rZEE¿cu2I”m¡öº–Üdu9ˆ cÆÔÙ2’e\³‘ŒÂ°O§°|Á€˜um!Âþ¦Ð”÷éÅ{e÷`¯U*²"ŽA¸}„æLL¡`ÿ5™¬{I#hÅ”xì‡1Ñ7SJ¿¬kùë° ›]œ€GIDÆXÿ"LÜ?ñ=$ídè4ÏãŽXUúñð#v“&Ã2áœî<ðÖå3 p¬?¦ãYæuú=ä §]Î.’Ü´')%ÑòôJ4å.29öÇÕ|J0„b˜dŒíÅp^“Áé]2J&Új3ß(êu¶c˜äæ«+huô¾M32E‘¤Ó,^©®Y3êZˆ¦…¨k!BÈyyr;” m<΃BàµæÆŒ‹µýì·Žq!V0sÀ\ˆïé‚s§tô$élõyà/$¡PüŸçgw8Œga:VŒjÁ³wi!Õb×%¯É-Vê|ºV÷+$wëVAAôAÕí"„jHDÌ œSذáÇ; 3à¸`{³È…+n L?¯÷àLNa–^Î`Q5S¡¡\¼š‹ÄQ,£5ßú3„‡!rð´Ç_'rßÒ&‰v‹s7,R,3Ry69~™ƒ×µ “9%ú%>}ó÷~üɃ7ÑÛ o8`&¶¤—ÌïfÕÎÌ:‹ÜÐàB–Z¹ÂT à=y>£È]ÒáH-¡C+ã³ÉEÂ鬶PHµÉ˜wzì¤Ä‰*À#ËÀYÜÈLIÆC™DñFäöx €Åh UÒÿ£@ b©X ·„¹ÈíÁ?ÅýðÎBQ4÷Dû¸Æ­0>òð·Dö¸Ç®ðZ•ƒÂ;¢+"ª{ZÂ9,AjŸh%O°™ ¿ž~¹~Ö‘6ð”3f¤/Ã!Љ‘²lRN ”ïtš{úÖ0¨yØwºµ®»% oRš™Ó3(©†HÍÂÇÁÃFòiEùš”a.=hšˆ^CzÒŒ½Í\W€Ã-2ïÐ ?­ 3ä“pùѪ"yéóßÿÀ‰ó<«VTíŸFJÀQôK½îÞ¾^xåΕš>‘gŠNü55.“Ï ŠJó¥3–·Xb†Az32ƒ¡¡q5¤Ù ö¸ï&ERµè9¦{×¢è–t’M¹i8¢nˆ_Úx^·&6Ój¾–‘w¹´³Ù$Füyz^÷¼Y*ÖFï-Ø+Ðÿ†—™šUx “¦ÄO'8>mäÑÍÙô'àÐ1ˆYÐ è;VÇFÛÒIÔ.§Ö`cà<8Ì!ðgÿžLk#4'\×ïk:9Ê’TÜì–øéW7÷“½®ž½5üWJx±‹d‚ƒœ€ûÊU¥ 47ó°b¹¦´ó²yg’ÏS>'a÷ßM’Á”Ü™·ÞmlÌ:y¨C»}Bç O%[Üñ*tMÍ-í[ÐdÛŽvåÏæs±§GV‰£9˜aƒ÷ÖÁDyA \AÆ#/»œ…î'kùÓ»ùƒ­õièpGMñ„·¯Ú_ÿûÖ›ÿ·›ÈÑ_uÚ ³ñunh@žŒo&)´xMžE¤6÷WÎï{”LÅ_˜#¹ÖQ±}~(“{ÒøC(Ú&•Üt%ã4Q/WJ,™½f×$ãþâ¸lÛg+h[Ó²µè8¢ñVžè´Ð|ºM½šMÈ[óAªmõŸ§“Ò‰3}ÜÄ¿»}:¢γYG4ÐywlÅv‘;¸¿W߯mêslØÞ ‰@F#WDPY7Ö G ÐF‰°.PQ ЧĀ.`J8]EOFÁ®0œÛÅã6•Aè¢&£ÊÚuA«;á+pi>xZZ<æ‹¶+Ï¿Þí¤-ȧ"Eyn‡Á_òšÓøÊ^¿:¯UÅÕ¨ÜT~-­JÅ…† 8®óÙ¬­ÈX \©ÀdxGAX2é tìXYÚ…J=Õ±?ÔP.M€¤ÌLd5YjLEùoŸÌᾕÝÌuk0|7žÀB»¶q©ƒ‘‘R´/ÂÞêl­d!å[TÈãBË•ëô†Ã홵•M¿‘,ÐÃ/B¥LdR¡èéaKôžý‹ŽûU6²‰Eý=ðp2Y牂Ï\0EÅs‘8tÜòêâ¹ÎSÈetîò­ÐÌá¼öÝåv>—X¬î“¤ªÀ»zãxT4òÄhœÙ +•¡ØO“Þƒ0?$q1¬³ɠ׌“25ò®Û\ â8™¨Ä€«ÙtÆSP/âߎ÷ú¿Ñ ·p_ÉDA+pSÝ»ïç~©´,T]ä{MÛÃnxçì³Yó÷œpi`f›››r‚¯S ™„ù×¢Êe3"(¢Å{)cãIîæ"ÜÙN-ÍÖ¿Lx–òP¢é@L“‹÷£ô߈N¬IEhü:˜AÿpÍSØòd\ RÖ[Zæ¢[°ØßçÀ^“[Fº0øé&'5qóc#Bjŧ1ˆà/EËíåÛn8¡œ°?¼Ó{5% ©¬™KïEœ,8&×74‡À—¹|Av¥( ás!çË­¡YÐûá’ZRƒ–2Eг$&DM5Ü=ØXœgÖÏ‚€ó[p^,Š9/*ÀÎæ¼è» ó2Èr'äÙÌ[mØw£n™a#ÄzËÑ¿dýÿˆMbb‰EZ£~ü‡RÈŸÛ áÝÉ#ZS^×e²äUÁaæg‘40ï™]ÆQÃ"B ªÞCš·1ç`ëà¹;þ!C‹8˜æÜî|`¬9qHŒ7,•˜¢3h*ö^òš<„)9°ƒm¬ômáOÉpHãjÁ“‹uèÎfycÆ Èl+ª,NÞ^¡4ôr ‚­å¨é ÕB¯¤ÝMþaƒÏeœÉ•y#ÍõQ´Ëò€ºë4žr¦j®›kgwäN}¡~Ȥk«;N_¢Ùý•úgâžJU’ßë¦Û×Îá F?—àîZ|GP“S~}ËIÕœO˜wgáE&P:بÎ;¬°`Þ'pPqý«ñ^˜-ó[­5Àw Hö»½ÎÑß½ãWd7ë6ä/_½QìÐÏ8†x#qþ–ü÷]™º¸öäëÜo½—„QbúdâàqóyrJÆŸÄ?\ØÑäè^¤KlkFI¢ñHLIÚ[‡¦¬ÓÞ Góq³° ™Öxg"ÔóêyRrÎ|n й¿˜` JŸ6ƒÜ –kFGúü(Z Þ*eð£»dðâæ†gùw`JòÃô=²½ôcÞ’ó{XTÅ0?±¸f~xat¤í!ÏO’C!(ŽD9óGŸ5Ý*¨TnÏÔÖ&U{Ó¿YnmüýVîû¨ ö±¯ë^rü?“«‡âÿÙZùîéZù~èËòÿÜÑê/õÿ´[›OýõßÚÚ^­ÿû¸xµ{þ7¼jåÿÉ_߯ÿçxÿaù˜û‡œ?•]?í%»~æ¬Û%æ+ÝõÝ»iìúT߇›&R®êGvÓøÕqš“¦ÔKc»iæÇ5ÒMcQI ý4iÌO³$GÍCòÔÈ/K}4wì”iˆƒØßw–ä)Ð&Ž:{½?J=/ò¶%ù\^5¤e}/blïîÉqÿÕ²]0sç…®<0KõÀïß·†©ìjÄ>£e鉆)£éd§o“ë"æŠýØÒïtså”Dj)Ö-³ Ýæ}°ú·¼AÉxÕð‡AÊïÈëw OY̶ØQçgwOŽA–.×éu?þ®RüÉÀ·Õý:¾­..¤©/ ½íÓaVû™ßô|‹TÔͤ…q£Ú§â6£µS,QÅ¿`pÕÅøX;ªs¤ÿžß‚ÕP¤M:C²uW–¢;¼\ûOö`ì?ÏÚ«óß½\+ûÏ}ÙöŸ»Yý¥ëÿYëÙvÎþ³Zÿ÷sñj÷í?äK¹o+XÈ•5ȺîÃD£.§cy†!˜Ð“žÓJÔGhÎT.û’Á¹G{s=O@Žóy¦³†(ã;ªîQÅTRË›FÂÆ‡•åˆi›T eUVD·U–«!Òd£áÕ4•èÃ6·!;òÝQ+Ö‚æ«“¹ŒVÑbm•V.ïܵ¡hÇ¢ù }; ð[Ÿ7µfª¢V¸ ¦2 ÃΆagƒ)=@{ÙŸ^`ìz`&µå‡¯"Çç*ç’«3‡An;ÿli± õì³¥óúwiÌã¨pÁ[ õQ—2Úe-zPAÞ½ü Ýï:<¤²e¡à‹ƒ\µòoºd_¼æ ÜÚ ª¡Ëi¤Mè´3ÜB>¹„Ûix²Ê<8™dö­G·ë],þô¶½ ´óÖìRù¸»Èi¨ˆÆ-Zƒ—{Yöß›‹ñèÁØ·VöŸû¹VößúÒöß;[ý¥ø/­v³™³ÿ¶VøO÷rI%Á¶ÿ¾yùºg{lßÀÿTÛGÕ ÕíY‚U«¤Öòj|‰ í—Xù AA¨U¯…Än†ƒ 2âG¯aˆ·Å~r.6Û Ñ?ømã¿îÒ–\ÒkOò<æÐ»7jdSŽ¿îM-ÐæÞªögäP«ü•W{LÚš@ž]rewi¾¬ÁÐKæ:Ö¬¯W j$¶„‰”¶02N#‘"ý¨8èŠeŸé>ẟ#nÜÊip“ëFXtêuw•ë4GNzýN-»æ ãùEK’x"j4ç0ö6ýúh/ï¼qiU°¼öÖj½ÇÍú“Ö=Û©%;²)þSŠçFÀÆì|±IP“7¸Iÿ ñSB~ÂPèÐ>9¢‚׆²S¿qÈ`¹ápü){îÄ\º;°œSñXÔþYoÖ×þAÁö×ÒÆ?ubàæ¿HÿûÅ?¿D(ùj­Ñú?u&sdÈüCdFjÒˆ{ã“æÏ /{Q£È%ZÜ_Œ ˆ` ñ›xÑX†é²WUG>ÖŽM"¸`ŸèåÚéöþè½I Mô'£\ÙT´8‘¯’ý‡¿x©›×ÐôÃórß–½¦ª‹ØëOãɇ ø.©´0Úk=©t%›€Ú. J=õƒ{J=€Šü×U:Dhã?kˆÃŽ®¾Úö‰W±0nçhOþ8’?OU•çhH )Ñ=ú?öj¢ˆ%Ãëìb]ßx_A¿{õò·IC’i¨Û—á1!]“(ž¼éÃÏãþËeÖ@èì„b~\ Ée|&X}‰¡É¨ù.Ý›¡6KêØÑÊ^“ŽC…ÔÝ÷»ÃT‚ÃRT8\{!×ô½?¸Jº,½ž]?²LÜ{js78+-Á0J&‹¹X˜¡úÑ{„5s 캀pkeóQ¥ÇhúÎ1X‰5|EƒeãøyxŠK|^͆ÓôføÏÂ{ :`ݱÖ[턟q,õÔñ¸k/<ös×”ˆæÎ·Öd÷Ðf@ÿ|TÖª}(òŒÌßÓÒnSü¶•´½’WçëOÁQ9'•û|îd \ùå5½ù„È $»£ +‹O ÀQÞÑÅ`†i`°î¯†z?õBŽå·Å]†ô®Rԯźè@ãÝZ‹ƒp¦ì”5Ù_x¶ 5)ÚÈoÌ·ié!Cq´63„:µAêQ¦ø•$˜ZSQ+(äÌбvnø$qý©]£¦ê3𑥎¿"1™VeÜW¾ÀÛ_¶ÿ/ù÷ìÁøÿVõîéZùÿ~èËøÿîjõ—×ÿnoåë?lo®Öÿ}\R7rü{¿Ÿzþ¿>êäûcKEe§_ëa»üàê²HæØpéWs½qQÉy=oE^µþœ.5˜tü%ñp¸¤Ã ƒ¡M;ƒcÃ4]²SäE:LÏ'õˆDŠ\h¦ÄôHù/Ðñ€3ï™$—³ jV:Íž;ŠQ›$ÙMr1ÅwS‚ô§1ï7€˜{j 4Yd8iýEóIöïÉ´Ö!Ì¢‹÷0#½³2½ ^xæúqH=¹í\`ë-a|Î6˜R~|p%úó¸]Có¬ö!ÊL¶ö'Ú¹h5&ƒ‹÷¦Ÿ\6•3Œ˜¨Mó’'8ÔugP»WâìäøteãäϬg.Æ ÁˆDÓ«XI…_!ƒ{¬Õ–µ¦,ïßÁ®=»ÔWúDm:ÚÏÃEýZçöÕaµR"–sñfS›ÒÚpœÚœ‰I2LÉÛ3pö('p{ Ñp=âƒÃë1¼a0ü„ t â q¹:›è¹~ä7.M¯Ëâ"\;ãt–dôi@š’§ó@3f²©0_If2¹vÈkš “Þ¡¼´ŸŒ¾ØeO:(˜w8èzðöx¢‹,ò¤ºn€ZM?rjlw$}¡ÆëqjËûOd¸/öb} T훌’’ÏØõåDpÓ^¾Ã¶i1ßÚtQaUªiádé@ƒÂl8°©à 3å[ γÚ1üŠN{þ«S_Ãgu`6üeDÞë´‚Ñkðë¿êJ?t[4È…¥†‚F)È”q|ªÖf55‘ŒÆÀ½¼ÞëÚÿHíûS4ò2ÛâééRf=ä)g¹ó¬PTdÇì5°ßxžÀ(&|2n«"ó‡9Š“ºÄÌ6íÒHŒð”8ï?´:`_]¼éðÐÿ؉T9„ÕÖôïðÊüþ˜ß‰ Ž9Øg9ò²ÕýÀͪÁÝHƒU›á)X92†¯¼¤·›zh5õÐmêááãÃõ¦l.|Ñ÷)ò@ÁWÔ›íÍè)˜ÈÌgw4}ú™‚®îOnj¡½Oyòéë@›Åƒ™ü§·˜ü‚9ñ¾~øXîÏ æÚËúÏO& æÏnzè°.$ïßá`·¾ ëC÷°9è=¦1Ø Ì$¸Ã–cGX-@î1‹b Ú߬Vë½wêaù9¢€ÙÊZß–¡tjÈ+ \1V¶%i¸€oÓ+ÛÐ"šu '5zÇíudò›ð–s *ú¾V¿ÈfçÐiÕõ£—ÉÅ$dlWLÑŒf=囀½¨%.gY@É¡"ÐÐ7Ëæ†^Ô®‹ÎT¥PZmÔ½:BXrØE² ª“|:yûzÍ|…X¬˜Ñ·î’‡·ðƒ(8§7—h•Ôv^BÀœÀ¼¤n§Pú†-ª)½«QaxÈ&½-§b!-[ ó×:¨—ºÔZù§/íò˜y8”²Rëf„èyf¬ÑOä'u±1L6Øð»Ô‰ꎿTñPFŠÓ¼æ©y•’W·^•ÓõlštÑûb¶vW…ûËuHˆaš+Tïx¼U/…ë³Úàì´NTQæ<ŸÑ¹ ÍÍùc™¡ƒ+y’ÀCA–§å±š”МX¦÷Ûò‹,A¤†Q™Í“^ªÐ–æì•NaŒeð f ÛP]gL±7“¼F̵·õ†|x K©:sz÷¿–±æÔsw#Ô­Ò÷•î†sSDÝg2²çý+œ« H´æfdg £ iø&G2Ê/m‰Åõ„pÒDTš}ÃÞïÍð^!\¼(É7kÄH!È+±„C°©¢a'{Vy-uÍú§¡Y¦@j;œˆV¥à•´&Ç#0 ؃Ö2zЪ ßzÈ}EW„«Âͳ‡”K¥ýšún½sç4æfìl®!íU¹ücK0ÓC0Só“!è,áZÍïOäCÔ4“åx4AâxUIguý?nþGöñnÀÈÿh7·Vñß÷r­ò?~èËäÜÕê/ÅÿÚlµrùÍÍUý¯{¹xµ»ùý?‚éÅ¥ß/')æI¬ ÿÜYêÆ’Š¿ò0ª'Pôÿ0 aN°&¥MÈJ:±rðò5ä&EëåU‘MŽÇì­ŸYïUÓuKˆ ŽV1Ï›Oÿîä.&Šú*€_vôÄÞ¾LÈò‘1”4g–±ËOZV;&ÞR‡s‹ÓF.à]›(ÌúÊÞ^T»éú©ìúÌÊ· hsÙQìǯ; oA"|—Œå¦Ê‘СüäÊT½É¨(§ȉB2&»EOÏw–Rbìr>_Úi vâ‰Máaå |¦8øâÜ“y"àÃÙnüœÉ(NúCIÑ¢Âd/h;\¯è&£2ý$ç "báW³ !}]&ÓA:Ì6\ÃÎHm²©^ßÑ›Hµ‚d 'gDB2:dLI0ed¾<‹@æˆËdFTd“T)C(žoq·ù(_=TÛP‰–©®]§#ö²ðKµ˜Æð•Û‘Œ ™x,wA0nˆPwžsCr«a2UIŽ.Xšü\2Ò96*‹E®œ]^9Øp³µ{@£ÙÅûäš’(` @íŸ ¦&;ƒ…ŽFòy€M“4¨$0`[ I¾áÓx]3Å`¨_MÎ{®WùÔÌA³ÿ·áÿ-kt-ø´Ÿ¶¶¼1´áÓö³ì ýÚr1ýó®6ø'­×ó,[[Rs‡A¶o–ß‹Ÿëmä…ø±‘ le…¿µñ7ü§ÿ4·ðOü§ÿÀùîÿ»£Pý ðÆ©z&ìz™€o÷ܬc—óÑÍßg óScñ^8N@ó#Û¥5æ,jæÎøKö=pn§)º7v,³#å«ÿ5>‹Qú×§IJa,õøÌqŽ„=6öÀ`Gý?Vþˆ¯q¹öÿÏÿi{seÿ¿Ÿkeÿÿ¡/Ûþ7«¿lý·Û[yû{³µZÿ÷qI­À³ÿƒ*µßyyÒˆ¢@íý~º·KÙ’r×wœKEÉtt‹ª µr+,èV3d¦±’Á‡âo>„ãy •< ô¨þ’P¤`} 9=[D¡—.¬#Á·íCÙ³Q«dñ'L{`(Ñ Hr0Ìh,Ôê”w“ìb’Þ(´‡ eÇXk<€{2Á¶'—ÒŒÑÜÀL0ä4ÛìÁ¡‡VJPºø¨ÆqqËÚȱ6‡%Ë´LQt}ŒKí¨ØTú ƒìä_u9GæËùüÛ÷ ±`àÐÎeƨåyb·3Èn3º’†ê‡_E^œÃá?½²(Xî¬1‰¤ |Ód¤ã$ûõµÎšj0Ͼõ•r µœ¡í=ÂŽÐ; "æP“¯—¶l»ñ¢6¸š&¿íö,ÖÔ“jŽ8QÁ'–äŽÚ#ÇCÕÞPùˆÊÚšâJJëÓÑEzÉæWYÍ#o]5\È‹Km…œÜœñI]v7Äkä,t°Ø äåø•KЉËU$Ê…fwLš¥UTÞ™£à‰ËwIèÏ(Evc>ÓLöÚ7À‘†Ý|cÇÌm ‚Z S\6ïÆ²ü’rr¢§åLÖ±bqëBì)Fº$‰sŽúA"«ÆÂ[$jŒ(6.RtCá.å+f™L·q°j]ißÉ6pC䄨 N@3RBE… &ãÎ †À~¹î• 27ˆTA¬<%Nu—Þ§’Ö2%(˜¸kŽ-NI¯RC)E‡ª©•Ny¤2é\Mߥ#³¿q:¬|Ôysß3ÉQê{î߇]¥ Á6úR7ç/w¤Qêø_³™œ¡±öX´æyLšºCAײ± 9²]fs9ÕÇÇ2j]áÆQ†ðvNA¢¼Ûß¡ .˜^Ò U‡n¸ME§ 9\ìæ…¨¼ñwÑwÀÐ#.>DªPÍT…™C„`›»–H©~‡{Øá»yjc¼ßÈU‚äñ5±AÛ‹Òp&ç/A÷Û@ú G¡¶¾v ñõ"!æAãüæ"""ù|‘ÜLmhÿ‘M;î¯i<|\Ï(sŽd#ÃÙ<ŸoONù+E•Nc¾` ¡ßZ>yy½f.Hó푲éê©îÌ ŠÌ¡ ¡±‡qZ©E®Â^<}! Tldå%’‚抬®Í§Š¡ ¬Rs#tÔvRí¥6gk«Ž¾zÇÁ/Öö¹1J6xÖí´mMD‰„À*Ôºa` ýWÀòüåÑ‹Q‡ƒe!¡Ì Êó”êœÒî‚›E´{ßTcÊ‘9Á"¾.Íh3IÎ7UÔbˆ¨ZÈôÔ2f¶ -ãR¥×~¡«Û“~Ž þåx”°ÞØ{¤&ÑC 4µù´îø ìåø.µÏ[:ç$!`üKO¬©+hlqÞÈ#3ÎÞù‹›ó1+ÝGÔy¼ç—,_ŽúµKéL™¯Qú í7 c­ÔÚ<¨Â±{™§Ÿ}g]¹;¶ì¦'ºó¡tYx©}‡ûQÛÅÚ«rùP#­‘m@#½½þç–?9(Ü;ù}ضïÝ7ÔõmA®­*·ÈÔÆSD¨tëŸîm“ êæc²0 ¦EãÛ±LÎZù«¹ËE 2 WTŠÊ†ê1Ë®Ýâöñ<‡OløæqζVÉ,§†0`D­Á £ð•5ˆ¹iŽa.wÌc$ m¡Ãa¨²iŠÖ¦ ­¤cY·m³«æ‹ç…TîÌ0[vŒc©©n¨ê躮œKáã ¨9PˆŽcÆ !†ý}Ü[Aœ¯ ÎWçúZAœ/?nžXÍ“Qò•°q>•ë£gë°(_¥aÇÝW ³rÃ﬷Ý3;3éÏÙ6‚­_JöÝö×!”¿,Ñu2±§e0µ­×Ö&%Ù|z ˆ …íi„Óôå8µ]O‹íB>O.³,Nfʘ§ø¿bÓT—š$…-É­º€q$s:’½¸˜MØ›—ßÕKƒ^ñ¬|"ÆÉfïPN¯Ò-~Ôt‹Pe„HMƒFYA§°AïO ^iÞ]½ ºG Ñ{ÍNÇ/±ä/ 6"÷2ÜÒñ.qyêNïõñ+8víÂÏ>«}.]Íu®_ÁWæß>áÝ÷úoä}e°øúö‚ÖUÎp1õäÏßûo(á…Jr冄*ÁºËL™ v6š.£È9¹0ÌHB#ý3[¡á^WžFŽËݰç–dRžðJ,ãƒùØ>ÜØïõ÷ô”8Èpêù~ßh; …YS”âµÃÅ .t}ofjùf7¥Jj‘Ê%R#`ò‡xò Er÷°V枊¹E ¦.åø´jjÒœyIå©L[þ#±:ã7¼&Y‚˜ÍãŠgiU©è`}»¯H€÷ú\€¹Æû†*àä£Ý ÎW†ü[Sbµ†X–ô˜Å°ug3…,»„Ô^–qÕ‚Žj\~v¾°¦þ×Ð<ÊæI½X¶Ïl„Ð&û‡­– ®²¤h6Wy¯‡xçÿÌýòG£Bºœ;&ÍÍð T(âjUï@^ϪæèUÏÑ3opv¨àÃø“Œ&#cŽŒÉ¼¨Q'¬&˜@ïñRøúZÏ`„•“?eö Ûßb·" L›yI3x¯r¶Ò6žKnjŸœdÞDó̺6Ü»›IXq‘„X1–]NŽâWš¢ /P‚ n¥þïm…$I²1À;Ñ?ÀGÂÆC>È/ÉÒ"k*äM‹gRáhêŠäRH÷߸ÉržuíúŽóëˆgœƒ§•É2·þ•Õ ·;8‹±„eìËÃÛ«Œ”wVzÈÞº.“Mª$]!”UÅrº }ôTž"¤2šèâµ ˆUa¿‹TqèÖþl8|d%æ¸UÙõ¤¦ìb3UrŽ×&ÄmUã+NµåÃ1·A©V8ªÛúùëÑs~QèDR4'“Á(#gyp.dipõq8ê]NEÙv¡(ÛŠ‹²³¼(;³EÙVH”mGÐg¹¸F•W6ô,mxçÓB )e~2u⻯"Ö»°•ÎLx/*¢U¶r¯^Gû¥x¸ 1ü˜ùçvþ÷trõPò¿·¶Ÿ­ò?ïåZåÿЗÉÿ¾«Õ_ŠÿÚÜnçò¿[Û+ü×{¹xµ»ùßQˆ/7{•”}X¯!kö¯òJÅÓ™aº]P×È٫ͨôdélC Ñì⎕)à$[è«îÐ#­Veûíq)ÖêÁVýÜÎï ÕNî‰fô|ãÙ3+Qfžx$ÞTÐ’Êñ}h\+yÿ'oú,1ö¡ÿûq¸‘K‡ å"ÐÚãc¹Ú-³y¨ùÎ{†½–'h¾óbyþ>K/>¨0tØ@¾géù0ql”=é£3ÖHmx479µµó­:¾˜ƒkÖD¡þà%| ÷ûÕG‰}~àùU³d@q&šÏÖ›&C[ø~Fìäú…šù  6íŸP©‘G¤ ÃD<"<SðÞøÿgï]{ÛÈ•þÁ³ ,û¼ßžl<ÿ‘­ËXò-™ YJŽlY¾Hv’œÄƒýû1ö#n]H6Éf·Z²¬85fb[jÉb‘,U5,>ÀŽ ¿CEtuôåƒÇè•HÇênûEî°pÈqm¦8 n(İ(7é¢Ü¤ñ jw§J¼¡jÐ^¤e"'Û¦*/X-±9df€T¿Ñ’h}Ë9î¶­Kùx.< .T±Ž˜° öˆC˜_ í(µž¡²!…M Ý#ÓZÞÈ|;ŽS3,f'Õ1cræË?·õÉE¬yà,Ȭ¹ƒÞzšAfòpí¾òç©ëi;<q¿Â<㇠ƒ– y>‰ãðQôôf2Pñ^II#1J§Í`ñ"ÍÇÓw{úÒÔ†É_º¢©¤ÜHñ<¤;[̦í-ûe±Éò÷;±ïï‘`Gù¾î‘ÌûŸðÅÜÿì­ã®æYßÿüÐ~ÿó<³æüß/ÇçÿúþgEÏvûþ§¹¾ÿI~þ~÷?Móþ'DæM×…OÜž‰DÔ…OqNc1R‰\è…*õ¼—.ºÙÛ¸¨žÎ¼~I)ûÝ]ÄÏìŸmÿÝ)ïÆì¿û[ëù¿Š‡g»mÿ͘àum ~vk01\&d[ŠaØÈ¡6•¸#S¹ø)ùÉd>aNâgvˆ|$N3nKF³¬­Ú–ü2üß&%ÇWŠ\œžŠã Æëî\&ëä ‰ó˜¬5ß‚˜Ñy.“µ²Sd^¬ÉúY#xÏ·;1<ÂæóÇÛþæfóg1X/Í’Ü\®}8ɼÛï’QØÇÕ«µ±x® g±8iRɲ{K±MwžÓ6M€ˆ O€€w(}¡Ò¤Dv×ÈÒ0c² XF !5Ѹcb\”SƆBS»2hzó"´Ûéøì mÓΖ |rãÚ#„Å.¡}^FtÒ89#6™Á©’Æ©µùÇ‚lP¦á¥±ÁÝ>)G<¥Ë‘#ïÉÆéÎnœÖì¿“éM奨·×øß=kûïý(ûï³ÍþYó¿RÞÞÍÿòîÚþ»’Gìíºý·Ó}[Ññ¿h„„N›pp:¯¶ ^÷¤¥b:mÁ§ç'Ý“î§ —U¸RªH«0nÝc?üèµzþ„m·øÞôwècØ»…“R0ö~R–[Qì¤7]ã([¯³Y`&QèÈll•Ø€=ŸaÊ}¢y6Çu‘‰™›ó*›íè|o ŒHÏK™¸8²™B½*'cå6ü<"5/< î˜iwžh/§|ÀÁ,§z$ÔXä÷ûϦ c[žjV=è‚Èу¡zJ¹ˆ>BO§·w^ÓÒSr¿é4¸»§š Öp¢¤4&d–Äâ:KLLÎi®R´AÖ˜Kås0ð*œq;Ë3sǧ'âU‰˜Ì‘÷)Â0yG/&A´³@±ŸrmКÏòY-´SÌžq†pJ6ÝÖ«…Ñ QºA‡èJÖWÍܹôž^Þ=ZªZŽ lßtðÈ£<ƒ„Ê–<n`† {˜-HïQëU,³Ž4ÅŠ% “Õ£,͙ѣ,Lqõ(kH…!ô°”ø×#•<Ö@Ëæ<3Á(Äöл% GC„H“â”Æ«×Óí G°Ýr­,óÂVçªÚžH «bv}„µk(cÈhY¦ÁýÄ\²tvPØù›–.ñbBáŽ001 0ðÓƒõÄÉü*†cèµ7/6ɶûëQáˆ<‹5:_ÂÁÑá”Ú®±º‚âq)4±`cî¨XÞ˜L©cÖE q—ÄD`Ðu5Q5ú´ØÕDµÄ”âW &i«lšBóJ{T|Ž+ºÑˆRˆxͼÐ(˜k:PѶ4)Ú]Êà± –¦‡Üô©Ž2„´O‘\¢lôBlRfèB¿4ìZøøQF3¼¨c-—]{Âa´SÔ­N@÷Þ> QŒÐߋƔóô”÷ÊF”®pÈ¡¯Dlãç¸Ûy1ƒÜ®ˆÃïž`V¡nãX&9JÈà„o)|z)½/«æ»‘J̾4ãÆ šÝì´«êÞÀqá$²2™¯/ã&ë]ƒ¤3Ã{Dè,7³†²(௭“ƒ¥Þr}ç—\°g½±R)~¿±ÂCÛ·ò¦€C‰?ÿ ¢ ÊÒ…“+6=G›¤J4ÿã—4ܾ8î œ>îïq‰”7Ü‚ÄeWå ß~L³^õÚ€õWŒú)Ø …Á‡F +Ea‰Ç;áJšÆgÉUÙ£‡ÔO4>b|à$.ŒxûÇS\„€‰UOº•áÃ!DEó'àè$åý-÷àºYˆÃŒ*ëÜAô¡F}$Ö‡Ö_#åoz®˜ú›ZL3[‘,YQaÿoÂñµ€Á ª4¤®À˜ýõ@'îOà€<•.CÈÊ.!cËK2ߊy‡<1¾V‚¾uÝv‡5z *«‚…(˜Ÿ‚ÁÆí‹¹„&Z2! LuÁA~t®T2 9‘™>ÍÃ*[ÚáÊÄMÌabðߺ Ãžˆ‹ÉCî‰g>ºg3x5*ÑïyœPä(„*6+vAG%E«gjjB{ň25²OØ“€Ì™ 5 ï7±Ååý\;¸ñ3©È !ÄB¥ó EËÈ“ë‰ìеžDͱ©h&Í^<"êä0•±ÊSkÈÞVž[×¥:ó`‡¢¶»²M!#èÀsrD)Š1 ípô…å›Bq)ñI_qy¸UýÎbïÉk‰b®Ñæ«|«è/¢â2ì|›àceÑo©MÜø•}¤Ð°ã(˜ÐU&½+ðfQv;UEŸäÍNÅ ƒ¼Ö— â¶¾[«§.„eÒÁaõ…zÉ)¶ÚWèí¦©í³EU¤8‰DßÈ× ’ŸË¹6[hg„`³fMÖl˜÷íp±ˆj¨¤çÜA:MêÁÑX†³É—)ð²¼!4‰²æì–^Zãpy{~/Ìl{«„ÊØ{ëîßfoÝyƽµI"õ{k<ƒÔzo•ϱ·ÒèD[QJ^gÜ_i£4vqñ oz3¶Ûäh”ñ½5^µô­÷Võ¬po•ñMŸ´½¶GžÜai£AW;, }ÖÖ{ƒ‚Óqß›½Ã&–Õ÷×Ý„ýÕ3¦ø[ã>¿?Üçö÷)ÞZã>׸Ïï÷ùÜ€Á5®té¸Ò£ÂÑŠQ¥kÔçõùá>k° €N^ûPWÛZÕFû2¹sD™Ü3EÉ&jFë?ð·\Üèq³ýŒàÑï=Dʪѣ«ÏqÉTÞSïz0J“ðßQÙv ¯œHØ©ÿÐÆn£²8Ðí ýo ]»†×¹eb¥Vz׈n‡4% vpïaH5S¯~T·äOÜÇ•š]ü8m 7G6gù¢¥²µåFI$€j½\­ç„ÖzÞÜèZÏØz3€¯N˜­—ië¹Á¶³ªõâWéêÖ‹.ø3o=öÖsÁo=} í-Âõfãp½ù ¸žÆõ\€\£áf[’ð±Þ² ²žÂ¿ ‘ÆÍ;~Ï^íõFC†ò ü‰\5øÒô)Œ-cNc~q-Ý&GJA»x”wƒä<Ñ ‚ÏþpªÎz)¸d»| LÙè©À+Ù³…p9â¸eã@ã#&¨Gìö2™¸0«aýÁ8ðû°…÷Æ4<¦2ËÆQþÎe)ã!:ö ¼J’{‘«‰a™ÁCmLŒ^ôaœ9:gR‘ÍÏh÷X·yýÃh»ói»™5áýGÞ[‘&œâCÀÏR4á½µ&¼Ö„íÞ>UžÓG!êêÂÚ°é¯0‡.œÏ §/à»UáXkÂß§&,Ý#–§ Ç}%޲)^^tÄ:2|Tõ¿ç£“äR¡7{Ç ~toÿ¥jÃzÐîÅâØÌ¥¿NUˆíÐKuGa ;ìdÉî(.äÇËqI©lÍá’r­"/Æ%Eóÿ˜‚núbü?vö×øï•Ö ¸”ÛÕDj‰.¬œÆü'ú™ÔEöÇFNw5™'$ †éF2z!Œ"ÿüí[!)YBi˱é )”‹ÃÑøn#Ý—Dù‘ÀÇýÐÿ8B¬kâH#Ê ÏÙÚ¬söG‘ϲûÕ7/ôl¢'QBÈ64)‡Ùá«(™zæHßë‡ÐÅ©¼õ#T¹Ño¤âìºNÍÙyPImýÉËÑ@Ãh µæHÈvšSÇ2}ê­,)c©‡ž5uœõZà õI˜|2:aàDêš=µl,Ðêb9ÖîÜ>„ênЉíÇEÞu$•ÜR=n¡ÿ]}Ií ‹A6¨:¶š§”l Tõ1Ô,}°XÒ4X÷,²æµíqað…ÔGRþ“’ñj³}Ù>†%HdÌ¢?ÅYO'uŽ'DD—Ö( vœ§¡âÛÙÁïÏžåñ­@‹×ƒ©Ì¯Ï{%^•ø Ìè“Þ8¼fö´ÃÞíhü?,yÿ ?Þúwï?7O¢&Á÷ºa”J¹«†»­†Û÷ºÑ’ŒŽiìÿ³àušÕc¬¨Ó Kç- r¥‚w9”¼}ØäF%B.øCPòáÌÿzï‚Á'`Û¯Rv~šsÂØ]ÕÔ«˜¤’ÿpÀÃÅ÷)õdš/ D^­¹R]Ï‹—“-0ž½C{Ó–ˆá\"p•­¥·åb¬I½Žå¶cÕŠ·a$Õo²E€qã„RÚ|¹ÄÖsåŸÛº_l4tf–KãPyîÑìʵÓ¨î²ÃÊÈI qsÙô¾õ@îJôÙo^îŽr#S«¤7šn9æ¯áEÏ¿žäªürÁ á“? Ž×ŠÖk%ؽèMñ.j˜¼÷_H/€|—ÐÀýߘMÒcÏ"Ѳã\k´[úÁ©&Í.µT—".²Î_¦ËˆhT£Ì”•ÄP»¸æå't] ³4‡‡ úK%cLàpÚ"Z*Zum·ª­Ýáï?á¸F~ðÐÈmnd±ÄœbÙÝØè÷Ÿ„pDmÏm—-ßN U-ôö¤üš qàÊQšl!‡˜“×R:;ó99º™PD¨jÑ–+ÎFaÕg0lÍK«'ÑÅ%Å–}9{sòÞ„[€<¡Ù- k\^žÁzý,õÑíÿÁ¿Æ/Æþ¿»¶ÿ¯æYÛÿè'²ÿ?×ìŸiÿßÞÛ+Çìÿ»ëøO+yx¶›öÿÆÙyÔ¡ãÓ…èà" >Ìöée›ÿ=Ô©?d⨀˜f³ä;A»fú‰.§î¥ØñaŒr\Å\F}íȨï^~~¡IŠà`otê§OøK }DvQ©ÌgÆÇf̱0²Í ‰ØÈφQetRÔ#ú¢Vï@£ôDªÌXFÆ ­6ʘÉVØ$eÖ¸×ÐY ˆÄzFfÿxç U·áÇ[„Yûô¾ßë=ŒýÞcITxøÕ¼¡Šš¤W[ ̇Jì?|dÛ=µãÎÿ5?ôÑÄA^Õ"‰ 2¹s tl<&÷xŠÞã'ÔH»* Áh,Û< yÅ€ÚGØMCkpp¨À÷= 6FjA¿b’° tÍJ“™èºñ¥þ`2ÂVÞŒ ð¬Þù£{^Çà§ôHÖ;5ø•ÀG×pDàzÄ8è?ô¶Gc¤Æå(y96|# —.ó$„¯aΚ/Ág Aw3öÎi!!“ð:ˆ8v£kŒ_„*‰paUe”6…’'ÖËf¨Ñ$PV øRR¿5a±±Ÿ˜ÀX}l¦õѱNPOžz‡—~ƒ7Oô²´Èe)WzÖ1™]²HâmŽ?Žusð4*à´ÀËŒ`hB#8ïýæê«uýgö–/'×Ëé4÷¶-Mгéxô¨¢S}X¸¬N$tÖIžÍ4ÿ Ö 1¦CtC/Ÿ¤e0.ùz@4w}rÔí)aÖ_DÑßÒ+iÎ_I|}‘A­~÷¶`ýúà’SQƒ?™Œz¡/vNùÐöˆË Ø#ÉH“o»Î¨KíWbCÿˆÆ\“–EÃÃ}(1¥ßÉœîÓ¶ª“ÐFwWâµx9ùgw6Ÿ|ëj°qñkWƒÌï™P0†ãçø¦ð+Ú¢Ó\Í;òÞèaÐwm-ø<ò}0Æ)†Ç  Ò êÅ=(ʽðE7š°ýùâ³äÄ´ªR¼Äï´õ` ˺íÆ¼M‚ìƒNñ1ø%©ºˆWí|ˆiŠ$"1D¥O½õKÄo|eŒ6ö‚vsâ¼2Ö.‰· Ú²ûÂ8í:7)ª˜´ÉÇï`ùë”Z2G £3VÃÐtÝ‚:Œ%^òòÅ7)fé<<ˆb-]våïO¾I—æŠó‹%\@«ì·K¸†N \¦ßäˆd¢#°¸ƒÉ…Y¥UQÅÌÒ—©¥c·ÚVéfji=¢™ãëèÎox52`¼•¤PaªâwHˆ£¾‰wD¶èÒŒŽÉ–Tå^bÿ²_î7ÎÎW•Íz)î[« qʼGÿ §j: a̡ŠN hm†¼} ^±W|!Zc¥ÍQ¿"Ås2/E¸#ˆÍB;©~Š8o]Še¯Œ˜¿­!‹±ŒßJÔåe3»ÿÕµËärÌ'(ºa§ˆ†¯qCâ_6™~ïºNg¤À„õë'§ì´…%Œ¿%°¶’ —h¶1ûù»-—ðHP‹5‡7’-Z®é'yïF–æƒ$Û¸ ž^9aõGÜ w‰±ð{j°ëöY‰]¼‘ú‘—§_íÙÍ&^ÂÃJñœ—ðúýïøfòbî×ùVô¬ïè'ºÿ}®Ù?3ÿÏ6ü»ÿÝYû­äáÙnÞÿž¿íÎÔ>ÿgGîÍu8û5àÿnÎðÏþ„Þ6ÎÏS<ÔkøõÚi,þ<ÙiŒF†@ŒÔ¯•k9&IÉ8lâNY^7×ßò/Éc-/¤âM’Ø%urù«÷g®ÛkU/¼C1W·ÊGd2°çaUbþÓh?çÁ“{N_¤‹úÀë²D‰¶zòŠètÄÜÄëãõ«ÈíÛî)¥ÌEL'"èêÄ–œšË/”ÒÑ*øN‚ˆcnÅØâ{^)ôW:þM€l‡ñ^£Œ·H6Åâ}^Á[Húþ'¬Oõ¨>ŠtRë`¢ûU¿1¯'ËÂ¥Ó3’#ñZŸ©E¼âNE…ïŽF÷pb›†ƒ(MRoŒ»5j'hW]{rZYV%ˆÔÙ°ÿë&uÃHßbuû*ÂŹ#*FŽÕ›øã+úûâ/×ÄÄQ ¨µ¥ñ‘ÖkWM¹ GaÃëÁšÌÁa|U¿âûAô/¾r¾!cHó%:*B!Çü=9 ×D˜nü*ÐèÅ’?=©i+¾€oT26þiÌÙù{ãÊn¤º~­ÄîÈÍ6a¢DØ;ýŠ~q¾(¹Ñ¯9_’ ‘/åÝ´ÌøçÄ•ƒ«Öx¦“zŒ;WéœÚŽÅiu1§o§äL[r¦íâŒdK[¼“,íXg]¯eë¤&ÐærìE A¶Ã™}<ù0ð >úìƒV‰ Â9ºïc¼-}¹¸’ËE öX|׈—Íá ðëò0b¶¾ÃóZ rÀ¦Íˆ4Qœ!?pšlutRÔ”m.Ž(G0'£…ó¥f;E‡¡€2X˜—~<Õ÷ûŒÚŒSŽ#0a‡ÃSÓˆ/8ô¯ƒô¢C<,ÙÆêØ‰íÀ0mwP¸”*‰GL oVîÈÈH™”ÐKµ <µpÈ¢¹c-]öBhË9Èå™g@Ö¥Ãk­V/&e'ÜIÐ4t­¤£‹)«ñí#&áÍ7æäã,|k‚²½ò†Î%öEªã„’Ì(c–;ØïñF-`]#–DÙ«l¨¢ý 7ü‰w7EË4Ï—È*šŠ×Ð]ôô‡r”ˆæº*ÚÞðªSïno‰³¼|w‚¦ï ¾ó*¶¡¸ îÄp=8YnF_µ%¡†Ð·æ’΂¯pÎ\"з²ñ0à£6y:’ŒoEËÑe¨¶'Ò5œ­<«Òxˆ£Âk3й+-§—U\©[ª÷&u¡ ñÏ|BË´5¶Ff¿ô”b^E潟Ä'^i”بú›õ:-˜"Ž¡É|±ãš Ê,Œñ¦µçåR¼¡U[‘ušôN´:'/Í…öƒaås‚@ˆ¿*^ÕßZtðbp}¹è·?$ÛºÄ)„NhKŒ>":8mÈ×ÑXŒ5ȹóð°äå ¸ÆD³«R’t —±%llNE]ßyÅF§íoÆL„}fwûLL3÷%”Qþ½´k³™›"|D¼JØRv¶”Y!†<ó ÅÒ‡¾!Ìþ|Ck„W4aOŒåeŽåÍË[F„,/=H–—'Ë#)Üs…Êò²EËzk„ËÚK<9gšå¥ÄÍz«ÎâVï§ÅÎòRÂg½MŽŸõVSÇöû"µx=²íŒ`Zó »ú}39¾–ÇÁ~9÷6íxFj«é·¯ÖU‚)­ÄÔu®”üy4©ßÊ’®^I½„áBÜ3—KŸ¿l<ë¨^?ú£ã¿'ŸŸºþ{»²µÆ®äYã¿è'Â?×ìŸ9ÿ÷¶·cñ¿Êåõü_É#ôMÿݹŒÁ¿%ì{áÖžå`¸Ÿ¾m†Ë¦î\ša°LµÈØaâ¨#5á”7Qm¯©ÈþkÖ.^?ÛYÄ!!ïîŠþ­av]A ‘ÂôF½û°f¬Š­–œw@O%îPo܈£oUØ\­efƒ#¨îª~®!Ùß$¼Pì>Å#^øÒìpgL= 1¬‹ÐË:gÅL‚:7ªZ‡R«Ô:v€{=ÜcUêÖéÄ[rµD%õ‰çV‘ÎL@÷|(h®Û©hJÁz›…e|$ B² %£¡Ÿ-þÍA¡Gà©Ö5ŠxÃÁâpÉ Ex$û>Ê‹o,ÑÒ¯¸|+"ä`4®8‰g/  ·!ezÑ( iœÈÃLÙhél?u~(¡á²t,aŒð€í-#h]ó"ïôTjiÎáB)VÇ ×ò¸Pp ®³Pk*’Rý0å—qHØ5†veZí Õ”s†ƒ¹‰vÍÎåÚ¬9ÿcÚÿ¾¾”ø»ëóÿŠžµýï‡~tûßóÌþ™ñ¶öÊÛ±øûëü+yÄnnÙÿ@ñy[=è2F0.,Gd ¦(ë`IOVC¢#ïS&3£*‚¿u˜—‘hø;$RÀÉ CP,êšæ+šÅLšn#E*sfS°L¤d3L²’6ôX£¡y.F¾–nLz“á :HAÎ1i¤œ£÷’±£*ûJ£/x`Mš²2ÎíÏü^¹„ˆhf-²2n¥Ûv™-1Ò´4Ak€¡ætc’ư:%L_ðQ_”·‚$زnýÏ*5ôC”Õ“N UJê-m!Nh‡ó•Ÿã A{*C”È5’ý®&|Â’f“’wX0 Þ²wºÙ[š»–žèWv4B°gHl û,Q á„ÀÃ*Œ0aÙ¹wÌl߃e3)¼ë‡©ÎAÚ?xG µ4à£ëÏ•È!âò±X¤õ;Jœ{€Ðˆ‘Û.‘ô:nÈu kè‹*ì¤äâ~A—goøk¤Áá¬LB pÈã!Â$¸ÃÙ¢š,ë{?Ö½X¨™(ÎL$ ^8Íp¡AÓ›™¢s£yPåPª®^dL|ÆäA0b$Ì®v¢…·˜h!²ÉÖßROoeœö„Êá¯=M«4(#ŠˆÅ}7ê‡Â9Íh¥¾èêËS”Gå^ aÔ*/ÙÀ'§€x)7F°Éà„›Ñ:˜Oz0œ ßiÛä[™.ȳaf>¦ÑÓH§ad4˜'FNdöÝ5éâ¼ÖræG¼éÖmÃ*[NÂó¤³ÄÈ5t§ ]¶xIéWkY.ù2 dã)¹Ò~ÄoŸò)Ó…à*®óT𧧆}jFW•Xw¤˜e¿¸|Þ0NœÚ8¥§vM)é”»)ô_?Ócè°ü>»×( {‹—XÓµ±qÁòޓ阷6Œ³ ª’2\5è ßY¢¨–Ì®„­ä‚Ó{¾pÀñe,†Þˆ}Ÿd6›uô+c ×ѯVý ÝÔ\üú!£_ETR2 Å ˜`èg/ !ó®3=n£ð8nçJ¤A™‹ä±HÁ’¡‰„n‚jMÔOüŽƒm>?{l$Ê“ÍL$ÅÆ4«fãäû?MX—É8×k8û`~H …í)¸Ü¦Õc˜ÞÌÃûX;ú‹TPÉíàø¿ (¼-§FHa;j.Z¾è¬¥U»_"åüÊ£ò…gòðW¹»I|›)˜ZÜžsÌ‘¥©}¢Ùåm©¶OΘ™…“A%FÞ¢ÈZíŽlMRÒ¨‚ýzJë2#ŽN(xY«z ‚˜T„ZÁ$¥Øó¿;¤ š©9³ߦQR'YàmÎ+µOº%ñ*: OÌ2oɘ–•.i6›Ák{8SpmÒ9Ý8œ©Ñ ÊaÓ`±‚Á.¿RÉêõ„QÁ 7n˜ôÌà!Õ]wÛÎlDŽBO&dº²« õÑ̃E—îæ5»ÞhÌÌ`µèb8¥Î¼p˜h&l÷=JÊEƒ¸nQ×^̘jøö&_’)›€¡ì+ ­êô™ºƒ¾IôX:ŠÊ…ŸZ•›íßÞµ5Ã]÷â,ø{ú¶Z×ÞßÒ³uÎ{ŒY×Ú-Æ'æé§ùo1""ŸR½5?%ykÆ•_æ'hb[/F œÄ-DŒy+ñå6Lé77¥/~ü¾D#€· u˜×xÿ²õwµZ»v(Øìw’›Òh.Ã&¼<[î‰ ¨þm½N=‡ vÞU§zÛ °U6w0²ÝI]Øw´Œ.ZFt%0¢UWãïr,»x NÁ³¦ñ!‡ªÝއªþnª€ìÚ‡*wzcZßÖE¸Bî~-Ê î j@Ù9/JÖ,ÈËŒí;ÀÝlZîì¤ ˜ìƪÄ¥UØ´7é±¹ôÅl­ËfdÌw—ØXŠÿ óå £ÏÀpGñ,Ln´Žúq)µG¹òT+œÙž­§˜Ç~èt8†ýoRy)ö¿µýoEÏÚþ÷C?šýï™fÿÌù¿»³µËÿ²_^ÏÿU<<Û-û_Ú®¿¶üÉV-hù{q6¿Nemó[Ûü¼µÍomó[Ûüžfóû†7L7»Xߋث2Z]Z ‡åCdÜîÎØ¤œPGÊ¥ú£tÊ_Ø´Fxé–!† ©ý+¸ÓðW`ÕóZPœ·s<Öp:Qb™êeÒ­#:ŒI5¯åLö¡.c™§k*ÙðoÚïEú½È֒͆È<í°—¸Ú€©§[Iy§kl“‘õ‰ßà%£É•i§ÝM—ÈBч¼Ö¦_‰Y|¶çI *ÏlóÑŸÈþ3žô/&ÿoeoÿ5ÏÚþóC?Òþó|³¶ýgw{Çžÿ[kÿÿÕ¨j±Ö¯Æù*¼ƒ•Oö¿SPyÒU§2"/ÈÁØÈLØÚ+½µÙOã†^o>¹rž,›þõ$‡R¼7Ó(¹±˜GëÁìᇽ1—¿¦_0𣺠TìÑé\<ãP™0Êx: 8—ñƒ|.ÄÆSÃữ¹pƒÖ ¯ü«þú›7¤–.ý4žÑgó¤Ý(ÌtÜ„—ðH~›…¥¬é›qó]ûâ¸àÔmþNWüü _´`á?nÁ_s‚wc¦˜øûg4\̋٩Ö\fù%š?ÒP&ï‚iYZI›¢Á£ÂaÏ8U'Š(È# _¢hý$G¿“qÆjU8Yó7Y ™Õ†Ó6×3È¥ Gw°šãÜ„¥Ö0ð–ZŒ$ÆŸ—µØ^ NÐØõÄߪAüJ9æ¶D¯àÏM³É(ø ÒøI4Vã%ŒSNßÀ tü7uHSÄ?e¤{iÆŽÓqP[å#|`Íì…Ñ£Ž`LY ÐL »?柈êÖ˜.Øe½éOBø¸ô¶Úê4JÑç‚CÔn)ËY¥z`ô ldj¾O­ùŸ9Kó î¦5Ÿ”©5_o×±Ñ&1zÔ ”ž Žh/Æ›µÕÔ·Lz°"ú.BÕM+àœ°!ÊåM×k#™¢ð›T©6EÙ±¼5Ë®„º×wgVŠì?“ëàó ²ÿ¬Ï«yÖöŸú‘öŸç›ý³æ?{tØÖøŸ•<<ÛuûO§Ö¸Ìy‡'µïâ´uB`•£zÔ¼kÃßÃÿ ¢ßWvúãöìC4Ìü(v#GÖÖˆ»i¶%ôDÆ3Ó‰ÝO W%ÈPUb†ÞÇ’ªzr\ÓF'”˜(¸jœ¨ŽáG`$Ÿó—oDiBákà:).þùžß;ç]ãX‰ÔÒÌDÈTlïŒ$…2ƒŸ £·s4<þb½|™ô2%mÐú!šˆ£š­Hù‚òÏ@'ýáÇA rsN(; Ý––hQ^Ó„¥¹Lf™BãÕ3ÑÒ2O蕉MÏ'Ä#â@A'#Œb:¥ëˆŽV®õªDíÒZY­é­œ²‚ó!-Œç‚Ö b¬g¸Š.²:Ù炉>» Ç“)t _†UðËÄ€—Ùhé±’%i£-é9Ò)1T¥ZÓ ù‘Œwò³þ±9 ¸F|êçËù°øgáO4¯Us!þ‚èÆ»üYüÔßøõ·ð×ßþü%P‹ )*$¿¡?©ø]8Ì æ\é?6í @Œ+tW‚/¦Á—|1aî¡øÐ $‡N8ô@<ùêX;3r¢/½ãjdt&ÚJ@lø•È×58?¢”¶0h4ê ÀHÄǵ&r\Ô©5ã«,G:@ ·ÁXm6ü‹JM¿Œ”ðU£u<žª2BªJ)èežmD@ä½ 2WJ«¤ät…Ø>ƒi§&½€³€Ñâ&êý°@½¼áÚ•Ó.CÛ‚È|ê ú`&6§·#Ld`¶´v?cy,0€h*3KE³úƒNâv4èKì’Fº?õBšDç}.ŒåQ“]PÉ?Èødãà&ÞÚG€ÞÓåáC‰)ýNÀ'–q„ÎSñž¬[0SÙÞl+ßE.0âÙàã–ºÛ;ïÆl¶©‚ð#FÈŒßêŒnnŠN„*¥E·Å úÓÄ8«üPÞ~Èy¾d}X·võ­nTЂ[ð¢{Y¡0· ÚýÊSïSZ'ïç #WÛÝ)ê:ëëMrùm¶ë9»þžS í1åJ¦Ú>WÖø‚×8í¼s"s~ܤ{ø·ü³ù’%i¡+›'f•’¾³J¥zƒg¾èiU;­ž;ºçõ›vñG·qvÎ?1«ÔÒœ¸;gçîlXO4J2e‰âc!,ƒêN‡d/zÏã èvë¸8™±s‚:y8›´9¥Tf/qA£Óí¹H§O:5gÆ©£zz»êX„T«™ÞéQ©X¨Ì]Tü£»$ñ]¦dWqWëÌþît”^u¸Xë%7<›ß»ñ=!±Q»gßl3„¦án¿Ãc°Â¾bÕ<&0üƒ¬K\/fb”~» ;Üdêñx¡5nWý›ÃY‡wwѤ„ZéT& ŠÞP÷´‚äOXF|—vM{ÎõãŠ#¯iMÜÔw±«[¾J$lÚ>óhqcBVÌFì Ôgüñ£žF+Ê¢òêøU²ÑU0•½Ž¶4kÙAbxoI1Oúæ u,&V’ˆ† §M>:g¶ay{šÊjˆ!óÑ„&ÍX` *¾À,ìž{U{ÅÜÃÿ Â{7¹ýé<µgylº˜dÏ%›–r íu¼•¢ÜБÙ6ihr;EkûP]ç;+?Ô?Ï+œ¸Åúf[™Ù.I6”ÍÙ¥©±Nxµi%{‹Ña-C_ÁëqßQ_(éïH·!ú¾Cz…Ã6D±,9CgMºnŽõÂsÀUÙ³sÉÝö®u:A34ë3ƒÒkÒŸÊ ãßÓ™pП¦Åóþ~<ºãYbðhrdÖÄ¡w Gø_^ÚÚ)A¼B)ê“ÛÞ0ôÛ~VÆÅ:ËSå½¾ßd‹‚{òww¯Ÿõ1ïÿû/&þGeíÿ±šg}ÿÿC?úýÿóÌþYó¿RÙÚÞŽáÊëüo+yx¶Û÷ÿT³l¯%r³òV3žªu ˆ¸µ0.@2V°{.˜€«H±Z>” þìXÔ{R(Bý`ŽQý §èÝ1a:Â!‹÷FÃ= Hû¼èL—nå’_ƒz?A»Av½»p€Ã&w÷"·ò5H;R¹Œ|ò-¿…C ÷ˆEƒi؃ÖNÙ9ï><ʨG&Œ ßðøÞGØ6éÚ¹~„Æã%X¿ÿÓäáz:ö{Sò5Á+PŠ‹rÑgË Þ=&‰pt‘4¼Aø‰A¶(DWÅãÓÿúGôëAñ 9¶ ü X¡¦sÚ.àJ/?û׃GºÖÀÝ_ý~Ð ïðÞrìÉ_eÛŽÑ<Ñ6NÐõ%ð> Ñ—èó•k|ȲƇ¬ñ!k|ȲƇ¬ñ!Á¬>€H|ô1ÇŠb;-DÆ8“\Þ³L 6¨|¨ß É?ÑðüKà› ¤ Þ[Øš%.ZW$}ý) ü^vŽ=>Ÿt¼ß1àPBñÊf;‘Àe)ƒ€÷„yow³ið6Û››˜5ÏÜ 6&ûÅ»&Qõ=%ªátPD…´%vxç㥡W€Z‡ÆþÞÃÀ—ù±åhMÂGŽÊTöŠH檩6àåæ,·ñºŠzCh’4IêŠ$~2yÁxŒ,Þà}Äå{@“6.æuŽIÿäÏÃ|Ë,¸¥àÅ'Œ<ÆW< @^.0í ³ ™: šú<íYl(R‰¢ œ“CT5ÇT°$9¡ü6‹«CF›s ©¡¤sÈÜBj4èy„ÔÖ/Ì)UH ÙòšAH×X½¿?V/o€õžý@ õZgó?2£ö^ï¨bãöhÆ#/ÅÈÙ‚÷i“Ã\‰œYãüæÃù½kÁƒÓ? i°¿úA »~< xäÞÈ =³qV* D›Ø&ù“TaB˜Nž&¸¦e}dÞÜkð­øµ¿"'¶NóKI×Ò£—bWó4J½$&jò@ù”Nøß70P_=u‹!¾#áÐãNP‹iF@»XH¸©4Zb"%'«.–˦,2Á¦¢Ø\€ävº„.Œ)­ÏÆ”ª¸[ùM¨©Ó5Dt µdx ýž!¢¬‡óçø|£¶nVµi­Ga+Ê—óŠêw 0­¬`Z?Yi¾rãKí¾&}¢a0#›8¹ÑV+P»Ï±‘™þiËÿ8|žãšØ>uÚ jÇ«¥ÓÔ[UUÆ ÉÚWŒš:fE¬rXÕ‰!Aýqé>üM ʵþ·…¹®Ÿ„ÇÄÿ~}1øßÝuü¯Õ¯¶ß5è3üþ¹l¥Ø_//0c1üE;Ýøý8!Jc2æÛ*‘YC‡S ÃÚxEìxBõ‚@ã˜èHâ31"Ç©Aíå(^âÿO…ã° Àð°ã³7;ƒœ,N ‚“¯"pòF»‡×›™ÑÉH¯úf “½F гÄ!ë jH,'8|¤äT!E0X=™u°By&Õ?Dá°É UÞ5Ö;ôýàjIô35£ ”ñà­%€õ5¦¹|Æ`µ—ŽYyënŠ£û@ÜÞ—^æÅåÅ;°-©•4¡¤Øl ßkÙÇ[˜¡øWbKטâ5¦x)^cŠ×˜âdLñ™ 2¶÷l6¶×k¯‹mFñã@ÙaâL°žtQIåŠ^Ÿ¥ s¹ßOãêYÉ j6à\PQ{)iv./f¿£q€6øßóy]D‰ä¥ò÷Cµ¬©ÝØÄž‘Öä{·0>7¦É¾„mþep¾mðç ë¤Fàò û¶D«Y]Ö8Þ¼Hü*ÞÁ¦è ÔÎrqÔú†è¦±h`®„˜ K(oâø4Åa* ó5zYFl$´ÿ½ÀÛtˆˆÇ­_ð Äaèï/ôø;ÞçaÕå+µqâ "{þ%ÿš’©_8 ` †Z”æjj¬QáêÍï_Ã;ßP#éØë÷¸’Ã%AtÆVú…ðûSJ……HØ:â7ò%д¾ÿò ׆Î#ô%ìà ƒ‚ÐJxyÄé‹Y(] ƒàKžîñ{œUÞ_þ_…¿®ÿò6¼‚Y Ú«.¾N„¾#RÇÈûfž¾‚,æ3‘m±T Ù,Š» $¼ùW÷¯Ho•Ë:Þü^Pˆ· ˆÖ”‹èÚ²]®ÑÂä9ì´´.¢¬ÃbžpŸ¨h8tc•nþn„¢×{Óí ¨b‡1}‚)Uöæ+`*ÇèâÁ*¼Ê¦¸ÒÕyçL\xâ2"ÔÄî¤-B‚mÉÝÝ¿oxn³¿'Œl§£;c2'>è ã3~ÄO™IÔs3j1¬ÞòÁ Ëw(GL~}@kÃ¥ÊÌU‹Ø~ŒãÕ †QÞ±Å6Vÿ3„ãÊ9"~1ÁW•xÞ{,ü'Žh=mu`ƒ’|Ä‚´Ê¼?a{` ¼ÿ±-},ÞMƒã 1M¡‘¯/||Rò`Ý‚•혖7{Ä´•ªà!Ü¡­ô"õUS|G²f+¿<¥®RÎ#D°pb]ßeh)¼d¯&ÞÌ7æsnšjáƒÁ$æ—¤÷Kó~Juy2Ëa2Þ¸³8adùI™4”ËÔ“ü¤`E׋ |¢Àh‚'¸iÞ`„ëŸj–T Ͷä‰À8ÁjõU2No®DšZNæ¶¾¢28GÙZ[˜}!@€Æ÷V9EHARòÇ뤃‰*Õ¡RøƒýbL<©ñ_Ñ·oèé±Ñn/º„Ùþ3)È*'METž¸›½x7¶Lsv³-£ÇÜzÒüyv£r(^|™Íân™}QÐü T9 i3|8„سÅ~Ò”ãâ?ayŒ;gÌœ\cÒéjaÏ£ÞÅ]S 2nß(arb”˜‡cÅP“ÈêÃR.WÃüÂ}L–ºÚj5šïØi “n£Ó-x—UþR÷;qÜÖœœ×AX„ô9.E ±xÒuÍK¥Á?šµ´{7|¡sÊ/¾?‰{µ4»Ç§°L‡)dÚÓV³›~Ôj2:·$×#àM27%7î²EWL®;¦¿›³ËÁ 9¹¼k_ÎòyIf"Bûð"×í˜ØõÎûêé]ah€y|¿¡S OÈè q ŠVù OËø+žÎñWš/4·è5Ý£ßE?æð&y¢wJÌÛd†wJÌÙd–wÊ®] “wʾ]ÊôF9CèÐŒºZ&¯”˜c“àºËŸƒ¸ð;Åõ]^ GÕeËrQЇÙåM¢ÆÒYlÑ· üñ.½CV}ã›¨Ê bL³MÐSP6ý ¤Gè[T·MªVpÖt¯«d'Ÿyœ‹ «v½6+]Ø‘æjéÁÙc¾w‹ûÉ›^ ©î¸Ã&xÔÄ| ´w3ÆlOŸbŹ$&âjš¼kðöHZœJ¨öØÍOs!Bê±¹ü‡¼"»î¿»K­¦_‘Â¥s1þ—+¦Ýâ©~G1ÿ!Ö4I Ñâ©Í†a»¤·/[Ú'xqyá\Òùu<5Ø´ÏŒ_Ø5jí õxBÉÁ"‰ã Ý\$,¡Ü¤J².…R@íR^$©öW«òÓª›~Z öƪ[^ZO ð/oê H=Ó-I¢Mg¹b¡eÖkiñ=É.ç¸S·`‚Šy¦9rá‹"'@tÙö_¼Ônr¢HKðøQÑ"^£Ù˜Xz[qVG­·^Žu¿ø¼‚oZ<çxÕÅ þj»vxAº{~¡('ˆPD<§Ÿ+†¨''&Ìx\³6Ü~ixŒÍ^U8¸¸‹¾·ÝvÑŽ¡;ùþù3œàìú0´Ž)-Æü‰^»7Ñ.îI祬8¶K™UËlÙ ON1Ë‘ŸØL²úëÍÒËù©Ÿxå-¯é‘Ù;ö­§0¾MÒ£h;‡÷£îœ´»Íö…ÉÙÔ“C–vÑ%žñÉ»¯{âm§iæáÝZ^OVû%œš_gí#~ô€Â²Æ˜žn±&³ š¡k¯œ*Šú¾ñÊ9É&h®ÜÍÎ)O2üÆX½›ïOÄ7ðJlýƾ)#ÕKR&-r&¦¿å6J™k€)æ1'Ó"J®«pS½-Ðá¢Áq?ÕD ·šûÀ¬¡Pl'á}q÷!S7Ò§ilŽÆz÷‹à§z?xL§%ÁÏ" f ¾4D[Ý&^? þD’íÑbPÙòy186& µCðáêÐXóÊÉëZFsº«0)uºR@tèj qÉÓëäZ*´YkÐò~··ì:–•5Gãñгæ(æØª^™…C†">M@ñ·»(g£áGºU7ô¤Ìõß=5AÄv#3;†M3§Ìïs8òÆ7@jH!­C„ŒÚ"+Û‘Ãw6”µÂ½Šº_hM°Û` ÇŽÜ•´lšC©p[«Ä ¢&cÝÉ7‹ö¤òÈ$Â[²ƒ1žç¢£{˜@÷Ðmj‰Q=”T]¯ ¡|_=ÕÖ‹¦X/â39ƦD»^œYJA™¥½ˆ?ìŠÞàâ ÈG?Š–ÄùÄÇ¿-ãt(^‘¥‡E¥NŠÑ©VÒZ‡‘4Æ/‚”øhñDÐE8`gZÎæÍv†Ÿ~urw›ðZ‰J¥üZÁ¿Ëôa^ü¨Èï†Eúd¨õ™âytrá†NJ£s îNI› <ˆ^Y…± ¾z¡7¥,èø‰@ À x ê÷ ´H#CI¡BÉØc¡LE‹*¦ðú~ï6òªgïdi8Õì$ɾ/B'âé„LUþ9‡}Þà³¥ú' ”ëÑhàPhC|ý0À˜ŠÓIØ—Ï©8½±qsôG.>L0 QÖ§£/h®¤2£éttIM5b‡p*¸×ߟŽî…=@ãô oÔ£nÝ|ŒE2šÒ¤˜”ô™8µñéz3÷éã§Jä©-ΆÔtN¼iŠªRÙüt],ñŽè @Hüñà‘Fþ>€†p„ŸŒ ñÃð6pØ_°cüë!G3³2éX›Åª!þdŒ]Ȱú}¯¬â¨a8hÑQE˜¾WÕ .¦¼G¦ ù_î«Þ( QŒ‚0ŒEvæ_¢BPÕ ~„Ó>‡5sú%†F”§C°tXñr!žÂ‚*y2(Ø ëݨÞ`]b.¦?¦@ßß0VÑ iÄH™+¦ÙÓ@ ¾d&32H eŒÇ,L %Á=R’†ùÊÏÃü]‘†DÆ´sÒ„vÈR‚Håg.Ç\­¦ÈÑ4{bQàšóåŸ+›Cwí“ 7”´âž(64K²„Y*ø rÐ §ƒÇ_àã!âǵ˜¼/¡¶òÁ:ÂÁó§õÂjµ@F¸¯¢v—êï{°¨ðF!,ø‚ †hÆû®´ÖSÆzÚKEdz0®ètˆc\Ì@yoéFWWÒ¼M˜œ›ÑG`²ÖÄNãÅ6ºlˆ_WF“Z ¯‡÷ãÍâaž,e‡*ñÑOX¬Ä°›VMÛ\“<<7‹(ðÓUëa±ÉU4U­ÆGªÖíYµîmyG‘`ì)¡ÞÛ|ïÙ猪q3Ž´–i“ÍfúS“=òIÞÅzç td2x•ÏFˆ ÊlÆš·Xc°ÔÎ,gOÇ4ǤC,HŽAó–> ©|D2» }Ù›%…¯Sf|½ÏBJ‡ÆW©ÿÐëy]?ŠÏM㣧t]ŸäHf?¡ë¯3@¶…ùǵ¢Áûñ´x÷0˜†¸{_¡Â•´œyVv°â±„ê“I¸wœW(i7.ØêòdÕ‰¿kœ Ú´ÙeÐN1Ž+ŽÖÊE±â0f[QC˶-½œeËã‡ÔYÏÏ……°¼*ìyµL 1*jðç0ø:%M„ÔVX¸LžWËjÝn–…8»"hµ¾…÷ÎQ{QI9OɆuÕ¶‹Éù Ð.Ø{G̵L•=¬Ìê|û¼«úÒMê ,moXE kk¼ÈÖ¯]Ô“8CTøÓš10>ΩñgñÎ15XTQF”Äêsã”§d•¾Ó&‰»à‡ú 78¶ìÑ‚+me樌MºQ†Ÿ¼ª¬M16ÅDF.AUPKé»Ë!e¿*¬´"A0¬ÒåuòhÖúª8¥•p8¤·ÏE«6 Û ¢ñK¨ÆáÇÛi|ÀÉ—}Ëk‰¶š {F; u¿ ÏÅr@1`ÖrÄ¥¸P¾ló ùi;‘l6y†ýˆì® ÌÕäÖCA!e'î$ÌÏõ`Ôû4IRV na0J²Iû“ÚU~ù)ÌrqjÓµ~Ù ¨?žª+•’5nlÁB©*³T±H åíHÙ­vêKf¾å\0½YSÔ‹‰©˜¥,n$­sIj+_^ ¤5 B›—¾ú¦Ð ïg»qt¶”Ûâq’*l›tÕ»•íÞ:5Òñ-3æÅt^æ%ñ²;ò‚·þ1è‰<©Ì<3TöæÀ»àm{ cc!l*3Q•7Á.•ýŒh—#»]Ú™Ð5£/Y@™±5£Ì¦ÅL—^U% ›VƒæoŽDBͯµ,‰ï LÃ.85ND(¥_ã*§cY¶·³Fbñ›ýÁ¢]Ž&îxÔ0W—·ŸÅøú÷€°t-ÀJ­VœUðÉ0—r!|Ì¥¬zb•/ã²½·Æ¸$b\D$#Æ¥*Â[Û`ɦê—…,¢áÅOÏŠ`Sï XY3Ùñc¾ðüJ|%µò5zåÙÑ+Û•§ÁWò"¤Îêà+lÊ*²C¹K'7^pYlÛñ#á÷‹f¦¾®ÔY–Ôùz¤¯¶+€´8l‹æö‚bu6§Í¡b•Z e{û¥Z qd¦?+â»Ô>;¹´´ŠëZEfçÅXÉt•//pOQ~&dÕv–(í+«lï¾<°Êv’ˆzÔ.»½÷RÀ*J5½ž®¬¢Ÿ+ƒ«ìlý¨p•¤5kÿàU´ÕJ׿Z°„>5¿±ž+LÀ­lﯷ²ýze¸•í¸ï•ݘ7O­šÉÀ‰h_VD8B3Á„=^00Sì‚™3Åã5¥g2Òò#¢'½™'4SÑš Ž_«Bwø[«Ð±09™,ië9CÍ&ÐW)Tÿ±žvn–§»ÎØYÃ.ínͲ<ìF(¡¤€cQµYcLíÆ‘:vµ;—ç݉æŒC9Û÷•G‰/yK±C}ªYH¸EâQ¹šíR-Z4ޓѼŃc4ÓYÓãØ–ļˆ8Wž%*Þ3ŒH #±3 *ónºvo/eªá÷»† RDZjê{d^Šu~‰Ñ®b·¢]í&ÜdìÆq¨+ÄË]Ùp¹eå®l¬\„”‹*ŽÍLÇ ’“X¥ÿ&8=rYR¥ÏŒ‚sFkvî0R_ùo€{Ë¡ÁŸ%NßòdC>Nl¶— ø–ÿTüäç¾)¤§ {£f½É×¼©&çŸy£ÄH![ä¦ü,äê…yzM‡¿‰nf¿9Ø£"(å“ÑoòëèZ ª4ÖkêŒ*—‚y˳I&£2âä›[Åã´Ûº[ ÄæÉ· ŧ£ÞhÃDÔ[-À”ç@½1æ-¡3¸‹ïë—}ÝùÃËœùmeŽáÜ—®}ä® ïÆ 0ß/Î »VÎ;n…ÊóÝ •u»›Ý¤g„·í>Õÿ¹œŸïÚHx@ëÅL.dÛZL†í.콚pMêªHüYÌîí²éÎ,çÑŠ o» 9@£1=a™ô<ÊР­û]çÂï=É;´ÜK†ÙJ_¦–ħ;‡w )^©‹t4noË„¡Ì¾|º’Gíæ‰O½wÚËî½—ì §©ÝO@Äå?]O•æº0"N*®)°8©‹º9埀ŽÛÛ]:ÎRÿ*Rý›—¤D®·7»ÀÆ}ã-?'€N®iBO›?G²¨jÍVÊ,£VÁ½ôTË9'à˜nÏ\ãôvjŠ-à42šü0”a³ÔÞìÔ;ñö­ìp@ËOò !%O9+¤PØK·—fÃâå8id9;O.°E™v¡Ý4ôÃÞ›  ¼9ּ囿CP^ÒáK¬,sùEežœ··÷íÏYs.æ‘.ãGý‰þ’zÏqâÊ(P ÜZ¨ooÿ={Í«¤Ä;ˉM ¾Ëze³b%Á½×ßæ&wê‚­ {"ƒDO´Q¾IÛ(÷Sïs²Z˜Ÿ(¸¿5ßYà{Ÿ]˰lì»ûéÇõt á¾@`TÄí7žw1áð’À„Ž-6Á!&E‘7,áò½ý”Êß%ÊÕþö ¬O–Sû3Ï8û;sà|²ÖÚŸ ­ØßψñÙß͈ñYJ表/*—›èZfG& ;‹D¹Ò4p$fz²zÌæ½E‘Õ=ž‹¾ŽŸæ¾_f.|Áøä¯Ÿæõ­uVçuzƒ¥au^ï}K¬Î뙩^ï? «ó´CÀ“°: œ ’Ë¿N7Œ¾0 Îë×i÷o*k Î’£gÅæo‡ÓI9O½yç©Î,Bju~óR1:K?x½,€Ž[Ay³µ>‚} ÄΗ¹ÊfÎJ;oÊ/±óÆižÑɨóM%uÇL½ÔYb'aÞm/€o=ÝÒ,o\`Ž7éÇøtÏ›Ýoáy“rnÉ IAmÀ„‡E Þ©½ëtõbÿñõó·~þ½ßûôSéö'×?—nž£Ž­­­½îïíÒÏ­ ÿM¦õ+W¶*»;Û»{ðÅVy§²·ûoë9c?¨AS> ü‡IÊ{ðÚMw¸+žúù½<ÿÛÿõ¿ÿãýÇ?ŽýžwÒµ@<øÙ?þø¿ÿÿ?ð?þýÿe#YívÏůXâÿ…ÿÿoë•ÿ%úüÿìîJ¸9¥=øc8 ‡Á?þõp±üËîVùuåõ›Ý_:þ?YB‡×þˆùÿŒ³Öü/ï`ˆNkþoíî­çÿ*ží‹ÚùÉ( Ò@Ÿ;<©}(x§­“‚Ö‡šMµ†Ø0ü·Vãlˆ j¼ÉêY«þµ1ÔãÞžHcG±èµª§Õƒ#¯?6=àÄ÷rðÇ!EÛ¥ hQEóåpâùÞdt3ý‚1-Qtýžc>ÃÙ¾gš‹aø¹„ÊL7ƒÉ$ Ø EH}à›Ñxú^- ÁcAûv4ýþÈ«ClZ-ÛÕw^kÚ/•˜<íÑçàî¾®€ˆ+mªTò:=à½êøã#J2ðäÁ?«çÕƒnã=ŠÂ“%U'SƒZ;››ÝÍN{?¦ã!«†õÓZ§ûVÉfm ²YcÙ¬±lÖ”l¾$rsH¥)ÍÖ—a1-Øú ?éCjím¢Þ ÔË ¤]9)¤%PõCê¨Ahúû!ºZD»È¡EÉGW" ‘`hÊî•zbA–´â¨lz!Ýß÷¹p£D#¤W‚«NaªœÔG@ÞŸzP6j›Ø·f)¡ÏmÙç8ñ†£)ˆÑ ¨Þ¶´1«Ÿ&>JLéwºq@e$4¨‚x¯-% Tnjº`Nà$dìíͶ8Ñ`ê¢âèŒ5èc“‡hK“›‡ÍPý…_é…H4Ša!b_è´Þ­°3/ ‚ ž“ëT~·¨„‚œÂÓŸ_?³žî> 0½½ƒÅ °"RùØÅÄûoŠRy‰pÛxt€ö Ñ!'裘¹Ëƒ”«ÂtLè‡}’Y/¶‘1¿Xå§Vk]l{yì&.ŒeìTH=bÇ •» jA“¼ú™·l…ëpá¢ÑU+¬X@y“é‘˺è<6p¾90<ü GæclÎÅ/x`Ç:9m~[Æ£´[#L.ÂÇmíˆÛ:y×<¨¶ôÖRö‚]’~H>‹_6¤¬ëÎÇðf»Þ ߟ9Þ¯ G("o†=¾éKkX«S=–w7+hMÛøž¿N©¥óp-Œ'Z=B,UqËC?»çuüÙmœóÏsøþªq^kU5½‡©çe¯3…9¢Ì *! è<ýqQôîý±‡Nn“(í±Ä–z%ÍL°¾©«/N2¡^` h)ÄAnCòÏ·9¯Ô>é–r‚zéä¼dUÐ~…7ÅñÄ%bÕ’wtÕéqctz¢=­tz›^}ê¶ßß¶ß?ª¦؉¨qj+ßYÌ]|×.Žê5¹%Ý¥öã¥j\ª–RêM¼Ô,T涪A# œø®6Vй:˜`wðF©Ýp°®ªY®sÞ+68Á–ZIõž;¯ ÷ÙCØû$–_\Èa±„×ZŒg;=Œ )©P”?U›¥Å8š1|ÍNs7§d ¬ÑtVhûþš­ïQÌa/Ã}n2…}e£M@~]Òæj“?aÍDÝ ?Ï«l3ÂU¦¹lÏØþé²L GE®Qºùûôz´aÛ»zÉRO›¸OðñIïø×íW.a•½…å7G¯Z½zú¾õ£AæÕÅ;üVmБM°àõÐÞÊKIGjíô}‡¶“/´Dº™#ú‡4)B¬†¼šœSeÏÎ¥$¸(>ØvñÅó¬úô¡°¦§„¸ü!pæýÿY®¸ÿßÙ.¯ïÿVò¬ïÿèG¿ÿžÙ?kþW*˜KÊÆÿTÖó%Ïvûþ¿>' aÛ…Gß§áW5׸€gÆH ÆÏpÕ¦.úÅ;/JPXiÊNÀdHã[V0™±]ñ~0 ÇHŽd×qrpÒÜÑð_(ÍÒ¤*øŒ†Â´×¼;ÿЂ‰ðèÝ…¯»qÏ6/ÿ¦.1a0âÜ´÷£©h0 {%¯9õ¾„0HhĆ ÐëÝ’!‹Œü¾÷ñAd¿í‡Ù]Ðï÷š<\OÇpd. Í£Ý‚0x×áÐÇvè$  _IÒðá'ö;ÀypU<>-ð¯D¿ßlaeH?(V¨él0®ô‚ð³=x$K4¶è6øê÷ƒ^xm”¿Ê¶!£y¢mï>ùxŸ†£/(FÃÑp1J®"Éà‹ï"²Æˆ¬1"kŒÈ÷ˆñב5FD«ü»ÀˆÌ ùÞñ!<ÛræÄa"ó,‚èßZ.Ðáq#¶ÒD4FœÎnå 1¡xØñ¤…ª/‘Ì­šÁœ¦BÆÈ´>Q.xæÃõ ó’G’OðÞïXZ½¿½ÙN*qé.QöòÞî&ÞªU6Û››káü*^` áñ=5&«é\ÇçÀ_DLX²}š¨éx'Ó{ÀØ&‹' Ãj× Ú°¥tf7Ö{ä"Ì5m”àô$5û‰¶áfš$ B’º"‰Ÿ *d<Æ]!˜LÐ 34'áhË<às”$&}¡ï¼ óU­àaSJK\„¥‰"Qr›é¢+êþ…·™*½M]|E‹ߦK~ùÇ ¬“â,Û—$ÁT%¶Y"‚Øœ[u Ò 7·$Í0ÄfIÔ©Äå<«$(„2ƒ$®!skÈܪ!soÆÐÃ1† ‡13­?º ¨æO0¸Ñ´®qxýÀV¸ëGÑ’cüÉ{ëߢ9»Üûã) tãØ‡ @= {ÍÒ}ß>ô>¡ñ»S}&ôÞ©Bˆ¥z§Qdûsi?­žW†­êÛqÊIµÉ æfx*G^ „ŸŽG>Ëq÷f€’E}O'_Eàä ÈGoôÓÑÉ+ŽrölaÎ@6¤HÀ¸üèùCªA²fÞä>è…75;éOX:¿¨h  xÝ«h†Ã>9oLQ`¡u:߯–æt¦fT²Å.[_ãè? û%GSìJvënŠ£û@ÜøÁ—^fóåÅ;î¹R+iB%H±Ù*Ôé·°ôà_i-]ã‹×øâ5¾x/^ã‹×øâ5¾8 ¾øL˜ç{6çë ‹×Å¡”³‡I$c¼'·::P4ñ>\S5+TF ^X5ñÀ|ó«±'´Ið¯˜(ƒGï áJÂÙ|Ûl;KÁîži“zÑa9+Ù• 3¨ƒ`}6ÅŒ÷RÀ)d“졤w.f¿£q…ÉßÔ˜ò"ƒ æuçõ.µF(­Ï„Αºî{·¡¡Qc›…F£Ñ6øS—õYRWq­ýP‚í¬.k£Ð¼Hü*ÞÁ¦è <äâÀø ÍcS>“;P…-‚,ƒ÷Gü]WPù<$ç¶ÑK‚§Aûñß R o¢¹õ ~ Â,^ 胿ceV]¾R*ž¯³‚n`æså È]A;]ü—_¸6Î0B_Â>l80(ˆ …—Qàþõ „Ò…·|É{ÓŽ‡ßã¬òþòÿ*üuý—·áÌbÐ>P ðÝPº,»¦w?†c(ÎpžÒ‚,¼¤Úb)«²YlE$¼ùW÷¯è|$NtJ½ø½ o ­)ÑSAÎH}Ñ ñè½-LžÃ–Ck2Êz5éþV{¿á8‚I@¢w7ÂùÐë=`jFX}i@7ŒÙÃY§_Â;×ÂbŒo`‘Á#_0Ao¯²YoUþ™{ÕyµQ µùe/ßÓ[`€´åI¨09x Ùê÷­Omv1¦Ÿ“Ñ]’“È$†?…á?bƒ©¼è¹Ì  ;ߥaq®MGSàttrÑ—>Ûz°ÀqL …ÝymÎc^)ZJØ$úª)¾‚Ct³µv/Z»)á{áîEûQ0ÚE|+~F¦:\­ˆ%F©ßAëúYœÈ¢C´–Õ¢Þ¨üB‡’B¼®Œn ÓhÆi€þ3¢=mƒ¡:fguLX‚SÂÚ!a‡†'´%Ëé`¸  ÿ„':$T[­Fó{àÏn£ÓUî —Uþr†›ÂÉyÞN÷V(h uÍm¡Á?šµÿ윦ܞá ïO"7‡f÷ø„Âð»sÚjv“y/;¸õR]NÈÅá]ãør¦ÇC2ËÔ‡7¸ø=BìÍõÎûêiŠ#Dgìx={` Ï›íNó ª/Éä%¸S°´Goˆ[m<ËWXæã¯hÕð\‰¿Òü6‘¥E§ˆ h=ý.š9‡·Â½bÞ 3¼âÎ 3¼bî óy?ìÙÅ3y?¼Ž—ÊàýPÞŠ;Kq8Ëîþ`àv‘²t—ã ¥]æŠ./Ðè²Ïœ궠DÉYèBQÇà¨Of³võȪo×øFT üi^ UJ…ÜF Ðá .°‚ö,²{&YnÿíŽþî±ÁXÜEk[¥œÞ…Ý8®–ˆü8æI¶öÒ0¼4u @6×¶-Pin· óªNš*Ò)@ß2Iì.R·ÜHœî%ßÜCbðë °*ÓCAg9eÀIׯ§ˆ+_Âó o¶YeTL³¬æÒ/ŠHç‘áOž Ò¬ŠQ ä9oü(t¶hQ+f–ÞVÇ%c8f±*Ã\-‹• VMøË¹jJâÝó EÛ¯ØiªDbCT•œÃ†.ñŇõÛœágcŒÛÆûúJ蓎 ºSe3‰F¢0EÂø€?1h§;Õx3üjâŽ5±©à%{˜HqµÜJ¬z“ã×ÏòMâ'6¬æzÖ¶—°·ÖO¼ò–×ôÈÄûÖSxÊ&¹¹Ð¶ïGÝ9iw›í “1©s–v‘!Ûøä݉×=ñ¶·Rˆšº¹µœ IâK8 4'­Ú\èêÍ6Ъx¨¢¸*Ólgqh£Ã3.”5÷:ª¾o8R>9›Ë;¡y®à7Æggñ ¼K™ÝT§q¨o'b­S×âºá-FRz,ÏçIQž›ê}lwÉÍ»ŸÍ }ÝÐ`ݳB1Ahœ3ú’©zv7Òçkl²ÆzÇ«óS½¿<Âþ!tV¶,dE„ª0u†ˆ ©AÓ‘)çîÄ’mV†Ê–wÈ+ñcSKý:ër9¶&{š+àeN÷$@}“':dDK\ÿô:¹– -KÖ‚¤kßÛ[Ñ·šÊ`« h ‡ltÛ÷d4&;Æ]ŒÑð#]ð{}„Á%’ÀÖ݈­^Q€µ5Œ4pÁ‡ïsØ[ã µ¤Ö!úÿÚÃ$Û‘Ãw6ðC´Ü¨ûðÐñ…Ö» ž¾víÈAã³Ýš¦[Å/ˆšŒù–omAòsÏ{’ƒ1žç¢£{˜@÷Þ%Ãb*ÕCIÕõªXzÞWOµ9Òs$.½16%†âÌR;ô¬í[üá`Wôæar—ì-×øhwÖôóRÝb¯¾+·ØæÑý§ã—“ÿg§²öÿ[ɳöÿý¡ŸÈÿ÷¹fÿ¬ù¿³³»µóÿÝÞ_ÏÿU<<ÛMÿ_§}¯®Û÷àFª9”Ÿ´ô>?°s.3uÆÍ;çõ©Gž¸gs¦ï™í [®¬Ü\¾°Êå6j þšâö ÅgXÊ;CΫn“8!T ÓXøÐ.:u§·#þ|Þ…Ì*cŸ£Éßäls³ Í­Âÿg¨õgpõ$3¸—ÙÕ¤ϔԼ3§§û+rR|¸ï#”Ú—,¸*`±÷®6Ï–áûhy‡eðy´J<Õ׆6æãXÏDkõ>Žõ%z~çÁ£ú‹uìÏrì/×y°¿Q²Ù¯¼»œ…!¬òã/°žLƒ!NF ®é,™Éïþ‚ÍG‘XP\¬Êëãgˆ9ÈÎÆ !Ë:YêÚY¦efw)1ÄsW¢Gœó¤Ä¤¥ÓV6ŽL€˜ÃþÃX ª##æ3:fÖú],.O@¿w“„$i¨EÍEj.–cu'ŽIRýÆìkäB²qÁÜóå s6þ¢}/ k´üXúÎW>¨)º„æ×3ïÔp‰ÆÝ½†mÇ¢wõ‹N¡-¡¡a(èë$˜ºý;íuJ’C:g¦[7D×6DCÎì5Jï•EôU”}ÜÍ“J­Ú7Q/ }Ù@üÕ6C|¾¢‡ýgž`sàÏŸ/Žþ<0æãQ?¼ ù°Ñ ‡}ß;ònîüa΃×ò¯elŽŽÜl7»gFxô³”ƒ 1¦$#‡ªô/(½Í³j£ã3„Ñï‡)ÇC´¯—ùµ2€@ö?@Èì!}x„‡¨r £úqßÁ°ëð_á¹-¢ÒÆÞ¦ž§¡“ǧKÁ ·ªçF Ÿ¿?»ïÄOþ»Ó@äðùI7¥7ËWaL¾mùE±Ç† ä2Bü²ECÇ“¨ÒÝ:¾¨cgÅ»sÀ”AÌT¬d U²Â%ËâzKþžŠÀ~Éòx´s©¬:£Ö¢E΃‰œ1—Ëøj™T™.úÅíBTùNĪŒÒo·»M€yØe0+‰M‰âí þÉ'-«rK/Òîï^}-ÅY˜ÕöM¿>‚»+mÙq4­z®£Þ§ÉluÁÍ0%ÜmG ½UîÚÙØÎÞâûÁœœãx7nQuhPÎVà{¼“ßÝùŒ•é¨ mQÛsìþاÃJ¾•ææh=íó.Ï€¤S·^“T*™”¹È_7U¦Õc©;]µ&‘Î’oͯðxjmZÓ‚D”âêÔ~¶ؤSuŸ²¦üà  JÊÆA¢‚¥P=œ©†z N™õ4»ç uɳ4¦bY«>y¹ˆ\ÍÁ_µ-Xžõ,mxšm¹츆ƛ5:ÞLÑnñÑIœÇvñ0m„Ð L¬Æ‚ùT>“u‰Æræ¤Ñƒ ÌÑ``…ósS…UYL=˜S•å2soå\¤“ÄÙŒCÊÝQiuU »½Fy–v¶†«äš¦þ'P_ûŸýáÔÿ¨pèæÌq–μ/þÄQ.dCÚà‘—ãV„X#¶d¤l!Ò¨KfGy¥‘º2TäÛ[ÔóÒ^¥ëSu6a3M•PJ8ZIOEQü‚r?»zšTÑÝ ~˜ÜèÈ5†V±ÊÌ%Œ½äš˜¯âýD“7õuJ©WIV)eãk’ÏØŒ"¹|¥hŸIFs·‹H"½†8{òG8äËÞ@åøJìP)êê“ì\œoµUWNôÝ·ÃTÅio®AÖ;L½+[½|Ï2v7¡¯{ ŸÏ]½±î2ÇCLZýú"úV8Œ| ‚{ãül„áM_rä‰*QŸ”FÐL'ªøW0²ûñ‘MèÛ1¥TÚ;=?÷'lx„Ír˜8ìAƒ=Úã)tì5‰bÀóhjGÏ19þ›ÒÞ“?Jœ}Æ+P¸žPrß”"]~^'8N¿‰¹Í¥°;²ÿ'Ø¡{£ûÇt=5ÉŠiØéãn_ÿ?{ßúÔÆÑìýýüSÏûÁBH l'ÎãT‰‹YB$0ñ©S§„fc!ñèb›Sùãß¾Ì}fW+ÇÚÄ€´»síéééþu·rSi‹þKЋ© g.`7 ­/û*¼Z—Fãäcbaf`{µNÛA3+9›)3ÁW*9†U·F-:b{vS°Õù=wœØÝây¦jG7Q.ϲã"FÀ²S­,bÚ1Ñ­;ÕÍ•yçæ¥C¢Cmþ²w^ÌÄUà+ìÆ“´ót°ó,¢ê‰z`Yó“rÅ….d½rŸb2••¥+?bºˆÃ³iŒõö’,?R ±[nìÝíä\¹óûÆXš*Q5ÆC‰™ßÒ „F Rò0f ²r¦§Oüw¾É±ìw±èÈŠïnÊIUÛ]õ,9媺ØÝ«¼€%‡Ú뼺²ä<Ž%dzã,hÅ©úÇ6ã<1€Æ"Æ£Ew÷ç+C΢†œæºO ¹E!lèË=Ð+"`©ÜUg•VÉ#™p*¨«X’Ϭ8JúÙ’¸÷/Ââ>.ø¥²úE˜¹±DŸ¨†Mü³-8[l€¹©ZRv9ßÂj“Ž0ZYnV–u!ûŠè~Ó+Ó̓›n*/ÂtSùùIÚn*??¶2¼õϵÜT~Y‚éfýÓEé¯rÅ1ÝÄË ¨K3ݰ®&Ër£žp 7Ö{•_Rí6Õ͸ݦšÇÀ ¿Y¾Ý¦Z]ÀnSUÖˆjõ16Õ­ÅŒ6Õ­‡1ÚT·óm´É¦º}Ÿh†cSýwÍPÇÿê÷†ÿ[ouþw÷èä;õƒýå›ÿ¯Ry¹íÅÿ‚Ÿ«ø_r©ä96¿9iívð½öþn ÖP¿«;ûš ’îø63’\±]YA¹ÜÐ[²7ýóñ +^ýr^¼)l±NJ^´–&לඋGŒ*€[Ðý¶iª§ƒñþU'>ö§ü2¿§´fèÑNÌ—ÒùYèõBÕ/=@à†_š=A3:ø¹˜áá­7NÞªÅúÕ4_kQ4¯“¤§Þ,ˆŽÞŒåx¿9lû§°ÍÌeŽz˜wˆÿZ}YYñÿG¹Vñ_èK˶úç­ÿ­Õ­ª¿þá…ÕúŒ‹W»ÿõ ž¼;ǵVûX€¥O¶$jÍ£ß1ÛœKbg¿“aÚÍùuk£²¾^(TÊÂvURYŽÌôn6HúCÑì?ŽfJé’ÝUXbk7ãdre¥’§™mzrAk#quÒ#ÕÆÆòTã)ÒèÔ„ Ó„o%ýØDiÚB¡l \)®Ý]$m³ÿ¹?[b§Yk‹Aò©¯ »x(8~sD9ñº*~- qÓ#’qB°· J'ì\ŸÊåOV¨=þ»âÕkÑÜ\u‹5ø¯Øëâ¼?íwKüÌh¶Ø)Öüg¿`\~‚&oRÐŽ«Ë…vƒˆa#Ø•‡nX]©Û¡ŒiÔ='¨h¯;és€ñIh#å³=›dWNSCî(»Ä¥…“2à|…08Oam;ê5ʈÄöæb1v1Œ  gH¯Lnú=Œ‡pÏ>• ã»:0rw† ó^»Áùhæ¦#Œ`hÂÿ Ͼe"®úúWæ‘böÍžQƒ¥ Ì ãT¿›Šs²®H»6ÒÐä œØÈåiÀɰwesæqŒ¸aQ[¾¹•SËo˜¹ÅæëÅ-Û!YÂ"óÃÅšà•CŸt`]B‡K˜%8|#ïåîlNË™HÌçÝ xŒB{ž»f‚î#TÂ÷¨tÞÈպƭc|8Ð ¾x­f@“StAÚƒÓ s¯¥óÌ-†&&­F,ÙŽÑl‚d7œRäàÝeÀhï¶ÌßDSæ•_sÛÌ› SWÎʽÙÊ/»ô©ë¢Iy¯kÔœ/ 4èÖ0:Å8EðHKŒTJÀ `•º$8‡P¦VÕïx Å«\VnB»Ql]ÂѱKv jp-­ÈŽQr¾é€±Í½xHšó€…'˜l ã~_ô{@}×s ZH/QRE?Q˜ÌÎA¾ øã¸{½!(8Ü0Æ ý¡rÛƒe@!ÃÑœ3DùÏ ®~Ú)(úæ'±–oðPúÍ¢å”Q¤×¢ëÙržªñ’sñ Ì­Ž»–Z„,,Z땵Ÿª^0z#Ç*Þ-a§ )[2.µ‹þ¤G1>ÚØ2>H(8®97䌒Ka ¥¯h”\;,nÉ™{Ï(¹ÍÃ÷”›óðø ÖT£Ôª·÷0Öì!}“~Èâ| ­ãÃ÷5Œ‹+Zpêj¡±³iÔcEh]0Æ-GÅ,Q‚ÈøÕþó¸)÷¡j£­»küX;®£ƒÕž: VM%…^Õƒü>,¶ióí•¢ qÂ|Ê'}ˆ)‘‚0it]„«ºÛˆ[¶uìW§KaXÝ·Îâaey RÃÊž,VV6–‡"¥óšÄž«6=ÛÈ~þ¹ÿ<ìENÔYš“ôöýìΕ™©üÁfQK±¬`³nøÔÿØOá ÿ•(HV¤0´k4'Üó°¥È7×Öd{YÊjM í°µÐê'•Kÿk÷úfÐ_£Ý½g”>‘Z¡`FÄD¿å¨ÍÁÉÍesdsy«¡•A¹ÒUh—ÆûÈ÷ñ‰5m½´k J–9ÓÕÛ)Ó÷UXj2âÊÉkMü$|4é®ÊÌiíPr²öóÍ$)8ab„õK äÇŒ‹‹A}xÃ*s<‹Ë­ ÿªú¯õ?÷‡%ëNe/_j¸srp¸G @èX<ï·_Œu}€[8(qfæ¶ÙZ9¸ÈˆÍDø­ªW¨üºB_—qç4£ì»ȧ‚—«êåŠ;Ez½F­l~ˆ S3ã£È¦…’©7i"ô†›‡Ð (Ð%ê°‹á6Šœ´Ùšbh´âí„>ºÑ.ð%“íþ‰¦ z‰³KWƒqYå 7oJf \uôB+Š-tj=ѵV½Z[•õ»T,ãgeU‚’̤ {WtÚT?§fR˜{£d5§bÚLA8È×ÂÜÉ;Áo2ÁØãæ]YÀ îØ´ë´¬þ'8ŽÏz–qòp,ãäÛ³ŒVuþÌÎçÕ»Ô\¹Ó¨ÄIz‚rÚYYËãÁì>>¿XtvSYFõg·cô=g×ik®Ù2‹à˘éw%—`–ï&¹tVréÜWr9Y*â Š‡ÛHá~K]ªsk~&ä¶uðD6_+êuU¹7¯Ê$<¼êd©¼j1X¦p“›–Í©¬¶.î'ýølgÉÒO'k||¶Óªõ÷‰}X想™§þÇ<<™Ö,½ÜIZ.{¹ËT/õµØT?Ê1*kªsÊEî7>hÍÛõBøê’C¬ÿ{8ÍP¬ü%©†K ÞãÖsl¯'©õ¶wbr•ùUü­‘YýýtõÙX¸½ rÀ…h`±Óà7 ´zqŽ:6ùeTÿ i`A k繯ˆ•Eu÷Ô0-ƒêäX#棈u ügÁ#^#rÄSKá±™Ï=UQ߆ –É"ƒ¹,hÁc^Ã?æÝ“ î§²b:YŽÎʧ¹e+­bå/Ikµ$šfªj,rv\ªX•UócqµùZ  Ð`±Å֨ݓÉ-Q‡õMbù2V‚xpþ¶\‚¸§¸µlV ÞS¥µ,ª¡ý†Ì Z‘k-<æÁïA˜Î=5[ßvÆ—+a-4ãrÌ[˜«ÌÕo勪ôÆŠ ¶ŠòX—ÿãcòùABÜ!þÇöó­•ÿÿ£\«ø?ô¥ã<ØêŸ·þ«ÏŸo½ âÿ<_Åÿx”‹W»ÿãí~û”Ü­ãßÛ&ÎGý¨~ b~‚gøûŒÃ´fÈmº/êt}’^ ^´Œ£ãÃÎaçÏ£}q1N0ŠEZ|ãÉ…ÙXj‘7^Gª—6MÍM”œÏEÂnÄ*"à`ü™bÐE¦Ü~f^ôÌ€Í,š°¿-þ”NWgîUþ°L×6››ÙTùcŽ3ÚFÆÏ¸Lû"b4߇MIFó zjPçœYvJ&‡ ¡Á¾vp3ú¹Cñ9ø.Ì?ÐëO6œ¦±“mw õßpS p>'ÿ×·]~“¡h×[o}T¬gFîÅÐõ"‡*A‰¡É”Â|¦ Ð?ŠëKÑ/fì µr ÷>-.9>ä&Ìãp4¾&¯ÛsX{°/D<‘7= Ú#­`͉óþ`ôem½Jȧùjèö® •É€'âº?½]ˆ ÔÓ»â\.]¿J·c_x4ø¬|•ÐQ)ÚEvDGèŽÌ‘ºÐ©á?O¦˜íèã­Hȳ›r£`ùÁ0«hÝ!ŒÎ9AÌØ~ˆâUŒÄäº;ÀBC›Œ†ä”¨k\fƒ q/Ã)[10IKùŠ:JYnð/"]¤ 7x@2ÄaëõF³áÔij¼Æ°ÃäEÙ%Ïl‡z³¶ß:Õ¡^fS ‚ qrƒ÷†£/%ñ…ÚÓ|éÞBWÆ·Ñá7ú:Ü&…[¹¹æœh'zdVâ7ú%9GcÓ‰M„"qÁ|éS ½Wê¥ãÖñø·hÿqÜ)´ÖŠgð±XÃûGíâÎû=Y­NõΈ«Jü0 ø©7‰N¦*¼‡Ý£æ;fj vÉ’á%¦¸-eÌ"¬>LãÌd(‰³y¯¨Eh^©Å^áÈ$£±ó®Š`Þ…R¯^ÃÄ}¶3IÐevîãs¯Y;Øý½ðlŸï=[Sü¹;˜õÕl1s£á&w™|…×v¶6é»Qoâ»Ðñ›~Grp›(w,’Ž3‹>·.‰d£¿Q B“Ø%˜ Pßoèæ-+G’[¤rZ¥Â¬R»ró” *bãNÓΆ¬Ûj‹Hcžÿ¿]¶Z£åDpÿå¾Õõ//“^‚¤/qÈÁ Jè&]éWÝ §¹œÌz¸2.g˜{ƒs>™b äÐJ>‚8dHL˜Gg=û2šÀ ­BÞ9J wY»˜™ š@í¹Í­ÞŒû½„zínºeyƒn¾sã‘’ŠÓ!CtLt~’Ñx"š¬J7A„¦ÙÅ ËöQ±Y<ù•£5ÁÊŽ„?ªiÒzÃ=Í `•#ÎGÇ lâô°ÂlpI@†,£´#ËGñÊWt¨DÄHø‰5¿Ö›äó}{/Pôá¼-D:T5°¯ë™Ì¥'‰ïÈ è5}‰·b06=l{ý± ŸAû>I‚jâFøØ‘ a¼g™µŒÕÒnŠytÓˆÇ! µò]à KóIÑ~ߥʔÒþÔï8 g$ò‘`Œêq,Ãí,Žv6¸¤Ž”š©°@<”÷ƒ^Õ/u›•aµð*ûv¦ûv¶„¾mpIaßðCåcÆæ KûùµĦ TÌœ‡ôz5\8²„øÜ'>#ëoËØõÓ1-R'Fƒ¡jsÔ;“±‹‚µbw<®H¯°@Ô´pôu¯,ÅfdPŸÍØeÿ[l¾Jß„ðhCÖRŒ¬G½Kè¸nÁ åŠxÅï¢FöAPÅØ`óÙÈ(%1b‚°µToFŠce2¨' aZ«rZ0„ù}¡ãÌ•=À^g.pH'”KزJñ&äìCXýTã g\pxí¿‰pCLp¦ ¤¥EY`2Ñ*Q5Â}µ–ø,nø.i^Upe”.Û5ìáÚ°U¦øró7úv]´Š-k8Ðn6…³,©@‚y¡3˜o“;Ð*àÄ3Px°ö™i†J` œÚ2[*C¥4GQãÖhˆµ2ϺPS_Í?õÜ×ÚòúZËè«¡ÓÑÚ#u”i ©yâ‰x.ð›Í›§jv¤¹d`¾S£·ò6ºÖ"ð” }íZ‘¨¶½kma– ¾ªøñÏJ†ÀR:“ 2hÐ%¸¯NaáÉÕi $…XkTÊBTÅÓ†ã¶#Ê„ÄYE°€µÒ@‚A¨ vßÕâbë¾#ÄE¨ŽLè}‚.ºŸuqø‡”@£ØI¢oÕzÌ®XöëªgÇß'-PŠr"&@¨“Ë[kÅ‘m y^oŒ› n¨_ºE}>†ÎCb{ÍZ:Þã6,‘Z'ŸD»nøóy’ h²f)ŒfíL%£”̺›ÃûØz‘gÖz—¿ÈzW ÙHÉ8†;„›Cš×IÅ^'{‡z4¡ß_ú¤cFZiiãùž ý8‘NI…:vV³j’‰±²iruZƒŽÉGå[•’±!š#¦ZXǨîcÏÏ—M1ƒNÙ†DÚN$i5ÇV$æñ;åÓ"àz"–L5÷‡½X&û98 ÈÅåpsÑ•ûŽ´Ûš2XJìGú3Ÿaêy g%m}ë9ÇÓ#®¹“µ@ýÕîN’µêD~ö,î̡Ž™t|Ž•2‡O‹e°j‘“[sø-γ³§õΜ[Ü›y‹\ü[¨E_ÝÌ¢§e0òèh—T¹q^.4§¢9°¿·ùzÕMÃLßm9¼ÞߺS†8Ý º=€é.¨o LÎû½.Z+$jDaRµ0iHe›Ñ÷• ûˆë¡1À¸ý™ûSÚŒUÜÔÝËA÷#apÆh<p2[ÎÏÉ‚F‘£©TR›aYµskÓ½íÈð´iç*Ï9-³QçªG¬öc_­°{4ï$Åßje-io¿Ð–7ÖaɾÄèù.v4[´èìrçð9æ:æD¬Û’µ‡¹Í“Œ+ÆÝ¼–§¹° ÒÄŒÇwáÄbùÜU<ÿí+ü÷£\+ÿúÒþ¶úç­ÿJ¥²õ"ðÿØz¾Zÿqñjwü?Ž@¼Pi:p?Rd •Ä1ÜßS¢}}ŽHÜçcåâq0ºòåˆÑØ(à´ª¨TÐ’-~u3ð\¼éŸ‹Í-8´¾ûݤåÈt‰$a¥¬«jVÒ iÝJÄðjf?bồ‰¤ŸyÞ"GÛ9dŸ¤eÑŸL“ë®rú@ÁÛÝ9= /R[KH!ÑÏ á©×ðQí!¢2e!= *¨¬˜M'€¢ä¤¸W<ÁÔŽ£1}nÂç&~Öè ^·@~Vàß¡n;ÅŠl-N2å5I=mP›AýÞ°ìLJ%3©kÈ[‡$µ@h ßÚ¡‚ûº¨*&…08˜/‘ˆG»W” O†{l¦=M§è45‚ÿoã‘xmeÔsµí¡]›,;-²¾Ù¸-5Ït©‹5´°lJbÅs”»f2úùçZg ¬†À²¨ã÷× a¦Áî¾/E¦vŸàó#9 Aÿ+NŸ«›Úšõý]§÷IqV’½³¡ÅŒÝ~Zñv ¹hÿÆõeœL§ý!rFI«@¥„y¾³±4@Ú…@ßg=åÆYkpÐrµAÐJ»Ã¶’Ç1‰ ‘"ÔMf0­º9™vÁ’Ú:ºÁN{ØP¡"±`ƒíÀ65¶ezcèuI×d7êÜn’U·ÿrFÝÊ&¡VØ"ë!;,‰Í\Œ'½>×OËTÖûáõòâWNü’œ W”Ø úà†)§W#TƸî3uÇÄv´±Ã,¾vªD™Ä­â û“Q/!š¥rÞû‘z¬.´T>¨(~Ê=ÑŠzÄ#w¿ˆ.6¸¤ßH…ÆDha©|n9‘_¶Š÷¶J9ƒww³”SL$Ú Öàã–ÕÕuNü«Hìø]^–£1¬°v4Î^÷/Ò –Bfö‹„ÃDØðeŠ`ñmíi¨G›;Á² 9qîkM{_ku>dÈ™2$,9ç×[{ûô³S;¡ßïIŒoC‘Y¶6а°SÛ:9PA¨¸ãƒ:z5ÕÞðïúÛƒ¬Ìíƒ&°\cÛœˆí£t[SòÏh]n#ÝáÑÛÎ1é áÒV·‡¿;ûóoE¤ÚîÀ°xÄ~&‡ hËØüø\ ЉtâÆmPFÀ‚|yãðxÃ{¿ÅÀÜ&@Y^hxt w­‹%#¯ýp޽qËv|£Âmѽ&ûм—+ʃ›#cAS$Ø–nŠœªÁ{¨4ò=eA)÷¨à:½áKŠÝñm4¶D†þÙÁ3_c‡–`æï­àšt=£=KÚ [lV§îÔ¬ ± ’´ÀWÇ&Šª{qñÓdv>w{Ó]Ñàw5Â/ɰ‹í°‹€xe C^Ò»ª 1H8!‘Ø¥x÷åàôçŸæÏÝò/›X–‚_”«Ôtè £Òë'Ÿ»çƒ[²`‹®ú_»ý^rfº±Pª¶a9NódÛJjúK_|޾àÔGÃn`…XáV¸n`…ˆtá»Æ ,’çkÎeÏ9ÅŒ2 gžI¸«¬I늚ðŸ J,uªT¾·Ù˜2p² göZâß4ŒîÅõ\ÃQ27NqJàïJúܳ¼.~òRÞ®[iïŸæx)PWØù‹b‹‚c«φê¹"4JÒí MLÊÇC¢$Èv» XPÙÞ› ¬˜rö0m¤^•T%¿¦Mþ³%›&}µqtev3⟸m'n‘>÷gmU$Ùq°Aqƫؾ­jØixܼ9|âÝo2ãsÛ?U¬€À ü§ùÊ0"c¥Äe¯åXõìuQ·†lÐÝF=¶2X”e↑S EÖ”smDˆ;åý- Òç´B|"­/L¥ŽT!ù‹S©Ó‡¤¡R_¢p×@^*uˆSl*ý¶AVè®GAwÅÒâÈ*ï‚ïjþq²üg)/Î+áE‹¡Zé »fS©–๠uÐ ¶ "ì ¶·ûA„ÉA$r%'b–÷ÿØ(Kt”Ü"ù›„ì‘ dQ ½lç~Ä´/„ä.ö¿¿ úÜ–k-Œà¾ªÃ‘•§‚:Ó[lXõêòAþg©g8on:÷è–ŸifŽ«·ƒ¡ð‰A&¼ìM¦‘º.°¾x‰•4pÅ}a‡{óa‡ºñV®0Š+Œâ £¸Â(>F‘d¬£h+H‘ZÄ3´ÇDÏ„+TR;˜Fï°Žk0&™âáÏðûh6é£V“ÌÝá‡Wf÷oÆpnÊyµ£oŽl*Mÿ.«§×mB×µïíš vó ”L9¨óG8àUMÃ^`E¿ÝZ&Þ’¡œƒ²4M³×+xÔ2y ŒÈÒS%˜ TäÞ ùC].þóë“Á¾\Åÿyœk…ÿü¡/ÿù0«ÞúßB´g€ÿ|±Zÿrñj÷ñŸgJÓvŒ н³Ùiþ¡v~×O2ô»µvç:ˆÅ’¿ÞÔ ˜ô"VQ‘µf'Ã2Ð,Iô(LOÁAv¢9m<Ï÷E—âß)×ÃÒ¦gi:)ëáAëA¡¦bß”þ“UN¯;D«nÞ„Ò!Ü¢(¡t]Öœ`¥êèk‰å¨´Ýãì „aµ;õý`#‰†s5£%ãyÛ.”@²0¦—£Ù0€FžF^h¾«îà²<ºéK#%Ü ÷Ó“ÿ‰à:2+©C%”þ¯Y&d0¥W°ÔðSjKW¸Ð.t… ýQp¡§Mw…Å{œžÌF]0ÂÄ5_+œ¦\œ×È927 ²8¸B[QwÜ»’…ìíÛüoh”ƒi9 JSfÞÄ›q]3TP¯ËS©Ÿ¤Þ ;X—T[^!Á®¹ºZº&×À÷ÑšCRÕGüÛæÆT½/MKÄ Í»DVAûñç þl‘ñR›¿â 4Nb5à›|Yà"Cuª†ŠÅ­üÙdºç”œµ/ÁIÓÑ–+Ô¢ÅW 0/׆¬‡üÊqÃÍc$"÷zý™ FpÈÕ‚OñY+5Œã aNjm¥ÿÝ-;)ÌЗä¸*L â²àa$88ï3QÆÀ”r\ÖÉî…÷5+þîþ]úûüo±&Jîkœ¦ŸM&rb‹›ÉTK„%‹…‡t[œ–šføH*u±àâß¿0@y‘™‹¸¶_­qÃÝG¸›Jîå¬Ð[æ¶HëÀ²SL4Ö ûC'à¹á‚èõfcRCóŒêáp–OŸRýN¿Àšãw 퓃€ÓŸ %CT‹Òù¬ý „sDnI´–)¨~éäüÑH=Boã¡ä·Í¯mv„¢4“ѵ³˜@¹ƒùÁtÅý)½/{ãò9§¡Þ€µû}ñ/–Vñý6ò ʦLiN¥˜{)v̰à|õú΀QÞ²öªCý{2à1Â1sƼw[ú¥’ꃘ2ð.bIY߯Ÿ°=ÀFúâÿmÉFÈg³ðƒÈ!¦£)´Ó¤€²‹Ÿøp¶boþŒYœ ŽŠ‚ ÜCõ­º¼rn½¹^y8ˆè‰mùžŒÈ?X[Ì!ÂL¤¼8 |¤Ë„ï1‘é&‘.^àªLÏ·Â-C»YÜË·ضýÊ%åY³¢rŒh§¸v8$ýZ»’’*ݶéô†ŽT ,é«8»UÈn侎„B ˆ;:‰˜wp!ò9øþ˜áÒ@@˜;Žz«qÓŠ4=H?Su°‹‰õ¼ãÇ_եĺþWtÄä=zzàôŸÛ‹‘CöÿüLR•NŒHr wã–õä]_r­ÙŸï˜þí¹yÉB„¼4‡ÊϬӀSUŽêHÚ1 ÛûM ÉÖY-ñ“8’ÿ„é1DoÏ]\cš¯Ô7O˜gJ‰C×áwæ &òd¬‡Ód¥ÅÎ’|Oô¥­5›ûõ· -Çßýv§$Nkü­ Kè©÷æåúó”îY ö}þUßÉ6ìÕÛGüàûÃtð{½spTÉ(ç]I¼ƒ­öQ³ÞÉÖŽ7›¥œøôê$–ƒÑv0ªØ88u“Î=¦tÿ§aâwþ,™`©éùTÄŽ`|·]u¯ýMUKƒÔÓÌòÄ~Cp=/Eó„´ÿ JA=Âë2|Ä*…røHýÛÄu•¢eëéoÙÌôà}åßLAùŸ,†òPûsPþÛÖóÖ]xQö1צb­}§'Ñ?m†­ôÁÿvËôÀE+€ÍÌ8À¨!)m`d°Ýê~vn˜O°LX„U)BŽ8|ÿ–² ýÅ-4 —Ï×™êá׳Â]M¯Ûn¥wÉŸ-=6ï·2ïƒ's3²ì‚);Ü+ÒñóQ¿S"=ù¬!ñ·ûú»8¡„gÖ-æ‘XÁûx?­]ã¯A§üÿ䊙qÞÓ @õ³d…3JZ<‹tSXæ)=}Ú´¾9AüéI”ùòãVj]ý‚õC) º)¬¼b^ jdhRyws7ïE*%ïž©hÀË"ÿVÜŠiy¹>ì$ayMìÇ÷xè })l€þ^> `ßs,öSàöó<0Pßç'ð|¬À&¨í‰ØR´E¹N8fË”¤±¨6†6&R.ÊBв…V«1JÕ8¾•‡3ðx@…qÛxSƒå¢eú7¢À[[¸Â&Ó;¯X[àS+BmªèÎñ‰.9…¢Lá{{ÅÔÞWkB¦å^‹¯6<(YIŽÕüV¼ÀÇ’À$…±·†ãó8ǙįÃ;¸®Îü·íf:¤„)""',+0·È›{©]Nï½·Ö†t[عσ<àªäÕIÆ¡­—S–Ëî¸y¶å$å¦2ÛEF$çÎs]ÝÌ(Ô=€z|ú±râ±|Âv>0”/ #=š0mR¸.8ñAª+Ôî<‹Šúþþ³èÊ'½•Ëþëí#^žxÇaõõ÷‡òNû(döØ7}N§z‰Ê”¶HCq•r*“݇»áAIí…”{¹®ŸÇ–(§lðZ.ÿ.ëè­!ñùS¡‡Až0çô%Þ‡\ÝXÐE,èÁ™…·“ÂU»A·À 5‚F¤ªL "n:¤­ ]ç·r|"™èÓýä¾?¹ê¦Ï•–•œàÀâ>›œ@Ž/]¡í%²M[ŽÓ¨ÿº.<6~$ó¬,ÁÇÓšþÇìÛ›âïnÇðE‹áò…jiøÛï¼ÍŠÚ‚¢°¬wèZ²‡ÓjGŸYÕߵdÝïÞEnXMðÛàLÇ–ÚÆ4µÝÎ!UÄ•6òY“Ã%Öëeˤ|à 420BÄJÊ}—Rî;z›’]ê;UjìQI”ïQ7Ò*IµF]J4üé]LšÖâÉ){°´81OÖ"Ãež|—Þ%Ý9_mÓÜ{l"*³×éÕöÿü8™>ÿÏ«øÿs­ü?èËø>Ôꟷþ+Ï«›•Àÿóùæjý?ÆÅ«Ýõÿ|ÛîÀ¦ÝùóÈ÷üÜ9JKâqÅÜÚ¨ \ ËýËdˆ1ì14HþORa>Ïýk,N¬h»À\x„-Á‘—R^¸>“dvÉ]æó ‚%dIH7µâWø~н>¿èwŠ_ oOZèˆ/S2ü\8);kÅZ‘þ^C}3þÕT_5ñvPoŸÛŠT¾cWÿU(Þ):­úZJmÐ <‰ ¢@±ð>*TÙ4¯ºŸûâ¼ߌûŸ“ÑlBy3ðlG# çg, xÂE`!tì?:ê¿ÉáïÉ=Ì„|°¿Rþ¹‡Ðs<ä4Ådt|™î4ð;‚ =ùÑ×ëŽÆpqoÉÜðÔÜ×¹W\ë\9Y~s'Ë»øX `øKKn7œx÷š<º®\>Ñ®„;ÎÜßcÒ;ì…Ô•ž.LÓâr<ºæœ?W£AòÉ0 Ææ£'ŒãçäN“ßèþtt”6³úæâo é=lÁÆþ{­©4QH¯âå‡ ßûüÞÞ“££,T."aQCT¡Ÿð©ÿWðýldHøt­Ïïà_;ø×n.¹(^´vFxQ=8¥_ÇUøÕáO£öi†…- ºdhíÞa'½ P‹ÅZr©g8£¹6`O ýhkÓQ6°qôùmgckA8'×f§…V^r å((0:Üüè<¼R< òŽëܺ›*]y¾c'ãwïÈ.`û@ãnY¨à.DÂfá/øÓÓu“ZÞÕä³aø]Šaø]…Ôïn„G«,ºõ.tÔUÝ™†;º&‰Êk)\;TžMb ~VeãÒÖTÔÁ,ÏД5Îྣjúúçƒô4®øVÀš]Ñ;”‰SóéW¿MFž{WE6#ª„MFÄ33_¬ÉA_]}(#3‘Õì6êg4T¡·vØöR Œ(úI2‘¥sì\¥¯çØÀ $NΟJŸ9Z¯”àŸOÒF€ÝCh¤4Uöß[ù¹,8|i@Á'7**l(ñBk^ KðÏo ε¼Ñgj‡îî¤Ü•ïÂÏŸðI?¹º\~,f¤i(ørŠ…Æ‰ Znh"Ã=™K_O#3|qNe”9Š‘úuñ¸+Ëâw;%ÙßuE€9ª‘‹î¸ªÑ>X–ZtviY«  960u®÷W:o[¸àãÛ–YçðglÛÖVÖW+<ضx$ðV#sÑG¶¨BåÕ§ü[ò¢WÔr‹ZåJ®ý¬‘ºÉà N[À6ýSMšþÝ4g¯4˶!·1çE·È잤Urß6ÿãÁÔœ/k{5L·h8sˆ-Ðïdl‹¤¢C}—/Ú½cÑ®ò.e7üËî`7ü+Ü Id vÃí,ψx¸¾‹ï†sä¹ÈY#Ô8%,&íYSÜ¡ö²|Ó*+éè]Ž-aÇ~0›8¨`#{Í}ÉZÀôª¦zc©fÏÕHëÕyµ:lÀÍÅdV¨Æ½¤G:Z'Ëüм±w±?¤¢-àÄõã¢-žÞåà?>?Œøø­Í­•ý÷Q®þㇾ,üÇ­þ¹øíçÕþú¯l®ðrñj÷ð§þÁ-Äç*r,¿{Éö{è§y_2~$œ;]è¼SÔî·§&h7ú÷xq-ØÝ~$,ÇÄí¶*‹ ZQ©ŸÈŽIæöâ××x¬î¿Ú±¾ÃoFcÆ‚XßÒ`ÿŽa ¥ŸÎz2/² @ªÛb[‚¥ í¨åBЃî`2Âp ÅTí_ø£M¡È™‹Ya_¦·7}ÕØÑàsÿ±»`D"sì1ò !ôÌŽû”÷ÌÖ+ƒ¦±ŸÁ§žH¤ò{ÁUødoBî¨Ý)o>A€I c®úäQC|sXìáT£>RŽÓñèVÓÏÎSíÜc:wrLçNÞé܉LçÎBÓ¹“:; Mgˆ×a,`Û±‹p<;P«â'Æ«• „e:ÅhXÏÎÃE{}Ø ¯ rüà+•~Œ¼XŽÎFÁÔxsÈW…âL¡9|ʼn©Bõ8K;El`ݧ.õì–| í®;küìcâ[ßyTÐ-Ýó[CËL)­’oóÎ (CêR÷Þè¢ÿÊÛA1:³ê’߃[þ꽫ˆææ²¬C”Øé TÄvGÑá6þ¾ß$À­"|øÁ5£¦[m „öÏÄž%øc¨Ck²Š·ã:E„­fI&!6¯9&Ç Aâ Еـ;%Ã¥úSüÆ‹Ž\ÙÒÍB+¾ Ì¯¢®?TäÐÁ~suvŽk-K* lí×ß.<—[ ^œ\.%ixð ‚YˆÀGˆæ˜Ìˈ¸4¨ÞÝ#9¦^”à¿0Öb3»¼ûÄV\(Î_Jy*á½€„§béaþæ„öãRÞ Sîf¶ I²)‘V†\ÇòêÊÓu9j-`çøg¾¾vöÝ(,Ç +‰ºb)üÖçsOsߨ?-Ä4™aRÂ9I,Ñ|Î&ÐïàÉ`ÿÉÇY–ì’™£ÅXcA+"ÒäÓa0 ‹j1ø\x0kº¯Ób°þe)°\‰â<µÃ¯*m$„Ñ[å't²V¼apÀE½hbiÕ¹Äç°ŸíxϺx]¾\ø+ne^i!–‹Ê÷ ìLd&‚BºÚS(»z©´ZfB¨ªYÛJŸ5_øØ5ybèðwçiñ‡:kZü)L™–j®i9Xö´äÇåC5œ~§ ×þñdâ?l¿\ÙÿåZÙÿè˶ÿ?Ìꟷþ«ÕíçÁú¯n­Öÿ£\¼Ú}ûÿÞÒ¢éäûnÖ=I»¸Â¨ëÑqj2ä-ˆU°HzïÇ„ìeb XEýı6’€Ìvw¸H,(®:­g…PM¦¶×ÞE‚+ í†ÿ™áÒ|„ƒïôJe¦ìPúßôÇÄu÷”«êV\'ƒ îÓ +»çÀ °”ËÁˆDÞŒ’ᚃ¯ö§IŽ»SÎt‰¦¼BFâ—9&»â#È4dpŸr¦´‹Ÿ&³s8+õ`DP«Œúg qçul‡]´À+¾¿JzWB•!É'FÌïâb9+ƒ¤?ÿ4î–Ù,ɨ!øE¹JMgÕ3ŒJ¯Ÿ|îžSÄ`"Т«þ×îE¿—`®@h£úSµ Ëqš'ÛVçðÍ—>%†Còކ+€ˆ*dYE Ya@Vd…‘•¯0 ß dÆ„)Í*%:ج¼) ÏD‡8aªü䨑qÿ?3ÊtB¥¨ÑQéf³G'eTdAÎÔ´Q) ÷âzpôÒ§’¡â7|[?_-ù¼ÍXGߨ[zQlqºb±êq(€EC²¤ž®Ð“"Pœ¿¥F~åÁã#¼]JX˜¬¡7£´ÏîO`aèt¶T6•N”v4Œ ãZó;‚’Ê&Vî]Ü€·H§ Uº.¿A`q®1YÕGl߀2bƒ|˃À¼ž%.:Ÿ@çYåÀFaâ*ÈNüÓü|Ã’vëy‰·žM½u›|eƒîF¾õý²ìÍ #§ÈYÖ”JÁ‚Ôol->':ö ±¾0%Ú%(½Òâ”è´Ã!›E(Ñ.%¤ó¼”è $Ê”øÄq{÷…Äí=ALœ_€‰kÅ0q­÷f6Æ,>b¯?U¹¾¢€·.&I†¡(6NÎg¬:WîAwüI¼é^¡Êv¯ÓO‰ ¡]Ì›½êM,mnîÎzŸPÁÛ®}Û(€÷Jaÿס¬@Õͽõû†ükþq²ügiih@`8”¹É¿¾cpàÞÂèÀE“Gïí`þqØÖŸ ÒЦŠ*ÆÒîþe‰'’³‚&~Shbƒ85õq ³ FÓíðÊ ÂÇ4Ão£I|S³ÚEK .¸¯êðŽÎs1LQJ›­"«^mórÖ±¹‰SèPÖð9÷êÞÍ7j‰ÀÌqåv´K^G±”SŠà½ñåëºÄúŠÜJéæýW¿=Ý›hÕ=ˆ·ò)À_Vø×}4èçÀ:Æz3ææòì÷òK¹)b˜Gº— 'Þ Â’ÅÂCº-NKM³¼&QhXpñïÎßF2šM˜Q¢'ÜÍ Ûë—ÂÖà ²5•2BßÕŠ´±sR”#ÀÞsõ)ï8Òz wæÎc‚ûáKÁÍÄõ×C¯7ÃìnyBõh8«§?¥Ê¾À’ãÝiëì˜ {ý ðÎ Q-î5k»¿žµŸÁq1rA¼:ö@é%L”œñ,ýÛf‰—6û5ÂdLátpí¬eç<äc azÆ·Ø`z_öÆesNCå€È{Y8P\kÓÑFz8»>gÑÏf!,Õ àÀ#ˆQø·Ö| !VÂ^æV]Þñ¹Þ\¯,Í£6Dv¶°öE†â¬§tëàýL0ñ(/öu8XKsF™ã§}'îÀbwž¥Ú?Ø…Øc1O¯FjølúsÅÿšûþÖÆÍˆHZÙãú¢vËP’Ù«Œ…ãGƒzˆQ/!4•ó¾¬mø„ûÍo¼éA4³Õ)OlŒ²ûv§ö Dæ‡Ù)AÖ§Ö~†T%Çܪˆ—›'ÃéU3i·*±Òt!®ÍßÕû|ôî?×3¶Of”½ e¾)B•áKEÙšØ`  b웞¤ýáW‡3(á®ÿÝ«y§F8¯'³ãº@7ç!{u&Y» cnIƒÜZ¹q=y/§\Lägé6ð0Ér-ynÞÃ)á>Ç_/?DZ õNT9.NÚ8ào²I‚å{„¬²åùÁ˜C_€¹.q\cš[ÜS÷Ÿ8»¯ÿÄÙ"þ΀GÆšVO2¶•¯áeÔQ´~ÙÅ(àä„EêOÛﻺK5móö®›Aönƒ°o•æ`ìÏ Üä…0ö@›cOvf„I¨„ÎOn'Ó>!N$q-¤Ü”õÔ Î3ÄÖr…+5 E«|~[nY¸ÃÀ" làH;géŽæ ~Æ_‡ÐÝpZÎv±îšw3¥C¦Òômëz2ízë­…"”Û¤ÏÈWÍ€öp EšöÇ]jïÛKÊX<½öú36ÅB­ðùb†ÆR3|dQ¦ç«ÄËR i ‹A¬P2½Xâ¼?}YÛ`ÜKŸ­ÓÝÞ•2wc×úÓ«Ñ…˜@=½+Æ¡uidü*ÝŽ9jˆ"Û]¢]”ö›#‰A8ÇÞ}I†Cü<™"ôçã­´ÏRÀ7,?fqÓŒMÉ#ä1Pšý¢œF#ÆÝÁ"C œŒ†¤ ×µN®È,4írœp, kÆÉÇ«iùŠ:š\HìØd"‘´77}ÛŽŒJüF¿d$B  CFãÇóqúŸ½ò¸u| þ-Úw ­µâ|,ÖðâÑvÞïÉ’hñªwF\•ž™!& ól<&:áæ†jHtÌ=옩Ú%kH†Än„Û¸Ókür6ïµÍ+µØ+£léhì¼ërF1$`ÿf’  ËÚF|~+6lŸï=[SÌz@9[Ìßh¸‰Ã]&_ÙÖ»µI·*œlßE P¿‡#9¸ÍáO³ÛÎí¡ßXÌÂ’¿£”D²Ñß(Ie¡ñ“°KPSäûIÐF±HåÄ*„avåæ)‰¼ñP¨­P§ˆZ/âô¨É=²‹Q˜"Ù#Ûí!«Gyš3§Gy%Ö#BUÚèNpÕÀVÔZ8¬zâÂ+ ÆâD€rXöo÷76K¥ íÞ8!7I)YHlGÍÃëΆ½+tô» ö\Œf¸íjس'Jè–åi &ç4Æ›WéäÎÚ0jŽFM;aÐre[ÍZ°wE°Õ6¸¤™¶ã0„œÐÖò•5¿F,ö8˜áHªS;KèÔΗvJ©·ìž…½ ¢Ö›.j‰ZöíL÷íl };Ûà’–%lŦ BTüApØð ûn 8ÂõílGˆt´Lñ £jsÔË'‡i7«Û:†yK1©a ©i!8·_–ùÉ3xÈ0|©œ±p¥€è¯Ö$Oý.V®à*õÈeÝàXFÇHà²6ãsã”›+AD¶–ê-ãÀH±Ì®Õ°7ó &핫Ђ!ÌÏè‹Bg›“!( |ˆÇ&t™(Å›³aõ[P=Ž/‚ŽaMÀ‰ºsü&òXåA\áÞž¨îå´ÏC[›. Ý(uLpÆá·ÌÉWÛž³ë…øÁc+L»‘Úì Ÿ$àÔŒZRZOY`ÎŽ­fEkFÔ4,°ñŽü5Í—»lâhKKòñÎUæÂéâ÷úC`¹tXc,t3¸wXïï+kf4 ´|æ`£s|²¿á`ÒB5¡#Ò¶I«9ö1•‰(COYlí8ìÅr9›˜›ÈÅßd𢋮ÜE¤¡Ú”Á’_?Òþù¼PÏK8 iëYÏ1O©pbZÞ‚ôW·;)Ö*ù9¯¸3ó>ÿ½7ó1þ+–Á‚EN.L‹þ·8/Ξ¾;sdqo¦,rñe¡su3‹n–Á ££]RåÆy´ÐˆæÀþÞæ×ì—à²ì-‡‡ûûLwÊØ-Šš¤)£ êånçý^-#‹ÐfIRkgtÆœ4²€%ŒBz‘¹O1¥ÍXMNݽt?¸hŒjÝÁ-•ÉñRd)ðô(r¬”Ú®`“+«v¢ÝÛŽ O›v¤òœ“nd@#Ȱ{4ï$ußj­/i‘¿ÐV6Oc¬7pÌó„rÅ+²EñÈAÞ.t3c>äyÌÅ7&ŸuyÍJux9lŸšžz/¶ÿÇøròdü?^TVøïG¹Vþ?ôeü?jõÏ÷ÿØ~Y ó?l®Öÿc\¼Ú]ÿã7‘½çþ½Aÿî£úià’r‚ëÍþñ1*SÃï)©¤‹d0ñÁ‰9èµdyèÒæxb2._7Ú,Ü8÷Cá'a/ˆ,ù1%e(;'j;»7 %bÙg½©Dî9ðk':·îÊ ™Ÿ †yát Q$³ç¡áƒ—KQ iÇ}hòx7½øf8h”¨üEHÇæYí²´Ü­Ý—ƒÊRÞtqÔýd8´]ÊYxRaòÕèP»±Œë—â 1~Ê• ßz'¹ŒU•X2úËé {µš¾Øq•èpÝý2ÉìBï'2q€]Ž åŠ¼¿@ý*sûÖ`µØ+Ì.D'$0…aYî€S›1"ñ !@V×Ù§ö“؃c¡÷dø]Ì6ÅáÞÙŸ$·.Wg I^ ÃÒÏdZÅ0–EE¸vFCè,í»Ð'VmzFX·‰É.EÆhfb2bŠÎô Ëd– ƒêðÅá­nÚÑ)§ɽî~Kå"‰P°eÕ€{zlÝ1@±~ë[£Ÿ©C ˜4Þ|°r ¥¼r½üš\Ï®-iN7 ês°}ìq*<(ÌØÞçY‡»ûLJY…à}J"±»©Í{àÔb:ï3›·¡˜êüb~?ÞÏl=€j J–Ã?›ÁËRh¯ô™Ú=ú6a[œçö+Xö‡"¿b}_EœÝÿ ëÓ½Ú™Ó‚wx´^•mwômp 2} g,„däðÞ<‚…š£Ñ˜ §É  ÙÏ­›“µJÜŽvøÔŒŸ‚oMNdG‡wÄß2Ðz%€ ©ð°v¼©2ÃtŽZEc¡¸,.ÇWW|÷!ŸNÊTîÌ]»ÐôåèWÊÔu‚©…ö¾àɧۑ6‹'3ù/î1ùs ì½ÜX—ûÄËœ±El2a0Na4\ "yÿŽTÆ’Il—l`dkÀ°˜Ip‡-qÙ.¬)nY1Û߬Vë½:õ°üœ"€ÙÂZÛæ¡tlˆaSwGÊ™iwz¸ë&º•5V+IêxG{éüƼåxñ¨JAbœêš~õ¢ßÃH¬XÔùźÊü{QU\ÌÆ2SŠ@MãÄŠõV´µ&jSÎ )Õ6K {.KB¹èaCrAq’Ï@÷‡Es«¹¿!3ºëN!Iqø× ~Â@p­è%óÇàc7qÀÂÈO.X°â 5éËÁÃbbpo%´¹²˜÷º–Dõ0¸¥KÙ•ûgØå$ÉR\x¿Vòïa)å'NOîþeÛa ¤»Û¡n•~np‰(AàL¦ì|¿Dù|¡¦Tª½*›)û£†m·ª–×Cµ(™¡Ã%˜M+GÒPK¬¡%í¨ïÆ·Ò=¡Ô”/$ºcÀuÀØ[¤pI7”•´V,vÖüMCÜißHé—le¸§ViTRŽ/{š-Q¶h}U™'hj…ª”T*ÞPñZ+Ê‹Œö ºŒTsˆÊ0)¾È,Œ‹dæÜR)t‰T?­wÿ@ö®¤òõ+$+‹„á‘ÛJY¤¤ž¥7qíaÉõ1²õ•æïŸäKÔƒÊvÄã2Õ‹âøQÉýsÒ†Øþ•àþ[•—+ü÷£\+ÿú2þ–þcÎú‡•¿]ñ×e•ÿãq.^í®ÿG,ýGàù÷ßÈ•Âãi:r,;óǹn,ÙkC>óÔˆøgäw¬xô4R‹aŠ3l™tEÝ)£ô±ŠgŸ¬U¨}“|‘ÆS&°°"ÓJMdÍ u ­Þƒˆ¼. x­e!¶|´<Ú|fõùDê½ÆË…sw6ä¦?¾žMM¢ L²'žr  óÑÚ=twØsSÈɄֺã”G¢‚cTQãVÅOUó½1ÙHÇפªh¨ ‹™ø:ù¨iôŒÿÜX~€üŽ·Ë"¨ô¸»… K_ÐýÅñvPž0wqñ€Ô†¹<÷—9Þ/¦˜¶JÐCO\ÎÆ»ä‚.6\‰ƒå÷8Â\Ÿ¦m»¯äòYqfÍu_YÌgÅQ‡«Ù|VÔ4Nº×}zEµ[+ò}Z<$òƒ9µ”¼D½Z8=nâŸÖ0>³„qŒ©ðÈþÄÉ ä;_pc±Ú$]÷ ŸJŸäFcx¿nŠÃøýÜNù¯å_@ªˆÃvbG›*àQú\Nm¢oÄÛÃâ_Aƒñ§ltt‹òsrøù^—NkézÅ/!»ÑØÒWðV‰~:-ÍÞ˜çÒbî>&—¯æJÌaÉ]Ò<¬[Ô7÷0¥Dâ¥ï‡NhâÉÍbp+ÐTæHN.È—-oE8?ŸM39t†ï×5c8äƒ*ʺíUd⩇ï{aÒßÈ}Dò¹ˆ÷‚‘¦%V\vÒ»ê_“›ŒáŒÓ¤iÿ!ÞJ‘ ÁØa)ƒÌc¹]²8Î+Y×QYÓKw «IuŽ}¥÷¼.õº•*üÛ‚ÛV§»Uø¶ ßV·½¡ènÁ·[ÛLÍÝä/4Èý•¬…&ºÛÛò äö_6lФ¯´4õZü7¶®„Í+akð¯-ü láÊ6~Ä[øc{[üÏy‘Üÿž†oÏBÙçö;ÿÒ]Ò¼–Ž»ÿ§„_<¬÷=`òíS±(LÞÓ›é(íHš~|0"7;>˜ÖŠ9mÑݱaöYA*kEVskâ—qBú†>Ç¢oúF¹:ºÈ˜§Ú¹Ú§ÿ@3×êJ¹\ûß×§ÿíùæÊþ÷8×Êþ÷C_¶ýïaVÿÜøoÛ/ž¿ íÿ+ûߣ\R"ñì ǽ©ív‚ Ê©QàèsQL.¢aÁ`p+câ‰fîr™hp|7b¤9\–Ùñ» ëÕÜlÐ „s09JlŠdl%9ì£XDÄTVZÈ2Š…Ä£y,£ûv`ºÑÐm9¾ßÅøW }Öøg }=˜ýO-GYàžI®ë).ŒòÈ(„8‚­n[*L*@é5C-™GúnF\±Wä4åŠ%YsEÔ ËZæ\6]Yk÷³Ìº<²UYJäÄJÌ×›Rq„³gk4^qªâ!JÖ-«ËÄ—t®UºÑ qˆjD4Ë•¬ã¹oG¶ÌK>´ÞPœ±azÙê¶M£ðcD ‚Ý+ÁÁù+'6\ͧìÂq“‰ì š{ÐÆÃhjÕ.- ÄÇf¥š±]ísgÒÖÀ¼Á 9‘Ù¨Ïq?C‹žœ¤­ Z)1“:’–}! ŸMTòVg eKp¸e™Û0ñÑœcÐŽ4úÑò‘á¾â±3e¡V¢^ôÐHб91.‡¹LT˜œ,\11Ðæt·ý‰Næ ê;…•Þ.c2“1’VÇZkÿ âŒÉã*#™ ­/¢KæƒG^!_˜dÔkpÖoD ѱ¿E)Soä4ªBUC6V‹UdÑUdÑå`+ܤ8Ö¹­¸1F`®”iµ$¡7ÏänŒm`ù¡™HdŠ}¹SêÇ1ýÁ ‘Ñm…£Ë3¯gh^nÌ&X#yñ61ª§RïFö‹Ãw:åèô^Ø·dbõ€\$=…7êªÈy˜„Í;wѬþ¦…îUXéUXéUXi}ýÃÃJÏÈ>D”- Üü7ì-¯Ä½0¤ò ¡¤Z?)¶F7µ˜tiwxájöRšZÔ\id©aú¶Fu#|ŸvÛWÜÚáhh„݉l@róImˆÑíŠë~wÈ*Òî4eãI-ÆlHÎ.ÔÂÄœP¶§‹VeF6u ÑêaŽcœ%4½oÿÙÈšŒEœè9µˆ0RƑԌXl¯7³¾$(q.jˆgå AŒ'³È°WHâI‹G¿„Hòª|SQþ€ë­C<œ¥·¥Ö:<>ˆÔðAÁ)êw«}$Ÿ›\?žÑºÜ`je~·(5G>)ùXk.'fpÿþ@ØLBG?gøÕÃèçòÑš-ßy³4ûŽÈï`ìó"»„uÏG‚oû¯,€ÿ%|7´u=”÷‚‘Ÿå‡‘›$ „°îûbÌUUí¢Œô$~U†^©`PÑ Ú4ýM·Zz¬ÃÅÓ=–¡Ê$MúQ/i<ß ÁÉ”°„Ðu†ÐŸ¥ d~õÃü"ñañZ²<˜Ãú³’‹Å§3ÁZ´èFeûv‡úVjކ¶¥ÂÙ¼vxÇú‰ïwó…¿™-0<Å#À´6ÈÎMÈ…Ñ|ëóLû¶þ7ŽUÈ0é+ Áu8Ü‹çžeTal?š4h½›:(ŽË?.Ø;lèùW$ǀͲUu unÐ1àQëaãÿ§ã‹§‚ÿß^å~¤k…ÿÿ¡/ƒÿ¨Õ?7þ׋M8ûùß·Wþ?rñjwñÿã=ÏÉ8svj' äm_aôïð«9ÿ¦Âí³BxíÉßûò7Ìda1ì;Ј‡3Â+|º¯ ‹GßR‘ŸôãðC›ËéÙâ†p4š^øûIrÀ`&SÒBOa[˜0hˆë•øREÂÀÿÂTç.*WÎóUÄ¥' ´#¥ØMr¼p›Œ1éÆ F[}ïa5j¤ÇWžáÓþP©·]c­ÎšGíõ&©©SÒHýb÷\ö¨Qv NûJ à7Bû¸£ ‰‚ÕJ¶‹‘•ÿ!óŠ×Ù†îøÏ >ÿª/Xmãx®¿u†®l—±È8ÚƒéJlªÇÑnTÉöÀà¹É7Šñ¡ó(%:ŠQõL,ÊûF¾»5:0EëÏ:=^ÎzÝÃDi¼–eÞ¿K›`y<ôò²|÷–í[-#¨—»ŒÍíõ Ùdm¶¡¢HÖN–Ò‘ K¬QÔ=ˆÎµ(LÌ\;ÍÓþdb%-bõ«‡T/2Ë£ â:¾oG©ñ DÉ’_q“Ì^‚uw|€¯¬ñH«AÇøö#£äŒ7.|9âÉz'#ÿˆÓ ÀòŒ÷·2²R¢'TÞ—ÄﵦÒÏÏɸ½Y²¯›†@,S½„6 úý ¹±1)vÿÑÏzÆÁ¨yô{ŽAõ¥˜NežêfíøÍ[;Aõq5#(Õ’íÇ{‡ô*«1>kÉ]mªi&Õ'žOúVC8?PŽæ&ÕoÖ“6 ˜‡œ4¥ŽAOæiPëdR¯˜üaý¯Ì¾è¡B¥T_¯¸Ypê”éíei‡tó·qÆè:™3Êh„ÿ1b¨`yÛö *Y²ø¹U:ŇÉUB®£ö~ö_±Œx´)“ %¸¬¬×ËE ®2Úáâ÷óãè$TÖk^ 8 øªI;“’i¨vƒi†¨äˆs>¹ˆ\ÉáûPÂç¿‚´CvíÐà½aéʦ(nÅ«×rèj4|´Ëà&t«6šx-aòå:Š4¸ÙcÅ›žPÒÙ}zÙkèlè-ÒÉOUh(7¹pKšœÏ˜ñìsd$OãÊŽ¤ˆ+" +Ȧ²EÜ44ÌAe§6ÄŽ1ß÷é o:Ï ŸlýK=ðÕ§rÖ&l|å¿‹¯c‡kÐa$é/ØÏ2 ‚–VR¦ã¸jM‡Ê…4¿ HS¤³É¿æ€Úƒ§Ö+á{/‘¾—í™ö=bð£,èû´´ïP‰©ÂÌ¥ƒ‹s²PóTÛ€]=ÎÀL |šdß ŠÏïˆÓÑ¡-àu”ªÊámVê¯ 3ýßZ§»uiÏ}hΧäÊ,¾×*+ÎW_7|¯¾^ÍËù赇â{t®)ñé&…€5Þ›ó%¯†å`1ÞGc¦¸_§wÍÅJ&óÓ,’F2…£< 3TmW5;ÍNkófÉ4d±K=óúø¹&5Üâ›ÑvgΤ™ÿT«4?µ×"¼µN¼µN¼§šÎY[±â=ìZ*Æ$ÚUÄÏõrñ?—Oÿ³Šÿ÷8× ÿóC_6þçaVÿ¼õ¿]y¹Äÿ¬®ðsñj÷ñ?™AÎWÐÕª§ý¹W‚¿E0@oܤ~®— ý2©¼‹vüE«¡x¯;¼MC,¹. 2b·|ýî†kÅür؆(±žÀ?úHèÐrÈ/Ák"ðù"¾ ‚à õ{ ‹a´rÒÂ% »‚ûÇц·+ȃ«–(ÓM™ßÜÉ€qaàl‘l¬%a©HÀ4tämH’¿\ŸÜýª%ŒqK¸¤H²¢@ÒuÏm 5‹‚®²<‚94éP¿9°Ô0Pa¿àŸñj]×àß§²šðæ›ôédëösþ:ÐOéGñ©aùS¨ü†*°u[ÒÒ„mPÔµùÁ´ÖhP°&ç0Ü2ð0Žü$K¨–Rà‘rñå2bÅäßk%5és*­JnŸ $:º»š´@Hiâ³às¸šY+¡é¬„d謄Š\ 翚îJ°ÅØG^ D»ŠÄ?鬰ÍèJPÏ¥®ZWj)©—'ë•Øj¨ðjÐOÜyA|"›ctA„gƒ´r©o1àUTЦZ–$¾1Ò“hNåGæÇT)Y¿õÍ,5Â~ýíï°’Ûû§ œŠ–OB‘?Ë ø ¬ãå2¸äÀÔÎJâüO4àÿ]ø‡¿[øÇþÛͰ 6Ú}|Ó¥¥Im§]Ãb¥ýt÷°Iîaž= ³WÅ¿0Ïq–-òøð=½Ãû¾ÿ*øó¨¨{  c£µWÃð+ü!O(ËhMþTžÐ@ÆLâÏ÷¨u\Z$˜’ ‘lÿq¼\djP™2òÍ¢È:l_Iwü__¢ð¬>c•Jïj4" ©ùÔiµ"Häá×q Š{¬.‘XK.¤äyðéSÆ£=4JÈ€Ò. ¡EרÏŒF7 -*)‰›R¡ Ñ‹#o›RxÛµÑ DQZw©¿¼,¶lèeÀ x¼Òص []ΗÀ5¬NÍÂ&ûQ^H5áFz{(:‡¢RÙ´ê@H8)«’=F8<€ÃœGT2ã†)B«0pTXš²©Aå«`½’ióYTeí´ ¤Ïnì®7Ê ¹a†Ö¾š6hcYcÁ¬ ¤Q‡!'è¥Ôð5x³g¦N‘çÈwŽ£ôµƒ‹7¼oixEB‡ZöZòQx°,Á;0ý@£¬Óí/!»¬$T]ôM7V‘Í¥¦¨=L¾¹†ÉlÓq_»rlp<ðPÿJLTh¦´êº#‚D¹þF(™VÃy§qä~t åÆo¼Ýß ÖQTH¬ G6–ˆ3I‚´È0ÄùmÏè=Èy,T\ï$ ˜ ×T n ôK…ƒ^{œ1‹ïä;È0J^óœ!’$„㲆*[!Ó°#Þëñ§eÏÞEîF`RV—ØxzAO|…@«›¾ãýÔ%é4]-L.Z®Í£èâôˆ^Sœ­£ÝõwzÁ†%„ Ò´:NÔ@’ºzÓ]ÜÖE”Ü…%z84\É4Ø¥¯X㬖…›IƒµÁ4 ¦Õ‘Rrõ#¶~|0rÎvI}¸ioaËl™0{o5…f"_¹UÐNÙeY’¿6h£Â;È«!7–òü„âo¡ Õ¤Íp=sy~a¤HF¿÷ ™ÌΕ9uN%¶.øƒ"¡ï™õÒmíZÙô…ÌLn¯c{|ì· N»Åœ¶q$ùl#öœpZʉ݄֭¿+ÇùŠs_=–þèJñöVj7¡ÑˆµÁ½«‡•Ž£›ò¸¾«šb_>½¥qbÝ4íªé=–·­§£ ³OmZÖŠ²©ñ„PÌ6±ꌈ:º·•ÔrbRG½RÂç'àß_ÄÕhp1 _~ÏÚ82à[á !uØîO®íú$|çˆSm*ìvEb·¥Óišéç)34¸‚sëV‘\ü=6ºXù‰î¼ç;ù©ÂÞ°ÇÙR~Ê¢?:V‡g’§ËÇ®P­}g¼¦¶Ñ-g¨<•µÀ/)°g íñM%rʱ'Z™ƒq¼ÕŒ‡…pôpäiæ×H:áo¨9È@\hú8"8“~O_ú |¹è¥ÐK•è¥:‡^b=)ú_zÎ2|©÷±)&ÃÏ, qïÄNŸÚªf©¡.O±›re~By =cŒg¯ê?Ïå{üü„R£uUÔ»~M©ïtôª)àûE¨=#âm£¾tdYÑÞŠçrσñ­*oÏðA¸PU BQE®þ.Þå²/i8—yÑîqÊã}ÃTZ­£ïfU—ÑÊ´*aT¶ÙOì]æˆÈÒëP:íáÅw²Ü×)ßg‹zÅéYºŸó­ {Eœ1|w{Ó+Mfð‡ÌžŸ×0óž‡øµP­xî¶B7! Ë¨¤ëïßáæÍ¼>+‘VÂ)ºUN°‡Û3ê²A]iY ”ÖƒeûIsO 'Îݰ#{ÒÌ/OGÒÉ|*ÓrL»ã©ÁàI}¥¯uÔGëkKÔ7ßJ…à¦ñò¶6O¹ª3 åjħ3ŸrUqµr­¸¢µˆrµâuÏúÜ::RŽîJÂ7_,ªiý ñÒó4­°©´þšÖ§§emÒЦjYñÔª:­rC mëQçñt]kc¥kµ ýæºV¯‚w21ͧD¿ +‘P²ÔìààJÖ\zä+SíËz]©Êu9-_ Z¼”WI=“.¾u.zÉÓ«/s«t‘/—É ¦”ßEý¡ HbƃT¼iüÀéŽT•ÆÀ³­i‘%D~]o])eÿ±êÞCÏ»þ]éy×eIAäŠÜz^^³¢ëŽAŸ£ìýDhªXÐÙ f(Yñe+ƒaã?*mæQ¹ÑÐì5Ÿy(†O`V×ÒJãFŒ¡ÿ,zCj£ÚeðÍ›¾æg#òûÀbºãŸÓ§ªmqª²xizâLµ¯¥½æùŸ£#n,MG¬ˆü)(‰›ó”ÄÍt%q3M_fï·1öš©J–MŽzS K;¨›Ïà`W›\`ur†>YDTÊQ24Êtn°4ÊyBÃhj‚—×pоX'ÑtõÏhãm4µ(hPª¬á|u7Õ´dÞësUÓ¤bE?VMSךò›ùÄ'ÐëqÕôú<Õt&•–ÓW—˜£Â–°^:Nc.ú_FµØÂQd›‘ôÙÖåòê] i¤5ññQ¨Ø6Êi£/ˆj±Eü3U!^±ßk¨7\ux5¶óYªô´úRß]H-N=ëȲRÔâ•M¥_G½xÊa‹•ÓÕJ ´}¾’:6X©Zñ£Š©ZëÅ#%,¢Š÷G;"—éúEkÈSÆFøÚq.ý¥vïg5Ô·ì©Ë­–g£4êòíÈp ‹ þ’®4O”챜§>Mþk‰ ÿ/AômŒWXº ãþ¾Tçë¹TçõáTç멪ssz²Nr¬é}a©ÐÍ ®RÙôg*#f×»ˆ»Çìrã?%O'þÓóUü—G¹VñŸ~èËŽÿô0«Þú¯n½Üª†ñŸ*«õÿ—ÜÓ½øOõhü§0…ê* Ô?% Ïî¡ên@¨‡zÒ†‚B#Üe2L¦}+ÞNÍ …` Z 3‹6¿nœÉMŽb "‘–R©}Óï%— tSZÔÙÇÚ‚Ýæ"}›¨WêÂ07Ãxd"Ë¥Û‰Ý çÄá4HI+Ê™¹qÂWíTäÅï)ÀÓ1‰ìBT0‘´˜D8I!1•ì"2ƒ™Iô›®RÂ)_QîFA/’5{q°äcM=6'p’jƒ Ê.ê@eRmíA¢TqÑ‹„ªò4O©«ü’ÝèU:Ö“K¾êÉ[Ý £ò!JO-ÃT☲~îŒkÔ±'kjÿ5-ƒ:a2 ƒ)‚ïfƒ 1D•³I7ÿT$ÉGæ¤FZws#=tDƒw&„Ánkÿ¬c"äT€ ¨Fã­ôs‚ töŽ"-J ‹ /°{HšTf¦¥Çˆ6rT` õJ«äãÝ<ÚîUJ¡È9NØ+°p¥¡âcNéiQ|QMɶ¯0&8÷trŒéèš”Žžv1ŠH•ÄÌi—xô[1Ô9 >Éþ< Û”ÔÀÆvdè+ÁA·šC`,oEÃøE_îLè=AXi86‚ó²pç+¾AáÁ:.³¼`¡ŠMÇà.µxóŒJ "%2•Ì3#_.9¡,núœwÄò ÆãP’Q$n­®4 õ–;Z9ÓnvžlèôóM§´*teÃ-E›˜4¢VàŠø*üpšÞ#u[¦‘ñpš-,ßDÒÆwbóѽLÊþoäQ’“üâ³ÃKÀí/ /¡T:®t&CûÒÉÄ*úM•L—ê¯)ûJó5Ãã|̶F²!;¥[“ᇻ ÈÞ<B"ª@ ~t·»RCÇ”#ê€%ΰ4üÁøÉƒ ÕØ¨k—}*|,ZÜZ¹a»©5ŠXrÄîÏüÂgtkð©Ìg” 7ŸÌZ 6òdµ*¢e‰EWE|B‚¯æUêUìyÛªÂæÃ*SÆ#eºd™Ëœ²¬öy•fd0޹F1}òÒªÍ`k.‚ØÚéuÙ‚‰Iø!veŒîVí8¾fc€s„{ðb=¬“«y˜õS€aþ"”ó H ‘#"Dv8öubAÄ@½sâ@à™Û,õhû^Œ×ÆðâA^XNQ$ˆ[uèYãFñÀaÔÙ}åBóz Š;û»wÇÓ#R˜Û±Æ¥‚_ô7™ ZWæKM·èìþÜež´‘ÿàéìUëžÄ! ÅÒŒ çNê¨^dŸ"qì"g„Ô@v?§žØÅ¨±^õ™Û·9+ç„åœ2œ¡ìí5tŒ\hse|´N¿h@ÏfCËÚm±)Él “þ³,T.ÌF°uÆ z²çÌÓ‹Ù§|ç€ûœd+2O9äÿE¥hëiÓ;óšÄ'Gó±á÷¾È+£FÆmî›VUÕÌ„ÝÁÔXï|ËéÉlº¿4ìùm±‰L¯òÎ’¿Úï¶7öo+ýGï¿2¹•#i£}gáÆ‘v†?Ó…3S<Ù!,ê/˜rh0Þ€þ™á¥ñHuÌáèŸ"îlö½ÅÎ /óŸ¢ûD†ÛŸãówÿSB¹•uJPwÇ3N úö}N )QU¢§„tJø9ä#sýpÿ=y2øï—/WøÏG¹Vøïú²ñß³úç⿟omVBü÷ÊÿãQ.^í>þ»má¿[Ç¿·møNI4÷vV8pçz`8 ¸œ‹G„„ï¸æAámNÓ7qòôɼ©:]Ÿ¨Q¸Ýá„ZŒÇRsg%ÒzXñPü©Å‘²s”5œ]ŸsaãäãBUa9O€eLJ21ÜÔy*ÀmÈΆ¬;´~´zçysev:ÝÚÅ0ê6(Ü.fFýéb¦w[Ä9Îl†ÿ€GC†&¢¸}2`¼7+ß™l&T–g)¨(ᦙräoĈ%-^w¿*¥–Τ˜ûý@àïoŒÂ–7ç⯠p=S}PáŸða‡þá{û­Ãƒå«Ó ÓKM¿Ý'´4 CÉ$h[.t:-}\*tZ•ô=á¢õóÀ޲_Ùò_v€oP„AD»f4參02_†Ý~HöÆáñB**Û¼“†”mSh)>ª4¯©ÀØ7Éx2•y£ñù–E^Ê g9mé‹çy»' 60—Û–õ”´pK6žoyÆse8(p­g9h˜Dð5ßÜÇÁUÍ1?Û(2uütÈ…ó–ä‰ ?™/;üËn·(µ dãZ§ãECÓqw8áS‹ŸoÝnlk~Íï$78±D‡qƒmË–´Ix}ð;­®b'¹zæ9öÎ7j;Ñɨ!êÙo¨o<‘ô%Xâ}R’Fär5•ç’SÙ_'" Ê•oMRžå<›¶ª@[‹UV.Èà÷™FåèÐ>I“(gcäüxf5Nx!{À¼™^òž aÝáS$&xâ R¬á20"°|B'ú“¬À¹‹£ÃÍQƒô.¥&zR>—ý”U"-k"VQÞaÐ9 ¶‘wì7 3;2µÌy§šid´öšÀü©¸„eîq:kÈòBiõ¿)¡ØY‚˜ð4ün¶Ñïf‰@ÀaN~sEÜȳ‡ÊÍg¥p«UÊïùÀþJ‰Ý‡ƒmî{uœzw#ÞTÂÀaï½MÇç{½âÌ8†­¼Óîg{|ÛÉ¿WũթEnÓºêõ¬ý0…òî)=$íU‹i[Àzž-`{$vê!3 ¼¶™Í¥2ŸÆî1‘}ÏÝãç‡Ú=ž.SÍæzM{‹k.u‹³1±ñŽHNÄP$׈7ÓÃTf$Lß3ùÏ1ç/5O‰g8XÚ¾RâúRŽŸë¹Ÿë÷:~.ƒ"çmÀ±¨Ü½\ ë?4M•÷/ªò®l¦è¼µÁ£œ|›ÞÉ÷ñÅ‚à| 6kËà€öéIKÿ Cò²tÖq(W"(ßõ0œ© Îé:õmˆâ1›RV|ÚkP9_1y¶òïíu“ iaÁKf'¸³›Cûn«+å²ü?¦ýóÿ{2þÏ·VøïG¹Vþ?ô¥ý?lõÏ[ÿÏ+Ï·žþÏWñÿåâÕîøtöw>Äq­õdžÃã=DÿµJâ´ ÿNJ¢¿ë'”ç¶sؤ±ûâмÜ>jÖ;%ñ^Üiîbõ§ _ée¬\M¬‹ ‚ëçråçò&b~u&£7' + 8†Æîlí‹B¿×5'ªEÝS$9ü—šŽÐ«¤Y’®*Hì¬Bs,߉e%1aÝ×­…Kú­0u©&±AjSöä³û*Âs"àâqs"ô“@£žp^ãá?ì äSÞÙ`°ølÒG˜þ­èN>Ñdv»´’ÿ–!}®ºƒËòè¦?dL>Üçÿ)¡~Ÿ©7ø=½‚uôñ æMæþ³ ”½íŒD÷ó(¹ Òå`ô¥d{P\ŘÝ *Ìâ0â`º2ַʶ®3ªc4]ñÈuJ¾1Ý¡.µˆ‰;«k‚êœ /¬o·)%¦›n²ã¸piºw{½Ù¸Ûƒe™LÅäÊ*~=ë]‰É5 šª*ûØî÷Åû Ñèâ÷ÿªQ)PÓ¾?ym=ywòh4þ+¥3OÅn{ŽŠ2„ÉÖ\ÒöúÀn¦%D5¡éäñƒü9ØýnÇþ*ž1yñ"‡W-K1×+éµxV{öJþU þµ_x”#¾$ðŒÑåÞw*:¥WOñIxÙ5•âœÃ®)jÌ®¹N5×Q 5§­Óš+3놱LÆŠ~ׂà»Äõrë5qçVì &G¶26´¡É7´ßd6®ÉÍ ™–G——Òw¦’·sR*ÏyåãºË¡ú“ Žô¢Dp2œWŒvâñggŸº¾oæ¿Öò”fÏ¥äFΤÌ+DiZç½/à~lë¶ù¶ãÓvÚtËõ7zædþ3êª_òz +’Y0{"dGÁs$a× Y¿; È«ûÝqïŠ=)†/Ž£9‘<š=75 „„‹X3`ÉTQF¤ù‘l—=ú4 ÿ†ûµà©qÿ¦Øã:0O#–……PNPÞxZóT?I½Ž^]Ž^2¼HzÈ3po™ô”µ§yM„|DÓŽ·Þ׬áÂæVíw+â߯±ýøó¶(L siüŠ7^ VËÂ] ¾Ç”´ÈPª¡bÙ*Y!më­u:‚ݱ‹;•^˜yÔ†ÖÿŸ½wojäHúFÏßû)*|"Î4H 3{g#¸±$°$ÀžÏ󆚡×Bº̘ ø7/UÕuë– Æki½¨«³ª²²²²ª2iR)@ñÁld^‚Á‰cŒ©›rª+”ÕAÎÍN0Ìl_Æ–ò1ÂQI%1-ú† óåŒ.®!(} IåNr*(=µAfË4Úòq’c¬à?ñtB‚0çͳí?z˜t”ŠÁ˜LuìEÄmܳaW)16· NªŸF@ýë`ÍÛ Š40`µÿ‚ Ðmµ.&m=ÿRJ5j£Àx†™·Eu»Þ¬µ(¼ê¾‹'vL¶¨®FgPV/„uœ^WH3n–«¹êƪ.U¼Ê c¼é€Å°ôF´´tfÇM’üæ(ià°½D¡a³æm‹&¯5- h;öG³‰ õž ¦ÉÝ\wâ¦èCµ¸W–;0Þ-oPÚçªTÙ[FG5#«íÄÇ—.Ö+öš¼ÝZÖ8\² Ã¬WñÊæë¶)Èmîm`zq(nŒ—ΨÛ%ƒrßš:o’â&E>7—ö§š»ÛéäËkyAúo9É…“ÃY„ú‚Ô~Ñí‘b¿¯êÈzC»&'úÛ'PÎÊ &÷³ÉÐSˆ@ñËM2°2´K 1õ´ãßYf\£ö·‰ÅŽ«x4zâ±Éô•T1‘<î&ÀJÜëιóÀò+07`",î˜Ë %n@V›‹jŠ#GC5c‘Å;·×êZ”x'Ï *[V*2ò]ˆáÍ¡÷–~a§’îIø»ªM$žÊEÏS”³²…dY.LQ¾ªŒm}pÓéxtoÌX©ôÒŒe͇—Íj­»ZXQã³d¬–<ôǸÆü:†U¨/î¦ÉdšÀÈÀð°hÉJ¶Iå¦ÿ9ÆðU0PÕ™,b°²K;”û¢ÄçÉÒÞlëti’‚I [÷¶×N³¶4Ôþi­‰Ùä7´ñ–+žµ:õ“k¥Ï1˜¥ŽE$ç'ê69eˆ|ç—ù@¾;{߉ƒž–°u+lSö&Ëh僛Ù-ÆcØëQÿÓ'>}íg_æÉg"ÁzMÅ××ÐFöàäM+5ˆ4›Üš J†:ééÏòIh ™sŸ]Ú\žQ« 1‰ŸâN P'Û OXÐûÅ8þ4< Ƚ=T{r2…]ûm%28òg™ú°ðèÛ—à@-k<è.hYÉø)hÄO`o©C±DíHÑR¬s`Z¥ÓhÕý[tȼî/Fs„.ïÆ»®©äë4Þî§ýâÕÿà¶|88üÆý\ÿÄU©:[µ½Ým#²Íý?Š\ýa›Hl~e¾IQy@ï€I /ÔC°–ø|B™¼®­6F÷W:Ÿ™êQe3R- r¥çÛ²%¬²v â›ëÅð“‚bú†,r°üÇYÓ…N"†1N ««}i,6®¨[ œŸd| ‚¢Ž3§²l*Ë9.;ã8ª(î»\&UW®m£ànq5J0[aÜPx‡BÞ¢ÎT{!ÉÔÚˆ”4Š]~CÃÁšSCÕŸònWœX-ÍÐ@œ“ã‰\µMˆ€&/mÔê¤P–Ê.ð#“ë_ï~û¡ÖT°*A$"#÷ënÑÀ%Ú¥÷yÞÁL"tϨw›ÿò4ïÒ’Ä·(§V^»Xαú ¶EjÙœGB&µÛcèàééQãR– ÞÏâž¶qÁìŠêQ÷°)¢GAÿ߮ÿt‡œÍ ¨…×ÌðÿÓ£#ü—念Óóü+=¢^«ös^ 3ÝF—t5ŒtNà?hÞ 6~6Â-^6s¨´/ϳG¦Ö;mFEqÐ>í@ƒ¡«ÇÐͳ袅ïðÓní¨ÑjçTÁí„«ð/“:obª£&¼¤ÿÝKú3sé}Éíyý¼ÕªÃÜ'óxª «@­Ñ¾ÈfgÊçÙ™™LQÏiõÊpW@ñàãÓ¦FqÙ.ê þA èþÔ g5^õJé²:ØÃX:g˜ØIÕJN ¼àF©Û×Êyû"÷måÊy;Ê}Û¼ ¬VÈCܽÒ=dûCÅ•6+½ò×B PNwœ5Ã|àè5YgÔù š{4'å7¾êudN¸º>—ª~&b=S.‚^%]?¦þ;oª,U]}eqFW𳨫°MÍÀ=ƒ²ÝÉ>”ûM¿Ì¹Þ1J¶jå:G㾄ՊÒAnoWm†SÞ` <«ËBð+J×vu‡eÑ 0Z¦l<6ÕO[©{&qcZ¹£*_¥ÑÕàÐY…±]ÖcÍZ”-ÍÍ p͉0 t©í²žÙfþxC©£<¨!#?S…ùáŸú€í;MÏrÒ‘W§(@ËNÊ`µJ=à,ßE9pÁ¾>ìeU ûµ-ÏÛŠ<‰@$sy®ŽõŒÀ”ÙÇç‰vÜ |)¥•$À `Øyâ…[x†ÖrA‰‡—A2{,–ø¬o‡^w cãhÍÇM.aáR °l4>Áï«aà˜PÚ² _̪۲j‹O¸ÍSÄh Ãk[Eùë¹Ýy¢ÿ”xƒ¿M/Ó o§ß]žn³L;Í…vï©ïä;ÉŠ@·þÎ84”n¿qÅjàpçSàníÈI¶U¢ïÔ_ÒíZò5<ÿ Py_¹ÁäÃÕŽ\ê«f¬¦T{ŽâQe™ª§KŒ¾IÅ-ç7ý'ÕÌ'{üäÜò&óÉ~&µ·Þ;ÒÍ]¦T¬xªY¸am[yËgoržq㢦=måCn_tnrãPi“ µªƒ4`ªôºÈ“yD¢´|^ˆ‰ABm*š£T4Y)Š2èp Š£¢ÃNÒB¨åuQÓGç!ñ»Ä©i´Ãyxn<Ýsž¶éÝt4íWÍ7ßxÍZ]mÖ¦wÓqÍ[‰óèØ­wÛ`µÞ{5¯ßvëÝŽ[­_’·ìÖË&ïpqú’LͶúëÜØhâ_ÇñîrõÆúÒ²…c+ºÿúQºgbPö(¶ñ Bš_™Á;ôWCþ_Uºm•f0-[~ëˆä¬­IÁ5! CÒ .íÉàdÒ…Ò]»¼iÖŸ¥Ï—l9.š¾_œ/›A¶½«Þs¬`KxìÅQÖ˜éJŠ!mÊrŠÁeì ÈÞò”¦E]j'kúj0XÜÒÝöÌñ3¯ªË£¸Œ§ÊúÅóµ^< `§Œ?3 bTú׹ܞòß!è@Ú‡f8’:=ÂˬÀø’®ðk|j/[ܵ 8±`ø,Q¢W=)±7Â6ƒµ†AŠÌ]´ACKšT=—j,[½URF‘;­˜Oøo(‹©Oø|uÂçDø|5ÂÁz5@šwõ\³§BMÉ!ýJt [û–ÚÚ+bnµÅç‚'Ös/o§ÎrÌ:ÆHЧKü ì±¢{Äz›)‘î§‚½SûªàÃŒý• 9ô†5¾¾}c)÷ÉònËRÞn™µ6[bÍý–ð¶\oJÝÁcJõ;°¤-w‹Ûö»G£þ'r§UMAÏ@§‚•× êm¬¿$Y“©õ]d¯s®¯"-rhõ— N„×UöÓŽð¨Üy¬ÔkÉ9x¤ºè}†æä{~zÃÂê4yZGxr–˜S2,’”ƒŒÆŠÉkj£žLñO;ÿ¬qí» jFá™QKvãžÈ_2j ½‰Ì‚»0AÂñK¶-G¾eASܳçè·¹ ºÜ¦Œ£±ú(»ÚzH!è¤Ëζì¡JYWŸ£=m퀙.zóc(®.ÅӰʘ›DίæùÿØþà0mn’O7«9ÇYú?ÙDüã©~M(¾CºÐª`ufÉk¯Î ±Þ· e®îÅ Ý4îÅuÂñð&5E&ãýÂl«ìð·€j¢ð…"*e<g¤ÂÒƒYµÄ°Èx·ž7ý»»x\v­.wÌÃs&Q\ÏÝ't»¾ËžŸrõ$j!‰¾´’Iã}ަ0jLv ¢Éœm*6;Ô êKéi“=÷6Ÿ„f¸Ã˜Ìy,Ìyö~×zœ¥²b5ý/iú¨Ÿ9¯k=¾îÎêˆ7r8ÂU„=Iù#\©|í!>~ C\©!΀1Пxd?L>z½=¾ž-®æÓþ`NP”È !¯’qÛa’À4¨{ŒØ¥hˆQò+=¢¤þ\jù×_Ò_Kïw©2ü«T¥‹µa4qò¹…ç“ýd„-º‰ïãAûH|MýªÚFÍ4¡¾ÄŒd"0Æ(.‚ÆÍúÝÀ ã9Ô£°ó ˜i.‹U ƒÛ¯¾K¯p-xðñè>ìNÅ60 P@CΙ4&SàÆcZ-õ¡È³F®ϧ0Y?¦×FsBÊ~{ˆwoFÄiSô´½Ÿ1SVDñM1¿ØDŽNq}m8ÍׂSdÎYÉð–[–]*>r {ÊâƒÛ:×ꌃÓiw¦û£{ÔH5ç0žÍ§“ûXAs|p³qÉÊ`!O`š.òNt%±6ÅYbs’HSŒLX±¯0„c¯Evc,lbÑöG¾†0§•»¢Ù˜4¼˜é:#¯ÎÌŠ¬Æ¬0«ÌòѵHël§œ§D&Þ±~ÄU¦ù(î“À{ÓÄB|,3¥!ÚŠÓ‹…hl‚&SDF¤¦É×ƨ⤠V=¸Âe’¹:4•%ÃXQšÕ!2Ö*[2~[X 8tDC±S¡$®©5™’Å>c0É+h+’uT™ìÏq”àwo ¹gó½póHäð²@n{ÛVÝno>Q<|±½I{s^e@ªÑ'««ªÑÑ¥~EÈ› TÝÞþ%¦ÙÍ詺ù†ºÉ=s¡Ã%5fÅ—’Ꜷ ˜m’ÑØÙf½´¶1½+Bç1šhu¿höá©lÐ'FåYTݦ%Ž<ñÛ(¼ÈõS Y†ý=m Ñއ߳òåí¤W›Æ÷³'ƒ™•–*“놜86ØÔÅÀ]Ò¡›qUi ÑÀAEÌ+g°– `/î^ 3­ î(áGμŸetç¡™¾^Ž«‹þ¨•"o·VPQ®ÖˆLµ!Ûó0µ­«7¢'Pa¹Sê-L¦·4¥ö•æØZg? Ê=®ìåL_êƒI§²ž¿•À”Öž³&u´êœŒ gÑÑ"¼Â¤œYkõWNàଖMÛ‡‚ [Ãÿp4a‹ à ÜýãVæ7·¾/ïûf†ÜÁ¬8 fjo °=ºÇ¯Á¦Œ¶|ãZKYμ.´w*[Íàv2,С~+Yx´«Û:ïÄ­·¹ÿ> ÃɘLÖirµà£nç$¾¾Å|OCy™`Ìð%MÇdŸJ20CÃ.ᄵ&CDh§á?BìËI;éÈD¼˜ºõéä‹B7”åkøH ÁæOçÎ/Ù'–GQ;êþkü'Ϧ£ˆ°ûðTô¸MG¤ùŽåMzŽÙ麭f7 Ý^­ÓçýÙéu.³YÖ8ëbFÄã6ÆžAï£ö/Nÿxy„×î*ÏïUqóôk9½X?ï¸ÑjÁó_Š|ˆ¶K? í6zü³“çvGÅ?uŠô³sTäÔÕO ËW6úà|§õ‡€óq™9±P”¨#€ß'G„D¾(È-Yã§rIFZJk‹¿Ù²WLs)ÉÂ]ÊÁC—¶ã{¹“y<€qƒêØL¢ø Lp{ÝŸéTŒXx‚›'µwI·}ˆ*<ÜHJ äèF@ÕÛ3™àŒåËj0VI Á”·· ¦6Žr'ŸrȲ@'>é“ái eÿ±r³ÚÓ/g™ãpV¢WH=_ÜéÇQØû¿‘<ƒq Ï[DWGØìZŒšMFŸ¹wÓ LÈ[yG?¦ÁäÇÓ²3M½µÖƒÞ"»z™gÝì‚dDþ=™øè¥‚žO0Z<šÅ|†Žâ†‡&Æi ]ÙUëKVGÞ¦Éu©m.8žYõsfÁÕPE8ÃÖtòÑb4bÌUøÏØ@3 ƒ°TºÃ¸ ¶»Ì;IñAîÁ€~ë•×TãÂØNFn°”©Iƒ:lV…5Û¸›%£Éø•¹N`ñÁÆ8¡30ù!æT/UBNزT¥°°iáÓŒçr"BÂ=™%sãp˜wX·ÇxFgÁû>+ORÛÂ&âVCåwØæ}:ü«‚ß1÷šÌ”!…óyÌõqé’Q¬>ôç*žÁëif®²j‚Næìå„ð›Ãø.#Q·%9»ÝhjÝ¢ª¹±$È}~GÚ¤A£Ž8ôÅb›5²—f#ÄfoËEè­2æ”Õ´æ0Q5#3@Bw]þŽÙaq¯®ÍDÇ(tW[”Bukšv¶œn¾ØÜ“ŠÆ‘e}L‡²ñVÚÐ’„Ñßʳ÷Õ Ìî0÷¶Dýð«»ËÀ¶MÏWDü «£¡åp+ÙPþîºÖ•‡MxùXï<Õ‰©ÊÁB˜$óÀ8„ð–ßuêÂ+ˆŠÙèüª¨|ÞC¬º}CþÒ)¢·¯™áÖú=ß­—‚y£¾[ТíœáÊïùÇ‚lE1}W´Cê¹$¸¤\x·”opÆðåo„Òb¼¿â²âµÐ;ÔF½Vð5;ÙmkÖ Ò•V¾OØ ÜÏ@P¼ðL<ý j!§”¸êSøÛÊ¢Š"ªäõ¡Ó®-$`rëõA¨mÆO0Çǯæbq7¤Ìˆ©Ç;¼aäôZhÜèÌɇ@õ10ªˆn–d¦†­±ü‘‡Z€Šµkâ­Ü-l< NGVsö׎ Çâ%_¦ì™!-ß% JÄ[Û ÿ%(Ú"ñó_ ‚òÌä=¯5ÁV«2UÐ;]!ž¿xcDÿp¥R.©È«'å ºKÞ÷»ˆc\ýJ¬7‚˸ø±^õ¸Ú-k3”µµGÌ‘© ¢Ae¾ž6¤*RÅ'-‡õµXà+{&-1M|»ÄW`øÊdk inm9_6U¤è¢óäVôñMŸNqd&W vOA1ƒ+Yr?àÆ|8HéT¾Ëþl6$t·oúnÉdÞ¾­5€-½0ŒpøØÁÓÀÅgrÝÉtž³ N3‚÷ŠÙKA°Š.ìgØ;µKQÙ>š@cwö¥7Ká]•w§Û•ŒÛÏÎJ‘v壌ÕC¢À÷”XTq)t1^ûf" §ë:ûlxÂÑØVsÙüI§ÑÞê¨ ÐÀQP¢Ü¶Aµ?j¬Ó¬úù: ?—šê²vF‡Y¬¡#ÔMõ×ôW°‚´woÖEuÈ<ß÷rrd]äÝd‡_×ÿjá×úÇŠÿþ4}1ñßû»›øÏgùlâ¿ÿÖ#þû+Íþeó¿ò¶Zñæuo3ÿŸãó݉ÿ>†×É)æB•I<õ]ÑEþ){1}ïy8Eï´I{µËôj)ꞟ­<î+‹ uÖŒ£žhsz4'–œïþúòòoRnŒ›â\ȧ°(OÄ®3`ÞJmlÏçP1 CÀWn­Ht Wþ °t7<=ûÕ‡…­wÒ°õíl4ÞüØu¤BæNLy t·œƒm0Ýq-Æ;ToúDª[ÚÆê^ã…´gŽÔïúÉô ú“kŠ—›su–›_ÖO§ñìnBY¤g3"Þ4½4äQÇ£Ã.ñŠN·Ð4 ÜA¦Ðý4þ=Šç1mÇÑ1ÈñÐîž^M®ïeå²|ßHRW¡º8ÿ|X†×ÿØ?ôT ”ró»è\Þ˸<¦d]÷§#GsÔŸ÷¯’ú`™"˜äTfªg—Í[œõÐ|«ÕQúƒDšÂùkòšîèv`øé˜ˆ»À~‘~ œm´ÏN¡ˆyšˆtêp‘–ï_á™ÄpAÎ7}Ò %€MƒO¦“1«êa;¼…Eg좻ªú¶B@?jRÔ èÿÞ)ÆOyaÎDÙDNr»J3j@ÙÅÕ C²«˜Á*B¸î 2„ù¦?º.Mîbj†Nêó*A‚&F«¤y+ñ¯¼–’dI2KÂÌè@Nyò;(àõ[ð#¶d7M:Y¢Ð¥}kö.m­PAh?þ{NFEŽ]üÍ×uØq¡Ø!Ø•F÷|L‹¨—Ò§±5›ŒHS¤ß|2Š1Œ+V¦†D™öñµe8ßî¦ñçd² ˜œ‹J‡·Ô\Î DE6ŸÌA†ÂYÖX/ ±‹ k×ÜXTƒ9ErNi¬ƒ~ÉG €£æŽŠß¼t¸¶šééÈÊVª$zßø†LçÄRaœ’h™ù\ÞÚ[Ÿhe—Œ’?øÆÜè `Äñøh2;· ‚CiOû}ÃW†JˆKEvÿTŸ6 l5MÜLF°Ýhƒy­Et. ‰Ŭ8²€Ãš™1¯ë0•¦|»Ì_Leœ²ŽÑÖƒ ØØŸÚzÔé(I±S$>Ç÷–Ð*%ÿŽ0R™ }nY+ ·áœÈ<ì?ÓÆ††¡µµŸª4¥S]l E°¶u{q1úÒ¿‡Í_ÿZm>= ‰’D“„)§9Ø#¼…öµ‹¨u:µ_¬y!ªÛáYAû:è=Zß²®rƒ•”ã²µZØK;|ÅÖ:ysNÆÿ‰§“T ‰2UDqËÆ®Q×ã'“ Œiw¨CƒêvB‰H¥Ui uZDl•GüÒGñgÜ£Iq`¦¿/jÊû†zrãuYq9a«ScâÐ_¦‘‚G&ð€2=ׇ†ybÀóeºì¦ûÞþhë©‘`$ -¡•o·íE"ñu¯ûJ^1˵_¹ºjƒ òL‰²\ ž DSI%a×O-YðL$N•€ªPÚ^H½ä‰Ý×b=\ -VXØ>^˜ŽwaRù—C¥òsQï5e×a¨7a•l` Ò«Ù/^”ýÑñHû!˜&¦á#_x•ퟢ²[”èRü]€Ç°ÖPª”`@Õ† ‡„Ûð‡[‡*‹Nk“Ï1AKbÁ§ÔˆÆ`£ÿ:X¿1@èŒè %j£Ûþ0kl „Ù8­þô7²e›íæëv£Ó=4ËÞL“ÙÄöbkü(P,ÐÎÇce,Á§èu~éÔ7+‚#ðqlðý 4&àp30±ÇQ­Ùm”Õ˜öEl=üÂN}ì »vzgÇ•ÛwwÙdÔ-RøYX¾:ǯΠøXþ?ÉøÅøÿ¼ÙäxžÏÆÿçoý1ü¾Òì_6ÿ«ûïÞU<ÿŸ7ï6óÿ9><ÛÿLR®-6 8SZ˜|Ë _jDG5årâ§ø»8ëä'xh=AR™M‹]iåêw4þcÉX=Öù桹!¢vêdãíò—øÏ°ï€¼žôNÕÙå$qÔ9[D‚CÌMJÀ¢'ÿ1ÃÓå¶ÿ;a6¤72º¥°˜|Q{ýÁuèÎ;º´nOåæ‚Û†Ô¤Uû9êuEa°˜¢ßÎèž.M¡Ýûêx7ÏGák]?ðh¼Î}¸èoº„@•Æk\m‡îä‹Á»m÷ /ŸÓîÝ”`>Z _áY÷oá¾wý­¸´®©ìûDëØ€ƒ¼Ã5çLÌÌžâ„Q •ÁÊ~ÇRO§ç%LKÌÙíQÊ -J¼SNsAÒ••l=ç—D`6’i:ybƘD.9¯$§ãã/J!‰‡É¯p‰¿ã;6<)«‰µ§7À+q>Å?U·èî¥[ÐùN}ÿ›Ëï•*O¶>Tð ÊdÅÛ;`1:ƒÍoƒô0mñ‚drWªHm ‰YŒ>)¢ˆçƒ Ûe3M&ï³YMëÑYò”º„&ïÏ¥ðöÄ,¿ÎÄâŽCöTäš,)£¶Á@pÒ víkuÿWqX¤S 6øå¾g”Û©Ø<–.P²¢Ð‹­{š³™k+qøÁwæ-á¡{ºYÙK£dH¼¥V”ð»"Œk $g·¼”÷Ù& ¼&EÇXY‘tcijKF}Â5œÝ-åÒ‰àr=µÎþiíŽEÿÚXxÓýk]í.ͱÒèìÓEFøÚgÙ ¢·ÐKâl¼{;¤è4Ÿ† ãZGÕî­ ¦{Ç;i{q¡ôMæðѨ˜o{”úf$ÓTÑNãT,gž4غuÁ¸—bq?ÉÕDJ$Qøí>‹673É;燹ãË1 è*,Ê⓲RS$éŒÃwiq ;‹ "z¶ïN›\‹ú.ž¢Ó®öonüÜëÔDp5Ûð ”s“/ŽÍß!·bôò˜'3´Ù‹†Ac¥ø*7@ínÀý´ÞÚ£U õ2ï Âÿ:ê¯JÎök’åJ²JõgAØ•²ty0ó)Å„FÆa^Uæ†z÷ûn¾;üî{ãÝôiaç…¢juWöEç³g ýg©¨É®ï­û€áUöV‚}3ëmüäÔËPÆ—ºU—ºA¾LæµpÍV=°È½|ä#!’£örˆä‡ÃK) ¢Å†`˜3Áw|ÏUôÃJöa¾¦SÑAø<›ÆÊaòʸq0T«?"p—XVNûãáD›``p¢½„9kIa¥ô%Ì Ïí7ÆaåÏs›æçkn{5ÓNÝÑ"¸ìz„—Y‚r§';:ü”^õ¤ê>y£žì¹OöÕ“7ôDµ++ª< C&£¥'ɵÝÛ]Z™+j¦µ –Ãç(Á”9F>‘»ø/§'•eë)¢k‘d)𦖓„({»t•m£.ÎÙÏØ>^>@­î¯É‡Ìeªå£Ê{ZDè”·Ö°€^é3·wÈJ´Î²ú†{5M“øçÎïn lQ·ñ·llà)¼ZÂ]g¸ *u㌠À˜RÀâáá…·aܹT˜aÚ¦Úüæ }móq¹âê——m ß­ƒi\pˉëlºõ¤ÁÇÃÉݽm$fx*Ñ<¯â4•2ž]÷± RɆ›‚ûš‚®_*S‚3Úò†Á0]1ŸB‰‘xC4ª;ÕGÓØKÛá²…×–æ¹ì³Ly/ Ä]òyB£" â Õ!tÑôX ñ%8b°ï+„ÆIòwÝ^o³7„~§hïn|½/H—y_8î—ü9gXW}L¦åb¬°­ßå#“àã¿Áä6½.ÎxyŽãÍ5…éNÆ ÐXÛ¥KAɧ˜…ï0a‚<ý?»reµ{ˆcÃÜ—«Ü6­²xv`©kÔ’Gÿ{x…Ž‚#\É“~Üø§oÑQLøUgYIQrïg°KGüèx*}СR%¨)¤>JúÖ<¿—$ÁayìX6_Œ—Æ·*¡âñ´[ênn“áܾõ yíC”Ì)`£ %šïw½wHV~>)áú@ðõ§áuDYµ'z‚ÆËIÆBFзl>ÊÃÉ“ ØÌ=¼Ã.áYV®(’ ÎÄzÌ£0ê#‹k¥U@½I‘wÒIŸÌùñíŠP’Ž¿‰Ášâc)¹çƒ|{Ï×zrÈßç*0<‚E FǃëLhcSa&‚¡¥ÝX@Ö”Jcº¥7St²})–ís„Ü)vè8LZòrý.ÃR‘¿„T9?BÒt¿“9gÞí:­’Z¾âjy0=ý.‰/}ŽÚ5.]$ê8& rC–ø˺u–‡ïK÷X ^š1§`¥Éy¬E?|ðé%Çëà´¶;S Mz¡ ¦ôÜrž‘-¨ä¶€.¼ŒyÍgÒëäƒ%‡7 Â8ÖÌ2º™%øñ˜%Nà%¸ÜÓÇMžš„é^i8¤VÙ[J0=¿â&¨Tv"\<™´Õx†Þ­¼ñªqÖë¾Z®o’kr@Æ2\𚞎‚æ”åÆzÝr<4‡‹nMX–¼M>žDy'êÙข®pcÅܾ ü×MüÇó|6ñëÿñ•fÿ²ù¿ÿöÝÞžÿñ¶²™ÿÏñ‘+˜ÿñô᤟6 T>s1a×C„Å0“¥Ÿ—‡ÄNЩênewY?rº·JðÊJH³äö2‚ZŽ×JH´$,kÀÑþM`h[Ú¿" -%$H3vsNýå{wf1uÞ郖_;8y‹ªý·á,Mì[mvXêiÊ6·HN× ó\b6]h×g0´Ãn¶HØW¶y¢ù¿=ûÆöí1¨ŠÁh1S¢ð®<ƒ3¤²@bSöc…r§ÓnvôÕ’èL®€¾ß‰ï@*@j¸‚-”C•4dö×x>¸Ñ^ÖF*cŒÃRü>RÁX©äòe\A»úšaO!~ú[ú†ÓÁÍ’O·}Ø4â=÷»ˆ×(jÖdŒ]c÷Æ ½ëÕ™•Ðë›äÓ¾LCà¨Å´?¸7½Š ê6î%b0_±éWOXc³"ÄK—¯u½1H (3¡Ì,¡b«ƒ„íèOSM!c–‚xˆÀ@æxù‘!Ý"†“˜|nx× çäMs‚øbo”‘bNá*·Ñà!E4ÄÔh^-Gý9†IÍÄõbd"f)ÊJðœpˆç—ï+@¼Z\põPaXVEôÒvÇw31Ø¢Áj°¾|£å[N¼à¤+Êt×8þb´…(¸¼”tŠ”œ_°':ã*MIÐn9_Þ3G¥04:`œŽpvkù’ø©ØÎbtC”UÄ¥\暇ƒ ×PyÐÁ jqôúú + E†ÂÂbǪØ¢âxÂY¡CÈx:È…eQ)<ž¨Óø„ÆÐ=è ±Ái0¿#C-Ëé–^ñ ¿x´Á¶#pX°æß‰oZœè0væ˜<"6óÒg¨x‹œE±â7L«™¯>ÅWÓ>ƒ‚­TCTÆŠ»Øûö]s”ßÝ•E¥Tý¶(j‹O¢XÝÝ}Svzî^Ú·Ó´É kn*%¤qÜ¿ƒvŠnTk‰“É‚|sp‹uI þ¼Ÿ% œm·÷b2*‹ê¾ÔñÔH]=.­øËÉôW‚yDõÊ~V µ5š§…ñÿÂnÁ\u¦ò†N2YŽŒÁéTÀMœX•÷îÙ8©Ý¦`{'ö^O>“l7c\ÉqaD\Æö¤,Î^vë¥÷ï࿊¤q~hl Z` UÞ¿—öT)0ñ³|œxœŽ/>'žAâÙtK(0ãÅÌ0;âëëY€ÐŒ°ˆÑdJ°ÿy’ yó¡ª [%X¬!²*EJ߀¹oÀÜ7`î0÷ ˜û_Ì}ƒ—¾ÁKßà¥ÿyxéƒþØ:Q“4­ÎM:Œ|{E¸5äFÙþx(Qrq/‹8_^"j:6s…ÆäºÜÄ#w ru 5+¶›~áÂyah6ó¤=—I,rˆ¥êÌ*ŸŽÝÃŽpã´É†b0Fòoi5˜hwð‘!ÎRïÇAóÐHÈð.ñq³Q‘?>“‡¼AàÉü?×µ¾åu•3¸0:Š–{óF¹¨ØéÜŠYÂ𾡎éÕ'öŠÏŒgtÌ’wRlÍ u’ÆŽt“bÚ XOfú’>®¤c£égiH`ȾÜÊ3KQè‹«x2cÓxè^[ȘÃ+c©ÖçºòHü!½3z…+õLFgÞ‹ë>w¦=pc Ã$äôâüÛ"‘wŸØÙ$¶uXz/Á lëeÓX»`£@¿¤1¤ÆðÓùÍo |Hï~ú‚L‰§Ú3KÙ RäOŒu9nÇ’ »ÉK¡uÌ&/Å&/Å&/Å&/Å&/ÅŸ•—"ã®"ˆ˜´,3…wëÄnUèù5¿·=¯Š¦ë•ÎFq’ÜB#n)ÅzoúI1ì÷{°%ŸáõÙ fÝ£“d¬Ü¶+ÿ Ȫ£ÓóNQ´¢vçøL¾° ¯Ê‚«Ú͉!>\b€LÀY1¼<ô¬€ô5»0}²Y¡1¯šµv·'Ë ¬ˆLÑ-žÓº•1²48Jþ¸àŸÎaQ­rüó$‡•T SÔëüì">ƒkÁËðøÉ ´H>x¼JëAN<L‹Tzš!÷•Ï5ž`(ïQÖ-i é&ª«¿ˆA…5“_$zeº³Ú‚BøoÀ`+‡;‚TP¦µüNÓþ˜¾“U=V “Žxœ7ãí:¦ 9ùv»-myýÕÞ¶¾¡‰Æ:jR ÉŠDöS"Òœ@—%8!"¸µs©¼C*’y/GãäÆï’ÃUŒyãÛH}½»m¢C¥¶]ªŽÀÆ4ìô<ûŸ½ õVƒõ¦­%©dQ—‚Áå¹ý7,3&StNL‚&¹ {s öäľú.Ùæ ßÌ:ŠùM ôÌ+×+ÈÿQ·E³ßJÃÆèZ:ò~£hl8µNÅdšvjÛºœòŽxsaÄ7s.Îác\²úªà‰ \0tmÌú¨i~sNwŽÖ@f@ðaËÊíÓ^YÉ)–Ù*¥ýJ¢¬²'éIõCåðÓïšY«.Á%({nyUa×µ1ò~WÙ—›2ŒX­w.-ÙZ~·;MlLEvþ’ ‚Y¿]JðœÐþ`%Éóe$ß»$%2¡l”IªA>Ë£WñÈ^cmÁ”hX¥¢Ï$åñOj~¤­Kì}*Ák Û±±e‚Ûuû×1Ÿ.nÓ…-OR"; 1®˜äk|G>c3Q‡`sQù¬Ãõ32–$²¥ŸQèu ÓäpIi«¨Hñkü/W¼%Q$ÊaYcHð‰†Ï`¬õŒ†ÃE3EGNàò[Öèó~­GÜ$a«}“„Æ+êó{¯(NLEˆq¼˜´šó6cV{ä¦Bí\XÇ`m­ìc„×xßi“²Ž'$I!³,IX ¬•-ÞKkH5,k€…„äadÚ^¢A…Ÿë6fÝÇð¬ÆÄ{cµ3Å;“¸rh¢mòäãm¶:Þ¦Q2Œ†)Õ)µŒFç`þ€þ¤è™G'¿ò¶¿*—Óäö6¢Ÿâ“É÷[κ(a< L ïòqÊÿ¥Xô<¦·lDFø\ª)Z/Ø Z#I3-H\4]åŽê«0pŒ_k^ÅBx¸wîßzbQ †¤› i*ôÝoeËk£|Ruž¸m KEÚN³jp̨Ýa‹]¤J«QEäÅ Eðá¿uh’: ÈV9«qF×q‘S OtÛVeaD ´´hõ27¨SEƒã²¹Efj[,‡¶ÓùÖ–OÅ›é¡Q„sb+Ø=‚±Üñ¾E’Щúâ½:ç„+&Vê†WÕãî{ÀÌnV50.&³9'Ÿ¸F£Þ8ì*¿&NTᎎD¡ÛFEˆ›¢pÛd±ÃîÒb"•ôíV)0ŰP5PÈÓ«"T(‰™]±[k¨ÍKz¨ÏYM‹ëJ3¡²âL¨¬:ÎIÓ­×k­;ª„›Ý.Ö‹•"â ¾U¬l…8N¸šÄsÄ`K§ËäÈO)¬‡=~Òy8plËg'a˜êçÛû2É\Êea‹­)çT[Á€*ã¥S;ΨÃèÐfPMŒËXÊy#ÇGEÆK³v«(QÏRéë: Á¬‹€¥NIs8üŠQæÒBåF£~Kû¸äÖ†f¹]Ý%aêIŸÀp&嶸«’ªDî1}ððN‹Gèp5¬„Ý®ÝI£¢rǦa" !œ“RR  –d¤ò ÆS¢ e3 &Y`cýÃ< ·Õ‰©š³l$éò OT·Î)+wvh!¾(˜2œ)¹ðQ^M1Ìx£B"Êîo޼g¼á‹óCdW,_ ˜õ¶Ä\S’ÅRaZž«Ùò,‘îJ®îXÒ‰œ³%¦r0A^<ýo:ºˆ-Æ ‡Ç Òùaò%þŒà>Y>ê>"-œÔa¢ˆ‹®))ÜYßÝI[Ö©ú™LL͇ғ+í~ma(kG5^³8͵ççêµð„Â=64ìPA¡:ó/;”7Éœ-;HIù3)|ê¬u†ñ™eÀux•‚D)1èõ=1?l”R¢3é%­´‰Ã+Ñ3¸Å¾£ö©Öeà;àêÞ{ð¨âÌß–ÇDtFµxl;‘iÅœ‰„å°xI5ÇV¿db²a˜çÀÜúr$È*-™¬3vÌS 9H¢ö9m1ÿ!öÞj*a´wTíP9¥ÌJÅxTp¸AÍ¥”Š'Ù©§Œná·Ëü‘¹½,áó¿PŽGÕzÉ»Œ.¨2š"Ûñ>T£õ{Üê' »Ãu—*[%÷l]•³ ÛEÑ Ù- pËeÚüI×Ë\–å"Á½ÏN¤T4ì>ãÛlÚ›=¨¥…¨’ ÜÕ•²ªÀ"ª9³Z–¬¥.Çàã{‡V³|1Ñj#•gTÄvO5ÇHÑuz1ãs¬¡ IEFÇZ–Q†{—»)ßàÛ§+ðµ´Ç ß]šÇwÎ)W䥡åNæÓ¸?Ó@²Ñ3 ņßnÕŽEí&P–T´ ò”v‚7áhz÷šáZ*R ï¢ÃPÿ‚ã¹ÔÈÚÎÙs¿wMá« ïþ£ŽIõÚJX 7C|xÙ–¹ôœgœFñ„’rE/¡›ì)¾/sÙ"ÁÜ«'¤æ¥thÁ„} [9¸ºÈ†EyìdD†=.Á 4.«÷Y“6‘'Èe팶|¥¹8Ù…Ÿ$­FšW:€?òÖú´¬]Èzͷȯ©ó¡(Üå`sVhŒÛ”’׌Œ{AùíÛTD|ùpݯX%É¿³\ýB~~ü$;ÃG«Êð‘ÿ±òüörò¼­nðÿŸå³Éÿñ·þù?¾Òì_6ÿ÷ö*û~þý7›ùÿžíNþŸ:XÇZxà¦ïU*+ ‡“r#dc¯\Ùzé94j° aJÐBXúyD â²Zò1ÁÄËY1!ˆ™ .VÉW¡òT˜â'#…‹;››Š‚òP •Ü,‹™‚±JnÚ9™‹ŸšÈõÂ[7“¡DŽ}â|£†—†”=VW#I£ó[Á •JІú¥×©ã{õî™þí» íUät>œ\€ ´ïÒ1»‚àã+`“ˆGc‡WÂ&vb}Ôá1±lbÑ~dDHŸÊãׂ¼rÕÊÅu½ Â˜¥ÀGƃÃÌîÆBH΂-Öê@gTw±W×î+ùŒ®S¥–0q!?¦A²ó3€ßĮ̂S8ÝèÖÙTÊÕ±ß$»5&•e`¯zλJÆrŒ“À³ºÎÈ«3³"«1òÎ8gíq–t•KÐ^ñµç8ÍÍi2ˆ§>àÛJ’ÉTªÛíRuËEöY£š‚ÜYžéYQ˜ˆå:©NkÌÌz¢Èèólf)‹†qow»m$zþÞhj¢&OÀÔK ¾ð"çº ®Ÿ¸Eè®ÿ=úCH¬ù@3 É iÙ¤Û‹½OFã“Ï"âmjÕ‚i…’Û-\çR2‹JùÅ õ.OÙ­Gέ‰=„ÐQ` ¾Õ€íXÎÀàð¬ûVí稗×*€”v×(ÊÀ’º—·%ÍÓ;í&Úƒÿ@×4z(»oø¸%‹ÉŸÝ øI_âoè_BÿÏË߯âm³ÿ‘«µOñþê (%ŒüS-Š£¢8. ô_Á›8r`Ét_O—£ÐEcøtåß]þ»—uó€xèçÙ/&aE@ýZNkWæñyzÇ ¬ƒY¼ñg£'vòy$ÏÓ"ðÔ`àx”¢c…ÃêöãQx4ž†y{'ñ3ä¬QÎ-žZþÔEW÷l¿}‘û¶‡¾á¼å¾mBm›ÖvÉÇåðš¶ÇÃÃý0-¶¶…¬ØÀôeÈ Ô×í\ì’·™ý˼õ£Ú2£Úu¹¼ÐôŸÉàWéš…+|Šl4á±áç’Sêl±%3ø:¯Íuü[åF¼€m,Ù‡“ëk²0Ëë"^cê'NdÌq£aaqTÙçž¼¼éÀñ0 9H+ ¿AeÕ³®|–bhPÈÐkkýfým•"Ïù¨Ã[V9ñM£Ô’Y:6úÚ¾×öG‹Ñˆã«ð"65Eø4Õ@Ph«µ¾½m.‹¸)wÈÙ»¢;V¡ø¾’Ьìºw¤¤ò*2'å$»*UÞîzÅ*f±~+ïM8+.n$-r±o!Fv5ɱÝzä¡D¾  ŽæõÝ-  Ž=Y‹öÔÔMßÛ ¾MRØ0TE]V!¶¶ow¼e·"UáÖ6ùÄ*ÙàF~ËRÕÉ.aHþƒÒäðHîy#Ù$†ª?ºø§ú‹]äZÆŸüú•-I³l¯Â>ZÆŠ%ÐQB(ó_ñìTä#{r5Ô;žiBJ –~=¨‰ó0 ÜBÉæÛ˜‘ î›Ý¼¹…„ѶF “¦wHì-*Ò§&… ÌÏ·c 1Bî4?Jg´5)à1â¶cSÀ§Ã†ÈÙ/0>Ç|ð¸e“’ ¨xG3‘âñ’ðDìØA„O×Ý#º_œ©!1'¹ÎÂk)¥i%'¦äÝ.ùÚ¶è°(œø€#œØg×sógTèöïï;Žxn‚l†\ŸqÑ0"WR AÊJm)a~òCà¨õ°£Æ ZU:F»Ž£v¸}`<£~u\ñWUÃkg^µ‡Û¨ñÀäµ0¼Ó3oufx'0ÈLà– ‰U¢Œ!X¦É"‰¾ÒTí;{5²×†%ýà02ìÍ0£;+ô¥Õ’bØôÂòõ-N§ ×Ѫ™ú7[ÛúºE+Fù‹%]Zs[©1ƒ4Æ[çP†¯¿Í°tgfK”R­Ø¬ÍÒ¨¾:Mµ >ÿ¡PGÃì¬h ÞÅÓ sðýcÌÁ3mºbPÇ]—eâ…Ei™MÈÁ€³ K«Z…Úb3ù³¶Y²™G{Ì ³Ð?02 +{žeXzJË¢±hzòoÊDZÍ6l-Ó¨­µlÃ#Ç6l­l¶ Û;ò0ëp;V³K•L 1Ó> J¦Pʬ´ó-Ä÷ ±²­L â6"y^+±É»tÏJ¬T¥™H7ÆÏo"† ÄRž˜k’Yÿñ¿Á<Ì´+Õa¢øµVµ\ë°e[‡¹Xu>…uت„íÃ÷+؇°[œ÷k ؇%ß> ëS_™ìCû€ó|<œhøCˆ‘›û&xħ¿á[ѬZu6-jù|³Ôì^ðIpÆÐ![º||»òYpfUú<˜HfTéV”&•нöa­óš‚çÑÏÔë`Uëµ{ŽÀ¸]O´Ë‚€!êÈØ¼"ÜAém'ßž\«[SÃí•¡ô½•ܹŸÁEjŸ)¼ô'/D öÖ™!Ò'~°âAbŽˆËù|JÞÞyWÓrz¿ Ï}m@økMqŽÁä¬ÐLç!Ì¡4œ£}pwˇ»°…câ.ÉO87b%ξôïfi†zåkÛ°ÇÕ¢p¬wd_äí#VIä­¬uß(@âï82=Ý‚u ²FqÈ ÇCã²Þ@<±¶+ï²÷s² ?¢EµùÕuÖöƒ§¼Bà÷¡Àï´åÁósiïI`v<òOˆGÞ|ž÷cÅO¯_Lü÷›w›øÏgùlâ¿ÿÖ#þû+Íþeó¿Z­øó¿º·¿™ÿÏñáÙîÄwŽL0èM¨wúY5Ô;3–ûiø××îe‡kg‡a¸i@öYTºì~§¥û`üT3èmå?«ÝNudÕ AÐ/=0v¼ •Ÿ†Æ¾ðØ¿@Üßäúe…þm"éèó§GÒ©è9 3ãæÒp8Ž„ËîÙÒØ·æÙ5}ØvàÅÀ×Z-x~Ú¬æÔ¡ +ÿ4Џ¸lBÝè«sãæ0UËšsO÷!q:CÛž6¦í9ÃÙøC•V ¡è©ÎѪÑSV} ;Ã9HÊ V“b‚^ÅœL'cÛDüµb”$«˜nÁé+eq‹ìð¥<ëCÒ͈*¢élß±ÿ•VôîaaENà?`9—?<Ögi Ov”âcÅ÷8\ÚÄó<,ž‡‹oœ°ž@Äê&®ç¿>®‡ÿ¬£%ÝeI×C[O4Ô ÿ"×"ó2ü/ Ôø:BûõeXêVßF™ZÚuèÜN£{|§!¡Ô/"o—ºoê¿í˜žwjLÏû•<7ñˆÎòÜ´Ý4S†i²V$lF´uäGEˆpà í`–F­¼˜•ý âþ“8 î?Ê1ŸûÊPÌbÁ—3¼åŽÑñPTôÎ`^¨n$Eߦ¾‰\ÈóOôÜ»Þ Ñ®Øt‚$Rö$¡2Ûôïr?Æ:F¾±Ç"j’PhËÁÖã¶XS7wà¹'.+…«¸^ƒ¸Õ÷¼ò©’׎ë"2šå~ͧŠÖ#:n;(žn¸XI°w›iºsKõAÖˆŽ¨ü*ó½3Sš GÄÉ 1t$„6/B^Íg܈ÃmgRµü­ëª˜–QŠ »m8Zh•Â\Øq™©çûòXެ¸‡'ŒåØ÷}õö¿f,‡Œdô‰b¬•™R –â }ç-ÅX×rž÷=‹=çù´ Ïå7ïy²¯Ö„§qb™îäoŸÒÜ÷—5ä’íø¸)Τ̿óÈ­àŽ^Â+;wŽLñÞ8¿°åÿûùë8>Àÿwowãÿ÷<Ÿÿïßúcøÿ~¥Ù¿lþW*ÿßÝw•ÍüŽÏvÇÿ÷,œÓƒu³? § :Þ<ƒ«/Û/>íÉçøö WAVWsñ dsB¦)+ñ¯•Ìéâ±¹œÀ¸å'tª­àŒ Ä&?2Ò÷Ná•3!ýE’ô¬å‹l’©ý “E­(f0˜œïF¿ZÁÍæÜF'Û04¦ÎH}q%› 0;÷éÔ É–›GuáÅdÆ1yúlYpL.üµò߸þéA‡xu‚ò}Èy}r}] NÔpoh9²¿4?vYd=ßõuüÇYB({wŽ@‡q|€–݃ƒè¸}Þ’áz¥Ã‰MT‚é¯Ýjb¹Œ4øôÚÖšÜÍ|¢Î‚VÌxò$nÝÈ΢ I/ÊS©'tëþŠ¾ÜœìýƒÊÂV9¥ñݽåŸGQnŸöÊ*S<%ݰߗÉL¾ZÒòC&ü 1S}´sêw2zXIÖÈéq!^dNfÆdó8Žç°¶ np³*6¨ _©èüÚû×1ãt,n-Ÿx³ÐÙ4$¸äNð¤Fð’…I’ëº|ƪ(u§¢êPØr|g"[ú™á:/‰¤øìþ«óªâždò…fÒ´?þ­ÛãhÞõäEýæúË=­ucå𞟴>Ë)}‚ÚÉõc5NóÕMj‡YDªUrXÍ UMgUÔÿ”&¼`Óô²Ý,MÂ×+W‡ºb•*Ut9Ð5ÄÄ£ÉÔÛ‚Å7’¬kË~™>gݶk¼õSǾr!&çN¸{á¸åt/`¢kãŽ#ë #Øk°ûTš¼þŒ®é4†Ù4¦?íßÝM'wS´§G÷v×ò†N+=ÝGŸˆ'’ñ¥w÷*‹Pgl?dÇ;Õ”¶D䬌£œ³/€.6÷?/øcßÿ _ þËþæü÷y>›ûŸ¿õǼÿù:³éýÏþÛw>þËÿéy><ÛÝûŸú’  ¦4èGöñB3ÚÜ=É}‘b¤äûZ×G!Êú¾(çÔæÉ¯˜ê_ýŽ©œ/ÌǨ‹V(† JŽ (ÿ¶À¡vàjð8:¯Ôú+Ð)¹‡mõhˆ'æ‹Û;>0ê_\#•ëѤ?Çí»I2žC‹ðÕxž  µsñ%VàI4¦õ–»ùŸ·÷Å'Xi›4L>%sº‰_ÏWói0/bÐô³|Sˆ`2îc;LЇÆLæôV4Ä(ù•c»Q|~.µÎŠüë/鯇¥÷»XRÁ/JUjú`²Wqò6ç÷tdŒ-º‰ïãAr‹¨(S¡~UmC:VódÛŠâ ¾ù‹_Ç“/8êãÉ8ÞÜnn 7·†Zson _Ê­á2Ñõ¯Ê2?æ˜cEž˜ûó–cx>¬–ƒ KêY¢¡ø'¾„|“„üÁãÑCåÞÿü€Ó‡‘+»“Z\‰9 ü^É$qñŠí+ñ¯|9¼ÄÃÉñf» ÿ¶··«b+½`Qõ1Q¼ÙPI„Fkú=Ù—¸zÇÃï©ÿÒ*5 á瓃ŨFŒÉòYòŸ‘…jÃ~‘e’ ®Â:gŒ,ÝjYa’×É:š-±IZ„uM¿OD< ÜâÉ8ØÇÓxD32¨4/âêÃf%ö=¾³ÍW(ê¾ZI/õʬôÕfq¯™öÖ ¢åÊrd ³lÏÄ9ZWš£'ç {;ûÛ퀠FkKªIAm¥Ö–T«–X­#©&¬*©–€J¡]AR7žsÏŠæOçÎ/Å¥½$Š!_.SD¯«EVëàjQ?ü¯qµL#£àG¶°?•KÒÇA.SüM¦oËœqÅÛtþfׂ"ã[èð…§~Ͳ|Œçªž=x MøÊîoà)¼4å“,v¶0g¿ÐcòqÑ ç¡Glâ17•Ø(å#tG+›û­qõª9i‚Ñú+A”·ެê;S_î;£{nåÆÑfãh³q´yùŽ6õÃgp´©æ;ÚXJêº#ØúœrÒ–8#òÑEÆ:“·Èä¸Ñ¤0—OéGcûL_ŒÿÇÛÍýïó|6þëéÿñufÿ²ù¿÷îíÛwžÿÇ»Íü–4ÿŽÚvjíㆱj_ÀæþâjøÁÏÚA·wÚÌ9öÀ|ºébuÏÏÎ6^$OïE"G*çØ«Y”%8l!§’Vš-3”‚Z ÀcýOH ¤7ɃœQžÌ)¥“:¥Ì(§i<\Ý3©Pî¤åÑϽ²‰;¥Írë"vÐã%nˆãì6‰×÷xµ'–ßçÖˤ¨Ö÷Éx˜À–MfIÐ0., ¼w †qŒò©6àEÍèíŒþhuLœAyã@¤°qóéâV¦†êà>LÆÑ½èL®ðÆ£ßÕ â 1”„$ˆ4ÛMnC©Á¿ géyy}VFò.[_ß{n>’àP\O'·”’j²˜‰o>M&ÃoØì¢ù¿=(«EH¨ÐÍ&är‚. Ë{±UÇÓþm©;¸¹M†sf¿jYò*DŠæó„” ÐÓ(&—Ek æ±M$WH»®Ú ëñ¾¦I¯°£Hp‚ût`è‘b¼¡ ç¦1 ôb€Âƒ H‘©›èBK»³ôDIÌ’O·ýÿ“à&þ­ÃÿáçÿöŠxC‚÷ÿý¹ýÀ¼¡ E:MY5eVÙìÕ_me%±(ŠQÿöjØÿ?ÿ.b[­úPìn’O7F½ªFÌ#±˜ö÷£*láŽpN ,¨ÉƒÑ3b]ƒºMYmù†ÓY|£XcÔÌ¥¡EäîÁTø*ëÓ¿ÆñB몇[âZ:æÄ}æï è³FÝw¯ë¦ó€1óà÷)ð÷nÂn5¦Ûð¦û-~Ý7ÖÿZšÂg¹ù—dFS¤/Ia-k_7©'4s¥øñ•šVO,¶¬Ÿô‘:ÒЧêrµJeôvB>1ó~2>ê*¾©‰qüEœÆÿ µq9&%ZkSš†BMù÷Úd0¦Öí7ElV4ÆÓ'sQÍ1’’(Ep «kBhpõä3ÀÁZ?¸ãDĹŽàiíIYœ¼~}Ø­—Þ¿ƒÿ*DâüÐXì[°ÞUÞ¿GÝ$° SE|Ô¡_n¤,\/CW©NÊiüH ©Ó \õ“1ެ’½$ŽãÒ»ý7®_!žJûÓaÙ\Út>’¬â¯Q+OÆ%$•Ö&W$j'Œä<éÍ”mdM{Û*·¼6¹‰˜î_ä»ìð-°1ç€'í~›½æ’ñu2NæIZÝ –í_!ç‡ Fés»ÿ>ˆïXµŽÍ¬?ìLHŒk ïDo€ò(\g2Ö,Ôü©¼î/F$À·}Äýëx’Í·R3j@Ùuº%×Ó«ÓkŠû‚dßMt]šÜ¡çÙ¦<0 /Îÿ'ও[I• ŨY"30â?Ý€ŠåµTH·0Øýþªìtpk\ÔÿdØÅ¢1L rJé…†OgÎ:ÍAàñ-Ì…än$õ{__xÈ53>Áo¹zLØÖ°›™¾^ ê…ÉûÅ…×.ÛMд?î *ÝóJßÃè }B×õmü)\¼hÚ²ê²Êœ//£>`2Ñœú |L4Dnbww1¦ê‚j&j5`;ïÐV¦?Ü ÁaßJ”±Íÿ„FYll[ xõ¤§vMMmåîãtÙ˜žÑyæ#¿ƒ‘ì Ú2|¿å-ÙM“g"ƒY;õOø»©±`4¯byÁÛz¯‚.f¨—>`Sáß6ݲ¡ÓØî÷øïõ¥-ÂÏX¬Ãª Å*¶ÅVyTiý«ÙdD 9hÍ'£¬ÈA¬-3[Ó—kã,;Mï®ß¼Ò‰MÍ·ÉîH(ÏÛP¥ž#)˜DäMn,7ÿ¿xe-60B_`/v#`PÐ7 £Àý¶Bò•|Ù¡{Y|Ž*EüÑÿ£øÇÕbKí×8 –MfRÛóðºÇ-“`I²PH·ÅjiÚ,òØ’—S”’ðÞ邹˜±+:ÆlÜúƒ¸è·_­©”ÐË;{ “+ô ·yª‰¶‹(ë520÷Ðèt<»h·jmÔ¥t]øu§U:-áAJ¥…µâ™Õxô ?æ³þzùlòô¾[Ôäî£ø ¶¯Ã6`äú(RÚé¢:Õ»œLÅöýýÿîùn•¸‹ ìÑ›ðí}hnJæjðl=–u­Ç¬w6áQû¤ºD›g“„eË™gr‹hΓ„:<@™¸^€^!ŸÉ¸?CmJ^œ¢â`2„½Ö$&z{Uû#™îÓ†Ê0¥Œ6P<ŽIÀ©—z]&©8)‹ƒþ×+Ô\ð›%³†äðÃhÑ‘Øìv?·$9äû)>£{k &À|\D•P}“!¬0Èk6XÌfi>Jžƒ×rÇp+éà@&M¦®·xc’Ql’òÖ’_çy â0q²èñ‚~'×Vulà ÐúÿÄ”C¸8¸ÎƆž/ròFÐ>Šä#°¤£æNEö¹ \Ûíi§ßVjÉxÞ´‡ŽPíœÙᨠ‡Ç°ØÚë…ÉÌž¨|’n„‹Ù1#Ž&7xÆ~ß<¬‘Û÷‡œˆ›†¾Y9âæÒ¸ÁIÁ-XT¦ìŒL\LYQ¥^éš™Š% «,³¬?²i%WdpÍ÷–ð)›1þã Ù€ö·LB2Ú‡])¬ñ3™(ȰvF¦vÇõð…Åñ5†?ã²*ªÛaIņ"[ñìÃÊ7/å ˜Rž”ã²e¨ZÌįúz0žŒÑ°H'(’(SEIº±&òÞð›>`î|Ô}Mu;¡$r§n͸´Eà¤ìèöŽé€ÜåksÏ^ îÙ?ÈT  ½ D£¬Œ’‹Rp¬2ú£­§¸RD´ÄUw·Û›°¦ÿ¦°¦lQzêx'MEKS%Cš6±Gÿ-±GÑX†mP?å-ÌbJ÷Çu¾„±µÍ£íƒþŒ5™?ÓäjÁAWÊ÷®VDtе^ Àç]eÎÆ XêÓßÈÂi´›¯ÛN÷Ð,ó#HY¶_tŸ’y?Ã~è×1¿7‡ÚpÁÆðÂèÖ^HT“²ÉrË‚¡v¬h(ü Þ…¿ªô×#ƒ£jÍf#:F:ýì5º½¢™º¨ñSòúÍ‹aêüÒ©©D_O”ÓN½¡Òœ…Ü> þF£qо<ŒsÛ®GMþy$vÏr€.O‹:ˆ+êµÎ@[À'NHW•v÷¬õ²‡ïéb¾¨uèLŽŽ3ä9ryD XÐÓ§Öh_d÷nÍ1&÷UbÅOÏ~)š!cèÇÄ·‡Ey/£CȲ™\ï^ÖΞ0Čƛ‡yý`3Yj…p3ž ¸I'Df<ÇÞt^„§Z{EñÆt+_§Æs=-!}øÐÔVExÂûE *¬)ü"‘‰=l„ÄÙAq[* ËŒKcéd€UÔM°IÒ‡‘ó´ÂO·ŸóXÒ“Ì$‚’kô»dO6A/ÔmIhÜžQÞx /ÊjCQ`*\pWÆÒ\œcºÜ 7ˬQÍ»”€n™îK°‚¨iDèÁP—Phž]Ý·Öƒ´Æs¤ ƒLAQSÉ |ÌyDßÛDÓPœÑ›Ì°ÀG„#m«¼ÉoÉKQ¬„ä‘1Šï×dɪ1Š?7F±åh ÇÆ+šª&{J¶ìÀ5ø\*i¨ì83µ Mg.šjã†ú*<õüZó*Kf¥Øhzš¤ í(M^Ưñ¿\±ÊÅüÔqœ`¥Â_Mõç9ÞA£¿·übçIŸ§ŽóËVz5.ÛNþlcŒÜG!U«÷ð º÷%ÿI’1H>îÁ+E¾5èÑÙ‹*…w—‹™<ȕĕçÏJ¤ï"œ”um´bñ^ï;þ±ÓBÇœô‚„.ÚàûSŒÑ[žZD‚Ùøà‡ýšUƒðþ &¾:SjýóCÛöOÌ¥ZIÜ6uϾã;¼- 5Œ,kÆÑ!<ž1¡Ëáì†ò6;-¥ö›íêž6;5pGC{¦ ð–;?ÅÓThM—§aEúÚÇ5!Bçé­»VJ6ûxÌ‘Ø]ޱ˜MnMw‹Ê|z/¥¦lì_ðøX>ª&+›J'¼îK;œtkS°”ᯠ¥¬ˆ÷:çšv†>H©Ûæ‘PæïTó!n䥊Ӻ­˜±M—dîRe½Jad®‘áÆ£_ó6ˆ€%®ÜÞñ›L­é‚{,<œÛnoÃò6˜ø¨,0 ¡ÖXå-™Œ–Óõ–ŽÕ#€¶Ó 懶çn žp½v±ÇíËy›k­nËziR‚?Ý ~3‘xF÷–æ¼ ·ë'ízˆ¨}dàX§x6þ%™Å0+z2²1…¥Ž´lü°\Óá(^y¼ nõõóÆ+»ÿpFüà£>¡whœÔñ¢š)7ÃÇ”¼äјË}¥\ˆ¶¬/@‰*Q Q1J‚ÞÝò†8›'ºOò$@µu¥eÈ¢“ÁÅk[úÅQ3›ÊW™¨ìŠÃÓv/jŸ7 &=E"˜–1¾V"˜ËŒ’èÚ[]ÑÕ#³¿äÓ ýà·Û"¬ÇXÍÑsERp– QýTìíŠA~-»cø¢1ëùƒÇòð%l_O%¤ª@ i€Ý€ô\EMí(`™-ÜÍ­ð ë>9 <0šà¶Áh%-ÛvçP*Â&²€¬I‰½_Ù%}æ‡Æ‹)•@1~Š`}4¸@*!î²vFz€O"iHð_'¡U9åÔÞ®Å&ë±¾ê>ìú»Œ“8ës lª¼ÿ°û;U×û/ýñü?¢ÜGŸ<Û]ü—Ÿ¿þ‹…òÕ*ÉÖåé`]žÇGðEÀ¸üüL0.µ ã² U±¡êHfK¾‰%ßÄ’obÉ7±ä›XrվĒÛ!v³VŠ%·Â½tXù±ä¾ZsÂH•PÇ:ßNPÈeäïˆ#œÓ.ZS"žS¼ä˜G·¨U¬¼ñ #!Eu[zê¼ê¾Ã™e ””º«UÛuMç~h7ÿk·hÇÏõçtk±Œ;7óJ‘nx¡Á׊·úWލßD8o"œ_f„3ºuŒ­WØ;Ãtk)(”-É.¤Ál‰•D‘ÙæÆ‚„ƒÃ½ÍÐ,°ÒˆDö2ð/é–^ó®º,ÖH”˜¾¾ õ~®ô+MàýíöVVÈi^¬©ñ ƒX)Æ|ÍL¡óª³)¹r€½jŒ‡ãzºd>2®G Ú_)ª§ ’4€¼Äû z¥0œEÑn OvÑÉÚfÈ*‘Aø¡ÁNSQê×M¥‚jß–OV,3KøSÇXòþ®…÷ThÏöª&%YÙMŸ:^ÌÁ üýਙêóGÍt¿~ÔŒj¿”´Jú…ŠM¿pC0Ó'n¡Ÿ?9'ô¾'¹/6('¿•ä˜Aå+åT7A9O”óæé‚rö^TPÎÞSåpL|Tr·:bå胂G÷$ƒîÒxóý§ÜÆäÉá”É,½d.[Oåv¥%sb‘ѶéWorÃŒøÏœ(žŸ¿NÏÃ?FüÏ=lp_LüÏþ&ÿëó|6ñ?ëŽÿùj³Ùü¯Tªû~þçýêfþ?LJg»ÿó ¬nq~Ö<¥íL Mwø':‹.à¯ö)Þ!v L=@®µy‰›¡={åÊËîb5Ø4Œ`«P©:¼Â Ià5r"M¼û§ýs³vØ®¢YN®™d5ÀW§0 ûâ(¾»{°w>ù¡lÞͯT„£ª··þ57EÑhç…"ðØ"©5â‡jnœ4´rœ ¶ˆgsò)žI8¡A¢„>ÒGe€Þläá% ì…$Ø1v+,¤Ýü92yטYVÉ}LÎóíúöùövÏñï&üÝÄ¿µŸ,úhvéuŽ”ÓõX7'ƒJäDG”ØhàçBmk+u:óz…d¼Ž%³´NL|ŒãIã¯EƘkÒW¾PyÑF(_8KÂ|º2‡,æ8)Šœš\„Å>ÃçÅöµLÈ€[Ñ—´ÚK9}åƒxuŽÁKçôRZ–rQBVs˜Ü¸§&¾Útª±_U#úèèŠ6³âj­•|HkEßÇ•QÔÜ趺– s2±÷¸íÒÌ2hŒ’8'¤|öÈÏchÉ*ŒXâËW+3¥@:P&úK=åê¶ØQdÀ௷fš̯Ù|ºP ,ÔÌŽ‘Þ ¦Ù´zØ„í€sàSbÅ Ê:š°9Å.Ù”#Vþ® ²x­UE-j_´[[*ž€ÿ¤ÕÛòŽÖªLV•ö•ÕLZ Xê¼ÿ8OÌê=1õ[¶_áŸé×G™ ŒëÕ _Ÿ»ÀJlðHϾó³³%Îy?Öº9~h,Š™M ƒe‰Ò­]4 b/Ø‘G8Íe9Ã=‰ó“EÖDݧu_ûJ>kÎm{êZÆ;X¼­[{º/ä’&*µõJóÕ:®dK<¿ÎýÏç¯qü€ûŸ·o6øoÏóÙÜÿü­?ÖýÏW™ýKïÞÁcïþwïífþ?LJg»wÿs¡ŒËÚ/[ ¼{³Îiï´÷ËY#|óû²ox„ßVÙÕ½»œ&óy<ÆÖœ,G¤ ôd¡¬¥´…mÕ²G\ÑßW¼§y¢˜¯zër!c[ç¢&>%Ÿ™½Î§iÒ@ðáóçd—P^úÔ!Œ¿hOÆ%ÜÇY€KuQPáóxPhœå!|—”{4®§1mìáns¾MNÆ„cœÑnn5V½Õ ö‚€ŠxÄø¡~çQupxæ›»’Í] ¶Lï¯{¾/Ïé›úz`ãÆŸæ”6Èɸ^)[2ªR¬[[yñ|É×ídÙÜk bd’¡{Æßðòc߇h˜y°MB™Ö_pöë?ófdÙ¥Èòk¯r{ðˆkçš`Ýkš"ž®]4:*Ü?Lá¬(N²¹Úk´ÎÖ»bP•­w ›š!k¬¯|Ã@Tå>MnE'äcÂÕ×½´ØWhyýpñä÷+ÇF‡ök¨Õør1Í¡íÔ=&#lËÔþªÄE­i{þcÆ-R¡XößdJW¶>ر¬‚Î×/ˆ`Nà):¢gzÏ£ñm I‘ãBϹä¶>Ô ,WQÈ-^=ò[£•|Où@"+£º©æÝñúâGI¨Ÿ†Ø£Õ:ïÕz )ºøÔà¿É_‡‡ Ÿ‡‘É»Ágd±à0óÛ™¼Ç›Ÿª8ù ¢°¿XÝáØœOBCCƒƒÏ°LN,Aš+4>ÁhBŠÀxBïKì>ö|/§çùÝ6ú ‚™Q‚ž¨Nï­Òé°úè³KHùL Ø×l¼§ (‘Tže‘lq¦:íYa 5f¡k/Q ÇùŠ![¶Åêâý¼²í}äPø#VY9RN#¿ã©¾Ù³œAb‰U¦ƒ.gNŠÀ'‹_ave¨ëeêZŠ··H |òåN¯er!Zy9[km²þNCð-=@³¿yzÙè,32 :üqtG¦ "|A‡•±´ÇØá½§èðN¦•±c(Ôªiedô9$pž¼… ŒÏÀH‹çÙ!´/ÖÑÓY<©u±L”u«²W~Ô笋Jt—,³Z 2—Ï'±7ò Žðê$¾Ï2Ä^~´ô?;ߺOÌ5<–šÓ¡PyÏô:%šœØYn}V¶µ–)ëoHþ•çUu±q«Ú|þÛÿ+þmqõRü¿öÞlü?žå³ñÿú[Rÿ¯¯5û—æÿÜ­ìúø•Müÿ³|x¶Ûþ_ŸÎ]øÃþk„>å;‰%ñýULÞ¹ì£ý°€ìÀçÓäJ¹Hœôoã™L`S„ŸýO£þXüÐ’O˜½æ—É&â‡dاûm“ÐI-è$ñ®ÃóüÅʹ-:Y@—Pd—ö#£kŸæýf¶)¯7–[f›ø×¨uÖŒ£žhcˆ“7ï_³ÝØŽ%@’Db% eøÍÉts[æÃÖuÓŽ®îˆS#M5:|!þÊÌ1ˆ2—Œ?ÍÈ-fàúŠ2K$‚a~Á hJHpÙí*ñD²«ö·¦2^êlXªáR¥ ɲЍîM*ƒ ,H$ª0Ê{­ÆBé±hÌ-“Æìf² )s*éóÇá'ìm¿$„”J8Ãq'­ ü…¥ Á¤ˆ’G‹)‰Šôk5t¿½ôwÔäþN4“Ïc0ÀNË2IÝ1Œ÷UQ—(Å7ÝT~N§'uý7´ ·¡g ™v`ô ÖùÍí¬(>O`…ÜÛÇ,–etǺ»+‹÷ïJ°)*‚é:†mñ=&“C*¿~‰ ÈünuïõÁwíóV­Ì4oßî¾-ïU¿­î–߾ǒ½x€6ÃâºJ+ü;q3Ÿß}÷úõt1Ås_^Ìû7e°=^cv]`Ìë»>¬ ³×Wɸ|7¼þËOH5ä¨0õþOÔÓÀAÒª Òß] Æ"ì÷x‚  t•!;õâÔdöX}:y8¬ÂEqŽpüÈ|€ÈL&¼ÖåìBl\sn(KJ&¢êž·º?Ɇ9×ôUÍÌÿ”]Ç_V•ê)1ºÐgŸÒºµƒ.n|aD WŧÊç´2.ùÃ(üô[­tJ¶ªsi‘á  TÛüþ§‚¶WüNŽK©ƒa;” ö(èRêWí¹”â^,àRò(•Ÿåy׈›ÔÍ2T3žÙÕø)Ðænò"§}õSU¡«Pô&©÷™Ùn£MÐÙ(÷Iµ!­÷Ä¿1Ô  å¿Ò¾ ANdÎÿ½뽓ÕÞ“Ý¡·øx@¾ƒ¯øo®ók> לYmð«VûŽ7‹ÉÏЪt(OvB‰'^ÌPf½ºÜ¬“ú¹¬ÛÉÆbã›0àö´ÁL1ÌLñ. v°?±Â“…‹â¿;²]ÛšY3'}ç5ÐJ×Ú^=³ÖêvöÁÞD•lÇÊKPŒ8$È¿KXWVcþئþÕ'ó(˜&»Ñ)n.k¡m•Åʼ&çC[Q`i2ÐPñmSç·ÄñiïT¼ÿþK˜ìaäa7’ý·¾=¬ö9Õ@=óQE>ªÒ£‚ÁÈ’èmwB»h5ðû-|¶ÜÑ/à%ÑÞ69 Ý€7+Ûÿ—½wmjãèÚ…¿¿¿¢+{WY‚ vnçNê• 8²Av`â]ûI Òs[HDcžýß÷:ô¹{F#q°k*1 M¯>­î^Ý}­kA>«bkååúÊË ­Ï-²Ã ŸxàÏ4æÇ±ÝTW:¨j èõ—¸úT°žOeÏìP›yE¤² wìOüEs½53µ¼i÷Úë°×TVÇ´¯å#ã œà8%°VØrXÌÙ¼bm-)c»ˆHªä#œNò^F-ðƒ›®”†|Å`W}‚}cC»f¢­‚²úqÌc8àÐÛSK1Þ"ÒÏ„n¡6¤ª)ÔžzèI"¶¦>Áúu2šp›Øˆ![Bn¯¬rì?qâ™L,ð•,G€´ ËHÈKâ”Ão¼ÏÙ„Bd“¶“zJ±ÌÆKå×±JC†—07ã–ɯ­òra‚ª€JV2nº_ áªnæôúÔÕyóúñ ‘Z“ ºýiOÆÃ²E(tN u¾—Ž'£áí£çÞ«¡p?À9"O·fD¬Ž»é€ Gc3z5Ï0Äýy½F+E5ŒJŸL©$»b‹s˜åHˆjl§,ažia:O6óæJ{µ^uo4F垟gÝ,tok&e¥Ý|ºQ]i;ã“ãµ›¨"šWHñH¤;B“€‚ÐÚoì¶O ªBuÕ’ªïk¡ê3Rr {‰ʼnó$ëËЈDÃp‘þ,2[‚ì•óóÕ(>3GvJèÒŒÂDŒ2ýí>tîe=‚ªü0ïÿNGõ/O1X³$³x×k"—ˆ»êïÇ»‡Ô8Ö{EË&-§oµwvéߣÆ1ý|O¾Ëb1èÚþ¾Ú`¼yûî f½Û>´€m»ï:5qHyò1fc¶^4 Ñrt@¶Ó¸c­CÓS~mÞ ~¶;Šý9ã±&ÅÕüdµ˜'÷r$¾=|utˆ¤ ¢5 `þû!ÿ<Ü“¥v Úõ>#NÝ[WwŠÔÚ@Ãxó6™>0§a`Çö­h€Ð&/®»¿¯—@.„O"ø*2s³'óoG1{3X%+²¬ àq±¼Ç¥””iá£i┌ÆKà©õ”ÁVÀ'Ö1Åj]ýo_‰ñT¢®8àk¨Ø¢ºâPôðF¹NW2œÄ%mR]kÕ‘lD\Zž¬ nt#UïŸfÔ»—&lÏgSiê^‘å™#†Ö\¼›¥äzÉêA²÷ªáÔ®õ¼~Ùp;„ÇŽÛÖZ‚( 5æVy毒î%WÁú?ž$0‹˜ ‚WçÒ19‡]V6È®¦Wf€%È~éÆPBëݼ¡¯/¥È1ü®èÞòó— y?§¿£û>þκ¥ãªuÈ‘GnÁ¤Iú°Ï£ùr„¼Ý´m¤hí%£[Se\[¹.°ª@]žÄŽÑÞÔ{‡³úÅ a (2X›CÞQ•‚B ±€´~ÃG‡Ü`˜Þ×r• 5Å|2!+3`¹¥äRoªiØÎË}5Å®Óä´À6¶•<Ãõ•~I1¿y#=@ƒÓtö4Æ+Ùª64|Ç®›[8OâçOõm3›_ü9¾`¾ÙW»#þ¹ª^}ªešd;¯ð÷ê„‘r¬Za>Õ¨y _ÁŒ ‰²ùZ^á¾Ñ?Ø«ÉPéd„¬Ùïð HMî§ð-)†ílGx-© qt†bsúËÝ¡–ÿû¡èŒæw9åÄæh.c¸üVq&k„Âi©Œ±öu›Óo»ëËoѰ ¿*C#VÜœÜsrs+çά°ÿV^˜°ßeW4ÙУ” ãØëëÑðz„[¶þ­ÛüÎ8ô‡x¡å€/ði} ä+T™U{®ðA^² áGEîuä„Ícþ½½~y­ÑuFÌ {ŸÆLÎ@—QÊy˜Lððz˜ &P"LšN².”v"n²>[}x+ÆÄw:~Ë` {ü‘ôz?ާg“QÒÔðþ•èu â, 9€#JàÉ@Fš¬{)” ÑÏ>ò&è%*ËéêÁ»ÿú‡ùõåê¿Ö13”‚¬nPÑ»D+­ÒM³OÉYÿ–®j°D—é礗vÉ¢…2ª_UÙPŽSè|øl¥Mþ’¸&~)hÌØÅµ@EÉð´EPk¶ Œ%‰Ö8Êd®HG’®EÚš|ÔŒ ®a;»J£T1Bù±T%„«UÃÕ*-{dÈò,62Z准ʩäàˆŒŽ¹ÓŸ”J¿ Z¾½Òލxkn·%¨½éÜ:îÃQÈytÜ_åÝTVÇÕ–ê^BÇ¿b¸Õ80"b²pÚt1e¥!dAÞµ\.„ìç0m^]N¨ o& ¸fõÇ ØB¨è´ú³<Øÿ…Düôoñ=0FÛ±Åj;¦bþXÅ« 2`8\\†©¯†½ Sàk3¹õÜV3Á ÙP®b{¦ô™bD|žŸ‹Ãéz¢¦vN#Ñ!i*v`§Ž3ŸßàùÑäÖ=â‘b`¦°Îz:„K:ö°•To” ºÃ F䌇t:ò%êC%Y?ÌÆî(£|î¡DçS eª?{é™Xß^û– „O aNàâD¨nî FßlÌ$l~f9j\á>$ß@æ6ú¿,8ûúž†îë pxO×ïþ¨Ù@Ãh¸óR óÛU"—@C ÷k-¡‡=”eÚ „SŒ‹/ÂãŸ2Ñžx”ùMËý*Ä)à[4•.Ž4‰ƒïU¹¼Ý¡ó^,nYN=-‘$. Xå¶Ú·à˜û<=SÊÜ‘^õéQ¡ä6ªW(h0 “µóU«Ê­Á‚æÓ ýäö3Ëki­ù%Ö×sjyWÌéÎ׃95z‰õ¾Ât %]BI—PÒG€’²Ïiù›öŠ•ú¾³SØZññ¡¨²l¼Šðòæ&¹w°*¿XÕJ¥ÑªÌJ倒›Ð(Â=™ˆ€[ÉÞÆ<®¦ýIvÝ¿ÅKò³[KÀoÃé8½ö{t³’ ƨ+ [Ð|5ˆgGÈR»ÀìÑz‡¬ú=ÙÎÛ8˜A»ªfG¨ .bÅ+µ\…®ð”qÛ~âÎr¨Ù°ÀùE‹†¶QP˜†.AD&Êñ‡±Í/Úן‚!ø”ÍÀGòú³ ÃjÛqLmk̵[­.»ó=š¹øßÑWƒÿ}¾Äÿ=γÄÿ~×ÿ}˜Ñ?küo¯o=Û ð¿Ï—üòðh÷ñ¿Ú7è°Ñ~µÙ­ìÃÿx*?[ÇG´f‡"ÙÐþ“ÀÃûãwï>¸Pâ|qì<”øë°¢w[ýUtOP“˜bè:‰+Æ^ñÀÅÅ‘;eDz&܇Lú ±Åw%ƒ¢U¸Js"” By ýØÅÛóÒ0e”‚·Æù0e±[€÷„­Ù@œqlK•7¨á˜‚JÒå¬ k—ði 楶šö‡( ô²nÊaû8%a¡íº¬9Õæm(Œà^ìÌ@)¨²Ú¸ÂK¼-§@Ÿxóyÿ¦¨ðê$¯¦›ÒŒi?wphÝ_“µÓ¥0§£é•˜Ž±æ‡ˆd€ñ ÕÃáB?ÓkØu€bñžtMH(E÷¡Ýug2–ã_½±¹V¯Ékrã Šé(¹ )ÎGÃ+hôQ»cñÃÅpØûAÀžEìÿׯY³K„‚*I<$X3"ñf×¢º&^’«ÕN÷ò*ëŒÂ”L… Å™ëÓf) VþÐq‰ÄÁCŠr$Ò.)©jXUîñ$½Öhƒ0ÀŠ¢À!ê)õ ‹¤{)¦VŽÓ0‰Š†ÄòH!+IU£›ÄªgW‰h!PD6TMǚݧ1°c¡ zé9NÞxF…»cР/—ÙÅ%c[ -EÒíNGI÷Ö†a¨Yq•&„±Œ(Ö£IҽġBøHR8(Û¡í[¢$üÁ?3¤¸CÛ် †…gÂ=ÀW¦ް™öªž¹ç9ø„g:нaÊá+/“O)“Ká¾;Mn±d|†ÔWS93½ãZv<Íø‚3Ö¨­sÿ Êó³ðÔiÂxáóiß&\R’•þé¡å‰t3B¼Î%Ž_µ%a$ä!#[Ua¸œ(® ki*¾[¥Îíij² |¢õ»Û‡ñÈàu±i•§&'d˜ïéU–ñev>1!9©h,ö 3Jà†ü­ÉhÏç.†’Ð9(.Ô÷Ü^©ô¬ ØÐž›Ùa" bǨí8Å‹iÒ0kâÍm\ûܦPœýñcZnð¾æSÊñ.'7ÔÛV{§Ö0±AÇ€•…†Ǖ)ܪö’u”^ÒØ~8ráòÕ†irÉTÓ/˜úeèKxi¯XÓú‡¨à̬'¼‚<àê’Ñ"c4z/Èæ-Œ¹úŸl":kbŽ>‹f_Ф`Ù&§ŸN&/Ä|¸šÆ–¹e1øzcFÃVêÚ,k” -ÅþEz6J¨LèôÓ€]5,”iMlþô¼R¯rpÑúêÆO`ÍO/pÒ‘E­Æ«gêöÖy×™ÔÔ§;ñ*¹†rŠN«q ^§ÁÒ¾€?oÇ›CnyO0(êÆ¶\Y¨`øáŠ*mø÷ÜÖBÖ·óê¥mÐ8|[ül,P4t#Ëž±ZÚ «í¡s,ŒÈ«dárQi‚u@ñ^9k{¸&Ž_6|ÙÙYý×sø¯.e¿´¶`:×ÿõ¯ç¤¯ø=×Q¼ˆQ7 /ˆ“­Ð¶´ê(ý f90W3òëdÏÉÉ+KÓtõùö–F֫5ÛPÖh~ ÎëÀ¯­6f2VQ”ÉMj•ÝR²Ä*¦,#¯&WIOáëÚÒ«„p7rE”¾‚æé‚™ mÒNÚ¬<Ù¦Ôl’™ì.©+ðÝä ›¾7¥i:ñ«—~ÞËÐèS6´W7ìßx‘ôúñ<¥@õÖë;Ø3 L(ç*]¤rÀøüÎh'Yª ìûs’ã2uN=?PýI$l¾Ë¤¾ æ‹DÞ—¢;Ì“ãÿñ~(̤™ ÄÖ>%p6¼øWQIõC‹·ƒÐáOÊàëcœgöÅ¿E©BjÖ8°%ìð -F7ï-]ú–.}ãÒ7ËÎñsò-íFçøÎÙ"ÛîdßUe_ïèãÙ墨•Æý/ Œ/[G>«ÆNz­§*×Ñ Ó£ªãÁ XÃ2ÿ åt¬ñ¸1à@ó=Óèé§¡¦åšáUÙjÒÖqîWa[²‚êÀ¨ú VÃ(o…îŠMBû tZq·-g©&gvjYG¿"œ;Á¢Â¿m ¡{ÏúÏø"å$ S ÇsÍh+f}Õ’_µßÚ'§krwoû#í y`¥ñÆÖjìÒ(s?î‘ÿa²Ñ›BUŸ ˜ÏabUD¹ùAW|°…Øõ*ËòষÏå C¬j,÷–]ª}£q ujÕÁÂÐUb[—m“þMr ÛC˜ÞµÅÎ y7‹ýÃKú•üÈyÚ"l•ïy–=ß ‡sJd4ˆÝÁ Å^š­“£ÂЖ0޲µtÍ1…¶ÇøÄß hº˜)EðÍNfŽH|Ѓœ’.8ð°IIPà+y±Dm­WDÕ9¨h]]³r£íÓ)}dëàœ\üÂ'ß~`š"² 6ÍÆ³•ö¡ižÍ MÒUöÑ(5tÏIÐa[Ê2vÍ<±k¾<áÆ=ómh)Z=ëë+zê³uàq,T-f‰Z¨®ãrZÐòÔÀTHÆòÍ‘R´ÒûYj9¾q_ÔþUhhó@4úxK2Ð,¨ÎãAÛ‚Ñ_dOí7Ûû?¶w;/íwÞ€ât`¯GLeyt}-”[ŒIž×ÉjrÆÎ½Ë‡·¾8wBM½W ºy (-:ÍA§Àb#,ýýÝÖ+æGÀŸ¹ÂIƒ¿&?œTåÑᇗ2› ðíáŒ*þ=Ùƒìîî¾U¾RVاþwGR8ä¿fЇVsŸîÉŸwüóý[MQ(çýIÑÖÔâ5ü÷Z3@ä'w¨!Ú&ô”tMn7áÿλýÖQ¾–àÁÉ>½aD~Q¤» {e‚Ö¼«#Ä’0–1åWM ñ€ª^¾%þˆ7A°|I\“×o…ü*’ÕûÆ»ÚÑIpÇ?§Ba…FZ¯I—íÃ'Ò= ”h£†4©[–ÕL®‰™l<™7$ú·êžÂW,)<…¯´žØ…5¼^ˆ-曨xìvRIN Ø!p`<;[Þ·hƒ}ò Ù˜$P¶ý.›göŒ;²qì3Ø8¶ü÷ç`ãxf¥µ¾!² bLT¤WX$ö?9FjŽ“}Ï{ßÊ&F³ Û5šAk« ‰UàWÅõq³û—ó…Éñ˜š¥Õ&ÿFØ„KÝ…ÏA|èÀîéͺ+Õc°ˆq=XÕ)¤6Ùßù`ÕV«65®ü.§ÒºpÛ‘¾ 1Fýþ™16æeƸß(t”t G-ceMÜHvÆ®Ža줭2#ši×OÖ¢F¹+IÈá—% 9ð¦êœ uvõë³²ö¤E˜E,iÏÝeÏéùóÍA@©SDVå:¡éÊð•è‰ñÕ®õi|‚ ³ŸQ1cö38Š>äѪsÊtŽõ݆ÿŸû?ž…–—£EûËs2þ—3®Jkˆë¿ ‡KÀÈÂ;Tº3ÖÃDTxåöûý„^>Ù·>9F€ÇÉqlÍZ€2æÈ[ªÉ¨‹ ª·`ºŠ×‚îZ‚1îp+¬¾~Z×´20¾qŸŒ$9ˆ‘‰Þ¶Zíck€säºQ.××vŽu7Ç‚#‹„ò“è6¹J¹B9–µ+•†ú©„QUÿ«˜¡î2„9㹪Weoúàa |Íx¤ÏKÕ›æq:V—:ٹܯ ºW 4²Â®©ÌQãøÿxÚ^­Wöɵcö(e׌± ì’wQMd”ž÷å혂áHï>³ecn º—÷æ¼äkájнBƒëÙóÊ’ºãò ¹ÂwQøn ÜåïuØÁ¥€ˆ<ù‚Jírö;‘ÌeÕdÝÈ}¸;¼ÖçÝa>i\åêÍ(›LÒáy¸ã*˜Fvçu2A$þu&ë£E¶¼¯Ú³c³1ymó›S¼xEŠÈþ]Tñ½ÄH¨Øt§Eµ±Pµ Ý„t.§®ÊÐÝž$C‘r$ ØOÏ'«X 3@ì{ƒ}}=D7\ä&„BüÀ‰ÂÊðY UÌO¥ŠªÚ³ÕÜÁ?ž`‹4bàó·èE>pß$ÂÒLv•Tƒ±.è©%k|ðï_Ú.–P¤[cË”©óîÿxÊ瑱‚ѳ ¦;;]Æ—Ìþì–”Êo—«óŽ[ hõ¯.à7ÚÞ~0HmÑžÏ4PÄT€çšž^¡HC}·ÁÖðYßšôýÌš®Š•L|£Þeç„CA|åüRŠºâ¢̯ˆ95ußÛ—u‡Fptª¯ÓÕi£¦ˆÜ¼°uÛL7–à{%u›Á˜¦è¢v­ÝYdiA,ÚÂ0¾­ó0Þ—qÕ*`‡ÞuV9s{îòH¹û+}¢Ã†_kŸ(ù×1þŶ0}bUPóM®V3ÝÀx]q¸¨Eë^4ØHÜæ»Dfλ–™ä È!S ÙÔDÄp»§2Ô[°£’¯8p« ñ¦x|‡7d+íØ#Åw©|]#eíèðxwÍù:FVkÞßkÀ×^‚“V·é&?Q¼j^U܆‰~<Ž¥­YPò%pÂq&‡™C‹’/ÅŒFY€¾–·a lmðÑlC¨;¿ ÊsЙ¦mL‹œ“ƒ~w Ã6 ¹˜·åjîÉWvþŠ’‹Ùü}zZÌoJΪ?­>jª….u„ÖO䞬¬ø¬ÃA³­ØB08áäRYH)bj;³kiü¨WK^º_T}Ø¢˜ÜsnO^½GoÅfÞÙª®P¼ó˜·”¸ÉƩŕÉf EäÓ hí"1äì PþwÙ¹½_»‹H|b§ËoDÏ5ŸX»ÿÈ÷»OÜj¹Ë.–D_hQR5u¡kæy\¸è†k4QôÁ‡SK,qK¿&›!בæF°†Ï¦ŠY\f·¢nyå1£*ñ*”ª……9é½ù3¬ù`of˜û/>‰æÌˆ¥æÂò³`d¦Ëi—Øü—3ÇÝ3§è 2g]] ‚cêa.§7€¥=9‡m®ûÇKeÎÛ W§–<Ž-°³ä+Ô«EgÖöY#ib¨y­èÛÖÏìb tŒhøí öÕý!® ™Û»5òXê}ªÜÞURÈ´ÑÚ¥V±n$&’Ë1!g{Lq†[3uÖ#_Òœ¾©2Jô3“r—O—<„5d’Qf[' ž_fBßy+¶õAåÛ˜ÐZ øAè |ø¾‚'•þ™çˆBY¯qpÕl°ÊQÁwªxøL²âÖÌûõëÈVü28 ´Ÿ†W+~…ÇäТ;•Hmùë×ô5(nV!€†¦x¾ÛiÉMÀ‡à¨7Rüíu§ìÎ×úÖvÕ › =¯`«þñO”ؾüŒÝ|– >üÇR»ü¿Ÿ¿þßíõ%ÿçãs[™ÖpFO:¡Ìn`Èñ$ŒàçH,†D:F±±"qçO:OÀöÅãrl/Ÿô†ÎÎÕÆH!›ˆ"÷¿®×\^äÉ^9cÙ1W{Y²R* Ý3ºÅ3£UŒ9Ì)è·Ì¥öp[½EÞfI¸¬¬„R\W¡Âh»zÉuõ¸®`‚·“äÁÆLÊ6’Kg¤9xú$²‰µ~Y·oVF¬©ž1Lª™qìReÖ%7´;,I»,Ò.6Ž¿®o™ªŸ.&—n‹øÜPuŽV¶$LÊugÛàªíxts8,ÃËËa?4“n¢¨N›Ž#WâŽÛó/dzíÐ\cIa;,ìiãL`‹»ÚÈb|)gŠÅý[c_²E]ŒwË:¿Lž/Û;wuu9~÷®È åMÍõæ ØZøÏË8^O„Æ)y (ƒ?7àÇÑáÁ ýèœÜ¯ûÀýº€ä¹nX vë+Ä#*lÞê,µ•T²°{)¯ü‰p!}5õ‚_C±ÎZimÙ³‡áœz»H™CÝ-L•¯½a<(ß ¬Û¢ë¸øÉׂÿØz¾½¼ÿ}”g‰ÿø®ÿñ0£ָ߀çyÿãÙóåøŒ‡G»ÿ8Zâ?æz¾GüÇÑÿqGüÇÂðoý1?ø£TÀ †DrîÊOÆþfƵáüñ1JgÀ]s×pßÎc¾¨ßΣ||Ž%Îc‰óøjp÷óX¢<艡y¹Ì€Öˆ™·ˆb€ð164¹ŠàyÓTkíUº!…Ψ†ùŠ;@r ø<”D‰˜ëŸX‡øÍùæéÒ‚+aÝA sBz>1ä 9H³ )x=[}³ú¦ùT]×x%Ÿ-CA — nâ…iàƒ n1šP>cïbɤÉ5z€ÀR½¼3uÀ­–Ë=Ì>V•r ¬sÿŽ:DމÃìâÒ. `v¦ÎÍk0.f§o†-oA¥è£ÙBòêÁS‰<^¥ðª\̬>¶ê>'åù Xâ›”=\xVv§‘ÅgeÖÆy&·Þtv‡YÀ.É\³À\U°§eäT¥Ä\ºêM¦ñÚ”¤ë»øÌü-wJÔ\¹ËÌŽ»ÌÌsôäì™ycnÆ»Ós9Û:¤'|œÞC[ÔõŸ~<ƒ]ú¥hdzÊ0ÇDI˜3Aš^­ÏP΂Á¥eÒ°²FÍŒ²¨1U÷Ô<å)˜¾œºÎÒU7˼rÍóm5ŸÔ­{Y‚=Íò¬S¤Ùµ*lÀ¶ifpŠêÆ.:Ãl=žy¸È S¸˜Gš6±é˜ô%pçy;+¹àq Ž|eéæèÓKžóþ§—¯¥é¢+W.lw¦…iéT8¹”íÌž>¶îÄß[äj ˜%#Ý#>þ÷ÓÃá«o-ñò,ñ¿ßõcáhôÏä{¾¾ù,૯/Çÿc<<Ú=üï‰6'8â@îí¢ŒCo\¨ÐQ°po”!$w‰ž3lzEÝ-—FËy(q ©¡W kþ|˜â…Sh¸šˆÇ-‡|ÈÈ\ß—xE›Zå@ÿI<² >Ž`“mÃO†#ÿZŸRsþ†1Þ%p“ØÒe”u„<ŸÙK 'MúcІ-“M`PUÊûÁôê4Ò<¹½NU‘†ýOiïE€–€k»%<¤/½ÓtßòÞÙ|a@Òö;øÅeà¿mDçª# ›ŽCÔûPÞ“¼—±Å}2ú•;¢ÇŒÉ4ÝÍxÊð✔_-nXÜp¸f[8lKÈMbÃl¸¯ƒ¯µšåᾄöASŽ|.R\ªÞîæ×_Šþ€Y9zͺÄ© ˜—¦Däz>ÄPƒcg È,W œì6jâž6W°¬­ŸsÞÝ”¯á½r³Êï:Ìc-Sß¶ªï#v½Pɸó~rôo8Šš×÷ŸT©× …Ýþ”ºØk?¥†³p/OFÃ[=ç<ß`l–ŒÁ’¢t¦é÷IÂæèlÚrB„ÿŒQ‘[Œýx1rGZ~1Ê Îæ,ý¿A˜ÖO•¡ÊEê••9³ƒç4‰ÂÒÙŸ'D§Û‚\ :ªW üËñ9yhhú{¥ºs(­«¯-ß3Á^¦³ÌIÝt@…£Nå‹…0_cžaƒÖzLàj0xB …ƒ¦¬K*GT–-K5³±“K·…IŠ’ ›ys¥½Z¯:czY垟gÝ,tok&e¥Ý|ºQ]i;‹ÛÍ%š¢m²15ÈUc\eøKÛ¿q­ÞX€®R!)Wër¾N¬€$MÓÑ-™±lçþLyÉm3ÀTÃxj]ÐýIê6(•J¶ e&»O6¾»àB^¤)¸r‘ٞƞÿb2Ð E: ßš+ ¤ {ÈQŠå!ûœ+ ò3¨ · ƒ•¿Ÿ #åW’Â)‚»s÷Äô&$¥ ²×Y×±0›9EÈj2=ÆÕ䦀٠残ôg/­|2héóUöмmÄ ”z€àê´‡!²âéý¸ª0P{äÕ¤òÅ2`lP?ÿ_©èVÙ1²”UºŽ5ËÌd=ÈóU³”  É~fC:ã©]zXÅ6d1!8¾CO"¨Ê´Ï•:KioÛO'ìF3º[›‘kÁÝàh–[de¤|Aÿùå Ïœ§wuÆá€ð5ÆÃÔ8bXþÙÈÑa£­"yGŽEöß¿9hµk2T^FÃÿ»­W߀?̼~E41Èa]“—léWô@N<!N{íðÙl”ô•èL·V <}Ëöîïk®k†ë't¯n@*ÄIqëÐf ÒN@Ržt,²ä¹.E¥„f8mùïÏáTô,L[Ú©è'÷æØázÍ–Èã‘&2°¡0n }qóÜ(×sÇ“…®¦tçÁèɬ.û킈l²¬…вԶ“ëjÌÝF©Y^Ǽö*é†u"f»aéÞŒ—òá}¶öÐPHмwÍÄÁðš­pÏQÇ¨â¶²Ì üµ\}”£µ9oµ/Ì*¯¿F#•ÎaýÌGÈâ¦Ü=©äÝᨻ›àŽÆ4‰œÓÚ4“îGíHîš(^–%³‹ W+Y;'l,®·Â‰Ø¬ÛÿÕ‘Ûýæí0©ç¡fMÓð÷F8‹Û(ÿlŸù:ð7ë ß5:Ïr+üBà±¶ô¥€íø­"È8®®Üzø´Ô+܇L>s¾ ÐÁö»GÞ»î$`kC Mb<ÎR6ˆf@À4NÁ“¬õ4¡{c3¿7ü”ù~ŸœNBnn¿ ‹šÛæ‘b÷×Ü~ ¢Å‰¬DüE>ëd Ãú®ÿÕûjøŸ-ñó,ñ_ßõcã¿fôÏäÜÜÚð_ÛKþÇGyx´ûø¯{€éÝ…Ük´–€°¼ç ÂZÎ.p.`X,ƒûâ<¶óí£Çlì#JÃÇr®*Zç!¤—Ž3Šv™MÄtLž½ Ç Iìx¡B/`?¹TÄœxÅQôš¸J>‚¬Oxx•õ{\ìk>:NÎ`L£”óþ0™à­îõ0L 8˜4d]Ø»OÄM‡‹ˆ¹Jº—tÊ}“ᵘ¸ë€Z¥—]@Éñޏ×ûq<=ƒ bwRÃâ}ÏYm²A‚å°E@ <J4ë^ %Cô³ìö5þtõà]ýÃüúrõ_ë5Éý‰¬nPÑùªZ¥›fŸ’3âí„éJt™~Nzi—n9¡ŒêWU6”ãO–­&Îà“›T| oPÃÃÁ¨„,ñ€K<à¸Ä.ñ€sâ5Þí¾cóNƒ±yoƒ±y§Á¸Äÿ-ñŒÿËid)Èi™6ª[½&ÜGcýêùÓ'ïMů˜Z¿¿±Ò~š›æ$ž¦.žŠg+xç ©WV6¾&pìú ¤´Åt–+lÇqÍî'Ø( ÏGf®HG’®EÚÈÁ|¸ ‹*äu†PéK¨ÄjG«»­²ÊÛ*ÔÞ–­¾²<‹©o«¼þªœr58¢Â%Rœä¤ØÝÝ^iG·5·æÚÔñÔÜšëÃQ³y4×_ÝÜqQVs…•J\Bs¿rôëÎÂðWj¯À %5WqÈf/[ ÍAÓZxÙRÐØ¸˜^VåSÙ“+Ë›ilfƒe¹¹„ïi,ÑÂSW2H§gÒ\êßâ»°â`¿!–úÓ+ XÜ+°tUóäÀP¼¸WÃ^…N7ñÕ%Z¸-¼7AGÈ} ]éÙ‡HÍd 9CÁÐÄegS>Æ;SéA2ú(ö’K<&ßIÑ"¦A Õ8H èÚ¬;¶NÐßÀ·ÓîG[ÿœ>FØØ™æø[ÝÝ›h¦³ÐLw#V,ó†D8à›z…•+|Å’Âj¾ÒúÇ™íFeq¹%æðй£ÇOàÁ3ÃãgÛŸçaÚÒ?ÿ²ÒZß‚Ù|1oªqÞ³ÇÀÉ1º­ì{øvÿÇ|ut§Ds€uÞR±}̯¨B^~Î7&Ëcj˜V»‚öØsU)ÿå·gIÝt¥ÚhnÿoçÖž¨h·Š +öèÌȪmÅvÇ_µ«E~K?—bÁ`$?¹B&Éæ#"ÙXŸ³­Êúx~Y¯ƒÀ•4ÚÉEy,=Àæõ;­Ì€šæ Iýy’:0—ÎÀšæ} 'ENè`Ý$úîCxx°×‘(À-“¦²-=¼bm]ÖÃkî¶ö³÷Ê ØI'ú„FŸ:I4“x¦hq䯃ž_§ÿpÏ/~lÿ¯ÑùøkñÿÚz¾±ôÿx”géÿõ]?Æÿë¡FÿLÿ¯gëÏ7‚øÏž-Çÿc<<Ú]ÿ¯Ã½ŽµiþÖ1fxc~[ïZ'%<ÀNñøgo÷ð^§][<êÈñàÚøºý·^ýJ ´¯ Mt†7è™°³ßxÙÞÀ»„‘Ž…ÆÞf6°Íšè¼þmÍ>²ŸË›«L$é±ÅÚ”½$û;rœ;—/¨Æ¢®X >²Û‹xfå+ª•ÌpÏüj¸ž–`ýæòÓ‚q ²+Ô&ye­ar®”hPÀÛñ$%Ø^T6¡›fÄòñùº+ëÕýýÄ›-9BNø*¬¦î±¤&å=£Dì¢òáîᆶèôM:ž`Óø6©"–phº‡¬È|ž(:ÅÝ]P¾ß ªp Y²[÷K¼Ƴ lïšÈÖÒ5¾36oIœŽ‡YÕÁ{ò&uÎéš,C®/Li'pTÞóÅCùÛRJz¾ÄßË«ýg\"ÕáË7éß8·DJÀwaÈõ[pà!3k”WdRX£‚Æs²QtÃC;¼4öѲ½ˆšñ‘%£þ¯"rrš–F¶»¼£ÛòjÚŸdm!{ø3…«´eä8s¸Ç© rÜØYÁ“Š»Aç(;äÇÁ u9ƒe@gî{¦_öî¡_öÖ¤¨°gpMŒä0$ÑŽ›F÷=ZǺA©íQE§Ý â Ñ °e$߯»ë$UÚ; '¸@k¼‰Ô÷zh'šS§*óù{†5ò<¾Ô¢/+æDL¥:k¾ ­–ÆD/¥ÛçôÚçt%…íƒÆÉŸ1ëgeoÐô`Ù!Œ"%G¡k©zòɦ-å´òŸª¨`¡ÿƒ ,ƒç6µ‹‰„µáôèðxW¡Añ­4Ƴ’†áªÞºƒ.] «ì¨«äL²iOc¥§-G¢ïТ¯P½V¹|U0­§üÔ|a¶íd„¡¬5·Ám‰ÀÅŒ Ià›§ßÄ®bGâmÑÿžý;ú7É-íœú8\67Z€öC™J?"5aÜ—áØ ²7ÙX‚1æÙ¶èRa+“-E‚²Y™ŒÍ¦]»´Lž2¡Qyqp«››Vprü#\#³#¹¨"„®VÈG$—jŠMƒ SªS}i„$b IJÈÙ¤ Sãuõ9»š^Y¦5l ®iƒÝψ{l„›!êÙÜ‚‚‹íf±èòë(Žëö lÞ 6¹vß ÁïÉCP¢érÍÊËsô¾°8ð5²MÌóÛánayèt¹˜ Ýyå÷ÔË·Çí£šhÕÄëšxÿ5:»5Ñþ_üÝwšØïîÂOü¯±·[çôƒ§orKMÇ"3ô§Ó8Ù­ <ã^~ÓwÔÄÎË·ôƒŽ’æwpR“È=âûÍN>[øÂ@ÉHG°û]~µ%PR¾+ÍÝцBo&øP£Û$¶ÍÏÄn%}3ðm`WÖâ$$oH\ N·÷xºúz˜ø´tbÝJ.xl. Òá^g6iqþhBtPçEáE;oE}]¼ä/Eg²Âzø”ó5]i[+ ?ÍÈ— ëø¶}Ôjï–«M‘µáZ=Ð›Äøœ€¥JÚˆãÔ6jâº?‹º®5 r(íß!â@ºÜŠ'»×ã¬?˜‘ůýJ'9OÑ¡Ëâ¼·[GÙV8‰õù|ÎßÿˆùéZí ÍþÄÛ®êcão¹­oá h™.s?-!ð™^7Ü·Ð!ûÃᵘ&YO@¯¯q—Ò¡á##žŒÁã㎥ؕÀ>Ïzè|ŽsS¶ ±"NòHg6i¸¼Æcðº:o?­Óß¶b+0ÖÁ‰uû³Jð uûsêˆÊçî 2‰Ô£œñOg>x5í'¶ÜØf`ó#ÓAå~­B7ó_ê þ8­‚Âá/M˜'ð]§ì ‡_¨*³Ô-‘¦PÐN•æÌÈ"Ê=ȇ5éË.h-M%í¥ƒ!hp"½H‘YÀÈ!ºivw «.nÚz=>" %ƒm$ŒR´Ÿ‡|Ceçx–B+ÊÞ q: Ô}s]´¤¶;s ÷d‹æ0*¨M-RVÍ\5Wýï’— g‚Âm¯‹7±ÂÁÓ‰M€ðœ¾Q}cؽ¥ëýÆÅßE[Àüþ”…7¨5Þ ð°ÃÔX¾NìmU6»1·ÖMÂpª¶‹óÆ*Χ8oLqàSZ5¶×se€0h’çÔÚs”<ÒQϸ£°R±’‰Gí¨gwè(ê’ç]âáÃ6‡Öø)g¸„UÕÁ¦¼ÆQ‚$ïÔ¸ÚjÚn‘iõ£ÕŠngÆ`„¶°JDÜSžÐ@llɰJ­_ôòÔÍòSŽ)c›={&"Ó?\j×`ŠB°rÛð©Æ¡sî‚D½ÊÇÚjÍ¥<^ÓŠAçu2¤˜¢‘IÙ©~ˆU´—vG)¹ žÝ2€DÝuÀŒ¾!zÓQ$85>}|Y7–ÑfU4&Lã"\Ô»c¼´b›ÂQÝl¨.h˜ñ>æèýÛóÕþîš4qè[· ÉÂW8Ç(öøº‡GŠú–®.FÐI6pÊ$Œ%{YË©‡èÇÎh|#^g‚»éŠ DàÙ-®½ã%ןn$Wº´ùçSoeyõV½ qNÇÐÅVvTNÍqóò“ªXë§k|Üÿ‹÷:-ÀˆánT«nIc ')0¨‘ÌÈ3¨ž*sªjeXUî%(¼c,¬¼Ãt×Xr=¸¤J@†è›qÜ /jÈy÷…BŸ(;ehÈ?¹”»!¦¾ÜF6AFŽ$žòf gªŠZÜ-OU§ÄúÄ:[GƒÌ1¸9ãYFÚ’9Æ©I™c=Û4Xl£:“chc i+Ußpw åÖáµòMhÓÉ+ti\y_­ù†ú{Jå•Ó³mÿu‹e`»‹¥.•~oæŠ9·D4°'sÖÅù¦¸~ÏAåÁV}=gõä麑æCΕ"‡,•üC"÷ô!DÞÄËç¯tþi·¶;~?‡±_ ×—èzÏÃnQÃ¥ÞÁPceå¨ê/)â!V]XŸÔs´Ž»¯-suÅú{«>ËÐÔ§cª½r\ƒ¼öâ·"›-ÒXXƒû¨ÁF Sù±zÆ7­…Z‰aT-ÅmÅ‹e®AõÛÚlôzÞžZ'a/Nyûàï3¸ù6s†+ˆRJEtyäz•Ù'„æ÷e"ªqÓE®GÌáž9û'{Ä|_çÿó !`JùÿÔ·êë[[õgõ Äÿ?Û^Æyœgéÿó]?ŽÿÏ€*ÿÛ϶àoüo-Çÿã<<ÚÿŸSe‡íþ~¼»3Û¨Àëßå $Qiì Ôþ~üÙlïtФ¨wþl¿=<¨™?_¾=x2z9ÉŸ‚r}Ä,÷#t@šõhW õRÑñ&üur•ŽÅNzu•ö‘,¹èÃvú·¤ßÏ.’AMü1üï¡ø-ë%t6f zŒ¡‡YÚ#’Ã"—¥µÂ½žB•6ÖíMEùÇ .uW,»LEµqܬrËÄ¿¶Þí·^¶ŽDR,ÞˆÌí?%u_‰_ÄÊ(f¾Bõ—9EÀ14^"uúª}²,—+Ë+?ÇŽ,·˜üÃ8vågäL Ùð%“àôa%±ÚXþj¹‡ ÏCL('±Ó…½ÄÄ}9Љ»øŠIÚc Ñx휩Âãé¥Z¢k²¨==ÜÕm¶:#uOam|¸…ŒYC6j3Vás} ët+ÕÃé5*|Ïuްkn!¿lr¿¬ö¿‚±t™ !…Ž€Ï³~v†<øª…å:úpòíŒa­¯±Å¸ ¾¼ÙÑ£’¦ª@G êoŒÇ2ºÉ8õ\ ’AÏíGC:ªØB]× fw«Ð²ª¦@xâ^¥:윑#Ñ3(Gß°Qó0e˜2cÔõ(‘Lû–Ó‰¸ÞX€^Tçët„)(,‘Ð!“Ôvÿ O¦ý gÍq'V—–BSD_¨붪"Ž»NÆc5ã!(Œ³¬{‰>Q÷p»OG]©Ít×’pÚ0›:5æf4 [ÆrNçÉy<'q¬Š•ÀH§|ºŒ¾ÐHGàû *2 [÷ÙŠ¿=O¤Éb¦=ÅNK ÕtùzMÎèX·f×bϵ‡nùìþÀšÃ ƒÎPªt qR(7ÎŒë1 kÿL”’|°{ú¹ƒ× uÑqOô|âû95uÒÓ ‡*4!Ô†ê¦ uRFÜÁ§´ƒ«˜åãzw÷Öòž­âîέwök]Ô¥U­‘øi%¼Y½Ô9YUO–Žg|XÕØ*—羚Ÿ:VÝËÅΫwò[÷àºzW¯Õ;:¬.⫊«Æ-ã¦*fyªÞÑIU,ä§zGÕbïTÐ"[3°Ù xCs ,aªKØü•“ / ´°Ôxè>Gjok)ë§ç1Œ'U³l %+= ¹œÚ‹ ÌÝ=XuW?Ù{ò³"·8ZÆ5Œke *§Ä4lÓžTp\\B2[nlÅCq¬³$ʆóàDjb'¥ ý5ME²;G MŸ×´ª››©Y1:b|IÄìyL 8Jb|=Ç>c#è oßQ©¡½IìØ•Û¦ïm1ËûN¾ÛBž‰Ç[õØúPVôO£­ãÜγ½G;6¶Û-hN>2R:Ó´ñ×W‘À&Î:×°¶2wUµã¼ ¬ˆå.JŸgÈ|Ï ” ÃÇŒ(RÇDàUµf—÷F™cœÁ@CïZlr;ÈFiâñdpdAKpHf¿î$š»ûíKÕ{NµVuµj¬µ<»hÛ7 Ìc3&R½ð)eÃiä Ñûãh(;)E7šV’W“G/ôœ¬='ÌœêÁxjuð„k¬§~ì˜9ÿü œ$c+ÿ©eDÊ@¿¸ñ¿ð¡è ¶ÿZ>‰g‰ÎY#75™J½ô³! …Òzéô€uvèú±;…¦àö »¦×ÜÚ#оë,•á™,yzþÖkíEŒâðvТîáyV{Qµ:Vs[g:¡§]®ìqŠj’'üE j^u÷_Üùö9Öê[„éàS6(w}o6ž^_G©Öq!Z׃Y±B·™ö(‚å#}’ r>¥;_P˜j¡Büv¸ÛùTbUâ p¶V< nþN+$hjÉ| ÉˆŠØêѸ»šúSú‚âK¢¯,«ãU6Ñ1·aà4hM™9»çòŸîýOXçÑÙ?¶,qÿ ‘ИxU;I»—ƒì/ôk×¢rd¼J¦P?œaú±B %ë%xì¤Z ˆ?Ï`0üI®ÜòŽ–?Áö—×’dv!‡n^‹tšvy[49¼|ßêì’&l¢&ìõ“ m[0M‡†ŸºѤ˜L&éÕ5õ!(@ êrA¦QÄw6S| c=va.}'ïÚ]AÒª«ÑÄ“a÷þ8Í›¯DEÜ݈YšgÆÏ‚ä³[š|V,Ê?+JPÐ2ÿlÇåŸ]ãí“…ŠNé -ØgÛœÆÆ<4ÍÆäµ­…Èk¥ˆ_Å:)1ƳGX&E•­á?Äw@÷O0éâ ãZ$½U@üSQèÑj†¬8¶EªûÉ´„%fLÒ wO«Ž¼FÏ~#(Û{bÝí§¯_¸í;¯'ÁÛX«O‘‘Ã&ž•X¢Óh ‹(Þð˜|]òÚ7˜Lpw“öûÔ®–ÜiY‡ãix¸Á­+– ,ü–”L}ö‰‡m“©î‹·UB‰qáô–ÞG’‰'K`5BŹb}MÕu ©Ü —×µº*îšhÞjãЩ Ì;Õ…ê‘fÔµVuœºä£ÿËÔÏÄ5•†/ç™WM·Ó¸§™0ˆý(…K*/®êÕÐ>ýŠ ÚŽø×oøÐ‘-mÄÔæÌmV0—)l¬ÜûàüZ˜%óá™°s8¬k³¨"ëZi>jÞììî5Ž÷‘ÃYƒòƒütØ,Gûˆ,þ°lúÑ7sˆ¾­2†µÊIãˆÇTë%’E«U2Ëà Ëõµí™©ü† dNºˆ[™¿«‰Ðž/pÄò ¾¢ÆvŽeD;ûŠâ6ˆÙŸ¥jtxÜ9rjã¶TÍi /Ys™ “ЏYÍQ9™£¬œšÌlÃÇ®J0ì.?8]Éo#”߇/w?Îo¼×5ˆrÀpìRþ­M³`;dƒ}€¹Gï &•ý}ù©û ï7Ñù˜{øýáÛö«ü´^AV»¬ ù‘ –_ŒC•ýq»sÔ€oey"m?7<3Võ;EÜnf¯Ä?ñíöÎnÌst^øƒÆiMt~?<**rDT>“;ºóçÞ;´¸ÿ<Űî A~öËÀœÐTÓvç]cò‘Íí‚Ù‰fpÖGúÝ©BzU‹µá úú—d'Èp þz5¢(¼ü‘¿z{˜Ô™ßګݵpž XÖ1‰rÓ¼­.iéÙ½ RþâÒ$ øÓ¬Êå˳Òψ&®Lãh³º“²’ƒvU€~%ŸÂ¼¥ß–ï.®êµCýZÜbñf Ì?'Ça1æ?¬_=Êmú•ûÆÓR§JyÇK5Çö ’ÛvƒÔoõ—<%SÅuu˜'@³ý¥ø([`èðp‚dTÖü¡GY­F”ãé ¦ÌŠT+/ýpB¨hdíFæ}lȃIU±4“ãpµNŠÂDp± ³é N.î/ÿõÙ{s¬·ÒéO®-GØd‚sµÏ ëNw–KÈ]bUAú}¹@TC1ó,Kª-!¬VÅ*c36Þ·Ês©3ªkèË?ø¹ƒI7Ã:*6 âö onqö‡£Ü^`¤½×ÁÉ%(ÓXu5Dú›vÑfPbïÏš÷Ïò¿ÍYdÊye––ÀìaÿvÂ)®ó·¶jÝI8ǾŒLŸå<Ä^ÞìIPâ?*/j¯« “VôÈb.‘oÔÂÃl@+>—€åÆáDh7$n1€ Ÿ D†ÅH/*C„%ýát|ëÒŒ¦ˆµ`#LUHcåy€`Dæ‡Dzw•Á÷]Dû Eòi˜õ|¢èˆU®fÕHE¢‰9XŒ?ˆˆMê¨3W°hn¢AY÷RŽÎZŸ#üœâpéµçþ‚­8)W £&;kgBˆ {\Þà¡LuÐÌËœˆŸ~Ú…ÉßÏ»£rÎU° ¹Í*(Š–Á»¬/¶ γœ™´ä28ëÚÎ×Ó0î:vƒÊÒÒYj%-Qáx~öòz—¶œ¹–.z¸µÐZš?&Ì¢8gUK¯¦ÅËi™À&&|î÷ÙÄŽÿ1þô%øÿeüõí­ÍígðÅz}kss}Éÿÿ(Ï2þÇwý˜ø5úgÿúÖ³º?þëËøòðhwãtìðîi)Ÿ‘ªxÁY±óì‡Ç&pDo”‘;fgcs­^•"îgB#¨(ÎDÍúvØŽ’ÞP줸Ás"P¬iaëQÖÇHõ°Úeôÿ_¤ƒ”©Ú{6{îHêÀ`Fˆ ì5î’¶:ý“Yš¼Š(¡/ÑŠ£HØa#¬€¦ø«oÁÁ©“Z*ÏÏÉšÂ+ŒÒBv™ {Ÿ‚=Ù¤­<{m7$ ¢äax¨‰÷šþm’k#¿'ÛOñcËâ£7Œæ¾Î> )¨4È»ö0Å,ƒ"1%ûECévàd®ã M~­fðÕ}ùê~ðêþ«nÇ¢‚tÄUÉëJü¢DÀ‡NÒg’ª6dÉŽ]!†iê‹!ZU”=dw܈e‚~uåo$›F[«Nolà¯æJ1^ËannHŸº&Sí}.7%¦«MÝ»²7œˆžãCÒ~17o¿˜º¿˜žž#Ç ÞWk›ÉÝfŽ·%ä‘È3ÈG2_„Fž—'´áw äç#|µxäéñ(_磕·É a.ny;ýüìì6·{žˆ²,ó¶—3!ªùkT¦Q Içu—o¦}>™ÁŸu|êvg²¸çð·ÛfR¹ç‘¸ÛBróbF}=¦Õ×dnO:—rAJ÷šYÐ艻³ë.Z«èˆ+õGHÃmBy8r>Ò*Í .mV™$mÃNåcí£\êxÙqŠâ,;þ$àÈÿEþ¶ –è¿¡|ŽþÆŠ*>Ê%n5·ˆ5,·0ŠÆe¡£ ¤?¸}A~¡ŸÊBç•ôiÝ—P\h,é HU£’4/ëŸKG>ß´î²’ëiÀÌìÚ+¢+wÇç#(Ù»˜í¼ì8ͧ<ùçi+ÄhÔkdÛWƒö «L¦7t$ã@y¦§û/è<¢*­ØfUzp1¹ÄšRZ•îWºxÂ.A&Ž3„@K–•&x[ˆ~_6ÊJ»©•ÚMåy¬JÈF#Æâ>w‰¥ôÄj>œYú¿qÏstØÑ¤9âˆü˜÷ÓOiŸ|yÄF<1­LêMwÍ‚AËÉ!œóÛ ÝÁâ¯iʪ5¨!¤’QfR;dߺR–/Pb;s3™PD†Í„㬣°»ÆÝ7‘dð2Ê%Žññ”çz†*«uh_„”c—1ÂþžH²»p>¢}°…€ŒJ†T“óq>ðSÄüg—8\ üĈ!Ü nœý›öîŽàž/xŽ÷gÌ=î÷ãÝÃ?òöß¿yûv§íæœ^ƒó»âµö»íu‡“ët(_+(Ín—0ëÈŸõs#’Å.—‹8 ’³É\~‚ÜðAENÿ»¿¯9cP|÷ä’ïžw&)p>Éó&Éw@™íN¢Ón‡igù„ø“P‹BêºÓXÜä¹ ¤½˜Ü+Lí õȰ|7"w­<-G'L(À0¨t°Á‡¿|„ˆKŸìÚéã9JƒÃ½¦µQPéŠ[(J5£þ1™ÐC¦s""2žç€î¨x—¹ØÀïò{C3Ë·¶{”^  –ÒñÊ+|òIqŽnFM6ÙŒ9 ´ZsÛ¹Â))ÚE¢º³-©ª‡0u피\Ð÷®ºæb#,ÅfA)6d1ڴͨ5jX*A³†ùS‹GÊàj¤÷gD‘gÂ:'_|àÞÿ~+Àîÿ·7–÷ÿó,ïÿ¿ëǾÿ˜Ñ?küo<ÛÞ|à–÷ÿóȕԻÿCãNÖòVjßi*p•²ÇkJ:™í‘ó»PÙN¾”ˆÚLÀ Z=`:¹`kmc¸ã›²7=8¿ã?"šp3»Ú@¢¿çA4$)@ˆ¯qìûK ö̯:k¦s+Ì b8eêÞI)àn#L,uu5æáÁÑ»6EéÐsÌHˆx×`‡µw‹÷™üT :)p‡"Ÿ\«Ó¶à„êȦ! Þ×Ì6­ù»e`šúš:·-¯xçf(-åM,i·ƒìÓ¼9¢$†CÜŒCÜ ’C”spûoPûc´y¾ú˺<ÕL&œcxè©]{Ü#puKAÛz;UÕh0†iÄ oåCõݸ£‘Ud,SsTu¨ò,xZ·™zÉyJÀz„ìÖæY­h•ôÉÚM0j…†Á‹ŠSyÇÇ“…K^âNÚ”ä½ ªÊîIáÆëËihYå¹mAÇ+Ö~cMüŒ™Œ¤«]ÀèšÜ‹mMGúî# wåÅ+õ&cé³I 4Mb&È„p¸‘á 8Ažª[2í˰â|÷â\YQ¤ïöUgcOßM+tF4»à^gy¯ÓÓý•¼G¸ö°*=?û6fd }ëÕ^Ë”2UÖ–ª/ ©Â¨_M^¸gB«ÄTͤ’–ƒ-e.$•ÿ^> ,IÍÊ–SI…OÍÄ4…HªÈ{²d&’*>eˉ"©i3‚%§Åù0|{žÂYæÛÞi@l»rúÒ›JM¦¶ §fÅt˜Ó3%€bùwÅsÅ\tX¤-ÚA[p3‡áÝžÛ`¯³)Œ¢î݃¢î­IQ ¸@UË¢ãbÊIRSÏÞü`;o2$Ü]lç•{6ì.‚µs¦Ì<ÌCÝ…X0§%Awné܆›tç!í¼éÐ)i¿+ºsK:«Us@wq¤]Ñ\a©fÉÙâ±T3Ä.<* | @ŸºG™'b0&µ2An0º…µ{,]<½‡šž®±¤°¦L¥QPS?'‡¥ã2ì1º)w œyÒ4Ø|cííäh:e]>wÈÎ ' ²UMˆ[ y<ëÞ G?tä¨ /–­p8ᬛȕ=Q¼›³Ê³ü¨WÕ;7Ϋ<ÑávUÆaѽØÌ¶”Óʪ™å?ˆ³ãùLuK rUª§XÎ ÁépÀ„‘‚0+yÔúŸ`–XuaCØÔ{ìbM¦=­UÄãÄ‘i_žE@sQ½V¹|UhG}òf ‘rma(kÍÓm‚u"B2#¨Vâ!1­7±òV'+LÈAp“þMrK7}œËœiõ,Þ02ÁpÕ¼z_Z”àÚ;zÁó#[™l)¬WR™ÌW3Ò2yiñ‚Ð%ƒ[ÝÜ´ÝQM>J¼J>ÂBDrQEðLQàŸ­æYxs¥]uAÖÎìdðÖ5&"²MƒP”½¶Í@açîZ–øgµåX(ÐÞWŒš¦©*fVõî«VO¯öãêÙ7 ¹bòaÕñ({¹‚ò£ïÅcîY}öÚ .í`80ÂêDLi¾äÄÜ)€.&>šO&9¦K®cÒ8vLƒ2‚(,OàHè¶lnCâœ9ÖH»É4 InÊAW\t+hÙ}cXåmß•$¸D€ùbÀ‡ÜÅx:â‹6såðô0Tá áîÇÓ \ò o?Gì5ùíì°kó„uÊö×Dû-.ò½b€n¹‰]8RšÄÿÏ ÿ#ß›å'Pó“Ô¢¬ßHzùî+\ñO…~¼|DrüjÝXYL( Æ–PT Õ­% ¤¤Ð¹@ŠÜ›Ë¹`AßcCÊú&Ìé˜0Û—aÐwŠq—àwŠŽ ¸Q¨ä`®z}8Ã¥BWf— íÂàdkIÇdm¸\€Ùü‹œJ(ñäO,XZÆü¿Çf鿬'Z0ЋØÌ‘"iä>)òšÑÚIÜÕËBºx˜ymçƒÏh×.Ç;ÃC>Æü3¬ÂêX+ô€«d »²?^ÑDç,‡ÚYF@¤U}…(pWX&}›«KäÇxÒz’j &¾ZÆ w°p¤ fk!üÞ°ËçxmÿGYžìMûý'Vy§0 5ˆ´uoñj¡°°^ùÐw%‹agffìû‘8¨(£NЮ¾»$×U'«f‰õU7ÄüÆ#K`8>$už³¯‰ï_œ9…W¢äÿ)ô"l¯õ;úò|kL¢žÿσ¸”òÿ©oÕ×·¶êÏêˆÿöüùÿÿ(ÏÒÿç»~ÿŸr*ÿÛ϶ëÁøßz¾¹ÿñðhüætŠ-úÊ"åè’é¤Í¸Ãw'¯ßKË @!Ÿ/Ú’#ƒ‰âkBý,2DŒÃPıhcm£ËÁzØÁ‡½â±Í™‚y½N®ÀôÚI¯®Ò~ ~&ýd ~Kúýì"ÔÄÃÿŠß²^¨KÐëd ùfiî,Š‘Ö Kôz ÚX‡¡·Àc¹ÝÕ­Ê.SQmç©Ü2ñ¯­ƒwû­—­#ØT¶w#§_sùHI¾£«”AJóµÔ(zþy¦3v"5üª=«,Ç)›67ÇŽ,ŠòÀYiŸ¬üŒ¼P=Ü%“p<Äjcù«åä%Æã?Ùöc¾W½Iñïl$¤Ý~’]щSo÷¥ŒùZQµŸ<šPjØËÎÏ¡pTÑòsSŠL·ˆÙdœöÏUÕ¬u]EÄëQ”w|¾ïãî“ZdÞ€ö63w]‹žrººJ1 Ì ëx“"‡uª+2†X‡-¢•lð©"?¨çŒz¯©Ó¾ݧäd¦œ¬2ô@A¯Sãcª&GY‹À»?;÷:MºÖlw E„3Ihž„Õá‰Ðúªi:nÃó1źPscaö¡Ì4ñ3;{ãbj5¬v´ª$ç“täÜîÌ*AÉÌùò½;Ê—¿M·SAN {žJÊÚ_ÔóÔ,´ªÇçò<¥è\ze”²÷ª&p^)wT)¤È)5ßËTû—ªEcA/SAN¡÷îh ÏöšhÞâÚE±¾+rí–F¢Ž"Õ:Âíª—¯_ªv,?Õ4÷L Îá)?.@NÂðE{ p0kx¤Ó{¶Q:ÎzSè@´í&º¯0 XJÝÔ±Xœn~õiº;WÜ$j–³4ê«´[EIMóÚaUlÂý!Qv£ì"޳:CGS´s6År¼lEàhKÆÃU* 4‡ ü—¡3h7Œù+Œ¸7#Çà1mqCg¢mùˆËáçt¬×G^`sê u©<œ5ÛTˆ‰0ã,ç…ǃÔVÛªº'÷v #ãìÚ€ñ­ÓtÔMÎöÁö ¦Ü©17£iØÙ.Êóy';sŽž,ïd‰õ;GA5-ØI<¾$ ç,Ô š PgP± ;,‡a¹$-îïl8̽ÆöªtìÔÔº¬1ì°Ð4åûVÒÌd'tŒ员.8ª Ùž“õÂÖ&ýnnz§Øg)*X"³ÃJÏòè场çôèžÇ[Ìòè>º‹3wž·˜åÊíæºˆwynqoá1Žîꎨ·ÚiÏ#?uÙ^H;ľ¸[Ø‹y#^ØžÆò·6ãð÷Ox#ãmaìUÝÞÈáÅ~àeHIRóæ‚ßwtö^ÐÏûÁ«íh`ƒw ,ðíwtï¾³g÷üž³Êð ⨔ žblÇR¾ÜyAIf»qGœ·­&ŸíÂíûm«{Ÿy¼·#ÑGæqÜö¼µ‹›.æ³í”OmÒs×¾³§öƒ«š8ѲRE›š&¤­înSi«‰{UŒ£šÆí¡÷~EúB’cf·[ÕIý¦nâEô¦Õ™®8elFéu?érc¨³ÀºS1 ªÕ2ÑÉ!³§’ŸÅÐñ^(QÙz=mš½#î°šºFleR½‘9'‚;k·dÖ)¡£Iùœ•]Ó0kXÐâbüvèÄU}Í›†å£Ž¸¸änj9†v ìcrÑâS×OrOÙpœHmSí¤|ÂI¶¡òK‡Eèóš@us35–|Çì£bèp0ž’“ö ö\eÍé‘FgòU5®…ÐÞ$vìÊíáa’¶‹ÕŸ0‘¼±nµFéËàûttÞÇ)µê“üCiõ¡' 7ѵƒ, ®ÏX#:jÑ×@‰20pt›3P,¿O òM{•p‚šsï´lk¶ˆ^£D?ä3kˆò䇿:€¦ú^p *\2÷4ĺTè|LÓY|Øüx_;†ö8§Õ]ßYpÞQžµ¿·Ù:|Š^3ù侨Ñ5Ï­Uk õ5Í38¥ð¥Ç™d#x\kF&ÛÐ{€ßÓ{(‰›€ý>zU"LÀ˜g -`u(væêP‹ˆ °h&—kÖéÀDò˜m®é?Õ¢VRµ‘CˆF¥Qý‘~WùjæP=‘œÑˆHÕòöƒ”B¾"ò6ËíÍ«),†¦Këæ* š59u˜Üªy/êî¥FUìÁW5 ÖU«êõˆ-ä¨Ê$rݟǦWõˆ>­Y|!êBÍÑqÿoÌm:ÐK Ö׃2±m]O®ÿ'ºÿÒÖõÏï™XŸX7löÉÍžj7â^}Ý•ÛãeJkÊ0sÄbd 6ˆTޤ€üCáΦ6¨.gªnëÎQ 2sƒ¤ér+%½Úɳ _ŠœÊƒ -§0&ŒÎ:´ªòͨ +¿”U¥àµñ÷âÙX[cÄìÀbxEYÛß]“RŽ 9¦U(¥Ø‚¨EU¨s" de¢ãQãÈRÔÝís]ÝrâjP±¤1ÁP»²ùبÉÀÌS´2Âêê,®tFʯ(°è9ò}ʱëÔ‡a@¬‚úœMçHgÐý[¡\[ÆÒ¤hë†Kõªý³P«S²‘%ý´8­rWÁg.ɜҺ@?.zUñB{A $ØÛ ÷]͵ጋ¶é—óh0(º)ÉX¼ÚÃ|x¹ÍkÑ`ÆÍJÍ!êçS§| ˆ&A«|‹á¸"hEæ™ Ý¯Ûz r:RçSÂ}@T ›ø·ÃÝÎoÔÈØÈÒ•Ó‚¼Jï7®—rœCãEækÊot»Á°ÒŽÇÐ/ˆ z¶¾¾.;ø*#7J’8•·¡™„rìxÏ©›Âû„µ×öýc˶õŸüF.¾‰˜¤ÝËAöò‡jQ92^%S¨ŽÙ~‹žD¥ d½¨=lëûó ÔëOº˜‘—ü ¶¿¼('CyÒóZ„ ‹›!L·EÃíåûVg—4a5a¯Ÿ\èÕš<]•ûQÏˈÝ9'“ôêšú xtòeZ ß²G㪹14j Ñ® i'Õh(“+BœæÍ¢¢ înm,Í3ã'$/5Ëo­´ŒÅ¢E Žh"ˆ—!Z:dYà)Ým;W›àÙ\¦Ùˆ^Úºê_€_úW±NJ,‰£+Ä¢€ÿÌKF×|Æè㸠#Uãr&Gt´%(Ê ¬f¯_¸í;j¯'Á–Ûí,ƒÕ'ŽÈÈñ ÏJ,Ñi4åµ Þð˜|]òÚ†ÛXöÐÂ7i¿Oíj !Šv³íOÃãnk˜o°¬h²8tøÄˆfŸ!ØVŽê¾xÛY%”ˆ%}áäo7xgÆ.qc¯¥9†¾´|MÕu ©Ü+Œ×µº*®ë´hWæêBõnñVuœºäò/”ªŸ%ˆk*MIÎ3¯šn Ü“§1:»mñ¯‚êì”íŸÔqcÍŽ™á…>tJ[µÝq›Ìe [÷†5¿fÉüblà5ì6üÊlJpz›µŒ Âù­Ì^«ÝØÿ³}x@'g­šüàåÁ;õA“~æK É_D!ÎRÊ’ŸçK±2|×:ùóÕáÛ÷G¿éÑ{EÇêÅG›vFØo6wtE³’Ň·œzÂÛV]áÏgÅ‚¬¶€—Ÿ×„]ÒŸ Jj7 ¼ú¯;’¾ïþ~ÜÚWœïÈÎäw¬Ïð}M¼Î×ÑÆAãt¥õª}|PƒVÿÅÏ:Ì^Ô9؇¯"….â†Ï'm·ÈÚÿìü!©‘r«kÊÆa%-Íÿnxß¡ýšñ{~wkæøýÆï?C<ýÝy¹¿¡¨äclï pÆ×ôW´Â¹ÄñZ1æc…'½ ^Ø5/°š01³¸v’óTàþö¤æ=Ö4x'º•vÉR†éµ·‡k2SŸ£ÚBìši À‡k{ýήîZø=|GÖAR†=ùêe{Ç¢b–{ Þ‡d}Ø’ëco_¹á™´Á‰…h´“Üß°û~—`fìÏþVZhúÎÇB¡If<Ь)”ø„ïµ`ENúÙ³C¾T0Ó×Í(y©g‡ÐÇbÒæ˜°I7L²~(½ wŸõ=lî)X€Ž iæý‘¾ºÿ$?§ï+N@Ø9}%x)ÅÑCãÒ@mî¼¼ŒÿŒ­=-3BÊëò¢Ñdá}Ó8q¬ï¼Å»£×lL¸ÂŒ<ø·¢Ö¸ ¼\õøü|jQ¹ê7-FXŽZíã]'9¶*JÇãj2ë"5³¦¾î|c)Ý«˜ÉòÉ-¬, /×4õVa:•4KºWA·\‰ÆN•ïza ü¿‹ƒ2ÈJ£ðe#Þ(%Sx‚¶Ê׿ÎJD^³p–7Ÿßó“^=cøËúG¢)°ýR Ãt´}Ç æV¥t2|êt³†ÐD‹âD²þß;”( ¯ï®ÞÎ^ºs»” Ú!ߺȖÒç¢ç I•m¶Š¡Õü¸D@k’å-92öwöÿ‹œ¯wŽá—lëÊ Œ±½Â1Lá}EÇêÏ;²g²Rj%Oõ¹:9¡*bîÈ™Âç’ÁÇU<·èfxÈ…ëÛšFë’šC;_Sö–£¢Û—¹e­~ %øÍïkú‚±Bf´ÔVöœjÆ+(òkȲE8u+ ìaGAŽèú·×ãÎa=²I4¨Ç©ª‰œëæ!÷ΧñæÀù$ݶ—¯{>Vnžnõ9·§wq³Ïžs…;ézýí­¥E>¾µHñljÿq“\ @©øëÛ[›ÛÏà‹õúöúæÖ’ÿÿQžeüïú±â<ÐèŸ9þŸ×ŸoyãëÙæÆrü?ÆÃ£Ý‹ÿñ¾ñî0²jÁ!—b÷!™~†Z‚ð0NÆæZ½*c<Ü5R„FPQ¤ˆšõí°?%½¡ØI¸áÄXÓÂ×£¬±0êb¡ÇІ1_p‰¢hÜØ²åc'ñ¹!‚Û ±¡­Ì(+ts©úñT}”ó-v¯ÍúÌL܆5‰-XµùAaI@5(ïL†Xï´ Û¤ˆ1ò²Ãƒäî}QÓ˜YÒ”P™®,æ€PÜ$‰‘]2Šä\:ÊÛq)ö’Ä—aR2­˜þ’ž£K—Ý2—×òžx$éñˆRšsÍÑ3“mnUž.†bKtùF*ZÿªHß™+¾ Ÿg„ÙÕQ2Ì\ÞKïl@e“ÑìJ‚… ·¯™É7‡õU5_‡Ø‚ Üøg—¢þ{ïÚÜÆÍ, >»U[[›ï»µ§Î—ð*kF’8Ç©%-Ù¡IQ|(:vrλ§(idÓ’H‘²ãçÃþŽýû·/À3류“X9@£4F_|1,@gx& ::g˜Êì0’Š(Ž%Ù s‰¾E~4r­“5 j61l9H2L4ᢓ‚³¼‡iæ±ÈýüÛ^0H;.ä}Üf⸧oPKd^÷]¾/3~ˆÏ"÷Í4,‰þVËð­é¨CqÈcš|æk4ïIëôR-rX@ - † TZa= R*RèR‰^ ÔÝ Ëµ@þáߦ:4ôGÍ=w Ð(µ a¢Éc©rHÀ€˜@°Ê(F€"Ù‹AG4ôµ·ø$²y!L¾•ß¼PÍë¯è›LpÉÜž­Øå:Ž…¡“ÔÚ¨¶Lueò5•¨¶ÌÆD þšZTߣçðÄÙÙÇÑÝ…ofÅpÓñ¸t­nà÷µ®§®ÈJ½ÃïW ŽæVgúwztýïì"úú‡þwïY¸ÕÿläÙê¿ë'Ñÿ®kõç­ÿðÙAÙë?|z°]ÿ›xxµ›Ûóà0rhkÁQ-4ÞšW²™Y’·ÚßÌÔÂ…³ /§ÿµröŠ ºGâ7LiÉ‘â6CI ÜŘÇrJñ¬)C˜V†4(ê[ø!õK„ôŠB0Ðuª§éèfã‡qCg°L•+ÏóàŸ˜U‚ƒ°ÿÎûƒuk“ýJa¶Í1*›‘q8òi‹¨Š“NxÎTC†ÒcEçË7d÷çÎØ£çûñ(šyH#U ¢G‹¤Z°GEňȜP©]·§Mé‹)q˜pü„&õu.V5cÆ 3²9_鞪â¾iêX`‘ý$ýV6!e,Q¿Z¶†ÕÑ´·ÝÅ·1a<’5¥¯ € ­¼¨Úe èu,ò,‹ÁK­ïŒq™/}Ö¾¡Ä%úŒ´õ|Lå\–› ¿Âç£:§cb1,IA¾á .@¤+ ¢0&‘X­4GfÁkXæñ”C‹ãüíÇÆÆÕj¨ÆuTpÈ]ãJ‹ÞÂr§0}¾QÐŽ£&ØMCÁÀ½ÖÌEÙ¯f0D4êÇø´h £Óµˆ-jp çû1ø JZ ‚ øÿÏüÛƒûAÙ¬* YOYAÀGAñAˆƒ‚Åás˜‚’† AqCÀnjPÜ?즀RÖéŽÍ Ð.gŒß 9Ç»íIäóápMÝIòuA­2Ño e­ú²¾hL†“îQMfø­Ñ‘·NŸÿ$ÃnMÓ°›áÿ0e¥àIÑïå\þ7)htz¿5HuÐZþîZh¼®íýW¯É“ýøwvh¤£{V3ó2¸<þO~ eŒ,”Æd3ö\Æë^ísÁ/`!!Ÿ¹¤æªkVéÌåJãàœrˆžÃ[Yy:ëLsºV£âž•b³¾_Ét °…ÜN¦St¯7öÐE×ð|RN$I!è´AJŸ”j)“3‘Û²©wŒûÑ…½?$»˜Ó+îu<ŽÉÒ%gɌٸïxôqt€t‰É㊠+&Íðg«¢Ž±As*>„Ì8lb(ðiAULyЕ¨&N±îmöžÆííõWî ]‹ŸaNHóƒ¹Î±5o,øA 7.—SÀ¥¿YðWðü…º IC¸ý%Åw#Òëøw¹¶Z<$š–5`´¯ø7‡€Ý)ƒ"ß/ˆï_H.O"À—1/ýÅzÕÏøö³c@Óã¢Ãý§‚HV –Ê IG6íùÎýEÏ”Á›‡ƒ&<=àéä©®fy›ü0#X0@¡®ñ ìwúþ»[‡±Pr²grú‘69uÚÜÝã¤eÍŒ4›±±2(©ß\–_y€ŠU¡AÊu¢"}>/%ÚŸá+/Ž,ð´PŸ:ÛòHcLºÓ͘"fLÄÄØ6À”ä‰#‹%uë‚)Ѩ ¦DQ ZÕˆöñu˜1›y|KÀ^ߢ£n¼nŠ,Á»¾ª£Úóq=Åå÷¢¡üK'KæeYkØÉæo–¡É^”6:v¾^ä°;¦:ÅðŒÎætós=Â\ñ=âÅfWƒ&d[œêÂB> Œü,°+!uÙGÆh5×ÉGì lØ]> û¯½­ýÇFž­ý×wýhö_kZýyëïÙ³§{öúvw·ë¯vËþë•Ëþ‹ƒœlM¿´çÁ™~¹@Á´±yζ›ÃìU$3§wÛÉe†e%m@8X¯y?>ÿXoï/o†ãä’€B áy*œ\$™ãtïÚí³ §YýþámPB7Ò2“v-§;2#eÜG3¡p+Ññ–ÆÁv>§@aتÁMb9ŽÂ|Ë÷‡t)¦º,Bøœ]Oί’¾Ñ¥UˆAì½áŸQòžŠOÕE™ÊÁ ˆÒ+X*r¡I ™ÿ b<· ޏƒf§qºµ•ÛÚÊmmåÖb+ç´–CØÖšÏrŠ'Ox£õ §x²]aÛ,G­ò†L¢p[!ø–iL®%Ô¡¤a4žÅwœî= $ÁC“üÓáAÛ0KÄ„#¸¯]•1}ˆH©bQÈ8Wì' XÎñªe¾¨>,]Õ®Äf!˜³É‘m’µi4ôBü…–'ÿžÂN‡¡û@]ÇÕ‰`=|HâOcP gç.b¯9S£CôeÕ‰t‚iÕiÞ¨>‡Z5úYÎÂtN›«<“+ÍâêŠWäUñ¤4å¥Ñ\Õ4™#) ?Y©i|ŒÂ Ã@O:s %£}æ,HgŒ§^š`Vì€96’^dðéäúsLÁZ¦³ø†Œ–à®gÞ+j¶ûs=ú¹¾û4¨Ëœ$67Ýœœn/¤>Ô‚ãáì#fTVPýøözxÌh'Úݧ]ïì=‹4¬QNÃæi£Ý®/O:M¹Œ¡c :–>ûjU-eÖ-stÕÃÖi·Ñ-q©²¡¢ß ëðÿÏØ³æpÊæN7“ ƒÎEö0Ùä›»¾Œ@PlNbd¬BW}œÆwŸQ„䤙cQl/žf1lIQ ( ãqßÎvjæ‘>·Ç“¿>#Ù«S²‹ÈíZÚˆ)ÝF…cC),Eu ¤Û+Ë•·øŽ;A¥lâ-ü£d6Ú‰±[)±“ŠM,_Á 2;&¬øŽ˜fnE0auo*€joi7 q{Œ4)|èYYšô- ÔÜ8.ø2­/ÉmA?8hÃ)*qªkkÁ‘·ªªvÆHŪ©Bœ‘çÒ´ çn PÐU–UÑŒ¯Ù¨ß*•²µÖÑ–«…|ƨG;®«ºœð·¼cQ9Ò·ôr6R¥TQ,5®_¥ï   _ Zšò½ õEºÀ´6ˆ³J›DãluuØ=Ê;„(•‡o"p±r=¤Û>¤¬sÄ>ëµOs!th!„åJ$ >§WB'k%tŒ•0+!+aüðWBÇ\ žH[›X j_øU]o;Ε ËyWÂç@[ @êõi5t­†Wƒ*±ð‚¸¢;`ç‚H_Íûàk1àÊ:Õ(^°³ ÷Í,W–úÊû¨õú7XɧG¿”ñ˜>ÄüL¢®m<“¤Õv«3̬-2!|ÿÓ Ö hÓîÁ¿ÓÁQÏßE)‰;i†€C¤ÂÓEøWõ³nwû'ï¨" ×»6þ;ñg/tt|CÍšÈ2Fá£úË›W¯É&Sà2°+žÃ ®qȶRÍ0R×4æ§Æö¡§ÿì»lM7õ&iÚZˆ. ÑWs[ˆ¶TÂ$af‚š{ŒÀ'¿“ %+æ úBÇE“i‘¦)d ^Åù/IÎR¦$,Äv Y’¾Çѧ‰Âœó%û L€¶Ô9ß êz2¹…N\İC iáÒ¥ ͺ’@á-Y·ùh£É*~´lÒ´¦aSkæ˜üA¨D@ƒ}o#5„º©-<¯O‚ÁIðLK€C Y³ÞÆ¡Ha§uЛ3‡öEè»JK„]d±IŸZ™fu{ :Ì€Ñà¤yZ»äÛ”H<¡Š ë#=J!lp»|(Œ´Ñ"b]›·tqîÅÛò’¥ú±T|ØCûš†Ö‘z‡³1W…‚ueÿÙvYŠF“ÞòÆÕ6$¥’©jf6&Ë&'XÍñ>iUŒŽ)R`f•¦yt‡Ýç”)X“ Z+˜Ã¤òÙ›¨`Rm£N»g~•ÊØï¼>Ú!VQ‘}õ˜Ž':׈ šÕ(5m‘e㤠Bùy£‘)[>¥Ú0Âå@oD8¸,aäÓ«†Ê &ϪFž OþÔ­Ñ,(¢M›\ßð(§ŠÓDÃ;ïj1qHadÙÆn»i!ª)….‰ÝÕ'ΓfH¯—o7-UJr=‘m{ ?‹’Xल@ÛíÍ}LðUØyqÓKsù6k x‚´J¡n´IÔèÉx‰»€3Þ[V‰YlŠ‘‡d_™MÐÖêR5SܪÝCI«ÝöÎQ+s x† âÌqõ‰ÏôþL^ì¡Þ¦Æw#v·ô —íž¶iµ[_üØËtaõÛu¢Ý«ZPè Ö#ã?=nö3`;T:ÊÙ雂@% öeWAñ M`]ËŸ¦ 7¨ÈÏ·$:uÞÝ%´·FÞ¢=Y2…RÙéþ–ìuzHÀ± «^†^"Ls+Òš<—ÒÓð¸/ÁÇÉõÅ4]ù+H¿µÒ%„)ŠPY©k( GÒuzñHVÞ¡°ò&](Dég™tnvmeø­°"u:Jÿü="] ŸÐ›wü&½`úa 3é*Õ³(þPÉ"ˆê}K$”6d.#÷S4ùã²·9Ø™h ~ гq¥£LµæÓõ¹–WÆ8ärÒÓ@J8€8ø4ùe:¯½åo¨(A\ Ð ÞÅÚå$|O_'$’º,D2QŠd""™(‡d\=©Ø_ZÎ8üÈúÆØTFãÏ%„@Ì7.šS'(Y­©†PK•Ë—#£L=¤ãóa˜Úî^(Ê2wò•¨QÂ:hÝ#ÜíŽËÙ‹“`³Êâ&IÎtAxP¹T…›FÑOt«.þv‰²vR7Š*ª|]ƒâ«›xs½ÉÄ0þlo4¯ ü».þ†ö*€H=kK´@bì;VŠvíRÎD¹:Œ7r·y—’22õP”â–öÌ–4 …UÝ)y²ÁjKŽYÞE† pB¼;IÊS›™Þ0zr‡ÛzTñÔAR+X×K&ïĈoÓ9ײB–ŽÑ³‰0­2,¯„ÉÖ)2ùš8ánâTc±rKµ%/à4Õ–ÛE±€jK\¯)ÕÇÒžGµE´Ÿ­ÚúͪóT[À»[ÕÖZT[Z¯j«­éºõ6 õÕ­‚K©­‚ë[)¸c†…’2©]3(oÅÊ-ßz1ð²o]SñVÝ*º¶Š. ¯ê£RtU¤úú]³; s4]WdŽáŠ ê¤å~tMlo=¯«ZXÖ«·å=P»íÔ‡µÿVú°j¦>¬úôa’l‚B¬“§ëøbŸb@߇\ì&Sm&̦8V¤Khj…>Û뙚³«Î2tgT*äèχ $Î:™ã˜rgæêÑ(ÏŒµî$?;¦Æ­íì„®t#¼hy÷bã«y´qYÓ_÷“m£&l¹2@ænàÝ”-TJ¨¿Â°"æKéuh=¡ Ȫ[ßW%}ŸB’PÕµ(Ts…¹,)Qo)ò@µTäÒä$j3¥ s–›KF8,*ì©T…UQæÖûR•…¦,QeU3TYh›–ÔNaU[‰æi°‰Ôã÷ÖwI7af’ã Kæñp¾šÜøH±ptL D‘bÅaÑ2è áç—) ÔÔ’Å‚>ã°îd&ÑHÄAŸ&'Énó9Ê Ú¢´¡À÷t\æ3$È8¨lóAéÑ`±bDæÉÝyÌ/mæ\áìMã…¹g’³Ç$€¦Ï˜OԾ밽£]VãÑC›m¦h‚å2!6–?){ÛÜÆ®cT0KSC÷Ê\<{¦¦üx)ìêÂçWWtHÐV“fŸ“³Böà]¶ ºõîûj·)üKñ²A¢‰û$V€×Us€~ס¨I©¢Òîoô|TŸÕÉ -uFdüÃ&Tq¤|LgG>TúÇñ…`2‰¹ðý˜©öB^@’³©E‘2§žvIÜ¢ ùOÝWÅ~©P¬yÛRõ­ M3ÐÈœàGÚ“=ÿ†fØåÄöSžuŸkž¿WÞqJ´w•ßÓ6¼I6´¶Zº“$á,¦–챑2óÆ”FˆÌb s]·¹îËÉíWóCÓ×q7cR@Úá|¤ŠSÉC«“œBÍ.)ƒZéÓönØ6ûúF¦g{ãb@ Êæñ Æ¡´Ô-#¯wäÛilsHº NrOâVˆzKT¦üAä¬ÁQ@$h; Z† ²T²Ë}#Ùe÷=ÅßbUw딕µL²'w)‡Ò“:¹Ï¿ÌGÕÑ%¼Ä_r¡ †ãu/t`ÔU}µû;N¹ IÔRƒÅâ'B௒…_L÷”Lþp¶6î°W;T îP”7ì¹xƒßszõ¼A¸M܇‚r³‰<¡p‹—˜âŠ÷¸å·Öí'3±t’¦ýïåñÿÝÚÿmæÙÚÿ~×nÿ»žÕŸoÿ…éüO·ù7òðj·í_yó?nM}ÏC5ý]:'dm1SßW›L)“0áÉ)1&4Û%—åß6‡¤;O¤+I$‚X$Oä¼Y"÷Vœ%rk½µˆ¦ç1ZD;Í÷²µm3:n3:Šg›Ñ1Ññ1[Ö^Çã³H®–1m¸Ã´ghc¡™Ïê²-iµ­ÈšEWw[SÚ‡kJ›@ùÕ‚2BõሬßHºª,¡+Kºž<¡Û”’Û”’&´mJÉmJÉmJÉmJÉ•Û[¯ÞÚ²‚†ÿ›NCh¶Äz6Äó[^Ÿþñª&â mÀâzóÉ·FÎ.(Ï’;éU9çÛ8¿zx6ίÖdã,‡m7å\§ìasM“IóÙÌú fí)np*1¦ÂQ-muêC#6ºßÔ4½N%óôØ©Rº?1} i2ÛJ=ÐVêñýÍ믥ªFžYbNü‹„N#:„±)2ÛeÂmÒ,*3™”yÌf²rjÑìTaÌsÐtÛm'““¨Õ®Î@V¹ðÚe–QË ô<±øã7Ne7È›x»é¹ÿ<̱kmÙ\ÂÕmÑt™ê´ì¯Çt ¶a kÛL&fþtdF™`2ÖT;¤( %9ßÞ‘ ®áìIMöæR„N´*@ì-ôÞÜ4V“XDc|%«ÈÚ9A·Ža-ó¹–tgM‰L\Ü s´Ó­ÏÁàôp…¦´‹ò¬þ|œÏhÔ4ž #äj«b‰æÄËJŽ «dWÏÇ„è†}?Ç@ëæ¶™æñpŒJ¦©"‹O÷в>VKºUã «i£Vƒä fapI墠,$ï‡èo‰Œ^2å ã­ã@{öüËqE1hS3r Ýßµƒ/béúê‡ Zºn×cÚÿŽŽýïÓ­ýßFž­ýïwýèö¿ëYýùö¿û{©õ=Ýß®ÿM<¼ÚmûßVŽýïÖðW{6aøû(,~[¦ÅïÇ|;m}ñdŒñvf‰?b -æÂ†½.]õ[RÙ(ŽBåÕêlYOoãóÑå:%Òdòý¡iôf¢‹dÍ«: á”½QŸ}ð\W&i.;Z6è KgXHúÈäÔ¦«ÊA|T–µsØaê@¤%‹×&H£%“tLÒVg«¤¨»¬“>ÇD}9ƒ±ºM‚½†¿–u­l&'UØç!„ÄÂ5‰ìªŒ^u@‰ýë/fD³”âkYt’€½::§9îÆl_Møk3}µØ‚ :’¦»´ñdሴsÙÊå™Ê­ÄRÎe(­ÿ¢ó4öfk4„£YÚÀMÚùäþú‚(æ,VK÷ÛÇn«éI}s#¸qi‡Ut˱_@µ&Ôr ¹D¼Hh·{¨*¤Ÿ‡5Œ¦78:î­Ö¢ÁÑöáቺ®õÚ3P¡ L [3¼<éýQã<–dÓpüû MÍÓÚ²kx¼† ö½ï\—ö­üKû%b%ZiKÏùòc PÈäÌØí4Ã]à\cÉëv~(r]mË$eÂáé9E2ųסˆ+6™Íà*€MM/}#Ü¥­uŸþ›UàL-’8”ˆW"y:HT2¾Ö…rB z¿l!ÕÛ/è %±§îíX‹TÇB;Cߊ;9;e©\œE¦õ%o]¸¯•eÑÓÌC!•®ææQšx^Ä·1§—8º[€Ãõ0Hз†×ž[CÎÜ׆êúʸ­1ïÒÂà¯Àöþ±Š´Pª˜9ºieKòc¦3¼Ú!Zxbe–ÕDP$ƬzîÌlÈ+=Ü´  È¸œ$ˆ ¼aáäUàñïÊT€,q´ðSª6Ë#™ÙfõVÝÉ–õ Èüw6m¶j*”՞݈#ߤLó­_O¦oT# ÛyQ* œÀ"u{Û{´ÑÌlªëuÏ•šÕ.””ò•9„÷ƒ `Ò® LG*VcNà8„Ø$°³HR Îˆ=¡ÀA~š—ùç±Ú–øWAü©™Ð?å$–Õ°0O|âUÞ1L½¨°ñÑ÷"š¢cãsnÞÝŒir7™ÁŠ¢ìRúfÙ“ì#ÉCkÅ\m÷PÆm»÷³V¢jHûtŠ%× „šËábnESDK}úi§?Óç#DÈK8=רuëªv»W5Љ´§ç-סà©S_L~¾&!9ʈï‘Oâ!Vm¤Ž<¼ÇD¢ZhMö2Jö’¢)„¼©“Õ7™)ƒ÷è@˜ ¤&`Y{bqÉÓÒKDŒäISv0·õªCòôš¯>ý»KžN[rOÛºõvMO:?ï@õUØÔ„=[›A¯¦}ÂÂaÞ͘Ðй¼‚õèeQÛÄ>ÐdQäÂíº[ÔÔ%Í|YÔ ¤˜,š ‘!&«ïu}^YT„eØ.‡u-‡ÔÜèŸ I§ÎáTŸN&BN”üÓU_@€]ý„Õ³ÄYc­Ÿ гž™u7ú(ÚÙÝpt%Ñ¢Ÿõ˜¼­Ç¶D+0é¤õK)²Â°õ|kµ˜ÐÛ«ËÃRŠš{:Ñ<|‘×ó;½Ð{%{IÑ…EÞº[ä= ‘÷i†RVBÊ0Fn}—ÆÈ–ýo´Àì¶ñ?7ôlí¿ëǰÿ]ËêÏ[ÿáîþÁ½þ÷¢íúßÄë=eÿmÏýH;`õ.ÉÖþæþzk'÷òÔ™t««Uü¿>Ä㘕J»Ñm a"Æ »âT‹Ñ’n6B[´µÛ+ü¦ñŒqë5[Ý×Áaëø¨Køˆ)Wæ{Xý,ZU ^å=[‹R÷ð⫳Ó[³æ¿¯Ys·¹µiÞÚ4? ›f ÕM4W1ƒR¹R‚_{Bâ(ÃÕ3r"lRV†¥['ÏT›IQ Ç*£ó,U‹Åúܶs®o*:kºa=\«3Fë᪂´n Ïó Ïç4þ®‰ØS~©íí”ÿ<¢u"Ïõ¼VÝBžz v×ÞxrÜâëXD`¡°h\…&f‘ h­W˜””jï¼>Ú Ò÷Wbòµ°bftŠä=ñ?€$X þµçIsöxM˹.gÄϰº%bãñÌf’/‚®-ƒN„H!ú郒 ¶æ³xç"zÉ,úSQiŠ:'r‰Þç€!llhzç²î¢¿û¥€­ÿÿk *Àôÿ϶úÿÍ<[ýÿwý˜úÿu¬þ¼õ¿·†ÏR÷ûÛüŸyxµ§õÿù»êVûo<ËjÿñY_øÎJ.Ù¤®Ÿu(µ¹Uþï·±D¶J÷M(Ý·Zw|¶Zw“*¦Öý›¨Ý‰w5µ;`‘7„M=ÎÿV¼Jmðß" I«¦2©ô(lùË·˜6Ee*pTyyò¶;ð¿~_¢LúûáŠ+²‰¿øÛÝð¿Zÿ…°ñ^ø_o2ʆ²l(Ë®T³îÓœ¯Hcþò¤«bŸÀ° úhë¯ðúèø˜ŠÑ¯Ó?Ðà¹ï@åñ¦y¼:íMh¡ßª’´2eÂþN2öÎ;uúxkw2®ãNÀñŽçŸwÀ4,«¹yù£_»¬Ÿ^ƒ‡¯eƒÁZ’™;<Ñ(qõ¡Z6§ÅÕO”– žÎ®áàŽbß;ÝZ+ }@OzWêÖÈ2 Ü'¹agÚDÒuà|À.µPn©°A˜ÐHÂjVU7¼Ð€×­Ä@A|¡¬ùp´Ð2AË ®øb„ø 7«Ñh¤"< ö‚ yãa²\Á¿ù×Ûr¥'N‰² ¯]Úr4Nl.]sµR3‘e38PpÛ/’ÕD÷î·ìÙèš„y&‚®íŸäñæÕÈÓòåíê©•ð¡Ñkóè)]^i)Ùš$òíjʃT{où¦pAŸPnB§ñäD&)šDùƒjÍéRù¡ö¸9=B“V’sx†¦‡5ñ ‚ ˆ™Eq2ÒîoúÇË8‰ðñé² ]%*õ&‹âíàE×A¾ð}€ìƒóÿÂ$¼Ö¦ÂDìݦÓÍ «A!ý[G¶ ¾™QßÃÉ8ÈÎZ³ÆåÎ\³Æ™8>6S ëÐ`ÍjP×–`«Ìñ»enøý¬†V9êÆ—ã•Aü9˼9˜ëfœÃ‘þ.)Ò‚‚­Ÿ–¨ à“î+ (rå¬6aâõ¯pžàvÌTðàÀaÓ‘#L|ÿæµ-‰L[µ7å ø…ÃøÆZ?Æg ŽP(râãffP§ÚªµÊ/`Õ:ÑmÕíy1jÒÚ)Ô‹®×ªºúol YW— Xl‡˜s Z/Bk\Ä’kñ‚ö¬Öt’ýéÕåHéŸX­sÔ1ñq£Šú:UÉ5|„~Ë^#®Ä39èˆ#¯äêNd1<䪂0uþ‰†ª¶ôæª+˜yÅ>†;Ê/Ôßs·•ì/­eÌ@”¦GÓ:MHaÈ{>rD–î!GZ¹$ÙÊ&IµÞè/94åëµ§5¡e‘TçEBÕI” »ÉtžÈ(©Œ„T¼uz DBÁaQ Öë‡ë¤bü[Q24"MEÑsýW“¨¥œ|\ÂŒç(ãÿ8àß]Ê™ ?\De&3}Ú61£4 Ô°¡àYÖÚöAÓÁé¼fn,/üfVSr€d)õ_­ýKC˜uk%˜.Œ™j<Æ8é4âæU„š0Ç*ƒå˜“©É ªvOV8ÔæÇê¼#o ¿ËèïîJ\wmd-:¤§$D©‰ö¢¢=Er¦Ê‡ º‡Ç’ù<;q"å½pîÁycÐÿšÙ‚^zœ··×_8ÿ4­“î)œÙñ8§óçYç÷€ðÉ@ÛÚ¯ôwËqâ•ä¹…~:ÕxÂQ`ÙÞ Q4ý’¶>>6´ze¥ $µ´Ë”%¨µì :œ×EáôPŽscCüëþ¤·G‰`TËIç¼{@.¶õ0«ß²×K·ƒ£âˆDh…–qv<[ÿxò³³³¤Êi:'סuNh>xS}5:§z†ÎÉ,?™¥s¢f–P9ÕÃBJ'­Ð Nõ°Haœ‹o rÚuP/k‘€+t ªœªd«@Œ¤ëU;uë›T<ÑŽê>T<"Å·Ù‰¤"Çî*u©Œ²"_¹$†hnÕ #f µˆn©˜2híReÕŠtK0CöaÞ91Æ¡ž6ˆ¬#=ÍÍê4MÉt/®q²t“§zA“ÝÏBÚ í4Ô-¨ƒª‡é¶ë–^iÞöë†.kÎó|}a­T'­•ZŠ„—&ßÕk¥VAÂËj¥Ü¤¼^­”_1d᥵\·ôJÅ5RuC“µ6úÅ¿ wtFõQ,}”¡XBª¨šÈêû’ú(­a>Þ f"¤œ®3'ì\rÌ"ÜÆTWuq§«'J+ÉÇäx¹FÕV¬Ó]‡CV]Ùó¾¸ê*wNV¨¸ê°âªEÆU\É Ûd.è¯rZ©¥0- •,qÓË,Ó"æ\.ùEJ'àžöo·ð´Oš%žS1‡¸BÖ'kÑר·^tí¡ÐÔu)e…¨ô-ÕuK_÷Jè5W¡q æêskÓÇŸÊ­ž¥r+3ƒl$µ~ø;zÈÿ½Óÿú üÝñíÿÿfž­ÿÿwýèþÿëYýyë?ÚE©ø¿»ûÛõ¿‰‡W»íÿªÉÝþo§¶ E?m#˜Ï&ùiÔŤlØŸ¿YâÖçtå?…¾þÓTÎâœk œ>»„5*î¬|¡7'yø#„ÄÉ_z†uëg¯q·gÿÖ­_Uý¶nýHÅ`‰ë4v7úð|aýNGLkÁh'ÞaGऔÈ£ƒ1i½!Œ-€Ø²ÏM¡˜2€é"1³W;×¢~íMcÚæ‹ Ѭ!d‡°È-!» Åq Œ…@z´¾EÑ÷j‚š+˜ æCrLPQû\û]쿱¯»x™ëå¾^·ö7äËÞîùQeÿóã‡&ýÃ/º'ÇÈeüõÑ1H‚ð«à€EÓ^I'òoá .!=FOoäEÙUöì*s8‡¤ë6‹ÖýÉÔ &ƒ6—ÏøiQñŽë ©|礿Ã#èõ1Oêø( !èé|v'åul_ØX2Â*Q¥–€Ðê„Ýkù4©R¡®YAÚòSÖŠ‘…_rd­„Æ6–Ö´É„€+H²k’H[Ï¢¥z.1ÕíøÈ©~k‚²2ãfSV´Êš³5•¶U?_crX×FË$ËéÆÍ©ÜËÇa¶}¦jVAËø9]„ÄD²D>+ \¶õäáIíoDx TÙƒÏèÈ¡{ãi‰JŠrÙ¥4@å¾Ñ®`õ&÷[G½t¦Ù®fFhWT°òzò#™@ffZÞˆB÷¼›ÝÍËݼ2V°ŸÆæ~â~Þ]ã~N¼p?{?ÿÕ‡¹ûùëtv\•ju=ûyŠ­Á$¬«Ä¤Î?j0¬¥7N©êNØœÍà{®bï[Er1Ú¥¥U]~uOl54¦}!Ú¶xÓª†`–—jÙÛœÀ¨*7<Õv5k;óÐØ’"Íú¨¬ß'~`s7QÉ"MïQÎÒfó£å:+9Ê}Öÿt­¬ÿ§íQÎäd}ê¬tR§joŽz»õvJ<62Í']ô2˜D>Îf)à´·‚Ý(MkÕ•œöª…O{Õ¥N{« ¹¼m3!>:¨¸Ì;Mt(ÚÕha*Œ¼dP¼e¹_f4螌ŒÖmsÞÔ-up¬fý'†¡ê;[:8>+zp,vl¬æ/­C`±cc5,rp|VààXHîxJrÇOEŽ¿"øçµ*‚ÃÝM;ÖÉqó;sJêOíÓ:ïÉ`QêPblê·Cæ ”¸n¨‡Ô=dfêFu‚ÈÜ+¿ Ul—zꘚ§œ0ŠlµëP[H+ù3n.À©Ys£*î…qjø`ÌgÿiÙÿGë0^ÄþÿY´µÿÝȳµÿÿ®Ãþ-«?×þþ^Êþÿi¸]ÿ›xxµ§ìÿ£‚»º‘Ä×òèõO'ƒ?zGß»¯ÀƒÌø0œ dÁyý ¢ëp@´tÎINÔ÷˜¯d뉰õDØz"l=þž®Dƒý£FÇ3C[ç…‡â¼ääû®Ü¤ç‚H€'\A8Þz2l=œž Ñ7ve` Zº¼4\Ê—`±çˆ]„á–¨ÆgÝq‘Å­€V ï D+úí.@æ ¸\¤“)ëõT?³uâ@u²]ÿ¯ÈˆÝîu±ÐÆ/YÎ Joƒÿ”DU꿲´õÖ÷ÿCS°ËPi§Z®‰®íGÒV- æß„ŸÍ²ÙâaðŸÐˆhé?ècª1Ñ”F¹zL­ü€ZE£ieXÏ´( xËo¸d¥‡™ ÝU\„ð¡8ðX¢çò%M8Ž›+äebÄ€A )½×" H̸gó Ô<„Yf ü$Æ ­«xY^”.RVZÔÔ!©™oîý3§Í<-äræ}+?é0aéo•í(uÉrÅeòŸÚZý@|UJ¯$sá:Wî ÀÊ¥§ÇÛÎÐ¥Œ6ÍF×)òÑîNó¤ \ÿî$—²`knVÕ96«ù†Àܪ\;•>> !;E¦-Qn„(u’¬†YDYumá&§ÂÑ&YSi±¦£‹”Xd.¯ÅšŒ6m±f{è~‡nîÐ)ÔÌs_æü!Ô˜š¬~\DçÔ/®sʲk‹–0lÛ>…žÄþovv>?”ø¿û{[ûŸÍ<[û¿ïú‘öë[ýyë?Ü{¶w`¯ÿ(z¶]ÿ›xxµëöƒ&lå Wœôkb??l5^Ó†Þ>„Mlÿðg Š}ÝQ4 'ËÐaþ=lã?xº“Ï1YøD@ØJr9ž\ åZÑçÃëëà°ÓxÙБäözxÎæ$ðÕ ŒãAð*> v÷jÁé›ß-м}b^ÔL‰’^ë>œ>ž:y,pÜíÓ¬.kö—˜îyÛi­_cac?¢Ó žÎF7ÃYÌn=wñùÈ-"„¹ pµ‹ÙÁ$VYC¬¯Ù²á4KË0ôÝ⑲ ëc4A›Ü »¡ËÑx4ûJ_ É0ŒÊ\ ¤Ue…p‡c…#¾c£*xwÉ&ƒX‘Òu6ÐU šíȈÌÊ’¶¤•ÍžÿáÄ\bø2 ¬ÞRP.`rˆt…29Ö~z­×7†ÔÕMŒÿ¾ÝÅÏ-“ÁðG÷ã Zr{¶Qa _IštL]A«JiÙH³{o™7: ©¤m4)ÅU[¬Ñ®5žŒë÷€}F»†fÁ5˜K¶ ÁJ–ÜôMž¨§8mÓû3íó¥M¾å¹CëÖ’M•bÖ’M‡¹¤ßØÕb‰‡ …ô%Źº¨†¬ÐMæv¨Oh&üK%»Hß «K«°fÙD[ÄËÉ5`:5VÅè’iú'³‹ØTGõOµO”¿¸4Â?03-Ûí}ª_]”ÿýÅèß_|úŨÀ"7 Ð'ª~3—ƵOUg%¶.™àF†7²LÛËC{ûx2ƒå~ßÅãsË y)”N§À±h—=6“˜6 džÙ)›56È®±}X•Й¥jŠ6‘ÙíÛ‡ôVÓAhL=açOJn^žexY`1ìU”¦€ È6¯Ýo¢—«–8ׄ“K〬¢³{ò¶ÛÐÝF—eÀÄÂÓ!.â†Þ’’ŸKj{"bãôˆ†þn7ZÝß»Ð^ƒEO¼fJ§Çî[4šÄo½ý"12Gzß2Í5MôŠbÇ̉l„AB£êôùJ•I. `Kܹn£aÕH¢›ñÝÝä.8›Ü/8¾Ä%Ðç…x“\[_&7¢*dLwfð´Æº¡âëàøòrt>Bu¹ Ñ"/©S!!‚à~xb„ó41k/^ÑMn€ÄðJ!ÜÄp~‚€pŒ¡)â;Ž‹ƒ´¼RwÔ8\Lâ)S`±Œ $àý™ºx_BAÒæŸÅ|ˆQ‡›óᫌnpY7GmuarV{¡K«%¿Ñ䢜BªhdªÕÛwÝâ*¸pØ¢ ¤ŸÌËVáf£pY~à+üRþM+ür2þtÿ”5²¼ÑAl/²W}‘ýmB96‰C½w…"Ú^®ë5·—ëk¸\7ã&-0i&‰;²ÞØGïéÊ{wWüñ›Þ¯ ïwRº(ü9X9; E2uÓDŠˆ¶ãáùǤŸŸcŒ1¦Cy_‚EPò,ÖÔø¤VÆûAÿíQðû^«s>¹»‹a+ã€ù@íØPàc©Nu ¾ ÁÇ’>0#ýÕý…R[ûUt8b5"÷)Q¿êŒ_ÆQS\Àt ® aí˜N8£ÕÜõˆ®k‡ó7Ô›ØaÅ‹k+^ßL …áõ¼¥)ô—”±{ÀÑÇÖÒèê2ZsUT„’éd ý2š¢öšDI[œFÉI'& Ó• ¦d‡œÞÀ SÁ]£±É¿ªá&F  š`ˆòõlžIä¯áùL!°5ÊùvF9yö8¶ŽÐæB³uOð QS=9†† “an!‚Z4Ϻ12­€$$›Íòã>a¥2eáæ¹b‡Jk†jÙûë¡È#8;ói©–ɳ ?Ñ8—+øçû2þQ8°¼ O ¾þSå 2±‚wxvˆY‚6õ– @SœgþÜ¡C®È4•ó-O€‚‡Xu× å'pà3–B91éâðâ‚@iÈiõ&,STîOø.LoQÜÐáˆÎ 5NPßÔn°*a\D¬Š¬’`2D‘;ýoàbN¦i•¤œƒFjÊ\TF$T‹J¹5ÚÔ½‘1g1'çµ»©ž÷mÙÑ÷*¢+¬ƒÛãQ“;^»\¨¾í®` gòwÕ½ò¬‡°Âû5ÜÒ«­ºÈ@Y®¼§ööví úf²¿ë}¥?ž0K‡˜uq¥#wà9W,Dõ¬qô2GχJ[Cÿ® íiÁÑNƹ&  mÿ´ÚzÆ3Ô¦“qûv'iÞÙIFÞ1ìÏ2‡ý§e‰¹­rL~c‚‘©Ö:.?¯’E:»\P.r´¾rX|Í7ÄÊÃ(onO]²·"œ—#ÈS}îln’É‹$ih®h¦ñøFK/˜Ü òtžõú6ÈL6¿úAÎÞÓOæ ÝJWÊÜÃÜý7ŸÚæå詉0fÁ5ЫÚFi ‹î¢~jÎÝç£æg‹°ÿù1{SL?™ƒXt-Àû­Ïi‚Ã1úÙs@:W»z%ñÝMó§’g]£òqèV[¤Sz¢í£ùaBu`%¸*µ¬‹¯hX«‚÷†ðgG×÷š„&][fŸvɵü}r=ùD|Sv®ã¾~a§ýqø<\6wlqpFéþY9êV‡çª<:—µ&S'h.•INÓ¾KXó`ü§i "1–@4W4zaÜ.xxÌKí@ÝH¸tÿL:âQ‘ê ï#Óš/:z§èfxþmgcVué9pj xŠªr‚|ó£Èñ9¿#­__ ‚G)‘ÔÌМE…¦ŸÐcdoa¬… ìl’\c§"óøÔ'æ¤WÈX¦ô®œÒŸ½ƒ•3Ѧô«àK)mˆÉ—jª\.sš"òuœV7 Šv½úÍU2šÏUR¹Óª=a*®Ý>£ÞU8Ss¤ÄSQ•錈“†ŽtàS’f‰›~M,?Hz>Ýš Á: V´ïqÊtÑÞ¹‰sÐËE •cpá½U ¼—‡pà‰•O„×1ÊvAìë^þ¥ÙÒ¨Ò|Gï’¢}Ïø©*$ŽÈK~[äáÛ÷,Qºh£šFýæ)ùû‰¨D=À»‹ð:1ö_-“Ï~ûÌ÷èþŸ³»‡ãÿù4ÚúmäÙú~×Oâÿ¹®ÕŸÿ7ÜŸ¥ü?¶þŸyxµ›þŸƒþjý?ÿö¡7íd¹€å\¾“`ü3Ãé=§˜æjjú#&mÒ×M –æÄ6¹3ÝÔj\H&ÊMÓNŽJ©r)¼ºlºÞdK}r¤ªU'“ð€Ä6Ï?ÆçW¬¹ˆQys<ºüÊ–ÜÒ3m:2ÍþFކ[/í—á7ô2ü‹œ¦™w!9¬mý ÿ~…OæpDrºžŒÑéýî+F†£¡Yå¯Ñ¬¦ùÐìÖÜÎkrPüæ~A ”_-(:›ÖÔªÃk#R²\z£sØÑ(Áp¦ó\ªbW'j´–=?r:¦°5}~fŠ>‹ã± Œ°ó¸\šÒ‚áüA…u$‡`úfµÞ0>o—•x ­Ø)hcr³g¸D®{Îýj?sxÑØN7['›T•oéd³„Ÿ œ ט7!,ëá%ñPº‘,4ûj©õ˜>eÚ²ç"×%E}vcRÛ‘å2 eŽ—¾yI]ß ³ù|<æE"Ê@B§“($«’£/²]ûO÷ÉL°)»Ó—iÎ+:Ä»¹7ÏeÐê÷}Ù¤Ýÿ\NoÖ£^àþ'zv°ÕÿnäÙÞÿ|׺ÿYÛêÏYÿ!þKÅÿÜ=ØÆÿÝÈëݸÿyuz,äð~-8mÕ\;ñ1gxîô~k`¢g‡€ÁOS& .ݳÀ##d0LNp7:“± _¡rï5Néçi¢i5ƒwÃ~Ó§ñðîücð’"+Úùo®‡Õ¹®«$-ðÄ3Eº¼¢û¤ãÌl“D@Ë^d•P—$/±àOh·R!Yð2«ޝƒ½Ž1§Áõè*VŠŠªwû¯zÁ+4ÑšÉL~¸Vy¦iä‹ûÉ-ˆæèn…†¥×·‡! ¿¯ˆWÉ ýŒ¾¤DSVƒ-šï»ªnŒÆ*’_M^šá•F-&ù.h˯&xh‰,™øN`Èx×ìù–sô¯@Ú—º}¶†w>“¼º¿¾z°€üK0˜es4Éø½§¦˜¿ÀnÑg½™y+÷B»!ë¾,Â&ÙèŽPÁÕ„“¬iøík£¬¦®©|5º¸\°nFš~™jLSY5å0ƒ¨£oÂ÷ ×ñ¥¡Å9aí4 ôÞ¼r°5ŸÔ]P"ÍëÝ”ºã¯ÙçšwXÓAÊvÍ·c²uØ£^y¾<œÚ Qô áˆà<ÈŸà|x“¯ƒg8Î_ žËíª†º~ÿ£˜xÕR=Ô (ý À‡]Áq-xa¬«¨1uƪ•óË×8÷Só²GÞ€‰ñ»aS`RÌV™„(Z¥eIƒ1ÖH‹ƒ“:®3³êüX”ú Þ0k£D5KôŽn#@¶k@Ðæ1s<’Ë7Ic‚£šiî›k }XÅ ùÌ,}5’~üíùÆ÷X¼Ï¸ÕÒÆöØ">í*Z\Ì6w  ]=4‘¾Ž‡ð=Þí­À5¿†[׋›¸èAAŸÉvfsãGòQà¿#÷ *ê™Ø²0sÞ ÞaÜ%a€(âÅI¨%¹áe)¡Œcø›¯Ê‚i<1? @„NÁžZ3Q$bäÀ¸¢ ºxWÒ­”ºÕ°ü$Ú±îlÕž`‹r„ä{ìöE<=‡ÓKëR &¶M2¶w‹h]ŠÒ/páÑ8*žPÚ}Þ­í>o×á¬óßtñ[>dž¨´_t± F=j¡¦^orqñ‹,Úº4Qˆù£ÂA…C•Ò‹\Ì0¡Ð÷KÊSNm%°º?œp~V¢>†{áJ <èÐ%ƒ…¤m£rÓnÔáhÌ8v&)iv¼½Þ²(ÙéÚa^Ç,ÌY.w3CVƒ9×è¸0«2¼-/Žaç°aÈ‚niȽS)Ö­ø j #hð]R}˜4&üv¹ S¹Ncv¨ëNf1,iè)[žP8ŸFçzºã]Äs]¤¬.ÌõÜTɈ§Í4Óyô¹ÞÍLëÀy¯HL+ƒ`ñ¸NÆl½¡Ž?p\G îU`¡~&{m[ŽyŒ94…¥-©‹L’ 2!ºˆÏ§e/îæ ¡*MïÏà w{7ùp7¼=‰¢} 96îF¼€Ðb¯Tn‚r1¾ýêþŽˆÿiÃa&!BáÊ£¡%ZÍ9š´Œ$¼ƒ>`ü.Žº{s{‹Ó2†p{ªI% âwo‰YèßÁ5, ïî»a°»{Áî~°{ JîîJXa šr/÷ƒP¾wá{m”¢(ˆö‚h?ˆd‰h7ˆBøÞ”¬öö‚½ý`OÚÛ öÂ`/‚ïSØþ~°/Ëíïûa°û{ð½KX;Evƒƒ08ˆ‚ƒ½à`¾Ç޲žcf±sä?'×SkKƒI°9µ<Ú oãMFÀý`g:€})*óÌNUœ°àZ×ìã]ë"4D`˜êg˜ËFiÿùÓ@†cí\É2ñ7awCð{ÙhÒÐÑjÒ‚¯gG³BÔúЊ÷+£ÖÙž#NèÃ)½bìÆ¼Â9ï1釾×KZô¯S,ÝFŸÖRP,% Ù<­%¡Z=DšZ+úºPOzq+ûi<ÅRÒJ†ÜŠ]R.&­$^Cà¶¹–ĉ6Äkc ~Trì “ÙG¦5œ)2šO÷løCSï¼Î`FQX¥}÷Ž÷¼ñŒ†)ñ4aar`Ôa8cãÑ…0ê0œ0N0’½ÁœÃdÂ,Áðø2³ÃAÚaøa\aÀ$¿ɇY…é‚y€æ‘“ ?KnÅ#'ö’D—ØP^ÉÞÒ÷mÉ»ŒMÀxÜñx7ãÉÚŒ'gS0?[ÃYýþjYý çbõ_&Ë1zo'–`ôa-œÑ§:‘ËæòWÆå4N+€½Æå¤.y·.„¸ÉÝûôîçÝ6µë¼ûpd{`s\í+Ì`¬wóc…[W’üƒ›,Ü.ââ?,¥FÇÙ×cé¬þ(jòL¡~óìžõ µ•ZAwNÞõ13Ýv·NOÑõQþ>é7:B#Ä@\ÞVZ·9.H1®WðÐ.¢” ìð‡Áø?Pk¶þ¬‡¯Ž1 CÿôØw;kž“C'Šk0¶Næ40ÓôM£ëޏýE˜DÈ‚ZMÅ;‡UvÇNšpdeMÐìš5Ä<Ó}iQ=¯ 7ö$ St©?¿6wÝkf>Ÿ ¶–¾á4/CaCm‡e¸mºî²·WyA+ïã9M¼sÌΟÙå-ãîã,P4°¸q7Ú;,eÜM²|)(±1w“”Žùo+ŽÈ„@©ð ðt[t‚K¸+˜M¨wl$豕ò.ÞüØ!D…Y8¿>vEMb—ÛyÓÖ:Z0/ßt¬ªä^_ÿ–ÔÃÇõ³¯õcM³×ºäY\£[Þã úÜa÷êãEŽš¨~¨iÕ^5€8e=#†-ˆ“ÃÚElžîŒÅulÁ2^b„Íãà‰Jî8LåÍ>ïhàˆK¹ƒ®GéÄ›ÞÔ¡ˆñÊhM”uA‰$OP5ós%5€Ü7g„2Í ƒo¨xb‘MÅí,WS°j©3H:¨WjˆS%ðà…\ÌM%ǹtCª3¼Ed´V°AÝ}V¤TN?rïvö=ÁêØ%ç,(‡‡>]R³ü‘†–¡fié—5µ§AFwÊðÒYÆÅv}8•‚]4ÐËEL5²d‰¥$'sÓœ@ûóˆXjWÙ¬6K‹°*‚>è b‡F ±*:Çr0Šaa1ã•3?«'ùÁúH~° òš“îßZt-€ØœSX `  â°à0HVÂü À=aó,€‚Ó•A÷žWÞõ0ï†óÖ¿á“Õí:o—ÜuVÍ·‘À¢Bóä¡XËóžßøbìzµ¼Z®0÷ò]'7.F ~n¼jV–=(¤¶q+N q°Õ²/碘‹A¹¾wÓMÜE+À›ÀD·9ÆâÒH¸qd3˜E™za1(¬Ú²x!ËÈëö68¿¼ž`þMöù—Èzv{3y8KÄfí‹HìóNvPt³[l­X›^1 ‹öî©_´ÏŸØ Êöö^¶Ù^_­«—í—Û HŒ©I&šK¾ÏTÉì €›ð—aîb­%£°v!~š˜GÈ_ŽûåFEÔsÇŠ$ýe¸™w‰,/í§¾t”K™w-+ÓæóÅͺÔù }“ú|W‹š°ä†¢º¿¤j¥=ïJãý½š»MºY/7×ÖÖV;#©¶þhMê¼·½ÝJ{¾Åµ›Œ€ÝþÒ\wyZXB·27-dŒD6Ç]–&Œ¦W¥[™“&«b=b{Z“„˜E—obú™›KeP¤¢ôEäÃoÀ£Ú߈G£àQóŒÂ2”° ‡Êص桇‡ÀŸœ+bSÚ_—À¶:õ¯MŽë×ÿºZ\ŸÀædó.ö*a±æ*‚ÚŒf‹c¼(¿tîóÉtíMpËù‰e‰ƒôbk2ÚÏæ–‹É3 ÀXÉ1{‘M¶½q‘oCJÁ,Â]½È·4—s²•lóíì\QòY…зkWÚß„ú6ÆÆ2F"ƒ‚Ç€ö愾%ù“oM¬Ch~cÓVx-eÚy¯ê]Ó@;Ñ@{M»»lÚÝ5³L»ÛnÓîn¶i· Ëx‰¦ÝÝÓîî¦ÝÝ(Ý€xÒ›:I æî².(‘„RдÛÀ¼[À°»¿ZÃî¾qI±bM° |Šà¬WeWb°–¾cÃ=fO¾9xl¹J—c—¢+àbfU‰!3Y ZÑ-·$ïêÛï.sßB0 ñã¾cØÏwÊèêø-¹=¯Žt îÎ}Çî,FaÞS†k2Ð)gð£"ØnhRNáIÏ œâÔWœrì =ƾ0åøÛJÏEy_Æ‘cõ¼o¥&«!àn´$wWEÁ»…€Ãù(xEÌo¥¦ +Ú7ý#‘‚‹ý-¿q:©g®cë*¶EÿjZ³†:KŽ\ZAí#ϵ駳\Ÿé˜ûùÖ/‡ðA¬‡nXé*|Ö-L:8ÉüÂd¸ir•Ö»…6–E¤I×@d`°–ÍØO>ëØ‘RÌ<;rƺۈL9‡{õ|põ2åÒdÜ*b#ŒÀÉhWbòÐÉל5lë.×f»šÍ4g42ÐXfÆMFo3Í^|›5œí¯ØpV‘òZ g-è›Ô—nÌpÖCaíÄ”ªÚpÛ‹.˶v'•€*¾&…-¡²y…i{n¥ºwc–¶žMn>âɉ ’Ašxæ“ ¼ÄS˜—Q9ÍC<ëm=òí¦¹k`€+5ÑX 뤳äQmY*Þ}$4Üž“†WÅWjѱ’Ý3c$20(ÄçÛ==¤óàöÎÌÕ¶)½êZ,½¼~ÍêÆ,ý°˜1ç·\1‚•IÖ–À ÝF8YÍüFk—8×f ìßx1ÿ¶;õrÄSŒæs…œEÌÈ¿…Ĺ~•êÆŒ‚WBÃ6ñ|ã³Ó®AÃ߈DÛÖh¬S¤\›‘ðJ¶ÇŒ‘ÈÀ` ']lzßË]+ë3v¾¶"d•L.9uybeÜ=üáÛç;|®‡˜ÄòÉÎ]Ì.gw£Ë5´±»»ût?ÀßÏžÐï݈?Ó=Ý Âh7:Øß;x /vÃýýƒý»kÀ%õÜOgÃ;@åêzx?Í(Å.³‡»¨ßåù_þÿõÿó?þq<<NNƒ÷’£àwÿøßà_ÿþø‡Ÿÿ¿b ƒA_ü‰5þ_ø÷ZEþ§äûÿý|r³3¼½½Žwþû~x7c¾‘ü÷Åð—ƒÝð§è§Ÿ~9^ïF¿¬ ÃÛGÄú_ãêÏ[ÿ{ÑÞ³§öú¶ë3¯öÓ·ÍþÉÛA«{„‚Á ßJÒÊpâ–„ÐÀ‘3‘E½t½ÆËv %L[†éj÷vövÂr†¬$žz]z9Á Ag÷3θýê~¿Æ ú<åü·˜Ð§Õ<Þ gøM?žÆÃ»óÁËx<‹ïjÜÞ®ƒh×JUø©×5¬DA,ÓÉåì fºÆU3üczÝÏ£ Æ÷íxôyÑÄãq<ÆqMv©÷/‡×£ËÉÝx4 šñÝU|­io'ד»áÅ$8ŒÇ0˜|‡Ýxtf;;¯€Ò q&« q÷á^e@â¼ü­Ño¼4Òe¥gT”u$¦â,T]ÕRÒdƒ’,;ZtäðB‘üyP1Rq៽û;L¸¦åãï™öØn¦"%gŠ”{”-ResŸÎ&H'œÔ¡\ʼîøréÑÔuàPuìÍNã4D*3G_˜Üfod.zÙ= E‰¤8•©´Îj¤+zòG>¡?(_`—“‚‹šzÊoFþ«â@V¨ÜtÞºc:E°z‹À €žÆÇÔF££Jêi±¤hi¨X£]j<×ïÇ£YF»†fAÑlWÍH¬ƒ7¹Ã £b†%¹ì`õ_1Iœ˜i–?a¹ÌX®%,ß}>žÕòýxö¢[yÜw´ìÞœRïåð&iú·øîf4ƒW:œÞd ß}Ž\Ž`’B—T®ýmå*¿ˆ§çÀL™5™kŸ­b´üŸèðiš²$p(ak’£~÷y·¶ûü :žäe%}Å/ÁÕ‹.öZ–Õ`µzˆõj“‹ U«õÊÐw$Íš€R5EÆFL‹#½Eð)èé2‰00<ñ®¤:å¶çúÈÈq1 võ‘²²¤2‘bž™ÖxS¿èpxÍÝr–ÛÆ/:¸N8„Y,L Ž»×9l|BcÆÀ`ºÌw8Þâ+¨ƒEM#0ô-®†f^…ŒÌ=-'6¥˜Òfײ=‹E$ÐàfBƒLIâÍ´¥´NþÍx™”’uRÖ¹ÿŒ–ôèÃ3òj¨Á{›8¦Ã›˜X#îÎÆV@r Ò¢\ä¾ñ7¬éýù9lß—÷ׄ–þþßñýèRåT1Σúì#oÁÇ!&j F××ñÀõóðú>Öüj¡îjT•i%ý¬áúkð¯øn²Ã|,”ÞO0Ü F‚µà\Œ€8äÈ&ãÉ &Bî«rËxu‡ÙMÅМ[¾á½“‰w—ÈÚŒd’“¶ù©F¾¼Í¹9›Uârw¾f•­Ü›«Ye)ÏÊÓ¬”çähVéÉíüÌAêQùÉe²q•Gû‡ufs>Xm6çýçO‹'¼Ùœ½MØÝðæs­.›Ï9*ÞÎçìmAI¡éŒÎŠyójðÆâ)Mú×)ˆî@Oél.õÀRš=ÐS:›KB=œüISkE_êq&ÖWF‚§'ùóAªd’üY•” –­G®¥¾Ešhc•L­e}VŒG×›(ÚÌúÌÌ.)ŸÝ‰¢pòaVaº``€yä$ñE‹=€²%¶’ 2w€ƒ„ô}@ò.c0÷F`<ÞÍÀx²6ãÉÙÌÏÖÆ°FVïÉy¿(«ß#€á\¬>•ó~NFïíÄŒ>¬…ó1úT'rÙï¤+ƒ!õýÆñ‘¡^,ák˜Ãp-:?ÙLgrŽYåIi™“¹me䩚á¦ãWZJ7«¶£i•ÓÞ‘zÞÕ>f——ãé„÷ü:£•Óû3¡×ÚqâÔÚ5´?8>¦_ƒ~˸…ŠqàPç.üa(ú­îiëe÷øäЉ^|~?žë; g±ÒàJRļ¼Ò†·Š,’X_âк+>Tf:û>v(³ 6KUEDBøÎ†Þ/‘žÞ“ð~M™ä÷ìÖr2ë<÷K$w2úq™äî£Ëøñt–ÐË«$q{ÒsË(%/RUŒÍ£°EŒ{±Ê-§£›Î{ΫΌ çŽGgÒ)vIÆÙ .âÛx|1&c^ªîv®Øué¨unŽHuéuZ¢qÆoDg Ÿ#³Nóœ÷RR’Æ£g¼›3ì‹]çŠTWÌñRÖÌó³Ì5y?í÷¤”› 5m(-aó¢>ŸTÔã•Ûe Ê ê¿b©Ún¹ "ù)„O§üa µ½Õ´Jc½ŠÃLZ¤Ñ=,Yç‰ë×Ј5c/Ód8hÉ¿˜KN=ÆrN5zì3 4]áðÉê‘ÁÒˆš½|k´£êZ´—‚/Ò¯ªqUã䊸+ÇI“èHÖHÃTÀ?DQôÛ^¯EGõÐG˜ã°$=æ§ ¹ûjFF-­Îü4­"­‘¨]qMÏ|‰H>Uï.HÔác j—ɸ(5Nyá ¬qZÀß³¤,›ó}žì€€õN@°2ƒ©šµ\¬[§òê8¬àßoÝü;\?­{¦°8í`\¶¯›#xgƒ•Kï®Á*äëg1ó9‰³:Ž*'fºŒæaÇ)5¢x¬[Îð쟹Il<“()s“©íåA“ª+º½.qäŠElî¨äÎ+sˆù΋°¥Ù<7^ Œ 0R0’F,¶t£VVh úšPtUuHúIE½šQi¹¨­±Ïêz÷ —°¯{âa~ÕÐ jQ\4j[Þà«Y~íÉûmådô#g!#µÈ6±q3µ@Qêx!÷ë•5¿ZLðo§¢ lXô·HÓ×Õ« ­§ò/ÁõÅðÅUqQM#ªöÆÏöâa,òxž‘F¥¸¦íKôtc‹ÇÉgæH|“7R #Š:sxúN‘ûU²=43·‡„¦u¢¿ªè¬…)ÞJƳáã‰FùsM¢6ûóR~â_ýiß“wKß8*Åø„s”<9tŒ¹.Ït¹šÔÙú<›þ¿³Ûãÿûô`ëÿ·‘gëÿû]?šÿïšV®ÿoxð,Jùÿ>¶ë¯vËÿwгýñ6§ÿ ~ôVîÿûP=€ÿobÙµ°#°(µ>àžô& ZÀ!xÐ Î'·£xêñÿ½¼›Üwš9ú%š£³KÂΑ¥Á«r0› qËøbxw!æÔë^yõοÐc¤›ÑXºskNߤlâõ«Šc…oâ⻜¯­éj ÔA¥¨%íb(gZÔÍimšžµÜK8ûÚpx‰ëPt?Z4@í°OÜÅhz~?%$𼌮ŒSöe”é‰qñz ÏÙåÿ˜ß™šFÝòa“ô/£)ÚnBG®£7 "Á¶ïŸÐG‘‹‘ázâB®ÃÊäÏK<åk Šé^°¸-”Fp°,}ª‡åʧ'Q^ Oã§2©$Â1ú÷Ÿ~ñ@èØJѸþ©œó‰ÀŒçuçÌõç\С“Ü¶>” ðÖ‡rëC¹õ¡ÜúPn}(·>”[Ê­åÖ‡rëCùÝúP¦µ&›r~„_ƒ ­N-xS Zo2J¼éA™F+†“æ›SGW´3¥ÒÖïq…~9žˆÊsqOÄAoÓžˆV¡0Ý?=«F¬î HoAÊNyÓ7/¯°uÝÕóÓÑ¿8>"+mÖîóî ®™›vèôW)±99>2×DFaMn¢\ ^_ I"é¿ú¿_þ¿DÔ;¡¹#ªn}<‰¥›eoø¹Þ8i›¿ Õ·º#䊽Rƒ€bµañjºÇÜ骚Tt:ÂG˜qpî@b¦aWC”ãLWÐ4+ÓV·ä¢Ã­Óé&NÉö zfçD hÿ×ö9õ¸¿=< Þà÷µd[¯[ðúM–uÊ#B6ˆ¦I@µozîÈ'+Å)¡†'™#?«Îæ¶O/¨Uµß»k‰ÎQß=½ÃØ–gˆ}*ŽÆùYûˆoÿžÞ§šÖ¨7ôÌ Í Ì/LŽŸ¾€ëm°Òi“ÈÀ'‘93k}ûæ4cDè0‘5"p,H¿ÁÑà—xnð Y°¡õ|Jˆd®çGë“Ú …Húo”„3Ç©|9Î2F×jKa5©™ø´²iî8œg%µrö¢]Aa>„Ór;$²š‡œƒÍ±=ë[¢ž}³ó3|s PÉ7þÍoãkÁU¹8ï_Ê[•)Ss¤ª®ßªÜvsM9¹*‘&*.Óœswíº¶†ÇÆîèËf-Ù‰&è:Zmå i…¾ùz-˜k믺jÕOíŒ5Tì€@2ôc>$d Xg¾Á£;"Ð5º~²,&JZœ?,À©ÃmIGÐþzA©˜zÙ°n ß2ÓëÂn ç0]Ø%$à8„*ÊòŽÞ¶Ë´dø(–Ê’ázh}IVeJË#Gг²ZêÌ—*»ì^¢È_»e»wÊ=ÔAù;™•´&­»åsɦ¯[?ûZ令í]g*2/n•€T‡3³Ìÿ5,XµK 8qÖ1…å5{—hÕÓ-Š”À3X·—ñ]<>/ÌÞtr{“r“§7[Go¨ß ôFx£6ЬÙµ„Ì~ì0$XC7ÿJ!ÐÉÖvë »u†Ý:ÃnaSxna·Î°[gØ­3ìÖ60¿ß:ÃnaMgؾ<¯8t«v”MôH›ôˆ…ï1MF/|ù«°wl‡dÓø>6·×¹“†6Þ×¶™C’­,‡~¬T È5ÃßÖSYw)ïÛþš¼o;G>ÇZ·ÏmÀäÚÚüddz‚~²Ó?Ùç¤G°nø¢½h?&ßYRö¿À~“ª–¼^QÕZG-[½-æ\+ *˜H—¡ ]îÚ2µ½~ÍØæ´ì2‹ÿ<Ãís›Í†@¶'$©ý=X5rÑÁ°j4‘¬]fQÙ–oYž¢¼ggX²Z@±Iݬߡ‹Z+YÕÙ.™D²™Ý%Ûü«ºV×½°Ó²£±;Ý_+›È×8˜K²%›Ð¼l)ÓU;gûøÖƒ“ùKd3|”÷Þ¼Aä-xmlôïäã§ÉÊ«•¢r<ê0óN¦ÕÞJQÆSh¢rÄ(W?MQªý($©v¦/"ÉQí‰QšÆÎ®÷mݲœ³¸(EÎtê«Ù·ˆŠFÆDäí[H g¶ Ù)ÇË̦]ýVÒ][§r¥€œÅ÷€ä»<ò_DÀK-‚ È:¾¹x·Ì2Ù o/¼Lhl@Â3¿EãÊ`öq8 𪭆ªU4QS·¥“ÉmRzÍäÕ1ɵ9‡õõ:›sÓü¿>ÄŸÏŒÿ×ÞþÖÿc#ÏÖÿë»~”ÿ×ÚVÎúÃý]4d°ü¿¢½íúßÄëÝðÿz}ôûËRpÚ:<ª¿¼;îþQ N:G/ätŠwzðƒ"„Ãß;ù|;‡ð:ø½eñçñ1ü«ïNúíyÈ” ÕƒóÅZ©³Y0¿S—š$˜2QÊëÔESFóÇS#¦…gf®d‹¦’ùuñ7°^‰‘ O°Ó#C~ï”VøÑOT¿÷Koª†ÄTJù’á¿7ÒxÏí=&v›NnÐw)^_KaóŽbÃT?A¿¡ør†QˆqþÏg“;iÔ7²‘¿Ó]<¼NžJ§µ Ɔ¨§L©°·MGõ”§ ‚ê¹Ü´v‚à˜}|°aœåf_o922PûÅý9Q;BÄÉøèù_ðíéùÇû»àrˆ8þ5œ ‡’¡ô"ìKZ³œ˜³a|æVN+V*°Þƒ&}ìÑG.3œÊ£EvøúõoýC˜{}ôÏ?…EÐ@ ¡6lÁ_Ê­ÆÑà+"Fã†ÕÏ'wwñôvÂ&³ ™÷Riô6 ¾Pç/âKàˆY­J#Ê_€ò@ù/@¿ôµRù­\9¥¯Ä‡^Mç Âoؘrü‘•ådüéþÃpÆ›Ò ðëŽìX‚É”A6{Li‚«gð%‘#† .Fè¤xý•±Á‹ÑðÃM¾Î®'çW4ϧL;ÕV˜ÙLM/»÷’Zÿ ‚”ôKC,ú•D  S¬ï?+ Ð?+Ô’aú“ ý“ºÃ½•M’­K|%þ¤3òœ}œpǘ§I—SdŠ0ŠPjíÆšˆ#¥hRFjÒýGhˆ:ÖÏröD¶Š”•ïpÙÿñ¹œé4õC£ãë¯.ÏKYŦ£FS«A­ý«‘7ˆ"=hhÀ‘f³Á,Ôòk)0ÅsÛ8™á¢ç%3cZGcàþâïS )lãçȤæÇbzŸ.GIûד#´UeË1ÞæÄØò‡dlå¶èð]5œ:a½ð´¼¬¥€¥ZæµmÐð–3ÃRòv˜üRúTæ†ö¢„GÕOÓ8ªE+Íœx¤ñ÷Ñ¥ÜÓ8[@íXý ¦‘þà*Hjr1hü~t3ü0ï¾’§$­¾¡Ý“ëø¯l¤­R„¬ÄÂ;‘/b‚þ$ù€HªÞ€ØJµ“Ñs4tƒà*Ț‘eÙÍ­®áŠxеIkq„E´ Ÿk¹¦Ëõ©³?ò©åœ8>x„h†ýÐÍæåc°ûZJ°Ðå @¢ÈX8ýgÅ¢Ýa(ißÙÞ"cÒóŽIz4z«¤B„6”‘Kxè¥(Q˜ËèPHÖ¸A/ˆ3J âÎh†U .²b5 ½%§¡·ÃPÒÓð{GŸ†'syÌÙáø8å3χáÎ~@¼Âhq$+¯ù#>hL¶DNã(| _s1¡ÿ J÷Ó{Øá¾ÚrŽ,`0í:,KvÎ2œ>¹éäôïŸЕ>ívbf£Ôô„Ü(Tœ² žÙ È\þ²§¢¬¿c{uì¾ôH…ƒÈÛÞT”æs ƒ.’T'^S>(x–…§ÃÉ+‡´»‚@© ò¦ûE Hí6Žc‰cë²ö$•x\8z©~HôkšCzäh3âm¤¸ujq bÅš»«Õ‘ô†#‰©ÿ£ZÔ¼ô_Ô¿wvXÖ!#92&ÅAÁ²|W®¡­Xhý÷ ­ÿ~Öúï_ÿæ­ÿ?­õÏ"hÇú èÏÏÞ'ØÌͨá3òXU™Š*ÍúÖ¯!ˆ` >8š%ªü,ÁàÑqŠBŒ"©WŒet4–A«u¹p&¿÷w¨<¶Ñ7ØF_gÇÇ\4•ñý͋ɒ*SÜOå©° ÐılBÀÉ ®2oH{ÄAt ÷So M5G(ã0¯óB-8¶I‰O ]¨r4<ÿ¨…íÓÞäüüžbjMÆÖá{@S\Ô®€á¦ÈƒzZÆ/“»«éíð<.ÄÝŸVºå%ƒÜ¤¾x”̯+ê¢uPB¨Ïñž /&1ú8ÄrðÒ\&a ;óÅÒi\C³J_¦Fö9ßJÈ' ÿÅ£ø+Î?‘U&ó»»AŸpÄô£?z  E¥ [ÍÑÌUºÕðù^¥K€&6¹tœö¹ÊUÙULÖ–UoŸê¸šBåS]×>ù`Œ§Þ¶³!¨þäË—Ñ4>êæ¢Sø“æò&‘âbªO#Ρ9¥æ‚nF¼å˜‡Msk Îàì~NB   -Öö“éHaµÓìôëtßê)aØõ/A³ º}—ù#z@Ò.Ú–çz)T±å‚T ObU¿”@.êj1¦/JÃéÖ')µ-Yj€q6˘!þï{^¤6£îá^¦IJc{ "ëÄ·»€'´˜•>Õ®ÊÁçüp~PPAXA@µþ«)…êÕ‹O)ðð÷™5êÁK¨˜ dP|ä›àÅxÕö¹42³Bmw§œ\­üÛÓÏ¿ BáŽáÛ†Û„Šåà9f°ªhÖC‰ãó4²Æ€¦“¢X°25˜"§¤!0G6?0èo5LÄ¥ÒVûD¨Mƒ'é“èÕé,¾ "Ú»&Ð'`ÿÓ‰3fÑåß.€‰Š;Šƒý1¾­!ž¥ÌHë9F £1¼,Ó>ûǼG‚ASbÑ-íš@b­t6B¡ð,¦5B3—*$"ÍC²vÕT8ÖˆIÚ0†S9/HÇ$cVUT¾ ï°Ï×°o7¦¼ñ~ H‰„ ‡w.äŠnPA8Õã„SÛáÅ ò«0@Diý£q@_ôÑžS -H{Jâ–­ñ5Œ¬È‹ÏC8‹||ð?‹ 4S4Â×"h!Ã…0¿+mÔ|1FŸ/>Áö5&ñ–Ì×÷Aq™ 3òeýcF<“‡] ‹jGBF\†„÷·Ç R–:‡½2î›PC;?¿ÃK&ɑҗúæí¿ Ñ<Œ¦Î`"tJ“~ dž©†Ä”î]nÑXñPvcjĈ!2nZ£ŒßÐ…[’âqæøÎzz=ì!3ìŸGý“ZpÒ=ª§WGƒ?DÑ^£ß8>2,JT÷‹ÝÃê.ÕB ƒ?q=—eÕ%#Ã$@b[<êÈË“ã^§F¿àÐØêDÍ?"üÝh6éw#…tš—í œ €(€èw¯ó¾†Ñ,ðGS´ïŽFÒj½†ŸG-úÙE0¿±±G‹í9ZÇðluü¼©o ­7/á þèÌ›wµ  ßußùç«ñòäC>ã/(Ú@¿)øu £PšâkúÝÊh @“Mìüè¾(MÖÀ^¶Ž£F |ߤb× ñ?÷¢ÿâON&,[]¢Añ»óªø6Œ1Ê ±cšöÁÎ%þŒÄ¯–øÑ•;ðî=†SñÃyO yé³ÁÜ7k=5[×%Œ“X¿=†¿jêéú”Ñ“·Ç=YÌÇÑnÈvÇ/ï}Ñpj²X6E£â¾>:þÒêƒß/{Ðï×ýê ³íÊbç4š§5@§å2£Ê  sŸO.böJòÅÒ1ã‰püiü…êGT˜ß„¶@³g'Æ8ÂY' ì I«ÁÓÌ#Gƒ©às¶ØÌlqož.ê/Ìp ^=oÌ=Æl<‰j+¾B©¥A§Æ5@´õ¸Ðu4ÖÉj,r4fj+s.Dcî™íÍÑXÆ<hI<&k¸ÍpRâ«d‡VJwâéή4oü¦ýÔàžÎ¿)©Û+Z÷'s¤´)û #çýôrr?f†•h@Ó¦+š œ†ÅÏáÕ•êÕ±é'Æ‚“k™ž`ì<ÊZ³‚™Pï¹¢#¶T&T~^Ÿo|oG ½Á‰êú‚°-¿©†ä‰„ÓAB®6ÈFÊZ7þ¶³;‰m ã\ô‚Ú9éï$_P¬+'8ð£jùµ™ ÕÝD6¼ÐÓ¥4I/OºƒV÷í‘¶,²ðQâÇøü*Ã0åÕ„üH4HÍ<Ë멯Ƣ„ÆLï9ïÔ¦'‹öÈOñ Ç·¢‚4= çÃx•J ªÆÄÓD“PgÝdMïD”‚ì¤Ð†·1›B“Ï0‚jnu.  ùøÚAŠisW}åŸÙåyâà}xïÌë”F]~t„¥“[Æ® \?×7ÁõsÀ¥v“ãc¬tí­²g’»6pkeì¹Aýx=køtEȶ„b,—ÇãáùG4aF­ïlH·¢:ŸÇ ŸéÓáe܌ƣ›û›$Ø#!¡*žˆ:?h=fy¿¤NwXZÖ„c™þèv:ºžŒrE}×Nã¤):ëAVÁ sÃ…L¾‡#®zUJj—µ“Õª¸g&×&¤ËITvéôš6^¢‡Òh'Þ©ñ_ç×÷¬üGõ¸Ôƒa®’ñq í¸aîXÖõJPðœ8)ê(夆øóžwíú*Ùï’h~¤1@Ûæ)±àmÚN#èå5­•„^T%ú]U•#³rS‡ÝKÁæ{šîg‡_spGñB" üý€ù{dÈx¦7ˆ/£Ô·’ƒÿ¬ë,ܵ àJ{açuMí«Z1m¶ù+ ¾·KîÏ!k‰ ¢ô+Ná]NDÙHî™…÷\;´Zv±Æúö›n5y¸ï3îÔ×*vV‹Ø »WØ—}O_$ ’Ì-ô^Ô¦ÖDS/ÓLÊD\èÀ±Ó±êLqº`~Šº%›VIÉK:¶rÚØYyçKm,GļvuS–c4uB{ZèæõZA!#ÒDFŒ;{!^Ò-hÚä|:!; ¾0¼¿#Íý—£ó 2++ÕG1óLa¸µ`ì®NÓ¥âŠN 0¶yÇ€î;S­ sTäXrD¢çQ¶ôj#œ–ý4LœQ{,”½‡×Pµ~B\À%y&bö€3u^9J‰Žª¡ÅPœ‡¤"Ç^ª¯“ 7—Ða|>ºˆåªQWô·ñø|t]£…‘òý°ÏyÙAú.’•f*% ¦{Å2†x<ŠdÇÙAñbg-_¸¥€.( Ãzî9Fõ~<šYÆ) ’ùÑ/wÐ`eO“õ] õ ·*^¥]Îxºk”Ko/y·#€Ãwt³€ kI™ã÷ò:JÓSkP ³Ï´Î¾«¤ú›Øè¼é=}&{šluΡÊz&žB0>ŸÄ——£óI°°/= ÐRâ ÄÓrÀ¶$vkC²}ã +ûÝ¿ãË(˜öQ…/®ŠQ~Šûæ:KÓ™Tô>µT*Ì˦ô*©Èû2K\Pße¡U !Pq5—ªƒ÷^IWƒvaäzXÕVŒô “OB"‹[ÃŒ·´1™Ï~Æ„-÷ã >‚¤Ç[˜ìWÓ†:„P_Ë;¯MÅ/¹WeÜ,õ󜧩àð8{‰®$÷Ü:á -»SÝ"»WgÒ'F`¢Hf¤~æµ 73¡ ³[=†¦<äŠaÑÔ°ðáÑÚDÈ'f(¬¨ÀŠÖSê´M]![}n3nCÍ©ãÿ\›‡œ$ÖA²¾Éª'ü±0ÆîoÙA.=1“NF¢ ÉiLs”W"ñ¤0²ÃM!LsmÇ;òmËx¿ïxã–÷Òaüo”ú«×‘±OÈp+æ7½,R–‹€ÍajÒ’ƒm¤=Û.dAÌÙ=ÖÈ´ëbµÞ#Õñ›,ˆ(Ë*Î7.z2T“êqÊ7Aj¯ÀC쓌 c ª’ÚßødìE$3ÐÊÛÝë™Û½Òv•œ½€ ‘V’Ò•p}ï|¸mÎÓ¨µE؈sr}A”²ƒ¡ÉjNÑÔ¨üšª…f~ úîÒLµ&ûãi‹ãy·%/‰ãá…è1(ÎaÕ"ÕÊ¥Vj°(‰û¡”ßõü|ÊžÙ¶Ê÷ÈÌÔ÷Š¡“p•ŒúfY!³ÖEtAÖY]c`YeÕ)—€D·ò# P®&ŸZŽ«yõÙRݹA3UÌNpB](=±ô¯NØF–§ŽgŸw´ß™jJ¯?驯¹t0ž¡,sÎDƒuë /k“Ï©Y“˜Ya¤æu"Ò@xÆÔ)ãa"9(Z}df5í•gS ¸Oi ¢¯N•¥&àË9¸½àÃqäÀoÄãÓS{LuÀÀº\B””& QjÄ]’–פ^Ð`RL$Í)Þë¯Ë¶Ê€ì‚5õmJ½>å‹%˜³jÐ}çÐ(±Ê’àdh]­vÒE„­ÊSŸš(Åq»”Æ8P†¥¼`•±‚ çLƒ—`.ÃG?}Úå@·}(*à wyê¨+8sæA$½½ÑýÁ—1ùæMAâÄ{U8CŒc´ÒG0¼\МU¦éAï¸Ü¡“*1çf%žºd«é·j^.À RUª6õ/øBÎ9­’pulø§FÑûP †°_Õ>¡`v[$ýY®üUºò8ý_½ø§L‚»C²+Í-@¿Ï„üA¾BLÿKC6ݘþ6¥M®ˆPo¸„wÀ}Ñßöô·Þ½»æyåí8Ý?7ïÁùð6#u¢ÅÙ9»Žo¦xÔÀ-«É‘¯EÄKýS±ª¸»ÝÑ·Zp , =±Æ¬êcC›PpÿŠÄò 5‡» `6D™Ô ”öK W”wYÂ` }좮ÛÑünáu›ÂÂú¢ZD\ øèMõM > šüh 48€åžro1”{+G‡Þz4Ά^¦…d•þÞI€{9Ä•{åËyÉਉÃ8n¨ù ¥8o$ó€UëÅ«¶´ª‘o溑Ýhqtç¬Ú2{:—Jx½ƒž%Ò…{n+pV¤66:~¸®!±µÓ'7U) ¢UËm|7»¿;ê^Çtöf4:µ!RÜéF%•£—}ö¤ ›ÐëžJUÅ™c™Èö5Û¬†–oB;œ ƒ]þô&‚èJç9 3A´l3TñµRªÁ¹"S©†\á °Tî/-Ö-.Õ…û™ ò`^©Ž1ÁóëÈ)1±e Ÿ¦oð­ûøÛ¯F$0¨F¸T„ :™AؤMG³ÔÑÉ2¿¶Ýè£åžyœËg¦º–8‹g·Öß d4½“ë”Ì öô¤g—ª òk.^{ŸjÓdþ>s±)g‡È‰zˆ½“‹p_‚ìš]ËD‹"°¥×`óèuJ+àbï9(Ei”ØÊe ¤¬k"ç!†ïüŠf±R²g® ´÷krØ-ÛÅ—Ò‹tnd,¤Ì|Êû]\ÓÐ…?åŠkšíŸWƒ6cñs..mïÿÏÞ·6·‘+ímR•JåýžT>¢Î“IkF’íµß*R¢¼´HZ")í®¶¶JÙ´)R//–uêT~G~F~bú` æBYòzÏŠe‹—@£ÑhÝ2.ÜmO/·*ööé9ŸQôEíHÝŸÞza{smH+[®äþMQóeð! òÇ⎥es°Õa舲¿Ÿ@ÖKø÷ÜVEr8Öý:ïlJGàiÈZàŽÑ¿Š30ú&Ž/U æ»ô¶eŒ16õÛV-°`ôMmsØÍ©šðcv´›E F#ÞÐu cr±C š§ d«ñò­»»'Wf޼ñîÊüÆ[§ÐgGµàÑ•YþRû£]™±Ã]™­Wº+óÚ>Ìé3ßV¾sßïÄnwbî¯åÄì~q_NÌaîrmg³$mõ§Ø²íŸÛÃÜuT!¿æ/nÍnÍVÊG·æG·æG·fomÝšã׃¸5§[Гt·‰ŒZ²vùbuå) ¢HüÍÁ7þ›„®»Þ5‚§m# Êð[<‰0%Ã)¬¯¼3÷žä+öBëkŸÀðY¡½—ûqü®jc:Û¿þ‘àwrðNéµG'ïG'ïG'oçõ/äämgʼnÁš=xŽðxÉù=‚[âuo}wÎàµ;8ƒ[y¾Â¼VÔ¼¶¦3x-%ÀÇJÛ<ž4×usÞÙÜ ‘é žt}`wðZŠ;xM6­múá–1n$âf¶mB‚înÕ ‰ÐÛÐ}ïV9‘œð€ä[éÉ ÿ76 I·e¯æ–@Àı$JH?ø³ê”Ù†ÐÏ omi·ÒÒ"†²Ÿ5±mçA˜fëi¶ñ´1IÍý玹ïóÜN˜û5–žØpÏá¸ÝzŒx¥# n˜kh&ñÒ\vdë U{æ;Õž¤îNµG qkèÔ>ÌuQxȘ‘Ý8ÃEK„È-T{û3+tѳžëy0øÎ,Ĭë~ªòìŒ/Íø±¼üX7£ñR¬¦ËñÄ%1¾,COP‡×óÆàE¥¼u>ÜŒ'â|êÎmÉ ‡ŽZ¦hú­gù*©`ˆÈZhJ%–ž3uÍ™›3}ù©4g£=¹+Tcÿ²L•[`™‘\»å•‹f¸[d»Ý Ï‚Îù¡Xxnµ½\£¥.‘x1”×báY×9?¬Ù{MxÇFØËø[ÉÀ‘§qÒÏHÅWªÜ±‘)f;ÿ¢b¶µs‡R†âVA Ê´MHϪy˃ø˜/Ò¿·x‘šk±&F|&ïvAWñ­¹s‰@KˆŒ9½àJ|)_<Ùõ/RzÏ77Ä"šÓ-Îìk<ž€ñz1žCŒ?GäÆ|]F£¥'/wÔø¼!Æ-Ýä‚ûèž>#oã"¯0 ÓÍ)dê¹L…øjüž9¼’æ×.¼)îâdïY¦Övúze;e½âáOãÓ…k¹iªè/g°‚azÝS"Ò$ê¼]—”Ð’í"Ax˜.Çñ2¿‘–)½½ÞÈuùGGm?Ó—Ê$û-ê‰ÐœþzEqr#¢h»˜W‹§ÚÏï§Ú\‹»í.UD‘§IE¶’01I¤´]ø…YŹiÚ^P½ qGPØM2‘Ã<çB–Êð1:¶ë‡Ç׿þk2ºÓìiý],ßG_Âúå”±¹¹ùl{[àûóg;ô¾òwz¡o]n†;Û[;ÏàÁfv~›P—ÄkµXŽæP•O“Ñj‘‘’]f1‡›"ôûŸåõ_þÇýá?ÿðCwt.Þ Ä/J§ào?ü7øÂÿÿÿñûÿ+F²1öåGÌñáÿÿt’ü§ø÷ÿk}t}=‰êÿ±Áïvýá?žƒW;›Á‹ðÅ;¯£ËÑ|üêüø2_rü?àèÏÿ;áÖÖ3wü;[ãÿ[¼x´Ž›ýwÇ`4´Èø%,‰Ÿ½áQ•ÞN)†o+ßÃ||‡?GøN3Îù:{÷-šüø?äCFÈÇoò,‘ZMt‡¸Ž­¾Œ'c¶—©TúˆëÁ2᯦çÀ$ËÍ¥€Œ—ðÅd_#1éf‡5O&5”r©Nø»ÅŒZðì¥ì™{q'Ø·×P¬ÄÐ8‘q·n5ð¬SgU¶2N‚´æ”$9¡Ê–ÍgZ~xwø…I²=©ÎneÉÍ™8½_,‘÷ȬÃh Tgð}4ªy¼ÌÍJ^j¢g2e€h!çQUR9¾ŠF´"Å5ñÆÁ öãf ^<§'ðõ&ºˆÔâ¡Íúùj>Gºç³ èÚ÷7ÑèU«…,–£3Xu/oÅ2Z,uǃYÏV§>[-"ZgˆÙÕx©î'Ofǵu>ùa J8žBcQ×Ofïi‘]@kî Pß)m-0Bz]üþ޽D+æ¾lØoÁïh$(~¾nŽ»E7‚iå‚ú¶‘*B&¶b3ûúrñÆýx5µ/ïdÁ¼(êò;Œ#˜Ù¦ŠL·>¨‹î ƒ E´@§],0R{¾GºB&ÓrXAåìª1« ,–c^K¼Dù™¡1Œ˜Í¡¸«ã»Ém›jÌ…k° Äq¸¨‰·ë›Ûùƒƒ„_‘ÈUäÞ6èˆ £¼É}¤ŸaÒ‘"‹/0+"ÈYGðyÔvÐp¬üæ$ÁqKˆÞ3Ù¯ïã…„€“4ŸGóñlµ@½½‡‚¡ð ùtìí¾;ü•F›þ¥Ó´†tƒ .øß!ô―úà3ˆæO£««Ñ}š¡ÎOwžnª™WÐÆÎ¡”Ù{:„xj„y6únkhî2•(NñõͽM†8A“ ¿io.íáÏ­Þð×,œýNˆXìæÙêêì †Y´ð9PÚÖ4ü›j{ƒ,"¬À”ÙgmN)Ævfç¤Zp//{ ooØ×{S?·[xUÑÞËoæuÓÚ<ê7B4ìúGô¾Gùö8âjOÆkìQüFë0 =z¿*Þ`Œüoê@A·ÓìƒAU ê·?AÕ© Cƒ¾¦ñŽõL†œ4Ú2n¥Ñ—š-ù¡ÝçìUI$£Mí> !'5ð´pþNÛ“P8û€°síÜù‡ãN)Î×8îß”=}Òú"'å}°ÖØZÉö \º»?)_`ô,Ù•Ï3ʬÎ䦾Q’Ò›V¥óMë¨Ò{ÿß l˜Þßœð÷þðM‡”:Ä÷ئ{ïúoÂ>¿aò{·Ÿ……²×7”£¥Š»Êƒ_}ûâm´û`5qîc(ˆz¿Ý´wcª&Œòõ‡^ÆEç+°­ÀP,Á’ÕÛíÞ•­à^ñh5†…–¼VÂ׳Åb ù-@ØbŒUÕ ð˦üò#’ÄÂg¡Ì:Üô8C Ö °äá{ñz©ùðRHµÇ 1%²½1Î+^RA§w+]\@%ñjµÁÿƪ‚cŽ|Dâ”VuTµ‰àPÖü֋9Ü}³ fUÔgçèïŠK˜hÆgt¡ÐW%ÂBXOöW“É“ª1(%v¸üÛiWm­·Vîv?%7ÃsËÜ]ú×(ÑéÏ[ %„½x榦CÅHÅq%óhña6a{×t,u¯—#<ò0V±PÃ4|gm¥>ÑÕâÙÆ|8xBà Eõ›rö2ÜñöøZ¢Ø`ÉhÞ@1—ÁºÉÞ•P¾TŠÀžE‹°px_eÐ,ŽìØf EJ*…ê š•Å0sÏ"°åªœ·â51ÏÝqìV¯,­ÐdÏ[òRÝ>B§‚´fGjK˜IFè>¹µî è„.Ýèo;$J‘Ih—È_ê×8ÛO¶Ð›ÍÒÊ1ô¤Nf=Ž.}Õh $­S4ý¸ý™ô½fV|ê+iâ\‰(“rK»€Ò â²õ-”ߌŠx- £2©ô‡ýá=Ðg,-Bó")ZÜ5š7PÄØPŒÏaF%èåvC»Ø*Ôhóð> u"©S;’u´Ù^ž{ÛÙìŽ+U¨;™èð~J‘¿²ÔÆ$ì¾Q*&b*¤ŸqsÐÞÒ{iížþsÿkîŸC|ÿ;̬%œ³+b¿6-S*áb°\¶âÏØc™Ð7ÌÑï´Eše?Ð&e%mK/!`P*;ò™á(ž[( ˜ž×éÞàïoÓn´Ð­kÔŽ:•ʰ2¨!‚ü6„o岿FE§®6Vˆ53¶rÁȹTÓ’r].¥ä%8ô§«þQXº2: Ã'û>×dI+jhU£²dÖØVå:d·;Q¦ÏÒSO{Ïfºm]%$ͬ½–´Š¿M¯ ÿl½v‡N0³)æ®Õÿjí6ðêa¨™4åâÑ&tÌ®/¥FémðÖÁ]Ä{ënÀ—ùº%-›ûýú0%¡ÅqÊîþV¶ 5c>§é -€ÆWÍÔ¯¶B¸˜¦]LóÞ‹éÕt{=ØPuˆK“BNqÉÜt‹k®Yœ!*ƒh‰ôh·÷BQ «a—ð)ërF£×ê^«­ ×ô=5ŠkœŸ¯®Vòî²|ºðô ŠSxãKX~ýÇ æ:ö°‹{‰§Ëá©32LÆ‘C¦) §ëÊBª8¨â2‹?²‹?r‹Ï3¡„Hí¯ÖBáZ~Ð;lÈ+Z9ÝÀJz¡Oë'·Æ!©ÉAf% :èдL “ËD7cQÝM“§×‰ÔÖ¢’ï«ÄåžuÌ ¿.ðÐz}dÕ¯A€)×ùìÀû ú~ <5C+ÇÐÊ14sЩ,Õ¼SÇ*®”LBGÐÏí¾GÉ9®ò%gº'û[YÍÎFV‘A’HЬ ¤ö 'u² Ú–óé¦Q±žè.™õ 5¦ý¡C-…ŽÍ}zÃÇ>jºmK·|< J£cúìËV'·/”\ç¥7Z^d2ƒttx÷71ìˆßý ­×o0 Í„7"Ÿƒ WCzÕ:öÃ̲~Ó¢;¾ˆ¦KX ”zaóÄ=M7N‹¶ g¶qæX F‰:¿&-6¾1¾öѬ+ub›«¡ƒ)_8§ˆí¶£>Z—åË0 Çi᢬Ѿ;þˆè›i '§$:5)I«ðÞ +$Ký£TYj÷Qù±÷¶’aÿ÷ª•žD“¾öv0zqõ}Æ}ìÜEÆÃ2ÙcÞÛúŒë…,ݪ1¶ÍÝ8îß{çI1é²6Šíø{(Ìàñ¡³ÇH.]Æ>ãˤf—Ká}¬M=KœœõMÚò†TÒŽÂýZ¿hKЬ×î»%i³KÎD™<ÐékÑlñµV¶¸öt8_HÏ x6h§î‚l¥Ì.\ãœs@‘#þâ¨é§È¡ââÏE±Zx›¥‹6 K›=åÆz-Mج€Õ”’úI¹N”dh¦õŠº7á&o°{îíâÂMÊ:O¾·Óä›*/ßòVQº¦W\±#0æjY>ä¹çÂâZ±ó º‡™ÛiÕ刔wïèŸåQsÆi[bî5DÈuÒÈÎi ßZ9y×ãW’×pïj\ßk+Õì›,®Ù…Å­µÉìF NÈ«D*6èýDó™oO½j:˜kO»´øÇtªÒNaIXÝýµçIöž&ÁF( ùÛã’¿¨Ç¥‡êµ{>Pzø^û¦J%ëHÉIUüP©’¥ÐÚ—±›B[·\t!JèÉíßh§ôoz_¡‰#¶ÏL\ewߟ‚}@UÚ‡5Ì“jÒ»÷jyªÝLSIJ4¯[zRWƒ$ ý³‹åvÔsv \ÊÀGxÐßV’±œ\ºzn­5ª;Ü|™ ùa&!QÈ–ÀþÑüÍîèË˜Ý ›÷±¸á5ÙÊ´9¶¤Œ¤»mž í¤˜M¦w¬¥ºb·.çný¢ãÅÕ°hûòòÿ S¯QŒzsF~rÚIª´h€F]÷s@㎠é”prÆ£ÔÒËKgö& ¼Iwƒ7ÙC|J3LzÕhžJ¿]£Ä8wËûº§KzN¨{XíÖè€ ¬8½ÙÝàþžr¶Éõ¡Uy¼D3t«¼ „ï¨ ¹¨´ªåéF^fÉ“Zj/KF&*äO[³d¨“Û§º#œª&Ò‘ý¨{_Õ5½ÿýÛ†$fRÇÚ“¥NÜei;z ¥‡œŽê…êPêvYv"gÁÂý:·x ›ÅZØ|*Ü?1µ¬tCs¶~Ól cÑÍ–uêVWwH kìtvºŸEbøZÓ¡„‘Z¯W¼â–)Xéíh&¨¤)¹‡j‡§ëž‡5_sr*5–!n-÷æDr”>U%:Ñj¼éàÁeíô)ÂÓgÙ{²× VôEÚ+¶$ ±á's·&žZåR_ƒuÿÔ‚ðþ‹ ¡ç0ù®pèíþyOiR™üÇ‚¢“ñ’d²Q 4c²S¨#ØÞò\ƒÿÊšº×¾h{ªî6– š,+Ë4±ªä>oÒXàq˜of×ò¸ô54ÚñÇÓÉ $TÞõ “ UšÄGÁÂKXu¬Â̺Hyd¹¡%ÖY~An¢h£Ëkr&†&7ˆÔIɉôЧÌ)Ô—Ë…¥zÇÈhmX—¤K6HÊÅø$áÇ “ Ne„î΋^ _Óh÷ñÆD½OBƯ3P-äøÔž»âU .Mb^YÌ®äx"Ñ |>À8Æ)6'×°â’ߌQœb»Ò"xf[º89 (’Ašeä„ —Ô‹¥Œ/—â&¡ÙtBpÃçt0ls€îI’-¡Â$¿%·L2ËPwúhaˆ ¹‡štÓ™ˆæs†W¯+X×ãºMH#‚ jH÷1´…w~iõ›uQK!P~Ää7N>Hl zÄ¡7¤£6fÕ<®ÖIÓ^|!F¾Fn¦Ûd^/YGŒˆNõc\‹)ý]T“t(’¿£ÔWºö¸ôIæŠÏ»­£ºáo)AŽ}ŽJ]o)æ¨x$XÕZXÄÄ;ɼ͢yŸ'óa^ ÇÌKŽÓÏlºi”LR>u(Ÿ”O‹S—4ÚbmúÊÐi$‰ŽM¢“KBw™í†EÄ02dÀÓß1ÞµÇ焆˜áY <˜”*2­Œ¤>Ÿî€ 1í(«B…w͹+(`„ÅÙS?Ýö”RÓxÁQ¢Aòá!_Ox›üIUÔÜ`S,[‹9—¨Y›‡÷:häIìðXI€v»Â3!¯±P÷–H3• ¬?`¾_)ÓŠæ…{‹gÝæœ㤨àÓFI-Aà/*d2Í v -Üx¹b¸?Y½*Ý:s@yÄ?.š¢g‘lZÑL7ôwFyÉ&ñË)ƒÉÈÂ,ìä±°£VqY,ì0 ;Y,ì¸,ìä±°#YØÉda'ÉB§Ÿ@Ñ0 È&»”“&¢D¥_¥:¤±* ýÈøÒ¬# Nø5(Ä%›D`“3H€n3ë6ˆcþÙA#2Ûȕ ·K¦Ñ°‘§¸Z˜ÌnÒÚ¥®P­ô†ÐîÊK«xPGc2ôÓ…OõZH¶B—ec{6 È Õu4•8qUN§h;Þ#DŒvÏ÷l³Ñ(­E¬‹ÿ¸Ýmmút!Ó°ˆ u÷‘¥úS›+‰Þ6´ kõõl¿KkïJœÍ£Ñ'ék¾¼™%ÔÝ–¸òä6ÄèZÙ­Ð¥!£KQnùhºL;Ð~•]Xt.Æx«jZ·!UÎ?à#Ú#³È¨ãZuÛèâñçñÅ àëJþVQ©ß’þäг¾3ygQÄ I¥íÓnBjÍ\Á~þ Ke0óxW}Ùô3ÑÏG᪎Àagà!}ré@è)¡ã©8-hgRê—Åõ„vó²†A¨,WGxÇpå e–ã—¥÷.Æ|ÇfJ-Å%"SàuZu„Â7ªòˆøG–‘'>"M‚Dš WŽÂ„ðyIxúåï“bU|WüNŒŒGn­Ã­¤Åá!–¿‘ó~¼±˜ÇHÚN³÷<–øç·ügh+ßú©Iðö§°~jJCÇïûEÕõ÷°¨=®þ˜ÕÀ_c4ßûXøÓ­R8û=.jŽè{m¼ûY+Hñûk®PG„FK«ö¸pR>4¿×_Å-O¾Â«€7«€P¯¬ÃŽDûL81>ß´ê‹ÆÞ}ŒÆþÎ_fü÷"š~7ñßÛÛñŸßäõÿý—~Åñß5úóÆÿ³­í`'ÿ½>ŽÿoñâÑnÇZ=°‚Þ¾kV‹lÐê´v‡>Ë,Ý"kt"˜O|'¨ÏaÃ\z²¥Ö­ŠÃN•C °×ÞwÍ8uaÀcYÑ ˆP@ûÔ#)ÜVEÏmv¯7BÞqcƒ‡áê`²,Ƶ8hÝhÇ!ÇIÐøfÝ ª;ŸMVWS¢|¤üéO9¦ÔdÀÙhéâÏgóy´¸Æˆ  @ßX‡`SÈ=Þ³¥‹èr2¢ …ÅêŒ,× À \d€\X¤’‹  `¨[R8š@/Ë}¼¤(Z}ìníÜ”>âj¶$‡ÞG¼|\‘£òc¹ü”ØG9§HÎëÈ{0 d-­ F Œ˜ZroΣó1L3ÈY€ƒD¦««3\pa´‚8Fß¹I”;‰½ñåê·R#ªÍ (S\J©†Õf–§Œbb¤0Ë®ãèÂk0ı¥©»hDcc£A®’@RD]SãQË(L=Ô…D܈j”˜m„9{W¹¤s:Œ#[\שQ &ÕÄ߀yˆ ‡1 3< ò 9nêó:Gry+#Ç~)Ðàø ? ­ç1§Œp¿tR^`hê¾Ö=ˆHªc”-ìu Ð_¤h.Q:ìpÐR¿,8“ðŒv“P åD‹CÙ¾—#ßÞMã/É19ÖEo&¢/ íÈUŠcëÇ’ u,ÞA‰×d‡ù{ËhºS›ð¥8&­{6[M/ûe5º./_©Qh˜‰š”p^ ^†e·€­—¢%3‘ýd¾Š8¾gèu½# +Žù0ýƒE?SÄ$IÜk:•Ú~©ï}b«‡«„Á4¸7”ž4®Í>GehÈáìj|ž¨€2—¡·ÞGKtþ}æ”·S´¼-YÞ#ºIEÙ’‰ò=áÉ6†€Ì·ÐªÄÕšRy¹ÃÄŽoŸÉçÒ3Ðt¨Vy8êçh)¸ÍŸºE g¸IôÛÇÕ{l0MŒI;K½höEé€8Ù6 ÞÈoX!§Ò?$®õ,þTñëÙ ì¼Æ¼*ÚEÉS *h<¾_н9éŠD_øù÷‡u“ uã·y Œ²ì¤U‡–â«Þ” ¬IÐó›ùx¹3äìÖoˆ©ïïé&è&±NˆQi„±Í¢Œm~T6ÃÈüÌO6Ùï’-|jÒÚ9ì´–zQëeDU||Tëõzµ‡=:±ÐŠÎ¢¬µK]q'AݤAÊ@–¥‹dXš(Æ"’õ‰ŒIˆ—xƒêPZòŒ>Êy5!×,Ìì_µ9x$,NðÔL AXßïç¾”ñü z«sv ݾâAyOµa5/Gs÷–RÛJm_ÆœCÙÇK¯$Vô#b7óáxAu-6©ðnÆçÈÍI+ œsj‹¥½bƒ¦Y1þyFŽrUCœ¼¦Ñ{º=û[Ã>(Óh*ztY˜T~%r$>€AÊè³Åò $d|=ó®€6Ûbx#«S½ÆƒÅ¨å+½W–béÚÌ4vOR6Mäjʈ•»Iˆ*j.=ü»&Ž@ý€VÑê•;ú=}ùG¡Z—¡ÓïH†R7ÞX†þ(¼®Wiuñãuu•ød çx±lKß´T¯ìÍËMDAêšXP‡§n®PS¢~D?äR;¨Šm4áwªz© Z/ž÷œ›¹µ!‚\˜ÊIo­=k;„PÉ"äæ2FËXð›TÿîgëÒ}Ð0üÐÃÆÁ;òÈ“V²b﹃[”š÷_ˆ^ÅÝ€L~{4M˜!T4ˆaÈ'¸i"Ë™4l¬ýT{+Æßªÿ¶A «oí­ìÝ#“Œ³×SÝ’bQ5·‚¬N-\gÝE=ƒôku{ðo¨Û~÷3Læ (_ªJYBÍ,+ MMx5ý§#¤!ŽÇ¤¥ s%:6‹3ÁÃJ·RêÕºå4†+ðæÞ6s;ùñÙ>›êí¤8ª3×T ¿vQ$¿v¦ìµMá“õ¹›ðµ¥ôµ5„_ÁÓ‰Eo#MPµœµMAÓâYŬ>)k¯-fÖ„&)ŠŠYÛ{bT\/ gmGÐLBJ漂־$@:d!`û«‘åŠ [*7|.Gã V?:­<ãh‰û"ð ´À$• øÀÏ$&“IÍD LR( !èÉÚ6.¬â…TÆióxJÓ`¥lØkÊCY60þÑ~Zض”¹€Á9W¨˜Ýë=¦ üÌÛ$ˆMˆT®”e¶œ]³]w>ƒªÏÌÙö”!0˜ÝãcÒ]0Ñè^ÕYt'„Þ`Bñ®lÊ–¯ÞPcb0dÞ?Ó®®#º´ÒQå¸\)YBßOñ¯¾’BÏ»ü§ — ³rÄ`ãpã 6êYR9°=o”Gþª z3:‰éHÏXÁV/V——c„æ\NZŠf!â*‚s–x1~?Ù9Q^ R,á‰#à°ÙÐ"Yµ!ms&ý8ôÙ¾œÊ²%987=| WÒ^‚)Ïà)Y$q%ô$.›–ÚS¼ õ­¨ÑP=ªí)üö»­ÍuÈSe~<$Ö¶¨uD™fyý:’Oú"abÑÆßÉ8À*Oøc]iNì±1”aA0ªèÇ:4çRz±¸ôàvò9¢“y04Ý+›€ã•¾¨‰Nõ`3é‡Mý°É›A¨…`Ê[h%¹=Ó™4Üào©< Ëj¿,NÑwRP7 ìê9®{FgÔÖH޶S ÊüAp؉åzÎÞ…ähù~2;C¯*Enñf;³ßÚu4ñ<“—…¯®©*èÍqðv˜lPËàó—è®`l£ŠÒ—²j›ÒàdÙ3³ZÕý2•Áe‚ž1æ~²Ù¬¡B¹œqÎg# «\SžœjžPÈn… ‚Ù¡’<›J ±!ðn_xÛG·WÅÐ/г8áÜU%÷º§¥Rð´tØ©vÊø©_9ì—±»±·7 ‚?=ìTáO_o 9 ;ý i×3c€“™Ïôîš,×[Š& Ÿ `3ß"@R4}?ÁuŽáç)›Ï+ÃRç «',½«©~¦†›cפøºz­ æB¶˜ìd)5Éo`^j5é<¡Fæç˘· ÖÀ§@ F+~£ðþ®z ìÐésK]:ý$>ýnÐAJƒ(R!%Ç‹hþd!ެЕuÁ»ýb»ÊO“õ2òIoÊ£PÀ¯ÐOõÉVš ¼á©üU ¯×ª”`ÖíÑt¼ZðF4qÑòK47‡oFtßHi­Øë4†{(Üú˜ûZA©“\A¶·MNJ ?e±ø ¶Ô#$›[8ú·EIí1a’+½î˜Œ† ÄF\¥ÿÚ‰¹qÁ«zå†óýú÷­^t7!ÿS ÿ -ÆpoÕUW½2:§åž„)¿j]¡–µE’É *g×t¹'<*hj‚¹o†§ÛÀˆÙŠ»bïûŒ«Æ\¸žÍ—â¸Ûîíƒbøq»¾¹/a$AŠD®ˆU‘{Û`%ã, 6Ô1?ÏæŸä2_¤^<'ÏLŽgAÑé­®@¤Ð,[BôÔ=1¿meõ@UV,o¡ûS¸¡ª€Ò2˜M>+ýóÆksµ¤ÍE$Ï9‡"4Ðazbòt&4ÄeÿV=ÜÒ}S¨2دk#{a/:pM/…¹}£âx=ì¢j‘.z¾ãtQc·+†¸€«£Jƒö}¨Çr&NfæIo3¶"dôß7¹4ÃñFs€|î½6CÎx`‘‡ 9Uñ®×Ê"eÝÀA©éúÞîãөцÙðsãc÷ä[ ßì€:Hp˜Á)XÚ·ú@½ý¶ êþ5`?à§ãÐe|çGz)ÝJ‚s†éÜÜ@û€øÞà¸[EóÄ”~ƒ¶u;½ãn*³($2§Ë“V‰º3Ieý‹H(µJÒûþ:U%ŠHUZ|I½ÈD×Ès‰uFw÷§Ìúâód9w¸0z£ýú|pÔ÷_ê²æå)´gD¨h;m±æ*„Î(?Õ•*¦=˜k|¯ _Ú_ß ë;é—v(Vª[$r®eñ\­RøZÏÕ*…¯eñ\žb^ËR².f‘ϲèÛI‚§ ‚§šài.AuïÈ×Ýø1hõòoü°ïx¦¡ÚôBðBX-c¹Â̓×rX@‡O4YV5æÃ<„UdQ•HB©¨‘EìQ¬/”å¬Uß6’íFºÐH_­t¡‘nËN·c¦ƒd’®¾/g/Ô\ºj©€s›^Ëüz!£†uñˆ3Oì¨õ^ºpÀÞÎ}”ÁPå%$<×Ú ‘ÿ}qš„Ç<0±íRü ƒŠ“?@Qö«klv× tëVÑnù#(–zOÿ€Þy5IÁy ¶<•3Kî¥ãom:pt¸´—ãÁOôŽº½H)AË‘Iôjݸޔ¼í¤ïm<ÓÏã»›R†SáÒ· –nÔ2Y•¼b¼”Ëd´âI7k[ÚÖµN¤ÕsîtJÕçaâB,9í"­öºÄ¶ý­zˆÉᮃ²¯ê¢(õX²ºé—zñTáÓ€¸ý/%ä}÷GVÏšlQ ã–@õ„æ8·¼=ÄÕí„ê68Ï6n‰ÐtHjÛ(äè«i˜ïI”B7o3'/ƒw ¿Ûª'6›¥›³VÐ-ùʦ¤!'•¹Ò¹ÉЂÏ6ý‚°Ë7ö°Üë-•çL-ÍsF=˜@·îuµ?q¡IÉçëfX ±œ6ÃæM…ªBø–œ‹Ìr>¬yšæ¤¿^Ô ð‡/è¨85"èbL¤[¨¥'ÌÁ áüuÍɓňD”îpn¨™>pvIœÝš.Z¾‘s ¤Á¡Ùn~å‘2:éC‡‰É­( —4ÄLHðåìÀ×ÇسÀ!Ÿ} îÞ?ªÚ]°Q³Ðè.'ëO“<ÃV¹>4\êSrÈûH#÷¥ò‰ôg¿ ¡c€)à×s aMê:õp%×5¾ãŠ­'jæo8“B:«ymÚW4ø§¦ÆÝÃ_Á Ù_M&OÔf™5ÇÒâÁгôb&¦I )£ài¥¢vM”¾h7 J@s‹öu%eåð¶ÂDeS ˆõCÓÌç©#&N!£-)öVæJfI±Ô %Õ°|ZÏhQЀ)KÛW¦XŒ-O ï9Kžx¯31"}–šmLqõ¹öA¼gêÚB¤’øaеDCµ“µbN©‰&%‘†çSQª(²Òôï‡ HX–ÁYfÙ=°Æ§,.õ q©ŸÉ¥¤ÕžàR¿—úPs©ŸÁ%ÏÊš+ yVØ7™¡\ž†÷*bW ¿"~](”:”'2ö¼­]„ᆭ©ª»³÷è)±žªÊ¦’¦­¤Ê¡PTae°n²6ëäÁ˲FAÖ…I–5×g]è°.¼WÖéTê&‹•j¸xÁ±’c‡ñ, ói#2(®VSénÀž|’„1|‡˜&×6êBžùÖË(v¢½ŸG8a£“¡ï+šBn¯ãqžmˆ{Ó6Ñ.‘=à°ØËZÅYYåíÌ mõŸ6²tt•Ê· wõðK>ç¤SCßúžfÞ±£Òd^#ЍÙv¬§êò–`ʼLUxE¸¦[Rí£bmÿΣãp~¥^˜Â½aEòèñT¤†½à{¥ô‚w…ÉËËm[wx’&v¥¼sa–vQ¦ÎÎ}k—ð_S»d[å:Ý&X_®}–Á¿¼vyìãµ¾vÙ)¦]Bv í-ÈÔ%سÍäÅ£ÊLÁJcPe,ym;|JŒìƒÑT‰°K‹RÚá‹<\øÆ§ë˜­sǧê;\¹´(ãÁN¼íï¦æI+¶«š8PщBH6ÞŸlˤå;ádÛ6µô„;”°™]·g:QfÝž›´Ò‹|aSó%Tsê¼A4’žVwP„Êë¯Bž€|gÀAŽ^‘©X›¨› ¬/9 E¡o78°w[œ‡Üã5#µ#žÁ!ä©TûM¯„DÕ¸W`$À 1G‚o i_BŽƒêEŠ)”½ª¸}ŠêXAüy'øÏÓÏveó¨:mÙ4õÅŸ¶i¦mf§U{HGúˆ&Χ¿`¾ç›V&¯)&ÒOŒþ΋fÿú?´¬YæèMÖ/<®0wñÓH½ nЊýE/¨³îû8únîÛz¼ÿíÛ¼ïûK¿ŒûßhôçÿíÍ­gÏ÷¿m=ÞÿöM^<ÚûßÞ¤ýö]ó¸ŠOèïßÑFN)èJbº¦dàZxø®Ó ¿Mi<ªKàŽ‘ü9Á÷“ 2ê¶8¹ÞÞýu×Çë]÷–ûú“Ü·ùc~SҚǖ¤_æ¶ –_c׊¼âîB™\žØ ºÊå#q¡Û1w3ÝÖ–uD%»WÅRy‚tb‰ò„ͤÞêVè26y%šyËZzUë×ÌK×Äq‰››û¤Äü¨ÄGpëÝÀö¶‘~핃ycÃO•Þ Nö¨$ _¸™1ˆTâöÄZÎG×Ñ?fã‹Ñ¤œ¼v‚ëb @/ ð@ ‰æäa$8+ø]F¼cH*£:H¯%ñ®ç:ŒÀH“È:žü 4èÈPðªâ„èšÐÓ²‡ÖoMfšèÕj!Uy25`]!ð7Â.A€ÿàÃø ÂxÇ+›ZG¥§¿0›ƒç2àw×=£>™µù»UøÍW•%á ¤ÓŽf`µã0½ ŸÃ À÷Ýã¾uð×Žî  Ë@ÂS%ÀHÄ•ÌWT{4™;!¹VP¼,áìÝŒ‘ÊZ‚e;»–tC®9ÔâÕUD·Ù *Øì>`Ðô¨ÉBýÈdÎvÔî#j§á¤ªÆ i²>Ï>ÒîaäÕ=¾ei/2ûÿoå+ûä‰&­†•|éP,–óÕùr5¼WÛá¡gEðˆ0½ý…e©‘ÒFQHxç’p±Àì&ŸƒbÓ#¡)¥â‘8ÆiR¾A’êaMäËDÇJøL’ÝÇëXûî?¸D:*§ 1QÇè|Uì.ÄÞ)Éç€î>ªÃÔUÕ¿tÊ¢,ã¼:9M7œZ&—¿©w+•Plˆ¾½m,JE{„Õ(/!_•Z½¼ìæŽrã5{ÿïi@*ˆÔ4’¾ì{Ýó’vghE´k<÷v²¯„JÐ4þ2(êoÞn K"2ëa«ëK‡0±ø³•(ÔUÂ($ðÇMhT_˜"µµeëUü/M]%¹’¤Sú¥ˆ@«¨…ØÀ>Ï6®T¡u ‹mmÅÉT3y¨`ûûjNMÔÊs£›&šCð6Z!˜þIû"p"· ÄbÌPòM-u§W$goà›ŒÏÇK¼Õ“|jFZ+ÎÅcô\åhì¸ü*P棠À½’hr³$ô´¶Í+œÚkñäøÉK˜šøf2„ÃA-u}®1¿|*7Ù\s°”ÕKBÖ:àqP96Áw_9·¹`ÄXžŽ×—¬O&‹WòXó”ƒ&­^žjf•ÙÓe"b‘‚ÁªkžãÙ ’9)À³“5yvTNryvrï<Ë,³§Ëôóì¨ÏŽÌQž­É³£€á3yvtï<Ë,³§ËôðL߃’ Ïø¯t"=»Ñ0°ú¾:¤c\ÜwxD›u¤c-xÁ`LÔ€›µAõeƒömƒéô;ùEð2@FÐóB–vq„WŒjáVĺ·Íz<«Âé£Ûî¡UTí–ÁÀ1f"\^àAM0òIaS9!šÊ¤Š eRžIÔ\wo½¦e¸†Àe ùW^Ë(rïetÖ¹)×(–z4¹öª&‡`—Y!o›W™«—¤ÜÇ© á”Uý:7VnQPôÐö0÷0v¿öF‘{£³Gàç',2§îFŒ0[Šé¢xkR­Å‡¸qñP±wÒLò¾»pŸ-/® ÒÃD™l=0ás4p[â|>^F cú:­·£óÙÙØº÷é`öþ,ZNÐ듳G›?°D­+L± ÷×­*É$²]Ñ¥(¨ôˆ³ƒ´Œ®«îÖ+¨Ì«.ÈI…`3åJ·qúúPxÒ7eúC¾©Ó›·[Š?øŽJ®„º'RÏáiÛ‡& ÞIä{ßcMéìwñ’—er°Ò"ƒž µ/£Çß]çìÚ¸tq€ÑrW.dv˾t*•l`'›Í­M²Ô’ºå×bW¯¢$QB«ñÙÅj)›n\SûÆ95 ž%©H•è¥TBj¼Ç)aD©Å?'ñ„|,ÜE/ƒzõëE¨+­GhµQM,6ŒFiµXáØ4é8+4™XÃXãTJ›¸e¯®53êѦzXÓ—g)ñ*%÷q2·¹êqïÝQÙz”-ýz¾cƒ÷wÕ×Çu"dLyΤq^©”A¼Ç)ëròrpsD–œð ªšX@‹¦o!'JNòäàÄ#F+¼r€+9œ(98Ƀ“{ƒ“:2æí¤È6¼R)“rð`·ÆÒº‘V…ÕÄ¢ÐX~ 98Rrp”'G90Zá•\zäàHÉÁ7¸òUÞâªnÌNÊlÃ+}7lB’÷ü»Œ±Ò“›Ž|4›÷§±”¼=G\qÄÍã&!£Skkp{¸`z{‰(jÖ=\f‚¿S‚ñ×^ÃŒ{©·&ØÜ³HípÕÅè#?º_ÚCÙFÕ”©„›<4 ½ø¬rH_‹ù‘B–“«³ÙhOf³ë¯R ÙBþlTÙ^»Áªzô)¢›*“g.©£T¼j HÏLªÕU¼8B¢7)\;Ü»õ¶!ÐYb*o[áݺ#¾Bc™ÿ#6Œ«o¾œ6]ÇÓ,_õ^î±õÚ!ˆyçVŸ:Ê$ÜéuO„Á #¿`«r„»A¥¼Â¹ŽûÔÏüÙ>ì£í^>î ¼ç}r»ê4¾Ç%ŽhA:x1,w™È€‰h½²€Þ_\ÞÒQzrß êË»ùÜÎ7îuêò’fy’ZàÄñF&Ñ•½(Á,Û¯1ÌõVÎÅÈáv¯P?øvÌo'`W¶úUè˜ß²|nªâmUjNoo£œ0Žr oÇÀ{.à?|ÞE”ÝÝÁ1þ ´úýwý Ÿ•7n·QýŸªbÐ;Â?Çø²äs`J¯Šyý {ðwùqF)…‡wß)¼áv:ôÞ¾aâÖÞûï†üØ©èÃë¢7š°€$hà4fÞ/&0œ#S•ËXQzà¢Ê „ l¥=~b£[äN’äN$¹—¦=qÉY䎒äŽ$¹#—¦=²ÉYÈHAЊ%³uÜ`OC{O›·0̱Aú$&ímtéN¤Aú(&íe@é-—t7œ9i|¸&˜søó37½þÜÍêÍdf ýù0+sŒsï8Ö|¬ÑšéYfm^$ ž$žh‚ô,«†¡§y_Pãšñ7놾m¬‹&ÝÖÇw†3”½™îÀ—âà4 Ï4.Qkctu韞ԕo±®”¢t’Kéþ”Ø;9Aé(—Rþ”ØÙp3é€/V`OÌE‘n>Y¾°S0mx¾ç46‰Œ¨*5}1ŸZФQs Gtú-êU„#©’“°_ %૦=ØJy@a®íz§Uïš,µË¢XÄ6º–t6<±qLäm‘-Eä-yëC@l§–^P“E¬ ÷@&Rvf£…d¥Ùî·Þ˜ÀfhÕÙ“(V;—gVÞ¦²Ä¨Cz¢´HC»:KÊúM7UÙÞL7Ç"š±d’i FªÏ¯ë˜`?E ˜[¦ý¼xZI_Ô¡ºZ7¾TNŸþ¾Îd"7ŒÈÅL¬ b´£“óÑD(‹âEFÛÚª]o=mj¾TÞªi}¢ªwk£hqÓ¿eÔYõHV?ØÄ=A’L_ _µÜui(oN¹ô±r”Ù*<üÆs2(0¤<i—Ñ–8­\¶¤,“v9Æ/&µŒâSʹ/c+›…-„­nR’}Ö±Nf=r“9æ‡~IÉóx` Ib£ä"ZŒçI´/Gb+«°¨èR|ó+9Pßc)ÈQrzè§Ôé$¯`âœP¡ª 'Џ5dSÊ8Ê+£GQ1ŽÈ­+òÂ’úÀ‡.Äç‰Pqa,ò¬ÑaËÂÐrq ¶´§Ð îáñͤÆ&˜ÜsŨANnØÓ¦*oëq$ÃMb#­îÔ`×pÀEûËx鎋öÉ$šŒú2áÄíêú¥t¼c²‘öv|£„QÒ¥AHÊUcÍñϽ‹;'¦ÖÞª®ef릂UX,ƒËB4”óKæÅa§£éhÜV;³Ü™òØ$’´@ä/3éVBÔ’@(æ@fEÔ üȼ8:Íw%H8'©¡$B‰mökà¾Jo¼EþadŸS\¤TÈØØÜ\³`sSy%Jk_ÊÖþý5 5[j^jWGWEíb™1kìgR2F˦#é"Z:îj±^5,=Çt[÷i[ÉøAÌ|ôÇó‡…4ËÁ}öÄò̃Ha¡Ø£Ç˜ìUŒgááh±F…ïCÛ²H"O!©£_ø.V`ðû©C„\üa¿xìáÆ§z5Áâ dÿJ-o†bÒ‡Š¬959½Ë ¥úÃ7r„2{Êr® mÚFÐ'KŸ†ú?'K¨[ŒìxA•A»8÷ð\á©]“„ZÍš!Ñ;Òá‹ÇøJ-Øâ‡Ý‡Ù¥zº· zÿÊÖ%z݃d²Ó7é™=•¼¾å¾ÛÁHâÑ/Ï=šöp¶XÖF ³¸Çoj›¬mº¼;so}f7ÚTh²½>„¶Ð;~ä1(þG.žÊå*ô|ŒÏd»ýðGÛ~K0¦$÷iOmYç^é@?oãµû_è'åeáÿL¿üŸíÍGüoòzÄÿùK¿ üŸýyã'x>Oàÿlãÿ[¼x´;ø?=Æÿ©ŠŸÞýÜíýZ•׈yo¤:ɺ•¹³ÅIŸŽÐpyM¨¶°<âó:óZªt"ꊵà~þ$h>-~—×W ù¨>…Öû)@>&„ÏIGu¢¼F¬ËÝèóRI…àñøû¨ê*ñ «§:1<ÿ‡åcâ÷0Þ0}”ò0y:%ÙVJÒ/ÉFߤ§×0®¸0î<:Ç < kboÙùÆê{„1» i bôžóOÑùrÆA8ÚÍÚD9O1·¹·Bø> l|>šÎð⌠ù:’³$Ò™Þš”0é¨Ò¨ gbUUšô©Ì7møöÌåyÕ˜€œ/¢éLÁiÏFvkdÉ*“ïøº*¥Õ›k;Z¸>â-Ü3®G x8Îù’Á„÷"U=@7Gö¦ ñc¨½)‘ÖEÉxwm)Ž+;bŸ$#'’z z]ä8›ÔS¦ß´™ß”ŒÒ ,\É(È—­ðØ×âIëÉK’1 ){Š7Ênèó‰•VÉ%FÒnò¦L~6;bëÔlÀH5@DJë£"Áç (EÝ$ç>£É„‹£ÝC·–ƒÜüú.Ò˜HÒŸÖ¸ì[Sñn#k2Ù*þ·Ji¾¼@½ö¥bUXM½Žx\=ª6Áú8ÛÒTÙlj2¥IF…hêâìÃÚhå1÷¹¸)}´Ãí¤†ÿrÚ¼I òµñ”½9‰¾`¾«÷xž§®_7…kdB„ßþD‚|ÄuœÅ_ B]Uu7éØÍHíÅFÜ‹iQ"Cô Ò^_9«¥È£ÿëvx~á}§ps,"”º×’Ûî c+kÒTüa¢À{þ(ð;†ÇíK¶¬™Ñ²‡ÎÖ-;éÜ¡e''‚“C•x@qeV»®E7-;Æ…I„%«šƒŽ6²T#wäI5Iœ±JÔÚAã AíèïL@ì¦"Ð>!h©¹6ÁðMëd×­¥cý:YQ{¯ïГN)ý»üëí •´§º½—nïêö¾ÝíÆ=š¦~ÿLKʵû½ŸÕïý{è÷~)î÷¾ÙïÅó54»:ݹl5ip#ì™Í´ƒx­ú;H@R^å%ÉP}ëbŸ.Ö+6W/oÜÐ3oA2häL³!¢=p4tÕÊ2h‘Ð*ðcY㉎{Ù ßM }V¤ßî° ‹¢ÒÙjIr¯^\NPa:GU¬¦“h±pìUÙ&f}9C’©‚ ¼?:±eH-c/¼Òd’°Ë•&ö)âd­rlÉò‹“A³¨ð “2ħmi@û›®Ÿ‘ógúnz†¡Rë %eünB<.póP)^SÍÎÏWhÅKŠå|%+#nf«É…cv~Žæ·bq…²Ëö`Iš  j¤ÊJWBXÆ…Ò<”öõÇBè]I‚BëºY…Ã…½=n”À`.ÀB’·›âI(¡ã^ñj–îUÒˆ ÿ¢zEK m@©¬8’T¤:r—®áª¸¬Šrˆä³—]CzÔt‘Œæ^'²ž‚*må•ýH1q$õ¦Üù‚åO¸2´þõÁ„÷ÕD*k•#S)(’4lsØ'ßZ=Å9ÂJ¯Rêm„åà™ãeù8FçHo¥‘мƒu «½ú•m¢ ªïÖjkK±ba-²IT˜d¼d›-°PKÛˆ‰\°dt ¿)HÎ|nï]¡3Ï{TGRÎ "ÜPÄʃ¶°uÄQ;*H]õ’ v]=bC¥l HÞ V×tJqÌë¸Á^ $ÉÂâðÄ€˜V˜Õ•Ü‚. ªbHC„R@_ˆ2|<“ŸDàH1ú5bŒWñãÐÆÅ´¶ (rÈ”Wæ*S4cݨ:Ø’:ýÂK<¸«Ðì0¬bËØöÅøýÕ¨†ât¢ññ…’ÀøñéÄÖ'dó¢g¼ã*l-<Ã4„@Aø“Ô V¡Ø×â7ñi>›bÛ”NÔè;ú‹CEÅïn›dú³dú!¥±Áñ¶S©¡4¾@¸“¥>cƒ“©IêLö—ªøµ,“K*ð{tþ 8­`ˆL=¢OÞ~!1ý5.½7#ïêÑM8L £c´š,ÁR!V<¨}p€é^7£éRt—Q„N´Ã½}Ó·[ƒ`¾½~›ÓE0äÊbñÁ^­°ßñ_ÊA+Û¢¤ïì Ú¥6¡¸©WUh —µÉ‡à˜|m/UQó€Ì3{„SøØx#(×Ü“¨y”²Q}ð‘o üžùcrúCùÄ),p/B@nÚG >%Gƒó1–¢†ùñU4"G?t5\Þ‚|×~Ü Ä‹çô¾ÞD0¬Õe)ºŽö~?ý-øÏ}U¥^‰tË] º±@÷yƒkÒ2fÞ}Uì}cÌ?ýØ]j_®¼Gð#ÛÊ]6=ãrUzŠá«[ÔEwz–ÞKtJÑÅã\@¶Ñ·pò>:›3jwg„ˆèt™¨ÄXzm8¾ŠDã/Ja+©*&+Œ¡mœ.¢«ñ¹8\Mê"øñÇ­ª¸¾†;µ0x!Ùö[h1†{«®ºê•Ñ9ÄÚ¼Z°o×Àô#‘3²YAåìºg-5ðËKœg{ÚPÑ,’éRZ¹p &£8î¶{û0Wü¸]ßÜΗ0’ E"WĪȽí:Ôe1Ã5¯ôqýy6ÿdÄ“Î|ñœük`”c/‚èôVW R8ÅÅ-!zjÃô·­¬¨ÊÂjƒå-t 7TPZ³ÉgZɃ21…up;ù j $£õ+xGŠçœC ÿ8‘Zy:ⲫné¾)Ô ì×µ‘½°Gd•±0÷£ÏcÔCìÜ‹]T-ÒEÏwðþ!³»]1DÛ¡Ž: ø¡ š8™MÌñ1 ´òŒü£y•ϽxŠrŠ}-¶ A3‚ð3|ÚwÜÏ¢šÒHp6æoLÅç÷‹e fäØŽœÑ‡`xtÜêÿZ…ʶÑåý]w÷]Q›?ñûÞ>¿Ò™Ù›¨Õ‡üíýÚGú{J—« Ð $¼*z~¦ó’‚ñÚ2̵Oïý£¡º€wáÀØ‚ îe0¯<^¿ "Îß½ü†V´újÐíôŽ»d†ÝÃ6TßúôÖçoØÊãŸ'ü·oͬۀñq;µ‡|d˜uëëÞq·ûkI<}苇äW`WúÊÝ{7$dÉîîOŒ8ù+"OK5[ àe53oF½ £a¾iuOˆî®BÅDòÃ7­_v«Òl½G˜K…p RsÔzpŸ8—<ö,(É*šH’÷y Á5¾bó'#íÞ¾›øÄM¬Êæñ'WáOà”¬Bh÷‚OW[GõZ`¦WÀ&\sF Ñ?@õÖªtëÖ ÖÄDe# CTæà<&p$œÇ,ÜBFd³hÞ(£É=tÃó=§CL:ùû9ùM>™ ¤XÜ]µ­fxCx¼¼³\¤Mïj<4º] ëÒŸ}6b)äNc B~1TàC_$ 3§‚ReÙR~F»É(<ŸbäË8‚20-¬l*$éÀ‡ßb¾º* ßO.¥üRm'çñÂÕ! £@„›b5 Sjhb«ºY£^fñYÜñÿêÅyJ©–cth‚5@R# Á–”ƒ#LÝâWñ‰i$‹.ù¤t¢Àýe`dzŒ¶¨LÉöèï„‚%w›Úí*tÚD´&Úñ5–fÈÊ•0Ô¿œŽ²¾H©°ÓëâËö àËêúûk™F{´ŸRWŒ/ñ×ÅŒ«¾JtbAwp&ÞDK}XŽ>‡Ë‡©"Ѳ`Ë Zu[l1›Ñ&O1‹Lr00ô±£. HÐÐÂÆ¼²'·”#fÖ(}ª~*Ãú=^q2Rñp0»Èz KÌijž¦Uœ¢£n’ê”dþ fwØÃöfÏ„ýÊ:à’2v‡ÓÝÅŵs9Ÿ8«Øµ\…5º˜Ó—·<ayUâåb 0Šá@¢P¥-O=94†]-©“Z\gíâ:ùÅ1¨®ôJ|m#TÓN‹ ë·*᫳,ŒT¤?ZÙcëö$¤Æçs[çËÙÎΙ X° !0«}¼•ÕÊö]ëJ;!wân”@FfñW—¦Í‰ ”suvi„‡a‘H´ñO,Í"ÑÌ )[J);s©…Æi›'UYJ²ÞÁL’¤Ûv`¯'Ú—cô]38­l`í}MÏÇ^úLñÔo´%^as?Uŧ²jÂdb³5Ö¥E³Ãr‘›qàQæ:—1´ˆñ' u"¹Öñ'Û2imx䟓mÛÔÒîPÂfvÝžéD™u{nÒJ/ò…MÍ—P_ É#?¬Æ¦o¼p®Ð¹de©ã„'>3€øŒ,Y>+ó€ƒ º‘ï5ž-V$l¿ÂoLŒ¿µ7°rºh;ÙLt ÂcÇŠNT±2'&#*.…H¹¬Ÿ_+Zu¯FŠŠ@›»ï€ÐÀƒ,oí¦•£I9šA˜(‹VÁÇ®—_©%U›ìÚ@¿Ð&ú…z˜Ø ìp~‘‰¡f¨Ü#”?qÈÐCåÓƒ&ô¼¤{aê¦<¿Ì®E5TÐøÂ%ÈcÊÑCûTnʧ%PcnðkGZ»ì·‚žìq¡GA°ÿò¯ì¾äS~Ù¥µ9“üµ½‰8·ôÙÐ .H¡}êõŸÑ7øùkþbÌ~¦y†syÄ“p¹R¼ªrʺ‹•YWY¹ÒÔõIØèy¤û§aÞ:yÆÃ¿§\÷îpmá?ß†ß þóÖóíGü×oòzÄþK¿ üçý9ã?€á¿µãŽÿàù#þû7yñhwðŸq/hØoô`yÝ&'‡®úyßÑ=0z¯*Z˜þìãû¾¶>ú{ƒã.½á%Úé4¤qx”=Z}OÆHø½.4õ³|ìóC¦þOÂASßïÉ~¥Níf¢‡G²c¬”%$§ÐTXé{GŒÞ-q³Á¢÷JÌÊÒ*1/è ¹%îWׄŠþ5ä%è"XÇJ¨…çË䪶a®1P“t*b×­w)H„Âîy[FÞ}kÉÑ”ès4>Y4;A]† Ê%0ÃM?Mg7SÑE’žŽí¥•+nøìáj8Ý⨛ðy¿L99xÌ€òXèHy"Ö%=¦‹y¹Ä×ÁÐ8úšÀà£h †¥E¿ähQ—åryT4JöádËPJT~ÜF ¥D‡j݈HUPBœÌÄ&ð ‚U!hDSgÐ 7ó1Ž2?êb;h(à‡@†2ŠõöÈå÷Æ‘Âù«)§|ž/ˆâådv£`x4_§³%o],d`ŽÞË(%ã¼I1ÿiå‹‹Ê™ME¸ q|h{ s‡ŽîlrÀçB&XRºRidßÓÙ[qv)›íOy0 Ÿ¨W~Áðܱ'2÷Ò1 †õˆÍU:Ÿá®U@r¹DÁÒ‘Üd'#°¸…á}EμÌÛ½ñ´#øîÏŸ–êÐKV݈Â4|¢6¯¬¶]HªÅ^¹ûv­n«\:CƒÑ#ê3<.u¿››[*˜Ð8 ŠwCìñg *ˆÕ‡¥{J[ µÓGðºL u~6Ôöæ áåAI86sÑ‚ì¯ßl=ó»xD(àùQÀsY¨øp4(^ýj…Ã} ã€ônñ¾SXkR;0˜‹#|ⳇ›F*ÂJŽ0P,qÄ/¡ì»1Ø ˜ˆmZ¦$µAQ‰q˜ƒ«I9euVãS®…‰ƒ=¹BuYÃŽA΂¸g©+‚×Þ³Ä2{>ÃñQwòŸ¼4ò?‰åú‰l)5$ò~𜠺?ZŠOcÞ=¹”+P5ÐÀy˜ Pë;°|¯Å¦ªªJ‚sž/a6c9Tœ°Þ wd­ º\‡i'ö€S¶ÓDåf¦áB<ƒâÀ‘áÛ0Nf3І¢(`è2z«†”Ëÿð»oÌÞ›zcâ\¢/U¨jNÝÒ6= ›}} íéâU¦Ë¢#"@B2Úü›½¡L…ß5ŸÝ˜$,ìÃ]ZI[ >®F/­Mަ«ÁP·kÕäŽÐñ¢›@”äÊ6ð´d‘0 ¸ÿï ;^Ó;àñPïC½”&6ïÐį‘W(õмÐ0ò»V× ¥5PZKwã–’”#È[íˆOmv˜ªƒZ&Ç´Öûã¤ê· HNcËÃë„ÏPM(kyIP ðje^÷5‡wïƒÃ»u¢ä¢½»Ñ^ú8ÙóQºøìÝGã(€mÏ׸Ö]×J—›ÖZkÝGãZu¢äû_16öÓÛ¸_hl,"<ñ¾—Á±¿öàèhïß‹÷ëDÉ#?¼„Í€$÷¶ÎYý˜'ü¦~ á«›cjÉRÚ¥ûh PÇ””çÃlraç&+ÆbÓ»lr‹–àr5?‹×Rˆõ[ázÈÛ¢{& ¾ZÐ/`.2b8tˆÄ¢æpS¨ûT­êùºM/3>Ì®fhQÏV U3Z¶ì¢W¡!€É3GÀÄ[û2Yh `jpË-øÅœx¸"œ¾†Ö,ÈãYZØì˜j5m"˜ÙÜZ=ñx®áÖ,žX{ rÑÂoÒc‚“ DÐjéMI U§a«ë ‚W&.;5±*­d ·z°žŽSÉÚ°AeOHååluþÁY~ôÞ [/e2¡¾}Š|ºˆ<^.Si©<™èk1p½§{› îÔÛ¿Õ*ü×Ј¨"7œPiQ%ýŒ–U­Ïë˺Å1‹¡&/mw+$."—•˜®0/“Þ:s×CÕîn N¹Ü>brYÙ–¤š›GgjÝSRÛ]ÊWÛø¾íª¤øë‹2/dåfË''k v'â5F½Í¨tï»ã{;κÿ¾I(Möþqbã—2î÷à6§Û’{>Á½AÏQÙ ¡Ä¿C@²{‚"„«ÉÑŸGó1Î?ªSp Ðµ·ûîðWÂcÔ¿tƒÖ:l€{ü?®®FsT'U>ºótÓÂ,9ÔÙ;•½È@ðêE!°¡,:C_‰Š4Wz HCá7<“‚ùóþÁ£·ø>Àÿ‡YQKxa+.[áÿaUUÅé^»›ÎrA擸w»©-t±v| 8lŸpG”¡Žñ—ô¢û? t†SúT•Y’Õø |ž4¨¬R £é4~!UŠ›éV5Ä0ˆþvì³Å7­!B3ñÀ©JtIxç“ÒûDâñ¶xMøTè؆œã¯,þ18Žt:xÒ‹ƒäu4³LkÂØ™†> †TÜI.‘•ha¥ lñAþôfXýh.Žðã Ä… ‚×ý•0ê@‚QЖQ»““kÛ“Ëßéf7Ћ‘ÁcPxᥰ»F‚M/‰½uH„^­5Úø™¹¿N-ž­%.A3~ óA3ìèŒ7Ã*À0Yú—¶*bÏR°S 4 sX+ïñ áÊJ•ÇÓ5Ý`2¤uh¸cKïCr€m[”`ÈdQ’°?m /j›Nëî CÂ0ŽíJ®ž¾îàY“®»ªêÒM¸+Ý| ð¹©ù|ä°ã­bï–—½o‘½½$S¶7 zGIöQ ßZ”€½Y”0QÒ!{ßf°kü6•½êi{·¨Äí4öIöš>ü$‡xX;L€¥ÙêÞÄÞâó<0­Þ–1ÚD­§¬5AŸ·ËxÖ­Svä§ 0ä-}z-vù7+ï^fޖλïæÅcYD°×!p¼^¯WEðŠå"áè—#Óé^mðXAklǹ¿"|ð[)m!R2*&%fø[ÇŸÍMìÅA"ˆâmËÈEÝTsRôpÓ’Õ|Ù±R Edá•57& {Ô¨™'r¯Í•k'©ãC£~moýàÕÅ*¶±Š~"h=ãènVzÍJè© ™ݦŠÀe«ÄPÿ’¯æj<Õ®‚äQN -èƒö±7ÈâTGìRð'/’¼á”¡J¹——匣ŸqÜÓB#ƒ¨LÚ2’úZˆ€w«ky1Ð ö_`T­·e´"àêîruSê@ ¹ ûFBo hØçñTŽƒ)^¢>‡%I•—$¸°á}Iæwbßüæ¾40]jô YŸÙÁRFuÉêB ­:§¯÷(~±G'wž×´­·¹½lÝ¥²ŸB¥ÝÎ$ƒí=€&u›)ëòélë/lS_ùKÃïbiøã÷¶4üñqihUôë—†_£¡‚Í»©(CyôUQeê#º'…m´j‘©¢¾«ÕkW®…#úèÅc¾4ºë\cñˆTŠYó€êªí.ŠïTíoq²u3ÆRÙ/`{Ms{PÈ· sûÖÒ…ûsÍ÷}×Ý·/Ü©_µP|—#£#¿HLH‰‹Æ‹;èp‰î'“o¨H ô'@޼a‚3¶ËˆØÐ É}@û75øÁs8¬R¨ÂQU™áw~77U‡î¥%éÑqhH‹-È ,À‰íÇMÕJ“á‹ÈŠÌYÁ¢H|†È щøçéCD?°ÔÝÿyiþª8ðù ¦ý³@ä³õ»ðN[c¹’µYo%‚Ãq«À:äë!EW X7kæò£àÚã/îúOÁ“‡a!çÿâ¾ÿoMoü¦yÌ¡ …²üt¬ZùʲjÕz€Zeš¥m4Kï;Ê¢[k·Ì( RÑÚÊ*rB†‚ÛÚÈ?³+WˆáVåöÜÊ94+T¹oiðP³q`ƒBÛØoËö›ÆÙBß¶çoF¾ó•´Ï>K¹õßJú#8z 6ø.-ºô*|s{nûû±ç¶ÿU칿€“}!+1iiÅ»¶ Xx»hWm£ÈÐ,ò0ø6…*×ôoØÎm³Èûmç×Z²¦ÏVÌÅÚFªå;娄=œZÜÅ5Ý•ŠÖâ›»Õ?”mZÀOå.Fjq×úlß›;ºÖˆµs–iïœ?ÜD-ÀÆGÏú‚žõß¡aú]m5AGùF¦iåÏlšþk{•¯ašjd6¡âPeXVj®-`oæo©…+{¢uÿ…ß—GNðCy‚̆”Ï”+²oÚpX®<ò S*ŸL1¯}_…÷Ö®ðžÓM÷Xáoï•^túãÓs]‹˜Ïï¸ zï¦æ³âr/|¢÷ïÄžËc724ÓŸx+QãÇû„+ûý¸½?K„ð{_cëy§°ï¤\×í=Ï“½iî÷OOï•çÅZ·H™ÙºçNîÑ3];›eÇ‹Âuù^ÓƒgÿúžéÁ³t·ÏÇÅU\—õWEB¿Ñâ*dü}-®¾j€Þ1täOå—½VèÈ÷µþ‹ýaÕâà­vs^ÏWíùÚGk8ó®¹xüúšïÛ5ß·+Öwåý6+Ï®\ȱ³ÞÃ_Ï•Þ=nHöb>Ϻ¯°ö×5ÀsR‘ìÌûm@7ì=nØá¦í†­Xâ obPê¢Å÷PóÍ fŽûáá_“N Oëÿëbù~q;©_>@›››Ï¶·¾?¶Cï›!§WOn†;Û[;ÏàÁf°½ýìÙbóê’x­ËѪòi2Z-2ÒA²Ë,æpS„~ÿ³¼þËÿø¯?üç~èŽÎÅ»øE :þöÃÿ!üÿ?ð¿ÿ¿b$Ãa_~ÄÿþÿO'ÉŠÿï糫úèúzÕñªÅÑïWúá?žƒW;›Á‹ðÅ;¯£ËÑ|üêüø2_rü?àèÏÿÛÏž?ÛvÇø|ûqü‹öÁq³ÿ–¼ÒRߪÅa¥°žéUñŽ[2š E€YŽ4Y·X‰´»h%ùÚðQàgzK'ÓædòN#š9k5Ñi6vÔÕ•¢D÷ Âúf«¾UÊÂN7^ˆ,‚.—7£y$PîGïá}>û<¾à›0ñ.Å:NÆÃh:‹(ªbéš~¾;šŒ/góéx$šÑüS4‰n«ÆÓÙd6]ÌÄ^4…:‘Åßk¼åE½®‰5®çã X An³d½P|eß6(òÂLãÖ·ÝŸýÆ®u¥!u®|ì»´:™-{œº›úšú“:3Ûèâ%Á‘åx®ú# aðÜAG— úÚã«0‡3U´-ç»Ò°Äm©Hß(j}Ù-qÛ*™G{%n|Eúè _û•—?®bÜVºüu5¿ž-"ãŠNþ"_ÓÊ׈ã}Ïs¼€°nñg¼4T­_&ן ßÃë†0Ö°xƒoŸw•+nôžØ32·ŒÌr‹¯dVWã€ZM?Mg7Sq…G.S}5vUÞÁZU°ÊûhK¸9R¦œïÇx'¨uo«ºË–ˆ]UÅ”‰biLŸî@Å뚣ó%dŸÀø£«™çÑhB7£EÝsýë(|q†÷w#“¥%ÌZ†ôa5ç£él:ÆK.a˜CùãzT§K¾¹©tk=0~1F*ÆõõXj<#YüTöøÐ¸z\”ú0”ÊúÖvèjfLݽÔ×Tð…¼HƹùüHÑ”n2ÿ<_èû˜Õ¾šÁÓ™¼`:‰‚?CßNñê^–7!N¿è.?“÷o#•SÌp]‚º½£EBäð¾ÕßħùlZjOaÆ(ƒš¢oÍJe*åª,~….L¼Œì{:{+Î.ÛóŠ_ûÖ‡n ¾€ú—·ª‘J~>Qü‚Û£2åLÌŽ8Hƒ„~©s¿Tůe•è~‰Î?AïÁôp±:G‘YÞàUâúÎ{¼õý¢þ«b±surë²/ÌÉÊ­âuå¬Êck|þ!­k02V ;âÄ —a»°+CuS†~i+Áÿ>j ̵Áã?Æ™kûJ€éZl`aÉh01OÝ ./'‰Fµ) ¢Ú]Ьn|GB¸ì_þ£Tê‡Vùwy­<Þ€,ïw9oÜí¼G-û4V {,ÁãnÁ Mü;mÿÊN‘õC‹`>;‹¦ã^ž_K®dx0ZBƒ¹¶óè| ‚‚ê ;³ÙjJ—@ËëâíTÔÊ+¼[ÖšôÝ6OaJ"ñ[P §>¿šñOQ#éMAÕdÜL"ЄbK4;MÞÏ@£|¸’ÉôTjÝ-IP7ª‹á˱ÍP LyÍ»8,ˆùSj˜º“håˆ'jH€XªžÃn3j幄|ú| º tȧ1o¦\ÊËo¡j @Aãƒ.FÎ9WÁÓõä\!Ô‡x¼ó<àkÅm’PÆ&ÉÝ–“:ÌL½í¤Þz)Þáõó0L”ÄyÝCÏ"ëTŸø3™Í@Ñ}ˆFx¥$y+™''–e§ìíû)7ù`°¡œ/Vg5u½Òv©½Ù†Á%èî)Þ >¶4¦ìõ®¢œÞëÈáÙüDM$­‘j¦«‰qhÎnÄÅäžV¬òÕËʹKë©YeUz_S•&‘jÅU9‡9ÿjׯ$ãföÕ¦áÔ&aäŽÐd®Í-‘ÅÛ-»6ìÓx‘Úµ!˃ÌEZ?±C¥kr™3b ¾N„@û^¾”BT ïæ]Úƒk¶§©ÛÓ¼‡ö4ëD(nOOµg×jÏS¶Ô 6k×mÖ»)Y±ngº§lCÐ1{ ÙkxÌ®*w 3âR¶Ø¤£uñ˜ >˜IXÁÚE}/«8IkÐñ]€IC,þÃhúf`e¤.áóÙ­;’´IÛ¯ë9÷5LF@f›äXuœC€ìlr±ýj*Ñù‡1Lhâb5Çá1„Šˆ[Ä-7³ƒîª)]¦;}÷:}·N„“-ié–´î¡%­:ò Äý¯ˆûéq¿Ð@\Dêâ!FâþÚ#±Sd$îË‘Øy𑸽¾_'B¾‘Ø–ôÓúÛÃiÊ$×|™F|¢Ic›¬Ì>¹a ©ƒ…ÅCBs8åØ[°à¿¿ýöÞ­¹iì='Nì¼ï‰}¬7SI«J’Ým'‚º¹)‘”DÒ²ÚsNPeÓM‘úHÊjOLìïØŸ±?qó P‰º¸[5Ó–D¢@"‘Häõ_Ž&¥O+âö WkX|$ȤèB’ .°yåþáÆ2ðõà pø2« âŠ_ز´~šn ìûw©È ÿ¢A&;ƒÎæRà©f§fäµ·cÜt ´6׳³ø"}v½`E—&’ºzGDRl%ø1´Ÿ°?vp´Òßf-9RŒgб: Œú2½œâ5i Ìd¶-ÒYarª=ì±ò ï„ß+j¡X2J+…Kv3ý>¿ê†E[«~ ›…´²+ ö¦X{o­±V×s6, ~7½ÂíÙÎUí.¾‡A]ªæÔ®+ì^“¨RBßQyœ¿wjrv¥ÌBL“Ïsñ†ÔMjê:CûZ,ö¡¶.³Ã«él|hÁòÕà—õZ´®8|º²¥FCøBô†—g0ƒð—_Ö±ïo#\N¶¹Ág@Ð|Š{PX?žÐ|ðÚÓÅ0x½Y­àôîÓ!Wßn=ÔYÕ4`‚_j µ•àd:¢¨à0_~y%02ÆdC#°>é¿ÏGsÉœ‹"¡«µ)ÕÉNƒçý²K®ÛlF<5ê­`¿&»PÛ©~u5ÆŠ›¥•7áÚÆf5\{µFCÞ#^O’H•Q¶4$ÃIk¸ø2i6ÙÍ6Ä#ª ¡élží¹¢Øî.¯@À;ñv½˜"e°+瘖¢¬Ã2·§µàµZ’ýkàâá/?ÿR ®®‚×0ã×›ò„}·Œ¥û¨ßúÖŸðÜ—Ì Žñ959­"Ž?¡#Z™.ZÃ~í_^ög(bÁr¼Ü|¹Å[ ö<ì¹Kä8šaÔaôäX¥8ñåQ½Soí¶à5"écmguZÓYŒÖJÙw“¤^68kÝ7ß7@fÑuóøÃnç7XƒC<·E;—ý×þÛûЪmt?´w*"¼â°y_aªPü¥ù 4…Ñú#0‘ïu‹2‡cJMLêÇÖŽtLÀŒÙ,€EÒ“Û‡Ý?ÿ°àH™ZLEFPŸ‚ƒf}·}"¾ß=…5jïÓëÙ,e4Ýë3!¾hãq$çÌ ÙJŽ~«¬" 8»#V„á诧"ˆ ×ôa~F»ÛÐÌM;[ˆZC£ÇžsÃÜ(ÏàðêÂÅr¨ìþ’î©Oχ¬OE« ËúWj+(çI)ÈŠ?™üà¡òmR9 0¥"Ûòíîq­ªß ßn Õ0G¤O,¨½qlb¼ºBä‘þð*ÄQ€K´§èGÊåߤx‹ vØ©ÉÞ÷jŽN´~´œ¬†ï©ñù"à îrøm«ÖÜuW­k©9e¾µáx«¹SǹâMÍVú_9!léÚé~vBØ.0†pÍ b§ˆÈ b·ÀÌÑŽ( nMòæˆØ;af£ìÈí’È<„Òk`e»‡çè8±÷$èÅ¿,ƒß“Ç/ ÖBÌöƒÞ¾(­Û\K¬ƒÀO—÷ÞO9qœ.ÐGEÔɬ%yìÀÿ^²ë²h€¸^I†yŠö$aœŒ+sÆ*Ñ܉ĸ€eje”©Õ|8ós\Ù&f9ÆÖÉVû[ɶ1ŽSc’Ú„+q¾%Õñi ‹Çc) ³­œï&9W 3¯”òÉD¾9+ë¬áº^Ô‘ät`"G.„ßÖÝpAÞcU§‹Ùõ Ҫה#ý(“ÇÜÆš@­Êµt®üþ0è›k¬#-’Yø‘l×Ð:iè¡Áôn*hl„Q—À¾ðxŽÙTü†,{gas-‰?9ºU–=[úÀqHjðH;Fc­Sžr•j¦äÀ{,Å[¸Ú—¸åÄ=…$·“z½¦Á;Nâþ˜æ¶¯u²Ú[&èÝTÐØSšT‚}î%`÷¯Âk?îîÛnܸ?¶qÏS®jõj’¬Ö0 [¦Ä Wô©úêù¨Š>Z9ŸªŠAËó¼óTò déÏû»êýDŸ .åƒZ8*ÜÃu{Þ2a}úàøg= @UöØdÅZAõd•ØYFF´&‘C¼ë¸M©E$Zhƒq—â'µø?¨'M ‘Ÿ4iQ(Zµwâ"]*®? D23€ÌÞ‘S`åGm}J¿Ìç¦C€­ñ¶M×ø U¨¡3Qý2SìÐÓO¡\)?«T)€oà¡ò¥Ø•Zƒ¬|)qõP.Õ–k\íïS0䩚9 ,Ypœ_A›';(¶Œ= »2e®É„b2»Èyž@žðÁÓðüékt&sÃü0u:o;ô‡¨Õéžw²˜e®ÑZ£g6•Ie¹Å8o3~GAΜã/VSUØSÒ*o®;òÀÄϳ¶Ê©­JÌüYWõ¬«ÊõâòtU"Íy2Y“³j®»›qÝv–ÏMÖÏŸ§×ÏÝ×ëçŠÀÜD ]ŽÒM+¢+îØGoU ݪ¼‡ë„󾌕rC­R®>ÆÔ:¹™·Ò¬b¸˜M+Q ×Z臸§/ýæ{×kï]ï¼Ë¸ð¸íæ¸ê÷\Çë9o°"GlŽûën¹¯¾L®îq¿Î¾íÝíÆZàºj')ÍúÏņ~«[jÁ+ª/I§{¿äºœ>Íü’{Üy.¤¾Ûh¡«hÚÅ3_Ò¼I< 6˜!Çûs(eë“úsx¯È€})Gï:`· ›'Óè²²tæÊ1šç’—3?ç²Æ+µè²Æ­–)Zs¥ SS‡Ê?ýh)iE›Þ´¢ZþÏ«ìð§’ÿsãõsþ¿yžóþ¥•ÿóÞvÖþ××^­'ò®?ïÿyx·ù?àBÅZäÔGÍC #¯¿gÀ£JЯw¤§‘•·3oÂÎèi§ë 0˜ïGÂéýJ²­é9¦Ÿâœgýñ˜´VíC)ŒŽ`ÊF†•nö†gÁÚ:ˆÿû¿Ñ\…’wŠÕPëó7‰êdHC¥$वtDâ,=÷æQ‰SeO‚‰Ô¨òS¹5p. `8¹¦5¢H2CÊ5éÈqTÁ%Ž(A„”£‡9‹À\}ßéC-m#·¹êzR,"=‹pža¢øî‚£¶ñÅÒhò­T_YQè9§2¢å¸/MNkGÁñ¨Ž'øutÆÑ{ d4|Zî7¤$˜‘ûMÏ´6´Ñ–\€™/Á@©kš€Œÿº͆çoô×Þ/ÂîÅá‹7èï­Õ¢_Izt,n“SH­®ÄÆî³©Zr¢DšOܧù:m+P“é¤z £OéW¡Ùð®9Ë0ñ¾þ dsdÂÊ‘h¢].µWÕ—‘'+¬¤/mOò–™ÒnFs™§U>ý` » ó¬bÇ5üóˆäjroÎÓ&˜›Äé&t80±>† a,sƒÞFL-„i<ñJ£`5(}­†+å¯0««±*_WH»þýÝèïï¾¾õ@hÚJѤúu%æ+™Øé/ˆ‚Ä@”F£ÿS p€1c¦éâñ81ëÙéN°…Èo!’!ʘgæ"9Áôr3_¨Œ,.‹9ØË’›}Iî•L}’‹×Ëm™¾¢Pâ‹v¤°W`;¦$½ø;5Ý"éÅRƒÒ GŽ“^Js½tFŽë¡â3ŽüŽ‘ãíÃíFT/mtŽñüC&Â3¬‘`~Z êÝ]þ7ôO»ÞhŸ´¡¿:ËW"n¥Ûj¶Ñ.rŠŸzçERS†°Ô­Ÿìraá$”%Ç“ïÔ[õSÿLA*mmÿJqßíž´ê¥Ä¸ŠýZÊ,rÇ¡“ÄL{G]LbÑÝn.1ð¼¾…@eôùmâÎ{l'—ŠÎc…¸qNäœó5 ø¸’™®Ñ›( mè(åÓ‡x…鄞8(¶D ”ïÄžˆRð“Qên£P:à9%!ŠÉ5Ó FNˆbFIbjÒ@®Û Û2RÞÝ^FI»#às…Òâ]$;”öѱžˆXy@æxwgæ ßfÖŸñÆ…ytûp8ƒŒ|y} .³kl®F¿-Òx/´»'2w&å.‰wrÀ"RT t*ë¡îÓ_cª-Àú‹£1¶èc´9éÞTš‰kWÞÃìQðz?ç˜"ÖÅ\?kÀ§ KèAí•äöuØUè|±‚Èm÷*ÙÆ–*šH~bTå%ÓŽJ±wŒðÑõ3êTã#!~qFø•7Z52åÁûjo·®Ç‹Ñ,ßÙ÷€¥8‡ÑPؽbíiìaó¢¢)90‘ Ó‹_Íb¾â¼fLDÒOÈá•`ûøxF_.÷òN ÷£OübZýí…51}VáK‘Åñ"8Ÿ¢mw> n@ì¤ Ä »C+¡÷ Ý0vÓ½0§èqCÒB)vörÆO›€ó¹$æ ï:¼ãŽÁÓ[eÁÕèÀ䯀2í8/õp€W”jáeDqƒFª¡?9`Êl˜ÌÚ ¡_g z–uKùcß¡ ÜÏ£ìŠf b¶ÏùKÁ7ÑO“_sQ"pÏg>ÄCï¡«>?õèößÙÅüÉØ_EÏöŸyží¿é'¶ÿÞ×îÏÚÿëk› ûïææóþˆ‡w»iÿíì)©V8;«[[»ók—ïn2%Ì)þÐ@Ë{³¦0q>ruØ#hÙÇÜ÷dF%É´q6äk¥ºnú|et‰x䛑‰·6ëG1èæ,’Ê)»»¦Š[­²më¦àr€·è-èK׋¬X{Ô˜ã‰dûž¯ñ¶hü«Öx{:ùzý™Teª*â»@ñ'1d#‹Ê+6`Rq—‹»XÜeÎ=Øt·b£³‘ßß]ì´&Æðl\¿Oãzù‰Y×oYá )%±ÂEÞ[q3³º™ª§qz›©œº§’8 ÔN—0‡ÓCJ΂_ pŠsò`'÷.íÀçú>HsÃþàK<ÏoC,’£C9-q–É ¶pá'QQç´×ù Jñ,f×Ú;ƒé ëРBÏí)u%„£¯ÆL¸2Q<½F‘X`Ÿ9_Çå­€¥|†Wt8b¿P šW•Ç·xTÒ¸ ˜DÀÕ!¬š‰p.Ô‚5OFd¯í[µU´–T'—}UqÏà‹ãË)ôÐß ™^2˜7ø¶––°«Ë%[Ë¢"”Ʀ˜,ñbªãâ“-D¢´ “…éJS|@©²² &×7²ùýä»B7±:µú(SþŽå.’ÈýÁB àÙ+çñ¼r²rl/ Œ’K¬Á*Ê£'Ó‡„ì^ÊM‘jA(w,œùÉ?Ï]ô(iv{]ø‰ÿ¯ïí†ü#¢d¡;=¸§žÜî0õS*Ç€B*±sLï¨uB?º'ËöñyÅÜÚÉëm䟵ð2Í\£yxe# ùäÜÅÆí’“¯…öµ­±šoÿ(><ª=œ«é¯lÚ¯ä(aWˆÐÞ=Íû®2 ßÅߨ³×½O#ÎÆ(tºQ :™¥“”|ö°¶mŸQ):·_úÜXÒšRRüðAÁjm\ ”÷Ž…«ö§€îè ¥Ýê'ÓÉ¿‡³i|ÄHÁ°–8 Jp•_ϵÔ)HÏ ÇŽîrµ{5§“˜oðÁ“â•·#O¡ö§2¿¢}N9Šèû—Ø_œÓwß@¬K£0&WÙ4×Öá´²ðèüŽ€鋪ÁôŠ´O5Ÿn®NÊß¼c!UR » ¯†| ñÃðj`ç <åÈù‚wÔ>eB°\™ W ‘‹NCŸBz–¥½g,uKAâ2€¯sjòÉîX2 5€×ã¾ï¥#ÙƒþÙ¼Ô_9§þEˆ\)㯧+@QøË°loŒ„ñŽ_Z‘7AsTðŠìCQnÒP‘Åp`˜âñ©FwK%+hòÕóád $Ú§‚¯s¸‡ÏµëÜ&R®¢ø&¦M¼wŸ³f$ yž¸ Â6D=ò” -zB%MwJ *ƒ˜(YLQdº$©äDÒÕh‹2sïKO£È›°Ü• Y»C(ZÀ5¨'–Ìå>Å€Ûoê`;°+Ö¨1Л–ôfCå¼ñ¤.9=Ó‡v Mß n]áòÀÝ&0ñÿ¾Ê ­æ`{•ÒŸ+åS³^0ã&aþYåQläËŒâKf‡¾—ФÍI©ir‹#j³ ¢êÖÃõpêY= ±9Ó¹’ù9p}':þy¹Kôš—è -Ýl¾å9Жçõ­é¸ „r Å„œŠüô,ó/ [¿le%è-ޱ¢ÉoOÐ:†í4ÅEÛU+,…û£Ÿð£˜4º.9Ýæàú¥ëa^’дӵp–eßÊw³‡l¤hMé*eKe¤Ý";*\ÏyFEkÑ£ônhÍ{ò>ÀfâÙt¾™ãTp/ÈwA–udg.ˆÁàòžÜ~zÏAФ BG½8´¢½Ú¹›ã#;»’¦¬ä·Ê—<Ëoš.WÚ¨UCOT…È{˜D±®I2”[d§L¿gS0ùil|)>Y jãaíÁï¬ætzcðßÄWÌS_\Ù‘–ÚŸÊ»GݲãÚ¾*/í+Z—‰»»—ÚÄ÷xŸÕÕ¼’2Œ¹jĈíF_¦¿[ª ÓŠ(¤1–ö§x"å)ÕЙԩiÔqÔE@—ýÁt ²MGdÏ©«à%Z• ä[ ##Ï`Fú>¶W í…G¿™¢³*M3RÓÇŽÅ…kçbÛ­ég|ŠsÑËä¿Rú¸’PÍ}„SŒhš•eð¥„ÆäKjhîdÒ.æT"¸¬n$²2º4AZ4¦¦QµqGcª(>C©(< • Ýç°ºŒxÍ|±š‚xÊŠ¢R#Ñ i¨_{¹õ¯ü UùvúâòZj×̲ö9®†§(ƒ¶¼¹=ÅNXp̼¾Œ¯g Øä"8ö†+FéñŠm`8ýñèߚˋjÍft—ämxP£^!!BÚám 1³áÙXdx£7=áº%*þý¥x‰f¹j*z#;{Ý¿JÄ£ÿÇËÓ‰ÿ{õÿó Ïsüß_ú‰ãÿîk÷gæ _oD‰ø¿WkÏûÿ!Þífü_¯Ó(¹Òµü铹Þ.l._VÙCÜ•7>Îû¦AÁ_SâÔ` e´WBÐfÃþØ2BQ`"jD‹õá#¨fé/žjŒÖŸ VÉŒ zYÄËÜt8Á0¾ÙwöpÎ(Äk®Ã0b†Š ™j*-RãÑ…ŠD u‡Ãàl#¤×3Ê}{>\ôGãyÍFô£ã¹cvEß| "ƒÑçºÖ2Ê+–_>¹ð÷/‡rÇ!‘[;ïÑÝàc(ÿ° Œ*„ÓiÀ(v.Ú¨ô”bróDˆ´3tIÑä…ÇHÀX0 K‹g•ñ=bqvxqŽúb‡¹Èžàž‰HÈ ¸ý²Ï’µ×svh#ˆådÆÏá<û<ë_óágâŠo4N(¹ˆë‰)õ~ß'K™û­Aü^Å•SŸë£}´?È;ü¾çUn°o¿Ðù´OKÞP Ö§s5ØH4Ay9wõl40z¦ùï£ÝÆ9d½vöɰ#D©} ž3±Zq9 nãÍ:j÷÷S„ø29¢;Äøâ –ŽYÁTü…7ðâqâüÁâ}†ÜÁï?Já÷¯âîàKqQ_úí/ÃÁïtìËÃh´ Ä”Rb4óRzÜRý~ö÷µGn÷bê.e3½³ÌÌW-¯ Ð`%5+^<óÐQŽ*ˆW(9`G¥Î´ßbHîù"§~„ ]”2pKnm.Gœ±F—oMˆ³¯)ZŽxÔ–› »Õî»P”éûBÈÛ^ݯrÝ/‘åOû0ñá¬êmâ2§‰wŒd³ËF áD…H„o@²FÔh×ÛŒ¢»î¿ø€(|áKü¹EöÒ’fòÌ\–½Ò"ƒÙ߯¤´×dü|=_M`Qx.TI¢€k›m`#ƒ@6˜@Ú†`ÕºÍI$ É Ž;†=F*hïñ˜”óu5|3É œÀ"ž&¢ÚK<íê~j¶Už8Ê)Hbø,•:9!`œr›ÞDoHgNÚ«RðÐ>ü$zpZÂìTÏ>ãœsŒW¦ýçÉäÜ\{Öÿ>ÌólÿùK?ºýçqò?†k›¯Ã„ýçuø¼ÿâáÝnÛ ä|6 -%—â-Ò(æL‘XÄfÔÅ$/߆s3í`œ¶N&´SÈÑ2ÕÁ-ÙÈEWáFìƒXçµNª]Ñ9•Œ"mŸ¥‰üqÁ¶D¢võì{•’© ‡1 «:9‹žQo Ë<ºøÎÙlꢈ\ÛåEþ©Ú¯žs þ°v»ÇÉ1øål{Î-øè¹’™ï¯ˆéÖ™öϴܦ$4_!dlŽ[«¸“Ê=PâÀ§m¨T@ììŠ Ñpi”0Ä29 €¿RnÜþBß¶ñÒÊtÇ\Ž90Ê/ýoCaÒNl£æc™Š¦KJ.÷ccúLGKNÖõtª×=ªåÉ‘«@Š+;#Ös¬\°îdx»×$VšÉÒ‰:ÍwK0Ù%ã—3Mvʶ½Š­ÐsC˜2UHÃ_!ËsÜ9-wÛwðm-w&áI6%W¸‹·UºÊüŸŸ—Pú$^mÓüf$3Ën£çˆb¬‰)]ðcJ ýÿââ©èÿ7^=×y˜çYÿÿ—~4ýÿ=íþ¬ý½~½¶žŒÿXÞÿñðn·ôÿ½=!wdÙ^qÖ;{Eë6åxdí#†%€g£3Y£fUAïq‰¾ÍcCc«|ì/ð“Îp>ìÏ_‚mªT,½ÓS4V8.…,úÒf'–¸²ö†@=òl[Do/L¯F¶-BykSÊ ŒÉ9¦Û4,A©wDúˆÅk¬.ä»×ãq¢åÞJSc,¿vº³‡ LŽ¥–]ýÜô1»„­£îi¯(ey5V–Ûï×Ñé1.?ZˆK”C]DG+P@Qº*ú%{bE¿¤³w$Ã\‚=ÌÜŒæƒë9+ì- l£¸œ§¢gF8y#P>¶Í(¡Ï•ù38ÉbFµ‡ŒêˆU P²‚¸@pƒyuÛš9ü6œÔÒgÌ<Ìe:.AŒ&WÌ.ýJK8”äJn—þðçäQ'ƒø²kQrÙˆc›¢åÚš Ù@‡ ±m#å×!ÜâtÖEA´€<ÉpéBøÜÔ†¯¯ëÁºl·êõ0Xàó„Ö¤È Ùnc-؃(ØX‡Ï“ ö Ø”M7ׂÍ0ØŒ‚Íõ`s>lj’íc¸¼xwðËt|>wì\$ÈxËjt¼újøïéè¶ÚÚ›ÍÊÚØw´²s•á8÷¹jÎâËl8”V=b#G †yŒ¾a`-ë¥7¯ŽnQ•Æy"*ö4š< Ùi<ÐÑk܃o§¦ µy´üó@d¥ô@g2V$`Å‘Ī?G¢Ç]A"“±®†*®q=I.ü¹ÞÒ¢bè65ú´¶‚z`+Ínjäim õÐî!ÒÔzÑ÷…z’»ˆ{ÙHŽSl%­eȽØ-åfÒZbL>îaë‘{IÈÓ›`ll¢žØDu<ϦÀ6‰ÖpuæÈh¾^³5‚–^_v~©+ZƒÃ„aÍ8å÷ç¡¥3vy¾eÄ»å:bЩcþ¬:O€€MÉÞ`Ía1a•ý€Wfvˆ¤uñ' ð Û”ühV– Ö̘“ ÿ–ÜŠ1'ÎÊ“~‡#`z~žqlƤï;âïRãqÆã= Œ'í@0žŒCÁüÛ:î‘Õo,—Õ¯À°«¿™ÞÑ{'qFVÂbŒ>1‰L6”¿4.ï¤qÚÄè5.ï$uÉ»u!ÄMîÞí w?ï¶©]çÝÀ‘mÄf"\+Ì`,„»ù±ÆÂ-}âàÇ& 7ÐE\ÜâÇ÷îf‘Ô¢ä÷Žh~ÜíT‚v£{¸³ƒ…Ô:­z“×ׯ¾i£™+¢JiíÌrjý”ûGÐæýTáÚ¼ïrQ}¢þËs¼8ÜyÇ }i³îXÇô¯ šH¸h4LãCG:FôÄ Ax};ž^poï¡=¬F¡ÓÕÀX"‡Ç+N9Ïéý0ó§6¶BÓÒfÞÅ$˜-ˆõXuíM»W ãì°í^"˜Q½ 'P;dÕudV‚"¢10ÃddÏ»õ­Úfˆd›jaa¸œN>‰ïÍw"ùNèžhã‚äi)*ÁNŒÞªaÖèšÕ /˜Ü§·_Fï“\ÓÙû_ÛoùB„ UZ5¬]L•G5Kððr 9ûæOCõ) ÜÀ'°+Ê@±ÏFrc8°d_}l?°Š›™8·°e¿èF:#á ˆÝˆœÈÝ„ÆÉjˆX@ipnÌ)ÉÊ´ÝÆ=¹è{ ¸!§6ÿ†EªØ=$wZ’‚Ì}ÊóIƯ¶m\þÝkJFòÍ„Äj…¹&6C"z6&T W8ŽEýdô,â‰<ð¸?Ý9$?™µJ¼Í¬¯eM‹Bh`Pë‘»±©Æ¾âS8BOa<þ»êìIkÇUïÞ£×€BìïÝo‰ÉÑÜ=³è Ñ Ëƒ¢@G@ÙÑ9?÷Žñ©IîŒÈy(ëC~ÊÒh(ôà‘0X÷Ib!\ßKEžLcßM*A~­O÷»)!¹< #û®ˆ þEpÊ‚ÚU]Hꮲ(Î ]œ4èa’½å0ÉÞ홤ÎR–¦QFÏÚ:çhã¦ÇU®xè)x¸Ýo}JË—¢ó|?ß3iZîûÏ€'F×Ëwd6Ý`4´väbÿ9¸ã¶ã×3LÛ4:#Aˆ 1A~™t ¾c2¹—ù‰MMêšpKIÑiºä ÃȊ¾gùÅE’¨~d‘1‚ØSªÀýc}ÝJbô!‰0DŹþb2ãÁ³ÈèÜò¶2£MÍKÓø¢Üò€u”ùøzŒ'.AÞò$0(òàO(?fÑPQ²HjXÆŸ8p ?ç&’räÁ,FæMðÖ3Þ¹[$™ÿ5{*ñ_›kÏùŸæyŽÿúK?zü×ýìþÌýÿjýõ+{ÿ¯¯EÏûÿ!ÞívüW§dÅ} ï¡_kw ýÚ¿@°oö'Ÿ§×Ò[Ì#È0«ÀHã–¬>_lLO7ô«XÄW®H/–˜dqO…½JL(e™Y·Xº^g)A_ªE|©ï;yB½–VU³ZÞsXÕsT•Öì DUÉÅ,UE»¦$Ò©ˆ*ºk䔢Ow'êÒqÆÄdÖú+tŽ ”€ùöG“y¼ÐúûŽWt ¬È,W°l³Uû³'y*‘ÃŏÃÙp2ž›3jòŒt02 ™˜Q‚=3Ê3œŒåAŠkF2ÉZ=ÏÏH²V¯1¤'˜díGp¡M9É öàOàÚzN©ù]Mïâšð0ÍðMøÂÆÈ›ÕJeĺ“/i'¿/i܃Û×ñÀTÿI#;!“fJ³UNÒ4bQWe¶YÙuà¨V k°Œ¿MO¿b£ V˜{¥r-ÌVu–§:ûS<šþoGæSÑÿml>ëÿæyÖÿý¥¥ÿ»·ÝŸYÿa}s3±ÿ£gý߃<¼Û ý_gû°Í¾J2ûSœQè±ÉN%øxØ9H©´Ô ïÿü"ZÓsÌÅOåbá.2všõívD• ÆýEÑàG‡€ÁÍ`ox¬­W‚îþ¯µ[+ôÄŠ¨5ÊRî±zÁ¯·£-¢ûsõ„ËÍ?o?†~0nŸWCˆÃ à3‚‹º¨}0F@xwe`dç#Êt'Ñï“fÐ¥±‚EŽ(g ¾‹Ñ'XKa&®H£Éhñ>”09¿¨·@÷}™®›HcðÅðÈ™ô u¬£Ä—ñÅÒhò­T_Y©pôÎ9p¼Ü—¬@ G¾s/ƒï¯Nõž‚yg˜k»­—ÛBÀj:yV;j¾¬üuÔÇ<ȧ[_zh³8×ÀpH~xN7¤$ç’ÂN+ÁA½»Ëÿ†þi×í“6ôWg)+œÂKÝV³ýþ<ÅO½ó"±0CìÖOvKÁº;wЪ»ºÚ©ci ïLAönmÿZÁŸížD­O;_à*ökKÐÚó½€ ö:˜_¾ÓÝn.±@H} ná:>Z!L× …ñè(ÉÕ;5ù Óv¹Ê‹$‚Âü¤ÕAÀmÏkq—š%O±FHÓÈ«»›Fð°»×4Vÿòp5êS§Ùaä Ïg¶Ÿñ¦‡ytûp°Ãâòú§ŒÛª(T£—5­ÚÝÐg³W£ ¾Ë=¶ÑáÊ©pÑt.t°ë}¢¢ôDø Hx€2†÷–Úc¤Ñǵ÷=Qº#þ°+¯«öàµÊæÚ¨yp˜ø äÁ$‚ÕbºÚ+IàHlBGT`„£&ò™È6Zì­Æ›H–ºjg²È1`JŽÁʇ6‡ë Eÿ#Ÿ¢tŽédŒ3¯ܛAoÔʃ÷´®Ç‹Ñ,ßÙ÷€Aoás:1r—=§4ÃPÜõÏczRÇ>c#* |Ø[W®Kö Êå^ÞIôÒg@£LFÑ$ë²Ç4ûÛ krúÌÂ—Ô î²ó)^>àns,]pýkÜ%°Y.D2b½$zÉ…HÁ`3¬–É‚‡¢Ng9úSÁ5à¨/‰9û+ɆqÇÀùé­²`rtöòWi}Þ=,ä^J”\h¤ú“v œÁ†k‰Ý¬¡_ç§J&Ø’v+³¯cî‰÷ÑNFÌ;f)O–í_ þ‰écø5ÇÙ­ÙŒÅgiFà?„¥Y·ÿ¿ žŒýwãõ³ýçAžgûï_ú‰í¿÷µû3ö¸¶¾¹–´ÿ®?×ÿy‡w»iÿÝ=ÙÙ¡±Çú¯‡[íßà”ßmîn÷H2ë¡dÿœ4ñü÷¤“"§A“N%h<ÝRrv¡BOÙ$¼ÄBCAq#°ZXªí˜0÷är‰áE)TßÇ¡šcÂȰúöJÜ?Y}Oš%1þ³S#Â?ýtt c1бÔÂÏb.ÑÜ }^Š’”–õ%5 /˜×z°˜ÎdÖê>Hœ k² ¨ù¨š¼Ö÷{-üc0´N߯8× Pçùõ€©{î¾\Ï‚‹>v4úwÁf ­;Æp?>™úÞÇå^ù.X4)(ó€Üùµ»{Ü¡1H5ÏM›Oð‡² ÙS ¾Óf³Ùnd?°˜’A›Z¢ž>¸¡Ùœ/Ȩ}öý칌7oÊÐf Jßñ*XîÑgü‡l̹-ñ#5™JK¾‘{ú{MÎ$î~N½ã‹µ“0Ä&€Âóà|„µŸÆT=žâ† ãÕÙx:øVª§á-&tQóØ¾ƒ {*©å7|SÑa!Xôƒ¼R¸0Àf:.+ ÇeؼŒŒcbkT ‡çÆ Ï8úrAÖÚÅ—)Ÿi‡KφH\Èù-¶Ùv™¡R§'Ü D÷Ø7¡Ê˜ž>'âÚ¬ *§; G""È4zwÐŽ-h9I´sÒn9mîòǯlé¯Ptsñ b‚Ì^óL¢®CG“ÎYR—ýº£}œÁ9HW;f4jiGà´äIÓBW²–[Œ£]ýE<ˆñôóïël¡åCà˜ÿ8~)Íò q[,ãÞ`sˆU¢9H9%˜+/•…â ‚:Èèì²ÓÖ,À7¥¯+,lGŽÙPEØ‚5fIMô÷uîªû.ä‰ÉÀ9g®³k$MøeD ¹Qi øùè²ÿy4éϾ“%®<œô9‡d Úl%ë´aø…—T<üiüRͦ"Ù‡|¦ÇfÎó"ÃZð+4) 7ÐáˆÔĶڦ‹ÁH'ˆ:{ mÉÂwð‰éYQ–= T.—˜žÃ%&C®À}Ë\|ПL'´.b&€™gF>09”t™8iê³|Y ž‘¼V+ÎÈѤ¸ ð„àº$¼FDñÚm½@I1¸¼ž/L‚$_K„7ÀÔqPºž_óünŸ”²A‘«’+ði¯KS+5{ìŠé:TzéØÑ¨:9Vt’"ÂyÂöìxT- 8Åým»ÊýÈÕ‡â‘8g'W¼û‰‚}XÕ…Òi¢ái" UoI…½¢Ô/Þ˜÷/åVë›ÍRßÖÄ@ceêN6f2:”c<ÑÀÜ<.H(êѨiÊÙU´º;X8ˆ@›îÄ¡‘'k^XCÔS³IÍ`Û|L’Yç…Úì¼ï¶ÙOš5ê£Eljá׿ oÙ¾-ƒ¸aÞŠ1tr1†Ncèú7Œu>eE‘ {]“ð2``tŠ%Uâ¿Â·é—ødŸâuQ oRú£ò®^ ˜ÊD¸gÿçÿ«Á¾ÿ§ö¸^ºhÁ¯h>^N/]Ã/·b8íÞÑK·ÞlžT‚­Ãޯ𣹻׃‡'X–í¨Þ€;÷¿âgÝÃÖîIŠ2¾4v;о¿¡{¥žØÇhùþkŸö¨fÛ^ZÄŽ­Ý^ÆÓxOÞº»ä°zx²ò54ÂèvÎð+Õ»än#}~?4a@Úäd»ƒ>É'å#ŒåcšÇç,üÀn¾;‡=éµ+ZåpòÕ_J™AnßúéÑopû~¼ßmø&ùýâz,Ûß—ú¸ÓóÒ·í­íÀÝi)ˆ¨`”NÃ;Cbw$Öøü‡•3 m¡Øµ—ÍŒ(æKûï¤D‹zÈ’ëAT„;1ѶiµU.—°‰ãÆÒ|†çµrV>Ñ™U mx´ÁMº†s²é#­Ü€ÅÜt7`š@1÷dš†ƒ­ýÍC\Vá=‡7q¯°7qü.Ü?áå—§$/¿Lƒø³bÇ€hàX~›Rù¢Ù.ŽXÄ®ÅV&—4)MQ d1Cg®rÓau½Xözk¬è6Da©·aCJ;«ÕJø¸¹;@1ÙN)'Uà¨ðPΖpÍÎEôC/»ÓA \ ;1§xñ´KøþÆÝïËUô @4ÃVCÊ$;7¦¼#^ÓGçò…T"µå¯à™?GV™¼Œá°·¦ü€ ÜeL(H`;½GmZžZfÓ“3û;?:ôY¶S‘ž†qwÇñ§*ýgÒ<14ŠPù› ÄÚl°ÿó9½¾%7 @Œ¨Ø=Ù^VD…R¹”Á ¡È¹d@C•Öl:v8=£ô˜E¡NYjÅ~·øÊß´yû[õ’D©©|Tøúã½T;e¾•I±ƒfœÞféõ[¥¯  ¿–ˆçÙ.èÚ­å¨ôFÖ 2¾¶çÂ]=cSÏ|:þ¦û.³£KH;W‹°½Î:2847ß·›óÑšJÅ•H ¯¿ÿ¾Êžå=•‹0%‚*Ö5WhUHur÷ÉÆE¥KÝ ©¿ÇæKÒÀÙê¶X7Ú J•„ÍÕT„X×FÇñäëõgô—p¯ú£Ù› t3«ÜŒ E3ìΊԺåySà‹*ÈFe³œ¯3’¡Û^góì¶J>4°‹ì©Ð+x¿,)Öþ¯ìœ¼ýn=^ kH]ŽÀ¡ëðã²x ¦±²Ê¿Ñ[RM¡Ý²ŒÁëT‘Sê 7IlÈd˜óÁƒÆj›Ø"j›°öðH XÕ/xå·IH°}7×(ß!ÏÛ]¾Dô'º«"¢âEÛÔ’—'xmŒ><>´üÌ W‚ù÷9ÜÙߨïÁSê•Â7´2ücFù±³RÆX$Ò•q|Žh.ÔRa&Gç´`æ¯ø âï%ïJΞåú÷½ÁKÝC¯[‡a®Š6û‘ï ¸¯æP²L»Ý …k8 ‰!ªø¢t¹œ‡ë/wdŽÏ#Šûeí„ÀjN+Ĉñm~B´†–›¤h‹kM ©WºŠXpÖ,RjªTï^õŸ0½FÿÁ79Ÿ§ª!ÕúâÓ ŠJ">í”ÃkQùªÑZ*‚‡Ái 6Ä Y¿MGç±Üvƒ”×Wçý…•_;~”U5æ ŽýÃ.Ë©ŒÎõ‡í• †ïaö¥ ̾²Â†EËøwñ~ê}’ÂWÈ|!Ç]1ut-Hò̸J/]0™bc>¹Œ€ÑIËiÉF€:Ò|ø€Ô‘ ô „ã²`“ªÚ6¬ÈÀý”Mô‰é¸útñòáÖî´õ#këçØª=1sâ¤kûçx_¬O5ÔY„ÎrÀ¸5‹Àõ=-E~ná†!YȽr 4I±J!)κ·ŸÃìÎÀÃr6B¨£gö”—=1ù *­yÜ8º7n9¹“à­øYþ>£%qÐd“˜t^åη§W¬úP18öñ² vÇÍüŽç¸9q$·€G¦ s"b¢©9íhh4´ %ñVò²2+E]Öð-²mw= Æ&wa©Î5F¸Z¼æKÕV{t™*øAhbñ}÷µY Ê©ƒRïþ q;pSÏ m¾%.…Ü®ˆ›/ièâFþEi±b\Ls¼.°‰7Éœ+Þ®$_J¾’²àºšÅ^ð¶½ÞÞΜ×·ø²-”w‰û}-Ù¶1-F ÜÒ5Éôþ‰wbZ1¾«?PmQE –(/+ÿ¢kòZÍ D€ñþj×Dû—{Ï»´&µ÷»5·þÅÇ$ͨÃÁH”h¶ÚŽXÜ€¥5:ϹAýUcPr¼9úwŒÒ}b[Êš„VËR·º½NçgS§ãº¤[:+e©âIG†mÕ@NÙÔý\@?TL7$C+†"Aû«£2¾®*áøðcø9¸Œ®(Jà Ðù‹¦(Š–¢(úåYQÄÏ¡(ŠîSQ„~k9ÝQMÄwÀ°=Á;à#jŒ¸q¤½ýyîréh»Ó….ÇûQ*€4Œø”Yé­E̸,:èùQÔ_…zŒîÒcô¸·èIhÜÐGXç¤yo^ûô´ñ§_ëìn«+XN>l1ð2€(̼s¼”ÔÞå{)Ò^ÊÑ“qD¤6~>Š`dIÊÄ,Øöy’Ü¢û:}þ”êÊ”YFw›e:‘ù¦¹œc6Ù&&ê_~Dµ¬ÀŠöÌ$*¢Üj;—Š$ÎßšbÃÃ9x¬ÃSú¿9‹`e5uEÍ7”3önL:^¹$ S¹‡%Ñæ×2g£üÖê0,¦¢®&\=}-õva˜eBMÂÚQê™åÑjGËÓj Y²€^;mýîgÈ‘5fþäªød¿›¼¥;·ðU 0bRyFè×e³–H±¥s©èÎÏY47Ã0Êgó nÁWÆŒ¼l¥°Äñ‘å‰îÃð­4Luí4_ ×3½s½Þƶ7³Ñ¾ê{zÝp%ìwUÎÖ#åþÖÎ4nÞÒÔ5T¡³ü+ánM”ês2uMF¤JßôùZ·½îÙŽWÈ^²*h"ËÙ:€ÑŠƒ7ïìlÏÚ=ûÏŸyµ?³\¡Çóg¶ Þ!©.ÕŸ9|•-Ø8š·Ì‹óùLÄÍÅ\™qIÞ´+üCº2—{–7srf'Ší'¾Á xøŠ54iÖ-Gx"ìµ2oy¦b³M[Îà¶-wPÝ-£-óÚ¶¢”®ã{Z¶­œŠ"Ÿ®óö-MUi˜u˜P30¯« OÜÒ ?† ReNGI% '”T•OÅMÌÍål“²œ­Òÿªf‹åœ.Õìç xznÅ„Æ] ¯[7•S.µ_Ù_©jœÉÍ“øù“ú×ߣÿ¤$WC'šI°…Ìb'ÚeE+ÂÃo¯pÊï»ÍË}¸,³ÑSaOˈfY “zt³È3O{B<-u¬¡5Ú0ÿxý#^Í­“öÚω}éÿ©t€†Rø}5dŸ½a¶úr ¹>Q§a°’ ¦²Oï‹ßÀþ—Ý”aE~T›'ȲlG[<zØä¯{Ó;_È89²Õ[fË;k¤4¾¾»õ¤yÖ¹šÖ2r-‘ƒF!×v +ñ*\7¼qº.¿çfG÷øÈa¥_®aã òçìâ `x ÁÏ˲ð]ÐMŸ.M;ÎVjÚ›B½¹*œMNš¹•î;/îß´Ôª¹àí—’¯¤BQøÌÞÂÞ¥²°áïÔ¥”4u齎ç ^Z„|UxÁ¯x½à˜UöžW¿Û Þ5wÓ >ÖΙ^ðº.Ë ^ )†Kúj†Kz˜æ”žîŸÏç>Œ=½ÕÀä¬<ô*Ó~I^ðá/š&0Ê¥ ÔÑR6Ô‚Þmø0v‚g±V1ŸÉŸ/à2ÏKnGx&ܨÒ~Ã?„'|•<áƒu…¥ü}é]ÞóÑš¦_ô,Cý"€{Ö/ÒóCêݯ‹[½ë/S Ï`Ecé®JÁw±ä59ºÝÅ>Ê{ ŠÌ¡F¹/õw¬1Ú¨nUqç•ré4D¾|F+0ƒÕFù£‹Aóó81*9€Tm×êû¿bçw`½Ý=;/ÇŽtp¶^Ú5žºû+iŒ³œ?©êøù”ºË)•5Ö'xN¥xYúrcÌ·Ô—çGsh#:,‚êe ü‚`~òê7M†páÂìû´÷¥öJ_+_9~~!;ª¥›7£•rC…ÞJ…;þ+jAè€e› kþŸ¥'¢þ²R‰ß‘Õܰq¶O=q\ÙJEÿ$Ê)ÅÑbÚû‘|Ù–híÇ·l% «ÍØÛ·Ž ‰"©,ìç­Y/ryyËöÒaø>ý¼³Œ7·|}5L;z¥ë··þ¤µ[5"N¢õe¤EB}^5=†ÏTçGRÆ¢|¡dMJÊ2w7=Öð£bAqJ'ž°³-)ÎDD™@OD±Þ!Î$Ú¸mœIS‹ÉÏb‡qÜDg’½/¦ð·¹1-ÖÄV²çŠ5á—¢ìà„ŒØ_°‰¯½HA½2ÃMä̬‰ZU0v¹`WâÐßùÛO?ø3î_õ¿¿¬ýïóÅløÇ vq}¬­­½ÚØðçëW›ôs-â¿éÁ5 £µhsc}ó|±nll†?k÷0–Äs=_ôg0”ßÇýëyJ;hv‘†žJ ~þ(ÏÿŸÿã§ÿöÓO­þ 8ì§rÏàg?ýŸð_ÿý?ðþýÿåYïõ:âW|ãÿ…ÿþo«ÉÿþÁͼֿ‚Ëy îä³þ‹ìýô_/‹áÛ͵ðçèç_6ßvûýÙèí&üüèØÿ÷¸û³ö´Eëöþ6ž÷ÿƒ<¼Û»¶:‡àDÜ¥3ît»'dë蘄ܞHtŒ?áŸÆ^þj4ñ_óRäUQ°ŠŽÑj5hÖêÛ(¤”¾ gTVx½†)«f«Ñ<èóéÅâ¦?H¥ýÏC,×ûmtÎõØ?LFßjTfi8™ çóá°‚*@êûm¸±_Lg“Q?ØÎ~އß+Ú·ÓñtÖ?Ÿ;è65£k~»þ>h.Îk5`îoCª5+Á VÕcƒº¨V¬ÕÙÜþµÞ©o%j «“ÈI–8ÕP‹¸'ô·¥9©²§«kG‰Ïã+‹$´›WÊÊ•Y–ö<ºž]MçC­ê/Î$̆T£}×vê¾\Ï‚‹>*OFÿ&ý*צo¹2=@Ïq¹W>.—±x¼VÝØ4Qq -*´<£ºYT_ pÄAUaM¨Ê~‹XïYB¿&|G™É§ƒ›-¾L¹Ãùèrë8ZP ðœCs|'ñ ÃuzåO\}z…R¡h®«Œó Žq´Ü¡@F@X ‹RÓP—€ÎÅåõx1ºG¯ŒÑ‚g÷I<¸ÄŠÑgX?UÀô'Ó –¥æi”úsQÔ!îüÚÝ=î¬T…£9Êbäٵɸ+á|‚ópšçoUqç÷T`z´¦>–V=Ò©¹lü‚&?½¸¨&›š¦W€‰ÑbXÿ<sWTlT™æïhÛqUyµ³Ê¡®Ã{¼8yñF$W¦/Î[ëÅ6¾L`2]È÷ÅÈÚ¢UFM{"-ìGë·Wƒ·ÿÁ’¼À:¨—²vzŽÊë¸]ÛF°Áá$ta¡Ð”ê?rEQ:‰Õì>þ-*bËÝ“ÚY…+žë`<Ô,S˃ßñ°Ž›&FŠÀ5—PíÕ û²ÿG)d ðÇwÀù±ç£ A•Dt•tbsãÔqL{ël8œèŒbÄàë@4Îeñ*1ˆOÁÍ—ÑàKÌ¥{Æ Zßmê›JÎ/ ý,ñd0s’N…Ƹ ¢:Å•!NG¥¼Ï†‹\Üþù×þÈHŒÃKÔëÕt4ÁÓc*(OÖ#e q xÄê0ß&èO´—He|ÁÇ3ábèÕaÈÉ%¦ÆK …óÑXp1›^ÒK\*œs@6WC´ºTÃ/að÷wŒøÙ~+þnŠ¿)¡ C„r3ý>‘q˜k›·…„JÒ*¾žBaÀÊ᜘_Ð|yq=¦ÕÒüàꉂ°#æ #ÌvÑglôs”?Fãñð3$MÞì&(‹›©M,ÁÍ MO§Á` ²•ؼé_%ì„ã38e“¦W l¿cU$Z“áùÊ[”8`I¾ô¿ ãéÏ0:`ü= D±–‚ùéÄ‘„1¸žÍp2Š. *:ân¥M&VôÝ2]Z?RéS…eMÍ|¢Fk×âKô=>¬í¬®‚³ì¨9Š—­¯æáûÆv½©ãäc½ÝK¹üºÛÙékÿiâ?íÝÓž£ÇÝ?`ZÈÞö®'æ8iÝR{©É<…ùµïùë”^º×gâ"§õã´Ó¬Ãm¡"ê; 6€­`+\„tínc;HÖ^Ǹ†ƒëEè?è.@zS"¹ø;À0χDºTK6%±¹+5¿4±y¥’™–þ&¤¨»1ÚJ¯l¿Ü”«ÏÓÖ;íŽhUȯlÈÈ·5Ðôç{W€„ð:¡iBhfAøÙÔëÇ‹T¤êöéÒªn™¬`QwM;…enØAu‰*’WåzÊ$²'½€D g/H @Î|à‡x–ÒQáo‘Y÷[.AÒb+â.„&þ5+º:ű›§ ”ßÒméÄàX»¸k4˜X_× 7r¯B þøÍ ö–økfá¯)59iøk2þšiøkÚøkfá¯)ð×LÅ_Ó…?k™vk ÅAªÉ妉Бš—ÅKs´°ŠØG$¸ ÊeÂs£É𠢫QHÏWAÄüqh[ÕLº(ii„Éðæ(:§7žÉ –¥¦êŒ Úrpm´Ì°,ïVXœÓ*ô¸"«ñZ z‰WÔï^º±º6¨¾oÒ‘tÊt¢8uʆƒ°S”ʤsl®d±wц û³¿2øºwB‚\èǪÆŒÅì¡xÌŸWMʶ³aÿw¼ì ¬ r½X\–ê)àlz±ç¡­X·´lä˜ë®ùi½;ÂLÚ„ëÃ|4g5^b¤:Äoè¶g@‘ŠM¼­\ÁñÜvômt~ÍwB„½ž—¨×AGAΫœ¨é‰“3“Qp^Oä"±¾ÄzW‚ÉTÞ:çIaç6hˇ´4¼ö&5ÉÈ(ÓDnJA £I0èÃ[lâùÕïùiÔÉuÏ܈NòN,Fj©ÖíÉóÑ9éî<ƒ,¾©ˆWS¨¤®A‚EK?óã f~¼þÖ& $"}½ñR Ì. «9›ÐâìçÎ]f¡Ñ›ŸØû·äã±Èh Q$»\‹Ý¬¬ô$ºÀ o7a¦ˆ¸Ö?›~>1q 3[¬gŸiUqØWåL«ÊŸÉ I”{:’ZõYR{IíOFÓácSôÖ$ò2Ι¼Âšäp_šXú\T«†" àÏø'#§9ª™þÙå´ê=Èi.4ÞAN{Ÿ"§EÒDb*Ú52Év©?ýs¹ÔÿPîÿ?»˜?ÿÿWÏþ¿ò<ûÿÿ¥ŸØÿÿ¾vÖþ__[Oîÿhsýyÿ?ÄûÝôÿïìuKÁ‡£æ!H,z»[ võ÷ðÚùþ¬£üÿláÏ-Ìá^š;§•`o·Óæô¯c q&;@`½>íV¿šÆ …¡9$¤£Öôœ­ü‹)ÜlÆc&·Û^t®Æ}ö.ÄaM6ƒ½áY°¶^ ºû¿Æþ.ECxÅ‚ãêKYΦ Bêbýiu‰RpŽƒİ’ÎYõ÷MÁ [%ÿVâ_÷Ô¯é¦Ñü´Ä³(ERÛ<ÎfÓYp6½žœÏ‰@΀0ÏÅ7ÃùbtÙ_@K 3é7ŸŽ¯ÉSl‰,¤¸¶V–š9+0ûš7?¾=˜/.Fƒê|ØíW €P …Cð©RìˆË3Çô:½N•–óé%j2)´bØ'UëOÙ‘vñƒ(xwÖ ΧCö† 2‚–0dN±?^@Crx<€¿¡ ™#UOð•Ñ%"5L„å @*Å¥Ê ø€ÞýuŽÆ0£"ì8€¦j9žÞ-%nq‡dwÚŽ:C±Âý$^eµ¼o¬A´y\o` újO•3ñpÅjÜ£Æq}lßó5ÞÕoO'_¯?SÄ„| ¾ÑA½ȇì¶Bád:©^OF‹|k+c6¼{ðE½˜ÑÈŸrÀš\S £vJ`7¯£Ú°Æ½q«ì´ËÉÜpÏ×2Ø"ŽpZcÐÆT·æ—+,¡n…%ਓA8ÿÆïÂ4\zê·ÑM¼­ƒID ¡7°éÇ_Gµò¢?šÌ㨄+=.‘î‹ñ÷ÄÆ’ÝèpêŽxc6Mçl¶g@™³±¦ÃñÎÆ‹49Š=ÚTÚÚ8£¥ê0Z׺?žO-äиP êÏçÀ/IpVª Žzž]”ÄQ¯1¤dÇÖm¨x«‚›!AÈÖ¦“Ô¼¥¦²µ„©lÕRr*§·™Ê©{*‰3XÍát s8­1¤äPø!ø‚œBË9ž`š0Cb 2dGRóäx'Êiéë G'|Åæ•ê(´ñc}À9Å”w¸‘Ä⮵wÓÙl'Ô„pôŽ] Áï«1¼'L´¹ð–çÀ¬ú3œ?×çC96ØÊŸáŽØ”(…—h^UßJ@2¨•¦pu`«f"œÆŒ¡žãù´÷ãe¡·Ätà&°ÃÌ __N¡Àrå·”q>Á-F&ìê¢×Ö²¨Îé&{3šc`Ö˜$D[@FH'&ŠHÈÆÄŸÁóK¸!2LŽs ÌðÃþä»B7ñSµÅ³—ýßáx&¸H"ô 5¹›nV´^VE‚@Þ}žp8Ò€ã'ÌuÂÁ,Lïà˜\BOû¯p >üÐnôð}‹Åß9îÛtè¥Ü„+˜ÓMÕ»hhýäŸãî\Ù›Ý^g~âÿë{»!ÿˆèe ==ðNnèónýd·¬;‘T<(¨~zô[…“V„r£‚÷ÉÖ ýèž,1`¨¾8ñE Ý:fʱ0Öö¯þYÓëÙÌ5šŒ¦ž¸t¥ö’7r‰ˆ0Ž\b­ˆ›jË0ÕÆ-„ˆâ”T$è¸ kЏ…@áNÜa2þIôÜ,þDÄ“ åP{SûÚVøXÍ·Ó†ˆ¨C $‡ Pñ! äº 2#¨+˜…gjú+›ö+ ¥çKÄZXœ÷Ý_’ïžæ}7tÆ» Ñêìuï)D‹ê¯³+ ¢_/Ç®ºÁRH\‚'ÊÏ@{X¹ïÎʹåøÒ <ɘ6XÞ öèø€a ‘¶N®ín\µ?t·]^_j Étòïál_RA†%ÑMYÕ+ÁÕøz®ÅÙ ¶æ‹ G|œ–r÷j>O'1ÏáCKoÒí_€`=šàXŒv»X¡¨ý©Ì¯hŸc) þþ%ö‡‡M㛋uÙTÆ„’›æÚjN(ÛÂýdhrŒ :¤J«Ó«R}Uk•¸ñÍ ÙæoÞ±ðY§Ä7çë!_^@ì£Å0’ é}+"¿ò¾‘â´íH¦É¯áIê3âHóM <£©ë*å7ÝJ€=ùä~J€ Òëq_‡‚wÚˆûAÿl^êÀ¯+°Žü!s¥Œ¿žbáFüe X ¶7F¸ǯ?­È[¤9*øÅý¡H@`hc8S™Ê#øÄŠ%C+h*ËÄp22íccÔ"ƒ`Ã;ÇDÊe ¬¡Áô‰w¶ósÖÚ$!Ï·HØŠ¨fŸ²%JïQhìé> ”e• ®©¼š bG”ä»A‹Íd‘p²Vo&å“*h× žX2;‹6Bc Âï5*c¯›L33ìéœè)%sUu‚[WX;p·±0ÿ¾ÊÔ ›•Œ#VÒåÀäû9³Ézúˆ_-›1üy¨‹#a3 >ðøÏÐ^åDšÃÎÇœ”öórýš}àFòëT$ûŠÄZ¯ø)-\[.~@Ya‰Xøe™¤®ÝžÔl§K‡¿Î1APx(¦FY+Ùõ'à œ¡t]+%iD;xÂpI놢y˜³H@ ±g,Ý"´®çä«…P–~´$ŸT”å=‰–ÊTÃÌã+›7spÒBh]ÖaEhÍ{Vù)1óà)F‰¯s²ÝB(K?z’O*ÊòžTÅÝ“Ä$j;Eå¸(jƒ‹¢òUÓMÏš”!ÝŠ^ü¯½ÊU«_jG×JæîÑ•àVù2`ùMÓåIµj¸âÆ“¨©œD±®µ0.Ä[dKK¿ÏaéœÒil3{)>Y jãam–ï¬ætâ&ßÄoÅ<)ÅÕIîÿpÅ/;®‡«òr¸¢u™¸#êp©M|_ôYÍ«ß'Ãà¨F,ŒÐop>ää§ð…ažºåõ40-­2“ciŠ'âQädIýFG]JØ|AßÌ!kltDöœwb^¢U¹@¾õÑ02Âñ f¤[b›ª¸%{®Ýñ›)ºq×nà5}ì×ÂÇîàÊ4ÊKw1ø^hN\¶‚À\ô29r”>®$Ô@aç#ÚÄ ~|)qß7ù’šj—Éœ CD¾ŽËêfA¢b—Kã€ö0aáˆ|*S€µeóT9š¨,ôU†òJ¸"+u­Ïa”ípdÓñAà+oðœj³Ùi¡‘Üñ”Eá-ÀQpLªúº¦ª¯—¡ëóÌGUQÜËItüèK­ÝÆÊÚç³jt9ow¬ŸŽ™x•’h¥³î>àõ¬Þ5Xâ8${jEp,Í}€ëE©ºØ©Cµfc±KîÁJFNÌ©WH‘Öf[ìÓ«!%QF&"zÓç­ÛLâß_Š—h¨–O°opag¯û\˜òèñóáäÉÄÿm¾~Žÿyç9þï/ýÄñ÷µû3ãÿ^½Úˆ’ñÏûÿAÞífü_w· çîáVE&-îî6w·{Î1¢¯‘"Ï´Ø#m÷HFþ5Àæs `òÑoU`¨‚«'Ú¤„ïÉÊBr ÄÊ´bÉÏáãÆ‹Y$ÊÏáGÇ¥‡ùÝ20¥¨Q£dU7J ì¬[déõ€‚Ú¨òŒ-±Šf8ú ¤†Ê ñ««!z¡²wóˆH”¶ÈSÁÈ€ JD3!ˆcŽ[“…’¸öupÐt—ÓŸjàžÖÇþÁüúŒ<žNÍÚIrƒ‹D‰ËÁö.:¦ªbBi5êR”y49)|ú½£øaë,Ýo™%à´r‡6Þ|Rê»ä2!žÁHG³á¹ð*Ï╺+wñàÛÝ£W¬$,ÝÐ,Ü…ÏÉÍK?ÝAvÛÑÖѧx:¶_Ú/Ma¹- t¿±µÄ d¨A±BW·­så.sÅL9î[òmw„‚>|zon¼êø€=ÆkLîV zS/¹e ¸¡¸qf|]‰Ô ±Œ¢†–…Ž¡!kÿ@Q®Wý‘Mx:9Ç_VCè9hÔwoÙŠE$…ŒG=ÿ¨$œ¬É¼Í; É1êh4¼ŸS>?“}J þƒ¿ÿÓ=ËS=aÔÍl´X '2°+.÷AÕάˆ#×™RáƒÁØ Émb„йO÷ç²i÷W6Í.šöÖ·&­¼‚’ãð‹‹x8%”¸áÃWiÓ_õÚ·|¢YhߪÚ[Bv/,HDò±qÛ7õ™Ñ¡Aã¼ìMú³ïˆ=¯ “6à=ÇDÌWmd“]j¢‡ãLýhŸaä÷t³ÑyÿÒ¢0dˆ}”5̈n(XÀGôfÆ ¥QeDg Rµ1£ÒèÍh5¬Ð¿+|¿uŸ9xÑÿÖlé¿À—ßUj\yJÒBŸrÞÆÇŠvÔŽŒ“p~-Ó‹ŒµÃ„ÿ2J¨üj\ÚÍ’':pB„¡j¾‰joì¬Wê´Ô ,ŠðPs‚Šso¬µàïhÉЋÇuíNm2´6& Ë$fâ  H(¼NœE€£‹Ä7ã ²¤f‹œq4fÒ•™T ;-¦Wô¦\¦t0À*/q-È<ÞwX*8ô_³l·N¹…fWœn»BÎ(¡Í¬NÚŒ“‰'Ç©÷6ø>Ñð „kCÛÕyzÕa³‡®ß±£H/³nba7©Éèâ"g-ã inVG®*$)b…2x_mwXÎ+"±œ~œxŽÈ¡gÒ%ãŽ2Ò¶V¢m«\jW[+¾74â°^ŒÊòÕšia†¡qS IL­¨µá’ 'Îeb·ºÞÂ`üxQ²€*5µs´Â Qgb!Å2è`(ųÇþ\«_ÅÅ?0ðÌ›LÙÆ«ºÎ稥°-ቢ{ Ì…å#¦“¥X Å© Òk䥽F*ñ5tê¹õ5RÉOíIÑ 8ÙÔÔpÓ¡ƒ˜…©I‡ by©©¡‘‚Gá895,z2á„[Ÿ‹žY•7…AVƒ¥ÔS5+÷àqÐ"5%@³…½ÅÔ¸“ÓW^b6œ¶zõU±Õ oñU»Ö*×ô£‘ ç/òê\ú—ÃX$…áBãVCáU4£ÒNS/ »¤–ÐKPæ–¹ž‘RagM5¢CKÎäw%iæþÛ/+qyút™ö_Ö>á˜.EÞ¸K5·˜^Áç{›MøŒçúÎ '¶Ãx>¯øA+na¡„¤}MÞ˜Ûý']Ãÿ0¾µ„ á?tº›„ ÇO РQÃ(¥!<“0 6ØŠ]1*v®N"¢ gëc™OfpCŸT¾Àð -Q~ ÒO’)I4"qÛ¨Ûöô Iõ»(Ög[A|â’¦v% åÕú ×9"’³ï­t\þ´R.!6àø+}€à¥ÃF]ÜËŒeS0T}ndHæÖK7U¨C ˜òMñ§IZˆùÀÙ0¶8 Þª;uŒúTY7|ì Ð°އƒÆZ¤'-n†ã±ÑdY..S?öQ11†«Ê¼ìbn„1‡ƒ:Ò,å̽/Ÿ#¢z¸¿w²HžÉ~ ?›æ™ì%Õ Ðü•ݛťʱ:pªN#:žè¢ ¨%Б@Tò(±ÝïãoCºbÉ\ŒoÒ& ðÊ tʸyßá^—" ðÉ=ò.µV("W\ÂöàTNF×så>ÜF!³±¤ÀÅÍ4nIûw—(}é*Y]3ýC.…ÁªW¶Cÿ•ªáËH˜Ú÷SìV íh¥’ëYãÛ³óŠ¡÷ œ÷’‰ä=SX©&hìœMÿ`0vÒ1é'Ïø06¾dߤØH!:tn/ËûŒ¹«3\áùΪJö~¿B| èYŒøŒ£„`C“8…˜‹[}Aj&Ø)… ~±{T“÷jøêœr¯*j¢Š }Ä!P±ŸÞá:Ñ*â¤z‡ÊœË~õr4)ÛÒYƒQ³­Tr®ùHèåõ|w–'¤Õ¢_Ôù ƳbÛï€Ñs`1¥I„þ¨«òSuØ•`„èÉ]š„*@£t¹"2¿]å#Øi‹Ñ⻑ˑ@‰=Èã>˜ËüÎúüöz°¨µŒkÆl•e@ßBZº9Íbª-ÂAàýšHÞiî1WKbϼÉXÏÆç®=˜5¡Ye5#ÎÂÄBKUá"…K‹ØaÀâ1E½h_ÊI¹'Öö5ta2 E˱ÉÛ[Ú¥ä¾öm–Ô½œØÈè«âQ4‘Y%+ ™‘ͬ²Ì¤dÍã»ß*Ðm£S ºëè‡Uo÷¶~­ÈÂ4ø£›æƒß‰.\~:”Ö]%*;Àߺte¦´cMþÑF‡ò(­b\ŠÓÑ.Æ4tÚ‡ô&ƒîzq²´LfËJÖ~/¿OM†ÍRF“;¯šÌ¤?)³•×á”j¿5ï!§¬Çq§çzF.³á`z>déÜ—ÖL¹î3ÉÆ)ÈÈ;ñÅVœˆˆÔþ~—ƒa'~_o{d7>ñ7>ŽÛ ÿ:jí˹Æ{ŽDcÖ©îתqT‡Ê*ftß¶’˜ñ„ìŽÌx‰"iÔ¬ ¸ú;Ο­h³æN/ob°WÉwñ]Q™SÔcߥÁûYƒ§]Ù[RwPÈ”¤iÚù²nÿŒU™j(-:‚€˜1|RÛ«ÃjñçœOÌÖx ×Üñ|>ˆ?ÿ@â͇/ªå¬Rv­N^Zy8xGúvÄñÅvß"ó›]›Ù?bsšä“oD3êƒÕ0רåÓ_;ÏXõQ´ý]z±ÅzC#Û˜ ­¥ý—Ô6Ìúg¨?j‡å¶Q –¢G‡I.0á2ô ‹–Š¥ÆÇ½ÖÆloæÓËÑŸ·³0«‡Ý¼=äê"Q„•ú£í›‰aêI"ù pÅ„JV½éš@CAlÜäëÄ€£W™© Ùk:¤kÍK›³ñ]CûÒ×C¾\ŽÝÝvv.G…#7n“ø±f ¸…øh3Ûh¹q£öе­QþˆýÀÜTfK2³Ø“_pùœ8¼‚ ð¹±æžÙ6k×M½¶ðï/¤n¼êÐ x]í€rž%œ;.y4¥K¾C)Á3ñZ‚%b¶8ûRO+û¨R±¥¾£*ë‘Âɤ³6IÝ£¢%8èÒaà)苺 ´z±8.äÝ2Ë™9RtH 5t¹Cô„«xà s6Yó#㜩¤©"ñ@òöG¡$þËž6Â:‰mÀ7Z5vùgjÝ-&øÅtªYèqoȤè@P ˜¦K ñírõ¤ä ònüøeâž×­Ý®·oAGW:Y¥ŠÿŽáÕ.øïNÇß\Št®K`«m ú.íÃr/4„•½ó¾Ø{¡´¸Ëñ·37(V‰¹r Â·Ä>'ôO5Ô ‰×Q@ Wc š5ºJˆŠ$`mŠ»º–©då–[1,½b8 /íŒC=ˆ~|èЇh!¸†ôjš$Ÿ8Â’¼ù"Ξ’±âå¿Ä—å§ÔÉ*r¥œÀ'¿"¾6DÄ aÅO]8G5*¬Ql l—Ò›»MK#"²qf¥QyDÚZÉH:ªûÍÂ[ͳ‡NÓ„dîƒTVmï÷nHá`õîl·AŠÊäð`è7€ HOÒ©q2_ì\ —èUë1j,9ø›1w©?á6­Ôp4À [³ö8§ËœÔe×ýÁâCâu(×s^À¹²tÆtž`•ébwK[c•Ê*‘‘%§,@Êžöê+/^þc-WÞ‹Œc-‘þB€umzŠ ÕJâ¡X:Sb„+)so¤Nþ‘sE ˜¼© ¬hÏߌŒ/¾ãþåÙy_$ÙŠ4M'ˆn‰›¡Íø?ßÐ âú?èkC1m×+eúùmÅ¿¼¦eý¦ò°x‰Ÿ¹¯&¦Ðˆp€ü¹Û·öiD9¾ÉŒ34žHÜt÷z0aÚØ€$Êy†$Ó;$ŒŒGCëNõÅ}áî4‚©Pþs´;¾o¼_ö;ˆ1ªÅÅ„á<óÅ÷ã¨Dm9?bâ5™‹€ä\‡*ˆžDT"¼y·ã ²Äý"¸f YwE‘z¼°J н¾b%µ=¯7‰—ƒA¬¸f^ (Ï…Èt¡¦‘9OLÂð$Õ<÷æ Fƪ¢A¹á‰L6èÔ›La¾!ÐÎH eÎû+¥J J£€˜VξA¹0qJÿ§3 ¦\,Ö+…•p%g̼FÃIê8éE·$g¦$èG³ ù(ÝüŠÛÒ»ðW´ŒÐ[r{Ø" œtÛ­dÕVD\mcý Müw_³í²[[ZØìVã}ûC Ë8´wà_,JµÛìÕáÇ4ÁÁ2 ·Åf»ÓJ«áð¡pwøßD‘«ráG«Iu]–½Ûçz§…£ÿܪ=-9€wç°GÑ´­í_éçÑo] óV‘þ¨Þ”wSÆ}ëPßfý¸×‰C~ŸC}ƒÜ¡¾²oÞ¬qsiï~ÑM ÷U¶ÞÝÛÄ骮ëV ®ãÔ=i&Bu»*T—¿Ì«+!vÒ v² ªy©á¿ÚÔa8K³:éf³JLâ­–á¥LÁ?î… áÁAjsòb›Ôèn7—‰¤/°…½Šé´žPë…<Á4Òת´ ö.¶ÂÞ¯Çcg^eª³³dPóùa“> ýˆT/ÚÓà˜û1Ã2HËFûHSAú¯="Ô±" ÜÇ¡ñæo‘Úa›ìéh3$ìËtí"¿ ~NéŽe2öó$oäZK@å‡#ÃYŒËÁŠ;q ùØ éH½¤L‰hÚa—f}Û(D™Ö ŒØEPÑ›vþ[qðþ@ægi îÚ¡à‡G„šeڢƟÕxKŒÖŒ—“wBõP–)×…“SM™Q¿ü¸± OOù‘b‘Ü3ZY"¹·¾דѢ?ûîx×Jÿ:ÿg æðÕ¨<ŸÿòÙ3ÌçŸÜšßüWÍñ,ýŽRHnjä>ÒÎ-ü]’Faríc ߆V+¸G•Èecsõ*“¨Z¥¸ êy2üÜ·zæ®ÔÖú`†b+Ú‰Òc±“ïDâ˜Jž5ðµB;¬Ða¾æxiå]àK~ÝÑ¢Û¦olìÛ˜Î/¶9+±;Ap•ÿ9C ´ÜÕð øÏI>ÈIƒüõ—×ί Ãá³8 Xw€Cœ¦ r ÛHÞº7‚8®·+Ž×ð¼îÈM!×0ØsÁ©ýiŸÀaUåò×—‘©ÙzÉÕ³ƒ‚} õ ž T¶ÏbQ·¬’öξ|Çø3ɧ×sóiÕsgmpÍË<ÊñDúxXn}pc`#>u\Œ^‡Øˆ!vÛeÕKCæÔÚ(vâ¸Ô«tâDe†«É>©ŸKÉ’LڣɷÛŠ-½îD2üèéd6µ‰øfáI-CXâBú{ƒªì”Zi)høÉLDc5s*í–í(=mz¬Ký,Çðwvù•ßeàÞm&ÚŽ{pµb=~EýlWÊAå™Èø±D^¶ŽçÈõ¢{­´¿_å…;?^y‰Ÿ¤†@àÖÿâ¼tµ:ú¯…øÒ`ut¾‚¬‘‹iÎ@0¸.F·XÖ0Þ}Eì[JOkang̹û–¹Õ~‘Ëò¼an±a–¿[ÔrèۥŢÉõ(ŒûGßSLùwUBk¤VoæIšè„Bv)¡Ý’I·È ‚NUaçyç9ÿÓ_úÑò?ÝÓîÏØÿáZ¸¹¹žÈÿôú9ÿÛƒ<â¸2ó?aÍ^§Þ®WèÇ^'ß·)uü[GyþÙŸðÏvjú§í8Yîs§øÑò8M¤¯ŒhåÍÂÄëFËEkEëÑŠµU®|HžúJÞäLõ÷I©¶JÜ7ý±]â1ˈô[“¥ó¹VeT%œ:ÀdÇéU©¾R>Ñé´ ¿oŲûv ²åÈFÕd£ŠGBíДÞ7uUXþÆ[ä§BÉmô¬?¢,5.]ÚB×–x þnãßí·ZÜÎ25]Û²V¯Q¼ò”zk‰÷¨1ŽXT»Y_ù#®WÁGó÷wAH‰Q¾MG %}_Œ§7x‰9•Q$b`wÊÞÄ‘$•;foB(˜Àé eo¢½ÈÞ´u»ÑDƒd§\j¿x£‘BnOc÷ŠÕº§·F}x©çkºm6ý5(m« þX…þ.ÐÈnÝ~†[¾ÒÆÚÊ;Cnk†²iî"O ‚Ô([svHÒ` q}0«¡Ô̤0ó•jâ ²"«‹'ÿ©ÇÉbïˆÙôF„ë0è•Lú”ÞÙ®-=oÐRm¹F!ó8䈑À¨n $WlvÝJÓ’À¨žÀ¨ž!áÚõR ŒZ2žoë6ÓÜ*œ§i+{š[K˜æV%ó4mÓ|Y  æl'0îÙwûæ2q¦J›aÍ~óÑI¹U`-jÓºCὂÂXq£â]ï;]¬8ë¿”ªHÕ­&ý C;Åz$¹WÝA©ÖP Nv·cÍü©üõáCUsUžu½”2ÒÁ©[õ‚ØAª]Š~ÅuZvlêΪ(B•*,8†Ÿ?@µ‡Ñ{ÞàT¦÷8@TÜÅ©¡ÞdËl"kf† øzÁ?³£ž ªQ¹ÕrÛUù0=ôT ÝÝûVzï5„­¬!$UQ.G¿„Pô ÿ®:ÂŒuF«`°kFpì¦Ý$5=8¶•2¿×Éw·òÖþ’|w;o¿¡ZۻĸýÖ\zŒ[Ò WÕ[\c_à”8îcvUȧð†1+yæÖa`âËÛ€YÀù—2²&˜c¹+ÐLaJ«M*;‚w˪âWëçQ•±;8ëÌK¼Â¾äRoK¯h< ¯Åïh×™‡:KÂWž:Ý}Jù´¼ßd {”TK•抪fÒð)§¡!aš¯ÞÅlz¿{6],¦—F1Ká¾wö=þͰýס¯¸aS—jtôWy«ÔÄßÛüm5èÐ/:€¨ty´’‰§YÕÔ% ©PþOMGÓ€ÿ%‡C_á˜öqLûø•Ãõ¸ñ#ÎÜÏþ;£rdÑ'2žN¯ðŠr>D¿‘¦vij†p‘ŠV‚7²)7·“‹Ñ ŽÃýXA½-MÇps ÉÍôç8Ǧ+N8Õ·¥×Ösg¤¿DÅYÝiMŒ^j&>Ÿú¢ðPQÑ‹Í<%Dݽ©=!ØOMWx¸Çe(£§Œ^ ”–6Ýe˜~pÉMâ90ýЀ~¢•7ÔÒE;ã~:é 1^3#.JÖ¢0”jb*‘ú¾W;pÓQà÷ áWÓÝÂD<ø"r}‘’:¡Î¥ÊP’ɦ,ճߟÖ=ñ@&¾î¬cîuLóη@…ó8cgš!. Ð7Ÿ:ôçAäÇ^åT\a«ŠWLÄyH7üeUJM|^ú/‡pw3_Áë©'‘;›!úÓmsÇ¢~à6ÀÂt(teQðï$|0Z¢É­Š3ÂíðÆ·_![¹œ£à²Œv|€€Wñ¼/#Ë]9ÞÚ¯a¸þêjƒË…íjÍÝÉ-itÍðºF9qG‡þ)õz½>c;[r:šÓçÒ«¡`ÆÔbû{þ;Ëš[²lWÞÑ0æ 4}É0üd«È”N5j1¦U`QÚ„þ´@ñÔ yQÖ¼8Ý̾ë׎l)hÅêؾFùáZâU¿ŸßⳇÛEP¥o¦w1â®ýꮕ`>X[‹Ot Òb?‘Å~¢âì'z²ì§¢ÇB@t D:¢‚—Ã&†s(ÞˆRGrjBg:ÊÒ½ŽÞ¢`Œ°jñíL8¬">¥—å¾$ugÅïA­uY]àîB1ã¥p™h™\&z"\ÆÝ2Ò[F9ø`Ð+ åÙŽ?´8„ô^Ò1\MlÉœ\i¹hˆ–‚†(&W2Ñ@ƒÉ›DèG‚5a)¤?ò°¦",îaMëËdMëOš5 Úº5kz•n)*- ÔBC¬“̳¬ø$Pœ\Èq,EŠP€<º¿E®(8vZÆ2ý°^éÚ1ÆçžNYpôó‡º~‚§ÐÆ2O¡çbfS@”ö·ÔO6L]%¹™H†*£ïŸN;z“Y¹Ü·ÙŒœ Yͤ٬ܻË)ýa=KÚÏjX„泠9{n¼KéùNF´TšÃ’mA £;™ÐàuÇ[Ï6´Ô©%{yŠ64 Í*RPœ,¼åZ0Êèše? C¿Í™ÞYÍk‰4+±lšç;êÜŸA<6g¹Sxߧ퉻ïÁ€v@¢a“IÊlšÛ™’ñ³-ìÙ¿ûç´…½^¦þú‰á÷g û8I±¹DwË#[¨|Zàg•wëÿ¼Ì­ÿóÙúî–k zBLbI¶¦´=›þ*f£_–É0~yÒ ãaÍFOˆa,WªxV±V—æê#Û]´ œàg¶»´]‘'lEyŸe{ùÙc{ ïÓöRAÛY~Û‹'b#‡UÄ\r¶WéÈöòz¶—×϶—¬aæê5»Ç?‹í¥]mÆ÷rj’ßj[ú¥9ÄñÎõÚÖ³ÁæÙ`ƒÏd° —é¼>çݧm±þYü'ºÿ‰–ÎD‰# z(<Û†Ôóšƒe:g†OÛ9óÇ3=&?zB¥;£ÁÃÌòp¥e™¡¼‘•Ïv(?sÚ\&sÚ|ÒÌéÇ3Dýy„¥‡-=-“×&-.ÝNvgÜê`Z¶qMü|¶­%<„^-ózõãBc[{í²­ýœa[»Yíþmj"å_A³ZŽ´w2ª¥dÿ˲¨e'Ì0§¥ä|r¶´hãζ4áxëÙ–V°—È––H­/) r¿ûœ 0ÙëÝz| ö´GË~ól„ žpÏF8þ—é >Wè?a ÁZõh¹d~4Îs²B„‚É —ÈТ§í)üÉVø'0>ZŠÃgË¢xþb–Åh™©¡£§’Úßò/ñO". kO˜.φù,7? ¬ý5¬¥*Ûã³¹4õd]f:ôèi§C|si´î0—Fs©©«¶JÔíNÎѸÁ5ôôwþöÓS|Æý«þà÷—µÿ}¾˜-FQíâúX[[{µ±àÏׯ6éçZÄÓ½ZøÏhsc}ó|±n¬¿^û)X»‡±$žk´9ÃP~÷¯ç)í ÙErx*úù£<ÿýþŸþÛO?µúƒà°üÿì½]S#9Ó :ω8q⛽ÚsöRÏl·«l ›™žXcL·»Ût3¼ñÄDaPÓÆÅø£éžxcÿÂÞîÅùçfÿÂþ³“™’ª$•ªlƒ¡™i×L.K©T*%e¦R™grrà»þ þ¹ðï¿Ã?üü¿æYívÛâO¬ñ?áß1Šü#~ÿŸ{áMÑ»½øÅ?¦ÞÈbvÙþxTt~Ú*9/Ý—¯¶~êx—Þ(øi ^=ê#æÿ#ÎþYóß)¹;®9ÿ­ÕüŠGì÷§{í£SØæê¸qu ¨7òl¿Q}CICežQ‘–v»B5«ÇÕÚ{&rB³ÜgDÉíËEÄ‚^*3ÃËɦPG¾ó®à÷(üôý>ºòœƒÏEÜ>»þpèǾŸGô"@Ñ÷5o\†£aà±=ôÉø_óÊ·á yýíûCÀˆò:·ªoXsÒ/90xZágÿæ¾v?TR¯óÄç¬*òÕ+¨ko«íjMË®Î)„ÔelÙÏh‚~¶ôÔ”]ÜÖœ-zŽÃÙ`jFqüóx:º Ǿ’Œž¿çÊ`•½Nü1¹cH–±´òØÈ÷<<4 GlÞÁ“Qà ¯¦@qãÁç/¢î5ŒcÀá4ýÏþd«=î™{áòá ®ÂQ0¹¾õ¢þ)J‘|Ø—%Þ^鼡ÅîÜú½à2€NÜ]ûÐÆˆâر*"•Ú Íê5[;]Û…f©´ÞW¥LË4ô ¢Â¨ß a@mN’xƒI¶-Ĥ F9k§Ì"X¨% I|“ªõÑA/õÇK ¿"Vÿå5+ÉÔ`½€©O Ìê![çY?€Q'ÆÈ!ç¶4—¡£!–A1l1ÆZm¼qÉùƒ:HUßë£Ç ¹(€nÑsI²$Ÿh”5Ú †c~Ÿ¨Ì±ÈÓ‚Æð±7|åì¥UO¶H‹ƒ=ò/ý‘?ìù}½7Í™½1¹x¡Þ$*§ö†ú}ßÞÐT°M?ð®Â!¬.°>ó¥áêï Æ¡ŽðòtwKo<†E£©¾/|æh¥œ{¾Î<¹éuu›_W""I Mj½¤ì°'ÁÖ%EkÀµóÌ9t1¿ëãTä`"Ýx_rLŸ¶T„/g’¥˜}»l<íõ`S¼œ¨Ûê÷?ã÷Áe”þ§É§ÂäÚç /»öÆ, ü+ Ågo0õ9 ¯—ñ¨[è1ò7è×›½›Å©àaý<¬k;kŽ[^è—ö7KÚ~'›i†°U‹ýZi©yô¦Q«6™ò´ŽN[.nÔÇ@YþβS¿ËØyß½³`PÿDÎ:˜{õl4š襴 œAw[Ú÷üëŒV:Ó !k)íX‘Q({ÿá‡<;«·a‡¶ÀmÀÚ +Gг¡äi7ZF-{X=³bç÷¦ïbࣣèĤÉ]<r08.)‚9âDЂq¥k& z­"A¤0 KLdÅáã—àbl”Q‰(X‡¥8µë@›kh5¬qrI713ü5ž)°8Íéš [è,VJ-_6ËÃ*‚5`,ÈZÖÊhkK7YÅ„ÁšiT%›"g˜[ãÂ#¬ì!øGå„ÙKƒ¿¡´À©ž¼8Pãr¨ºB§l»Z–ðŒ4´üæˆÝ¨ yGöÐÈW.z“(ú›(Ø¿·9ËŠ ñBfDY££®G»¡³û{ÁA üŽë4÷»7s£s/ÎcX×ÏC —7£Ä¿&Õ´wtkÆÑC5YÔhŠ›“9¬wïò– ŽnUˆ“=Î)‰9ÎÂòz]à™Žµ‰æ;œ¤-Ë Ðé1Ãï›Îîp30ƒH9Iå‡Vá]æéöO€à‡<±Šß¥F©<‚ð#I¯Óǵ2ΜætX‡ž¿9ý/÷höÿQð\ìÿ••ýÿ‰ž•ýÿ»~ûÿ#Íþ™ö·\IØÿÝ•ýÿi>Û û»±²ÿÿ­ìÿíÆìÿ¬šzP~ªiäVŒý1ª?Ùì÷TÒr°€_à… 4a…7ÛU0L˜õ¿c|«pñµÐú»ãEoVÆø„1^ç•)Ópšs˜âc ¿è@T±ƒ|°ŽãîñˆQþôGa‘wØ~"H˜»Po.¡ `üåÈô}T±Kô‹ßü\ Ow æ=à¥qlžò° ÏÞíÁ–ŽÿlûúÎlBD³Zo}˜qv—Å–q†ÐmÒB‡ÿê6Üåž%òê@á{;Ph7æ?Pàã}2 zŸ`wšLGC\AÐÀÚ‰C ojîÙ†-±víØP¢¥0˜|EpR¦+êðìvf~!½½m‡Õœøy-äÃ4ÆÆ]¶šÔY‚‹ ²ìËÈI4xT¥qð'mšð ÷Šáç`qÅka8¾NЀǃBÂЋ±ÚWpä?m´ö0XƒÃŠGí"~xS·ZºOas™ /zaßWíÙÒ’=‡»Y̰&ø4àYGPl‘S(ßO8„h+uáR—îWÐÆP ëzºýÞ)A½éh„òK~qpˆgþåfŸ e¼“÷«ñA€4裬”r€{àÐÆÈ\ËA¢ ¯ž¿‹[·`“JOeD%1#É—¨šNNbĨ å½$21Sº–kâ1™ÕŽbŠZ`àØjQ”Ž¢¹Œ¿Ž'þMð5ÝDTªB g uì1žWÀ¸—_3oãI#Ðs=$.™Ýh|ÇHÒ]ŽA<">ì¬d‘ݵŸkFÓSU–u£p— +ƒå»i…k¢ð[¥p-þ>½ò&~Ü|£‚ø›œÊ"KÎk8¥€ñÐæ×ÈÛcXÞÆyý"?9ŠKq=Z;[ÔÙ+жSOˆïy4Ü]à@Ø87UÁ,t Ÿ§œ†f[šQáÌ{ l=žq<›Ú›s…|²„³NU(3„3Nµ“Þôá”+Y}2»§qñb~{yœ®Æì‹g“õ„;>–-ñê°Nqu•õÎ"šì-&{Eé§Õßà¸:‚a2\ĸx|OXƒa?èy”‚6keq3°UÒ€ÎéϾ8×ö‡Ïåd›ö›qïM;ËÎ/ÿÜrϪõ?|þë]`[à89y$½Ô³e@è„ ßTÞŒâ];:òëÚBÓ?ëNœ]Ï8ë®$ÊÃN]eˬ²ÀñøN²îÞ¼u_évî˜I:Zï<££õgvœ®VNWÙžÐU!Llr¡iªô&îvê#ά²Ì%Ú¹ªÕ\ƒïÍq´ÑYöцfÿŸ\>ûe{åÿÿ4ÏÊþÿ]?Šýÿ‘fÿ¬ùïîT¶·÷vÊ«ùÿŸí†ý¿{ $¼¶ÜØ—¬jû`k@å¢³ÎæxÐÎ.€ÕBê/PYC+ÿÁ~¿Áaú<ŽuãÆÞ!ûèMðMÛûÞ¨wÍj ¶û£Øþ_½æ–œ”Ly àôìÎ$îyþ Žê¬£‡ øÃÏJ»½á/:wʉ œ;t@‰¿ Ìs‡(ŒæŒÄ ’þ7ê³Ëé` .°\·M MBt{Y“Šà ÂÐE%@Ý™} Àé8¿º}ª#ka#+d¥;Øëü¾i§î*"Ó¸Q§x¯c 5ÜÙÀ 1xÓ"‰F"øY¢ÆRìæ—™0U' u«kL©½yæ×˜–cNއÚnNÆùEð0$·º:Ÿµº¯[¹Ö¦³þÂ-ê lËLçöÁ±~ŸiyÜ{špÎÁtD¡ ÷}ò¾Ú©kÞG™Æ³‡g§8›ÛÊbz€‹é1_LsÐÑuvÀ—Ô»kV>i„áö‡E„t€¶í!ͼýÅ0ú¹n+AÞªÇÈ!|ÝRþ¾É' ‘«ä°’ËJeVrK”,•$,—9eæT˜#¿v@óT×J×en™ êÊn‰¹¼× Ìå2+WXY*—XÙaeÞ' Ñ ùVd¹J‰UVqY¥ ï-î´lKÝ*±-‡m¹l«Ì¶*ð;JSßÈ퇶—"±Õu8è‘.ÞXló”Ÿõ (+¶"y·þŸaЇ-º´»•/íºë|dÇüPˆ¦»7&V›\|_?ÒÌ=æ`Š|êÛD5WÙÝNäpÔ£_-7lzf7škÚRwñ´·Ö‚Ãû1Õ7H$Œ;?X-Ø€w2z!ŠÇT¥ç‘éqVÐ ª«æŸ‹c\M² ¯–4ø_åX`º-…?©=0•€g·ö4¦DôÐì!ÖTZQçEô$go¥’ÄSL%¥¤Ã[1KÊɤ”Ä88‡GÎ%!°`cmuÅ$¢Eú"„e“x G‡.ºÿ>åæzuØy%ïFwº‡{HGìÊŸà 4œ¬çFC :3ZØ8uá#PÈ tlÉå ÆF Ètå‹©,>ù®@°-¹ÞÀàèÂpÁ89å䂃aIƒÕŠSNì“k:M»÷öû3v€­˜õÓ6€ø»ŒM@{ìö¤nÚ“µ!hÏŒMAÿll ¸ÔW–»Ô—  ³ÐR>l¡OíÄz'ï,¶Ð':1s™Î_Ú*oåqš´Ð+«¼•ÕåÚ­ !vvOY»-üž¾v›Ü®®Ýß`E6 ;“àѾƒàöõXY ûcYõ%\#­âÆz XJµÉb¡X¶ƒÃ}¼ šGëíåY¯ åÙûäð¹9%¯I¥ò\jú9…P|¢« ¸ÿí]0F¿6XC° ap(D€;ú*¹”Û‹*¨¬t=áXÓ§¬w¨¢¹ß ÎúÆï/\®½ùß×É×ÈùùuðóëßJÐ4!äÜaá÷õ˜ß Ìð9][¶k©;+¹%-èqš±õq¿RK5çÑGðøœßó!Ζ ÷ÍΖ çÌœ-£èOr¶<žßÙ2nÁîNø^7­ ãd"ê‘r6gÚ¹ÞK;¡ùJ_ï3,h¦¥Oû¬{Ô-†¥c±é=–‘Ëäl{ÝñßÔ^·ìG±ÿý9úãùÄÚYåxšgeÿû®ŸÈþ÷h³vþ÷RÙI毬æÿS<|¶kö¿óö úùkÆ¿nõtÑ OÏ9ŸÃƒC±æ¹ì̇KÍOã´ˆŽ.ªÊ„?ûþíÈïyîûa ž<òo^’,ŽŒr~ 3©×@¹þ´'2rà pÒϯQHWÒÌGwy£4ÐŒtœI˜´Qà#höÆ÷øMÛp4¹yHiºùÉ ¨±Eé韕v°›—^l èÇ7ͦ؃qB`ƒk‰)ε|* ,R«- QÇc3N˜1‡}òP°Êü 0ÿ^2+Á¡–•`Q Êýf[¶ƒÃGÏA/­T‡ºY1UŤ¦B‘aŒn¦<\ ÚçÔ.ðØõœ ‚?Év¦£¦4 3 ›º]Ê´qZ,Zmnú‹âðn:€—fLÕ¯ÍFƒ ³ý.˜\+F+ZŸG8{Çh»1È‘ä×s´qy¸ú„¥JL¼ÑW´*|$Îøq­Š‡Òªøsø 0Ïa"CŘ¯Â|\#¶Íê׳°§Í€ »(y–VÄ!ó†Ãà:P–˜û£Ùð‰‚7gÊž)P¨ñ»ÂÀb ±ž’Â'¬<¹à˜!An¥JÌ0®ãœ*Zq7Tf¼ÉCò ÆóâÝ­s˾  M$P0–,š¾\‹~ŸÇ¼zñ5fQ`äS‡‹9¼ì ü# Ë7N#A!Å1 º(bM#¡æÈëI%I#a·£¿áÕ±¹_Tƒ†M ^<[Dõìø×<Û¯ѯ7õÃô ¶Úýfµ}ð&#“Ä#Ôéºt¶uÛn ?¼·5üðq­á(ä/zàØ‘ ?1w/ã^yZŠ£H+¤È `3Q“:Ô  @N{jÍþ}ˆø)Cöá&?aÐsKdß>ä ¶Ãõ“Ò{êN,…ÜoayÆ}4±:jò'; qïîOoy~¢BL3e€8ocvp‚ÑÝy]þyèDi—‰ ïÅ>¤Bú梯‘xŽqÊo‹oº"í¾ÅGL¶sÇn•áá4@ß}ͪÇ´Ô“µ‘l±¨‹¥ ´üªË<î9äüÑ|h?°ìæ\aßÚDÙÁ›€°8 ’8>F$ÁV19Å+¬T}ˆ~ѼxJ}âÖT%‚HÅ»¼JÊähœq]Ë¡{5¬#ÙæG êƒØ*À°‚$›loCì¸b¸zšÚ. ¹Dsjx-ήî‹çnòá>d&?„tì10q“D~7ê—ùîÌ(“ðGd Û}-ÿ5DçA@Lí7n#‚Î9%$š:é“nê’ríœB(;´S(lÉç/çnFÖ“YGf¸²¯ŽÌ¾¿G;ÿûóÙœÿm•VùžæYÿ}×rþ÷H³æùßv9™ÿ¥\Zÿ=ÉÃg»qþwn?ÿûxÔÆ»äü×ê0Pyлò‡¨ïþýeœ B?Ö!ÏÅ\ö‘5V‡|«C¾Õ!ßêï¯sȇëµ{Ž>a³ña_4­:yZŒ×í—f´„à´¨:ëâ4b,ì`“?IlÕ b§™I :¥ãúKšžÞH³œ7ìùq­ÃÖ^^Þß‹ãÒ£"~1{ŸÆ0‰ Ë]ãRCSvž§ðXDföÇÔ‡Á“'ÿ‰›3¹ 1ïpð•ÁÀö¦xp¥Sm,âÂâ;jLŒ‘ °Ž3´E'«Èúñ¬¢ÕÆ'ç0dþhjWnn@â@‰dähC‡µ„w4Àðãã)—Q¸eü¯x”¼çáoH‰øÕL:¨Á30Dæð±? &>pw'NàE#€};)æu >¿†_>#JðU§º:±þ¶'Ö:¯^V¯N«—yZ=ë úÞGÓ¶›Y'§õö¯ ¨®°é5>v`ÉÂslTi÷¥jûþ°Ñ¢ßGÇÝ “ü!ÚãAÃí³µGuZgË8Áæ; ?®>ß¿»ô»Û>¢ãv;¤!›ÕzëCzWÄ÷¶v;i÷b*ÂF¿¸FCNK&—°ê'Å‚£][{¾Çðê8Ä[ƒª+'äÅ£v1í(‰A¼‹‡áækuýµ%pØ>N曀çMáb“rŸ ¤Å×b„©ÃkxâE¾kl-/ŒGt~f‘Eø¡ðiGQ¡¢‚¬‘I€/Ú*9L3(çX½¯È9ÆB>9J;)-§Úœîçs¸OD¥²zƨ »b0 ¼Áà«¢ìw¥GɧOÜ€„"æ5{Àõ¬x5:–JÒ,§÷ ÚWá«Bë¬À³®ñ×5žyÿ>€BÕ&PàNSéÃ×âÍ`€»É×xñ§ˆÉ‡{ØBƒ0ÛK8‰í”:Ø=7”M¡Dô¦£*D­v5ì›ÁŒ}°;4}¢¤sH^9[ téà÷—ºgU#Ó †Øu=1ÕÒ³Ê>ɤ7•j/§nÊþñÌ^&€·@Å·9ÞÍuV¤ÿð3|€_f§•~ƒä ÛÖž×ûtçú8[ÚáFÛX4@šp:Ìtÿ1ˆ$Ï’öM½®Þ޾갚`b×@Œ_¢Éˆ\]O²pßÜÛX7\˜”Ne"­t¸Áyˆ8/.ØyµËÒ‹¨1‡û”u{›ÂÈÂH3¼€à9<%ËÃ&΢8¸¨áùxªl†lë¾!âàNŒ<Ú+Ñ–'æš*vœ"ŸkžÚ#}JÒÕ=Ÿóß•þÿ4ÏJÿÿ®©ÿ?ÞìŸ#ÿãVâü×]Íÿ§yÄŽ®ÿ×ëõ:ŸuŽë5D’¢v-hø^‚@Ü×v€ÔMW@âhŸsšhо€zGµÜ 5u Cpù•_qk Ikù*½³ÅµPÌ=¼ šø?¥ “§y—0°AÑ/r…sÐá]ýy’.R/Y¦²Û¹õ{Á%f„¼»öé&+ :Áû@¿ã-4¦Û3iÞz]^-î£Ñ/#‘ci—}àĉëÄ4@ïF£‚c©`k„®ðáU7…8Ú*´C3˜÷ƒ/KºM€î!Ü‹k¯·#ÿ³ @‡üÁ@Þg GüàO#Q£wç}å×¥å¥ â3väœ'AŽ+ìCµyZße6æá·««ñX]zÁ@bÀïs F#¿71ßÁ•K‚¨×·W|ÊSt˲Ъ¶ð`´Úrég™~Vèçý܆Ÿõ7ÖA†{18Ç5½UÿH¿:Pa[‡#֜׊ÏAÁ+ä«ê-PT/ù·¨TÒvb^x“à½2óºõonYã_ã ÖôÁ­Ó•UÞ˜„¿É7F­Y(§DS]R'y³úcöò#ï¥èîf’ª—Ù=ƒ_8ôÇçþdž`üG£fÔ;þG²½euOüÇKDWï|øÄ,òÎ÷Æâ†[ïÄ~Û>§ßpÄ;->sDOX¢Þá5"ŸúµýÂòuYýZ.Cñו˜t\Š¿ÚŠGQÌ åËmüÊèµh€cºÞˆ˜?tx@Wt—°,–—°"V–pKÜZÀmpûÁÍïVCó‰í¯7è}CÿŸŠSªTœmÇ%ÿŸí•þÿ$ÏÊþ÷]?Òþ÷x³öýæ¼1ÿá÷jþ?Å#öUa’ŠÍ~Íj­YÓ£ÀÆšÍáq³QkàÁm«¾˜/z¥<Ò| ÞM¡š[âG§÷xPÏÎÔxO !…ú)¡`ç5&+`¼­á˜U¹-m2æ·}‡á°@ MxÑ'‹yzO§Ÿ´P§?Z"œf¹ü$#šb;ÁvhB]ZPM{LÍ¥›Ÿl!½|d èÅñÊ•Š¥:¦œâ¿×ï“lª±˜· /ÃÃßD&_an¼Á0‡ÞØ.Ã!Yò†À°*HŽÚ—¾.–L|"¼Žü$¢ 9ÕÚáâ¬9¢©š;Ô^Î.òH¼£ Ç|¯% ‰Œøþ°/£_"ËDQby¬K³GŒ¼<âÖdÚ"¦å£êýÀ»z p>ýO»ÿ»UYùÿ>ͳÒÿ¾ë'ÖÿköÏÖÿJ¤ÿñ?ÜÕüŠGlÆýo¿Q}“cøs®4n†j§>ÊÙœT©J¯æ©˜ êÙéŒó¨zµ· 9×´\(Hî9u3r³GyEx|cž­ŠN <¼™â"¦nãµé+6&ïú¯øgpÉ<„"t 0†«åÑ™|ûCmúÿ–fºúß-Œ…›>݆ÿ é…C˜$C,N°P\n(Ù¬H‰Ãä÷?c}ʧü ™|Â1Œ{ ûAÏ› úÇ–4ÌúzÿcÜfÙÂQ²IT…;9voÃ!)`Ðe¬3C§åc…©r87U·{ÍÖZkèU.5 Â6æý“Qø4*l,>™¶'—ìßZG­ßN[îoØß<}¶¨€ÉJ¨r”³*½uS®µ§g¢±¥üé@ãRH&¢á_/ I "`¬ÊA "¾fKë"Øøµ¥ã¦Š¨ƒ;œ ”­pœÁÆ¢&™÷¨åœXéO«GÓÿ¾¥ÿ§qÿÛ)­ä¿'yVúßwý(úß7ôÿt’ñ¿Wúß“<ºÀ§é+ÿOö÷ÿ´ÄU¾×àþwéÿy¯ÔöïcÀI²Oèú¼Ý?÷—ëþ™÷˜îŸûvÿÜ_¹þí]ÿû†þŸ†þçî¬ä¿'yVúßwý¨úß·òÿt·+‰ø_îÊÿóI]ìÒõ¿•ÿç_Øÿsyºßwçÿ¹Rü¾¡â÷\½>÷—ëõ™·,¯Ïýåy}-îíõ©7uX8{=ŸÇ£ê°ý}ý¯\JØÿ++ÿ¯'zæÑÿþÇ\ÿûßóTô?¬zÞºQäñûLý¯â{Û¾»óJêÿæo–@ïú‰õ¿Çšý³æ¥´µ•ÔÿVùŸžæû³Eÿ«·>DaŸ[ àåÙÑq·£ G1ÞheÑdP3À•g(=±+!eƒÂWñ¤+Šr´´š_ÕÃÈЖ˜ÑºÏ 1·$ò›Bß¿õ‡}èºÕ)‰Hæz£pˆ]-‚œëû" 4–òXß÷FÁí„+>kÆÀŠšI§RòD½”ßÿB±€ÂqÄb¡YEÐYäЊœÀ£qkð~¦ÐÂñç׬ð‰¼VÙ§ÂäT4>„ìÚë#NP𠺬æ¼"]9ãSúÄG!ÛÝu²ÿø:œúì “<]…a?@.¦òŒ¥¸ÉÞ ÏnýÐïÆöP½ÝpøUö®7' ÷ùÙƒ†ŠüiÃPC‘¢ŒŽ±=œþ°NG0'(,èMØçÁÁ 㱕c3™ÒùSr¼ƒå zèµ (õ®±òt,5˜FÁàäLÄÆÁŸèþK½!.1¦%mÇ*%FQ òK™Ii†^ÃhäJÜ q&Nx×€¹Ê ¼C—eÐ ‹”Ž _ôDìV” Åc€5ús:Šr®s!´|á vl=eUœ “qÈ%y7ØL»OHÕŸ4–ü+ª™C*ÃݸµÇ\… –S˜˜a_ ‚­ðœË1¸ †˜\ŽcÀö’²#_úB b¢qÁùÈ3~_`HÿW€BG°RcûaJÜa½¯ïèÍ=)óžôFáxâ:~0¿aPaÊjèç©o-ÂÄ‚„7\“u“ Ç$6f¯ƒËÉ8Oeå$†Ãñ×࢑ Ÿ?¸‚µ—†>ZÄsûu4æT»õ}£½-} … "¶Jao©ÂW^S¢Yœ†Âu]ð"»Áò×0S Ï› é Þµ÷&Ÿ€Ãm7Ÿp´‘‡´DsùÄÍ‹ÅuZFn”×[ôZïÖ¶}@åÕù°Ïrwx aä÷§”l†Šô v>ˆ.Là”È#¯¢}î&?\$¤?˜ÿ¥çû}w(ŒÁNÚìÒÃÌÁŸbó1æûС–œ/ŠI×.åÊ!eRbÇd(X1›`hÆÂ™M²›é`3"êÀ{×ar!¹äW4"æT™Q¬üYÌøjWfªä3^lm°'E•=žWà"œL0¡H Á7=NÖÉÈ÷å¼é¸ € °Kü1EM.} 9 àˆ/oêÍÎ>±üÙÙ7°v@VÀ„:fú ´ì]àE˜H^¯y·zuXÇm™'æ«î¸ìç×b‚?œíÝD?¾¼íÔaÄ`dÐ ^’M?ÞæÇÉ)8Faí¸Ú><¡íûžYÁÿr;ð†ßÎÉ2R*‘*q'&·‘0—aÛ‹„Ø`éŠR„FÇÈ(‘‡²‡#Œ²‹ Ï@|µˆ‹$cyÝI‘y¸Ü ÌÑó&þ¯W©P`>àŒCÑfà'.\hqäò¿x7·èÐéqóˆ_ñÑHÜmW[|ß]ËS‰Kxá„ ÇÊŒŽ$Ü2T(˜Z4’bAt J`cÝÖš<7gWѤå¦UNÿª’ú•|Ž…x-ø±Z`Pù'|9Æ¥ì+¿ýÅ%5¥#ÿi0Ф°ƒéˆ¸cŸØQ—ÅT‰ ‡ú2D9Œ¤Á!nÚŠ.0£*MmZÿ%' I_ªAt’£kB4³PŸ%R“†ó‰8ÀAIR²¸…Ûd 'Ö§1M‘Q…Ãk¾ÒÁš³Á‰"B¤‚ qÂaæ!A}%II+E‡>ЏÓÇùWR’HhB—^$ñmr¤ [6]¤ÞÅ­[;™Ò»"±´Ø&%Ú-±YXµ`8ú|JCXìøŸÓ!uß‚.à'¡ˆä5^L‹‚C½-ËÞFd’•”Ú#1„T̯€[xHå@Z˜`– •ØÉ•Ï\6bpS‘Pg„{)Œ¬ '!öS£n»ÛnàzÀg2­¬ÕÚÃÂÒ#µÆ ¯‰…êÅ qS­…ƒò_t¨Ç}%÷0_fO `t¼ƒc.ÍBK?œ\,ÿp þ:{øï°iÉì°–{„5>c:­ø:¡åŠnÍÙ€ÖÜ àëZ…~–7€¿;§{PqcÛrz¹hÚbl±ç¿ZÝ<#Ü•tLóÞ–´Ñ…r(äÅ~.Õ’×&r Ér<3,0D)ý{ ÿ^ÑßøƒÞº%3=‘SÆ÷ü±…?¶­?غ0Ô”Cšab>"óËïE‡"Ó<®T3˜8JÚ(á.· p©³›+&KÅçV¹¢<6D£é(11 e&‰x­þ¹4è9ñ}Uz-Ïñy\dí|MË5Ô8ÇóÚW%~Í?9n”‡d#ÞK«Z£¡ +hÓQÎX {_í0:úÅ8ÍÝdV“¨/®¯ǯQ+Ðõ^µ¨–’yÛ8H¶ ±' ÖÊf"i𓊥hÁÒ•×M’Éš´"Ñé?§²[.kDß~e!z}¯¶̤ºì’ã¾ÒûTވ؄ޱ¨|eK/¿UÎ.¿íêå ãE†vs»’Úòò†vQJÜsQ%F×V¹a'KùÞ¼ä¼TyÉÝ*Yxéx2‹4¬ŽwÅŒÞtÜ—öyìº:=¨s¶u"W–=‘­XÞk&WfRß:5Ì_¥A.×´@K”/j­³ÆÇH|Ü_“ôb5½Ø¹,†].¶ŽºÅœ¨A¥xë,™aKwìÜ]Vް«••o*»l;þ“fÕÊQysgÆÝwÓe3…¯·,{!·(ð‰± VÙ|…ö&¤Öq8”‘'>%q¤„ò´ ÷fXþÈàrãe¤Ó|cPFG{ÍÀÿ’ðGþÇcþ¹nÅÉ"=ñ>ù±†$ìÚR®ê8Z*Â)Ê'·#P:PÆ·d’Wã\…”ðž’w­½©¯%=¶ðkJŵÖm$¿Eä&¾” nW´×z8‡Œr*×2eÑ8 Nœ×ø‹ö‰ñ¢)_X&”Ò|@ÇÊî|3ËÍèØÛöþ³Ãiïâ„jÛ7gJmiä“êøèùOª,ü;¿>ü%ʼA¾•FøÙy6ÁkY@Þtºé@TäR(©BäT}{¿¥6Ù`b:,ÚÝåt±“ìâQ;­‹RÆà §²O­"–x¹ WÄ ¯nêŸË<,ïz…·À®ñy¯½f¿æ^ÙÒW,­ã‡ûŽÏ;N[+NÑi´âE*Ý{” ˆŒ¸T·¶“ auìó ÛF•ÒUKoS|[„iqDÜç6"ß ¡EF¤›º×þ5„äf5ÿÓÓô%ðÛâo‘{l‚”Ò—úÞyº å¤µ§~ˆlê­=ñF5çog˜0Ü]fqQS,‡“ ÍmX@ /ôÍã*¸Žr<!-¥ 5ù?ñÛœ°ˆ8¶XA‚CÉ—Ü«KEô€-ÆLiÏúÁÐ}6£[÷¸gôxÝ*-Ò-›u/yñiæE§"³,äî<_ä1ŽGœe>û$+jüô’úfùõø[;«ø¯Oó¬â¿~×Oÿç±fÿìø¯Û¥Äü/o¯âÿ<É#v?Kü¼‘£ˆsæLOí¡>«4Yù‘ÜsìyXþG0S7Žnü~€nÚ‘“ô¬¤2ã#&c&}$ŽÉHúHßß3éãxz{R$;æjîG:óä~Ä 3s?Tf¹fžæC1DšÒW­é“{ÝÙÓ®é¿fkLÙ!Gvã›}üfŸÛoøMzråéÍaíl-ÏÖêX¤þ˜åQ®gÎÌ&‰„û­Óh½iÖóÊ_V}Óhí7ÞÔ[G§óv oC*o%oŠÒ &Þäëû3Ò UýoüŒò?®ò<ѳÒÿ¾ë'ÖÿköÏÖÿœ­dþUüç'yÄ~fÑÿ:«üì/žÿϳ ÒÜ+Hç»ÌÿHÔ[¥þH0Ñ÷•ó±³ÜœIp¢#’ó±óàœUÎÇ¿õ£ëÏ'ÿce{%ÿ=ɳÒÿ¾ëGÕÿ¾YþÇÊNBÿ«¬ò?>É£‹`ºþ·ÊÿøÎÿ¸<Ýï»Ëÿ¸Rüì4Sñ«ÿÍr>vI’ò1 MôãÁ);ËKù(ð_JÊÇŽ–ò±³Jùø Uÿ#’Gï¡ÿíìl­ä¿'yVúßwýÄúßcÍþ9ô?'¡ÿmm¯æÿ“ÍÕ>A©Ê ú€ò‘” ¢qªà,5P^¼Âdf 5Ø"C ¤ïï§gãNr¸¦jøÌ£b…™Ú Ae3nùQ>WÌÁD )C\ŒðOFÉfT’§‰‹K¿wz|\o Ý«yôºÆ %´5*HQ‹µ8½qÿŠŽfË®òˆä¼qgST'¦9•  I\Peâ«Èò4&Uþ‡Õîùøÿ­öÿ§yVòÿwýÄòÿcÍþÙò 6Äý¯Uü'yølïœîµN»V÷˜õvŽÁÎo‡ÕwG ð¿­èïãj·ö6ÚôgêYnñ£ÈÖ±³ÝóU"IdIž‹¨$¡6iæ1A¥™²h<ÐlÀÙüÊð|bƒÀü;¦çÄpp,ƒ c8ñ½;x΋€¿õ&½k xµÕe ÈB ’ðl^_^Û¼ee4_³²ö’†ÆxÉ Jù*—Mƒ•«Õwý¨òÿŸÏ(þCyuÿçiž•üÿ]?±üÿX³ÿ/Kü‡Êjþ?Å£ Bªýÿ|ÿýÅã?ÔŽ`¤êgÎvç^w€Î¿Ëø õV—¬”}(ÇÃ@äE8ˆõ¿O<ˆóåÆƒH‚y”xçŽq¾Šñ·ztýïÿl•ñ± ÿ—@ñ#ýokuÿûižyô¿¯?pýïÿ›¤¢ÿaÿþý'£È?â÷ÿO¬ÿuý/“ú°â6_N'—…—?9åŠëì¼zYyx_WOâQõ¿oÿagÇœÿneåÿù$.réúß*þÃ’ã?Ð1Íﻋþ°Rû¾±Ú÷\£Aœ'â7°‡„ƒH‚yp8ˆóå…ƒZÜ;DôIo3깈 q¾Š ñ ŸXÿ»õF7|ý¯lñÿ_ÉOôÌ£ÿý¸þ÷¿ç©èXÏùÖ"ÿˆßgžÿU|oÛww^Éó¿ÿˆ ó7K ÀwýHýïñfÿ¬ùz_%qþï–Wùžä›rBÿËÈ‚‰và#øñ$µæÇ£öûäý ìCÀõg­ë1´½öIyps'G¶¸öFTâôâ¤$ŠÅ‚˜å¢{#‡z'9ÿ;[U£‡œ hW ǃX8¡˜Ž—ºyâ$ŽDß¿õ‡}@è,þÄtì_N$@‹ä©X5‘6µAy€¬‡>3‚"’©*Eð|"‘ u¶ÚÈ¡QH’—’Æ4 ª6Gñ'Ó!iQƒ³ñu8ôM ü`¥¨à Bí¸»,×h6Zë Ù¢Ò×óI» G}=¼ †ty ØÔ?Èèc…~0ò{“ÁW¼•ô¥Y}{ÒÎóûR7·ƒ LÒAô)ÏâÍp¨d†ä"0`Çn`qc¶¼Ë‰ ªŸPÈqÒ{[¦Þ~¤Þv”tÏ}ÿrÀ#ŠÜÃ>™ÒÚ!΄ÿ/P;ÎdW#ßÃa˜\{D+ –1 ¤ƒ˜h*ý8À×ÞЧc™ÆœÂ{¤Uoz#dš9ZÀ³—Á„Ÿ¨ ø—Q‡ÒÁðžŽÓ‰U!b5öšë°Ä`Š:œ04Ep|Ǔ𖠃‹‹¿ê–à¼ø `}b+…rþ—[4|ö×ynïB4èã;ß¿ÍèxC®€äc„zå¸-½xf§C¹„~YsïÕÁT¿‚9íc–9º]'CÒ ùH‡Òú˜`Z_šûÅ7Ýb®õq(·×¬¯¿pJ¥|&/pïá¡ÿ%&2ØøSp{ È!TêgÆì‰0ÁÝDJŠ}s#r òùhOZ.ž‘ãtüêõ&HX¨xâ…·‹AØû“°ãOðNcÆàðmVòÎ:ªí°fÂ*” ä`\XßÇ·˜rÝÀB:eÉ (-ú“ ÇîÂÑ'.rr}‹Û™'§w‚ÈT\W–3TQˆB&7Ã$šlØ-åFÔ (d"wDPáY²-iãêALJ|S—ñØxx/RÖ,ë í4êjmž0e«P<àA¸ü/Z~‹Zêv•+9ÃÞªm4xhÔÓ!P3¿˜T1o<†þõ‘q&ì-½ô¿&"$€„I‡m8ùäI™³ èzˆl:»-w®õÏMÜ`½›p Œ ´ANƒŠï>{Áõ2û`:˜(8ú>˜Ð ›ÁdÊôôÓ0¼)ùx‰]ƒDIJ¬ˆÀ· *ãXŒÍO™Ýœt OÔ£p£wyé|:":6´h˨&Ó) ZH]γ}ñ»«Ïçô§6ø¼eÐΡû_MŒc â6±­¨z\ Òg°k=o¿L‚¨Ó×òHhɳ‹)®?€ÞµÇ7é _YÓp‰ ³7`¶B¡À¾ú<*ˆb„ðyø²Aä» Ç“$…%"MªN0¦C˜G +…}vëc8”‘J<’³}: T…Ùn}Ðí/e"F¼õÊú°0à΀¡aÌ¢º€,€]$x¥å¤ˆÉ²aáÙìD.Öêaünq‰ ðTÑ…ìKÕOØ$-PéGbDÕaÉ÷IyP¹ã ’êh]œz Ã{°GI¶Ä\èrµæ;BQ„±/+Œ%Þ^ÿ÷é˜'OK  kf3ˆªcazbp,ç`œ…ˆ|Ì[3eù‚Bt‚¿9FÙ„±mÀ¨Ì†±mÀp¶tN†À¬!ž­W:ˆ™Ôˆkð§Œg3*ˆíÊ J þl ÷å Û&ˆ`x ƒÉW ÂÝÚNØÜæ:c{_#¸QÌÍ´Kó…6– $nA_øÎƒ==³Ob'¹IvõÔšÛØà;ì°?ù+qÌG‘Ãë®Ã^F[—"€ÔêÁlãÖL†)§„DÝÎX¶×\¨àƺiŸê{–¾I´ 8iAîs¹¸>Ç~Yޱ{¸»™XLyè”öJ<>À_½&ž„¡á ~“ LT޽ÉâÎóê4Ç ü»,áß-H´þðf°Ô–l ?lÇ~¬I|9ºï]—ÿ®Öè7·JÃçÖÇÎÇã,„¾;[GR@š…1oGV¡Æàî¶eKV¯îǤCž‚|+Lñ^™™TÜÞânkÑ@»ÑpôlqÞP»Ñê4j1 æÑ›<:Á£}¤m«›§~Y`ÏÜMœQ£§šðuî‚§~A¬Ãß+ÔWKpöˆ"º)« ò=Z¿Õ(› 'ôS…`@w ¤ëo2ÅEޝúñgºrö½ëÊÑXÿS)Z±ݶuJ¶²¸•Z “žSÊ#²/h(r8>9¬KyÁß!'áÇu[¸ÑZضbN{ª wØJ­µÇmS')õÇEF-såH6w”…3á†Â? ““Èñ×9àµå w|ƒ§ÛBò£ÚWþ„uãº\š3Žv{ØaÂhp|zkÖ&õãÆ¢ð$xN&¼&lâ0ÒUUé+®Ÿ)¼N_îŠc'M„þc‹Ðº•ŸΜ2é”ɨu)ÇÀœ¢–ÑYàz aœÕkªžÕo¹BX;΄vç8zŽB'“ì5Ó[ÿ¸›¢˜²dùÜuN즱RôRB©–Befº²(“ÅÒ¹hÚÙˆ¾Ýe¯}²ê¡­Áz^d²û…‰Öp:Ðö©ä©…ÏÍP‰Ú¨’ßÅM¢E/åˆàî:øfõ~HvTQ«|‚¦KÖCœ‰cï³oNTÖo<á©þ/døQ|n¼ÁÏj¸IʬÜzû:Ò<‹Vö2÷®B¸ÐWȨŠc­Â…“”*®6èæB ‰,è‹Èº@–ÝmÄœH¢\pÔx¥œ£bi4 m*Š«Œ¾rð~ü'öÿþóÆûâ<—øOåÕýß§yVñŸ¾ëGú?ÞìŸ9ÿ+–ûÎÖ*þÓ“Ç@°*ü+oÔ'÷î}N s±5Š&%ù4@Îú:îÑJ‹œpK~ìNMÒú…H@ £K—•ÖØ©Së*ê©Ý½<;Çír1™‰—éÒÕ;ᮓ µUòÔŠv θ©¡Ø\%éÂ,ÒR$†wq´€€ï“¿å%»'×fÃÞàöÚ»@gýX¶£â.‹d˱µó5;Až‚êoF? ÁSʵê(ÞÜM¼Ú©5 ƒÍ\øä±Ú›p•ïÝ]qkxœÇ/¸3+5'ÿ礯]ö/2IbsÄ Õõp2á¼* Ðê”òÆV€n}¯¶L#à(’. }LŒZUuôØS¾àëXáP%œ’‰Âs9@!bÝÛ sËòò;8’Ìĉóä1¬‚?¹“e‰°ƒ,'òq ßEºñ[W¼Íb½ˆqc îl 0DišWâoì+¿5–Ú…S''¨E5NÝœ }Êå$³âæ$翦Æ×6Òç>BµëcHF¨È€½'~rjq©yðõ‹@F~(ð8ž2¯Æiùwö8¯Äþƒ/þÑ7xáß Æ£ÔQBhn4ü¿ß¨'3öjÕ R¡Ã pf±Slžñ†T¬áÍùíÆF×AíÒ¿Ýû—ö-Œ[ ;xêr$:ØdMâ-¿ýà¦õÁU²Ðê ×°C Ë34 ¨Ì·…9A:àÛcüö$OkÎIýfŠd…Na~àG8‚ß'EŠÐ}“;òM¥žTÉšMKµÚ\Óܘ˶ùžÊ¬œ2¤³+éŒ&¢óB;åGT¥"åž§s~ÆÄ\Ù—›Z¤äB¯ÂE?Zé‹_@ÅðÞtUU‚ú6¡ÐZ‹¶º8åÈ$%ð+(Mýi"¡séB›&”´/"G}.r»^:Aê1Šú£pœè¤ ÆÚߺÞÉñ”T£§ߦvÚè©»ÌwúW§n7ë0øO¾BÉ6@øyêÔ:ô«ƒßœºð)½ øžŠ&T ~óÏ®øìÒçw h/"4诣ãnžs{ wôa†Uzï´ù†ŸòË¿Üè+ßíŸþš,ÐÔižµàæel¼9¬â`Ñ0 éU»õÃc!– ù_Ø—î[;˜°àäŪ“ç´uÅΠÍ3Ú_á÷¯®ºŒDwŸ:QFT… -×›:Íj»Ò©áêÝé|¬žð²Ý}ýÑ¡?:Y¬È…ËtȺŒe*hç°ö6}ÎÌsY+/¡$±¹GÄÇ<«v«- ví¨#“Íà¸uèÇI»kíô\Aè°Ë‹¤"<¸Ü+©@‹¼à²ÆŒÀ@øüK>ÙñK~}JxB¬ýº­{|Ћ¸É"hlQËÐiE¢krBrMC·d¼Õ%Ë 'Ÿµîš0çáE5VJ¤¢ ÌËE9–5è¾|zŸSëï˜õO´ú'³ê¿´ÔÇÇzý‚ùùd~ˆbyD²½†ÉT‚ãZA¸1—ƒ@´RTl@ $úÁ¤÷ÅI d“ˆÛ•¸d€‰h¢§u8™b8_®è `ÏóVh9w͉’hòD~4“û‡žÈBê–¯£ïãï´ ¤j\÷c½/­D§qã4²ià&ŠAaè«Mv¢~åRi^ÄüJÔrµhŸåß%ªÑÞ‹ßñBÆ—®¨ÈK%¾5ÝDM¹)‹¯y]VP»©Œ€,:ÚwtÛ•/ÈJ>âb¥áë¤-}à25%”“ǖˉ°U· ìIM±ãåØW6×ò¬ yþ1“}äIÁ3‹×Þø )ò‰÷ ÔQ^‹=ð©ßŽƒA8Œ×d”ÔïÒg7ÁƒvÇ¥„&_‘üª[¬)'åûuµTŠÕ%ùšÄš 7\3Ù8ÿ¥u};D_–¡5®(…¶°ò¤ÁW½„,n Ÿè •¿Æ:瀅¢r¯U G¢­ô\/)ÌQÎ`´ý£dG FfÔ^gwD”J톄2_'"hsuA]ãSƒx¥›ŠgÑ{÷öãÛF³Niöð+B £óI,Ð…oðP—–NRãô$q&ýŠWª ¾¾E”£Ö Ù®N?ŽG£Exà ÀñЗÙ üÒ–8£­f·UÖ× !lÌuAP4ÿÅ Òz˜6 ­T¢M%>¹Ä”’ýDÅ•ï‘Üž añ€184Ÿ¨óIt\Õæ)÷:å¼\ØÄÔ«üäÛŠÝF&i9šGôJ¡ù¯Ê‚…®2)%ʼn•ϱɋ¶‘„6½|½nV6U|ƒ5é]JMwŸ7˜l/³–@ÓÖZžnÔ=µâÕ¢îit™£®ì_²ÁÌZ¶a˜ÑAmD´…a6ÉK¯4R j¬Æ ª1/Â…¦P,ÁÁðê§ØK+Ïsñ’¹AþbúbLsŠKõ4íÒ%Œ’öÒºQÅ`åêl®0šz-Ó¯MƒõMê1Cˆ` Á†E ýÚ”SªÁS<&æ;OQ¨V— Üòã)k~Ok£õ{eBo:|Jk§Âr¿ÄÍ%h“Dd=ÐÏ1^)€TŒ“ j0DÔ¶º³õ½U÷ä>ǃLé ÎÙè] „#îOèS<¥ü~qÞF<ýРÐqŠŠ<‡§ 1ºBÌ/žÄ]Ò„¾I%¤Œ¹pw—‰;b™@:dàn঳* ‘1Uùo™HÃ@){¨¨²“P°S8Âï=6ôïX?ù=íV%[F6Á¬×˜9y„Á³ñŠœ†säÆ HGƒˆ²ê&ÓtT "AÖÁ%®Á]‚ãb€$î"8W‡à¦BÐÉÞ¸ÄË—c<ÐÏ§ÍØ(}|Jâ$ÅOú….>U£RÑ4¥’tõeèãͯå|ŒÁ5á­è÷é±yÊzýƒF ¾Jçù&t€ŠdBfÞ• ‹‹*÷2‰ÇVõ=‰ÇËn*Ô5tÝDNÍJ Û«p1œ¡“àÖËH ±ãº–šªÌ9Ђr6‚‰þ¤£¼ ÂjªÞ㣜­Þ3»5²®rÍjÑ!7{cÁm®ÄÂX´–EÒÄm6+lñ;{Ù„ZA¼›1G]++YMÌd¥_…{µhÒMÎMWt*›ƒìø.†©âÓ.×ùÇF{ŽÝî£Íå±ÑζÍ0‹ L®!ÂéC›+j›s"õê³6ÆÅ¸>.‰3f·àÇ&  Í©)¤W›å açVŠÏgŸWš6á ß]Kaé'1(‹™#ò¡Ié¸Y%•Ln:™\ ™Üt2¹‹’ɵÉM'SÊF Ê¢,gÉZE'“»Ñ”³¨ÅÌÆ¼B1IsѲ7±?6,ÊVŒ«•Ý ½Ø0ÍC,•.sSÑ]˜Š®…ŠnÝÅ©èZ©èfQÑ´.X¦ù¡¥ÒÅT c4«jŽÊªÔDÕUõ[õ½­‡¤”'H58!E!7¸)Xiü«7 »®x8«j¸ªs瓚ùóQã½á>j¸T¢ë÷W¢®ŠÃBмTÃ륆o’âÍ•pü»àØÔpQ*RÂEÉ祆;óI ºÎ-óÚiåc*ásâhžW¯'ÑGÞ‹ûrO|nt]DWÀ—ðâêw]ªß\(QEèyGÛèÌ₼Ô$Ä–®ªKÂ!©|'¸Ñµ[Yî£sƒ¿:Ðî2çk¯æÕ.õCÿõ$ºsÑØ{Þ<ˆ¤š2lÌ›¥#¼¨,íDüš7 ÏÎ9ÚFgî£K³•kÏ–„CšÑ*oº%ØMV1|Ã'!yìc9WuáMs¦Ï­©j°ÄwóyÌVÝR:Ær–’WtR+Åá nÓìYÔpjç,•,i9‰UµéMsèæÖu5XóÚOù¡íßq›6B» B„Z˜ÐÊ@¹ûi=[Öàpó‡ N†`¶~nBJÎ17cŽÙj¤òœA edfë³*œ e~¶’mBJ΂)ŒÞmê+qe”ÇáüæƒZÁ<ç%"¿"~EÔ´m(ÊQyåfE Ý<àŽ¡»û‹AË+ÐÝTè–£oVBíVïÃFjwu¯*öì3ïšEËs¸<¿&;<Ä/Õö“GÈ™ùàä²!K}`<èXgŽ3Âh†ì Ù’¢ ) ÷8ÓÉ>Б7ƒíS×<Ðy´ò·å.Ñ.y‡tΫ%&BÖŽ-æo«ÝûŠÑ™ëÊÍâè̸í¢ÜP©•~9Co.^C“ü²nj[²È\e+’Z‹ueéÔ·¼ìN»÷é´ké´;»Óî};íZ;í&;­l§”,à &=6—Z‹ÈvǾÂ;e+ŽvŽ­µ×òlíþ8X£ÜY„›ð’ËRÔ’¯‹ÞÐÀUâ* Ïìµ€ºI¸75ÜUÄ¡#;¹ :)¸Ûï FŸ•hPKDÊŽ´à0θM WFó²æC†»òøØ«™À~ÎÄ(\KÉ Zd%]œÿbe&L §ƒú´ØXêœx²(.…-øÏ;šîcæaa®ñtmôp禇«§ûÀñD¤ч÷@Ñdf^Ê>¾À~z5cpî}žP¯œTõJ\lŒöìMU[å7’¡ÇXtшK…ø“ÅRr­…f¬0l.¶dr\1‚h'¦,7/¦~õ,uê3;·ÌXÐ5ÏÌmÒ2€–WÉ15/Õƒ¦{(v ImSfŒN×;@šM" ×]®*&®KVP¬¿âxs‚n;°òµ$´4#äÕˆj‰Žj`È[PS®öBÅMMjO‰ Ê u¢`S8Ø,Q–݇³ (¤ÌTþ›ÍÔV˜ÊdIHl¶Ö íÆ„V5…Œ…ÆÕmQrØ,qó^„&)Ó$‹ûPR§@U‰m r¯5Ę?ÊXOÎ ËŒp•’#>fH÷ËrëêëxbÜwì —¾’/T’YbÍ%¨ òõ)Årñ]QÇÒ¬ù121ŸmQ(--RôG3ø#K‹m½Æ1’÷[åYŸ&P¼ý(ÒeFYÎë2ÑáÌp—z“ vY qäßúÞ$3T¥1àÇáxr; Ñë,^íò©|Šð#ïÁ0 ÙÕÈÇ ;ñµM56ŸÂ,К†øt˜ ¼Ã⛉ñô~M%΄‹·üÎ:áÕößÍÖR’ë:o#=~-Z·ö“i DiQV•É,š™Ø$>VI.âÂîâoBϺ=¨2È À$paB€vç­h-©°O„®+:üBÏR~´ |&þ'b'Ž·aþB¶b×yçUÑ£F$©ÒG¥¯6Ùõ#sé£Ú@Jð¶Ç+bþa^XdœbènôTi&þ¨LjåS.ƒu)C™ôJ­óã?<å3ðn½Þ§Å߯ýq¿W¼|„6J¥Òv¥Âð÷Îöý.¹ü3=îv‰9ÎVe§\.+9•J¹ô+=.‰gŠNπʧ7g”ƒb—YÄá]aÑï¿Êóþßÿ×ÿÇ?z=vÔag’™ñÝÿÿ\ø÷ßá~þ_ó¬v»mñ'ÖøŸðï¿Eþ¿ÿϽð¦ˆ^å~ñ©7ò†˜ÿæ‡?^Ÿ¶JÎK÷å«­Ÿ:Þ¥7 ~ZB‡Wúˆùÿˆ³Öü/W¶“óßu·Wóÿ)>Û;§{í£Ón£U‡i¿³_˱ÓãææO:¦©ø½øŒ™xo‚AŸçâ½åß¼ X%Øå ô(ƒêm é‚¡G©QýIÐ=y¤„)on8”éwÆ"²9»ù¢´¿ 0‘Õî÷_Œ§“à”Gœ19û5&v¿†â¡‚@ ”bõî:è]3 ƒ ‚O½éhœÉ³Æ¼Æ ÞñLp)¦DFžìûã`ä÷©CoašÁHæÐZðÖx€< eoÂ>æòÕÍÏ<žÑ;eî ¤«q>¾D*^\]q±‘ù¥£uxÃѯ®Ñ ÜÈ‹x‰(%›QIZMô’X–VöÙv¢¬Æ°„P¶ÚÄœAº™.|I)- ´‡Ñó€Äx×@±…(ÖìÄ¥ûɨpœUS^ÿ.™<™¥Ít³­Æ¬¶L2²¶ˆ¹Â¹MQd–«{«ÿ‚ f9¬} Ö‹‰Þ[‰Œç˜¨›g¼Z–sѸe—)š€ÔÔé¯KyË.Ç7w}1¼ Næ*ºu-÷uxy)1W«Ïîß­ž°ãìP„D—ëñ]p(7…_}9ŸOegôE}d—rò›ñLﻫÚÖŸJŒEæ‰ËäþiJ£‚ÖáÜVhrǃ)%?$æ¸É\â’гy8}à{}\$cš”ˆVì´È!ý‚é™ 2YW1`œl²ê÷%‡Ö°[Ø 2çø€µ´úÐÝØèꃤK9”Hyà(AoÓ‡‰“âaÃô¡[ î=P¼nr¤NæžI'éÃt¼Ð0Ð Þ8ÑÖœMFít)·OÛ@òFÝ‘ÿÇ4!Ir-Ø„¯XkQFO¨;ž¹‘ÂîFkcÃ-uCÐG 0b“ˆnÄQ(ì"²D£¾7ñ„”¨<@'$tk#ç8lZè6;søóå ~®yôæ77×z‘ãï7ux  žö‰¿nü›—b¡?pHÀjÕ^n´„]ަ KÎO]„/íbHŸã_N4á4œ¦ñ ,\â ¨‰ u @Pò‡ tvÿ ؇†Nó Á-Ô\…¤ê“Vl) yÙœ[Œƒ˜òÛ4Âû9Ä¢Wr肆ÓñÔ>W‘5íRÕ1÷<4›PÎOL± j7Ù,.¾ DqMx3¥†ÞN¡Çm˜— Јuzr%Ûtp8¸)¡“¯€¦¢Ø,a)fËNÕ‚ØýÒ]¯½á•ßW¸cŒy¬hÀ¸^G‚Òƒ®bÏêÜs”${›Ô´4|Æ~:;ìÀ¿`¥­âñŒmŸÇÞÈ»ÁUŠÙÓbÉD'™<æýʳîGio=µü°®esÜÅR}³DUÐëD|‚ºðÉ¥Oš!S¢Ó {ÀÊÜœmˆÝo4óø³goj˜o~·Né÷qÞ7àÿZ†…µ!¹zKcñü;ÅdÁo õõ]ž½‡ÿßg:l~€æ[‡(=ÂÚT:®·‘ã£f žÐ•Ò¼Ø²Ò Aócºê 0D­â÷yúðÔ:”­ÈÝ~Ó¢†ó zÔ±Y»ë_`´QŽ?˜{|ªEt†]¯QÓ¡7;0ÆöpÚÖÒ1ã9¸óø»Õ‘Rõ3`š–VV/—pó¢ùŒ^t¦âD釭ÚÑñ¯yq•~wjMþ{¿$~WÅï¬#,Pïò‚Hbô~È‹Üè<¸¤ÁBг‘èÙnÃÔbðHBrRÇó<':zCYí#é÷`›G7ÏŽ\dÆÑ¹¡´q ‚…"’˜ëq˜±(kô‚L~qfWJàŽƒ OµÖN×âÕÿTj8©5š)5Üd 1#QXOxU5äN.‘‹SÌëµ3k;3j72k»JmË×5GwäáBþØkt²L:5Ë}>‹îté•\³R+»|Ù,O§QX‡r“µ15yÔ4àë*)ËEIs~´ˆbi-îØZ½}Þ&yÑÅÚ|•: P“"w&>“sl퀚T¯Q9-ç°áÖy2 zŸþö¾´«­#k÷ûýµr?X‘;qÚ½a‹A`!b:Þ,¬DH´}×ûßïjÎ9BØq:h%tNíªÚ5íÚó¥àœB!4니gé‘CR^ ^ËM°"~ªYÍy&àŸ ýŸn˜&€X3)úÛ]!hÊ%Ú©ðI¿ÇßUƒW¹…+œfÏÉêÏ\9–A}ç¤j)W%BõËnmžÙžêFùDˆÅFŽÿ€³б¯¯NL£ô²¾¡¢&&:=)Úý<‹‡,o>¾‘¶~*F‡ÀؾDËFðIoíPïÔ›öÎIöÈã®"ýê59¶žžóæZø]J-d¿ÞÉ¡Õ-Þ6ßénÁåÝu¦Þ;õ å—:Z[è4šmiL§Ÿ(óœuBÔ7~Hv¯[êë³Î ¾²ê{$ª/1,í,þJ‰u$h…´Wrq4Ï¢7åã3·tÙÕ#dH¨ìRX ?…I½Êo¬ùé!þ#§O:½vç¼åޏµÌÑ[£ôÒÒ iÝ##–—ug×3}Jl½L³‚ímkŸcã9£|i’¸!ô”Ù ç_U»Ðè—ÞœˆÞ‰ØÚHv»ƒÚé]îØèaŸíÝ`D*y&M”íYÁ0?* ÊiJ±®…^š¬{'ÃQk]îÿù»x.> H¨ÀÆgÄCøÏº¾1ãR©ºÓåëS%½ë¨á[xàÊŽ]d­ÄQ<έ U~õ îFð`U,Ì?\¾ç«¹Ñ­A•¸”s:ÓYœ×XÇ/½G©$wXÒôR-€Òù…"¬y`ä\ãý™áI©U.K,«­©‡,(o÷A%Hfv¾Ùã‘A7d züLû:B ¿‰±ƒ¹)S7±yÄÞh¡R©¨‘ öèÔ’èŠÊ•F…‹ô«¤ öOϸ?pó"­ûé`8=³Þ@½ ®ÔºÂ¼©Ðõ¸B’ÿsù»ÒÏÓUà9¿…j&üsU¯{V¬`mÊâTOL€ˆôìm ¼{ ‹‰YâL{Ÿš /¬Ê*‡]xHï¬RÏ̳_ùAW>°åÚMŒ7 J´‘uðlÕn©›ðû3÷{Ö‹aŒ!½€–7¢fÅLº}d šuÛEê-š›Î[Íì1=ršè-2ôFÐsÏ4%«£¤RÅ‹΋X Ÿ–àè¾@ú.U,¶ø¡B-Ö¨vø6*Úõ4tÓ4ô¸î6U6¶4V^aÛ8ƒð*¡ï¥V¸ß™6∛ñ|t½.ö“)ê‚uŠ€Ù”… Tu£ a ÓE"¦rcì` 6¾­ã¶ø-Ù± J,“°&É9äÕÖÿÀÎûdáCêMœb ¬33W½ÃUŸË.«Þ´ìq-h Ô]%£Ól<–ÍBo<–üfur›UªZªn+w÷ÃyU™‚uô‰­Û¥û3˜‡êº8C‰JÊ·ä+¦ô ùƒø*JI€ü9§Û_'r»î·kþà[qîØÞ¨ß„à[¤¨—n‹,-wö€H¬ua¸¼ª £ +L@Ç3ÙX¥óg­=Ô£eÖ–ù=-¾/e"PEe¤@ð —‹Øê*"ãŠiQ€]´·SÑ–E:ÕãÜÖYÜÀ1¦ßWIþ“cÜ(#1 á)Õ+[´­ËrU-<šmb¹„"…» µÄ*ûëC ÒyþÀþóÏLp¾…#½˜NÇ.„ÇÿBíf䡽n7\r1f+Ç Ä±ßLí#I]3ÛŒNЮy÷z xÿåÞúib4¨–@Öuñí˜MVzxˆÃ… ØÃ§t<ù=–¬ÁÃ/<€qaréÃøhVö|ãÐîNMªëIïZWaë£aã^Y<ÄÚ5VAó…ßZ_‡—Uõ获cËäEdÛªÍ:«6 ¢üaxÛN¯W}˜»$S¸Y難­+O¶˜e”ºÛÝÄ[±~‰˜æ2`QSn<çhœàXß2!Iph›9®ZÊÒa±Â3 (û;Ù,uDßqWkKxÿ­›è7:¬´¶¥ f:ÀcÇ:ñÿÿžü‰ñÿõ—õ/úÅÿoןâ¿Éç)þÿoý±âÿ¿Òê/ZÿÛ/^llú뿱ý„ÿñM>¼Ú½øÿw]å÷„‡X“‚λçøk3f K_@HÐÄ7›5±(À÷ÐÍ1F¸óúÁå‚ÿ›.€ =4Ϻ$"@Ì÷²ÂUP¾ñÿÍ"ýßuó"ý).´æÄœ›0xô|Lá_Ѩ=vO.€t@`ô+\™t®W -ùO6¯qzTè öb_g—tŒ“ÄØN …Ä¢V‚Å$ßàÄ#8]Yé©GâÇG»AÚ2"§?²€)åg= ŠšrH$/³NB||@pýb´L6qÛ€„ö©ö„ý«Ç{°#ÚTœ¯¼³£hÞÕxB n"A€9ÕØu(ÒÈÙŒòÓäi®Â·5º1Ýâý‚'»¡jÄÉ}}^DƒŒq‰!5Ì>ô1åz~…Ñ ·Ù(›¦îÐMÅqÅÂiñ 5þ¯»+¸ÎúSŽ;ßÙ›Önw¯¦l.rþ` p®*çPEvµ*_‘óGNÃèÆ‰·À,vÝÁ†ÒN¿Ì;$Ö”íÃ~DùôY4åêGà8ê—Š8#³È™š¿˜Xg³¼ŽËÞòA"oXHÌ ÛoaàE72¦ÆÎÕÕ|Ò¿úRûùq°›÷Ý]6¤y¿.ûú#ŠØ’§ÉûñälFg ]ù¿›¢}8kïcѳ«Á:y$¦³u¨±.>Ž‡ë ©‘Ñx]l×ÄýýºøñåæÚOõF úw?õŸ~Ú¨ª ©¸Q‰(÷ëÁ $ÍÐÑ_›ÝaJ} ÈŠof3Fõøe]ì£Óøèz\ƒ3îêÃh€ÑÝìÕWÍÓãµíí­ríCÜ\ѺÚË0¶ /´$Tr0‡¥]i˜Ñeœ ¡Èš':ŽUïkßÁ(dxLäÅIÕÁÕ-!ÃŒ`Ù}ª{8Fþ[oÂü)gɘ"” jÒ]6‰ú+÷“ñí¤'®¾ýZÜé*„‹CÌG|ç¹æ>NýÖdÃiV–éB¸’'ðéšg¬¬ÛìguúÙ§]”ŽsÌE1ЄKÖ:䢔¦ƒ»ŠòÔsnA»?Ûñ0K…Aˆ$˜9v¯(ð• *Ì$£HM´#sû1Ó½“£ãó#¥yÝôçÙË}£“~lÔZ§g++•µúó=ÐYžÝÇékà¶a »3yðá».ÍÑ!ø¦zqÔ$Ýt°SJ †¸ý/x·î'ÙEË )ÇèÛp©YA1½œVLí+ÓÁí]ÿ7`GU6Ä«W5 Š”ŒèòÞ™l‡G@Š£•«ñ‘Ç£ë)Ž©ê¦¦çs›YUµý[Œ‘ÍA@0%«búP/AðÌfŸ{«N‹¤þœœQñ×{:p€Ðk.±!*x%¼ÁD ÖØs¢œu"å¥÷g¤´b+ìt|rØ“qê¢_ìÉ): . ÑÞ 7Õl@((Vf¨þù€Ê¹†œs>ç>½•bŒr"ã#bµYVvbæø} mA ­ˆ%Hï\´{]­ÃµWÖ ›Ž|ÏY> .ÅÜ¿îûÓi6ôÆìv³“ñüöƒà~à&O«ÌÅÊ€fÎÆ÷jY…¤ü1á\L9ø‰ú™s äfØ¥U­¼¹©ZáL¾Ê2˜ÆÜ;…o“؇¾Úƒ|Z„ñ`âO#tŒ§f”ŒÁ†È¥Â©“òñ@]Dìmg¯Û{›GŒßàîÕó‰õ´7G”<Æþ² kÜ+jÒ‘*¤uÜj¿Éï¿ÌÚX¯7¶-r ÏÉ\r¼&a¥.èš8yK¿{ÒÛéåNÔD{¯pgç»ðo ÔÄÑþÿ׸Ms„¢!SǨu„A€;9Úâðã8ÍÚݳA3œ!´÷ÙýÛ­ðýšxSo ²™C%X~PôjMœ½mï÷äá¸Ã?.ðGç(…¢ÝÁ’Øè3ÌPÿb‚+ü¾¢Ÿ';yåáeNKEƒ’ àîÙÙ?Š ã !IPù<‚ÕAÅk굜֔ÿ°P?üã]Ý`xÀ_ðk˜{y<ÃtnøAX4†4„,Z¢£<¹W÷¢ÝDÜ5†°øàï·C½¿_ë“Þz „½ø)Ñ) oQ€T"[4 bp ¸ å—Ø +iæ—ØöKȆQd33Ç·ðg•,ñ¦”@¨4‰BYÝBC˜0.‡. ÷¿téz0Ük§Í¢ö7Ýæ7Ë·¾®GipŽwݲà†~ò†¡a^áøÑú “«€)’ª'¨–€›ïèKh¨Õ8£7}¼›SØ÷§ÁÔ8eK:¯ù £Épêzß(¦›ìµmD&Ï©=Zmë˜ã±IkV6"÷ú®®°$ZžJ.ÓU=6²†þ¦Á‘\€}l}½É_7œïñ¸—1zÜå7ÙLÁ·£>õÉV¦ªOF•òs<áìÎú7:¢ÿ™ËØo‹þAË8ºþÅ`2r )|\ †¥ð0(¬(½svWÑDoÔ ÷ÿ™EãìY9™ØÙ;+ímœ”¼˜ouvÕîf²WîHñÚsÐëP›œOÃÇ%(ùÉb•]ØÃ²¹À·rz[º}–f0ªEŽÔ*y0(WWFãÉ]ÅVðU;·T’½t˜À%Š$#y "Q{eE^bL8_âŠ'à¬ÅÉøóà§“ÔÔ4G?AR=ã¼§Ö}8È,ߤ&³Dî„5s;íˆdMn3µ²$[ÉÍ€$ÝÜFSnΓ#ŒÁeH€ ·L‹Èòâ[E] «áwbàB¤ÛVÃñ9Åäcg»Ûb¦4ü@zßáìJ¿|Ž7ÑóUÍ µº@ÜI÷€&”¼%aùç'·#^_¶‚ TLn€üå9Éø6®Õ™7X-„“£Ýb¥*ê¬Ðq¦÷?È9X‘au«!âjª®ð¤KÖåî9§t“!¼XF[!u˜±T%ð©P-JyÔé4Yœj¸G+ÌŒ<º²´›ŒÆ#[¹Ž ÊQíx½nLPµ¯­Nª%Óku­û)ì+ ª øoÅ€cN«ÃŠVTîJ[6>2t&"Ðh™áHµEMl7»ŒÒ™c‘LÍÙÕÄf»Óð'ëqS7¤®Æó‘+y#òPBì5o![ð€c¾/76Œ”¶? '-i Òf9)S“d¢!§¸KÁ5‚–_,Ôb?fÀ…ֺʦmê–O-OnžNikƒ¤¨žÃ†órµG¼»û0}ßÁ æ[ÔYÀKÎÚEe‘zÜ 'ûzï"÷’¨øÙÇ%ÔB+Y‡æGkוЛ kµìöEÏž³w‹Þ{<Ä'U WúýùcðjËí‹^B<7ÈŒH8[•££ªÑAròîÌÇk1t‹¦=ýo4º»ïÔD#Úaï@^;ï¶àéÍîÔ H~û)ÎŒ£# 4³"{]Q{X«rŒ9Èû¼Q¡Q²Foà—°â¥»ÜÀÛFƒYM|讇°ßᆠ⚢"׺_¼2Öêòº ãÕÑGvS²(«AIcIŠQ'*WÒeð‡ã ó¤ež¸Z/gj;²¾\«­sîæ^Éáî[‘‘脼VUo¨¯)™™Üòî#\=Þ?8¤V±=–±º9¼Ð…CönM·oòço¬"§cNÍjm4ŠÖ†u™þ$=†áôeŸÐ5š‚š¸ú0FÃ$ûù_à ’ÖTIœ× µp”ÙGŠ:_gãO}LÄ ŒŠþªöÐiM:”cÜrù4EëºÛ9 ÌÎ Yz‚0ß1çÝ|x›É` ØQ*—ƒ[lo•®Q¼UÊ¿õ{XÇáÔ£ÈÚUQÝEõXã–F¼C C¶81˦–ª…$ è„7Û·Šù((vcR>q¦=w¬…HŒv„Šk|Ê6†Â“=zz_!iÁgÝ‘ µšIéÃ¥¨ÎØX8wrOÁ¢L”¹¨ ZKá-^éûœ7ûÁø9ÞüpîW¾Ð"ÌåòøÜùšTJ‚"#\ ¤ò†èH®0d(\lð –ÒoG˜šb­Ã`ï[¯GŒ½GÊVÆpŠ4'”u¤/’È þ„@?Ͻ·ÊS+æ²õǃ–Œnò׋‹Èr‘,Xl½X£›¿\Rû­Åÿ¼år¼Èj©«ÕB+…Í×k•óØë¥^¸^"¨+¹¾”É+ùq¨EÁb].”š\S7ü5J$ŸÈ«k2Œ|w95aØ· ËŒQCÊŠ W,B3dö¤äuÑYÁ1“G­Þ¯h,­5E·-ò$`”Zˆ‘ià;}ª×´¢ÿq<¸F/ò|ŠøÃY—;t8p熿5mPgª‚ŽzhË{9’1ÔF|w $g:ÐØåœ4úžRtMaï GîTÜÚÂ…êU†Í©©Ý©Æß0(z´6WhÒþ®f*Їƒ[LL£±{Í“Œ;c¡ÕÞÓìÆ²½–ñ9u­Š.c ‹Ò—á#£-òžöèj"3¥F¬£«R7bËúªÎš¸Fã$†ôRÎâw]CÓY2TÂh[c@:9‚¦HáZft^=C·à«ñ”ÜFdÂÜlJª3X5aa š3õ6ÿ&ê|0Bòî‰|{¾4$壈o…œ‹ LyŠA8iŽŽÂ „щ¿fÇ£•nnåÔ‹•nM[ûV°^×s)„^å´þ­IÁ*Nϯ¬2Di…y­¡Ú_LqÓt˜Fú€ê¾y[Xñ(kUÄÛ•°ZKاÇgþ”L/#X­)%…È5Sw’1 ¦nñ†Qd[$Ô£4 WŽöÂoWÄ ª§-¾Õ’mƒÑãÍ–u ¼‡˜õ9Ú²lk.Õ¼¦Ã¾¦å:À:,q22î9×K¿%þÕÒ"¶€ª€oßÅn(ížÇ5©&É¿y;"‹…{":%%·Ä‡mˆkÝ‹·Cµúù:‚·Êí…z'\Ó[áf™­dŠp/”=Hl†öÓoºî&ö­꯲+îÆwÅ6믰îÆ÷Âõˆ;`¨0ˆl€Ñ;­+Éz[!Þ”¤u…¥ñÂKÊŸ-Uî“7 {1Zcy:‚H\ñ µùýUu9ˆ_­Þ@’›Á®¼µˆŒÊïÚüÓ]V4 ö`d’_‘{ë*U³Ò S…µ¡S ù×—ˆ@¬JFèÇ›pÝT3bïŹr¤Œb®$ÜïLŸT¨ÏG%›hÞãž%xeÎFcOÁGò‡‰Ä*—\·ëO½×,…—`s¹ëŒ[¹ 6«Ü}ûŠgäVîiIbûOÿ“Äo>/‰ß=©ŽƒÊ?—Žíc)`yT''O)bApLm/zyXà¨*¾1,rNÍΑ§ÏªµúB§UŒìžG6õÞW;­¨rë¼*n¤yÏ>¯bå,1bµì‘…(ÿ‰#k­áY±W‹Ž¬2–¹ÐåŸWeO+s£S‡ÕvÑa%êŸU_S8/u*&œvÄÓ50Þ¶¿Ð5P¿•gf°mâf0L?`ÀÒ혬­œäŠ|Zc“T0µ¯ÊpÄ h§ÛZ\îúAëNgµú‹˜W~ýe*]ï…Úî—¨lMnäÁI=ºewäX†Œ”3›(¹.0JUù´q`|˜‚!:Dõ—¯bÎ섌@²0hpü¯2M³ èKj?…QóyGÃ/„B1›ôGS %{Š Æ Çæ'/dÂN²vÕ'ßé 6ÅÔ\mÇ ãÆ]W+éË æk¬éGÎ(‚q(f@mí`DdbJÜÚî$Ž&Yk]ÄÔL0‚©#H&;«õ5fÄogŸú÷QÍøíd‰ ™™Dö_Qõq$Ãf)gÑž—Íï¹^R%µÂ­èÛ³l‚ñ¾än[î—²“a’“2­ê!ûZ:ý㯬Þ%·ÍzèY,=ífë;Â%,+öþç ÔÁpÎ2jc¤¡oluxÑáô” @D^°dŒó0,#‰ÑN`„Ĭa\T:¥Ç»®qžú )=ú˜üWÓù]ý{Éÿ±ùâÅþÿ7ù<åÿø[Tþ¯·ú ×ÿæöÆ–¿þëÛÛOëÿ[|ÔYåÜìŸwš½öIGœ5ÏÎ=¡y¨ Í dïèÏ?†L…ñ—ÌãÑÌHì1â…5–NäMÕ êèÒ†L2f;j]ØTš ¥Í Ñ3¸Êœó; íªg üuŸÞ‡Ùg,+£È•¡O2ö0³°’O6c·?…áÁd‰Í¨Ø¤Õ8Ê>fCwájNGº+¾$2nbxà›Ïà<‡òÌkŸÂãE\¼Á¥JjÐÀÝQþûwt#B*”è¸y´âV °ù’¸ïFîÔð›“P²©y¡ZxáTcXwÞ3´>QÒ:]!\ÒØÝe× Ö³Ã´‘vñꪠ%N®†›¥a‡¶K‚ÿÔx½ŽË—@I‹ÃŸu°5ZNÁµz­ãÓÇÁ¥Z {JVÏ«J¢þ«MÞwÿ©UǃM òXW æÉ^KìŸtñõnë¸Õé‰ÎIO´Þ0ŠÙÀÑÐX¾‹.À oFôغIwZ=q„YžŽOöÚûíÖž“Æ[u‘®²î7$íT¡¯xÌÔ:WŸHÏü^ÁJëìTÄÁÉ.Ñ2lÞYëô¿*uã®|‘ÜÀ£¼û ¦n<^ðJ‘†UBFƒ…î†4nJE¼ÖÏQR¿®ÙVÅwŸ©†7Ê·È:iX|q¤¤nÓ/pCÁtl‚ zè*)ÞfÑ ?2™€4)Jþljã9™¸Î‡±yŠC™›#¿Ñ méÙmÿþ™¾1¿×Çëw‰òopk¼<8Iú<ƒÙ91Ì%šõ$±%—ãùèZ¡f“ÉxRwY:ŸÈLtsÆÌþ5p ün{×i”yy „¶sÂ<Ìôf]ì î#"Ó® ƒRç¤{Œr8XŒ¥œ’Ÿ¾5‚¤ÛA‹fs ܘ=¿S0+\±x›Y0¡Dˆ ”¥NBò3øçêp±ÂU FÒDŠðPtiUýO&3&jÎ0³Ö‰¨³"Þä”óX¨D‚V!ž‡ö´ˆË‰B™PÌd¼ÎÐô>“3f \íÊ$¢ƒåK /HDwvsðf ÝË8ˆ¬¤pQÙtLê5œŒ3¯‘ׯD°y‰èÞ>÷×[4ž^| .J¡«(”Z³¼X™£Ç’ÈéëÖˆº®˜bû†F’ºŽ›y«¸‰ ¢ùìœÐy˜Û<²Wèƒ(Óý‰ö-,)λ$«h=‹¦¾K&;:®:…«väc•ÄL,ǵNÕ& ;èsÔlp˜öǪ°Š|˹~Ã&cˆW=>Qž η1YÞ¹™ôpX  ñEÜÈE¨œãÑšBæT[Eë”™ZˆkA®>˜­¹ç¥d’Êv«ôvLiåä<áœVƒä´úë¤ÝXÝËe[Øk5»5Ñj¿AxUT-ÕÄQ‹BÛÛoÞR6‚Λ\-äaºtàÉœÖû7—r´G?Ïvö pŽ £ Æï)ÓÀR`þy½+›¹ ™f`Ñ$}s–ëæ;N4„N@W`ó[Òï<¶мñŸwÍsœPø©°½\¿ï=uHˆ²… ­žhEßDp‘c‚Ÿ7*Fž Ϲ.+oA”b2mÁñ‚i Ëç,°Ÿ6ca½×=W(!øÁ…ûÚÖ`‘[R“Þ •d5ôƒ¢[ëј#rykÅHɦчԗT=ÇŸ‚ *ðû(FÙÞà¦)û²dO¹'9чšb²…4Õ¹’¸[”É?ñà\tE(› A{ßÎÑ<(Q0á°„kð1JTŽÃTºb'_Œ÷)†þût9“]êòtb6weðYbº4Du-„£¶hr gµ44Ât¸ZøÐ²* ©» ðÖ×J¹û¨ƒNÒp_Ö-ç§ø¬‘BŠFº‡aëƒiߺ#†7[š¿Ç¸˜:Bg’àíZ=;âg -5‹½Œé$ÿ®EÁEÞb³zjJB‡.¡<òÖh:çl™³|Ù“!WgpÇ›NéÂ. Ì>L2¸g¯kù·uÿªnìY^ê ëô#±Ç~xf*„ÁßV4(ò‡ªg`©$bŽõF,|Ù:g¹¨ßª/Å6ÙÔèêØ½É*AË¿•œšu”¸¶´ïÞNhì·——“ë?Ñþ·½]ßÜ‚ç/Ùþ÷äÿùm>Oö¿¿õGÙÿ¾Þê/Zÿ›[/ýõߨ|ù´þ¿ÅG~–ýïÍînNë_ZÍž2RÈáüŽÇ9Æz࿜Në]N`ËÑÞ»š8íaü·)#Gœ \ÅæÄÍõú÷mPb;÷“Á$áz=†$ô@+$ŽTŽž‹ÌjðxàhxHh„ô(/i©ÜÙ­ÈVTP%Ö´"á I¹’ uŠa«Ô6zÿ]…Û¸bÒJ-`¥É,8éüT™1=sã%ލ´]î¯*fCÃâV&x˜wb—í|VxûÇ«ôJ¼[YéAwà¼$íZD5³µEv—Á4Ç÷XSÊS-SñµÑ§@¨¦ì¬ó§™Aê+M²Cõ¥ñP6¼YÂÞ…¹VÚÞõéCƆР]6´IyùŽÚŽ­¤Ë™m*Øòf5_½Ï:Ï^!œ&R#Žê®ú6¨wð¢zc4üâ?>U©±7vÕ—ãÙ‡Ç3O‰u±°…ªWlŒ"º‡n³ùt›ëLÊ¢|x´`‹§óKµ"Ír6ñó…‰ÃjË#n“ßÙµÉ?/°ÑfäúaŸŒ,É6¨Ä¶€&M'«ßˆ'@f·Mâðhõð|µÎ ¿£I†Ymß¡Üðºü,xÃ&Dnú¼¿îŠ>Ú—Ñ&?ṵ§þ1_­¯Ö~¯ýŽ·ÓÊá$UŸ+õÚïkÌ«ÿx=øÇk´mÝÕ~_ýcX]÷ûüy0«qëÆpŠ}š`š)t=P6AÞÑ=áz>Aûž—yžöPܨä@ kKŒó0듆žÀý^gB0Š«žyµ`„µ9ϯØÏ±¡g–µ©ËW›tkÁ:×êA­Îd^ êw%«Æ£ðØ©µ}Ãû:í™dÆÜ}fÍí;û°’•¾[Oè0SI€‡èr™d7Ù ®õxWf©L·5HóŸ¯åÌf3oнŸÕ[u“V ½²|£“bä©ËÈo!#OŸpòÃÉÓ^+O£ùa¬<íy¼¢š™‡™§63ùµ›Ê*Xv³mÖà¤Iì¶è¯B|¼º²e÷UÚ¤š‘MŠçýfÈLì žuæ¸À ôåùÚôØÚô§(°bãgõ¬¶EWj &°,ÉÈÆ Ò–»Ú“SÙ¿jo±g½*ÞÇð3x¿Ó騎?šü/'øó]ε‹\@–8€ÿêð?ZivñT;âìÿ9¯ç\…ÏáZvD†xÌcvŒ¿AçèÄà9ß@4ü¿—f_ZÑ…ª»Ðún< jA‹>o½ù¥&¸äOþû¬…žÝø7i÷_Ô#¡Œ3Ââ®)WŠGpT¸×óZëÿißÖ®Àö«4Ÿ‚Þ=Sö."`½{Ú ^>M¾Œ‘û_ãÔ(u‰U±WµýÐó©ÐÖ`n åp [a}ã6§óÌ7%ß„Nyß {’[bË/qx”_`;(pž_à…_¥`,BÃ’*õcXꪛQW#$Ÿ)‹³ð¥}C†¢DàÑÕ­ž)Ê1£«¦0ÎGpSÓm–n°æÞƒý H/´¨¿A{„~·è}lk?Vþ‡É1"ÈÇq€ÇÇZάՃFíχÃg¤Œƒÿô™‡ V’w«¥Ó^!©ýg‘RªX Ð+åDá¦:f/ µNÚ£‚ Ðqå¹29xÓý(šptuZ èà ‰¨@a‹¥-¬á3Tn(¡Z¾ÇŸ"D¤¿ÿȨï½L!qûð<é×糋̅ßãwvÂB?¹—jDJÙéƒ$=ïÑÿuÒjÐjâ~Ø¡ªq&±“P7g®öØo4µ H;aɈ„ñ½Æ\Âl²Ùè$ÃN—„qy¼]gŸ)ïÏAýÕAãîVëv‹z ³–é+o¬=F=BúÜú+wïj#û¯"2Æ«zY½ºZÅb2•s€yîá>â¸Ñ <óŽõ´ÄT¢‡|8H[êi‡ž:Ø„‡»tZÓqiûìíÒ1ºk ‚œ¸vèëú îìæAÇNÉ Ÿƒº&k ÿA‡^¬QUV×ö0±r^ eæ¥ÉÕ3°TN”¯ ÿžŒ?¹Ù«½Uá¨é–ùÓœw‚{˜¢„[é[±ëèB–öùÃ&Ž*@—þ⸳ª¿ à…Êüç³Gt`,HØ/ö¸!=¸jÖ>@žUE½ÙP‚ˆ–|·‘|[ïHò• ¤šAÝI¾$|Ž’pç1%áÈÂsÏ%À|’„SYò#…׎ÏW7Q*;>Ç$ ¥ï0T°! –”ymAîÜäJ)œ½åHÏ`|De0D)ÁØÔ·e1°ŒP¶´¾¨8–báw# £¦ø„aÔ“§½ôjä$zÀÛ›–íN{Ŭ×åìRÖæUv¯r… ®#î:‡Ð_M2|¹¬d¸úÇC’a/5š¹rڋʇõWE²á®-ò(®XJ»\ ÑyÇó½|LeéfáŸÈà%DRÚÂ?±zcù1–‡é§Xt§7¤Q„mDù|ä˜H¬I°2ì”EX¶Ú\'í4ŽeA[jâ&˜Á½µñˆuJru¤ìûÉ®@¾Ì®=×@1¾¹Y‹¾çŒ,iYm­½´>ø3,8ØmíVCþÎNµð5ùÍÜ“ÒV/E§“I w¦®8Ñì—ö3|»™~;rTEíŸv¿]MGÛÑsHuS]u?—+U9´uO9Ð^uÔÝ\¬ÇS¤âÿI´ôÚ"ó¾VlÔéùŸ…–LÔ>ê›*¡w÷â[~½«Ý­â†k–Lr¥8DHV-Z6ÁjqH$W2|Wò £WŽƒ™†k«®)çP”ZL5ÃŒ[TdE‰ô¢V2¿œL~Ôø5¹®°‘”ˆÂMÜÌ{7.ƼþÛ‚SÛ~ð›ãÕÄ(k ÖëéÌ}±Ÿãû/‰Mæs‹fIôÑž7+pØ®!4z²©áÓ<•¨ÞÈÍ8ˆä7=;«GzÏ%-gÔÿÉÏNŸ›ç›|óUï×ÅY6süÇ[È’–(«r2\LÏÖýCh«€cš]D&ûa¥/òÇaŽáÌvŽ$Á$BéÉ[绥ÿK~ìøÿ«ñ軉ÿßzŠÿÿ6Ÿ§øÿ¿õÇÄÿ­Õ_ˆÿ½Ýx±Äÿo5žÖÿ·øðjwãÿá„Y‘t:±¸ÿöiû—š‚HìÂÛ{9£Œõ ù>VÈÿñø#®¹?â}¥Ùià….aW„ØtF)jâ¥ØÏ.ÅÆfMœ¼5Η‹¢àè)íM9Ô€ŽÒRp™4ÁˆÕ “KB´M¸ºfràÐf‘Mgƒ»~%]êQÜq‰ŽDž€ElPs‘DйÅX9Òdõú’€ˆçSt+ŽÎÅMýqÿa»‡ îu÷U0ôH·œbæ.g}XG×LXàƒÑÇÊNµZÓî´A×L U]×ÙW†h\rK}.*BA¯8‰j™”\&C`±1‰¯™pXíã$û÷STû0ÜuŽŽÑhs€"?Ó®Uÿx-øœtè°>ð–Ç'wX£Y6áDƒ×<(XˆÎÞ‹ä†cO¼Ú]ÿÖ»óŠH9t)C÷ä}³³¿ž5sÝ?X•ù÷Î_Ò¿â8ßÅ‚)ù-ù¿ˆ«E©t ô³» L“ÓÍoì LàSS` ìS2Ô®ÙÃÍîÃÁ%EÕræ²cDîx™ð‰Ä³šMCyú$•€SeûÇÚ±JeA‘¦´”ééÇ5qõzEѼ³É‰ó~×ÿƒ¥cÏ[ÔH«ø4ôèè_}ð;éšÜvɉt´7ö.A¶¿îVÕ†o_ibZv æï_N °‚SÑ+Ã*¾Ì­Ç7qêcfúÉàjÆL¼Ìt¾{­[ä îÐàiÿ†ø!m‚Hf·ý†_RÂw +ϧê¿ÈQC Škù–OèŒÛ G'e‡Ü—s2Í‘P|ÊàÆ†M 9¸R¨Ây®"©„ OŽ½Ð #’JÁäOÐ \#ué\ ~›ÌãæRøJÞ®/…:!гŸ{ŽÊ&FùbèâiÒÅU‰.aÒ­Íß]vM´+B³d;ü|ÓŽ¦[ulïuªäó,ÇûÁ¢îu’Kº=E¿ËÁM}ôþH›«nUû!~·NI’´$ê¾ëžÃ´*ß¾ñ˜I ­†þ¢ZjÌ›æ'Ìà´ƒ÷W”]ºŠçt°—c€ÒÖ=µ)4#nêNK’Üi«õ6êˆÝzu™âχkî!‡è¢²r«g%·Eñ¤°/ÎÖ0„û ´}8ð%ódB=ª9ðï?ŒçC„|äÙ¨0<žëÉ}O •zTì¾9Ž8 s®òµ8~%L-ä“¶Îì3¬´áŠ KþSè’•ÁÚq5’ÇÆ%ðwñމ£ù Kº,^¡ 4ÉéðM),™-è~ó)ðy<'‘GvÉCî_S?‚T_ÿrÚ(í²±„ïÜܾJÎõZ¸ï+Ág¬çu!!ï[:W‡‚F¾Éð\¹úÀÙöFÓ\Y,¢ˆ/†ñÒ÷$¶^¨ìÙNYÊPgP]k5Ø‹®u¼!ýýtÔqCbWOS;bØ>ÆþY7Úag‹'‹ÖÁªÈI6ЃUTE{æ­®“»[Qhgeöl¯ÔѶÖÛ†Í2¤+{¤¸J*4…‡Ç|éÏ F'Œp_¾Ê]‘›4÷¯ê¼ÕÖ àr·ß ­VrnEg PißUȲoj&0T=EvÛ}—êZg -p®ö«ñuæX8Ý.ì®jµ=é°$_ä¥íï¬0þ˜Í&Ëí9*´Q&óÎLJU( ¨hôäµÈÐ)ö\”+~“ËÖBbŠ2ªå«w¼åu+í*Z'ñH¿Û­Óoª‰cŽu2iª™‚óÉnƒHš]cw!{óx[¿MewWSýåC6®Z¹„÷§ÓùŠ8PþmÜÄX²`»ù)±Ýü¸ðv£ûHeø¯Ôv³b¯Êƒ¹øÓ·ßu&dDlCiZx².E{s²ÞBÒdÔ7Ýcç#ìœl·´Ü&ƒÙÙh$ÂÈ#m4õF¢zîù;š†Ñ¦Þ(Üi´Dƒ;M³r wúÝnž~s‰ÆágèIòžïIáÙÿ/¿† °¤ýãåËÍ—zí/6¶Ÿìßäódÿÿ[ûÿWYý…öÿ/·7ýõ¿µñ„ÿòM>¼Úûÿî£9D<D±@ÑG›ãPsŒª©KÝ{п˦b/»»Ë†5øÙ¿‚ló¶?nû£šø×ø?cñvpÝ'éÇ&tПBýÝAv(e¹në¹-²}~,ìK„PÀ¥‡9AØmÊëãêlÿÚ>>=j7Û=ÑAM¨×û;»Aì>’ÄC] °V$³œ ù? ™oç1ò½ _c&îÆlÁbóÖõàsy߈¾¸'˜Xå׌¥•à XÔgb1‡ ¤ãûL,î0aùi(Ÿ‰|‡‰ÞÄ®Ûæõàæ'„Íyö¦…Î8°(~¨ë½×:bê8Ê$èÚnŸ€ÐȶF¬°ŒjÆø'fj&Ìm‚ϰë¢Íýë±±#²‰Ó s U¼…z|MYhÙG¹ÂÙôL¤ÛÑæ5*!&hZÃñèGæ6½Ïä³>ü"êÄ­á€h(w˜é¿'³ õ…'Iý¹õÍ“ÓÉ_Ãédïä|÷¨%N»­fû¬}Ò)ç€bÒÍÛ<Ã5t©€ÂáܬÅÝQüý±ˆy£Ø4,Ç””7 Ö›ërxn¼Q:ìò¨Î(–/ŠÊgÿXÎ(ß/Ê“3Ê“3Ê“3Êã9£¼Ú]ÿŸî>È|½îNçÌqêtßžÙŽ@;ûü+üàS& õG¹bèEøµŽ{ðÏ~«Û…oé_å3‡Î;‚ÈŸ††Ø(IË8çðpó`ÒHvx^,â‚óèI_ IÕ2ú‚þ”¤§N?Yé¾ùUW³µÂ}\È ÜáäÊ”¹Q^ÞÈè„“”„úcæ Õ(ÏÚȦÂsIN #îhß?M“÷4oçï¾h“0¤vºÆ÷ÿ€½”èâ´@×(Ý€¿tæ®%RwµGÒŸèÔŠ‰z‰É÷{ҵ϶YBñ,»'qd”x”&Ù \ÖÈ7ðz Å.Ì=“o*ê}Æ}{-¶óîÑE.l¾ÓZ’ñ„)t…Ë#Ó{ŸÛx dÅdÞv[¹í¡€ÔæcdNëœàŸ@ËÒKeóä¼Ó«)§>7 ~ëüšîcëô¬&ŽÎzݦð‚ÿvö1Ïþhв(]&»öh ÔM?Ö<¡ov©IÉÃ$%û†ðSÎÿöH™Ù-ÇòÑ] yZ¢ ç4“úÜgH"4ùn˜Mêa&4ë±¥TóÞlþÅs¦¡_dÛ/RÖòe¤à~Ém?…e©$™)ÛT×6‚]º°æÐNœÝý³¯‚3Ö±]8qà¢^œì¨\PY-¬«~]_ýÙ<Œ:)${c5–™ß:>X—iSìÖÍãUçWñ:"¿ŒÆ#òÑ1˜vì&Š“5q?œOE]7“ɤH¤n¨q*6Uíé™í/ÚºŸ†ã‘ÙOøÔ99îô{”\®óë ±¾o`qzþëÓ}Ü››šwAwÜN·Ü‘v\.àœ¯í¤l|~¢¾WI i'£ñø^ÌG³Áµ4÷÷ä—5AÑaÔ0ˆ8E κ]L{ËfÐÔ9œ7]R<¯‰ñ=§Ü½°2ô~ú7ùä5Žj¶ ÔµÖ xg÷ß¡Jš®S å Âó•òíÒâv“«u"‰§¸žÇ¶ÕÏ2ü­Q¼ƒ1ü]Ø„­£ÀúP‰ Ê_Ê]±Hg„¦„ù°oSA5ÁnV>\Á˜©*%§Ç¿ˆ‹Õüõ¢*Vé»]Øçð}§%Ìt|ükU]ÜV…±É±hŠþ¡ÛÞ¯8¤¯.šš*zư*úø2Ô7Aëf ×»‘’ãfhâå€Wâk8Rž—tØðÖ"¿ì/3àdÆ×}˜K¾ßÔ¦öþtݦdj+Ú É+æW»fÜÛ6 ý£ÒÃâ´!g³ÊÅö0ÖBøjwpXc‡þã‹CÕx˜Ã‡5ß7O×°eyOböâ5 ©¼'qa¬åä‹k[ÉÔð÷UË‹òpxvH>”Ô¼­Dª´íÈ—üqÏ¡œTS<9‹lż2ŽÀ ³Ž‰T·ûí¹ó¢(_œæí¡ÅÛCâ-ç/s¸å%G ÙaÜe£>z ѕϨ¸ßã™âÕ™ô›U òË7SÂåZ0 ±J„Ü*o @6¶[­Ö/zuj¶¤üwmáçÌ^Ït ÁuBbŒæ™Ò˜ÀÓÁ­áõªÌc/OCªã€ö]Ò)NxûSq1‹eE4ªºèuv5ÉúSV\ög¨dF½¡r{…}±a]*5™ð²ln¬¢ÍªØa ¥.RïNрħ½3]4Ûpº ÈÄ÷¦Þû“óS²ðAOÝ!$I_á£ÙjÏï¯Qí©ɸÉ#|Gÿ¶?ÅÒU;æØSw|yØe'~¬ãÇ9Õ;Ù'¬Ó½vj1aÀ"¼âZ,Óür©KAŽ®zYv9÷ac#Ø,þí’Ö<_´ÀÌË• £.¿{ð0[g‹Äkïu:Í0w)ŸrUwȤ”‚{H¾03V"’ʪ’SªV•¸bÓ¥wŒè’²¸RȯŽiA·X ûg„¡ŽRú’’pm*B+ǶÀ$©•ºÈ j<¼Ç:¸ð€·‘8»XT<ã!ZU”‹#llAxÇ’æ4Ø )™#¦J©Ð[fë‘þaˆ#dg Œnà¾5û²6²ÿyø¿[õ­­ú‹zƒðOø¿ßæóÿó·þ8ñ?_eõ­ÿáúßj<åÿý&^íAüÏ…–ZïÎ[{…q@9B-;Hð`?ˆ=¿rhp¤Pç7øñÛng›%û­sÒ=Î+ª_lžŸ rêg¹ð£Åð‹ÿúÆsèRcÖyËþkŒSÞ=r•(ú©Pªt•³´Ò³PO^³´Àø¤Ð¢Štï»Ëâ°+Á¯•¨UEn)àff’üÃy¥+tö’ŠÜßJÁ]Å*bñ[þj…Š /ZL¨€±‹GŒ ;hÌŽ+ &ÉaèO©A|±¨P"-ŸEº&|­:¨ëWê;WAh{^ÛÈ\À‰L‘€<3±IÎØP?ÖÓ;×Näˆb‹ÕËÊóñj±ò–AS_"¢°Ô­¬ÒˆŠ‘šlY0˜Ìä^,¸‚-]Z%ôb“§©ò‹ehîËl8þ„.nLæª?Í<ÏýþèÚPvŒÑ­Á-U  îláV»eo +œP?Dûáäß¡7‚q6>gTÝ%´ch¢šxѱ‡0»ë9?Íf3Â>¿ÆÒwxX~²|iñl¸Ï&¨„Ç F„t†s‚ %ëì¦?θêþÕUvOÞrÆÐžx¡†A7]ö ŽÑûþtª6RT̉OW`Þfi„˜ïóÉOk¶ôÉgY¦DÂí1³Ñšc…q’ ‘\(>²|päR‘‘¸âœ~@Íì¤ ½Ú1Äçv ÜnvŠWÚ:c¡n&}#äæi TzQôbŠ®<îŒÝöÙ/tñ….Laç θÇ”÷ ˜T:þëZB¦;Òv«ëÁX49Ĥ°‚ñtfjÈ+ílÓ­akØÏÿ‚êú“ŒBÓ¯uE]4&ì(ƒBÓ„áÅ °Ú5R¡]°àÆôN¡±Q~n’F<ʨt®(ŠÁ]6üVEà.|+Šâo—½-u+¾}ÉøÛ%Cos¢n— ¸E1·Ë…ÛŠ0â¶çíèÛ%oí@½‡ÅÜ.n»|¤mQ­(г]>ÄV<(Ê6`Û*`»`l­°p(ºØ”„æïÅ€ÿ%ò> r,IÐ ‹tŸ!òÎÒ1/èav3³ŸŸñN¡‰t˜Hó™‘·%>‹sÙ5åÏáÀJîŒ2:û à ™ýg?«ªœà5¦¦‹q×HÝ0%­)ëy3[~]èât†pðp°ÐVío˜«äúb%Ó@Áêg¬¼¢‘Që ¤¢ÑtŽ"¶ ëŒÈWúrÉÚ“0>D|êP™/㑹êÏÑ ØÍ7é ¡fí$›Â\0øúSš†‡*ízäV ñ4%\­œ”=&à1Íù¾Z$Ê ƒ‚ÑG˜´À,v¿Uó‰f ¨áÝ÷z~¥«µÐVdÈæ"vizÁ4kKg»xÐÚÊIlá.¯fÉåÅbƒ‘"£ë« TšÉõÕ|Øúj>|}5Óë«™·¾šyë«Yb}5sÖWói}}ëëÐ%P!D0ÄR˜bYXˆÅ!Z"Äb`¢b)(!5Û"žà¥›]  }á*sŠE’æ)­¨àJECåì,Dü;¦è߀ðd4²–b£{ê4ªJYÅu÷>¦C~ŠZ‰ õó@"ü[2\¡Ì\Ã}““á #dÕIs…÷€ek³›`?²YSÄëÛ˜\ûPÊK ×pb8¤\4ˆN P¦–¡l¶ì»L†#ßëk¨ejFä| ™ZÊv£™gÇF=˜¡Y&XÈ_3 Cr°á$¡r 9È Zî.Æo€1ô$ÖRGOGG³EÛ.ÅN¦£æ¨<)øxöå>­ã'ph‹gUVчúxuü:ZyÖh ¡S¨ÔÛ6.Åû}§+kº+5ž¼sè4Tƒ*娢8ÿ±?Œç‰¿Æ§!:‹™PšQzð‰^Mª“¨íFýöµ«RP£/­ôxNzsУùóù·ßù'“ƒzå÷Ú€°\è—jÕ}}-÷(é4}"Ï ³šÄëì³ÁŒ¡I¤ç¢3–ID+vÉìÑ#Oã«9°z„éðv>¿gnO2¼Üfx«ECOïÓlq <Œ€NMCŽºæ½AíUÕØ©Ž§ÓYѼÙåÒžf8MRÄ_Õ çU7¾m;À^Ý ²áµV2A)ôQ?ô&  >‡ãâÙ ±l¦³`†Žá°„›žñ9š¢9py˜'úì N­àÜÁÆ€d: tÇ”2s„êÜé°wõ¡¢Ã}­Ý‰›Ý?¼ÑYN°×Õ«<ü¥š_¥Dü¹Ê&È<˜ Rj‡òÔ7B¤Ÿ éœ,§é7³Ï3~°û·“ š2Y’|ÂØÆL)Þ¡Ý>¡ËŒ‡2»V1hl¢=HŽ-UП³›Ž<ãæ+ÑÒœUÛÑ“aÏÓþDi{Ê \AÆ´'»ê“÷‡u¶F[ëÓP{3n$^áø—ÿùkõÿ­ÁMä¯è/VÔNÇwk(“ìýdÀ™d¥°(…˜_ÃÅQ6¶²S“Ág\hj‚êÑÔë\î‚á ÛLPœT° éÄæw´ÇýÊL7Ë­™x‘Ëžx/E;çê/¶©£7ó ^¢µIœŽ÷ϳI_ÉA}:T¦‘³™îÿг9!ì-r@'$ÍEOi5Õ§tôL/FÛÔ8¤½ô‘dK9&J ‚iµ¦¥çä×·÷øù_òäW—¡Øù¯O~O¾µŽm¸lE»Ò¿‚ûW_”îa×µŒvçŠôÚ¬2è߯FÑ…jºàngI눯"6e¿•Ê\°±‚E¬•¤²_Ë„æ‹H6ä…ôµ$"þ$ÙPF‹h¹ÕM3BRe2|¢ æØ6̶íØó 3ML²©úâ0Ü yÃq6O&4‰[^©LEšžØ™dׂ®ô‡·ã ,®;‘ŽÞ™‰ÎB8Oã”üÊ'©w¼ALO¹Z°=Ÿ'Ö é×QA ƒË6ôÞd!¢£Y•ésúgí(¨ô_‹ú˜·Ùd¾saöÔ<“RÂÑÎoGíN÷â·v¯ÛÚÿ‚ «â•xÿ!›q.våÔhDݹjy@Bå NØËrÛù a3Ýb$›@EqÚ‡'ÁhìÉÑ“`ÁÊe+ÿë~=uªƒÍÉÅr<¿fkF9mÕ®'BpöñG:ú~‘ƒK”®×P_=TþÎÒó6~ô›††,f£ƒÉxDµkóÖt~?žÌ¤LœˆöŒ 6Á  íE§E6ù(gÇÍ|6çÙRÍ o»­³·48Ž…~âÖïp¡’•¬×Ì{zìÜ‚¬þ˜½‚ެivÎsñn€(íp‹[ôw=k‡L\2ï2úßð„GÁãèܼýOèŠÌD»ê,»ú0ü!#4©7ý9ô·—ိÈU)ëwêÁ([X¿]ÂbøÐ¤A•¿AþK"IYˆ®âI=Ÿ`¦}ø’·34ß·ÏZ46q&ìû·Z”`pß}^~hGìÏfÙÝ=á &wì›ó—V›_r䣸µ5XÆzíÂFz*íâ.!)ÄÕhã?núÃi–Ú¬DE5ܽwY3ϬŸ ª·4Dµx(Jµ(TÍ(Õg.Jõ:߬pŒŒ,`ÁUÚF87 aC\·q-IüSlÐÄýÇkÑZç .Â6„LI°Ñ¢Pâ±;KÎj ñº…¼”Î÷f™²Ÿ"©Ì‹5à„E¦ÈÇol—7'´á"0†!4˜Ú×^=ÕƒW.ÿcºq0 tîx`¬1qHFôI¼1E‡iʉVJE’ËûÀªojŸ²áøjÁË”¥˜ÎCýsO3l+JT¼à-*±Ðšb¥†-„©á‹óÎj¡tÝpC€,"|U´]:,&Tkéu×i”rí(µºjîºØý¢¥A§3°×TÔl@CkuÇéK:b©Lÿ,BÜS)ér©nº-pU/3ðÚ2ãx„ùaljXQiªWà)úæÿXÜÒ÷ªá‡´²t×R÷/—­°`>dpwrM»é^˜còëãå'îkE0õÜ}­4j=Ëÿ{­ýó#r— ú‚ Æ‚‘/PI§Gb‚|?]O×#,ö~u¿Éë›ÓH)ÚWó 8´±ÈFQ™h‡ÊTÖ *ÛXßÎ/âwžÊ4L¡H4«c«‰PjÏ._¬Ëk]ìrX†´s{Èg@LÊ,Õû^÷ü¬çôWj©žÓ©]²ç²ÆÞq«Z s²FÙ9µìÍúOäiÐ1h•º ÅÇ J>üwOÞ·Þ×017ýt²:D¸yPã8¿ßzÿ:mÕèR)ÅñÆßÒe;´Yæ„nï¨ËH¿õŽOsöž£#ùÍÆE8ÚÅ<:<-ÞwO:oÒÝn¿ªZ<…Ò –³²pkª‰óÎYo®Þ²=‘[8oÉSªèiú½3˜3Mý>íìµbÑï‹æ‘ gﺽ¼®DH¥“@@gÎ~Û?Eý7 Ý>Ú‘ðN£Ü7ßR‰Î›Ýšê1Åù'‡¦¸PAº‹È|pº3m‚®ÅxXù¢Ibݑʦ¾0 ¾T€&ÖA¾¯_éôüҤȀÍH)×ß´ÖÃ=Èœ€EAäm¥ ¡ïå{í¶Ð ð ­ž¥éYåm<6v UHJöŽ2ÞÝ~ FœÊ(±’“) ­ß—¼wr=F†lTÒñvx/!ÙÛ!ÇÆä„<ı²6˜ÁDZœÒe_¿O¹EJ¾©æµ· ÇÞãj.½‚ PÀ%r”ë¾~;§óTÒ¦8hš8KîÎû1èÏ\uŸ€‡U²ÜX9Äõì*Ëw½Œ¹¤Ìrbyð×>›¤pam‡2íKMA;MOìyÃß,ä ŇXÊ2¯H8 Œ‰«r½»¦,KfaÙfnY'RÎ ²_±Ž díZŒ'™ÅˆR"É®YI’dƒ#ßÂI²¤ÚÛ‰¤NJfBŠgNJçAŠ'NJ¦AJäMJæ@J¦MR%^ø% ²&©r?FÊ$MÒã´–-Jš¤Ë,Ι¤Ën»ëÃ̰dʤXƤ‹Hʤ‡dLr'y¹”IJ;ëì‡{'É$JvªæCÄÚ·PŠ 3]É>¹PLµð>Û§…ð™Ê–Œ ÑFœÂ¦Îi0_uc,Éonº\ÙÆn.ÞXuÏ^œ»y%ƒóþÞ³zóæ³´)‘ù«?Î'ÖLÖÖ]_jrÚ3Ói]ùiùÀ9ù éó«üT,5hb¢P©F§_ɹLùr/_°‚)g;öÎ%T¾BÈßÑ^¬–‡ÖXÙf]G-cÅßñ6ÖxÆ"R‹¿ÏÚñänêqÝKíÆìÈÇ|w¯V Yx„“ì¡ZT’¨ÞÀ X!ÑÛÑ79j@Ó‡À<•Î-¶Ë(êŠë\¨ŒXÛA×&É/íIã»;þ GâÊrþ´KæˆR€ú¾>¨bëélõÅ_RQ¼S—JiHЦ!ëTA™’0]ŒcêÁ—:øêü‡õ«J’±^•i¶ÛJe—ÒÝE¨Ø÷‡Û=¸}ëaP:Üîß{"×Jõ—T+Ôû:9å¡v³b)nªEÊ›øÉÉ7uKtS÷•î¨Úþ¸sã••¦ŸŽŒLæZ•³hå9ïŸJçËrPeìL²µ:­sFtµöG%ÈK|p+ü“šÜ-ÑäoÒ˜mñ„ O¶Ó“©oE°÷g(©øù4¢sÕrÂöòh•¨0qmÜŒîE™‰Á¾éV§*SôRÞyß …ðìÒcDJe_»Ä%ï /Gî:¬{ÂmŠÜ™qîË»rG¬ŠWÞÓK§ ÿ±×zSsáÁ=Wäéfê+ÔSÖ‘+U¸ÂB׈¾K\ó|ó¢ÓàÄÍ}Š,u4ç@à!=((à_•Wµƒ*<¨P’ˆ¬)Z‰Å2Áø¦ùˆV@ÝØØÇJü}ì0ÙXyÂQš5ïåxÄpÐp<Ÿ~qÁF&st©â‹‡êŽzá .ú”aŒÍxL0¼wx~…N}cÑÿ8\ øF©ÎmÍê‘Êá •š²k0êâ?©ëÊU€ƒëU¦3+Zve7û°ù *"B„½Ñçh”Ü- }?¥-À®ºpxăMxg››Ö0÷Œqë„ݸ„öç[9¼/sü©þ´ã¯´Î£°\™ã¯È2¤kôæ)Ž¡t^.x|&û¯Ï=RÎÂÂsôAzÚ?çÍ×=-qŽ–É÷uñ¸ ¿¼ÿkúñÏÈÿ£òÕ_Ö_¼l4ê˜ÿ§ñòåSþŸoòyÊÿõ·þ˜ü__kõ­Xø››þúßxYZÿßâëÝÍÿuöK%/ß˺*…‘m0Ùž®' KŽ$ǪʤN˦†ÂÊK U³žŽ‡ãIÿz,ö2¼9I£Ö5ÆJgü1£‹Ræ­kN •Lù¤x¨R?íÒý‚ÕX’¬¡ÿ ÌLZ‚(ÊÆd%_²êÆ_­EN„M³å!PF¢I–›Eiè\% L`‡‡ÛF“Ç,㔸¡£ ठHß`á9Ìù‚þÝ¥xÝÎÚå—5JO ÒÈ.öØþ:£ =ljse„®‰émCâa¥8ô© $£@q²GSpÜjvÐ# :y®:x$¡‚ ¬–Ð1ôVFöª¾ÌG¸O¾‰¯s-ÄØÀ½=WMñáô“àùN ‡³ÕÉppÔH÷ ÆW Ö‘L4f0%WB^xN~²úô öØ9*ì¼6…TŠüü‘ÊOò‘Ÿá#ZÅâi>òs|D*yH¢ú¸x¶»‘,nŠbb;»}\ bœ L `F†>ªÐT²˜Ì˜ïÁ&¡}¾~vòA¸ØÁ˜ H…bN3'h~Ù¹ó‹éÕ‡ìŽÌ*À"¸—qÞB‰Z¨Á氽ؒ·¨ÛǤ }-^ ¼þé(s£Qâ9ª¹ûÊï ;= ú£XqÿYuÿ ^˜×·àŸÆ6ü³ù"¤±Z@c^ßÄâHcil94úõüÓ€Wú›ðJ ^éo¿0/Ìñ…9¾0ÇæøÂ|[Ñè×ëXil"-¤±4^09¾0ÇæøÂ_˜ã óšFil"-¤±4à&/ûr¾p‡/Üá wøÂ¿ Hl"‰-$±$^l9,ÂÒH_¸Ã°‰ Y‚ªc†N¸Þ]ÃxžàT¤HA\ò½ógÿu¤³ê ä¶Æ{Û%åÉ>a0 è‘„ŒGÒѤ1Ñ2âÔðÂX­áÑFI4pÆRF&¦ãÞ+äŠY>$Þ‹Š_8ÈòŒwÕø'ÜöÙýqâ'õGá ý¥ƒ"Ò‰¨ˆtÔE","w‘Œ‹H‡^¨Àˆd|C^L…‰oèÔÈý*Uö'×ax˜ŒQƒÎ~‘…\§nÛý¶T¢93ÞÊ©æ)õ.j§eÝ”Ó"Ý);ÒÁ`6‰3ÿÊ»³"˜ðæÓd@Kx—e« ×ä­›t±ó°> Ózû­d2A¸½§W‹ŒRÒXtöËâ¦"×þóù«¨€`ÿÙzñdÿù6Ÿ'ûÏßúcÛ¾Îê/Zÿ°Ô7^†ö߯Óúÿyzö0É^-âsÃOeÂs’®](á8ä§IHGù}rØg·ýdXÊßÖ¥ñn ß$·­q̱&EU2ÂbW†Lt7½ Š„ÒþƒìZr|³qA‹+ªá¾Ñ+gŠq hÊŸûæ+ù3]\·“ÜÿˆW Ù.5*›œö RIál ÜÎÊJÏü…¬••·ú ¤óP4ÐQSj£kÙ°‘cÏ‹¶O¨ÆÛK»Òºó)ÕŠ•÷(áĽҎEPF­ ¼gÔ_£Ì×T°ëk´TÕ×íD¤-÷Ù*“qªä«HM§UDÔPP)þ̽ò!0R ¥X}%TrãéÝd@«•ÁècE~Q¥‹zo7B¨„*¡*ÍM¨kjÆ 5S„Þ– ¤ ±íÚ¾s)p‹A×*ˈœ ’†b±—€‘u7ƒ/ù†Nž[u­›e#+w´Å^ž«Ö£]JâHÒØñÄÆ­\Ùôá¦ËË; ¬»Ýµ½føíõQ¶ÎÔy€E!Ár]A—÷°Wú†ÛÍNôͦ~·<)¢DßÜÑ4e¾žK–ë…'ƒ©y^¼Žöý…äL+5ƒöiÈÑ[‡(kÚcäʳ‰èĈž»^ #§³Nj8œZ–…ùÉOà@àé\ªlBe=ý"î}κ.öôKº÷Ùtr=ý,™ÉÌpklBIÁÒY×¶õ8>Òp¤yê„Cíùz©‹d‰Î©¿õ-ê÷ù;ó9ÈvF)%´ºŒ¿«ÒüÙ|Nn¥LÏZù´4—\ùûréïç»c«¿¬_fléÕ‡­ýYàæ©=ܱ!]Ìʹ³ÒbËþçRnŸ6™„hÞ °:\r >J‡eŸô…µxͶ¾çí4¼‹Å¦äB·W¹@×|ôëñ(‹ÞP:c¯H¥?üÔÿÂi»l9¤CI‡‰]˜1%ñšÛjJ“á|¤4à×A‚E“…ÇÂjÆÓ™©'V‰ÒÌ6ƒzH,ÙË%Àª¬2•Æj™d÷Ãþ¯Æ”cÞÖ’h¸m8òáÏœWŠ5ެ˜p}ö½ -畲‘•tBÿsÊ2£sq{w44H‚Ý}V t4ÖàKëÌ0»™YìùÙHªFÉÝJξfÎî–á›Ã#ÃÂn|Xܱî/ÁÉH¯N\„]¾E\f2³èG•ÅX¹7.1rZGs‘ñàk«YÑé©fþ€4—æ’ÒLH35 ß°PTƒÃK‡ß5¡.Žú¶ø³÷¶¥ûµn´îÄ$"®Õʦ¢­TIÚZwìVÑt«p4b#C3×7 ÊPnh•¡¼‡ÒdWÄ´j–¡¤0äĹhŒ£útGY(8e4Ï;ÆÄÕH¡$v™¢+¸î¤¨-›‚q® 8œOEKŒÒ‚:VÛè¼ñ¯„á,Õãâ&ÆÅ:S 'ãbyçîÀl}ˆç]šëœ›¸ˆÙWÑ$ƒRX•÷3nŽc° T«žýYÃAÇWl¯Ü8ëj-ѼúK 'ÎŽO2c¹¦JAƒ©Õ?w=“°«T^}…‰g‘´Dþ©U“èûRfõ+Ïf>ÝÎ-“gPÄ#޶u=×?fxøÙT.*¿W9§b¨s ׬+†Á˜\ôºç-•õÑu s|bUÒ×ç÷ªÇo *îZªZLx”nGƒÙüZÏ3‚€s2@êÓ Æ¼BýZãöUÚ¹,FÌ&"éÚÄÖº7Ûd£dÃVô½‰~{ ÝêÈʆù¦ï@ìòÖÐÓ!ž€þ‰à/,â. ¯:ˆ—™9.ÖžN^ì™fq¶'M…ç’œ@Fc¯Sjš|qö]û£/¶´±ƒ;Û.oîwý?à†FtqZ Ïn€ÚšÂTÆE‚ÈæJ¨Ñ'…/9”Õ«î­ÕÚÅø{ ýÌN¤ªœEV·²S}N?Ï«lžÿvRÑ¿¤VgªŸ?0º»W̧2ã¬jÌ;Ldj6¹º t8ë_Â9sd’¥TÅ>ϪúíÞØÙ¸ ²L/ÞÝÐÏKÜeý‘ŒŸu6„‹ZÖÎK'­;åc{m{W›ò|¤±ÅíÑ )áHí²ñÜHÿñº5Q5Œ7Žßïòܤ [šŸlEãÃÒbß!°´CySTV©2`?oä3jÛ”áä•Kì—×’ÀÑH\a°îÐ×nÑó ;‡)a0I‰f?ih\>ÑÈOç·xØÓÐ>R\¨ÇcôÁšf³™t´¼Ç`¦Ò_×è†ón:¿œbúð.¥ÛŒV¹u„a;û˜Á|¨¿Ç Žnl¯‹Gl¬äÖ7Mí¬ª4u'ÒÊFReªÜðOûóƲÃ=£¼«œ²xÄKßÊJó†§ð¢ÿ!²l#͉JV*“yì¶ßtÎ)7EO½n“žÂv'/Úâä=¿~úË›îûš8;>2å%?-È(Z.Ki§·+ßOçRMËimé€èæÉé¿TÒYúI£Àœ5?^:ÍOhQ“í¼Ã>Z`õÎ.4ƒ†4Úãdˆµ¢éÄOóÄ:½Oc;yÍðà…–y¡D@ΔC5Q 2¦éG[*4ó¥Î¸¾¿stÖZ7Otf@÷‰‹¯¼LêAñÐìƒfÐ2bÄiFÄ>ëßÀ‘1 îæwΫ¼páUܤž«(»äFS—‰’Wù ×M& æ½õ…;°ûXw M;?¢œ !u5)zÄ8óØ_BÞëÍHrÄE³#.œqáüˆHøà ‰Ë¤HÌË‘N‚œQ2Np ¨Ô,‘å “[&Ûш.Zl¬ š/¶>ô›¤ã?ÚA—J<÷{'¢¾¡QçGEø·"J!ÓÇU#ïR„¶ NWë]¨†?p€ôÚs/q쾬SbtÇ RzÃÕAöhF]¡s«Ø¹UaoQÝĦËm§D½"jD.ùr$ÙŸ›+ÎKÞ 2ĆbÁÁm,6¸Í×~·ñ¸ƒ»õ€ÁeÁî‘W}ÈàæŽg¹ü«>c^ÄSœŒÕ'ôcùÞxØì ƒ¢Ä·&@QL Ž d]`ŠçÏ =V§^P¡zƒ*zÒè)™­®òæmù²Á·»£’]ðm pm²Ý¯òǽ£Ü‡ÐfÝl0Ýå°¤€(––ã“ÙvFŽÓt©$”ùÇ(ìš[ÉD,üÂæ†h'¶UøÀð´k2É*mQ]Ñ_áë›æ]{ÃÜJï¢.3Ôº—ö; |‘î<ÝN7ßn{3ÒöíX_lDZYÕÉ«Nd…—ôöÖ5tîeâÈ;¨«Ãá` ×LÝ›® u¬âºêøÓ™–ÞƒáÆÚA-èpåÚÁêJtSO¯7 È—B¨S„ëzéò1 ­¢=‰½Ì¤ðéê4ØôŒ•¡k¤v ʽÝ>gÝ­Êž…}h¹Ó ûIôÇÂ}^ P Õß;|“™_c"ÎOz¼‘Ld±þȳ†½­×jœs’»#£&ôå ²¤UˆˆT)íìžUhÈ#e¡«û§\‰L|#îô€è³c87Ÿ?«±SCRP‹ñWÌaÈ.ìyH ÔrœrJ2þæò8–l๓O%’¯‰vQj5žl9bîZ DÅÄiõ2sü¹ü"W\V&QÜrÃÊ\ÌGñI瀵b1œnö²‚Õ!Y·HÒäz~Òäö£&M.š9›Ü È!Qb†D憧§²›ñF5#§ùþ”ÉÄÁçîfôh‰¤íi›J(ÝŒ¡œØhÀv›H­ ÌÙŸ‡Ï46+dÄ&¤¾$¨QПp"¯ñçSŒ3ŽD¬…©[^Zñ°ûœèt+.Ýífw?¯›éʱŽz@M倘àC‘¬äÐPƯÑ_{Ñ’{º•–qâ¡`µO½HÈ­oäJ¹¡¤xaIŠXZ¬#¯ž¯Âz¹-c("®×üþ\Þu°†mD\ŽN\°-9W|œs¸o6#­¬oÅ$iY×vº))žð= oçŠèòV•Í›„Y;n¾vf%my¨“ÈIy‰ëÊÊÜW×’‡yÔç#¥…óð?¿ `IüÏúF£±¹¹Eøðþþß7ù<áþ­?þçWÍ_ÿ/¶_¼¨ûëkë ÿ÷›|xµøŸú ÊqSù¤°ìi’ºæur¡×Ü”®@ƒÓòÖdzÞ]lBý)TÜd×_(EABézn‹l8ÒÓHw-àÒÃðVí6åõÆAUM¶‰mŸµ›íÜ*à>Îäm/š¯Œ¸š´jægz^šU EÆ8.«Z>‘N~÷ø¬Œª*øµµú`®*ù6W©‘]Ó:»FEFÉ"œ,Z±ø-µ`…+ìCaµ*.71£“–ÑÁ|U.Ò$gƒç•‚pƒÙS²);Qc,6ê)¦ƒ­ŸÑåÉ‹öˆ¸Fséè¬ÙB€b2|ÉRÿ}_À¦«œ³oY–ÄT/2™üI%»ŸVewëUÆ©›ë ­ïyU1Iiûn;ûôc_Ó*4ìïšòap¥¢2®úØk…Çè¸n‹.ìU¡…NÆ9˜@B[xÍÉ)÷·7g0„÷~F-“5½:³‡JNP›$"£äf0p!©ž!k– ß; i˜I»ÉFF ¢„üØ÷ƒ'{ÁG³ƒñ|êuú=ä'†0Di {6@¯nÁÃ+IÐO1‚Gò~ÊðŸ2ôÖ¦€Üþ2rójØÜ‘*í6e­|ZŒ‹<ŠXepon qÔÑOX›žÈäí=˜M³áêšQºXDЋE c“Òêëk[×c!?`ñÒxÅ’Òß±X, ZlM˜…A‹õ@" Ë)V ¹X>àMüTb¹k Ö¸»øsH±áÄ28ÄêH–W‚‡âK2—Â!&˜'}²Êh, «ë¡xlb=´Q„b&ƒöÀ†U{†_uXððî<úúóáLTäÑ/ȣߎÚîÅoí^·µÿ[›‚Î0ƒt } ª5kÎ+ÐF1Ï1Í@€·@§Ï±ªö!yí1j_Ò¥"RÛeûj§d+7 WêG˜´R!­ÛÁ³FJØJ©«µâ$Hâ‰[¦{!QóLˆÇRkkIÐìGÀË^*{)”ìd«åÑÌ[_Íë«™³¾šOëë{X_Ë¡»Š&ãäS„†î¡—Æ@ øóü|ÜóÔsQ|^â‚”Æ<‡=·Ï 1Î}`sen)o`šûã^ˆlž€3׋¢ÔÐÎ[œräó}žñ]»;Éú3òµZ†|ÂØ ¤Ê`< õ/3J6É“¡@ƨ±¥³ úãsvÓ‘¾üÑ|%Zš³j;Z`2¬óyÚŸ(׬‡rWq”]ŒŽŒÞåÔòÃ:û F[ëÓÐq%°MÔÅs>²*¿þÏÿ[«ÿo vl"E±óz;ÓíªºŸ  =èëÌ÷)íý¸¡e3ñ+"Ù¬ìÔ¤ÇöšÊ3iü‰óÙ £`8HÃ1(«+!—ôìó;Úã~e§HlÛgâ´Í²8â|DaÎâ½¼MÐ ¢þb›:z3Ÿ+¡ò ãýól¢‚©®úsæ=¸ÿ+Îæ„°·È4=¥ÕTKœÒÑ3½ümS_àöFH `Ðe¨WI&ªØªÑŠ8'¿Ö^ÄÏÿ’'¿¾9FÎs·¸IL<¼-E»ÂY-®¾(MžŽð鿉®_ë2ƒÙ(ºPBí9\Î,iáSĦ¼…¡Âs¬“iÍ´ˆò‚µ’èB³­-XJ²¡8ͯ%Ùñ'ÉæI²ùS$gñ>‰7_]¼©ÈH¼ÏÕªt>«èb}ÚEÒyáGnåÁ ƒ¿„Ò’ÖÆé®:”¤Ò¢S0”–$¥UâŠ×+Ç(®­PŒ¾‚]Éð‰‚ ëÒ"éØÁ;t eÒ‘ÝÀH®dXµŠù¢¬L<™Hejâö™Š2^?/°]Ë®]éoÇX\wv¾jxdv&: ákŸt‚M°BN ö¢Ó"›¨àË›ùlγ¥š;Þv[goi>4p>K+BC6ºõ;\è£d%ë5lŽÏ{zìÜ‚¬þ˜½"D@˜„ˆåÈsñn@ °_ÜâV¡p Ì™¸dxpÈ ïžð(x[‚·ÿ ½! ¤/fÙÕ‡ÑàߘAN“JÐxÓŸCÿp{àD–þxHYŸ¸S/ªõñÛ%,†ßÈ’$­.ü ò_ú%”…9rS!©çÌ´_òv†æûöY‹fÂ&΄ýaÿV‹„¡¡"“¯½Š(b6Ëîîi a\XlñË‘â×Ö`ëµ é©ôµq I!®FE§Yj³Õp÷ÞeÍ<³~ÂD³IÍÃÖJÇŠ´yPrPQ"?('=s“ƒÊølËòŸ‘Ñ5¸JÛ¹0hXÅ™EÛËdý§Ø ‰«3†üþ³hÞÐ3…:A-2Žd˜0d¦s€Z„¢Ù@Îôà•Ëÿ˜îGÌ€;ØkL’}ïDLÑa𠬇2Ú†äÀòh²áz€ÃŸ²áøjÁË”¥˜ÎCýsO3™ÁاÇO v¨X©a ajøâ¼³Z(ÝÁ´ÕË¿ÿðUÑv³˜Pq¬¥Ô]§Pʵ£Ôꪹ.†ÝØkªê‡Ù±ºãô%‰æTª!î©”t¹ÎT7ݸª‡g ‘{òíQuTñ•9u¼é3NChUÃie鮥î_.[aÁ|ÈàîäšvÓ½0Çä_5±*¿‘ÛowvŽ~ëtI•×®É/šÇ§ê‹]ú™¦@›!¾ˆDœ?$¤%¿OS±*ÛïnñÞÜ:ÛïÝ¥û½‡\¿·Lœ»b’߇OïûøÓúðóB•Dè2êa•aE?¤×dŽªm9iK¡vefõŠF™9 ͤæ lêþë¬i/ß›™i-öÞ½•Þ{™%âµ¢r.ôefµñ”Õûp {^ ÷“ØË¼½U Ÿ28W)s¨ˆp[©ŠîQ†•Æ’½n⬤nÍÐJ(“8ûkã£Éá{"@f¤D•õI#í,ðm2þšy?ÕiNŤ§ ÉK¼ÃØKŽ \1éë’]ó»Ð gŸüî’€>öäŸïTÿÄšT, ¨ÕEê{0S“L(Cy˜ÌgŒ”L·H¼”•i‰¥¿²@š2?qö‘ÀÙI%1…¶Ã.Bÿ4v½zc¼då}¿r{IÈJôxG™×™ÿq~Õ¸—pó?>­ï>m4ê”ÿ­¹Ý(ó¿=ÈUæü¡/ÿñ¾fÞü¯o×OÝù_o–ù_äâÙnç<}Ѩ$Ç‘ ¹¯­ë¼~á´‡ˆuÛìI¢+ÊÊþW5îNÇÓ›áå4ÙOÑÎÊ XSáafzÃ]ÓM"žû/šÏO’‹I…$ ˜)WJ·§ô„ì{ÆëðO#Õœåƒ,uN‘ m0‡œ$êÑ„&d1AP³/,¡»È‚Nÿ…x¨ûT:ƒ(Ébr>ž^ü C.ÙE"è(ÇhJ†uvÓOé8i$mЭDUV~ÇÏåXÐ&V@שQ@0È$N ë1`ܳ¡ø•Û=§^ o?l?PïòˆûÙpûÁW,¹Œ{º–ºÇ£ Øb™U¨sß,àl›i’¦Ê»r–Zâ·ʧ+-_ÎØ¿Ç/rPóÿ^hÔük5_Ñ‹°„$sk?ó1ÉÍ:\xòÂÀäf%>Fytr³†Py6D¹Y:ùQŒl(Iph6²½ÿeàí]„kojãz S`Í}¿…‰üõ§Ž®Ë#ü!ŸªZÓfôéît®ww"¼g¶·yŸ\´G·ñÐNÈIÛ¬d*ádk¾‹v–‡6_Kúi{Ïk¿mŠ }b¿ÿsnL1*Z#š!{{õ¨„gà ÄÁ Á­ûÌ­Ö‚f.k§Rþ Q˜Ì.>¤×ä® íMÖJ‚¡3CB'‘›8áõñy‚ÆÑ]TYÈYeùó¤.¢ù¥$~–„/!yŒ ëö û‡W`Q߆øÑÜõëØÈ©cQoâãXGëØ¶êÖð£E†M(2܆"Ã]]`X`X`±#ëÖëø8ÖÑÄ:¶±Ž¬c—ëX`X`X`Å®ª£u4±Žm¬c뀽èLR,p®±À5¸æ²Š&V±Uì`»Û‰ði¬ \ck£€ÔP\ H­È…T¶Ö•­‰ä±8`Õý7·8ֳᮘFN®sB¯MÉy~tãÕGü’ëQUc:rx4e´Vø„QŒ›(ê —•ìb ^D«tÉÛ;E¯æýºwP5½‚·¦#tÕö’^Ƈ6´% ç×£øD|›ŒWgKú§†j  Už3ú>¡â~Æ{Š{—ô«É`°×êâ¯ß[Ð6©3ïP.óêLîL¢z°•yx(E¬Î¸!xYMC½ÏQ¼n€¬-àðóVE;×q¶O™çš—ãç9Òå9Æùžt9Žqž'éåv–ᩦÜãLSՒΰÅ-î›ÁÃòf1ºø[ÂÂÊ.bpSËv{ÌNd»í ¾ýÿ$ÞQ~(ö’U1wãl„ÙÏ•DT2SY/AŠ00–H<ª™F;EÇ5ªìôêŒüf4Ø3Ž ÂgÉ&<@eAãj™¶`)ñØ×Í´ö ÕGÙ‡£·r218ŠÐ Ç˜‰Tlœ†WWé…¡¯H$„ÙTQMhG£;{D:‹Ù÷måFÝ>æ^»¦lÚ&G!¢ŠqÇ›èãåÛ}abOD8ˆCGƒ”X¿IMeR÷ÍçkÂõCZyw@û+”!„e!”ÕÑük VOŒéŒ£«û&ý™Vï_KO:<á:Þ<2Yéènòú÷q÷‡½ÅéM¼S…Ý‹é;DGZÌSðèü¹™ÔmJ‹çi‘KÖpºÇüêˆè͸Rp?vt²)]Åg€Öǰ0ô o9µŽðÃÑ[×8O£‚í¨›S]Œýp!ÃFlàAhû¨Ë!Íø j½Û’WǾ‰¶¡{o·CºÙð«BZ‡8­Æ@z¯{ûñ’½n`ïB(ù‹sãüÀ86 4‚û»säV54n#’$:i`nÓ2‰+É‹3°n ˆÙ_º‘]‰óKϽý…l*u®ä¦ž¯Ù½‹& 8eJI*kU 2 y÷Éuáw8¾I‡—_y«{…N!Ö5\5Ýþ‰õöÈ;ð×ö–+•¢fjXjïÓJ]^÷uYöÿ›«Çbÿß.íÿt•öÿú2ìÿ÷4ûóæs»¹åÙÿÍÝrþ?Äųݱÿ£¿niÿÿ‡Ûÿû/¾±ýYë³´þ—ÖÿÒúoÒ«´þ‹«´þË«´þ'¥õ¿´þ—ÖÿGmý/nüÿ‡Yþ¹T@ÓïµÉvÝÝǸ§¬ú© ÎÞmY§3~¹Q¿½kA„A§ ÿðïv5À#vøê¶Gøù˜Üâ'åä—о ° ‚{¿ÇÉzzp|m7±qö° êÍŠ FUP(ë,Ë5ëÞwàFÑmôpœçNa—Ëxoa·Š½×ÍEgñøûàø¸*-`ßôû‰tºˆ“Exc Nûƒã¤SFé“ñÍ}2ú/¾½OƾJM¡Î!@åû_*àòQ1ÔHéê5½6Ú¹iâ‰îΓäIÕ:0Kì¬BÆ(A;¥ÿrË*9EŒeWV±|RIKµ“,²,dyGª) ²šÝF²‚“ЕbÍ T¯. uA©6š^_…À0¦YGh0ܶ3®K… ižsßâ¼CÝûUm"‡9ß-=ï"𵨛1aP#¨­o$¦ Y»-'¾äÂñI<7ó›pOîá~4ëÿrÁâýž'èÅãßOôzçu$è~²íÈ ÎLÉ*þLN×w‹x4qÑ\§¦$â×´"Ån”«;8Þ8èé<·1 àx9q?ë¿„<¼±?²äQróhÃwæ@Y­@Oçè³eà(s"lߤ…#øÙ ŸMïvƒn7èvÿݤÛMºÝl:Õ¿Äœ:ð‚*Uƒ’Ë_¦“©ÀŠÎK,j¡áÐsÁ_VE*“ƒ5¿kÒK„sçd˜ «EÊmCå˜ugÜÇ|L‰Šã¯ú(L$)²j1N‰e¬l  õ¨ÜsÉ+_“/H¬ñ(ÅŒ5„ïóÈé4´Ÿ×&6çxó~o¸./ÐKQN¢ÓX—ŸŽÔ²£&uO¡_PªydkuL³ "#×_/ä¸ä±+pzàüÀý ú˜µI¾{<›çhúF¼—2½U{žføò%…’ç"øtË*Ä KBî‚‚ˆ·väkE×A¾<£ÄCáËö#ô Ű;¡éOˆkùQh¬L¯¼¿BѤ€w¡ç^è?f¹ Fœôø*àŒ¸qÔÞ¬û5ß´qt´YG ÚfèrÁ'Ça±­©ŒÕwXÔdõ+’' úÈ™×)-«š(¼’ÎÊ@§…p‹VÄâÞ¶(ä*[Yä¢Þ–`R#€-á•Hç9¢¹mAÎ8:ògÉJcg?7Ç×ѽÒ€;jÚ¹©®GêQ®¿fØa5YÂg•d&¨Æ[–jÉÑqž^¨‡ÙÏYgB%1VD¿WGJš¢Xb Dä-|ö¯M|Ûcâ)ÏǶ“mbøÙÚŽ¶Ÿãq6Ÿôû•·ö²åku_[ÑŒl[QHøÝzëTl"íM?~uÖY©Ù¤œ•j½ß뱫z§XTñ àwáeèó ž8b9Å'¨÷læ) iØ7ÅÀ‹1ÿ%‘È€Œ£¶¥zù{Z_C¦Éœ²ˆ&oÈKþ¨¡§Ó‹´3P0¼MöQS* [쩾ɧiùY*Îd±ÃÌ6Â~ 7=ª§»×lD=û©þ m(äÜ"•‰fzÀ×éd?sœTÈF$ uù—LFlY¯mUøWqXaiæ±—vH¯Óá"¿zqh‡.Ú–CÝ&R·Y{Jo[Ê3 ³…´Úº@{¸#ð£èpÝ8fjzJ¨k#éîÒ1T x:ø¾Úù4Ý:±åœD)ªX&¦ó…V JºO§C EH“WW¨°UÇÉ2uœ˜uÑ(ø€ÒQlæeÈ‘z½óH5°0Çé§ádnŒøúCd“ØÈŽØÑ¯‚éž¡¡a¦’<é¦WsýI»£}åïf¼q*ÎúB^ ßü¡.\DšâH,¶ ‰b ¹Ö ¬õ”çer0Ä: z¡ÅãI– b½±åV`JãfDPg ʦ¿™PÑÙ¼èdò;þ;’–ááOV–͇’–6) ¢ŠÊè<´@=& ï†ÆÍ¥iìHI¸"”ñ(K˜îLÙB„[Zd!l5Ë­ãáE•J;ŤÒv1©Að¤+°PîlgJ¥¥Þ­¯‚GËm“ê»w³Oªï†TÝ@Ì|6èÂÞi1¹”§'ÆæÉ9ùg£ŒíŽO9Ѧ7¬?{®æ˜AUž`p¶ÁOTÒªÇâ-(žÍ[H»§Òü£(G®l›ô6‰V±Müµáºà‘~óü£Èi~æQ~P ¹§ä—Ó”sÄñq9ŒgIª;;Ó^ÖuüìÕƒ÷h•#úÍ0t çÏŠñxbžäÑR"NÏn{’>+¸ôÏÿXÌ> œäÕñpdo¡Žã ôu¡oà—ÿ?û†ñÿ;ÛO›ÛP AñÿOËøÿ‡¹Êøÿú2ãÿïgöçâÿ7vw›îüoì>-çÿC\<ÛÝøÿ¬üHŽ{¯È W~l¨€½—­~kÏ á!ÊþK§’e_Ù„Q÷‰(#\á÷/ /0àÐÇ™û8†1B©HQa *ǘ¦v’Loàãúú©üK‡ñ0yŸNÒ›áØ"(óPŽ<éqˆu¯°ÞX@€F(Ñ‘Âj×-O£ÁÇôbt5Jg"à’÷³ä‡ öÔORŽögV¿+æùКSø” UtñÓXÙ=¿ìÞtò×â½pxá§Ð‚fÔ€uD8˜Þ\¦7Žkð?Õ'ÜR/q’RΪɨ–ÖªNSÀ3Ù&(™Ó»£ Ë@+ìÛ!¨E9¢ÕdhµOyïꉔøàaD³žàD³–p,D³š,p,÷ö+Û[* gcÀf5E0Ú–`ȇööÖÍ÷p&‰fz÷· JIÔ."rˆÇ‡†‡á7zKÃ#Ü>Â7Žv7s㜗‰;î¾>ììÙ/ëö^Ÿvª"cc†êBg¸¯öA‚ÿ—ŒÖ ½ó6ËS$?¤–og¼e Èóã3Œ+ƒlÛƒ³Gd»|à«È©rb‹Ýh5:ÆýEÅÊ•idÏt:¥DÚú¶±—pJRÊíï8Òåbö#;î#28·¢WŽ <õ§§É-QF,Äè'÷vñ½ƒ{‰ïí™ñ½HÅhˆ/?ój_xö’4”›ŽÄíWX9]ÍøE‚pšôéš«Ëwª ìo>ߌÄ¢ÍËé;«|¦›ôãM:ƒI(´&ÜÐ^..È« T¡k˜«<ßq\LFs6±êZ õŠÖCXxr9©Ô×`GÑå_5˜úëðÝdS|‹Tu-Ÿ?`P]:¼øÀÛÜÀ°¾Ô­0ìγXOaŸ~=½„­Î…Ô¶ Ø¸„ÎŒæ_Åêì§3ÕàéuÖ2pv­À¡ÞfÀS°«-xaûGy7 _š­F"wt%Ѧž6}>ÒŸýîóÝcyHbøDìkt³² ƒŠz->i¿8wÌ—ïâÀ±ÏÂñ”O,óîÛ<Þõ;‹+Ìö·¨ê‡\hzÓÉæ‚Ühøø„V¼¿ú<©Mªcx€{Õ¢«Žõ;B[^5CM*4‹PA>|BœæQ{¥DŒ Íh ²”>K´=o:Š(ó›Ìë!“y)©a<&UÜ)b²yÆ”à9áÏ'UGÖ }xù°;M2lƒû³uö¿ô|ø÷£ÁÿÞ*Ïÿæ*í?ô¥ì÷6ûóíÛõ¦—ÿûéN9ÿââÙnÙÿÚ­W°¨½†ÅmÐÙ? õ¥Ó} ?^và+Xíè W¼³ÒòWÜò§hšqÆ…4fj“)¼4xà0ï¬ÂU‘Eư²”A™‚L\3ãwz“ŒÓ«y’ŽÞ#ñðÈ}fà†K{ŒŒ"#úµÁ˜^º{Ωð'•f·NÀräž\¤ÊNÁç²l”€6v X÷`¨ÓKY÷æ_?’ûi¬ùÓ‚z&3_5æšLÑØô¾ªŽ9®¯ÓËÑpžŽ¿þæíD§Â%^cì#ý íœ=ƒgÃëÏAø<^‡c¡Ùâ#šw.Ñ2c.N¡#]é£1ô ¸j2Ž éÌ·&o¹ï:Ox ¾*|dþÌ5›ÂÄU ‚¡ÈûОóOö±*”eøÜ¥Ä»»´&Š~’¬Føþ‚Ø|4ºÂÖ%[¿á­çuYÝó-¾õ\¶šÄI’k˜Ì´I:¬¤ø“ y3´FйcÃ,»iìÿ0Lÿ™ ÿfÕ›o;«ç£Û+{qP„eô”óᬠz^:=¬hpÚ?8Û ›ÒLSžÌÓ‰D&3jñ:t§Qs¬l@S¬è>l+YÙ¾=¨°¸yïf¶ƒ§ ô;‡/OÏ2TFÿ}orÈ鱚Þ_žáý‘.IÊE oÚžKÚX#‡uMeѨzºOLÜOµÖ´Ã‘ZJ¦»€‘Žož¨›†ºïdÕÑ^ÊxGϋޛ5Ro ›ôrL€žE:|BÀ£â§ÃbÆ3ÏÔ %Þ(@õy|šk…;P«µæ@ Œ~gE~¿†Ž"—³ùáÖà>m~¾‘O9Î/â3yÜj(Y*E5È(xø:9EK‚êA[jÇbGbÕ˜8òÑéàÐ ¶Ì:DÌ;r÷@{÷Äþ.ûabl!ŒÍ]~]ÿN%Œ¨]Žj.ÆU½™`àp¦Ž4€‚m4–ážó÷3ìeÇûwn,g[!£YÃga]€‘kù6Òg m’â ?tmü•›»¯y³„#@)fòΈÌdšÑSµZ­Úóm«Ï$Û¦Ëé36Z†o·ñ¶aúL•­*]Î,X(ˆ²eÕU ¥rfFe>bVï Ú‡8ÛqÀ@ä˜Ý­§;WÄ%ÂØM5 ÑMz•Þ¤ø—©×ÉxªƒíŠ./ØŽcíBf&i\ ˜™”u5ÃeZT)¢0¥ü1Êâ:[ 'ý‡!'ÈtÌS"Ã3 .¥ŒMþ“üE•ý¥˜•Åð/íÅQè1GieÉÔ/&ŠjÌ×2›Ã;EM³³m–¤-›é­ר¹'•¿Ö‚ˆøg¨Å¨ˆhV£b²Lº}£f»Iæóºq^-4/¬xP04NÔî„%Š3H!Á%ö'p½§g^v"O¸ïˆº–°¾p® 9òzxIé€{bÝÚ°Ï'±·Æ{[ë«ÕÄ[›_—É‚lq$¬ø³Ñl.\,",5dƒÒrodµš¨è}£«’œbR*Üÿ‘(Íêd¢ÆU’O¤p}üSßÕÏÒ]üwÚz2‡ÜœòT…¯qмˆiÒóùªæœLëýx*✥vSc¨ŽSD°%±0¡/O•9"ûa†6ΕNHœ:~:!F»fh(‚Øìå%”,ª¨€ž…:deC‘ÚðoßTª° Öv¨fŠIÂÁ„¿Û¬ðPò—L­55Û› œè ³0®IþNa*o™X1 0¤ëûz¨þÀkªŽ7u½ÅÄß&k5«L’¨_œ±ž…tÖ¶ TþVoOúÊPLï¶Nÿ·Øüc”숨ʌ-𪋮àɾȀÎû*ÜÙÍ¿ª(0cÿkŸ±´¾­gævªæùWX š«®»E´îÁ^÷Ek/«b.•5r+ƒr§¯ûY•q jç¯;·÷é½Þ{ÝËqÙÃMÿÁ»=øÙoqä5^Çûeñ©Õä°šôáÿë/Ž[ïêâwƒ~wzY˜‚T q{'“AgÐkÁ¾Át6 õÖLÖënëx若|LÌ×ÈœÎUùXF/¾±K« ƒs/qãßµçɲaã°Û(êm¡¼DnåmÑ-îmÁÑ‚§" q{ãfÁF»FÝŽ8R8mµ2êÚ&Nm@d{?Þ¬‡@­×{v°ðš_oèüû4|tBQÆKYOßV0Ó/¬]ŠˆgÛ½>æä„FûæÇcà……&‹1YEà#:¶s"ZÁŠ›¯6¸ n}KŸõgé"æ;%pk*É6,‰¿oàB ¨0 4ܵp~T"'·M š¥>.f´Y¹N.§ŸefÈí°Ò¤æCÍ»]‘È3!ƒ°S 'ÚÄÖ® ^õ2 ö´³p²ÞåVìny0q;f"Éð³OéY/—°*…µF{ØÆŒÕ„ jžnùuðý_·BC$ûb£„nÈb”~ñÈ‹rä¡)P_Cô¯‹€~TâS#yk9êã!òsç<ò׉D6 ý_yôoéý³ê¨ûÓ^dÛðû‚õf`<Ã>A Í#Î{´ÔÙ¼I0­W(öºzåîÌé„ö¢÷O?ŸÐY3>[ ¨YYCRg*BÜþ¬?Ÿh_TÖô´G=kV„ ³øÛuKƒfÕÐ~é_÷Eë®P´ö¢K°Žn'_³Õq0e2]¾úò‡Aw ÞuÙí(âä"xÌqqÁwîÁTËŽû 6£o9É 3{'²8‚Ž›è4¹jaèØK>ŠåTͤÍÛ µÞ¨I/kеê£]ÁÆ+Ê­`e„;\ 'Ýð=ÏÌ9…âžTö“Ë¡á/&—éÍÕxúÙÃ%ØC ÓD&ï·¾úhÓ\NFƒà‡DÈŸí]\/´²Á×@ n¶ê»1S[j‡Ü¢ljh{âî~ÅÛ6?¿oŸ7@X¶Ke‘ñ×£<ݲÛ÷bÝm5ñŽÿ-Ò¯å}ßôirøžÆ~žàî²"PÛêÑÐx< å.yˆºqß d_P&—ŠLñCAtŸ¿úKïÄ`ô6^lìµ6ú‡ø®p…ƒ/£92 é¼tøi:£–«Ñd4g¹è€~¸^ãr\Š)艣£'~Âb‡ÀÀì¹ÏbÁ*¡ÁDZ÷YˆYÂû^ú—-“r=Ð…9ˆgpý׌áDZèóhóÆú :ãƒ/op5àM^9å÷KznÝ,*˜¦ÛÖkÝáàfFšq˜Ù ³ `ô:ŒÇ‹•r¨FãKK—ÐÖ"z©<í¿=°ä­éR-Dÿa–ô7ËwéˆÇYw°n\~ƒºŒhˆ¿GÛfYÓ¨û;2jI­ŒÍZZ¡ÌpêÔ…~X§Î%.Ëÿó²ñ-ó?ìÔ›Ûpÿ)ú5·Kÿ¯‡¹JÿÏú2ü?ïiöçâ¿<ÝÙÝvç?H€rþ?Ä%t Ûÿs¿AÇ„†÷ç~59¨&§­·oèç 'ŠZ ´Y«?n'P¨¬õñf4F/Ðz²ÒE1^¬dzF“>©ïìÅò ݯðïñ‡ÿt5Q}á@‹â8ÎËú•î7„ã̃‚ÁAU(Þ-: ÿD@ §ç#e§¤ mò.@™ù‡)o{™lß?égh~7ÒCdùBHçv ¶r ÛŒímcz,’ØÎ8i0“thùMºœèKyŸ§ÀVKªºFö0d)¨@|íŠÈýUó©xåçW¼pxã$r¾I¯Æ©„<$Pž §ßUœPT¿Ñ'F£#í$±FíüÍÍçæù’CéNË%‡Ò{mxLݑȦ•7¦ÁfØ´ÊÓo=ßÖM÷XºéJǬ<ŸÕëѤr âÉËŠ¡˜D‡ ˆü&>ÿX®èû{ýœ\uU%[³Y÷Ú3½ºÚ\¹M†x<0š·Ú”öuoÏèd³™‹úÉ:tÍ{òZ9ƒâ<ˆt·íg¬ôHÏ`ÑÉ »±G¦YAe°%΋[±Í½6ý$«é”P›Ž‰ìg §ñÖÃ\­_Êw7×u÷mS¡HXBU³“Qŧ;¬á’à ’Ët2;ÊTj¿°~Šrȉûr nï—)ZfUpÊ †ÙʼnoOjýŽ}Ñý3¡ˆÃwè|éNÜ»­þ‹*ÿ:|$`z+¹ çà©ÝµGðñÊÁÁ×úûe=‚™ ‡µP¾£¾AžúG("LJ½Ãñøµ,é\hV¢yåE¿‹ÉdôaDþ¸Z%qÿ¯íÒÿë®Òÿ뇾 ÿ¯{šý¹ø-˜óÎüo4KüϹx¶;þ_ýý¢þ_]ú_½Kÿ0ãºÿ0&ù?ÁM¬¿o¸‰YèƒÇ›ç_7{¥›Ø?ÃMLŒfé&¦¯ÒM¬t3›Qº‰•nb¥›Xé&¶œ›XÞÂŒÈz•Æ5o}&ÀWíöµ%t8àÆ“P¾óÑ54*‘S[´$wjOÞƒL²æ3Õ"kГšAZõã˜t‡Þ¼¸–ØÁn¡ž«oôÖÖ{íªð=èµ-–¶Û~>ž^ü=ý/­Ù‡ öq…hóe0PŠºÉ)Œ'nBf3Ðë.¸¥´y1+B¨àøâbGÄöËñ½’ô21L‚Èf5só ,3cE"U*Ty¿L“ôæÆÆ<½†î”nÒ1yÛ ö=‡@ÞÐÞ;± ù¶( ‰çJXú~ÏNh¥/aéKXú–¾„¥/á£õ%|ÀŒÁoÞôÿÈ8–ÄTÁt4y„§“¿÷_½¿ÿÀƒÊW¯ONÉõá¸W-ã$±×†RP&…õ÷̬Å}É[ÅßÇÇäËØîï߃/c•ºÕâp}…»­…Ôè¸zÏ]{Nö0ï€ôiä÷ÒŸOø,÷ ü•<© ÃÁ&¡/^ Ì Â¦ƒîž ò.îðÑ1;!Ñ*²¬z”¸åmÈÁ›Ú¦v¾z¬êYj³ù´Hl Õr£ÍwPu¿—ñ¥!ÊñUm7èV)}I ¡Ó ÓÀA¼+h·š RÏkŒxd yÕz‹(¼e~¬å@â¶Þ©.†>q&çã«ã åitqÆcIèù–Þ; p©÷N¶w­rú4ó§ñª}œŸ×h9ûŒ{UØÖÍ>æˆó‰^9´ÍåÝÞb"?`ªqhšæv(1."ž7Mõ㊡¡`̯ª7Å}ëtñþm¨ÞQ㉒¹9FRPJÌm±˜‰dæ5LfPpŒÇºØ£Dnãçu¸~ n-èÚÈ¡«û¼îÖáAMw+ H¾!©h_ý³$—[,äp$­‡n¼ã rì½ÐÅ |egAµÞìÕëÌ—}„V®’Ä›ðP•V<çK/ÖèÙhcr¾I¹E\³–c© ë™›Û÷wTä‘¡µûIš^ Fþx‰Îyd§™[‘®Ö,¥Ùñ šqF |Åð™¦_mÏ1QxV…ÛXLWÑ.k¦»¢0†³y’¥—Ö’Îl$¬YþV÷v8#Êk£]q69'‡<ø5:hÞ òÊÄÒ ÊÐ(ÀþéÙsø±™œ­ÿ;ÒÍäÝú[Þz:CÍ–ŒÞ”ͧh¾ÅItj|jnbˆ üW¸×HèMPH…lWP—L6¥((&ò¤~üŒBØEzç|^¡ƒÜp«¹ï´G¶jQ¤‡FV ÞØ›~üZt7”œA`ÂR4MZî `Ç~˜ áˆDÁ¥Ù±²jÓ—U i{$}o‚ΘXB{Šå'—w¥%{pßQc6게nL~ÎøÄ†G—cñv–:«,e˜ÒÉûnÒë!滺‰(É ¶dI§$S–XêX*Ÿ©LÁ–Š¿Œ»®ö÷­ëjyÝÁeúÿ‚&öhüwJÿ߇¹JÿßúÒþ¿÷5ûsñœÿÛñÿÝ-çÿC\<Ûmÿ_Pv²¹o»·ø›>ÜÝWªEéþ[ü2ÜUæ=Ð/†ã1nS÷z ´‚}ãA j_ðÕk ÿÓäEzžl5«ÉàèeÍ4,•ŸG/ã˜ÙLK.uBßaØ`e|C/ÔÃñ×™þÉ+8C3“t†'MÒ)ã&½ÿ ùC¥Êž\Ž(/”v’UÎÈì'`dC¯â¥#rQÀ§e†îqN¹¾Ò—U}ž…÷ºo…ËÐ蜆Jåè6†¶žö_HßÛ‰j4%c>ŸÃ>ÊÉ-ÌGÙZ[ÓN‚^¯°¯c£™~§òú£¡ÄS:¢ê[˜¡Ó|Q"í]YîÍÈXaá<áŸ?¤.ý±¸qý6-ûx“þw1‚}˜›d¼Îù’_co~Ÿ›Ü»óD›„;æ{î=µ÷žÕøé{Ö%x«c2mä'ëÝõ·æóÃYœóî;wK0‰ÙiÇ‹J˜£UµæÙ•ð›½^sv2s£–Γª?1³jÁzxJ8‚. Š “,w]c"ê)øs%<ÿ$ù–€‰Û^ïI„8é«g<$Åq8ø­¼ÁîÆ웛׫f$p®‘½j÷ÜÒæ5÷ÔRYÈ;r‘­¬ïªÉ«Öà€Öãýluzg=´cî4…ÿãnï-~õ6ÚZäsÖöAëì ’4ƒ„X2…ë=§n½¿”­¤ÐQ§}ÌÛìuï!wëZþµaÍ1ý3O¢™˜´( )¥“ÈRÇŠ!Èk˦K¶mñ¬Ÿ›U<ÓytÉYå³´^áÓœ„,òØŽmQÓ½_"§+,ÅœxsÍír]1$™™íÕµì‹ÒV¶´°o@K2A,YVy/‰™KpxK$,Î׋ë'†©ã@jÀȦrÕæõP3) 0»‹,qñï=1z-˜Ðm,IHÃk äÝFh„ñ¦œ!~ö"i{PÁM´0±mÈÜ;+)Ì"›D§5‡ðû0©»0ÜÔ 1þx1žÑÔ=¤`w͵ŸËÆ‚ BÔ ¢ ˜ÄžÀvá<˜Ââh ¾õW0¼²0ë‚æÁ@´¥osZú#÷B-íM'› ·µñ¦ÊÑÚ·²µM§µê“(ÔöõõÓ¢Í?Ím{aJGÛžÃù­UlqzÏ<¡©l <¸öGxò“¼Ãfƒº<è®Þ®¡ð»œ’‘|š|=äÅ<¹.f)E z©&Iß!!믵äøã‰=É蜃±|oè\¡òhʺ^&º&XQ(&÷ž†5i]ÈFZT¹X8ûebgvF µ jƒPêMñ’ˉ»áefw*ä$…²ØÚ› w÷ch¸bŒ ¥é•ËNEä·"óËÒ2ó¯Hbí¨ÁÊ•Ë%.Óþ—þwñ íõ§õݧ ÌHø?%þÇÃ\¥ý´ýï¾f®ý¯ù´îÍÿF³Ìÿö —P‰,ûßÁ›·.þOŸr1÷_ÿ¾‡Æ¿½×]úM‡&qu¯°õ¯ñ¸m¨‚&I§º àå»@ñ9Î6´Ñi”$3“}ƒ[ž1mO öô—´¨gȳëzNÀ Z8bËÌÓ‰ðßEcÌxtN›Crv¡}Ø=˜ÜæFó™¯HbÎj3 ÞŠÕàÛ´%+ÙÇðª1êv5¹ø"‡yŒ¤†_×ÿSišƒñ{'b2ö M|òéôÏ>ÏoàV¡|.Û•Qõ¯µçýÊhm½E¯ïUþÂ`ÑOÐùóTTàøn ¤Ð—AT’Ã9gè-¶ÏSøþ9…Æ«ÃvˆG¤’áuB°švç ÉNaMJôZä~ÌR9`Xƒ¤#Ì:Ü<½çu8å6N!#G+9_й?Y’Ï)ìÀÐŽ}uŽ.Ò¶ÃÕ ‘| ÛÝ@#ݧåÎfþÏÈ•ÆÁGÛ€7Ì Òlô@+Rvåae[ýìhH ´áÑßÿAy×§xÞáHOd{šš• ±[äö 6£kFë°Þ’Ö;Yäfã½ä'í®âضyy©™Ü`»¦8Âïjô"Q%1a§¹Y.4o¥[ÂtÊUà±)}¢·TŒÌæéýG¬v°$ÀUµ/‰NkO1È•*ÞiÕS³†½@§÷T§E•Üi£õf Ô³õ{r’"Q\–±¨f‹ch¥l˜›Bªs[$A?°p¸.Æ8¡ òœ Y é; tÇ[UË Ü ý‡éb|‰³›¸QÎíonÕµüÇ©*¡µf$qõàÏ“ãg‰~ NsZ%€~é˜jã¯ÉÿÒ›©ÿäõde´y¼†Oëµ7PÁb$^ÅÇZ:j‘ ¿ðp–ˆ%M²+ØTïΈzçÖÒ»O35™>Ö¨ä[X)Aû¿s+%“‰L’tô3OòèØ'Åá|KÒÚÅrÏjäaŠbÿâîJ1uº¯1°«¥6s+…›Ï¯åsNÏ=]G×neÐ96ìbÒ×QH/FÂ47Ë ìa¬W59šª®wŸ‰—'#1.Õ â±¾ÌÎ€Ö ŽR:"ž3b©ÌƒúPà”×d\J„8F#`ˆ×JÄÖ_ºã ÙÒRåN¡è%Qo¡øt!3ÍRÛžBpÕhq4=íšÈ C–"|árfõÝš%TøòC¹¡»;‘q£FPÛ£†zQåCÇýÞš/|iѱS$QKSXhF†•»°›Çz<³5ÀäB1/á/1 i”ví¶Y±“<•,AŒ¿~¥³†Ö&ÜúÐßfëTIÉ8z%•ää'³ IÔŒÚx˜óóih~îUDÜ¢dõ§«ˆ~µtC$H;Ԛͭ~Ö®‰ˆ8j _#Âã—Ȫvùø“/<ÖÍ9ö‹ÇY¿>¼ ©o…:¢‡¶ñDQ «6º#fÊCJŒz=Ô9Ñ ni1‘qœl(Tw?ClÔ åw**6êH?×¹rC2`PnÔ¹rCi(7ö*GJnÐßV½,y ¹aÑÓ·sƒ.v'vnÇþ{~& ‚öß­§O»;; ´ÿìÖËø¯‡¹Jûï}Yöß{™ý¹ößÝÝmwþoן–óÿ!.žížý·}'`×ù0Ïœw)s,T´7Å3 sÈt4¼NgÉ~z}Ž«ð{ø~ jÐËáx‚¤ûBÇã¯I¨5QÒ'böß›y…úÂLRÿÙø¦ô<0ÞVz”žF%¥çAéyPzè÷”ž÷ïy[ûÞ}}ØßG.ÿPŽD‰Òauo„ö]¹#ØájÓ*¢4Tr?C‡¥þ6~ ¢m8MÍçÚú9ž»|ýú°"JêžÒßÁ±nÁ«ü÷Æùø€Ù"òú:H“Š º0˜Â¸‰áˆ…wâ‡ý×¥ïEé{ñ]ø^XÍ+/¾½ó…à&í!¯Ô =y%ýräUééaw¹ôôH¥§‡Õ¾‡qõhߦåÿ1ûöß`üc·Äÿ~˜«ôÿø¡/ÃÿãžfÞüoîÀtwçÿÖNÿÿ ÏvÇÿtÄ£×í3„-|Ý?…Ÿ݃½SËd°ß9®&¿÷á_'î‚Ut÷ñ§ÈÄ¿Ú-ˆpy3Â8ü& €ðiÐ>ãV;Q0…m{<6˸I`7ÛËÂsŸ *¢ŒÖÝ©8°ÝnB¿{þ²ÉòPµ`«™OãǸâ¾~OžŸÇ@{y\‘æôØŽJ¨à“édöõú:Eó».Lméè=° š4fU—EGì7œ’딼«” mç㯦¥F¤ åò"½sògMø¼‡9ÂÆ.Q¡‡üüçúézåO‰ë5½6^ƒY”dz)cUs=Fs1Ó2~¥ÒJiû¡Û‡цód–b2u4ëÕà”²‚?Ÿ~LÆéÕ¼Æ^ Ú4lؾÿÄ’™4.A Û¡áçÃÙh&³b#xÇÍťƹ/¦77éìã”Ý„u/Ô.eN„¡;ƒ×³Ñ•°ü-¦/Õd6Úœã;ß/p*K·—:2ÙF“þÙàD…³šý‘‘éÐÖ6‡¢Ã›ËÑÿ8¶è¾Ó4LýL}˜œ'Éÿu¾½ ÿ÷_F²äóõ 4¸Õˆ°Ö8^¡î<ÀÉi@’Mö›8¿(â"AÂ(Év'ÀÍg»²?Ç\k¸ˆëgÁ'_ƒI~|dyÂËŸ“‘” ÙÃ\nÖá0¼Áµ@_VÇ—Ñ›üŽÅEѤK’Lr<øt9•†*„ÙK/7éš’{/ÞööN;¯{ÔØÏSé›`Œ¤-ö’kPu/Ó ``x³’̆”‰B$«¯ ¬NcAý‘JÍ»<ñd³hŒßÂDvJL‰Ckã¥=ë¥Hí›ô H8¹ ^ÑÏ`Õ\]þZÛ Žß¬¯­ÃÊôg­—¢atå«BOU©0•žß,Òß’Q-­UQ4—‡é„ý׈gÇ©e^¿˜NþZ¼G‡¿ÃÙhL ¨²Ü;Ÿ’ÕÙ«Ç•¨ò1«Ë½)a4‚´ꎉÊLb\ƒ <¬,gX9fW_ƒÝžÔNûojÉðjNó ø¤šÌF@{³y‹Þsñd%{À)_¿I§V@€Ã4ÆE ©lÏXÔãñ¦r§K/×~cÞµÝ.†³”•K¢2‰€ÞFƒg}žŽ§Ÿål»]^‡ ­Ÿs܆|O­×ò‹Š@Ïv­¹%¿Œæ '†3èpú‚|¾ÍçÈM_ÉÔÓ9(Õª T†‰;µñ&e°Ì@—Ñ®sæä¨0{¢¼6[tu.T$8Û¬–'8ÁkIeO0¨š½Õ༞E+£,'2ê0Øûbº}³Q›¢ß…Æ_Ìÿì÷Î2¥åï@Ý>TZW%W›ë!fɸùJÉvgV‹š­sPEQ§Ty0„ Ã’v\ëlx-摵 |`%ñ+z|¦Ã›ˆú™p·\nÖõxC'ÈaRÄøMޏž¡Ûõ†´;Wü|~’6Ø0Œ°¤YM)>½³¨#C(Ï™50R—pŸeûº‘–ÌdrâO:6F"™õË\ªî×ZXY^pn'/Î5QHŒúoÎÊkõS–êE“ŸäIW<¯WiW¼æ Y#Ó‘6ªõ5‡º"O9§¤U²I!U$+Qr³¹N’S×ðdÇûéô2½²úÆBlñYªÂ[ø0ÞÔLS.—NYÏIÇ&Š|°£AwA<@!·’Ëß„5’?kQŸÀ[@7¼€}L¤% ƒéØeéebD¤‚=ÍÑ‘fÒpf¸hÁ Õât2p™]§³žòܤØÒ<¹£¨@_øÜ‡]…MÚ,8RÎ=k> ÓèUkY—É<ÉU&-¾ù]˨ó—ü7L­gô†7°ŒßOAoøp\ Gc‘–NØÂ0;³MR—!VÓñõgîk±%mÔŸÑE-3ÁŠôÒC~馴¦••BG (8ï‘SmÁ¡®LI©\ß±BŽÎ˜%­`=Ð}TžP޳.ª^Û¦Ð÷ ³Þ.ó‚œlQ¨ž#ËÊ]ßyÊõ³éu.m“ϸËG‡jåÜ;KÑ醧BËÑÍô¨¬G8ûšs ùgBÅí$%Ÿ":¦WWBŸ¿LŒÃ…Xãj¾:*’k„­„ÇÁÚ¡!ön幨žÐÑX¤=8tä…Á CÚ±‚P>ÒÉå‚éÊŽµoëâ‹&ùªáDtñ5œz·ª†ÃïmóOí½ícr†nkpJ¿ß¼=èÿ¿§ J…‰0C«w:8Í:Õ…g2Áxàûå@XàXŸ: ø×nÁ:œa´sÐïãÏ3ø.þ–ÎK|¾û­ ïNáç ü;m½Åü*X;hü»Óƒß‡Ù=LF$Ý—÷Dú„ƒ<‡Çc‡“ ü´â‰±ößWŒl v¨þk–ÏAµ÷úFÓ¸·^‰ß]úý²¼¼éSŠªvk?ƒÆ˜Ç†*žÀ$V°þ¾Ä¿·.§ýÁA/#·Õ§üê¶zgq ²×*µ¶wx§ŽLýEÕUÝÇü^,ëêÍ ÅÞôOƒYÎÃÛ8ÖS/´ü»y–&˜HƒuÕƒ7µMÍh<Ñk—So ¬“V‘Á©.–?Óe݆DN/QßšÈêU±òzÉÊ{œØ«°¿¹Q74$\·hUNÕžkzŽ+»—ùk‰¬a»þ³°Í‡ëì@^‘ÄçîÈ»YUÖiÂ~ŒJ‰•k]ÿžá}f$yž;½DøhØ•NpÁýéwùܳŸ’Ëtvq3:O-ÝŽëpãMG°ÂëíÂ$MÑ¢J[uøñq:b÷Fù"}20á¬BËÿHÊ3…wrµW½V¦zmÖ¶gò Xn5Ø„AŽ+™pú{9¢øPõüÕt ë¹}Œ]Ŷð–„×}žôú¥¼9/Ö}×]À”©Blµª¡6G—|²X“Ú9w…Ó'¬VÏY;†ÅëyON¼t6§Ìš†R‘ÁX„Œ¬npñ—ègâkZí¯íìgf¡Æz/ÙHzëL7šOxÁ$PÉ2;×éç–“öH½ö¸¦ã\"S9+|¾'D‡ªLeæb?íOZ¬XÀ½.) N;Ĉ<iZb­*a¡n!—HE’ R»@êˆØoõH­‚I #™lbã RÇf¼žðjìJ§1+4ßÉå~V´äQÃZ·“W#”¥ÌfH^³B µ¤ lF^í¸N.94Hò‡”8·òÖ §‘+OÁ‹½))¤}EOfω^ÊW ’9á@a¬¨°>ǯUWÊOÅt†…e¾Cvk@îÀ-¤ÝõPEÄâð ó¿Ý]éÿˆ×sUÿWõºÅ™JYƒžó¬0¤É¾ÙXÚΠ‰ëE †¼fŒV¤Þ™oé+`fÕ'gðTe´!5XPåœ3‰idÔä7IB.]­åêîÕ‰ç´kr)[Ü“C ÐýÏ» ¹û±©†û1#Ôë$½¹–‰áÄÑŠÀA¿‰ë)ÄÓáÍøk¢&Ä£­ˆZ‘ôŒ¥¶(ÆªÄ ¥ q°Ý"ÚöáPdÒÃg×¼–öÇT¸r¼D/°ÉyzóÞôºðëUU¬ü”£°·Þkí„=&ž™€äÄ×ÊoY¸Ò·PÀé,—”›O·ÛÌ‹-S=ز,f{¨V'r4ñÔ64”|ñ\B£Æ Т“0Zõ'Nfîfÿ¶ÞÔÃ7QÁBïêmÊ·å´üíg%Z7.5깬–ež}…DZäÇBf£Õèª6ƒ™âÅE ÞŒ½Ï˜bÞ,×qÔpŠ÷ÕWNÇAlêú·ÎâkiT»Üdûh\ó!öÇ2<œ¢^=å ðˆŽW¹Í½å‡×Á+Ã{Àpx1;ǶåÀ™7üc±Î‰ý™Á^‚º3Y´sÕf]saùL*UšÈ¢Íô+´j;p«4OJ™^¡—ºªÍ¼Á¥Ü vªÖ”øêgæfŒý¶MŸJG…áKRY´m_Üî@YÅT8²†Å)›¸Äõæm"è»é‘=‰Ñ˜Y/òº(™×@]/Ø¿mYBRÃýÅÞ_¯Ô Þ'z3Ó`‹€À?߈ãès¤»F+(¯»¾lü‡/÷^ ÿa»¾µ½]ß­3þÿöNÿý W‰ÿðC_&þÃýÌþ¼ù¿½Ól6Ýùߨn”óÿ!.ží.þûÄà 78ðq âQϪôñDõ@ü>³!âõtD±Îí$¾‰£´¹±UצUá#x¬–E‘蘢Ð$¤Êçy[ÚÃpu¼êD¨Å%2OÑšân¡)( BÑtõ]Œ0ìju“±¨#!Ìc”ºÁ·Ux–¬ý&ò¨d¾kq^s3zÿa^ó"§gkµ ¾uÄð7.Ãm‰H [»ZÜPl|úåãx8áQ—Åq’΄$ÁZHry p„”§Úv­¾%«Âûí }’.Ð/¨BpX'+u”ÉùHŒ7ÂIØä9K?Zñ« ƒùè6Ð X ÅÞDtÄ7&EÀAJx¤„yŒð fÁ(õbð f=0Dµ÷#‚ûÍ@*±?š1ìR’“\é±1{×p%ãG3V2GJy’¡‡|aråÁÁ“g2Øã’µ;­g—v ÑIO«õdTUÓv«AFôæ ‘‘ZÎQEPî fg ÉI’%…erŒ¢á1 ®$w»\Y®”€+…KËkIÀeźqÀ•ª¸¢aV¬UdiÄ…³b/j™+â-aˆ³žl´•beYˆÿPf…7aÙÉ× a¯ä¼xÎNæÖH‡UŠì¥cȺ¢.‡lXvöÄìÕYÁ^9½:»U¯rÝ%ût ûô`€8fÒÙo†‡ÓϦU‹rŒåh™ÅUu½Æ:®aë•Þ&þ^«ŠM1-l#î•ZÝ,Å8¤g)Y «ýÜÈÍjjâÖxº¯'Ü %ù¹QãGè°‹5x™ÌaÄ Y‘ ^ITŸ¤ªRnÔuÌz0•5œ7s… ÐtñÞVì3½œ#6‰:4A‰fÆ™œ¼†ŒÐÀC~Ëg܃ÏR‰nbBY+§­µñŠd]â 6t‘Ä+šÙãé`A¹®¬#Áu<£Ÿu/>í;Eç}'sâwÌ™/Ú³ÚÌ—5³¶#§-aƒE².cÍ«¦?÷`æmgÍ<笙×S¯îÏ8ÕFo[ŸjîLé,=U,ž¯U¦Šu#‡è{ž*%âW‰ø¥ÂšØAkQh`%òW‰üU"Aþjç ¡ëýî)¨0þ}V}$È`Ýß…GI¦ãÉ]à‡-‡V‚‚• `w v'¨_<‰ìVD\f‘¿ÈSäÌ/â6¥í1“‡QÎ8Ö cáž™,ß)hUQ‘@”ÖŸ·ñõðɳvQs4ÝqÔvÜòKà¨=õŸ½5Žš"éÝâ¨õWR£óýBhjªBU»%šZG5Õ7ƒw¥¨K©æ”èk‰‡¾¦I˜aÞ¤M:í—£ˆyªžËôc*vàŒkÀ‘{ª¨Ž¿Äš`×ô!žÁ“…âºëm%иn g(!ãò!ãÅ6VôX€€¸¹ ï¯îªWð/Yû¹ŠÜ ,‹^­b>Èz¶ †všß1ãßè9}ϺuçØw»ö,ã;²Êú’µýéâm‘ôÞ•Hz%’¿ªDÒ{x$½þ£„ÒóZUbéÝ/–^ˆà?6˜ž?1J4½MO^÷…¦WAéUÍÈ]E–qdz+›³ð##·2ÁᎳIÄ rŠ’ŸG³T>—%+È»Ìm/=¶Ê«¶’8d 8ï»#ÐÀP˜id®EêqBNƒ‚ñ½Kdפ†(aÂÙ.JHǘ;a4O³ sªäîN³vÆkžæ¾Æ;0нé—è›Lp;û=â”CÛ¡… ¹>Íæ¨Éà( a/Ô ¨ sÆçíx–‡qÌÒ»’ÇqYÇð¶=waJ´i ^„ ›w‹­*Œ|(DC‹“ð}ž8ù{\ÖJJTJãîÝ¢Režj•8”%¥Õ¢‡ò;Å¡¼tÉïAÒ!A‰þ(®ý±D´®ýñ[£?ÆLmîÑ‘Y}b`/\ÜË‚Ç3p'ß•À“Ë^þã§û€+†ÿ¸³SonÃý§ˆÿÖÜÚ.ñßä*ñèËÀ¼§ÙŸ7ÿ›Û0óÝù_ߪ—óÿ!.žíþãûÃvù4¾ö«êÒi%ü„Ñ ”èÛKƒ66kõÇ Ú•µ>ތƈÚX÷IP䊴#øÒhr ¤n–‡óÈC××(oô(nc.Þb·"ÞÁûñ²¨E—1¿ˆfÁ"žÝ *býð¨àÎÏP3‡óó# ÷k9Ux}ÆÍä¢Já9»`¥áp¥ô—Ê>OÆÃëóË!þÍ_ayŽ]×w ÆF·¼&›@m5[°(Ò,´¾~ ol9-wt#dÑËt2§FÀŽ ¾ 4q`J,8Ä$лù”ÿc˜È0|qfÍðApŸ}w)vÆÐqÓ ž}ãÄ«Cö-†WçRqÆ,\—ñ¨ƒ`GS·p“|Æ+Þ¦¬gF}Sx¦;@gú0œ%çi:11šŠé‚ÙñÔžPˆÐAý˜KÔŸå ~Ì,ÔŸn1âÑzDýéÊàáy@hÎXjÉü<Å„©JÁ1³Ã ù9h×|¨Š« ‡ÄdU@‚stE¹1›IBÝtÃè_Encè!wˆ…/1°T?«þµf±‡z˜»Á½ˆ¾™­ò×F}msf{1¬ Ž3P°AÉF2Zç¿¡j|‰YÁ‚^h”Þ4Kk4%â[¢)uk¢* JaV`ñ,%‘”Î JÒ‚¬Ù7Y3 º?Ý’7ûwÄ›}Å›ý»àM¡þ€ÞXˆ7û÷Λvƒ˜7ûÞü¤x³oðfßãÍþðf¿&ªŠñfßà;ɛÿx쨪;.#KÚ£k‘M YÅöz¯¦Ì!’ äb#­ðаg"CÐÌ3¡[XÉ ÕaB´˜ ´¡·%£¢¸)¹À)w„œbC§ÜÅr•$3å5ílH' ê袉©âã¨(UÏCKñ«±áS~dP ‰ba¢W ZF¿å‰Ià\eÐÙÏÀ0!*š‚1)4æ„4Q_¢šô^¿=SÒE™p&~°8ž'þÖAèÄ' GMfa:ÂÝ7fE1° ‰I‘Ñïn«z­è¿Æì6HK‚®88Û˨åA1-€‰ Xë]œÒ6Hý>ù£¿Yq¢:PüòBÕ–ÅKøŸ#‚$abQ²` Ct}¸ R Œ"}»ˆ‹=ÑÍÀžèÞ{Z¯»¿øDÒCÓ-¿ÒC%öYÒCW#=tó~ TÙ÷«ìë*û¹àžûsÚmÁ#VÀŽ(Ápª–ÛÁF”0¢(ÄÂJx *Hä¾TC7†Q  ïÞ7ð£îh¿G{VÉH# À'f¯äC!j -ê¨Ñ·×{Y^ë$×ÿÑÖ¶Èï|À¢ãÓôÇǦaÊô¾G<à bd„Íü ïL£yõ-á/Î’Ç¡™Ãñ,¡-Jh‹omѦÐIÚBܨ¬Š[ѾOÜŠ•`+è•:ÜÔ@0¾ýF°JÝ3¤Ç장ÓäÈ‚µèšbÈð½ûÄ‘‘YPBA[ êÂÈÕ£["](G¶;Bº0úµœEVo—C±°ÙÑ%FHIË@²( YGÁ,¤ËŸn–§ßÚ!šIq‹æ?­Âı6‘WûN|…d×öëk›c_(޵Ù„æ+0j +íî´ËêHæ¼ë‡æ]™y§ûP|ÞõïuÞI­ö±Ì»¬Þ~ÃyW@ù/8ïÜP%y”åf|`:˜ {¥ƒ ‚­cw„ýï?ÉVru3½VGKd§ýïMîîÀááë­Ð¬¢£‚RAA¶kiÆ€Àv4©rp¶W!AQ‰Éf\ŠóiÛc»”‹¢R$v4¨‚ذxÄ™¡d©ŠIâ@m`W¥ôË‚ÚÈYÌ|‰Ò“Nª'1\¢®-ì•j¶VGó{qªÅOA!×›"´¾pœt׈“ŽÌ ÒN¥Éü•õˆ^ÑD›ä&§@›ÈdT‰·-Bv¿¼ ò¾}r‰†“3ŠÔ«Ðˆñ¥çÄÆ«M>ÁÀJ_Q;Ö×° Ÿñ%ð VRßÒ5øñà|‘à$³µ×ž|Ñþ‘‰³b´¡j½ŸÍƘ–Á…ËP5ô_Ÿú£æ‘JVä×b¾.Mï†Äg‡ fjU¾$YJz抒¨=9²3K”œú–“%Û÷%KúËO¤ŒGîV–ô—”%ýÕdÉê$È’%Í¥eIß‘%}O–4ï]–ô YÒ_M–ômYÒ/*KúEeÉv¦,áÙg!a®@ Ùðæ+Ï«-÷ù èÃÂzUçh&ü°çZ…ÐÁÏxJÖJ¯íÜÅkÝwUHÒ©Ÿ é´2FdqÔ¨LÉ¢@q8‚³ïÀŽÿÿr/!À+Äÿo?-ãÿæ*ãÿèËŒÿ¿ŸÙŸ7ÿw`œŸºó¿±[Îÿ¹x¶»ñÿ  À§ÕÛ«:@¤×wRˆ¯²c&c?%—î6®ÝñJBp¾Q ˆ]·È`©|–¤‹Ùˆb\>îÈ à( A¨ D ã=&hóWÅøpVÉ, έ<̃wßôàµzˆR­V1q…jÓÐ8 qRòb2²kœ\Ôöb0èâ8ÇMª‹ÓÄ:0©(YBô`q‚¥ˆÖª™ëʉÕxVSa~à8²b5m4Ee똗L „⛂C´/ål¸†ºfè}½˜Ë@ô›éç™ÀìçˆY’k1³²°K‰ÎÍÂLƒíW~Âiž®GP`4'›3ö‰°ëÉþúze³¾V¤Üç%IÕÁm†¹9¥vp“f~{)a4ÅýN(ÜnYóËL3bsJ`žÍ`ÆéMÍ0|:sz\Lop`:¹”Ý, ÒKÑbÊE{¯ŸGã1[Pêx'*÷exÑ»—ÎGkÉùbnÐ_œü`"ÌójqƒñÑÄE_>BËx0€"JhU´oÎRŠaI¶kõ­ZCŠ&Öðé·@íÙ“äp¬Y‡„W×\Ðtô‚‚=?L?.‚sg(½õyªúüˆ½L­ØU!¾™Ãy& ±”¹£¹5ûcáßdJÃã6 Ñ/t¡HNà)i¡ç"C’sÌ1&Z@&ºS¯kÛ„6Üm±~-,`µ´œ qN†ç¡·ï¯·Ö ÍVà]˜Œ¡Lçf=Ö'L`Ì•Ž³[u;Bð6ô¶=ð _'JZµYN8{R(gNpšŸç:Ärócî# ­X܈)×é9MgÆl7«ñ_œñUšòúmX£´óˆ°ôcvŠQ•f…ÛKQæTñcÅ *Ô‘¾ß.šÛ‘}Œ0¾¦ QN™šÉѶ zô@#° ¹?xòL³>rµë¢”õ@ˆlçÚY/ »½ùÈ!rŸãT/èY®ªÓ}mó§Ñ ̯»§( Ï‹HobB™ÎNÐøRê——¸‰›ÀºþyhéHr gê£UU‰Þ[„"”ü'9¢÷X#gŸZ­V%¿ÔÑ(—ÓKL7ƒ_ËNr”Ö²+,èÆÃÑx&Émí¦±)*ëÛP©}ü8ÙÊõYï—Z¬ˆDÖO.Ó/ò°K56©fEHÖÞ·]òâi—Mþâ‘ß7ªí³Mjªl)¥ôªAf7Ÿá³ø#‹øEÔ¨êOUŸCƒœGðH™zÙ‰<‚oI¬G¬µg«À ÀxûÂ$U´â-Ëõð’¤K;Ì•9âd’ÔévDêÍxÄíòŒ÷öIº9 (¤Rᬰbþet½°²Ã‰â³=9<ŸõAÚÈЕ†ªÂÛ“¯bx¤äàôeùYØa4ƒdìõd Q‚†Ï«Ì¦œ­Ô”³Û5Å[ ÿ‘|Ö>´ÇûЃ'ÿ:} ‰Ñ—̬¢I}æ;Ô´ªTo½ÒÛØ]³&ã‹èI æÇ×*`~’yT÷8Æ|³á*¶ñµ2z× 8½ÉÊ-¯¼ Ñõg¬~ДÓÈ‚~-yPƒ%² º²‘á7¦…n‹ßYnX ' ʶáTÕ%p qýRÀ„¡æˆ7©„#ü~à1vø¯„%´^_ÂF` YÜè"§ Í"~‘§È™_Ä}QÛ/Ò¶! ç" I·3F,äD’μcŒ¾[æ$útû(‹·DpôPïÁÑCdd£ÍaÈ<¬úï¶ñ÷™OTº(;»ÿàš‰ÀdC6º5¨îÅ[¿í¶>2€!Yò©ÿìmñ'ë×ܥр² LåRð“6öJ.åƒ=ƒX|P(ÃXÂf!¾£ÙçWÀŒ4ÏLÕÇ µ3L«ûmF¡|ÈàCŸ-3×wcéÊDálø(j –Cè°zžáå¦k½·±ëÁL&1tÅ~e¡„ *ÔoBhð³€.MòJ>¶ÉËzÅÚrÄ ¶miòÄ1/C©5¾åÀ«Fê-ɲÔEhú£ûÝÀy6ê‘WßÎó] çù]ÂyÒY—±.á=¿¼§°ÓòEDrYl$p<ån<å)^m…糩ÓÒzæfà6È“@¨Œ¨IY_€±ößòŸ.†€l§:o´Æã–x¤ 4‚F*%c Cú°0¤ ñŸ BªûYj^-H€ô¶3î{‚ýF3î[Bv®Á—élt“^V•Š¡ýí½É=89zÝæ€‰Œ3/Qfð$0ál˜ÈÞ["£®ˆŒÚ|tȨëVÇ|`ð˜(O†“1hŒfð­uÙg !Ü2²k“\ë¶„p:"„éI´ŽH5¼‘»7LY— ëQÙ=äX½ *!cKÈØ»…Œ}uÏX±%F,_Å0bóDƒ‡kˆ†¶„€½[ØW÷ŒýZb¾–˜¯Å1_c^lÈÞC!ç Rç<ƒÆR¢þh­2ÒÑÐÕÝÖ• µü˜Rûî{@©-¯ûºLüß÷³û-†ÿ[Zß}Úh€²KøŸÍÿóA®ÿ÷‡¾4þï}Íþ¼ùßÜÞ~ZwçÿÖn½œÿqñl·ñìu>°¯ƒ¾u(ØÆßð£Õ=yÙŠnz¾ÚMûà|€†¿¨Fü[zúEë¿KBû67°o‚'ŸRŠnÀäX£×%¹ Äì˜`¼m5b&¯l„nMt7P—¿b|èçê¶+Ü8z™F‚ë]wÐÍÃÓ…ÞTd§l\]£køg N÷£i%?ÐÞôñ&½ —nF%€‰mdñÁááÁ@‚9à$Ò¸ÂlÕÅŠªzлX‰²>Oo~æc"Ûhˆa÷\“°˜"HRiUÛõ|³c’Ì?ÃîVᢛ_DpƒjÛ¶*bž bU· +`$†ÑÿóƒŒ/*LRtIz³>Xÿs}ý¦K›>žÒG&ã"¾¡7þIP®©÷)rŠä#©°œ¾Qz3mêb²ÿ„9QGô/v¬oàŸ zˆÕPøÀŒ;.nóWP)Î5Vâ¼Ûå' {ڀѱ{>N‰*‡½ƒ ‘…˜Ê²®(ìar95á #c‚òËy$©¨´Úº²í,ƒoÓ¾À€ç60$œöoØG2ƒ~ÂȵPm-¹-Š_’ã—߇%²¥Á€ÖNÈ}XÚÙ¢îøâ¸{í%©Ô.D¥v•|úœ*ú˜D±ÐKòèÓ^™>í?ïÓ‡u…eÁZN%® ! ’€^| c_èñpüñJ°«Ñ„h Ydar\%(Ì–tVi‰l˜ÛóyCJÊæ¸ ÃÑü/½™ ?Œl Xö›ð7'ÄBçI },\ c #kb•V^óIÙXÛTm—s”;✥);¸ çé|È!ˆDÆ4´Š¡4*˜¾OaŽçÈÉè£yK'+ª­UU“=Ü4zõsVPÿB„Pghœ áÅY¸§f-ZW#h;¥eQ¿š x}xµígz©ز€»øýÏT—ì:c§#BÑÀÚ ¯A‰G˜Ó«ñô³‹+õUê°Q[„4¨šˆ°)pÀJ¤ÀAÅr`ÁX Y$½5ìuì5z= F ܤƫ˜ÏËâÕ‰ö@%5Qמ3`YÅÈíŠ,ª!ý„Š`*úaB…Vü?‹PªïQÊD‘^™Rýš¨Kaû…He‚û ,t¿–t…é¹ï‚ÊhÂÔÒÿdG”¸›ù „âð5ÜÌ€à³díy`½eÕ{Pôßô_É1E5ã¶ëuÿðM¿¶F½V BÏ,FkÓÁŒ‡—Óg×ë)æ€àª…þ½o\éµ5¥1GJ®G%á{Ÿèa~ó§öˆY0iŒ-ë”àÔ„}ñY âûë…Z+FLT¹.ó¢æ×A‹lõ/‚à¯çl'@7þ'éIh„f¬k,f š™#‘•Cž-Šíì,Ðéç½ú3®DFþ±/íáaÛÆjTåáò8“‚å›Áò4ã‚å·#å#åw"íÙß–ß – øx”” ¦~¿Š¼K1ÐZðõO£ä~•TXŠá‚†;÷àó¿}¾~þ×àóäT> oFÓÅ,¡ãÃÙÚŒžÖ˜Wn[ü¦³ü…GÒ]›q ½÷º;Žx>ÝÌét^œf9V'_¿søò¿þ} aÒ8»àë“S\š_w²4 D¨·^½ºÚ üÑŒž}@ðçékŸÖf45ñ-"¨Å_:h½ÀV© Zo V5㥚8]ü&p³Cn†¸¨ƒ™ÁïƒÓª,ZxP˜²øØ€bqºH 2Kæ<æ÷bY|1øŠðø‚ÉÛO Ü'`ìEÅ„(U~Œ„a5bëiNzqÑ:Þ©÷,³ÞF ^3–ÙvÖRmæ·Ç÷6[ÖÏìqßïq¿Xû™=îû=îèq?Ðã@{lÇ\”9–aÆa£ˆµû'Ë/Di£Râ[Ó•ŒKÈâÙu ¹ÒPÖº! †(êS#û!N-4̃H[4,8Ö¾ àØÀFcÎVà`ƒ|Ä1¯ó´±ö*5Çùc ›‚é,”Ó¡êÚOϸS), è¬lCLÁºd@LõhÓr`†5×}Ž–û¹žÿXÓì°Àcr.Y ¾Y¤Ës 6±r «oZ“KO­Û¡—’z ÂM®«Ol$«?,…EÒ[å…$uÄB"b øŽ`GX™tÑE¬·¸KOØU­….¯6ÀÁ\0ß“ž'uÕQŽü—»é ñI’(y„gI¿Z7,^ObŽÕ&[´Wc ¹D³…ô¤rØ¢c‹¶Ïíl¶hÇÙ¢Åíl¶hÇÙ"Xmˆ-Ú˱…½;²é÷­ØâDdÎ4ÎÃuš`+G°6¿ŠGUdo2~>z–B>a^ÎðPõ'<̬Õj?Ñ™ØðbÎGOè¥aœ; Õäÿ3²¾TÙ<`%jÒôDZ‰C›`A Ãǫ⦇!sH8>ONž}u˜œˆÿ¥W†}·D ~ÀðZÄR[ƒ›3²Æ°Z4G¡×·Â£(ÀxÚ„ø©ÍäÊ1 ÔêÑ|Äáz¨¥‰`tt¸‹¥>:Õ'Ôü!"Š á“æeÇq>\O.J@ƒN6‘öòž’HrØw-ˆˆì8CQ½ö£"VQG%|Ó®ˆ±î¾&t)ΠFƈË&%s£¾)Î]b~x`kjãBš˜<†ýtÅ~A²¶A™»”Â\ÔÈç"“F¤t ü“'§OªµÄ§Ñ2È$€IZîC-wª„êxÌ´m¥-/8÷¢ëÅÁ)bç,Æcµ¸ªÓMÓ÷8U§khxtTþÁ#EHÙc•$ì§ê–¾“öz&Y¿d-v9ØvMp^EjÈX;]¦¸_䳆ÍÛÖ ‡A’ØÂl3Lßl~Q^‘¾éFȶÆk3ýÇ<Ô6g…$”µ€#½å"—ÍØHüæW]wò'RnÄèOÖFïŒ\ì’¥Å:-Š·ÖmŒUÌ:¾ÐGËŒIh8DäC±‡ïrÔïÄ5ÌK_tjAT%ÁbTȘ¤êP]zv1¡±‘I··>~íÚ`-B=cmU½‚k™O„bìãÉäkɯ÷lÞºÝnç©u£˜Xµ{îã¥zîÁe¬Þó˜Ì[¶ç¿¬´ 0{˜ Ëo¼tŽ7p«ÂÛ¿Åñ†×B÷Æja]ÅzÅ#ÕyÓ³‚ìþôÀxM‘c·Î1 öyðcÌ1ðZX— dï[œÔ$„Ÿä@|¬[rT¢P ‡ƒ"R‚ÿÿéÅÿï–ñ¿r•ñÿ?ôeÄÿßÓìÏ›ÿ;ÛuøÒ‹ÿ/çÿƒ\<Ûøÿ3•ÑNøÒÅ£ÿ¥zÑ­¹7öDYáŸá/ÇAê…âû»’Ì=ºŸƒûócû9´ÿ[EöŸ‘ýgÑÈ~/Ž_›Æ:rúÎBù±Ô’Ñ×"ôšÒÛO“«Ç¢ë¶qDçõ0Cä+Pý&"®Ù}ù‚a¸=ù>`YÿÊ6×¶Þ^ÿ"ƒ,'ÉpL~Ÿs}sšcµåzá·Ã£åWz¿ýòëÅzký+ګ׿Ö$C¤³”HÊwHÕô¿‹¼ Mû„%@!võŸ `¾&£+¬abGÚM8ÔNDgbÐæD„RCw.ql©N ÷â«©‰¨'žÆO³kà *µP2…)b3([,#½±" g 0SM²ª¦E0¢Pk¹¡„ŠB‰T|íW™êqx É5dWjŠd:½’lé³5ÌhQŠõS2ƒÊfW_ù„…Çm±¾þr½¥ù†>·$Žé'y›þhócØpYa4ˆPxJ•97…‚Èš%?]-Æc ûS Ž˜f¸HÀª5üôbqCÿtg?UEÖÇbHfâŠHæT7ûZ Ô ö´FEfPjñÀ !\ñ`åŽd?žß“;EFÀßAÄŒŠ€TœÒ›XFbŒ1E}%-óÁ‹éØWDE:°4dD ð´l¬A"=Ý“áy=©ÜÆc(œ9tŸ4F«ö ÀÐE^ÅE5ÖèÅçNgö¥°MÐ>熫Š0%¥—<¯¿{0ˆeX£mñƒYK EbzŽÅ#ˆòm¹@D%`÷Ê+  Jg=¹É«í#þ˜¼•ÅPvE­\Ë⪄†CBÃ|Z¢iüã 4¬ÊJ8ÛÂiˆMv”ˆš†¦ák½ $)òÝ >Ú¢X%mWÈc¨ÁˆogÃk©íp8;P×` W"‡†JÌ1Q¨!”ìâYõ¯µèó&Å‹$w“Çå~£ïÙ/O6’Ñ:ÿAFQ‡3éAž~òÑMóQ’à@o½ˆúHœk°6Φ<ÑFóY ©Ã‡¡%0<ŸU”ÆÖâ(kâ‚ÙH¿\¤9„=––Î[ßl¡M»Q9UÅ,Ü9ôata "bŸtŽÐÆÖ¼Fñ YˆÍo 4ˆ,ÝL˜ÅÆcÇefZŽÅBc ìu¿,5Õú÷7Õ¾nf¿›gZ¿ÈLû¢fZߘiýG9ÓˆLb¢yˆ>Äå·h è“çcÂùü8h>¿”h>ázsÉêÂùxÈ(ŒîCŽ‹»,ƒ$“é矌ôÓsöî䌆¿5T—!ü*4¸m ùóãAþœœíË…ø‰ …~üÇ#Aõ­"A(ò%@cj°L ¦a¡-Ìðæ¼ ¨°§SÝ‚QîœÃ ßç”fiS D?Ï„Á4W¬†Ž„iÒ ´kÃez–œ°¿ôIŸ”™ <›(줻ÞZ?!†£BÝõöz_žyŒ†Þ8˜£Ó¥ÊèÙ_Uø·Æ-Rù4%Ñסœ¾ãQà\œX$¬ÊöšTÄd²0u¿ÏÝÚwº…uPÏÔù%”\Ý\߇’?¶ù# ;u)›DTEç§Ãª ½½T(à˜uCÁ-:) ¡=ã-çÄé¥êV¡$°q„*xy~3œÌøüD¿BTy>¼øYç³°bÒÉÇg·ºFнH3BÉ;¤’t>ºXÃŇÊã"ƒ&!¹ÈŠåno:™‹“[e€ƒÅä@,h’¿QiÁü3Ñ,ªÃpòÕI®hœÉùp‡¶ŽÏÍÓqñ“cÍ9'WŠ¢2À3‹Ósǘ‚µ ÿÏúÿ•Cñ“ìêO‰ði™ÙSË?ç¦ySÀ*"O®ÝSi¦ ¶N§%œ:¶VFC¶¸ŸO§'?ón€³óôþIubr2á<ùA3˜$ÝépRM>.Îkxçhúzórúño´#¼­%'°;’'Þ?(ÖYç¸sJàfôƒqÎ\˜³€÷ÏÞËÓƒãqÿ60hˆÁõ±ÐzÙPhG{ð¯/ ÑâÕ¬´• ÑÚtÒÇ_}úÕ6‘ „kCx•Ç[ÐæÂm.Œj8Œ'H$Äi½«Jè´xƒV÷¶…~#p»°‰ü}4 1fh±LÈ„-Û{|Ü"çó@5¶Õ©¾ÍoN­>0†Û²nÅÜ–p[¿mYø¶eÑÛŠ·-‹Ý¶"t[¹M• ô) !vá«‚ºýR‚º}{P7ÓÍ€t[ ÑÍt3ðÜJ8·oç9µÔEïÜí¬wsnòâãvëFw3ï±"(îm$„‰MÒ(ümU<7RT¡<þ6¾jð :J(7lG(òž;±žUÌxÕGûµFEú~^Hª…=·,lAhÜeP³ ¬Ú¶*[[з­©×g»Øpf3^ζ=œí¥†³½Úp¶Ýá¼› ã[ 热ýâ­ýòï¿‹Ñ ì¸v×W„è*¡ÖV¡qXkjíñ#­16†O¤(›³ƒåLÔ5{¯P¶­ Øæó¢I¤±íVˆm1⊠±2b›ˆ½W¼¶\Û²hm>X[‰Õæ²F’¯¥ÐÎvy¬6K¼2R›#¶ Ç“Óh„zA:C‹è ¸, !èó‡éXj"z‘HðoVuø[”sÜÈi›ì•Äzû“Þ“*ÿüZW„Säí¡#Ïí´ÊƒŽZž.¦J„ðéVUî {.¦°aèOÂè < QÔµãÂÕ%˜-4ÔT;¤¿K ់h—³„Ûžp9´„\RaO`„¦iåq·fʺè2Ÿ˜rÝ¿—˜Þ~bÝó¨aî:…šxë'ûO;Áµÿ:ÙÙJŽöØÜ™ 8 (´†G<|Öè-¿tgË­D°(>—[ÿÁ›ðYŽÙà:4¸i°õF’³Ìë­ö Bú,úñM‰8Ö†ÊÌËRÓ¤ L[nMãnZ³gŸ$qبë4 vÀû„éM¢$ |æ¼ÂÈòq´áÌaÕ¿ôø6s)j‘î¹õq]6£yÛݾ“fd=µQwžÃ/Ô“ÛËìÎV´¨;úY«×á&aÉQ©†-!ù~uï-#ùê[w+ú ¾û–}»+K›¾/ûvo;EžÞMkŠÈ¾~Hö=}0ÙÚ;~¿äK¾-uú©óËmGö×;iFÖSRøõƒÂï×%G§r¬¨¯( ÜS3ÊNdÀÞ×DBÁ$c€#E½U)èM•1 w.§°Ë@à÷£OlØq ޤ/ôbÂñ}¢ |Q3Þ»©Þ:Kƣ둈¨~šŽ.áñKÖVmR¯HdŠÁ½ŸŒ®FÃÉ\ïíQÖƒ²\Ñì‹“Pb¡ñ¬µ u¬B`¡¶,Ãin vI6æuóeN™ŽU¦ã•!ø¶m®ëW«y¬zîKø(ºA ¨¹¥ü^üMãeÏ&<7ÅÝ]PoE›× A#²ž!Ýð˜À;$,e܃“Áºð¶N1V§LW.»[á& SDZ}-ù9(‚©%Ö#ÂUu‡ÜÚ-«³î¯+í¬¸7ôGGÄLb p2‚:€-À„‹ŠNéÖae’±Œóíá!G="’õƒ›,­¼u\§š3ßqè¾Cø2e¿c#ö÷À“gEù³çÏ~„?ûù³süÉ5³+òÝòjß5+‘EI˜€$p‚ôk/=½qZÝýÚKÓ¯-é×.N>é\¥0D’Ï8‹iÙÂ%ÌÍ3ÈÝu/Ðq¡g‰ŽÉSƒ-®Úò6|l X`ïA á¡ðcqŸ—dæß¥¤ÞT®0nñ¥Ç§i?•ÑÓ Ö`Õcãú>I1"vxóµVœ°j½•¤µ×wdz*1_ëNÆb%–åÍu?ËÓ'Il]ã¹h«s»cßîèÛÆ‹žs+PG4¡ò‘J°K¼ìü³"vþ?á2ñÿ?\6î¼þÿÎN½¹ ÷Ÿ"þ7üUâ?ÈUâÿÿЗÆÿ¿¯ÙŸ7ÿëõæ–7ÿërþ?È%´ ÿÿå~£ö ˜Ð,ÀþR³VÜXýPYëãÍhœ4€“•.qžäü‡)v—(­Aüשּׂ²h>óBrC>U3 Q/«1ž³1zƒãf•¼„d¸‡dz3ÿ0ð °Ï#ÀW0@§ŠÏ’äÍúú)4°ÿÞ€~ù2)§½2xóBæµ°šÑÇ)Rºý漦37€ˆ·¡Eߌ1¸þ«q[fÙ0ë0ð6’ú3hÏf¾ƒ×oÔŸõjÔDñWN|ãñW³„ƒ94„•~Rp"8P0¤íV÷·„@Y>‡^cVž§n-𿿇îÓ D?­ˆ€ƒKbAéÔ“?§¶þ›=¦ÿíÃÔZãV; ûx‚ž¸Ì‰à&©`àËšû4¡‹Ñù²10c†@ÑÈN³Å¹ÂV@Œk´nxÿØy{xñïMÑ —UY»YÂú ù𻫺rÆ(CalVbC§N¼ú ¡ KLs:ÝçמخçjÌ>A±QÆÒ·ÄÖ}ˆCc£›,ÕŸp»Y@Ü œi¢{kt1©ÌtÍzDoes|\»LÈÝ[¡uY|z+¸®eÀƒNµX|Ã’‚0EŠÃ8•Ñ‡ÑæhŒ©?,ÒtÕ‘…(Æ+T–~a´dþ{Iµ(tGBu„ïÖ(‹„îUõÐ%É&FgÀúð ÿÁrÁ%>@p¼3R ³AU¤—Ðß {–D\þT©?£º·ªð÷ˆq(Yè}Â&‚ØÐíßèvã|GÒŒô™L »†paðY©Ž<5jBËðHq7áZð6Ð|>PGoîü« Á$ΠôË95RôÚô´ M12•£g>ŒàïÝgü’©‘KÀÙT¹xè“Dþ­#ëo>8ÿ†¬STX(fV‘ÜMîãüo©*>5OÍ;©âÓv¤ŠÐeW)aÎ KŸLç„%'­ŒÓ›b­k® PűŽëéåèj„ù5ì'sV¹O#ã­4IìÇÅDT0î/õùV8A9Ahc)P âŸ¡¾w:w‚ Óm4 þ:Ì@nYó„`t0H5ÔÆ¸Öâ£í¶ìƒMä@@ø8Ý×n~:,êàA0€æJ€ž‚À§¹V¸s²YÞ)0…DQ2vnù¶4{ŽvC·þ°ÚÖCžã!]Š—h‚?žÀB„ÐÖjè{[c‘7;‘BÁX"vމ¾Ñ R‰¯ë1O:ÚävйAèj[úKß—sÁËÞ´P=ÀlÔyåW)AD.·P¯`úx÷‰ç t±^U­ŽôªEŒÒA«· 8ÑXÑ̪P[Tc1¢%ÚÖ.Ü|¢ZÙ[­©\<ÔØÙQÌ%vzæ\KpuiJºÃ˲ÿÜ\>ûÏviÿy «´ÿüЗaÿ¹§ÙŸ7ÿõ­†;ÿÍírþ?Äųݱÿ`èpžý'3osÌ ”{}'v¢­_ó»ëÞ]Ú‰î&·óZ‹úû¥µ¨´݉µ¨G‰_€Þxð ·ž«ž=ßâ[ÏWϰšeIêmžÝì•–¤Ò’tÇ–¤ä@Ž3UŸÁ«i ƒ–ê,Pf"!TØ•Ëð”[)Ȳ÷™ZiœNޛȫȪDï]\›‰•ôS½uDçƒí^›2ÆÛ³@¶Z%0*“ =â¤B¥•²´R–VÊÒJùýY))©ÒÕhœŠê˜ò‚r;.TzsÞËn6k[OfÉ>í’ðá™2ãÁÄ»˜Â¦ s\aë5np…ªân‹¦Ú›Å„Ød¸ùúf>’™Ï€T—ir˜Žþ‚µö¦» iTPÝÚï¶^ö2WЃXT×^›ì…Ý}‰„4¬R)” ÛT± ð› ðäï[—Íé²¢3b>¢kUãn(»…™Ø%´›‡m¼ÓÅ,+ƒjr„—g+*J¼½@ @ë÷ÞEit²$‡“•øŸâÁµçnò•´ÞüQ–ú}|L&jàTaªnc²‘þqVš—‡1eÇó™ä%,‰&"y“9ãÙ£õTÌ=€䈯Où(‚×Ë Ê¶ønåü?´ ßK¾`>]<ƒD°º•Oüý¥ÀÆ5-°É)ŽŽŒuÓÄ”V¶}ù]÷Âgª#C|ëì¾€€:¹•5,´Øä%Dè½PÐêl¢y#³¿D@?fÞœ@õb$ÝÇ©~J‚ÊÈK;KÝ»˜í´˜$:íM‡®­.µ€¶GyR€>tn0E5ÃP_Üñèp‹Ý¨¼9]LäÌ‚¤+©Œ–“{KG¢Ÿq©ú¬4fUÈ~Ðr2è½KT:MæÔ]~í¤ÕÏ‘ŽHø#˜ç65ÓÅûðm÷ñ_F%‚ІŒÕ¯WòË›pbpñ&Ý$ìLDôÚ°7¿4ùÈ­¾§Ó•w)‡ó–Ï;‘Ǧ„ÒSÍWn î@þ˾­ŒÆ¥¡‡¥‘9,1 À-—h‡5$)EÁÇ„hÞðáÈÏ>‚O÷‡ª{…}ô¤"Eà+}Èr§˜aÔZ¬z”䯷³Ô>þµÝÙ«K;Ï`:bCÈPo®_b˜¾CåÐæ\C "Ûa)Q ÍÒp1z6ÚØß:F!yZ†Û"—oUzÖ3bÕS+k¹é–&dÎÖO×Ïè(ƨäó‡ÑÅÿÏÞ»6·qdýc›T¥RÙ÷Iåe?›T D€ÔÕ–P¢dØD$%Ûå݉!‰5Ð(‰ûWò9ò1òsn}ï$u±ÍÙµH3=}9}ú\çL[§R¸ H„ð‹íö†TÀÖ˜PÌi@Cû‘ë€*dKâ­c!_¢¸LX”‰¤Rû¤ë̇ÓjA4‹ù•±·68ò×¼V(ˆ­¢lÙbÕPOa„0a?©…VU‡%l¥‚‹Tfüä#²R{-¡ó'˜“m€GÚü냌+«Üú*îÔ¢ª€Öcv¢VL˜ýι3iƒðÖš[«¹Q„ŠlÀÅݹ¯8Ý4ëˆwå¶£C÷`;ðý uµ¥W˜ãWyiòW8I¬¨e9‘Š÷vÆï³I0§¹#¼w0PÐ RùZÁ”Òlzá„&:Сm÷ A¸dc'4^ÿ{Ð$wUɾß.XI\ùã ºå,’¾™»±á¤-¹*6vÞ(gUÂxLå†dnÙ˜L¾ï½OÞ÷&ý‚eQ÷ž[EomÑm6Ö“w„fUÁ*ÍeQ6ðÓzjmª3ÙCô¸øƒù„9ótæûäÍ jar— 2—=õÇÉAÐZ ­wvðT7þóßÓw_Mü磻ø¯ÏsÝÅþ¥/ÿù©vÿœý_¯­onlFñŸÜíÿÏqñn÷ã?èRáš•9à‚"ôo‡þݧw „‚–W-¡{ÿP!…Š:$lëù:œÕŸ,ÊTšz>FÁÑ¥8³öf¿Õ‹É9ðC‘40F_0£HŒŸ{§“ìˆ4CÝ5ô#'ƒóÁDfÓl80O¿Ì&£KÝB/›©ï{§Ù(ݧ[Å"ùƒh¡9r™¿ç”Õë‹Þ„»nóU«a׳V­o€ž²õ´VߨbèícthÊ4²áàhÒã0ShJv·3Pl@Tï_b¸Bð5´ÂZ¯qÔv_TÔ.ý»Gÿ–¾¯üX^£_q,„} ÒõÌFŸA#¼ªOÕ÷@œöÎú=ÕR* ÀûÙÁû¾gâIÕ¼°àÖîNóyso;EHo”üâ€÷šÞL­D {1°¡Kœ”wPâ×ÐLJ%~ÝJ:KLô3OßóºnŽùËçß7:çûÛ•šeG»#µx”2ð7Yy‰Øš$–W±O¨’cد>Ë_&â⸜…‡R¼„~iüªƒÑZV¥Àx Ÿ‚o‘LuXgoÛpéžgê—ƒ_að¿eÓo‡¿þSG½póú»ÅGHœj‰;TÖÝa‹Ü‚•}8Î.fD¹X[ê·‰Aծ𠽛[mI«ðýÚ*s(ËK*:øúè÷& åɈ^IS#î„mÅ+1• ¬J$› ñ3è.nH|=ò4਻e²33ÂI æÇ'›°2´':­S<ú$ÓäÒ§Ï%¢j0²SuÀetR ëÁS´Ó‰»ŠóšÅ¶@L;neã1}ãZz…á1S™-èQ51Çã«§æÖgêÞó{O™Q£ kÝ¡kA½Ï†CUB¦Êñ…Ú®/£„ År_TB'n‡Ï¯G}ÚX0Ô-6°NŽ3âà†J„”_TÃvp:õ+Õqo„àñhмÄ1ôüõÎA«­1tiÂFLrD›UàHØÿÙ«^äkéqÂí±e‚°‘÷gýKŒbÀ ÐcŸý‘8ïaigŒºÐ/OÍL+vbtì¿þÛàYíiûÿþØGÔåóÞ¿Õ}ý+PØÊÑ™i&NJ­J»¼’]LÃñh…ÆQÚ>=ñ%Æ)=Ël 1À8¤ŒF8ÅX$?¾×yÉðæ º¼Ïd0•‹û:m¡Á'>1ÓŒŸ]E‹¦@5DcÛ»Œþ÷:–=ø༟Îá7äv˜Á`˜HØn8øúüBZŽð èkÙ(PÊ‘SowlÃîxîHpÍlþØa϶ 08GñÃH ÞeÉkty~ÄI'[UÌ MG„ c¡ ZæªÛ©—Щ&oÁ5؃ÏqÖ¹?ƒ`ß™}&»$¢¢µŠÂð\šh× M<¯pز°,ᵃ¼å@½áfg=ÞS8Uü`{M¬6¹<žáþIÏSH¸õß´§2àH‰Ís9˜`¤„|»ýÇS¬ÿn0ů«ñhDÝIm‰ˆ&éÓ—;;ª4¿×Ç“¿ü¸qÊv«¸‹úêžJSÚË[£4-º4ž½XÙª2 ahóYÖ{7áù}†çhõ3‘d/§ìž£ ¼‚ÈBÍÆ ããv?'"ÛÊ£éÐtÓ•"¹@ú£1&%il‰c&Ñiô+› '†±Gég''ƒã0C^vîÌ`ä aCaà•ç=¯Œ,çýø±ññc’Éš“…Eܺ°k»èvû猬Ýc¬ÃØP—A>^ ¾º&‹àR$€¸3âxþxÁ¤I,3žSަ/±œgÔÎëÕ]„Uä,>\˜YXتêøìã\³ÉÌÊrV„]HqýKÜý±4¦JBNyyz"Ž:í]ÈYúß&«µÿ[}«d°ü9Q‹Ôǽi2xÂP”ê4Ú¤mƒ¯åL³ +óéy¯KG¤_fî–€mv„Œh<ÉŒ*;^ÊܦI“•aëSÖé²ËÌ—´¼“ï–²í}M;‘}ô¡ìzO'—H@I-ا$háœ:æ·õÚ:€Ý~…³K«ŒÑ„¿@ë’{ÔZisæ¶Üÿx2¸àúEþ´ãH¼7´é rÊès&ùðæ“,ÌêЛàÃp‚ &øðõCïx|4fÌDtâqÊç ÔÀ Øìƒ™XCÎ)]Ég¶?,õj¦É™ÔLŠO­×¶£“rÂW=E#>³{(Qþ ôt ¢p wäºÖƒ*œÖÐ5¿@ù(Hh°ß"ª9\„jÚ‹SÍaD5‡TÓY‚jðÝÀO^m›"Xç…³º¦'wsX¹šÒ1ÊFw±žíÖ¿-h:pƒñ‰NÌÓL¤Z„uJ1âÊ'#zÅÀM­þí´f‚ÌŽWØ‚7A.§º{ýÒVó((ðï³îN£õüûÒ½×÷Ê"fÐR›K$Á9öȺ.7°Nû”óž‰NøCFˆƒºsèb锲*á¤ã 1’N0è|`žRÝVcgçÝ|{·»Óv5^¨èK3Œ.6Awš¶ï•#êy1f¹GÁKæŒúîïÎN¤.ÍBâÜÚitI0 OÌ)‹Köt„ ®©}<À\®sήƒÉÅÍÂ|VÙ’B¨$'…åS’È&<}°À $ì¾Úîþ‰ íî~§ »ã¿FW:ï•`(­íg¹*–x~ _ r÷%Z+¸Ûy3áÖ?¿ËÊ!óQ¨†žŸ£nÜD©9WaÖŒ¹ s[}^mE泤4ðà¡QV`xîèü郦ábÓô pó¢×5Ó ‘+""«tÂF)¨ÔÝy:0¥¯¨ÀNdÖi†Öo{޲.8‰(bã3}§¸a«EýÂ}À}c[/¥°žŽÐF¦Í SÌ¡ú7·ë4u|†ÓffòäµJ÷]d”–6•U?êMé„Q³÷cÇòˆi‰ã‹+Ž\¦³¯ÿïñ`änµ1Ú®ˆäað+˜„ž87¨12n?,Óæ£ßù»ÈÞÌ(N§~û Ùèv×1eK :(½éÌK4w&Ö9hECÕ „ºQï72D³‚+ÌÜ;xA¯‘(J-36¤’=üå°{ð¸ƒ>ž‰NÿÄn!¶ìËäúìW¥ƒŠ¸‰È2 ›˱¥ñ(Órhh vZ*`ë‡|þ&Ð`_ˆm$t˜!cûíM©éHý6¦e­­x’ÇÀGaýUï­n-KžÐde½)ªé“ì|L54Y Çü\ TêW¢: ÅV‘B<$ÒêçÓ®ŒÏá3»óùLJ8j™‘(è˜{ú} ¿Éé„Ê(™{2cz&zÿ»Ù° åFݶ$!SÞ;=©‰FØxp1OP ´\¦“5Ç)j´ŽkÐ=Û‰ Èz€Ò0š!ÜŒÞ,ý—Ð[ŸÚ‘3ª_j•ú¯Õà4 ªÆ%"bòæ'·ÿ¬6É ò»Kã¥`Êh*<Äð¶–cYÎÏúŒ§¥ÏšAàþ`îHÒºåÙðÌiÒÜzÖ{‡ò\¨ÀSø¸ÏáͶ èÑ•© |^š¤ÏwžÐÏÆt|n0SÂNˆæ® ~Wà@Í>ÀðIÛ…Áá’²5öŽühÙ|–cº°¨IÖªGVâÙˆ°gc8bз4ÉÒgï½b ï¢h+o+4ÅØAv7‘À,µ ,Fb¯Çþ.ç2®ò|&ì¿ûå"ïnÝìÝ9ÖØ{« ƒa" Hˆñ0:¨}ç êÍ=%™Œ%´æ‘–xOW#mƒ>Ùן´ðOÐ3‹Ç6b“a®€g4«‚fDôF£¿¾1«Un<_+:æ"Ï5á\ìQošžs­µˆó$²n9×ñø?G½ãßp#áX™Š…ñà|Z%úß—ÓÈá\èÍÝÐ÷ã÷(„!ÉÍM.GdH2ñ ÇKŒY;̧¨S¡¯’´í4hWìb¤2¾JàGŒëx9Õ¦SÖGÄ;ÅíæqÉHñ þ ýާ³IÒ\›eYMI3ÍÊ!ÙFþ8¸YQ“yÛ«éÀXLì:YkØSGFHV÷Ü–Eí(2Ùä¾k.|6V¤%žÃ†èMlŸ¶Qù;‰l’Ùý`Ì´S7q§[Bó'ÊÞŒc±ò¦ˆµéžP0CVÌ6|ŽÎL)D±¸7ûѺ[¸&?˜]ÙûÂ…öï…Í8+Üç%^t]݆Kéì’%krHGI‚ËpdnΠ#"v YÍZ½¦Øž‡Ò‰Hò]”f^’}ÀdÚ‘$ŒR4Øë Í”*ãï$ÆyA‹nˆ¡” ±­WtþmÁ–lŠc¦©™$ç]’”¥³¢1è*ÈßĦüTiª·³òœ Ò ›¡‹æ3ê˜ è,²»MŒTdédëMJ}ÎK¦Óx'&fT”VJ]^qœÉt6“”ª³ªqÑ1e0sSÕa0 ëŒÐs…SÕ… ,0§¯¯¼¨f«kª0 ðÂac¢¨wF´ÊÐ&L¡¢^§µ-‡ˆáYÙÙt4S°¦KøkEýbà íÆîi¢7‘ó©h¾‘ènl«¤Ú/¶;/w^¿©¼>ä_ÝØ"ý¼w|†‘á=ÚÎ8(£=`ö6öX=\Z޹±° jœ›g@üúD\”ÌÚuÄ¡œœ±ë@%N{'Þ¬˜œ»ÔŒíó´O”s 5···Ý~05S@›Û'…ýo½‹‹^©Q~æF\Ý—?# ¿ê3 6¤C±ÄÒF1º%ž$òþ”Gt‰…FW'æ=Ïz#ãìH„–÷NA~¹ÔÁŠ6ÿUW÷•“r£®G…"«X~¡Tœ'ºuÌ=ÒÄhvŒõꚌMÜDï©xt‰¼H²á(³I²5(jVõ/ ’ô:Ö‡¤ Yք̸eĘ&H‹í¥—üøl<`5=8»¤™rLôBÞ‡aÄ„LTâ<‹²°$RÅuîÚáÑïK ŽiÎe¸;t†AɸßaõŸÊÁXö .º›…óiÙøµªÞd¦×ç½ÒJŒY‰ÆMâœÚƒ€ó¤ð~"ö2]Z…,°± sv’9xŠ…;öÔñ ƒƒ‘ïÒ¤SóÁI§ü{ÌgBÝáP •º‰f›ƒFpúeóW½Ñ[Ô+<<•¢‚,bG\¨Òð"”Éaj< >†Hê Ï}/k_„BýØëk8˜œVE‡ A  sˆé‘é½(ŒLGŠè ræÑ_¡Â-¡™ÍéŒä©k >æ¼.pUHh¥oα¥VbrDÁ±SA6ŒnË$lÂkGÙÉ€D"L¤rsna-ЂªTônËÉ`&0CšPÕ/$l70{kÈ"1†j g­É‡je½ ûNGmªèÉŽ{nÇ莆½ƒwytÇö"oÇíé=¹µÜ; xwtüþ!¯Q*º£í¶ Ä»èâÞî=e ^5_ÂAõãJ2™Üsžù&wiPFŸèsœ€r^!:Ôê3ï×d•  ¶žÒh$.ÿÑ7÷°+¹©çu†é0èËaº/þ üFz²$/¹B\§.TþSé>aNSµMë_æ¹9 m4D o_¯ s Ú$r ÚÜ] Í‡Q›-…å«T~ÁGõ(z1…ÍS2ýðÉ«}Ì—-xûã¨%ÌM¥–ZùOÕÖãǘdx­)Ç4’ßL¼Ø ™Cn¦¨X¤ªÅKÍÔVÚ±tì4oÞ2½dþž*±—GÇ|é‘`ƒ¸\ö÷C΋u±JÍ7yu΋Ùzµ·Ôï݉öœxhM7ä5Ú‰ÝYªQ•lÕíjüâú sW¨ä]Büqå¿ÚaVs_™zc(`ߜˤjîN¶îÇÿíi9ºÙl9]øG¾Er§[SJ—¸3M•lSQQÓº˜Ê¶¦Š«šú¥†¼òž¨¿ ²ié§Éu€Ú•†ð¨‡lûÎã/!{Q‡QqÑO M'þvQwD/ƒ©§ÛL]h=Õ‰Þ#­]”qº©zÒéJX¿ÔYµ— ø²ZÜZ‰;¿¢iÃ8õ^<]`U¾L¿MÏ2)¼%u¹Zbâb1a‘ȼjªDYN™>§wmÝ;Ó”¾%¦=Y+XK¸›×ò —Œ*%!A™Àp…åc:ÖÈŠWÖ/"[LI¬pöizeq5j<®(¦‹ ]/<©˜´ð`’Ç·{°˜¶½_B=—k…À¨Ù:Iå¹€O4ÂNnmú¿Û×þq›°ÁwÞŽ÷0^‚ŠøYvFã›b)A¦6-,8j“ʼoB2äW±&–×þÃrÄã”›®ä½ÁNÐzøi=ùéFði‘D]&ÌopâÇÞyQ{yLXQ¯áÜš ô™ÍÕJ—„Ð{Tš‡Ò)m0ðôYvnЧ=äN²ÓØ¿D®©!)ªÕÊŠbéu¦Cöì?,Ï."D¸pưäcʱè„_ØÕÒómßñ([“éÍÛ¾"Tšò+9[7¢:³ŸïðF\‡ÿ‘`S®h&ÛªÔ*xŠÂG#…6ô€ãêVžc‰Õ{ æ5[ÓËpƒç! ö…îšVN…"÷ªéữæáטi¶“‡Ÿ²?÷:/KRoì B0:\ìˆ6ªoRtÖÚ©QšvÈR‹íÓ«é–¨¡åÚAK²‘Qj,£è_<Ô¼yÈe^êš]ˆEñê[9c…é 6G(¥ïE±…»/'¨—+1æ¿Ýcï‰–Šø¼î´stÆ"œ}A-¦¡R8híUî¾w[¬Ç-¦ §ùpb¢‡Ó|=·Éäªþ¥B£V{_ë?ÙWI›ÖJ/ÖR1ɉ ßvÌèìEuÀ”=¢ð™#ò¦ô íî¨5Çî½cð1¢J‡—Æ.àÅ&OñÈ„CRŠº zÂoê¢øŒ.Ì,9eÎ&ãÑ©ÉÏ Â&YŸ£R(¥yˆ«Õ`Di³hº†\\€Bäy·,Øt+¸F`oýŽò”àóIéhšóiõÅ'ÖµØÝ ÷ÜÛîs¥R”¤Äkœ bèX›²tAL™3h³"G( üŒ:ÍfSÁ«²áð_uìŠÁTbÚ­tØÆ`D1t=’`HZ¡ùD »J[¢µÚ^e… ¼’âÁúV¾ÑÞZâ{WHí¤Q•£ÓÊ»Qb8À6=‚ëf¿6l¹l· «4G`n…†hAeü à*Á‰Ö7s)ÀÌi­4¶º%ZTö—ÚYaXàrb4… 'rFjB&‚‡¨÷¹Ãõ9W )b¨·r› ‚ÙäÊçÚ’ˆ›O½×DÁÛ–†Øó«ƒ¿s³1$𓱤SÐÜûg9PÙÓWj—Õ‰øþµXÇ4m!P5 ÂMš©8°Û1œ„A‹} ØHC6YY‚y1!c<•hS ƒÛœHX"_R¸=Lé,³H‡Í¥¾ù’rJPJ'#G%Ët_…DZcbŒKÀ„8îÅÿ,ÁêF˜ædIr/6’Œ+Õ"nà_î{¹÷á{q×Õj s‡âX ìjÉš4îSÿË++u…Cü÷<=èŠpúåüs•oX¡0”Lk¸}°9{‡^“ßîósÖ@é¤4·Çï+‚MõÏú};‚ï*sÝXtd¾[hûÙd`O™Æ$èÙ"Àc¢¢Þyæ¥ÿðå>$GiÅ+ 〗pòÜÑóqûŽNm3n‡ûƒ)G§R=µöx&FäÔIMÁ½^‡¨Ÿ³ c˜“½ŸC'Ìуˆiž1­0©_¼!­ìkbÙÏ¥–ÍjÙ·ä²ïÓK˧ 1½ú» KDö×Ç”­ñ„ñ»‚J!ß\N…Ïd½ÑT×?ð9±Í~sçÚȯ%ÝUÒ՘ʽn6 Œ¿4Oà¶v@#·¤ýÀ­F_'×)¹~Ä´¤oi½Ãªæ ^ÖƒåW #Å<ä[€™ŠnãD•÷sžðÌ4>ÿ™-ÏÊÓþþt/&TŽ1Œµ1[FlÂgÇè=÷»¤˜aÒÉdTúU°„+êHipÁ¹DÆ+Ÿ†Wå“‘cÙaxÜn—›ÿ8§Ü-\Ý a‡DxªËÇw01ÜÍŸä!BH6˜•EÉ¥¬Ò%Ma熭á•Ð%«%íµ‡`̪–ùÜwªy9LÅFMâbµMÒ܇¡!‘0 ”ùÀhT›öhpº`Ïi8쨣Z$ªÄiFc ÷H0G©pJbÒ„°nT· G§jc^ E“œï”¸µ­¸žnmMÝǨCcbì•k*osŒ.ÿ¥Kƒó¬Š™?)$N‘t¸}2{:Lt%:>4lS%‡;ã‚ AAº eígS]ÆJ‡¬xðⲯĘ×RÙô+-´Sư­Œ4…¹<>sÌ„aìí¡Äí–Ô1 YÐ9ðnQ)Ãy·x#¨HE ZyòÑúzZœôâ òàË÷Í[g»æù_Tƒ¡³y2iÂêªG„ݤWù’i`ÞÚ Ê¼3Á#æø®Èøüˆ‚¨ûÓ´„•ƒ4dû0 pS©‹œœ A>ÙðD'ô Áöé}6<¯y†g[;6AŸ2ãeÓÃ.]Õž<¨k¤~¡Î%–TÕZ»@=ßÑ]È— ÙEôœ¸¯VDÃù=¦Ø VñÏ!U‘kèzæ¾³X•2ÅêóUR)1±D8!*¥[™íóf·äŠ 8sºdí»yâßÖòç ÷&L¡gè3)‰°QÊל°/ÝÙZ™öï;^NψŸø5CŒ¿`ãÙ<„´ŠchM¢õHJîi59]F}±}À.zÏà.ŠÁ¹Ö22wh‹8C6Y{C9rÑ³ÆØŠˆÏ„Ù:uk@ŒsÀ[Ѷ㓱œÍÃá­:ÿCMFÈäî B@ zÚ—"ΰ'üt8>‚!è —Z\z?éñ½“yï€ô3`õý-OÚþëVWýoêÑã:èj¯ØFC iÔS̈&EëmܳJ‚&†3#Se(©˜^“…<ºÒy÷:yWfS>’@¯z Š4âIâ{(†ÿ¢:µÎÔú¯ÿœ=•-@Œæ¡cU6ü Qlò¶HR'“ÌÔwŽhmE$8µlQ ²»A!•F…ÅzÀ‘ ‰¤~ 𽏠›•AzîÔ¬ÑWc#½äê—ÿâa°k BÁ8¾b×÷¢µ­ŠŒœr2”=éà_í½ „„ÀE ¶034vªMO‰-æŠÀÇS@Tw…$ª´ç¡ß¹C9ºÒÃÔ5½¬ÀΟã¨Xë”uަ‚!J.ôå…աѤêÐ\¾ðÄÙªê74DÖÇýÆÇXïà¤k]^!ñÛ*Q펺!j½8ºú€îMæàÍÙdý<¢jÔÓK„1Aø’ÕCC`` EøÒŸ~«ÚÜ‹ÂÒaZF¦ÌþtÔ¶,z¶[r³âa1ÞeZYÓ»‘ýO!­×E¤cÁ¶ƒ…aÞãPx¦@VŸÕ¯wŽ Õh'Ü»]– õd…õuŽƒ­'…Pô½¢õ¢,6ìu^áÏ1J)‘Àç¬ü³º@´Í«×À+±/uÿV9¿©“Ê=¿ñVÿÓ¶¦ "Î2€5‰\†]S†µ®° ͨG¤OÂz áð¦ØD³š.ºf÷²ßBï‡Ö;×ucqjÑÞⓇ¬l;ÇCàêk³ñÁPX¼åd%Æ_ÅÍÂU Ö‘bŘnäsuà?^Ët*g¢ N×È@'DrdNô8‡/P‹,ÿf°üÑ}Ø h`Å¡_š>£dšÍZõ žX“­/ÏÓ³yPìlU £d¾éE9±w8@ í1ÀÂrFí ¼K.Zt胬2¾b>dãgùpñåj/ÈZXMÊ*ÑNb VîEt,a7ö°mèã@ì0}ÊA&×Ù¥Àr‘O–~æ¡Õk‹ð²7Ä)G Ûé+ù vFÑÖØXvkÜ:]oÒõFD×ytí[Ø"ŠŒãÛŽ‰ƒ ˜3ƒv„Qt<È™(ë,rÆzŸ,Z‚óU3ó ¦Ñ@!&œÞ¥R gÓýèS¦3ƒÖŒœ1̶0ãw-3V3“¤°úŠíâ$õaÝ|è'LDf"ÕBâ¹ÛÔI‡ú®(ï‚#‰ª¥Y5·äZž½‡ƒ·L.†V\ã< wsb@Üe~V°®n$¿‡Ò?î‹éýPgoÉo8¥Üš¦1BɰãáAHf ·oD¥ÉßQÔ[üwÉ&ƒç.ÇÁí-GœYã.G*uî—ã XŽMç¡e–ƒñ)–cÙétÞÐΛÔú§TéÊLe×,DoŽç×¥. ­™Ì&{ëLr`ÃHVòËÑ`渹"À4'Í.X*w‚^°öÊâ‹Än+‡¿: ¦|zƒ¿q±½ëʳ=É-y.„C Ž\‹Ú"xu.!ª¨Ýo”ÚJ»C¢´ëQª•M2›æ&£MªwƒñµCc'DœQTØJ3»œxU”‰ØŒçXÉ̸ñ4£°æ{AD;͆6 šì=LÎ H¼6 S©;̧,Ï›å¹Ù^‡³­¨ít gÔ´×.8fûbÕDmß«ï¢f•Š“'Uª,Û‹×kÃñøbjTjI­¶º;©ŽŸi$À¯líó, Cx/¨¶¡ÉÕ éeA†V[vÃE¬†H@àˆ’y|†.ؾgÿ'ØÖ>Ò€Yx©!8p‹>ÞèÝ`2‘yÁ…æK‡÷ HD¨ƒî÷(’Rž‘ö+dµ¦cÄx„°tl£ÑøŠŠ±& £kèR2QKn‚æhÀ<ðm„4mrÜЋA`—ÑëBáz-¥kË 8¹Ó^͹c§%|êßã#¸c”i5á ÓÙúúO0"‰Ly×2ABÃÅ‘6äX™L€ˆð¸¼9‹DœóÉ7Žä­.òp¬ŒµŒ˜VZîqüñ¤E§"ß =âZOœÁ›O6‘—‰v~Á! -Šâ÷ÊïÉc˜[{Rt¢+£È•.ßþ^53hsBµ^–< ùÐ VäÐUt· -D,½’Ž?‘O1á»î^Vê¢9J|î\Eò{{éÌØÙk=¾uJHŸß+þê£UŒ+`^$½¸Œ£ì{rór6Û„jSý¢FzÓ 3GpáqÄx½×óÙóØJ'uê:…ŽÇá yQÔ‰¹ìŒß¯_#$pWР¿q4§=aç±–ROý-§²dƃiöŽy»0¯d‚ÀÖškO¿G¨Ý*G¨¹!ÕšºE– –ä óxB-Ÿ'Ôn•'(‡)(+$â@’¤,[Ú§T" NbåeÒªä ñõ©0r¸•.†—Á‰)uYàÜ<R%äu¿‘3AëçåŸzÞ) ’-aAWbYÿç•Ë9ª{øÌÓÖÄløÇ!Íÿ§uMŒ™,$ ÇPÁ°*[æB3æCùCØò“ˆ-Ç™ çGÁ¦84›â0Z´ˆdp{QÝÞ6ÓÊa…–ŸÃkÍ‘—K5)2¹9‘:®³D¨³BDþ¬¸âO‰¢–ÅÛ‚1œ—§gzFjÑ9J€¥xAò8¹BžP!LªŒ+\ƒäŠ¡OéiÕ ´ƒ<£kÕu:oR‹$dßo_ßRä™C<±£ÃöÇçIËêMh-5Ÿ:šº,w‘Q¸áHù̉ÇZ_ #¾ù‚ÝøxñÝØáíxh¶ãa°©í(ëd÷d'½)ògÊ€ŠDD2wsâs·g{µH1Æ;£aC êl¯éÁ9Bþa©ÝYeü•6úÇí`+kQ;¨A¬.Õ¶AÿPŒÅÝ‘–âvSši–´q=³“.ç¾ýõ×Ý…´¯Óë™Ø.±®QÐÞ)T0ì Þ5½¬)ÙeTÔ–* :žá0ß‹Sœí—Z£¸Q=/±/" aÎAËe£“+cÀ1“’1pAc#¼lsU¤‰RÉÐizçɱ†cçT²mDbªXcäs)Eµ.ܵ¯=yø ‡'ÎO|ñäáƒâu_ŒNxàB j ‹xÙÜ£">%V yT PÇÚô£MП¾6ýðÑg™—øxPú|p§ÊÚ‚é ]M¹§Bá‘„›Z1¢u49à¯Zú4ð§Åœ±ÇÑ?uj ;øšš=/œ0l>á܌ڡsCæ¼8Ž‹°­Ôñð^æøhÕþÄ¢F"až4/ D{ÃËVð[óãÉk–ÚÒåkµÄ®sUýÇöq³aa ‚#ó¼¼Ñ*° ³%xÞ½ô&•¶m]û°Ñã¥åÄapþ—:T½šgâæ\œؼ´ÜÕW»|´„©*]Á81‡0&w%FB–˜ÀL›úÕY%}?½f$vɃ6x,·‰"=Ó(ÇziÍÆëþD±º Ú‹.óH»³Â²wS²(¥„yTÇÊxÁñJ©æ=},Ž/.# >¡±`ûô¶ÆúÌFpŒ}_+‘áë9|ÝàÎoŸ}§{L›Õ¸%Ý'É"]™"ü’p…Oú¹3! réÄ Å¦ƒ÷ý²¿ûkp¯aIêêßc>î¾_?œ§êI©*Ç(±>eYÍÊgaCI`(*òkŽ« ,uJU´©{ „Géµûç “ ëóWOo"ßÄqkx¡‰Ã™öÂãS%NÐûA&•¹˜·<1ô9þi¾í±>qãlk÷rŽ^DHc(N9"/Êå ÿNóœÓK9é\‡™µèÁªÔ¡†Ø NKú”y×ãð'™'#ý•Åú½Óo4]0dxÔÕÍãâ:JhÎ*Q‡Â©5KA£Jå_)åTE÷*6Õú—9~#éXö ÍEØ^3€N¯ ˜¤½ŠX4}K[NfŒ’¢›¶è?éMàߦ½šŸ¬á§äÑLÌZBç¼´ÜHóÉ™L£Õ²¿Š£R݉ôZ%ÓEª­ µ[LoŠZ¿H©Ín7s3£Ò­lZýV-š|¶ã«¸ÞÀ空ÑSEÚnÂ¥¥¦„Æ›ä2òe««mÊ œHß/§ðË,ÙQ¥Ý‹ä¸J$’"†ËûɤOTéð'Ä¡™±Õ£ºŽ²D+RBGï„{|VQG—~ê…}Md›äëû¸ûЋ½zµíJ’øÁ\ÃM¼±”C‹Sh ^Àÿ÷6Âì{sà©¥“\þ”¶¨¹ÞŽvS yÇŒlð‘>±6µãw:Šâ™P‹!Ë=esr€MOr¸õ܇eL¡Ýt¬ ®!ÄË7È´Am¹°wÑïç1¸5]#ȨGFO¸ïÀ»ÞiȈ®©"ÜqŸõâÆ9€!ŽfÇWk€®¤Ÿ È¾”wŒFѯîÁ„QðGŽW]—Ú 9x|&îT`á·ÞœŒužCñ”ÈãŠK_5w’Üó]ïîƒ|R⃌´ˆAvA¢¼'…™ýà¹ÆMý ¦˜`©‰!Å‹«À„â!B¬¨§å²w¼ç(‹kE¬«dV¥â€Hè.UÒÁ¥˜Ët ‰õ•CGSÑÄã„WÚ‘›©2ß⓯²$ø~änRyb—‰NÕÒvòC¶æ<%nï„&Ø*`ó[†@`6ZÂ@Ó™ ÿ±‡^yüi´ýö-Ê?ôk×ÌBî9d€cnüsåpc1ž©J½‹ 憳qª÷‘OÔi³‘Cm:1ú³•½21ßµ÷uLä{¹ ¹“zåFezÀ¼°}§·ˆvþŤŠÇ_@ªðñ^'¥Šdk>·mqÛv… ¨&-•ï¡4Ï;s“÷øÑFa( ÝRŸ—­”5„£ær QØ’?%9S¥_¼9ïÅZ9JDþN ä¼Ç=¿‹^9I¹gWµù!ÁEgׂÌ?»rm…ɶMðõÏ­e­šQ°'vz L±¬ßëoŸd£i&u¬íMS=H>8aÎ{¿q±/Æá <~U6 Ûï‘öÅùC>³§¡õ5 È­K y·rPÝÐI‚Œž<*D9Ì¡¦®L$–*ñ²BØÐÃBš §ç¾%‘ÙÔfè÷´"ıãø£YãkR[bÁé»Wòݪþ.òà)T’'å½¹f'* ëØ˜‰-tŒÒ8P¥†Mž¶ù…*qJØœBµpRaø²Ü¼B•6Õü³íÀ9Ûæm e¦ÚIœlI¶CVO=ÕéÚ )¨ÞZùÑÆ²`K°‹¼ÜÆ-Û8/¯1µOz å5æ_Un˜R•Ú×¥Ö V Ž/A1ÁìZ…Ì® ‚m¹¤Gu›¬a‘ JÍÜrrΚ~=¡SdƒËËxe4)ù©~!÷8GävP_z}Äpg0ÐhÒ)ªÊÙI×ËRMÁÌ8ƒ4VVÔõzCªàîxgLY˜‘ø„²{@§…Ù&[|QœàÛqÔ?pãÁ¼Ê÷ÓSw '«J?¨ÀVŽãþÁb1d‡øwÆ!¾(?[#W¼“ibQŠ KíA fOãi¤{ó|—¼ÎKA§¼fRß+áb$ ý¾Ž©ر'ŽÓ`]íAC D‰}1À.ý¨wO:Åo uIXׇ®£9=“^$2]Èô!F…óÀªÚõΑÅ}·§œ?f-ÚcrGJ¾ýÁ ½*ñˆotî¶ä Ê—jÓtÁ«°Ê #¹Ímr±9¦o9À0ªHzýäGT¾øzᬵÞö9‡Tã"gâ¸i/+s¢ÐI눜ó%ÎåN¶ƒÀûPXô߯X",.fPÁN» ‰Ø¹ZÔN¾Ô¿ê6-æ }î[ÓÂZî6ØÈ§P_TT[@X{˜Ö¢îä M7•™"%#³5#Õwߥ%L|üö[å•L§Ø³|Qlß1us ]©Ø‰s€i=ë°[SØ…ûsª7gìÞ>^ö9Pת¬¾ùðʯmMg“%à ÕÅå]ÄÜ Å˜R ÂsŠ~áLÄ Tô#*ƒç¢¢7%V5™¯(CÖP½ËÙcA)‡ˆa³{37õQ`Ôã„ç¢Ñ\è¨O• Ñ•:{:Éz&Œâ‘¤L=á!N1FÖ‚<aáèiSÛCï Õ› ÂÂÞ>®¹‰Ä,Ù©T~vÆ–_¦™…¹V³­8­À´_N9Ü+U™œæÒE›]]#–0h;Kí½áûÞ•„%S$YÕÇsASc>îÇR $”4Â&_Ð¥|Î茄’…¸ ƒ"pK…ˆ·‡°8ÂÒ@   <ȉî}`‚ci,R.nŒ| üöïA‹7I).È&K ,ž­Äû!Òz.çA°!žxS|Ûûá j¹ê|CÍ;WÑ•—ütà$?ä'?äDŸ˜˜õ'žªkéíIBï1·a! út¶Á<,òžºðt¶ ²˜/Ô\¬:çY{O¡‡Ô‡žï½¡Oô†ÞЛúAsÖîFÎÏk¹=]Eí/é {4Çöø6œau†=¾‘7ìñßö(å ûÊüa·°¹¸3ì›)ˆMåyÖƒØôíž;ìKal.®©>‰kâþÛ|¨K— 1[ó}ï}a @ºº›S‚µ&.‚Ñøç,a5ɯô(îMc—6Ü­x:¸"!¹КnVµcfp üÝÁ¨?¶Uç@'6átªdKÛ3»@4YÈꬊ`e»ûhn~²B_Ä´o–ì90•{¯€pÖéÿ|»ü¬ó†«é¸±XȖփʵÒ÷Ó`:æˆ*Œ¡Á D»%X#¶¥Ã—¸­þÎ÷Æ«¼“h°FÁ8Ü¿ÀÜïëæ{¯¨½)5K7m~æ3Œº½ê²¦ßôôfÙb¿øß<0ßÔý!¸/©ã¾H·üŸßnà ÁÌû9ëa'ÇhM;!"„z_Ð$¼it@,}eÚélïtôf­VÍ/ô¾×/%–Ò~o:-üí/p {½ãßîWÿ5=͆¿×«'Ÿàëëë77þ|ôðý\¯óßtÕ®«ZíÁƒÚÆ&|ÿH­×67­ÿM­‚¾D×%Ö&‚®ü6Ž]pÜvR49<e~þQ®ÿáùÿößÿío­Þ±zÝUoõ.ÅÏþö?Áuøïÿÿðïÿo±&ûûùŸøá¿ÿ5¸å¿³ŸÿÏÇãó*jY³{˜Kýí÷û0‹µo¬××?yðM·wÒ› ¾¹…ß]î%ûÿîþ¹ûÿáƒáþ¯=|x·ÿ?Ç%âËÁVçõˆ*Û ‰ÃN9Gdßoh¹ÝBÀ™¹¶¦“1VšÍT 6Ñ¢°QݨÂñ½¶æßGI,ÓñÉì=Úëfº-áGŒ彩–žF hfå­™†Ì÷ÏA$=OFƒžÚÊ@²fWçÛñp<éèú"Ãã‹?çÕ×±gSÆr?)ƒ¸p½LÊkã)¶€Å²wˆIÞdºï¼K¿­%/QæmYÏ’«Za,¡…Öö,'A¶QÅv¾{¦Öå…íeubƒvÛn» ¯Ýû@ïÔ<­EWª¢úèÄ$ê/ábøx²¯G„ÅÑ{ÁÔUÃ;? f|cÆnº©[*ÚT‰–ŽS'ÜvÄ¢b߇.Êóʨl’}{Ùƃ¾ÇÛž•¢Ä`PϱŒú¨üßCB÷ºæeY™<`ê(³”IÆnÃYžAí¡÷¸ç¶âä9Ë‹Qd'C±•€c¨——Ê“{‘Á §eYC¬º´mhÈi»žîi`K@è®UZº}·?‡:p!Z öß ÷ýAýnÿŽ‹w{hÿ{Y`ÿÛ¹3F×í˜ef¿2kàËE­­µ£«µö5ðÖÀ`ê>½5ßwg ¼³ö޳y´‹ZyƒOË aZ+ßzŵL²ÙåD¢ùt¡jDO¾ôdÎäçL:5¤ñgÞ>ÿr,Ån/Ï9‰hrÞÃ<óTk¥½¥Í{í-¡u[ЧRœX#5¨ÀÓ<‘ÆÐ "u {ÊL­úýÉ: §ÿDåÒ!齓¢`µ)›ÊŸ5·6+½LÖHfØm†B*ÉŠªK°q /±šTÈCFc•M&cjÎ1ÂëT Ä2X0”r“¦—|F³Q¥º¤Ñx®ÕøÎl|g6VEöÜׯšÏ}¡ggï`»óS¡½· {½ÉâVóM·¢P–}¡eÚ_ïîƒÜµUP³½ÕjbÆÎÛ[1 “}HlÃ[òsÿsÙˆ¥³é–¢©Ûil·ó‡"ß[4ðègò:2³1÷%F+‰4®#^³ñï¼´Š™½|Ærpì|ü½¾™¨>-ÉYµ½WuÚúZmáæYêsð4‡RÝ{^^{nŶþr¾mÝô7ÝŸ´!^Øí%9à£Ï }œk©·£ ÕŒ‡àCm^'4Â0½MÿýÖu˜¼ébœ··0«¢&+Á ý˜°´¿@Ù9ªÏï©@òXO`x”%̆v]¾ºé?°.¹—Î@Ý!yLo—9Û%ô´ßæuÓëéàÄw°ª lb„+_žžQ}¢Ü^*%ì×™-wùK»im× ™ãÉþ)ª/©»a;ˆó6µ’U{ „ 8ê.IþóÀ†øê›’Ú4‘0Ɉ°–1è$q)––îË(â[˜€h‘êv‘êù‹”w.…k§r36¼?VúÜ®rŸ|•¿rIá`šy ¬á$À¾ßw’XÓ~‹G­¿®[zßþÈ.˜Å0³ÍE³MÙ!(1ír2A‘zå;±Jƒ§ƒÕÁÌå p²)·\½D’Â&•$àâðþ÷½I)°3~ÿ~0Íî™éÀ™±S’?z¥’Ó¥w|¸²Êøµƒqp´‡Ñëü–ã-Äô#Soÿ6£*ì´3âÖZs­¹E¤x½±»#æ'WIã å‹O%|?ßžðVzNI'›x™ÊMçt ŽTÜÄþi‚‹ gª‘úPI¥ûªÿh"=ÿèfay»©%ú&ªÀo¹‡6œòi+ÖK|ú:]±_äòü¿ÓOãºNþGí.ÿãó\wþß¿ôåø?Ñÿ7j›ëõpÿ¯?zp·ÿ?ÇÅ»=ðÿv%×Y«íÎ÷]ë ÞŸ[¾;8W–I»‰û“ê´wÞâBoñóïÆs/––¥ÀTç8“q‰2¯âmú•·Jü’k»–»\Ž’ FÓy9ê{‘5k¤ÀLM¯¦³ìœlûƒÑ;hs½QèD¥Ò1Q*‚‚ÒS\‘egÛˆÔHtè1„xm¸Œ¡Š)=+ÝhYï‡Ãñ{l™qˆ­Éó©â;kUtÑ‚Ðz¯}¨ëýP£§¶"õЇŠÛ\ÑÑ+ñ*3 # æ‹'¤¢Õ¬Z‘ŸqKП£avê]x‘]½L?ª-ÐÏ+oáWa=§ßßúÝÖ¶„yI÷:\Sî6ÌëŠBƒÕ–¼oÃß~Þ<-öÂèm++ûÁ 7s^øíW¸.Òy³8],Q[ƒñRξˆÎ¦骯ÜYýñÂP<ʶO ¹œgpS†ˆÉ7’³òŠhYÆáà ’,`Ë—zô¦âš`©„‘¿I¼ú[µà«ùŒºÖ«wö^~¦@—­%Ws«‚äP”©¹FL‹š‡U„)ÅTˆö»o…sX¾4ðŽ0’ 'r›x'Œx~ÄËVbgNEW·… óNŸæõÂ*ÌGjh¡cÔV/®‹N·¡è¸’H J3z‰ñpŽBcúî6üy é°63Æ/pÏqè§ ËÛAû-ù\ÂƵWi-F-áŠ[ûfî|ëOA;š/ˆ%)!èÈ_õœùn}Ê—}»Ì»rD‘EÖÖmF–yɵM‘—’=·*K㯭aEÌ,nÆŠ¶ªÔÐwìANTiÿÜÜ{½P7òícú£%Ê:Ópˆ«mà*K·»‚Þ8¯iŽBjµ%º €µeFg"ïØYu<÷uÏÙV¾ ZQn+&ÊX¶»£øWÒwIòβ B‰ŽµVMï ~Ö{—hÈ(ÜßiaÇ\°uŒõŽâ6t)¥/œÝl å–dŽ3Þ„K]]ß^¯8ÏK%<çÈUÔþn÷E¾i«óúM…tć>OúñC…™ª=ßÙÙÆâ*ÝæÏÛùcm´;-š¯Úø“þê¶và¯ÜQ!ªx;Æï·dX[jBº0ù¦47ê-Ñ•îN£õü{ Ük¿2>×8:Ž^£#<*ác£X*’³ÌIÙ –·/*‚¥XЊ”A-ð:3‚g úìwºŸ ±Bóx›‚ŽÚ¤ƒ)[ ¾åJ¼lÆ Ž¨ ä_ìߣ½…Ãç„Fá€sÂ7¢ûá¼.~$Ž\<âðaüì–÷¬d ç<þ8z< XDáƒþp…ŽC²”»H0cM“BíðrpJŹŒ¼è~’ü°Œz¤AZxý'´lCwÌk‘­Âk«ûƒm§Î! 2AJ>b­~øe&&@&F’Áè¬Xp*x@a<¬m—Þš† ¦†iå{o &oØiË+È9”S99–¨·Ðûö¯ù¾0.|ÿu¢Šoawǫ̈Œ‹­õ gQÞ×¾æûæ¢@“@ ;³•Ipq¢xðh(I#6Î'­¸L0rW}Ù`dÚ¾úÒ“CöÁº_‚Ô‹´GÓGLU/™ ΞØù&ÜÛWÙ ôºã3ô¸^‰Õô•¥3Ä&g9Õ}û÷î=ó*ì,=KvþH@ )É7ZtÿºTK Aæ³Ô7­Jq9#Cý Dý"-p¿šî¢€É9 :×2[Uû©;^Ì ´® ¶¡Ù$ss¬+}’ÌF£Éý%{./PÃÓÂmbEDë†# ‡}IU÷:’#t×õ¼.ÐÏþø=•ó#‹÷T ñ‹õ4’`¨§@ò4Éq?[ÜC¬šaUux;áF¿«&{Ë;å:ÛäÕkµÿZ=ˆD!nP‚‚~æò–YÊ-z§m%ˆ‘U)î™Hr+&É­˜$·>=Iny$™èyŽÖÁV¹n}rÝòu΢ž&X&sÆ!¦Œ0ˆ âAH©)k™cQÿÚjK0UDhåÈ>~° _ÖšÖ›‰í^$‚ïðJµ1¿"7IºvÅ?V{[YëŠf—½×hD/5;ó×€©ü<·Uª=mUjOÉõ£ž>S{ìÍö>OF凕%ö¸nG Ôó—¯á:ë1->ÁÉ9Ιfê•3Óð7Ov8)mwR£w¥NY¦¥]8-¤¦—¼‚»~È{{ö9Ü_'RÁ€­œ ÇÜç‹1¬t Ífƒã*æj¿À¼¢ñAK%ÆeÊÓ=u “Eib}˜D‚3íõû÷§—G0ñdz #ñåçÕkCý6ôÄè6€ýƤñYíÛµÖn…ýÉþú|íÉ:¾ [ÁÖêÔuŽ\‡Y9ÎïzG@('½Á{t–}è¢Eè£þU÷ Ûñº'}«¨#øä}¦~ß#ŒÆ#½Ÿ~8â­e±6ªŸ#sU¿ÑK"™“¹šƒüþi!ßsà(ËF°üÓÙd|e’þp9óôä¥W¦O&}™ŠòŒ8™Ve(E™}n–œ—ÔRÇød-H†ô²äL>L)ç6“—i3åFXFëó¤Éñââ¿4¯¥½Æ×¨Î >oXጡ#r<3®>ü®Ï‚•Ý” =³,©a<È ÷»% Ÿ­»Í'¿Ýð÷°&pÆRö•â™8#½þuƒAuJñÛgÜì ö‰ND:EYÊ¢Àµ µ;ñ-DMÐåX8ͨîÛ`²QOoi"MUœ–sȧÙ\°<~þž>ÙOiçp§1þ Ó)¥sPùQ@7.žZDžpò©®Sz{çãKNu³þ¡Q–¡ªÙÏ.²QŸÊq´¼´Ê6늘¡S5³¸eòõËÃdµZ}Ã,àß•nk§Ûüþx ´wwàWø9Þ*è#ôíj­¼²R÷ÞLøÈÜu†Žð¡$MG¡ðÚ½¶å¾¶¥_ÛZüµVPlWDÈOZFi>øÉvÂlxåo;~ïÀÇ1à(všLøÆŒê¸<ëv²=A8ù˜f›pSÇ³ÙøÜ@Å’ºÙ OŽª,¥Ëé%¹ûHUõåJ˜fÇZnï—0Óì_uõÝVåûvÎ(—eÕI_£ ³tOÇã¾—¢+”2=#ñð”ŠIbŽDàž|édZ»¯´®è¿²uâ'Ä „Ï8[Doá¶½ '×ÍÂdaļ¸i3r§·›’«ŽS7Y[Lr¹^3f{ü™=„ÕÆ GËléZÿ.ûåq8¿¿°™lí ;ÍQ›)–ª„{óud{cá´c¢£¢èÅ»TëôÝäñ‚ráiöMÈÎÜþ@w@5'kaî2Ñöi„ÒA_Ϲá-¢?àÊtEí¿y-÷-—7MOb4÷­%Q˜O½¬é&åýÂTÜ ÿÝåEY¸¦$‰0J`,˜??ÞПÈèÇ›Bøñ&l´÷¿ïT蔂¹9>‹@ìÚiì˜Dðó··w»ÐÀKÊäÍÍå¾NþòVçE¥(ùùîOôz\”¿œHxÞê˜Äg“ßœ›×|“º(7È÷ï«ä×SY6ï>ª W¾H¶t9IØDÑZlZ6=ûS—_™Ÿ?¥\/‘?ý ~ÖÏŸ¦©É>¨Ð¢GøIE¯l©=žeOñ{^PQ°I$?ÊN£3ÿx£Ÿ{ú´3Ãy”9ɰ- ô °á¶Î:¯ÑB è>ï3ÐÄ'ªð iø$7z’‚õ(Ú[ŠnŸjÉ?NÜ6VšÁ¹œäC}’ZtΩáH•.÷\ÕFù àáz0ûõ Æ0‡ö?ÙÏûLrB[íÜà;Ñ„lRòIJî¾ÐIÉëæÿAž.ñ|çчѣ®C1Êhv5­Î”$ÀŠw4f„òßFQ¤lau?—3Sx‹ú÷ÚÌSŽlì±WŒ±)Yœ3Gð\ä•ÙØí|Z멵 ¶Â~ À+u>ždlçF6õ%öäD1êl[ih…y œímRð‹òùó?¼rªùÌ}%F´æçÜ¿ÓͧX m\ÍIŸã‹—&Z²b efxåx´R“žëYVJ¸$«xè8c.ã=QÌ2äNšÿúädouæMó½=†?˜3ÝsÇÞ†I­-5t鞺·ëCäv€%KèÀ“…,Y¹ï÷ÌÊJ}™‘J'âÙÑŒ›žá{qRíâ¶CÎÄÊ[9qÔÎ|,bb»þ|HOæñ=%û«Ž¬/È›‰x_ÂQ]dìC&™Ø‰Ê]&å@Å$é\Ññ¾Ñ%ŒMÿ¦Y„E·€Šý?ÿ/Ô…€,г÷|(”ÖúŸ.ÉT‚-,Ô#_S5¼ôn™ßí–Ý,©—¤€Qæ7Šæïdkñ†/l,Ã#øÊüY Á`n²®†ý=ðöíÛ§j{4Eì#”“5 8îaÔUGÜÆÉàô4±¼Ê~#çK+Ú.Œ&O1Mc==4.ÄUŠ.FïÏÞÚA†ôꢃț%Õj ÿ­VlmÓFk+­ÔT%RŸøâñåO²óÞ€Ô 0‡§fOÛ=D爷‡b¦Q´þyCE«½‘â#‹ JE|$÷DŸÓƒÖ5_¿b]ïõyG}zë†@Ë9öi0…ÍVVôZ'«étïs€ø[G?ôªÓÒ_a2¬…Mã÷Í/ñªI=§ÿ7ÅZzñE°–üRt-°­ÖÝ%d}±×¦A“ìK·w».d’‘D†ÒNIg°–è¦ûØŒ|ukÈJV‰ák‹@•ìpæ£*}P¥4úÏW‰ª´DWÿ„°J‰&Ø]Q󟄆¼ƒ.Þ’ Д‡áÈ«°u- OA5™#ÐÍ&þÌ0M QÎVDä^·?Ó½ué|¡ÞF°KÜ«&×ÍhS¼°"Aö8›<¾°E1MÚ!kŒ–Æxþw•"ÖöZ+Iç%Ä´¯(©ÄêÖ% iPb _›c躾‰+4š×¨ýËÛ:óLš {&z4}7\m1èÒ—«*ìöX4ží­t¼8U²Þò. ©"Õ^Eμâ͹XZÔ “˜Â}+*áËøtUþMa´.‡³öoqL½$ì—öÊsÆc ³CbH9x6 F° F™›_­” – §a¡ÑþŒç†B±®Ø é˜Áò{»íÐv«É?înkPtÙk¥QH›Û·ÝíH‡ÛD…Þç»BŸ{þW.é»eÂAÐëÔAW—=-öÆJ{ Œ²Øøg©ÕZm—Ã×4 *cI›˜õòvÍ o[*æžçR±½i7¦ü`Ésšˆ !‡æ‘ñ³“™,3øªÔ: ¾ïÌ›%oSèÒ³D*&P#ÚšQ¼3 æÊY|_Ø” y¹DÉó’ò,ïܳQFV¼6s1”Kg ~Ò¥]ÚBåNE˜JùÔÀQýs( o%wÍJ†N†x!wom!e`6VÀœ¢,Ò±ž jãSøÚ|cTÅòÿeìïÖÆn¡ô‰K“?g]òd…)›Zg꼚ò‘,aMƒã‘à Þ‚õVÙL[q±“b^ûlÙgàšºT Õ¬ñlge¯ˆ¹ÔW,ÿ¥>¥o.èÙRÂCšÔìøPÀm‹MÇÊÅ•ÚAéšÞÑÜ·¡Kùmsb•ƒÓ›+ÉOžïþ$GkËÅQÒÃØá3ÕÓmTx0#7já™Ü fÝʪn"w ¢WСÜD/·ÒòWÜÐÁçîÝŠIBЭüzh=©ED‚»ûK(ð7’-zŠ Ojšéx†C>÷”ÞóOöÄ¡½ÅÝΡ½3oÊpмƒÛýp©ÃÛ1'fs±éK³ÿëÎÛ­Ÿî­?óé¾³ðé~Ó¥Þ½ý¥´Î8h™ ×­9†²Å ¦‘@?n%gÞU*q¶ ·c°‹· cñéÝ—@ß[T§¼ž¼KCKºâ õ¼[?Fæ¨x0׎æÒ o®‚÷§ÒïæÎޝÚÝàtøCiv;ÞßX^³K2š[×ìòQ'}3ía'C€ÃhYæá5rsÖ]ÒÕï]ç­aW^{º›ãÖ0‹Çs{(—sÞã˜)k…P–^0@*€¿)À¶|±¸¥ÿ8ýjðlÜá¿}–ëÿñ/}¹øŸf÷ÏÛÿêµZŒÿX¿ÛÿŸãâÝâ?vÄdÉ4ßÛ(©¬ž¤züøÅ?¨c7 ꨮꈟ¶ ¥Sw¨ŽK¢:Ê=ØŽ‹êøâ ~ ;ýöáVáìüfÿXÈvó!ßnàÎâ»h/ +Ht⿹0 x¡CŒgÅÒo­ŠÞ,ÐØûÁT“ÎfÞfÞfÞfÞfž77 `æ}Gõ¿ô†ÓñS·sÃÆŠ¦yµJ›GÕÍ'¥÷‘®‚í6ñÇD@£—ÉZÊJ¸ÍÌÎà],tŠÈfÌ®RmÜ&vÙ°×m{}q,¹eøÕª‡~µú©¯¶^tA3‰c§¢ž€~ªf%ƒ•o&Hdi÷–ަa¬ü&ÒøX«@ó]骢°‘¼™$M»x_´JôãÍ0³`Úʪûü5AcÅZ8püqX˜•´i½Úê5”ƒ´ÕíP;_à·S ïû·,à–†ÙJõš[wøZ_!¾–>Mn_ëv¶n†±uS”­/‹³5S+• •Õ]*ë+ÁœºƒœúüSñã‡ÐÛw ŸÖñB±ì¤ç¦áÁJ{ÑY¼³º˜Õ+A­‘X¤¥ß-k¶(­çàÔ,Cµà›r1&Ô‚pUŸŒ–ˆ:úƪÁÞÀʼ!^d+'×&ìˆ7ýwpV_œÕÜ÷¦à®BÆ0ïÐSÊÌÙ5ú‰ÿ庺ɢo$k>òSÀ!þ:@O×EZŠ€ž^-ôd¸áòo.Ø)˹ "M|´èá>šˆá\³É›É®é¦ðLÝ/Ïô%ЙþHàLl±.¯ùºÑ™þ8àLwØL·ˆÍôhAl¦¥ükgúCa3}~h¦ Ò'@Aúr H×Ä@Ò ö‹` yß|z¤fq¬Ò9³Íü9UT<œ¯IÏÂBƒ  —ßû蓹ô¹ÐQašçׄs”³°9MÜ.ÎÑœIúj`Ž'þW{œj>ÄÏ<2Ù\!¢w©>È!R0K±v©¬Ñ…Fjé@ï‡íp3ì²ÃÌÙƒ±ÎpZ Ê9¤†ªºÏJ¬|NPë¼¹eU91d², žÄõœld=¹¬7§µ|ÁLïœTd¯=#Dæggǃ‹ †WL“qyö=ìÆ#‰XÇâ1e.èÝ‚² Kç^¯œ–@éËo'Š_`Jµj*Š“ dx)´ÔTe<ñ$˜X^¬‰j²:ôåc4Ó0^wèÇj „¤L}±.PËÁ¯È­µ€À¸±MÔ:'<Ÿþc1ÁJ+(²©€ÔÝc³Kû…öS}µZ%f¨ä• sžhJr¥ ¬Î’ÍôÊ}‘y$¥­ùñ¹CÁ€+Ì ¦x? ; ɺ%Iz'=RÃÖŽ#Á›ÖšÈ¹åˆÐrçÿ¢™#;a³PÊTÎäÊŒ$\ ÉYÄWÊî»ìLÖ×õã~¾µJl 3°Ã’ED‰)¡æw54âr+“U§å&~²@šû$t_ðÜÁ[eNýÅ(s¼êvAææ¨góäÜкp€3’Å@æþÊÈr¡F´(²\a|ÅÀr×¢²[–›3c_3®ÜM§mIujqs4+=]¥ÖBÚU«R@oŸZÓj-¡iy5Ò‚ )ÍC<»¼´¶†m,­°%סµºÆÓ§‡9ËPÈ c1õN%3Ÿ€ü»aä߸^èŸY%ÛðU2;n³ï–UÓ¢­4gÔƒ#O eóu¸UêäZíúºœËóI‚_œñ+_ß‹ØÚ ^ËUðügo®é•|ÎJÕx}Òªßü,Z_‹U°ëÌ1¾ÞSØr¦;n”œo­ º.ªÚõؼ‰¾Ø*œ éK­¨/µœI(R2[ñÝî»r´N³sçÁžÞ:êià[õ´ˆÕ|qÐÓ¹ft‡‚®zz˘§K(8ÅÞž¯òô ¹zæMÎW‚xzëNž¹þ–7ì7Ð=ÚËã~µú!24>±¢1WÅØ1{çêùzŃ¿¨^ñàF®Ú_›¿§õ ý=/?·¿çáçô÷D3÷‰ü=/ô÷<¼¡üþÉý=Þ)Pê;Lê;Lê/IýhqLêäéîrÈÓw××pùøß¾ þ÷ƒµMøþâÿ>X_¿Ãÿý,×þ÷_úrñ¿?Íÿë6> ÷ÿÆúþÿg¹x·‡øßo‹ñ¿Ø=Ü_|YìïjíëFÿ†Æ“ÁPÕ×kµÄ°¸°! u#ÈðOˆžx;.?#ç¾&Nœ%ËÅaÄ÷FQSAO#$(£ˆÂ²œõ¦ê(ËFj’] {ÇLúv¢åŸ4p+v|íúxä<ÜsHþñ£jÀàÞª5µà÷ EÞ£³Y¦Æ“ÙÙX€{hü‡l‚Cþȶñ¥‘È»HäzMÙIeV±‡æZ)’Q@†/ïÆh°5+…«ƒ¾‘=øù‹êÀÞíÔêê×ÌÒ/J­q×åkjÀIÙák¼r+<½<2ë…æ]ønpŽôŠD¾°Ô ½vŸ-–ÌúOZÿ9PëýÓ‘¯±¾aœ`½ŸÍzö` fQ^Oáfø«áÓÖ  ¶oZŠ>?ï6±(½?ï¶‚¢o¯Öž¶>'=ÂgË PK¬¤ÖâÅÌ£ûÁ ‹sƒ²ªŽ²*ZÃÙÑE?|0B༳Ì<ßTQcxl‚µ€øYR?™dZ8ŠÜÊ`Q²pU¢Ã›ÙÁÁ÷é‹lr~)pØ3g.um—é7 äÍd"1nN÷¨quû™Nuþ¦—Ùå‹FŽpè_N4zu¸™$ïLô3õ›à“§¦ze×}þ½H¿w}2Xÿ ‹™ÞROC™Çˆ&)öpÏ–n1;ȈE(CÉ&LËnz²¹?ÞløU,N}kd¨[-à׌ěèZ­*ÊŠhÓÞy–œ/; ‡ø[Jäé……¼Z9ü<%åЃ„Ô¯qúW7iÀâö¯r"M¹òUàÊF$ö”ÒMðÎMÄwæ’Pìx»`› 1T/Ò“ º{E½ Ûû/Çz÷ Þ×¹ ø«Øu-¯£%ÐáSSA½wy’ºþCE!zV;ü)ðõçè®WT]uø›Ì~½‹`ã‚ÖÞló_‚Úì׃,¿¶ø\Lñå±Þ_mïíú(íMœ¢¥}§±ÿsøFšÕqjö;]tïÿÜA°ø\töeÑÏ[ÝÊ5!й¦â|=äÇŸk.g~V›k¦×­­Dç>×xkŸ«¯Dãsð)Aha±©çµô=Ь½§îÝc¶ÎEð m'ž5xMÒöâàÛñéà˜ª ‚8cn€is<ƒÎ8 •váóÐEàJD]üÃr¼_ЧíÿJ/ÛG»½~ò„_½£Œ2„ôÇLÚ[Ih7JÊa´ rVÃS±™§¨bÙ&¶ÑÂxÈ3 žÂ™€~µÿóàˆ Å³R²“%8éÜ/Y7D^º¤Ÿ“‚Ý›sªà ¼Èš˜1h§ ŒÃý: êÎÎH..² ÅÅmFÿ=Z» ð¦¼v"ùÀa6›WS»‡.Æ)î?Øo/pRÇ´íðÀ/ãÌðÍõ8¡'¡íNÐOv‘ÛÑÌ”ð3/]&bfšïÿìLk{ ï[5i Ìdù3ÇœqD; L¨Ù*)Ý®Ît™ÛŒ¦.Þ€RyõO) ;oJwsçfìIΪú9 nKýmÒ’[SâÃ8híqhß"Š&b:L'5á#„w··«Íüò”Œ—ø|¹&¬ÓD·©ê|¿ˆrÑäÆGëÞÉS‹¯èqhr¿–¸Ñ™>¼ÛlÔëýzÎ8Í»–NpÙÉýÑLnšvxî`àÍ›¸°’ÂãˆÔž$øËW“ôr“ôÂÇ*ÿÛ(d8_GÒËANÒËuÇñçOz­Ç¥Kþ¾ »åíŸ3»ÅÏÿ¸úzò?jwñߟåºËÿøK_nþǧÙýóöÿÆúÃpÿ×Ýå|–‹w{˜ÿñÓmçìÜ¥ä]·˜"³ü'Îaê¼Kâ(Hâ¸Ëáp®»Ž»Ž[ÊáÑŽzSñÀڀЊ1s‹ t:ÀÙúÀ9gÙ‡ãì‚xÏì £ŽûXøI6:Φ2…cš lN·15áaØÊÞîK›w_=Î(ú™#ÖõðgsÙ¨ò0œÏé4Ýö¦kº}þÊ´,´9«z-ÍJ†¸,ï(S(òEŸ‚w©~sÕŽì6Üô|nƒ'ÀØùx6¬!ì§$ß» œ» œ» œhçgàüióXt戗‹ÂüÅ¥}4vÝŒ&çµÜ,Õã.Óã.Óã™óØÆÕ*¤–£m£)UGC‹.ú6äÊp.p†‚¼'LAz2‡)ä0iÈ¿÷rt4ÿë<®ÂÉ¡š#Ñ0{Üj}Ú=àè|î^ô¢Õ½º†³ñçH+jÒI[õrÀV×—IèÚyýªùÜïÁÎÞÁvç§‚!ÏMøÚyó#þšo†^ïîs¼W{ ÿÃà“­:þ³ÿl?uºØ›nó笭t*T4MÄžóDZh6·SùYeˆZZ±çEqrYÁtòÁ"'‰—\öó]r™ì'[¸CœÀÜ»Ü3ý¸C÷rpz "–¦ÐËf(6ÄjÉŒ0šÛ6W}Ý”èä­J ÛRa wfVþǘ0p0ªB‡{•} ±c¨2©X(KE1ÙÀ÷âGAb[èÑðQÚ‹þ£ìJ<¼™x¸³·àÃ9=æÝÁ­fZi#Ñ3¸©((–•>f9=ïôÈÜ3…Û[œ›W"†ó‡á[Â06ò–_Ÿ†â–QqÚRµý>á}ž ,³ë9¯¾iÚåOóÓ.ÍÞL÷òæ9š‹m³?YŽ&ž`Ù]Šæ]Šæ—JÑ|t—¡y—¡)×¼ Íå24SG-רÁÃÛ©Lú„wùÿÙ{Ûå6v$Pl“ªT*÷Rù‰ÚºU¦$Š%ÙÞõYo©›69’HQG{nÝ{Š’F6)RKRöñ¦’çÈcäƒî0˜Á”,Ù3»Ç’ÈÐh4þLGD¼¶ÕdR€/—TÆz.ëùª õ,C=ÊPO íð;AÂ<žv èoù1 V˜¤‡º‰»ÓåÌHù{Y”i¯.˜ôä‚Iø ê¼ŒcO*`Ѓ?iªhxb!©¾èÄŒhUöXBR!uó’á?+R)¾Ý“Þv ß~ô…Ÿ)cgÍ¤Ì Ó—þe|‘dª¢ Þ(¼¼;¾Z•…ãëøê¡Yí´Kª¬»åR>ã¤ntûG‹»Xm ƒ…:¯9U¾ 6£ÉW1ù\bÍLJ×{hTn6Çõ×7üÖ7^CÀÁPxôŽid½3¬Ñ-@iÿbø)ÿP$ii©ÇEÌ»Áo*ãÍ›µÍ¹áL>»»§WÃù5 ôÙK·ñ&Ã+ (FC•Ì"‰c1²¨)T›C¥æa-9¡Rœõ\Ý]εʃ)x_(®Rï¤Â™‘íŽ)Í÷9§GýçPžÌÜ¿f<#æD›Y‘»sÎÆDõ~¬9 ¸•:Ô.^? ÔŸö4á'pn)Ú’UBòIG:Qp(ßU>¯±þï]e{ÿ^â¤(þ,üÒoªc‰ÚƒÁå'þÎp ƒÐéy2½Q=¾£à’ÛdóÁç·_à¿õõSzƒº…o†3É­iýÉ;ú‹ö9Åãn‚¦_8ïø¼1î#lÑûô!|Pÿ…ÿÅ¿„¿7ë'ô¼â[Œü{ÉKÕ16¦¡¨1QC9Ùqàuš9n¶‹úÕºýf?øáh´Z+ñél7ºT( {øv…¾—‹¹]Ò;>IŸÃäCxDpo”¾Èi-V¸‹¨Â3ãÓŸ,_UMi['ÍìTœn&®© <¦Æ1DÏ8¹± ÈŠ ¢Ä5ïÔfu¹?pªâm~Øh¡µTüÁ5É€ªþ¬ûÔƒ(¶ €p{;ú¦€T#Y YÅ×s@¾Àoƒ¤½`eó)&½x`¦æ§f♩ӳË °æ²¶{Õ…œ¬V .4õ×Eÿ·ûb·¼ÿ?ÈSêÿ~êG×ÿÝÏîÏÛÿ|³×wSù¿v_”ûÿ!Úí¶þ/UÏAÓÿe¦ò*Õ€ËäðJÒw="màa 6ÐÊÝQjW›ö$¥–[µb²|_Å`Ç„¡T þ0ŠÁ§›«BËô@˜ÌćünCßÝ@jŒ[‡zÕ*Z‡0g=éƒM‚zˆ#D8– –OÈpŸhK ò¯A^mÊp#A¯õk‹â~0HÓûRªÆ¬•:}™.#$"øó|%ZcT% µqSü<}(õñâi¼éBMýâú×b‡ÅÏÛ:è¤WÞìCV }Hļ#`¾õ®º‡SUañ`n‰@p/ÑýÊ3ürÝ„†ïÐíYÞ,“ò%-¸1:×h€s=X2m„¨ Ñ™uñsF|p„i&¡}_1‹Þ„]N9Ęù‘ 2sÿ*I#v9¹Š0\—šK’òvr(Ϧúèܦ)Çj"œAr`H›Ç¥£ÉÝÇO˜²Ë %câ@а¥c¾4(ŸYä /:á$LæŒ@ÀÛ,‘£&øa|w‰Òª–TU>fbA‘¾Wȃ\‰šö”˜Øð$Û=³H¿"2E`’ˆd‘¶ý‹ä;-íµci‘·c>j“I£â//)ôg±±ÀüH·`¦]ðÆ7àgÎçÏJåš0™¸›ÒúФ'71¿¢^Xýг‡ïÔÍè§ûp¼fÆÅÂQàØˆô0fX¹øvx¿µ£>€`“[Su»ÙÂ"mMӔǒXfLýèÐaöûéälœ¤ÑZI~à )ü‘?X³èKE9£ß"˜Ô6ZMØÃ wYV;©Í̲ÛÁ#”œ6–ÔÝóíµC)‡ijªBƒœ?-®öíÞ¡È/f¬ä~.V¯¡ìžÞc‰ ‚„›ƒËÏ_Ó+Ø4{HaÊTš5ùQ€ ‘<©ÞöÍ „Iâ´t“.-jˆ]מWÓ­¥M6s:~D(#ï"ÑñC—mÊr†¶…˜é ªî ©êôaÂFåû´…InøšØÁ ‘ïS(£Îì¶n8œyÔÂú âžK΄ú±½uɸ[gKrRñW*ºUnè>Ýv\®ÈÊ¡£•¤>~ŠO3,è Ïÿ¡Šzx ûÿíÎc±ÿï¼*íó”öÿŸúÑìÿ÷´ûóöÿöÖîvªþWÿó@ívËþïËTzd>ßÕ `•¹–s8Þ)\Ñ ½ ½rà­c«õ®,ºÕŽ¿Ä#¶Ãší†Ìtðn?¨¾H çm2yê.†©NXi ÙCÊ@ßýÅô@GÛf/MÿšÉÇ-i+7ÙKx5»šÞEbb[µ•Þm¤_y“÷kPæDT9y¿h•¾×*5)êaím7[U{õ\ƒ(ŠÂûü •D±{ã‰B(ö¸ÜuQÒýáþ½Þ<°oƒrRÀn¿>¬Ó¯ùUfµ1< ?!üÒÃáþJN‹·pˆ\Áš«öp@åæv¢îüü Ï© ÏŸ>Oõý¥±Åƒ ÜP“™x;$žÂÂïå€/T³¼r*{¬¤ttÎ¥Ö»±¿<ÈþÝçXu2ÿ&Ђ܋ÿEh ŽóòODëüèì@æt×â@;T]6s¥lÆß¹çâ‡ï›Âä=ÿS9}€1ò~ñðeÔ@O¿Yº€žïƒäG¢4˜ÐIÿwztÜìdú[q1…'ÇÛâg¯š”}èý ¥Ò¼¾"«®›u;Û~hU¹ |- MQÏþÑrE'~>¯¤Â,Ï|Áë=Bfîj0PÃõ(•&Ôð5A~^žA M¥T]%}ORæúB~'ó ½¤ßÉñÎwñ;©gPGVçÉegW—ï»[ºé$#ÇÔèˆìß2¢¹D¤;yÏÖÜè“oÁ·Ø«ã‰e䑸ZžCe™ÆÖ*ñ¡þ(8„ô;½ì~O€Á_5¾Oí»cóm‹–¤áÌ=èéÖ°dZfL½óM­ÐΡÐàý'qMÅ·yòƒá}`+¢¸$jô‰RÕ$Í“˜ñŠI£¬0YZ‹5tÎGkµ¾·§Óp‘]©‘•^Iõ™4;ÌjÖv·&¶ˆÜ~¢U4•öpjSðLKšº•}w¥—FêÂ%Å ðb4¤!¼áC Mÿk€ãøe)/„ÄiVFjÆåI6‰§éÎr"¤¤T[RôOβÌ>,Âm’§¤°àIMÅà’VAÌ4ˆ™mXI ­fÑ5TÀ;Û¦s”“UH?N/»À͵Ií?'ífúzš²‘.B¹}% 1å5çAlçä¶–¢ºàëÌ ìdÖq µ}P­Ý"ë{åÝ Ü›^Ý|oÔsQOr‚ñVJœº™$’{ÿ:rì8éÒwrÜ#¡Fà‹›#¨)Ѥå\‡:%z +æûÄŠ©ýŠâ™ªm£vo)œõdØ €ÔË——ÃnE•*v¶²÷oJœvKÝ©m¾€;žEQŠ2±JÖj;µVÖiËàGòëc,޶ÖÍ·¨àñÎÏëhúÿ=žü?/Ëüßó”þ?õ£ûÿ}§ü?/^½|™Êÿó²Ìÿõ ívÛÿ/•ÿ'åÿçvü»óï%ZºÉ eY~ï(=0=øwu<× ¹ÜüW$Ç`©¿ˆã1x Œø×T¾NÂXMó)<\ܧЙ”(q/|ò®„äIøƒ8ÚÙ†,?B½ƒ$·P˜¡éö§¹†øÚƒ÷I¦oØSó#®1p$d[šƒÐ=x¢;LÚ—Ð5\_Bìõ³æMh÷·~¬·Ž…ìó#ö$ôŽº³^8…ú˜Çv¯…ù‚ÝWª›Å¿4¯¯Z OÇ6žøûÜ~™¾®'#Îýf¯YK²&ø¦ò :„OÔVøÃ ñc鉉'æ`<CÍSå Ŝ䱞V“q¶õlé¥?~c7“«áõoã·ÛŸÞð;$ ÿѼûƒòexI¾h(rutE› F¸’Á÷¿ >Nã‹*Û›NøKƒÚ e0òf½=ö•¨Z ‰Ì„Ðù+ß|0½h2YýÕËž*8çä¦ÇÂÑ V@rúêŠSÕ·N:Çè¥ÖiP-UÎm3$ÇoCMàßmP·w~[™ÿ™LN”¤¶'3t¾ûYQ‡¯F³—8|ñîOº§+pjë5’Bà.§¶v£³÷®šë܆ÝT­×]Е)ùó’ì˜JeWR:X³8©Thi*ÏngÃÑdül-±™dz(%˜‡ý“òPJWbM<”Z9J-ø–º-à¢Ô2\”Dó ¥–æ£$Þö¼( á§±i ñz)µ\o§­¡sô3ÄO)Õq–Ÿ’ٽék”¸¥ŠLG=è×íTÔQNE‚-wÜîAdé„yážn¸«#³`_< ºÚtò}}r½YÀ.\ެÞcÝêôÂxQ«wK§=·Ù»¥›½;›b5b>jÛyŒß-ÍøÝò¿Õœ6e êÝÔŒœV\nD‹Döìëàîã®bg€—Up«h¡cÆ8 }æ Rs¡I§]`x{d_EXŒi0/ã’;š˜¶r3 ü*ánÙ,{µ_ yÊ~Œt-´ùb´a¿š¶³Ú/ü¶pebWU}Ák`©oYí¥µ¡ZUXc7z¦^;ÈÖŒ_eŸ_./Ï|üÎRv‰™!\À60vN "U`†fŸúZ~Á¬²2ö|™žbò!JµÙ2°š_TÆÑb¥ºm<DQk&O_}:¶\,ÔÂÏ>¸6 ·BËÅüÄÚ(c?ìh¼½dyƒ¼&F^86wÙ¯ ôI²b.‰›A<ÝØÑSí[®+^êUjþÁ¯Á÷(™>7Ü­ÕÑek‰m쳎l AÈ×~›w?×5Ì©aÉjm}}ÛÑM=€G‡P ×®)ŠœÝâ‡õ8<¸:’†½þ[霾\éÇÅ=œ š‡ô¿ê+óÀÐaP¿¯ãe€¹å`ï8ɧi7.Üp»®<`F_..¾LW†ÿÇôÕYÚä)ý?~êGóÿ¸§ÝŸ_ÿýÅnªþSýUéÿñ ívËÿ£[Ö|~ÄúïÝíL§‹°úïè_ñs5ÕwUV\€"Y÷~0<ô~ŒŠëÒw‡õ§ob•.ߢz/) U|jÍ•ëÉtÌ0¬ïy)ž¼þz/yæâ²SY£ýÉæŸy@·Üše=v7e=öÚøÛ½‡zìP3AWe­Å®mM]½š¯„'ËàF]h̓K¯'¨ÍQœ/¨5ÏR™géËÝ•ØW–»5åÚñ,›°_ÛÖ]Eeö‡y,ýßí}¨Ðÿ½xQêÿæ)õ?õcèÿîe÷èÿ^l§ôÿ/ÊüïòÐnOéÿŽK`Øóc*K `©”O©,5€¥°Ô–Àå4€« T)U€ËªŸ¢ð¸T>!%àñКú¿G”ÿi»¼ÿ?ÈSêÿ~êG×ÿ}§üO;»õtþ§¥ÿ߃<´Ûmý_*ÿSYù1óù®•ïY˜‚)ÑÚ©–J]àê.­PRÌñ)é³³3…êÊJýàJËbÒ§-h˜”'$ÌGkw7‘QÊÎ)½yYËðžjþ ©ªJMòJ4É««ÇÚ¨ÈG"Ö²ùv_ʹTœ/¨ßùJ´Åz²£¦øyúPZãÅ õy+ñ=„vÚ¨8S+î¦ÊºEIyGÕ6ñòÓ,Ú§Úª,¢uR#«ÞœìïÕJ´íÙ–î¡´œWuŸÌ⃻֜N õ< $šå‹Dí"1–̉´e #Z ªGòÁ¡{_UÑ"gÅ¢œí’ªvî“­¬±_ [:éK»&‘Aæ­Œ:C¡E†8-eTZ¤Är)’–ž‹Y¤_qWÚö/’ï\²×Žy«¬[ô)ëæ˜4*þò’‚¿&Ž•H³ša8jÍuU¥h>ÛO3U…&¯Ô|~y7‚ˆˆP™f-2d½n /¸ d­›™[‹@h5 ë“Tމ4F(9ø¥…–«šðÒV’uøS×BN˜‹võ^Ä$© ›FíÞ¡H:‘”‹m‰Pêž9ÓMp§œ‹óñ¿¦W@{¨!ù:¤4` +þY3–‡1¹é%†„á‘Kººáqx´'™AÓ“Ä,™V&ôÎ)G›­ÍVs‘ÉëSVÄÄ) ¯4‘–æ§Õ”¦L‡Ó0W²tÆ#™IK;á¬cuÁºB¢_2(Ôtÿ•¹wT”2hØT-¥†¦¿‹–þéúò¢ü,eÿ},ñ/wKûïÃ<¥ý÷§~ ûïw‰ÿà»~ûEÊÿc§´ÿ>ÈC»=eÿÍŠÿ( Àéç‡6‡Fƒ”àÒ\Z€K pi.-À¥¸´—àÅ,ÀÇ¥ ¸4[ï?}p@ÀUi.mÀð”6àÒ,×õñØ€K#pi.À«4?+ðSÕ½—G·ÿN¯gß1þ·þªþòÕö6'W°ÿì–öŸ‡yJûïOý$ößûÚýyû{÷Õnjÿoïn•ûÿ!Úí¦ý·{Ø«°Ón#êá%#ê¾ë%†àÆ!þÂÿm·Îª¬ f ?çðÿçð Ûå¯ã¿Â‚\мý¸ÍÈ .—_b´#ns’W’FGVK‡›;¿<ºmƒ¢ôv×OCøGGÙ¯Øa|Á¶ø­¼÷þ]M×zúÊ{ïÝÆž‘* W/Cw§Ùœ÷iE›b™Ä‚±?»à´!lέÄè,å°lsuƒÔ]‡âÏf… [Ϯ‡ɝjè*;¯Ðü ¿ùN`à 'a}†ð+Ns£;¼_B6û6›Ç7°ŽP£p€¯˜Ÿf¤EZ$9#£ »˜Ü¯è› N´pÿßÄ3ÐA̱Ð!öÃÊÑŒè¸ò,1¡)âX¯ëתÞm| D™Xä2™‹šÁkÓZó,zö àë JMü´MÀ€L·ª5ëýS|®oªIåÔ÷òžxùöòÞdüÇÝGH‘¤Æ€úˆZLý“éU<Í3ïÃèKóE~ü6((‹ ]eÃZ\#;UʹÀ0òi€\òõ@};¯ ¼.| hÖÃCÐîG)Wƒ{4{GÒÔ8 …ýм4v·7ýäÒoêzÀÙäx½½Þ×ÛfÉ®åçßÕ§ÝÃdÖ‡+˜õaMt•ž70BǞ܋æ°Toy8¾BºÀ9ô¿ µþ7üáüz:ùʆ$Ã\KKüuµQçñô’SçGŽô¼€FÈ¥•®J^Í*Pf \kÈá› ×ÍPX³F=¥1}n€Ÿïsžž…é“£X¼˜?<\´Ôó;눣ã*Ý•ÂÉù pr^£žÒ8£ûÏÁ†s=åItÔ¦Pxv!Æ`²Vsû’Ò9žWþXcô°Ô‹Âòœ±qbúi´®Ùùi·"é<ï´6—“é4漌xág0 %Žþ?Œ™€„8ÖæBþKɈ÷~çwWÊ¡­3ÃAØûAh«à¼6 ¾5ŽG%lº:Ó;ýêA_5áä^C´’,oíM˜A— Žûd准£› a0ú:ø†Âñ¶¥qàpùUu &ŒØÅå•Ì`Ê=2ó ‚¶”¼E†_b[Ò C' ½á¢@”¤³.>UŸÄÓ¬Úσñ7…b>Jô“MÞÁ`ÎWç3ç¥Ø/ÅŸüüP,0wg]¥Ì•®KZ£lfÿhÜcZcaøO’´zü6Äû§Æ¹Ü—œã í+‘q¸øx‹~iÃ9¤¿„UšÆ×\.02¿¬ë^ ‹¯finoØ‹¬ëŠVBÚÙ –7¹Mä©õvT,Ý­·›Ó_3Áá_ƒQ:¿›w݃LxðÞÕNá¼ßœè®*9WØSÿRîõ£Ó*ÖdG¯Þ¿»þæŸßÁq_r{§Ýþþß8<¨Ómüž<ç¼ÓÂpõg¶ãDNq Æùñ¿8h{GøãíAç¬*¤ŽªÐ"¬Ð7¨Ñä½ÂþÈ€ÜÑ“ËïªÇ‰Ç¿òÎÞ;ÿ´±yU¾æ‚¦˜Ñ­bšmÊò!Bj=Œ­Ô_üªkøŠ ¿ŒxW÷ 1>3l4µ…õæÞ³ Gž¥†àpÎn²c7±üŒ¢ ð^8Ú†6~•nÜ m[ßJ7>n¬°´„;S÷°ž>šH2×A‰]‘jGÝ-žÓ3‰ü&Þ“ß*ë˜öúë=?µƒŠž¦ãK§Ø; XÚ6tÄ·Ií£­“ë…è™WÑoìC°OÆÿ‰§“$€‹Ï(AÂ]ä¼*»ÝÍX=qÈ‚Ž"¶‘X·Á…ˆ _ʃÛÙp4'{œý•ÞàZ9øïÔ¡ïßÖ©‰öù64ÇïŸÃxjVû“äÒdÝ•À°´»æÚê™ÀáÈ3ÝÑè8e˜<¼·ÍåÔœ)Ú“É-»χ#pæ½½…«Óå¤4IÁÅ—Kk3ÐTíÒ½†_†Wwü è¢Vn“Mn+5ÐÒiqä‡Lß¼µ_pPéq8¾éÒÆ‡DJ0<¥È7Ž» h¢›¸ß‹<ߤÍÈë¡®o<éRÐ93 |‹r*±]œÝÁWgÖžÔ@l„ÝqPiÚÕ»Ñ@ïîéC~µaƒ‹Y¥Ë]ãÄB!îÖÖá×ó5NºðK“ó3x߀„P _ÿ¶&¥q*þ\mâÄ1-Qy&ýp0Åuë·Þ»ÕÝAõ&›^Åã ß xœúø…$é‡ß¯ÆR˜Â˜Úp'½º"ëGºçYê–Ì÷;\&dcÑG¼ˆ9&cºos 2‡oœåKfº oÊëÞìU€ªZHDB;Þ #×Ú¿, L‘ |±…n¨)ùsþABljôƒÕÅ®g’é©&¿oPÇä[îzkëçèz¸»•4Õùÿ‹-LJô˜¬œ`zåŸVÏuQ«—™3A6í‚\âH_Á—žy¤QóACÍD ž¯2&l9M¦gÄçò7Ï\€"Ô:€³/ê=£ÖV˜¥dCX«ó‡dE-_/{M¬Î*Žî6hsòn],PƒZ½èó/û›G|ÐEž¾«P8O@5¾ÝÀ÷ƒ3*¡8à߯ _ÀúišåI„c¼_SÆSbB7üˆÛqLÇ{5åÁ»½¦š^Å—Óx0#ýÝ`ºVPŸiŽ•ÛìênŠjFS™z¿ p]í¬±Æœ¡FNhMä»3ðâ¤“Ö …6 WèÁïðëÉW탚8øñ[s QJ€WhD§7iÿö ´JŸŠ±;SŽ€ƒáØö]–§+¿uêÇk=í `œQ–lÚ–F /ýxp›±y€[Í• ¤°dö.D'ú¹¡‹Püy{ÄN¸ä”ÚöÖš¨2Î>ÖÇü£Êy¢~.>á·ÁQ\#uüëu Þåh‰6äùÖGÃLŽ9㹡àB°%‘°ä‘¾’–"¢È4AÌãÁ•WxžpQLYhé®ÁCÿÛæXs°åDsÑ×1ª»òëZJøÿ•o³bDk r_Åiš’úÌÓTA¦ÞË=R ÷Ò¬ªçàü»-wªw@•)tSõ-Ïñ*Ûùr"¿¤Q·×³48§p´Ršc&*ª0í°øÊ­Ñ_88©Õ½á »Ñ|ŽüœÚí¬+‚â·Ä5ûÜa®£ç4äìñ<ü‰ª®ã‡Ñå» _ÓŠköºö9¬Y=OEòÊDP²Ó֮؀·Wðv€}Rs ¶ÄÍäùÌ÷BÖA(ÿÂâ•!S½­¤ƒ”è^÷]U£¥ÙÀ¾~þv<›u“Øöš…Ö tèʺä÷ç¢ÎôA)&áeè&£PËÿÿÏï—ÿm·¾µ»[Y߯üo;¥ÿïÃ<¥ÿÿOýþÿ÷²ûóöÿË­úÎŽ½ÿw·Ëýÿ íö”ÿÿ¹:âNúûùq‡|·ÊöTœ€ ^KýÎüÞŒö{YÉw~ŽºjòçÞQç˜÷. Bñ3£#oøË‹@€„¼GEð®@¥5^H‡Á÷ƒ›xÆöã››xTå?Güªön0 ?ÆUö¯É&ìÝðj€ ½£÷ƒ‡ ;Œ¯0cOVÔB-¢÷w|JÛ[ºˆþhiî–ÁÐaÊšiá…‰~muŽÛ­½Ö)‹À±†º×ýЇPú—ý/I‘P¦Ÿ"úWò]Êi7ÌS Ë ¨ VµÓúg)ÀÛ? uâ$ÈÃ?¢Á$*b›#ÑšXq"ÌaV´“#ç GŒ°åƒFD7Ò±UÅ€“˜á†Pô öMëº*¾’TãKµš©¸ÓÝ5>X/–]ðD–’±68õøÎåè2Í‚úü5/=¬ÁF¨†Ê¾?> À8Çcø|8^@an©«†EˆÍ"=?äþ"î>ß—œ‹ Úiâh”Κ0Ÿ=Êz¾WÔÍå`[îäƒñ•¹ ä¢ .*PMsm n1ÛFDKqNn(Á æSL<¢p¸ Ljw+²CÒ¦#·UòMV4?‹ç`˜™iP>M¾jžpˆ¼z1§(~ôñ5™Çcm5¯âëÁÝhNC./ã[ôåJŒÏžª¤e*§xÉOÎÛÁl&Ù+¦/ûúixù‰ÓmüWˆð~7½$²&½ýiù$DGÆŒ å†S-IU(Œ*<†j©*à…@Ó Ì7¡Nd0àj q'W“1&Œhäï´§3Ì#ÈÆq,üóÔÊ¿‹0$àr>úVKá˜#Õ€O¡ /t9 oÈè­&ãC¾Á‰ê†tCd¶öŽtšÝµZj-(sHþ“Ù<!Õ½Ôšî™#4a„æDDôV.ƒ†Kõ?1õJ Ô%C*ú÷Ìð ÚލŸf2!oÄ7Üd ¸6ÒÇKôá} ŽÓcy¡zËGé…è±ÅbôÂóX^„ÞRÁylÁø¼%Bó²¢òX^`Þ’1yl¡°¼%#ò ãñGJî9KbAÚÏd]®­ÄÛ‘çÓgÀTzg»MÆ*¥’Æ~)OuQ'{Ï x7ǰ1\×$º¯Yï‰â›*yAj1:]6û4¹qbˆ!Ïêäk²õ§|¡¥ —ãÙˆI|”ãLP1]ú€PÇÆÎgFïüœŠ öË$‚›Â‘°·—¾„aU®æ4žqlñÏ9‹ºaò)Vá5~ ˜’Á":†¡ð_#- $©à!*P Ìü _VÈŒ=Ñà ÿvjPéiÕ°Z,¹ˆ}ú†]$³ &4'£ŠÐœ8oòÉn/ìˆI'ç“—=Ý%d·—Mv{%Ù=²[0ô8 ê˜å/sÌ– ;^.â¸X°1Ë‹7^*Ô˜ ³bFåwüÒÀá»i©1—ÜX¨#Hð‹&]´€]ó&½ô>Çñ(Õ‰-.²¿{jÊíŽRáL®'kòÞIc'4Ôº)}Ÿr· ¦ó!¤fŸb¶û!îð5Z«ê0€_ý²5&Ü‚DͪÇf&iÇ`ˆ/n%Ø;£0(Œ~epµ•ÛP€-æYÞ!³<½‡.} ƒÛÛBòx_Róª§;ü/ø»â ¯­o² ‹E ëáÁ¢£° áŒÈ`%¦åÇ3]aëÙK‘"Gã’ŠlC€ü¡ ØÏøzþí6f¥®ã­ œ­‘¶-­Z“÷yCÁFÊ©ä²o4 ZrÝV#qhLeSM¥JÔIœCTék.ÐÉÉÑ"1ÿe0NîºN{ÏÒÑÿ A)D©ÅÇþªB34Ũª0¡ÿõdçæëdYÝ­¥^ ÎI‹Ô8H?þþC@ô­üQb®üŬ•¶‹¬'ußVýc÷Ô£¡ %T£sáUüg’“‰HÑ¢±švSéhPƒyŠÎ|"oîèêâîn ÛÓîB1\‚ Î;éOñiÒhšºZª: FMMý°úzM[Ø™ ¡"ЩI]fß³ÈÄ×ùë*ŸùZBƒ¤¹‚Å×Õ€0«ëa<ºRj:Þ \ƒØ_O§w³ùs~\<›C®„Ùü¯œB'ü°äŒ¿£3r<r˜Êû@8QgWêÔJ; —LG)5ÐìßÓye š™Ùhpsù©¢bØ4îD`o³¿¾%‡Š8¾ú«¾¯^gå÷¨ÚCŠŒ—ñÇ)äEग़|}+I"ú„q8?Ê$ãøOY‚„Oÿã4æ L—Ä0º]Bˆ÷Öîè"¦¥Œ¯¤Û-葉µÅ³ŠÏÇÆìŽ!ÏØ«ùš(ÌJvT€jtž¦R9°(6`]é Ù•Xaw¢'ùëÇ„fj¤úwBk÷!y3° ˆ|¬‹ùÿø¿6ëÿw•s‘>¿ÖðœMnR¨á‚Êtr;rx8­ aQ1¿¥tíxΠȳ·ÞµUzÔh–Âկ¸Ü¥–ocœ@Qp’þè¨L¹»A÷Ù"¶?W¶zBp·Ñ•†ý*D;çê/_àD¯EiÝÂãýÏùTÖ²â÷?´8Îf<¸ˆ³Ù#ì9 =’fÑSZ’šç”vžéág´Þ{CÚZ!6ä‹>h C¢ˆ®­U•ôoœüêöî>ÿO~yrÿêä·ä[íØæ—-çT—|ÄÁå7©{˜òëZŒÜ¹"œvÖ(© ݯÆÎ’VAò»&­Cš¨yª ÍÒÌK$¢pyAÛIxH½ ðPL²A‡‚û’l°óR²)%›ï"Ù›·oî]¼©4(äÏ5UDîOõ¦N;á6b÷"‹ŸØ' ü’––&×v{5tZ’ò‹N©¥ü^’”ôq+jLw†D‹¨yÈÌbÌÔGÝЉáµPE)A¶î3CN &z_ó•ƒY² c E:1ÝÍôÃDô"`åt–-ö‰©¥¦2}œLùæºÑS!àƒq™ð,äç©qœ¢’^ù*ôŽ×3NìVc¼ :¥AS#Ö@AÍ÷v2’# ‘BU¬Îé_”ÏÔMµÞ?qº§›´8ü33Ÿ“¤3!%´¿·[Q÷ü÷Öi÷àðwŒíYc¯Ù¯Ÿb$ðOJÔ™´ª93ñÁ¹8¡oË}‚ó5¤e3›¡lŠ&~w(½²¦’£§© +¶­Pü×ìqê8Äs¢·Ôäîbo&ÊimtE©³á³÷M,.ötµ úê‘t]Ntî£?t8"0N'c]™·fw··“éœíõ›íw'Ç݃½V¯u¥˜`e‚ §m¨Ê9ý"¨ãún~GÔ²–I ﺽwHÛ@T¨°L+`Žo`a’•×Hjè <¹ÀQý%~Í9ZÓ ²“hñfÖ=ýXŸ p=Cz.†‡šíOˆàAðh÷5ÁÛ~Òî™àÕ=/?‡ÿ†¨lÕ•§·ƒ;>?`/£!&lA¯#èY¸3+M§öð ñûß ¿c²0¨Ò'€aCD) ²·ú0‚RÏW¨ý-‹3ìýÚê %ì%Ž•(AY'lOXñ GÌçñÍ-®!'€+t~ç/î"2¿dÈGîkkj«½Ëé1òP›Q !®ŠŒ‡ÿq=Íb³b ¸yïÒ(/Ù?R îª¨lÑ,¨, *eAí™YPktCÒ<«c´€¥®ÒzÝDLPE)T[ ¥P]üSTÏýÇñ¾ú €02MIœÑ‚°¦»N‰-§˜8Ðñ…qº~´É6e}½Ki^¬rLhÝä¹KÂíìòÉI#l¸{žt4œé×^µÑÆû×&þ]ºö~žÒ˜ë0hkbtéÐ''¢ ¤IŸ>ööá¾$ï5ïm¸©}G#Ä«Ö 1Kô³»´þBÔ…æ<`‰Š6¼Ö‹ËK>_©¡ arùÜ¸Ó ®¦7¿Ö ]u— ÃZú§kÀ[™v”÷Õº·Æšß”4hL†óšµ…æqiµésñ„ÌOëˆf*$]Ó7MSõb ®-sr]ÇZ—è8áj*ìQõµtü~ÌéÂ>âöªÁƒZY¼kÉû—‰V¾a>Åüîdšvý³HŽÉûÏÇìɤ\ÍKƒl¤S®gE&ùÿà°ÑoC¢`!ʨ¡+ð‰NQLïûÇéZ³ýßÌO²æf)DûµìFßÐd+¯sB!ƒuSƒmÕ^d7±'m¶“Fލ4ûÆVei©=c¹l±. :×å0¤kãö—”4ûÓn¿wjÌvjÐÌñÔœ¹†R^˜C˜œQLNnûdÿ{ò€«p’J]Òƒß:2Iw~=8éW9 ·ñ§‘5ÜÍ÷U Ùùýô_ÇU¼TŠ_a½á7Û™eFfƒiî§ã ÞÓn‹·n(X¹Ý„ˆg"‹_»GÑ[ÿ´[oùPDB~€U沦*ëG½Ó¿z x V879åCÆtäX¹¬Çiƒ ‡·£ýW´jÑœäÆ9ïú¤{š²£+Vqtï÷ÃcÌ?ÇÛ"Ò—ÿäâï€rãL£·jÆ—ë]‚üF9ùÓënL!ƒ:;Ã$Œ.y²‡ÁÂhIƓҵwœÆ¡‹¯ÞÇtøÁ‹Ÿ óÆb¶®…·°šÙ_ä @ŠaÓWogL[ËäN«çïœ$tã}W½ÌêvV*°4ÊMÂÊè\QW(ÞÕ6¦–")¿æI@ÛhB„ÆE•‚<ü& õº®ï·mf!^È/aAÒTòŠˆ`‡€°5š õE3iKXºí^f[£"GÆ rXÑŽ @ífÝÆ·,ÖØSÓªn€r™QµCÂ9jqøKk8ëjxËjx+qÈ»v‹üB²éKGÓ¼:²íßÒmóÊp¨epÔɫ¡ھpo»Œ"®çŽ"‹Ôà0é0¬‡T”,kÿÈ[–CO‡móIâókA'Eÿⱜ¼¯¦®v.NÊlí•«aöÁëKÄš/^:]Ɇ–îªÎ'Öâ°Š oqÜÊ›rÐùÆÿÞ×òSf³°í j0ÝM52VZ|5ž2u²4  §É|‚tÏ}r´ñNˆyTXDO£ Ô—OznŠ#¼lÁ‡“œî`{'²BËdÐ åMªyJM¤Ôt˜J¬é ‹«º c zú {Ör× ’_×­JAôGC|Mwë #õ U~‘yêÐ ©d‘ÖcF{;Ie§+x2ªÔóçX¸è¾"c§Ã«yI¤Êè@“+ÝáO~Þíƒ,e“•·ÔˆÌ mëc*º>LW“9³ôfæûS 9Lí—nläú“IþP€­š¤îhk%öìaÑF]&S¿`²kWb/õšXÈ–TƒùôaŽ>tY=0:uy”K]h÷çD¹ãº&ÿÊU™¬¹ŽNm 5¬h ‘µ<¥ˆûÄ£…¼}™Ç Í5…;§²_¦Ü¡áƒJc}Ï.„Fšäº’±·•ò™øžÔ%ê)¹ƒStnÖqÿRCÛÙ”.XWê†õ€`vÀ¼7¶Æ·~KÞR„2¸Õ¢»sìÄîN:44ˆ´*RÔMÐ N.'$%ñ Âo[›Te¼_£TÆz¢"µ.¨ˆµ5˜‹Ý!œÒ[v;]Æt\?H_,]}ÆÅåÊ ¾O©¹¨AþaÖŠa‹°ðÌew Nßs+QJhHhÈzÒ•¿á&âèb7/Õ6½«k”yT„3ùm“O¹Ï9YG<' ›ÞyºÇ3ÒÅQ˜{~.¤1ý>çg¶hñó3¤òÌy¡Ò3åó£þÏ¿·ï¥HXýŸ/ê;»üûWPÿcçÕ˲þǃAÍšÈ]ŒÉ@E׈¯G1%²Æ{ý!%ÐÛïSþ ™›&;;¿¢º¢)ú;²>=ê?‡în†ãJ‡SÞš=òŒx“ÌÏ-†]j΂„;âÀÈ óe"Òwfúêßc¬îp¡P]èFÌKNÆ`K:s:MxÁ‰ú$Ú¢ðÑ|ÒIÜÎ8”ï àå]e{Õðï*ŸU—Ïü{X7¾c%j@Kü®2\Ã``Jê4½Q=â7oX‹m²ùàŽsÛ/ðßúú)½AÝÂ7xÜ"¯¦õ§ _´ÏE*ݯ"Õ—ÊxóóÆøÆÒ,>D]Ç/ü/þ%ü½YÇÈæoOÉÛa¥DŒƒ3þJ5yUä$ ÆxB©ZËG.|˜vhŦÏgOŒ“묯²gw«µŠ€œ^»Ñ=¬Ò·Uá+¹ªœNË%¡äF Ûo<2H„5ž:žB§£¬ßý×íŠëwݵi•pè»™ñuÙFm’Ð7ÅÏÓ‡Ò#û39¹Dgþ©ˆï@_M‹Î?¨ˆãFd®xäêlÕa¶Zk^bz¾þ^¹Õ×JAîLœ`+·“^y³î6€iÜZvæðJçÇê±ú8Ò¿>㿱gUq§ÝD͹å஺‡SÚø†.MuTÐÒ[–ã¬ãÝus‚ bÜt{xß"„Z)ó­ŠlÜ@.’zÀ׳úY¦dƒZNœè\#ÎdaEµ¢&¨xÌuòÁôa(ÇŠÂ"j2a—S1ÖZ&3 i$«Üå1ÜðêFpp©·ªŠ0wrÓÞѹLRŽÕD„º;ÜÃ…±ÉÝÇO˜°Þ %câüѰ¥c¾´7†AÎð¢>†…m% €€·Y"vFÍ×p“âR ÇISõ$µ^ð^Îo} i“øÉ妨iO‰ ~@¢äs1‹ô+D@¸HÛÉ"mûÉw8ÛkÇÜžõY;èó F0™4*þò’TƒÐ˜aâÁhôM»¥àâ¡>&í hß m””!ÃN¸HÎïÅWJ?´ðœãÛt3:ǹ>¯tñA±wn6à½Í„É%Nþöô»œP}ÛÀ¦µ¦êv³µ¹¦i=dfê —šJ¯ÃI­…”IFÇáEbwÄ?Ö,â’™$ÐWä:´âm´š°‰fÂÄ"èí„bÕæÁ‚4°Gâ^¾v)(0Pio’JVÉ⪋…ÝÁ;¼^ˆ«ëá×ðžÞ`‰Õô”Ÿ#MQ¶vLwòbñž™˜i¹«9©€Þ¶ÔÔü… Ùc?³ò‘í)55Kð³h©ñ ¥ðw2×Ì ix0ÉK DGƒRÑgöBrI«¹!:qEø)ÎÄ÷' Á´@3¸yÀ„MÊ÷(ìY¾7uq,êcœ—çSX£Îì¶nÙX›yÆRÒ#$ì¹di@ä ×[[—Àû°m¶$ i1eÆfÆ Vßíú¬Œ:ZIÜã ø4ÃXŸ0ûÇ ¥Ûÿg—ß3þ§þªþòÕö6§>ˆÿÙ­—ö¿yJûÿOý$öÿûÚý¹ûÿUýÅŽ½ÿë;»åþˆ‡v»iÿïíñcP3þcR*Jðÿíñó müÜý9 QsvØ~ÜN ‚ðË=Z·9½.lÏGŒEJHçƒÜ1ï»ôŸ|„Iÿ½üÕ?¢á Àײ §È ò ÂÍ¾Íæ1&ñõåH‰9ÏF…­-7ø( üÀ”XëL%A‹>¢³*¿÷›–o-J»o]á¤]AVÅb·Ã/“9¼.ËWÉpˆO÷¶Ü =&Ó«¤Ø©f O;,lý‡©Þ¦s9Šóæ:DåóÎÒÓMžÇ| Úü¿>x`Ü«šEÒÃZ ÏÜ™6T/xAK {IûÒ…;XÊÈ_#^=—ÖB¾K³Îpdõ·‡—ñìÔ¤ÕÁùbˆ¥ÞªX3w(ðãXUÍm8žÇÓK>²˜*´Ä½¬ìWïïÐ? äÚÂÿ\VÑùÍ\:˜åt`0µ>ô®áq‚¼A{M¼0„ Vœ™•"·` ôÂ? l9ΜÆ_0íæ×xz=‚50sÕŠÙh›ƒYÂéðB”Ÿ»®Í û0ø8›ƒö(òÔ‘ìxÂÿ ª¼{ØÁ”ôZ¨¢`õ.‡PYQzïôoâžKp.ÎùŠö6ÿ¾Ug{…ßð?¿ÆW±}åÆÌð¸~íýU&É ŽÁ—A¿¢P™÷~К­·Q¿SeÇ\$éuÚøÇéAçx%Ðv£ÙØGËgï×cþnÖÊ^£Ó8÷ωòMùÁ¢öUù^ž¢†ØF³çœUŽm«‘ðÝÁ%á1fâÂ2©˜(7Ž{”¡Šòh'96iÉô/{ÏP‘Ì›ü}‰)<ƒA-ÄwR7Ç—©¢–_4Hô¤„ºªn/dCÌÎøZ£%Å\””PGW—2o]뺂rÖ6ÙzhÎ6éµ1ó½¡#÷{ô²@í¶•*D2ÊÀ­~Ý©í}Ôžëø¡fIëæ¶µ`‘4”}Jâ ùbøÁrõ|{b¸­$€‰¯ˆÓ¶Í÷ý:-Ã:'ª “ ²5бáG l+󯚆=ظhS ¥.´`u•¼O+“ÀN¡¹hQ¯iØtåTñç:²Aœ¦Õ…/Î.-\$cªlø:>‘V•AE Æ7êW}$ê}'oéÍøÒK*X¯ˆAß‹~iì ì:hÀ± Þ‹M`HJ>ÚZ=A7@Í~îUwò‹Ã£Sw–õúß««Ç¢ÿÝÝ.õ?ó”úߟúÑô¿÷´ûsö?ßë/v_Úû{ûU¹ÿâÂ’©ÿÝçÒõû£æoU+ ŒË}ø•ÿsv ¿À¿hõ[Ÿe¸XVÔØÕ.ÄN­qMÕ‰Íx¹b¹3˜^~­òßôʪHn2CXŒ¦C¶ß— ³`8™«ÿ$pLÊ|ÙZæžÐN÷+Ðz¦ßËÙiE€¼h”§Ø$J ÅÛ¡p!ÿ°«sbÏ(ûj¥w¶¿–®AVVýÒ *%”2} âë9®3i'å@èðNÎú”ˆ;@„Ì)^ųá4¾ª²á¼ßø‡Ðîjt¹É;ÝäWjˆâ`ƒÑÇÉt8ÿt#ƒ{øÈj ì¯üó9¨Ç”‚ T½ âíµÞv@í®üT*gkº?}?Ä8>sÂ_? 9…òoþO',þó2¾ã•pHªs%#¸´p«¾Þc'PU•Î|gâE¡òO½X“18ÖxСÀbzñÆ»|ÃW0ÂMÆ›ãø#¿}‰$ô¸¢rn0ò\ÆcTx£º_@BÑ,jîId ôÑÇîÏ@ºPË/+"­£?$´ÌõøÂt^Ègëë|;Œ'sv¦Q Ž’"ŽÄÏ_ èf8º¢  [ºù .ø ÐËõh2@R¾ ÇàßMcLÐÞš³¯ÃÑ]4Az3¸ü„*3i±áÂÙ‘ëGŒÍ`ƒ««ç³» Nn—ó*ùßðMÀq83 Ñ‡Àêc&èNöÁFÃÏ„Ì=àMç›p½Ç_ÿ•üº·ù÷- z6·ôËÉݱr¿ .ø¶…¢hѧøÏßÿèeÊa”¿JؤMJ'`«² þÉט}O¾ÂêqJŠÌJÀ©aSJ ¾bæëu]£Ý»åp\rÅÁvKX ç<­n{µÿZïç {Öxöšáû=x•è>ŽT ,P¬í7¾”¡g&ÉüôkÐ :76 ¦!Pï¸UÍl½à¸zqCxrFŒáÀQU6² äÃ_·b¬é&cÝø¥0›µ«›¤ \5˜*À]°Šý§À´°âDöoáž#!kΔ‡Æ”mäF€ÜñÄ„p2M"m“µÄxSLÎ}Ez§z\ñÞÈW¬«Íp¦/`ólQ¸ke±ÁšUÔÙeŸXU—Õ»0ÒVsR¶|ò 'BÍ©«’˜ˆ}J~¹kÉž«¹0^ãLŸ.2øÏ¥HÒÝ|:ù¦ü¾£¼{¢“Å£¼‚Ç—Æ8[™MH.éAP(¼‡¾ßbè~àÐ ñ÷÷ŽÚÆÐðºk¤Üx,#!läYö‹„DSuVh=ôž‹Ö é$VGÞ½ŸtR€¾ü Õ_Ɖ¨w’¿óôíå_ÍŒ9mÎÑ3!›ƒ9¯ù € G öW@§ýõôOŒæ^ëÍ T™ "ºèظHhüÎh²Ù| <ñ!ô5Ó»ð]Oëd‘Õ§Mâ$Ó;åcŠYåRÁ?DÀáòSáz9*8;­‰®²è s=dë( Áò%‰ÒG“dâ—Õ%™PÙ"ê>ÎÆ—Ô<×T“uElxnÀðgõ¥úfÍ×íQX·ž#Õí…j ~ÙØÍ‡@1Š8BÀØ-$ïø8™\é™;„Í>áÝRx,ްºÆVNí™$Ù9ðòˆ’…IŽRf’P„¥÷’—Ȥ%iL˹ìwûÛº&`óEÓfS]Ö¦ë¹Ã7-M3Åó96D·éûéªùDÌ#9[ðØ›Ü~ãÌ‘“¤ƒ*&>Ãü_êxfÔÜ;þ—Ø»‘ ò®¨²‹™âH¡gŒì köeO[Ž”šé[ŒYæ xv,°‚èn'Wзˆ'€‡å{Ø:°Ðù£8c!†ô’Ð4žÝæ:qa}×Âzу8Myöyx Ÿ˜ç·ãP^Å$Üô‘G>Þ‹%!5{å*õ…#àǺód²»™\ë=ˆ< |Áø”ŠOö)*Šš}¸2:;=; +7¯0Ñ¢å-ÄïÈ_3M/LKôš'cdKgZâWý9B@œà”Sƒ[làˆKB”û Úøó.Ý\hÏ©=HŸl¯çr¿N“s¿ghÈjk²œwW.° Å2-¿ 3§pŒU{áŸÓÕLY‡™'xµL¤ÃíªÐé–M8Ž”|’â(͎ƼÕïÊN¼ê ‡Ñ’ÁË;둃€’JØuÔ¬rR!f=`2XšÊ_û„ –N…¨ÿ©hM±À•–È.˜qœKR4E”>rà•2Õ¡kQâcL›Vr5§ª)b¸¤P†Þ,п$8Èl–}Òo1ýït òÂêJ┥ÊFyÃ(oö·÷pÃ(ïþͶrYßÊû.ßHû®?+‘ñ——ïµ* 9ûúû~Ž`F"¼Ý~I‰Þ–ç4/e; úŸUï:ùTÆp©xqª‹¥„FsCb[ï˜bxú`ÏB©äÇt‚0Ùz}¿¿hpL¯µZßW˜íg ³Ù%JÛ–%Ìö¥0Û_Z˜u©ƒˆñ1J¸Îåæh§œ%4ºÌ”—ǨDZì¸ö몤ÅôfšNÐဌ®¦¸O‰@!ÿû0žùYÍJ¬ÎFd » ,+«>>t©‹ÖÖê‡ÖE?ÉUì’EuÏ"ÝéÊïØArk1ØXVÍ»ÛS:±Ì ¾˜%gZç`Þ)(3ÜŠ“Gž8nM— v=Üð$ûäËØ^1Bofù2g@H‡ï%g[_Iè¡5ë’G!ˆ© ËDÎ.ëGtMÏBÛ)0í–q2gËyg²y ›„•¢*L9`ø€U:Ñšƒá'pª8ä"'ðjŽ_ pÁôÌàáåw{²¾_z› ø¿Þp‹ê8¢\щ ï[ZÇsKcÚEÍ;fXÿ}—5f‹Õ wq¨Àsï LÎð‘€Ùúî¤,ëZê­w¼§6&LBÎ¥e~7´"þg`—²q¨lœ£Ç¥Ó:@@ΖŒ †‘! ç¹\Ü“!èQ Š6.ã‘/!)D/ëºÍ;…m†Ëc›K^+Ø¢ú(›*,“sGÆ9bK©Ž©$‚²Õ‡÷ȱŸ²®æ[µš¦Ô\uÉ2 R@ÏïhÉáש¬#2ϫDž÷Pdž¾=ÛA¾=¬°{»æpò1.€ùíCÌ!:ô+ó÷an—Ÿí-ãåõc5M_%Y¸/ÐýÊ.Ïðœ-J«Ëº³íe´n,¢úË—‰,ÔET~…Žçû2PgÂû(¥7ýPëéO¾ý;?ÞöïÅTňp}9™Ž©Rtd„áU<žCÕ7ª[àǨëŒÔ.LnFâU«ã‚Ϩ3ÊwÍcÌw+<_=ß™ÅIkF'eßè,Äì:OÙu³KëÒÍOì› Eäc콬lŒ#ˆï ÙÇ·“Rͼ!ûí“t¤~ÒOÁýtÆÓÅBöC²šíî1f¿“†2qBi¯ŸD+$;±“½1Üw‹Ù\L¾pŠÈ;œúÈRëâË{‚²½LÌ~JmÛhR/ØfÇz™–švh̾n¯¡\wù.ù<"— ÒÜ»§˜ýNa»Mç±Ç쇤6Ûu²½óBbö ø:øÞÙ©Û¿¯EeÌÑhÔq´ƒ„6ðŽ3ã`J Øv´$l96«V;ÈbÕöX¬¤ŠÇYeÑΤq'‚a&$q"K<ÛÒ.ÓN£kÕ‡L‡8TrÐ@ ³Gxؠ¸„í´µ°~þ¨S(?p§­¤S ö¶Rmµów¼GYonoÈA´á–ŽÞY`!1Í«\È4>¾kôÎCç’š‚ð»ká·èñž&´Ÿ+zÇR£TWªG¡•<; XÊ$Ég¸ 8-Qˆ{jÈšñÓo »¸gão¶â ÷"*Sй¯ÐžÐ¥‚+-®ApïšÇ®MXìÚžVÔ³N™’sÙå$0Eé+ ·³â(üf»œËz´ú«M;+rI»a8®7þA)Ï/&Ï—Ò|)Í/#̓ËÉ"~¥ˆÿä-¥+럂³C{K`¾$oËñ¥¿”ÿ 1OAò{Äw»‹¯ø²áÖ;Aú„H!§´;vÊ’ÂC—¦aˆßœå¢ôCJ:™í ÅÙ?œ?¹ãe‹»°¯¸‹š~zmiy×u‡Qåc”‚ë ¥ÌÑ òÌ(ï%B¢T®©Ý{ïûíe#ö—´9?Á6ìÆ°¬ðúøÌÏO[`}*iâÓº[d;? ½ô}H³OÄ«mAxÓºgA&Dí”`ЉÛÏ’`ƒdÏ` %çgPè~†/§»ïJÄ”¼ï—{CÂ÷£¼ðýuµ¶ù1ü¶ÏaÁþNê+ÿAwJŒáïlD†OXÿx ð1©síÇßq“ÂCÃûƒ]¥ˆUåxKÍGÆ—‰»d–.³–ÚdúÑíˆ:'Ç…Õ7Ë í@„÷ ‡3²6:јvÛÜÉqûi„ÝpQ·ý£‰º÷dúy´!!±÷! ÌŽ½žËßBu Û)Q;<€„-/m³En*^&ˆ^4þÞÜw‹à¯¯ŸÇà/º¨oÕ¢f˜P8ß»HÅ‚ðù"‰ÂpØqa>Ôg‡¡ÛÎnˆÛ+æ¹ÃqÞÉ[O–P°Ë‰'¿¹n£pWifž­”òñéè@äœl¸ÝBA÷ÆG?gÈ}®ˆ’-"kWlgëpç)Ø¡ï-èÞð%}²BP&¼Kˆ÷ggÖßøIƒî 1€èe¾°{>¯Ð¸ûâîӅγ¹Ùÿhq÷güÛPh'0ðÞ…úGy¿m(ñ¯ŸÓ=Ɉ{“~úã« ›]FÀ†×|1/ãÙl0ý¦ÀhõöÚµƒ“Z=µàÛFÔÅÌÍÖÛ¨¯¤Ãÿªãï½6Çß[޵-ü?½\ÅÆU;ê3{òpU®‚¡}ZëuÚá0ÐËËÃ`á´Ïï¦c6¹o8ËNÒÈËL=Ù´ø€W~AhœÿÚMtq݃Ó~79¥ø¶å[‘ß zûûúrþ—¿<Úg4àóþü¼öûìc<ûR»¾1¶¶¶^îî2øùêå ü¹µMã³ýr‹ÕëõWõ—¯¶·ë[l«¾»³µý¶uÀØÏÝl>˜rP>w³Œ÷øk×YØ¡©0õó©<ÿËÿñ¿þåþË_:ƒKvÔcçr÷ÀgùßøÛü¿ÿ‡ÿÿa]6NO»âWhñÿòÿþOë•ÿ)ùüçâVmp{;Škÿ¾Lü°Çù÷sŽÅú//¶êÛþÛß_üÒ\¦Ã_V0áòѱÿïq÷çîÿ—|‘íý¿õª^îÿ‡xh·÷úÍîQÿ´àéuFþxÝw½D=Ù:nq™þjšŠÍMÖnð;Ìv5r—M'p{ŠY…ÿ1ƒ´=;µí5þšùòpÆl6¹žLcT8øÈN'_¸ÄÒn<üRƒõ4¹ÌÇUVu¤¾ßã¿އÖŒ§ŸãQü­ª};M¦.DíÇc¤ë¨ñ–µçWµuÆ IÏ—øæ$cN‘êH¯ÕX‹^\ÖnL?ÞÝð›ÈŒ&å®èôàíA×:8^ÂOª·¤ÛÆt:øÚ+Ç}…­+i¦{Ðh[ÒN£B£®ƒäÚ¬ÐèÐ"~=¾›ÞNf˜Œé =ô9®ºôéáml6ÝaÒ%~°iÌå¤Ù·Ù<¾œra4æH‰9džwä»Á‡<çrR³ |ýó•màJù]ëâÛf$¯Ç°çøo“ÁúÓ·Uôqħªoåg N2ÓùCu;ü2ÁÛ:ô6…ºªãy<½ü4s¦Æ‡^îfœ¤øD®pc‚+VòvÌÁnóÿúØÇD ·ñôænŽ“ WÁUhÆîÆÃ9M¾‚÷Ét8 ›÷å ··Æ·5š ÁÀáAM^ø†ˆò±“ãþK A7 ÖºD ,):ÒVV®m$H¤2óÕ]“¦_¬ñ’¿cq«lX‹kU¤ŠÉôŠ^ÀÉG,k£ãýó ۀᒜ®¸Ÿ3ÎŒÁ“·D1½‚IÒ¬‰±5X"žs.… ánÀv¬²«!Ç"ò¬ l§È°3Ñ#ø#èùr«4d v«?‡sjDk?Έ}²%_ ÿ3 Ÿ#mc}®·×û¿à{HvJ×Ä9qòoäd ÞO3$/1iPÎ,À(\ÁJ ð9 >U£ž86oVê3¢àMØ¿D§ä_iŒšØ„Qqëòýz¼¸øÜâk8;`èôÞcÇ¿è]àf·þë`¦3€+âð&rÑ¡„»YšU §\zPìO1'Äé$~¹Çsõ Ü|Í.3=œ«Õm®`u›5êɱºcuõ8¸¯!ß%è%®ïF8ý…à Éì6‡4½á&_™à\KWpL G£ø#'mtÔÒ{ù§ÕËÒd«Ct”‰ÿäûgô }ø 6ëØQô@’‹˜ó\8WFñ<¾"÷Ád3"—=§;Z¸*_óÀ¼œÜ®p'jq2¡oVñèâÉÁŸœÖQ~w!/M˜88?=èF†´ÀúÓîa•~rïü Ûl7T‡IÏ-ˆ~àÔrÉïÆ—tîèRJ·õZ{IÇÆ¹£—ƒ?ãK¾‰/F1ëñ½+iGÎá4žÖ‘„áTÜð嘢 £]¡é»"P%m¥•]‚¤‡¦2+À.Ên²m7áüZði¡1|}mwÓm›¡m_™*ªdŠðB-:p€ŒÚ2Z· {F²Û³*Û´…~Êè_¢]F@ÍI¾2v % ú¥µûÊŒš…èV`Œ«@?8I@×”á=)ÛHÁ¦±N"£J.œªI|û¼¦+J@z`wçÛn:Ï@ }V͹±xô„äÆ øu{gODµô˜ú¿«{Q„éÿ^¼¨ïìòï_Áý÷åËòþÿ O©ÿû©]ÿw?»?gÿïn½ÜÚݱ÷ÿöËRÿÿ 8“-ýß~âÊû]ÐT”ˆæ5@6R¿Ž\šÛiÏæ½áN­þ¸5‡¼³Æít8bÛ[õºcöt¢nÜ{×è6öNuÕ ¶H:ɾ´i‹•-¢ÌS=ö*ô³_¡ÁÖ3 æàoAà¬'þɵ–û–ÚÒˆô±óÇó××`eI¡ }t µ$Ÿ…A¹bÄÍñ}=xί†iÇ á‹Qû'@Å©TdJÖ¤_Ðæôù {­·Ðá)¶r&vié{Rœš~ý4¼üßÀU—ßN/ãÛ9hÙ”7Ãqå¦:^K+‰ªt¡•=vØd:ÿ4Ñ–ª2 Ä™©³M½(®ØN=‚ÀæL¯y« 2뾂šeØYãÉxsÌïþsÎ $ôXë)ÕÄU<»ŒÇ¨Ì@U¤¼ìc5wYb€\˜É«ëL$2ËFª/'xE%Á  ;[_ç¤ ý³=,lV ©«Qûy½®kz·ñåðzˆº¥K7¬nBŠœ2ùÔQûm©¾ú¯MµÌ³Æ³× ßïhtXH%-PªyšÏ³°Ëûª(ŒúÜäà¨]K (¡ú¿XÃÝÓðVsMÉiCã‰5"ÿÀé»…½»F·T@È®ï‘ôN€B½Taõ ô´ƒØÿҜژñ‘†Ña%qê[’6ÒøˆciŠS‡9$|àd+¡ä!"`SÈ8.cÔ(NæŸ@­È Þïˆ÷Ã-,ÞDç¦o:†ñ¦h×ÚFqöÝŸ9Æ:Çvý³á5ái©Êȧ/>êŸÒæZÁd%39“¤„jVd¼]}Îâµ_Ò`cè.½ °óöL¸y_> û¬6Žk¶¤j> ù-âåd<—r„+H=°S¹(0ŸN¾Ý·¥«#m!=ÑI%‡RåN«)k—KëÁÒh¡Ë½Êp ç?7êrè~àÐ r÷÷ŽÌLóøigM§øÆ38:ð ­þ}ï™±ZzK#aÃñ,ÙyiÒ:ÑîSdœñÆ\ü›*lçô‰sÃô‘êP$ÆŠnÑñøR#§þ È©_£žøŠÖaÃk‹Ã t 8€ZñjGÀ€rBкó;”É[£€žùoÂ}¢½-=x¹OÏÑ©û0¶»Ìä1Œ„Æ×‘JÃxV‘p¸Ü*žÖDWžuLð,ߊ~IaK~%·œÝÊD农w‚Y©^ÅüZêHL›’…G³º¶ ‡p}ÆNlcÓª¦Û¯!0’˜„±Üwcþ'?{>ÆFòÀÙÝm€_œó¢|8;½·CþõÇÉä ÜCÀƒjÀw»Pg±Ù'4½ĘnÐàpI™@´„kÎÛ"_äìCç«ðï»xú • ³¿Ð_ý¢ßÿ ¯#Ì33]ÞA˜{ki{Äòâ`b'‹}¨w3ÿÄÇ"Õ@g¥(àºú … ‹§Ó‰q§¹½ñ1V:Ÿˆ‰Ââs!š%Ûñ²>¡.îäat£¼< ví¤Ë÷ yRHF#TÈ3u9þ4ùÊYÈØå ¡³!É~Ð5ˆ/èBþíPÍt'öø€Pr2éŤMÔtx+íæ”×Åî†2Íe_ÅœޤwãÊÝAŽ•ûD¦ÎVż‰WŽÝFçÀÐ-Wð%XùÚÖÁ¾ ‘ôð‡¡ •#·'—à…‚êkmðöÑÛÖž9~û¤ÐýWB=û ñ£G?#úqD?zYf…èôŒŸ‰ÆgÔøŒŸõüqй‘ï¢ú| ‚µ(`‹ÿ ÿõö²ÒüB˜X•‚ÅèÇ ÿÑW)\Dõzú™•@†BŠTlÿABâ³*‹öúðœ]Q7«›¨‹jÝÍv†¦£¨d\×ÁqOXy—íÙ¤´ßï`x”Ó÷§¨onúªÈNV s«”jœ ëf0ÈÀE’UEÄgUdÞ¨Šl³ôó„þîðÏýy£ÔÔ¾Q.’ïñí•a¢i7¢3?Žù<:{ïp>ÑÛ?þp˜ªè®j7KÏb/$QÞåI÷Ô‰–bÞ^ƒD_®F5|½p[ÈÔô¤ß Ûàßàœ¥½n¶ú ½Ô =ó…¼A]ÕŽº5j¤}”êàÈì J½/œ™0Â.µ€<ë¥ßèY}(Ï(Ï4(ÏŽÒ=˜`žEé748‰#'™ÄÀwk³®eV§®ZttZ«¤•üz”üšåð–òÍK:6æ—üšt|Ãö–­ÈѾ„ÆBÊׯ“í¸c¿Ÿã~èð4| ;°½L·íCÛ:!¡"É–f*¾ÌêðïéùmÅê0/:¤/³ݳަmš±æjÑÝ^ˆJò–¢S,o¯á{y¡ B~«¹ˆ?Çc¸®ÿ5 rÿ«Ä.TÜ>ü®²øàfr7FCI"äCX<—‡Ñ¸Çÿ¹páP(Ñwr™ük<IÙœbèAK!º½vÜI±6j’^Sçë„‹Ñäò3]ä¥gx#„SÍåøz2M¾bKuŽVe,á"=ñüš¹eS~˜jaHÎ0s™’(b~F›ãí§Zq\iˆ%wùvj+j fGg»•n€ê±¿ÐWØËªðgÝF÷Pöü¹é„qáVD½Hìö†½°;*à²ïÌ|DÒ‘¾?Ç(“¥ßs/ÌÎ4T ­Û`Ѻœj¦ÊHVÀTZ–ÍìT¡È–3A#…Êõhc{=ZÏêЂ‡Ë]žHƒƒ:‡ÈÓ94gMkîñü0BÖ->D&œ6¨(Ò¨Ç Ô(R÷à2' «Ü!Ø`w=ò¿­'¯ékgÐY>MmgÓÔÑ3S©â€eþ"Ôå#!ÙÎÿà-6¬.QpNºÌX°œõp@®KQ«oÌðÑkÀ,’3h4âÉeÀ’åÐJ… u Õ†?í“%ƒ‰MŽn¨PMIÅOžŠ¹ö2û±ož^!F¿›½wz%£7Ÿ§¿EBh•Ó&_M]mg¼¶Ú<Ê¥ÍÁ´yTÒ&ûhó³oÀýýoŠiçeð®(¥r»ø‡½ßír_›¥QHºy•½Wß]ºé,º%:å–xÔ´™/Ýü-˜6¿“tSÒæÏîïOºi“nþ¼+›tSn—Ÿg»¬r³¸«N8rÌ£­g öÇ`žÁ³9ÌÍ][ÐEA¾ƒC:q.=Ù›@#$J/Ö}›C»Ò$Öw—ÙÅos)`2h¬“½Ø ;*Ngqp²öµò/rl!˜BÌR ïŠb©pR·é<ñqxÔ–[«p&åô²Ü\Oêó‡åL2”ç´wqûä^M·TV;˜öl®Ò 3Ýê^;ÅM·œ}kéØºû4Ú O†ãP€Ñ6ƒœÐ øFLWED¤ŽCDjŸ„*€²ÖÃ-=äêRtê“ÓÃâK>é-e}‚²dr1¨¤Ð†»&—ÍÖ±DGaŠ 1Ýf“l‚æè ¤eíùQh9—w/÷ûæéb÷»Áì¾Wnöãl‘ Š]︠.F¡Ül =*)Ô|~ }”L+´®jS0ß%@ô¾‹B,¾Ë Iåþ‚§Ü_OðÈiŠ^ Eyf‚{Úi'ˆdKdÕ+·Dæ°…Bì¾ÁBQI¡ðü(ú(™öJ…"鈴û./ã”Ûžr»<‘¤ ÝöÇÇi<˜k{£°í·sÿ¶_3@ºˆa3Ïh“IaY›)aIÅÀYÄXX3Á‘¶ß~1ÛoÐN\|g,gûõ“{Êökýz•Ψy,ðJi(òÓ„ØÉ6[ ¾ãѪ„]¸ 쬜*8*Þ eVÉœ“»áågt )Šn'³Ùðbðv(Þ·f䎽Îãm S/?AšéËÉx6èÉ1Ž!¥õÀZçjž¢ªöLÌQI^DüÏ¡©xUƒ}ž« 0HàƒE¯!ÿ¥ÌÞÆ&wsÌ(6…¢j쿉ºÜÔÕWðA‚0z{ÀGï(ž!kì'¥¿1Ã3Ë:ÉBå˜zˆhÊ®ng Nê]8j‰SöYQÜË,.iÄ.›¾äÐ2ñNÖÐé ¢ïÓr]Ù)%þ;äÁ¢¤‹ü‘B³¹ÎèÕÙ¬T¨×3»™@Úeh„§hV ȦñÕÝeÌîf2 þ‰–ÌJ®ÏI&B˳0ø2Ž 'ÌšÍEÒÁù桚›˜o6‹<9¼!CƒV´-}ÆC¦'sÍÅç"›~¿ÁJ÷𯛓õ®ýe%Idž7à'Zy&0 #j:Yë s™TE¡Q…Ƭz L$ëÛÄW7êŠ:S³ù ªp¦À±5š|e¶wÓöÂçGÏÚp\ƒDƒÿPú1ú—3ïí*œ5¹ã?pâ2n¾ÛŽoÅjœ8_Ð–ëØ½^M•òst!1H*%qjÙvµe“¾£™KÇ¥A»¦ZO­×¶v8“œµK^=N¯ºµ²™Á½Ù„&8M¨ãÖÂ4²=pÓì1¥ŸÑžpÊ*9‹®jåpìöÎRHù ˆÅÉÝ$šz‰½ 9Òûé˜ÝŽÎI‹ôÅJd¢~NÔzUý´ÖA/8d`2aÖØåäö|X¦w;Nyéq;ÏI6¸wü/>çÃg6•É JÌÆ×IEÉ(böe‹Vm„†,Ò¢?ÞúùG«ºV€À^©Ä+YL¥ç=À}uÀ®Q>}œpØ?Ý8ùA«ë:el¨t5_=J*°¿eÆ{hõ±X-sß`IèÓ®ñ©<ÆD&I%1ã®÷äê“=h“‰V5•cd>õ 4faè¦69B6#¼D¹ É…ÖÉÉ™%9åmˆÖ]íó%K–#\2ŽH8IdLX|ŸœÉÂEÍ•“îr>Ü&¢Vr ÿÇ”C¡ð´zÉ„û)&, ê’Š‹é:¬CEZÙÝF=#j<׬ßJ1èÄ)²•­,FQÉ•½×ÅM7C †ðl¿œÏD}$í3§À/I-ï»Þ3¯Ìy H“¢-®‚¸0܇›I©(@È3ÿBÃ)HÁ¼É…ÉFiÞˆ„sàs1†\ž™ïþœ~/O”g…¤y@º£—<¿a{Ezæ‘ê·ä¿–H/ÄôÀ%0vA±¦Ö ý^«ŸýÎÝh>¼}¬D·l,pêèBb™Ššà­+žñn“èÓ)— T°Mçñ˜âʽBûGÏØ µ$á¸eL‡jL¸¼Ù"‘ ‹,abe ü#ÒªÓ&<ŠPÑÓ"EOÞ2ß©,Øüö¢i_5Í^¿Ÿ%§{ Z›g¢Ðâè7=ŠN[Qÿ ½Z^Ù¶5vêVÃ/8N5ûŽ'l¥‹HG]¯Óádv¢v2ôjOù œ­Š,rzfˆ¹JÈÐé§›}·#±,\/rv–85³Y¦vËjf™‘ć dþ\$í§H av´¼b) Ó+‘Þ®Ô.E(Xü@ ¦Ô|›ŽiQK5“6ÀãQ3b´KXj|Y“¦åw ž’@AOø} â)@8=;ÕÍ­ÂìPêÒß}W½“4uŸP6eúdõ¾Z…/J‘Ga¨Ö©T>°Êp»T~O•áö÷Wz|Ù}Ý‚œYyKx·„bK\ÞÜ·ƒEô¿?Œä_ää]ʶ=tréµ£õg]y®uR2gA$Zdÿöºãþ,‚ºð³]\Bo„/Ï"Ò¹ÓŒLÑ÷fÈè¹#GX‘ô k3¥:É6nè–‰¾Ë²Á–ñšeK›6Ø²Ö –aà°ÁCc@Mƒ%—¡ëË5O°l­¾5^¶òžåhãY†BžëäY  Íòem¶-[äÍ–8ë™Ë´€Îòqí0“ Q¶J©\BµQÏU`²ᜭ’&V"ª³…m–-°³™…‰í,TrgE]JÙŠôø¬€ciøŠ F3»CÒBöV¶°µ=[‰æž­ZyÏ–Ôß{‘é|5@ f«„ÙbNªlµ3[ÀU5©u÷Ö T=3ŸöÙƒñ¨˜Y¶–¹Žî\öcêw;¦n7 ¸OÇOZ§ËúðAßuo`Ù²Þ²šQ–©e Šm.›oèj„êÕØÃËp@èÆZmi¤›{Ã’-ÕX?¹TcÇþ ùr)ñWK$q7ü¤¸OÏR:S攲s6fKêMÙr×)óPé/¤=u¡³ˆ•êPƒ £ÖÖý¥¦F^¸ ¨äõf•ä*¸õ€}ø4…Ì£,d©º+®†êdym`Ž«³í-¯D>ö=Ô‚Y"RZ-¸½^H1¸¤¿3 qfB·ÙêKU]ß§ªc¡H×Ô+ÐÓ®júa Ìû˜¼O!¢|ík°/1%?”«œÐ£×ðÒ¾×¥^úä‘ݵ¼ýûÑòÎ$Ì'heZÞ¾¦å ¾…ʹKÑE©éu<^M/mêZŸ­•)´ˆpž{yªzŒU^J¬{¶=YýqÆœÓìÂ1ñÆšB¦íÛ–þ4’*L!iXRs½6V¬¹ÎC'Iѹø,¾ã Ðgñ=—íÃ2½`–5Üûîy<ƒ¾åæîîÄsÃZÐö@‹¼È•Úã÷¾‡YL¤)œ;žUZ"úOÊa)K„_”Í"9ÿbÓMgtÑJMjZÓß”ö•Gr{Ê¢´¯<Å»Di_1æVÚW|èü‘í+a²}¦Oª,ä¬Î2%õÅÒG³¥xØc0;z®gõº` ÊÙNÓU¨ôLW!LƒmW½g7XOöÆ­¼<>ìqø»3l-aÖZÊ€SØä²„m%Ä’ov)ýÝݳ--!÷c )ýÝ¿ŸÄ¬Æ ¾´bÀÄâö`p8»?ÛÅ=yÜÿv‹¢§ˆ½bÖŠEcvÙ¾­ÚQhWhy(ÀÜ\å D>üHö†t³R3ÿH¤ù JÍ|¡kO¡4;)$Ì´ÃB’í°UÞt˜3厲'!õ^Ë[MTçMÀ#õ¹;)‚éû0§ÿ`Ã\° ‘zµÖ‚ŸQR^™½ xÍVi0("“AnÊœÆ Ræ¼Ê644òRætcÊdeÞœôó“äÍYæòŒ @,~)SñMÅS„¢t‘Mü]äêÖ)ªäS¦â¹#ÄjÌe"žG*«—‰x ÞßW—ˆguþàÙêhq<«£‰xè°Î¼èi°ëéä†ÿ q+DN8Ì’SÒKø,‚.(^é¢U)VY¯…ŠU¥¯º1·×W½¨^:Í?²»óÕG¡|-sÙŸËô·`õ§;GÐòêÏûÌôô e¢ ë)…LªL”~Vyx Ùƒ2€ø^6–ÒV}òÈîe Acv óÝGx+syŸG¨0Ϙs™{ˆ…(ë þEw\™{(õ<I™{è;äZÎøâŽx¬ÆG,Àã2¾øAÈ¢z„AÝà(R((e†£ÒjTZJ«Qi5*­F?‚Õhé›E™÷ÈxC™÷(Ó÷èïÁö¸óÝ»Áná¼GÞXW&?º×äGeЃÉþOÂ!¿´ì¤1ösXvÊ|Je>%ù”ù”Ê|Jø<ÙÛU™Oé!ó)•6”GdCI7.Måuäi™"²¯!É~)3;)ÈžÄý£ÌìTfvr#뱚CÊÌNöóø-"ef§àÌN©²b‡ÕÚ§5Ö‰Nßu­¯Ð|RßûÉ`ΗäEŽ  ~'sݦbjºñÕ—2Áx‘PRÕW.iÂIÎIê*2˜Ì†@VàxÜ™gÆ—}²åhæ9fÞKØi¥³¹Ø€qf™"ŸEZ¡®LÅ–Åü½88„Êýå·¥µ®=7œ«x6œ ã‰õY2=lþ¡J¬TkçjD{}c=øßn¦,ˆÛØé9eB>œËò£¥Só6ê¸!Ô5j!ÌÏ)çêC KU€•Ó†G½¢ðE“:ìn¸ðkÇg÷r§öâ·‡UŸô+\¸¾?^5dOóiûÕ§Iî-Àspo ÏuþA7E&nó÷„Ž\§ ´,v‹Òþª|wV‚cSZu ΫÚQ·&ÉÜ)ꦹ¬lù^ßòq?9Ò™k¤=ÎìS@Ë—éy?=V…Õ¢£ÓšÜ·µF´_Ó>D‚ó‘\®à>¼–ÄWõ«ËÝÁ'¹«7ínбi¯ îÑ÷€òåZDN‘Ð¥ü­·SNGÎ%ÊfueòyÈ &ăr±eyp„7~¤­ Ù{œ§o•æ'ö¢4اÁŒÝL¦àÉ6º»ÏÈo:ù:«ÁQI/$–ŠÑ7|;é!լʮ‡S~ÒMóÏ¿YûļX²Êð:éÇi | Gƒ‹Ql`]è‚jx1vgEÎO‰L7èy%J; v²² G '0ö™k,CM' kb¢i¯Ÿäêözrîø”ŠòÜ>ɶÀQ‘jUÁàbò…Ó…_Þ'E>ì¨LGìÿd›Tô Ç1­¬`–¾"uÕ³Ué,­…c½LÅE;T*ÔÕ ¾ŒÙK'õ¥õlU* æÔb0ýΣäÂlÿà¼+& §vDvýºvç¥ÆDs1ϧEôÂnÏTCòN¦KLö£Þ¥übyñSÛÔ<ç¸Êƒ^;îWyþ’žØsøÊã4Gâ 8z—ÒÅñ#ñþÃÔ«£r¯“Ó'¡“ë“`%ËRòq?çÜÎ8$ûoÐåÏšÕ)–ðÊå…?žyñ»Ñ¨¼Ú;°é©âp'Ìé~9{o*€îqí@‡ÍÖÐ÷¾“ã{¯|¬rdu|†–|wü½wýèƒßƒ>'#V:–{ÂÕL·ó@“M±^–íë£0Ò@ ‚ï]^ {“ãt°úÜ× {:¾ÐGæ+Wû|¡–åȵÌqtH.JÄ[ØÔ¹gy¾”»’#Ü=CÎêÛz\õÿ˜"°ÇoÆiI‹!fÂ79Òt ºr¨œ,5ù•W´¼\TkŸÈåuJi÷$¤±lïŸì{ ¸j° Ûs^8$½…â}×Â{æ„9o!iz,ê´”ЛÔrJ‘â…­ão@¥¦ß—Ȭt²¼RÒj~uëp 5 DZÓ¾yqFy†_|þ&.g“…<ËçÄy… [Dá<;®] ïNáùš>z0¤3ýʧÍïdo ä×9L±´«¸’kHëJŽÃ”&ÕG³yнDûGlg‹µ@¨FFâŽ[°i¶,;­¨Â¢ÍÐ0ÉF™~ÀguÞþDwumYó–©u'UK(¨‚ýOÅXšÇ{˜ó¡wºÿ&`•£Ýò(:mEýwø·[™³¤¯»[ǾãDáÀõ#CëäsI¢'Ø1éI£A¨[T]w¬|œ‚àÊæŸnöýNCo2ŠBn—æ˜8a¹ŽÀФ+Ö±çU£YÍrkaÚ« =2ª¯v²ÕW½g"Ä=k± ¤¢(5Y¥&ëÿgïm›ÚH–áÙØØØó}7öcíܰ„…Œã—O<ƒ K€}ÏĹ jpÛB’Õ’mÎν¿cÆþÄ'_ªª«ª«[­lS!ãù,¸¦åÖ,`t×ë/Tµ+jVwK¥³ïn(¢»%ÇSOͪBJQavžš¦®6ä+ŒõêCn™‚)n;,R± Â^ø¶C~æ²± ¯~ö}ßvXÔÞ:E)ßâ6WQÐì:˽†Ç²¸Ì´5€gY°ßX³ºåz³9±ÏÓԛ̀.fÎKørj iU|˜oU<úVÅüØh7ºz²qÚ71/NwÅÞúÊTF+døpêiQ$nXH©yí]ÆF*ŠZ2}C/á+0½°á3„ÞÆà³ «Å/2<œwHÙX.r@wÞRÌëÞT€¥$ø~ŽEÝõ—i-¾…»þ`->½¯:4B“j-ž‹9–cÏ“i1öÞs¸+&OnꙂU?Ö,Ïe‡þQîILd†gà3qˆâ©iYdšëþ&Y€=|æÛ¿¦Û¡ØE•3,Ì4I‹É×t8ͼî…E^VémºðCðt÷¶Øò¹îZl̼ÐftUÌ/üwÎ⟺´?Ó¹-N¿·E1ÅEÑ:Çm‘­ÓfÞÀØÈŠêŸm¼éŠˆ>ÏV!›š2½¦¿ùþ|1sÝ9}‡=49H,Ý.ßí¡bév±Æ¶t»dô¯ív™KWŠÈ¬¼9«Ê>[…ì¢$ñ¾¹P%Ü—?Ù¡ì†îq_зíÈòÆÄOãÈÊ¿‹â+8²ò«Å“'k«h¡Ÿ«À7vuM($îFýt^®Ù}\žl ýLöæLá™Æu6‡sd²fFïm¾cdAaô?ªcdFÿíœ"ÞäDñ5bë—> x!}v&¹¸E?Æ ^Œ¥cÂ=Åü, ÚNІ Èwæ4£+bÎ+ägñAÜ Ä”uxDj¢—^ïSÀë~ii ¿+ê|Kýô‡Ÿi*ñ¤=U1Qܲ^¼yý}š|Q…b~Sÿl…lÄ2õçifY5á„øæ.€‚oÄwÌÁ®K½×dîZ8y0î¼ ¿4Î-y&ÖÕ©/ ®Î£Âuuê^·@óNÖÕiÞ‡,‹ë¤Ÿ¤¸Î\‡ŠïÀWƒÄ<‡‹eÉž™JöLÅY¦Ê&ÿ.|k.Ã¥¬gYµçÛ˜ž Zû§…odí_VðÁgYÁç֌ғ*ø O[¥~ |’ HƘVò#G¹rL&±êârØ¿†ST•ÙËWpÒ¯/mãqõuV­ÌÔÈ–ÚXªYQml¼ní/¼ž£ïÕï°Eûîµ{ßüÖ:Þ²–Ђj =.\Kèö,©·XKè˜T—…œgYP¨È –…ÒÏBßC™¡$¾Møcú՟ܹãÆ2!M1o‚÷…;x.[V*Ê|î í=gÌËJEËJEËJE¹äô6½ éZ]V*úÞ*Ý ÷Ìt9wß=“FfÁ$‰…^I\>i \–5‘–n¥¥[iéVZº•–n¥¿[iÞ#IJL’|n7Q¢þ#$J|¥’ž,®TÒ·òäÍZ*éÎ;ñæpáÍ嬚ڽ4‡éVKZæE|ÕÀwî¿ôø¤)öy|–e˜–e˜øùš÷&ÿ%¼/ËK㬱´¬±´ô—,ÓYB-ýK¿Ã²Ô“~¾Ó²ÔÓ²ÔSšVwÖƒ±,õ$Ÿe©§¿P©§Ô‡¯)ª“ª8lž¼l9_‘¯£¶†ÎŽ«aË(qtœÃ¶ÚëL'ˆ}j…1è‹èlH8‰8ë3茸+7^‹Nˆ¬Ð#d-yÚælÝ1gkËßÑ&mdöþeŸ3 Ò|à³e¸›U3ËÝ^X äÚ0a Å#% 8¿ö/3J0Ž†Ò“Ä zžeÀÕÌbÙ'QѲf#Ó²4«¢—%È›3 ò©E¸ÇÝ£ ¸åÎWÆùÒ˜0”WöŒ¹`Ø¿˜LÙD…%-ŸýK¨…}›ê|PdÚrBΛF;Ï”` šYoµóÞJéÌiƒ%1ûH4QÏ\ §ä¤ŸYØ@ekѺ0¦ YÄö®ÅÂB¹s)[ŒF†feujœ¶ âäLÖi¯ÓñèÀذLzáEÇÁðƦw{§QÝ}]­yé]o¶‘âÛû/š§‡Îö§Íæ; àã÷T‰n\¡—åTÐÈÛêâçZ›#XB/ §Õš±Jòúr >ìàöa£86Üøv)´œæ¤Ã­p4öD0Š®AŒ'IåT®%’€»äqXû¦õJÕÚ=9m%[ó.Èïþ%ÚhÚgÏM¹õ·Ÿ–Ï_÷éÀ:Tÿˆ¯ÂøÓûêå-ô±¶¶¶µ¹)ð磭‡ôsmÿ¦gs­öðamc¾$Öj››6k·€KêÇ£`¨|èã8§4»Ì#EèŸßËó_þÇýé?ÿôÓap!ŽÚâ­’CøÙOÿ þ[‡ÿþþÿÿ_1õ““–üßø¿ðßÿtšü§äóÿZc5 ºaõã8=P ß>>*Ö~y¸V{¼þøÉÃ_ÚÁe0Œ~YÀ€—ùÈõ‹«Âú__«­om¹ëýÑÚrý‡W{ût»ut :ñ.+%LÊ©s—Ús-‹í3øç>>ËÑfà<Åj´xÙ±s««¢Q‡£Ý+1ìã±1%8ðÄpÕj­ìè<««ÔN¿7Fç”És~#þÞ Fúâùð$(6£w!hòu0ºÁOþ\ Ãs:¸*PèÕÎÁ×ÑPœ…qØôÛ{á°7V‚p$^WaϪ†QWƒ×&dÂà$¢X"î_Ž>ÃPàÊÄ`ØÿuxØ8Ä*b|özpL á×KšhÄ–6ŽÖ-NvG¨\3†L±Ö¤zXÙú‹†h$Ñ@U’j倉‹_mò¿?b·û×0ã^Í« >×HZ˜Ík`s@€¶×ßOŽÿQ¦|‚UÀÞL{¸¤M²Š†Æ¼i  ¹¸Ò¯ˆ^¿‡QÑ)ž“èÃ:Êðê•“N<­DIœ6Ÿï¶öGoh4gò×2-ÆðËhxФÇ´%Žì„,K£ZlË}^ÅÍ,t/3úÅÎ6{b®@# Ý~LëLkCè*ÅR¾i=–„+ÜðoK1.±\;Ã>*à’j) ¸DªnE¼‘¹n¤þÞBz¼æôtBQŽÿWRëe•×S±‡2ޤ£!âhÔ›^p ÝIc»ÒLÚûõCqPÕÛ6Ì'À ºUÐ7úð{í¡(Õž<Ù„å3ÀŸ[뫵G›ø:ˆ q\ÅÿVa¡“\z ›o¿®Æ¤3+©Jâ‘Ä‘%L¸òÉÑ5àÿ”Cj&‡.úí‹þW)“C#¿FÈ?–Èo<|²ºñ¨FÈoüß3äÓ«ªš’§ qX-ïúäÜëþ0Lx‚Â_·ˆò¿WyÆŸŠ}µV´À—’É ÔÈqâñèMuV7ì9‘kЇ…ë)Ž¢ / ¬Ñ?¦Ñ?RSÇ‚ÕÚúú:áý0Á;5üføY&ßÀÙDØ3ºïbq˜b$Ffã!hÐ}8›ˆONëÀO›ë Œ<Œ¡ŸÇÜëCǵ­'„òÖ‚PžçÍ Ày+çGk„ó#“=XH¯âb{¢Rk19r*ámqˆ:l©ΉËd–Xáó<Ä“"²!rà¡î,®xOé>/²ÜÙ_A³Ý/r2+ ÀRZÍüì‡ÎÝÕ¥a8ýHÞç ÀöÜaI›)­~ÜTC³£ Ù‘ ì Ñþ?¤UõmĸåßôÇS}”2N3ê<ƒç1¤h-@²qd5SÝoþ›<ñŒ† fâþMʲÙðúÀŸÒÞG µ¼DáJ!ª.Ã(àÕü‹óæiæ›ãÁ ÷Í™or W×>uUÔiKSáÔO… "€~Dê;yÌ9éâL0!”Ì#EùiÆðýÖNŒ=:„çd–Òd‡ÆöŽL4$ë[Œ|ÐñD[ažƒ`/m‡!KùŸ]Ôû0¾F%Ïm¶ÊÂËC[A§ ‡´°“#.·Ñ;æ»~—¶“8̨` ªé°ÿ%‚é„C•89j<ÛVvÛ FàŸí×­“Ò!H"øèY»Q?ÜyYº·{¯ìrëå 0¦b<\3£ZÃ/á`Ī6h¦CÒ’.P³éw=Ù|º muqøY£sÏIîìWqˆJKc¢Ð'ÏD2lRÚ=°°­h¤$ð"‘Ó¹ ¾ köùõÇ®Ê78j ×3̨…ÌHðÀ wjâΩa€j63yí3ÓÀTø˜ÇÌ'Ò+J ‚:¾ :76=@|TOѸ; óÎ!´w}Eœâ—°…ÆŸÃpûqÍ8kD&Ðè;-j)ÎlJq ¥YG0ÇC¢*^ýa—ÄÃ0ƒ!=«RJ¼3üz^‰ç·{Th͘€"úLåÌ}g÷ÄS«6W\1ßž9pê NJ¤ch,:a›Ã3Ú|f- ÎS}øçþ°#á´Š9sæ@²"Ѩ{ó Œ'è僫—k4ŽYV ¨ÉÃ<&èkòøà\FCP$Ï€(Ÿ‰ûÎÒç™ qmaúÈï}½ Õ¹¬Ãw(?W'­Êæ«Èìò¤ Ø),G©m4ˆD¿ñn¾&y»9mOÆþæéÌ|µ³³ºÕÙƒþxD}’­šˆTƒ1h_d¾(¡±ºi%fÁy6”æ,Ç4\u[~‰FV »ýKÖ]0æ õކ6>‚ÝÍ39ð¹À¨Íšð5iÕ›¯ê¦ Ö±†CwEzwCR)$0‡ÌÌB0™/ÑÖÄM~Å`í4i1g,e~KŒ·¼aÞ½SÏXb¦LÅTmPˆG²bG…ÈVË4`@(–‰Ç'QÏláŽýó9ÅäAW—$ºJ6GzñYÖ@‰¶™õ2 ­ŽN²B{FÌ~¬dŸªf­°c1…Ü0ªëñhLJ«D]sÃÕž$›©Ïù4ÇD¥#  $ÕÈò/HdSÿ%ädmàþ²¯äcœÞi#Ç×òVË‹X->€,±iJQ'êÈåZ5?¬†1/ûU‹ëeie¾F«^%e·vk­^; "çašì@3©ƒ‘àò€:ôÎRG7;UyÒŽZÙŒPÐQW{Ú,—_œtá ¸­Ë uyLY89Ç!S‰¶é0ŽÐTéyÿÏ?ë«ízcwåt…Ƴröo'þùÇ:h©ðý†X¡Ö[͸ÍY¥k³?2õŸ÷píÜCÇå0 ïe Ù”Ñ2âJ"hÏý^÷&Œï¼ˆ‘ïŠÏHº'.îYG+­ ¹Dq ÂŒmôšÁýb8üÔ:¥sÉÙ¢GÒ1 YÀ¥¸Àác®„qì[à}¹÷Š:ÿÐÙ\´N•ÇL™Î½ËÒÜ+ŠO=^Vú ²‡5,Ÿ„ϵJíù‰Öãî÷ T¨ëàK©V9Tðq—!ø:–x’6•Ö¤<úQæR섃'¢ÏÄáÍ–Ä‚ŠÜ¯¡/,ïàÔ—±Ò¹9Á‡c±¯‘’v.çäh0>Vx>JW€e÷FªY€wÇ]d©@æô­ Pè2–ÒEÛz„—dÜÍÝÌq›ú“¥ž¡daá«HS‘ç ïù‡Ïøèаz´ÏKgª³¶b‰£+/sçðbtM:Ãq=¤›Uñ÷ªÅ”· g^‰Òµ®Ï$úØ43·ue—Èž1 œ•ÊûØ™ÜÇê÷HÆ÷Ôœ ‚ä›7Ë>Û»kÏIÓg‘J×™D[b]ø(uæ¥Ô˜Èœ t–,)à ;’Â&¿ód[9~Éè¼îéÜ!¬%rŠ®8,Ë®=µçÉ£¸´$ ƒQ¦ ì› örëNNòz'8›Ä_v‚3ŠX)\Ô¼Ø0sê¹Ô­yãh–s^ªg¼txVrtBJح讃p6+Xa$u:§s|¶¶¸sÏ–r‡‘6\tAÆT8Ü討äxÊNa–#0>É,IOb(ŽIŠQñC“iÆ·Nf~8))±4ç™ÔÑøÀúqL)õ$œit°÷SaǨVe¼F†I(#3öÿVGÒrÔD0<ç!Šv@}¿qÔœhYI&‡w:i‚Px¼)‰ËíÐÀláœ1qæÙû/ò7xJ(@á‰Ý•«åÞ눷uæO›P,D²ÝH"µeVSÝmØÝmLì.ç”(ôAQYq¬;2,7iœ6mœ6}8¹6|?:ÉîÇÇ!Z†‰{'kAR· üŸU¥÷ÿ.þÜ9j—ꥧ•¨\ÁïËå?µŽâî©Ì¥Å2îrÜ…×’9Añ>|dJ”? S#© ™(YŽXXè|ÆÃ‘²üû´é@âr*Àó#q ÐÆ×ðYн‰# m!¡˜€F'œSd´6Qü7±˜äb¦z£´p$^ì¡1 (´—XÍm‡¼“8»¡0€vÃÞ kŽ“¦~£dÈÒí% ‰TKxJj òì¬ÏPíDÁƒñCÑeôWjIMõ™X í.ZD›Ì»Ýð x™hm‚ú@MPe¿)T‰j¹ÀJk9¨—iv"]–M@Ì0.­1¦a8RPú.±Ý³E› zÃMõE<5zdûM·=è ê êÿ~qR=Ìéó¡ £ñ¼Ž03ßx”Âò,Í'i4%±d¹¶Æs‚Ð$4qw[))’Ú/žå3AŠ äœK(ºüIµ±[E½.TjÖù6=D¢þv­ÄWlåA0'7õµªlçsù—§%cydm¢j3,ŽJâ îUĪ[ŒJVuIõõ/OËâõ8ºø Ãèlõ©)?žµJ‘-w_ÛL&ÿ.;ecÚ¡Nš¤ï(áF!ËýÁ-7pr€¯ð耧-ܱ†Êçö_{ÿïòýßNÄŠàCûŸJÊOÿüs……Oÿ,ÃéKÙÉ4 6ìɸEi¿êuVû——6.ã3ÙèÇx}jŸÅ3|‹m8¾Ò4¦\ã,H¼4¸ÃÜ00¹‰ßZ Çð‹hãgÙš¿‡‰ù¥e§ –'Ït©\d o^H.–p,³ë”Ú—˜ 7ƒOnêò2/Hйª¹Š™w…r‡gö€äP¥næ.sßx);ö´Iå¼J.#Â?" ™Ã)Ú,žRÀÒÿ*“Dª«p€ß¡ n^Œ,“Ÿmg65g팕>…A?Ž#TfÙá|Ržq”¢’åb7±ÔsÛipŽõïɼ?Q£M”lr•.6]ƒß¯Ñ"xK7èú#$ˆ«>6 Ü‚k[ õú*{]òz˜±ò‡ëjZÍò nIÍ@T~È:ƒ7ÔEvÕ\ûÇCâb@Âá¬àË6Z®N ,öÙ«Ã÷ÕIPûdSoÑù¹8 ‹3ý= ÅGâ#óÑÀW’Ô@ï#¡§~EÜþÆï›Oº ¨¤Jz²ÔGÄËéW“Ók§XGnr]Î:Z¿•u4 5T[®¡b ­Ï¹†Ö°†Ö³×P¡%£²J;¸á[+dãvvšå ùVÈÆœ+dc+d#c…Ø%ÅqÔzf´’¨ ‡*ÛFåªÊlôÕ’_³ŽŸÙ!í¾x~£KÞ(ßÉÐEU¤ökG pàEÍ$å€@-/)-˜D+M¯XÉÊÐîoz¶6=®yV<’F1šÓÈÛ[–ÈT’žQÍfSÉ®É{T’«ÝlGê¹É4®-<Æ5Zl»¯%RžZálû)ÛçÐúþãªoÖÕï›õž-©¦kO§Ä ³‘ùÍfæ73¿Ùò|3•e3+äùÌCÂfv¡u—xnqn:ASÉ:ô.¼šå/‘®§ë—;Tǃګ†‡Ñýb·*-JiIeN’5{)š=®\ùÖӋϱ49ðß'¤å<€o’âÙ©u‹ø>­Sì•®ÕãIWghל÷À1RDnû çlmn—0ÍÄ@Žâç–¥|øZ»‰/ɽUy(,õ^Ú½ P“r‹*ø³,ªÌP‚N{&l–ÔÊúZ« •¿LØK ơǖ‰d.Ší¦Ô!*’’ aŲ^4å`ý ö/Š`OßÀþ[¹¢YdNSx…q_öi\1å¬y X +Ù÷eÜœ}¦ã,ñÍ¡]ý#ozÀ2Ä&ð¬ÑK+‰X&™üªQvH¨½Ã(‡ìn –ÕN÷êÞäÐÿ¼zqsÖ¼U È (·Á–`¤"1 ,‘!¸ êqs•YæPŽL 2\2¦–Ho…ˆÌo–I>œpª“èÞ ô#`R,XHq½ºTaò‰²wj«-Õ»%/BïP4º©rø%êPæS‡S«Œ²—ˆGˆ“ hë±ÒÎÙâ]éc²oR;SES¼@‘Qk÷·,)¨> êã±]‚Š*»·¬œ¢ÂkÃËK.+ªÆ|©B5eÍL® êÔ ´Ë!µu)G=n/0èªØÃ¸wŽœŽžÕžJä-c²ò{’o­/Ù'óT£sÀ~µ}@«óYàÉ#ÊùA²hkb€Å9~>¯LØTö²£ŠõaCÀ☥ ÏM­’8p€À —óòj›$û͵’x\äÅ ùÁ/ü“#«pÉQ³ÞþÚùºð1%òe°úQtû}='¼d„E~ö{ʲ€ˆº]ÅòbÀ+ˆû;c5Zi Ði*\'¬oâ`øEíxüá=ä¬ëþð&¡E“h²:³ôøf 3 ÐH¶„ïcÉ0Ù–á hº²². ¹ÝxEçSKr°Ûn$¸ÉØC=W)ÈQÏ–úÚÛIE†Dâ2–/ªO2_d:¾q$λ}8,Øukã ¬:íŠ"çD‰l«eø*¡X%Ô\CÇFÄŽV©#Ðy›;QïSÿVô63Ävte¶±˜@ z«>­~\ŠÌE§f.±7>§(® ›0ÖjâŒCÛgS2C§”áY©Dq+[›±É|“èLv» âÌzJ87+ðb²’ñ}’óíÎUl˜Uš›’ ps]~¶n|¶ 7VšF»l_*<…uQdêpDDêD´bC·]^¦Ë‘e'Ìçø’O2íîR»6D˜ ƒÃT`$ BÓÒÇ’ø¦¬/}y±{Ð>+›¢S‰)µƒªÛªüµßï‹5üÖùNjx‹9+ýŽm“wï«w‹<©w¿ð»ÌÝÁƒë‰ß¿¤€ÒGö»_¼ýþŽ_TÓùoÇhKlw¸Š¡Ô ùЬ@¿±‰NAú¡ëÙ§{Ötc®a¯þBŸö«gÔrå£ÓÛ™•—F­ü÷uu%XS Kae¶8žœ~"úë„ÑúÃ_7G¿^tðërìë¹C‡N캡ל¡ó¿›wrðy–¥¹çù~}UœÙ~®·˜¾0Ï+–ÏçøÛ¹œmãf}MC…åäôîEÖS6Â<*ó=rÎî&›ºÂ9RÔ5/(õû¬'O±Þ‚ç KÎ< ¶‰|p–ˆ½²{J-‘¬•pG¸ŽF|·ØnâÝ×LÅÓôýËðLõÓ1U«¦h`ß³ÁEñ¹j=œ• ˆ³GEž<Ùàð¿ŠJ74 _õåÿ«Æ[BÈ,¾”Ÿs÷RsréÝŒ”… •«&Û2»ÁÅ;¶\}¤ÇÁÒòÈGôìã Ïð1g“¾œÐ% Ö)ˆ_AÇÿU^Ùék¸öI< ±fÂç`ØA{žáРeU½—ФZn\Ђ%Úí¦†mÃðL¬^ä¡€ù‚ÃS€,‚cøÞ å\ÁñÞ^ÑU—ìyЭyth3öÉ”¯­­c:"¹"Ïâ:Ñà®b'ž³¹ü÷>¾Ž¤1¢ìW¥üG†¿ÞÇ©BÌéFeƒÉÒ<š+ø`Æ©jh¯¤>åX%÷`•åsÇj€vÙ.~¡¤ ¦ù7诲3?#PØ‚%å~-[.xž³=k”¤ˆ¿•¡r²IÔ´âgtʲ,³WýµnšÙ¯i‹Íê8}"×Ò8S¥›X§s—›è˜]6H0¡¤#+Í)«òù.ó›¼Jq¾†AÖHÜß >…ÁȨsŠ!Ê£q*ÔU¸®¦#:²A×IæüÍÒa¥^ªUåJÍp·1»e0ÑÓh‘4%KzSñ/‚qªŠX«Ý,Á®üžä"çÌ—A™*&þÆ}¨h«*ðe@IB=R`~e0º…Ç ×K´sÉœU´`ÉRX£á8¦èfü¯¾Qvºž ‹cØñ]Ð>äY‰ðâ«¡ŒBƒ)ž‰ÚÀbÿ2É1oÑb´Ð’¨n âxëý½Uä¦U;ÐŒKÓÀÇ],stÄÏ2þƒ§”¥ÍI¨fðAù窗…2Îéø“ÆIU%uHû\¶è0^{Á¯©X<¡'l±`àÈ+ØM&¬q_˜–~”œHEЙ$œMg>ù‘uÒ³'Ý­Æ*½z2º ßš8ÊtØ•‹ŽÎ¦Qwó…ž 4Â2ÌQ±¼mx_§-w€J„o÷©ƈ8tPí2Ù-}ô¼B_?>^“~æ¼v p¿§ÖûPéR¥(_K:ÁUøÅ„—õlø"" t΃{ÍÝ£ÐÏÐD kS+x%Ùe#Çð`"ÉÅa ^͘ŸãTú‘}–ÊT‘Ò}§C(^oºÎõ¦pDX6òÞh€¬Gò‰æ› Åñ°5[“;D†Ï“‰²ÅdvPKNÅ Épã2cr1L(WírÙe<Þe÷ñ[/»×y%rzÿø½/»´‚Up²'/»l•A?ÚŽ#Ã×du&¬€Sâ–³ºÀ¼_6x`Iz´à`€€•ê'ÊšòqŒuèú=×p”~hí&Ýá6Óå­*bÕªììo+¿·NžK ú )4ê·û2˜=Ÿ„¾ÓbþÂoµÊz,Ukbkm%“¿ÜÏJÐO‘Ò*A¶ˆjÅUû’Q~Å_ÂJaRŠÛ<„*Ï|먭0'`ç« M.‡×EÖ¬Ä0Ë2•FþUxìˆ DuÝ0¬B/É9Ž–>±ô³‡W¯žÌ´qèg‘ÆyXBc=¤y•2a+UA4R†4‰Q®e>ç™ÝøfC˜iŸ”Ï4ã7ìoœ¹Ä‡TÒ”Ã1- КZÑ‚½È‹*¡%‰Á6Ñ3àM+|:<´oAoU\'¼Ü§&Baû§n(l-ïúýXÞœŒùÑUoÌ7ú²¡ÛÌäöSLŠP A\Ãø³$ÓnhÐ…¥K‘vŸ!®&:OÍ=¾¿¢DaAaTCQh0A¹'+;í‚$Ëåv³x¿ßËš ïÚ)FWµ5Ͼ))À<N·· P×oLe‘ñ€ø8+‘Ú¨‰6Ó¿®·g¢Ìï§ý!x:ÜiO â£íR™ÄBwz~æ8Kêgš]’ŸÅé ––`ìøS‚™R×EOîúáab Kš:Å‚ßrÚìÃììcÙi¯´›¼"Ê"H2Õpnkmƒ° Hvɪ"5)輞—ÅÄ"hÌ Œ&ÒÚ‹°©XÄ©Ä3³N¶!ÍØzy¶˜-Ý#'ß±q¥»äµïVÂ{Eâ´òl Ï‚Eâœ,&¾ýò‹”ˆ‹`Sñíw‰)Eâtz[ê”puyʱÎÉÀ ÙÑ!UÄ‚E܆ö(#ýÅ€Xˆ)¤IŠy%§X”˜™“e ZæQ>Å¢È0?“/`ã™gÓ™NÆŠ©Å¬X´:(î„L°ÇôÍwê; ý¢YŠ…(—âÎHIÅëÆ*Ÿ eû†ònüúEÿôïÖæ›Œ,°£¡ù©VéÚm Á`ôë~'ºÄ+†_ ƒëÕöÅ»ë¨3TCÄÎ…™ŒÔ dÇÞÔ29•Å—›°æ}ŠÆ,å^ÍŽ¾±LB¥ÂWÑ‹5k „»Çsø÷¬ÑXôL»=çVšbÚ~M².Øé‰îFš âîÎ,÷­} FÖc]b~$×pW¥KD<^ü}#[¤‰‰%a·«ïX¥äÌD}”ŸûžK¬¯!r¬FØ„•´‘ÄÍ‚ ±²ŽÁ¬êf‘"gübŠƒYnŠóI‚î§H1³ˆ­“4¢c_§Ýj§Xý…Ï'“OÌ'£¤sÖãOHQO'3¨ž*ËY™£·bÖh^™†ŒE‚B’ê–2^ps&4÷OÉÛœB13os0øŒ¼íIâ²bu§™×)b$n‹§'&V™Ï„$«™x:7#˃ëÉTYYæSTÁu*„ܘòšÙº0§ERÈþú~íb‚àMrßÞZ5½ëSÕ¼‹+ UÖ1ÈòÊò6¢UØ1²°úur4±­¬ðÖj§Iò‘ns§âÖ\™2úäA/p4§˜åRDuW¹À]™TÒ½³8âwE„‘=z¹0V'1k±ðôGÈ¿^[Û(@Êtž¤:¦nüqµqttL/Ü /œ–pÀë›@Yû¸ŠU³hï.U_³lÉYh¡Ë¹Mr¬¢ºI¹õ .Íž¾ŒI±*>ôMb×2©biHUŠ’If~Þ髆\k¢ÄwQs5®ú†¯æa…´ì«>âÞx¨ê{2ðØ™†ÂÅ'Ö×jkxË5–‡ÄîûkYÀó^B„¶D-QÜ#5fìÀÉwqûVÇsZkye+2b-'çîÞR‚.° %è¾OÐ}?kznV»¬äܬöÂIÍ5ª|Š/bݬZhÜb Þ§H6"UÕ(¶P hÚßdNtQõbÚá\ÉÁżtˆw±€¼0±LRÆg™¤üfK~Ó$å¹eÆŒÙÍÓI u9€>‹ìd*¹±Ì³žq™gF~™g}Wó¬ó‰`œ*}‰×Væõf†IIѾŒè#Ùy" S1—ÆV ›3–”/=ˆXfK/³¥ý–ÙÒ‹Nö,òbDé‰0¾«4i¯,T ù·Âbì/“n]¤õ—l-S®à¯‘r]leÒõ2隟eÒõ2é: •¯ž1¹Lvö<Ëdgû™:ûN¤ò/“®g€±Lº^&;{že²³ó,F$~íTþeÒõ2éz˜eÒµX&]Ëg™tMÏ2éz™tí€Y&]‹eÒuƳLº^\ëÛHºžÌ Õš*XM,2èQ̽$&„>’ƒpz†:ôÜ›:}Ƶ(žt;•w=ë8œá[ÅBÒµE‘Œí©‡QssNçš–$oû{˜–[q»N›ñ-æMúS¨š‹‹© Ló.è»"˜æ°ÆnñMÓ,nòÛLSi/Óôqÿâ[L‹“s÷ ¦)²ãWR-¼jEê.$§`ÅD—U*–U*–U*ÒU*ܰ,T1éYª¸ã…*ìOe‚7ìE—;¡ØZɽ3(„‘Ó-Y@ÉŠœ×o¹ Ŕ㙽h|ÊðÑ#Š?¹*Eîš™$•¦`Õ©ÊT¬Õ&R ëë¯]´ãVÊt¬+ÓõœÇ)ô ¬²êÁÏ~Ñßsáš9·ÜÛµ5R +{†|µÄ*ŒÈ\,fƻӡ¿È‚AØšI؉%9¸ÂŤÆXÕB7¯¥šÓ‡v‘û-ãá¢ëJW8Ã3'¢ýÕßå¿14£.N²æâ Ÿ<}jŽ +€è2"øÀA…Î1|Ji¨’&8HiQæ·®’dóGjaª÷<ÚQÓNµ¨“’ÿ^ &CSñk$M­‘ø O¯2ac§˜’)[ït"Ü̓®ˆGa8Ä“b'ü]„Vy-OÒ›€JEU 0§„VZŽ„,ÉLlÇ:jY¦óuöBu†æÝê ¾¤¡î5Žê'<~WY•˜È“†+ c…óŠ[z„3ËÏÚ“'›Z³0À½p÷ðø¤ýF”w¡-üÜð­æèYíi³ýfw÷Xhžÿ—§%Ñ ƒ‹w\œ&ŠÅ õFâ: z˜´ŒX\ ûag< Å» ½þH\ô{ŸÂáUØ‘´ûͽ#”ˆÜÁª–m·‡·M·yZÎé_—ÓÝõ.B\ŽÂ!/ßÕÑ;9Àøs’¬b‰ÍšìBý‰p.£áu,âñp^|9îŠÀ‘¢W Á‡æŽÂÐÛý!"<ÇÝ`(>ÝqSþØeÿ¼ë×AïF@¤à¼ÿ)”¯â[ã^'^v¡ÉèÝ0Œßõ»Õ溱µ67?@X>|ò¤FÂ’Öæª¹c|¤\c´K¬î×*Z0’Ä€ýe`¿Ì3¨6w«} ¨ì“Þâ@†öÖá1OÎÇ ÙâHûè]à¦÷= YûMý8«>ƒßß’Ê ‘ 0„4+ÏÃâêsQ ÉœU„ˆ&þqóý•ö«É%ÞBˆIàëÕ?1‰æYV3/"æ›±p„| dw£†ÄöÝðrd¬˜ðbÔÆÆ…Ž4(ÂÅéŽ/Åÿ9ÉŽÇz ¬ûæ~UØÛ—¬×´Mð„p)æ ¥ b'T¯3¾ ½FV„R'ÓX”‚8¯ÏeËË %_–í¡ú#?H×;>nœùµ¥ cð®bd ùÖ¨œã†# ùš=páÑ$¸ç'™=«%͹ŸJiq—NZ•Ka,ÝlŸdck®;gÚN{¾ˆaî€í*"º½å|0¼¹9=èÇqóU®SCšs:çX ]Õ=Y{ÊØøáÖ.˜”† ,Ò ÷KÒ¸ÿÀ€äáÿõMYë-5¦T~ÕXI$7½â¥öd*ƒŽŠÁ TS %QO<;¬†:mvªgP.ÊU±I4hR–F²öDÜ¿•Úíºn옼Eö‡Æ~ Sfì£ñdÈp|E®¢O!ùHk¸ P¸Àd`‡ {¼«ÎÀÖi`J?ÛÊK¿Ê% rœƒvþ vWt@ÝéQPÜ6¬Ö“ÖÓx)z5 Vo‚³GU‚Ê6×mò.ß\j£63 "C(ÝÛH¬@½NØSb¸#»‹5A¡Cj_CX4'QO_kàŽfÓM¤©±€â~Q“ÚEáGj˜8dˆ\ÀðP³3Ô7·‡Ôëɾ,@#;W!€Îã~ýGD." ŠhXÒѧþ(fVPZW‚ŒÓÝ–ìõqÝyÞ&v'9—gJîAïª*ê2¾¾[»'§­¦>c&‡M\~G{¢ýb·}v|¯×æß~Z> zºÁ ¸øð úG óûéKõòúX[[ÛÚÜøóÑÖCú¹¶ÎÓ³¾µ&jµÚ£ÚÖ£õõÚšX«mn>ZÿI¬Ý.©g‚! ò¡ŒãœvÐì28<¡~/Ïùÿõ§ÿüÓO‡Á…aùVíˆøÙOÿ þ[‡ÿþþÿÿ_1õ““–üßø¿ðßÿtšü§äóÿ[J5 ºaõã8½H“Ÿ>>*Ö~y¸V{¼þøÉÃ_ÚÁ%Í_0àåc>rýßâꟴþ77>L­ÿõ­­åúÿÔO·[G§ ïò¦û¶$öê;'piÕ›mP°áÿ­—ðK]V¬ïÑ/ðïþñþYŽ£v÷õéîóŠhUÄNElãKðÏ[ü ÿ´@‡/÷v[ðý6þ› èMþ@Ë•¬¶·º*õãúÎ+Ñ‚ö;„£æEˆ(Á1†álT×ËÐÌn ŠMªÞåè3ªë¸‚+:Õ~Š: >ßÀ¡)úTE­æ$ì~‡aÑ€ô÷; U‚j׋±?„Ýð¦b|Ûïö‡œ¿ž‡¨î‘q¬Y!£NµÊÀPMŸTàuX,¦áOÜ  ׇWãkPàãDÚyYoÁ$í¶RÔ6æN[þNv_˜-Ù(g“g’¦†æEN·VÓê g2hâ<Š[}85Úƒ«¯`œ’XÁÃí>k¡+údìéq„+½Pß+I¤éÏí#¿’æ‡ &;Ü‘?÷’äÏ|”mß–˜N+ZùW•°ÇC8K“¾ýŒþœW^§ÆútãT΢r¨Ø¨¯ŽV¬Q£–-?àøtJ|Âkd*8ȇÀ!ì˜dUQî@é-hòÛüàó»X»N¬ÞÍÕó›Õ¦ªÍ\ø–þݦó* “Î .ÂXŽhw8„ÓÓyNŸ â÷lìðýÏ1ìÅXÉòýDdïíÆ}„ Ö”ø<Œ/†Ñ€«‚k2%¤Âcõe¿ ç\<#Á€1ÀáŽdaç)·«Ñ±Y|o÷^…Ȥ¬’¼üª>´5dQ7:Rq3"ˆ(ûÔ¨Þ‰‹7ï=T9¿Ô*¯ÔWè·2µY‰zŸJòƒò Ò]µÛö:@¥ òÊʉ¨eÚñÚÉô² 7ïBïí è°HÆ.>GÝ.œQMuà°:“‰W^Ibyú“kó|ŽÕõ¡Õâ¦8øë!L<;ô±ax ÈãMœG¯ˆ9=ºFY­&BÊL%ìmæ§aÝ à‘ÔÀà«sЧ€jùšbµûh$qÛ"¦´Ñç@I còß"º0q×ãî(b¤Ïo$D%8,rBKˆV9K>Þ¦„4Â*#óF ;ôUDîyžiij°•ãÐjµ­ñw$à)E= j9ÑÝVjf¨_{\yAߟÓr:µ–Ìu‘ÈVÑc9«¸)÷FÖ hùï*º!~×w‘M@Ön ß(tªfs ìn˜GºÛúõŒÚž²ÌfH z€3H©Å‘0§mô½Ÿ‡aÏ÷¶…=I*W=`ƒ9l4-BsÇ‹„<ðèq NȨ›q]Îpb"©6׋þ@®5I—,*îf‚°ÆdºrXTûðÏë•T.ZSp'M Á…YõÔG­ŸÒ§¥fŸoF•¹ì´?¡ö¤©WJ'Ywdã—±yS6Wƒ”GÒ‰å‰puì ìoaµ"ÅBGïM&c›jŠßž‰5IaÒ¬§éÄλð6LV ʳչéÁج•oÊ` TïQÕ¯J œêAÀ–F¨ÑÙ+Àƒ\$'4:C—ððմ螬qìÐ>^È}Z)B{÷ µ’M(æ¢îN×ãxÄ×Oã¢väÏ s¯aŠZÎ \ZÊã³S¬n˜KÕTÏöp 0¡¸5™*œ¹Ô«/z÷2©Ÿ’w•[W{a•AÒ/ÒŠO7ö Ñ´x<Õ‡ `麷åŽn‰ËJn€Þ–Û>˜É;r$0ÃEH7 :¦¦yC²\À‡ÿ*CF»¾”jÀ4ŠßöL~C:Of¹=‡ç,žR<³'O¸ 7Û0Í›ÚþLÚ?˜lC1(Ù¬;_ûׯòxn¾NJüJcå§RkIÀšpÆ?iíU=+áW23Ι»ºÅõzIÙ gf\R0eÓ´5a(%¾8%’á{„ŽV–&£¼{GPöRZ”âµàNb¬àÓË¥-1ÜÐÎX^{ X^{U *½ÀH7ñ.0e~K¯±ÉË‹ Î¾ÀÈ>qÚ¦™!ïòúÎ^ŸE䨿x\ˆzpÀ¹€óJ.é!µ_"ƒcT.°ŒŒ!äÊ yŽuô­qÎY, }Œ9•¦ié°†ßé÷B¯Þì;¯”‚îçà€Ç¡¹É7ÉHd m¸\cAPZXrêÈ:ZÜuÝ>hß!nr7ýx”ôãëDËvRýÐö¿Ý—Ë€ E:õõ2 Ýà‚Wd–2‘´ÖG·´ð°ô°_D?±ññ2°ºwXZò•ò'Ö(liwB–œÏ¬™éÍmus'n cÁö½Jê¤mL¾´ŽS€gBž_0±;î$KôK55 øk8˜áà ÐÍ¢QB–_ø”ò %TÃÐEØes,Âkèpe[é§PNÆÎü“!Ùrò|ìL3|”J–‡wBZj'Bvæ˜9'd'{Bv²&dÛšÉç»í ž'ñðéœN•¼ß®º/ã‰È¢ªEù àèœÏ~qZ¶<û f°(±] &íBÈ„­mv;vÖÔzèƒÐºÞ¶AúYu½í*CJkz*L§4qRߦ'8Ng~Àø÷;ËÚͧ쯖æÛ÷ÚGMÚúdׇºž8­åªÎåRAñŸñE×)êØ],íC¢¡Nh9èÒü4i±¡1Àv©yùÆR[½\ªãíãm•!¥ƒó.c¸ÐµÃE5|(ùîûìs~¡‰õ±2K6FÇrÀ¤ fŽ?I#Áp]°ÿ)R`€_Ë• lо¢‡;>÷‡~jGÅÆøìõLН²1ò ­;D$Z"¿iÃF Y}©•gŸü†‹„œ'´Ù‘€×¼Î "&”·¥÷eQ¢dÒUÐé䦩,±îšµ2˜“·'­Ó]e} MX¿C‚Ťº•úÔ•Œ’x_vèôŒ±°¿1ÏÒU/;šÏd±µnå>s^¢q­2~e £Äñ3¨àdª:Ü‘Ïmv£SS‹FfKŒM"¯ ¼Ø½îcø3ŸwqtwwauizÕ–<ç{ºD•ÇÁÞ<ÇÕ†Ød  ó’d Äž_Ý.PÃäc4Òl7¦ÞQGɶ­‚ç?ÀYà"[ Y# DÆÏÐØqqÆ8DLRI6WÒg2±R(N­lŸ` )ƇÙ+Ðíu&$=Ò“‰¥zùý<-³»õg¤Ix»çÏÔÖ‘cRa%)4€?®Ç@òDÈÕ ·y< ÎABŽ,D2H* H~^2÷³²>NÛ§wvÖÖìÅÒ #nÜ$U½¸ßVég-AfZ›å}²‰ÄÞ…ÇG8î©EEd±GtD]%°ö+ Ò_Ÿ5ÓöÐifTM㥔Á’@î›$°¥sÄtƒïK&Lxp’mŒÞBhæªõìÚ°9=fþ¬kmù•DZ÷Zxña¶nr˜xtèˆëñ †MY&”ß(‘”P‹Ê.A«ƒÖéaw`⎔Žöd½ <`äCf”AÝp„Žy !gÌɄ‘D•Äýt$™E ‚ çIB5QÌè 3—ݧŒmtTÇ£®Hý$$Ž„‡cÈ¥'—­¡›d‚ÉÐYš!ì* ñ©¸ÌnS6‹vÜyxŒãl0# F¢è=+'k¤"P8Z)“TàÖÄÃÉºÆØ8O‡ì“V­Ggñ¬|¦yÇW¸ÕËåüll{ ƒk`ê‰Eå›(“tÁãz«~¸kEâr•DdÈêÚî}®ÿˆÉŠô—6ªún ãp_£ûÆÑ‹ýƒ£0*xÊØoTDóˆã}±Bdkëè |#_÷ 7Z‡ò[_X.EWüƒl `‚}EÔT3@›§xÈQc7Ö} ?ö›9µ€'7?>{ÑzSíÀñPf÷ Ìž1÷ƽ fÃ<ò4Ú0Ù¨·õ×üÙ|±Ë?OZ²ýî[ UÓz‡ÀU²^ËÁ¶=>—qb¾žÚ/vÃ+ø“È?[{íŠtxÈŸmêqçø_s ^#jow[Ûºµý$y>J/´ö›íý M#L¢w”áÅxDŠt/ ÖñÞ©Zü'3)|@äTéx W1ßÄÍ©»Iæï¤…ÌM0ap!ꉒ¦›=lX ’yÕÀ§Õ½z£½[M¾áå–úÆÎׯKäd$>d"´óÅö=3\÷á´Ú)ö:/ÌN&.-‰{íà$nÔ‹®Ç×VS^¬I’:/:9$;küϤ£Ås …£Â_…‰©*ªSr7}´7>°'vïž[È) Õ¤šAn³;â…4tÅ'÷tª9}í®§9Ñ9U…@¢°î¢ÐÄlöµÌö©öpœËeÓ}¥ñ¼ŽoPY+ëÝ-Ï»{E_~œz9=K9d,)Æ'•\ìã׿=o"¿žå5甆 ܧm0íE,í~UÇ@°TÝ'¬œ±&2 8(ˆðoIî_˜rà«W¬º *«-Ïh›.!f¾M#ðSVI“@vQƒ_øøJ¢H;¬#ŽGÊ ¬¢†‰¨K¹PNu“ Ô­å~ñ‚QB…cÃòq^ôgœÜõé&wgŠÉ5Û®/vr×g˜\Ö¶<¹è,“›;Ÿ,˜¶'É%‡0›~Â4ž¿ÐVñÑ8Å?ôÈš»ž‘QéV¸p×¥4¯{±*3u;Yë ³KS1‚=vdê€ã¹—!±“Ñd§J˜%Ò¸Ä i˜%ÊïKr997SiãJ‰g Ÿ¢œšhøÔšj»(ú®% !‘Û¥u œ²õ_Öël&ŸS/s«fyey’jJŽCÕV°¤²ã+’”½9‚,ÜLda’Íi6ØXûží¨4llû¢¼¢?Âæ¾ššðûf¶l´‰¡V³¤°§ÈÏVö° \6ú&î;ÜúpÜòUò¬Õ̆gÝfYy}«“Îw EöÆÝ³"TƵuj‹މzÙ‰ÙV¦4?-öm)"ÛÁVÉ$èÖT$±gnAö*7Ç8ÁV›vÚh[í0è}Xí„—ÑE„P¯éÖœZ6ðYެ@¯C Ö½Ó{ös^3ÿ«©ád öÔ¿£’¶~ÝJ¡‘Ú)}:“‰3J;¹©Ñ”sÌøÀÞÍís·,a—¥ò¼¡L¢)5ÉÚ‹\ÐŽˆ2ç¸çË;’ÎyÙ|HÊ‘nhZÂ3zíž!.Ò_ïß³ñæ?êòkEn¶SÙ ÊšüILå..ëå<ãáÇ~Å!)Œ]öÈ™°É‘ö S8Ç Z2li𓎢̒ )Ÿ´Û¡GðQµ »^„¦w"öÚ¥t… GªZ~§q¨JœÚ‘“Ò ¨ZgNö£‘÷h¤µç‰¿Ö†AŸT£Á5rg‰r¤(¼Ö;O\}@ìD'KmSXcÉØìíè'i,r5–·é]ÿ­¹ë?ÊÐXçžæ Û'¹xq î6ùýT[±õ“iU¢ ½­µ\+gQèmZ¡3É“I7°¬Õ2J&b_ëÙ¨dÑ„Uz¼ž«mI9Y‰Ù—~5¿ÿÌ.4Š2‹ÊV+éî Žºýžc‡TÝñ@æN«JØI|w¹ˆ:õÛw¹bSÿíVJ@ÍPÿmkkYÿíë<Ëúo?ôcÕ»¥pùëksmýaªþãÃeý·¯òðjOÕ[\¸Bàd@Öe›À?¶›ÏõÛt&ÉC@5Ü9:<­ÔOSAÎã¨Î…ÊÎUke(!!$ vúèš?W¹ŽÁ5œž‡××a·?ƒ«nÐ/ƒn7º zñ¯ýöÅ˨ÐqÃtÄÐu+ ;7¨‰äÕ¨«æbT £.V£{’j6ùA@):ÍVqÏÄ)o4V]½LœäT7öwöOàœ¢Ëq›Á ß°æ^Ÿ٬˜¬­…ú+ô©…åâ®ÔÇõõ7+У[Ö)(ÿHÊþåxLYR’Qð”*Æ+­å¯FM@ᔪ2ଥµÙÍÊÀq+—˜…²€ÀŒÅe ¡£0æ PÌ2E;!Ũ#„ëà Æ 8ÑëžPOìHnj²PÕ™Ža˜"(ž8 pU°éëŽa¨¬.¥£R8ˆËr¸XEPæ<¨ƒ¢Ú©e1îÉøOó¨ RýãrWµ Ç*ï¢ eN·ëzaV(ªh”ú¦lp2n;IŒÒuµ:DA#šÕáLNŒ¨RÖpU R‹{Ø e%éH 2¿ò‘Ô:¸Œz¿$M=äçHšúy!D£ßý„Ãä ûÄ„†/pe²À Ǽòiý)êcg80î.O8„o SÓF¥*xz%šò3$ícŽèýŒ73÷(Á0ø 3Ñ.ºAtM¦¸«°µ!k:*&%gˆTI²ËK@Žú{ÓŒLñ«Ñ(»—jhÉŒ:E1…§.¦(^SÜVuLíÀYTyÌEUÇœ»8¦„ôã–ÇsWÈ4fê ™z"Ý™ò‹¯Y$SÌW'SmÉò80kL Æ òTu2©„ÞYev )…|MA÷Ì…ÐSë­ ÉÀ|%1b˜ Ÿ©KbŠÛ©Š)¨0æö n}Á¸;%¹õK²Qÿ£±ßl½ýcÿ¤µ»÷Ç>%ÑÄ!9‰Ða^®<¯@‚bœã^"?®NÀ¹wæ&–JàÀRÉûZ7P)RqÔâ2¨òº!ÞµŠÖEh)<–eœ›þUjo §ü¦HUà$}/[Èû6“pfÚÏÖXŸM–§dà¤0N•Ò<0Àˆb¯:øö5Î9ÞshWUÕ[2‹}8õZÒA2wÍjçÏ©µ™Ñ BZŠ"&Ö àWyf¤ü'ÒGIÅ¢ƒÆÃ‹Ó™Y£4µ¤†ž5b«ÄŠ(R»teKQ±tšb¥‹­T:G™ÒEÔ(-^ tÞê¤ -M:©.©(Rštƪ¤S•$-^4£éN¿÷~|…›·~¾qK”ŠIUJOæ)PšU›TL*Oj÷:KeÒâEIÅ\uIç.I:w5Ò¹ ‘ÎXƒtöò£…**::e½Q1©ähJ(ÙÕFÅÜGç¬5:{™Ñy+ŒÎW\tκ¢ ¨Ï9¹ ✅D‡ãìåCÝÍ*§r¨˜T<´ÈBÉ©*æ,:wÕÐù+QÎ_+4»LèÜBçÞl+âÛ 9A¼LS tŽ2 óÕ]hÐTõÏÅ–þôÕý\dÑÏÂ?QìÓ_çSÌSêódÎ*Ÿóøœ¯¶ç\e=g®è©„ uÉýùÞd{,Ù[U19؆¾¸hœ¾÷õ Þ Fm•°†{ñ˜Š’èò]ž‚':Κ=ø¸êåHÀc :HŒg†j¢  ŸIgRâÔjCŒFB}7ù›Ô ÝÐiËÐÓ5Ïö÷i™‹´÷,P’’Í`Œ®ÔOÀ´Òl¨ñ`®Qælö%énhs}¯5WËÑ£µš’Xý¹ÖÖœE[P¯u¾R­sUi¹@«Z;yëk§ÀúÚÉY_;ËõuÖ×|…xg­Áë”ß-\ywEwS%wç©¶;¡Ö®˜Tn·Àé(»Ò®˜½Ø®Qgwbe]·œ®2Š/ª›ª¤ëÎûÄzºEtõ¢˜PJ7£~®ûzNÝüÒ¹bRõÜóœ]8Wä×Îm%®RiHs]¥ªÂ¬]Õ¶À×ö‡0œTnWÕØMy7<•vG²o«ÐnVˆ“¯Æ.+âìÕÌȲI¶ o­:Í•ÄK$+Q8²Cø\–è–JX“ÐN|ÍdÅ퓪´Á ĺh•œXU –1‰œG9iÍäÔªa=É"Á¾"”ŠŠž¼Ö)*ŠjC3Õ•ÅDÍ,RJøÄ0#MYEÔ)ªWO¢IÁßT›ÚgRõuoË„J8N±ÐÜ™ñ͉²ÇËbÄÙ•Aø=¥%çDmo„TÖÂO_ ëF–*5¶÷Šúî©åkˆ”D†ÌVØ,ý++œSõW»•&×þfÐr†ønj h±©rþ©kc;šÉxøõèf¼¯ƒPá-‹f(0ÛahÇüš*½ØëF¡Ø/šr3kAÑ~ÏʪŠd@Þ¬4³G=4}ñ: €,ŠòŸ‚!FQ¦óÓ¦©ÊÞ CiBéÉ'xHÅêúŽÔ¬ùßVaäζyкöŽøçËïE e‰J—ÞcµÚUä(ø¥\¶›¯æ>)㕆Oà¢Nɤ¦#T'ü’xõˆ‰4/Z3`)I@Ì$Ã)Ç@êƆ¡V60µ‡!ZUÑŽP xŽ„©ZØ]FÃxĨ!Eí0õ¨ò´lLl¬Ô¸D†:ÜeÃŽCd“,àO+0r§³=Õ{Ž tÎnG{á-Ì?Ÿ áÐû4”{#´µÆ£ŸCû †AW ïX-ëÅx(ÒåA„¥.å_êLÈÀi·›2Ƈ£Rm–q7¸¾xWÒ‰¿†tb´×ÅÏ/tùÏæºzšW»¿âv)«Å_„C$pîk(Kr(µµt•øê}x^!Ë‘w=ü2â³ ÿj#Šˆ™‡¼Ã˜e¾¥É ßK×q>y*Ù{MŽÉ­æ–ö*KÙ Kûrgó©ØÕ”Uâh f¨ò~ UͬÔÀ”uÉ!zgƼTàç$õàç*GŠy±uaèè5ñ€·¬Òßÿíÿ¬Öþ½Qäè¯2m€“šb·t5F€F¤òùDj{O 5‘ø;Y©Wd\m›_ŠåžÔÿÌ·`˜£Ôt…ÓPWWJ.ÙÙÇ×$ãþΡkˆÛ¢àV3r@t4(ùT¼‘§ :AÔ¶Ò@/ÇC ø‚ù Õ¶÷/£¡Jy¹Æ*Á»qÿ%öæ eoš :CÓœv—V¬–±K{÷ôâ{´ }ŠMÚ™!Á¤Ë„œ‚DTüåÄ*bíüÚzáßÿ îüúäèÙÿ“³ÅeãáiÉ;®¥~q£,y:K”dó¬X«Ê{szÞ…’¶žÃáÌÐÖ±f†Ø§04xöõ.#­¢€¾`¬$Ú¤ÐmkåtÒl(›î¶4¾Ôl–šÍ7Ñl¬Å»Ton]½)É|©/å²Rt¾¨À8½Ûy.‘ÁGŠòÔƒ¿¤µ%mÓî:­Ie«N©©üVš”J'ðj쨜Äpm$T`Ž HÃ; –B–Ž ÇL± ](¤2 á%ÌTïB&¿ªÌº „™‰L¦Iv5CQÎë|×rh©¡Ý«þ×µYæžz‰d¢½öSk;%K)7Qð—x\­Ö8™‹™N[Ðtd‰†ÉU9v±T"ššT¡Þ§Ñ)"Êþ54 ¿¾ ‡«<9ð™]»_ñYFšnseñT'C2%Éi²yÕÈ}áÌsY>g<Ÿâå'ök¤›@GÍ~vö 2A¯ŸºÒƯEêû€Ü~jÔý£°Ìþø¼®&þ3yY1Bjïãæ&ŽÎåÎ'!uVÑEÒU©´*-Í»õ'ˆF]VÃÞ§hØïQïÚeŽé0ýáH¥2pÀ„X Žyñ:¢4zW(*T¶y"!3NR7’Âù„Æ©¡x»O:’ê7b^¼ëEñæ" *Æ‹` ãCñÒ`G–ñxY︱sŸñÀ‚øãÃäI’^þé/ãHË›³(BZÏgà´w7y’açÍ~{—8a9a¯\iU‚*¨üÑŽÓ§óFáõ€æ “Êèg_Ž~ä?¶¦–±^» He¬ H*q<”ÖÃ,a%J qûÜep^²~Ò×N¸×P¾7Û•t¢À­t|%]Û¾’NfÑžÿœ®©£´y[¢&¤âûìöç¹Ïî7±FŒ«ï©£ò8øO¡Ûê u¬l±ûé¬{è 0–f˜áÈ̾yÎ佃kX<µéï³ýˆƒQÊ`Ïâ`̉ÒcObIÄ-¢©.ñŠ×á+˜’#¢É,ªþv»DW¦ ;@ê±9½¶U£ M#oW}h¸i>xhŒþÜÊdÐ?ªÓÇ9˜šD¦O¾â}’þ¢vÅ®‹Ì½'R]ö’=ê™î‡,t¡ãVMç¹®”ü#³âÞ,÷B]·3/‚T÷=fSŒï%¢†íƺºZò­»¿üÕE¯HÌ»ñ‡¼^Ò)É.H|xŠºãa¨ÍdÎ5‘Øäó­üI4^:æ¯Â•Ùè‚®„+8²ö?ˆw ÄF\åHª˜Ú‹fÄúÉzÛ‘ÑVƒß°A¤ƒ›?X ×>` Ö(¹¢Å)„WÒqöŸCuåOrå¥Ö¿èsØeú,¤NõÓ`‚Oýˆ3”UID9â=™ßõœó», eÊ©í æêpê²YŠòÑuû¶ûâUpè‚X÷ÇÄq܇¿ƒo¡ÅŠaº´$mÈùm´^„*]æô: hÿÅýüÑ^}²VÑ7ðçç°ªk{æ üfA”é >#àη½£N…ÿ¡Z…[<þw–® œÛ=Æè/Ã¥Yoë¾p®Y‚ÍZ(¶]?ÛoêÇSFÚeÆÅåtÊß§û™6­¾ „É¢Df4š´ö…”Kú=]—ÔçåÑïêe–·³a†“çÆšÝ#ï3¼ò7sJýafÊÀSQÒ­ÕúZ&¹ãU®œÿ”RÖªÆ鳨ÙGq¸ø31q>?›kBÆÏ6Ū¨™Ž‰½ˆotÕÁ¢D»0o}¡‡° _컞0€âýN°Ã渄ªî>­ômW_ìV©'¿—;Á#ýª§-¬FìýØóÕ}uú*ñYèÀ3ò"Ò±äþA×pM!"¶mŠ|`••·¦ ¢̉h¸WÇ)·Òñºä÷ÈÌR¸ªùdWbáSÛçKHxõ·åͦÈ>9)á¥ú¦‘ƒ¢ˆÔHøaÇ5õ÷>ýe"q` q`#±CÑû”<.U:Øv\l4p`ÆI•¨í‹Éàe¾o}˜¼ûŒ¦)Ãq%ˆ•78Üf_ÜOû|Дüþ é[odpŽö¸ñVq¡à?« BxïkÚ© …Ô[Ó`‹ÞºoO=ÈÝ»éžUtlÊð’L:J"Ÿ$oY,ꣀóªn´ôQ,ì±ìÿ—ßÐþ¿¾¶þpsãá|öÿ‡Kûÿ×y–öÿú1ìÿ·´ú'Ûÿk7Ýõ_Û\Úÿ¿Êëݱÿï­—Äa%íðÿ—&¤Ðá­þ‹6õïM0õ÷1'û*ì…C¼[Ì6“uŽ—T0^…]é›5ÈÔ˜˜æbmYÏóHÜ-€é È¿æÝë ‹3ÂHKê…`þ³uà»èR\‹ßD¯ì^ È%å8p^ýUèÚÖ¦Ã/1 écyÔâPæá) ‡rò'˜¢²,twŠëi8†«¡ ×"u£«îœ.Œ<Æ5 ÍŒ_Á1ƒ÷⽇S{ Dé:ꕨe·ó\§zk¢ïÀ½>1ËmPÄ?É ÿ«m…_ýÀÓû¡x‰‘eÊÿà)1’Wa„Ÿ)댤ÞOêŽPm³è×­9g ¸XN«z&7r`I¯íK¼WÄ|[ã:™# ӟ׸nZÓ+¶©}ãºÏè¼—ü¶w2¹/غíë©)“¬ßÕnqFüöN½!mø™…³ûlßÜ&;¯6Ë¸ŽÆ¦ÃüäÐTì„üÓT¾ª“Lz˜“‰©QMcß”9P †Obº½GÔý dñ¹Ð²Ér–¥L4eÆQbìs j*²]Þ $b# ^@åÁØcS´t`Ükß+›.‚$Y”òéÉ®—rð†Cu•qþ­•M@–ÿt7ˆûrAØÕƒûlÉÄ›² ³º| mÂŽ½·Ä^5QÆÉ1“ í4‹ú` ë{;XÛ©=mZˆ eÝF¸Žq[øìÛŽ™ñ2Œ­6>jz´ÊxzˆÒý`U{¼½'ËA ëk‘˜n5)Ë'rš3^JF?h6*Ò[eÌþŠ“¤¦'…V[´tI&Z=ðõÎÆòûû9Éæ_"ñµh¼¥í: ­/ûcõ™AT-"RÉ›åY<üÍ–r†Ðì$KÅÏŒ§ƒåƒˆòàâñy^n ¹hVšøvó¡Ï7€"uÍlêIØäérüÙ&û½¥Éþ®?–ýxyWìÿ›KûÿWz–öÿú1ìÿ·´ú'Úÿqé»ë}cc¹þ¿ÆÃ«Ý±ÿcÊóÒþÿ×±ÿ·ö¦°ÿÒ-ÅKûÿ¢ìÿKûÿìö›—öÿ¿ ý¢ÀôL_d\H€%B@„÷—Íà˜Û°0'À÷µÿ/ šž7b´tlÃ>¼½ cúáaEÚ1¸†ê›cøyÒjæ˜Õóœ>äõÝæY6òû¥ùþÛ›ï[{ßÞ|ÿ\_ß…ÓqÞíüsøJ!;Ém2Éì4·1™X‰h•Œçž¸W‘ºþj ÿKêƒã”lc­¾šDnmÆùVL,L3î^tã™Y‚Jµo&D%3íÏmU94$q Œç`[U;4Z±§¡¹2Ès–E¢ Pe­ñ¹þ›ð‰m'I~ J–Û#EÆ…˜ac×ô)ñßûéÂSðÔ;ïñîAúNÝeimù>·Abß–Å'²T®¥XÅÅÓÏûì­±²cmúÉÜ?Ø^­¥3.Ì´íøQŸIC³¤PˆžvݘGÛos°Z˪©‚H‰ü®¸ï@!ª±&Êra\M¿"Vø~Ú¡äbÖ\=X=ؾ¯Ó!ð-Í ¦Y–|M^5 EåcbéÁ÷׉ÓL¤p¿ Ø/G(/x–Â_š}<õbÝmýk¾ÇëM[û»d ©Æs¥£½::Æ óLqÍmª#Õô;„¾ŽkŸÜá™Îp‘9øúÌw›ðâwÑì+öÏX>žiÁ"Y~Æz` ëü½jL\Ÿ–䎲ûºêú{¦tÙMq[êö7ÆÁyÛ¼¸ŽÑx½Û\.½ýÉ.=¯Ÿ¹ý}~{X<•u_¾j‘ðÅËÓYó‘|O[&Eè @yƒ”Ä•Wš²Ö Ãbè[¸{«c¶î›§B“jÎ&ž±(.ç¼"åÌe‘e ’^GSSW,ÐíXž CoÚªVC!­ÄÎ2Ù Û{ª=Ѻãùä|oåZ¯è%º>i‰úÓ'DêæFµ)¼çN…uL<YdDÂþ†×绚à¶M|«MJ*Y­9^•þ”®ñpˆ:…,ËIÁR í°’,8 ]TåHËF!å‘4ˆ¾ÒYB 7]=‹“ÜFú £Ý$o¢rŠ¥á’6!ðdLw“Õ´»¨éfëè”›< -8»ÌÏ1hFöU¶kfWz³I›:"k”j…~qX]8'S<”L!¹"ÓÑŽ ³¹J˜ç1;$‹°#‹•6»vF#;:®ÃZ¨jmÄrY<'4ÛÝò¬±W¤Ü2ØÐÇB_¼¸a䪙ó´9%ºôÊáÔÄoɬ|›Í)Ü»6ƒ'ʼ·‡«Ö¬Îº|žöVZŽêÆàñTO u+12Ññaò0Ǫæ#äl¹Óü0ã–\RÈ«JÖj”¸>¦ ±÷9Fª¿Ü¢Ul bjá±å©ûg*”°[éSS¦wéßýnÛÿß™ü¿­GKÿÏWy–þßú1ý¿·³ú ÜÿóðQ*ÿo«¶\ÿ_ãáÕîú}7SZÎ`uYca?ðFµv·=Á¬>F]8?Õj^ítâƒ€Š¸w^Ö[õËšLÔα°Þe$»œ•¯ìaÞ.qïSú˜Ûœ¥[i*]à ŽÎVQJ2ÇŠíÛBô‡ðçÊʉú[é IUlÚ©Š9®jmìB(®«:ÏL#›ž»•šy6k‹è2 뎤ȓ™óÔväÜkÞ{j¼dXÊNãj tIšŸdµÝI·Ýé÷Þ¯dð+¿ߘí5GF-ËÈ^ÄœÐwXÇêöž‘/ÑrýYˆlWeß™ü)\÷'…ö‰—Þ|?Ëa¿ô´[žömk~&GXlWp†s‚,^JxÃë”ϼî™fi{³´]eHžYúÖNßoéo½¥dAk•ïTžÒçésѶMeåH;*ùëœ^ {< ¦ÎàÜüJ~M¾Äú“Dë•°éYÎ#óÂkÓ h¿trÏö¶.§åν_äÜ©‡(uò_I»;‹»J¦ßÝ.úîcÛø˜x*·hûV2›f¦#R0Óñi¼cÝnÞ=C®1­5YáDlju+S 7Á³'Ø®;‹N>ê¬S#½Û›XÅÈ4V• ÝõyQ‘ŒmÞëÞzz™2³JÅük¶’ËC£ìÃñt> Ÿ°ë)0|Ä~ ™š~<%S9^*9ÇÆ! ê~½˜Qdi¤ǫf‘“þ |ü˜æ!™¿h´Zô)$-x–Ec›¾õ§Õ^:nó1ìÿWçÁ‡;“ÿU[Úÿ¾Î³´ÿÿжÿßÚêŸhÿßܨm¥ò¿Ö–õÿ¾Ê#Óþÿb»Ž1G°{·÷ŸïòÞ8‚^îîŽÕ áÖü ‡Ò³œ ŽÆó¾n Çܯ‰›cœGb3Ù¥ñÿlú"ƒS Ï_‰-ú-ó³w2yy…ÌÝFý;´ÜwAaat…¤d«)¥” ૬÷Ñ?ÙÏ­(ÓfΌנñãÍØÝàú¼¬l¯|©à4ŸÃÔtøÜAY)\¼r¤°wmau;¦Z90=½ ørDd@&ûZ5Ùà&ïÁ¦!5 8` ‰FS9F7J@ÉË0ü8ކaÇë!ÖìõGïàÄPÑ'íëë°£°{ó‹óʱ|%«+4ßš1oÆ…Ñ.#¾ÇCŒïýíü÷cpc²0…—Nª#Ër‹“pUoÎ9J6®u¾Ž6wb£x FÄé7Öã",00˜æŒn‡"ÀyÝd5wø çÔ¢˜µ£§¾ã™ëvÑ‘DK‘þðx…–[…Òßë¨TÒ!I™¼I%ñ ü/üJAÃÑ%b'Ö~Á¯žÕ8Lïž)¬Y:MtÐØŽ yñ½¢ˆÁKT˜éÁ¥Ê‡0;˜PäA—&‰|®Nˆ‚¬ž2SØ,j}sœ™§BzꚢþòŸgnYÑ3 îdÎYå0ïú/îE;½; Uµ¨¢¤ –ft‰pòb÷lÇïþ9CeCfF!•d$©Àó-_DRfz†R"¤z†¬QÎî’hì‡Ð~¨8×ã.’5 E«ºSo@âWÄ6í»Ê/oìýž¿â‘ûíýú¡8@ý*ª’S¢JqÐU±.Jµ'k»ºY[­=\¿­œÁ)òöv÷N@jí¿xy¢òáüé{¯¾#Ô­]'µPTbK$ê''>ÃÀödÍá4¥4î%ß<å,MéïäÂò8«øËcý¥q8J7kçÁ؞ʉEïËÑ›i´Å][Súµ`?Ç7j“ko&=˜_î[6ÈI54J9ã×K“½@!?þýÂu.§‚¸¦‹$üY3†àu¬eB›Põ±Ûö…¢þ¿šbÙ9€x¨»M`Úã—49œÜ$½ó]ˆrºP5¾8'˜û£G°­)ò¤hÁð¬Yä®ÌÕjøU¶3Ï­ž#„éUÁ~åröä-&¹rÊ6c}-„}yWrÖß—gý}} ÙYVÁM Ê™ìüQ¥44wP~‰$ÌKÁ Ž©1iLëÇä ¡—ó(6R×_¥Øãx6ö°ãsñ†ÁõµtÆsþÃ5oÆœ$¾7ýˆÌÖ5xÉýû¦ÔòýtϺó͵Œ‰¥D¥Cw.éïWîÜúÒå„ÊÅòN¹" ï9žd8ÆîÑšK˜-I!þÁEekDÙši;¼—±‚ù²ÜÄ„5]„Ÿ¤þ¸('6æ$úãEý±ŸŸÌ͉µZŠ2µµ"¼8/Y —ù邨fÀ/}Ž8˜€ŠÊ2<`®ÇöÿwïŽÿyÿß×y–þÿú1ýÿ·³ú'­ÿu˜ä´ÿYÿù«<¼Ú]ÿCZšn\£'À£CÈG…,KÆfäØˆSîû7g@VJ_Å ˜4«¥Y‹Î"w) Ýò'Ýñ*§B´o¾T¯lcÕ+¬&‹ïG½O”KXárŒyrA÷‚t{Q%Ùè:âÛVRçQŸÀÄ}¬Æh¸ 0?É(óXC¯ÿ¯þovVv¼[ååþ}ú†æ ¹ŽßTwÂü—ĄýúŸ0¬ñ ’Kdü(tÁ¶ xòï"åtÃs":?ü¸>„²üåg¢ŠÙ3ͺ˜Õãéa"| ŒqU±ÎöxbºÇ c"F*ýJûj®†ag|ÁÕV{FJ£š.z]ã: UæW€7—ºF¦”Á´–NËÇôGùN¢TtÈmkô·4×`„,† XQš±›7R£×ï…èŽÒtÃM ÝL„SHq¹ØöËœÙä‹xÀZv3.öE ªÕj¥Yuº§¨^avHz–ý_SĆ‘2/cûé‚Ò©¡¸œ%Ñn·°2{†ŒrÆvCrõB—~_¯Ò÷Á$oï_#Ñ,WÖц—á0Ä—ÐéÏçœ!I²(µ2ò"ÅöÜÔÚΡւ+3ò*UŒÇ{®ar<ëfð ŠL\Í tpL<¾xx# n>f½UÞãÒ]cÆOþÄ«Åoâ½íô^¯mèxµ&är§Ç³äM"cÛ{˜¹%…Fä^3i¦ŠU™3¸†kZ—Þ—Õ-ºQ¯~ñ$;¹)Fñ{ÞŠžó ÏÆO¡'7Z|KgÚXJgš,B ½öôø¤6>Ïó%Tåèµ—ûÙ/¹=eÍz"`aÓüü." í¼äÕë CÕ>›RyÀ[©ÌIÁŠ¡JÓáÛÒVŒp¦oÄ#Þ`¦âL’.°&ùD~1+«$¯/¹Åà–tmüL†éb‹èô‰à B>I ¾µÒ,c‘ùž’pm–pÛ÷*®ÐÔoÖ¬¤H<¾w7RìÿöÞv9­%Y왈‰‰éÿ31?+úýa@H[ ËÞ¶Û’,cB€°['Nô‹¤%›m2 Û:Ñq®c.c.q*3«jÕçú@H¶·Y{[H¬ª¬¯¬¬¬ªÌ'—¶£ªu÷ÿ vT¹°×_ך¯ò"°Cüs×È,°ÿº{pPf½½æ«Ú^Rq˜“ÜåQYFeaŒ÷jpÂòªyô|&a»Ð…ømŸðÞ÷±1)ºàÛ2{{tÒæÉ›ü¤ØlqRM$Óì½B\søl„±êTó0!jëðªóÖCeú<[oµ¶v¾¡ã¯kïÃÝÔÛ?êcéÖÞky[°Ø+ be3SB 2ÛñÕÞwþY¾/s¾Z½GUÀuG‡>9$z~;¼]W‹¤ÿSÛêÝ1Öu’˜c!—=b úp¾w¯ÆcvÕi³£}A;ž´’-‹ÃTÂò¼” q㵊Ҥ¾W)Õñ˜·å®Ylæh–vÍ´zo+»¤–¼ÕjØd&¾¿;©»¼Ê³Ø<ɱÔ눣)ßÑîÍÅé.âæÇ§Ž±Ly5Vª ÉaÅA4FÄhÜ+Uÿ+; •n^bP[2ष.'Uýœçç¤g®4EŽiÑ¡!1ÃWÔÕ"0x]A€E´åäʘҀ¢ß|+ÂÛƒ/Œý½ÿ­´Oκž³ŽÇ9u`Ù:)Õ©o¨Ov¾Ñø&ÔÀß} lú±ö[Ô¾›£n䨛9°Â!ÉPà‹Sfw9‚»“É?¤54ÃÊGǧ|ÀLy¶6Òί_9/³§iJ~Ã~ËXÎM„{ðÍ™ŒP'$d|±µ»Â¼r_oèËju;dŸn¶L†úðõ ¾Ól¯õ˜6f>v¤ð®ZJz»“øöqâÛ]ómu۰̤ޕ!I´C[ºÏÅŽæ7c¼›wÑ~EqprL{Æ‚ê_*ÎÖb8[‡ªç 'ùÃlx1‚3ÝÑBØ`å«»žÖàq§ g7kW?jôí˜`ªÅoâ€Qdé‹:Ré{›xÞ[â]!ßß3R¨{ZçëJ0zt*ªÆË«„o8CKà$2Ðk2“µ}e†Ix˜Ì®ðÏÓÿèËYüûœÃÚi6LÁÓ¦tÀFO=k Šœ/Ú´Ðè•Ú ®Îx"®Â;i9K4ìY¢bnÒäµå["ë@Ÿöƈª?7â¨SЮs‰]£zæ=[Iž6'¶JB✈Kæ(s²e8`ޏ€ ®ìÙr'É•0×@îTîÖmØfhmºy(wª+ªShG,Wö„Á|£åŽg(E¹ž¥ÌSÕÐZèÉîdÞ)YRo¦4A•”‚d_bØðU~6‹Î¥Ù¥Œ«g.ôØ=­Ú{g Ý ê¦{G°…À*”ÌîÖÙT6HYu,ÁŠÝF…ÆéB ý¯ HšX“UÖÃÜôt=õØyìu˜šp)W¶ÞU<´âmŠ;G—qüŠUf2;Ù”«ŽÔftÍÕɆ>ï„ú1A!ušXÝO`ÀŸ-—î¹ãžëàå'Ì5¼/,йzüG”lLùWÉG"[£Í§˜Ü…áwr±¹ŠZz$e¥žéõÝÛNPÉ„;mxwpª½­N„Ä ·=RdC‘Œ³AfrF´ÝñºI¼îÇôxÙŒÅÔ=ÅÓP¤u¤Mè@¬3eán´ Lô7v. ¦Šu»1xEóR¿ö~«”´É.•š˜Ã­ÇÐù€N¬æ4™d ™,X•õ«'’Ãt{FÇÇ„¶ì9]¾—Úåoöé¤wy×ßå˜+îr°¼wùžÙå]o—¿xç‰G·íN¿ÆHz—έ–¡5oc7!™Þ€HHš^é¹½ógǧªïÑÅDÖýÒöô:!É~}#ZcÅ>Î’«nçÚù=ŸËq|bú'p9Öý£{ ¸„ÿoõÉÿ÷ažµÿï/ýÄþ¿÷5ûÓæÿã';ükþo¯ã>ÌC³Ýôÿ=èá àŒ:ñ“+›½£.X#4÷ú‡>¿`û”B=½ýF«L;ЮølȃN,¡¹PJ¤éJGâ&}Ô“ÜŠ/f#pßýµ½‹”{Óô£bPD¿‹ãZ>šyü=¶´õØgXªZÉ>ÊÄ3ínš²áÖ ¼&!Î{Í‚l[2Þî‚l~ÐÓY6_šÈfìšER‡ôXêÒû¸œꃞô²%DíØ©ZHEŸêÉt2¿½ºŠ@·¬Ñ_ ìV0/;/‘bïüãÍŒ‚zå>‘‘.Åcá_ˆ._Âß—n‰càõKABºøÀHßÞóÅ-ôûfF_„K®^Qº{SǶâ¶ï+ H¸Xê• @µTâ’Œ¾é«o¤9Òª?âϧä<3·Í ¹Ä ¿?.;ø9FÉ¢4gÑÍÐÇäÖƒc8œð–.>NÁÕjÄK&~VxX:¿žNœW¨ýø0^D—ã!^üÏoÎèKéŽYh\¢ãq»¡7Ò$Š.¿ùfN¶$Ñ%ÇxGòžòäÑUBßo¥OqÀGÆœ!æDKÉÙ¯8ŒÞ8/\þv-†œ§¾–5ÏOš_Kèã !ˆaÀcmÁµàf~ÅgÍ5ïA.xJ=Ö£€¤Ë@ºXofè‹5„ì|²Í9“€<:mq"‹€r½ÜfIÿ,‚~3@å\í¶f+çܘ4«G|Á“M°Ù ¹LÙœDxe¾ÄøÈ= L3³»Ò‰ÜT«ðkUÌÞu╘1ç!™©GÂVœ#xW$QÖðRÇcþ7®ÏM.†³ Èþ7X㯆Ÿ¤w•Éé1ÎtÇÇaŒudüãܶûOë[þÕ~ ßË©+ÇÅ,ά7!šë}ª=?¤éxÅ÷Lß´Ób JÃîääˆd¤â!h1)äò |C®Û È™œeK«M÷.µ!锯:ž<2ZW¢peÉŠ#ñõc„Î~|vBÍb1qÖ’©¿šMbIð,}œûlüì†[”NTltá…ƒ°Ó‹´¬Àõ\¡Œ_ˆÀ¿xDÒýˆ«ÉçÑÅÍ,**UçÕI{¯ß8jSÕgàÇH¡Û™ºŽò½ˆÎ¹xàe+µH,˜\$Å‚"”zÛÇF  ª>Èožž‘‡/9èòK˺1Nð-_$=nË‹é5ñ±¯ÀÕ&úZTêìÅ ¡åþQ,þ† +y:+ÍbtéöZœ»¬r—Efò“žÝD/0z:ˆòh¬¨“›qŒË–%BN\×3IÇ^Ìe¶-SCkOqÆ r”¹„ÛØœ¬n O ç|§¥+XT€NDëN@­™LÙx:ùÀçØœ/KóËÛ¤ÎÒ騎{ɶúÝ“ƒ-6¼\àÔå³ÏÐVs$Ñ`D{£jø‘CCx¨ùJSp‡¡±Ý<…%áþ‘tã·4?ŠeÛ`JŠ•FjÉ(³?^ ˆ2ê‹:#+¤Ê–;Ô ) BHŠÊ²* …¼Ž¦v²rEð36mDpø:½_“qX­ ³P…ÝM²µú8^8íç¾Â>êR . Ù…À€Sùã] æ½™kZ¸¬>ÄÎ89›ÿU¯×ÁŒÐB°Ž@„Æy£9Vû…µ´_Oç#ØNÙ9¡ã lTЛ󅳾u þżL{.YCNˆÉ›gU~޾™.F¸õQ¬¡”¨j®üV'‹1ߏ޸¾„Þ&èÀ7¾Æ]ާ_i5“´0鈑ܹÆtúoÄ×Ë¸ÈøˆŒ2ü2]°ÉWŸ@ڻܾávÝ ñzú•ÓŸÉãC­òrOÈw÷_‡·£mÛNîᡨá 7ãb <»*ÔŠ°ð_ ?p6¹¹ˆâÖ ²:!£„d²u)¢qK–AnÐѦ)="j€~|¯ƒÊµZ¦ oÁ žÐÔh˜Ÿ1Íö#µç»ã‹Ø·¸æ^ ¤Äp|~¾ífÎùb.û #&úÛ\-yY´‰HRøQÃõÑ!Å÷TÑl65Öï+.ÆàšlA}p¿L …cEÞº8#`©‰ËáÕ°¢ä™AšäΨXýaàôr„fdÆ,||›t²ËáhÌ÷ÆòÂBÙÀÑŸ­5ÑÌXfg7‹x].Ç‹±¹¶ÒzéÒ8SÖϨÿñìÅûkó.yÉçÇs6EE W/O°Ê¯ŽO·Ü9ês±§žErW]^Ÿ\L//™Dk“Gb—. zæÓ«È{Ô od„È å÷ þzO×ø0„hxÏ^Šƒº¶:'Ee<1âiÓÅM„gKž·ª÷vžký¦÷xÿ°w eù÷Eíʇ×etÉ"ã²³G^Ü;éÂI£Yëíág]|zâ®±k½>ÿ“¨xƒ•Ÿtÿ Vý*ä{Wk÷{I·æÙuÔ䣃nWÀ¢7`µmŠOøBã$JV°3†€NðyôHök'üç;¸yçë-|†‰´mž <<µv¬0øÏ>/­Þ8lJV¿­‹o:¼ÔÎ ±‡:dKP#ãWøDÈ­V³}â³  Dë€ð³ý“VA³âô4aLê«^>É…ÅeT÷UY„ŸMü| `{$Ä}«^ÛOÂkÖöUK0|ôÑÚâð˜¬.Zø‰s4PˆkÅHeÍÚA{îdrÀv´Ó¢‹–¹²ÍmÅRpbÄcÇݾ·[RpÃö£óéE¤!‡iײ\ð%Ep §431—š´ÙzUkö¯)Ð-‹î ‘nÕC—¬'Ûfz}’ð¥p.'´¸ë¶¸›­ÅÝÄwÝw3´¸ëi±§>f‹I„³8Ø+Ú±‘wLbÎÃ(&Â-hXB»—ƒã­ÍXv¡ë¸ÿ„AÞP8jer&N€Ý‰vU T¡N4ZŒtæÐ®) uNXÓ uOݼ™Aêž¹yáȃÐ"&OALê õ61lª§1°±¶‰v5¢ÝT¢Omž$~“ j$Õ½½ñ÷$ÎäÝ'²³èÃh2Íïoïd¾çcÑü|6:S& ø\&¸/^áé6ßÕÅN²«È\T•¯§£ÉB/(>íåûïÑx¬,Upûw³‚ì¥g{k®í:í׿ò‚TnVÉ(·¬Â¸ˆx{/F\ŠoUþËéx<ýj^ù:ÑÜiýÙ*± ýXq¼à¢¨T(é‹gìI© .}O,ÒÆÈ9~Ùäìºá_ÚÛ%ª"2õ#R;ñߨ#4§¬àÏí }¨‰Ðý2æ+õ§DÛcNöNOÇ»VÊW¯Ãlõ2 (™½00mÜ*þNÔ¾¶i‘M'îQz—¥ÊwLTŠŽþI«€é+«¦þ3{êk½œKó ÇÒ±4•IJˆÞð¦¼ÌVÒa†ŸçÉëzÖWÚË·ºïjGó]­%9¶ÖLÏÖšæÚJN`¨¿â ePùqßĹ’)S¡!¯HC{¥¸ ±ÕÍêa$•ôÝÕð›4c\\!Ò N4ØP¦2‘úOÕjØŽQ˸ÒÌ[Ö¢© ×ã™Ò+pá(<èÃÍ)\#\:äQüŠ3®h£=z´„Ò©A1׫RluÌ(ItK,½O%ëàÌR2mRÉqä_ó.:ä]´ÿ›;Z³Û`7®éw4Hõå©$ͤzhêî Õ“©¤zÒ Õ“©$/YwêÉ<`0»Í$Ôõ› u5â¢cŠ&ÁÃX« [‘µ+D¨ÞˆupHç=cfâ\›8S8ú"…¦<ÀI¶bÐ ÿ¢­;öÓª"Þm0SÞˆày\‚¥Ï“P¢ßA¤ r”_tz¯K±ºþÖ¾Ð.wÁ®Ž+xµ,ÌAŠ¡ÎãÕ&U/ÙíºÖ;p,ÅTàaBÇ“ïàLv”ù¦_;Lñé”ì@x±ATÍ.© NÁè|­^}§œU‡Ä=†KùFe“NÔ¬þ#l!TSÁžÌ ÜÀl2¨TÞ¾£–¡.Æ™ð±õ•­6Š¿]tS£×à679‹fP*ù !Œq{jÏ<–uÛºDµem¨;5Céàå.E(8OÙpü/‹WeÍÆÄtZâZß„f*˜‘;I´y ?£xÞ\ ù<­ô50›¯¥hû’rSãþ…7£Þ↛ü@q|“Wlž ¹ß3Hµ-R„6–D ¶§ H‘²m¢fÙSš`{oû§V/ƽ"v>šEe`Çh|  Y{+h¾:àÖj6'“‹iŒ´11jq]‚âD·“x#j P·Ã‚Ô§vƒ.Gê7mÜ%Ã%Ýo|³d|EØ#èW]*"õÖºVšLmGfÀ 9îzw'„d¨ë‰ÂZ]9º6tØFìϪÀj,t­HjÞ< =æmh]9õÚ’SŒg §3‰áöt›HW‰ûWÞ Å .¹ûpS xdº’ÓÃw8}GÇpÑ'2)‚gÃóO›Z ;XÌ4§É¬‹—¦Ù++^<Šê)í|»ænÚæh(5ëâYåºtWW—à»÷1:ÿrñf"™ÿ¢5š‹þ¦™Šò„ó)X3QÜZÙûb†4”CGCx¿4ŠE0¿cèÒ‰Ðí…‹… Q/4Ê Í”ˆé†­ 2Ʊs×0›Õ³$H¬ôÝxÎ3sÕyUЧu>e±™V$7„Âoò, ÖÄ‚š¿á‘Ro,|#%ϸ~Óé~ç7î†5Òtfªc±ñD=YcÁõ2þ½¤zrè_ê¥çj¹)¹´ë4-ý ú¸±Ê>†s&ÙŸ¬—­ÙøÊä…^3k®ÕÕ\cÆd{X`“çšÓ6âÕwVð[=™ b6Жë˜ÀoõT&p¸ ®&š"é—%`IX†Ôˆz¾„ïÌX;ÌaܺÎë•áCÔð^‡UM÷9@#«F|w2 —Œ7F=½á'aÕÖ=˜M­qõ8XßàvFéš­ãh.mUuõ–ÌùìÓjxæ{žî•U£cþ â~!‚&†Ë(èqa–RÏ^€0¹X¦7?l´gO»l’ú=&u£¯Ma®´œ=´ Þè±ôL8zšCÉðtG%}ˆÕ#;_Ô 2¨Þž´Š/0±'ArÏ2»s«>ËÉC܈‰(.ØÍLô´¯_‘Ù~ÞŽÄŠ;õN\˜Õ£æ•§ëÝNßñïKuYà ’p'Ää<èý™ 9ô1ñ?¿Ý àøŸw×øŸó¬ñ?éGÇÿ¼ŸÙŸ6ÿwŸVwªþïîÿóAší6þçû4ÐÞA»w o—ÂÇòr[‘4LH?Pìr½aÿ@|,dÐ~„ 5wCݪ=T­çGåÄj׳ÑFŸ¥7%Ô¼ØãnȤÄKw(m tKt¦¾ú~G”Sšè,•›¦¥r€QüÓ0õýÒȨ@‚ÀQÓ‘Qýh¨0óîuyLT •õ˜…‡ÊúìÏ‹‡úB±òA;xÝ¡rL¢IÇ„!  ¦E5d»€€fD3®øk¡8.µ  ÃI@^d |ª…)\*’ë3@üÜ(3,vKlfXœ: °¿ 4ëåžu Ϻ†g]óÞ<«ì€5<ëžõNð¬q¶œÕÅ_M]ÍÛÌU£|ù>Ô+,— cp@µK§‘:•å|úã¢/`MP> ƒ–¯úÓU§ð® V!Áî¨iÈw´,U©8¤sx™ .Ò@ 1xáÊöœØ$2RÙÒäR çã R¶býV ±)÷Æ·®<¶©¨¬>ÅÕG¢îötf?ö"Ö»LÈeI$ÐèÊ©y¤‰ZÀÔ+Ñæ¶'ÛEÀµ“¦a¦Œ1²V‰+0(å ŽÐ~&²FòÖÁ{ ±fdŽ&ÏJ£HOžÌ£Ù£9;¼ÁŽ‘QÙã­Jg¢ƒ&ê°h…OXøuñy >Û#?É>HÈñ< ú”~¸ ÂØÏ¥ŸÐàÆ;Ĉlêˆû+ÖO„Õ¿;¨þ1ßiÛ1˜oe[#æß 1_KÑÖR?ö‹žäÀMr`%¸IV’º›¤' `ñ“‡p#€Î/àëjÍmZ“hL ¹ã/Hîø‹F’?¶‰æjÞš˜HB ³žø÷ö{=€ÑaVQsÕV¼‘9ìAJ˜„'δÏ&áw7oæ0 ‡W'ÁÓš»ÇIøÝÏäë8 ß=N‚šâç“ð†HXUtÆpÿc'8õçò|ëðÀÁÆ32Ä&/A HÅ;_%0–9&CÓh¶r£¤ Ä%`r+g•cW]%Þ}®PèfZ"JD t³Z5+I’¤¨fNší¹k8Š÷YÃQ°Õr"îÊu4Šu4Šu4Š_8èq:ªìµ:O^¡X¡X¡X¡pû‡žuŠ_'¥P í:*…Á~ë¨nTŠÝ%¢RhH¯C™Ä*Û6¶0÷-ØK:¬&{0ä-q4ThoTŠ›Me†2#Df À~c#[ U¡.ïX =R©ò˜ jÙÊ©’d9Œ½!¬²…ߌíå'c2(OÛÉz#@DBm‰OkÙ’,8fô‘JÁHB˜§œzDÍj5€- –{d MjÚÿ„Ì:u3É ˜16Ê?Î~5Ã*N¾ãÀk˜\ð¾k¼÷œâêU¨æ¨Â@V?<ìš•LUe©‡ÊIaU˜±Xí8²'1ÒÊ:ÈÊdEvþò1V…Õ‡X¡ø(fà‡ªe%O˜{r8QVÄ9®„1 ¤ôÇZ4DñxHåŽÃbéÉü#ÇñFbIOljëhsÜx,Æ8ܽÿ!F‹]ØO6I`ðÕ¼QZìpF0[wW¦ÅŠÒâpH]rHJ¤C¼¡Z…œ{êÚl Ń ç‡çæaüŽ#KàZÖ¡ZÖ¡Zî+TËãu¨•~ªeª%~ò…jyœªe7[¨Qó“™„ .ï×Q\ü1â¿|¹ŸKÄ©>y²Žÿð Ï:þË/ýhñ_îiö§ÍÿÇÛ•êŽ=ÿ·×ñŸæ¡ÙnÅÐ-·¸íí& —Ÿà”¸§ #S¸¥ Ë®³%o–âa…t—᫜ýï,EŽƒÔ®2EGiÊn–1Q<.Á '¬d@GšiaFD„#ñF_“¢ –BÒÓ=ˆlŒì¨¸ ó;H"ãáÕÙÅ0%^ë¡ R}‹á€F1&䎖 zLLÈ-z! %00Pqâ&ô6œÖì `oxceh½HŠ ¿’@%FÑÜ»‡ƒA)ù—1þU]|­U ‡\¯ÕÍýÕ H—J¯y%j̪YüªÎDí¾âXÈ£¹ðf[ÑM¼‡éåßÈF!G¦Ä$б—ŒIšÙ¤Ì(ò†½{¤‚¥+™œ}…èÕ¼ú¾±«¥ªô‰£ù<›¸úgB£-®gm±‰ú^á¥]<å0"°N&8 X'NDÖIü2àÀ:‰XÙÊ lŽbD_P°NEà ^(XhÈ o8Á VwáQæ¤5`xþg8Lzaz '„ ¦<“ã_Ͳüv>¼’«ÆÐ†®Í̙ԸLš%!•ˆ«ñÏˈ`y˜™ªB51Ézg“QÜœœFÂÓ)¹£ý¶!aoh¢©›ZƒÉ†ç Õ Â{€AÌÁœ àÍ9é|D•ÎèÓáÙ¼€; Î;‹âü9â\¸E¿¬d@/v°ž‘Õî ^LPÏÍDèbéÙzîfæöÎsWçvGsŸ“n}vï>»‹߆ٽ{ïìnÖؽ«³ûÅî]Åîݗݬîî*Ø º“‘ºu n§ûÏÎl!"WÊ¿—Ú&¼ò THøf ³#ô.¾&JèáÙC‚‡p†AYyY4—HÖ[ zÕPŸB(¬:6°üÓ#¢¶§¦lư†°“q‰¨¡ºÈê’ªäýB£úÑ=«ÏŽ¥@¸œM¯Àlÿ`°÷kƒHzÐ#ñý ÇÊï>¸Þ{Ý?huެ½˜Ú£ê>…0Ú#{³Çÿuœc˜ÎªpÃ%~†ÝÕчW¸ÒjÕÈ^Ï%óS;òÙµvü‘óâ:fƒuÌ‹ê¸$¨c^LǼŽÙó:.‰ç„sT)ÀÝ:…|ˆxŽ¥AX‹†ßíƒa ¦ î9À9P÷„¿¨{OݼsOƒÜKGÜsZ{›¢†·—·À”\Ãí­n츉Z°…•Ž»!  \ÐPxˆ×`ÕÜ&}Ÿç‡í÷pe†ï3ú8ÃþÎèÚ{à ºT`OÃètÙ ùLj¿£gž‚ü°|NAÂåÎ뿽ŠJ„ø’ܬ=¦±ù1㌺œwƒr°¬Pnœ[–[ÜPË:xiœ6¥æÁióc¨iý¤pÚ„Æ.«â„Ó&ѲÖ8mkœ¶5NÛwÆi“–°¼æS8˜2C¤è¢IøðÚÖpl+€c£…ÙUCƒ0mÖŽG¤ÓÁÙL¦Z£º©–ý´¨nË‚º-é& ‘¿?¢›Ðí®xn.œÛ¢¹9`nË`¹ ëðûBr³„’v…u ßwÌ¢Ï|±€ Úæ&îà âëÇéX^/n¹X?<œa8ŸÛTÞCL…?j?*ÓÁõ›g ÷ DŸý~_øÀêXAž0¤M+ L†„›c*Ÿ)¼V%áÚ…%º­€ÛàÞ#7«Ì&ëà ó(q9/ø†"€øäŽÄ’ ”Ö#¿Z^¥€Ë“ì©‹‚lJbHÕI8›ˆe¤×¥<æ·ú#ãÏŸ;NÜ´[àdŽsv…ûM‚™ öbæÆ¸ÛtåÕk£ÄL,H`b´ʬÙ_A>e ®Ùö¨3gà™€©8އ“s!8HT]aÀu5¾ô ¾gK]pX2¬ §Šùá¡”°ð@îp${³çCP`&OT„'a xª`áPªGpäK¥ŸŒ±À$zà›n ÂF‰xâGŒŠx, ÁE0”d‚ªÇ2QoÆ1 ;µŠÚ"ñ±2lhgÕŒ pñõ?TI?IÈ?²t¾¥]õôsïNj]÷Òø³$«±s×}¼’j$åÚ¨Xùà •óqÞÝÝ&õ#€úž•AÕ1¿8ò뎪Û+Û«•GœÞ} ¤'K‹€®+žÜ•oŸ®¦6YR×'ž>˜@ íŠ%Òï颠kŠ‚®Gü~ב}¶’j$å’©ë•HÏrŽ,LåPRWû(0º%²´+Du˯¯ Ï£K®{1åpv›gì§Ä»#¾׈3aú¤#÷ ÖÀ=?ëcâÿ|»%ðï®ñæYãÿüÒŽÿs?³?mþ?©Vw]ü¯Ýíõüˆ‡f»ÿÃ7õZ³Ö޳ϰEîÌQ XŽcì4KØ|6{\âèŠÏš° ÙO Aà÷6ô}Ô×@DI@D ü õV=úuàÑA„"©gºÞÚ0{,àƒ8F¯€zŒ®¶æñˆÃÓrËp˜E†t ?2å7Q—V®ôþgAW:R4Øp 1F‹¸êCíÀ5Ò]Á,ŽdUU¼2¸´}èÒÒð£+¨c4ôíô 3ô•ƒ_‹åÄp3ÐͲ&z©báu—FAÞ·z<²‰Ð@‹¬Q©~:T*¦Õëǃ¥ºOT*Z¯RŸz×|~@C°Pšû‘3Ðg‘ô#ˆ.,ÇZ*êb4ü „ :Ð3ê5²±¡:M¼Cwg;A*ž×ux ¨ˆobz£†{ÒÉ QH¬MÈGÍdÂ^ Ò€K„ÀU’rKØa¢?þ42±Gë#˺…óÁaÑ·á98‰H´ÑX'Kd ®!z­QÇR*™ u u¸ôZîƒÏòú“~ý8:ÿ˜ÌV ùJ/ß¼ÁËr=‘Ý–žH¹ÉsêKœoZ üÄZšHÁ"ìµû×…hSpE/Á¡‘w²5üaà6Ъ( jÀ‹áh¢c/"ˆìÔÑ K'‚6c"Åß„0¾ø»­¹|EþŠÃR."¿„Ü2#R7GdÁœ½ï!YcÜ­1î~1Œ»8ÄîÖân q§O¦âN²b:ð×st ä/.ñ,ì/„¢±&ûìn v÷ÀÝ}gÆÿaïÀåÃ`|­àãz§¸Ÿç—ÀÝpžös¦øøTo:qÏj…Qz›ÖëøO^ëûûÃnÍ ÝŒ—»YEDΈ^Ô0ΦâPû’?ê=*û ä˜àÁl^uo”‡£±ÒŒµÇsuRCx9$YwߣÈh™8†Ã½a“"tklH§)t@Ò½/ø4¢ât*³éW:Ѥó— ZâáÛ?H'Úש¨1ª¡¬ ÔJd¶§¨ì*š©T9q3‡È{VÈ`3¾oæsrÌõºÎc•÷x?>šˆ£ ê5Õ3¤Ø^ /P¶¡¡DÌ’§Î%ðš"X¤ûY„Ö?t3ðˆä.›ˆ’Sºy9%Îï2KWg–îÌÒ]‚Yº!fy0^ÁûfñŠSú$Úœh{n¹åV§9òdbÄäNnŒòr1ç1:;Äã:”§u©ò$ ªàಯÌ{>¡ñÈÀ6ã/‰¿ æ VÎA1 i±u)­D‹¯SºNF/Hô *jÑBÎ9T¹jwŒò6–«H:!q-+á/-åIl`”Ñx¬]Åx&z¬´A{ì…MƒX×`q•ç\:1ô}Ìwó9æ\iâJPèÂÁ¸PŒ >iÆiÃopéœ` ¿®çåìAÒ`7ñ©óÔùp}Éx¸RÒy|Ì^&Aèe*vûÁ×r‚‡;=?¿™Á5©ü‹ÙQ Òâ¿JÕ/€´;¿ŽNn¿Z³ÄÃ,’YAfùSá![pÈUÙP{1“‹ƒVµm”¯âo„UÄOšè,Ûé+ÛI´y§òñF”Ú¿ó•'khæ04³dÕ|ÅB>Ñ·ñ$aÁ–cÁ9S÷”% ’òˆYpç¯'–´œþN¿º™a b_yѤëêV|(Õ¹ø:‰Wã||sêN®²v{Ï÷ps¹•–ºˆ-©,®‰Ê¨ØßÒ¹Ù9ð 5í=b#º¦R$C¨$½˜«á§ÈûÈpyp>KÞ‹¨·ò/$\Á)ž'5 ©[ÄÊ”¬¥üêF ¾ºàéf½`|%[0H†¸³Ä~hn‘¦z)†9úvÍ«5”LÊÖú¥/|ùx«RÙªlU!•04=™ó*3Þ=OØ çóþÁ0ïy‚^»V^c߯±ï5ªkì{3×J°ïé%®°[Õ–î-Ô˜Þ~£á ÓZçnQ˜YOrà&9°’ Ü$+IÝMR¤!äÝŽ?âPD/y{£'ûIjvš:ñ@¾@)Ñ8ü,Ñœh¢}b±bÀâßëÚïƒî[ßþÂÛ…¥„*ð„ȪÀn s¨‚gnÞ;†*pZ~çPØ9qü:TÁŸ$TŽïÁï— *æ×Ö_‡ús_)ñ#ëû@ú¬¢ª%ó’E%~b'vm B´¤” ‡¾NÑqþ!šÒ[Q* Þc*j"ëÇJÐ#aÙï´8 aeËm—²†XuQ #œ‘ áò…jå%Ô*dWÆ@­ŒƒÔx%‚ ‰›Õ'¢ïeâýeBÐYÇ™XÇ™XÇ™XÇ™H3ax>ja'ô»‘Å ƒì½Z®ÐµÒ×Ñ<²¡ýEø¹©JŒ ay”ûV*ra6OêÓd¡¤ÐcY`óYÅ+ h*zfŒ5Æúj†´­5$P­‚ÿ+2ðW`Y¶ÛdST^ÿBW·XŸY¾{‘Ûô׳µØu[¾Åõ´Ü[¸–/^j¹¨¶ˆÝù}±£¸üŒÑC~¹°!Rºy[¾ òc1Fã’GëØ!îØ!Y—£;„1…ñ÷ B aP¯£…ìäˆB¨ÂÚcÝÁÕÿ‹h>š)Wé’8Þ,x|èšX$Á3¾öFµ¸Qy”=ö¡!wþ¿ÇÛ¶ë‡âž°„UÖxŠ~ ° Lv0 óžx&GRéz#©”Œ/—‹^ÔíÉ©…Fñ‚æ§FEa Q˜ËãþÎr¯îЂk"‹‘hLP1ê¯b`ª”‘ñ}q ñèÚTâ‹èr4é¶UIt¤ùìˆ/°¿YD€­MnÊ_Š\‡0(ŽK7\û(}á‹ÁUQ2p0qf.mƒN¼,ñF•ûœÚ1vÄ)RÒT|‰6ä‘dÐá*¡ÜÌÉìŽ7‚lÀã[^Óˆ iÁq/Rv³¡((½¦Ÿã=?da€ÙƒÂ 8=ÄÇU'&€?Ò@«åÜ)‰j4äd "xÈÈ“¡ÖÍŠ0í’#h•×O­|r&g°þ^aÄT€  À/ßà1„Ö›z$œ´?4½Õ‚³tïÇ( Ax[¬–w"V½1-•ˆ_(4ÐcbÏßj•,e ~]ac”¿‡d.àTbD‰Jéñüw¬Â çö]¶XÞo®aÞ>ÆŠÑÆâÚÅW‹éWƒÌZ®p™Bÿg|›Ó—í0Ê ßÕÓB0EÌF„:ÚöËhlÚJ'R&¬wôøW=zòÍ8Ù¥|uŠs–ïÔ”•¨¯DlW¦¼Ê0¡«£³£æ›÷ :ë̘i‘§Râ ù"v䌲–u£:ÐÑŒ”Q’_͆am§ï®õ® Gßñ/ʹˆó©É—¡E9ÃÙ¤G×Ê:m'mÁð)×éµî.-!VÚãÔûm7Ò"% Y QþÛMî¶,ÁÈv—±”WKÄAËíIö£¸SV"ÏÍ gÃéNÔ3ŸðG^e,ã ´³êªdD¥z_B"%àUŽpf¿/Ér)±®îÂ,!~Ù³{1[™”ÀðyIs5=BX¶+Øþ1«¤Dæ\":YÆÐd•ÔÍK”¬š 'ÖQÅVUlgÛîàåbн_{€Gÿõa|õãíîVvó÷O)þ×Î:þσ<ëø_¿ôÇÿº¯ÙŸ6ÿ«ÛÕÝ'öü¯>Þ]Ïÿ‡xh¶›ñ¿›­à•Yǽ¿Ú/³÷eöO3ˆVXÛÎOkg«òcGÔâÄj׳јU·+Oƒ3<@(öa ‡áòyîÚq´hH?óùXcc¥Å´2Tí¬ÈP #þ^¤ýgÎRœíø¿`&qÆù¬œo¶†³OÓ/Œ«äï©«éE4fž¾ßD0B7˜ï&*W¹*" "b‰Lr[ŠœÀôlAÓåÐ0Ñ:î IíèמQTtq9j¼õÇ¥B·¾ŽôKúNa[H Æ!zGp:+“ͽ É0gsP@" R&BLi ù‚Ó€ p*Oλpôe8k}á¡»Ü}àê‡7Mðì8΢ìiEαÑЙw4ùR¨K…‹MάEäd¯M‡Á±”‰]D“©„é4£Jó1)xRÆ('â^E'܉B#5¢œ´ò×5ƒ{Ú±óg”/«!•î 2òfkéà,­„H †4APO3%"äa ‚ëk´QPÙzÈBµ‹ƒ­èTà}‹Jqhˆb»+ˆ¢UckeAT:i=×ÑL==Ç'6ÊÔŽÛ‰c…SÇ,^§P/Tž·ËM€úê͘)"a¨7ûF|!¬Á?dbœIŠ¿0<›~!÷‘B{³S\|„ÊH¸(Œ¨€ÞrYþð:ú¯éèB‹ð ¬ îJ<œõ­@–ý\à ‡³/Ñ„ñ²ü#¢ cøD¬\¢üCŒ."¾ MožÜ¿¦šÒÔügÆÔ.;b ÞãPþMwŸÄº7×!äü/€£ÙÞàŒ‰Z HXXúÍ•îã®áV¶6ørWà3®¸Tà—R»n.Ò¢Ö– ±¿‰öexƃc¼ Ž)Ÿòç {üJ"ói0ÿµ{¼Í ƒf. /iðÂêð%Ÿ3ÿÊ(@È»0&Óó6±Ìe4WuJRB:»ðìcÍÔ¥ëŠA‚ëôRaÿ;k½2ÎÒþ, Ra>G\J"ŸWÍ?›.Ó+X?ø6ˆý¢kÎBá–,º¬ït™ QföPˆBb—¹=ä’Ñw3gmO·yzÉ%cv›¡ÙþJPxäJŸpŠÀ%ðQ§røm Œù'þ݆vu¸Ã«WáÇNÂ>¿]Ì“øÎò²í!ŒÚáAk€0l$«%z h@Qëö»IpsK¡§¥Á£yªKï™§ ¼gü+pƇÁ[ñ|3 ûéZ±gü©Ý!Œ<á먼 ˜P)0FšS‹Ò£ib‹ü82ƒ:u´¼ø;nÙÑr(yÀ—2()ð%Ë1D.ö:<‘Ö 'MUÇp™fn ŸÒ`ÅšÈÒ*£¢£¹ÌZu³r*SÖ;«ÍBGÌžœ=9»ÇYrJÓSŒ!É¢¿C[€!Ãÿuü‹¯;`þ‹dqÖpUëÄjuÈ…ÕR©оV ߬üØX-Tm-ºñ¡Oc³OŸ¬“áãR©_ª¡œëV`ˆZeõu½tÊ?ð]öû°NoyOÜ púÄß‚`ò¿ãù«UJòÃr³ª7Í6£¼"7탠ÖÐ0  O[ &Í_ó*¹cß’ØsCÚ¾¡_»sáC7 &ÚAk#d<,ß·;˜DØ·6Û23xªI³ÊL[ß\_€ä„CM8ØÄCÒ|§»|¤.p.*ÁÑIzxF5,FG(ox^8:ÄËÀó º©e÷ŽV[<ʹ;3“vƵƒ‚•-Õt Ü–'”nAHófÁ†ø¶jM)¾ôº‹§°\Š7ù¸ý§ä%šÍÿžÀÉ?ôï°Ô‰:2G™W´¯ %ÓP~u¨2*1uèÓ.˜’{æ²gHæ3Ч‚bY ¢ãšTðrJ«i£-ØmÕ'Išœl„7¬ ÓÛôŸÒcEÚbV4ƒ(‹Í/€ô€XpQSÒN"N´gLZ¢+7Ñ ¾ŽœfõºgŒ¬ 'ú}j»ÉPÚ–z~;çJçs:¥oXWƒ·ZþA óV?À[pRKô-ßÇdË3P5)q²7½¾eûp@ò>ÄW-êA¼òP}xþéëpva;ÞÀ‚SºuQ÷8 ˆ:„!×ñöR½˞͎âmgÿL”\\’Ë0ð3´¥49fŒ…kÈu’µà½>ºýßÇÙÅw´ÿ«<­ùcyòªÔ„y7ÀM…Œ’MJîê±z§õwÌ—ú‹[Gîf”·äÊs^ÃM€d£ò¼½eÖ:¾öÀ‡`Eøº¶ùb:dØ/#¾–eÖêN0Û/4<<½:‘8h¬ÓMh3 ±¿Dc3Ôv,P¡Z'Äã¿c¤aºý^½T­x¹M¯^Ê1ÌooÌB¶–šñª¥î਩¡òšzìg%g“ šf¹ŠL¡SAT3®E .°Ñ¶(¦èQ¼óxVq€ôÿŠfÓU›.¯Ìv9Ë(„4€5³×ÚM*GâNŒ×ô”4 „²;>‹ÆÓ¯š'ÇJ tot芌‡ÖÃÇ9;ô8Ü¡|ºÐÂ,â±ÔÞŠ!œc];Y Ú•c‘/ù²,Xxt©Sp*ª¯¡FYm#·Vbû‘¢ã ‘Y*Ðw­<#ÚxôB¾Õ¢ˆªœæÍÓÔÑJ¡ÆùÇþ4mìOíBO“ª¿ãˆ«Ç†¸¢‚öŽ|Éz`{GÝþo<~ü¿§kûŸyÖö¿ôÛÿÝ×ìÏ`ÿWÙuðÿv·×óÿ!±6ö| Wˆr®µßž„\ãÿý:ø{0<Ü1@ ÀÌn 'ÿ­Ô8 L€Æ£Åí¦^gCx΢fï“xÎw`K䃬“‡“û¯E×¶&öë˜ßžÓ·P$ZöOðuD@ì¥4P@„˨ƒþÝ!<@ÂÏЉ˜Æ„7Ë3°í:&¶\)ð> å:² åÍW¶. á+î™M£ l1œp&Øa: sYÑ¡”4ñ žitq¸^7h#. I”2)* û¶¹’qbÜŒ¬üW5WÈ£“/U-þµNC4ho)|¾Ôâþ²è™½?wîL>a~¬Ð¢¼#yÿÌX|­vF,¾8ggCÊS„âƒ_ÖP|k(¾ÕBñÕ3Añ4D+Gªa(¾:`ÊuîŠ1\_'ƒO4Ì-ÙÅà«ù0øì®q yû*;í!î€ÁÚ\Ø/î oY*ñ2ÕxêžÑøüP|­ö2p|]OMó5ÕÞ#ŸÊ§‰k…Ê®P¯ßÅ|„Ú·çËÎ×jKp¾ZoHžJçkåçK±…Iä‹m\î Î׺8_ç—磳½¥Àù³&ƒó©óßÜà|I9W·H3m 7C³æOÎÇyægçóépê´«ŽJqÍ:©…3Øc ÁzÀ‡`§äG¬Þ ^·B8n¿¢™•ÐEˆ>DÆJ?2M*Â郚C®oE0}|b`^ÑÓùLX:ž(¦¯³Ñjë˜NMÐ6Â0}2½_v® ¬ÎqTÎ+iý~®u¹ÑÄ$>Bkµ³7u¯Ì´E¦œ»é~+™ßÄW©–¾!™8|¼Xi6ߦÀJë$£ðéØ_2`Wç€÷Ôwnæ ßÅÔ: A­`@–é%³U\"~„·€›><évWh &#ŽHWtÑ•‰lÔ5k‚CË (¨øàˆìC‰&ØâžÅ⢠}[Ð1{ÇÓ†[a+2ay†b—Ç4&ŒŠ´J„}bûiSÁIÛ™ ñ›Äxý–‘ÐY;6Z-Öཷ¥íë®2šúfÚê@ùƒæ~0òßÞP·ÿû<»üaìÿž<^Ûÿ<ȳ¶ÿû¥ŸØþï¾fÚü¯<©>ÝqìÿžT×óÿ!ší¦ýŸ¾_;Ѭù_rï>Æi™aÿÖ¶?¢í |AýZÏl˜Ýò3œ¼š§D†…²ƒñä ÚYñxðØRÔ0»eù·Š[ÖMÿŽõø¾mM¢LRCi9'Pvl“Š®¶ûâzšM'ê¢1ðD è%Æ£èêñ)ƒšò&Å´´ÈC0UbŒ ù€[+xøÕÒ»Êó #jö‰ZØMFçt꯭·âZŠ~Ey›À( F°úÐÈ~($:%>½‘P[ˆˆVõ¶U^Ã;a„õøÁtßoÆvƒ•ÄÐ0Wø ‚æAdØ=;eL½“†ø¢_,u‹z“ãë–ƒÄÀx§¥Jjcie9}øèÂ÷\¸u'CÌ”¸ÂË£|­$ªð 0Û¼Ff˜aÇ³Ë ]Ë^ñQò¯øÂ¬¡‹\eš$ID1²†"-e]Ï¢9æ@¡ü«|$ê\RˆFÉ* gxz9Æc¨9+pýBâÚèÄ4e¼ç˜ÊÐN$ŸÂ1²1E»à9i$^›ú›ŒfÝ:ôþÕ{Éîšu<è´xЛ+ -Lá¢+žƒs™NGÖ ì™Aõð 2ì×$–&úh3èŽç^£WCó²OœÎOœÓĉóg¶XåBªœ×b•"FC¾þZçdêUþo§è5[±‰m#Ue¾êÓÒäãÙz C*UˆïZÜÞ¶Ú&eŽYÈ€LáX/Q×&´«7¡]™-ʌŋ*‚ BPãéb76ñv˜Ü¯ Õ"ÛÂÿ^>%$þ'þ„Þ¤|%åÍÁðü#O3*¢Ë—ܱ*Šøæ%D•ÅðfÈ÷ü_àŸ‚'ºø wÊìOâ“Fô‹ö½p(€Åò~áëîh³ô·)-Vy¿ñÅxBV­<ï‰)I3¸‚¬ÑÛò¨¨0ö©:È‘ŒéO :ðØ@\¿áûqì¤ßó)uˆS ³A„Ò¿¡ki‰^/§nF<-µA=½Û žfÔë¥õ,<¨gË êõæ§ Ÿk}`ñK5¸ü%ü cï`T HRŽ“–å@Ÿ‰®Û}šq »Çú@Ÿ.5ÐÊ…aå¶Í÷`tìû½3b¯£ÇÚ8S˜îe"6gˆÕÜñdÊ¥9`È[P©ØÉ"drËŠšì±ÂÔÙ6ÑÔyÉ8äyM´hã¿;y¥ªÊ-û9ƒÉª Üw¤=âË{´NõƒZG]Ïå±¾m5y Ýf™WY:~E‚í£Çì±Îž #•ºm¥™C¸S&óþ¶°I4jD„¬ˆž†•gBeýö(¶¡¢o÷aߘà…HÁ¯­®DÔ¶ah£Ýzkg„M©¢Á®µ Èïm-óç{tûŸÙçµýOðù“Þÿ¯í~í'¶ÿ¹¯ÙŸnÿ³S©¸ø_;ëùÿÍvÓþ—yÒùÛkûŸµýϽÛÿp† ÙÿŽË-¤!eÿcÃæÌº„…O]BH}oóŸ–&¬{¶¥mO+¶œi±h)„Ð¦ßø‡¬~†?`9ÓEË™¥=ßXÛ4BË™®ßrÆ´Bˆ¶m¤›:u‚ÀH ½MÐ\(ðt°SBvBF[ú~S§;˜ÿøpÒÌ|Ì_+‘ùŽÏüG¾ƒ.ë–Èö§X:µÎn¿·ùϽభ(Í4ιgp·ï¾¦‰™|vµBåy«ÌE ˆ™v-ÓüÇÁ³í „K±ƒàr-«D+®»¤D‚%‘ÇâxÕv÷ŠV—Ç€  ~n¢• í­Ðh®“µúŒæh%½³Ñ\‚Éiç0šKgõ‡±óé,cçÓypþ^Ûùh$¾‡OŒ–g‹‘ßÎÇë¸`CßÍÌg”÷f>Û*+Ÿ«ò䇰ò™ƒ‰n2± B&i!µÂ•0™Ø!w¶ü1 B–³üQ3õá-®—èU[þ¤˜s]̹êôÖ2纳•iεœ•2çZ[ùØV>ÝãU[ù°pþtf>in^3Í6¨ãÏä3óIFm[ÊÌgEV>y S¬vî ô` Ó­|ÄÅÌÃ[ù[ÞŸ•ï´Ó:Ôz.Oïý¦)-Ï…Õ­|.EÓPtÛʇfŸâé½+á}ªt³­°r¼wmÁ[¶;›ù6)ö м ñVu ,º´â¾¶ºû£ÛÿÌ¿\ü0ö?O×ñ¿æYÛÿüÒOlÿs_³?5þßîî㪋ÿ³»žÿñÐl7ízƒý{sT?)ÃÏþ<Öv°¸ëq}ª‰PF@)¨5;¯!ÝAŸÿ<\üÇ>2zª%Q#É’hL0‹AÑÞëZ·¶gD9 qG:aަG4ðšÒþ±NË% ‘|EÅDôEš±òWÁ5\ s°¢Èp\ Và'jMrîAš[ŠA…sY;ñé[;-¬ðÒjD›_Dr:Ǩ|¬y‹Âr$¾¢À7¹EB.ë¸/LS¨§ÍõðýJ ŒºÐhº5Лª|£Âä•àÕ3÷në<šãÀ7£{»ÑädðÚìò2:_ði ÆOÅ“C¸Ë£P㥗ëüG~AK¸ÄèÒ¤åô a@V3° ”yÓÈèˆñ¦`e±Ã <1î&úóoòžôo±ÕÆ6âbçr:O¿ÂUä|1»9_ÜÌ¢9Üz̯©eã[Ñà ض¾Ýl¢©GÙc¦#ž·¼“´wûpDßóm9˜3y§ð,d¶ç¾¥Bñí¶‰>XjKùz.ÕN*Í6–ËðÆRlÃI¿–YX•M£)“PºjÕà7Yæàjó1*ˆùþvù·¸p)«oø8Ê ÁžJŽ“R‹äâ-õ^©Te¬/YCèuµCiô-®<çùÊØb2„GÕ[ÖÐÿ=aäßBäå–;üjðEwøFYr@œ$ÌbÞ¢hÌ¥ž ä”…åèó§áIcpˆ¢¨Æ*Pº^³˜e˜è$§Ø†ÿØñ¯šÁbâ?|‰µö0åvvØ’<×ÊÁq­t~+ȰÐØ¢Ë|°Â*Þæ¥;;qº¸+± D'àU ï*ž“óïF+ÄÁýøB8^¤öʬWf]*îAPŽo=&Q˜³¥ñ¢‘lB[Üê^Ês\ КÖP ‚˜h@IÉt›I/[–“'¥_áÏýj±X‚õpKÌmÎúúÄð ;`MKû?·¦q5ñx8žO)²1ÜQtðùxayÍ ²ÞÃd¼sø txé².¯ÎpÓì=ú®¢ä'±ä]úµúX´ËeJ“[Pñ1›°ãQ{RÅ´‡xtòè9cGŽ½Ò t§ ÜöÂÊÓ†<'Ôá ;¼ì+²=ð=H-z.ú8[ÑÇþ¢S‹>ý“Äš¾—`Ó¦ õ[IÔc‡ÓLx'eÀö+Ýd o.o…q£ex6¿9#‹)ÄE4?ŸÎb!$6gl;Ñißòuv-I;s›òý¬¹k¦¶Çôº Þ2e× Ò‹âŽÛ² ²Qzëãï`Á[Oí,´M—ê{®¾ºWKVÔ4Yº%+õ¨š,sj—¥°0@H·[öSè4„v1‘µ¬ bˆMÑØF¡õåʃj2¾c´uŽ_­‘µ±vé‚z‹»—\gõÐVïy‚ž‘@øWi›7?õVñåžRþµ—Û¢¸Æÿ²'µUµŠÕ.QB;SqñšÞCŠñ>mÜá€Ë„åŠ-ê¸ú—9!Ÿs‡kÂ|² ÒF"b]œE—\S›œ«•‘—Oõ¼Ód9ÙBBš`áçӈ[ôB¦¬0´ìú:šKóÌAæ>X¤ÔÜ©-°·1úÌñ TºŒ§Ï²Ï }6XAŸ ¶&`Ü>-z!Sº}vœ¹ÏŽ-™MÍ=&}«Ì ùÀT=® ž>;–}vœÐgÇ+è³ã-$¤Áˆº}&ZôB¦tû̵ç7º-¤ëë^ ¼ôÙÀo´ÅYECZç»nò\=³Ü'ZxŠ0H¾;ç3š¨íükMg†8ßÞófŽÅ:‘ާÓköu4#jV3amÀ !›"/#žÎ˜^ ¹Ø ƒ[ñ¾7Švžhra…œŸßœƒ¿Ëp!ן" ý^ÅßáœF}¥Àb¿?VdLæ2ðgo†çÓ3Nêöwö|ðý8»äê îVÝì‡h‹/.…‰ºPiÊ üRtK×þaï2ªŸÓÍŽfÙè5€§IGMTF€ÙÅßuýoù`:t“†°Gí#gÆÓñÅœ7xqWP%ãBA'ÐÏÙ!i.‚Mo±€y´ðv¬ (ç[ w µb©UÛ{}Ðéùç+Öœ2uT¦ºÊ´e éFa6ýŠËœ!6&¡Ht&‚¥éDÐIBm¿ŒÃ£œÞÕÍgOX}8'Ëë«éÅè’owÈ\öLº±µ`ZÞ`U_ßpNíF“² Ø7c½óH_¶?ú2AC× p»¸'uŒé÷¥|.jW¦½Úw7¥~Wk÷á"šœÐGÒ}(—˜õö>ÿÙ‹·7eÖÞûç^Sòó]Y¶º-® ÒG­Œû­N9rB'MþÅIûUSµ nJ’Ý´Ï4¼Wk%ԧ׬µö^—á³}(Óy¬«‘LÙNžP»Ìvã2ºüaoÐ) 9“`6ž×˜û~í¸‘MÀ¬ºGZKpm36u2 Ê Z Žœû¸¡?ZÆâ`W‹Ö¾QÒMÃDºÇækÀÒ ¿=ôd©æß=µ´m¾E3®¹¸Ø­W<í„›*0qø>õ-z¦(ƒ-Þ4Wƒo›Ê2‰S±£ˆÛ嶇K*‘Ûûg¨g™l½‹fv…0¸Å|ž9@ÆDThmtІ‰•}Á&mÇyÁ¦³6»Öhøæ>ºÆ 2Ma6 5£ž< ]ѾÇʾ¬T³lmû‹ØÄþ$¸¿ßø7l*Z˜¡(éT2Ð’ÉÍ/g3ª÷ŒN!©“îöTX\Hò¶å…ý½*s5î";XàóKm´Õ-3¬ÞK0ÒÈižñfüh6ñ÷b_©kKÔ–¨kÔ&¨JÛS×H4Í:—‹š˜~‹U_–#×5«´eýî––ù{5+É›9×ö<0¡‡ÇW‰ÁåŠôGºëÄí-¶b±I¹Â*CÁ±[¬±Àµê À’¯Ç|ðPkÈ¿EÊ'rrÒsío}¸½/4ÓØV41ÑéA÷¨ÌŽÚòŠ®Ã7&­ãȪ€‰€¶¶6¶15ÜÁâ_Æ9Œ,;»ùß«£î»î~9·à›ÕZê…,ðVbq‡ÜX&쾪@l­¢Mßšâqnõñ³wÐO8Ýj— ^å'\™í^­Þ»o Ö{5à£ÄR<ÅV¿{rÖ¬Íúr›õ¥˜é9f})f€w1ëó˜½e·ê󘮭ú²XõuòZõñµÖ»´ò50MK`+3(X¯Ráÿ<°4‰@¬Áô™è£ ½'袀lL°7*Û¶ŒÂTí8˜ªÉ7`LÁÕÖ®¶VêX†N(Ó jy3 –ÅᾇïlæcYÖÔ™a…fSd¾§uo—í¸’zà0HÂ-vÑXp€pLà[ŸÐ"æì£ÿ£]í¾Qƒº¾ñq´Žâ‹g·W7ã1YfòÿI)¡Ÿtgi7 ª*Vå%Å=02{Ôœ~f@r“‚´óÆWÚoo•Äßá%×*Yâóe¸ ªªux|¿êr å·M`ùVd¥u›“Á¯t“m²J\:·Cý†ŒÑšñ;þÐà¾A~‡®ƒ—;ŽuØcg¨îlêÝéÍ&v¥>>p;d²cuCúWRn¹¼Ò‹5£ì!&Ó1Ex爐I[«×Få¶;VÖ<¤|†Õ¨;8F·ðn!©Û©Ùô4Ň ]®øœiÂNÀ©àï¥S·•¨¢Ù£‰îAÌ–B§:h¶Æ¯\M áf“djZÅù-qqBԜʨ—Iã×U ²]×lÕm{«›dÊã\2{!³¦#óÎÈ  Át0悜*+Ÿ³Oh>·ùdnÒ¼5 1y’]9­7y² ™ÌœÞÌ?Ãw·e%µYýÄœö%¿ø¬@ãioÒ¾¥é.Ê5dÝLÔD€TEIá.Å®¨SáÑ ç°ãhÛpk©RñÅŠ­T —zŒ?ZêT_Üñ…' <õèü$Ýài²nЃm¬àIS3mIçMT5}k.æ¿›‹9í]ÎkÎr^³Vķ¾W‘ßåÜÔbx?) *U;~ Å 4„?ÐúXMXX5£KŸxiZ Q½è›³$}P£Çâ6¿WæHs’Q9Ñ”‘“ÔÞÂÿõùMvTöX´²ë"­ÍŠä$]©¡ÁKmä$¨Pe­Ž–v_©úˆÙ>ù-…7ð—Àü§ƒÖW|¦úzÖY†¡RbKKª=§›)8„›^CÇê7„uGäE\¨ŸlÓð×Àö9Z¶BÜSñ¸¡P:Ø[G{fè`o !]óHèg¶Ô=:²ÑÛT¬µùÖ³òP›b†²& O/¨gÓ^0s_SYHŸz†Vè,o- éƬɠ(cŃd~Ák³´ 5}kV6<í °ì~õ³l¥âQ* |–¤TÄCÛ ñš/ð‰šîò¢ñØ1Œ'²~3fvs…ÈÄq¾•"渓Âó²@‚ÕPýU:©„ø W>Ågíi£[¬ PgËXûDŸÐ°\ßʯ“ø5/ŸêMæyœ®°VvL{k­­, ¶ãc°Ç™,Á¨£çù¡=€4ÿŸù—?¶ÿŸÇÛO×öÿò¬ý~éGùÿÜÛìO™ÿ•ê“ÇOœø/•uü§yh¶þ?½Á›myQh^ð SoÀ?[ƒø„-î‚@ï×8Ðëƒê½;8èøÃÃeôæI}¤? 'µ7…Kç30@ ˆÓñpñiÊögW\Ò ;¢ˆ?Ì¢3ܘIRHèí,š®F36ˆæÑx¤r¿Šf“IaÈ÷ƒ¯‡¢‰¿N+uöù½™894ÿ—#5s‰=Ûk¶jñxV¶ª;evÄ5p° ®îlñnÙþ} .á(%¶l<:› )Røpü+ë‹Ws´¦ùÈõ\¾éžŸßÌ0j¯ñšS!Ûs¥Û÷œw;øó^—ß7ñWqcC¦s".húœ½ŽaÑY‹}+³×ð÷®_Ã%ò?ôÝ|£Õi6ö}m@Û`íBÚ£nÝvã :g ·¬šW-š¥m9í”ÎêØÝÀÖæ©œ}N¹¸ÅeÎW¶¸‘/±Y ØÔñI‹Sþ?úÿ,¢ùôðËp4F+iQÐZ&š…AâþÛ|ÌþÃXÜ€yÍ”E²Á¡Öñ/ wA$a4†ËO*g<„ñ¾ŒÆ—¬nMÂŽ²¬|&ÅV˜¢¢JžOgN-áoCÀH˜—ÙÞlÊGeH°‘Ž$/ È.³ÃˆçšÜŠu¨~óÒÁ·!tá‘ìM¯”чdA¾™£õ`@œqz¶PŒ¡ó£9Ùù™R¤t. fïКÿ‡÷ÃÇ­³-.báÔþvz“Í¿)‹“QMÇ¿~ŒpÐ “fÉâ#rÐ’‚ {ý©ôõÑÝjF„ áÌDÞ`*Æ}Œ`©ÏŸ9 ö«>¢‘Œgr> <Áíèšÿq„¬45v3Ç›NâÁúýZJûÁVѪjíž«Ú,SW¼:h‘ƒ¨[綨³SIr9\è5]…K™ÖÝW°‹ºž˹'‡*Ë™ª¬CÇ–0¼Ï~æ6Å51\*ìZ{]ŠôïjÿšNàK¾ÞíË_cÒž^ЉwmòQ]Œ`5ƾóèó ®"¼3mv(ÇN«:ù^£E§ä¯ÆÚHÍ¿FÑ5±„Ú™X¾O\‰ ýPèûzˆ4£O‚,¾_¶ˆlWìap1Û7ùÈÅUΦßW%íksNÀ*óªF§Ïs)a±—/ðÖ#öè9LElëãÍl ©¸PP%ú³ó_-Ä\e]ÄÃô ”ƒ›ó1ߺ 'ˆ?¨„a,mc‹ÿ¯¬/«ÈÅd Oïä”îF[Ç[°È ´6žS.,ÌIg*ÁS‰æ™Iü–äïÄTù!W嘕qex=Žd‹¨ÀöC·WvøÑß÷îfVfÊ{,Tp–ƒ4`XÇÚ¡T5=Uk jÉ·Ìiµ„$ óÑÁõ|4žNI1»íäü”$¦`@kJ'­£¦Q O¯`0‘B!C$ø!Æn1”Âóò5˜ÉðÏÏEècBcÔÃÜÙÄD„;ùÐ&€ÅÇ·à™æB{G½ÂpòaDDŸ? îk¡ÞR‰D雨Q"‰h§³Hx¶+gfƒh†‘ß$fweÃSÉ»ÒÓ.\YJ"êj0/Òï‰Ùò… `ÏmÇ8ƒ¥ÿŽ)ϸIF÷¸{ò #ï¬\þa¯kÍWÂÒ¶ÿîH¤NsÛ¦|ø×îá7¶ôT!Uç2ß¹W­Ãø¹Çðó~vŽjðq|Tã êä¨ÕÃþk„`Ýï¨÷D§õ¾×h¿)³îÑQòã/ɇòBøÁ¯x8ßkÕšð‡€L_)3*.¡ƒ^÷‡òJÞs6YoöÞ6x»8µ~ï]™q¦ÍʬqÐíò_?Œù¯o ÿcVIBë½ëñzýqvÎ@¾·u£z[{}P¯†Ü/ð¯Â$ÚG}$q çÀ¼Vžï3ôÀ;ªdï]½¦ U=^z|ðšHß?âõíö{AžÀ3Ñd–xUëõ»¶ë嬥üåj­Úû |4ÚüãUó¨ÖGƒÎr0Lüçq·ï),É[Ñ8`º±×á‘oôj1¡¡÷®æ e¿¼ëa|€¬ä¸ÖbÏAä®$ßCÍ'Ò¢sÑÍïî縦¸ç9îšÃðkÃJžä¹æ¸J¼ìN~¢íP"µ¼($  ª‰údvã“Ô€‚r£CÏ6l’-Y ÔÛfòÖ ¹Ÿ÷?Puš[ -39=%ö¤‰CTq\(IUIìaÛÐym9òI~ÿÏ Sfwêƒ …ìN}q Äï6u¾€¥˜ÝhɾĭYˆ(^L={ZýU¾§åTs.N ¨èµwJqÇ·ô—|‹,¼Ãoƒ¼â _¹ù÷ –üFo5Šú;UBœi#ALV,ïª:ð{Q×ÀºÓ¯›ç·çp"ÔdÀW·©~Ê­X’ÑÊŽ¦¹íX÷VýcRDв«qX÷*±ž¿:´ÓØT‘‹ˆuG|z4·ê"»Wp,«—`ò ¼K¦[³Xãs áhÍpÞc£.åí–¼ûÂÛBízÀä¥÷D¢ÝO'è[¢Nó¼ÝK¤iû%6,£—•ç¢Þâ‚î]T'Á#[̵ †õÛö;ùZRËá…·Ùt”}]â*‰[ÃÑXàQõEAüká.‹ÕØüŒ1Ýæñ&}‚ª"ƒÂM:F‡¿¢XðL†åY >Ñu4¹˜³éD?QR» ºÿšêuÐî7ÕÅ›zw5ÝÆ¬ØÆ¾€iÅ ÓäEÞ” EL¼DÊ:¹—Ê™„º*r2O[*Å9¼¦þ¬7ßâëÄ>UÍã‡WŽõæV,:Þ‰2hÄvQUc&_ûÙU:/l_D>ùM Ÿ37è ©Ót_‚Aí³g;l$œ•Èt@MÏSñÿ–&@žâ^Dó4_ÃÖÄùš”y£\Ÿ Õ‘ GãímØLˆŠò_ôý0Æ¡ä)@$áðãh©ÈÁ¢ ›rÊ qQÛ NvÊ(ZùTðs²Cn"ªg…]SRIŸÿºÁÓ“¸ëÄ=ìJ8›&>ƒ·*jÈ q¯ÁNm)®Á†¢‚|{m:‹Ä}Ï'Ä5LƒÏøôQ9hÀèÄCnPD^þõYæ' -Ô-ا tjá ›çd(·®°à‰ñ§’oeÂω ?cB¤œ\è~B‘û²Àý„âöÓ ³"ý>ç¬G½Jû2ÜÐp§ó~<ô£’ @ß²ô;À£ßèÛ5_€ud%Œ…¤-yÚÑÒÞðK4\h7ý½éUÄÅe­Ûšˆc7i"€û¸B«\+Tà𣊸ƒ¥ (*°áÓRÄI‹p{4:ÿˆG³h~3^·?Ó/Ñìr<ýŠÇœÿþ7/þûßÿª²e™à_êD´X6ƒ0ßLøêè%ñw" lZ¼†ól±[eçà œsŸväÍœwpϽ#ºµ¢% ¬E¾~Œ´VÖäMDÏåúåpßbùØ"ÖólÊ¿ÎF‘~ôÞ¸Õ1»*£Ÿ Q-X*¤mâ6^mÃl¢æ¯¨œEPoâÍø‚w÷ð‚ý ±`Öà ’pÀ±AÁSâ |]üÛ–—?™\åäƒÍˆTpÅÖ-,´l‡”MèÖ‰‚Œ™S]«t,ƒøò4o¨1ú#'¾¹ÂYè²ÚÊ}”OVïØ#qÅqÒ ÔÒl(f(‘ÎO¹’›¨o€ü•O§áÊ—JÊ3 ã‡¹J¦y ) úC rWÐká%ä,ɾå^kÒñ±¾hRí3Ö^Rït¶ÁÑ™&¥‹‰lÁ¾/e Ѓ'—¨á>´DŒÇ@*%³Œ&œ9ÁŒýú"uþé;¦âAºôŠÌúÀgsî–ÄÊ)k•™Îo©ÍRd€zôÈbNëìèb©tðX²À>*ƒjJ²Ð#ò)N ê£*AÀÝn–ʈQSc&Ú¡«™«R±Ç)­Ûä’H‘>0’í‰{¶hæÀ9 žÆ¤u.…ÄÌY³¾óxYÿó*Yn˨¡? ëçš…ñpeìötÖïÔ£6æx7TP—†Ú¯Š&ŠOÿˆîÉÁ¶äpWN_Àm`­/ï®?߀ótbŸ¸OŒ‚Å x¿ó3ßSaÆ·|×ú¸®Ëß6P—J,–ù÷CÉ9˜ÿ"ôGjjuì!~ÙðnÐõ'Ë3±×F!—EÅ /œQ(¢(ÌÀ .«…$Í&ÀcòxznàKÄ Pø&QÓá8K¥+Mä%už½íP)^!´øheÊ$N®wHÃŽgsÒ~ÞOâ1’ØìÇ’;I;·‘pIé.$9%#³5V/c5œQ£AÒ%|³ü©Iáó(äi¿v0An¶H΢­JÞ*p™¶Ñ/á´()Ùœ%£ØfÁ‡§ÎÍe†zpÖÄIš¯ê¼W­6dšBsV,5©TèÂc~ÈW‡óSˆSp>Í{>ú0¹¹Âƒpâ.Wl‚-X`2Âg ‹¨Ñ™ ]¼ ©´AK™; Çò—¤4Ë( â‹HY b£~f½6г½^Æ.Kå^;{¹?ËÊS ïÜÉÖ¯ru]f]‘Ëù2ë ò}q°–ã4ÁÎÿyÙüÌYY±'ògW«*öFŽüúÉ<ì§özù2ÖŽõóe^éZNOíΫ`¾užÕi† ­é9ÉäÔfXÖ®z¨™`I†C'Ùî{›y¨½|[öz¥^›fá*ª²Š.ÉÕœUÎg.Kse[(eyŒ€»Ò»²[…Z¬‘Y‚¹˜Û¬åk±Öd«Økhd–`ÐôÃ%Sç‘a+X·-¹Ñÿ‰e†-Σý´"Ý’yÅØ´šËÀ;²ûþó­R®‚5Ù÷_rÊÀ|Ê™¹§Ì|gf\Ér¼ ©Àî Ø}¨{l5Ò›ÝA€³;ê}ìΪ»«äc«wdÓˆ†»h‹lUÝpwÆ^ÁÂq—E#ŸŒd¹Å$[µ Ç~9`¶é»¯´?€Ä¿£6ÈF2JþÖför„Œ³©ï(ãVÀ£ßYÜçr÷¶{Θ4ã½¼iJKÏÖû8ü6àLÄ®¦„’w8^möÎ?^.l<úz; P¤ØÔJ=ŒñÞå–©Ë™ß$Û-]M窎4õÝ„{ü·ÿöBK&½Ò¤(_3ò.Ž¡ž·ÐÙ“+¾ùƒ;7“ìw~¡;LÓ]3ôÈùï|%Ìp`}Ã(ßUvC3úлáä<rÊ„Ü0À úè³I½6cSÎ"åIa$ÚJ©¶f|¯› –JU0‹”~­Y̳-àTš)ç1ôן؄:‡Á¿þh¬fÿ++ʼK^ÖŸYï§9è0@Or&пc4øI òœXÜWü}å€<—¹³,É™In¦k`g_4ø>'W“)üÒ\MÅKrµÇÇpgÉ3¨Y-î‹›S]cô'ÅMf)nNô©ñÔµŸÝ¯F²*—šOv3áDUÔÔCÉŸM„CX¯á<»n;+š wÀélñqúœÛ3L«ØÈVYÏŠ_Òm\5ZõkJ®”žt›ËÛ8š³ÿŠfSeDýN ÊÛšÔá#i3A%<¸³Hš‚*„ ù•g1fëÇo¦1b6£éÃ#0/¯V¶w2ôºiYOI%þ¼Ù<:ÂhK@7%ÃÙpè†ÓÄsþ¼ €.{zR…b¦),F6¶O—Ð5¸6ðï„ÓX‚>æ2§Ï™m²k_õõ®ÖRX}QT+€À3¾¿˜JDë³ñôüyÜ#ÊT¼¢Ÿ,o¾ ú×ÒÖ’§¸EØ|SØå—¼^£!J/ªÖÜša™ÑªÛ•mÿ}Þ¤ ‰5àLØ?EžÖ¢¨$‘ÝUÃ…ì-(Àc%HÐh¾YµÓh; W `vh{d> ß%g3ô»ü#®ðËz]& LŸÛe(=³œ.50ëQÕq[4/J œpt#ÁLô¨#™còúpÆcC^›™µÆ;9fÓýÜ" ~TÄ üØÚ uí„ú³:¡ÞyÞ.齚oæÒY ‚û䌅䚻k?Ú„gíG›ò¬ýh½~´É íÏôƒdéNkxÖæØ°§9½ú<^ gÖTBºš*#mòH]‘?l*¶ö†UÏÚVþ”Þ°yªqŸŽ°©4~*7X¯8“$ ”ø”zü™Üi³¤þåœiWãþ“zÔf«6[‰oÎÚ§víS+ŸµOíÚ§V§±„ÍêÚ¯Õó¬ýZÍ'·)ïwóÔ^ûÔæ¥±ö©]ûµzžµ_«õÜU>œ§öÚ§ÖKfíS«?kŸZñ¬}j‰ÊÚ§6õYûÔ†ŸµO­AaíS«=kŸZ—ÄÚ§ÖL–Ië¶F¹¬­Xû¹ÜÙuøÒ]oósÒÒF;‰õ‘¸ËÖÇòÍO&G+îè·ËVëºË–Z†Óx†‘¸—Kʼ®¿ì®Þ¿,‡J˜nÎ÷„É]'徭É]…›&¢^˜,i°´ba’KKH&etž‡ ËÉê'&9\œKÎW+‡p²Xh)]ƒ ¬AÖ :È€ÍúkœÄg3ð#ã ˜ß /^¾þ µi NU†‘}ü¦¹ÖŠ_V€8°ºV-Ѥ<íYs€Kôá> T q2¤Éšl˜ e`»’Ú¡×¹p/( Õl( à”m=–§>30hÒgô—lµ/Yx*©3=àL«ðøøÜÍÙ&zí§Šîllèɘ<ó=‚ºp „1–pTòŠ“¿4á-Ì\ÚC°Õð«uúØ¡iºü»øW¢f×a%¶íZòož?×Û )ð…¢Ç"ÚZE´EÛ;\kë<&k83Ræó(;mÍIÔè‡U½ I@ñð+m¥`øô­’®n`VMNpêÓÚÅÅçá˜ÍQ4ƒÍÞEôetÀJîõ]¹/]¥&K®‡[G]K(„¯¤#e³(hqfóv( Û¨hÅÉÂú[¯šGµ>6¯$Êt%qi©(k‰¶á@²yÄ0IÊʳg==gT”&>¬z­N¿÷޵¼…ßܽ¬¼™h8ß²èÛh{¿Ššo‹ É?y7L.G³«9›ßœsÎ_ÞŒÍvC£t DµèMgÔ©_¢óÅtÆ$ó€Ü}ö¬‚rçÞ¦¾|F·U8Óáÿy½Q)+™‡â€¯×f`”ë­öÁÖg³ÉƒC…¼âÌl’® âÄy/¶¸@ÇKÙ³AЯ¨mšûaŠ$œzïj‹½ÿöÂqX$ÀØ1ä‚`‘šŒ£Otú'ݶZ(â²½b½ÃÞàÍvü^Ñüë_ÖOேçŸ~Ûú×üÃüË•­Ë{(ƒ/ûO?fðùôÉ.~nWéo|ªO¶Y¥²»[ÙyÌß?eÛ•Ç+ÛaÛ÷Pç¹™/†3^•Oc.“Òñd—ICMaêógyþ·ÿëÿËÿú—¿´†çì¨ÇÞË™ßýåÿàÿªüßóð÷ÿ—d­ßïŠ_!ÇÿËÿýßV’ÿ%þþÿäëÛÖðúzm}¾òb1šDùüïÅÊ‹ÝíÊïÕߟí¾è /‡³Ñ‹4xýè˜ÿ÷8ûÓæÿÓ üa;§XÏÿ‡x„‚qRïðÕö€ÑJ½9ªœµùÿ°î‹+ß}T„øþvß NC:=qÆ75G\ }TÝ!Óªx>es“5kÚ)Þ€$`…/ÑlwU;[;[•¢§çÙÜTÄö¦“ÅltvúóÙ-;Ÿ¦lvÅåØƒžLFXÄâ¾9~˜EgèB/I!¡·³h>ºýÿì½ks¹¶(¶“ªT*÷{Rùˆœ$W$EÒê–3òö©¢dÙ¢MQIɳuëäEµ¬S¤†MÚÖ®]÷wägä'f=4^ݤdÙã™a—-‰l`aXÖs&N“,§ºö«d6Y(Ãd.†€Ù âD€Z7³tl^ãïø“#ŒúPdÓËùç!\p= x‰ø”^p·±‹MÄxL&À;'Àƒ›8é÷{Ãqz9MÒ¡ØMf“qr[7ÞNÇÓÙðÆ/™@‡iº­×¢3¿h6%^¼7¨¹CÌÆÙpš‘P¢ß~}ØÊg4jÆÛuq|9Þcâí& ~j¢’KRÏÆéùl8£ÉŽ?Lgéü níà*ýp÷‡áh´˜¡ÈÀ~ PÌx|Øü)Pï;úyL?+õ·Õý‰}A˜Ùt¼Påa~H’„~Ž4¦çãÀ|Îy<¼>¿bœÀº8 pú»/â3à!`ˆ[Æíæð]§½×ÚEá€ÏÔöGÃñp&Z³‹ëdW+ÍÑöö[‡(œ…¦¯Rƒý×û=³ ®5¹’qéª%xÈ Z®u^¥ÈÞA«×Úì÷jš`qo`ܚ͆·+" ×B¢†w–_Ôµ„ƒ.„^­Ô˜q¯pDÕ@ÿ|·˜ÝL3º‹¾à‡¿çý ) #Ãò¸œM¯áÛ}øZ ‘ÞnfIƒnàY6e§«/ÔH¡S×Ôîß7 ¿)ÚsÜKšd*V¤R†d¨^Ç="^'â3Œ À—-]L“¬.`_BX)ÜP‡³ €ŸN€ q¹¤£N¿¼V#P k‰Ét.FWÉè#^‰a)uލŸ•l>½¹Á{õh†7c@¡Ú„ .á‹É¿À€ ¼ÊDåzë›v‡ÿ6x÷U1ä‹ûðÓ0Êi5ÐEÿx3œÑd&ÇöÕb/à.Ì¡p†_ýwû1FZ Î%àAâ‚ —VÑPq€f‘Á.†Ö ‡p˜À:‡óÛFWÛl5a³Ix„ g)t ÷¿ùð#ì¿4«X³Õc¢éåeà ›·9ƒÍýf:¹À1êr#fXÏÖÿ3JäöÕn$x²@Ç*ótœdUu Pƒ¡Ö¹|ÐyoÿíËlèÎ_NÇãégD"ƒ ¾Nv´ã_ó¨¢þÿkÉkZ|ÓÏÑíhŒ`e;“óñ { ¿GT–£ä6ïmÄÏP38hJŽrh˜Á€û¯¯}в%A‘z&ú[ (PÅö4ý 'Cã\ˆáXÌÙ|CQÙ,ÁÕÍD×H³[’zM¡«£Y‚†4X|8ùËä<™UOÔ„ÚÄ”-Ή”3¦Õ f€LF›¬ª…žÒ¢š“@ŸEep7º@Y׈¾¥>Ò¨¿Ýí4ÅA2ƒƒÓ‰i,wZí4Ø~.1”+гp(CÊ yÃKŒðÈͯ WWÓñíWF-8mä® Y­éÌÛð³Å{U˜Ïª‹½Ùz5äž{LV…¸©ºx Ó<œÜJ&Q1Æî®öw<›r*´eTÍãËT_÷o’¦^ÊÄç«„63êóbŽûŒÜšï’þygÀe…€Ö¯‡_€£:¬JZziÓÒçéì#°Ë¨Ê¦¨n饱=ð¤fp/@Ô.‡¨/ÊrNòr«ßÚ;ž;ƒa1é†ès5¢Ô”(!ÈO¥€þ 4Ø*¢A¸F>äS‡ðàª5ÇM°Ù_|‘ 'p¾ÙOwãq·ˆð’:ÐO½¬xœ:'ŒÝãÓ n°û½û«üÇïâá†\FC+lò§u†›|T„ÎéÉ©Ú^ˆnQ©–YêðTb‰ÖÖK°Ä"/Ðçpï ²±“¥ãédCm#d RVå]°7ŒÄ«ÅdÄ»V37ÀôÚÝ~{ÏÀmæ“Üël±È¶·uTvÁT¢Ig •ý/°èP^h$€1fÙ¨³kñ\³e[ñ(và½2XÝÿ–l×zÏÕë\¬n5Y‚q.õ‚FÐÉ9¶ÎnÓué¨Z—ƲuŽ‚[gÛ²`kÉh1'ýE¥Z¥6´A’ÍëR®ÉutDC°§P÷”&Ù2e©ÆFnnÓ¼ZÂ5à›Ê -e%\úÓ®ÙÝ`SYÇlPÊ:-Ž ô!Úµn–Ýò`d j?Ã~XÒæ¶ £•7úØ­÷w¬qXXã©& ¢ÈCeŸªÖ‹ ý\ !6!M2»÷Txzì⇧ÔbñÌxSƒ\Qg¿òôÓ•¼¡’××ÒñžxLÜHéGÏŒJÞkåÆà˜‹ÿŸ;ƒŒ±,Zµú˜‘ç/û½ÝN«"6XÛŒxCšsèrÒlÓi+o!ÂÎ ´_v;­#TøðÔnD6/«»UNO嘩ÿþÉùá«ßÚnÝœÆê…üöÖ•oÐ/Aå2 ·DónAmÆÈ0À[NnÇmJëöÚ™@'z1!åí+#}…7YÁ›\]{’ÎÓá8ý' Xfé‡+Ì$1ù@jgi,-å ÆöÞúþ±aå—6ò0yQ­ÂBa…´çA#Ï׈,‘ÉyÂ@ÑÕ5ŠlŽfnÙ¸â"½ô×Y®‰4’(¡2ì…ômùÉôiéîvz„Œ2±Bï(wgIW¥ñº åØÑ…-eµjæ¨TIE÷ÿ%o‡LE¸Ý½¼]]°*kÒ¯ÜQIºÞ!D¨S«ÅdŽý—*òáí[z­4–Þ_Zñ'7Éä $?ÅÊ·]¸Ðiòy/Ûà|ÂÚŪlC½¶¡Žvíø±%kÉ/•ЎÞ ¯¼Àëâ”\^²`PŽ;ܤ…ÔDZɆa猆¶>šHeV2Bu,¾Õ¢[#­§¶’ ‰Ø×z÷B½»œÞ—Gìø’Jÿ ¶ÒËãÃTþs2›éTj¶«”£a­SˆY©eCŽxEihÉÝmk‹ò÷¾ù{{v>çâtÀß:-ñJhX…ì¤ÄÜ=/=5§#†=d3“8—8,KIì‚ýªŒÄQ ð3Š%$!„‹Óu6âü‰ÖÙˆ‹Yg#þWïo¹z×ÙˆÃ%ÊŠ¬–Œ8g Ö¹ˆÅ:ñ’n–ç"^Æ:ñ:q1„¯ †¾NE¼NE¼NE¼NEü¦"^ ‘u&âu&âu&âu&âu&bÆ=2ý¬3žu&bûYg"^g"6žu&bóYg".Ö™ˆ×™ˆÅ6/å:qaý{Òüü ù6×™ˆÊ:ñÒg‰¸øYg"¶ Ü_Ì%~˜q‰ØÖ™ˆïXt ±ND|צ׉ˆ×‰ˆ žu"âu"â»5½ND¼ND\ð¬¯scëDÄëDÄëDÄëDÄî³ND¼ND|¯DÄf›Êñ‰Rý¹NVüÍ’«±6Cecäøk*ãJy׉ÿ‰¿]fãp˦ÄƵÚW.µud #Îâ±4sЮ&ã³N˜l$LöÛú1ó%ÿp “o–eLæÀ³?r¶d 8œ-ÙFü›%K6£ý¬³%!þ¡³%Gù{ s-ù/ôùŸç°iü0ùŸŸ­ó?Ÿgÿù/ýèüÏßlõ/[ÿQôôñ¶—ÿùi¼^ÿßã‘,“™ÿy¬²ð=Nþü²Céž^žàÿ¸.ÚïÚ§ÀØðû”}¹$C+T¹Ožgœø‡Ërü iœá9œ^`~¶ J(ˆ·¸çîucÔ‰ÞŒ9*}u³ñL¼JÎÅÖ60Øoš¦ 8_°N˜·Ž³§¯I‚uÈâ@¦cöfa"àP[@NNÜæ|¾µ<ü²ßòKYöeGýq¢ÿˆå_9˜5ü³8%0’¼ÀèG×: Ø,¥x­Žó´K2ˆ¬qB¹áÌg©Žî©Ò=ÉÔX¹s"Š¥ÿd…·¼§ÊÄäAï•Ê™7Ñø åOÏ1+T‰a0T%|ª´ªÕºÎÁå!Œ`<œS£Y@f¯t`‚fÆÍ„¯ÒF•¥Ü¤jâž)7£6Ü™›,…+í$ßTÀ´ãÉo‹t–\¸8£ ·q´±#d{Ïm|¥(Òlçni§³ ¦ 3éWSØY_vlXEÙÈ‘—³®2/…Îå6Sr†äwP£ÑŽN[g%¶q‰“4:”h“¡nïÙõ&y¬Ûd,³0ÈqYÜÜàÜÏÒ¡ 6.q>!œÝ”fAœv'_9’.jœ3[‚}xu¢Û‹Wk/µûíe™º¸AÜd·Ò pÈôVÉ(ÉžÓÆ‰¿¿)þ˜Ô1·ümÓêçaf¯¸y2]Á<iPÌu¬D;vZm õ¼‚Ck8þŒÙTΑ¤¸º-@¸þÒÍè¹®‚xn´á›¼9Äs™@ÔêV;’ÜvŠòjµ/yc2×ÝÜrdײ>¤æ®ífSPÚ²º½•@A8¼Á‰¡¼ô_+Ÿ5æžbe* nèôvÞjwO»‡U•Õ‘?;e%eÔÇl*%> òf(š9n·Ì¹Ý9W%®u%ØVÙ¸ŒJåD~‡l[°¥;Ù¶œd[;ÂO¶õûåÙZ1ÃYGj“`Z­ÅºcÖ¤»'<â×%­¬œÛ×~]røu™>åò)‚5Ò9Y^xâH«Ü;De3n‹f2"æéa—ôÓɺ¬n¢oì:í’Ì<^ŽœîÓÑF–k« ªý”K°s#ˆ»e°ÁkÀêlxŽéè#ìàóÅl‚» Ü0²¦-—ÃËÙX²<0>Jª´¥ÿ´Û·‡E[ ¸€JpÞ»Jgb_V¢n•3}NÿLfÓ¦©ó‰¶D[j|lÝ ÜÃÚ¢š·n‰ò¶¡¾§˜7"’ÈÜŽÐ>‚8ý÷߯¡ÙÇ—jÄ&ÆìóB¬  ƒ¯]T¬ÖmÁc¬66Úw¬5‚߇)L¿…bTu6ã(‡ÌÑß"ÿ§íIµ†¿:U7/ãL›Plw lôp’á­vƒ„5Q¼f™„¦«¥3úEÀ€ÛE³S« Óü«ÙÁj˜.óF aê˜=)û”â—Vä¸wº<Áˆ¹˜±¯âÚ#ŠÀ9wÉ_-`¶QR;Y “ÔÅÕÏI´öÙÆƒ7¡<—Ò·VÇ™úŸÙeö;ê¢gÑÓgq ;êžn¯å¿ßåYëþÒO®ÿùV«ÙúŸ=ÝŽÜõ?Öëÿ{<¼ÚmýOïƆ}:©»½ƒ¾}Xcrç—øÿäÝÅÇ5Ÿé»è‡?0gìKøñŠÒ ïÒO“Ó*³ªî(þ±5GÈÁL?%$Ó‰a]üžJ šâ’û5ihÞhÒ$)|_}Ïn…1  H0JÛ£~¿â?Š)'×u^대”—z•·®’®ðèÜIÝ+L¤×HRÛ¤ekÙt¼ ®Ȉö6ƒ«?NýÈ|H2ÕNIh|V©áGÓäò2¥(°’BÌé‘k¤XK$)žD¼Él6‰óéó@âËsX°>.ä›\vÉšÙ !",q…ÉÞ ijÞoÝ[W§ÓEM †ýø´KßVÌûPÕ)? òpMÉ«TE…÷dá£ðÞtòëâ^thh€xhE®¶`åbNâz…Ó‰™!³ºH›I“Åšy©LäõÄôÛˆì6eÛ©´ÊçAPëk5MåP¿VCd«f‚Mt^}]ßS÷ꞃüÔy_9’kuÞW·»ÚúGf÷&o|œ½/ßË<Ô³Àì¥ãdxAÞºE9¢„ íŒ 6Æëá—JTï*ûˆ_,ô™Ú¾`/~ñ{q4@L³ÛºuÜªŽ‹ZÙý¦ âK:—Š,f0.|PzL~y€1ù¥Éü1A†‰à/à|*„L^ Æ„X"Ê{¬ûÆ &”_*¿VE…ü¿P¥ÇÇž^ªî˜T]µï/ƒÞɾÊ6Ÿ-Œ:”íNý pjØßjàk¥ seô…7˼¼X?LÒùâBK!aýU,å,ï4x¨P¿Œ_ÆQßbBÀL ® a5í'œÑ–fœ’úÉÞC,©)ö€-‰…ÄŠãë)´ 7``Ǹ,-V.F®Ø•F—¦Wm_C9¸F¦èàç4C‘.Fù”¸ .ò–&™P¤÷ PÎBe×p/ÃÔ0åî–Zµ‡“[=Ät"¨]>Ù¯‡a{$¸H_†˜2I" VÍôèÛ=z{"u¨¹þ»@½.Ë[¿¨u ;Nz½¸6»æÉ ÈÒÝé’òSˆFó;ªîCw_D]¾ªí¹o/Ä“²+1'/Ê„AH–Ê¿nÙ”Á¼/5+€×¨k[æ ·_ŠPÛa’€Þ†-¥t+’stëü{P<={G'ÝA-Þ(]_÷¬¸“ûïúuÑézû¨Ð‡­WûÿŠé×a;ä~õÀö +[`¤¯:Ç€«{vðûõà°ÄVé,…íc2¨ä{ín¿½—7×ÚèHí%¨ßÝ4#0 €ùáÞAq¿©z] as7C‹½Ô --˜á i$!E©Ý€e…,ë[V¨Jƒ íçK¯ ù”Srï›aàQ[^eÛ­œ2Ö ¯Pš ½@å_V®üDUþ ÓÞ«þƒ›~vdhCc4û`S‹7ÒÔ¥¬ KÉãr@õæw/#;À’ÞÈ25ºØñÊR7çÛË֌٠U«i`θvÏÄ‹ÀÉ>™NÐ>%¿uÿJ,^6‘Ѫ‹›ñ"3û å­Ž1¯^È}¦|ÿ&KÇÓI¾$yÃ6‹ô‡—Àa¤ÄÃ*G'ݳšÜãóïc¬Nïa{ºG/§ùʍZÖ6 æt6V0BÈ£eê´ø9›Ö™NoÄb2O1¢Áôæï-£²H|/°Jêšf5e+{z±€-»GÂІ˜Þ Eh n¥ya6/å7/p6PÚZGî%©À€&7 ߘ I¢Ë`Ä Q ‡õ.-û7FˆRm›c9A++ž×˜‘.WZAYJz«_r$²/‰õiµ×UŠ'{P†çY…z[­áŸ_ÐËÿ8¯Òd/²„-eó«GøËZƒP²…±ŸD¡·í(O¢G‘|ðé«—T öKþÆ‚ Ts?°eqk„¬t¢kÅ!d-‹m6B‹½°‚m ÁöJhhL:P£!qi7V냮LmSÍ»Õ;É+nš³±Šœìs×ês÷CßÁP ²ÃÝ;¬zÛ•Õ‚äXcyõç£âÎ*Tüø{PñÉïAÅ*~ü¨øä{Q±Í¢ˆüXMÜDúTq.ÆC ŠLÓ*܈ñäèÁŸUJõìœ-¿¨³eðÄòÖÄ/¾>«*Áˆ¼C)SÂr[KÃ4¥äë¬I"P-ÆÑÐTÕ‹d2Îhˆ…¡Åq’RÂ907ê°Ÿ•Ø]ØË†ãôŸ† €.­¹§ÇðÂÁ‘ÔUˆ¿V :ÚÌ»-¢m,ZÒ@PÍ—°Eòùßd%êAr~,ôúê½Êå½ß1£éÿ•}ú6 ÷ˆÿ·ýxíÿñ}žµÿ×_úÉý¿¾Õê_ÿïÙ“ÇOÜõ=^Çÿû.¯vÛÿ«Z ú})/®u?ã1âø•ú_•;XÝ÷j™³TQ¤<£ ü³ÄK©*P¥|””+N&¿F¾1uþBF’&¯œÈI *^_¼†µ–¥h9NI¨‹ô‚éèf8›§C#]ŠwkÈ%ÒXF|WȰOOM:é\ÃP'ŒôsåÊÝZÎ7:p úŠ ‰¼ì¬òNŽøŸÛÍg™»ë‰‘[°œë‰¥&¸šÕ~@/‰ §Õ´ïZÚ¬Àb0DXÍŸgé|žL”ÙsÐÃaºf4Lߌra©£Ø –Z ­ÙlÒ²Cœ‚ÞMKǵhTýA-uMòǯ`ø Ü{rG™¢Š“bª°æE!áoq¿NŠé¢È/È¢,T×m·”å~ïÛ¯£‹¨Ñ²S‚SoA›¾+Îæ¦Ö[.ÈbOoëý²²!ù2;òû™‘ç@þÝ0N*i=%‘+™ÛoJ™ó°©!ûz®Øe Γd¢ýn¤¯„½þÍ’˜<ÉbBBßmǾ§!z ¹|»Üzü.ÖÙá€poŠ1yÕÚpòáïdt¼ª½ô}"³)Ä,kàŒm}ãܥƶž}îŒmŸåb¦{›Ëo¸º¹¬9lþšËÒ´@Ì($Íd}û ;"™hè°_yeÔuûMÓF%O–ÛzN‹ÊCÑ—ãдx°(R8&•‘<’%_’JAÃ6¨~MZŠ*íJ«®g~’UÙˆ(“» %¤’và•5»9œ`ÖAÕ߀ÅrX˜Þ6G~ú9ƒÚ¸GCwüñWcª‡´ž— …‚÷¸íƒª®æƒÇ_)íW…¦ÂA€'9ÄÏkâ' V¨%‰váÄê6A„Šå”C@ ’ UÊgºÈÀœ×øëAض®oüv‡Uëô`½ M8þ2 þ!—ÎNîáÏ’üºfÌÑËÜrÖ—îZ íiËMG×g^>$q±·Œ~Ô¼¾±Hã»&¥Rlç‹-R«®OÍ?è©ÉŽåDcm5®e?¹M¶ER%G› çÍŠÖþ9­<^Ÿ»N%2î}à­àÉï¾ü9Nn6û—ÜÓÕ—\øó7;ûmë˜Ýáè#«38`!¾?Ñ1¡lqTÓ¿Kwö›¾õÝåMXd¸–{b¼0þ~$ÜäÉæÞ“ßë%€†žŠù¹‘;n˜ ¼a‘enãEÌ»öÙ;™I †×LCùW“ßPÞ*¦.°ÍØÂȲ o¾”:™d°2À¡~S`Ë0’\.•ŠÖÒªsU6]÷›±Âqd´½é¦\ጊžTQ6¯?{yç‹,ÉV¡1Wÿô÷°åºÏcÛ}ùQâ?‰Öö_ßçYÛý¥ÓþëÛ¬þ¥ñ¿ŸÄOž¹ë{½þ¿Ïëݵÿú¥¢s+F/>xÌnp:Î^ æ~‰dÿ¨ÁÀïÉÛ˜,Åû¯Ï[ñ2žnöwHïúç ÷ Ãdaó! øn䤱#€«ô²n$p# x›C­è×u×,/”¤ÉJ­Kú ýܸ8ºóÛ†2K¤â£$“½Ý7ã‡O'6æbhdÐÑ.lu8Φdæ'—œ²1J²Ñ,½Q¦ž}™]LÇãég´Pá(´‚“úwRÒW,5Ñs]ÊJ6º2g# úEB~z£Ã±ÈØ]z›&zrj‡8¸/DôD¥OìðHö‹9׋ùP÷|1IçðÔ1sÏA%rŒ–<Û3ºçÎÈt2V>SÃ\ áp˜ãùç©yXMUL#’M¯i ób«Ù–òÄ´ŒÁlňƒtÛ§ŒH¼©J$8ÖUÆ8*›¦8ÂÁè"Z7ĹõšC`Êá–`\¯ÆeÙ.u4ÆÒ|™–‹¥ò½ÁŠx4(WH%ŸÙŒ8}0öŽóhœº8_ÌÍ¡ÚÃøÈ¦ ~Þ#–Ò`ä^CjMÛ‘ö3 C$ôsuz‡Å·èµÇ·ÈMDɇº¯Uâ©e9ŠtñìVNú¤³=QÞp3'³?½²³@A9†Ò…?XZ¨"ç컹T3 `‰)Â̯t·LÍOÁ$Á¾ºS^¥¯Îê”SÄŠ©üTMwÌÓ´ÜÛü±[å.©•WOíôTUþ*_õ_îå«Îtá;ÏíÖ…bM<¯ÍKŽÀùÊq7,wà±`4"¶ÃR<]ój¿ð >q »N yÈÐWŒkAœPËK¦Î‚EhæFP§™{MäæuT±-ž÷Û]œ&Ìùñã$›ÓS’n”lEáÜVêu{#D -ùšwò •®óˆJÕ¯1z&º+X6ئ¦ ÆÍj¦`âZ\D^ÓÈš.´ëììD›vÆÒ':S`¾ZŒÇ† ¡m¨É± ˆ½2;,è4% öÁFƒj‡R‚.5ÈŒ¤a›ŽÓu­¿ög NâPG‹MJ‚ôº–•†Ie±å$<ýdnÙÀ\.ü¸µŒˆ¤p[dX3MTs䳂#Å/OŠ?æcúÌg—?ŠÿÇã§×ößßåYûü¥ŸÜÿã[­þ¥ñaµ{þ°%¬×ÿ÷xxµÛþ9ûŸ3#aÞÿ¯ç|QèWJõ}/G‰bqRQDßܱÁÀÿ,qI€9VÜ,)¥B÷Xö>9 (ˆíݾ^ø^{G#®LÓñ•á¨ì6ÁÇÏw7Â7ÌïÀ=,ðmÛ{róûoFø±7`hÂ(2\nNfê%Ø®#û/I¼‚IÝ‘Å/d¯6{»£µ›Züàa¦=#±»Ú† \ë¨ç$[ˆPý™âI½ÈÊ2A(µ‡Zbe*7ˆ*¶‚²¬¶lƒ¨o£þÈè_¥þˆ‘„?Ö?Ì+è—•ëI®TÎÝŠúb@®—¥\¨é'6:gx¶¦¨JD”Ó¹ãoe<ÚQiòÇø³êCüV1“ø!4y¿G8bХ߸º.…‘<^¤£ÊN ÈXÒ,|W ÌPÚÀÐ¥œ%ÌÜp؇)®´«ÔGÒlt‘¸lŽXE`æèÒUã¢x‹ÄgÛñùâ@’¯ÏZÿó—~LýÏ·YýKõ?¸ÜÝõ¿½µÎÿø]^í®þg‰eŠÒ+¿µ¹Ï_[[°K^=H×=rBÞO¯´RÚÈû)™ú*ät¢ý{Xî”Y‚'¥êQ‰¥4;r +VCXµŒ8žL\Ùs!בµL5ó-ÂcµáNV‹ur‡P'ƒïéäOàdå®"`uýÔ×GE c¸G Ë‡Š­R¥ \_³¬Á8ÔàŸýr%ŒM¢kLí$¼,Ns©L‡ ò\î(á¦ǵ(Ëå·rü&º™»¸^.W!VCòŒoàò/»eаöÄÙiíwO• ÆW‹È÷%í¬ì*ŒAøÚ‡tuª‹ÃvÈ.èîþNÒ›I²å(&CW¦æQ¯i|3 :7¹žH&Œ Ã`ä7排YqÏk|t'/©%(ߥi©‹’çÕdº(u9íW!zj ¿ÆË˜Ýo©£áV™1Ëe/ŠÅÀ÷Œ]xÕÔfË·õë(܇—¨Ö½V<‘ÃÕ5r®ÎÐ<Ï‘‡Í7©$˜õ³»k6o»áà+åHÆ›ý™Oˆ{mP²‰Ü'!èùµ‹j‹`6í¦ÒGµÌ].Éyƒ~b3¯mœÂxÞPÛ]¢ÆÔzuwEÈéËÇ 7â¬h Þ”Æ@Öhó=:”`JÏû éùÿ±äÿYü£Èÿ¯åÿßéYËÿÿÒ!ÿÿF«©üûéÓÇîú£íõúÿ¯vGþÞÆ‘ð_Òq:œÝþedý%â?‹8¿ÿaÅùòS&úQþÖê‚ühe1~¼⯅øk!þZˆ¿â?œÿ{ÉÏCg72Muñ¦øè.ð9(‘Ab^§­¼Zj˜f÷Iž§Nù’Sw¦z^OÑùbØÍ0Qñ²J癦/–JoŒš¤3G^‚WÛ¾œûÑ©} çV"ààeªm£…®6¡uß ®7£FûÝf[%WYkñÕ»`Jk7óuq);ë5–ˆWêôI¸Ó´|ÂÛœOXÝß3¡ðv ¡°=`¥é¢EQÆh¡ ž£-ëû¥ê~"v›Ä’5 \ãíÐ2]Ó wvAÿø± ×üd/Ž¢tï^?õ³BVyq—Äò²Ò¤~%,M‹tý¬J±daŠ;­MQ¾<Å7X¡¢`‘ "¡'ËשøKU”­Ö'¡Y¿Ÿ¯b?Q{àT̳R-?¶Â[3\ý‚D ¶g¥Öð0¡D¡x å›xlÍFœÏ†$ŽÈ×ØßŸâyß¶ü>ò‰)œlE}í†5Ýx…½¹œíŸVäŠÆÞN^ñÊ,Ah»+؆VgÞ¹¼@(ýì×HÏ‚’1r¡#)ŠW:“Š×¸‹U6ï£tÙ¯­bjw%ø%Ûš± iñÑO$ÞÑrÂ÷:äM²½Å‹ø;œÛ! Ô*)ǽ ”> ¢(<ʑψû•uz?þfêô\ÿ{õ!ù퟿§þ÷I´ýÞ?#ýï³µþ÷û¾ãªÏà1ÍÑ æt£n˜>ŒPmþΚb;».Çëón,S–6|•1©N"ÌQñÿŒˆÖ¥ž§£f$NYœ¿7ÒÚáÐŒ9k(q  #6ˆ/¹Ñ0@Ž„ö J“ErÇhIw\p„áx,u’º§4w:ˆ˜’RÍËÓg£‡w-šcæa)§”/ÀŒ J“/ÍR¨Tù®—¿VÍœ’æÞ©W/ðÏ:| (UDôEãÌñ|ʲX$Ï™xtcwÙ¥˜/@O:¤G¦„¬¥‡»†­ö<Án͵QÄê–§y~Y8ª«yD8~Ëgwv5åªùV@]âü´ºMØ_äêŒjg!ìx,3ËT$°7¸šÏÀÞVÁ¶ª°aT°­j¾ÇÉïòMµ `T?MÓ Òž^ާŸëKÖ£\Œ4 €BpºQÇ%NU;ÚBêbE( ¡V†ã›«aý<™áØã-Œ¾’[¥ZÅ” Ñ>¡¦š¾àUÁ‹b<¼>¿B7Ä#]Óê¾a5ÍÑÅìt·×pRÁl™¥áH‚³ìZT^w÷ß©ã¸ECn¯¶[£,«”AðR£Ÿ£u½@á"¢ò([„ÒpLŽesÛB Û–M_/j­Ú-Ššj·4=wë”ùß`¨0”ã,¡X’K–1´µ#OFñl<˜ð°Î˜ãƒUÎÚärGì5w›âp:†…ð_Åëæ{àç °¶óºø·ÖD´Æ€NçW×dÿòÚhöÐÎL»ŸÃ;ììßê¢ßnŠ7MÑÆm|¬Ø£­Jôó³íj®í¿¹iŠøqÔhÄOž®`¨§6U[âwÿBlìoìè”4ÖJ˜ŒoŸ;eûeÕI•ëMÁx¼èÅßI€‘b Ê ¥rÌë S6ª5æ¢Õ†ªÇœTWE7¤s‡ŒÁ0‚µÁ׫ûØ” ZÔc \ê’³ÑY ]$N +Ê/fïöšH§7R☢¨brÓnjçžTÃz¶ò°öÈ.Ä׳կõìîãz×Y‹Uöl…=»ÓÀÒéäì½>ñèã{ü1Ÿøghƒi`Âå®4\þ–µŠµ)Z#½Î>ò½£8â·Ò"1:€ó%]ÑäÚ9tc­ë朘8ƒ}ä‚9„gÆ]õ–Ë`2ça¼æ£@S²Ê€èf´Óu3@w™W#;Aìþ‚.aöÙçx®t‰µÃW/4œj¬ÙYnR—‡“¢^¶x)݉x;¬J’(3ÃöÔ½N˜p$ð~ÉQe3?îÊÆ÷ùJâÓ° X!º}Š“ìZ¾bÊh.ŽWÝI& ·ÕR€á[e),1!Äm`‘ôvnS¢¨Žn:©g(¨uÜ~»²d\“Ýaª"ìÓå0Ãÿ;õ¤Ñ-í yµ˜Góxtl‹d-j=M£é½3©ÓxÓ&ÓFƒ_dù„²—t»ø½˜-&˜Ûc»Óêȵq<Ìœ’n–M܈Äq¬aÓÒõ1Kæ¼B?ó—jL{Éë&Šl-/åé%/»óé|>½þ>ùèë°Eo¿õjð\$*Ç0†8ha‚pÌ–PGÝýº¬++ó'a\åÍ'»n§S" ºá3Åø.i˜1aÚÏzq£ Iç]ût€¿ñGï ‡¿ÏÊlƒŽOö{ªß!iÌÒ–Ö,íWí^›x¿ëLŸu&À²HÖø‹£àu‚uúƒVoÀ÷ðÿA—C œ7PŽÕö xj[W­(ÆmüæS1~ãw1~ãw/¡`qKøºC¥bþIüä1ÿ씂٦š]üÔƒ!hõaâZƒ#x±‹ØîF-üÑ.³‹ÝØÅwc,ŒÝØÅnìvñ?AÞeÈ%@¨I뽇~öð'ÝÃŽíÅ~â·eÚCë&,±ß?h¿‚Yìÿÿ·»§ð+¦%…aKÃ!„>àÖ?nã€ÝÇÿgøé þ”MÕ uÂÇøgÌ¿Úü *ŸDø?¦eÝÂÀ,'€r yók½Ç±yCÿ¾µ‹oòû2"}ß‹ —5Yl•jVÄvpc( ÿØ:}ØÄŠ›éwZ‡¸äàwCÔÀïwÿˆåoÒõI`ë˪—`¿rPÑNë5ì½zÍ¿ü»¿?àß§ø¾wT¶óÉ>cÖPûÇÁ.±V¹¸K èi P·G ¦4ÕÙ¾Ìíð(©×«ÒYñ(ŽÒÙ’Q:+¥³¢-¥³âQ*…Y2Jg¡QâÄÙ³”-„8%ÉjQ`6>åt^*ÞiîíË,ù“ñ-{ÿ¸ixà’ÇQ¶É!Ç´(L/Oty%o@¹ß啼h½K?öéa@R:Yã‰Wã ž]€Ÿ >k}‹`<õhååùIָɝ1(¯mùU޹k„h…–(‡a–oºe¡Œ½~w^ž9àÎ4¸³¥àžyàˆ¾T`e¦B3J´$ÅB€?Û‹Á ÐUC-“%õòPËá0B—¹BÖ\¨xÀ:~¨eÍ)N¥!¢‹E/ÆmÓ{•#ÿG£ój1op°9ërÈþöŽ ×é=à±ß†òÅh7>ºBMÑ0!ó!ÙvéL°©Ä& EW®|ÁÌ3Z²#Vá³ÜxÙBïy¼–>’eå;àpÍZÈWÔô§Ý]W¸$0xØ› ¾¿T¤ÇBçÍùÉÞ‚hªænQÍ[sàÔÄ;‘Ú£Õíð­1.~A©]«ß³ôX¥x%%L5Sýdn˜ôeÊÞÅLӸ͎ÙrÒ¼d0oÈ-÷Â|´Kv–‘¯{ìþÆ}-ÈcoËìÛÈ?Ь¢«hcnþ„œŒTUÓÁ–f©A°”œEÍYñ¸Äù¸„¼ªÏ¬ÎžY—vÖ ã|V~5 =Ðså…ÃŒœÝBŠ•ôYu{˸оd *^QÙÇôÅÁÙ<¹ÉìOŸÕæ>ŶÚÊ· ì&0­Aû¨ WÊ£w¡íõâv2¼†k“Œ—û\›Ëå=¸0ÄÕðSÂéÛ/§‹É…!Þ#ó11½ÑÍëéEzy+³“€içó\Ÿ>%3£^oú9PI£© ;,rjšF‚N×rà'@T€ûxú™µírhHèLIoá]KŽã +ß1ÍjÂWU%?ôÌJy³67DãhÜH>e¯5î3\=¶j´@Ð¥õ5wqŒù$aEJèhªÁ©7í_ VÇR¥ >ãœds”ø‹ü‰vÐ «þk#ª¾Øâ ¯¿¾Àžš…âivõ"ÏήÇÆHtô âcAû¨áXŒ†Y²CÀ¡†„÷ŸÌÀîv®³RÈF¥´—ó@ G§vx;Õq·½"LÜ™ÞUÙÄn`·¤pÛ-ÀÍ/@ËÏâ0X†Õôj”ÿîr>Œ[jp¶# bÏØ Ü€0Ð¥À ø$IÛ˜78ƒÊŠÀí[„Ïms®ñøYiŽ…°Š‡§w 2øXµ\I‡¬æsþ$ 9¶1mhM ›–$cBLZ ›…¡n{axxN‡;F¾ïu´JÑ\3»†Ud‹se‰†÷¢åGëamOñHè´ErÈ gKñ'º lì.)ÚS|¹!Ž&N+à#ßÍ·`þª<½Õ úõˆëŒeɸ¤h€lTá¬à;EM† # 5QZ+¯ÍäTÍç3¼BT,Ø7l:¿â3EÜ ³LT"ñ_E\5ÃFçæ0¹ï¥ùȈÁxÄï"½‘—´»Ún“˜T ‘n­¨ïuá ù œOoš¢Ò¦æåWoÖ÷sfUÓJÇ…âuVLÖ,¹› ¬º}‘kñy¢Ð›ºPˆËBsBâ9çTö­gÉM‚¶ãÛ@,y˜âŠaáOK!íq,Ç7{è¶ü¦žoê¥dŠÄBúM¨VjI‰zƒ×jùp-"2¬Gª»~‰®C?VsE :Ћ7n\ïH›‡ ‚o´ƒü –âg5œ×£Þ•އÀÀG L$ŸAA9L&Çæ%ªÅ.ÅHÈç-2>s{eúLäR„˜V a$gç›Ú^ô%‡MŽƒ>1­… ñu1÷å JXA1c¥5D·h>Å¡ÏT«hÇ€Kf(™Ïo,ŠJZ+:;–¼ó‡-_„f¼SQzND~lMýá=xN  É] KÛ.n°¸*Ì#ÓÏjЯ™7³)½¡YžPaî#¶h*/Þ=\ [ùþá7XE^ç¡ýA‚.¤~·háÂ,ll°zcnÑÂÆÂ+?´Ú&Ío\ȹԔԟ'ÃÙêUváN›ÌݦêúAU7*Ž˜´~* -©x´'þk?K±¦9¶…ÂÁ\ÌÚ°¾ ’Ü ·ÂÏ÷TJz"ßFÉbÓÈøµ¼/C»›?œ%JK 3­Ây†äÌ’3gH–‡©^Uu™7R26JY$Ïì­Kþú}Ïœîô³i ðüót‰ØâwŒt/¦ ŸC›\#ìZçÝÇMÅo?ªë~-­o^RTï{5C;îUZAÿûšßt¾Ëµ½Ü9uUëh-åné5¼Ž××õÊK±Ç6®P™ÃÄXøó¤Ù”h»P¼ñ’#Ã^ߌÓ0Ç̯äa¨ÉLËâ[¤ÍF<ôÖOªrÁ”x`^ž`÷…]?vàHù%CxvÏ#ñ„¤ë&ÐÇ>¸”¯®™ ¥ Ž€ayV])! ƒðÝòY¢C¶Rn7aÕÉZýmMö•4ˆ.ä° {jIîA›¢Ÿì^ :{|wìÛ•÷–VÖUCi|Aì©A¡4(:ðPØ(-«l¡„^4Ñã¥iºHiPxRn6¬þ8·Æ^ªš(ó5wÔª¿·j}sø£¢¤{ú Ò—¡=£‘õZ,P™É}P/[³¾{Û¦6ˆrú©h%7¢#÷Íf\,‚1i^¦¢ú°U»mýÞw«î­PUN™ô’Œ†²cÏœŽyÂpݑۑA!6§#·#Ë«:)Ï{¸\RõÓŠ åÌíäY!¦Â5Ëﻵ÷V«ítõ§•…bÑÏ…‡tP¢r’%âÕl8ÁUÆLaó|ó„#›„Jª˜"¤\á艺’gžØÙ°ŒæÒ¶ÕÒ¶äÛ_¶›n-ò§1…›‡>2%Í1ø€3å<ìžy—qçËqt  ßD‰Ü™y›ÍˆMU ûŽbse”: «˜~Ü6•r!Ì“4Ÿ5„êuD¥¦¥GOl‘Mé« ]? Ê ô(dò CÍëOUÁøamM’Cäé½¹0à#ìÝ8önÚ{ì4.uÔý¯KÓ®xrWD£`ˆ ã€ö:68wP®LK€8ãVÐØóñ>}ß÷¾Çq‚ðË{Çô&ŽCK44R†©©94É=ÄA%" “'xPæ­‡uä–F¨¬e_ÅÓÒ N‰!Ý&y²'ðM4dß<ÒYÉdÎ!!Ó\.46†([á2k1‘¤y+Tì­ EëË1`?2±ÕzÇžò¯4NJÁè„l •Œºm_ñ¸W„$Ôó°øô…pc` ÝbþªY¡·ÇÎܾ¤ r­ó_‰tí!ÛÚ£âxÉ…NÑ塞Œƒ”fÈE|—ìD\ª$+è ãx5ó’UÝ*èÌóünÂ:¥ž•,ACìˬYu@ô’‘RÁHÊBðÇüòuE¿R†!…¿ gšõ`µÚÕ­d6_ÌΓ #ÈÝt¢ÒBÓIbs{(ç™’)L…YBCÒSÇ=Òå¹–ìRf ¥÷«Ÿ¶:Ué(©óópxb•ÁÆÁ©Eg}pÖìr±Y®°T‡ y°b–7UŠ\WùöŒ¨7U=›pS[ãÕb}g6…†§ l*YK4Äç]Œ€¾˜\Ž xGýüçÚ uõŠØÃx§þY!ˆŠèSHÔ½3ŸƒŒ¢ çpìIšçnîû w†÷íÀ«XU¶y°=š |;5âXµãÎíÅnÝX·Çª%É+!^ÝT·ó¿c–Ùó'À£ºé-Rù.Î!`›EjÁõ…ÂTUdô3- ¤›ßà 4ˆÅ#¨è1¹gÌý"òá÷mù¾í¿)©5¥UQ‘ب/¡ãbï EÒJ¡ZtnÈkOÆßU.š¸‡*ØÖ+ù?MÄ#h· L›Ë´ ËDæœÕyÖ‹z?B#/òɉ££VXŽ1âb‰«‡j_ ì'DÛ)]ÁPzˆÁ±³Ö+¸AðŸULz6‰]§@£5÷޽- ÕUŠÜPv"?ÄÆ‡Ø|»*š] b×±ëÄ€xª(iÈ6s­¦·Îq“èâRÆZµÝ"’Ý;¦Yõ6''ÚlÎüM†^ÒZƒÙôÞ†¶E%´ƒ£´I@Ý]Jµ©Åvðe¬@Ä„W+Ö ü—ÔYEëª2´ Ñj?^iµ—¬öã’Õ~|ÏÕÞ¢­oï¸d±·h÷ a”V ‡s“+ÁßíB$U‰œ7ª¦WºxÁZZGÁ± =yìNÓ䱿5HŠ<l.Œ,þ¤Wá}"d3$ŽwÏ¢{ÙP ·µÂ…¿Ú^©¶.…Ñg¸”-ƒÙeÂ?®ñ“Cî/©Ý(lÿ]Ë [ŽMêÑínl4[‡nÈYØ»ÌÈ–¼—VKñ4öYïîtvÍÑIÈEt>Ìsƒ¶¯+Ì¥âNß:CkX*êÛp«¨„¼»Úï-ÃI £ÂœW žÅö+´½ íò –i&ÃW€Ï×@o”Üâ¶wîn‰) cL6G)fK 2EM¦(3ËAËLQhœ)V²T} ›h K´Ul¥)Š 5Ep \ËF\'ÙB‡˜Øþ²ü€4¤iªËìÔJÍ l ¯ E‹²'¶Ši-“ßÌä@Ëâ3\]Ä~mŠ ÁézWO,†8ÿÛª˜MUŒQN@t‰×2±K|6LcãVå$“‘‘yÃ~šËÈùÙ_Œ0œõåb,½rW‡±bkû§*n‚¸h‡Òdj0}@¤ÝxÐ Ê‹_§¬|m€ÆíŸ¿GЏíûFcüýRÄ=ÞºwޏÇhñAsÄ!My´ÈV‘bÌ®Ó ­,w)äd¿f~v;¢tC•[7™Í¦³*šʤžÓ›yŠpÑs=»Ž0vÞ?y•ÁBrÅÏé™§Þ• =5¼p’R*ŒßùÛùŒ‡Ðûšÿ™]eI:i^~ƒ6¶¶¶ž>~,ð÷³§Oè÷VÌŸéÁkyEÏ¢§Ïbt5ÜŠÃó7±õ pñžE6Εãá"+)Å.ˇ»"ôï?Êó?ýoÿóßþÇ¿ýíp8G}ñ‹Z¤øÝßþøÃÿÿÿñóÿ·ÈÖ`ГbÿþÿïN‘ÿ!ÿþ…#ª9¼SªùÛb8Næé$ùÛo`£çO¶¢ŸâŸ~~ò¼?¼ÎÒçÐáõc>rýÃÕ¿lýo?ÞÞŽÝõo?]¯ÿïñðjïŸìöŽNàÈÛ‡“«¿OŽöËýºØo¿î÷ö0õq{p 7ÂýÎþÞ€rA¨´É=t$.ñâ?í`IüyÚ£¿àç!Ê­9q2Z¶Ú²T W2ß7µp”wZäÕ 3r†|îv3Æ£Þ.…æÎ"›^Î?c Z¤ùá‡ó¾|J/8¬çÉ$ýÔij{L&À='I×€ôû½á8½œÎ&éPì&³É8¹­o§ãélx1/1ÆËŒü7º­×¢3¿h6±5ŸÊOÃÚÐÌC³)ú£áx8-ɹdðä!ö€ãjí¡Ë@Ζ9³S¦y£Áþk³(³KrÎx:äTðlt5 9.­ÙlxB¥sôº½×ê˜Ð™2*¢¦£ 4ÓTHN{Ϭ¬•3õƘjœv*uþØ«È>ÔJȼoË™ã?eÃy§ñÏw‹ÙÍ4£È¯/øáïyM é#æB:KŒ›Þ|ŠŽ%"Ãè?—)P‡š…™„^$ÂVÔº‹±óüâæÈà nñAåb=8 ”„Ç ¾èÍÞzu«2Ï)@e4Í’ìf:¡Œzs Ãhæá¥ðÍ ôƒÃNÀåáì 0ÀŸñ7- q[«]Á§ù-~䊟OøõE2™Î– Ú_ƒ4_8Ö Y…¼ìµ&:c.ôl™cë•tr³˜Wó…Q³Ü-^ˆÞÆŽö¸ðÆ0£`TÏ*£Š;´á»F Êj¨gß {Çëviú’ xð²éb6¢ñ2ãg@?c¤¹t"*°¿oWw78‚—Yí3Îe^–Ž%HâǽçPp‘ÕEê%I$ÀP”XËóªEü쪖Ma« T&§“äpòÃrs’j‹,Ð bÄ<‰çI;²\È´ˆ6O͘b@góa: di"o2OìØ”aÆà8ÀH·œ(:Së~î¥i„ ¢æ6°À¿_«˜¶Q’JžbÍLff2å~ݰT×áõð"Qq®ó…Ëb `“ùgLMn凉°[ΚK•¢¦` WV]õöq—Y¾ ;’;(}¾šŽw£3J¬²j娤2ô«Z{82ŠÚÝ5x²A†é³†±µá/^)ˆåO·ÐhœvÔÖ}Ú“Èóé¦õAƒªC XJ·Z¼­…iY¥noŠ,.XQ£¹ÆÜˆZÇ[¥¿¥»‘íð”ûµjEf‘Çô¯Užfh¡2Ût9í«Ø"&„%(Ø1îÜ8êÆNä_«p [QñòÃJmF\~Û])–òžLóP?Ò6lwЄÀ}}Î;ÐtÂî¡9<ظ­#´½x¤E«$‘®ê¢¤oÉþ˜ð(ŸÎ.8+½yB7±ú¿¿[Ö‹#ŸÈ3² [XÆP@­Uͳïªö$Ò„áŒëëá—JˆHøï{&òz­ôñß^©Ãvg`æ&óÙm]æÙÚÇ K¯‡ÒÉpvKI TF'I€ çà¹A·9Þ Ó™{ÚjšR;‰ ÇŒ†núÂÀ ^ïÛM{ ;dEó„¿ç¸“ǰËtØOἑK20Ð]FÇfÊÆÈyP úált…ˆ6ܘ€ø&Á3d^°–krÚ¹Ëì7~xX0-é¥Üõi‡æÕ„¼±Y¸NwB®ž†ÕI<¿1ÕlŽ}P»%ž‡Éô]ùÆ„âq_Ï™²RM j5Á¨9—ÇF6¼VáÜ*Y¿ý|•Bmgg‡½mle¬ÖT¦«ÀØ„|‹ò;&¦àS [6ˆÔ K& g˜”µ0P*^­Ìnòf5¤c ƒ3ý·L^dÓÕgK5Nh'½€Ä’‡„Su í b9põ›€péë+™Ê?íÍÁšŠv>=&KÊô3Ljo°a-^è”WÉ×í §«yjì¦AŠx®‹E‚ôŸÓ,Q+÷Nû.]œï³r{ÆÊí}£•ëßÕþ K·g/]¿ßpíöÖk—× fÉÚí=ÀÚí¹k·W´v{ÖÚí…×î᡹v ±š,Hf¨hó.cß\(4v¨šp*jcx€6`x[¤3º’{¤àÝužóZåëEráÝhLÓÑhqƒ&¼DKï4$ B€tƒ@˜ ©7ŠI=ê½¥ÑÐ à²ÒÝŒ«µ®”;³ÓÆ@EgwmOx)MQµü+ÆöQÑÑ•ØP=æò”3’Ú®{03oá:†)óÃ;˜¸¦c©(k“çN Ÿâ+ ×î¶óŒ}gÒñmû«‘Ä©«¤p…²Ã³[¬í ÞFC­HaQŽÀ³†V¾À;]ôùN«÷BêpÙa/gµhÓ`QõWNzÏ™ô^`Ò½€+Ìzï!g½÷g½·â¬÷Šf½wÏYïèi(žuT7‰ò†jö»ÜÞ Y³Àß©ñSd­ÒHëÆ)û”«á%F“(´rå&ÿî@ ©Ê@—oØ–`‰X_ºšytø•+€¢ñ° su¹˜áI僑NÁr¤^q1ñ’¿µdö¦ä~ßáÕxèeس •×€Ž<6-…‰b6S§$Qtþ)z.HãÀBõ-)Yañ0!Ê—ú-IyæÃÉDJàþõå_›ÿºý—ìЋ‡xLµÞ»á Hƒ€åZ´€º ¥ê†·Ñ»V¯u¸oéü*T ¯¹µ¿¹Å™ã€§ O–FKµÝ™Ž€¦X±X®ÄÛ=œÖÅ«ÞÑ!ìì¿Bµb÷ïu@¦ _öÚ¯*X[HÇëŠUoá_ÿwáÔ|ÛoãRãù[< »í×ݓúØ×ÇÝ£|èvèË“Î;øÑ} ß¿-S<¿Û ŒÆþ˜”‹¿ZLF,s/’N& Ó~§u¸w€9Z݃¾,·ÿ ÌX×*K`ênñìú‹s©Ø6ð Hûmà_ö{»Vbnt)N£P‡aþzín¿½—líöëèD9úáù8Áü$óDk…µ kB‰Zˆw‡+/|°w"Ç.é?7T'jÒ¥±Qp>æú`"5¯¤UÑ<— ¨¹CbõÊvœ²ªm&ñ¼¸Ò¤oo_˜òóRRϾÑÝ0<=ÑZöP<>÷l°È_¬XX Ãܹ¥ÍȪžß;ø–˜á¡ÈÃâònœJË-Þzf¢h^Jö¥A@’Ú¤–ÿ-™Bz%<#YŽèNåó°îá°…]×€òÀÅÞÚy”C]:ª»Myè/6K}à(r„W˜¹—}•¶ía%òÊè5ï Å„”k…QÒ7¼ Üž(6D¡Ž"Auä²0¡8ëI¿h*W‘T-§“2˜Û.Ì.š”o–â–ï¼<ÀÓAI[Ïüº§¬1‘Tä.Ã]Q/Ë FÞ8£ÀiÍœz[ Ó’CJTsX\㱪aÒ™˜C ÌXê'ùñ©R¬ž¹!°t9iÿlÁW[ãñ"}T&×À½ÞL³,…ã#ßÀxBakØ2W¼cS;ìõµICë1H›äÜ8Q+/ä)‹X/L'éõâ:?V€0 ½›%£/oy f5ÐãÖÐÚûÕRï™?!Ï|à¾ô sOP5 s9PªK{–úú-¢é]g5Ë%èNÇ[3R¬½åÑ«nh†ßR+Ëq3¹†k÷ e7SŽûÆa…bTïòù¾ò¶Jía÷Ì30‚ËÙðò2§:1‡©yvýãdúyR—)ˆ?_%¡›‰¡UÍnÆé<î%ò!×h2ø–/<0€pƒ»âËG$þþ_àOúÑß]Ö;¨û¶Óˆªêco3ª¿íñu” e*pÉá SYž¸jÅ^|}Q9[Æ(« ™ïÎËw.ðBz®´¾€ãN·Ž?ªt¥z %f8B©óˆS1@E;ÀÇãÊpÄ,Ø›.ÁdÏ9‘`”K¸A ƒmq"~¤-ЏÀ£e•e4?^ôuDæ-†Æy[ä$¤Žê[7ä h÷Œ‚g.ï™î‡H) óõd5Ïo!‰í1æýõû¶ƒ'îXáñà½ìm§8äG:ÁÜóÛ^úq…;t ÔE?I€îÇ~Æ;?JjÎaq(‹ø¤˜莮¼ÑÃ] 6úöÞCo;8 y9Õiòh³F‰!HH %ü+ÜVÑ K×àLðÆ:¥JV“‡‡ûrŤïØÀÒÎàâ¾Édóy+nfɧtº°íž´@Ý2"“›1_]¬­ÀªlÏ\SìQs³ét.­Ù¦ZË…}u§ê=Q&äºÃ×{|ÓÖo–æ¯}&#g—Ç ö7ó¬Ã ;ÌxÉüôUQ äèB¥QÅÚìàHSXx;øSC`É@^íOK"•g¼•£ÇÍ8ã+ïB€¬JMï­ì¢› @‚´ß[éÞ¥K—Þpd«Ö¥pÏpO«ÀJW®ìä· /¥¹Øª[´â ÷^Q”X¡|‰¬Î©"f#4?¶K­Î…î Ì*ëón­»Ùå”,Ý’b­R@JÖv™ï|0éîQ>'o•+™jYH:ã¯pЛ‚}Ì«: Ã!HDî@£Œ4TZ¦.S€™ Û[fØ+Æ&ƒ=ç'Þsh¿)àfÚuݾZƒKS;‹Uæ Pøy9 &m ‹Ÿ¿6›¢‹®¼Ð.[Ø«ðŽöÊ&iK¾°q…j/$µ\K×zŒDùJVŸÚÊ9D/֥˺x!«ÅZ âϾ{+,äÞ=ro……Ü»ÏB޶$÷Ðã;J0òx/´’£¥õbÅ•EËq0Ѱ–r}}bÔ;`ÌÒf –'+3KG¥ÛHžÐ>@‹üíQ>õð·ÿÑËÿÿ·Ùïèÿÿ8Úzü8zÅäÿÿdíÿÿ}žµÿÿ_ú1üÿ¿Ñê_¶þoá>ï¬ÿµÿÿwzxµ;þÿÇÚçh·§ïá»3r÷owŽàÇAÛsüg%¬nç噿¬¥³ЇßÈÈ==úsŸ~xB®úáž/Á¿Y@ãñV”G*uÌÁà@ñ™^÷gz3pê—cã0Á(tÉ_æ;_â_2gƺæ¾òÂq—BR‘’Òš~ÊK C>j²:ÌJb4!=Œ¥‡•AåÍÚY±?ºZ`¢ lnš¥†ƒ*º¦ŸA…³Z nŒì–> `é(gN–ŽÉ •J®Vað¨r©ÖeÓÒön:›_MÙÍVVC^”ŠÛnUðéî@}ôøBMÎ4›_/ÆóT9­²g>ÛÌäÀ%Ùıa(—fzµ rèšÛç#"í2ÿiºìÒÈKH-é‚ur=›%‹Q.ð5&ˆÜ€ÕôœßôþxS=¿ǵƒÚ1 9ªHϪµA~ÕùpXþÂsòÇex„y—ø £-çþÆŽÐ.ø•¹îúXº_TZ¹äÓ- |iY®‚ º/£ÿ²E$ W: ¥6V!¢’nËd)'a_©ñU(Êg¾a&ϰÝ6|q€ÀYhÿ”Û'wåÁÔ˜_r—e!ÇW?ˆßÍl „4:83ÎG“½eKÜ–8Ëb¾í.+!,‚›ñ’¶Ú¤'ÑápiÑ€ dzdxq+w c€ñÁ¼7œeô%#&²9íA{3Úé6 Gù‘[¾ŽoUÌ—×P+j`]ÇH ý×û»­N]ÑÀDÜÂL&ðê ÷Ò‚óYEWPûÙ0“§ÁáiÑ«=_é\Mq¤¼U¬.dWÓÅøÂp!çîÚšr´ *$ÿ¥&éø)}ú–´íŽ08¥_müÕmÚS5PŠ£ŒÁ;G¤LWH¼0‰Àôk^îÿæúN;þÄenÔN%å¦l³;ܽh·‘˜¨••y ûòƒh°Ê9ÇOÅÞ¾ªÏEÜ8¿mÄn0ßcÀö…Γ ¶rPKÛñ…Öö‹„ˆôô?¨¤õ”F¦›Q ÷]D¾Âœ)• k/ò+ ï>¯ƒþd®|¯ÉÅ$÷µ“þþ@ŒÚbx]¨ "6.¼Šr,¬7S’,4¾¦³=ÓVÀÈ1X ’/œ Ø ª_Ùmƒœ½Ù_i”~e­@\¾6 '#1”Æ"´E{¿)‹vóUÅñ–mÕËà ڶxB… ¨¬*@¨h+Ï‘,ŠP·ö©ºB]×ö¸›Ž”èíòyjsÆAî—ÚÁ¥Qci ß:1J  X`thºÈ†·AϹö€ÿ‡¥‡”Á ÈÓf/\k‚›½}y= @8ŸÊ(6zÿ‘#k°Xj±A÷âÒ%Int3€½>îÐN±“rdhÞì,@öÆW—ÃðBd¿Í敆·Ùøû‘Li„us¢=£Ÿ«ž6gîicÌ,%±ŒufÿŽpnåñæDåtd1“|Ý ~x·ž399 éÜÁt(5ÿFFÏ,¹æ˜Œpåþã.c©«áCÈé½ì‚N ‰ƒÂ)%Á¥¢2mPŸ$ÄK¸Œëò$-hž9ž; °¤rˆœú•Z•ŽU²P·S­`õ“Z…P3ß„0`ñö‰o{,‰ÜTYï°¾7¸ØWBá‘r1K†ƒ²å~Ð^uø|> <|jA:«Ò&âëŒë’ñ ótc¦ª2ƒ]dv Ð1 ˜Žh«š*XyIY¾Ýe¿ÃÅ>ù±;×US—žÀ†gôÍ×»ã[ ¼L.‡‹ñ\m*:pèù­S°ÝiíwO+íþ»ý½úïþuèwe'ª>zDÂ?ë]¼_ÔñžÁüdÓ4g^ìF3Prf†Œ"/#2ŵ½Àè±, {´UDs:ÎÑÇÚà °ÈA¡F: ,Q[Ï o:›Nð(ò–$u÷EïОÑï´àÌû”á_ǽ-1šM³lŠ Ô›i:™»]uGyG<{÷”C ú —ø;Š|â‘-oÁíÁÙ ês:¹˜~Vü\¸YŠæË®‚$ƒPÚk–P÷‘UéË•P"÷äÎRTÑ ' Jã3LUÀOpE&ݼˆž Uéc¤ ùE~»*ꃦ â+€:B2Ñýæ“-ºÒAg]ëöÅEóÿxGtÓsôøwg\væ]«wxŒà‹°P‘Bª1DÿoXwN‹@„Xw=Œ€`éL¡ÔAŽ•¾(j¨[ûÙÏ'Ùê¥Ð£Hb›%…?Ì’á\å"¢ŠŸ/漓òÇ2ÄèvJòEéÉ =»©›IÓ}"ç³é×ÅdÈBÄ•ÍBRt«ÐóÔ‡ñx Œ§Œè‰#Ú*‡9oâÉÏŒZÙ`áu0ñvvˆ†ñçøçFãçÇÏê˜ ÇbD¸›ÐÏÖ8“³ UjûÃÙøYfAìh«ôDüüø'èÁ³m·D^ø0>£'w}V»¡ÃÄ?ðPÈPI_¨0¸7³)_ªòµ@L…ÜÁÏ“ÑpÁYÒ‰!26“}d#`‘0'Ê'›& ñܤ‡»B½ÿ8½NçÀõQGä²÷ % Wù:ìŒ;Gjd„\¢Žw;”¦cDòS:Çè,ŸÂ–|•Œoxôñh"­„C|©¸d‰Þ:|5°H-Z¨M ( œ¹è¶ÑfžÄu`áªZˆÝ0¡ðG™$\˜7S:oT„;œc'tìt1hÁãŸM(2iÉâ†BMaŒÀ9xEô5oÑS³ºË7Ų¹ë”N#X–ÜéŽÑî3Ø]Rë®Å¡jKc1‰g§ŽhJ£Xúâ.ôÂÁïÞî¡Ó1L™,*‡þ‹h ||²ßû´Þêüë,Ð|YĺDvÅ›íå¸z]+ÁæêöÞý£.W]Jèwð€‘ë[¿ÔÅ!ÃÃù¢¾$~í+F;5ŒbÇkCù›Ñ æqâÈv~£¿aäBƒ ÏßKoT}V gär‰%)4”SøÔ(ì壵¢[©¹'òÂVIS¸Ü4r8ųz°¿¡ã#ÐKîæÝBŠ9½è@úYŽ Š- þåEÆ"ÛBl ?½^-Øcš'B]ôD&qRW…ŽÃ7¯9d×w Ivf…ãTÑÃÎ|¸wMFtâ0ö1A-Kf;“ãŒ÷$Zuv¨° éT™c0½ÐªGÁõ•Œyu1õ+jÐÆUÂÓE‡‚w׊u¦,qàÁ7 Ås¡ògõ? ÷}`É&ôf:C ¶£Éæ|8úøÕ (‰n÷b;òñ"ÚøYú)ɦɒ{#$¢ ì†u£T99xs1šÞÜ:QȦcmÓÃvÔî,pÄMŽ5n<d†LÚ(Ö•õ¦­Þ« ìÖí{s瑵P´ð¿{S±Ý”; m힀T‘^ÿËÚ wxÕãaf¹RT g?,×Ö'üÓÌ "8Q]²6òx‚áÆa³‡•Cð_§¡ééÁ¡ÕÑqc2ÐÉR^ä+ò¡f"¤™ïyVœx˜Ûw×cOC¥“Ø!J~ôˆTù‡Ð[Ãù’ï¸Á­d3´PèrÃ,k`Ì%Þ(÷9O?è[Ôs}YRMLÕg‚Lþ¼?ß`×+l\ù¬9 _÷;¿4~ñzeà}€Î’ßoí+i•P§©"Ä“zRZ¡[íÿ!Ô”j{/¶ I.¼dˆ´“¡Ãå}õƒ74Ä)é`¿‰w¬¤Þ4%›åòl²jI&tS#`q- KÙé ¸­æèŒî„X‰"ù’gLmñŒòó¾mÒDé‰êb Pc¬éä6©‹édc^4^…ãdÊtØâv’\¦smó@ É !ëE@æJâhî×È&‚!¡0‹/Ȩ‘ÃùÑ”QZZÙúÒÉ‚+¦uœ¨¹9wü@UlJ6!°¿Û çlè3‹"4„E!–‘CFe”×±I¯Ã_}éIáXDBFï¦+ßsr>Üfá\ȆxNü¦VŠíN{ãd8Cƒ-º¤ÏgÃìŠØ’I‚‚Îá,°Ì±SEÝ’—:¯âR¾Ó‡t±üaÑAEl×ùHæÎº8/&Ùèó}ÙdgÔ%ú:àÐ7[ZGÝùã=yüŸ4› '¿_üŸx+~òxûÉSxAñ¶×ñ?¾Ë³Žÿó—~TüŸo·ú—®ÿèñÓ§îú?[¯ÿïñðjWj¢W'ݽAû¨+úí~·ÕÅ4:Z&Gë.¾`dèÙí’H=y R gÓËùg¶:}D“›ÙôSzÁÒ´PH!r@ÞGǺc€ŸPÞ§v×P0áŸF<­¾Ç<’ÚcLf–§àÜYî ‚–œÃ.ÛY¨´:P9Ï*Ä`Ê^T7ãáˆÇ yÞWÀDž‰–ÛxÏ’³ÎÆÛ,ö¦ÝÚOWêV|\$F-ÿÕl­ZÍ(ì··vê¢×z×V®ëáX7NnÑÓøGøŽæŸð<œ·»ûô/¼ÿ´ÿßI$yÔeêö‚Ë9þ½ ÅÀÅR8Ž- ùc žÈ¶u«èµÖZ‘ßwƒÄω^ëã½\0X-?ê‹þÈH-ô‹£ÞÛ¼ìYE†l\þdR¨Hñ"ëK2Z)'¼(­´%CÁ‚O玟΄}Úälj^ø€Ac˜’³d4"t\Š4@xÖ¼øa¡å`Áà^ÄÓe6ǘÁù´ A÷¬| ŸPçù´i}ÓÁÙý4Ð<"Œ˜ ÈÓVŒ ð9¦‡Œãü¤Ú"Õkc ,7s«ã·ÒÃ'ðР‚Ý©²çÿ.…2´©»“fsé:¥»QÁ45TO }eÜø…G¶áŽ1§G0'•“zgïuÈ“ž£®Ÿâ‰’P´‚`½J™xóiãigUÓ¹Ù‘0ïiȪ/úUÁ{¡Î$Ñ^OX÷·p£f`Õ»§~\…?È*´™ÄåÎÇMô/¿|?¢âýiÿþöýn¯û÷¹²÷‹–¶Cø‡Sh(ïcù/°ö·àÅš}\ÃüzàÍùq ßÓvhô—<Û•ŠØUÆ8'^×óÿŸOÆÃ»ö.éÿÿâõóðæùâÅcüçüýÿé—ãÿ/«®ÿ?F€úëuõåãúˆ—Ú1œàOÚ)v×·»:ÀŽÐ®ÿ­wüþhjwÛé|®‹õ­í6üQ—ÇûFâS•  Óâ×cPÀ_/(`ýCk·µî¸A̹}ï*>d”¥Ø”8m‘`€Ðý>c¢Pò/ðoóc€¨Š¢­fVj…AëV Á¼8!ìµ*ÚN:ÁÞïqWÈôËHf¦e\æEÖk^/–šJèÝs=I±-y%Þ¤³˜>a6º­4©È«í FÔ—¤kw‚hJãÙ®j?ܧ‡kµ¾y¾Ò>¹.Ÿü`=¹®Ó^ë2ð‹]^Ö |ÀÃf®³3Ì"¢@éÎÕEÒˆu™ælÈ™Ë[펭Xþϸs—iuq?na\¹Ë5°¸·0NÕ…>º˜‘Ä”Îk|õlGy¼Ó¦¶0Û7l(u߯‰wºÒ=¥aQÿ³nò=/H ÏtFóYö 3-Ú=Ûˆ™7ºKlèi²ü•óÜ·8á=ºrÊۯ˟öª¿½M~{ ‚ Ò­}úûÈN[̃’?êsR·Ö²–¾µº­È{·VrÄßYC¾ÁkTC›{R%ÿÍ,hüÕ„ÔM„‹-Ózï×ú»ï€Ä=k¼#JÉy3)íZÉÇ”:å³\h¶U¼§û‰uø:=Rh—ŒÎ"!ätȤׂ‘«çšW±‘ÕZftiؾkòÞÉÙ{GÓhwöæ°koLÉ·ÉŒsÔ¥H²l¯[À®;µÍšÊÈ¥©ûÚV/På*Â)€}Xº¶ª}ç Ÿ'…ÄÎHÏ;jÞPm¨-=U›­\’¸WoxZA`Þë~¯žòÎbr&Bz'¯wÈšoJ?\€ø-eýí¹™‡•œKÄ?éç>ù»œ9.­ÜÏD>·;/k]ƒñEáZËjÊ0h^5wãìláå”÷8înÏQä?µzp&ì±tæB:v§û¹»Uý­\7h?ÿGH³ïµ>·+âyЙº õš“QãN3itWë,4zw˜9ƒÜŽ·Zû‹yk¢ô„/trœ%CZèfYÑ6vý¸•@TåúKŽù=ÿÁõ¥‚,j¸Kf˜È8\… |}³*óÎæ¥È8 ç̸ ÓŽˆ%õŽ˜[V{ø‹ùŽÀÄ$©rq4èB.ã5í›Ä"×âu™­bNôA…§Üv³ç@Ü¢è¸.Î`W¼„ÓœhÒqnAgFänÅ×~wÌ%¬{اûºÀE)ÕÆ›*ݦe§OW<ç¾°¼ùã†ñß§á+ÿÚ*‚wÿ9÷júf×¢:;¯ßMxÚCåò©~`âžål>•Ù+g66­ÖºO9ÅCß¾&ujq»¸#þ9\h]Z/Ä… ±à½‘\–Ò#(ŸáB”}«¹ÂXY,9p_Ú¬PÜ’ê^5╵>ÉJÀ‚Ö¨ô‹æŠŸEƒ‘wW+h)fžÝ¾u¨kRj¡¨Z I…¾orúW`£ÕpZƒ-™Ý{»¦?zBƒKM)§y_s‡:3/0ÎÙÕ™·ãØãD%zùYv¿%çÖ§9ÿº‡oxxP»A\ùW»ôË´Î-i(l="ïMŸEýYZ@ÄåͦțPZyþLŠò²+ )Þž˜ÚÄøøüÙ$™Eü’DZ-ALÀÿhá…|¯ëhî*¾o12o!?ˆ¤õÉÑŸßo‹>f+qQûŸ´üMãã³ôFÙ /70Pî‡äH¸âfäpÏE<ÁRL~?ÿÙO…jûø*ûòýÿNÒëÃøzÆ ‰ïȨœÿ_óuóÕëÕUÐäVðí£ÿÏüýÿ~é—ëÿw«Þúùü勦·þ_½~µú¸þâÅ«=ƒÿ»û®·ˆWÝöFEìì¶×ûƒ¶Dd”ï^T䲯îî‡^Ža.š}­oo¶ÿµGn„TÁa on ÊV°ÖÞÝ=„C»Û»[@~³ÖÝèÑç²õèB˜Œc÷@NyR‡ýVF‘46†þ¨å|–oJV³qp¸‡£øÈo®é1CådÕsŽ[å_m¹u1MF˜ ãs;îÚOéXRFOIÇy’® û´Fë5ŸóÄ‚ZR’—%›SµŽm®Õç“ÌÕ¯ZÌëßëÚùýîœôQ~ȤA…‡•Šý•ZÅýáµoó‰X—î§ U¨ˆJ€áwùm;2­"Åo1¹ŽD³ŠXÃ]ä’Ø>DrŽ Fz&jï—t2ºT(¾‘qRÄJ|>\gå—Ÿ¯gÓhùË©Æù†§ç(ˆS•àÚ’ 5u¦êZæX”¿ÄÚuVáÑ)òñ¬S}MON¥ Ø´öWœçeˆ&ª¨3Ö1ø<š¼Ц¯.‡iòÏ£kDŒÁ4´_ÎÁI½˜†š×öÉa5>ÎdÓcC×-ÍAæÝ Ù-"„c\GwL&ãÑ Ân#ô4z Pnèxfl¨Ìø(ûóªÁÜFŸ¶ƒÁ°}5ýüÑèKÚÉ Ù6z}#Ïã~Îäll¼‹­:<‡bQÄ!÷íW¼@ãßå^¼P; x›Ñ„]aÁ†¦ÉéÙlù *]F\zg4ó »Ý‘]³\nó™ïy›çêÜ]>ºYîÚÐàÆí´ÜPÎó>eßS>vUîZŽˆ­w vã]Ýq|T¡ ›$7÷r|Põ˜IOÔ°ªëq{']'ýnÃW^·áfþzη¤Êfº#•^Õç•`¥¼ë†„-1½lE-/º¬w_eËÊ ü‡ÊбÙDuÒÑcˆEh;W>ଠO¦°ùÍF7VWZ]δÈalaOT`@çå i¬…ºvFúaB#r¹Åœø4»ÔBãuÆÖ“Átšé™²‹@ï¹Òhsê*xó#æ|Ûl棄³Cbô?µµõdtjžXyêÖ‹xDðqºÎÅx¨3™ ‹Øº¡gKå"1à‚)I#ø2}hˆ]¯éE/c”dE¸Þ°G¤•àÏÄ‘bYRÌä8"KÁÎŒƒ5›X¢”¡a¹@õËáå±ÉÀ[d>v#—ei5‚†U‚Y ¶VÇ­Ãæo_{(jcayÄakai4"Ûˆ‹#êÏÀé»·h6“]Ú¯P¯a•&dnROùÌ4ÌÔ2°f¥ù3hp]ÁQMÕÈœ!ñ‡ƒ:¤«_« •ÜÍaØ‹Mêp&ëaæD)â3ËWKò³Ó¿¥b_’ª¨ÇăwRE§þŒF‡i•q4ÒoÖà+QÅRnT$þv@ñYªá7œ"¥ ;ÛˆIS£p`ĵÃpjÞìtq ÌÐK;JñüZaWg Iû¨KÒ‚Pt+)œ3‡@8êÁŠ„"ƪ¬)thMÃeVU™ÜSkjºëžË-AÇÀ¬¶ZtU•j6ß¡#”VÍH©Î[*/͡əJF/µÊø[4Màì•5*øwörw…“ wGëaÔlOõÕå4Z'*'GñF¸´ ÁAKæ½7ÞXÁò8ü**ÈÚû¨“T¾Öï—Å>½©z Š– _¡iàú©z®Ñ§å¡¦ý}_›|Ƴ› ZCª7Ö à€¤ÇÓäHkcG1 ®(\£Ç—0ÔcPd(Ò –'ዺ"¦èb×B]ŸÞÒ?c+d§¯±i8¢®-©¿©Z›ÊiÅ1W•ºÜåÖ- 9•¿©CÏ=)É“o«Ø+¶¢¼12ý[Ä“þô2=r ¶~|ÿ8t;À ?³à§ Ô ÉÈOù@c’ë…‚3†ª *Ìi%Ù¯%ý÷tV£'M:ŠÎÏ*Kí‹4aÖîÂd¯Š'ïùêTØ'öºzCC¦ô’!Jycµ«ûMF£ó &¾ˆ§8x£uœ¤*Š,Ð\Q"F'v4bCúD§Èrt<¯g&±Úé4R¦ß9¼ Øæ;©Ï¢ ͯè(橌‡rÆ(ýÉ 9·´5Aü‘}.Änþl¾Ñ¸C-Ž`†;3ab"VEo;¸‚4â€êbpf´Ãô÷É©áiØÊ¯CÉfMT°ë•ƒÿýÏró¿uH"EŸ8Î8œg†&º€¦.¦hA^£3Žª=høOoÆ3q€jµV]ª=.”jäp”‚ò4ãš@ÌtÐñÓøiÕ‹¦—ç$ã¨cDÛ5ÐÖ´EPÆ”­Ì¶eì¶Jk8íT–@m’#…b127_½¤ºN.§˜ìF—éÜÅJ*‡(²°t2Lÿôº@޼ˆB°^PÅZbí­ ¨C”× ìÚP ¼ CÆrXÊ " ÝE SS­ëÈuGÓÐÇã°¾QRÓµõ ­iЊ1Ú<‚]‰Ž¡ÅèøFî§pºi7¨Pî ^å¹Ó¬Òáq\D ëêê!¡€â9W€ù¬p+µ,¬~b­$ÚñÂÇa1MŠnïK“¢Ê5©GMêOѤœÅû¨NÝ»:UiÕ©éºZUŠÕµ2ÕèÝN^ëûµHQžÙaðMV;óRÓ Ä7’Mg5·|U-3•?“æ¶Û¶oK_h¸ d^Nºã_ÒC?“áe4²îÏAËp鶤ì8†U/³ÿ¤Ñy,®4-n•4ìªcÚvm¯wÙOËóD§©í;j &/á«d¦o5æÀÑ$AÔFRÈ•oÊô ãíE¾hkŒ®%¾Îº¥k‰èd¦o~Ü{´ >¼G«²¦3“m»{î9,mXKJqÓn ÐCJœ`ŽzPÁ¡®„.W0õdÕÉÂE™8èJ0ÚWr1éÑ+ÀòžQj)^±¤”R 󞞣¤À¼òJ•dá[ ['?§˜˜ 1±@]JõÖƒg+eÒ'ÏŸÊì¥ô9²¯ð唦k雡JÅ‹DÏ¢öš¡šàØáíÐß\iÐÁk):…Ý?MAA_¢|¯0fÍ•“zêw/Êa ]>ÇÇ蔃#j‰G÷¶¯Ôdaÿ{a4ç›{ fÿªø2E5VM`||6NþÖ|Sô}t ô"ëŽØX©3‚Þ8ñà4fg}­øn”£xªÕ`›Ù™u»ž,kÝ9æÿ˜ü—ÒÙäšG0ëŸR7”ÃøT1Þ,d]ð ù’j㪕§7UÝYO ƒ’’møÃëÃÿ$O›ÿ­ŠßtOjú§Dù±rP5™‚Y 1j¢Ž ?hè:L3+VÍ¿!ò›îsvPZi¼Ìg¾•Æ?¤°Y?šù(­ì sÖÂŽ‹kÌZ\¼áXÅnw›­/]Ü@3â2Ç;|¹‡Z[º±JÕàìbêÀcÜð‡1]»‡E‹hµÉ¯ç= UUÚP ²Ê£+V×X'®N5`¸9¼VFŠ«˜À`RåWçp5¦œ,NeËÓMÀÀ¾éLƒãÊšI%q>W_Öé0œÈ9:nÂÎ&ù˜:w^,IžÛY”tåHNÇä§‘;0—Á^HOˆ,:™âŠ[” Xø3¬}â“Ôµ HC–Á ñ´8‹Ê9;>Fž†*IÆo Flq4àõn_aˆmÕÅþa¯ßêc¢eõfpH^¢ôIÖp·|Bçløg°ÕéÖJïÿÙç?ðwc·Õ/ð¡Þ8ÀßÑ+õ³*‚ï§diL÷;§Ê¼±¸OïPð]§ÛÚ<äoä{ü>¿šöN¯.>ì½onmRîÝÃyùô”ž!3U¡üÖ‰Øë¯m¶ÕÀc u§û^}Uò³|ŸOyw{gw[YkõÚ‡@wgc;ÒÞV0Ÿ úOªLÁ<Û.±¸¨<‚)j<¿ Ó´¾ÔÂÉjP-jÝé7îvnN벃dø©æÏ3Kww‹LwÅ=ë[;ê òÐèä×@|+q>È °.ù}Á5 ît>¾ßÝþÒÿ  GÈ#cø=òiäóiM=4g2$ùðà §ŸðÅK«¯ðñUqEÖXÀïë¦ôïEñ4Ö À£ÿ(šSöÙÝ?ìôwÛïpH­oh‘ÃwùMé‡i—+ž¿©9L™¥ÃáÏâ&$9Îlõ¶à^ßé=3X ò\v-&K6#³d9M-Ð9Ãsp'K#B¶öw`{ê­oÓ‰ ·>ÚÞlõéýaÑ^c[ÅE§ â·_¾´66¾Ôeã"Aøž¦-šƒÀl—¦üí–«ÍßóÝZCv[¨K‚Í NÁ¼KDbѰ‡UjP\ºTWLô…bؘ…•ZYn5É=Û~f[:‹. ëTxõ(¨rñI¦¼zWSïdá=:L«_ñ4ª¼KÓ‹K¾Ò4Ϊf<µUãtVr *‡Ég¶„†ÈV6·¬Éñ„Ósakdð»»ó™Ç8œý,Áó¨½/€†S€ö"#î$Þ‹fWœf kFÝÍ/¨ºÌ÷¡‡ÂåÎÌZæWP÷B¿E3ï×Ü¢¹ß»„˜öõ|9j’yà@?àêVÖ„*Ó8‚ÛC¼ªè•È^-îÑúè’êpK$h>RWãx†Þ3§t+ÅzÎ^MœJ$`Žô$Ët\J*ä‰ÒËιŭŠ÷ÛýmñêÕ«¢ÅuíJLÊbýhÝö䈥[ JÆõng¶™Gm®Ð5K g<ïÏç|4Lô«»ØÈ&J£^;v­€Rh[¶2Ê {CíÎÆÞlþÈåêgE´¹ÓÙšŽ÷t°F@³þ±¶«„«ÑÆuªK•WÖƒAŽIÀCÝá~4= á v ™m{GrÖ>}¨>i ÃÀx)'¯_ÃjFÏöö~ÛÈkL›Ê¢ ÌB' Nkìƒr<ž‰3tLØ7Ù×ùJc^1ÍÊ8UÛ-v+W¡É÷í¬y1ícæ¶8:»ò­N=•¦XÖjYÕ0[°#EA«Eô0ÛbôðY‰é9È£ÇÁ91ù*ãîçÅÜÿ÷?†õxAÓ±eü5–¹|Û¯’+dL¾¦< Ž8ƒRp“Åj-d×R²Çcâi¶‡C‹@ºj,²¾Œ¯n¯ÅGËBLØ«nGuSê6²"[hÚx­¢BvU"2Öh2¹0[x‹eçóPðG?õتïã¿_|;^Ýô3½Êá¿¿h®¼xÑ|Õ\+Í—¯^¼zÄ~×#þû/ýrñßïcõÏ]ÿ¯š/^úëÞ=®ÿ‡x©]«µ)Þíu×ûí®ÂðÝùü~—'z}{3ƒß<»/N¾]‡|õ¯ŽCþñº´ºÒ\™Ûœ®eÆé'Å!Ïò–…I¨<à{aôn«r|;Κ–‚BìRq :T±(O§“«Ù™ +²×Òª>£¿{UŽex'$s€‘€†O8Êf ûP†«a=瘎ÖF4%ºÜ,:JF!#Ï?›{^H“‰¬«˜È¸xX5ÁsÇ Añb2™Ê`Èh”NÄyS«†Uè ýºDž¹¨[˜Š`’ÁZ.Ç„à\g…ÚûçÀõÞ;NïôZØq¸œJ6á‚î:#Cµ¸5·Ö\âóÑj×òPw5BO¨)°-´:an#:f=¥¡6ýuyv¦@F±ë4™2\÷,û„™p J»æ¢§(Q =M–¿Ö¿ÒÉ·’à Ý"Dį˟öª¿½M~{{žŒ+Ýú×§¿Ì~†}-žÏyP¹ŒMÙ"pJÓmEÞ»µ’#þÎò É=G<ðø« A„Jü–AbÏïˆâx//.0@ršDN¬]+aP§|fͶ²¼èðVNë—`Ô Á²KhÔl'îŒL›Š®’Õsͫ؈Îuî¯}×体³÷ަÏoâ¡"¦B9.(êÓFÁ&I®Ð{ô/ïr?‚µÜo9«»ü.›`Ýr+F1e,>­Àæ^È?—M`ä¡óq™ŒM:Ÿòǧ¨˜øù”eÍT"›ºñ'艬¥l^›fö2ͼóó—ó¤µDozèÙÛ<×=ÐÔg¢ý™Ã ~Ú~í´æhIo#étدüríqtþíÎÿ%í/_6Ÿ¿€ß_ãù¿ùüñüÿ0¯Gûß/ý²í÷³úç­ÿÕ°Þ½õÿâõêÊãúˆ—ÜÀ½üíÖÖgáE´6w>àý'Ygêhèt×÷ñæ¬ßšcгƒ²ÀçýL„À²V:æ*d¢‚s 1²d>æH„øN+a…k$á¾Ìµ7¨,j"¤£Ò¿!¨Šç–°,½t­ÔõUºoÞŠhtqѽy‹¯Ï¯ñúüÎñôé¦ªÎÆPQ¨H­ŸW ËI¿ ,Àðà >3óI².®é{F5ezð­Å˜]d‹DFS¹(äÀÙðDž ñÑ‹ir›õèFçQ;–¡@&Õˆ•5 ?A6žAƒ":E¨N+OŠ:íÇèê!!—´3ˆ‚[2 VðQ9Ò´JâéìrŠø­Ñpù¬ €v¢Ò}Ú¤)ž%çÒ¤kZÕ¨‹ I‚r!YcDvM¹s#t¸Âdδ&Ç¿/§³éåñ ³ÎÄçÐúá4Ãä4ZÍæ“ôæüh2J0ÁÏͦÎê`DøH3Ó“&r§¨a…¤iá÷è Ÿ W&…) ʱ„ÃJÆß&£ol%IÆÒÐÃ&•H¡sžEßbã­‰ìL”™ªÆÃB ®\ì“g[á—1 òÓ©“†Î$žc@¹ÄÈþäT“DV/Šóën*ZJ¯¶P=V%z`–¯j}»ûÑÔ·@U®ãX&¨b„*B¶Ôå†~Ëv ô’y–a§–-` ]²™¥QŠN—¯Ý\:óŒØNEÝï!•¶*›T ¨Ë§“Ÿuie9Ë“\²EpŒåû¹ÑÙjw{xc+7±±p9m“‡Y–weÊ”r!=c&S‹DP¶‡•Æ;>9IŽ\úåz£Sê•›j|Ü@÷r¬°-†é>EÆìË/I°Lœ&*éåQ÷™ÓitÞ Ê}VpŠ£ÙM‹ç¢Z®wúä\h¥wª‚`mW`–Ñ H œt4ð±³­B”Xê.ᮿ4^rjÀÝ9H¾ªú@a¿½µS½Ö»¶ºœ ߯!Jü; {¹p¦ý„ÿã©¶ÝݧR†…ÚoYwÑ•òÑ— Z \øÚSùž ú®žøþÛEº¢+Æ^çý‚׋üL?–¹8æ…æB å‰A3Õea‡âÊñŠ2aŒŠÎuM®Š £(²p‘þâEÖ¡H•ä¡{'IV (ã0+b ãš` Ÿ^õŸî=ýÜÔ(|ž.*›xЍæ”|å—Ľ;–×ÔßEšºãö5%—”h]~IŠ àµãjì8Kug¢õÝúíÀ™]&Ç¿«D‡p澘¤Æoc†!ËlIòqnq Í'kþñA:<àÏ$ŪÂU¡M ¿DAWu¹FRg‡l‘Dá–ÄŠRÿǧ³3}HRFiøaç-Ð0d=˜Ù†=Íà”p1IØâBª.Õ;p{˜¿$Üa'ÊÞ ÷±æ<óøVæñnþ„o½°ñ§}oø?ÚQáYÿÀš Z„[ä·2°[˜VaÖ™¤]E =wøqŠLWµîÓõZß<_éŸ\—O~°žÙûõòÁwuøÅ./køs^Z^«ù€y&Ý壛å®íe.SNηG“`, ¤˜¡GºÖMyë]YÂßÊû)#›ÄÇ{ “ÐÐÃóVìÔ6k{( \6â€8Ðß×Ùw9#Ü]Èú=v:ËxL ,ÀcX&ᮚNÊ‚Á®þÉÄ *¸ŠÐƒä¦ô Tr]OñyÚG«,óÆÉJò­äÏX/îËQäIñ~ͽÊgõT¹5ãL„t‚]/îP6õõír^'âŸôsßÏrPÌìCÓ©žó»ó¼ÖÕþÿ_&ÓßSбb‹`YMÍV³ú°1×ÖîöUëS«×æ¬ÚzP§û¹»Uý­\?[RÃæh_½Öçve^fÔ€h _›½Ö–2áüUùç‚VJç_Ýl­wWë,-àÄ΄wàäª tsoÕDiE‘¯Mr¼ZåìÃ74 ú¨G´ªˆ¾nÖ3¤<ÇU¹þ’cÏp})×u9ãÀª\RsžÏ¸°zN©Ý|_Ùå²ïÊÖ>­§b¾Ç)MÔœÊÊøœšF”ÿ¨×‚;ùMûάȇU!xS\V{QrÉ=/«5ãþ@Jóº8‹0ÝG2MR~Ýd¹’m|BóðÇûtå_öqJ8Ú¨èº(ˆÝ/L¨À×ÿ>õ/¥)\ðv:”«Bß;Z$åæN»-Ie)¹³Ÿ-4Ù‹K>ô®ÖºO?¾o_Æ9U¸dÿ(¬ ¯>$VÈ»½7V > +¸‚¨--Ý+O·(jHg´r°Ö!ùC~‡ÚŠÚßš+&— ÿªÀŽM¨ÆLc÷iSl¤Ù§®5©ý bbmˆú>,àõ¯À«êW7b{‹cèoð”±ë'¥)È«Cävp0Õ»¿£QÎ&‹ åÌ‘Åöø&ƒNZ–e`IåK˜oùåìf#(DQ.Õhÿ®[ e½²'€9ÁœSåDLA$æ/æóþ™Ì4z[Ù²|—ÄÔ Æ[ä4™sA Ƕ19‰½X®w¾ræ®Õûó–ëÂò20+ÎÖ’š>9úóûmÑ߆¥„ ­v1i8²ÀÂC†a®÷¹«™¿f];‚º=0¼,PÍúûh" Ýz|ÿ“ôú0†cð‹ßÑMp9ÿæëæ«×««°o¯ÀÛ×øoózôÿø¥_®ÿÇ}¬þyëÿåêëæ oý¿zýêÑÿãA^¼Ú3ø»ïzû‡hðìn´7*‚²drv6?SÛîÌSÆ _!ÿ8§m¶ÿµGî!¥ÒÉpE˜þ ë˜ämu•à±l-N¶Çº›l‘³Ã•¬ˆrÈ!)*'íÓÐAN|\¶™'¹ÎIëNÛ²uH½êÑ©¦Äë§uª ‚h¢ŸŒå8CKˆÖ^Çfç3›#ärS|.[ÜȨ5ns´ÖX3WJî:¸+·žüöŠ\y(mÌ"”?*ƒ %򴄮@AŠÊ”È…d¬Ë‡)'×ÄbÄd§,¦ÂË^Ë“Z²'˜ÕE¬A/rL l"9Çśԭ$.t¡Ù×—rVÁJ|Ï\cè‘À?¯á ¹|‡¨T‡íÃSÕ DÀJp]ÉEšºˆíÔM_k¨š’"!IÒ4Õ—€ä\BM»`%Ryà„h¢Š:cº€Ïëë}u9LÃØ]#èÖাµÊ9P#¢ÓPójÀ>9¬ ÆÇ™lzlèf‰qÀYEwBçYÊÅXeî˜LÆp,ŸÆ)¢â}$V˜Æ3ã!ãiWœ$ñh¨`ªº²D•Ë ¥åópد¢çág¡—EMNÏfËg0Lˈäë4žrê²–õoóÚ¿7·¹=¼ o·ÒÝxP§·ïîz9ß·p3=8Òÿ2Ý‘š¢êó‰ŒÈeäK™ÅÍõGÀ–‡H ’»²›°%Ê«¬†r'*èBÞËá?DÑ„ŽÍ&ª“ζoòÊJtöÂ)ì³ÑÕ•…V—3-²Gè’lØwÍ%}”ƒ¤Ã‹ëÚ…é‡ ÈñM¦ˆ\gÇ6h¼ÎhN’"=SÐI¨ WßHY¤7¯q0€N*„ÊÌ£.© 'ªQQÃÊS·^„\"‚#ØZq.ÆCý޾"˜ÎRÏ–Bo7pV)¢†"Ò&}hˆ]¯‰ /]»eE¸Þ°G´‰ãÏÄ‘bYÒcä8"KÁF†ƒ5›X¢”¹@Õ±áå±Á¬·½î#|ìFÂkÊÒ^nKx­-Ä*xÌÀ­Ãæo_{(jcayÄIìÖÂÒh D¶J6ØŸÓwoÑl&»´_  ^Ã*M0¬¤Íñc˜©e`Ì Kó-fÐຂ£Nfª‘9CâuHŸî¾V­9;ÝØ‹Ïê,#ëaæD)â3ËWKò³ë­¥Fa_’ª¨`6Ú žX“*Þ ògô¶8L«ŒÜ6À°u|³_‰*–rcIð· ›ÈR­sݲâèl#J$M•§ð×#À!s³Ó=IJ´,6>ϯå\}u– ´O†$-·±’Â*sfc“vä¬Hø'¢úÉšBg¼4\fU•É=䥦»îÁ©ääã|÷PVóöÅ!j–È2uÞ<™ñ5/&cd™eèR.€ß¢i‡’ìi;“˜÷QPÑYŒ;BW˜fpª¯.'Ì:j8žïŠ Â¥•Ë9nZF0—½±\‡_E™xµÊ×:pø²Ø§7U/yÃrá˫ڪŸªçàCjÚɇñ5ó;Çn.hµ¨ÞX3€’O“#­wÅ0(”`•¡Kê1¨,”=A<'‰Z!¦/a*]ŸÞ¼cËE¾¯!÷‰4Q×¾”ÔßT­‰Må´â˜«J]îrë–ÖœÊßÔ¡çž<äÉ·=ì›ÞiˆâIz™Îžª¸›<¾:Y?†ÂÏ,âÇ)¨/hKñ‘¼iLr¯íqÆLNnš0…Àé×’þ{:«ŒÑõ EçÇg•¥öEšŒ€0ka²WÅ“÷| Êê{]½¡!3™·aúŒ9«î7Î'ˆgOqðF7*mt$•NdæŠÆ0:±£ûÒ'èq>ìtržšèšº˜¢i xN7:ûóAÃz3ž‰ÄªµêRèq¡T£Ò¢”çרa¦ƒÀ ˜âH+X4½<'w@#Ú®i¬€¶¦-‚26^eϼ(cÐTúÁè¡úXâh“nÔ)Ì‹‘ µùê%Õur9ÅÚêJ',¶ÜQy8.‘é)°ë“Åö'ÚõstÛE¶þõ‚*ØÿçìÿAm¡üîo×¾ÀöïÍHàh1–ÃRnaè.b˜šj]çRwt }ä k%u YKP³Ð:ñ~ˆñÐŽìJt -FÇ7êÀ>…{Lr¿BÙz•ç®JÂqp¹d¬&¬«‡Fúˆç\&$ÁMÓ²J°òšˆµ’hûC›9ŽÃb:]°Ý—ÎD•?êL:ÓŸ¢39‹÷QqºwũҪhÅuµªT¨ke~Ñ»¼Ùök‘¢<³Ãà›¬æåõ ›ÎêhùJYf*&m·mßö•¾ÐàȼœºÁ¿§†~&ÃËhd݉ ‚ÖÞÒmIÙq «^æH£óX\iZ."Ü*i$ØgÅ´íÚSﲟ–ó…28SÛwÔL^Â×ÉLßTÌ!€íƒ¨'Œ¤+7 Þ”9ÆÛ Ðv]K>ŽuóÖÑÉLßæ¸wc|x7VeMg&Ûv÷ÜsXÚ°–”â¦=! ‡”2ÁL½ ‚C] ]˜`î0Ö² ¸(a8ñ9¥ULˆ…pŒux1n9(µ¯MRJÌéìÎQR`v]¥ŽJ²Æð-†­“ŸSz¬$ÄFŒP—R½õàÙJ™tNó§2{ Ýnìky¹¥9Zº'E¨Rñ"ѳ¨G¨&8¶Dx£ô7WtðZŠNa÷OSPЗ(ŒYseÅ$0¹ÀÝ‹’ÐA—Oãñ1ú¥àˆZâѽÁÅk2YØÿžDÍùæ^ƒ™Á¿þ½LQUŸ“£…Þ}]½Èº£6V™kÒ§ÊÁ,æzöÈû2RŽâ©VK€mfgÖíênx²¬uç˜ôcráIg“ kÀ¬;|JÝ:ãcPÅpx°uÁ+äKª«V œÞTud=) JJN4´á¯ÿ“lÀvfýh棼€3L:;.®1kqé$Öìy¶ÙúÒÅ T1#.s¼——{¨µ… ?g¡T Î.& R9®qE¸‡E‹hµÉ¯ç= U+e6 TVytÅêjêÄÕ©(dJèÊHq³‘Lªüê®Æ”S©œKº XØ#ip\ùA3©D#ÎçêË:†“©Òwø¸ ;›ôecêÜy±$Ux^l·\QÒ=#9“ïEî\À\{!½²¸?Š+nÿ#`aàϰöBGR×6 ƒÄ÷Êâ,BT7äìø4yª$¿}(|žÅ×»}ç©‹ýÃ^¿ÕÇ<™êÍà¼$铬"àr<ø„NÊðÏ`«ƒnà ºügŸÿlÀßýÝV¿À‡xãG¯ÌϪ¾?†>¥1k㜠(±ãÆþá>¹}CÁwnkó¿‘ïñûüjÚ;½ºø°÷¾ý¹µIITwçù¥ÓC8PzzÌ<…Ò“fa¯ c¼¶ÙV¦î{õôÈÏò}>åÝíÝm]d­ÕkÝ=ìH{øÀ|.è?=¨ÀâƒiR]bqEyS4m~¦7hz©;„“É ZÔºÓ1nÜíÜœÖeÉêSÍŸf–îîÙí:Š{Ö·vÔärÑɯ´|+q>È °.ù}Áú4 ît>¾ßÝþÒÿ  GÈ#c›=òiäóiM=4g2$ùðà §ŸðÅK«¯ðñUqEÖXÀïë¦ôï”Úƒþ£hNÙdwÿ°Óßm¿Ã!µ¾¡Eßå7¥¦-®xü¦æ0e–‡?‹›ä8³UÔ{Ø{}§÷Ì`%ÈsÙµ˜,ÙŒÌâ4µ@ç SÌAu+·ÖÚßí©·¾M$êüÝú kz³Õ;¤÷‡E{yl7 ƒß~ùÒÚØø¢R' Âð4íÏ eû(åo·NFæÀ†ïÖ²ÛÉÁ?“%Ë:9Õ¥A4s`Ä€œKwÅÄ(F­YX©E•áV3’ܵíg¶¥ÿç’°î/AƒW‚&ןdÊ«w5õNÞ£³´ú£Êa4½¸äMãjFTëP5Nh…0ájØ!=FÌÒ á¨`ð»»Õ™Ç8ƒ‘ý,¡‘¨Í.ÿQ{¡Í:Á¤IÅ©c°fTÖü‚JƒË|zø ü°ÑæÌ$e~ý.ô«Ñ,ó~Í-šû½Kˆùa_Ï—£™ô®2eM¨R*+·=ÄÛ¨¸óô©¸IòD‰hÛڗߊµÃT, é˜ 8ðo°Uõ-Âô#psý* —™/‚‘ûáË+¶B¦´›‹8ƒÏà /(` $k`?b,b“#¢±Ç)‘þ®®WŒa³õÙÎ3ÿ-7+&áÀÀ&"(’éñ uVްœV†F{o©dbà=zƒ:}°éµ¢nËbð8[Øw“£BÖK“%eÆÿS_ìïï¿!&¥ûveàãx‹Fs©–0pÖŸ7lÈðFcHÈf/îêˆFhÌžY®lŒI­s&Y*É€žÊƒ.‹0aЙ8 RéÈœóýF¨€”Hþ×x·Riœ£Á'ñÖ$™ËŽÜ0OaHr'œrŒVÉ' }(7m+wPRå!Ê=ÃÂY¼+½7©;#°emá„lrðàߊ´d)þcj®ˆpië>ÈÈ`Ž“K©â]Û>Õ¦€¿‚9ô4WèBd`),–“P5OýX¨©2Yó e³sæQî®’„g\(G.ˇ9s^…&„z™£cˆ0û(•Gk´ oÝòsÄ ÏŒÖኜ³øøwÁ&l¾f9žbtxpð9‹ˆ`‹jÆPF–®ñ$ù,YjiÍšþ@AgÏâR« ä+t´NŒ™ý}{ÿtŒ?Ü fc³mî.MÍÕ±‚͹vª0›° A ðØ‘»~ ƪU ½¸gïûVÏòjè¸^ 4ú¢YÈ>”#œ>Ù“ª"˜x4§bô jŸ èm Ñ"üÉÅ*ýÉuŽ øgî:¦:l†ñŒ’CqùsðeT€=ʲçÁ¼ÕpPf5Ü®¹ò«Aw¸p5,¶¨RâÅùÕæ–ô+ïä¨_ŇÄ,‰…{p Ö €Úª=Êôv{PbÁòäо¨Õ…öl_'tW4™™00•iÉ\*â…üº²‹‰{ð=º¤:Ü sÔ=í(ž¡+Ëé}|Gq„n¬W§ à"ݺ2—’ y¢ô²³÷õªx¿Ý߯^½*W\Ö®ÁÉÖÖåK8ßpÙV‚‚q½ÛljE Ü`=¹2׬€œá˜C¼G}¨>ià%þx)'¯_âFoóö~NÜÈsLž‚n×Ùï ÎP©G‡5ö 9Ïĺó%ì/ìŒï|ݱ@½˜¿ÕfElÇÆø„©àÆ{Øaš‰öP¼>fn`€­³ËßêÑ3QiŠe­šUÝÙ²…;Àl‚VC¬ç„-F—˜¢ƒ<Šüœú®‚Þ1¼}^hûØþ£˜x´ï–¶Ð6ë3¦Mǰ’'³ ìŽE5Ù§ÖBV,%e<.)žÑ@¿ÕeŸYM‘r‹íþ »ƒøévP· ®EEU,„ ,?ôƒéBªÉäÂÄKí~è™^èAà~>ŸBœï¼—ƒÿ=JƇG°²î8t9üïÍ•/š¯š”ÿùÕÊê#þñ¿é—…ÿ}O«îúù´@oý¿Xyý¸þâÅ«ÝÃÿö6°ìnbåA¦Wÿê Ó/¡K«+Í•¹ýÈéZfœ~Ri‹]Uå¢6‡ ™Q-”ÀÔà W‘ŸòKò².e‘€oç$W×\/¡§Ò!vÔø_è82/ùŸ“ž»{PÔê—!•á}ð´Y­io1P »É¸–ãP+ -|«,Ã4Ñ)†ÊÏ´Øè†ÞôÑ,õÂpô»Y¨×Ò¯BGÜc¼º(*܆¥/Éa¬†Ñ$îʘÔyq“Y¼Au"U ˆ†D Té\<:Êõ¬boÝøÕ¹t Ÿ°a<žÐªÁöÈ]vÓ²ÖUуÅgG¨†’MЫ˜bXd~a3œ\0©Š†“Hâ,ØŸ hÛG,¡äÌÆCŵÄ´IÂëÇlÓÙÍãNS(çg“gy6N»óœzC¿·Þµ›‹ùÞÊÅ2$“•W@!F‘üJó˜LÕbL´@ìœ'¸™§ ,Yüò UŒ[àÍ ÚF”‡¨è&¾W¡æÂ ¶rMi–Ó®'†½Ç”Ц‘¿å9ÏÒ†ÿ1cÁÏ3#¡%u†NÊ(ï”°óžVˆŠ§hsB­ËU«ÏT~C yÓÈ”ô¼8‰]ç„dâu\G$L>.dœ“·V6Ê%M€„´ÁÈÂßÇ;A£Žh ³:çˆÊrÛµ;v¯L²UûÃß\ûÏÅdŠ1žw},gÿyùâõs8ö½âóßëæãùïA^öŸ_úeÙîiõÏ[ÿÍ—¯_7ýõ¿ú¸þæÅ«”–w{Ýõ~g»KÑÎ6¹VÄÞÎæ6]b¨«ã~M™s1m[ÐÁyqò)+Éöc†²r¯ŸÖx~CV+4-Yɢ¡ˆ lHi½8 pqn,Îǵˆ!+tœÑ--fŽ’+P£¬±Ñ'#H^×àïjeÝ5ÁW ¦)±5ˆG8ñµÖTw«ôõ[!šø‰+C§@ÿçççŽ÷ó²[šó¬[çל~Ð7|Ç=¦ì_'ñnUÿø£õ‡C žß[)!tr]‘^df¤ =½l·ZkÕ$u”,äÊ‚RBHéƒvi`Åfð1r(°–ek %u.a^C†Ç¿Ê¢×DM)ÙÑ&;Ú»¸@Xžiaþ(œðc‘L¦ñðìÇ7ññM‚eËy¼ñ'øZ^«÷˜è~3-œŠˆ'³šäšc7…fýl2ŠÓßor“íÕjý•ÂO›µMrñSfìl“ÝW–"^î%’/¨µ6vÌQ®ÈrA~ï_©§Êq£3ŸÒ޾^Ü¡,ÂÍí mñOú¹ïƒÙõæHw¬çÀNê‹!_ÕBAKšÖº8‹Ð#?™‰&iL¾´çw2ÏÎËÆ[ß©›ã5IÜ“Çn3/ŠP›;þOºnü÷)û"¶È×µC€ë•phmÀ™Ü4Ôyšã£jJº=.Ô” w±zŸCyÛÞß§Ëöõº$êØ¥g7¡ 5¿áäj­û”Ýd͆åWáŽÐ²„nÃ×âv#~›ÕzÏKhÿ¾N?ܺ __ßp u7¬Û;e|á«W‰ËŠÛ)ú–‡9+“rYÉïP UúFsÅÄ´ð¯Ê]4(rYb»O›Ê:%-¥u­¨J¥Jƒj~VFô¯ÀÒ:°ÃRں͒‹Ñ žwý ¥‚8+&—GÓ¼¯¹#™–¢ÀÞNQ°©– I‘ýc)‹ÂCdð?œsŸT­d&Y´V‡C²£ÈÇË`¼W9ñZÚõg:â¶Ânù.‰©-@Œ·Pi¾æ l­ÖÛòc›§€®Í¯¿êz{©å«þü~[ô·A¼»g®à¡ÉÅÿ/Ì‹b*jo1+üÞX¸GÁ ceª*d©`!ßÿÃuV»›;ÆÅã^¯>úÿ?ÐëÑÿã—~¹þ÷±úç­ÿ—Í—ð£·þáëÇõÿ/^í^üì(ïzû‡hñín´7* °nüA8$¨c0û²|G[ GÄ~·†Ö%kÁ¼ò:Œ¶®Â×Ë–v¢ëënh;»Ö—í ºâ#) ,¶aéY¶‰MSg ºƒR¶ûð1kN×~JšÐyÉXn3´Ð6%b&¯`³¶ó™M-1WË_ûð.°ÔªÏbÞƒ¹œ•ñ½ñd¾@k˜bo A…GŽŠP ½C<ÍšÁLaOŸ\2ÖåÃèg^«j™a@Šið AxKaì]¤¤7R`?É9®ŒØ„¡‘lÐIrf\L7é,>—ù}×\Pp¼½©VÝÇ— _^ÕVýT=רiïkC;ù0¾f~§ðô› Z-ª7Ö à€¤ÇÓäHC Å0(³ÊÐ% õã×ÑþvyÁ£=þ¾Hbà ·]ŸÞ¼íSI_'Ä%ÒpD]“IRSµ&6U° 0æªR—»Üºå7§ò7uè¹'yòmE{Å'æ7Fâ}µxÒÇŒØÏ†„ˆKÙ±Ÿ‡‚a ð3‹øqŠG´Ä>£èWÁ­r6«èŒmÖ>Âd¯Š'ïU6ðá{]½¡!S¥K7ÚTD£ó tð8žâà' *C©³°@sE cBB°u_C:g Rɘ)}7máØýÓiÍTzó[ |ÛT#5W´—ø©DçñP¥%¿˜ÆßHɹ¥Múãìs!vógóvNjq´34Ø9!ÂؤtÞv4péÀB'óº_‰v€€þ>95ëÚî¢kÉÇ£± V[":™éÛ÷n¬‚ïÆª¬éÌdÛîž{KÖ’RÜôå>ô&:K0Í/¨àPWB&ˆ€Yu`kqQ&|Y©´Š‰J(fjÄ»fË'B©¥xm#0=GIÓ \"É6÷¶N~Né± uöâ"Fð¨K©Þzðl¥L:ZùS™½ž$öM·Â‡ds´ô¸‰P¥âE¢gQûBH„]†9ú›+ :x-E§°û§)(èK(°pÌš++Cùw¯vº|ÑÕGÔîÝ/^“ÉÂþ÷$ÂhÎ7÷Ì ^aô〮¨ ŒÏÆÉ¿ÑBoо.^dÝQ¢r°2#è.AuÖƒ†ïËTJk¥–ÛÌάÛÕÝðdYëÎ1éÇä•‚IílÈ`[0ëŸR·ŽÃøT1Þ,d]ð ù’j㪕§7UÝYO ƒ’’ß møÃëÃÿ$O›ÿ­ŠßtOjú§Dù¿°r€7&ÖqCÁ éØÈ“lÑ4³bÕü" ¿éNyàÚ+—ùÌ·Òø‡t˶3ëG3ßdLû 츸Ƭťќٙj³õ¥‹¨bF\æx//÷Pk ¡—ER58» –4ÔSèâ×=,ZD«M~=ï­B¨ê戕U]±ºš:quª»ïp.D>_Ål¤ÀJ©¼Íæs¸SJ“ާ5· XØ#ip\ùA3©D#ÎçêË:†“©Òwø¸ ;›tÏbêÜy±$Ux^l'RQÒ=#9“ïEî\¸`ï¦Ò»!‹è£¸âVÀ>þ k_AŽ$umÒ0?0H|¯,Î"Ä&CÎŽO£‘§¡J’ñÛ?z]ÓVë˜M’xê*_]%Õ“eÞ±ƒO” ¼.s¸Ë í2µºÎ`Žií ^)É\ÝÊÞX7™ë:)Þ¼ ðJ X—îM~½º•Ù®Èñv§WWYjëvÊnÙÿ€´Î”©ÞÌÀì^ç(h ‡ßÍìYwSÖ­Ô¾ù„Û)HëNŠÊºXkõÚ‡Ð‡ÎÆt*· Îb©ŸSY-%Õd kÛnã?U3¬v èÌmÐÊŒúV¬ÖÝ\Ìo })¿m§SÜ´Ûâ¶UÊN4ëTó×óLww‹S&*&ZßÚQ_OE'¿RïñA¬Äù +Àºä÷ùµX ît>¾ßÝþÒÿ  dÇÈ#ck=òiÜóÚz¨h* )I><øÂé'|ñÒê+||U\‘5ðð뺰)ý{¥ö À£ÿ(šS³Óßm¿Ã!µ¾¡µßå7¥¦=¬xü¦Šy2@‡ÃŸÅMHrœÙ*ê=l°½¾Ó{f°ä¹ìZL–l†ÙÏK@Z¾s†)î“-‘ÖÙlÃÚª ) ÇFyëœÛÓ`²õzƒ­Ï [6[½CzX°õ™§Vq›C¦Þ …åMªàüÒ¶ËSî/“ed»» Fœ‚ˆƒ:ÝàèÍÁ‰C0 ãVõÓvzvR e²Õ&wuû™méù¹$¬›KÐÝÕ£ ÃuÆ'™òê]Mç³çÂ{tŠV¿â1T¹Šª<–ç©%­c@Õ8öÑ%|èÐ߬~3× û¶É°o.*)rˆ×ÃZáÇÔ9PÙG÷¬G ¿A~ÈËöá%w÷_óX k6‚ldÍ.ƒ(Ξü`¾ M2“žDª—™ïB„v’S+¾ðåìÓ™_¤åÁ_s‹æ~ïb~Ø×óå¨jæý€«ßYÈ oµ¼ç N%•ç$²X8•²Èe_W-BgAÑlaòç%aŠh71³ý‹®É[Zeˆ³·˜Š:úD)8#gÑiE§–…šq¶°ÊbTÈÏ*ž;—–`Ÿ¿ý?ýÍþþþbEºÌWÖCæh±j ÃLýIr€t48(:2®×‹§ÂÑMä3Ëá‚M<©uÆ%û'™åSyÈf åó=Ç“Žë9ßo„ Hã‡ÿ ¼Åâü“)Äù¨{æ) ÜeÜ<ÿ!^ Ÿ,Ä ×›PN(i_€rϰp¤I¯²EêΈcY[ßÉŒü[‘F"ÅLM.Í,ÁΊc|r)U ¡kÛ§ÚZUv(„źÙv ‹…½Õ<õc¡¦‚@Zt`llvÎ<ʽS’ðŒ å_ùãOΫ1£®„s4f¥Ðhb.á-[~Žô™Ñ)\‰sÿ.Ø.Îw7ÇSŒ¢N¢ zòjï/ÉÃÉRekÖ¼Ú"»Ñên4¼ ‹je0[ÄÑ6Þ8Kʾ½ý9†$n‘‡©±Ù6W¦æêFÁæ\“W˜X„àÔ xVÉ]™† c!+Kܳ÷}«gy5Ô\ šxÑ,dÊYëNŸìÉ U‘]Ìùû ùª­ÓÓÛBCø“‹Uú“ë¨ùøgî ¥:l†ñ즒CqasðÝU€=ʲçÁ¼ÕpPf5Ü®¹ò«Aw¸p5,¶¨RâÅùÕærô+ïħ_Ň»,‰…{p Ö €Úª=Êôv{PbÁòäÐŽ¨5WÂãp;5ÒÊ®•Šs³ÙØÞmäT`t$»üûíþ¶xõêU€3‘9‹)p÷ñ 5Îǧ¢™QA QN‹-0¢4°©côh,¶Ù#£© BÆP;T±?•?r¹ZFÑaí±t¬£S$é¬CziìTmy¥º¬³²:§n üºü!’èûܦ§1Ý?ÁÞ!mïH¾OªOxk=^JÅÉë×âŠÜ«Ûû8 "o1y ÐZ§-ƒ:O@ÝÖØâx<gè¿–°ƒ¬3´óµŸ‚ rþf‘]¬>(«³êV®b^ïÛ9ˆÂÓÇÌ¥0uvyZz&*M±¬õ‹ª;a¶„ÊR´ZHc=-FkóLÑAEþ.‡|^8÷Ìm‹†[šïÀº¸ iq!ã g4µäÉjÄ*“"š 'k!óŠ1Ïe ÏêÊɶ "ÁÛÚÝv¿•Ñí—®X]NјvÍXRÁÆ=ÓÑl0A^4™\˜˜ Ý=C»î:ôsðüm> çŸ÷òñŸ/¾N¯î8ðâøÏ/_½~ñˆÿú ¯Güç_úåâ?ßÇꟛÿ{å%è“Þúñ˜ÿûa^jË äÿÞùü~÷‹Ö'Ö·7{¡$à‹%ó~„ÎŒÓÏ=lÁOªzç$ófvÒÈÄÖî Üw‘ôÛ?Ùì¯ ”“¼Ž{ºH¾Mfât:¹šÉ,KA­ê3ú»WeÇø'pÎ1ljx÷„C&`ö/8žŒ}ÂzÎ1“¢ñ²oJø±Yt”Œ0ÜBžb6÷¼ø¦U±óYWM$Ö±‚Ø»˜L¦2².¥qGãT>a:‚`¿nE$gêèžF äF°–˱‡17úõ€6EæEAWy€¡f)Wò˜÷úçÌ{]2Éòj­[ýÓ2ædA&Ê=ú—ež|6˜ yGá]¤÷Í÷ÝÌwÁÍÏk r»×îçSÏžº¡ÖæxŠR·‘÷8U®NE’ʨ>̃Žw}S¡‹1CðòE¡pÍ¢A1ày2Fô˜T…T^‘½ #Õ8Uî1iMGe"<± ^+Õ P`•¬˜2qÒÄôLnrvac’åÅNželõžáç]¢^¯áÿÓq2»ÆMq\8ž ¥f& 0s °ru©qhýè|¯i¥"O?†Ížð"‡?Qg=Sx~F°ü ¬óˆÿúíÏì€kçíN®Ð¤_vJ••Â^ÇÙ’8íNXm®G~G×8 äT!Ê;„WÛÝò ¬=ˆï²£øç2À}P˜Ÿ¢®–`$d׌>s­!še¦s#Šé]£îAÜ î—œ_H‘4»¦tfØÅðÇRªØFcAZ/>œaÀü˜o“âD†yÇ·µT¸¿‰+?(h˜™ s- c›)µß< SÙ^WÖ Š«TLá¥ªÏ P8KãÑ ñmÊ“±¤èâ”2 V¦ÃšÇò|šLoÏØ<ÖÙãËm-]s½ý#Ëÿ–·øÜ³·®fz{ wBª÷™£*„ïsØ./7õÏÑ;çÊÕ9B¾uõªëFÀ±ÿÿ)ö¿ ýÿùóÇüoóz´ÿÿÒ/ËþO«îúñªéç|Ù\}Ìÿú /¹fìÿÊúßÍ5ý?ý˽~Z£Ȭ_8Ë~ s¾²æ?Úòÿ$[¾JöÀÙÁí÷we¿Wùž6‰/ö¬Ü,9ÖúÚfm/cß~8ëü_ÉÒþ¦ô9ÆmÇllÀa«U+º°ŠvÏó$ägs¬–ôkÖ¥0P«kÎÛËÔêÉöæT[Æ\°­À18­Y›ÑbpÎÿéMtþíî·8ÿ7_<žÿæõxþÿ¥_ÖùÿžVÿ¼õ¿úòÅëçÞúñúqý?ÌKîK{k»Û{ýN·í;à“Ÿ|ksçCËXö Íp]æûè‚_€ó%(¦lðh+(÷úim!u˜™ y¨@£&>C’¼×åû²»´*ìWøï ¬— 2+Ð2*G|j —e8Ñä"žÊ’"t#Þ¼…ƒúÅYD!1-ŽŒ¹ÆÈ˜£xÆ_ÞTë\HF8áӜ螠 )ŸHêâš¾ç47Ü0gh1ˆ;Ù2MÆ"½•®%’NÙI2œÈóº˜&ç°ÝŽntâôc c2ËZI"ûdÇ4-¢SÌâb¥ÅUyoc ¿’hÜ:@K!qÏt>]|Tq{<]N1µOt³KÇOºì…îTºO›4]³ä\u¬«]•£!ÉC¼v$kŒIRî]Mc 2E/†÷&Ç¿/§³éåñ “ ÇçÐúá4Ã|Ž44Å}=A=šŒÌç|ó„©³:töÌô¤euS¬“¬XÐκÂ'ˆ Œòç80Ø“ñ·ÉègRLÆò¨ÍØÊ‘ºh'$ø'i˜L>M”™ªÆÃBŽäsßÓ‡7Æ—1qÐÓéE|œî7°®¾±¿$WMà‘•Ø™_–“ ‚ù{G}Šê#”èi|4>¦ÔZN ™4[úE½eT(v0Bz¥kÂ¥å>ê4ßò« ½t5Š ØÜþâ0²Rï…€½1Ã< §ñbÿ̴v­9•2Ÿ9uëîÛâGr»(E)mÂ3]Y¯FÍ\Î¥›%&ËÒ’­óÏËÙM„¹ú½ÑÙjw{xo"7•±¨º•¯qÂwË ¨}ÿX,‡¸‡Ì©EfȲǙ& >9IŽ\¿åºTliô‡Ÿv‘±ÛÃ\‹³°0)’S‘¤W溕ôò¨Š{Åé4:oPå>k8ÅÑ´‡öžÌæuN_ NMP?l»hbÃFiï%µC˜ ã¼iLÆÇS²¨¡D¢yÛçþXsåT!w¶ër!*JÏ=íN•¦OåUR©Ÿ#i¿Áå‰zN¿ÀE.3êÖ+oR¹àE%§!¾ ×=”¸ò>É=J8Å"mkî? ˆ=E>fŒ@mI*× •*¨LÂÊR<4(ä!ö£î'ãeìG[ ÜU᱘b+8™èüì”ôa'««i2›Åc™£Ñ©ç’`/†¦¸f»ÁBl7¸5Û \þvl÷Nf½ÚàÌã¿”x ûĪX»ÈS§¬G_äAÝ««ËÛ0°·-7ÿñ÷WŠŠ˜wkc2>Åɨ£¾45RtIup3:ÒÂ>|~#6.Åútò°sF§bG ÛFAmRz> 'ÓsгGä›ÿènýŸáéqŠêst78ÁÙí³ì‡ÞlM†8C=ôê®r™á@öA³…^€Žƒ²²òJ÷RŸ€A‘[×Ä{ºU ¥3œÔà Yí]eAb{ÃC|Ñ~ºÂOó…| B|çÜèbzƒ­µC«ù…ýöÖÌIë][ß„o†•þPJŒpªý„ÿä- ü-öÛ» _Ö¶v.©¹ØÛ \|¨ù¢÷[tÅB—\½Îû/¸ø™~,S€’8C]Kòå–˹WÔV‡oKÙ† K.¬µâ6eŸ ‚j˦«H(¯Šè"¨pkðéUÿiPœðyºñÂK6l(Xò¥_wy„ËÉkêu À ¨@ÓŽÑ·^\R‚«û% ƒy†‰`KÄ’†­Õù8¶Óú¿.ÉœËOÉ“”2+Ú®Ö„Ì‘¤#Š~¦S~GB¢J3Y¡=¿D9RuAµ$6ÂffÐÚ/& ›1H÷D« lj4âï“ûißcÿ'Ð&¿u ¬&¤aŽ‚M ò›„š„‡»MN uqŒ °ÜÅ(:f³+<[ÿ¾Œ)·²N‰Ç¢&¾ŽŽAÿE§ˆ£E©‡“8E­³xt¡lqª'i$d7U Ç,g"¥pÚ> ôä ³¤³U2¬js›²<1¶X>ÕEÊ*ÕÅë'3Ð _` Â/rß $¹|ìNšÍÁt †qï‚ijlzD+ÎGdãá/÷Èxbt¿ Ö>.S‹¿ò—½nš÷90„úUA ùGgPœrÓÖ¬d°£ýQSïžrÿkD´¬»ZÃê5¡é<ÍÁÌN&øÏ689ÐàÄyîv¿aº€Ì¡ Õ¯ ݺÅó™FP>Á?O…µ›„‰Í¬ÅGéó—>¿Ê·‘>¿Šhþ«HÇIÏY˜jÓ'¸>â‰èÓþÃʳ¿æ’Ý/Z³j(áZ$™*×}à_E2>êe‚?¡x{\œîëWÑé~qñæ© üÑ3÷JìgíìgC>ÿ@ ßñòâ?¦x×>àåâ?Ð ü<@ñ/W^=ú?Èë1þã—~9ñ÷²úçâ?¿zñ|Õ_ÿÏWñŸ䥶=ÿ¡7 d|vHú¹³Óù\ë[Ûíâz­+„n‚÷‹G7ÿêq!Úßæs;îÚO¢Á}M½s€£-h ÅPÄó#Bò+íhŒhfjáßn‹6]Ç,¦åãI„°—†h`‡ºÞïq<Ê€5àÄÉ\35ø»ZYw“âÀWÈ#Ø“p2KÐX¡Û¤t™—%øë·B~7W×ýŸWœŸ;ÞÏËnédüÍÐÔÏï~ÁsF#ŸTÄX¶UýãÖzTÀD= Ï(þU`»"EÈ †E‡ItZÙ­ÖZ5I\‚Ž€WÂÆÕ †·C)ÈÅc<Œ¦Ê¥(KÆÉìf™Ð>ün”‰¦?¼µ,ö° ¿vEë‘—¦¤{ƒøŒœøe(º@R˜•v!™i×^5ÛÇÕè õec þÀhè¾¹ª™d ÂHeWÁeB®0¨B|ùåw™EO^—7TÙTI%5¬œ‹ÌŸ–\|ó‚Q=Uni8Ì%}¶×‹;dM:×aÊ«Ý÷ê†Åú3þcxÜÉåH9Z³äÿ¤Ÿûä®tıCññkÉ—’ØèÏk]ÔñEAT[ËjÊðZ^5wî´œã8Ðb0S_G*ǧV¯]ŸÓé~înÕEok³»ûÚ`ÄfÏut&=hrM¯õ¹]σîÒEÞÁ¹8ëEMmµöó{í81磽s5õ>Íe½¨¡¦õî*ÕØßE‡ãÝÞúfÝ8W£äéÝK³‚ìYÌ™YÓ¨uD¾!Éõa6>ÅaäeíU\à¸+ =w 1Kp°(ã¿kÇž¹^ n›öP~}{;™i™°êöžæ{ ¶Ñ QºÈ];«R¢ 'r]œÁ¶q Š¡h’f˜µ/‚vvLÕ}º\ðィÞIÈüÌE*æ]ÿpÝøïSÿú¢†G•àMPØÐ?ïž$Ô”¼kZ¨)sÛgõ>ÍùÖ½¿ÿN—íëuéÙÃMèBMî>ù¼¼Zë>å¼}ûRª~øŸº„nÃ×âv#~›ÕzÏKhÿ¾N?ÜÂ.=Ì Â®=èênX!miaâ€~4hÀ± 75:AX™yYûœÁÚª³øX FûDwI]¸¢â«ô”æŠÉ!οªT½ ˆö°„ùÚT¶5i8®kåX*Ò¨¿jRP¿ÀïÃJŒþւ΢íÂ&lñÑüOœ»~>øw;CŽy_s')3£0CYiPì!"e”\U&cß.ÏÃÔÍÆU‰¢dóªÞÍÛÕë°Xv,ùàëèÒ9oàsÇž–—?袼¬\¾Kbj ã'›À›3°µZÿqlËí/²æD~ùckµø~[ô·3a¢Á“—Ú’¤±Ð‚èÛÕÄUÔÖC.ràÊ¿ám¤{ž¬à‰øV¨fý~4‘?‡{ÏÜ—ïÿs’^Æ×³x<ŒïÌ`qü×׫«ùßæõèÿóK¿\ÿŸûXýóÖÿËÕæK?ÿûë•ÕÕÇõÿ/^íü×Ýw½ýC´‘w7Ú±³Û^?ìvÚuãÔÝý`²Â˜ ·ð•ñÚÞlÿk¯Ž¾AkøËZÙŠt€R»»‡@9sˆ§Í^Ù °ÜZw£G¥êæãú6¢¹ì¶KWÔåHÊà°ßêlBYÔ5 ƒýPˇ²ÕìÊÇÅÆÁáÔØy„µ׿tzeœ«è%•ÃG¤Ý¯ŸÖ£*¢‹^R–Û.4^?z›žÏlj‰)ÞV6›B®À¡Zõ6k=l?öL ëG:²içŽh6Á%w“Îâs ç»ᲓË„#|=›FËx6L5vÊ7Â@…‚ÈX .5¹nS7A(ÃʾBD5þÅ8Û)Ð4E£#:rª/‘É äœöGÁþJ¸–J ‰*êŒ5ô >F×+ì„E_]Ó06äŸG×hiÅ4®°_ÎÁ@½˜†š—öÉá5>ÎlÓcC×YÇÁyÝ Ó)¥Ã1ºcB9ȧqŠ@Æx¦ñÌ8ÓÅxˆ'I<* @‡®,Qå’LiÑÅLöêy…è´60/ÉI9Š5äµ7{B:ÞŒùUž(§¤ì@De§*]/wx+1’º¦¨ÅÞŠ¥zìõôÔ³M7ðËþ²1¹<ÊüÒÁ_:ãar'—©÷ëþR],µñ‘6®‘ÐãPÍнe)¶`ãÓäôl¶|“¶Œ ÜNãyØÇ.!kYÇG¯ý{ðœÛûpƒ,ÝÆò»‡¥œSd¸™?Õ7’ô¬ eR#SäŸHgÆÐ•‰Õ]'˜+l !äA@¶@D†­Ät–ÕP¾C…­Ê[&ü‡x¼4•j¢œÝÕ䔕范SɳÑÕ•…‘Ãx²Gè$nòÙáæÔ¢Dr´ÿP]ûv"ý“™ˆÈ#R¦u\gGh¼ÎÈuÙ–T~‘ž)˜¸vcs¯ìÙÀf×8@'Îe$T6ÅÀ­D#ÆJ7wÔ‡°òÔ­áåˆàãÖÎÅx¨³5 ƒ¦ Ô³¥ò-è¾"Ó‡†Øõ*y¤³½¬—öˆöJü™0#µ¼I]ãˆ,›'ÖlbIL†åäu‰Ok²LØ>v#q‚ei/%¼ÖbTçq‡°9Æÿ™¥Bm,,ZÖ\WP° „È6RŒJý8ýq·Íf²Kûõ í5¬Ò'Mò‰5ùa¦–=0ƒ,Í·˜Aƒë Œ:©Fæ ‰?Ô!}ŠúZUPÚæˆbTl`/VåÕ‘AÖÃ̉RÄg–¯VŽLöɶÔ4ìKRDe®àÉ0©â5*FNjôÊ(• ~Ç7kð•¨b)7º; @–,Õ:?-+«Nr%’¦Ê…üÀˆk‡à,·Ùéâ@YÊ›Šç×òº¿:KPHÚ0’„ÛZIᜒ9šˆÀéD{xƒV$üáKeM¡£T.³ªÊ䞥RÓ]÷|Rr ò±¹{¨ «y{‡âŒÐN5Ëd™:ožÌøš“1²ï¿Ð¥üN¿EÓtÿì¡6“Ë—÷ÑôbÂbܺzÀ4ƒS}u9aÖñÆ ‰P\.­bp Ð2‚¹ìµäB8ü**ÈÄû¨}T¾Ö×Å>½©º ùb¹ðåUmÕOÕsÈ+5íäÃøšù ŸÝ\ÐjQ½±f$=ž&G:ÁÅQ ƒBI¡Qº„¡ƒÊBù~!xBP¸pºL0á;Wéúôæ…œhŸ”ú:Á‘†#êÚq’ú›ª5±©œVsU©Ë]nÝòžSù›:ôÜ“‡<ù¶¢‡½âSü# Ñ¡@<éO/ÓÙ3P—`“Ç÷O€C' ëÇ0Pø™Eü8ÅccbŸ›ô«àÒgÌäѦ ShÃ~-é¿§³Ê]ÒQt~|VYj_¤É³ö&{U±×Õ2“-¦ÏXê~“Ñè|‚yâ)ÞˆÓ;ÀGêÔ,Ð\QÂF'vt_CúD§ÈrtÞŒ¯g&MÔé4R¦ß9,ðmó‘Ô\цãWtóTÆC9c”L‹dœ[Ú„ ?þÈ>b76ßhÄ¡G 0Cƒ}G0ã +· \Aú¥ºœíŸý}rjx†„@öWñëP²ÅD·~Ê.ð¿ÿYnþ·Iä¯èS•Íh“óÌÐDÐÔÅ-XÀktº*…ì á?½ÏÄúpÖZu©@ô¸Pª¸Q Ês‹kÓ0ÓA `PLJ¦• ,š^ž“Œ; Žm×4V@[ÓASª2^”±*ýàôP},q´I·Øÿ…ÅÈTÙ|õ’ê:‘YB”q“NXl £òp\" S`×'ÃèO´ëçè¶‹lýëU,°ÿ+&ÎÙÿƒÚBùÝß®}íß›!‘ÀÑb,‡¥Ü ÂÐ]Ä05Õº6à8:…>ò†5‹’:…¬%¨Yh‚x?ÄxhÇv%:†£ãu`ŸÂ‰=&¹_¡¬+½Ês ËW¥á8¸\2VÖ¿ÕCcÒÄs®“~á¦iY%XùMÄZI´ý¡éÇa1‰.²îKg¢Êu¦GéOÑ™œÅû¨8Ý»âTiÕFäºZU*Ôµ2¿èÝN^ ûµHQžÙaðMVó’¤ÁK7ÕÑò•²ÌTþL:ÚnÛ¾Ô+}! y9M ýL†—ÑȺú­½¥Û’²ãV½Ì—“F籸Ҵ\D¸UÒH°oˆiÛµ§Þe?-ep¦¶ï¨-˜¼„¯+’™{Å•O»é POI!Wn@¼)s&Œ·R í.º–|h%c2Åü¦'3}›ãÞU@ðáÝX•5™lÛÝsÏaiÃZRŠ›v8€Rò×skƒ u%ta‚IYËR4à¢L8K°Ò*&ÄB8ƺF¼ÿ¶ü4”ZŠ×&)%!ÂĘç()0¶RG%ÙFcøÃÖÉÏéûY&ÄFŒØP—R½õàÙJ™tó§2{ ½[ìÛw¹¥9ZzE¨Rñ"ѳ¨ý3¨&8¶Dx£ô7WtðZŠNa÷OSPЗ(!(ŒYseÅÜ-_àîEÉ4¡Ë§˜BY\â0ÛâQê"ÉÿIJ4þ÷³3¥elî5˜¼Âx³ ]QŸ“£…Þ}]½Èº£6V™1kÒ§Êš.æ:ÐÈû2RŽâ©VK€mfgÖíênx²¬uç˜ôcò”Ig“ kÀ¬;|JÝ:ãcPÅpx°uÁ+äKª«V œÞTud=) JJ¾<´á¯ÿ“S]|øý¸·ÖÃ<´üAÖ í~ÜE3_øçã~M«(ä?øÏ&üÝüp´Ö˱ÂÝü„ïѬñ½ª‚Ÿ‡¥úIÖÆÈG(8Òæ‡ß?á4T|Ýé®íýοÈÏø{6˜­Ããºxón{ëýÚåy>úݱûXvS!4…Ôˆ73JøBp¼¾·¥pŽ®§î¶ú â{ù9»ç݃ã]å#õH}[_;ÞúFÑÙ|ÃÊý‡ÞÑš)(¿«ÐòÁ4Än×qçxÝ'¯Ûì&ÍØPÄRw†A¢j^ëÎÀ¸qw ­Ë’t§š=?¼tºGû$Ÿë¨µ´±¨~ ÓŠN6âò± q¾HKþž Åjð°óþ÷í£ƒ“Þ]!ˆ!¯ëìíuŸ0Ÿ¤uU¨`2d÷¡àŠ3Nøá¹5VøºšÈÂ~QvOÉé©(úkÞœ²©Çчß;½£­×ˆRëÚòð[vSº0eùsà7U°(ÓýpÖg~²;ÎlåÎÙãž3z^`%ºç.×ünÉfxù¹M-08³(î=hßýfü^<ßÚ‡C857è1ôwÿ=—½µãßéóïyG )ýÎA9<9YÛÜ<É©n?eŸö™¡oþé,˜ã\Âä<À&lŸ+ïðØߣ¸z¡É3Þ.s í@–8yU8ºÎèÏšPÅýZÑ(­–ðN!ƒ‘IFÚŠÚ¢¡héJ¸_‰õß§¢!¤i(쫞ãý¾B?ìµZ ® hØ^«½‘šhÜvp…†Õ=’å}»ŽSQ‚8 \Šºµ^ÁNî Óa‹¡1nSozí:¼¤Iê}%Od÷ŽfÞRR­¢?¬?]Nô#½ᤧ²çßN úCÏ,C åAcî¾$%qýT^¾™Zù»€îéêI×øŒß7C$ññþÈÁðR4 QíTÏ!ó»â•I0˜}qÓ”BŸã`üDÿ;F»V ¥Ì,ƒ<8 õ)YÀöžaåtð-öksØ! ‰Ìs­ðoEÊ]¨+~15‹Ôq)™ ä0eì”ÙSµV4´ME! ¦ÔëEW"qPnµŒÔ”ªyGQSVKeÒQf†$äF fQ°²ϸR˜J«B”´bЧ …ûÌ`3Dxñ(®GwÖ0Þ~ær´<ŸÆÃ%E—ñÙgÁ‚tVöœMÐ<écòáJ­±Â“L¢,n·fͪMÝ)s¤Ç1bUÍ1¦«8, ǼNwåƒ}P:B'n‘ÑÔÜÛ2º‘@S… T°9W>^L@pj©xÉÜ—¦Fš–C•xdÛ=kdYì:î„v=oÒ…2vº3&{rB ‚¹e3ûÐÜ~Õfüéc ¢!üÉEþä:wüS¸C æ'{ÁxBV¹BqcÒâ`eW`y~*»ºpÒ•ÏºÍ—Ž‡«%´KÕW÷ÙÍ> ÀÍÕǧ|¯?¹ˆÉ]ÿ'&.´ƒCIÙ?ЗêOMÔw~žŠó/Ä fo}èÀu÷SE-×¹ûæ9ð}ÃßklBq6š‰K´|KØ´ÖÁq1”sRŸé]ëGÛõ½]]àÊ[¶¹½•0Ú‹-µ“ÒcÀêNïSkPÏD¥%šÑ¨ºfÏfºGQn8tÕb=b¶ž{ô)«G> Å•‹8:ƒ9‚nà¡4RXP¹01Kph>eÑnŠÁÆ$›¤*ë!Ù‹¢4Þ2ÉŸRgóiêGª*[øˆ=÷V¯=>aRf P· ”[„å®Á.U6æxˆÚ/& C3Çׯ»èèͱ„Æõ36ý 1µÿNÿûúËÅäæžS€/ÿûù‹ÖSþïÇyžâÿÐÿû!vÑþo½€Iö÷ÿóå§øßò¨ƒzmO¼~×Ýèuº*Œëáûí£‹¯â0ŠïðttiÞ:õPB×§ðÔ¥žÿÚðÔVðQ7ß°L/<¿:ÐÞ#†€æT8‹E¦Ý¤"l)Ÿí†v|ÏÄÅd|3»”.CX—|VÖªÏèï»*û)ü—Gs·“b–„ƒg6-W4„s…ÉKÓCKFƒ›õO“!z¿È«áÞ;Ï]ÉxÍUŒ×[<¨Ǹ3ñðz<žHGÇþp:Wq4Õ~hB;t|¨[â©u+¢É ”ùÈ ùWøû‰~û¸aouÂïÌVµT€Šš¸(±àP¢uÑ4ÍóÕžg2¬&ÕEÇø¯}ŒØéÞÝ8Ø;.9n7–®5.âmÍCè„Ò}غ£à¹5÷; —[2o}TëVÿr'%ÚÊ?iþ¯’~†N3²,~Gÿò1T˜JþPÏôÚ5g›¨g'~‡óôx«—Ý{¶dµV`DMÃâ.³†ÿL§ÁÏœñÆJ-ª,­ƒéËeAR31{e+RZUƪéˆÄÝ ª4öèNiµ˜ï°S©)',eÊÎýgSžTóu¢ÝÁ¿Â£d6Ä2Ö F9boK:ðŠs‚‹^~ûy« hâƒY¶¾íqÎËÒ0%3†àŠø8³Vývyý^'ŠA›N¿Í&:Ä-\ç†Sv³=Y;7Š)ŸÆ_°"Fõþœ ‡¥–ü®K|`)œ¼é졃Å.+‚™æ°ÊtÍ–½bI×,¸ðËÜÊÿçi}mñ÷×È.¦ËÖ ü·Ô!{ŽÝlKκ­–Rö[»ìa~áÃt®m~–†\ìfBÝõ·ÃkÚ»ö~Ø-Ÿ‘§qW4<ÚþÞ$D_£œIhd΂‡Ý†¯àÂ}Y€ÞbÜZXl¤ì.Äñh ÈÞ¦aÐ …¿–›ìÎí–霚Î(E ,Ñ^Ó´—q»fîgØ@ÝòÛ×ïÔ×.eû6=!;•ÅvFÎZ¿‡]¡z½ÀÊp‡´ër¤Bÿ‰ÆÛ¸Ì¤ñ»yIË„ÆìÃÐø¥<¿t4€= „¥GK.‰_zl¿ÐF%H¼4âz"ñ [\Qhà߉þÙ>l³†Z‚Ñ‚¦qÍ[¿ê4FŽ.A›É—d`Ùž~£Ètò‚‘\©{ú­*§3s©27Ÿ§êr¥o! Ó×Ñ}ÿƒÊØn2Nd(´Ø#¨x&öÚUŸk1QɃØrjor¼ÉöºöÙx.µ‚¤‚rÌpoKfÓxx^ÇÛÜ”'ã-¡ØpÊÑR˜ý5“³Ïx2-+Mè¨íê“·wl¾­¥0ÎË5û%]«ÓÛ™<{•ãH¥eAä*G0Ÿ9rÁÃÚ|A‚²œsiÑßqdŽÍQß½’àLÉ¿»I›cÿusÓ Ûþ#hÿÕ^n?Ù<ÊódÿõC?–ý×íþÂýߎVžûûùÅÊÓþŒGrïÖÞõ:Ý-ßûÝÚáÖòd·Uîù¯µÛ é 1Ä è¥?ȼöåß“Y•p,«„e\¥<¯ôzÅäêˆiéÐr‚˜]~@©´1=#™éÈ×\ÙU[ÓD!Ùµn2þ:ƒÓHtÖ÷ásåÜñÀðÃî} =NtäZ8¡f—Wñ,9›Ö¬iʄ‰ÕÏ’+'¤¼m´$BvKÒj(l!6Ã]ÀµÖl*·,öõÄ4øÁW˜Ë¨šn‡CÞb°ru¿óðŠécÐËÉÊú“Êezûæe†Û¶âbs†årá8¿°Â´e×cY„ÏeoÊÎm,àöä.åú„†*ôW:?Îï•cøõS6™ËÞG, ¯*T©¯¹&þýhCøÀ%¡*‘YíN©Füä6ôX}ÿ;í€û+{ÿk½h­¾ˆ"XË­••å'ÿŸÇyžî?ôcîµû‹ïÏ—Wüýßz±ü´ÿã‘'ºsÿ[_Û¬ˆãýµ½=ô¢?ÚÞR·?s¥éÏ¿&ÃáÐ%°*//w½ aå]êÖÛñp<éÆpwD5‡s9jê+Uwü%&Óó–¦Íƒe_€lá¦Î˜*á "A»bÖÿŒF˘ÈøQâfÉ?•‚}ã ] Œ>„€Æ2@/3úl¼/s‘!Å`ã™6ocŽyª[1i‡ã |ËÓL‰¿ÎÏ“³„óN’Z§L †Ö×£¶4‡Yº}þMe:’Ê’>ƒ€›”L¿1Así:À‚NÉÌÀ…³ÓšÄœ}”^9£ÖC˜g6•,¹7ä©Ìž–‹Òð8š%À<JËÙ ŒcNj‰à®@9`RÐåźó)Ë¿9y‘\ö‡çV_| ô)KÔ9%Ä, „†-´ØDð&eß]\wK¦òü¥ìÿ1>Œ¯ÉŒ²Ríl·–+´JªáeR·f†¢Ö¡¤'”鈢SÌGl¼¯îS¼™^ÝÀ$Èؽ_µÃ§1z{Ô[ìvÈe:””l8žÂÖû‹›í\õª­9 Ð%¡¡%‹;˜§…2_Ɖµ¡ñY£p*@g®•jEN”:Ðdh÷r3¥äÖ^Ñhå)f+ÿ¸¾z­N7~§•æŠâÓ5Ô‹~ÁÜŽxñ·¾ž:÷¿É_yÿ{þ¼Õ^÷/èþ·òäÿý8ÏÓýï‡~¬ûßíþ¢ý­®>îïÿhåùÓþŒGšîýïîûó¡»n">lÖð9½µwoéßCRîm’ºOÃ`ŠŠ×·Èõ±Ýl}ßH¶v=I†¨%l†\â±ô„‹ªÝdÂýǺž§;*㜛R#·%ÿâlóÇìyÆu!‹¨pÿ”vúY.b‚º#mâMp~&#%°ò©»Ži­Ù;ÊrïCÑþP\Ä£xÂ9¯p=ŒLà8ùR÷µ!9íŸ&Ú™ƒóQZmô¾š]ŽéWº¶ÁY4Å·¬Rz[«õ`kðßaúÖ­rsÂ Š¯>r¢JƒëU^-‘óÕ¾øÙX^ÕxÜFÕ¥¼Ó ¿B_êQí!U9=8oLÿÄëÍ•ø +ÌÆ²öüŸJe=võÌë=aÙôÖ…£»~˜ÝuÕÛC§·.œ¬®§'á7g¾ä×s/WPÙ9p¡¤GPr¼,3˜ øõ|BFç›Nößü0#ôÜ&ÖȾ²gÙ”@*E–ëU¿MVƒùóBJbajÁgcý0rí+à2’z¢:¹uûNŽÏÏÑQyÂÏèXA¿¦Ìȱ‚îPp¥A=Eëñm3gEá’¾%2´Ó‡yVÒ†¢N#7èøFñª¦>È$ÝŠ'¢çižÊ9æ {mÜÖüÐ$@éù±ôP?††:r‡úñŽCýxCýØ$@éè>Þ\DàŠå´Øæ·´Q‰[Ök*&i¾¤¹S—è²²H-Ì—ú:õÓHTàù¦UE“þ÷¦2:­ jA ÛÖ6¾ß6ï·ñ½$J¨.{ƒÔ Koã‡K©¨BnÙ´ó†)ZG4Ĭ?ÿ7Ü ¾àxI0Uõûkx7Çÿà=ƒàðÝT•‚a¨È&ʈ^køhó?ÅHóJ²Ô²€Ð÷—£\0u.òO›)Ç4Ý%jiÀüÛaEŸ †mùbuã‹× ú^0š¥ÈFÊÜA |{ÈÑô ÕtUYiªY/bÚ.t¥ÈÂy¯ã[N饢ïp¹M¶®™’a“Ѻ¾u*UdÙ‹§¹Ú(kŸãk! IsÔ‘‹[ï=/ጇÿ¾ö{ÖjØE gcTÏäåI¡;Ÿ ‡óéŒâ â…‡ÁeÅ–ã¯ý«ëaLÄ„Føy%"¹¯æÑÆáŽàÓsQ !FÕ—†ž]ÑïªÄ*–ø K¨í\%9øß¼¥ÿ³MÙ+©·º”ñ¥e‰è¿ë­.倸!«©ÿó@¨Fúî‹‚ðJ< ›òõÉ}rF±Û´û©\NãIr‘XL¯pûÂIüý—$†´Û%kJ> ÛRnúÄ*N¶áÛf#ß» ÷°?é_a4º|©Ü§­£ƒº@[}þL Ž…8f×Ö2æh_[ËÁ¼àåcÌ…M‰Mæ½½%³n½ÞÆ,Þk{¸‹ª´Γ-™ƒyröYÊíP¤£ ÍDE´ór™¾7N9 ¹àÀ"ÐY:Ùþ­Õ £äqÃŽÞu¶G³,P¼GÑÅ)ÓÖ|”œéô[”—Ã&Ä—ƒçq͆´¼P†~% FÇëy 3)2%ÊlÉ6ÞK8øÖ`\.6Ü29G©%›ÀvÁTí¤®,\p®á'ÊÝú^æp=±¡TN(ìÄx¦“oV]ÃØ[„Ë;@3yÎx¾ˆrÿ>ˆé¥J eùwÀNóorääô7[rNKúU«ž.ÃþPXL•ŠìR¸Íä:º"ËÞ* éJÄÑA†C6÷!û·kmcñc)àâ÷æ+?s$ÙtÂ<„±é"Ž£×S×p8(vF±ˆ†Â{ÌÛD 6Cýå,]”ÃnIÆó)yQQŽ.BJÓk›½X»,Ñøïü׸Kp—UÑÚ~î{Gè™Sq›WKüuçØ¤ k½ÎA·‰l⛵c±¾µÕï·ŽNŽ:½|^ÿ§ç‰ÌhÙ1â¶‹ˆm¥û^5ú¡âJ4™•¥|V²Œu»\î…hàŸ°À`h÷w#þR:[+«b‘´·a&¯šNzoë‹“˜’'Û?tŒAEˆ`øû‡{°:›H8‘K9î­moIô¤3æÏb‚‹(ÿáJ5ZGKÌ"t(—¯fü̾º™ÂÎd&A2öüNëéùd¬•>/kÅÔ‚'0hÿäÕ£n׺֨qé`= µˆ»ÛŸõbÒ()$¦Ù›wìA—ø2ŠQ¾[kˆëŒíãèÇ£ïEÿ»òÿ푞'ýïýXúßÚý…úßv½¿ÿ£öêÓþŒ‡w»§ÿ=èf럿¹â7»‘[+{ñ~Rö>){ï¬ì…uôß ì%…ͽ(zºß—¢õ^sE¯BXÑû¤n}\uë“NòÞu’( «‹©œ¬9Ê“Šò!T”Çhá¡þ¤2HçûÖhÊí^t™´‹˜ªÉ'ý¥;©¿”8_Xs©ê= Îr'OM´ö;QRîäë&kxK ?é#Ÿô‘eõ‘rÉ,¬‰Tõî]¹Sf+çhwlE#qh[G¹ŠE& ôçGW&ÊI]X¨ê=)â á÷C+ýßõ·ï&ÿ÷Ê“üÿqž'ýßýXú¿Úý…ûeµÕö÷Ô~ñ´ÿãáÝîéÿðD~w¸w ²‹© pëøwýI¼Ë›µ£µ GBˆË§É¬mëŒÒE4EÉÚÖ+ w1…ßáGq6¾N0töÄÉ*ê{_ÌnÆ ­X±4~Á†ô7Eþ¼^B‡¨ÁŽ) žÆ^­ekšŽ¯ã³ä<‘Ètzm‹zN~XëNÂWâçw?˨ïï(â2Të.æ8‹~B (¼§ ï‘â%§ðÊîŒQîan¿þq‡¤g¨&Âù×+­Î¸uö³4Ü® w̓[:9YϤ$³`wÎy–i êb<’YîæÖ4 Ýcøsÿ:þSA#E8;Ã> ¼u Öž K§°S› ë‘Ò-­+\&wYdz#…à:Þ$U*«áX©p¦rK0Q¤è­ßÈ֛ )=¢{Wê,擵 úbï`»³áRɽãµ}l'­Mà×éV<½„„ ͱ ꜅MpüËVÀQP8° æ‚gâ©íXáwlÕpµáXE{p§N÷x/£Ç+Ù=–‚ìié~¶Cý\É 4j7·šÝ“çw¥{ò<Ô“ÕÛGwÚ@}Ö_-ƒ°ïÿàš¾—ûûÉþ÷qž§ûÿý˜ûÿCíþÂý½h§ïÿÑÓýÿQÞíîý³ó¾"øº¿AißëâíÓ­?|÷ÐTþ Xp7˜çSmÌ›0! ÂM€-½€êÍ.¯âYr–ޏjž¾XIíÔ+pM¿þ5MêÉqF…*†Ü†cjgn0§íGcÀØLì–®ÈÞ ³«öÉþîͱ.t}³)vGóÙeñE^ƇˆÃÉøbÒ¿º‚›I]¼›Q]\7[¿>/–$„n­Î Ìû}#ã÷ÍŒßÕcò¢Â¢­‹Óº8ãäauGãDÄñWLU‰3¦&\ö-Oßf½5yMmý» ­Çº¤…¬ÙëâõýcÝöúD:åMvL¥Ïëê7Å3±a~z ?mÀR߬Y—ÔmÈ¥õÚ©3_›WoéÕzcÍ{åÞ6¶ê3±é6´ m¤Z_ò¡é†éNx¶Y™÷ (‹ß'lþ?~ ·àÿ[«­§óÿQž'þÿ‡~ ÿÿP»¿pÿ¯¶ŸGÞþo¿x¾ò´ÿãáÝîòÿ[‘ÅþõZøOôÄÿçóÿ Oå/[‘ ¾®|îâä:ÜÎã)kâ"Lö‰é·+¸L€«2)¡áùÿ™Ö÷Í/ȃõ¿ì©2ÒÎ;Ð=œ·l†z8:އ˜½^0¯+G¬6½Bß.¿^ ]`¯dƒ+­z«ê'ô•È®}žâ%XÄIº+‘vš7ëÚàÀn‰N"ê Xç_bR4¸hQp¹“•í/åNœ\Aý³³9å7Am°8oÄ|x=§ýÉ5Mèæõ .‚p±Žo¬._õ¿á-1i ¡ 3Oá-\làŽwɳx8”~¤tûAt‚û"0b­¶ÑX¯­ÿS\&äJ8‰ÏøÎLNQø:M!Y“ÆÐü>›ÀÍ„µÌÍZÜ(/5ΠΞSœÍDnÕk€ÝBùY+ïÕƒ/<^ŠÊ)ÌzK¤DúgaUqÞ'X˜—çøÏø‹Æ•60.û“«!A‰)A‹½ÌúøvÇ=ƒ+'J÷ß1òåôr ƒz¸=»Œ¯eWïýÎX2“uAk7ku&”-ã…• E™ÿg±jçÁy³¶÷:¾'8ÏËÅ:fàYÛØïÒ¿˜šhóu]àG½º8Þ¯‹Þúý\ÇÚÛ£§zanm•þÇ;Éô•ôxŸTÜKú2¾ùš~hèÖøºØ¿Öˆï¡j|ê­«bëªToÝ16¦ßÖD Ž3Eˆ?¬ïü‚ÆØªîÅ^ßHW]õbó5w Õôù m¾®!ŠÙ^; [G^­ÕLp/­sEh{9ÐÖ]`ç‚L³…‡ÑÙpŽî¦H ô+¨öÊ8=¤`㶪f ÷xûG[&ÝÀÁ]€Fãû €ê$Ì:P.û1­-"ùW×ãÉ È¼e×Ó‹‹x&Îçèq«Ou¦™¥fù£â¯31D– úTš q31‰ðüãé?bNþ3GµFóÞ@éþiÝŸ-@Æv9d,ýW##{µ1¦·ä4~Žz~ë ÷÷rúõ­§aÅ#ÿ;ýó¯Œÿõ¼Õ^÷/Hÿÿ¼ýtÿ”çIþ÷C?–üïvÑþ_YVVýý=ÉÿçáÝîÉÿÖ?UDgç`%ô(Œ\<öéÃ~§{ˆ¹¸áoîÞÁ^NÎÅ£­=, ;ï©Âf5‡[@x±ÖXv¶mç@éb±“ƒ£ÝºèÈ?Ý× $ÛÍÖ÷-’`kדd(¢åV+€…*#Ç YÝÒt#^ÕËùÆ©Áé—S޵î/ªÇÎŒó XÄß!Ô9œuÚ CEö¿¿GÏÓܨh^ iSþÝR#þ½u7ò® <³~2b1j2ÃôÀ¸&‡ãñõT&!QÒ&\ói¬ä^çòÚ.º•›ªJX"å±gã9ËSbc-/Fðwô/lOŽž ©Òì²O2³Ž]Š•À4ôå„qƒVýä¡­TúâìrœpJ”ÙÍX̾]s›4™WÒ«V]¦G¡]¤Ž^H1ëF¿“©hõár2¥‘PØ)É”ðÀ¢ë©yo 9§óóóä,žÂ=ˆ®?Ví›K˜ 1!æäOûWŽ‚º>áZRœ;–¡ž lÇߤ§…rVÏT`ÅýQoUëô7ªþo]ü(Áȸ·R0X’«¤ës¨+9”¬te­%n©++×e„º–øí•øÿÁ=Ý´&«M³bÍò)Œ¨è4¦PVpAŒûô×î¤Ý‹t1U_\ZI•?ª8cÖœãWë^V_Ñ.þ£ZW`*`›b-9+xHSH,é®*@}eGj©ÏÍ&S6Lªc)˜×‘D¶]_öþ•ìý«33¤Òp2¦ .Û}o‰ª©”A¾l <@ž2ÜõâùÕ5"δ‹K¡5©M<ã:6!:QA§pŒ9¡àT”sјv‚ Ù‹Øs‹Ëþð¼1¾ŽG¦I’fܬ«Ý‚˰ЯŸþ¯ÐÄJÝþÅ)üÖF@|¨\McÑÿ‚N;Zt]·½–Lø8´ŒZ2sw‘T‘’dJãVZа(.&qí̈Àiùz­Vi=‹ª@¾u[ô‡ÉÀѺÚîÜt:Ÿ0 ¯Æ@„´Ä… 6r¬®”,ö†Ì Ia°*"ä ×™âP·q”u€†‰«ã8'M±ÛÇ÷?­©žlùäÿX« {†ö#€}êÊOp(Ç(XÇ+@§µYÞ1’S î›ñ5‚;žõG0£VK¨xxu±3Šaîï_WWÍ2z)ýŠÔyNC«Ð98ð†pöÂ@kp€ÄgŸelÐù&j ½;eÏ0D "R-ÚpÙÞOÆ—ð†Ö‹{ Æ£ø¥]ð•h½4Âk šÔµÐžqiÿ+‡™8d¢ sóImÎwhð<ræÏ=L»L‚<ãL2´åÒfœªµ¾¦ ¸ý.ûÄáj/2í&˜àwSqÃø|æt™|!ådɃ©<‹äv šŒØH ‘¥|ÕP!X™},ô[»êM®æW–WãOÃøK<œþ„Ÿ –ô&ÒÔ“$žt0K$ºPõ&@ŸN¸Û¸óN±±ÃÙ‡ÑÿUÜi¤'êd˜ ‡ã°«_bà8 ï0e´Ž{KŽ[ÏêTž#t‘Å9ú=Ó 4ÃG Ó^‘„UY­«Æ P38!îø>ÆÕ=¯‡°ag: î>Íå-fÓ €ðy5& è&ˆA´â‘Ä´d«SX®8šÌÏ“™µâÐ’î'0]%ú©6|F?g¤Ã–‹Æ>cl8û20Î Þ˜Š[ååX 4ˇ9;àfÊŽ­6ùÙˆ¾•‘g´þOÆš_‘>´laL…lŠQ™§Y¾ÉåÛ@\Êpf+êì¬Ê†‘ÙyÐì…‹*½/ñÔîO&샫@]"Çò;_"Å ÖïÔç—¤©ô¦çf¸ªˆG"ƒrø °!𨧝zÒ÷ EAô¶kÊÔ’fgðv°Á Ê•Ñwºþ&1š<ÝÈÇ^ù^{Êl8=Å& ½£%íìïáMÿÛÔÆ«˜ôÉך/ ,'¾ž&CcgOò…rØu;f’~ºN¾Œg?) ûc8°®œÁ­˜¸!¹hæk8õ5§HÜÄb`Ékµè?ÂqÑÀ¼£¿_¡'Þjtõ³º˜éb( ¬©Y€H]@Ç tP”`"~ÀóÛ%&äêPX\ò`ð-¦‚‡†Œ¾}ÛÆÆçç µ'ÜÅ{=ž&lßÐ2W%à: GÐavršÌ&p­U=nÙSކ¯;W²ãîNÓíV$»—\ŒàT´oy¦s%²ã çôÈ? bdœnÝü‰„SîÈ$áÆìRƒa©Š:Upl“äâr–¨yùkÀ½ö!ƒ=Ðí£‘!»`éžZ%§ßü®r6g#À Af<‡wCÝÚhé×°Ot®œ-2ÒËŠ…T†?“dò'/~oXçÉÉ?KÕËòøqnŠi=xÇ™ ²ãüÛãrï öe.y‹*8t¤mŒÙ©zÕ‘B}¥­ÅÂd)å$R¶fG*)CÊқĦ%}#™gRÿ£ª‰\¤óÝŠ|QÍšhgë%¨‰gæ*äÝ—§°8§çߤ ^ÆØé’hU«(uíÊ/æsÄŸ+òKÕ¿Õóþ*îäE ±.³ óôŽ¥ÛºlÏS“ S†ŸƒQ¾›Î1¡ß…•WŸuNÄЦ»àÛØìÒÓ×ô~=P³X÷¦1 çÄhUFýÊçjx¥Êè?™nUµœû³R$£Aü5-꘥(˜‘€z‚x¯fú88ÓñÁ4ºÇŸNéÓ$öi€Ó눟qq°b¿Dá¥Ûö÷€…=­ë°¦Ëk\ŠI²ü/>&Î5‚³hÓ&8onÑrZ‡2æÒKÚ§hjÏ7ƒWsãj9Z¹!Q˜óáØ«/O¸üNQy:cæ›ø°«ÒÈîoj¸œƒ·‡+·Ä<Ýv&W´§ˆ:dwËt|å/ŒA2%¨ðû"¯*•ijœ£tDn®„·›fQ#IK³8§QêP<±Ž:’ªJ`åòíƒCÑ–È?¿^‰e¢ª™ãÆ\=Ym£ ¿äèVx›b š®8H4 €WŸÅBÐæ~†ÈIÜĶ iA |覨 ³Уº5Ëécâ œ§Cbs„ raྙOÍÁ}ˆEh´œçÓxÒ8ŸÀ}{0üÆg”Õ‚!öÍX\³fZéf+ý*I‰Q`dbÄs\èuµÚä¢%‰&Þ0Ç:úIìRrZÛókfëë*)”I_ÁaucŠ@º ³¶;å&¥g·cæ!ŽÆÄîs>ã˜ØLÆ7D@-ù&Ÿv?²ÝÐh/”¬×wÐJŒH¤ùò U7RÆH€Ý*rK1ädË_õp^“kGcBÔ © Ð+U©ÑÂõ„¦ÀZ¢c˜ÓϦ°(vN.Éù!’q¨ê¨øtuQ–è„X=•ÂLòîÌØ¿žÒµs–’Bón®J¥ë)Õ5ó*f2ä%^! ñÚ¿¾žŒ¿Rº,˜G…Û &‘’,”ÇuÏÆ0t)réIÑ&ù¸‘pLnóÊ©ÙöäVú?×Oþ_[kë,¯Êy•x¬›Ê°j-I{G‘[æhÛñdz‰Á5¬6HoŠ×ìcÚC œÆ ‘ÑÉ+-¬8Ó ¶"`E9i,Щ¨T¤r'*ˆâVab¦“³ùEôYGJÝa ·1¯HŸ œbŠÀ)JËôº7û¾¡§V±84­¦@w Ùû±8ö ûñd+]ŸäŽR 4Ö㘓ê ÒXk$f.zg…¶›VFh f²:O©b´âÔ½\˜@* ïAL ‘IÏ–@öµyÉÂZ‘¸Ô#:¯+­YªzùÖ©gŸ«¯`•½‚KèÝg`à–ù.­ `|OÙm»¿Vÿ˜5Äި;ŸŽ^/ÙO»ÇKyûgƒ\ê„§ás­š¢W†‰êèpIrÁ@F¤¿O® VC%…û«ÜÑ8íWïþ)òâ²½ÁìD_Ë9†bÒó‹ýÙžIÕGÓÙ‚böö[uúqf0ŒKØÁÜ`‡u±ûÿënÀŸt´<7±†Ú°“PY¢Û®@&“610=££Ö T¨š;&ìç¡y't¼ÐC~9ïäübPN€Õ »HZG‡é¸¡ÚŸŽ*Q”©r©Ö—„Üà">¬®Ý; Ó‚À´<ì<hÇҲQ¥Çß☟‘óÓÇÀaM>wd²z—”…ñRˆš²ƒŒßý.Óã訮"ØU„rÅ ½ÐèÏ’Žô×–5 §ä>:+í³|·ûšÎ°Ý=> Ø MG)gpÜGvË’¬NŸåZ»¯aþ\›‹f¨4ÐH*DnÙ(®ˆõl×Ç—=¡úd2ï@•W¼×ôpŒÑH|ÅFÓ{Ý®+[^¾±Mç˜OAÇš±¤+QVlݬͿ³D+C:Zó¶dO)Íb8‚®7kŽ©²“‹¨PO×e“p‹þíAqRCÚJ‹c*ĽÆîë¥Vs{«ÉvœŠ>#é^UxÖã‹„ŒWðœžn(ÞK É¢9=Õý]•x£ƒr/HO›UΪy¢tc7}–¦>l.ç@Y9-)’ç”RDSIƒ¢2Þ¢ÈØ ”p PÈhóK]¨tO½ðc6ZŸç[i’k•ÈDÔ­‘‡ým)ˆÛ#HØ©Ï3ðjŠ»5\Ì–Ùú©uªŒè7.ÇháÞ÷efÛi3=sÄânØ Ìé‹‚­‚½I£Ø>Û$R1ÜÂÆxç,\›„YûÉáXåÙæ,‚Vw`V]Wjý¼»ô%övÏc¼ªõ–ýÞùèþ|Ù~IiPðQ7Ü|Œ 9Ö*î¤YSÊO×X)îs'¨ÎúÚ%ùüÖHê˜áâ¶‘wv¿^é*¬=Û³†ÖºÝÐÜŽ–š‹ŒÂ¡µœ¡…†`vþÍ$|ˆAܱûœ¿0 ئƒ)·1Zš2_†¯ë0Ï¿q!g_b€:¦æ×šíÌJÝT­n™jV­"„§Ûiù”9·™ôzÍmÃ/l {)}a¤ Î\ N<‚ð‹ç‚Óî3hSf.¯­bPí»½5®ðÒ~)Ö“ÇׯL4਒µ"oà¿isÖä£à•4 œ,¿¸'K’Og`c±wŸ$òÙ‡}Ù]/„sŠ®ŽÌ‰õ»º½pWK¬å…²éê/EK-ÍÑ–ŠŒ£QÀgyóãx‚BbÎ<ƒ‘YwKrì7%9ö›ô¢”wóŒI@A˜ÍÉcéÔ–• ²DQ)Ö] QÙ â™XøwFý×"©H”#‰2ƾà(­òßLrºÀ˜…½ð -ü:ÊqÚâÖÌö}ðËO qÊ!™…Tß wLR®¿_Lk>Ÿ)Nèûf‡3v±äg{eøÙE˜Ù¦µ$ǽ8c{®6Å f M™Ù쵕 Ô:ôsæ,ƒÈ–áXÃŒ¤Èâx¬¤X”›Ì¼Ô›ž"GYÌP ›¨Ü–S,1 ù›Ï RßnËÞ}‰„§RýŠ,?A&ѺTØŒ¢+!¶šNÉßGgΩFŠIâäÌoÈáµ²¯òøãxŽf¬ ‡Êú5ˆeÀ3Я†'¡ó[KŠŒlF ÔOB 2©QCUR3¦Îb{Íд—9ç6´W'Íã›þ5‰(‡©×ÍÙ9B:i¡iYxP0ß³ÓAÙ:ÏHæJÔØwÔ>éBQ! V|Œ¯B ‹Š‰³»#‰ö¾V´7§xäC÷6|·¾· »…-¸³w¸ ˆË¥t¹ªÀ,JÐMìdÀ´5Pií¹SRÍ­¦mÄÊÐ>UX®¿¼òj‰Þšº9!A!ÃPÄV†j“Ôj[Y”îû‰ôÞ±·¸(›À-¤«kyY9íØš¥DcjŸá±ThÖÉ)Úa»ˆË£ø´@ß] ÓöèA¯Wð*‹ú½T{šR@(ècJqH>w÷–Z ¹‰ ,µÌ»æ0Ïݹþé)vç£Æçç¾»´EáíNãx„þA³Éø›vØ|»ƈàe í-‡{ÒŽN#ÑÅ_Ýô"³»Ø±– ]Þßrhʬ,vù–ß>úæ§è(t6ίF _yÂÁ¢½ w@ìÍá‘è»%!9ã°·žn|çX›à3ˆñÔã8Èo½¼`6³ùµ]ÎáT€ Çì[`S^xMÑ·ü) ®n¬ëßç’aÜ'T§ ­kñ–C¿9]ŽÉ¢SIlL©Áè ­z·Ê®ÀýÑ7é·¨Þ·4EF– Œ¿¹ädìmu¤?ë†n(¢¡§‡‚çt6&6oBDÁ#ØÖàÌ≕nxÐ'Ózùâj>œ%huo«¯1µ¸_uìë1O˜iz›¹îö}$Û*Àø±ò€[¾…òLªÈ‘aaœ´¼vÖƒ6íZþjÝÚðB¨µ(£FE /*¢K¢M³ E“pîs®ƒ%ZDÿ÷™ÏÜjÖ¾¾ãèVhd87BvüƒEqÝY¤;ð¬BV©WÏ%¾sèÑQ}wl/:¾6Ì Qz‰Q/á° úëàä7*l™ôìK¸Ÿ Æ­ÒÁì/ûrè$]ÕUé/ ˜Üåý!:fÏ.¯Äy?º¹ û¶¥‹ë¿k\=” s¤»»ò}º[¹TÃï0}ÛÒ¹ÚŠ{ºwuO géZï)ËQùY;î‰t •IJôµæ¶{EßÛZši8Òšÿ*tÑÖ°»l©‘6òÁv¹_YåÛ~yà´tk-ÕZ¸î‹@Ý㲕5ªL7y¦eíïUÝXÛÛ“+´"~faÙÏuÑ2T].Ïëöí<9û¬‚±Ã©2;ÚÅ9p¼ ´V– 1]@M<­ãŠøµnuègÿ,ëÿ[¦¦›2g³ í…²xæÛm§ÌVä=ÂStæÕáßfçmË ˆ÷°+Ë¥ñ†ê:Ñ%˲š”2×n¥ØÆª_V¥\²܈íªýƒeÐpm $´¨¶C3N¢ºÄÖQFù†ëŸ`ÊFF jlü×1rÐxˆjüѼ’ZÿåÐ •јùó+Zsz¹¤¿4ŒÃxÊ–`“å±3“ 8ױꨵ$(³­gààÉЂXÄ;é>Cs}íŒ#ì‹ PÀiÕ,<Òôd‰†FûUK·j,ä 83À”û(– Ë5ìW›~+½_å盢méªn ¤ê¨oáZ+Ëi3wâ 6_nÚöÂfŠÛ [½sÔ!þtJ&}¾$ûæ?¹ÂЬ˜LöF†œ·Xy~Û&'xêC‡àȪÐiU‘¤òÿd'†DwÓcEë"ªÕ Ò]?àWÄ º]%b«¨ˆÍ%‘zܾærx‰Ö{dÅè=–K¿&^ßS9¹ï7ÐüRTjn‘î¾ë3Òy+«t÷å5ÝmCjTÞziLN¢^Ê€ šâ‰oÒôœ·ÉršM'K!7tU‚Fe—xžAÒTB“ Ï;èŽÇC82(I•¹nÑÚ½žŒáÀ»2¾çéx6_©“Ç(…$¥šMbËZ™uËŇ}¤rAÛLž§iÓ9ML\¬0nhŒcm˜2ó.¤Hˆ%¦<¦ŠÕ€g0gQŠ` !Yæ®5éül.É"¢þ’Í„¿­Ø·Y•òŽÎØ®Rà&)O´örïuj‘6ZKö‚]¢uCÖÇ 8 )çŽwcþ¶Bs¨q€w(@AY9ü‡Õýúf(ÿâ-:»ß4‹­à†ð’(3¾Æ+M´ÝJ’¡º¨ ˜†¦¦kÉaºœi\’=BÙgªÇ¯ø³ýövÝ/£’hæ¡îìÖ`7ñ0Zb†k×)€ wUë«)bú"À€³L-ù‚‘¯Ð¬“ æôÛn‹¬_üŒ† 4올MÌšU^çÌrÕA2ш£äBÔ<ö¿ˆäYÔX…«_‚<:WDÖ<½¸Q2asy‘ƒò_mÊù1²òé·È$á"Ms&à(fÉ ózè‡Gë)oÒ«O™c ЫÎR”y8”ýë‰ÝIù!ÚZÍõ>--öo£pÍî2«(öžÚ¥@¤Ürƒ~©ÚëMI_å’Ó5©‚’}°Õˆó©R3©ÅIÚFD?`àªYž$#ÊÔ«Q‡ö¹dárÎJ:°„èsŸ|3QaÀ7ý©TÓŒjÕWÁVí³¾]‰ã\¨£€0W Ÿ„¡c:þò à®rõô‘»„óß 7V–OžB¸W÷%ö€M©¡ídðÂX¾)Dð‘H×êº/ÉÍí‹ÁÀ Vd='D ChÊcPˆÇš?GòÖå:Á׫2ÝoJV滌U™o9µMÙ.¶¤¾Ó]¦\ÃEË!ÀÜŠéR$h¦ÇF,ÉÃà׌kŽÏÈÕÕç¡üàÐ[îÊ/žôFÑÞóÛ°’Jþr7ø¬÷¢Y?S4IÒ˜(Ê9ÞóêîtžX’€ ½n†¤ÃA®SFur—íXØ¢•îŸLæ”Sq ü<ª*r»ZÛmg¾U—L*ÅòâÃWz@¦'Ä×U7‘™ÀšcÛxçÐWéèøàƒîªá©ÁrÝn­Ã _8ËÁ©Ô€…¡“Xð絟93¼nÛê*+aU.N¢{ʼnï!µàDÚÀxA‘“S;Ëɉ©oMv¥¤ÍK†ieùIe»=meË#¹=¹þ?­¿ÐÿçùÊ‹ö ˆÈÿ§ýâÉþÿQž'ÿŸú±ýf÷íÿÖÊJÔö÷?Þ§ýÿïvßÿ§U‘?ÊÝGš½9À«OïlßžB¡æ“ÓæI$ú,§Ÿ®f R63€ñ»záÔIïžE<‚O [y÷´Œw6Íi Œ-~‘Κnësq¶û¬èÅŒ¾ÈDfBV ÈÑ ñmgÿ{žLØ ë¹¯ôîœ)QQiIQª9„²¨˜(- B(žŒˆfå‡o+ɨ**0ëøw ×Ló§Ú§Z Ïoá½Á’c´Ò¬AQù^âgK²‹7G8â»Ú¼.漉¥µ6Œe.f—¢ËaNÆ# A‚àíA˜—(§¯1þÀW˜g{ ?McjÒ²k Ûã§<šddŽñÎÌÉ8êêlO EW›Mß@”2(N•ÛÊ$Fˆ@ T²-¡;$âK§_±•I3ewå 5`”;fA‚ÿ¤Y»çk¦ÒåLbÆ:bÉI”Œ ?ÉÉhÊ4S¬5…Æggs²ÎOú: Ó“³N(Õ'íLµ³ 1³Ù(Ö)½hä‰e'pOpiš RjÓÒ.Šš>¡MÌÖ›F¡N+‘(‰Œ©í¤9£ÞÀÿHB e•ì‰{06HrŒ5Ø/p‚¤:¼"*}•™áÒm;£“Ž3šÉžÇ™N$æ&Ä2¨–˜N¡‡d3!ìýõp“¢0ü €6œaþvã5éVP©âR[ì|‘ÿH÷(MÜ­9ˆï“Ûôwÿh»ží¤±¨óÄ]RÑÝÖY¢À!å±€?Š_—bES¥gh|‚Æ1’D‘›FE¿ØÓ/ }îä®Ðzlws4ùÜ+»F*ÛVåp' êp¤ÓŽAë¨Ð$Y›œ3%è“r—!æ/àá…¬so¶­5òɲâ­ˆê®Ox¨_1L¡|eýú– ‡è'ÛÒÛ†‡›Yš,[U™Èß7l˜¸ëQ­Ì²BâktíDZÿÙ7w™ݹñÊSt2¾Áïooy—h¾öêבeRkéå”<ì­ùØòm?&U?ä¸ýZ>ÛmØ€‰R5ò’Ú ui†Æ}ßdíw8²¹1‰*D P4Cfj#DhåkžwËÊÁúü6+ü»¥.µ­+hºÝï‡ùäJ0fµðÖ7 XY-{†ØÇR@°%ïÌ®Àn˜‚tŽmÿÕ—%ç;©Z«55ïÞX¼ÊXØ«N5kfm°»Ê[ÛÚBÏl;gfí)Us–q~Ú³—57ñù0ìÕp²fɳ[IMÕ!Þ¸&Ì[óå¹JJh.Ž9Y·åžv)f¯hØ¿)üÁÙ]‘LkÛÑ3Jn‰³€ «}ï «|4d°`D‹hÝM˜ÿ.ب«ÿ¾ŸøŸÏŸôò<éÿèÇÖÿ?Ìî/Úÿí¨µ¥â¶žâ>ÊûÝ×ÿk¶¶ÛÊdiÑDz'œä9xEAqƒ–M<Ù¤ôõh°«Lp4óæ<Ê>æÆú¸a}–ErÄDÚÎ »»Ê¶€N0ähTÔΉ¬öia{„ˆí–µø]Lc¾ÊÚš”Ùø"&y$ à*Ã8Ì”ŽC%V‚D2CuURæÒYš\šžÖßbë7ýo–‰Ô£|³?b]ìK¥ö…ÂêlÌqÜ|ÝôÙÓè~§´À°‘¾I¹ºÑ´çk˜}v´’†-Â-íh %p±Ún—g6GŠÝsüÆ£†6O·Ð¡µøN·-0Þtï›b%ù»ðŠNõðªÄn«D ÷®·€VÅ}(47CñÅ$í6+ªƒ(ò•ÖW§@ïA —~6é'Cl¥ÛØ­†”ÔÊìwGÀ¯¡ª64mtJŸÓŸúÊ«{Œ#š2ÒÃm´aˆüq,NaM|ž²ý Ž,”eögf¸d±Gv× ·Š{~]Âk5üKeXñ™FõÛPíäâ:QYZ¾K…>ûþu»½…4º´•fÕÖ fªt‘m˜ÉäÚÄIîj¶z±À\ö‡ç“(UZˆÒëa2 Ò .Š»`4¾qH…‰séLG ¾R:=ÆcEÙŒZ#ȧ“Ó" ‹RÊOîþÒÑJ¥”½¢H¼}f±ü|fìÈ`‰B ª£Ï–º{DDYQ„ ;uf*ìÒ'^_nÐeeÄ¥†c‚½€zguØßgú2È[ƒö¯¿¹(ØuÎË⎩žIMNô¹Òk¤©À—s»HÿŒßgázç2’»dìýá,Ƶ¥”*w×°uxe:+ïmT®w­Z-ZŠ Ç”Â¥ëX„L4÷ðbì~ 'Q¥¾¤ PV·£ØÞ¬v{‰eÍré³2A²œZ½rý!!¶È Ý KéSLémûƒÕFÒóÒ ß­OI Ê[',—^À¥øzúRXsG?’‚|1Ú|Ú¸Ö!ÓÐÜÎ$ýÓ1u›*((Veσrºt[†Ý†óh2 ÃJL[`!ðð^ç”bÇÇT³Û6•“jì—6Дª´^'ÃÛí‡qj ›‰£äº»K­—]¿vè&¢L“X³cP°(÷±9ŸPà;²P ó•>œ0ö>U*luú·£Ÿ}»ÆK£\€ŠÍº¢VÛÔÎ=Ü/Ípr/3káŸVñŠÓüÛ?¶08DÆ Á`|Ï#)®H(‰ö̹Ú» Æ)’ºƒ¸¿jᜭ¨¤߇Õ“ Ô-l JÆÞ§ð¿n$àºØêl¿éÉJÁ€Àû¸Ñj.c`xÙŒ_²¥T*t0U¡áë/ø5'”0Éí Äu½ƒ^–0Üâ÷éS&¸R&b=6 #ó¨Î[ÔÑ¢ÄvþO?í×Ån„7ÇüxÀ¨æíB¥ÃìÉØD8  ÿ_{ÿ„ƒ×.÷x ºšÝ.ª£7ÞIÙáG36§—àÔýò9ý[ÜÆME*&۶㣌§r¼±¶w†n%XY»ø·G½ïÈæ-³w›·U¿®²yÓÆml÷—ß´Í[7‘"øNönÑ_žW[ah5nUA‚¾%Ñr€ÁQAô,8"Z‹ÚÍ’tV\50A£ —*ù'pÝ,ÉÁo•?«2«Çq‚ÇÏŸêȆà ٕ‘l*Ó;¸ë¬Š-Z§ß"6ý÷dV‰¬˜®HU‘ ?£uîFuFD4ç“kã…ò™e\ö£bÖèwcýd•è5õ’A«[†} 5ஃ‰!ê:ô(Žt){;:¸I0ñ׳øzÆŸÆ“‹þwê[½SQ*«8g½OKìK2¹Ùô‰JÍEso«‰ð‰Ì®ÜŽíZÝ ˆ+1m&DÉ88ô'ÒÖw~Ä=µÌwô2÷ã.²ÙíÛH™Í®ä†™I‡ÅAN* 'Ýek£øwd<š_3BžPmmÊúB*¥ˆ¥’šrIvÿà…ÓŸ|ÃÔgC8&SåÎ™ÈÆ3×;÷ó†áZ¯ÛT9YŸRƒŒ¸;n.Ÿ˜…-¾§@˜-FÆ„6nYêva”ãn¬bop$Ï Aw럱êR¯¤7Æ.ŸèKv€ò¡]ÑÝ ï Wvw{Òò ÆÜy0IxFæOƒL?® õþixÑÕ€»¼©VÜýÄf»éßq_B§wÙñct›M°œÒ÷p' Ó &lï…;é@£oÇš… ¶¹×Û^dq¿¿‹NÈB³œŠìyȘ§Յ˽Ï3¬ øì!¹&žµæœuº†'$ ÷ÐYü#öÌnðu‚š äïú(¾>EÉ5BpÁ"OàslÇš“úa7¢/±rÃ%œöáŽÉg4Üã*xÿtb÷˜êŠø)ÝÏ `,ˆ;¢Æ±ÿ+Î/3ˆµÚq©­†, êð$Ïïï¯Oz꜆øÍ!¿A6>µ…ì‰Ç«‹úNuRË[&^dc»ª¿—ù;Ba„>sÝH{]õÕG¼Á=Ö”Q,z9µc?Âò¦îŸªqìÖØÔî9¿gQ­Ž"î¡Q„Îx‰ßÝh©ƒÓÛÍ¥ŠedóxÕ’Ìó!W f³1UMA•üîš_ƒÊî„ ! Pp`¡Õ¯Ëþ«PŒÔ`Ó-âi† ‚ ÀI‘ø`'¶~£·k/"§Ä‰z™¢VVWC½LwÉîv ² Fx2u…9Š„Œ|š›`/odcòG£oPÀ²Q ÒçG6´øAVO’ñ|*uFÞΉD%R°ö@è–]‘öj<Ÿ(%óTrôr>J+½D¥?Ä“à‚"Æ(c8Ù³©R‰«>*§Gzu=ûVu˜<Œ)Ù(‹š±H•éÍN:1 Y™fÁ6zÚ…ÎcÂêçr±¾ðäµ¢À @n¦E"‹ü ç§û2ÚTlL)g\1r ·œ4ôô( â^˜ë½nóBP%U©È-µbJµ­Rm]jWJ¡´|Úø¢Š qåi´! vlN>½`Lf‰v„JGª.Ö";„˜h´ôÕ•ô¡uó&ÒoFñ×YÝ\.F¦Lûgi1x.íNô›•ŸÝÛA«šücC£½¹·W…sö1Iˆ¤å€hÝ9vßo¤ ˜÷æÅ+ë³\T!ÉHPBÅÉ'S—,e@,¦-J#àŒb⸆ߜH0™Q„GceË¢åRc¥Õ6&ÓáØÑÐÚSsÈÙ2MÍðln†.jÜ‚%¹°]gß¶œo‘Ü/³c–ô®~£k]ÌZF^áo/{…xÂçþ¯¦cGhÑJ ->Ù‘oÝe•>äyTø¯¶Bù¢pϽ!D8§ZDÕØ4Ñ«™–ØÜmðúwK¤ƒLcëyRV=¤´FÊCŽÎÅj(˜ÄAdê…7ª•…G•1Ó饤g‹ ´ÊYÒË0¶Pf(ÉÄ#jŠIÀ 7L&u–$Hz\J—rüv}–JÖZõQ»KÊéÜÓL(?õ]R³Èb-J¼°k¢vþìú5Åý—–%hÖ0‘YÕeva?êNû/A¾Ç°-šE‘ñ´ñ–Së×EÜi£×öo÷¸þ¿íïÇÿwõÉÿïQž'ÿßú±ýf÷íØñí•´ÿoûiÿ?ÆÃ»Ý÷ÿmgøÿ’ã¯ÒVjÏ^_ªld*Ð=X?9úþ厾Äà¹n¾Ùí݇§î±¬v²°§n›"óN3ãòj¿ºè£Ñù9úüH/¢ qpñž°‡Öîi<»A×Uµ‹Fá3qÕÿÌŠr¬ 'Ñd|=A¿% è;Õn+êž1’ŽpW>¶ÄU*Ž®´®ÖžÆnèS |ªßÉÄx…}š”G“ò±É‡µÛ8ýÖ€ë AA R˜6e‡Œ°¢eSHâ³ñ –€õþM\%Ãznͯ®Y\Û?EÙÝùpÌŽJdúNx¢Øñ,9k"I:‡fîh|Õ?»$£H²"é‹ 8×b\PjϦóÓÙ¤6«£<-tH¤ƒEcöÀ‚15S0Ä0ù̶?¸#>4ö1Ä~üh>n4~]¦Æð[#¢}ÔÁp”ó!¹?œÅÉ—þ)‹ï'CìÑeüµ?ˆÏ’«þ«©ªoÔ@÷`™¡W[,>Øwk´tޤç=‹'WÚYpBc¾K3Qi $'Þqâ‘ º‰mÚÉ‹v`2¾QÂD¶*‚@`v~Þc“…òz¸hÃnÁŠÝí*Mé]Ô‘Å£Ý*὘CÐÎN5àçç -œ¨ÙèlñŠ?Ð Ýõ=.l<±Yeò~sd¬jŽð% Ú1ÅAÉÁHp›Ž·9OìªÙåÓCtœ»¤woálÞÖ¿W:¬f…&༠4Å•ÆÌfïŒ>“f‰Ga»0Ø ní$ê:5–tß­ú]ÓnxÚÉJ:øò¸%¾Ùχ6 Ï‹Ì8•ªÐÔÌTž ø–Ã8!aŸjâì]×ÈñD® —š\ö¿Pºßñ sì…S õÓ˜ìÉü êI³ ‡é²&Ñ’`Ó ?=›$Zœ\×\È"W\X4‘ç—ïàÝñÆK¦ê„µñnœ°Áøaðä½ì­—þþ($%÷ãM˜ãN(*À*K±ãLM}—p½±ÎG&ÓÁ ûŸÃJÁcø&™ÚÞg²ÿxÅçc¹}ÏQŒy2.„|Ê{¥¥¶â ½\Q™­bO, Ì¶Áȼ öꃟp&›*Ì,ºmÙzlº¨Œœ½!ß2»¢½Ï-7,,ýŽƒ„ûÈLB¾Êƒ?`Jmj¢âÅØaÔi9 c5 âPèì§P­íÚÀN´»›3@®&± Ey1[¹'$}=‰¿à@¥ïÙÙüj>L^Î7V'mpâ®õávlMÝb‡Ûq“ëë#mׄ¬xÍAž»?95 ÷Ñ>²HÐ…ÑöRtïè/ˆ¾‚ã$ØmEìëÑÚÙ=îmí}вýü²üø04|÷h?ÇÏ-–Óê¢Þ{ÛÀq⃃þoõî;Pýqgû/ðÝÛ]0^=ùúí>¬¯ß|òÚâ“·[ƒžÈÊ7%…’"´„âb ¨hö„˜ô«†üôGY! †ãb±›IR.“‹KŽa†6ÏxpMúgßDåNUr4jõL›BkvNe½êk_FƒŒ˜F¸’QaÞpðF¶‚¶³”´ ¿EVÛv8~’6Á±LžF \–üF5ýµ¡?Y6?Ø`„Ì•±úÓCàlpÊÆìt<›¯®Æ:Š^E´i6‹C„+í?Ë/%€(#˜ÂýÇdÝRc§}›êâNUÌU:A˜•3Øw†~fCæ¤$ «7mâÕ:$áò°_é±ÿ*#¡ºt{>ÇS>pébf¬Ou¨Kxeqù2¬@ëulb:„µ6ª3˜šzøEÌNÔ’,PwV(2âÆ6´H¢–)íÈJº5hë„¨Фœd¶”:ˆwŽ¬Ì«k‘„‘D€ÿCÞg|=K®’?¥ õ:Æ2°Òðbd‡3š)y©k[¡‡v ‰q=(ùDªØ¿Ö"ä`¾#œVØ,É¡îz„Ï#ÒÛìØ‘Yí¼ð¬¾©ð[#i³Õt]Gù;pY( ÖõÅA]CÑ‘nuˆ¾Ãú]ƒ¾‘¹y²XRĵe×”ÕZË~©(u°WiC‚Ì¡Ù8Vãé×QúuǸún„”(”¡©¥«Fªí 7CÞÙ%Yc-‰; çÛØ¥UÑ"œm`$…†èz‚»QÑ©wªY@X'ˆÆm'¶å{Ã¥§€];åVÙI¹`œ¨ÍÂjDN‡‘óL8{§a;nJ§–,ÏLãÙG®\Eq—VŸ§Z] ™Ž¿‘Ý4²zé¾Þ¿Âö<¶<žCÆpj¶CcÛ.#išî:"§ê—P—…P½R$i„a¹_2¦/8TdÉiñ{Æ‚›è…nÒÚ?þÖ2“õŠzÆ=¢Û†PÎMõ‘P›p—€+õ«†áãkâÓï36Ź‘3uCAœnb6½äÛèÖül;¢?¢ètÍeÖÚ|zÏ.Ç'-+Ù¯~M®Xi4 TfzÅ·ùAM“+8)N hÈ Ò`J˜4–Ê¢2ŒG3Š[Œ²[Z:.x™ú(ªüꚩЊeûG¥BiÚ6v*Ë˦ ¿l¼w•«À ùLƤ¸Üh Ú¹ý›L?lÁ ©: â‚Þ‘ ú&vnŸg çØw(ŒøräH<´lìœÃ„b´#[2mæX¡mÙÃþÕé ÿ{G§üA±€˜(F É|Ȭš ZK†”/¡)m¢ôÜ‚sNú4-h²…ÇóºÅZP %ÁË{£µDbÛè¶`ÄÁ„B&ÝÊ&]çtþ5”)#ewˆšò¢òyèì@zN°g°-SBáMJ`~I#¨]Ï£Ú¥£\I¬÷gmÉ<¤0ÐfM‘Tµˆ à iK3¾HÎÈe’zûàh{­×~Ó~kôgäÿ£ÈßdG+è´?O¦—RS¤”ÍNð´Óߥ‡ ŸÄ„ž>/ Úôɶló•h‚ˆ›¼]±$*×’¬²çýá” [e—Zvj\Ç'½7mQ™Þ$³³Ë ¤ÑnY&G6kÝ ý†Í7Ñœ ÑMZ»Þ›£­-¶æüÙÒþÚ‡NOÅY½êÃ90¿²Lߘ‚¾´ëG¬D"Fó£ê©…s_6xw$C‡ÃoZl(;B¹ˆ<,…$ÊBK zÊ•°m ù_žd‹ˆùÂfF{Û -¼±ê¼QäŸvöLIRgã~v0#ÿHb#%ü”¸Ù¬S28:ð~ÓÛ[§?ïðÏá¼ã¿yi.)²ùÖÑÑVXü-¼-íw6aæÀáÑÖ lïä@€Ã¤Ó}¯£o¡eþ‹úµLTúãC«ë“T.¤@ÜÆüêgØ]½¹ƒ+:ꥉÕê=˜TÝSHtcMfêæ„@IÙ4(á¾:+ÄøºŽ${€­µ¥¥¶¥ˆÏˆÀŽÕäî+vP‹[ò«Š ®ÃšÛÇØ!zÕ\¡/l€5¿ËT¶®ž¸ ÄÁº* Qù‰¾È?VQ¾j²è‹y²¦òº˜ÖÓ‹…ç•l1CY£-¥Â“V$"æXÌF—Qª™wžP‘Äé‚n™/ÁÙÆá]C…Ž VšÂ¾¥HŸŽá.‡ÁfÏôÙ?µg€t›]WNÔŠâÙá8u|ë„¡‹ ¸r8°ˆÞ@=dJŸ!Ù÷L;þóŸOÿùÏï.Y´ÍãÅ—¸nRÎN/É ýÅÈiÃTå{«¬ý‘†mÖÁƒ6ËeÃÚŠ4=il«ê4Vi¹ÊZ l…4‡Ûî9è¢A%©þÆ‘°Ÿ,;ÙßDß- ÈR®Jê»â F£7Có9c:gãÐXÃõŽÞm5wx|Zj Kéq¦˜Q§F†Zg{!µN3ZÈ€jíN>ãY¤ä±ZX ãQx¼yD]^p¾¹DÞ4£Éd‰‰~½Èšé†7Ó’3픸%ž?KK·šíFzÙ,Ý}ºÙêTODTȹi²ò–É×åôr­v6 ”V.8 ±h’¨›ÕèJN£*ó‘ÀÑrºÜ äWJ5ÑÙ§3Ú;²:òèNÝ”ÐJâ…½Í`'ÿRAa+.ëpo‚ÂÍŬրìF·Ã^šÈbÉ7¹TiìÑZÍäyŠ%Š'Ê$Ü ƒ¬|tÀpd´-mÉl* )ý¶Ä$¾BÛ7Ç3›²΂‚é^Üý»…ëñé ìr>åèH§Ã&•$~ètBéÈSã ʧÓaÖš;1;({)¸°¼—'$>\RìÀn‰Ž§œY‚s¦riûµd_ñ6ONiž¿`D±9,ÉÕu[áZé³ùGRÏã0šÝƒ^S®ìÛLŒ'ΖŒþR‘³eòµÀªC†À…¨êgöͰ߸Û4¶©¹šœ¦÷«@óé¥âHä;F¯ äHä;F²®0–â‡³Š¦Åð)£MÌ7ç—%æÚ ۿǹc±¿„ЮŸ%1–Ëc­¸7䥯îÖƒôœgÿÊÆ°ŽÖRËV]\ÊéJn{­,£+Yäêë+àÓwÎŽñ¦õèžÆîD"rÌ×>02ë@ˆ·Ê›ˆK’üdÔa¹ïndúžUþÒÙÚ Qêž!,¼ÔœõØÜBHÊC-éQ´ ØÐ§OʯBw¿ö)«ãÒ›Ç" în+ÞnÜýc ZöÁ °aT¦/ò·ÇðþbÖÄg½Ãn;î·B Q!nMa.on4–jŸ‚ø ¬™ÊÆ­À)eüfV+|–×µ«ÜFÝ^`RlFôFËœYäÇðùÌ‘& O¦]2¥u«À´Ë>þ({.[~´E—ßÁè—[šyµ~ùžÌÊ1ò÷.¥I…Íô+ü%Ršhùo!¥‰²5b*H‹ƒ_Z°„4AJ tºdÞNZÔ )A'*Á±^}ùŒÝFiÑÑ]€¦HXŽõÅÃZöE+•i_™Kc ó¿ŒË^±Gd]È~ƒÂRœT©; 2Å>¹¼tJTRö“Üpo•©––É…%ž ¥ý”œ‡’VNÙÝåN½¼‹ð8&­rø÷ûL˜·‘­‰Òâ5±ˆ„M”²‰Òr6Q~7šÒ%Ö‚Á\®x.{ðã.‘ñ“½¶Ü>y»²=qåy%»”µT‹º»^jEçw:[Zú=Í~‘!k ˆ…¸³ÄQØÌÞNîx@ú(î&€ee‚7`ÁNÍiyt0w5”Wm:1)œÊÅ ÏbI²³°Ö­–#&ÌÆlYq,? e 2K‹fM•»hU_‹Å´üdS±…E¶nµ[ÍHYñ­åB\~î*ÊÕ —èš&ˉuùYD_ôò\éŠB©®(¼,Ùd÷É]¦Ð]&(í™_ñä#ãßÈQ¤‘YJ‹~£Ö‚n2ö;Km¯ƒ¿Øw&вåÇâûsŸ‰¢¿Ä}&(WaѲÄk;_º¼nKȘEé w¦¤9m—›åDT j('rNAL¿/)xvuÙ³(c¬f—fâŒ;[› 6׺›M#ë\P¬ïî„úhå1™ l¿ó„­£³\«Gœ­¯À+¤—_N~©ÈS~©ïàqó?=ÿnò?µ—Ÿò¿<Êó”ÿé‡~ìüO³û ÷?lú(ÿéiÿ?Ê#9/ÿSATæ§´Oš Ó<ÏCf{ЬlO‘ÌöÝc¶§Ì,O:çÂq²¢LQެÏmªv^ùŠÌ¥“Ë1°Î õØŸ/¡VÐHã«úYŸÛðYÊeSYÛí+~ržÊã£ACµÓxvÇ#Në !ÿÓT×&"ñÊ·Tù¨jÉéÕÎ!ƒC”ørvQ•„|Ó[[L”ó°™;Æœ’Á£îÞt<¿¸œ©Ð_Ó+%¨Ñ¿%³ù€R@b)ìÝU‚¥Ñå”V”#KËøël_ÅÃob‚ûVÀœsH—yó:—¸È–|Ë•ŸÃæ„$‡Š{ B6M ·¨y)§œ®Ü)¸=…”|Ή/‰1’™¬™L¡™-7¡MØ>qœ‚`ë\Jh9ƒ½'`v‡åoèl¼‘Øúß<;¼ú§ã/±«O ÖÛÕT+›RÍ’-°>€Põ!ÆU ܶ­þÙ¥V~XºŸ?ŜӶ‘±t#\a=;Þ9Ч—›’ \Qµtv6Ÿ°ÃeŸ%ùRæ<±´LÄÜ¿S8±ÜÌÀ ¸}ÐÎø¦ã€ ŒSP¦c…;¼òÜ9š¢ÁÐVx³€M§t tÖ>|%–_Šéü iÌù| I§ü‚1s¶sXÈóI,5)dö˜6¢½ülyõÙ¯¿¾ükõ-èFôl¹ý’)²ba.ûÈ®œ“û­–Ã鈰³ó™ >‰ûØ+çñLu·¢2_ ’R­ÛÁì̸ô)E3Pã7ræ–Ÿ?Ãþ¬¾û¤~…Âç“ñôUß`pJæSµ\·'ý‹‹Fï†='ý &¨>›Ÿ&gÆŽŠ³K "yš sÍGÔÖø%vaçÏAõ [O¾ÂŒˆ:¡s±Ò‡,GY÷#Ü?¨ ˆýÑ^L•ll¾þ’© z¬Tí¥³ÊoÃA»¥ØJó¥¼r+À:˜ι.£ðÎkuT“­¯o±²ló5üÿm×¥q1;ш×yJ;¨z¼±÷zÿvºïáïþÚÞ^Kþð/üÜÊB"¥¦#G#þ#k󟕺Ȇ±··®wë›÷¥ãƒßëˆ}ŠQÇ€·×ûé¤ôvbô «d‰Â#KÜüNþÖV¿¹"xU¥¨¢Á¤rÎ3O€þ.¼o«¡~X^n›ïôká6 †è§p`%ûÀ|/j=£"ò-·¥¿"/m ©;)¨¤†„Ý ”ò "5†ºbƒ-㚣½"KÜ”±ø#õ¡ˆÏ¾QÛ”ú®£j8ßÛü=ÊU.Úm-0ж=Ðvù¶x ‘hËêx -=]Ãù.ÞÊÓÉqRÈv}FšÉú_ýÉÓ#a·×RJ—uéïíþŠÈÙHýZ¬€—­ç>^ÎqüN¹r”l º‰‡8#0Úù¸ËÙAÙ†_pc»®jPv‰Þ>sÂCÚƒX$(ŽL ÜÚú‡L\yñÁ2¶.ÒÖ>AÃϸ}½|¥O]AÌ®qí¨ªwù"µÛ\»-k·Mm§ßÊ'Qàj [~˜ä–‰Öü.\2­‰×!Ši¦ÈöJ9í'†ëù¹^Ä3`Û‘C†;è4ÁC­½Ð¨ n<ÿ½7mjcI…¿Ï¯¨¸qãµ$$™naû,㉠ð቉ûh@ÇBb´x™8?þÍ¥ö®nµ/3FçPwUVVVVVVU.ƒ“!èñ O_&Ÿ4”[¥´ãÎÇdü› ˨¤F(µBVUº¨-´YÀƒ™^ódûR Æ_h›ªŽp‹‰çDò@Ö§ƒ Ø3-0‚ÞiÀ–‡vXÞ\»B¯¥VX϶ïfÃÑdüL6êRvÜž™·Ü &P¬RA/c˜¾ a”LÞàêÝ!’X w¾¥ŠT岩#-…žËÖì¦cDžV¼—H@z‰*üKÍÂ-/îÔåHÂFŠfæˆ-4º€N☰X5zN^s•FeH-  ŠØÖž£Uý(=ñÜI¥ÁÄi06ç“Þ-ü˜lÚáf–b¿º¢-UU+AÖÁ*îÐü§ÆÝäl9øÓÁåð3Ð~6’öšo sÀTñó†ŸQŒµs5¾±ÿÝ%cXïü"«a-Ã"ÊÁ"`Äù0Á£˜ÛäÙ.o\pðEÑÖs4K€ó¦Ê$ø 9(Qb/¶®Š†ƒŽÚ´µÙjƒãÙ0þN¹3§Ü™_.ʩݩS0YþÃÏÔ–÷Çþ”6'wdö=¾gØoî ç]£ o ,í:&ýò6o6Ýfë÷=õà@4BˆÊYÍò®d#í[ìé¦H R$Ê@ÎÃ}×ïbïuæÍ¦tÞÐðÒ´aÑ»?¸˜5ϸ³[úu¯±î“ð§ö¼Ùt¤'¯ð¼ºûÑ8ZÅËu«ø›lEÄWAB›>ëmj~¶a±àcÕóämÊñöæg±óµà˜þðá›n¢q¹¿LÙ¿!IR÷Rð‰Ê­™ Qa%Aë€Ú“ñù/~Û°Ú1Åÿ.Ö÷ ÆAˆ—“Oã‚0ÿa‡ÄÈ WÉiÛá*5ÌåÛdä|Å•lxì+ŽŠû­ã*¿TP·!G… Ú÷µVŽŽAà׸z¹ò+é©W¶¬ò-gÚÆëMN mè‚ÓÓMÃÛúñw¢Á@fÅv¢ ^–ù{, íD߸Q`²p¯½AÑš;3LÉC6¼Koy…Ýš¿Š‰ìxÖoÒBÏðh>¸_èD‘µNä/w"Å“¯7Tí¬%Oø‹ã†;¬©xz[ºá›g-ž"cýÜÈм«hjÃÞ5¯YÁ2t€ßÐù€TÃct{¶;P¼ÅZ,]¯EðÔ 5eçf2¾H©v—ëéPÇãË‰Ú :Šë›VŸe”|Y6'öÅËÒÊÙµÿ}õí_¼ˆðþÙÿ¾ˆŸìÿ¾ÉçÉþ÷§þØö¿_gö/µÿm¼zñŸÿÑ‹ÆÓüÿží¾ýï+Ðy6ÞU1$ÚQ¯gPû'û½ªØ<îÂôû°õŽL‚rnÀ÷·ŽðÊyëý‘´fÝ<îâ ôQ¯Ð݆߇}Øývßáïl8‡Û]hìmû„ŠÃï̓}úÝ9†ç§Ý=h†~eÃ(l«Ü¨G?¶µ2kÞM‡#¯GQ §>¨ˆ‰sÀÃg5¤ŠeØÄ™F¾“3[ií)e̱büŒ¶Ì+°C¯Š îr™‡Jü…8“ÿÎáä+YùPýI<+¿©?³»²UÒÓ„ }¢U><_$Ð*¶Ü¯\[n'xÀìËlžÜrT}+rD1¸B“0'ðû@‡±"p £ŠÔô‚é³`£¾Ñi('c,À:AãŸn†7bšük1œŽtA%ì4&wØ<B9$êГ42l=˜“ ß9Þ˜M“ËÅÇ:Üg¨KjEPz|IÃÙ¤ ¬Ñ•ÑÄë6µ4>bµ¤è:ÅX–3èïe]MG´;* Çe²pÀßk2fÊYå¬R]›8‚_ôKNД³EåôÿÖó›¯ Î°4¼[TÅ‚…™ –˜Ž’ñõüFt8B! ¨Š¸"!ð §NÊ?×D$Lfhîÿ¿“édf.(tÈDÕ'ÎÜŽ;b‘cȤ–ïS‚qè=¥Áت3ôÁè€Íon)ˆÇp¦â‹L„‚zö›}Ô‰U®†ÓÙœ_:•.“«Çê «ùá¿u¾lɨ ÝΉºˆÏíb4‚ë Š6ìW²Q©¨(úL…?Í<Ô +ÚÙ¡Ñ™¬Z)î©¶žf” •Ë[[ÿªY…&É’ÛaÊb¤ˆzΓ”?wÉg—d/ž»4!~©û„6'0@i^ÈŒ5ŠˆRÔ˜ÚNœÂþ¿DA-_ Ç—ª&6kv‘}´À¨Î~„•4…ð†(Á|÷(~-×íNXÛ Ha.edˆia<¦Î‘¾¤tа\ÔÝ¢Qª¨ -Q²W÷ƒ£ä;³í5¬ÆnØ Ét~3qd6®bi8°’ð4 ¶Ð:ÃÄépõü Pþ´·ú•^Têô¯ù"¦ÂjÖê-„ûmºiÕÇâW‹Qng%€V‡œ˜%ЈZú> ¸ ÉùdðÆ ÛxÞ&Ókœ£ä#,:*è’bÐË!*æž'Œí¿è, ƒlšµÙ%M«ÉCMù-!ZöØ1ç×Åß_+øðuÒ´ ºsÁVµ,;39„ŒÁAK”.&‹1‡ BÿÅH{€pE{#²|˜¢XÙõbŸ/‰ÃÕ±]yÌ\rc˜i JZcTæ‹é9p•d\Æçá<Dr7@­ÉT%V_gÞŸ,CÜ•ý÷Ã܃¡PL]î`¶\&Œ’­’©™Ë1òŽê fÜíàs)ªvŒ/lyÒ^@ËFÛ„~ß.æ¼ä²LWÄÓd8ž'×S•¢n¶8Wûçbf_~Ï&£¸Ãæøo¶AÎà¦`z™L«bXOêU2Ëàm™¼4êÐm›¢|#󳋄µQ(blèwI!,¤§ÓºÝcÞ–XPpƒBt®+†ÒeÉZ“V©„´ã)A瀒vO'ó9Hb’Á²¯iÒÑJUe™-¥µ‚$6—ÀpíÜ©Ó: ð93D 1ºvE¡æÙIr™Ð¢”g>Qç ï.x4"ZŸžÍ±1T¤¬+üJÃ5%sW£•‡×L”hØä†R"ŠØ¡ÌÜfÁ+!K öÄùwòâƒD‘®¾Ùpò¹Yp@ß?B[ Z¨Žš{]ᩆU}ËV£ÐùpMÇ“åq­ðûN>Ÿäb ÜÖÌÂ` ß]LF‹Û1ùéÎ`(GGÏÅåÆGÑ`Ø9~·4j&z’.]zÂýJ«“s(ƒŸ‹ ¨‚³» ¯aäð°YûÓdúa‚8ÉöÈ®tÖPO¯täáQ›ëÚU³©¿aª±»qž£1ïø<'cg£÷w*a<ŒkCÖ©†ùt ÷›âf€öð4‚äÖrÕ€ù‡&ÂS%{Žºy77‚ênru%º t©ýJn´–•OÐgÖñ’µhWñ Ý>ì÷ÿ8¤Û‡n•œB·ößm5ù,Ÿnò¯Ã¼3ý#˜mt‡<…gU±G78EQã„ß µxjOÜž¨m¡òµ}»ýî]U¡Éß¿ÊßMúý®û¶*Þow[ûÍ@ƒ«úx*§Î î™îœòœ–¸P°dàSËUe‰Ç'oçÑ mmÐ䃷ý@ÐW5•9¼¶ôë0€¬ò±_^6B‘e9Ê.Òɲá1Çd©¶uõë’ÛW®JEœ@}‘2  {ä{°Ziú¼º”0y½jèZçYUÔü”ÒɯFùh1„í×”S ¯´;“3¤¤«“&Ð3m¢ÎÉh4ùDÁ»Í©<ŘL>|H’;|uÇwRò(*~Á‚m“i¦>Âa‡¦öžI¯F„ʈK9äƒpÞÂÉ3t/ž|õïã£@À[`+kìSïSt–ÐÏ,/aRhí|&Öt6F@–¯¬§ÞYÐA ŸÃ£ 6kMÈ­÷v;(þ°,>6õYhÊç›6`”“h·Ëð…á7ðéýïš¼)â¡qoXäv:ù„ßþ_ä]Úð5‹~ê£2‹1ì×D\©Ø×ÀŽ ‹<>«Ù¹¯¸&þ¤º%>Y«I3Í(eö‡K…®À'oêNÀ ó©“iä Í\+„Ðââ&¸V|m ¾èU¯×:|5m¬ð%Þ5áù‰ºà빋©bvË1äq2ah#Þ ñmÚå`>P“°Oú$ãKá™á§éPÎ2,ÄM dç‹“±Œ+t7M>'‹™6þ§Y‡ðñ~ƒ¦£;±˜†äK‡»þäâsš²pR›©‹õÐ;u{Ÿzç ¹ˆ âÄ-Þï9×%O3ü¿‹—=Ëè…¬[2XòÑ\ÓËùm¾QÒ6r œs –>Y‹2øIY>DUŸl™åÉ0!T^A°¼×·ŠX œÓ5/ìõÊÈ$¿sP6õhÍCÑøÑGÐoäuè¶¼!tYs/gqå5¢„\)^ØÒC×ÃŽíI.ð†7CÙ´‡SqyÄÝó¨%òÓõ²5uó¦Î[ÉtïPÍ¡Jý`6ߣÿI­/Æ£ôÉé ‡Ûá©“ç)qäô‘Ë{•J¬‡öΧ,¬ø[¦Ø§.NFÞ: ìYßi¹†Åd/=ê †—´ò¿E£_‹ä´Ïp¿ÍÅÞsÝAÑÝX›¢F.õ4L;Ñå¿ZftîÚÿòí¿7¢õèe“ýwüêÉþó›|žì¿êmÿýufÿ²ù߈6Ö7üùE/Ÿæÿ·øðl÷í¿WÒ†³Ù”aðgÄó.ÛÓç}EPÿ„ Þ]Îñz´þÛl&¹²”wm²÷äèÉ“Î%ÆÙÙÀo•ƒiÙd.µÉ6†ÛÆ&;ae{Íl6ÄÎ!†e¡ \’ôcSl ìle{ì_ØB‡/{æŸÐÍŸUl{ucÎæÀ« îŽ 4€J|¨6Æ€Äóé0áH³rÛ›aÃJ£Ö×–«Ø:&¯2öÍæÒòb0f+Ôß”Á+žL)R.Bñ­r)¸Á;eÿ óò‹¶¹0Zù°Æ–ì<Œ- ßåZ–¡ `ŸLés_“Å=®žs»×wnu[w‹PÚ¼ÛSÛºÁ]=´O¦“¶éäW4Ô#¡d¶ø&  ¹ŸÃ*{Y÷ÌÞæÓÁ¢•:µ½rÈbÙRjÍeO–G3KYÉ8’}Ã1fÍ|[¯•mþ´-‚®ãL’‘W¦ReõM…|·m;'YÓ/dóG÷ä³Âp¶]{Þp÷µƒŠ9mÕÔ£°ýžDÐöÛ3é¹A"×oÍvñ™m½.䎟o¢ž;€Ã1Eð§+€¥l,¾©¡ãr{™åvŽ3ÏÈIë ÉÕU-eH9˜Í&CbíU²¤¼XÌ%mÕʃ´^žEôº¢8ˆŸ,0ç ’–²( ±7vLO-’Q^l°ˆt;»4–ø!=­QÔгÿì;‹å^ÎõgîT÷Ò/ãdvnôüÅŠ¦WKh÷-¹œ;W~î’®\†‚ÊÁÁ#‹w@Y%>S^sóéä‹ñUR±@À¼Dë"+×òVsiJi‡l˜Cúî‹Kîמ³RZfÐÊH+ÀAÈkWê:5C9ŠyT—/aqþ_Ä9ý“+X¡¾bã8ÉrUú"JtÝ@¦Ž¼†È¼+ö¤Ù¦kõ‡. q]J/ §¢¥SËÓçƒp•¤+©¼ËýRm0b»h}kîz (JÞ”d!äe‡ú0ëü"¦§ÊàÔžáËLO‹ªü)Qæ¢ùdòÍ*YÚ·–×€gö¹œqõû™|.ËPBí«š{ò mA›Í\ÕGm[xÄôΰÿ–4j‡µÅf#{"Ö%B¥è7Ð$µÁ? 臺UKm e¹îÞZô[ǯÚRZ$Jœ:©•È×ðlX;”ïo ‹€ž Zs Zßi‹V;GÌÒ´0ïØÆµ0ru³Äd-Úéc $‚I™É3°`¾²Ý…ÿAùŸüõ°*ö”¡ktH7ÞÙ¤Ù”‰Sà•ó±°@-/GM»^°Én—C‡“ìáÚR2m_Ëpª~ùü [înþA7åo²Ôíu€=Œ÷ˆf»”šå! Y¸ÌmÁÛðËk ÞW~]Þ[QucËË¯Þæá­‰‹bé®<Èþ÷—Uí; ¯iÃñ‰ðr@êwð6ÊÒÿ‡â€èþ™ [9àP#˜&i§+äxv—\ðŽúbr‰‘Ëo‡¸•\̼«^_ `OPVÉëè}KX[W‡i»2ƒEýBía0Z@–K¨N£ã3nP)9%CÁÊC½SºS…‚š‘A2w°lfì1ÏþP»h.D&GÌ<ê‰2:êDº E2íDNTdßÝ9@ö ÆŒeC%”;%²Q’‹V‰Á•«VÄaëÉýoAnrÌó9½-ý›-(}Œ•ßââ¤@²Qînʈ‰/îvÉ€iÌomÄi9³‘ÅÓ™×2ÂèéA¿Úæ|Rñ²7ÝÁó`;º´4·2±jR(£+óeÍ·8Õ 'Z»M])š˜ò¢5#Oí ò^‰´IWÛ²lÝuzâÐÔ·Z“—ìýÏv˜û öqÕ Où3Uê4U`#FuSEQá}: Кe¶£óɈ& ÷ƒÈÄá åœøÄa’ÝÔë-‡á—d0•E‡ÀÅ µ*3-[üÖ¶ýÕYá”ÜVo)æÓÓå¢+)§ EKky1Bl$˜äóEr7ç;ŸÉôz0ÆÉw¤'ßRGòÞÓìéôi©boÕ}9Á}À‘‘}ÀXºØO_nì‘”3Üï,¼é%F¨øìé¹Î¾nßufDðë²h:Tq*‚ï†~@[ö‡'ªm%i±rD«°R¦™Wøðkך/³Qf¶m"ägMm7ÛѰ"m.+ÛÌ2ÊæÏ³Ø¼å»­nÓ3CNÍeX*}.·Ê'h'Ñž7®ï-žFŽR—ùW“ÅO›3y2„¥{Z§Ú3.ɾ•̶˜:g ó!Øpf²â¬À3 ÷dƒ/¬ç´y׳&UNÖGÀ0õœóae‹oN0Uê9,–lOŠ=^ pž|\ë¼™·˜vnBå}pÉ;,Cþm0v¬•*ðÃqwê ßèuÖÁjçr'õŠ-Å£h=gâÞ0”+þ²âÑWîrõKjõBÊíZôd Y•6JÜÖí +Pw%Òé&j*÷ÌM‚ÑJ®2 ]xA $Q¸Î™5Îi¿Ç ?‘Úš÷›ò±µÁçÍkÿ5—œã~”imÀÃ* •°ã{ÑmÈâcƒB~É%8^9oŽK¸©ï9ydXsÙ¥$[a<)³ƒhûTëùOuHø~e³Ò+4=d\¥oûsâL-~MP•sÀÞM@XðÔàDáÝï$ýSS¯1½/¬y1åSXš§r°^œS/TÉuÈ¡J›Á2.àžS¦€wˆP‹\÷ ï.žÁ¾ñBš½¾뚊)Á$Š-©Q`'t\d6­ô*n·“˜òPÄ”‡Ê©òŠwúΛL¬Tò_sUò/Š×ÚÈ÷é“SF#€û=¹k8äª2iI¨¦vÁZ¤¹HWͯÁ’Ú CP)†çËê_×ýW¡ŽACmF<¯°¤ôª–‚:À^ªÃ°ÅÙS5_ ³ÝÛs¹-¸Z‡‘ `ÈCÉ_¬eÊôNË’qž¥«êØÝÌì`~×Ò¢(€UpÓÎARZžºg¦==c ® ÂQ,°BBK›r·Á>÷î©Δ)Aè;¢ë 7`_sÏF2¶¨´ ´WÕVÃnf3ìœðlë„>fÜB–»yzç…G,qÆ^h÷ÐLôÝ –4ÐOƒœ½R¹R£°ß™3e¿ÆwÂÏ|î¿ÉCä}t·WýŒ«EeÝ2œz\¬xãÚI0™ì ïM‘×\Öö>®CÈ2?𽲓ö“P÷óÊC‹û,ÇŽý£F—,âl*Ø·:eÐ>8Êþš™I×lŠ8JB2ŒÙ•} /´uJÞ™x ¥W+:B ÜQ2,ñ/¼µÐ¦×d¹‰D …]¡fWÕ+‰žu ¡x7g$ùÒ¨¹QLF,q §ZʪÿŽC×ôÆ”~Ï<ÊG`7ô >½Ò†GçHý…!‹¢Ðeµß ‘ZKT˜)uhpêG»æûÜ=œˆüú"ÛþÝ8"×"¦íj»œ„ƒ×"g»¼ ‚-Ë%ívS6V§¶Ÿ(WJH§6±x.^®ÙVŽÝyšdlcÞVV©þÐ<°Õ—©V_…œG~ ñŒn•Î’t»©É§|Û&ºrS¿„œ-2âŠá¤Ñ±N† Ï>u‹,„ãõk§ )²©ôC,úkÆ`àÎ;Œ{f¡”1¾Ak=£ùžÕ¼=X´­a[)·ñÈmQÚÃ'Ç`à×ÿVƒ÷þð£ÄÞX_ºÿû&Ÿ§ûÿŸúcßÿÙ¿ôþÿ勸•?ÿã§ùÿm>r9õîÿ'R)qT6œ3ø×ë§ΩÎ.ÁÙP@ È*×þ/«4*n$åœñTi[Ø^@ý™}FìEYGNÀdÉ+Û4ÕV›OÌMc›+mp9úlžÜY!•˜Êó~®f*)Çñ)g/ÂB|ÏÅxdæt•ä­Ê»Ðÿúk×%-Ì's`ÏH,2Rзß*¹½IIl±“ë舔§«XBûPæz7_½¥n¯´¡êèãÿšÃï™i¢`«:"´¼ÂÌAÆ‚à %Jt¶„ä¢óšÅÝA&f£É'øFI™ÕMÛÏ”ƒy8¾V¤1è‡÷Ѫö”‹ù)óÏš‹Ù‰Vm„¿Y\=Ã]Rb±¤<:VfRŽWý¨òÐÚ:dN¡L !^#ƨ.᢮ðE./4ׯÀäGBßAáÇtÐX|Dvdq5ÿÇqzÌ,0¾Ð²g± ¤»bÐt.Î'óZí(S×c¢ã®S×ïݲ˜ºÔU:v+böã$ñþy­< †-䀅;Íý7nP †*tcbúö‹TøÀÜÜ­^û,ªÒ¯ØÊн‡Qí¶`{Á¯éu΃v‡ð3 so[‘·ÛïNTô¾G3ic®™oo0²$Øž—ÕÔ[É”¡ù}’Ko%|¿çÆSg¨×g%ø0H¾¡0Esy.b]A¾A1ü\ Sº(±MÁíU•\8/\´Èt[7!/Á73µ»0ÁÕFƒÒ~Èô¹êÒÿâØÃÜ´¥³WâJEn´dæcþF~ñµ JÖÚGÆ OÒÓ­,X8¡ðõCŠpµŽH;d¾4ç0#ÐÁá-)Ih„«[aEB!óW3>$"ÈÍ–ql|WtœD%/£fÍÍ,j¹“„)%v PšN_¥ïñ²NM"èÜLžiyŒ2"²cÜñµ¨”‚GnfÔ5z\#/V.€g˜U~«Æ88b~±×wMË^ä‚à›|ì,¾ZSE;9Žû“É ô”âÞL“[Ð{¬ã Ý?Ôan£¾(GVˆ5Sèí Ì`#IÎ*мª/g¢â`µ _£Ú5w6ôg~Žq•_<âI|(ÇxÆìÓ3n:Oô,Ô@%³§²×¼ìÇn•د§ª¬9W¥´XÊq­q«–eE‡AmH@ƒ¡&ÉjŠÙö&È¡›^9q:uwo…‰ˆÿ©5+`ÞŸGù‘cRÕb§š§sJi9ÚAE†qÀFºËìmî<‰‹tg¯ßé¥]v+ÅV¥‡t8Ë€ä[1¥±õX—ª_Š|òì·-Ó'ëÑ¥=_“|€–zÈ&Óa|d“„ÏšÕ0ŒA Y|o7ìÙzXÖKïTÒ‹–ÜQ‡æ™.ý(본ÿm Èão•µP‹û¯Õi^÷WoÁê$aжÉ91Pû¥¶ÿ¬joR"îý(•Ä<Û=ûÌ…ÑÅXé'UÑ9hwÚ}2?ÙA[oøqÚ…íª8ß'ð»•躅º{”F}ßí“P«ýV&sÙþ Ÿ‡£!…N[5êÑmÀšwÓáÍ€¢Q |Pó¡ýƒ·íM÷b@`öa=›ÑѰæDQƒå!òÀi7pæ½J’V‰Q [ £B_NÚÒB褻Ì& lU¢vïqñ˜9+CØ‘©ääüD¦è2DÖí šYnË%˜'§í21‹i2Ik‘ä½ñy2%yÏ·SÀ~ˆT˜ëX9øî•\½ß=Þ®‹ß””ì„…üï^…7ÍýÞvÝTð;«k_n~¬3̨{ÐÙBšUÀfµÂã¤ídü´Q)TÓ²©Zæ"ïd×$÷¬§vÝLì#*dÎrÜrã¹0ò'òÅ’˜Ÿ´W¯£>&îðJñµæ>¢Äi›oKQúp¶eyÅoƒ‘ÓZ›VÈ^¢]EZª,fê$+Ù`,òžvÏA©>Nê '|rÒ¶ÁØXêv²†u@C0Jìlâ+w$"-ÿ~ç¬ä˜zÖàMySÈ[ƒo$®Ñ€Ný ”Pã JÔžÖÇîÂeHéÁlÕbÙÇ@%%Ñœºà¶Œ‹R6 ·%¬V4c=AÆ*Y“fÄÍ!c¯Ð5ã`z÷Œ€ÈÌÅeB™®Í·È‘ödkÃ2P°™A]®–>W¿”i¶>$ã”yœøëó_bMüõå/gÜ€H©ÌÃöÊÉÞ’Å $jY‰ZÖ|¿¯mÕÐÎZ¤d'æ[É8!_ª6e> y[»Lî’1ÚFÊ3\i539V“é|1=w8‡óK˜ OéŒr qJVr•½~”G·¨Øj–‡WFÜšÔb´7?Þó%³›ÉHIjÖÜ€Îbáÿwd·@„VG)Éå’ù§7—%s‰˜ …?¿™A$Ui5ŠuÙ-IRÿ,8uév§¿£®?—˜­9Ö?øjËïté‘Öî3Ì6w ±M§­ÎA—²Yö»ÍŽJב¨ï·ðò ¶ím2ê÷rØ4[½VjâïÝ]Ì ÿà÷ÛîÁiÝ%Ð;¥Ó}S"gçÐÝÞ„ÒÁAC¾€2KDŸ”“Í.n¢N($Ì CË sy =€’ï÷€þy¦K”!µÙÃ]çtYƒGçI ÕÊÁµ°™Õ~s«}B€ûÝžLúV&1ê}ͬhmCÅ•˜Qh‘C§%‡lã^ %‘ÜÍ1®†˜ã"{EéÜ%o‡$Ç Y Ý›­+®Žue%[}-'Ús® _2·â=>«¡ÙŒ M…–+,ÝuÞ€¦«ékÐÈkJÛª´EI%ŸSúÂlq®ýFth7ãÐA¶gaÅ?Pó+H{\+¡¦ ᥰƒU¤=þ[–#÷Ží>e\ñ¶(p‚® ÿ®áA„ÈërzûÈI«i]Æv]Í2PBjãÁ F½dîmVýôEYy#ùƒgG߃AðÇOM…íƒNìýq*$ÆŒï}‡ð‘ûuºÎ’ÃÀ±Äœ'¶|åCšláºíóh,Ï6‚4Þ?Æ-¨ô²å:ûe!£bWIÿ¡8DW¢U•º~GíÈÚbãôÒŒSŠQó¶dÒµH‡î°?:õ3u›ó—õëôl»mOUÒjÊÅd*#ë舤*L*'0#¦ië9´(d ¼`˜]•ý'À¤ü‘Z’~–§AY@ãÇsô}EÆgȨ¥ê¨RëN‘`¾%œò…"ŸŽð34T“”îÍŌ̳¶CZ9}½Ï{¢:Œ.›Ñè{´É æýµ?&3gþX‰Ð0¨o8-[Ö¾X÷+g‘Zs-9Oó3iJúv8l&}uEYw¬H¡„WÏ:Ïì7F8ÞÿF²ãWÀ´ªZZvìšõªæK\áʹ¦Y²c·¸ìPžSÅÅÇ® ž²½z½ `KÊÌ^,ñ‘AÝ *ð@ññ껉¦XñaH›#>vY|ìfÉÜ•ÄÇ/EÆJd ƒ´põÄÇ/)>–g×k©üº¹âƒ‹,}W|¤4ÞÀJAcSà ÁU)užN†!ÖÅqå3¼ž¡~VùÈ;‡ôUŒÇuPè¸RéjúGéÎ!%§|šI”}F/¨>{ª m°7+‰gÇxYñLn̫лÉxšã³ªÞ²wðZ—næ²·¼¨<Ê=3ßðâÎÝãPCÁ?žydê«Õlqu5DO¬¹¸Õg~£¶_xŠ¢9Õ­Èâf6S‘Ef¡’õ·ÛuÞxUßÌ<¹ñº‡ãæÍO­0úÿd 2€wCþ99ËÁÞ‰ŒÑ}\¥Ü£CŒ&FŠôžº¸ØâN Ë+Vœ»‡pÃ_‰ŒI„å;5`_iýê~¯Yúþß8p–›¼¾ G ÑO÷¥ÎA6ÆÂ×'o®e©Šó¬ãpeÀ﨓ððV[È”•&%|Š ¼­ ý9/³Šfe¿V*ýoê‚àñ÷‡ÑJDçm[½•ÑWÜ>ªI'“§v‘Uû‘¶NºÛ˜I8¼£t7”y;R:³+°sårí°µé±ÿtÄaêF”†Õ?Ëè0+Oaðù±qŠî¥$,~‚¦?,ûÃ×"÷žòµÓvŠ 7²%ŒÚ=D«m¤X-ÍÙ¯ò·Ô|Šk1•Þ&Uu£í‰Â{qþuwàÝ"[ð÷mkö­º Ã8iy${¡Mâ#lè»ù*ù.!»¦uÈ]…O÷Ï: ¨-žŽ§5™†[*}(ƒ|üÊ9dwDǸ¯­¨WüAs­Ðc4æBÞ ëÅŒãúÒçiõó°¬ÞK§Õð=ã辚qvŸ¦ø9¾‚ƒf§ "prË Æ~.Ídÿ¢ôitgjdŠQ>¤ã³ÒcfŠÈå”öåÌpÈ¡¥ß((“1Ìò¥;ØÞÛ4§ñ‡D°]Œ/(ó(uó` À>M£KDcÃpT ‘ pG k€€  F#Šy<³FY —•ûé@Å¥r¨Ôb2ƯññîšòO] h$«^ÐuáG JÀ ti Ý ¦·#L(ÈÔ–™>.ó¾]Gš¡Ïvr©¢Úk´þŸñKN‘5’;ÙÝïibIž7—L&”þéAx‡)Ë X§K“ÞäÁÁ Ôypìt9ÌÓ{ÛAéð¶g£Ó5¢¹ù®C?ßãÏüØzƒšüëWþÝíc$¾œÞ>€éw+Ã}ÓÛ¨kuW»0ÇJ=<ÔibŽù`ë =¨éM~‚‡;ð—Æ>>há•‘*ÖR¥ú-]J»U6ùê“þÞ4¶S¦@i¬ïéê ßïTз,м*VS6YÓb X»Dƒáw‰r€125C"«ÙPÙ·'ñ·¹pÎÿ?_ü(çÿøéüï›|žÎÿêuþÿ•fÿ²ù¿X§øÿÎü£§üßä#×(÷üÿýfIœ6;ý#ŠÑG³cøq„¿áÇ.ÞÍã¿XÆ}ÈÞ‚Þ#¸ÿåmA J?Ñ7ûœ€ƒó#©‰æ4E÷À>|•ûG%JÁõû%N_îGÿý¦˜}ÜÁ]þ9À$ƨM&RíG|0×c:'£ÝJ„§^±túŒeütXfÃÚ|:Œ¯HLE½£<;ö?ÃÛá)ÅóŽÙÚXÙÖû›NB!o¹O³¹ò`Ûëåï"ÁìñÁ—£2a`‹?©ú,ƒI“{ÁU-ät€ &wtû9ã®Ç®!ˆÅDÑxý¸!¼…>Ë­KPe(&‡ã(+…ÌŒ™ ëá‘ûûu7pßµ,<²{V8ø¹ŽäŸÉ‰UÍL6—¯ÂáÌunxZÙ«e1¨NÐwhuÏà×@7„”Np´"2 ˆ1‘‰í@h3kq¿­‰«x(;æ{€G8·vۮļëU:¹&çQÖ[BM„ „~ç©è…,Ñ‘HìF…ø8¾L>«†uâj÷Ë.³jjíL-’ mëzU j9^²LÓ-AÇq]ÐÁ†Za_% {á`áËb…;BÊšæNj>™؈«éä6=ûéƒu'PrÝÓ±ray¼Ã».\éç‘0ù±Íg1fOHŦßëŠG—EV"ž{ñ£PÂ?ÛÆX`Ô£ý­-œPïó`A€µAåð6é77–|”ÞÝü¸{ ‹mew/k¶ØHtû°§C¥©ìI=T­#Ðç`JäÝâ4 µ~ó˜~Dô3V1Êû;Ýí&äB÷¯Óv˜Ó.éBÕ÷ˆR&%HÌg­“5Æã’hÐïHýóÙ¨¼Çúï«’$=}¿ùns‡ÂŽwÞ*† ‡'·Ëå´»BÀóÍÃ?âIL¿»oÞÊßïùwŸ¿÷þÈLýX·tè]êÛªÁÑCÖl „‹™º wNÁ;x2º.ê]\-ì/1±lüåI§©¼­uÈ!©(¦ZÙÅ…J“·}·¡ž¨ ÔÝ õ¤ábGEÒë•QŠ1z ÅüÓD©ø,¼k ÜÀ¼ÆîÇvÓpÜÓð+ ±ÚìòÇdyhÔœô¿K›€°'¼rû^*i(›-4]#‚‚†¤ F@pàÌïé†]Ú…¶Û¨ïo»Ã¢ñ LçÚn„žÉ ›{&÷«šæ à–Åù½NÚÆžàkè’Ú”AX~åWî³›Ï× “8v_ÉÂWQäwšµµ`D¦µ™ÉÝ…cn2É(—²ÝŸ£ŒþèÚž#5†l{‡Úépü˜)ã8h¬ Äa¢o¹%fvB´lN±ýY1ÓóLÌX1ɈÖw· Ôa”mîZÇr«¢‘ïàÒÛÁIÙ‰Ó¼¼‰™Ÿ½YŒFqt‹ÿY£'y‡–ø-'¥¼ AR`¼|¶@p>Æp'‚ºÔK'§16h‘e²Làý,]ogÔë.«gáKŸn²±¤ZÂè¥g4®Æßu‹hÇYïí'±ÿÄås &®ËXõ9ÅËÌ‹/÷Æ&IÂã71ÈY¬í†ÓŒ5;HN\£q®*Ú¤¥ërêâŠÙp@!x+pC¯Àî¾zç¼k|ûåÙîpÇéï‘Óߣ4Å|×oá iš’×8’ž¢1Ÿ>ÜGÀì€(µ÷SÚ>³§½ŒÕËuÿ% 'ûe@ÕÂ2'Ö/ã,ä ±€0ŠäÖQi?i‰$R£!%’d•ŸR"Å!‰ä=‰<‰¡Dj4¾“D"QÒ($JòeZZ¢ÅK䑵#h4ÜWñQöøþ•Gbòh™Â3;¥¨L;€R\ád¥¥– òJZáÏXJZ¾ÜR%¿ð'§'ë9ÅY¢ *dНgB§×J :Å-1åÊÂ(WFE¥a¤ÄaäÈÃ4#mç ‡5¬P)UpMB«0j±âÏèdÇ@Eu¥&tq·pìnøŠu5V]®¦š³»ú5%üR]¬—ñ<-W¬iµ«c\-ÏWmÛ†À#þ}tß UÆ]p¬×1Çbø4a=^÷Ò…ýA¿ÿFÈè´Ö¡•‘±Y 﫚oäÔÛpë}ÏuRÍÒ•2Š&ê‘CÔìõ–°ÛðWW‡ |ú‡ Ñ›Ãb:˜^b¼ŒqcÝù{! ñzi;¬ìž[|•u뜋VåQ[]á…Rà\R£< ŽÖ j̳,L–5³Ò‘° ÃbB¿íG=žö¥Ã½:޽6WöªP7 ëVÄîÅ u¯¾l¨/òM>gl¨*…9ƒïÖâÐ ‚𧡇ðôgC?ËÆQ_1äóNÃâ†Ë;É; —w²aûGûy.Ÿ‡s¶@SÁ—ð:Žt Oƒ™\ÌÙb@P"G£) Îx¼ßü6OŸùcû\¥0÷ðÿˆ^6žì¿¿ÉçÉÿã§þÿ¯5û—ú ³‡7ÿ¯^¼xšÿßâóÝõÿxËáŸö·š: ¨è5ßP^P:â‰äï˜5ÃLM*‹O 6ŒDä–ÖÔÒÆmYDoWµAß}Aš%Æ£"CÓ`¯äò6°Šƒ<ÈHUâ3üãCe ziA0Œç£äVPЇOÈq¤ïâá,Ú·€–;NÐzÙC¹|œ /)ØJ-¾mU=åÿÌþhɳÅAQ[n'—롃ù`8Q¥ÄLaÃ>QŒxʬ8žŒkãäê|L5xq„«K;¨ Œˆ½b?—K­%TÌ|Sµ íªª„îbÆ3¼{ÆŸ ÚñÃÀÇ9žFŠÀ-E`€Ckr¤':AI+“ÎýǼ\ŽÏÄìFY´ks1›ìbÝáyL·fŽ­¼¤‰áEÑ*ÿŽ<0gñ˜Û‹£KØPWìe,ÄÚóš‹Ä§áh„(.fcb6‡K…+à =þ­GÿV!YãÏxåÇ@ãŽ99BÈ…ñ‚ÖˆY}^×C³:!§»º-ôo†z£Oh‹ „6dÏzÏpm„9GÓЙ<)Pȱ!Ÿ–•7Ž¡73‹‰«)H=¨0úR—ë3/39QΚ¾¬£Ê’ÉVè0Í@i‘ ¢uxq#.“+²¸6®(VÂetðqß]fPF\pžfÉS®,ŸÌx¨Ÿ É0OwŸ1ÂXi£!L¸Å|†Ñúý®|¾ƒ©ôžR’5í Fö…eµf¿VK6&£G6bt3ÌŠu¨ÃÁ^‚Üq}z0ÑJX lÓ…:«ûWç %ðíKˆÑ+ÇZvÈŸiLC®º¥ÉQ>@7‹½GáQ1ÛY’¡¥Œ‚–|ˆž. >8 t°úÑFu‹MãïϦүéA|Ê}a.‰ô°‡qñ9ÀF"4î6PÄä» Äâ€Øã€¬aw©±Œr‡f¬ÈöÔ”Ap¹<‘¬ºŒ¿7›«kÇTˆË¦hU*¥ZT^2jؤ;æ€Çk.„® ÇΟiq‚&É’ø—ËIbЈÃ$™Ð½±Çä¨N]ÖËïî²>¶ÅûØÆ¤&®ü(¾~Õe1sþªVÀÆ|÷¿‚‘9œ“`.ëÍñÙÙQ4.ÁðÖÕÚ‹UœCÛe4çnF° 7cü+Æ¿Zmú%sRô¨H/Êsùjö¨†4”oamáãV»sBOàw®k`‹ZÜnKëµÏà×&^<á-]þmÀ¿9€¶ÚoÞTágo³[‡‡UqtT] 1ù®ùž~Ñ)ž@ä:²Š‹å{;í7œï½ÐÓñ”\ÓN[í·ðsk;ûæŠìÅ)÷â´÷®¹¿±û:ÇÁêJûmç>!-ÑÍ(ܘTìËæ¥JéCáíàÝßlò˜`eTOOÙÙ¢5u#M;ß ‡°ÔYeª“¦e ê‘Ôªû¤ ‡wÓJ©ˆÁ"ÉKT¾"W.Piz–p0œ—Ž!Ì¿flÕŒýš¶ÿÜa2/¦ç¸É½rO€`àS–¢³!ï¡) ˆ„Û"t[ž-B¥åáЊåSÇê­ÅãKƒW1€€•í‚ÓÇô7³E*ò(ÕÂ`˜-ëõÿÕx"+–ÔTŽ¢@}„¬O¸;õc›€ÌQ-C—G¥:´f÷Çc,ÙÕcÛÆ°å2UuG'Š*-Û\PO{y|býØÒ(Ã[«øùëÞÍä”õÙÅtxÎÄ›uñ´ÓýÉÀœòA?z¸ÂÆáfx5ç‚5_•–e>ÅÙt'Ь„¡|¡])`;IUÕSbxì ÕóGºGŒ²ÍAj{q(Jm'T„~N=€ÅöËX—/mÈÅ‹ŒÑH”Q’8Øf ´Ñ”Ô("¤žÛÌᡊµIå­&nÈ‘áø.î±{$)¦^F÷ý–n‰Z‘#²ÆÊôUeÇ,ãè_õ*Ø Ü+rîcTÐPêFZZÉæ™e E¡x×nE.ºpW/-lFIu*´´i‹¨•˜'0 KŒ¤fp:§ƒPó}!/K_N6î©Àª!ÂŽÀ‚kA ÄçTó·3™'2xnÕ@ûî*ãÁ«É¶ŸxÐ~Cé&0˜<ÞèPbŒ&ûÉÛ§ÈÆÕ™%íõ?m†gâj´˜ÝðYm|/SÇET t±ñó©:˳¡™Ý±N'âjìœKT乄‚>Á° OY{r¤`„^vQ$JJw—ÄñJÅJ)È*• r^9¯}ßãå´íÚ(ûNó›¼½¢×x)Þ9<´ß .ðÞk«L*‡:‡ÔgæÔç±>y¡Åw¨FšÈS‡ÌbâS¥eûùÚ€>yæYâ­%!9—i8(xK‹jΰK¤`£(áà7*už`ƒ²TƒKmX¯ æiÉ›#™mæ’óñ '…Þ'(s̲~œSÿÞ¸-©ß×Äwþh¨Pº0Ò·ºË oäö>òŠÆ¹¡µ¼È€Á×fÕ¿>ýU]ÇÅfžn’ªŒÊsEí3y;Bç5rÇfVËMÚøÅXí×e¤£w2CQq@†ã¦PQõ(Q|CMPjIAЛ[ŒìN»'å€[ݸx¦S&¸øà”Î ¹³ÌÅàEwåßFéÑÁc !ƒ°£äÐi¸OMúéS{Ó¤Ì9ðl†¦*%‚RÙŒ×6æØÔ<½¡E‹å%dÞekàÉP™(Ó SæÔÝZû1§úÛÌÌãRá¢Ç«¥}Üã,[(W¼.Ø=ñêä,vkšK[ `˜³hÔ‡Ÿ¬G˜65+¤=-§íTM\2„¾¼z­.ÃX¹ÑÔ°9úoK@y9ue%JÃ+:,/;Út:K×[ÎÑrB ÷a_‹ k›z)x\,csQŒÓmŠÞÙÅ2~OpºÙ{p½XÆø"˜­^ñiœbâð´Œ31o«fÞ?'(Ø“Â÷ø¸öÿ—ß/ÿC¼¿Øh¼x /0ÿsã)ÿë·ù<ÙÿÿÔÛþÿëÌþ¥ó¿ñ2ŠýùÅOþ?ßä#vÏþ 4rˆî‘‰:þTᔇ݃þAÿÃí|ÓþF=ú±ûXón:‰“’Ü냀·Ê+¹pöé €ÔÇÑx ¥Lý{lë/‹m·@£<ìno¶{í Éo9¬â°…@Ô9f¯Ýyë€e gf'ÊÆÊ ÔT¡¦Š5>™ó©6˜iõª³²}0Æ$ò ޱ.' YO²Ð¬ž¡à¹M$¾0°WÇ¢ R;0²Å 0>¹Èܺ㉱н¸I.>¼–üïäà-1i–¦Æ˜.™nÜt hÑþÎΗP0õ‚z1-nÇ!¸N†^Ó…›i'|—á:Æw ÕDÙª&{Š9F.,±õî±±¯ir"¼S9´…2ÈÌÀßÙÿÍ¾Ž h1ÿï/¢Æ¼Eû¿—Où¿¾Íçiÿ÷S¬ýßWšýËæôêe#5ÿ£—Où?¿É‡g»·ÿëÅ%q|x¸ÝE[g´r† 4ODCø‡6ŽcŒjsŒäÙwN°È>ZÑü§Û-®–AF({¿—=rGrøpäpXr‡†ùd…­`Ïò—®üä_ XbTÓÎ…TE]ó«³Cñ•Ü;“8üâ¸Ré‹J³‚yü7â@_E™ž•ÄgêVK0ö1‡€ ®öYVÄÜÚ'ÐP¥EðOd›­hºb›Ôd+Ð$Ö›L¹óõÎA¿~ `û›Ï…(T³(°^œL€U›DCa»ÿëvÿqg3|ÒÛL;#W“x¥%xÒOÑlTe·|Ec* ¬M|‹×ˆ'êÑ 21>9RO0œI¹Ö#eëÑ °Ÿ`e!?Ã1¸LÆ0Ç‚]9£I³l§Ïã](Yão2a ”3óÉ&ïa^÷ ¨lKÀŒ&Ÿ|0Ô /»œrÈjÆÏáçêcöþ,²¨„(X0-lY¬Ø0¸Ç%¸ð­WûëVî­ Ü[…qgËÔ{\Ü•™1¶xÂÓ†^¨N¬Ëd6œÂDJ'b<ÖðO²àg¼(ÿDÃ?Ê‚Ÿñ¢ü£À…N¾]î8÷Pÿ3˜ Çì„vÌnhÇìˆvÌ®h'äK†¿rÝÏNZ1‹)ã>þèR céäc²Ÿ«@iă~Å1ü–é}kDr!#d³q'¸Üîu@0š2xò³zÂ6í$ñNe÷:‘zcô?Jh»¸P×¥ìúo02ˆœ›h¨Q\þYjq¼õ8_®ÐæK7~p“Ü3*-+„>æxj6*-ËŠ©EžðHÔ¨tìD¢†iÜ;ÙByHŽ¿R;´º´éh:%dM\n÷ɰº Ðñ7ò*±  #ßõ¼—yÕ-SO¶èw kPݲìaßí¡N”tÂñ¯ZÞ„èÊY‚Sƒ¡ûÕdÁDoÐržÝxy¶]”o»Î[ËÛAÏ@èXeþN®èQUà‡¿ŒS:­3R3¤·¬§¶\óØT5¬õ×ñ_Tö¯æ_Tà¯ù½õ—|™&=zYiFþ«X½AWèz¥Ùðꓘ R]‡qøU¬Þpý.²›[¿)[1¤fc~Ôþ•ý%3 ?nxPMÙŠŒŠô_³ë›Ç^šøCF!Ê{¨#‡Ha*Jw;ê†Hϱ3T FeŸçƒA2êåóÜ•UydU*]û:ðÇÉBXÓ’?ŠÍæĽGk6sKÓKÇrpióµP ÷Ÿè,Xç"–vž¢Âõš“Wø„ù×+|Â…»6lß3Axs<Ös<¾ß÷ãU¬4Çɧ·FØŸãÒË®#'9Íöô$W“\³œ¦{`–Çz–ÚÓÙš¥öäÌr»~p–Û“?k–io‘(OS´ˆTFáÍytRs5^aÊÇΔ@á/›ñ¦æ‰t×->á‚öó]©u_gºž3Ûýiͳݗ<ÙqV»e•°çz~&ÏÏßßGçËÈ“ú”ÄÅýt¾M©ó5Pçk<¶Î·~oó¾:ßæ}u¾´Vgë|ipUïÖƒèáëAÖ)³›±_&Vz]Îz°[^5Z±_&VŠep=ˆò¼åyÓ÷»lJ üõ¤דVœ¹DKi¿ÂÐ]a ˆ²×€®½D+-ÝV¹ÑçµàÁ«€<(`iýè«@Aè¹:Ÿ/Ù•ç> *ˆ'JA\Aç{„}Ýæ8` éÉÍWjŠÓΉބ¶ujòFrï—šà²zx~Gz~Ú9 îÊBóÛ®œßö´ÏšßQh~ß[ß‹¢{nñ"w‹—µÃ[6Õ£èži¾kÉ4 °5îìÓþ]¾Ã~@?q:öÙéè…>uw«h T\Å•'ØTÉrâ gõP =è÷¦ü½UZѯ§ÿFÆ“þ[š¶Èƒ¦R_ÔÄhp{~9¨´ËÒGô¥/ÌÇüh °N «â pMÉDeP¬Í©– ÃFíWÿfåá8äŠwÉôv1ç0[ÊyhŸ_-ÆÃ¹9=ó0 @;f0· 6æh’´ ˜-Îkº‚Þ àÝ+{ÁþÇ2¾6ô5+ƒÓÂüÓÄnjè6L +£‰™6&çóÌ2š)oAlÍ m€1¼Že°rl#þÝðã„|™(ŽÙíÝhxô™N>©EVkwÊêA2,68_Œ—”Œã6ÛNÐGÉ*2ž¼ÌÜPåxEã?åe:cEE{äÆÝÑ(drqœòÐ-3Ä);C¿/ÌF øKôlâ ®7Sß÷û!Ïm›”€ÇO–S“# A÷©ØNš©°³uw#ªý…ˆîè–öi:œÏšQe†ãEµÎbÊcÕi—§,Dä °xšËd;çj0[ÊR:¡Ê‹ª4 Kc(íÍ› Î8gQ¶•AÙp€oÏU˜¤Êdä¡ÙÌ&HHd$Çær@Ûp\bì/%¬~Î Íæ¯˜&#¿8ŸŒ@Œ/Êa8¾^`îh•ÙÜÍBþ™«ùc&ƒéè‹Pñƒë„GãráLo)Å<È4Jì„)‡`³2|ìdôÅΕcN¦S!9^îÔÇ«L‚€‘ª:)‚]ÄO\"9’í90’Ø€.\‡W@Œñ\\ ¯Ód&Ã×›.ú6”YbAxQ‰Ö1bàF¹Žáñ±¥a€ÙS,™ÜÉÝÌ9väåžRˆM è/ ƒ]‚R—\ ‘±­œ©l€L÷#îFƒ ²œ\$×l©)´tò¤ó/—oes9(¨2.ÒW˜û펇¸RçŠ,%„y»£füL\&ð{¤±H+@â°îå `>uXA/n8OÍÅÅbŠv”2ÔÌ´6Oîtê£E8#Mƒzç‡2»HRZˆOC˜êáz–Vuü ÇN‡¦É|1ËÔ)©dIˆ#rþ“œd0SïÞrp>+‰EéÏêŸx:Jê4=KÞì.áÛ nU\Ì«\£I…“íÙâV;Ñ:Y­|AŠ%þª¡ö”ò‡† 4žpþÄñ›qô¿qš”¤)b¥1ÃêTЫÈ$'ÑÀäKg:¶Öal«JRRJ/DlZ,*yˆ¾žˆ¬®äA ?Kû›"õѼŽ~ÆÃ+å¡[ûPÕ©]åo—ÄÁÀ-×ÐE€¯òßgìØæíe£±}ˆù Ž÷ûUqØ>‰ègœNÙß~w?3ƒBž%nR(åSgÝA;]|ŸÓNQ‹ß÷ÛÝÖ~ó^6º®×8^Ìt0ÿzêEq¯m7ÜvI<ã½Ñ³ª¨É#]Îf_p‹ÛGõuÛT@_È1)Qö‡×êšÔÞu'½_÷¡Fé~¼)I0&ôŸs»„иµ¨X€GñÒ„S׉gÛw³áh2~f™Pô÷U A:Y Š<&æ¡ÊdA·Wò.¯%¿ËÂ켿'ú †PuoMS‰ÿôè$ìÈvtƒíætE/á²P´¥,:Ü Œ±…xR“ZÌ ºœænpc¸“¥4ÖÔ‹çùÁ&% ›KQ@ØsøI7§P³ÇiàÂÊ'ªjly—Ó÷<«M,÷§D¨Œ[ØŒn.é|6UEùÇs9~¹0Or¥J+Xe9½²I¢šÓÏÈ…+‹DŽº±™Ù «»þk\|¬æ» $Àv+Xoy÷³.²5 Zí§eš®Q“[Á.¤eeªÂSs‚uGÀš‚2ܨYÑù®¿O.޹¤„º\2š%>éQ*‰eŸÐ䢜(‚øºR°!ÓŠYв/¶ûÎeøSˆÏëãÞÿßþ(ñ_6žâ?|£ÏÓýÿOý±ïÿ¿Îì_~ÿ¿Þhøó?~±þ4ÿ¿Å‡g»ÿÿvdÝf§G1@;Ýø£¹¸Ó¬Š-¶Ø:®Š÷œ~´¶ûͼ,•UJ§þúÅÿ ý²¹Óì67s&œìƒ# ·9|Ù‡1rXq W1J@j•¸]ËÐÙEýqÌdóÉû£¼¢Â;<Ç !È|[ãËdäŒËÅ…ÎÊ‹…4Å[â·×b0º»@ƒMø÷¶èçÉ¿¶l[ƒ&³]ÀŽÀò=2f^$yON;äD¢zEh‡¶æñ/jJåó–רP(\Ü `“‚žonÖëUÁ?èU-*pN "Ì-›æ¡Š“¾w—\ ¯†ò|r'/Úñ†‹.抜a*¼Ï:Ï~C“㤺Œ˜Nõ>V©±x–[}«o¢QÁ5Þþ™@+¯ Л¤›âh€e¦N‡×7sÊÓ&f œ`d‡õ¤ÎÜ©°ªYשè öž½ÁÔãlÙ—§}s%Oô¬«*tq|žx|ô»¹Æq.{8Fî`6[Ü2PMy·ï’µà-véeµ¾2Ów}KZHÁχzü`¼³¬tï‹aŽb9*Õ–ŠßÓäƒòE8yIPØ÷u†$ƒÂvª‘ ‹ÂßG;ƒ«pVÖe‡óTt/‹\eRäsÍRR„lÕý¹¦ ²Vòùn Z´j×Εv:Žo놬UgHé!û^×_”XkÙ˜›þ1oÄ2ƒg_@çí÷gu$•¾5âסV vɹ³a@ï£ùðnƒ‹ÌFixE¿Ñ9(r¡Ñã¬y7”±Ñòô[Ð8uPÚ²b«áähÆ"ÐØ{"ø4ÙÁ¯Lz{ 6rñkïֲc.7BXn±LߨÑbˆ‡ðÅ4özóºŽ9j;î‘0háõNå½ç`=|™Ý‘{g"R„0¯¡‚éFß«G©³ë°gVQpb-[QçÎëqn¬c5ÖÑíËS|¬ l‘©JVƒ@ñÌSqêÐC¬m!Ö¶k+ÄÚEcÜÚ²–†ulž­™1z±îTôXVÌíÀË¿ËBÙþ¤[Vú!Îüå¿—3÷À™Ç_3_=ˆ3‘3÷ƒœùjUÎü%‡3ýd†®ô .¿µ°øÖ¿—×—ËÓàDí«ÉßZ†ü]Úb!.ÿõþ\^Ë¿Ë.¯eÉß_Wärd¡¬¢Ëåo-SþF9ª›øgÍ{ àZ†~ÖŒ¢ñfPß“7ƒ8ŠVå͸¨¶¿äÜÔ¿{º©ÿÙ>îýÿ쇹ÿõtÿ÷m>O÷ÿ?õǾÿÿ:³Ùü76^¼LÝÿ?ÍÿoóáÙîßÿ÷Jb÷ U•AZ*.úýÿ!ÄýÿŸ.õ ^êg`ºgŸÀ÷èÀ+GèÉ«lí¾9›Œ>&äw//Sƒ,,1lAe¿r,$&çfJ°U,»Ë]ÜL†ì쨺-ïÆˆB—2Ì:N5ž|A$=¤ˆ_È­ÌÖƒYbòŽB¯'wsyƒï’é|1=çxgÐg˜ _ØS,|}zŒjxI¦œ'Hô×ãEÂ-ÐK_Z \ðرÜ`v//~èS4ûö̵\øsr.É&A˜P’÷ ×Ùo®5ˆ~cŸEÅqþ JNCÉdŠz>ç‹y©6ù#+q’KÏ®¢vO\Ò¨33±ÉiK.ÀÆc“|@«NL‚4”t|üE/±øÐÈ%›* ´ïuTÄK: sø[ÒýþèüGþ¦0á¨_-Æ1 TA;ÁRf)8CF_âj8…'ÅâK ªyøm>¿@¸‡LÛ™ýât+j^ð¤g¼¶x…üç³ÂE,#œv™w¹unŠžÛ¼r•·ñ°¥QúáÙ}cÂP€×0LHSÅ/aû”?2ìSÈ?Û’Õ?ƒk<ÏʧdP¢<´Þ²CvÕ Áäއ·‹[€”D¶¾r;¸$9µT¡pzjµ– µ1¦X£"¹›UÈsÿX‡š‚GŽyÑòø¸T C.l8¤Éó¶gË¥i"£f .h£Â )(;ýj_Iª^#U…‰Ç!sÏO“+èÄø‚–£àÐ˶‚\&³‹éð¿œO»É¨¥{”Õ (Æ£]z’Ðc µôàbuçþ!³ÿ°¶Ü»ß‚sÍpüåQdƒ±Ì4)õuj¬4¿ Æ»·¢#„g,HoT˜‘®ÔHµ‹cëEIÑôƹ )(Ím2pÍ;Õ‡¢f ²c7˜YDvu~à&fŽ$L--aH‘@¸!@Àæç¶-ÛËÙ·zÍ=Pbà_«ý¶sü®Ê·»ýªè½y‡#äšFà¾q.4µ¢±ÛO´養ó¬\Û¯cøjʨ@Ï´Sê’` Úô`IðåÉí\”a=,€vyéª ½¯ä!;Œ‚@d?»Dop¥mSŒÊá zεD¬a"½¡ø è'œ—/Tƒóž; É”ß:×5Q  X^uã=x`M܇FÀ†0 ðž xýÉ3lYOü´Â’`{ˆ+Ç>¸_[!ÈË ¤ê#"4÷t¬ˆÔ+\9µhȈkA…Pö„ÌÂÂ%Yèe–uŠ«ÙfòPË‚R‰± EÔÐTÉlGèUd/³€³xŸŒaÍò`௠ðÌ¢Læ½Übáᶉž!&Œ™Oí\dö?ŒPø©+žC_±DÐÜtÊŸÔ/ž&õÃ'5ª½¨p[¨¥U–Ú°,˜²Ì—~ ‘ g£X#be“”Œ+¹¥Þ•¶ÿͤÁ P+‡T—5/V0x¶Ou6'·t4ÆwròdúAs±mj©%AùÃ.%*ÐYXz½Ý®7V“'Ž"'¥Ê?~¶T~­()³ÕFñ¤”<)%.ÿ™JÉ2Ÿûâ<Û=ûÿ“¸DÉÿdæ? ëFÎÛ]ù»-£þaò[̹»Ÿ×m³×­rò敜âÿ€Ä» À9^ÖïmóO$úÊû{¢°¤!Ѻ¸a_%N_³Ä­’)?&]¶ª!æ/ÙãéÄùC.  +xœÄÒlGo¿MÆÉFãß0‚½‹›Å4mt?à0yqíü ˜ eÂw—Œ/†#QjV[eiFv9~ú3iÜ#ÙŒ-ê%“éüfÂF8¥é„“é”MüµëáG6»SœN¬€ãAݶöòÕDe•ÈÉAîf0£$€ÔÎxÇÉeJ2·žX¾Ž‚ÑóuIËù—»dVf#4Í`ÿ#QÿbñOt1ÿbAˆýÓyIoº”°^üSWFÛ­AŒïé+f¨gT9ŽäËÿᮄZmŸøó¬¶ÍËì¶Ï³Ú6/¶¥óDœMÔˆ¡Œ¦‡y´>sÊAŠhÑY™Ž?&1 ½îMLìö7#¦n›g 6ñ×Tð2¼ß2ÇŒÕr#’˜É²"ÆÁŒÅgø§ƒ.í ³ò þïÿ6k˜áòÙ³@úÃë´H™Loul¶¦Õ‰°5üÎÒØlÍ:C Æ÷c—KTG‡\+F´ûßÿmÝ›\ËCÙ-'—ÊN‘‹—›å9ݘF¼R-­C*­>%¹~(¯ +riüP.?§UîC™]1n¹ ¦-¢ªâÃë¨WÅP¼³Mç¥ZTÆè¢ ^ŠF  ¶Ìª>ç §“¾=i×eÑM®d“ÙÐ8Ô’+Ìðêd‡“ÐHV,ƒV –1cø,Ô €+ ìÍbJV¸[lþ°m•óv€^‰“1»Ù ÏlUy®äÝ`úA¼Ü †¸•à,R¶ºïд9¼˜YÊã¼]\|@}²×ü¾6µx¤\E“?Ydyβªcb»ŠMmH×ìtß §ü" œøkK~݉àÌFU娜 üvQn²¥m*Ëzÿ°*Na[rÚrvãǰtE-³­í7»ý·ô»GÙ׺ýÇ2Ø%¨‡ĹHØåÒí>j†·%¼<4Žª1=…Á±ß>S[A¬\”ˆ¦Ii†,¢Ì6µAi•Í?×´m¨|àµU!ö+H{R‰©ÂYS›ÅRóê•nøµ,VÑœ"qºHl‰ÓPbJœ†ÂjC†Rˆ;M Ïœ¶ýÍnŒÀÐ1PUwdViÖ>UZs#î褃‘Y„D ÑK _Y#ökÄ^ ß d§áÔˆ½Z4Ûuº]^ÙA)I}΃ztd•p OB£>L¤a·‹WõP7HAø\ Ç—aå-í(ºET,¿:@iÖ„¾}jù­ o2“‚ùÓ×­Y ÅøqPlT”ÍE8e Â’H³K´íÿnþ5ýŽöQ´þ*ÚXAö?WOö?ßäódÿ÷SŒýßךýËæÿFü"NÍÿ8~šÿßäóݵÿÛ9‚¥î´ÙéƒbŽ¿Î(p{ÿ~ì´«bÕÏ<£;·l½ªœQøy†•Îî7X ´ï{ ›> ¾3ù˜PvÎxöþ‘|‘JÜm¦ÓâûåˆJ' d¨³‰ÿ@s¿7Iæz§mÂ÷´+ÿ8+12逾±âž!Ÿ’SdÙôÁd¼ÚÞNo Â~~qw9à}¤„aÙâx°õÉe‚û-Ч…ÉhGÓdpùÅìÁ4Ȫ¹£¿Lh[ÀípsºƒÌ1†¡¼Æ¨‰r7zŸ¸)™|P“``ÐL÷K(‘2†Rã$ŒmŒJ{WùZÔûÝãíºø#L.F#ËÆ†CO“-†Óäòw¯â›&¨½õß8 ™C*JÌ•ê6g+ac23J+l&wÂK°r«¨h«i´}tÇOÄ+H¨ä€ƒ\ÖXÛÍDŠF8;ôDòÛ].2Ö,ë«¡“4ÍF;íµè·Çbf %œüð³ÇbÔ¼Òb<®tpÙGË 4 ’³éÓdúa&î¦Ã[Pw`Ôül×/ÂÚ,Ž0ú!§uv Êȉ2ø-ÇÐ0 ;x)É Äa¶qlÎ"ñ÷×ÔÄß9=iT…†Ê¿ÓÀ£Ž²‡–ÆíTóBhòøXó[3KÐ"N!„NÐq"ÅÊNõ¬Ê<@°m06Òù7"2Ö`ìXr±Ñ² õw>š\|À¸ØTŠñå`zÉÖv3ÒFÔ†„y21ÐdIEÿÛ¡I¸Ïdll´i²¡ =êr²Ñ óD¶j}<¥†ÒüÙµKÃ8Œ‹1ÎUŠâKA)6ÅKÓã#¹l2È‚ BýCqY§l‰<¹î.³óÓütÚ^±‚Æ’®ìˆyn×Ã1.uh 6«bhP 8Æ~‰»Z­œ°D¸™›4j3¢ qçÊS:_ÒQ—Á ö}'¾hëà­¢¿Dèí¤m0é`<&Žúâ¡Efhü½[ŠHUÌ_¬8Ÿð°4\‹Êóž6PE†e4<–u© ø;HzìMjvz6–~O]òÍ·j=žOÜxÓ69VÖz¬ã¨9¡AY¢ß) «ÃrUEù¶Á«ß UúYf?•àį¦i CwJ \¡fJÙ¡ÌkQ£âÎBx–=»Pý\2÷8†>É4 Ç2å§›!ú4xKƒÌ÷íÈ%þTÊÓ³%+Å™ü­×BÒ]+Îd¢kÅ™·V´S¨Tu\ž ]}±€©6v¢«ÊõäŒØÃ#Âàâbq» $[Å‘J [. çI2–ªïåïiˆÀ¾ŠŽ¤èÍÑ/Ã~+œP§8ûörÕI6ÝW ÅY^Øa ¡Eðû é³: é"Q…¿†úÍ‹*ü¶OÑ€Û:ªð°ªÔ¦«ÁpÄ™EÔ]j1žÐÐCØÁþžHýi¬›”Á¾¨„H¿‰Óõ·áÍБŒ!† aå Åóïfð1!Þ U6t™‘KÚâ "0[™ÓDA¥)…ÃkßÆÈ‹1 »hŒMí ãd—¼“¥Ê¡4 H)·7“éâú†»'a^ÁÚŒQ“‰×B@RzîC/³ir9.•²ú 5ª°ÖÔ^¹rŒŒ~\)’ö›|y¬Ò¸£šÉYSÇ"}ÕáüŽŸ8‹Ö´QÉÚߨOZ×ʬEÐØç#åí s*ž¡¢ýñiuVF¦©{Ô]BÅ9m3µ¿ŸÙ9Á¨…ª–¦É5èç¸iSÜ¥›#ލ›»è€³Èð7€Ïz\ûõ¥q<¸\‚®RçèC­ÁÇá%ü„5¯ôD‡Šîûƒó §ÉÔö2˜´¶¾¡‘É€ÛŒînDëK2•n xÔ6ÿB¾ °8 f¦`Ê‘BÃÐcu4Ç—Q$ñZ\žå™ƒ»uµ4ñ–»jÌí.&ç¸ ®A˜ÀoÞy„¶ꛬ^ŠAºœÜÍy é¥Óí¿yƒBåÿý!p7¨r ÞÝÕv( ÊYahžv€Hxíú믯¬Eê«ye„ÎûhfÏ=2¨pyC†ÎuþinÔtãá‘Øøjbü’×ÖV³Uñgœ×–B´ Ús±ÁM`-Ô_×ëW/’;• 9ZC ù&YA@Û}4ÓCÄ öb2EŒz9‡Ó;ÈÝ~Ô¦ŸèbÒéï˜þÞj÷6aÚ±ehó} m:únŸBÃ÷ðoü)ÖGÿ”üC;—^? ¹° ÉI#‡sª¢ PÛP¬Ýäv«b¯*ö«šëì`.iø:2fòÒÁq>uOJ¢ 6î|oóàðÒ[Í-úÝ9‘Þ9oÞfzåÜ?.? 6ö`uÃ?EÞ+Ùq´^|›OÜMÝMf³!Ô/*Þ¥ ¡:ëÛ}à‘?êL¼“Õ¶µ^¨"®éF8н‘œâöS2ÕC {œÙ ½U8R;& ´»«¼ÛnÛô®á¿p^'Õÿýmì¿ r÷†º”©ìŽ:;âµD û¿¦“ƒw΄ܥÖx‹¯ôH2Wyfj—ÉæÃÓæöæ3JGÛ7¹™u(×qªùfy¬ýîø埤öÇájò2¸ö/iIJ|°ºÛ›í^û cµ@â „J‰x¼„´)C‹äõ`¶t-ÖíXûÄA?¹0š=Nå¢>Ю5HÒG%”eG j_LGBÎö÷Éв„Ã) Õ.¨êa‡y{p¦_ÊtF¸çM&wugr±†ŸÊ}€Ë™&­ YÆ<èÛÀ§kh”b¾úJû¤W@ª„¬ñ¢kš€8#ʺÂÀ-)0"'wDÕ£CÄ \0É£Þšj]L—о8ÐÉä’›‚}jQ‰°m{ƒŒÊ>oiCjnãäö0âd7û<»Muì_Ú¯î×ø8lœ\†×(ÒÄlÂ÷#Ö=Ï †y>³„g~‹Só\¶cÏz ¶hÉ2œñv/zidì!§†xg©wö¨}gÞ›€2:ŽôÑ©!!yP$þðøJÈŽOæsP‰Ï“‹fÇ´@¤rþðÑ 6T2´@ѹ±ŽË=®U©vðRޱ©²×œJ´6àÒà_‰¾ wÓ"í>«ÞßRÿuíTÝØÔµßù‘Í(E‘5:Ql}‰í7±ã‡ŒÒËSð\+䃧^áçqFù8]>ÓY’4"?Œ1ãÀ&$üLס7qúMq$š­A €9þäÏÖv_•©Añr…hGÂFš«2^ñÀy÷¨Û—K.B )¤ð%w¶‡·P‡")3 bã™çÆn5\ý®7©„,¨Õ¦WØ`M|]Ãbî tÈ$¼ÉÔE¢ZÂÙÈQuÔ¥Û²XÖ`YÆ(£'P¢–QB+…¬FCŒú‡|ËGÙ¡ÛÿöÞ´¹iþ>¿;ïÆšâ!«J’ív'‚:lS¢(5I¹å~âÙ J¢lÚ©áácbcû›€P@U‘:,Y3mŠ,œ‰D"‘§~¤Á‘ Ë@àz]#µ©÷©½ÁÜCPöš§¡4k¢ïh d˜í„¯ƒS÷>¸½!P„r°˜ÄÊp4du×hÝKñ®®ú mèu^¦Ø5¸l[ $r‹K‡ŽØvbÚïs„G`g8ÉïuïshèQõÈIn^’á°¯Ps”¥HA²eü2ØW¥lbvéz<%*§ézꘈ£Óò#äŽj`³GôºF¸¢)6­¦IÌ;ésÆé EïÞ)2,[–=UøX°{ŽÔy/¢$<ƒd&½FèX–ƒ¥ßÜþ㤣™Š5ކú—-»õ7íñ#u”J_¦ùNeû¬èï±ó}3E˜5”ä(Æê}ì¿©ÞozÞ#U:Âöz<ÛHU0qƒY°rÉžSÅšSºÔ âÕÊ‚LÙh9Ùx%é/ÕÆ‘]@/›yGãl§®_Ïì_ š³gïu’V:4%’B¦£*Ñ•È9sºZXìÈ4Ñk¯X—ŠæL) ðÕ°OÚñÆj†®d¤ çt×ïh{Kƒg¡ïlèÞÓa9€@¼µE!³ó©@™,Q³ž6…=Ÿ?ô¥ñ«´ÈRÄÔ5 ù,¼Ÿöÿ5Gñ^2­àL“/4(E{Fפ—Òl­7üµÙGyßSVçsÛjæâ#É–IIÀ#—:üŠ†Ç†¤RYs]¸–žÉ p]´Ú‰…´Öã^=(ŠÉ-6‘uN§)”9ºëñ!«2P¡W"]¦!—!ówé@7:Äë7\‡7IUn1ªÖ̓—0BЦøÊT¢¤”ï8—%»ž{¾ÑHœÑˆ¾áx›šãt:"ÆítÊHcÈG°Þ½KOtÚÙó¬™_¤ÔUèL >Ÿ@ãš‘øBö€€_J›i;ª£Øõ´05 ã[™2¾×Rëça«ÞÅš¸Û×ün³ïâ´ÚHÐC©µÞmêÓÀ}ÕÝ”mn¦9è:Мﰧ5E"¢¤F‹K,ƒÛD â6DÆ×,Í9$iNìn5Aö9+VÑ,ÀÜvH©Ç0= Cô]\V¨+Ø,+4g‰z–@»™&nnÆ¥—•†Òg%qúæi À‰ºpµ0¾›¥A©š*‘ª©= Ù½j rHÙ ÁUþÉð¯*X‡B#àNËŒÕTAÚi¯4W4HQ_rv™Î´›ˆÙ)èbÒ<‡n°;­×H*2pÛ[ ™ä—À¬¬™Y?½Ô¶m& aü Cµ¹í¸{=‡‚fÁë/FÆ[Q˜ I0õð’ŸŠ ÐxK[YÆïÉ,a/”Àú_—†m`Ö$igùW¼ÁdæYÊæ,‰ë- ¸“þtB­ø_“šÿs;ÚÜ‚÷Ï9ÿç*ÿßÃ<«ø_¿ôcÄÿº§ÝŸ·ÿ£çÏ£ÔþžE«ýÿïv'þW»yµ0ó§ YÛ­ŸR¬Þæüó?ß/Èks=RÞ±©ç1§ú„Æê7“Á£‚ýš@öƒ %B E;¬ª4¡ü÷­µãñ;Z .˜•´[âÆ[;ô­~Zâ?Ã\éû’ÉÎ"©?±€o»œ_H¥ëý  C¼QgëiÌ%Fµ÷µÒ¨ö¹ÂV*Y ö"Ðn÷‰rî31̓(›j±ñ®€f7ìÀH¥­Ù¶np=€…BßX›çÅFþÀÓeJYü±Î!b$Ê3o:Mä 8aÖHv¥Ç‹ÖRK …„(ÅàxBêÒwånùtľÞp:6¥ïQeý¿ƒÿºþÚ_7'(Û›ý·í=•Š/#çã-ÂwÕe󇛸ºB_å6¥i]ìûÙlÀ\o)ÊI¡‡MCü»TÑå­à‡â:Ik§Ð˜I†ê>×Ý(øZ(’7³…ŠÓŒ X#¼èË}¡7Kv&MºÓë°=#F¨óñ—¾ÓØñ‚ð4sMjŸ£Bñ‹ô÷/åÈ·ÇXh±«†§‘?:¦&ýªß tü# ŽÄ1·p¯´YÔœò¶“{“E£ß3z棋½9Cuú}7ÀyGó­yGH+0qn?/´ÕN*¶Õ”Ï#λ¬'c†f;öd» ãsq½[õ (•ûT.aWò{°ì®sKËÖŽlù}á¿÷ œöåè\h=Þ÷w0Þ÷ëÔÐ?“€IES\vÍ]@±åþÁÁÌ£÷®|â¬LÒP ;oQñ¿Nÿ{[+D$ ˜·Úв^“=Âä:‰ÈA¯ðt›õæpr}ÁÿàŒã¯ß ¦*ñ7ã'Ÿ_Œß¥±Š-ö¥½T>Ëx‹Uøßðïèwþ»½‘ÈUÆ “¡G$­««"*ÊbD‘޼յÈè•at4…±ÍÆú´"Z$+‰´…ØÎ;É ¸‰¾DɺÔ3ðVh¾˜-¢Äfæ#ECo,1vSó)Ù1©ðSÚ;zÉÓËW¢d2k°%Ì;ôž¿³6c Ö5ìð ‡pš¨¨X¶ Jÿ[Í imI& ò¼*>ÃÇ&ÍÀòJÄ/5‚”`y…óßÚ­ß}„?Þ}‰²ß}‰x— qؼÑxF±mb—@Þ+ð'^ Cþ˜€¼ŒzµãÉl@Ã~×C9lâMÿÓx¾$E2E®ÝËë°Ë«ñK ¾@(¯®p³±úT^;t ?‰ŠÔž1+Îx-‰D@m`Ø´s¸}’½*J`fèB¨ìiP…j«PkQæ·o&ý0¬±í1,êL|!x0ŸFUñ÷ARšXc òÖÒƒ(Ém›ÁêßE}÷ˆ5E½ åöŒ$ù‹1Þ†¼lWÅf „ýeôb£ý¶UsÄ–h²t¨œEÂæ¤¯¬Ëä2ÎЫ,çØ–%8èý†§áÅCœÔÏ(ĉŒtòfÿèˆ?ÞQœ“]ø5ôàXÄë63+&Yß…+ROZÇ¢Û®·:'Çý'0°Úa•u€5 Öô{­Fk,Í .\-K¨Z’6Šê×¥É +ÎRù°XOGg:ŠXJCf®a0U3*¡4m£Ï×´ŠÕZó(‚¬{ì0]d)æÄMï¢ïŒ¢ 7yza½ÃE`M³çôÓ9ÿTâ+%*ÑrÅ„ wõ»X¬9?Ç©‰ó¡ ½a´»Ì ëá–Gæç]Ä:¼+ʦȴ 6ØIj)™™ß(· C‡xð„(0žøå´Õè>É PVŸ*t!¥³ÎhÞ*aäöÒfß»ëìÝ¢$.Eßh þ²þ1>æ +‡uð÷÷ÞÞ.!žÂ€$yÀB–±Ä£PXä©äA.\Ò^ìà&yNI›ÙÀq {k,£íù„=4€®²PC9\žT:­;ªL‘è0Q QpyO—×èeËÈê¬6ý.°'ðåI¢{M²mÊkµ«#¨Øn¼y‹X„&+jÌÝy X;2 ƒ™u`·qú&¿®qû(Ûî÷ÃÐâDa‹â'Ž'¸éT&ø ˆhE:´Eò›à`>p ´Ì°G«ÎoÃvgí»ÉiÛ]>û¯­í•ýǃ<+û¯_ú1í¿îg÷çÚÁ¾æîÿxksµÿâáÝîÚíÝ£ý×ObèEb©ç±zý(K¯½\K¯žké•X´¬,½´ô:Þé7÷»ûéý·.tQ5诃ám”ž\¢ÀjmŸpöq5ŸÍÉHjˆa‰ ãNèO ÊF†Gý¯º!iÒ'c ¬lÉV–c+˱•åØÊrle9¶²[YŽý0˱%ײïV–c¹–c?È$h)› ±û¹7ßwUŸAÏÊ’§ÄÔ×y«Ô.ƒ% yd¥'´Íxna¿³²ÞùÙ­w`„ÒŠáÞŒt–µÑyPSœe,qÆ£ÚÜ€ßÃÜ8ÛÙcpóøìjì1›ˆ—My~~ó™A†ùÌçÊ ¢)¾3•ŸÂ|&4øàÉ£§cž!•¥,QÞ±DY€¾Ü“)LÃ×¶iñAºä›¹8F.L\Þ5¼#—ÙÒDóÞŒYøU†UÂÞO ç×{LûÁEôXì?௕þ÷Až•ýÇ/ý$ö÷µûóö¼ÇÏSñ6WûÿAÞí¶ýGc7*‰ƒãJ/~VýpVÅ›úÑQ¿Ÿ´)9úîÊ$õÜÂà p w“5PË‹qK‘?K¿›>‹›y¦è:·Fu]LøJ7DÙÿå€Týél µ¬6Áœ¹ÓŠø§3!‘D óQõ­Š©ŒFãÉuéÛK1'ô»œŒ¿a[}JyKz>)FÃ’‘ø„J“OØ+ER2ïfULç˜zúcÏÎ+§ºl–©Ó)ŒMª1FjÊ2^ê”^ÞL ¥ª¸°›Käå>©Ø‰iù›øoëÕ7´qy¯ )~%ƒødNÖߺ\ß áôÑT}|EÙ͇ÞõuOvÅVÓþhÚÏ ¼(ã8`n&Gö(ý9Jaq‰tôôz÷µŒüUpN*ü[M‰´p©“DœœŽRYThWðÿ‚wÿcç¤Q8‚r9–¢€µ*|.Mç; d¢>¨ù/a­2þS–ù¿zÛ=ÁÐøoQèð/ÿíƒmøù¯ž‰G6õ –F]þZÀF Gíe(|a+¼Ìp‚'ˆšíÄþvR«\šÙTÆh›ýчÙG\“3Z¶?¹æ™S3 -?H)Ê?Õ$ö“c@è¶dVÚ—Ó»t§Cú„ÇË'M¸Á?o=4µÐD­3††•R Á Œ¹´£‚¢“+}B˜ ÿ¡& Iµ®&j½ƒç7+™‘F ö7ù·¤‰Ý¼&vÇÓÜF~¸ú°j¤ÌÓ!Z*Ä ª‰; ¿hY‹§¯·õæëªx}|ÚÎêKQ?ÛØ4–†o[²íô!PUúÌ@w:õæ ¥¶&¾>9á³yòø  Ø»ÇBbÿ¤“aÚ:nÿ‡q'†ÿÒ¥K­vNPÆ×­Güß^FZÅDÛØÙ›V•2tféV=­zàÑÙ;î’*õh÷­’Xyô¯f)_ŸAå¨lò³Úqý’x²3 Ç£'OúXb#e3»¯mŠØyíTz<®³–¼ƒuTï˜Þïö)I=½£¿“FQ± g ¥Sö¨V%]Áê?UÌÂÓ›þÅy=Ì7fÊC)E-ô›•¥¶ƒÉaU"uÆIžo:eW'ÊjHpA_®])‹w‹3u dÝò5ÎÀ #ñuÁà÷½…¡“ËvÊÊnyן’½ƒélN|­ïú_éIt¢²ûÚ“ÎA o­™ªd…0~TÔÖ–%îøÖËË] yÎjeÕI¯,!€ì/=ÃNÌo±žç­š<¼(KðFåNTéÄ厛¬'kêÐ|©Ë‘œ¼c„j>œ…v;qÆz0Ó Ps¾¸¾.³ì]‡p·'€ÄU[?n¯§ß ÕZÄÐࢠ–{²O§’uô¶T‹°xzk&pO§Þ%«½ù}éEUOp‚•¤Éxª¤o%å â áYhQ9•s¹C3Hˆ+Ujמ¦¡â¸yÍ j”ñŸ ×.ËFÒ |éç4™¦ãë8ð2ÁLê¬[Aöz­ìYæÙÓ×dHò5¾Äe_¸åÞcä.(§ãÉcoxå|ç…ZÕbœŒÄÚ.Á¦h¿åíl‹{cL!3 ü¢°$Œ'5³ÐÄy—ÏA…اït'œP Þ¾ÓUc‚ç`{¬LÉ]p¦ä.øÿh¦dÑ#çQ.Q«OEàjQKñ(y'|£ìæ.l&²(—¥o^ËáT¼¼VÍ˪t–A£gUHÊ¢+‚Ì`A8‰{òC2UL—«XÌŽ3+ôÎ\‰Éx<#Aïpz$£‘âùDÂöÉ’ù\Ø´±vÔVÇ3ód2¯uº\š=ëw‰â—PLXF †ÿ1êxÙ'*»°U«\Óƒ«ûäôf¢w=žfYðU05yë|øúØj¡9ëý,fH.C­w-ü4K6±ƒ™2ÍÚ©ºi2!òølQœÕ©5¥RÅ×5=¼‡ãÞGw8Ö— á`c71à_>àcÙÿMG½Ñ=زÿ‹7âí­Íígðb#Úzþ|ÿéaž•ýß/ýö÷´ûs÷¼mºû{{{µÿâáÝÞ<~ÓØ­7ÅëÓÖn·qÜ¢#¹Óª·ˆyˆHÍ/hê¯ÇÛÔ™Ù Ú(f±çS#kð´š³"ñÈühv£"±Ì§ýuàgè"?Eû¸ñ°žücÑû2\b8¥6¾™ ®ÿVæt0\/e×!—O\|ì_|žR­^kЦÊÎÍϾBÃz¦Wl®CR<̾ÃP Ž“<ÏG0’«á˜Ä§µ›ñ`4“Æ&lí„EÿÇ+üÀVTl¤õnûtêŽy8z4U@€)·<í]÷¡©É€té=è˜3è±éx88þÁ–ô¶.Âû$Oˆ=laœêEÆiÀ:(¦ H”ìæÉ°Å_{ßIßßÍúÀÓ‹þå— m|>ÂÒÔà·“Þµ°Öãº÷]\F’ÙgÁNÖÙà‡—æJ›)¨xL“þͰw‘B X8dŠ÷zðÅbo§*þlà ²mlî¡'\5öá+J4«¢Ñz}¼èÕâÑ_,Z˜õÃ;bÚ´b— u3¡Gk ßûÂètÌØ ]^°ðe×X:¹¼¶¸D¸T´.·t(²‚Îî”xxeébDÃ,/âg‰¡/}Zeòê0’ †CA}¾Š=±§Ø+18ØPz‡>#ôZ¿2¨˜ŠWD¡âðZTúûôïk¸®Xÿ¦?[̹N{ˆAKÔÚu¿¼{½¦½ôU濺tGiÕÅ7ü‡âÍ©°j0–tpº=»_žà½ö Pµ¿•Çb¶‡ýo|ãû »X쨛µ%¡iÏ©òàŠÛÂ/UÝŽúU~ÇË ¯3p?‰°ÏX®VÃ.[5{vƒÒ(b=ŠªrâøAIH¢>†ÿ;ï«€E4RŠM§njÓ>z“aõ¤ÔງáЀR`Q9:XBIä¢r€JQB¼ÀÔkÊ…r¡†UuX=laŠ·UXÕß-Ï`åF]‘HÝÆáNüu]Z Ï«$À%vŽ>WbÔ‡yOqx‘‡;ëDÞYɯ*AÞµ2ýpF¡‡P…A…±ŠU7üxEvL—(ÀžÙ­¶ÃÐF§=”2³5û®/ ó)yhP4_·¥uê“$cŽeœö r:"—@#†œ50Ù§±Ç0^Ýh<ÿðatÝûÜÏtEš`I ö´ž„£Ïä¸Òá‹¿5œ0†ºýNz~‚kQµ&GÅޝåpiÏ̇³ì œ8†[•]χ7ewÍÅš 8CgùGßBÕÁƒï;װÃ7 J¢1—"Z,ž•%ö©½‹ÉO.Ïú/Eû¾vñc €H¢–K¦˜×eb#'íÌïL¡¦@¹¬roH6ÑÀ`§ñ¦uz¤I¥W(!é>Ÿ~‰äA–Ë–^ “[èlû»­¿®7;X¾nã|‰$DªK5¼–Œ¾œ{u:ø·Ž©)“  g —a-E?[æ¶!åøû׿'„:6~Iˆ´ìH.·ˆÌ6ŒÍ½¾hýéÛ²×ìùx>¢P§³4rªÃPeÍUψâð’ö…˜ö®Ð6Xg”T¡,#ÕA«Œ/8<…;U«tµ;ïϾö—tù§×pB 3ˆqËÈ ®q`º’|a¶¡Ë¯¡:¡­f "Õ>mž¨ßuVÜ£‹qÿêjp1@ªv¡ :ôåžÐVõðÎŽÜ]O9* ‚~›€Ð 5QzznÆ–j|/ʇAT4e—¾Ã³"öTsq~sq5ÎoŽ”<£®`ÿ¼Šd;EA¼SmýñŸªŸQš`ÂëÚGr1†3R}Ða ¼!m>³ ¹‰¥ F&¢p·½L p1üB8Y0¶›1êxyÿÒ‹¾“·è¶óWÉšÉ, þ 0Q­4ò[±çæi*¸ÎÚc87ÀöY…>Cºòy4þ:šbÌæ©‡#´Œu«8ùèp‘+j¶‘‡3 ¬z6"X„Íĉ³¥qâ,'èvèÂ;uø!«X biwt“=D¾ð{nÇ¿§š:_Žû¬_\ÌQÃÔŸ—GFÇÍ|j#u&ô¹Nƒ/훃M=ø““SÀdçä¶F0qY;x5΃ˆÍ¢! «<“3>È?ô&—2xººòýi¶aܳ"³[Ï2× 'Xƒ«aïú5 L„¡Ì8ñ.2–% È64{pSùðø¢óS (ž†R©á ²§*žÞ=¼?°‚ÙLRWsñ±§¸Ç„Ëv¡§¯ã ûþÒâáÄÆK æ&÷‘… —ƒKZû½/}îÕ5|"0Н`5æ¹¾¥PyKIuQÂAèÜ_>À2Ïÿ¬/1êiw÷_âýCª÷úpæðéÓ›>Nwfª‘Õ¶IO®Ü`k‚ tR¡z‡*9qŸ»m§û,?ûG~Û[?-åZ ø÷.9¥„‡²³ÓÚ«§á?()%ž>Yò¹ÓÆmx±Ûˆ3¹âk,DÝírÝÝ6ÔÀñE§ÿ´«¢™ÝN“*!²5ð£Iƒéî£Ïþi“Ÿýi#ŠøßvFCð>¦R1UÁAœ¶©b+âÿg…8¥ÑŸ!xÎXx\…v¥–(ÁUQ2U@©Üw¹$ µ?ù(-*êKã1à7 ÜëCûh0_AlG%™ÿOØ *ÀòR°æ̵!ÛŒ tøð†R )ÚêgsdqŠ<åÔ ´ìôŸj9Q£Ø ŽË¥ø€’Ö­»„èõ@j²UL-Cêín[¼ïyƒGÈNyN¡t (Pê–oK2}D.ùQ7'µô¯”=9õ<Õ˜Üw‰ûŒM6ªò ¤h4)Fw×l*Mj]õºVCßy¤ZÑÀ$R…A«ú—XmÜÔ$É¥;X˜ ?=”£õÓ<’(B>©x›ÇÃ…ê?õ2&¿€åé)»%=ÛJ$KùÆë=ÚDÚß^þ›Þ|:P:¼\0”žòz!ÿDñfðeŒ’bIP*1˜1Õ% qò^ `š²¨S¥náÍPaи…·2ZŽÚzÑñ›õºÉ£¤Re²SYöc&$d+¤7™Rܰ<[ͳÁhwPkyûLcaæÆíRÊn4 ü›º âäN;æ×äöyƒëæü›A7çéÍ3 Y¼Ë+Q†æí;PÉ¢Hí¨Ìp.3*¤©ígϰ E}˜ 9k•ãQõ}E’ŒºE5¨ìß¶ægšq!ÁNœb“ Zï/ „6ApA¼§ÝçaS‹ ‹I÷P̘~'¯ó#ÙØÍ¥èšÝ\nôš³Ô… Që&×ßá&d_u @} ¡õ5¡ìÈþiç¤Àvfž^Œ?t˜æ2÷göa†—ŽLFBKTè©’$¥‹¥N¦³ÐfžÃé,D„s>ùÎ'‘à7¢/]÷§Œ›sšG \bÐ|7冧t´ª†Á{ßjÆŸÚ¶ñx 5^ˆEåX7$ ¾˪…Û1±ñãeb+î]>x¥u™ÝŠñC¼â~Í’E¹_cmº'•n3vÛô•ü™9jT âûÆ]pܨÕÝ){ŽL·å»áåQeë¶,L9މBÓéï[Á X»ãË>[–Œ¯®jÊ`ެhÝú—bWšã÷†éÐMg‹E¤•¿âÚ…x(¡7ó\Sô2wî£,ã!B—Óü¬^ªX£bÔLjï"9Éqµy\ ÿ¸Tóz`¢k[køæ%JM…ëpðΧÙ0 øÚ%E:O-ö7Aªx]Â߆ÿ~˜jHâ­Q¬{˜á l\s.¾"Y6Ÿ@½0|¡ À·,á‡/0T'ÄÖ5 e¬Øð-Œ±Ø`Cq:òÒ&¹jØ£YâêÏÝÜæÖ/gé[¹{„oü"_^ÐHj{äFRÛ}}Çâ³·Ð`âð`Š #[éÊÐÓßÕFªDø›¡G##52ac›-6ù:k“ù–‹~,Êaq £-'NHRÆNåLáoggY‡ÐT¶ÕP’ëë¶œú!6ÏïAØŒþYã^¥I©ÁjûÇZ\Å{ —ÇK©ŸW*Oá$Tîò,Dû…çyºFŠ•}y"æ& ob쬤ί‡çG=VüŸéÆŒÿ=ž=ãhƒâÿl¯âÿ<̳ŠÿóK?FüŸ{Úýyû3Š·6Ýýÿ[íÿ‡xäáoÇÿél ë||tòGU´šð_›².îã_o;”,’ºìPDø7¤iâd½UÞ4ÞtÛô¹{ÜÄJo输 |ÇÏŒfŽ›ûÐñ^ãu“þ…¶þªŠÃ*fĆßÿR2ât0sÞR­¯û,²AÇÐfLÑ¡¬p LÙú„pצ8ù€7ón•^ŠvÆÚ©x<|„'D8€1 Ì ¸Bs ”q>_|^ÇfþùJÇ hµ—mTà‘¶ÍF ‹²%ð8¨síÚù÷´ÇD9¯¬Ê¥V“Éc8©ž„§Hcfç÷TùØ›:óÅøÌ´ N²[Ãh‘”GAV J"4”ßvr¡œPrIš“p,;gëÜF*†a†{xš~„ùjÐŒArKÀ,‡|¶äÏ#¶Ïñ=ì&|Ý·¬Åírp8uÎNE‰]]ö¯†LYiuáÔ®×`.ËXG¯§§ÂÝ3Qµ]&F§šÇŸÅ–çèJV£éü\bTÒ'°"E` xóØ‚Å>FqDFG¤BÃF—ƒ 8Óðš¥Þ!æ=•»Ñ¨¯`kê|ÔØùÆ3Æ"K­® é°7ÉôQ_LJó÷ž¹«è'zÊÄÈ!7Þ‘Á?d E‹1’Aú¦7ã:8qst L¼ÇÁøòL—ãT>ê2ž‚Ì¡ÚTiIÈaVbò]ö]Š^Â=΋Žú_õ)mÔU¼ï9–D~÷–yјö/è Â|¬ª35£ËxMžf4rÕ½jèf<ìOU2٪юj_…6ƒû¤ÈÈ!‘7$è>ÚXSé5t¤<ø®¼òüæÈœ ÅÃCÂÒ¿L…•Q÷ªjÍ6ìjÉ|Úæc,pp^íR#½¼j‚Sk†Fr®ÅfX‰ìÊîlÝ9Š:ÔTC‹Ô8­çàßF¼Ø+y· pzotÉ1䣂Ñá®é Y`¸ŒfúüׇG­wù ö$À…àƒÃ“÷qµ?Ì‘Ú#ISˆ]{IÆsý)0ªË“E^SfrÉÇ_}¸Š»×·øÇ+Õ?^) »›†•9¼g>ô&ç(†¨«Ó†q/fl Ù“J£ }›R£²É%*i9á®3×)4¸Î} åH¢{t¨¸"<,+v]PÂAНæC ggÅ£ú•€I“­Ú€âp_èà`% (ë`8ìžß$-Ê`¯Ð:ñ^{åNÆñˆà<œÏ™9WðŽèhœ¨ÛýQmî ¢ £‘ŽÑpÆbdN€ÞÞà EÿdÙ+Ê~gßaEô¬ 1-­K$µº,s< ÄQoò/8|ª¢¹Ój>mí·;»²Œg>‹2´r ­Öþ›œ0ZFପS‹+ã‚Fw«*ªÄÒ£¸ø$ O¾>(ðÿë4Þ¨ŽJåËâŽvOÞWEçÍþÑ»*ÊSwék³ÞÙ&°Ó>î¿hî`¿½Ó¬gf¸N›Ð_«}g Ù*–îuÑØL°Lyaºèw¤#Çaœ‰˜‰/€qGþðÍY6„6v€PlÍ®|Ó]÷—+²¢PFçno5±(X!NUhgWØt+”X”`–~Ê«ò_rì\†Xn«ÙÃÛv‡—Z¬Ñ Öxî©q–]å7· _3 K“Z¾„ew¥àÍÜcN­sÐ`Ã^ŒäXS¥'F޼·1p©ZžTEMªu97Q˜¹Ø¦4J­?>…öêË-°ÿG2CbV¿¹ÁøÝ¨âI¤ÓŽ€vÊW¥ ±$nYÿ†¤·/I¾ð=Ñ¥¤7ý 6IQ/“yrüˆ ¨#’— ^H1KJ \ÒZº† §B¦(ÿ QS»NdÕÑŠ6ÙZ¨ £˜ŽZÄÑ%|^y —áš>‹¼HReD¡ùáyaLWÓ⎠†äMkc` çŸvNÛ¬ÍlØ0À©âœém&Ë>3ÄûZ’˜•'-HÑ,p¡,Óƒæ}gÆ=É™’2ƒì¿(@îåŒÄîÜ2ʪefSízpͰ.ÛÚëôÐíXxÇÊჴ徕Zݯõ&1-H†’RKLœÿNý0l…J ¶ÄjhwªÇ³ËŠßVÔï’ÄçÞ_4]\`¹òð³fa¼ö{kfÂ*ï¿_±:q™Õlp–y¸â©\±§a†g•=ÏÒú¡ø²© ᨥ=,M6R L¨‘lˆ E”Ne«ó2<ˆ4lfHáKV]¬Õò›à[#;«ï¢s]67’_5ùs›?[¼^¤BJïq±Z/uµ Z°ö’ ¶U`Áxšlo]_õ£¹ñ TB‹%¶ðòC>,ðzL\÷ ™7ñ¡Á'†>“d òÚœƒEx}§H\cà }¾>7èÿI™ºªÉ1/ÛÊ„:ý ã¹ 3àBÚàŽÆ_ú†À°™ð7gtª‹ÞsüèF4GméପIîâùþ¤“lÕ4h‘I9¬˜|PÆôvœ² ®iÝf[Yæ…}Üo;Íý¢N!Ëv#iau;ȱ‹ÌŒXTëEW"YŠ\Ž"uˆßãylÀòïÜS˜fR±ø'ÕF;4±à¹ü¬Ð¹\&âɵ†MB¥HK±1JVlvõ•dÿZEȾè† èFÈ;(õ³bgíóBgí#]ƒEV Éí>øŸÞi' ÐgÝ™uØI’õb‘óG^°‘ôL7‡'n˜òÅ4AÈÓƒ¨A–¡‚…¦AqÝtšÎ<ûÎ}¸Ô Ÿàä[`ÃtO\QkØ·:‚SÕ9”Ãk.'˜!´—‘¤!áÊLL ,³V)ÈÚ«—c V¿È8‚—ˆ†;ü-G ³åáD‘Ãñ°•?€³åàäÆÕ<Ò8¾HÂþ D¡°ò½çÇöÿìý@ÿO+ÿûÖÖöÊÿëAž•ÿç/ý˜þŸ÷³ûsý?áÿ±»ÿãÍÕþˆGò,Žÿg=ñÿì5;¿Ø¤Ãïü)N3¹ÍÓªx×¥‹Šã½)}:%nÂuÕ.¥d„h8€†›h¬D)ìLÇдW(/ŸZú0|IMœLÛÆ÷L¼–n¥ªªvU?tò:?5K¿ëšßŠÀꯤ‚±xdëå‘Z—&ÔƒYo/ôU›âµ§¨ÿçùw#­+YL¾ÛS×|3½¶TM8 lïbF®`¢Ôe»]¯G™ö%ëQ——ó ™8s€1MYžÿ9m]ÀÈ•KëRg÷—v®{—:å’‡;ÅQc,ú0é]›ãó¹Ýp¶+ü3?ô9í9›ÿOçCJDEB¯äà-loß”ë‚iƒ”ë¶Î|§öF OïT±¹!‡–S{µÃ¾êŒk°J^;wËû_úC=áSv DéŸÂJçå%™nƒãv½¡wÉ_rﺋ‚¬…€ö®‹™Ç<û2rFC=”ÿ‚œßã%à´¹˜ëó¿ÍwM{’pJÁ I¿¿ÂþJÃñ‡ÿ‹RëiIAem ÃñFIwÅ<«NQÚZötéx•^£¥#~³ÌբƮÙã‰éì•ö»²]£¦b'K“CfÎPÂn¡÷:ÏŽgž·Ò;Ÿg¦‡©»ƒ“™£)4¸A³=kÛ.Ðä&n’•Oë¬O+»³æø²Úgëí]WÈâ GøGëxoŸÜY›¯á?…¿ãâ yjkŽœ½´þÝk5ù£-c'bClƒ¤>«вˆ¥ÛXš|ËÒs»+ì‘”%²€³³WÅ 'ןÂQ”ï]ØÖæ΢œØ„¯þEFó8·Ü*¹NœÏ<5rœ8_¤«œæxUn¤«ðàÔÞ¢·r­¬w­d´Ú?×>÷û7H‘4Â…bF×§ùMïRC‡Ík$–¡ÍH7uü½¢MÁhw¢½¯ÐébL€·F‰½ÙßÑnÖ:(n*ÑIq~]‹Q¤MZ‰pÉÂX‹ãápü§w‰”R!?½2'yuV»#!jñ›cG¨ZÆ(vÛÞXÿ›ßW5æoŽE]êüëF’áñe"$0%6ŠùÀõb5Ô.«:{°‚ˆD@DÈÒ8¡áÔ8^ Xm±.^cDK×.–ÕC¢©8HÞfªmí¡èK<Šª$þ³ê0Í»À³_í„ã\†Ê¤ ‚*)ÕjB©ä¦ªÌ0iê³fTh{+Hù*4_¿hó %¦+ÔI wcÕ1©a›é^Y[¨Ò°|zZÍä=m)÷}Û~ßNÕv¡×VÓ¬&®˜ƒÑÆÔGÒ˜úI뉊sL^§MiV}ZâÓ[G†ìvìb;*Bj”­–q`:Ò2þ¥GÑ.6Švhíô(gSf¬­þ·ì¾›ïÒr[³év²+‘pÌG_•^G²¾”yõ¦“qâ1Íû% OjQjŽQ7roŽ'õnj¾±g¾¯0F H ¥ÒfA9?ÅC¢Û€)ÍcÒWƒKÒBûœBŸ¸\ÆÃEþ"­ç7Lmm4ó!äØ#GJÍ`™š°¾_©4ÂÈ—H °³DC‡=ýCÓ’òÐÉ:‡Í$ÉÆÑ9ööðSЄ›v “¹¾iÿ”òæ : jÙ^hU&øÚ¦%koé¶Ë,»Õ0õij$¼ˆväöï!Jé2iÂäiÇKœDˆ> Æ´§“âNòõ§(O¶ŸžC¾Ø„†~$áT¶1 I]¤ÑYò¨š1·˜h^ÙÃ8µNµ]Œù"Ü Ûブ9ÅjÿeW=”3Ú•Ÿù™go¦ùÜÍ”%üÖ†kÏüÔozë&6/åç$qÙö9&_]2—«•sè1oÌâÍÆ7µËñבMÓgÈÎbL¼äµ·áz}W„+å)ôX)—tl$AÃë”·ÇOJ½è"à8øõygþèsöSnevÁ´›èòL\’`º40ƒ\¦iëŠ`Þž`>KÌçZvo—Ì[Ü-ë*üÎ5Ñê‚WÆΕ1ɹ>™±«’nÕ>†ýæÙÇ(¦ÄZF¸¨ÔÖeì–Ý|'÷·“(¹Ááßt{BãØ‡¿ÄCiÛC¹‡›Ü k£rR´™nwõ•ÛÝ/÷Øþ—?Ðÿo+ÚØÚŠžEìÿ·¹Êÿö0ÏÊÿï—~Lÿ¿ûÙý¹þ[Ï66ÝýÇ[«ýÿïv×ÿo¯$NOšÇ�ª0⌴½ØË`ëÛõ–ŽÝµ°ÞOà…w0‡1ÇQ"ºÉôÀÛ}[o×w-‹³|ë³JHüòô 0L¥ÇâéRÆ´2mþ"y‰»]¸ËunOºÞí—4c dÇ—å\¶‡ÙQ¤W…ùá²O·ÓÊUVG}Ýílï×­Š¢(ïwíz0\£OÖÚŸ_ yz#2JVz9lFúÎ`Gå³L’;Éû­Ey´R^4l}Æ>0Ø¢)—E«v»J|E0ñý×ÉsÄ(¿‡njÞSžêôº7’g •–WÌ×RPøC_NÞI—1¡‹pOzÄý»?gºéan¿«lAâ¢7…–nók”ž¼ŸôgóÉHú\á z³yo˜šF•ÅÆ÷(ÇÏô¢Ï‹C %4°ß1e—ü URßaCœÅt~}#sžáWÃ1Vߌ£ƒ}0ûxÝŸ .ÖEc&¾†C&h(.¸†å%c™¯4ô`Þ—ârðnòìêÖ»¼|:ŸÏ&0*º¯0VzÔÃq˜MàŒ6‚œwIµ!†ƒÏŒl»¸ûÎ0L ýõ^ÿµ —5ꊾÅÈêÚæCtâ]ô_zçÃïâª7 ëÌýo=ØÀ ¬¦þT#£AxWçðË×¾øqÕîÓ±1Ðq]|nŠ-åŸÅ\( OðÇÇ'ä˜O†xÞ§¥c-ÏÍÅM· Ÿ—û::’s¿hãÝÿäã‹eá-)5TÒ=•©L 7xM¡e|ô`§ƒZꬕÏ^í°„;8³Kæ_d]æ¥] r”·[u¨¡Æ—¯t6Áž•}q?žŠ~` @úœŠGæ[Œf6e\õΚ䚸™ ³²w=­(ÌþXdÚ†ÛôÓ‹Gæ FŸE“5y2d–~+cZ‰¸Ü*Ë®"^Àr©øé|E$î†år¼–^k颈ڨf{*ê9ûy#ßL†EåVá,T¹û·²××­ü“Z!uøaLl"ñTRÀK¦M€¡š»@`DŒëHñr±Ê^¹‚'ŽøÓT8™§¥¦ÔÕ>çÇ{%ºùá¯+_ƒ{õ5¨ŠîŸê¾˜ÃÕDõþxpÑN—™a’Tì#é«§N®’ÃîÑÉ‘üŒQðrHŽ ‡ùŽèùТ€úðÎ)JXhÃ!—¤ß8þŠd…ÒEÒò׉R­ã¼:ݨª¼Ò3Ä»Ðøþ †³m¿iaŸm2¡Ýu§?nzÀœ•…Ë'ÕèÔ1#Vp9ø-9F´:]¥K»Sp;U·|Æø–vÔP9Ëš:}¶»ot³ŒE@%w]zxüÁŸû]þlwUò³ ßÇ¢iÆê;:a`§Ãð²ˆ(oZéSÒÊÎau¾Ú›#J|V ÿŽ\w[yQì-š  6æQ …Föo¦ƒáxôÄp>èôgÊ£b6ö'(Àö(1´ÞÜwÅðÏoöב,¦§Ž:‡!0L½fI¥wðÄÊñóXÿ˜.>K r7ãétX´î ™b+¦ÄÈk†¯ö8YQFsí&²ß•šµ¾ŸO©°OG*ví#äTýfKn¢ X*ÕDÕM#¡Ÿ=•m6©šWVàä,¿œ6zœöå埃.] MS¢{YP„„À|Ò|’‚¥•{¬4xÂGÃoH)3}â™§C;=i o§1ÛW?wZå=ŠÊï©WapívüE4é™ +BsÄÖé*Ä2ÓÁ»#57¯•Ç Nšþ”ãš`°„œ£Ý¤^çȡٜÙQNr$,é€múBK)ƒTIæ–àÉx uZf!o‘Ïi$@¦¬X ã@¬ýÍÜÀ÷ÖMCÇ3ˆP‹Ì5͹3;Ô¸ØÍGOH§ƒú4=3>— 4Åi£8Y‡DˆÎ(&ŒèL‹€¸GX$¦Xmd-#R¶Ø¿6Q Šº×B b)9ˆÄH•Ãå5|,ÁUJIxÏ2u1à JçÃÂý‘ôÉÀB÷”€ó,àûIl/b0ßµóÀ_5ïÌ1·ÒÖaĆ•PDNà኶bUV6þš êD%9ܵ4éÏæ/\¬p‘ž.ïÀ“º¬Žæ{KyÙG×N‚¸•ЇÕd¢Œ Ç¦³(gþ©jÅë/@<3ŽÓ†ç8Õ͇Yl‘ÊÜd—Ïtúp-’Ý„Yiz0)Ôö„6º%ÇFÊ[¼8j$›P]¹Õ òbØìŸŽ¦6Ì€8\ч a1h#*ìiš,—CÁ¼œR9JòSɆ?òt|–Ä#Œ³53½E“ax-*ѵˆÂ„ˆ§òï$ŒýH¥P²€_Í ²|§Æ#D “w§ëø®+ —ÓÔ‹"ž½Â×Ù–ù ƒ©D…Ƭ_ýÅ¿·õïee»Œ¦È¹ÅñXß5<¬9XŒÙøMÆ‘¹­XÊi¶±sÆ™/°PꥢÌPH‰A¡TBQmù–åß­`©WâÐé>ÏòU˜#Qgº?¹1 ¤GÔ5Æñu`1ñžå5F Á¸Î€Û>ÚŠ„U“g ð—Q¼ùùø7ÍþÂÕ¼ÄÂUÍwl{lˆ­D\pœÛ#‘cÙOEx Kò#_t‡dÒô‘ò'‘”ßѺ&B'‘u®ÆóÑ¥rø¾DÙÁ5j[X¹øï>m`d ¬úì.y –ÚŽþ5ï“ £SçYƒîýGšU.»Þº’ýRc ëÕÿ@º(q¥@§›‚FBð ‚E^ ¨fêM­³^úÌf$í:TÕù+ò¬EjëÒm»þ_Å+»ªjËÑ0»¸Àð™W4@ Gî²øP˜;¶g²[¼zÇ®™l)<ü3w×=Ø–B­¨b÷aÐ!T•)kXáé jjóåßçÕæc¼myPw!rê n1Dm¦½žÙhíAÝ‚Xš uu‹4d µu Ìd×®@Ý"ca´~ Ôõ²?Äü_Ÿy¼œµGqÚo/h£Äz»Áè;\Qðw6VKˆzažq·{nÜ1ÍÄ–(ãö†ý¡ÔÙ’÷Eo„v`ÊÊ þ¾èͧ}ɦ%-˜6·dµ–°k!þÌsµ Š Ê õÉJ!…œ“5¤˜ó ñ(†Q45 4’¦"F¨[¼|ïó–oa2_ru7ʺ!!Wˆ(Á‹ ^ÀÕ! #¶NÄl¾ð1üúNd^FœðNA²ï¿*¤ÅäåSÔÜaÄÜõÏbãÓ=¥$´æ©#¿d2àAþ×qvçœùxq6ÿÄtFà^è¸\ú¬¼ÕAy‹SònŽÈÛžws8枌EŽEϙ蒫äû y’š–©'3߉—P¦Ûé )îD›haïñZHü¯/>þÿßhãÙæ3ÅñöÖæö3xAþ¿ñÊÿ÷!…«ŽäëÓÖn·qÜÒ–c»GõÝ·i¿ÝÞüÛ`8@—8ïæúÆ£÷àÕöÒrx{4_v’CAòk G`oÛ(-ù.®”1¤6Ÿë¿g³›—OŸ~ýúuýbº>Ÿ}^ï_Οþ¿á|úï‹÷??•»Œ7ÙÇÙµò‹¢°ÆFåQ6œ¯'d•Úeÿ‹úóbŒ7O¥CMm:û>ìScÿßà2ÞÞ|¿øM»%«w+·dZîâ^»2­caï­¡éÙ¢}],;Îr¶Ë!£\žÏ¡‘; ¶ÖŸñ>¢=MY‚ ƒ|iV|%žì?A¿’'ý'ˆar/_‰þÍÔ)Øá‚Saœ^]FNÑ.zî´yÞ›ö’'\ò&Ý{ÙSºÅ¥GNé™S¬ÍÅ&N±‰•Î qÁk·÷ôŒN¹äÜm2]²É%‡©6{ßœ’Ç\rœj³÷Í–j’‹ýˆ¡”xßL¹R™¥i ô´w¥Í‰ªègò‘ÃÙFO¹Äå¸ÏútʾŽ¿šàz`—ô)ïÀ²W³‹ù–p&§žx•°ÈštÌU®s×e:í™U'H&Øïá^%sé1}q1ŸPÝÞå%ùÅWÑUCÑ~Ø#À¥Åf”M\¹)}ì £@º®\Î{Ã5­§a0‘ÕõKtXéO?އ—pÁù”Ë%ìÃv¼¤ÕÇzÊYÊíÖ£Þ]A_%î ^+—¢€›O¦åNB !ÞÑd¯'Iâ;RÙ¨š~%•…ÜG|ÁÐA‚4ù×GÞçêI²íPqÕr–ÇDóøMc×GêéqWà×é^u Øk¼itÙÿ£Ñ<†Y¼=}`=ªŸíŸðZÝŒ› L[—íú^ã¬*à–ñ~Aç%xÃ}½ÍªD.>ŽoÐög]Ô‡_{ß+I› Ù1s‰i`ßQHÑöÍc«|9Ѣš(.l+([·vOéäú`ÚqR€S\ ɯUé„óæÓÉêZæûªw|Õ É :Â×¾CÌc`ˆ§´‚n NÖ¥Ðø€›òªHO§}ÙÚ ðQÀ4žS®Ñ±è}8:,›ÿJžiz¹¬fPI”RQ" IöiEÿ]=˜š$ ¡L«Y!S‰°PN•ªæv'k]í…4s’³¼€UÅke5Æ»³P;í̹%ÎêGYÕ}^h,§Y¡Ü¼„òò¼Vš™CJT¡!g5–Ú1ŽÏŒ,fœ5 ¼Ô+Iüeµ,âÏCQ¾£Ç‚dÞ,7K¢Ž –¾X á½/fÝí› ‘é_VüÚä9ˆq.‹Üš6g,ŸõG—ì€ c½è£Ÿï†;BÞe¦3`•.Á`Bô1p«’Ð!T¼Nب ¬5˜¡&ƒ f*'û†of‰“«^sd ä°(ï!ñ¸\³œö‡Át¦códÝÚênä†ÀïêéªËÛš ðIë÷ÃÒeÿÆÚDÝŠ¨àræï¡M{ÝÝ.ºùÿózòáÆÿŒžGÏžÇq´Añ?·6Vò¿yVñ?éÇÿßÓîÏÝÿÛ[Û‘»ÿãÍ•üÿAyäYñ?ÚoJ¢…jþ¸Š,M§ÛÞ‹øÃI´ööÏŠEð|ôÒƒëÛxVŒëóD”P 2áä‘;,zœz³¾`hMXV„xAÁ`!Œt×b ž4w§B×}´#5m}° ŽTÒVñ³OœÐì+ÆÈºìß /;š ¿“.·OnRÓ5dráêŽmHíüœ˜×Ë¢ÁhYg+²K#²P+½I˜N l K6PFFc™þô¦AæaôaöQG[ƒ©ȱ#§’['à©hpõ4ãë WUZñš=6™þ&¨í­hÔ({¼jÅ‘„ÊS¨ÑH’_(Øöä k‚c×Ù¢9øÜwdÇxà|<(6¸ª©0Œˆú^HÓn(²ŒlÓÙdÀ‰…޳ÞçþÈÊUÔãMdFtªcâLâçUel,¢-_‹Ö©‡ïˆšƒ D{¸ü0Ì%œŸ#:pØX‰|Cîš 6£]¦F…ôeš™Š~U d¼AŽÃʳçM¬qÀÜÅZ­a´0¸"_V6+)ÒBcì€ô*ªR·Ò£z‡;8ï§q<¸?ïü–¶XææÖ¹”ãñÔŠ:ïwÞ-&ú寰6:Îè̱1WN$¼D\Çø¾83{¦GŸ-»‘/uÛ©H0´U‚ Çʳ1ØzL­c‘ØÛŒaAáÌD ñ &øO±±&þ|‰Õ—TfÈd”Xƒ¹^oí­ˆƒFÛÍÏ›ì6ùKìwü3ðòձߦmgÒG…Æz¯—>ì \®YœÛ{\¬÷X––½Ûµ4ò¤zwÇœ.rêÒØl2øœ³Þ7|CN;’ûàžæû×Ù-%™>ÓLïÅáC$d"Þ®÷…éÜ{"%. KuÚo•Öý=¦ügÔÿ‘ò;ÿK¼’ÿ<̳’ÿüÒO"ÿ¹¯ÝŸkÿoÅéü/ÏWûÿ!u€2[m*çZûo”P³¹G¡êUqÒxG&&I´µÆÑI³±ÛèŠ[@×ãý¦xñ‰‡ª:GŠ£àIà]DjäiKå_õZP6‹­b³eg6Ÿ\cú‰ÑŒ£,'fkÚÍëfðeÌ™þˆJöQEÉW NGLF&I8}ôš>\÷8Ù­ØÍÿÝ•ICdˆº“õd€ñÉç)\Ž'ý 'É Ë2ѱÎnÉ7 ]¨ÙŒOØe€9'²átlO¦2øè Cwä4r3=‰BiÊ2ÄÒW“ñ5*l›ù\TZbU^›¢jGÀH˜Ç’ýñ¤‡r lcÒÿ×|€1ÝûûûµçÛ[¸nzzJéÛ] FƒÙ@z¶z­é:‘ªËni˜´`4–qUá´ý@‚.Ll*#EÃÏ4>Ù)6pÙ¿ê͇h¹wѧÄ+”@FøWv”ßžnà°.ç˜!Ć6ßa4ÕÐÒ‚C½Ãë§XD—‡¯s”ûë1%WÅUí±=#ìï—jóéhÒíAÿò;7ön 83¬Š¿ïôGý« É4¤^÷{°ìý©PƪGãËþd$:߯Ô0mÑ50fWŸ£ÅM«‡MY?ã9Ë)³R =\AÕ]eFT_âU1Ú®’(y/: ¸Ñ­GÑæó§ÛpFÏâ-n ÔíÐ&ýôuQÔp€&è¶Dô'à<•Ùý8B*²aE·7X†ª7¦ýAo ýKêS¸ê½ˆH u/‹¤l“3bÜk‚|¿-ÔÑGPßwúpº®épüu0˜*u å†Áœ^š× 4 öæas¿%.>ÎGŸùôê£tZCÿrÙ@Ò) ØõÐQU“Y¤MùyŸ¢ôq´ýËumG6ƒgoO©ïO0£È|DÉÃ<Çx)£~ÿ³‹£>é">aƲa×’9©•^øhaú±ß£Ð=ä‘? ;ÓkÄW@Ü©Ë"òÈS«RRS‚5ˆ_Ü6±À…þö.¢cúw·Õ ãËN§þ¸~ f§Ê礉oêGÄüWEþt"«+cñœ\u_ ÷‚6àÄcT~ŸÈ>ßV½Óè`÷ü£¶P—¿. PB‚EÞ“•k2…àÈì¥"ýÓ‹Ž:*b¯ÿþoZl Æ\=ÿ€²Ùh–„%ŸíÆ(6q€»ŽŒ€r9ÐÖÚ–ñF`W@WÚ9¨pC5n׉gKˆ¼%¨„1%»ÖkŠÊŠE0’Œ9,‡A®°VÇ#žr-û¾÷e¾‚`wFÃ1Ó“ŽtÊØC! qÅJÐŒÂúöiÀ”‹+VIr½ó1ªfÇãTq1¥€­§7½²å§Ó”­ˆüexWËìÉ1*zW3º"û‰Mmtz 4¤!6ÜÍUÒkÆVämݧ ëÁÔÈ™t1žàF ×BЂ»œ¹/ b $xìåtˆ@‡|ŒX)rð‚Z%¹¾PrmM–OÎ¥˜(ëB9ñ¹…±‹åùßh¦}аÅËÂ[ü´&öjð¯Þâ' Ö‰æzM6åVçU¨Ššg¯ÇÞ½~bïõÍdqëg°¸²! mÞ†Ë~Í^ &ÜHšzyOÒžJÙ‹3¬âÀŽ?Á•¥jÖ˽Z© ¿ZªÔ†?Ѿ>å}]ßÖ§ý§wð¼ñä}29&sÅ©ýuÚ_[ -A¡UXf!òÖB,²ÍÌ…³6Ù–.²ä&‹ÿFØïÛd°ËºÉ-B_ ºâko 4î[Ò]—6q•½!†ârĆ@o% bŒeLÀ"<©„ Ns€•HòRèõÊæ‡þƒ5}þÇÒÿ}84ößq´’ÿ?ȳÒÿýÒ¡ÿ»§ÝŸÿåùæVÊþ;Ú\íÿ‡xx·gzéµÞ`ìçcVé° ÿVEÂÕÃQl9øÔbúÀG¯ \Â`Ü]–Ù(t…O€±ˆN°¾S’-•“È`‹éßìKÅŒ±"oáè,8O®èR¸ûz2>ïó©ü}ÿ™âhëÌÞ,ü¿˜Ê è0|ÁFý"wÄýš‰Á²Ef–'­fa5N Q鶴ݣ°úèQ «©õŸJT½R?š$)G”rñgWë#ë•ÈDÿRrhhÒæŸPÀlÏêŽ̉Ù·lY± ûå®Áš ØõVÀÑÃv÷‹ v÷ì|lùïìÑÈ·VöŸó¬ä¿¿ôcÊïg÷çÛoxì¿ãg«ýÿ:y2å¿]Ãþ{¯I!¡öNW’ß%$¿·•øªO{MõÇéÂ2ßùzb6-$ÿíæÉ»+ùïJþûøå¿Ýk¢ÝÍ5ÑÞsL´C±ì}Á™0-¨e²mµÏ AU$ìTv«§··i îíãW•Ÿ†GVg¦!¹Bÿ0‘ç݉h—žÞθ·¹ï‘–Ö%¡¿Gi©ê‚dO2Ö…aIgÉF[v”s£6É$:pKM•`­`…EËŸZ¢ä…$d% •-`-.^ÕöØ‘/ô„ ÒÈžU*4½=G³REÃ’¾ú]1­•«hà­óÀ“Åพ±o=‹¬PÅ^àŠwPz\¸LæHâ°LØŠ=qW²Þ^ªÓ…—ª™±T›w³T§Å–ªé,U†øÞ¿TElI|9±GÒËãÇ›®?ì–0Ð^ƒùkœfÔpã­¨%]DÌŒ—Ÿºq-Í3w…”«Çx,ùÿÇéJþzþCå+ùÿ¯ýòÿ{Úýì¿·Òöß[+ÿyK%ÿÛ1äÿ+ãï»0þþá–ßo;I ðv€ÿ°Œüæ’-ÿÛYÉÿWòÿG/ÿ4ý‘òÿ·\ùÿ­ì­eà&¤íÙñ¿ÓH1ü.19ïI’@ÊôpF\K WÒµg¾KîÖýZr?®°#ÔúÏ£‰XYr¯ÂäÚok_þ…‚Šür¶ÜY`ú°ë¾—À!¶]w ¤÷¯ $΃âå<˜½7ÝBŠÙ{¿í<” Þ’ÿNOüïÍí•üçAž•ü÷—~ ùï=íþ\ûïÍ­Í8mÿ½Úÿò¨“(KþÛÑñ¿OOšÇ|ü¶b†fø:{øˆ"€wcð©ÎàêÄΕ¡Àoô»“ô»³ ú½’(?~‰r§XÐo$D õ «M [±–ç.p¦.˜ooôaŽ´P‰r®µ[)®41$ûèd;}òÆFÍ»­µœJM¬ÔôŪtŸ’ôN`çźΈF>ñÆ?Õß]´rï¢õ‘"ÍL¬å,×?„+¹ŠVC¿U s'ºy¸ì@çÞèæƒ+Þ„qÙós^¬suþé÷@3MnF7"ìf>ÙÒï3NúÃÆH§!âcKua¶bh1Vª ùÅKÏ–^ßéÔ«+†øÖaðE èQÒ ë m‡HÇW7‚ƒúrJŠå© ŸöCxÍÁ];ù í„ðj"d,sŸ$}±ÑoF¿u[cöF†ÔÛPõ¸—å4?È×CùWÆ}a:Ò)™(uäÞ9¦= ¯T@•$8üö¡7‚º01F„nDÏŸƒ`ò§Ü0è:kK÷J«§êž"Ú*¾À’tÔ†Eÿ°å©oLX<hfD!åÌóÅö]H $üJ°yƒ6òÐ#”¢(°~ˆ7!œù‡ŽÑÚ-õÚ¡ g~+€3YºOd¨öãö§Á±¢Lú,‹ÐÁ1BÅ„>UÞzÑùÀeNy!o+ãI+þ¢Ð1g>šÈY/R»NÎË8±dΣ¦¤cOÍ-võ”yóÒ³‰ ÎÆ™‰ã}$ÔòÇeôæ ÏØiÊmÇuÀ¢í)—‹%•~o¨%”®âÙ:‹gOøù[ÿ{õõ¿ÛÛÑæ¼Núßg«üÏó¬ô¿¿ôcêïg÷çíÿçñv¹û?Þ^éäQ‡b½éè|_+Ö±Û†omC÷tþñ(t7×£5/gâ<¨_•íŽQ"t>Ÿ±v÷5 wßà*}™&²ÎÆÎ‘ø³7Ã_Úýi¿7¹ø(vû£Y’è}ë7“ÁPÄQTd™cztºè[éÍ Ë$ïÀEi㥩ræo‹h_Q:ç꜕sZãP8[!ÊF¢¹Ü{}‚}øiå²gZ¶rùõJ¹¼R.”Ë?\¥üºJ™iÌ’*åd[étÆ8]؆¼«Õ3nqŠäã2Ù…É[À¨*ƒÖ ¡5ô»S°›.ØU/¦$Ç#k1ùÎôULƒ3Ô„ä¢wÝW“ñµÕNo”¡Z—uM¥<Ç^Œæ“&S-ýîVoúª‡Æq'ŽiJ›žR¦¿¾+·4Ñ*—Z•híi,Ö¬ 'K–4”,µðZ² %KÑkiÆ ƒß‘hªsCtú}Wqÿw$Ó¿K8ÒæKêéÖ±¥ƒ/}Ü ýo½k¸wÊy"Î=[Od£õ5ÛŸ˜ÿN&&²ðÚ¬ŠXllŠ-±±-Knl¨¶€bmŠhKDêu„bRq,âM7£X•ˆ7ÜâØ>E77Åæ–ØT…67Äf$6cøÝ=m\»¶T¹­ ±‰­XlmÂï©¢ðl«¢Ûb;Û±ØÞÛ[ðûßdò&ì=IÚ‰¼®*/§‡Á"{ÈØ\@¸oúÿ.KÜx¹]Ýx¯)³)#h؛Θ‡›À1AGÔÌ:ÛCØ(õÒÖËg©/¨O Õ #U¸ wMž†ê4™Fäé5é!4jgÝ0©1æ­Ÿ+£:’?Ú^ŒñrFU.zSDzÜtÁ°ÖÕTȃ ýÐïfIÿMŒ¤Û6ðÓÙ ú­8»m §³%ôC»‡PÓèÅÜúIï"îe+=N¹•Œ’÷â–T›É(ã‡=ìÝ½0moeãôÝpž­è.XÏ;¥ìH3FQeÞVŠÆµ"‹äÑ×ÌÍ–·‹n®Œ •žÕ§W£èÕgØ(©GgŒÞÐS½c@i#Jõ4VýŒ©âÓÍÈUÉæó[îoPy;Ë.GæZb§X˜Ìm´ûrçˆ> X~wvs…1<ÄÔRêÉeæ;¸ö9cjÅ8 É”,sí0¸Ð"÷xï,8üà¡þƒYÚ0aŠ3âîHâcá7‚)¯ýgÉË7ö#ÉÍd|ÑŸNÕ] ±6ÿ8¿2wâ(¦cV2vÎ )›d"üNº—0@¿R4àÍ#yÁ«Qç]1ƒ N24AIYù£hä°ú¹òØne‡“Nò·LJéc$m.R¼Të{1J6mãe€1ÌØú6'ÐÑ-Ì3wü¢Û½£è¡ø,O…æ‘ÉhgŽÊœ¢o›_bÔJ€+ëš¶˜iþ5‹ÞsCì­þŠHTĽÙ=žsà1r/©Øz(FåñI2EÆËȃÅ-øîkLre U/,‚güýàÀÎ9.Z‡“-äò8 ™Ç ŒáÎå ÁS@<¸„D Ñ jQæ j¦èJ}_Vذð<2¯9œöJ‘t·ÐY©U<<ã<qœâ—cÍ)úVò‡ŠŽî˜‹ò¡ãFÖeïå!<»Õñ¿èÁ¿Äùžy²Wþ~Äßìf?aa²<Ù5²n]wpäß)EF=Í£¹_-,gƒM™’´ÑÛã=ZÉÛÒ“•XÉÛÔ·«,¼’µ©çÑ0 ·—µÉ=T@ÖT%‘¶eI^Å”u<ªÁ¦Çæ·G'u[Êt™ü'áô'Aö@^áÉŠrç.íB˜áP]Húäž½Ž P¢ðF”›aÓHVþŽÃÚA-®âž*_‰Ô¾¨šIUB›¤)z3¦åÅ݆Sƒ ìX{Êc ä ?‰S寂£T[ÕOç‘dJºmŠg}u%T.O›ÚÇß: ç9ÊÄ)•¼Í&ƒ˜Ûísëµh‘ö%´H¶Ð%Oü/FM eu'«Þª©U_1iݛ˭»k'?Ή™%!£´À85jz¾‰šUyý]1àö"þFE‚jAäôÁ« ò‡P”/,I}Ëån-ƒ=‡Ëb÷¢t‡~¸é¥X¨qŸô/fëµ-’A®IHþ’qsá”[B=õ6Büö#8Q6*‡åe·–™¼è Ï–E{Ê„_à„QÛ.çpÉ–»y·Ý"8½$'QÈ’öž6ÜmHÃbìãA%^†yô±YC|”g_6bx·èBLY¬–q¹e(¦‡¹¼,Fîñò²þ}®,ŠK]_þó./ìËàqæ¾–¹¼<ª«Ëbhi^]–ÄÌÇy >JÞaõ·~WÇ£¼®,‚1´÷—¾°T㜗 ¹KsP?üÂâi‘[KþuåQnW‰I‹_#òÉÛ×Â×¢ è=øU…pä!äK®:'ˆwµÝnGßpK0ŒõÜ[± ož{<ù²ôE"8<3m8Fý.˜6<©ù¦ ·óßüÀüßÑóèÙó8Ž6(ÿ÷öæ*ÿïƒ<«üß¿ôcæÿ¾ŸÝŸ·ÿ£ÍííÈÝÿñÖ*ÿ÷ƒ<êtsÒØ¹ÀO”E’ü$”¼7ÿ6z“ï¾tàñZ’ ûÑåÔ¦‰·Æ_ú×çð:¤½eží{ί «bd×^0µö‰(’[;?¹¶›][Õ0ók‡lçe؆֦s8œ4õ†“»]%‰ eÛ>É˶}"VÙ¶WÙ¶ýÙ¶eF6Däwû¤PÞí‚Yªýy·Ãù¦ÌÆf3ž$Çh±+7­›SRËtŠž¦­ªNMÌFÍÉ Ô$ð« °T*j‹:Œú$?õ‰Ýu ë²ÎE½æÊ» CM}t’I£ÙïEL¹„ÔC8‰d4ŽuîçSrqÏj(RŠj³!¨½öødJå}ÔÅÌlÙÈ”¢"Ðv­ü &Ivº¸½HRýãÕà¯>ýh¡é¶PŠGµOk©f>Q3£Ÿ+åõ]çÆû©Râfð3;z":=’ùï<Þ]¶¹[dÑ eÉóôò¨rÚyòoiƒê"©¿ äþ §øòåxó'ƱÅÚ{ǘåRJ½Sâä=LN¢¼³q‡sH?:– š)-Bù,Tèª|oK“?wv[™³Û´f‡6@·˜Ýæ³£¾”¿ÒVÆ,æDM~|uÖ©8ú‚= /'P¶€7 ÔÛÞPÞŸ!F*©ÝPNØ‘Òë³CÝ࿪ã)ô>ñObµ Jj®ŸYa5Ô@2Fmuð,Œk ªçT)û6B2Aê÷ù:{îÌçbü"oðÑF‚Xa狃Íéç7÷AX÷Hðé·øä[Vª}ÎCÞC'!‚¢å&„`0ÔŽ ‘™(b4Š=kk+€Icy"¡"“Í #ž1Q´ØF‰ŒcÚGÁ\§ÅGežHQÖ¹ë¨ôq>ƒ4'°Øê¸0r¬ë­ýubý!ž m)lަ»Þì®S`¼(4¨>=*ËŠâ)÷´V.ûÔÖ }»/µrfG¼ÇKÜøSÙŽ¯“zX±B‹d‘Ó.Ò¾!›(á©¡Æ1ÓF¯VØÀ=Ÿ^ø¤¸^øägÐ ÛúßÙãÑÿ>_éäYééÇÔÿÞÏîÏÝÿÏž§÷¼½Òÿ>È£N±LýoWq­ªØ«Šý•Ö7¨õ @o«ïÝ“êÞý…u½ÝG¬ë…´¹¢VÀ, Ýíæiw»+íîJ»ûøµ»ÝBÚÝ{SkvsÕš{N×!µfJ™²F&e£lu¿`«èèë´[Á°úç5Ýàùt~ÓŸÔ2ûüUpá‘ÕùtOÄ/?LUvwª½¥tkî{”nuI–ïQ馺 ±ð -[ê”èȼ¢9U›d«TK†ê(¿ü¾G‘æH^3'‰_MmOäU*E³‘+šÕÊÑÈ'…ráÙsOÉ¡lH˜•* ôÍï‚¥Š´jFµzÌY Úò^Ÿt5w+ÖU¼C2FÕàQñ8ŠÊZ„×ûM׿ގDvÇ~¶,Ú+HvŸv«tk ¶©Vm1$rµu㾑!†ìfŠ!mùß÷G#ÿ{¶µºÿ?ȳ’ÿýÒ)ÿ»ŸÝŸëÿooÆiùßjÿ?È£ŽLùßû´ÿyr®|@néB0¼µ#H‰ÛYÞäý#.#|Ÿ'|¿ ®„‚_(øþ§qùP0LÝ“*Å\?’Ê‹;˜uïUNú>ßýÃé: ÑDŠ–•zÈœ¶kŽuØï]FÄÏÆ‘ÙÊ< c@ìYo ‰¢·œÙ•*•ä‚ã› ¿‡1¦n¹u¤¼ ¬5½3’±OŒfògŽÕJöŒ2€g/»Ï¯ƒâg@:5Ó$¨¥‹Í:·ˆDªUÖVþ-?ƒx½ªòWÎ-+ç–,³ÝB®,QuA'¡`¾Ë"¾*E=SüÆåÅòIùµ\N£I²Rž’wàpOŠl¦Ç¶rq]Flø8 .èrßxðëz€Ü§ËG‰÷¹×½â|;(F^x·ußpµlõT|9[Ó¶ŒÁÿûâÿïƒç±ô³óG£ÿÛ|¶’ÿ?ȳÒÿýÒ¡ÿ»§ÝŸ·ÿãèyü<¥ÿÛ\éÿäQ‡Z–þ¯»cëÿöõ7¤ĸ®;ÁØÒpï¬4„B ÇzÂê„æ­u…;%ÙÒÒÚÂîÎ=k ‹* Iî-åņÌö¼G"BŽr–Äg¼çS­Lƒ§ (aÊÙ E(°R(®Š]¡hzï ES+T.RQÊ= „t©ÃÐpRãìÊm GÒjN9ï¤Ü"÷©ž„õÍSOëz4§ãßt¨˜ºÃq¿YDF³©ób 5ŸX ?äùÊ ³cO ¬_Ýñ(XÃênçØà@x2úÙÊÕ`çÑçJ„†ýJv– ¨ç6€;Ecìí`¤Ê ö ãáYñEÕOµÏkíí”t#Bxâë]F¥QõSåóšµ* ñ#"íACEmzÞ˜“3›¸O€’ÞŒG¤D…ü…,LòVÆVÅù|†EŠ@´a ™±“èiw l<=íκl ó°=¤’ÖTËšºX³_Q-ëÑjž"^†kŽJØ ¥²5U¶GÖϪ·5šâ{WPÊ®c éÅ‚‘l²Õ¼ÂÔô’6㰣ĜrzŠ‹,mêN–îWÔ¿" gñEÚÉÖ S–ÀzU"œefºõ|6ÃóÙÊ/™¥o)}é¢ ž¡‘¦ê5½à¾ðm i; ¤gK.ú‹¼%*Õ»_ôçáù¼XxÑ i- `a €”‡¡£N%‹”¦B^*U\è[lˆ;Ì+æ_ÚߣNŽ Ø^P¬ò[x9Í'36™Ï¤Ahõø¢{+oȉJ9gÈé¨g"GY½¨ê5ƒúÞ~¥£xQÒ ¹ø~{sQ²“;àŒÆðâK½° ÓbîÍbħ8a)Î(ÉÅØ[ºÛîƒ10*bòƒ ?Ï<}šBÆ „CÆžDíji2d÷$2­Tgškž±&z¾ä‘e ¯íP”{ ÉÞž¿ùáy'° ŸñÆ­y¼E‘:ŽDê¸HÌplx3w2 Ž-£-&~UÎùz‹‡évœ6<€ÐñÖ¢çòô²ål†;–ÛÚvõîáæÅã|^<'™%Ž=dʘoÇ?ÏŒÉqÏFq÷t )[;‹Ã'¿—k:Ä ia„èas;~,4B$²¼; Eü°ÄœËz°pêfÉkÄ/–æb|›×oÁ˜té…7í·Ì}é˜äݪaxäA!móçZ”Þí©qo8¸¹‘mw)g˜‚*™`*¨Æ·À«Íå/Bw‰W›÷ÝÐÔÀ­”1j4rÏ÷¥rgŸ’YA1ãÓîÎrƧ¶ýç#Êÿ»²ÿz˜geÿùK?¦ýçÉÿÃÖOçÿÝ\Å~G+™öŸ'ûÏUà;²ïü¡¹€»*°a’cXãÜ: p7/ pw•xeÂù˜p>@à• §=©5áüQ †Š+©¬•FØB¶Å2 [i„ÍvmFᤙå O~¼¡ãÊQØÏÏ`‹xþÊñçÎ*ûȬTʾô‚b¹lÊ",<¡œÊ¡:·4T?ŸýãÿÏÞ—v§‘$kŸ_‘ÞsŒÐÉöX3¾sÐfЂdÐbëžûCIªn ‹Ýš_ÿÆ’{eU,Éž6ÕmIP¹FfFFFD>±ØŽMË—q|ÌgMÙ­ü.oÇ ²ŸŸÊ2]àú‹øAZ~Ž˜n"Ï…)#ö»pƒµgx=ffû¯óˆ´<SÐÅRuåÿèQÄ’þ).YO5$)oH×ãñ¹)÷œþaysåùi8† A7ß 2<Ès%;’–©S µü£ÎSù“yréê΋‡ïèO6ðF A.O%[ºÜÌߟ{Z,ã{(Ý¿·Ó?ÄãðlqóÿB¸ËÕã=®ÿçäçñÿ\á¾Ì³òÿü¥ÛÿóyV¾ÿgíõfÂÿskµþ_äQ»|¦ÿg;äÿybdA ybå*å·ïñ¥è~'?A ÀóöÏå)ÚGÿÅýî€ò'ݘ–ñmçù‡¶Wþ¡+ÿПß?´ýƒýCõšÌtÕ©²­ÎÖ‘V{×ΧÄDÌfìá^äöa‡Ë—uOÍÊ¥€!e`rMŒõG`®. ù”c­Ññ»¹ÎàÓG9_ó ¦íÅ=LÛ+Óç~ÿϯµèÿ¹UÝØÚª¾©ÖÐÿks…ÿùBÏÊÿó—~,ÿÏgZýy뿺¹µ±é¯ÿêVmµþ_âQRÇNûôöÿ}Úx/ktìÜ)‰Ý’Ø+‰öyµM?›ø³F×àïÝ­eý;ÿ <<çÐæÚFuc1ïί¥"Òhϯª‰Ç„ìØNyþ——5ÌrÜßGè6I_–x(`JûÝ cin[g¹ÿEÏ™ñ ©ý/t@”aÿ¿Å¯wèOø‡þÿ¬<» ¤Â;üÞ` Jˆ_ã÷ÿ[VßÚþƒQŒø¹º†iß‹ ˜ÒÁ«NùÉMûÅ·0nèÿæ¹)ïR˜[í=e‚¼;;E(ôŸè(d•ºŽÎ\e1ý÷dV kTÒvý‰ÅôFÃßç·ÝYd׸€?ŸëqôÌ~ãxd=˜tgñ¤»‹'Ý[<©zN‡z3yÃÙQ9’È?ÛŸñŒr=ýF° ¾MâÙ,⊠”æúñðì‹§°ÀåL6N“¸R¨Nä›fò×7\\‹$Ê/I=èœCS|Ôî»·ñúiZÙs¦¼Û“—\…ÔŒ³¦Û¸O˜[ˆÿÑ1¯q±å6´ÓZ ‘z,ÙöÉhÆ D5¦?˜OÈùq/šuã;ãíy2ꣷ$qêK`•@ èE4º“Þh§³x†.܈±Øâ8Ce½)0Éyï}mgä‡ÔÝwq—Ð{jõ罈ÛOÿ Âî° ÜÎh2M¦%ÉJ†’3¢ï”Ï)¤Ù¦ùt>}#¾Àc§ñ—AT"¦€… çκ5ô|âµ¶ò®úQNL¨"(‰Fýø d)‚®LŽó硯é£íè¤ç O.ŽÏÏŽ³êáPØÖÒnR¡}7JØ)wvÉÕ~5aÃÜ¥³ ;'lûgðÍl•õ ÅL§¾kÍ'uÜ[¡„óúüØ?®—ô} 9f×OväuzöY]ûZÙé’õ~¯7TóÃwøDEQiCm,ˆWgÆYµv»èž@³ÉWÖív|ÝT§•Ðc}8çh/7µ)5óŽ_°¥=î|ëŽÙתô¶•ÈT·[Uî4Ç7Koëæ#Š˜È|ƒ!VÊ»V=éòºS¨—÷Öt—ØÇ¥À®‡;b­ÒÚ¯˜k½Û hB—#®i‹M$Ùÿ:7 ð+dE¯ç¸ä”Ù€¬;&þÚuq>hY*5l(iÑíxÑí«Õ%©ú4užaAÜ+Ý5]¶9¿ÉkÅ3„î• Í·Ô0{Á®{§ u)ÉÅ_îÝáa¤ÛëÍ'Ý<° ÌÆx[ÅÙ©ûQ/f×[-vgó Ýs²6ßÀq]ù°_aÞXÄõ•œâ𴽩ç’ç…u»‰¤öœé)¬²ïüééwæ©ÅI†l×η{ômÙ"ãuˆ„8e«v”¶/xÍ&Ë ˜]O=×^ƒxõBÒyAs|7ð×å4v×-'±"äð[R•#€àArA¡;¸‡Q_Ñ¿çÞ`8…œtÿy‚S.”h¿¡ö®{íu #÷%Z¥úð€ÒJ¥µ³N „ _c%àwˆ~e^*LQÜíø R–2ÆÖ±î½9ù™sŸYŒë\gýÌÁÏ#ÉêØ´u±Sì¸Ö‹bÁuøšÞîv\ÊàïrÖ=?ëÞqoκ‡YSûèh…w Më£>Ñ–'Z¿ØEÙÇÝÝD'qzìÈn$ú±K$ØÝõi@½ÜÙ‘Ý”ý´H¾/§N}}/À\æ/K¥/ݲX€+(˜4;9id2oG„í2¼ƒcà˜Ûú\0J^Ás…×ý€ô¨—˜ÚÁRøê»nÚÝô´HwÉë0B(…en€¢øoNKÖ3ÊWC#N¡Æ˜eJŠ0/ÕO’©:o;Uì"tÎgÑúA›’ì¦'‘3t·SÄòÊfsš§g‹Sb±ë˜²¤µ-4±ù {Ü¥ø úR ©!6ºK¡lذr'è5ÙJis(zbØþjYEõÇê†1áê{Ë{ÁQ;ÄCA‡Üjè⬠sn u!–ש_ŒäLê#WgŸHyáSt-‰ ‰Lþú,¦/BYbsºôïSíÊ—µ•]Y=¶ýw<ü4ø?+ûÏ =+ûï/ýûïs­þÜõÿºöf+ÿq…ÿó"”IûïÙñq±}>•D³µ ??Óð³Ó9i.mïýé­½Àó Ýè%R1ZZIj‘„¥í2@>Ÿd´ÇÏËø|ˆ¿FC1û6R,_#´Oç#Y Õƒh–v |)@âÏBEÐ$6Õ—ÅM<™Î\õÇvÒ:å|,¶Ép#µKCϬ}¹§TvÒ†8éI#v»¢Ûqß Í4–)46aC80)R¡»‹{wa2eœ”.×~uÑJ¤`ˆŸ€Cõ£q4ìGÃÞƒzá‘pÀIÍ\€áíì.»šONQ®©—/ý§Ž¥°áªë…†Dà ì `Ãð'¯¡Uæ‰Oa‹ð'ÒÀk°l0V°@ßãaO’ÿK4ûEÔë€ ì”?U¸Hc(ýüô$ùœB’Ï)$ù&ÉçT’|~J’|®p‘†$̲=³°_>¯X½ÉåãU¨QP|Fðc­£ËÙE=Ch’/a»¬¢‡uµ?j5röb£‰µ É‚—55îž«SjÀÀˆo3êX¢þéì3Ù)Ûèw'd®Ì0)ršó¸÷‡d³¶}Ý »v¼_©&¿Ë–+Mצôºi{LrÒÊ «›£œå¡×,ëÝÀßëÄUÖ”ôCj÷¿é!‡†rbù¶;]¨k‘ç`‚2o&¼Nö°^K@DG+ Ü•XƒµãGQƒv®ù¼‚€áÇ•ÿ7ù…ÿð2ÏJþÿ¥[þžÕŸ/ÿ¿Ùzÿ߬îÿ½È“"­¸òÿ&Ëÿ ëº:„®D—{ ØL9¬ÿ'û(€X§ç< \§|o÷šÈz<%”ĽýÏ×Aá)E|øù¤RþKø×Ö·×Yb?÷Ïð¯ï2s¯;_"ñŸh2"—‰ûҰ;,m(Šwûd7ï0‹&QDöìýQF·¡øû{ÄeF€µ€»-~‹¤OA’ˆºEM¡WÛ{I…uîö:' 66­ÃwZŸ5ààñÙùì xVÙI–>žl¾ÔñÄ–ÿÿ}ûåg‘ÿ·j+ýßË<+ùÿ—~Œüÿ\«?7þ_õõÛÍ„ÿomcµþ_â‘[žãÿûñÃNAúýÿ Œô~kø³MEíÓ«ÝÖüyzŒ¿; ’]HnÙÿx±¿·:;±Û t×@‰6FøKxüÊ`êŸdbK2±å˜È1ZÆá8TäNAVMˆ“»y²½ ò$O) £ýeÒEœÇ®¸†Ñäjé£ùi¬æ¾Å³;è:æžÎ¿¨0èè¾GóíaëÂ¥™ÂàwŒ F‡¡xè`)¶)ÝîǦ§ðž­Wij¸Ïb¹ŽÿìÑñ’å:äE²K:Ñx \g… µ«¸Xº g´Ò*¹°+©ïØ•äûà ÍrÖ *¦J§0 €y”ð ¯*ž°Ž×.Ö«¿/¿—a:JØT‚0N„%0 è,™Â‹üǾ¿Ð§îŽ?8®O·í÷°Êþ˜¯W×ãòï¥ßÑ ¬^ˆñuTª–~/ÿ1_ûçûøŸïïãaá¾ôûú/¢‹Ñ^l}"S¶u §fEÁ±øœÆNi<:pc¾­À|˜T‡:L–¯ý¤yì¾ÏOº¾S¡¢pN˜QÁBw´µ¹Xç’7 _ˆW ŽÕUŒÅÅŠm%Š•ƒž^2óát5J½/Uï5g»¯á”$üÙîäV}§šKL~ÙBw…îšBqÿðiàLÓ/Sèì,2è ª¹¾hÅÉÂxîXÀ£zï+VíB;ò"ÉÔ™cf~Å…«;ß`böGÃÈYïū֫mÜ‹Ý,^š6¦iÃpÁЍDnÄ”ýqUÇ“è~>˜ÅãG³´ËQ²²…†têØÅ:vy6äV3šÎL=¡J`S¤zvõì`=;#à7j·ë-Ti¨–I4t{,;ÉnÁÆ^‡¦rÌ×T7ŒÎ-E¥ÇéÏíýNƒ6ÔæLïFƒ¾œ6tñ&!†YëGŠý€c­$à ´÷ßæïKDœ³Ê¨l{†§– d…îþÈ•øOÙ¼’f Ȉbž],4¾±™Iï–¯²(ÆWoاÜ¿DÕëû4¥ó v¹«Öß4þçu— !¹Ï´¦ÿG6¹~þ'71H€¬­¥¸PLï,¥­ ã«Ò“·º$®oøòHÂËîa‰©Yb"õ±*ªô}iÁDŸ@‘¬2Ú¼}BÅ:ŠôD_¢ò0§º5S²oÁÃÄÇwvl'!¾<‰Æˆ×>œQ¢Ñdv7¢">â.rÏþ¼7ó¬9²¥Äœ£›A$õ¥;ÁÕÒ%g,Ÿäêy2ëe² õ‘¹¦Òòúñ 3ÊxMT†QEl𜉷‚Tôgаåf2Î(añLºº[\ÂÚ?ìj`=”üYª® ¥FÊìžÝN©PˇÁòŠgv~4°`ª?¼T’¶0Õxèr(ÞV:%š°”MyÛS62u­(8ÿ¸JØq–à IÛ›ŽÍúw'¨–TŽ&÷¦ªÚ“Vý Ý UDV¤#.dÖ‚Yæâ{°˜AÈòÂév”±ÃALbXƒ¤{VV¬T©‡Ýò)¢Žg£ŠèG¢9ä[aq¯ËŠgýn_v¡=¨õ錽qAŸ@„™K ;Ñf=&ކ½ˆÊ«@±ó?"]È ¥­N]îþÉ>ÜïÒV>¡9ùöAÜúgF·üº"ö u=†žæ4ÿ½;Q°Ç] Aî¤ 4¢Lå:2- P„ÝÛIô=A¢nå %; έIµÏC$@U¢ìŒ3v¯œQTß¾©üHó "µ”ò0-x´®Ø¶–ï7­4 Ÿâtœ°H{_·ÊG\ŸsáÏü:=Þ ijÃKgþEž4¬ö„M+íƒÿú¿;WõPxçéL7…h×A;Ež jkµOjé]æbJ^ò¥ŒK\ÐIKaž”աѰ !BëâéH;Ϋýñ4Œ†¯ÖÌ=VÉC\QßTÂf ¥¥v¢RÐÔA ”ë¢iëÌ÷p-ÜãQ92É%ŠëÐeàoÝ1î“U«bRÄ{XÍrU¬aÉD³‚h•›ëUyjâA¨ª"HÚ0o¥µQ*<#vmN4Éè´]''w¬ ‹RŸuÁÎàËX|z£,Î{ë{*mC}‹HT˜ ýP§Tª‡^Šš¢æ¥ðL€ð| '°Yx éxâPµr|^9I§-V9ëÎh@êÅHˆxê㺦fÆA•ηH»+:”_1Wxb*;ÑÕ„Ks-²§ÔËVØBXA˜F‹ç(LÖ £››i4[·ïK1†k(\Þ³@t3s)ˆgÒr‹.î{û [QS:\¯Ž¡‚W%›à°TÏ ²¢Š“g½Š_¢•U—lVB¯²æÛJéRžÎÉ&N Ä‹;a1ÃÑ¡p(Öp);èf¾Mëô|›$@¾å;ý–ÐÎÃߘÁkð0ñPèsLJÙ¬à[æ$#ÀM¹ ,Š@Û Ðb‡–sÕ~Â"K)‚Xï«ÜÅPºš iS44¡âkéÅ#ý8+ÕåNXÍ&uöª×nÀ{Þµ4p—üaˆZ…ÔT!ª¼@Â5‚L¯$%‘cÞΫ֪Sý)êh(n¾ ª¢‘¥[dÏVPÚÿÅkÿþ,ö_øceÿy‘geÿý¥Ûþû<«?oý×6jÕ7þú¯½Yá¾Èëݷÿv|ûok§$ŽvRíÀé*4‹úŧ˒8À¼+{pâù{ðÑŽ ¬2 ãXýã0³´ ¸E®Ñ8kšøÖäe,ÅÛR-Û°óÈw™Ã]JNð3¯‚Í?ÚYW5;~8]˜µüwXÚi£i¢BãHüóýûÿQ—ŽTõ7óÁÀ°å¡•ÝcØðjKL<¿‰œ©~¶¤Ñ&ÅÊ\ªwø%*rÉX—rž¬Ny°$#8(yÅžð´8@åø{q\ü ëzÞ<Á¼?¨PAzÞ·Ô¼_ÙâW¶ø¿ˆ-^âðFc缿;çÍÝ]2J–Dû(ãptôlFy”|KôëòÙmó-HR¢þUíô<´ÚV]^—"ª¾JIƒŽ³L~qdý½¨!'º‡CvÉßîbhÏ`4ËvT7üKah÷)ˆ#²‚îˆ5y³ ƒQ…6Ȗ嚃ŽHbXUóõM;}@Èà(áp¤}Ž–&ËàèÑÉb½œÐ&:pÓ*•fÔúæÈ|~‚£`š£…=üüI‚£l6„ëãN~Dxö9#}ÑYXŠÆz½Ð>B‰yMl¿·>”Õßp(W׊…#õgñ<ápTùp^©¦$ò¨‚xÕÁY¢;œ¢Â‚,åmš$4NeºÒ#Û–ƒ“ª!½Š;ˆ%açNNŒå.þH:]´õ¸ànÙ­¡¿×õ¤•ªŸ£åý)ÜsÊKxTÀvÄþ2«õF'Ý,Z)ç£#Çáõ`;”æÏ^rBͺóÂÞˆåyE§2CÕD L%Ûá#u*æðCˆôù£ºjyVxÄ$‘#5?6r=È’ÓìLo;€#ñÒ„Ží-ákaî¡ýÍ«îP Œ²’×|ã´®°9ìMxBŒ˜*GË”hHÿ]VcÅßȵî2â¹)Ä~2‡s!ÎNf z<ç ¡Ñ”:ØjÀÍo‹Ç¥Z²%Äahj¶“>Ǭڜ¬‹L頃ǬÞ|2Á „Ür#êã–+J±nõ‘™7Ž1îu9 )¬{¡õæ—Ú‘âÚjE,@3†œáñ7§hþp´ƒ\¶Ü“ÀŽ®‚ÅHsIÐÈCò¢NRûªø‘Ö¾’æÕ(`‰1…_•Ã{I°8RG#+ÛQ¼lÇefÄÉvH>Ãã[«¤½­§#ÍØN’Œ-±¯“F^âvaÞ¦<ÃÚ¨I[ äÇ,>ôX`;b«[ï`<úñÍMÜ›fÚlń٠'åÑöå$„‘:þày¿ÀKN-3{îÓÒÐ/,?C¤—îŠJ v\=Þ†EzqËD´(JX/Ô0³éÇDõŠþR±©,`r……IÂiìÌÅAÊg‚Ë{OÙ;pXö²riðÞm¢I¦ÙwàãU¹µá$Ìp쬜èãøÿM6~$þ{uãmukãuð_¶Vøï/ó¬üÿ~éÇòÿ{¦ÕŸ·þ_¿}³Uó×õumµþ_⑲ëÿ×Þ(ˆ«zëü¼D¿®I;Ð<†cS³Ñ,‰Šmð㪠ÿš^]åšòÀÏkÌtÍ·{àOþÕlœ> ^ˆ —ßSxöÉâô²!ɘLB& ô\’‘È" ¢dÔãÓÍ]×XdÈ2Ž}£S£À5“ÃÝUSzÞiÙ<‡½ë·;é©'g=áùë !g˜qÙ#ƒøÆQqɯÃ9âß*¿…y #U£1ÊÒèZdÅwíAæs¶DÝC§w7Ÿ Â.T'½BdA{ ®áˆU‚ãf4‰àú© %ìGÓ¸l¡{ȦLxW.Môk%Yµt'J"o ÌKÉ¿:Ž"ðœêî@þ{GPqP¡Ù¯ZFŽ Vá² î1ñéav‡þyrýô ãmü5²(âøFÊBˆò&ó]Ü»3(Õ“¨?ï1^1–b Át«áùò†;²^_ïÅÇb£ø‘5 ¯×ŠçEúÅÇ\y̶]ÿDÂûO-aü:äz±ÏÚïEå¼}±_ÛÆ…ÈŒôQ²¡cÿð2Ô;û•m8dÁˆØsýU¦ŠÓšë¥Z“2#xöäµÊÍ‚MÂSa²YìјáúBgÓѤÏN{V»—Uµ{¤ vžZ0¸œºš3Z[Ó) mŸç(c‚&Q·ÿà ðÐb“‘™B ðéTT·¡Aå*}գʄ™C|ƒM%¼¢|90å"¯?4PT¨[² IÌÉ=-Åi4ÃéÜuÊÐæGظ:öwÐ_‹ l•1ô‘× ¼j´÷µ ýˆÐz¿VÃåðøë•æ­2ÇQPœ¢ïÑ·x•œ>ÐpìÂ$j¹´˜DÓ1Ì ` ƒo‘®DÄTQ]‰TÄ_&þj¹µcÂ©á Ø‚÷B†xoÏœ†5ó]¼ž¯§çìÉ%°AT™ÉÐ"jó 3¯HÙþùfuã¡;áL…i›Á¹·×8Ù}‡ö {Çø‡¨¡ãjMÃ<±FÒmA¡7šà`†db#óö=œ–þÄÿ>¿eAÌN‰¯rIÈŒËxkƒ8;ìw'}jH‰UHB\"” øc½Š7Ë׋O¾Z+RbHÊÈ Î† ‘$³0ˆæ$®@ÛÔÈùp*c@á;®bZ¼ltè‰/2lkü`xqÃ|ˆìÍ_}ýhÚ›Äc¥£¦“ò¬âU‰±Þµ³íÎÑŸ°'÷â™ä ÖŽ]ÇP1¶àwÎF?¿³Õ³VI‰˜°.H_÷"!q]¾n™µëAäsñÆF…Ê!Žîù0ÂsEkžW,4O͇«æ’LCé¢EU¸ïÞÆC”òÑÂ5-9©¤š/¥D—”ž´Hl}ålù{fF¸çÉâ¬z“˜Ð þªw4‹gßF‰_5‚ÓœÂK‘&øƒ×H2Eç,èŸÛ=¹jË6•Ä´û`PºðK\xk³;^«N ÐD&ƒY§_“ \›‚gé%8ßqÓzŠÓ½WâBWé«ÝU¥Ø˜„Þ|…³'PÑ—™4ÉžfZfdIDð=Jõ3zvG’Û;'V0Ïž”êió—{™’geI&¯ŒBq¶* ödÕ…Û0L¿‹bšg¿ µÂÚ±ë'ôˆrSQY=Äü c—üs|²©xr”MH˜õª!:°’%H˜oÂ$T”ô’m‚nEïC–ŒrHÖáep” “è¶;é&øh­&£nM¢¥Vf†$à/6e2|÷õ-*&çÖ>G°â‡b¶±.ß"iwã;±ó{]ƒ£-²Ëð=8|Ü»pGpèN­{yO×›¶’À§Æ»Än{I´+ÜjîE…ZcSpµ ¢Ü¹‹ofâ£añõÁíhûÚ=]ÍmÈ—G&yÁ¦r0êQ”CÊ;e-éqG|±©‹93Ò lQÍú‰8Í'ò)¯wÖ¥ iI|ʼnÚf ä‡ÛÈì¼ïjïÊåw[oKh¯«ÙËó‰» ý¬ßÞ¶3E“Ê~w»Ò^t3¡6íè2é‰x·õwèÁÛM¿O4—íò¹y=Þø.uŸQGÅ!c'Û2â%gÖB€xÑøØ†½. :HŒZ4­!€£Ow»>Is»iÜ複 ÊA|Ï*kÔÈ¿I®‘´²R[åëàÕIîÌ{Qµô¨ãûö"iÉY£øû° €5›<¨4—2†ÝØ)úÛ)Y/Ú‚Ì÷µ;yPq­­Øœv6¿ѽÁÛºGûŸZW"žEµÄ­ìNSú¬NsïÅë¬>Oiin'ú™èœÝRwûå»Q62¿0+Jƒê1î«é]Bnײc~rÙïÅ¿kìo9D74äªy|T•"èñQUÌÒt§˜ß§Í r(ɹ³¾wq¢n eµw öݳÏ%¹ÐïÖeM[7åï-ùûu ÆG]ÿ¦;ßæøÉé^Év¾ÐõjU[À\†äÄÝE•™M·Q˜½“½þHrÛÑ¿¥®=»¾ëÙj‡àµËC#.mƒÉ{=Ì:ãáƒq¥¡Ý÷q¯…B­)d2æ;ò¼'…Yk¿RÖ7ÀäRR7=¡¸çó0“Ne’^ôTêçtŠdñe>¸¹Ù”§Rî“{›‘ð"”ðLÞÿ“NoRžÝu‡å™MCM3·þÆhl”W_¢é,IÛÄTRy; ÊXü>ú" ·S*‡—r ”IæÐ•#æ40•¶ålzÕñC g'ßO Ðkռ줊ªm‹u¹HÍ&y+Y³O'`ÆÒÒp&….ÎPÊÎRÞG1jqÉ ΦF|,±‹ž”AH†¨ðòÚ‚®QYÒÒ¿j£¹† `ËaÇÉ]h2ØWɯÅ U™^nYæ’˜­ÙÀ$á¹ã õ+_•$½ex,øy%Ð5ºíw—x1 r—¡4j#FB•®Êmª‰¡êøCeĦ1.Îî0"€3ȼËñã˯îÌË ­7dÐ:`Ñpì‰-3åFÁøDwF>¤¯0¬]ò BS²=ÎÉé8òúÒÑ4'‘~­¿!j¿+©Q¤WØi—a»“yktùÉœ}mvIèàƒ¼íÊ5 7)ÚÃ$P;¼ËÜ`æàlRñý”mÁÝ @*$éPn%º„–þ3¥˜–µ ‘on¹ Ïi’*D^Q”è’\‹z櫓Ø,âÀü†cB7Ò¬:= º|Øö-2Áí€7g,ÊÁëê¶t!ïŸrKÝ+¡Ž¬!R™0oõ¿)ûÏd4ŽÐÛš—jb9À<¶×Cíë‹`ld,Ô‡˜NüŸÜ6ÑÑÀnÕÖ#Z¥ ¡vm¨G Uõ^o ×›¼–J2l>!Iq6ý6þ— ù…<¶^©BÝ ?=Gw/k¿7;ßÎ}·ªû³œî %‡·HkƒõD¹ê¤“Íin¡eá^cG”q6ZnYî WÓc}A¥ø]-;áùéÁ:Û‰¥†OÛNrZ~çì¸!vaƒ ¼&ó•æF8…ºý¯ñÕ%1äý…¬ÁÃY<‰Bùmª³öpr?ºIsŒËµJÄ]ÖB%ƒ‰@<âdнqÄÎÂó1öQÝãå'%µTﻎƶDLÞס셮¸‹`“!±çùHU’ém­sM™ÙèãáÈ Ñe½öhÊOhFç,͇¨”—^WîØ‡ŠCÒjž€×#sâa £ŸÐ.Ê%Q¹‰ã¥ã™$óÕŠX‰›1‰]Bíº"T nu°U2¨[°Àlµ¢Õðߤ°æÚP2û´5µÒ ²S¥í†_Ô’5<禜]œLè¿ÅÔø@!–P¥™±¢\ª,2¦{û»ä@–EYÄþ.’vCTNÛEgžU™Ò¯@ëy´ÊT.4­ÜrdÁ‰?Ê”"D‚À†R÷´„†½xÛt<ˆ-©Í\Mpx-^ô -å2J[Ão(â¿Q)Ò=ñR‰,ä1¡¬‚¢–óôËÀä/™Õôƒº³òøÎ¬Œç³2ò°r<-‰f³´: œµÕ8]wxµpDðlVK»ƒ‡\Hf&Mèh6Ý‹¨fªÔ¾ì–A#—ÔŠ«àv)õf´©ûíÒÑ™NØŠ K!fyt‰“'¼–ÎÃË E˜¢-ì ®hä³ÉÜW—*»‹/ÕºÜ×Ù93¤\wj‘;MCÉÖÉHKIhüZD%#rµ2²ëIH T SM'?:WéÙGo±b¬kèÂ÷Lb’õGû±hDñŸ9˜\Ãè›%7Oy@ þx/TÃQ‡uSµ£;öf¯¼ŽUZ'm˜;Äcr•þsŒ~Ì0ÚÛbú-ŠØÖè@Eý’‰ÎsxQgŠwʱOŒŸ*˜IjÈ»_F_Ñ÷Ò\+M[n*#]ÛŸMºñgùx‡†xŒ-œQ>³á±Â¹Î¤&©> ›õc³¢V'Ere¼É¦VÐøuù ×D 9t9˜ˆ„è(„G`èèBÂò.T¥¿D™¶Éòl¸Œ:B ËM±ƒ”%¥%ßAäÀN'ü’ÏÈ]§˜–dÏAõzJ~¹Ÿ¶.kÇ™fo¡6¨ƒŒÄÁ¦ï[ú¡|:þ®9s]ƒ1Ê„%üò¨ƒc.—e:4%V‰c(ø¢žOú&%GÓÊ‘ — ¦D¦Ž¬9i3#iFDÝË5±”ÀîZßj´ø"à—råþ‹îì|â+ø±½GÜÕ(<ùÞ*â6š‘ºv”NŒî„­m8ÈIñBkýÍÚoï÷4£r ÆtÎ0¨€Ö9#µˆ‘¸S ž:$Hw´¯& Ë»²~”"²ŒÃ geyƤZˆ%Eç$R+m÷ìsA¼ª¿"g.úGÓµDS'O4Ôæ1ú´)I§ÎnòljÊ謰…ë­‚¨ÜtÓ¨R2`[«9>hm,éµ´`~µž¨VD‘Þ»8¡?H@^¬ æ”F¢t Zá9ýÄÉê_ÛðÃ'-¾ï¡DcÊí².Å0¤+N(H„³²ƒ{#~FáÌ$ b«`Fæ Ä¾Ê…Þ4>ìWhåæLyÚ‹’5T¥˜Êá…Üpe†’Óæí•Ÿ‘œöj§ô¬¦äíݪuËÌ.•E°tv¿>6kMa˜©7 Ù¬—Ë#Ûëd… u8MfÖ1WÑ`Œ‡ÑA<› ¢ð…&ž ;s²¥L±„?àØ8Mâ.dMoG™`s…í1M懽sl‰ÙOŠ´w*^ÛÆ0ZÝA[˜C4YxH)©6ˆ½Ih'-œMæi ä6nI ÷½ô)`ÚGÒµ”+ÅÚ:lʨPÍ›£¦¶·ZE¬WíónFCD`RËd¸ªŸIÙ1UÂ×êà{ÓÒErH!–ãN-ØžæBíiêö4lOÓkOFZ³À·6¯íƒÁëDûí›Ì·áZS%íÎÝüæf YÇlTF„ã»CèG»ÝéôI –œÌA†cZFÑ„ø g–heÝþï Z _ ö]ôæFîRøì›ô¬Ü „èt6+÷­}v&îRK?.“«-O"rºÖÇHÕƒùÄ Ç[2™›±N¡S×rS×YZ .*o9e·µiµµ™ÛÖ¦×Ö`*³àÞ.vO[+®– ¥AB#D§R5M1í}Փ󕦮$iÿ¦ûx˜&kªpçîìû+G75ëX1N ÞÙc8_Ù“Ãòö';Ž\²€¼=ÆÎ­2`æÑÅd¶JJŸryÒVøÛðÌ@•Ä|ŒìÄ/%òkgŽ)êjo‡ÝY<ï‡ç†Òâ:Slø 5 z~}…y³¤kEçì›p%å‹ð ú“ÑxL1™„$¡ï ü÷Ý?¸É–j[ß xŒñcë—Kf¶.¬MöRÔazw®åà}2el‡©ü8“¯Ê^ñøhïpðË6Y^¤}…6Uf[}•hã*}ζûšj 2w«1J³ü^5Æ_SB¦õ×j'ºXY&àp+%µÒۺܗ)Ö¬b3ÿ%WÿWû‘ú¿·Õ7okµêëÿVñŸ_æYéÿ~éÇÖÿ=ÏêÏ[ÿ[›µ­ª¿þ«+ýÿËÑ]›%Aн— Å{žß»‡µBBûÅŸ¼‹ê"+Õµ@ô¼ˆ’ÚYOâj(ߥµ$ûÁv.¢Ù ¤¾Vöqé:EC+ƒQŸË!!*gˆµš• @:"õº6."ß,eí&^¿B©RNà(Ïs÷˃Ö{ÉÛfñp:‹ºÆ€¼e«‹ßýÈ‚2a.R:Ša9ÆèE6•ÑžtXíDÄYBƒýz9„ýeßÇ0ÇQmäÆË“™ûÑ4¾2°;Æ¿êͨ4u]Å EíÁ‹¶²”¼{´°LÆ}k˜ÐبÈV|ã4qÑPu ) ߇¯>@_góÉ $¬â/-Øqä£+D©,àn4VšrH(þGúUl:]æÆÈkøGV„ò'›J DînÞ¸±rfn¸q£wžÊaû> € ƒ%#÷:áþø‚¼W‡û,PØN æD!FÍîå³™î.øöÀ ,…ÄùR¦‰NÔWQÄÆ°º¢‰Ô½õ7›‚9ÑÆCLFó¹¶[1¥‘/-N¢DEh}:Â…H*KŸ©.-ZÚyZ„sS5qÍW¼;¹D4Í¡ ÔÙÍ A—& [G1Ú‘¼iíý†C"F$ÆSu­ÉŠù‡ ŒÓG¨óPB…uãkM¬0«cXå2S°]Žùçí¼® ß!÷>­WKø ûœÖS»€ŒN§÷Ô. £Ó­«Üɵ—‚(.ƒ°B ô» Q/0^¶® áÌÞåâŸåÆÊ9êW‹qÅ”‘c™×PßDüÓ$G%ãë툠RR7üŠ×„än¨w)èìfIÛØJj_Œú0Ša\’asZ½á\`¦b³%òf¸FÍ›Žîø›_rÛ“†Ì,KæqØ‚I 5®Óæ€!43¬Þ<ΨX7B… ÎŽ@œ1O¿?þpFøá@Èáô ÃË„vg{ó =’Vò8ôBsMà~£Ç(¯¨iìô^£2÷ù®…ÔãPz&æ¸Æk™ ÂŽ¿­e…µ›C»ÇþÍœ{©ôë´ùçÈ9‰ÍØð.ŒõkXaG޵”¦˜‹v€ÌBáü™Œþ$ ùµ4<;Dx‡¡wš wˆD ÜÔU GÈ\ò{d:±·l'§ìÚWÂR¢ú]«PŶWqxΓ?²ÌÑ\6=§îJ {”õ¾{ G€ÉÜå@óÖxØ%ØýLž¼^ôIÞá4mÞìZ{åVª«€™æE"ø:ÛSòèpGdÚˆ¼n¬áóœ®GÑYÝN {ÓÐ@ó3Úhx²Õ2«t±gg0ÂË’‡eXW _˜+66ßàò=¾!ýNb—fJæF˜•ç9e7È^{•pX4;÷\Yº•eèxÎtÔD:µi!êœ?uÎ u”+QvK YÔn_¯º4—õ\|a£ÄC]> ¯Tí‹ðêÒ£!ç~ ¯žt†qúEz¡â›JtzsÕX]ìv£Î'o~8ÇD0Ý Jî"Gµ9eèPƒˆí†–² 9´LD¨·'¦þ=Á »[ˆ¦™^­‰d4ÞñzàWóÁŒE†º¶‹0Qdô„œDÈøD˜xë”øikp¨Hz’ïŠýžCñÅÀ/ÿ]Æ|·ËX*ü;åX¹ñz³œß’¹³^wCeî_6ñÇQIœBû²î4vê„™‰¿*´srÜBô)Œ¶y^¿úçDÛ<èPpúÙ:8¥ŸJñþ¿âè›»§ÇYÁ6÷Ñ”stŒ¿ö镳yÌ?¯0Ö)ü¬åÆÚL·ÿì\Ø/©H˜I¢gŹ yê×Ovôz8ª$¾Ï¨gáø”»§žòÃ~£½G¿ONÈÝ~§¾Wò£WfŒ² kÙ>¿>ÐïÎþ9Ñå¤öÑóöþ§Ý@»Ÿ"Ê%ÒªøØ>&ÅyÔ½·˜Ì»yhAô[°Ö¥}ô?<¼Âm=隈2 é˜vŒÆ*%ì½+ШâúÀmë\Ú@Ù²©"yQ%¹YxYÀ×µxÃh”SFï âUûU ƒòÚÍh¦4£§L¹ÌNÔéD Ê™×n=J‡ˆTNp¯†W˜hœkµ‹f–Êl‘8fဩVÓZv„V˜ÿf‰THþ@ùð~ ; ƒ,o©­\0áP(<¯Öžõ!É•@X`yàEn˜äÿ™›V 4á´Äoâ†×1/ª¡Rí®Ÿt{w¨W7‘´òó%ÞKæ S¾ÙÇEÞ<¹8y¥©Ì÷j)Ûßì©N̳`v<ΠòÃ~gWrÖÞßmvš§-«Ú"1•P,Èán‘£/æ÷®[w`¦“!€–äX^CÞŸFß§¢êv\¯è¤»w à‡?O­ºP®Åª®¬ºü%\EA5Ño C,î稦Yî/lô¥P'Úe¯&ô¾0 ]ŸoZŒ€³ „… ÔA ý ñ%üÀCQP„ºÇõ¾ëδêwa ̠ẳúfØi( K»ÝCòY2Z³5OwIoEçÐé8þ#² ب¾®p¤Xª¸þðÀCK Uyfà± ’އÜΘn÷ó)±BÔ âéÀ¸+h †Äš¢ÄFÿÆ%@jgeð!6óL-ˆ0QOßûÃGv~/¬119¤Co”z¢r(ÇäNª2®Wݬøù\ÝI BÖ9¨ÛÙ$Ô°j‰>†¨}Ù«\!Ý~cIÿÖÛ»ÙÜ­µÜÛ­%§ó*:"s‚÷‘H)†QÔG÷“Þ ‚ãÎù°ïaÀ]s©Cyw(ÞsE.¤ àp(uXônÓeyRüàÅí9/H–­k&N§Œ–ý~H$€¸À¡òJà >H$ɹkÁ&aJ eísq ü œ7ŠŽ9ˆbÉ‹Gø7`TÊó‚Ä«¦¸y­ýJ·$‚¬R$sâbÃÂAô/ Òƒ¼`Ë+-Ø5¸æ z+•ÝFźћ‡`gàP«î'éö'pù±BH˜ Ð*Å¿Pe6‡âe¡ (.°O`19Q5xºÐá&Ða‡€rRÀ؆}]*ò´´$Æ¨Ý ”®®ëZ.ðáˆßr]ö0ÂlÇȶY \|*è:ž÷©µþ f5Tl뻌E3 K]øíŸä·r)ᯬ ,ʽÎGâDtÏefT‡Ù‚÷JÂ`ïøùéËzj=ñä¥Y˜Á%ÿKÕZœÚ‰?ó\¯=n®ÓL'ÀçúÁh2›aˆJÅ2ˆÔõ’å\ð¡ }ˆ‚%ÐL‹XéÑŸ½;"%ô¤=ùÉ–L-{É„™þ¾ömÍÛø„e5½H…o•tªIœ¼y×Û°WBÇìÍN:8l^¥JÑ›MCRä 4[üQa³kJî >â;cdK,É©!œ¥Þ‡Ýk*¾E°=º³‰1ó½ i”Þäu#ÞfCLd ~óˆ¼ÞUŸÞv´á}:¯4Ý©éË/¦Ê&ŽN@`2Œ®›CÇc<'XiŠ’“u8¥ˆ`šZb" …D¦Öò>êp fNMcôëÄÝþeÓÚ8äÏQDÃÙ›Š"OÚ–"ü]KRÐç¡eäL'ùPK¬–¢>?ØA5 Gt¬Éè]°ÔŲ%Ȧ±0Ù°¤åȈ¦mlPJ$WTÖäv(ÿ_nÍŽ~äÿ‚{ ®{x“½«)÷ÄH†aŽ“TˉmæLæ+Ë3¤Ì‚ÒRfïºB±è-‹Eû‰8Å&¥x½8Š$ù±'ÕoÖÑŠødy?÷v\}r}>¢â̧­ Àõ0¤%–Žo]¡¡k&è¦kúé ÍäFå §Œæ–5œÏß' E§9×1å|$iŠEcµÜ=¸ïØy½—g&Üǫ̂2vÿk™Ïl ÔÔÅ7‹$ f­¦F“Qô nãüxKêi-R(Ít˜G«*Ãjv”$SCq3ÀË^¬ÿø‚¹ä¢K¸Ø‚u¦áã­ ÄÓ¢âÆl.K õþ9…TúÜàx¶>pYìÀ‰kR;w^¿ð²ùÊáp^Ö0¿b%˜úÉZFþy®Q”®3\Pû@–ƒ-Ä}HöTúÈ])uÎpk¯Ö«‰mÙ©¡m…]{¾°ýɲ ¡‰BtrÂXEÒ$¬ŠÈt‚€te,Å߯SŽ_»£±¾É&&QÞ£‹4¤Hç)ƒáÕ±[T½cFØb¡Î,N׬«î‡5ìÉ2l庯@«ÛÃT$|À]×ÞøëXñP^ØbJzG>¾õu]Â{ “èßsØ‹ f:DÔTVä´6Ã^o×-e­î,-%g’O ꪳŸº_`¿øf`ß=–7Ð2öJ™Ícé;ǯAç!HzlM˜2‘ãÒ=(·´©õRMSÊZÿèpS` ÓrSRó”,.8½ŒÛRÖ %ëâùÌG¸@ ï1Q%u½Ž Q±Yo³áÏåðY9€@ø¿o—2LST2tƒl8 =ºãµý2f …Ñp¿kÏoMËÔ•yr±¶QYèäæÚé2ˆ¯ë0&.7󸤇åï*>OR‘¢ÓÚuê8]§ŒÓ;½@ì8ÞÚ‰åÉhuäŽTƹ^x‰ ó°Ð* ŽU`¡,U=]‚¢zÞåŽVpèͦãFoB…m,ÜcO&Œ ã…IÕ•D?n FíA»õÌÜðc•5ééô1–UÑð¯EwÿˆÐʣè˜Þ|[0-è·»xàä€ ÙÃ]õ©p º»vé#äG#3Vi¬WëÀ¦fž×ßcÂÔ^:üÁ/ÿ¸øo›? þÛ›þÓË<+ü·_ú±ñßžgõçâ¿mUko“øo¯Wëÿ%^í>þÛæ ÿm…ÿ¶Â{ ü·'ÎZa°­0Øžh*­0ØVl+ ¶›.w…Á¶Â`[a°­0ØVl+ ¶çXa°­0ØVl+ ¶ YVl+ ¶¿Û¦CÅÛw<²˜^a°='þÜÌEbƒ%hPw^-D¢ãú¾ötKÅk+©tíùq¸mÛ[yøm嬀ÝðY»ýx`·ÔNÐOé½[À†ÍüüuJ/Ü{7²7„]cwgó‰qêNáðj=UÇLuY·‚¬[AÖ­ ëÌçdÝ ²Nüru-æ™,‹Ã¬€²_±Ê%˜ŽB4û¾òÆ3ó“ݨŸ£,/Ld£á‰l@<Ë_З0\föÔ(}9íòšXV+Ô>UÙ µo…Ú·Bí[¡ö­PûV¨}òY¡ö­Pûüóß µo…Ú·BíË Û µ¿_¡ö­PûV¨}+Ô>ëY¡ö­PûV¨}+Ô¾jß µo…Ú·Bí[¡ö­PûÔ8­PûV¨}+Ô>­ÉV¨}›+Ô¾ÿÚÇÅÿÛú‘øÕ·Õ­×5Âÿ{½¹Âÿz‘g…ÿ÷K?6þßó¬þ¼õÿúí›ÍMýW_¿Y­ÿ—xxµûø[ü?yI”5ÈWmø×ÌÂþ³¤d…è»áé£ñ¢à}k/ƒÑ‡ÕèkD²b &ð÷Àí• æžÞã‹arÏBÒ“å¼ jÞ•Bͳ‘ï$€^úÐfbÞù0t1ú q³FC¡¿F4‰zsWt|£™§q–$˜A[ ¢™Uˆ^#¡œÜè¾Ì·‘¸Ÿfq™¤zYHÞÝÁ-Ñgw÷ŒÒ¦³ £Gp­8þ%jݸ•0a²”„“0^~-¡§X¸´Í “@f· 1qÁNðª®Ùl OC4žILº7•€Ø²Œx8E]Kä6Ä>›OÆ£id ç,Œógy‘G„M}D3>¥€Ýdv" žP[‡¾?¾«™êÚ‘›¬au£il\hè ×Å"Lâoä6}N#¬ q²)s!]BŸ&÷k%YuÊåeIu‰¤ñ›”&y6òqÁȵG £¯zÿq[4||,6ŠäðgáãõZñ¼H¿ŠÖ­wÍ2ü+ÃØ]\à{‰$¶íp>X£Å#ªÛ:ö/#;ÚnË{çÖÜij³Ê´ôž×š”Á³'¯Unl#áùÍb¼ ¨t²‰WÁ$j¹´p h¥¡…Û UtŸB*â¯F“×ÝÚ1^ ’°ï… ºKïaÚ=ÑŽ°8†³‰äõ)h±0i™À§ uÐ"jó/¬Azº°«9¥˜ Ó6ƒso¯q²;ûíöŽñQÃûd5ßmÑ)¢ÐMp°Fþ¼EÙ :9ÓÆiñ*—„̸ ’^Gìw'ßt_b$ÎF!.Å|?-^¯–àßZbñÉWkEJŒÀ…Ç0i*8‚Dv p1ÎH- 4g! Áñ°‘óá”`ébƪÀ!tǵ@L‹— ;¼P^Zdä·„³‡—‘V½0±úúÑ´7‰ÇJl£¦‰¨Âô||ÁwçèOØ“{ñLò$ÅïkÔu×blÁï>$”øo¼ÔJ¤úeÖ©ñkâ^$‘¯Ë×Bc æqñ šR˜½Èý¾ûg¡ KÌÚ¿èt+V@4;•¡¹dÓÐ4L.«¤õÖY_Z$¶Ž`{tÏƒz“˜ÐpÖPïhϾ;¾FþYÈÝ ÂK‘&øƒ×¼ŒP±‹ç+"}¹Áà6•Ä´Ë‚°œ; J «mvWJú³C`Ùâ¬S‹¯I‰®MÁ‹3ÈôœÎï¸i=lº÷J\èâ±)¹ª<ìXKܲyO#Ô‡vA±äAj‡ÛÄp¶©Ctüòx¦S ñÏ’¤È{1ý÷dV('xV¯MSì½(S^GèqñÃ0›™ ôû6³6tIÔÍãÓІœ‡Á¹8gbåàX&pšÓ²Úûñµ½¨SsÍßO&¹²Ð17”¾x!uòPæäN°r”ö ëì=(±ØÙƒìó;™ÿ5ÈwÉyã·gHàžø.\µD¬h!µ ò}ÕÚ8ÌÀ«åÌÒ(¥ i6J˜]c¶1õ פtà×höȸì<:¦ÐÏAPs¶P§’$nÚŒáÔ8ËìaŒÚ€m²2þxSl¡0á²/sº¤^¨~ÉàÝ!ÁõÕ}T—# ÿ:)°A—ûö©Q¯Ëj›TÜÐ%«‚›·¬­;‡%­ñAÐï©Ä¥Æ¥36^>Cþ>°7íÍ:-ˆó¶<Л7ôm9¤7µŸ 0’Uh¦¢.@ll£ ¸™h¹¢6IÛÂ:ýÄz ÐôÏÍ—’À³¬·®x2yÑ„ØWâJu;ŒäñöÎmÆoô›*””¥ŽWPähêJJÑ„Ø/Ä2?¦£¬ƒ…1Dn8®øx?⻚ÌD[Df˜Ü®ä£&Ä$º‡ £µqŒ}™I“¬œ,Åõ¤H;È’ˆà/z”êg´B•¥žÉ)¤GIîL)Õs|%È”<+K2yeŠk´U1⼩ ·a˜~Å‚Œ8bÞ„ZaíØnÄlå\õ4«‡ÄÂ#0vÉ?Ç' ‘Š'GÙ„„Y¯¢+Y‚„Axò %=B…d›P>d ÉKF9¤ëp28Ê…ItÛô|´V“Q7€&ÑR+3C’ ð—`æ"½i+ |º­k±†Û^í ·š{Q¡ÖÆØ\m'dÆê K|4,¾® YÅ9ÍmÈ—G&y…×eF=B §¼SÖ’“±Í¼žé±Ùê'âp4ŸÈsä‰4GÀLJi %|ʼnÚf ä‡[ ³û]í]¹ünëm £5{y>q7¡ŸVä«}BøÑØ!nt‹ôD¼Ûú;ôàí¦ßƒ'š ÈT«LšÐ ©|ÈG÷ÈϨ£"‹&|!¦b<ñ’3k¼¡Rôºsv7Œ‡F$vBjÀѧ;ƒ]ŸþìB ¤q£“þ*(ñ}| ÎÇa¼‹|˜w±Ò»ðd ‘Ž$J[ýoÒ—¸7M§O.ÕÄrHô]b=pDTb,̇˜NL°n¹m¢#ݪ­G´JBíÚPl(‚ ã ÛŸOHRœM¿ÿ%H~ñB÷7’ÓÙdÞ›áñ]æc­mY*o¥3ñÿå™ÝÙ7ËwV¢:+¿&AÆU³’$wq¼GA‰¤,IÇ0b1Ž]bCOî†Ò±BqK •vˇKVJ­sö/îìo¢æî{B64°³™æËægîm^óqÿy\:n̦P+ªNlºgàße!·:NÎÛ䇮´:¢7šÑÁo-‘“ÔÌ œl!@G¿dÒ ™RLš¿$3“é˜n`ÏX´V¤¯ª¸jI$ÈI»0 Ô»irrr‚P$ G¦†ÂE¢æNÎÐLFShž³ÿ5?„?´‡÷Pȃ„j¹¡ä¾µ^©ÂŠZp|^±ö{³£1¤Ò»PuxÈŸåtW(´î#‰Á¶tƒ(»i²9 †Üs‘¹­ $ZM¿/$ÌÚ1¡qÕ²JH‘Pg;A;OÛNrZ~çì°!vaƒ ¼&³•æF8…ºý¯ñÕ%1äý…¬ÀÃY<‰Bùmª³óõpr?ºIcŒËµIÄ]ÖB%ƒ‰@<âdнqÄNÂó1öQÝßåו€%¹Æ~àë‡PöBWÜE°É€Øó|£*Éô¶¶9‹¦Ìì´#ÅW€õÅúl7¥Ê`xF×,͆¨Œ†U!†x²¸‰'StâaSFIõ•UÕÈ¥P ÐÆÛhm”¸AcDC :%(ŠÃRŸóOºã¸?x€rzpº˜ò"k8З+;ÚŒNÔ<¯GæÄÃ\lYAb°ÜÄñR„á“ù0²eå3Ñ.ŠÞ#[ùäTµ˜­V$AqR@0½p7­«mMí¡X- ëçÜ”³‹“©¬€±(àü'–P¥‹#q.4¦{û»ä8–EYÄþ.’vƒü$yVeH¿­çÑ*S¹Ç^Ø¿ŒàDjD ¤‘ °¡ÔS#¼xÛt<ˆ-©Í\Ipx-^ð -å2J[Ão(â¿Ù]/•ÈB…¡¬èq3+çé—É_ 2ªcGwgåðY?ÎgeäaåxZþÍfiudØéÆéš=eµ´;i/3iBG³Ùè^DýÛ0S¥öe· Ѹäà×ÁíR¬%¿]LBM'lE¥&ÁÝà9ºÄÉ^ËGçáå„»p¾€®àŠF>›Ì}u©²»³­Ë}3CÊuW ¹Ó4Ç2M'#-p$¢Ñk•ŒÈÕÊÈžWU^éå¡N&r)Ì/²ÁÇ[¬뮿ð=’˜d}Š@M,ºÛ£³ JEx"Fß,y$¸yÊ‚dðÇ{¡Ž:¬s˜ªݱ3{åu¬Ò:iÃÜù#“‹ôŸcô_þJøNÓoÿ)¾±t ¢€þHƒ€Dg„9¼ 3z?דwÀï»Cç&l²ˆoñ@ùODdJÁ ñ Þ5"že7+PÀz1æ+~m,þÎî'ÑPUÓO‚÷¯nžÀ¡!c ç_”¯lx¬(– ‘šü ¤ú$ðÝfE&`…÷ì!Œ9ƒ½ÓFAãÔ!ŒV\a\®r"!°%Â*˜lŠ ¿dhíZhñC ÜäjSì`#AØlýîv'Á…Bì&7bZ‚æ®×Sògs#ž‰DÌF¸“<˜mýP>ËÜÞÜp%üò¨“[Ó¯ÇPÇ®äñì„°#eަ•#¦îL‰LY%rÒfFÒÀ©E¤E!’¥|v×êüV£Å!Ú7¯Ü‘Âm¼¼‡9kPxR½•÷6š‘’áctD€s «ÿ(´Ö߬ýö.pA³'×LL§ Vz§‹Ô"FâÎ&(ÿwH|îhÏL‘Sã… £~,ã`ÈÈv¤"ϘJ 1¡dçœDI”P…N“´D&O Ôæ972dÚDtC1rp’ùÃ`5/_eI/ˆ’žï‹S¥*Ñ‹þh¶ÒÏäG’B¢ðݵÍ&ÂbY¡óiÎÊ–õ$f¨^ l©ÊÈÜÅÒç ÐŒìþŒóœ1û„ÜrâV¥`’Êu„Üd†’ӆ╟‘œö§ô¬¦äí'ªu‹L!yªÊ¢ X:{jÐû±~Êr³n‘ði³—aX×Nªl͘0¨—9z‰B#Œñ€4ˆg³A¾\ÃÔ †v§I €¬éM@³°~`Þiò?y!„øÙÃè_–†VwÐ>ã-LÌ{¼ˆY-äPciéö0ü K…ȕӧ€iI|RÖkëü±)?¢’/oŽšØh¡Bes ¿‹rRËd¸ªŸIy&UêÔêà{ÓÒErHÁŠ|¯mOs¡ö4u{š ¶§éµ'#­¸Í{laõu"ýöMæÛp­©Ò_çn~s3Ь€#d(<B+ñMôúÑ®`:}$'3ÂaáÆ˜–Qt'!~™%rV·ÿ;~CÂzB#r=Œ‘»>ûf&+·‚(I€vÛ‡`hºÜ¥–~„#÷OžDä¬6†+ó‰…Ž·d27cB§®å¦®-²´\TÞrÊnkÓjk3·­M¯­ÁTfÁ½]ì\˜¶V\Í Jƒ„Œ‡ŽŽjšÂ*ø2Bÿéä|¥é†+IÚdénæ‡Éš*ܹ;;S3jÖ±4’áÍdÑ[ç+{rXÞ>ãdÇ‘K·ÇعÕ!8CL1+ºe9%¥O¹‘ö6PÞ¥.o+QÙ7UkÒÌ›bÁ¥Bcê|í›:ÕíDßä™£Ñ ¨n\©¶„fc’o²ëÂV¡¹33Âj §to2¬ÞJ÷thftᛠɢ // 0<"Þïž­§yœï1 VšK‡ôušrôá„ô+—5µÙ2 š­PæBkJ¡Õô¼OÑòõ mo`Ñõ¬J=°4 .ÃóÜEâµ`£º# 7ŽÆ7äd™vÝ §~ùnñà¯:‘‹}5’¸MOCgëÅÐq㿼þñ_^o½ÝÜ‚ÿåíëUü‡yVñ_~éÇŽÿò<«?oý¿ÝÚª&ÖõíÆjý¿ÄëÝÿ²¸œÖ88Ï’ÕÐ-¥ÓLÎÜ8…Yˆˆ[±MDBô…¾¢rQÎZ*†ÌfeCE‘19Ègk:º™}C• ® D´üI‚áf„0=EèÛÆ >S5wJ|æZQÝC¡a”h.ò€"‘áiÐZу'€‰ù‚k:*pMGF«îKvèšËÏ7ŽtCE^é`8ôòê2¯Œüð7fZx扰3kÔ ]Oc |>Í9iY€[2:‡‚[Œn9Ê)MïÇi• I9ï%Àöm„^¯„¯I)ºD†Ô¸…2‚´Þˆ‘rÐòZ{½Dk¯­MCV-ó ñÚy½`;åeIÕÎx8‹øJÊìN ÿdÿ‡Šk¾{ZGbêO-Pu>æÜútjY¦Œžgå—«Ûv#\fÓ ‹„ÝðVä-*W*ðÂwV‘6\mnCeN¼º{¬êFš¶MƒVLÝfø5$Eà›~òšRËkJéÙÚák´(p ÅŽíö¿‚¬‹{ Ly©˜½fý«ÅašëpEVh#…&1mƒË«e '­ 4Pö 7ă‹¿Æx wZDoy-"=ì‚Í>¿‹¦‘¥«cDÕ¼fêB‰¢KrOG )ìFq»éøO36…?”Œ_ñ‚í(oì.C0“OoØIA ûËë”Ur©ÆmŽvç#ºW´Æ5þ,Ê-’ã[¦Høb½ZÂ_T¤=kh_pÖpZDžúJü€Ï´ÊXMÜ¢µ|勤ý7­ê°$“ •ÏUþ$;®B;’tšÌ(tÅ*ßà–øá!¦ãoýä.ñð;mÕ$vA÷òO"ZÛâ8‡Z„:à@T7㉛>¡rN+» t‹·VIè×Öã"ˆx‡ˆ‚ךWŽ¼Ò‘¶žCи¦üR$Ì0Ýî6tâP0‹- L+™i0<@ƒ¯St§£²ë0¾°R»¶Žz0´ØBÙ&P€HFEËHÚ—Á2²`øŸ$XFf¸Œ@ˆ Ãôäz‰9‰aE¶xï"?K>Þ¡–ˆã§`\1Œ »=¦©§E†~È^G€Ï ôl"âè[¼âˇvc“°Ëó¡¾ÃLÇë%¦c=s:^‡¦cbUD¡é(ÃRXMÄ¥yEðì‰V?ìcyÓéãÅ}¼ÈìãÅ‚¬DZ‰UF¾ ë¶Ú²€>.OÐ\ÏŠÑâ- mVþ.x =¾J«áE<Á¼‹M-8À·ůì@^Ù‘ùêûXöU#À—Kø2I`bÓ2fû­EW‹’‰Rt½\€®Éé}u™6¿©Àç÷Uö"¾Z`gOî+ê/ôz…QŸÕQ¿­Kþ.ìöÇÔË̦~9xz™7 ížNÿD„K@»óÀýtHÒÇg ¼·°?ˆÑØ@´·F ÿBEp{ÿ sq’¥½¯ÐíRü—j;»Çðã丅—_ÐfCç¼J?kå\çÀV#$ß^¦Ù=…áøæp ÑÐPW}È_ï·2*9lŸ^A"¶NÀÿU…v}‚îb-T€·©œ£ë,‹ôì‰sÂW*÷[{ð³s^oã'*¼µsr†*ï=,-½ ºu‘®¯ïî"wް:(³¶, u`Ì;Çõ“]…}Æ÷ÉzR@‹fÜ‚°Î‹!:/Œq}y^ Ä´ :, oýaÿä„ !wê{%íúc»J¿ÛèwgÿšÀ, f¿ç *?lãv%gíýÝf§yÚ²j ÙQ Å‚ôk0&æ÷ú‰Îì¶‚Å6å[¡äø‘¡ExH«´½’¯,›òð¢BÕ@˜/´:•(îô(æ)6Ïx5ÒNÎÞ¹tƬÙÈ%éÕõà4A½Óô.Ìm×k¨.óùmC½dS¾¹üï.*”UàDkRïJ¶å©>IÝ¡ï¦;]eV¾hîËÎßâþìŽN‹pu3s‚7E.½ ü»„æÍŠÙ;¼ùLõsIÊ![çsâZmƒ…Dò¯.ÀnÆÉÑñ™¨Pê0ñèMÝ‹[“à†@—TÐ:¶ÕeåîùñWñ‡ÍÖx9M"Œ% ¿ÈKb0%‘‚VH²Å汌’ƒæ5îå‡J¸¦ª’¥b´9?¬±µä[öÄ58‚9÷™`•îA €kõGߘ7ëT¡«SVcÔ„ ¸,È+ð“n?¾½—ñ¯¿ §ÛoÙÝòY2ä©)v.Ãò„K`³…©§X°çÿº,©˜Ó{)¬eÁ]i˜o™ºÌõe=PczM”×J¿© Å/ŽÏ2hU*¸nZQÍ ÞiÃïè6¯×r€PõÃZ[ -BP®4Qù”J‚ð·Ñ|îxȧC>ÙGÃò0ºÀ6BæiX| ©“›¼Q}’¡Èl6‰Æq?%º‰÷,ÊÅâ|P,È E67†²ßKX‚òð)›³]‰kx’8@âV§¿ý©,×ÀKއ°åÇž$\iM®ì¬´›vZÿ£ŸÇÁ~ˆPð•¬sJW\Í…N¯Cy™:0n‰ÃŸ™œ4ÈüøÜ•¶aù³E-s'ãf,z¶©Mfk3£ ž0ji·Rз’å å5O(¯Õ\±<\Õœ3jµNOÐT± £Í_Òéa0“ýD]¿h YÇ>™kIÁ9Òà¤J78CmUÅ»$qt@ÔP¯¦¨V"gJÂ#ÿ\  ãù*5Œ<•³…$üÂÑiAuˆÝ âÐÕ×$Ç•Á¤-•BˆÄ³ÖAØBšb–˜vˆbšb¸™‚ššE2³Ý¢Ús&衳fïDVUÖ:²3u›Ó²o:Ù7“Ù7uv<ÚÆ ØÊŒ»•Ç“áëBáXš9¥ ÃÓf”H(6!<¤µ<éÛ¦í>ÅÆ_§Œ€~¾‹<¿I¢Ú‹ÝÛPTXN*DžV'3*•Œ¥{á F±BE…e´\þg)y™»°5æ1üOÞcúÿì½ks¹Ò0ö¼©J½•ó=©|Ä»•ŠI‰¤5£›í]Ÿ*‰’eÊ¥%)ÚëSû¨ý;s·h½Þª>¥Z€Ö#€’ v{®p¸&Óü˜‡lO¥žéCÉÕɦPÛXŽÑ‘ÝZRêFÖ­Trå«H‰a8ùHïã]¸¡ºžMv³¢QWæÉÈÍí×Uç$¶gü˜É_Ü!îrâÝ—y tP«ëc:2l³NÁÉΣSSÂÌ^ËÉ?óþ‹t(ÎF 3SœöºùÝ–d)×âh˜×|Kª³ y×'Ï[Ô%Ña/QÙüÁD™½*|ïÅ(»íñ. 2½û/7Î× ¶ü;3q‰Ï3[„ÍQ¿3ËV#í/’ßFo9¸m'i?çòá(r c¨†ë •£„à˜5–vôQd„°øKÔÕFi¢Û,ƒuÇ@Ê*ø§Hšbåv3¤T¥™Rçpº©wJ㥓Á„£RŽ%¦7ð`û]öF“ëʼn)FÓÌúÊ?< @ÛH¦èfE8d×ÜãñÅòtTFWMXJ]¤yóã!v4ÄÎæôù?E»?™³±(ÔwÞ7€Lf½—/·ciSL0]v®DO7 ¬É…)¡ž¥¡/bÿ›%¤ºCÑsÜí¡ó Hž×¾vQ¿0©ˆ7òÄå…¤Æc«¨d tZgXãöñÍçxt ÝGðð˜ HÂã‘(àyP4 ¢­ŒÂAèá&/ZÊŸxÖ=¸Sþ͆zç—–£ÏÐjgKÔö×13­‘=/´p8¾䎟ÿŽÝPªË”D2²]ô±j5¯œbQ·á»3:gÂOaå6üõ»ÁO‘î¾t’wñ—,øl&Ï!õ†;ô@ûå{ÃÆÞ°‘ö†DS¤íâ ­:ElIqê´':,ЋÉ-K&à·ž¯ÄÂø»JžU¾ @¾§øü=yž»E\-ÕrhÏúr¤jrÓ}wÓì­*úecOWîBÈ}±”ïãöÊ>§z©.1XG3.v|ó=ªî«êH@É=r‘ñÛ´˜äx–.|yëy6»oÐ,ª~]ˆÏBH¿A—$fØÖ~ÍÄeãö5”a6²¬k¹´ÒuJÄ.¶‘°ïµyÄkQvKÐa1ß,–¬à°^ªL/ú·S·áÅ\ÉQåã']¬s3GÞfz°yŠî$Rý6@¨(I¥nÀïdnó˜¡Ì0b. 5gó®4ŽÛ>§OÙÑÞ?ÜŠÐíWVwt‹“)udmÎÐê§8®1b9B&iMå¡=:À9·ç” ÃP‹Zn½óøÏ©q6Â:@dTæ,,=Þ»a-ŠFC1z$c™°FÍ-ªÓ¹%Lë \I®æs!ê`\<ø£uêgtqadPÑדĸ>3¯ ¸Ôf"˜ÎH†-V±º3²’ZÈKÇ–ËjïFoG%ù¹ÎF.šÖšÇïC-rÌÎgKu kó²ÛqU.ðLD7¢C$+DçÐ@S5t­óˆ$g=7¢Ãëí9íl3#z;?¢?†.Ð?•Þ)ÉìšCGŠDñB…·ÞI"NXšðžœÙsAȬïtŒåǹð/ò“€X¤4ž áÅ\é­[NŸlKh0†Óg“„ƒþ1k>ç©Âq°"’ØˆØ AƆ¥·M}j¾ZæVywÛÉÕ6Äk—yåkÂÃ2Àˆ=SuÜãóîc‹šÿ®ñQœcü vÇÇÖvY.GÕ\‚þÎ^[GW1àí03”«Póné†Ç#I<øØ¢ñ8Ü(²>%E×ö¿NOîgH9‰—'$žÔ«Žn¾©yIϺnVqPXë»ÓžŠ+@å ÙXƒÈò2˜†ÑÃ)â2ÍGÅ5Õ)¤Ïw½b{«4xÍΚø´:aþhîù嬳y¸†CËi˜Ã÷VVÚÙ­¶b6|l©V3—ÓRO–\ƒq  yvŠ´TfŒDfBŸúK8,Êü‘È'ƒe “ Ž——g¼¢2'r9îâÖˆq‘C$‘T4 F4u‹«Dûº HÏL’8µúqbµ›•E®ˆ šÿ€„jXÝ"°°ñùèË+QK-ÚºsÓý¹ f£lÐ réùæ…ÙôÜ$f2žÊ2ªÏ9.DŽWªë¶Òšƒá•{÷عvA/d䯹vA2°‡Tá̹ ²*«]Pú“šžòj+LÍ…,é8¸ œâ^âæ\áaÄÝ#[$·Ü+kj nO"u^Æ1ßò&›Œ‹œµ¼eïæ$÷iêå-²¡a¸ÇòfBöò–Œ¼Ì1ro°ˆIåãMQô‡›kÙ=^Ò27;Yý"ú§sLŠüõd°½¹(øÐpîUOá­æ?ñšDWw\Jî¸êݧéyW=wƒó¯znÆ’5ÎõR¢ÙóEÐäV=É8öTBþZþUOcóãBUB¾·@•Pš¸½RJÅôŠH«aŠO7íøî¼"ЬEq~ÅNHݹjϱr çÂ2‰Å¼ëgŽöf+˵Ȋ­³"uú‹yW[±°WÄi'Th¬.Œ!údÎ75Ã>ηòЬÅ×Ñ•\äôqžELÌ»‹Å¯Â"ÇB¼x’L[¬Å‚×kqO¦–¼jç!åyi(¥ñ´ýñ®l®µÜ1V¦bß÷î®ØÜÒ¿1@¬;¼´ô&‘y ­î£/Î÷ÎÃü½.™ÿ»ò_˜|rö ÀÓóÃ÷-Êÿ½é­oÀómÌÿ½±µÌÿý8×ÿü¿ý÷ÿøŸþã?Žº=qÜÔŒÂ{ÿñ¿À?þý?ðÿù@î´ÛMùkü¿ðïùoáýÿµ7º®` ¹ òǬ;î1·ÃüñFÑûysÍ{á¿x¹ùs«{Ñ÷^@‡——yÉùÿ€³?kþ{k›Û›Ñùïon.çÿc\<Û[§»ÍãSX5÷ilíÄéIý˜Ò¼¿ÛC¿j\¶ño ³cRœÊý²ÿëéþž’BÊeQß9Ù©¾3²Ÿ«ÔÀJj5ŠõÊzÅ+ NtÖÀL‹b2º˜Þr…ÞgLŒ§Túç¼_ÅÄX\ÃÛÁpˆùFƒ¶]ÒÏ«ÝAÿb4ö»b7Á·’ñt4»ç#±àÑv÷Û9õéy¥¢íÜŒûá¯ÁvçNRY *2]“+É}õíNs§je„¢!-d!GÖ$Ä cDi*\ 8{âK·%låãqµÉi· _·B1¶ øiÀį'³1¦íÀ¯¯ùâûLQ}eý3ʨþv}`ôVv(¹¦wÄl¢œ71}œt€äï:[Á_×’/Ö]0^­^Ž£ˆT¹éôx¯x¦Ü¦l¿½ (2¾gvsƒ.‘c1Ýâ-í¶ ƒíG"µ„ÒýÁ|&ÐXÊå|ûÿWП£§nZ)ÐG㨷éìÌdT¬?«PËŒvîìšítä‰-© D¯vþâã!yq+%£w ½Tl 5Á¨~–$j]JóÔìsT2]ŠùŽMãów&”Oå0ÿ”4HEÁ‹”а` L@݉<À8yeÞ¶‘€Søó9ìVûåO¥O訿Sèã— Šÿµà•>•?ŸyÝÿåõ§ŸÕ†BdjúDÕ¯ûðôiÀUìý)"àkJá k7”÷®ñ ’³]œ"jê:2… ¦z5“ÏßdÑþŸìƒÁòNWVÚ+TÕWêhyWŽV‰xTþÚÝë€p€kgÆÑÝ‘½@ŠÊ1Oœi-MäU$¨¾&b‘Ð[‘@Ö6E·%£ 4D4¨ë€4k7qÜ4½ãÉU<òÚ*ô‹* Å;–÷Ô,Äœ@)@wÎ&@²Ó Œw¯€Èñ¦)(±üÀÔdÎÍ ¡›äñ¯—:X*ŠF™micd—Žú í;á…T‚ о¸êb~Œ`(ÆVõÜJÿ^ÈÓ ­"¬“;ðOþ’® e2»0¤µt½Ž,bí·ÍýÖ[‘¦Wã`r…q\yxg2QÖ9ŒÏy€óJ®›JÍ ØY@=@8g*)©„,ÜË:’ˆøx SÏ/òõÄÆU¹¾fš;̓}ND„º#ö„´Ú9Él(5Ûj7´«èI¯0éR‘Ô€ðF¡åD¢ÿ”íÂù€¿áÖ•:áýù/SèË™#”,v<IJ3K¨Î º¿º¦Ê#÷¬xpÃ’ÅÔû2…ºSp&7°zXâ‘,ñ:^•–¥Ò‘ú²Þ‚þ%¿0+‰%U/ÍËRw?šÉR%±tv,#Ëã¯3Ì?0¦³ñi$à fÖÊEÊ߈ç˜Öb†Eæ}Ä›2¢,aG¨ ûÓ>Ð.LƒÈ” 3uò 4sÁu/t ’gä?fpÃ\ÄU%ÌàÆpuŠ8Æ·Ñâ x”[R §_Áù…7ùåÆ=è7CŒŸàŠrcS™¨+· j½ƒ;ÃD^«bÓ‰lÔÆD¢¤se¦LÎÒ`D4£ KÖK„JÜ‚QU¼’ˆÙ«øöN‡Îˆœ2ͤ:ùtXá·ÎLóÂíJ«µò¡ yY=\iQÇ•ØS„à%D»Œ‡š±wŸ¯Ç$e{‡Œ»Æ:Æ¡Œç„†´U„ÁH {îv5flPÄùÛ³è4埑T¨†å¡µûÔŒ¶þÿæ;êÿ½mokÛG£êÿ7·–ú¿G¹–úÿú2õÿ3û3çÿöÖÚFtþû›þrþ?ÆÅ³=ªÿ?1ôÿ;'‹ÑúûO[ç/P"ýZÒ‚}Xõýã(íO wUן$«ë“5õJ{€P–šúÑÔ°²4à•BcÕ+>÷¡»Þ)Ñœ Ô!WLr†ˆï  Ljm(¾cÚnKÁU|KEéI^ÕöI¡/VEáSÙ+®|‚îÚJi/‡NÛ„Pð‡åOÅÖm“4ÚØncÒ(“Ö«U êœM89ÔÏKñRA¼T/ÄßGAŒ§ÿFJâ¥fw©ÙMÕ^Vc¡Õ Ýõº ªVWke/ªÁ4¤©qc-‡?«üªÔðºÇhJ_×ñ+=1-¯ñ MÇ룆(CsdÔéGRŸ<5°­ÿýödô¿[ÛKýÏ£\Kýï}™ú߇™ýÙúßí͸þwÛ[ÎÿǸx¶Gõ¿¿™ú_r4^ꀮ¦Q}Ep_vGeðoKe°¼ž˜2Ø‚•Ã:Õ:>¬ä1­ÓлÕ4Äi:”ãîîL2íö‡“?–îÓ‰!Ã=WåD™`û¦ƒoŒÙ ;*•Þ8¸ƘäÜîQ{d‚Q®»²G‰éQžædô(Ï ¸z”ì_mlP’µÓfå4$POºÍr}fÏg$bt9o”¼âR·½Ôm/uÛKÝöÒù™¯¥^{©×VM½ö*± 4™¢ÚYu7M}ýä½ éìþ~gwãß2õÌ–þw:~*ñ?6×–úŸÇ¹–úßú2ô¿4û³æÿæúÚ¦‹ÿ±½ôÿ}”‹g{DÿÛn‚ìÑnî4@öE•ôÀmÔßݒxjÉ:ˆ¡àÇqó]J(0:彌½òÆqm %„ ”m Œ»ÄXŠŽY¢ñý=Ì»ÒѸ]à7Ò$ yÿü:çvp=øLdô:Ø]Áâ0é— ­ØäÛ¶7Žøw£›B»¸r2)‡Vz¥HØõÐ B‰J»yº/$cS`îæAð5é…“Øñ}bUôw‹+…›ÕþEýæBoµý·Þøf$ZùÊþ;kÛô öË}hë-eVk#ųF5ÚµÑ@$%Ÿˆ"L˜HélpfˆkàwâŒÝÃI2ñ.eT³Õ ¾…™oεۯCͳ ïþ—8+Àl=+øE@l¾ ‹âw—N®ÉÏ[ófVa«BžÂB…¿ÍY˜áÿ.iরC~¿¤9YYbÆ¿â<ަ’§ ¤Lteb@­/gǰ­Få = POü^¡»¬åS·oàv¼ÿçâwW“ÿP-l_áVgv¦'*r‚IÿrСTIÂC™Ž\Z &ÓþµÜ´2ÕÉÚ­v³ÕP-O³È»¡âS2&·= O´ÚÛ4º™J}0´îÓìÓdê‘| ƒ¨O°ÕþÊ."†¾”âÅióD7‹Ëo€B¥®“ì+_?¨°Ýª§p®'JzÂz€-É_R»`U@‘Ûz6>†eS¢!©Ø¶¤vr¢©hDj‡6‘® ´Vïj6½îp4¤4è×nþ=8™ æ,M[,ÚYc•j±=hW’´XxÐ{ 7߈%Ö®mA’:Ü *‰q„Œ&˜õwñ<L÷Þ¸ó½{6ú$¦¤§ÝD«Ñ{GÜ­}¯Ö ÙàÈhíf5æ}bcH†1ÄÕ²mqIµhö éƒÕ­,»¨¿’„¢6Š8 ô'z=7NÈ TPq¶ô¶P4¾…õ}U‘ê NŸ0„”¨Á·£ñç ȶA*9Ñòbµ9Z ¬€šA…qÕ¦@_Ƴö V“^æ‹Ù€*Ä—%ï•löµA<Ûä”Ô–!X€ž%š†ºljS Së¨Ö@š§l»À"Ðeœþô[¼¾«>6ÿg3OÕwê ?O[ÇíýW2×.fï:žL)Ú0\Ì=Å%Z­°ç#ÎMoEï*ÀpÌŠÕ³õ2ÑEXþ^VzÜPZI§M†’¿ãÂFÓD3EƱÁñMßÚEï7›|&Á“é±û@V{˪yýäÎíÖ(íü>ænoîW™Ÿãg­DôÈß§ljUêú4¢}ÍhÀl‡/ÈiçC㸠?&m®Ò‘°G ×)ÒwG}Óúä»Z9R6„;-êØæ1d³ }618lR ´”Z9¥å--Ìmw¼¦µóáä7¸Wë”ä„…ÏV(¿Ý' ÐÎn‹’VÝŨ¶7¢EmŠVÙPv» §[8µµJžÉ×FÌœnoç92Þ¼6»ý_Ñf’mÄ2Ðö+ÚdÚ•‚.oãÑ€V¨‹Áè6´œ´LƒÜIhmcÊ·¬ul¢ƒ*²O0Ã"‡54hš\Èê=#õ’¡a ü`·xtˆT®)0-GN7@`Œb)Ü#µUƒ@]©55¡¡+ : ¬_y-ð^yˆ‚°ù Û3ϲÚ>a©$ŒÂòY!~ž†I†‡ÅžSÓ’ŸËeÙEIè”-üpˆeRsK•zz$Ä55­òmšS­`§Ò*ªzµþàrìàËbbRtŽr°È¥Ø"}®@Ä’’õáGr9÷TJ{ (ñµþöÉ 'õ&Ϥ¯(… Ü5£+abuÏIµÔu€‘©ØÖ‡’$ñÉ#!!ê¿ÂWˆ×, ȃMJvÇ¢²A€Z«N™QDd‘ÍÃÑÃüx–l3ûë6ã>Ë£dT–èÖ2}J ‘Ë”.LZéqÃѹöP|Ñ Õ9Ö€*ê;dq …uW,t–Èë¹û9pTí¡Íuî;B:h¶û¬›|÷8s•9Ý¥|³”Ÿ’¯–6…PcìÒxûÎ^¥áº‘#Qo[Ö¢?{ÎLØÁ;YP”AnGPG‘¸fáC?Ö’¹Øø‰Ü€ß†0²8Bd¢êf¦¬=Q¹ÆÝønGa>¡”¯J1æSxn§à•¼¢( mzÅ"ZæŸÃ¶ºSðù>Üö‹EGý8{îãi•ó. =¬×-k½®›€iy ùNÓX÷ ™…º#i×=»ÏÀ©5!WwQâéÉôú—âö.Š8EäQÔ%ΕG\ÀøÿÉ­0Æýõ˜gªéå_ŠÔ¦r%ϾržP¼Ÿ«gï)7´§\MÚSBR6jO¹Ê –|{J?éñF=ÞžrÞíd† <-™ò\¨Jdöj“"´¢?côî:ŸõbA¶ùÊ·Ý4u7s1^K…˜$;~o^*´“rxl/U&U¿bPn&¹ÔØW†¦`¹Íàm>7€Íd´²éÐE±‰°ü{¯e˜“y8f(Ãê>cà§Ë¯ g¤¦ ë2¬§dX›·&K´[®ëØ9gñÝŒ}jî½·û=þ<ïqõÈÞ¿K¿ åöýï±}w”28n:ßaï 'Ö Í>8§mØÌµÃ1AŸÕ´óæb’¢ù iq§oôöÎkQÛ^Em{iQ³î>¡ÝÏyÿ Uvò€h)OVW@s½$Þ‚Uw IÓ-.[+;<šÂWç·Uí‹’¼ßç½]£#LÙ;¡ÀÛé¶ÿ2f:ÿIÊ9I&Ç.M¸¥`¥ƒÝGö¸kÕ—#^´ZM÷cIýP v÷™³4 æ²K}w‘žŸ„òWÓ°(K•ë)Ÿ-W÷¸Ú=¢Ø]nøŠ~sbE‚ÎUùkÙ¬|˜öVf†GZä gs´ØÜåÄÅ^¤íÉI‘½š5Rºôj#ܾn®E‹%…‹6½:FcæO†å‡ˆK…f–›Óœê+?è…nÈÊïÿFÛ1å²ã*íÈRè0þ`¡2c!ì(bJ,gÂóS—?²Ê–ðhÅ);*Ú6Xqgìªqƒ·’IÔµÕ®72”_ãíc¯Êq´Kë­>T•e|«xš 7a•|Hq`¾:Úþxò‡ÈZÁwytWÒ–)‘SbåÌŽ¯;ôï'ãlÝEƱ¥›ˆô’‰©#ƒo[ qôüݾ“å_kÁVÚ¹a1€ px±t°î>!%Ø#»;öCgTÒzþ¤½ž¦âfqnN8Z, ¿§ÁÊà”Yëe^©ÂÕAkKßbǺd­îºÉû€|ÿp ç{°—_± µ“ª)_*¦—Ze¼J«\¾¯ZYN»$µr¢ýs5:oS  OÜåž(«Q-{úþ][ŒÍzßÓuåÎ;øCrUb¬ÿ-¥ƒ¿¶ûJRüÇ“RœjÜÔ®Ýÿ…cá÷\"‰„ð{ÙÞßgkø=‡¨dŽOø}Õ|g’ö"Ééaß'½7…Ýø¡ÔÞŽrÙëzæj–¹žeºDÑý©š›ˆ[TÞàáí¦Yç»&©\^v™ñßÇÞ—§ÿ}cm}ÿùQ®eü÷ú ã¿?ÔìÏšÿþ¶¿±‹ÿ¾¶±œÿqñl·ã¿7½yšïbØ,Œ¿s´‹é#AšÅ¸ãøâ2ÍI­Cþû;'íã:¹ë½ßi´ $6öª ?¶á&:8Úqh‚¸Û:=92&”êà6·Uƒ6­cÄ?Š”¹Œ&½îMž1$Ÿ‡î!îšZdŒE TW”"1¬±¨(ƒ±™, +4™Ì‘ÞçéˆÃÎ'6{O†§¯«O}C}KlªnŸýãœ!ïaÒÉ@L2\sŽRŸŸ<5£ÍqxA¤oœb¢Î®Ï˜ËãÑíPˆyèF³Ë+À¤ª %´®0 /\{¢ŽaÎËbÒ¿¼îŠZE¼GgUþ…A«ï†Cô/˜1±ÎŸ)[~®r¼âüŠn¯7Ãl“²=ªˆÓÉ ƒÌ—ĪÇÁäf4<§ã2íbx|•að)6rX«ìwÐÏëîå°?s d ç|1 F·”XoÜL° hcèO®8*+7”óRÌîB·H1á2?Î9(9jAK®-_½°ZÚ?ø cÄ ³¢8.¡C“þ— É è´PF@ð¿i@½¢Œ9Øñ¨£‘—'nbÀËñ2àhÐõ³þP¥é¥ÐÑa 'œ’´w5MŒH`cŒ7í‰nM¤0ÄLbÈ·u0ŽDœÎÍCü:å°zÉô¶?Aä@4ý?%Ä3 áÌLÝ‚éèÆ•˜Ó²jŠP™ZÏFÓéèÚJçzc [dŽXú*Œ{ZlòÄ4À ¹* ¹—ÖŠ¢Î8Ta«gŠ_À(ÌqæE½;H^L˜ÑðÞœÍõª1ÅЭ²ë0“Ão&ð;€|M˜ý³+.G£sû‹ñè«LccGÛ£èJŠÍ]öб†p‡&qþÎ`:ˆ3[»U™£+zØx›lß^ÞöÅ[7Lf+‘öˆ=Wÿ£ƒ¾¨^èWöÂܺuz1£àYÉ¢@™wRÜô¿Œ¦*syk:_‹IðÇ #ÖKx,ô¤Â ` =d™]š,ý¥P§ƒ 沆ç1OJ£Ãàrпäð¾°ÛʸSšÓsÙþÙL‘3gÉ™ôÏai•ÍûhSEVüq„IL0j˜jÆG•BFF“§ vE•çä£??…§[$¯èôÎ2]ídÖ»âüXh1gw0ÑéXŽ©‰=‰”Y¸¥¸ñЗ³@K2¬|žhÈ÷C;Ù’À),dõ×42Ö<ÆQC⚈_ðËuÄ3B’œšvöb¦8¯Ö:Ðþ»  ¢N¡%ú“ò)ðø¢ÎEç2ðuˆã Kò™`0-+pØ^(¨¿`.ùEÍU,‘\¡@ãL¹]ZØPwÒJJ²\®T–·¼ S5[Ôô1Fër’¬‰_^C›àO£‚ÔÐDBà à@Yk%¾áÈ¿•­ ñÿóÿ*{ÿ·!ùFÉ%”¨ðÕ^ØùÚÙ°wÕ^MÛ­W3µiÏTs°Tæê„!¨,Ì7e¢®Ú¿ÀF§?µò©|%ÆJÉ5$•ÛT`lɼ‰ñÉçJã_&³››Q(­©ÄœÑܸýFÊ‚0 ÿ Æ#1¾Y«¯ÜZª®¶Wj³é µÖðÆ7uÚÈ"¯…÷¼õk³] +U´O9fs|ÕÃ7'BŸQ”¡I*9¡‹Ž—Òæ;ó¥Íî· êJü:Mû8mi×SK‹`‘0è×òí+›ÅÊ|’'õÉÆŠJ~òf6&æ½Í\é㥫2©›Ëå$̲‹™;€œcbŒA0²âUGÓo¶n§d*wZ;Àaÿq} æ­YƒÉ5þ‚ßÞUv¬Ãhývðµ {²XkûC³âñdØGÝ1ˆ"ð¼¾Û¨?oì7[U³Lõj  tFÁ|ms å“Í:b%A ¸Ce”?éHkç}c‡b³Óår~¤±W?©Óç ýmÑßÓ#V—yôtÒ¼1š)IJö`¢œн“:~P®’ù«9:™'}«ÖjèüwH;ÏõSòÎß!Û†³+‰‰6dÓ"™)Ì|ðÿPo{SM™ #âÐÐÄc»†fÝðwuözt³³ 7#eÕoiG—MoÓE 2ŠuÄ™î8Š \±‚§„ä°$)©JPãÜ\—7ï*ÞHe6É!aw6,·ºë•ÙM‚Ô ü+ÚkÅi¤TÑ™heˆ(h- °ò Jù5íË,pjÅžÁ­! 5ýßrZŠ0o&ßÇYFÃ*‹‰×Ž”åb$ ñ™äQÎMûÀM5v"âÜ-Çà2W9ËE]–{Îò€ ºƒ»8ÚEÕVú°Î{-f ­•è›`+,¿ÔHOkV7éÐsäP8‚<‡ Â̯¢žÅÁqO4£åÑh5q´ü‡­Å—w€Ä¶ãe Ÿ”QonÎ(¹ád0ºñCÙ˜¤ôÅÕÁhtƒ^¶]Ñè689ç„£à¤àq„xäÇB­È®òðmÕ+‹+„Qà³ðg‘4Í9¤×ùÝW¨5×}Ú7ù¾ƒÀœU&&ðïª|åÊG)ápj4'ó}7o£s€ ",ojmSË.b#4“QÝo¡d]¢„¥ Rp€Õ؇Ó+}È´¼¾žk¹S"1zrÂfEqPyIÁq`ä SF¨ð7bäíA}¬Çèc#ií •Rî‰~>ºšSmtj”3X÷ÿ Äný]«öñž@ªZš%‘b³_r1‘.%ÙëÅÏþ$ìʦ¤á—ùlìx¯ÄíÖܸÅWjâþ V¿[ ŸÿÛBbûR5÷sÍüw4ßË®¹_ŽžÂJšûóÂcÏý{SÇ‹{SÇvŒ:^ä‘|Õüÿc†‡*¦èö€jçÞÅÖË€üRÈœlmÃøì3zàò]m§dƒ!ï½ø‘Ó°¸ÂT·åOH8}Öô:ËÓgqYç¿üïyþËÛö¶¶}”„Ö¼õ­åùǹ–ç¿~èË8ÿõ@³?sþolnoEç¿·µ¹œÿqñlœÿòùüׇ’øNqÕUø^%ø^ó–ÿ´Ï_¡Œ3úo¦¤šï(•Ë1†F VÃáÜx~ÉáQ•'‘ZòóƒüüM~Î}¼Èï ü€œŒÕVÆgtâfÐŒGlÀ—óÑôŠbüL¤ÏbW;@cE¿|ö­ìsýÉ·ëë`:î÷Øiµ‡žIçÁ…:uAgx¤÷²üñ&âkIð)‹?+â :è¡KOÉ/U*•ÒP#£ ¾úE!þÄ¿Eñê5Ü=º5á[‘~Zæ§ =߸ Ýá\º-QæÓüG;RNN´mWàÈØ³2£J9!°€º<¹-o;û2<è¼Uò_A-F›$iâ«|çoøÎo—õÇxçŸÊÇÊä@XØËHWÁô6†Öy ä”DÂ+ ðŸä@”ËSÆ™£ÉÕX“{x&+Ð'3"$#_ÔZÀ‹r¼†øÿ}Ç«JƒÕª0´p°îz˜àÿ—àÕ‡Ü[Eürñä‰+‰6†\òáß:üÛ€›ðo x4<û þ}¬Ýų­†Ñd´~¿jü k#énì ¹ð, µ¦Šä7¼û[ôîG¼û1z·Šwa©©U-ÿ¼ÛŠÞm³ÿÌÊGCÏÑF3b5ro %hãÂÌü`üf>Ød(PÚ6-C[üºT¶ÈNóS¨N ÛÆ X¶¸1íuc<¬²ÀfX€ÐViB÷3ð‡îÓ¹iÀMÌÎch2üNTÝÁ?ž†ZÃÚÿ_<Ìàñ_Ö×ü¥üÿ(×rÿÿC_ÆþÿfÖü÷Ö`æGçÿÚ¶·œÿqÉßÞÿ£GUmo¿$Ž(H‡6µð·½sJj€ú^U‡b‘«âÑI½V­µEC{,óè+ox–êÛæNÕ:ñ‚xHÕ8t$:ŽBÑÐ!ºæî¯ ÷ö¡#µa”üŠˆ7†‚´rc@ô\ x{ö–éskDøÐ8Í EЧc`ä¿\L…<×I1Š+ÈhÜŒƒ €²‘'kÑÕÓŒü–,÷e1íΠ+_ðßÊJ›KÈ€ð¤¯Û;aü!©|1nÛ'/¨Òk<úI©1Óîç`(wøúä?w+GÔ$l¯ÚyijYñÌÝ×kñ¬þìõû¶"ª‘§Mý´ OßÊs¾òyn½…˜±#ST+wÔðYð$p8çÆ6A1P@_¸Ânx»g“Ηbíä4˜4T®š@H\³‘\³ù,Ú!©Yø¢MÓžmò¶½Bަ|°¶aÙ9E’ wÚؾÓþRa8¿„›l|KtW׬•F½;ÿ!Ï““úoõý7íT=P}§ÕîðGÕñ:}ܲ5;“ñV×ÙɃý#€× ÉhÞÓ›ÆUoÁ€¥4Z]Ç8zøYMn)E‹ßAm¥‡Å¨’.µxH#j¸ÐÓпɧwç4š8éððÀ,o€%ûØvbExHœ:þ,¸Ä7£þr ʰ(Áð\ÂцO9ëÖ;¼T«Â»1'&Uƨuð¡@ÝÀƒ1'@üD*@jÇÕ†€a¸ ªòÚšxíp:ænÖG£Ï:ÆÅ£4 GÃ2Å2sЇŽíöþm­h£·s#Ùůñsvœ?cîdR¦Štš¹wœ‰tÀoB'däèGµà½Âg_J¯Š•XëHQGt]3º¡v/ÅÈÐf¾S\µðª$_™öÂfáHs‘ø Mò°×Me¤ |C¯ü¨)€CjìL1º ÆÒV4œ ?C#ÅãÚtN¯Ë؆A€»%€G¡ïÁ—`P1f\lè ¡ø)>Ú3èÄ™IìVb¥WòÈNbIÞÇHw(e‡÷£ñÍ9Ö<²Í‚xÖÆÃ[¸xf³fc_íGÕ.•™ž}2þ>¬¼%G£xó¸Ñ•J›˜­„F›ã]‚«ÝÍB¤¥eÚ:ë´l‹j¼H$HÚ—7–ؾ¬ô4AϒƈÔX©jä˜X‰#CA>¬Í3±bõÆnw&V–2V42tÓ²°bþHva´bî?U¿ó²õÿgO&þûÆÒÿïq®¥þÿ‡¾LýÿÃÌþ¬ù(ö6cñß×—ùåâÙÕÿïªM\»¹ÓÀ0Dµæ~µ [Øöqs¿£ìïhɬï¹d.uµKœÉ´à×¥õ ÷uëÆ!Saš¬Bx'QExCìJtIÃÍí¿DÙèe©a×¥ÅA5hNËÃnÔô@çÞ,«úB´t+Þâfm%nŽÈg‹X´r»ñ[Kí£àëêðj‡º?±|›'ÕÂH¹ZÐ0 Ì­@1R°Ä·ÚFA,Êä™ùÊšŽ›{Ûp²¤ ý#wb?º*ç$NÉИdBОDZøZˆöŸ·ÎñmÁ/Š ý÷¶ð¹( °Ý“’ÑníêJŸÃò~‘vßÈZ„XštsöÑt½½ê÷®¤;­éJ›ØE "iÞUøîý†0b3Äšô–4º¶¦€]Zw3o<^Îðн ",¹£“lLdxÌÈs D@øì-žÈ´ŸQ^‘Á6r˜BŸ8 3Á_»˜f^Ü‚ˆ¤ôZlâûÎgø±ÎæµÑœâÊ£Äçq4þÑT.¦?Ø0eL“Â#­«cëÑ9F™‡¦Ì¦¤™ªcb¤ÖŠ Ýlæa †g@Å’HRa–dð¨WQ)Å`U¨VñÂGÌqÌWQD/]à‹ñѹ`ðƒŠÃáx_þŸžR0d8 jÿO‡“³€=Ì»ù†9V,m˜Ã·Åšð ld¶:axôKl$À™pÖÃÿE2ÚñòÒ†Y^Z»ÿ½äÃLƒy nÚD¥{æw0x¢óº?TO~#÷‡£#TB4Žæs4à2¿Îú$ÄLgã!®L°œp’äy„ñ¼ÖDå¸Y þn„úжš°‚tYz.ØÚ:"€1RyCk満fÙx•Ò Y mu!¾Â¢J}ƒ\½è6ëÕƒ)s ãŽdœ… J÷ôŽöcî¹IÅ£Œ˜ gèO— EÐÊ?lÓšÙ¯ÐëÃÝTaY•É;‰õôK¾¼J ±šÄt2/¨ë»Òek_L×ýN‘yUZZ 5#bŽ"êI3\ÂõžL•Ü³Ž ÜT=ùý<ª¾üẠR:Y¥«Dp^Ü®)ÔѰC>ö.úT(Û'Î@mü„^’ÉÕPÉR>ôC¼%ÃöxkŒèé&»iï©_ñ¶ñ«qº`}DEÓ3¤¤(ü±!?;z{æÖüɆ¿“¶e©tvë’õeÅß%’dØ ˜ŽïŒ0,àG§„HW’”—a/ØÏç]bI¶ ®z&¢:ödµ;ÕOH¨ èX¬ˆ6ÍQú•½§77„^f‰46Ãò,7j•¹ ÒøX3«4'Dæ×Šxïœùñ¡á‘Eà‰IðD„¢ôÛÎGˆ÷°×I%ËLèQ„[ãÂC–!J>w Ž›çdÌëöB'uó³C@–OÀ×SY"ÆBÓÇiY‹â>ɱÿÂïe¦Œø%Öô×ìjFL®u75‹£$áXF›ÙË(û0Ó¥¯4a£ËèœËacžå—OËÏ-y9´ÖBµ η:q½q‡åO¯u ‹ßƹø‘H2?ã{¨ÕQºú½V?c雃 Z«ßÃ/~D|‹[üœÿ‹_5Ä~æâg/uñ¥0cñ³¨çï¸ø9¹áVÖÊ·™såãåMF‡àïñ•o3yåÛr±P³pdƒ,âή"¾»MÝËÒ7rÛví|ÕæÖ7·3œ­ËÍíØÜº™g»™{u—fÕÜä&1 çò¿=çòïX3Ó—‡û,ÿaÿ2×ÂÅ‹ˆè—¸#ÄlcþýOtÏ«¸ÿ_jÏ®$0muÏ«6·®-mºLxçµÜÍ_2&é]×ò»ÏÐ8Ê á,‰E¾ÌZò_ä\ò ¾©7½‘{R@ €°ð"Yx¹Üú.nëëXad ¢»ì}ˆÐ”ý¯Ê«ÅÝr¬z Û}ñ@{äÇ_ï¶ñµ–À¿ÈÆ×ØK%ï÷ÄCl|Ý;ÜÈý±W@7ô³Ö?ÏË¿çÕë±÷5ïE@ÏK\=?ç8ú[Œ®ŽÊnÜ|»q¸îx¯„²KÜL+ñß{#]¥¯Gº‘&ÆÞKã§¹†Ïâ¬Åé¶‘;š‹½CÇB”k÷fGj.^É©1mßmÕ¸—µØÔ>Éó£[‹y2-Ô`œR,€æ4Û8Ÿgw½ƒñcnh0ö63…ˆšŒ½d±aó/µoæµ±ñpûfsa4ÖD¹ÞÓv쥛Kîd<öœ–¿ÿRø¶Ã{q1üëj9~`µÈÝ-Çs ~!–ã'¾ ºyá‹Ì%p{¶co;y |‘c ¼ƒõØØãú¯„4§nqýÅú¯¸ÅM´{鑇1{ öŽ…(äîí^RP“–trßÁhœ_Ázÿ}òÒll¿|Ñ›_Órü¸›ßïa9~L×λOÓ;YŽýô£#ä'ý`¶c-QðŸ˜Å—{à¹÷Àn#²Ÿn?IÜVÜ Ï³VúNÓÈr­ÔöåÇÛF/íËÖ»·7Ž—ooü=ŒËÕE2kSì§Ÿ.Áë 3.'!®ØöÙ_O^=N¯˜ÅÛgG€ÛHÚ:WˆÛÝÐ\ýtcÜ.¯äËŽÿ{ùdâÿn.ó=εŒÿûC_fü߇™ý™ókk}#ÿwc{9ÿãâÙÿ{@îÐ;õ“·;%LnÍ9í1q””¢–áyCÙ,gx^wú¾©iû$ïÃÜYúÄe0ÄL#™‰ú`¤9Îæ°$&³Þ‚À,&¦¼–Ž‚èn®º$ü0YY…wmú 4|[DÇR_ÇÃïkB +l â•ÀQàSŽÒT¢»_‰Ø†¢0,{Ųl?uaÈŒ}wLX 8eü‰ áGbzú‚øb7|ÏÕ ƒf­ÑªUC¸;»-ŒBà ?@¹VUÛ\¹êPGQá¼xŒ7J½i‰ÐzÙ['Bè4@µìiAÉ0à ©d˜D-¦3|Kºýš©Œ‰5&êÜÀKó€2}™‘” fGº ‘XÐr5¹(å:SÏÇ4‡½!ôijÚQž‡¿÷Ÿ™åœä}²Ÿ€â7 X©·+¦SGJ-)qákaÎu{½Š?Ór×ÅkÀö8 …>¿Ž¨±xÎ@Spò>—ÝÀÚ€äÅd ;}¹´Žêtk©Lnä½õ‚kON/ø¯ÕçbígQû×þåPô0Ý(É ÿùš'§n©•ðQå`߆n Ö{\ w•à §b7xªQn‚^¿;(£Šñ<\ô¥“‰Z)µfS)tÁú> €aZ£aœ[ hot1ãfåÆ}ç ³ Ô(ôvt,%¾U>ß8ë>ì[‰1©í0”Aï3¦—’c1 äXàšxˆkØÈ6~p5¸†uwïX)‘ñÖA"Æþ*Ââ½ÂakQ%5íÙ0•B‰g J¶9Äóꇉ÷,X?Ì0T?Ìl4ÔÓ+ªVŒ:[?Ì%SôÃŽ)ö(ý0É=õÃ÷TëUNE\›ÊŸ«•1ŽÞÁ1ùœ£‰e»¦P3Xª££Êh;¿Ñî÷ôå9Ý.:àºÁŠÌél±qÁèˆE\Ò¦L™0Îwµ“ du47ΩQÁð|"f70›0)^Wœ¬'ïÿ 8ª½O¡c¯f¤¶îsØEÑŽè÷î°º^Ãîw4˜!~%.³É½7ÊóSræ.È œ5ø:ÅNOÔ]‰ô±°;»ÄíØh<µ´'@οÎúƒpqÊ|Ô^½ÇŒ‹Èýg°¹YÂG/+öaÚBûª;„RDßuÝJôüR›&ÕèÒ*ì˵‚¹ÈJ$­$"c1ùÖá\R„aÙQŠ-CñãÕ"‚Eˆ‰Ú(Þög¤] ésÄ/2d ÉEˆ!™ §-Uœ™ú|’h1A(*!zK÷ËÓ+åÈÎ ß)qt‰Fé†(ÓK¨ˆ=Žö5 }ãÑmÞÆ±©°-h¯¤¤$~´ DO®ÏÜÉ´P×yÑ—ígJƒæq×’ºD©ÞM(׳Á´3賺éêFú•Y…HðU2 ÞŒÆÀþ΋‘J»º’ƒÚ »À+e-š€ŒºüƒpØ1<±P€=2 Í`Ë¢;˜ŒÄ›Ù›vûƒI1:˜i ÏD6á!P ?¹«­1Æ[*F©Ï¡â»;Àtq³ÂkVhN šœ¤T¬À»ÿ‰'nHÇjÈíŽ2ìwEÌ™mr™|õ‘zÍgÑÑ`ë°èÀ¢˜¾H>g$Ëþ`X”;ºç¨›Ò}‹0Ë$cšøÃëîׂíþ9Úp]â]Ô”)[å^QxgÍ>\ ±e`ˆ”|Lšê% ÄŒÛΉB,Q5Fz*²)íR¤Eð¢Ï(}NZZ´J{Mt/{8 öŠ×–~ꊭoÔ¸q0™Ú˜$§Œ©˜M‚sM!íPH»B€ G˜ŽÃ-‡QxÕ½ @EÖ´x‚aÔP•Ï]ÌQyM¨•î ;Þ €VÐrAB+û `¤°Á×î5ì|Ùˆ?„aÝäuO2_ƒdLíÒù6È\\<â°8„Ìe–ÚÞ1 õÍhˆCDî-4(º:Ö¹#“‡¦Ì¦„bÒ#v/ˆ¡+ǘI14Hæl|¥±–R xº#xJ‡œƒ„³‹1¾¤ |1þwGI,à#‡Ãð¾ü?<%Ïžd8 jÿO‡“³€=Ì»ù†9V,m˜Ã·Åšð ld¶:axôKl$À™pÖÃÿE2ÚñòÒ†Y^žæïå¡òϦa@™’8J‘ñÈè#¹¹Zm!žûGÅêÌéËR?>¨UívQ¸ä—ñc×[ÝB¸Ì¯³>-™ÓÙxˆklo'}(ñÙÿýFøÖÿ! íX(-/‹n§Æ ׸m¥+gÙ-Ì’®fà2bªÅfÐ6¾&Š)^'|Ñ;–¦ÛÆ ¬9ìRm#¾¢lgD?³’#|¯Hvcà ˆ^Ñ¡n×âq«ôvˆ>v¥Ö©xù±Žµ>÷o€·~ÃÐUý.ßäSqŒ ’F%´ó*8mx²O±ÓЦÅýµ¶£–Û¤bå¨ÖÐÐLbp…)k¼Wý²Wl¿zͬˆyØ[ú¯>•èaQ†o¥;}GPDa2ëDâ|–©ï5´ú•ù%†!“#.Ìa¡IA÷ÉA'B›‚„ÕŒœ®Öð!­=2zU¨¯§‚^ùàÕ'‰múšw°SG¨•hžà ?Q Óïà8âc¢ß«Y-eÑA³GLýây€j'ý8%âRbd÷0p!\;µ›¤MïhÛè’~««aÌÂø¹g}ÅÖ’¨P0Ò!™âDX/Ž›ðÛÝ#k„ý&óƬƒI)“´¼#F™‘‹\e­š;, kt&ȲFà ãµnÄ¢Œ7&k™‹×ÆÊŠ©BÝ««,h‘ëlœ³ ƒ¹ª|"o{åÅÃ]LÜiñ) VH‹ôŸ“Ç ÄwÕ{õ™™FºZÍâÁŸ^ ËŸWõbm½Ìê»î¥V¤¬¶„Šò!²âwåÚüX&i)3™òá|Ë®`v´šÂ®ôË,²A^/•À_„-ù ”…E¾}γú‹'CŸ\KÒ£’ÔÏ$YA¤‹ D—!¦TH¼4‚«*†´!0¦Få‹ý¹s“¥E- d™WDF:üEó›Äõ8EÌ’Db¨\C‚ÀÁÌ–’¸ãjb·s F‰AD„L³…‘6¯3E‘$Ù¹ïf Gaµ §ÜaBMñê §Â“pê›ã²ýÿ¾>ÿ¿méÿó(×ÒÿLÿ¿‡™ýYóÃ_[÷âþËø¯rñlúÿ}P UŽTbrøSy"ÌxúK?}ÝÃÅG;ÙJCƒ~”(âþ"0c¾G¹ùÑ'§˜ÓÙïÇÌ 1©׈kòd‘fwhä úd½Ÿ’éÿbйCðûJ$nE8é!¾à?íÞ6Gä…X Ž¡ #*D£(DC((W(¥fÆ ÏWõ‡œ.½Ñy€v¦·âª;‘^F¿gÌyé»™áãõÓ¾bß4Î>èp³ºÓ$1ð#ù<Ã7C»;¡£Ö$âGQ­Ìå¶Â’ Àu"àœfŽØ‹ ‰† Ó÷‰/ ¶BêwRQ”?£&G>Œ Í~›ânƒ¦'dƒS§èóøˆ¡ÛPµÔH‰:Á3Ð^»$Ÿ¨FcOHY‹ÓYZm(„aâä[Ö€j jÂÈpª¢‰/x¥#å[Eë¾Ń}°ÎsúÒE¨ ™€bŽR(†Z"}i€ßöo%Núïå—Àj“ÐlêôK°<ì¨÷ “‘ܲž·n£éăw¶}ø·ÿ6àß&üÛ‚Ûðïü{™¢é„Bè„@è„@è„@è„ÎËïè0¯O.½ó¹9ÈágÃHh ÍŠt‘;Å­‘ܶ$W“º¯­ó¡|p½ ëðoþmÿ—ðÏÛÞõàv—ÄÌ«Å#óýU\GaÓÖë€;kÙp°bB®ç–s#mÝð茭g+ŒŒ÷·8t¯çØO|…oG°Ø_0f{Úž PPÆ—¯t(|”ü°Œ[áùU[§sÒ£’Ë[Ñ?±ÓšíÉzþžøÐ?©'•òVé{Ô1CKÞñ¹¤o•ôUIßê÷FB¿[Ú¡côX¬b®@øéëpŽRø½ŒPVÚ^´¨oõ­¢~¢²0:¬›ù‡u†uý1‡µ³Î%×­’ëªäº…€­»"®ãÏõƇYtÝ(ºn¥^måAÝv~Ômê6ž&ê:\rÃ*¹¡JnXH~± $‹UÇšÛÙÀO‡ Ì¢FÑ «(Ћ<ó2?ÁlÁlþÕ ¦³É%7­’›ªä¦EZÞÚcÑ–ßÄŸ›IR3‹nE7­¢8¸ÞZªôæQ¶€*·~ªìlqÉ-«ä–*¹eÓo’äõÐô‹?·ðçÖßœœ­¢[FÑ-«(¢ÅË#Òzsˆ´Û@ùÛKÊS~g›Kn[%·UÉm{ŽÜYJ_ìqW߯ÛËI¤&‘UtÛ(ºmE{yö:Þ{0ß^,çÛ}æ[ç—|a•|¡J¾°g梶o=3±ü üùb9Qï0Q­¢/Œ¢/¬¢H^žM°7Ç&ø%Ìé—Ë9ý8sºó’K¾´J¾T%_Ú³ÿÑöõ‹ýøó%þ|¹dË ¬¢/¢/­¢HV^]ˆ7‡.6¨_ñÏ’s<1ÎѤðЯÙc¿¦ß4JƉ¿ŸqW÷Ö¨õkKVôdX‘‚5k6Ný<ê2¼¢§°Þ„¾0.SæÐiÊô± >š-}´fúh¥ôÑž¹NFN|°î´g®cÉu´g6Rí™°gúoÏ ÕjGQŒÒÁ¡ š‡êœ‚ŸGûã?qƒ¦¿‘Ðq“WÊP¼~úqÞ£‡)üžÄ{€.êÛ¼ÇϳË÷ÿ6Më®Ыü\@„D‹®E×íÅÀϳ›ó@“¦ÿbAXN‘I ÀÆÓ ƒhÑ £è†-øyäxiÓÉ6ÍõµÇ¢--ïÂÏÍ¿©E‹nE7mñs=¶¾´iŠEØ4ד„¯‡¦_½_ƒŸ[grŽÝ2ŠnÙ»©õ¯ÎÌ]¿Ñ—ßÈ‘¾TÅ|±¿ü§ù ®ÆèK@‡| Õ|A¼\ÉT`hÔñxÝ7 gU†áú ?›7×AG:M)— V„!š0šÕÍ  ˜8¸Ð¤„YÛ‚ñ5eÕ<£”e:w”Œ²cÁšÀ6Gó[½äDŸ6J~©R©”†z Bô(”úÿá÷Wþ‚¹…ºôU—,S.%¿…%…XŠèÒÂ`Í]*22l—2•êêƒÖj)% ”„É[-40¡’HJ,&‰¥¯î L_er±H&Ì) „¨ Þ—cXúÃޘРc0½ ®‰þ†óO.ñ·ÅËoÙÃòÍ=,”¢‚äHR 6Šßî=¿UN8:WF.£«ÕX¿Þ(_ª÷î@µÂpÂü q¦0:4òläØ¿%·òMIP¾ëvÛñºÐhÜsE„‚—6kV­BÛÙm•Dëצ Vv´¦"ÌzQûÍüQ5~p–¦šˆzä¿;˜(êƒå 7aihÆM ÷tM”a ,NðÊXv%t¡¦ÊoòU6’Ÿñ%[… —l8<9p¼†^*жœ¾g– Ì’w ž ;Zxo#R(ÝÚj{¥W‹…Ý…êívB«Û+²hBÛ߬˜UcÁбoþÁ|ͳF-Þ¼°õí•ªí¡µ›‰«NDV‰÷‘áÝÿ͸ä èþ¼dÑY%ë¤:KÔÃ^–þgøtô?[kËýߣ\KýÏ}úŸšý™óËßôbúŸ¥þ÷q.žíýOáìÕZ ðÖZûû{tžìÃRëãÞBð@Í¥êqÁ6 óŽmȇyÕ?ŽL_k+†ØìùèšÕ9¬ ™pÀõ.Æ+§à£1BÂW(sÞŸÀçl†››áÈiLDê&•ü&.0H<îuMøZ×Äm”Í{eV†]Í+¡[ZX+yEû±o>Æ Ž‘çë¯t×dmj6â@Ä [ñíüFŠºh÷ÜÙ¥^#W›pôNý˜ê£Ô~ycíåf‰¾1ÍlUAÈèüDCмH~3Sr€½`Úíl24‰‘âí+3{À$g^8cN;Ø õfùb„’6Uˆ„,.aüö³î´wÅúœÙ €E0žÿBÌ&Áœ§cB{}ôªP§wG_ËG³Á%Ó«ãiƒÀ(½5¡1”U!yÚ~/E%:o¿Ÿ#Ï9Æ™¬Ô<\È•£“³NYúüi|ÞtRKBÎVÅ±î½Ø\_Ûö¶_n¾ØÚØÞzéoú/¶¶·¶Ö£Žªã?þ¸2£3(ZWÒ‡û”zîjͼڪêq«„qÍK˜á-Eou‡på§îäï0™çUf_„&AGŸ ÃÛ¨V*O2=Á”~µÎªÕnÑ*…Jªu—š€ä·R«§(k¸U$–D•‹·`Ý4†B°VÇÖûå5ôÍÊ"¨Ãœ¢ðÆRÑÑ©°ÊY×Ùýìd†ÕÑÍ7ƒûÊFFrZFsøB…RgµVf?²0õžÎw\Òš<Ý>?©}(ÕMãMÄñµ—}kìâ=ðs÷XÀ ÷B”•bÒŸ§/ëwè‹)¢dôd=wOX‹XÆÁ´. n€Êé!ü''%”n Ùá ×Ã:Xe=e,Ì$‹¹u¥îï.Kÿ7î>ýßú2ÿÛã\Kýß}ú¿šýYó߃ë1ýŸ¿Ôÿ?Êų=¢ÿkîÿH°gÛ²uRoÃÆ¤Ýh¥eœn@Ái ågãÍq¸u;‚›ÕZ[4P|Zª]doŽiGÃ㘼»³roÅ#¾‹5‹‰/Ü“hûêÓŸGY]ß̦œqr3èO§¨¹õ±m·ýé<<,%{VQÌæŽ˜Pª;ü&~š€0<ø °rQ>ïw/GÃ0·$‰ËãQídN=‡x³òV nè3³·,%—­0lˆx§äÛáÝê™Y_æÝkËöì[í±ý±îÞ¬‹þx2ä¶D·QeÛ §]™¡p2;sµ-¥ ºÝ?=5ŠbˆÚḦw†šÉi²ÚR½~¿ ©–öxBéÌï $ 2a ‡¸ŠBÖˆt‡ "4rŸÊ͆ÓѬw¥µ—ûþ÷ÓÖ¯§;Íý–;Ž1Úù†Ø¬ ³öNÃíGÇÛ¬zqÕý‚:ë`hŽº4JÐìNœ1Ñ)²tlÔ¬£"Ú·#Ñ÷§Á¸v¯;ľ ’Ô²ðË~Y¯TÙ*eQ— _ºg“ѹ’ÅN(gÈ?m Ó«îTPbÎñ—SкÓ>tºÛëÍÆÝÞ7©x朻«C²¹XÌFr+UCž©–?ŒzŸ'¢Í†ée§£ ãIÃoÊŸ0|. }”™—ŒËíU¿wo?ÝÏhc ÈVU¢ x*ÐCœ“þ„ sÈ>WÉ_=¤"I‚žM~l΀šç±ZºÂª‡”4š]^©{¾ $˜ö*lR!FLeʰ,%5Ȭ+!ÊJ®—ñ£âkrvâ¹H¤ãôµX{…ó½×áåb6 ‰9ŸåcWÑ:ò¥:šH×n¸@Ü Ð–pŽJüA0²Üƒr×ô›-•LÙ¨µ#ö¯¡××Á`Þšµ!,®ŸúS±wÕ Ð`b×o_»@N; ž÷‡fÅãɰ/Žºã?f<¯ï6êÏûÍVÕ,S½ÖJgÌ×¶ïí ›f„0¼`ïmgHnÅ>y§¶N¼,ÆÕõNN®8? «ª J€ŒòY\r5ÃöMAÊ‘õ6¹ *Õ«jWu¾õ@÷ÇÞƒî¥ü‚â ËàºÄÞ±x©ýnËöqi[Yd˜Z1⃉êb*R©ïWèU³‚ÁªÇYA+|â3µ„ËÑÂbµh=’ò˪ˆô@ªr_ªq´µ¹>9>È´^^²v'p.˜æøŽË÷@)k¬°ÂëìA•bqÅü½êÁFîiŸè˜+ËItÌ{ÚA×ñºÆ?25íÍ¥¦ýG½lýÿÙwÔÿoxkÞ–ç³þc©ÿ{”k©ÿÿ¡/Sÿÿ0³?kþûë€äèü÷}9ÿãâÙÕÿï*ý½Žn$ojMò®ïàG¤*/Å €Ïý’8~ó¦µÅßÃÿ;'ðw¿ÙäŠ>’aœÔ:ìmt²WÛ9B_0öFf{Â\¶ƒ¿€õàpmö×¼µ»[liC‚B_ò¦O 7£Vaÿ¾æÄtNëP›üöž?“ ‰I•êR_õ»ò&`2”ÛyG2@":CwÚq@ ¾!¿-4›Í¢¨‹=QÿOOž%â|û™ŸýkØëœÿ$Îú“€öŨ±H¤Kí_àf’”I B€¾2úÊŒ-Û• !Fõ“‚½ÃîÉûÓ>+ß/gHªÒ–Â['ö{‘ÖI‰Î©ïYÇÛ¡—7£á9ɴ r„%u‘ÁxŒgʇžzƒÔ•õÇâ²{ ¸AX†§>¾‡Ç·"öfc|™*t–…"´’TYÿS¨Ó¿¼šþN¯»}ÒóÔœ Û,Ôç×_÷ÏËÒ’ïÃú“àº_¾íŸO¯&²Ý¬Ëœˆ÷Ü$hžÝ¢5-ÈVÔN·Eÿ{ò½0¥æ~oÙ‹½Yš*ÔKë…~q…þìÁ¥I&"Îq2ý<øªšÍÚßH¥yõ=ÊCs {ô-ȃnÀÄïRFG•ñ3ÊèVŒH°½@Í@Ô¼߇VôÕ²Eh²·´â;áñ¯úþ›v©Y;xÛþòN)xç¢aV¢"e,*¯£îÜ Í?êà Þý7ùwéßTþßaø º8ÁÔÀ›ZP áœÝ©k0’ølÀÔœL-5ºn9¾’m¥!îøâ­Dj¼ÔLe¶®ç+°ˆJPa–e1KÛ Õî&ËŒL”‰~2& 4É¿— `î#¥¹¸;¶ÉO9úz–»W&| 9¾e£À×D }ܹ’Z(ô»p`xåÒ£‚¨¸Û¨DxI8.Qò¢eDtA» ªˆ=»éËZD%mP“ƒYT$ pØ$P5>L³êUDcDn ]XÇ.äp¢ï._Äê4”/4‘«Oâ(Ë'êÓÇ]/Ÿ‘!ÇEj±„HS"-òÓTrÔâ€^Wc'ÔÜC¡ ƒü®c 0gÄíhüy¢zkü{Þ«ÚjI‘pM°É–Ï,h,?ÛkDtuºîû׳kqÓÿ2šªlMgãk –?f¸BT”‘åîth$½ŒéˆÛ–œR‰ý"sáœÞo—˧bÄtxÊE—Ž)ýÙjE¾ø øîÏŽv÷vHý__{«ð÷?Û.XÞ\°NËböle7¬æ\°…qv,ð¿å·çî“ }1è^Îy~miÅý«YqéìZI¼Ý©+ÃLÌ k›sÍÃn®Ä êBˆTgsßu$¼Z»©›|'ËpIÔð ~‚àXƒ&—Ä»’hìTxÌyÿþ…š)Í<®SqÒÜï€ð™ÊÔ,ë±l'’Œ=ãû¾‘,"~è76$„›"2Áš©t¹+ \ÆÀnF6ßÈÊ¥Ô9´æØrWÞ2jNðçj|pSGWï¦1¼±(t´Â”‡VÈHâ‘_if÷8¢™„ú°°,ôC–6Ë“,"k„ 4ÖŸ¬•Q;ÐÙˆ«áâÞ“kdÔõLȈšÓ¡Z¯;ÝóoßF¶N¶ôÔ&—mÞãÒoí®`ǯ•Rá1ÍæåÕTô®pÓ{| 5çSRW£ÛA;óoä\=ð<øTœõ/a}«X{aÑ ®G_`Õ’´KÊWXV*Vå’øNžA.{ˆ7ƒE¦;¸E%ÔìË…‘µÅ®åÂ~ˆ5RÛ€¼±ÓØ«À/$V\@èà%,æf…µp¡©ì[÷ÊjYÇb²#8¶œÙk_r…³}ÃäzI±ÖÚãéèŽ,ÀN`4ccüJÿ¶{>£'Ìupu5¹Šb{Ï«1ï]é†Ú9D­ð$Æ¶Š rÃAÒ'@¢€û©Ðq6\Ið>I‚Ò7E–5špíJ7äޠȱUl‘<×`Ûþ‡\æ.‚CÊÂî€òj5.Lëvݲ—G,)¶)Ø(ŸqyÆõL‹1 Ùá#Ø…)N+Ùçªf³!©£Ñln(Æg¥bØ\±Œ@‹GǸt‘ùt!Ωñ¾½*¥!/‘*hHŒƒx5ëå‚%¢Œ©4j3ÃñçW˜6ŸT–ºf?ÄÐ1Aç-%y$ëAŒÁu2¾<…3 -kN¾vû£ÙV‹àk—âÈÇÞúÆd²N–oS„[ žÍ±r,8ÀNftšÏ¢ÚI0æ€gCÓ67™7¦|•&1‘¢"KÅ…Ä-ŠÚx´¦F,àŒÉí’Ñ@½z„©E9¤äŸô±ªéï|¼—Æ F£´Ì÷ß*ÁA*·‰PмËV~Œƒn.»ìÄÜLõntÒ'û"IGLkg€¸ H 9i Mkc‘‘‹5-ûj±€1bŠx±¦ÎÝÀµ3ådÁmšÊ­;·‹N¯…Ûm~#® Ò-Ýrµ™cyÐô¶c Ã5Ìvökx¶öÌ8:§­ -™s'÷š“žä^Tsm£ÒjH@¶ï|¸q0—ÜõF×0íî™tµbŽ”gŒÔê}öàæ:¨ÖÒ°Æ5Ufÿk5µ_껆îãñgñÔÜØ)Å[~÷ïä-oû÷žŽÿ÷2ÿÏã\Kÿïú2ý¿fögÇÙò·cþßëËø/rñlúcÊÑãÝ6¹wêðïTEƒ‘RnÚò«Ä„[ ëô·I—þÛxUßî4wªÖé^m%ÜÆ-‘j(Ù­›´ÁcªÅ•DŸnÆß<^Ü™ñ_rzW¿éËõáÎ8âÁE‡÷¿]_Óq¿çŒ_pH'ÈÆ–¬. зÎéï¸OÁñYû[ÄB÷0„`¨?ËáîK…Eè7£1¶bmÕé}¯B%>›¥46ã³X•ê9*ÉÖÏš93dM§nÃÙ;>Ý­ï㶸ZkÕŽI¯Ñ9Í.c¾tÛ>ž³›øv†ÚMíƒn¢<Á:ú‚L§¶Ù¯²ü¢]4UqÁªgÃJò±Þ_xИ{q‘Ø|ɤ¾X6B»HD|kžÐ%wâêÊâÒ#žšänT3å™EòÁÅ”(ž)hãn³6ºg¹‡-ýÀþÎ~`ÊñHÑ<êǵªÝ£vŠˆP‡IŒÂ™ül¨Ð:•^TðÇw…Ió¢r´ Þ‚¾+}I܉Š»Þ’×ãI©JßÙYû§dDá ´táÛ•¬ ìMZÇ( X*j¾°;^·aRšŽ#4œ¤&Ö8uŒÌÍøÓS[ÉÇõQ“™”=Oö–>lû£ BBkfB“ƒÕÌ‚–šƒ8&ceÅ·«:\À.×0{äì9TzÎí¹jœêÍx|Ö6rñîæ¿´! Á&…ï° .IÔ¥dY ´…1îË&]µNéΩ…¯0¾yð…Fð²ÇaÝV¨ aÓ¿Ú¨WH¡°‡Ùãü‰¥Ž|}S ôsá Nl–IËn)$‚Š=ý…裊·ê+ôöx å_”ØÐ„9‘§¡§FCO³ŠÅ[§º¡§®†¦øt™T׈Q]3þô¯À­ïj­¡*ejG‚U!0¬ ÕïcU°õÿçßSÿ¿µµ¶¹é­¯“þs©ÿ{œk©ÿÿ¡/Sÿÿ0³?kþo­o¯mDç¿¿±Ìÿð(—ZÔmý?¬¾ÍÆÁ~I7÷ða Uð ›ÐVš ¹Ï!ÊÃ(òJ#‰ŸãˆÃÇpà€õß¿[?ÆSCµÆÞþ‡÷iµÍP3w1=¬WÖŠ.¸x=q‹„þV ‰|"…õC]Y&,Žò°×ÞR’Ju1–ç±V¸ZD$"ML'YñdŒ(ø¥¹bÖD"â§¼'ŒÞÆŠb3gèž§* ÅÄ ëÖbm¥>EÏêɬϊ–0¤L[º`u‡Æ Á…|V !`"E<Œ.ß­V{ÿ¨IÈBíèl‚É [ÝÉg>4Ø.æ‘d¢aíUwpQÝC[{ ´ñ{IH‹B­^æ”íá~!„¸¡¡=Ý/£>Ù0S.£Û’©ùÖGõ¡+ГÉHžnf‹Ì’Kt>“jsáH\Žƒ.¶†’C ue¥à=÷a;‰õf¨ Õw7ŠØ1Z–ZÇ*†Æ14Ôà—Б~r5š töëYïJPîõfl¨:,â}E¼ëâýŸv ¼i?J -M m›Žh4~‚©ÜŒÆSQmmx%eÃè“*b/¸™VJ¨Œ¢Žk†zØ’8œ ¾ *z/·¶rX؈§ˆ<¶g¯Dá§Áà'dÆÊ·è”x°K}ÔÎÖ¡ª, •£U).êÿj]ŠÓß\£7£ZüëOÅ$¢µZSˆÇú]0–ý±¢ßb¬X—Xv®qÝ¥&î~»{]¶Ò5´—ÐäZÃR…g..dzQ€E.\¯9 ºŠÒ”v‘S1&ü ŽT“s†ô‡Y`ÈÅÎ>u}ßÍŸŠy ™Ã£í›&˜, jL“z˜U_À=¬ÂNƒ(‚úçëD+±+äQÔJœ©vÁóý5ÌHfÁ 6ãˆù,2 V¥;Æì4ú&ÃǃќH Å`[iÍi $œÄšK¦ŠâáG²]ΜœWh@~ç5F#îÐìÃ1IžF, Ðñ«ñT;M|½š½þð¼ßCžkˤp´BsÑ•3DÑŽ·^׌áâк¿f]ÎîQ§¿§”7¢„]%Ÿ‚Ÿ9ÓªÇásP/¸ÆÏ˜’檎*’ÒÈ*Gp¶âÀÊÔ»ºÄPq†·u†y¯ë¹ ÖûIlþJŸŽš«EïŒEלÁ ë¹~®ÏËt‡Æ1mñc u[5„ ÙCD+1…áP§3Æx½`³Çëîå°?˜oæ\ú¾S£>‰6”è‚Y’–ð4ùÌ..ú(La‰'ZR—ƒ)„ãà»Ö³ôb‚§ù€È@Àx.ö0ý¯+×ÝÞ›I sT/$XÞpn§—/Ç]ãå 1Ì€;QUŽFø lĵj”Šþnq9†ä!svjb=Ïá,¢óÜäÍ>¯,óÝÈW8c²’ߨï\xî›ÉìŒšÕ ’à¨_„$8a½Â1-ÏöJiò¤õ¸Û›Â åd¬¾’8›YqÕ¹!¹õìu‡¸„Žnaãs3î“Ìz8¤| Â6¡àÙ´“ÞÂB:Ñ»C™ä‰%îKEª‘ŽT'2¼…¸ý ^N,¼ÃÊ dy¤hÓ ÜßÁÊ5RÁzãþ P8¨uyí—ÖUƒÞGt§4e:ÿ£äÈbï%F²2‹„Âx›Ý››ñè+F‡C‘JL_‘°ÀÕþëÚý»ÿõ °ü_Ÿ~—{òao‹×Ä|Á'޹âŠk!ì·ãwI‘~»[¾¼îóZhV}_øTDÏh‚XÅ6ŸûüªHp;Œ;aÙ5¶?"ÕÎ'<´»†V–Ð"þ¶ÏKM£¡+_J,©‚ÃóQ«”¨šÔ**tš£ÙÊP—Ãú=#F‰:€w‹©aÎ#Jƒ.¢[hrý5Èå!ôôuD8‹ï„ÅeYŽü‰‘£3h“) ò>$y&‡˜£ïÍ®ÞYs¿SŸEm0L‡ýÝ:bBò9E*¢×ö/úa\\ÚZß!wÛÈÿ y!;—Ü\|’Ñ_÷‘hª1gŠæRà‹´Qëc²#-‹¼êu¥ 9ueÅà8ý íÓ¥”ü…~Q÷™v)´¼Z[BÖ3Ð0z:2m$^TµS¼o ÇY²ç%n" ’M¡öÖª80þ4Î¥FÙ`†]‹LtÉŠ ˆjç;æÕSg7˜†ǰ‚Nî<{ÝI0)eávj /ðŸÞœîìÿ„dœ åC#!Ë¿œÐ"㢱ý7¥µ‹CÙ&EÉm0Å_ÐÒw®¹#–HÓæˆÚŒ@ûIåNÆ ~¡Ý±ÇÄôm4C³!+„0(Öd0º¹É1D꺌º¸!ç|é³L]L<5FUàFT&®ò »ý4íMÇÀ/AfPbÚPżG,‹Xôœ½UĭΰÚÝÙ`Šá,qNüt1;G¾NÁš"Q D²a ««ˆk;S¶Ü!‹ñ”‰ŽvÜ(üJôȬíq™€t¹L)˜Y5)y¿êÊ…½ÒÝÌÎýfa POd(ý1”ZQÁô û F} U ‡í«"¨î˜7ÚÂŒ–ÖŸ¡ Gr)2A`JPi“ÕG‘pùèk5eÖe–÷4Íò ÏS;ÈSÇ}#ªs‰ç¨¬”y¾‡ª£¥$#¼³°Â@«hÏP÷9¾9­³ Ç ½S¯7%ÑÙáOØ Àg¬õY palªß×ç9ªä8 Ô¨6:MhAûøøÍþûXCõ…á§wñßþz Õöj­j]~¢Ø>þk`n2òöñüiì¦Ài î£ñþ4™ÔvÚÇuèùþI«$ ðÁ)§n©qBf>“•ò†v㸠ý=}S?F·¹wµ:j[êèVuZwåbÄípB”Tª½Ó££:°äs#aN²ýF'y”`‹~T}+Ÿ')+I0%U<¥Õ­Ù™ôþ3Úíø½¿ûÑéNá¾)B:ŒÎÂs¥½€ü´ØgO—ƒ|ÖMÒ>^‹±ó5e—eF †¢ÞÚw褂`þ‘¢– ÂâSöa]Fñ³CðV¯‚;ŸQÞ…‰5\O}Äãg©Ý¾my¥qÜ®¸ýìùl÷… ´îí?+:z$úQ  n™ÜˆõhyÙòý_+’=ÇjB¡NÃëá9‹U( ›É@%Ÿ§pj6ƒÉa(„;GO„2Ï.+ºð(_¸uמRèO w‰¼®"7Â}ŒŸòÆí(Q¸‡"•† óòpŽUS‹E:2} ÓxL¢Sò7*ov ÃŠ ðŠgÜ– Á¦Tú^ ¶éf4™ôa¾ËjGd&õM¶VBi¡ ¯Ñï‘nÿUœÖ#cøƒ[žúuŠ¿pDõ¼òèƒ ¢QÕ;í¢GŸ¥“GD[ÏNžiáƒÖ óÙ)®•ÍE¥.pÞ*î¹nQSÞx­üÓÚè“C›lÚ†|õ”²'óÆhEG%[‘â†ÀLÍå³W2¢à^Á£0æºy£Ž“«˜‡G[E&äÑV¿NùWœ~%Â퓌ïát"ζðK“n³ÙÊÅ”Ó)e¾ ­Sž3k½ržæˆ{‘ ÂÒ—:ö,r´.e*5v•þX9 | pÓ*Áðö”ˆeyÇH‰© $˜#zžì}µ»< 5Ùà%¯¥@üéz(ï~|ßÄ3rPÇdü/”—‘v»Ø=±¦ZM¡l¤½H§^B–™š u…#ùûÔþ½w,6åY\áT‹#ú’ÀG.â˜Q¢,¼¢ù÷TE?<8Õ®H5Šáˆ±˜0ŒT\Å–I´p‘ž"–CJ±*#­ˆ¼ÐL÷àÔI͇?eÞ€¬PÍà +ðÞûã™Äè üYuTZWâýëp§ñÜñÜ_[{ù;šd0ä8‡ǰ­Á`t+Ýdö¬/ÝqŸä&TÏ&J; ŸRÊÐtÍà1wiWŸ.@*dqOéØÛWCg\±Ó5º¥³ß¡IÚN#+ÿ¯ù²8+wÅ/Ò‰kåºûµðïî¿Kÿ>û·:GÀâ?&¥"ª‡z× í©•wR7ÇL> “„Lzð ezj<œeÏ”bC7{‚K_<¸‰>,pŽ6J¤ÑÏ‹Tzf”SŽ“B¶ iƒ ¶/Ý×´Æ]êwÊS¬‹* éy¦l{¡.h Hõ®ý÷C…Òd: /1t=ÌT(¡\pTæÛsŽ+‹íô¿õ½efœìHœ„¤Ê«ƒxÓbÉüCž®õ·a>2ÃKB™Ìm£¾¡‡)t/W iHn1ò‰—98ý=ŒÔÏ"â`lĆ H–aiC¶ ÷ÓÂN9D“{‡„Š}ÜXåÕç â'>Yç'§ñ'‰O6¡mÅêÈ#C:»AôŸô€Ö°Ï–Ëg)ϸqµºÖA>äöÕN͈° ¯KœÁ[µöÖBŸþoì–”Bêbý…ú¦”Lä”Ì”J—¥…<œ÷Þ8Ö'ê…EpîÐMÛ…3â±Á©˜õÀDD¸!P¿µ÷[Š­¸ÌÚÆ¨œõÑЩ½­U̧HCõøÓD?u†g®ëË4\‘‡§ÆÓõÈÓÕ iÍ®jÖ܈=4ßêÇàž†p­ªñäipìÖGÛ`µ>V5­ßv룷Z¿îUG·åö¯÷¬&3½’¤!„Ì:7jðB`Èÿ-‹:4%T=„ò`¼ù§=-þ‚Õ¡¡~{mü%7¼I”¿ñÿ³÷æ½m$Iß༠,^lÿ¿‹ý3ÑX¬I‰¤YEêòŒ%JM7u4IY¶3J,É|š"5ÝMg‰{¼dØž­A²LéTÍâmcLwlâÖxYæt÷ÅM÷ÅÔ´÷é S´ß§ës3VZ; fÓÁÔÃ~uÙÉÚ~g¸VáŸFÿžŽ›ªÓAE~eÂݔ۩ÖwÏ  ˜±ºÿ•o~ ‡L¨œÊÀÂ7w¿ºá¢ ™ î©à,» #­2C!÷¡'PºŽ8ž^ǾÓ@NSRº`Ý]= Ò³@£Qy0ƒ+mXvm=™V^ë˶þÞ}Ù1rJå¹ÎÞ_òÿh §y¬-s=YÄÖ_ÙÈs*Ã>o´ù“öI ¶’Ê#‰K«CŒÿôm¦¢˜ÙTäXNEÚŒ$2Ñ: ¶M:,DEÚiCº×¡`Qµ ËVO‡.!Ž/ªÇµ.!DÞ=„ðÖYl\ ÿ=ÖZŽA^ü.W›»î?yyœSqiµ9Å/@ C£ˆEv~`ãYfÅž’õ²}yÆÀÔ¥eCK‹^RNÚ&9)¢á÷Ï„¬(]ïFÃá8¡,at]zM—§ýõæ©Æ|| »&®x¿vïUþ ’Sdsv5±°¡×­šª©šü ×Ék8üaª¼’²Žø£ñࣀ¬»éšOQØWýîE+T¢ ÎÕ*”âZ½,ŸÆ¢äÜ!ç·e®!^ã¦Ñvwt”Énm3bø–4Hr£$_f4Tµ!S&õŠ.%T3+TLÏeÛ¯ ÌVݰS{o§År‡¤ÒÛ'–æ¤Gr§nƒ‰SíéXj’ƒÊFг÷yølF•Z­V9ÕÙ#% üâÙ:àAÇÏ_1Iåp4¿Ì$Ç\Ì¡+þ¼ {3Dè•®oaåÿ²>ïkuìU½ÛX¬ßgÛÀÕŽ}£@Ï!€ÙÒ:“ɉÏ3]RO(Ú”CVTî''ÞTÝþ#Ž ;N¤ŒÀ No6Ô­×Ä TàgÒ[Þ«Ðk ˜b@4mÐJï*¸$d·ÃüðG™~ña D6öƒ¦vA(¹¤ásÛ2™JÓ–ÃZ\Öæ´æR¥-^ËÚpv 륓ê b±0{q•jÁ]8ãmOz`ù„²…éÕCàG¡å㯋ǭöÉK)s¤8 "8A9«šš[{¹Iþ…»ck¹]Ynj¹]'pª]Ñ$GŠODé¤0±­¢]é¡ìÇ­sì4RŒ\±“´I]ÄÚRèL&5Ï\ûøU¦Sòù ‚œ’`Ätçâïn¸¬!æº Ëv³åpFe8­åƒW°4/üo9©Náb¬ µ¯^¦j×4öì³?]B5ÔZÃé ¯°ëxîר´J/U´Aævi5úuhS¤GLæ%ÌÖ³W÷¾òW¬v¶Kdßúw8Î+^ Èð§cV7R§'8µDþGÑWŸa8ëŽ"oŠ×›á¸è Û{À)ld3¸”I§–û+3þ{%µÞáÅê òÓï Æò@~’‡ãláeŸs’^¢-IJ§óeäÙ¶Ý×ý Gî5y§…¯s€C¶,IIÆí´ ÉF¬Ðjr|ÛøEÈ ¦»Dë ¬$–Íq(¾°Ú½Ä±-ô—8.áVÓ³!Ù6$œrC4f”‰-•áWIÖí•‚µÕŽÝœ;L¾ek¥YË·S…ˆxv¯vŠŽ™T²pùÞ¦áºs¢3/™ ­»3eê†fOGL>Ú 2˪¦y`q- ,îð‹Å¹øoÉoˆÿØOMùýâ¿m7žðŸ¾Éó„ÿö‡~lü·¯Ãý«ø§ÞÜÞñù?ÞÞ~âÿoñ·ûøo&CGøMÇåè›påÑÍw\RFD/øMäùº½Èß Â»#ÊÿåÏô+ ºªt]öÇ [î”Öhxn-¹–P9É'‚“ÊÂÛ«G‰{ÉéÉ(î˜!«65ét…¿Ý0¹WÐ@·çV“T6,¬Œ@–p5 ÄMâÚû9Lhø/ȡ å´Úå´÷~ŠËLæz:¡ÀõñX%!èëvXË ;ebºùÆ>Á q“L&É ÄgòZBàò²á@° AW=Èš¥ªiÙöÏ„ß @<ñnZ²"Ëvcz=À¢ÄAòV]ÖŒ£yùg â)‚èÂ0R":1–}{·Ô3¼˜ÞWœFRÊÀÏR¯óF‰ïWp×û½CbEu+~$&VTÏÅŠ=|ã58ð·8Öȯv[ý†¸p¯«a^ ¶íÁ¥Æ[{ TØÖ*j_@Œ ¿öá àJžb æ9:_è4q¶#‚;3±Ë× õÅÜJNIxcJÃ3R 2L>€qsŠØ+R3ºg‹Ÿ¢ìì÷JÂå°¼˜½›å ­‡£‰ü‹BÓjn\ÞËjô‚0} ¯ª‡ž*~8Bó«lgô$ƒ¨¤ eß~÷ÜГ£ˆ¦×6 K\Üd‰2%°08¨“á'·QÕF á¯(?)ÙO” –J~9›NSá2Âïgaèý{Õ5³«“`|¡>c§¦`VéQfû Ë]åVªÊt³¶3Ê@©#žþÃDJbã¹28¦‘|Óf’óG rys“Ì(‘ÈñÔÃ2’¸•/àéÉI1w ÀR<£ƒŽfžÁH [¹ÎP«Œß5DzkÛwWÁõ<Áîüž`wŽöe'ŽÎ.ºôoÿÆÜQÿ|Å?øgÞ^K²B EFÒpHÁ.fâ!iªìœû@DrB O„…W‘ÚBü%,l–žÁm !º0M@¸7–T^26$ƒ€s R@)yæ½1   |NxLx'ªÒIÑñz„:™9y+b@€ƒN0ï‚®9ÔIþÕuÜ@JP¾Sø¸cœÒtÔ`!-@ ¤°ƒ…ükb©$ R?S)îè9+‡¾ì@×´ª”:%8•¥¢òF©^ÛjUz`Ÿo~[Ät£ú‚`8‚Ì<ª©dHdh }éå4†GrrR«^qOÜ#é"„»L«Sþ«É¢ê^HJbT^„îý ù ZÆÿ  µ#5ã³YÓ¹šÂ¦ª ÚëÕ«wƒh^²È覓¹œ]Ø< ¨¸ÃТdQö'p…é|FîÁõÔN*.¦Àç IÁ1sZ¥¶“¸¿ÇôŸØ¦Ÿp[¡ ³bœÈ9Bj›ØaóFªòÊ”­¨zQ7…‰ôšÔ¦O*³H·&D÷)„d”61 ¹3™Ñ²LJ» ûåKuâmPkP„Á´³«õ–^Ø„,Ê-ZÂO"5ó»B– øØ3!Oâ)ÂØ:3ñÀY«Hå…LµÉ½ÿä×T2)³!@žÁåP~±+Eæ”G¶Êí¥Z0˜Zà\Û–÷ *’^•ÜÈÃŒC?öûžáÍ Ý—ŒÔýÔ0a[â’uß-Ç MÍ©M¤w‰RžÂGºX«´°€Ðª`µq9AašHiBÍÔG9œ×#02'âܾӧuÙ€Pl¨ |,!$µU2†u4§Ï_çî_:³.ÈWÆ‹àM§.}¸œ ¶„ë/hé°ðÆEXp²Ô^’q™åzD„Áêz¶zéÇæû8Cgä8“QºJùI”ñdÖ Ü¤‘?畺εI)­Ì~‡óyZFÌG8a¸ ¨¡ÃlÒða¹¿a!;S8A›èFCeømnœ²Ã¸þ¨±aíã†iÌÿêY0ÐCr˜W©î†ñ•›¼ÇÖ94NN*&ÒB7ÀµÈyݮȄîÉ ƒõÑVyZÒø%¶Xt2ø$ÿ™†q7®D¢P.ÙS¼UÝr»ƒj+èÊñ|?‘oWÜö]’GRHh¤˜Ùð—:RVå,pºÌ¡±:ŸA“¾ÊÝoC X&¡ç$¯¡H ˆÏKÿèm>¼Èp!D|Ó`… p×z+R°  gH2µçs[Qñ×dÉΞI Œ`åÃù¦CÀ¸©,·œ'=S¡ ¥áDl'˜²Oå øbïID0éº_"DXëøÒ¬9ûûtÂ~ðÛ„eZàó6Ï×¢\ZúÍ g+ (â7ƒò$Gv¢ätÓWäꡎTö—º¿]Ò´ýÁÑyo…6N „‰…xi·Äï—Uæm¦tÚÓåÂ8»#\ ®ÉãjV·RÃüŸc>Üiyéâ)5ªF[Á)?³µ¥^]¤"(ƒu´E…Ò©Ò¶™Û#–ÐJÍ·Gæ '×n–Ø€ñH™™8Q‡Ý­“W¡L3qÇ-û'yÉfÚz{ÊN}•œ¼Ú,šÚîøL.ë8]š°âPjÂ8@.µéŸ¼ÂôCá °§SÏ‘&5r„´C}Zß ÄŠ A¬ÚDp[Pcí7ô0¹ ­…qWS/j  !œÔb€£½ˆ’œg8 á¾oC²bHu 8(èV©¦q>ãkDHƒóÇDÅ8óã¿#U<~Ä|1¸… ktzðÂv8úe4\¦#Ÿü48øȷQÁ5ï‹À¨ ¦-•T•M¦d¶†Ãl4I1“$9ÜŠ€bîí$¼TjoFå*6!’X”ägåM6)á”4œ YYù±¨þKµ8‹5á l|4X3¿OÕó>0’sBŒ †L™]ÉWBsä/:–§( öô°còÁ\ú'„.ta%¡Žû¬?1©Sa-$?â™Ð~ÎFy048_àpdèÊ|rbMÃå…sâcNSu‹ªÏÐŒùlź€!ݱnAWdkÏKOVÍDV¢v?¡^óš<¦&9ÆF¿/Uv†Ø€+(‚ò1¯KÆ Áÿÿ£×å,Óu¶cWMsô¦=n ܦ8{Õ¶ï Ç+‹¥ã:–Fƒ§G‹MÜÄ*ϰń>’â}ve eå ðQþÓ;ŠlîfÎØ ÝEC§I¸„‡SäO”| àää¨Ó[ðGf­¡)cöûåÔňèÊ 1í«ŽåÎ?QN<¤ô×? [}úDEÃãmëbJ›\9ø ½\—ãFv5Œ%XÀõëí't ž²L¦6RIBßn}RÏýô…Žá÷–îBΉð}Ež?î¸LQ$@;± ½ÉÐñ.½µi¥´VY¸Z"#" ¥6¸„û0C÷M*Ð%>*§¬„¡“råx^ÔÑI‡Oìji ¤béÁ 5e‡´šö¶ÀÚMÂ8<·]Z“Cà0Œ–J9ý¡C„v Ï”0¬™1 |ÃZ'tIK²„S#ê?*Zu|ÅC* )’kô¼Icò'G„z»în‹iÿh{ÛT|¼ »%c{OÎ,™ÚœÙ†M¦q^SÏ‚‘d*ÕI9±#.¸“*×¾\ü´¤ŽQ^ á#´xç‹÷_„U[8(igGµ7pvàÂ.lo:)ù蕱[*©›™®(ó• €kÆ÷ÀʢѶx‡J/5g#*7$ë ½ªJâYÿIUÊ+o•TEíLKVi·H‘ÒG›×FtI·Qin,¹ ’‹«»èaµAí °Àþ€7ì¸)T±=™æè5·K¾¹Ö"9ö’jË žÖ[iêî|ôAy ^YSHör“‚;¦˜N¤¬6ú‚œlÜ›ÈÙŸÓI„ÑåðåFu¡ÀÀù˜›³§ÿ«Í«áä㋯6¯’µ?k^¡}¿·yu¶À¢óZu'Ö†ñæ—ÌwTk˜ €%0¼'T¹i´—€î±DRmÁôOâPtþÑ·¥n<ÍÉ^x=£–þþ…>ÌqöF|n›iP4!º;V‰K(ªh¡¯Æ•«Èè¿iB0øœ Ó)zZ"¢GãÉ|ÙK°o5úû0ÐúÝX¼–Ql ¦d7Œ×#%í–_ä,Y€{£k ‚!{),¤Ržú—g!¸Q*‹¦-ðð†RJYÖ»EžÏ>ñäCnï Ä48P#sUJó 7=ûw1Íçè픪üVV9lHj’i³§q@Ø5 4ý1Ù ÖÊÝnÆÎî@:±uØô¬º­Y-Á­û•¦x>(¦!¹Ìá KÖ¡fA ]yS€‰woCs¼ÇÀÜ'J=mWôí¡Ûæ!ú @Z¾èJDý1¾<ÆrE…+Žä| ^‘S7Gú¼Íõ›âø¢±ál¸WÉj/su« eñ%—9`¿È¿!0hÏî‹€Ën’„Ó—¸X5vLæ°ÞŸóÇíôEIç-Lþá¾&­ $p=@èðrôWiçc'ÈV0ß;SÞÌ13h¸GQü Œ• \°`{º'Ú \¹ZTrMnóîFŸ’k° x×££¶ :cGÁ¨&ÄL ± .Î>yNù´Ó>$[¡hE4ÂQkÂ=‰>J Eª:\³–ÿòþx¬=€ÀXyK˜•Ëä÷O¶ •FœR“(pdphWÃõHÛõFæªåîËÂàS†±„åÔhï8YY³0LÒ£Št²®Kµ÷)_•²ý•Þ—* 4 ׫էF’ Yßî?'sû¼W3T½)&È s`‚©ò|J€¨Ž9DÇŸ(ßG°yB…Ç€9Œ\o‚8‚°‹ÃQI{x5Þ!ëhÝH—åÌ3Ë!8Úr9 ÷cý“a .¡Üå8 în Ö3äz2NçbÁá V{~ÅAÀÓŒæ()_Ý.²¿'x¦˜³ÁªC Ì`b_Þƒ0Š|jt ¿Ûð™ÌAWLoÂ#Ú€äñ|;ÜÁB–{òœ‚,мR‘bnnBC+/³nß Y|u$[ÙÈjåþÂiÑCBç–5hç å'­|¤tM çÆ«Ø<– É$ÞK‡(u¬WÈŠtÅG>¦QÅ…ÉvÂgÜWªQÅÈèCy°Ú.²Žé­ÂYkçÉl±œ]±EcPÔµn`úÁõŸrW:DJWËø¨ §we+{Á9Mѽó÷À±at NòœâÆ!s+ñ¡N[XóðvŽ,V‡Y3µ‘Rtk[ùÚAY5„A_m<}S¼_AaLrä ÷Ø7åRç-Û 7M8Šù{£$7ìMئ ìÛv@}ðh´VÒ_hšßc¯q¨¾T¿b`³UÄàz5­xsÁ0—÷ÃÁ"uàZPWÉõŽdsÄT#³}I§²W"È(ÆWoš!xBgycñã¥zK\êx Ìg++ГT:¸mr‡ƒ,·A™@·µ–a„Ö ?<ŸÜDž/XùL|³UûH å(!f,Ú7ö•ÚvÀŽSQ³¼»;÷Êâúz:ÃÄ7díÍ<Æ…€Ÿ^ßMHíޝRw‰@.QÈÔÂcž·×œ%[§ÜM»84°áà¯æÕÞV)‹lVƒñÄ«+÷O‡ÊÅ©¢“ÕýZŠ-Mñú%{7Y9ôsYzM`Q¯Ã*¤`¯ä×.ê5ØMèûu¹LÛßaEj­•„ò &ƒ<Úí~8ñ9sŠ9Ê)ÕYÛã”NÓ{‘æYØüec#þ©äõÊ,pPÓzC-ËH-yzxÞV»¯JÐ8sÇÂv‚U7.vž¾‘{sæ›Ú®Å(æ/ËÊ’ó:kã|°rˆºóYw†‘ça#ÀÅF¬ò±Ika ’WœæSX…èÈy±®!0,ÁÜ€–Ïüá2Ý6Èm¿óCbï‹çÇî ¯á W’¯[ ıãÙ&©þôM ¸Ìwi™ëáMf» Ÿ¬ðÌÇïÛßaMü¤O΀\ÜùJƒ!梤Ñî§óùè s>“E¢BÖfZv­mFïÅz&"+‡¤’isÌ m ›‘]JüüÜ!¡ó!î}\Íå·„5•ùò Nû…mþOYÙ½Žôe#¦V¡"› ç”Îo :+!Bœ=k´˜g bv¥Až7žISNæ1PWv²þÅt,õ˜É5_­èäaÞªRiõúí“ý~ë6xJÜ …˜9'A Ë0Y¶¹qj%• G;-çK´)€D®0dJEAD~=1Ç7 HxÙâBŠ G4 ä|³á6Öà´³ãÚùA”§ˆ‡ê´žl«)àH3›Vɉ¶ÙC4Vf™+U\6ÛN}jÕÏH £ä*hKcŠõZÄ*^9£tØ^‚rÁØŠÞ:çƒg²b[[´Ç  >E #s¾¼X £^—óPL¤'Ð~n× ¬`XS¹H‰”\ême%çýÌ'Ùn•_˜gnk‘ó,`é#j+ì€!73¹½ŽˆÁçûœÀf°}Fͽ\ã'"«*1ɲlf£F«nm‡¿tŽ»H†OhyÖòf«ßqnœ6ÿÐ9禰â÷”™¡Š÷¡Ñ['ü88k·V#] qеí/Õµj®¡ûqÝÚ. àÚ+·Iš(á“W Øcصµ£îÒŸøÁbf÷Ð2ç•?Vˆ/ÒÙà{1Nß­Éë6x;ÝàP8ðD´°q\%‹‡„Å­ƒ§šù˜ ”‚a(Ðþ¼.RÝ'nO,ÉöÄk}¹®G•{’|\¤BŒ³ƒ°Lð¨þ b -UN-4r×qöýb»¿«ÇÅÿ½ù ñ›Q½ÙŒ¶£ñ›õ'üÏoò<áÿþ¡ÿ÷ëpÿ*þoÔ· ŸÿãFüÄÿßâ!n÷ñTB))ÌLÓ3±ÂVc¤ùˆ^£'  D³Ñ‘õ{̸?€tÌÀ?ÙúäãØŸ<›;Þ +øjRŒ·V¼hz'ËïÖŠ–޹ôã@pϺÝnT¡,I]ÀÀ9Ú‡´´½ýËÓýÓHý"¹ß}E³µÏ6Þ?½­ˆþÅFˆéaz]ùó‡¶BοHW”*óK¤Àèûƒ´›V¯5ÀÄ­9Ú?èÿí<˜øZö˜Æ÷ÕÙ(ÓÃV§¿?±SU– YŠViŒ'ب³Î¡üWJ’^—éu‘^6šù¯¤ÓUйü藍P¯0›ÑûÓ“.K›^»'g8{DWÂÕàûU.§kÁÕ=e&ØœLhE‰‘eèOX2p1¾ñÆ/Ï,…sbVpÚôÕ¬+åjkœ@Äš8î>Bá &Ú] Y³Q2Tp*¨‘9QàHËêà“›€än:L%ìãßÇ`ÔØ-þ[(Wy–O(-Î=q&C)<JÞ»\ÿŒ ÑÍ ºÿHª`mclÖ98âÌýÏi3÷‰‰€¥Ýjµ°Õ’ñ€(apàäÿ •hÓ@] ŠóØ>m÷•E¸§Gèú‡ŽÁÎZæΞ,*´ Ò)æSeRaJdX±½ÏÜiH>ö·\Åàý4!_“äúgȽ{#ïa0*/.;Û“ ˆärRà5Ç̉óçS)óLQ¸’ǸvݤŽÂÜüܽÁ5ú>bX8– îÈÀ„1øéybÙËk Í#h)rÏKuLÐqbeò!ÐáWÊ`z]dœLnʦ'Eëh~:* 3éS˜þzÏ8Ýfþ…\È»éâÞâXÞß› Å0º¦ ã+wØVÒÙ”ãD‡ÃuIÛP3ºÉ:‘pÝBe5a8»yHà ë´šŒòs844éÌÒ裮‹o¸Ë rFSÈú«¤$eæ08u|9ç‘…ø¥E­æ‡yYÔ¾ êýó’‰",[Eã¼²ýJãb)IL/ÝÑ©ß$¢'ªøËKá¬?8¤:6-iŒÆ’…euü·•áN“› hf±Öúœš¤Ã“‰†Stº5kM…âLsךpÉÞ$/ÒGåÔŠHìrÀöèí´èºŠõqlKÖi̤¬mž³–ÜðAŒÅ)€^ûn@,¦HZµ«éÿs K­Ú±Gøš'Rúþ¨…Ö>*QÀ<ŠÊè^H¬åûî©"P3ŸVúOÙùRŸ«ùU¡U*Ç ¸]/’¹éÅY$¿eC(Œ¡e-;dÞÓá^»Ãš«ù=<ÛÊÇÒóôå›-râêpÊsEÄq¾C>Þ0/lt¨tUt¼Põö¦vúÕ ¼?öà–3úš&ú‹¦àKÎBæDdÏ…HEÍóŒ kª^^_a`ÑÃ-sP¿!@+5DK8¨?,¾»y%(˜ö.eeDPÄÓé¦Ü“Ôúœ·L/g&hêugQòXvU>N›;»6]''Hsª ÏìÕ¡¡ ±füåY3^Áš±“×ÄçÌ Î¤Â*±ˆaÍ€[,q¦õ‚aÍ®7^V‘<ΤH°•Œ©‹æËGNAæ,dO„ñelñe\q{ £ºå‚lk¶ŒÓldËx%[Æ9léϧfK4F­àKçnk–PâF¼7+ cNì½×N¢ É‹…™ó0U”JÚƒe´ÃÑ"“Ç pIMHŽoJ8<~œ6÷@PíqÔ¡#’Ž×õ-ÝsÇOfÆÛÐP‡oE*ë‘ÞRµÜš‘©Ïkáÿû€üi½2ü¿RBY$³C­9hLYõ.ô.^¿w)×u»wþZÍïst˜5 ’!/Í…Ê÷Ì/|ÍKR$-ذiÈ$WD´ ³Ú‚Ôeï¸vH}s1ÐF\uµt2ñ|f(m¥à¤z°Ž(÷6Žì¦N*‘Ó9&òì7AÓkLU=TRÿÉt–L1ÎÎJš“Ú,1© ‚V°Œ’´uV$ ËlᬡªÅ»eÎ?ioORþGi¦·}Ô¯LFq †×X9õQ\N ÏhÔO’gš2Ž^d¯¶øût0éE{)Órš!KÁÒæw¥üJ¶ô|ê€5[xY>Álîuÿ3>„9+äÕÔÖBÄ€ýÐ~f=ªÐÌ=%KªÜàH/<Êž«/ÌÇåryšè²d ‡û?6ôÉ,ìWÓaP<ð¦ó9 þØ$ÂîæÁ)‘1Ý"Ü ØÓAqñتr.ȯIàyI9Blê)ÕíÁߊ¼Á»#ß_ådÿ ì×r±HÁÂÛî†]-ÊTµÖ¢dÉîË®Éí/·&å"Ô"+ˆ¼9ŠúðÑ P¿ÿןÉÏ`/?M .¿xíå^~5Kþ+ן=v*6†ýù™x ™`û‚ã@™Ä<±,x\³üw3ÁÙŒ¬*Ž/Ë—ç•1gŒ»Â6PÃôh#/ßÚ[¢õeº¶0Þ´á·›&a}‡€ØV3”ŒŒ°ô§U…ûu×ûší‡øÃ #Õ>þjÙ¾üûÑäpåºÅ“.?œßŒÀ…diE_Ï Õ×h %0«kƒ-}à4]nîÞ’–ðÔñ@EtqX›zj´äç|ÝÍÿÚÜ=¦³A:Ã"ûß‹pÕ¿Sp§äŠûÂ2ÇÂnŒ»¹Ó[Ê®m!x^æ˜T ¼¥;(¦’­VêWS'xÀ4ÐÎæd£Ò™yÆL,íÆW:þ+NŠ{/ưeÅš¬µß,ÆÐÿû¯ßOü_ó)þç›ü\ŽÓ£Ù¨Òà»!<8Aú› úÔ€PjR‰±Cº]&h¾äŒsó$•ÆC0¼¤ŠGá` Åz %O$—|IOÕZ` =\ÎàMÝãŠF"ÄßÀÄ[!Ûîß±w#C)WŸPÂæY£™¸ «Œk6˜àeÄÙT1ÐF#4£×þ\\"o``ôj‡`¦¯6˜h?Ÿ†¡b=ZñúuÂ-z ™Ìuùa‚ªnZŽŸ¦ç"ú)ʰšW}n˜^0&ÖÉ-§²Ç@9Â^{ A<ÚÊ e›¤µ‘}ó…øº £ùw†Â#zC1r`8°HJƒ6MF0”_á“_+¿â׿ª¨fù¼¡:»¹{XÕcH^¬%5btg‹qÂ¥x¯q6/Èf®‰ÓÀun0Fòù££“Î&´?UÖÚ¡M¡ˆ8½èCÉ„1¤R.2À+¤ÕÎômJXOÍk!õ®¢öW]Ù`¦/u‚!‰_dX(•TÖÈз¹ƒ£·t½¦†Ë;ÔJàX˼± ºÈ ÀÊ…UÁXm¦k“UòÅúÔÖ F"7ªtUðf?°iíÄ ¿ +ê.° ´ð„¾nŸ‚ÔþƒƒÔ0%£AbiqéT Ó5òH` ƒ¿èC#½Ës«ÝïêN¬Œ åHOë‚\‘ˆè)ÿïC˜ØëŠºÞië­,p*ßÌiæY Œ|j½ˆ²7í({Ù{´/WEŽ´!^Š£Ç8Þé²}ØÿÁš£Ï Â8­ÏŠRРCrºÓ>`PBÒXÞc6yû*WñCõø˜¥‹À2(£³Xò —½3RŒÆ[Þß4„`·é?ÊâïVxoŠGQ¡%û=Y/¨Ôr“†t¨,Q´ÁŽ^ÛÚOÙyßB£üÐ$M¥4µ*¥ê"¹•[Ÿù“Ô9 o ö é&:Á‘?1M õSS¯öš|_Ö$+¨S5"]´p v„ñhò³&3Í1lÆxS³–÷5“]°ÀÆ(¨O½Î}k ,u4¿ ÜCkL¿ˆòvpl@à6Ë\9E>²³uQ›ÍFÛº–ÂR¢êÚ`YR0&xäîÈã)ÙË´Ûöu ÇnªW7ƒ¯"WÃÅk›`ž%)ó¥uaŒwÅØ˜2_ÓeëÂCu3UÁbèÂs?ƒè·å '§ž›ÀBp‘”©YZ!€v‘61û/OÆÜgÉ`øÉ¢ñq`‡KDÎ$1 67wÉBS1m=¥§ÅZ¤D¬Ÿ;l¡º‘3”H\û„ñgè͙گF·’!kŽè%ºÉÝôÑI>€ÜCæá9;tÕMvzâI¦`| ¶0'“ZZÍn]G¥RîÛʪ 3Òï'â·T‚[x˜  í·Zü–Ú  wÁ#’J¼’éèaÖk燣“rVZ—i$^ŸèpJ›0"^—ðê’ óNê´D£Ê%@ÚENí(UzÀÓ9åhCI.´yUôüa§"Vòh¢ ÿú“$·¥F“’Ç&WY¨ª×T•üLŒ¯¡¯ÏÝ«ÝÂõ7V ƒ‰ëA úâðfˆ?ìpC޹_–¦ð×_`Y쎼ʋ›3ñt!Ž\7ï[œ÷´‡Ë—žøío>ñÛ'žÆ48íê$£Ÿ›Ÿ?ñ[Á‰·?b¤69wì‚\¿–}³v7¯&—’Ëö6^;[ö(*Ù¥{2ôÚ5«zLU‡s,_VH8¹ÿ†%!¢ƒˆÓ2ZºØ¢¼m?|N‹y×q­¢oÕ¶Y‘$ñ¤«ðP«¢W—8§¨*òá ´%øÊæ´dúNËNj|Y A›Y ÚT¢%9©°Ò§ë‘ºLÿ@ñ ‰Lnl†|h ä¦Q”SRcE•yœ-nñ°Ÿ AnÛœ+Ù¸ŠèÊ"YÀEÀ0ß.g Î¥@Š€_scI  ¹Ž¦Ë9‚ îÀvØÿ,q'(ߤÛ@V•£­Ê÷nt^5Béäy2ÃtYÀ¢ öóEroŸW©¨‡~ƒÖ*Ì;yÖ8v$+ïeœ9k8ªÝóÁF—ñœie ît#å˜goÎnIoŠôÔf¸äÑî‰?65ç §r碽r<Þ›øáb»¶†0bc,.q ˆŠÙ<,uz@§É½Á…"Ƚà i—JÊ‘"[gÇ%8G üxT´Ì£bñjžëð`U¡M%1½œ¢ˆð7ðØãËú5Í(ûÎ(ÜÉmŠn_ŸÕŸQ݈„¨öÎB²7+Ø•‚pjJñÖ§…õÒ¦Y@¤–mìã¤]_sW+ Æc5Þ‚í ùú?oá÷ö¸þŸ?ÿ†þŸÑN´½Çr¡€ÿçVôäÿõMž'ÿÏ?ôcû~î_ÅÿÀù[>ÿÇÍÆÿ‹‡¸Ý÷ÿüý?Û—qÜ‘ÿ_䥜d/Qí_Øê ‡¡öÿ„Ë0} yrÞi´ûâLPk9wþî];O§¿$¨Ær¹¯ëÞInœ0à9ScÌ“£ÆzwÎÕ®š}.i½4]Pé,Ÿ/ÄYœº»K©Ò÷Ù©9å/®Î—#ºS5’f¨Y˜«NƒyBÊi•!»×ë·NºÜÞ¾TO~™Ž¤@)§ìf<}¨Ø`w›p%õù>„mqÒ>LÅTvà»Æê”év– ˜0®I˜êÆF)z.'Ö¹çýi³ŒÉßUJmºs„‹F¢6Ç,ªÇ¸Xqso`ÖLͦj††*/•$—5ñã>ÿ~©ÈšZ®ÛÔ@ôôø÷Ýñ?ÁÑø^®¨ä~:[ˆƒ^3ª¨,S3¹rGès(õ®Z.»'àUoÏ‹Šx½1°îmo%7NkáèUSRWåVTˆ®sGìAâ^Ôb93.PÇ—hÈAñøbuõìO8,„€´äœËzÜ&}I¯ÕIvòðàØ~QgÖÒ½WÑ¥T¼›êcrôÊæ5SÀ;Î_´½®_F{ÑFÕÁÄr"—‰–M­ØbäXâj@6çF,äÀ*à $J.@ôÝàv2Z,‡I2<±’hÀV2BC&ÄðΔ¯†ýî|ys3ÈsÜc”ß©1RúÙœæ·&›_Ý^%BFž”£wƒëp„'÷óÑx:ñýM³Sì;þ—E3ñ“¯»ÃE™x N€3“¢ˆ÷žÜw^ð¯fþ³ ­F/RE‡òp:=ëëW¸ê gE6ÞeÎkì3xqxÜé½ àƒåxYfì H|OI>) í÷°.ä‚åÀ €•ðQ%j¿q’wè!¹Í±ݪtí¶ ÜÚq$_š*”Þ:)Ô-‘œâàL ~Ú:6—l¡üä’ÙÛœŒ<íÞÖ¥oû'çQNä×ýô¬ŠìÉËù½FzïÌtÞr°CÀÎÙñ#\í¨Ìq²j¯½NŠ(:ᦟƒû™¹ÂAr.°ä9¯®¯äqn,ž8ôp †ûñwÖlÉqÉlÀ5®› 'Ýs÷Ã*?ÏÛO&kG:ñ,ÝÊ.TU“ 2Hкqj>3Íä®ñ¢ìïfà½Í¬÷Út-—±êÒ”@újÌʤ.©Ì-€Ü¥ïñ´4wwÚêÙ¶¯?$&i-¬x•~EÝCÒU£)ÛóHÎ4‘”<ÀÊl†äø~¸¤XÎŒko ½tÞ7/÷»à´ 7±›®¨M>"}“ûâÿ²^1#n’Ö@L’[ 8y9%:²ÊºÌÆËë Ë\÷JÅ­dß÷ªÎÓöcõ€V_œ™û!'o,b%VWøõª».ô·øæË¼ À¿à=’¹/‰éºÄ½~3m$¯BPLéZì9}çÝIjyVãW´?£ ä=•NÕR¢2xçzé/&Åw¦ñîÕ³³õµµº8Ìwì­”æ¾GóÚåŠ5„R™.bÉÕ·:?>Ýêü¾÷þgö»Éÿ±õ”ÿãÛÞƒýöžÏ"âÇÑõ lêÃCKØÌ©®-€ÒÈ·]Ï¿ÒEçsË¿6üÍ´« äNÕùøºðpYËìSÅ xa|M°¥$óÇ j†Úúg¹ºNËV¨h7k˜:•ö[b“bY¼°/Óô*rÖfIœý2šÜúέþ“ZPµ@å‘ù¤@åzɨ#žô5Õ4¯>…dÿdždw[©>+%{5ðgžñ˜iaÙ½½½ÇͪW¦= É©Ÿw­ž¬-»shCîíQ>­“Îéʼnì+þ…1Òh&Nõåìèè°}\áŸñwÖ! ²÷ý±$?Æt¼ ïhpg†Ë˜[rÖ[RUmÖvæì4¦Yœ•ÿ¦ñ·ÍÏRƒÑW…}«N$Î ú#Éç6‚×™¹ Žðè£h`÷Æ:±­2PGŽúèNeS!ׄ5›¸PÓê’ç 8}€˜…È…® ²¼ã“‰ Ù—¿èÜ1–’ûTLLD#&ØMÓ­+>v»ˆèy)ªŠxãc™/³X ¹S —åàÜ >–hQ‹Mµº¥¼5ŸdÖG¼%(rèHô<®€¯‡ª–éèU¾à394s¼mÓÉ<™2àšÎÃ"±›ÙàG®p>aBÐbQé••û5ÜX"52Ú©} ¨cÚ±ø0šüÌ·»€ð(×,¬JÌmû=Œ )|/–ÙÄï_…Ð0—À-t=‰žÃ­Jr¯“'Á„,>H&€¨å¤Âéœ$q`³‡ÜzóÔsÉ9á£Ó¼èú‡I :Òˆð‡ ß` /_¨]ýbÌ…® !ý•ó},d§åJn |‡9YnG‹ù )6<™C.kФ²ÆäŸQÔ,„œ¿tû,Ó5íÅ~âd~å¥}QISÈ©ˆAXJæjB”ä÷…è>†¬ƒÂÐ>"€úºÌ¶`u €ia3zìVÝ.Ûܹöxeõ+[ »® –Z%ÈQ~ôñjÅ©–§d“ßc9Oøg5Fj󛡯|¼ywW’€ÚñUCV_9¯-ƒ>cþ˜[Ÿ qrÖmA´É«úD¶NZR8„¯ì’¸;8™9 ¥„ûù¾aÈ1åÇâ—KƒK¨,¸;âóŒÇf@ë°:ÆØLUwaª»Õ]¬YÚMÚ‚”ã˜Ù”'ÖÍx$[é*‚3$“¡>H,3ÁÝß:˜Y§’’`g4œj@e¤³iÍEIÁÛ TÌlQ¦¡r&[_qHÉïìˆm'ÿVW®ýÿ—ßÐþ¿µ5šòû°ÿmÕŸìÿßæy²ÿÿ¡Ûþÿu¸ÿKÆ;>ÿ7êOöÿoò·ûöÿ7hÿÓ‘ÿ_à=@GûÉdAÚ½óx¼È7 :áðì¼ØN»Çç+²†Gä}ÛYÃ;§®W³H+~zØz a*­n¯"ÞˆÊÚ½‹óó÷y9¦­œä¹àhxÙïù‚CÛ¿ŸÆpàÀ„y3b¦ŸâZpRNrc[x8ÞXfYÐJ\ç¦%dRÃ5Ã×-´pÔ¸rW%&§U¥^Y#÷9,NþµãfA·’ç,VD…÷¢gU*Û‡£½fÏÀã Õ9 ð¶Ö;66úâó¯ÃÜãšÜ??ïž½mŸì÷Ûg§=%m‡’úÊ—qR)<󴯯`âݵÀ.y ›ßúÊ—MnœÉ›!!oÖ é j#ÆZ¹4–<{Qb„R(#˜sd]ÀACÿ"[RCð_Šà¡£Ìqì*`ž`&„Dr±‰¶†$³äÎɨ¯«ÄdÝýÓãVðJîsîÅrîå|åôÐOsœ|-`5ލÔþ hëa6Z,ÐùbÍÌOÐŽ*õdäŒnH—§LÿæÕáy!A¥äûåÒÈ^¡¡¶s©Ý. ·z™RW$j ÁÕO\§×?;:'g:b‚4ùÁœ™Úæ´Àw€Vzx×OÍœ¥£®,q»Nqr¡[^!è ¥DÃ]s÷ÅÕ,ü<—\HÆT/7{|__Ôâ—^3§9žMæÏ¯§ãåÝ„&ιÅä#&B(hHf‘Ô{V¹M'G‘ÎöÎb ”,®yLNœ…œ¹»-¦ ¹Ü,wP³•{]ì¢'ðÏ©bæ³Nqyʯª—Q—sYåÀS<ª}/_çr½_§ 0hh’ëÁ÷Û t*âå}¤Ü£›Ofq~˜¨zðB6Õ]¼3Ég ê;OhQÈr/#”]^žXFn69¯›Lœ0<2'Çb–Ü€ù›ñ,‘K™˜×x›åÌQéqÝtíëŽßý@.PIYZe²ÅUÜZd“7£) ¬‹÷¶‚M,h2«aººP5IÒï©wäyVBµdQäË;"¡ ‚"ÿ E)qEýXWÄpñ¥ÓO¹‰VááD`”¶´jf8Bi_ ŽÁìR'Î)té8”ñ¬åð”›­]‡3 –„óà8¼ðê6Œt+7±{¸ p£´•!Ãp8·C ç¸‚Tp6Ü6qOˆ@‰ä74"›Ä%Ljã!§¸§Ýóä~@Ñ &=1ÓOd}®äˆ{õ*‰UÃÇIò˜]DIJ‚8'ò«²£æÓë"Äâ%ij7  awüYi®£òËîgìÀÖ—ßãeóäÖK¢Lì¡Gd1½¯ˆ—1P‚w‘Ô}e|ß6Hyþ"Ãew–9ÚȪf?–ÿìó¤;¼‡ëjVååèÀ¥l#f¼d/e¡O:c¶³@«‹özÀä[ø¨î}©¿• @j÷fÑf®VÅ„\!ÜöÚ·%Ôû ¡ï= ¾„æ…xc„YýÕeΫ® Èmíåf¥È·nG Ÿdì3ïùåÒ NE‹øaD•“²p†A 7ê*ÕvƒX¸¯dÿÅœ¤h%’MÑYñÁÒgG3÷Èž ìr[ÝNÐ M%ɘ`†[$ïŠçÄDx±?š† íe³ø½’÷EÛr×·8LnØÍw n(5DÍííKLápÎ}U}|ENdma ®?ŒÆÃgsÏÞ¦èÚ‚ÕúìJ)ó÷ ÍÀPBúZ ÌäúŸ,b,·L±º@Ýø ,fòc9^¤‰É­PvǾ øû0r¢9“‹{øÉ °e=㤨²iR¿Œ’éB~ç3¹-ÉßúLí*pŒÄbCœZÀ/[¢ º°*ò?rÐ Äøäüh8–c9 X·ÖÍèý<-£9Lt.¨Le]Õ?~›b]FÿMâÆWX7BðþÑ9 ªPƒ0h¦þƒˆpC`P=¼Ž"ášôƒ3L‘Lk<øÄRH 7HUÃŽ˜ T&nÇÌ®‚ÖO5 3PDe'ÄÅì9˸„E~2Wd=F,IøŽ4ñoÊ ø/Ïnɺ?Ù (+®!m¦Ÿ¢þe‘ÒaÌzÌé&õ%É®V¡P7¨ïh5YËIíÃ$¢¼ o)lÇMËÃV&†0œ×B†=m™KYàTõ#})elŸúƉ¤Þ íªC¥›x ¯úñ³?KÜ2ÎꙈ{KÞ‹Ñírºœ;æj}~ЭnŒÏ…{•ªÁ@i•èõ^D²v«KÿØwê( ™òv<±áX`D yû`iëk”€À¡¯D%-ûëш7ø]ßÒÏE2ä›×µ÷ N‰®ð’ÚýAôµh‹¾ ƒ#Á ¸a†°lô†» 7ø†ºDäR €>BžÐðV[Îç>zR MÉj'÷,ÔX5ƒíPÝ\ñŽ«%·Ä2R´åFUì´UG—ܬҹ WV¦SpBM¡{«cŒZ.cgÉö>ûbÔÐ8†-œO%NLmV[Ôœ‹~CȤ9Ò5$sûeTiŸx AÍÙ„`o\áÖß›Ì  µZMf97œaro×J,fIbÚÀïýV¶¦¡£×¥í\Ü-öà/íÍí‡i‰M+Àjú'ÉG¸ ÿ%§f?ÐÐ €B˜9­q-ÒHÑW1«;êû´NË;n$™_Ç´sX#Ü~„(ꆘ¿kaU—@@H÷ů9ùÄ(eÅÉLcA3¬fŸ?`g°9͘<q]~׬;«Í´öÈk’HËjØq=[1„kÁj×à‚/à ‡ë¹E"õ¾a’Üc‹]¸Y¨‡Ö%fAyU˜TÞ±ÿ…“M€[±ç‰€ “ Šld²™°«Á¦ã‰öJÍñHÄ^¼`“´lU€àJÎ&ê4P¿ˆ Ø¡ 5.xa£Ú ‰¯=&Ã[lU“CX1DÝC37,,…ú#5ôq&þ%5û ä‰}ü¯éŽ@}íNT r5E.5±.¹ÈŸaáMñ9Mªg‡›¤§×š¤ÒBÒ1bSüø ¸[në&¢‘n¸ß[W„yá*«x‚¬j·-pï=\P7­}1"LœY*aMö#×…x®®\r)[%Þfé¨gán¿v•]¨ãJqÙ¼ÚNèéB&F9Qºocˆ,½Ç/o÷+u»Ý²Åub(| È ‡ãZ± …‘~½ÏÎ%&þ<ŸÈÛÄðÈevØ[Óäyrï~P†=ãs%„}ç¢(dz .€ðU@µ‚ È s%>ð¨}“>TùF ἌªiÓﺳ,"j¤úœžætVuP…{½gÿ÷ 2؈Z ·[hcƒßHebxt#É{­V^d·0÷Íbs$\}‘ÏÑ,ßF}MÒ;B8ú**ÕÈ¥³1¥ŽE)¬„É+SÞû_ú#Éï“Fó€¾²³ÂÆÀq;™½ðn qÑ›|ì®ë ¯LJå° xÈ1X²=Ö±éx<:p}G`ïÚ9B’®†e’"è÷NpÿúÎ.«Ñæk¾å›¹%Ý¢í­ºÕ5ïÎJ?…s“Ÿ8¬Ô²=‘Ä_âqn)‰æR!@ÏŠ¹É0 YU¿ÔAöÊòÂIpÊ(ßÁò馜ÝÜ€H©´ÜIæœØï  støŸàóª°®e¡†b?q1?„w®ë1Pp”z˜ÄK¨»è´.ãöÑN¢Ñ{Îú<Ý0þ]ßA<°¶j”¡m·rtŒÆšMûEvaœ`Èx-‡ç»ÝW´®Ü£ÌCÏÈ›Êê»ú­sôŠqsB°ëM¡ iXËL¥ ÿ€Ü êBdØOÀÊÿÀ7×zÀy-”· î;œy$]•Tø¶&õÔ,½…‹j0¨à×=’ž´6É•k|<Ÿ²K®Ö®Uø?ä ¨éµÁØI §Mxn r§aEƒ7[˜‰ô ëR¹ƒ?®”ÚîHØÿ<»Ç8A'¸ya£ø 3"à»þvòvMíQtÕ‹>·c׆B¬Ú#´kóòbô;ö[ƒ;Œ$•hìÙùȤdµŸ›,@1Ðù2îïöE~0¾Èœ^°æ¨Ã¶DºœPI\áN!.€;‹ïtùlž¹ôåÎrÕâUóiÖûÕ…8H!.™/KîÃ{=K¨„Y—Z#Hît²Îu YC4|#7OŒ[8Õeø,ûíªÿ~`ØéÓœAK/Ìóˆi*Ú,ÔÀ¹·‰vx`Cét^â`w}\rƒ.1Ž5› °K«ˆ} .M7„À†xý’Ô·Œ™Sðš­Ûæ@Á”[ÒsŸ´íQUHu,=,\M,—ý³*YobØ~šueÞ±L8Kú5èØJÐÊÑìÜãØÆà(r–Î\Ñ[ž"^ÀžyЭ .`Ôë¶õ/<ä”+»õ:CׯL¶§IF}-y´ ©esNh Î`L3k~Õë0Ø3úòHnß0W#Ф@®¬z$Vb_äZ­B6yT9¼ÙŽÐ¼™Â‰ ë™çÄd?:Èip…íÇn'Ó@„ <¦ó!)R((»f=¼„xD}O]:-¤­!@üµÁ4M#RU\äÞYÛåú}uar?†d¨ ?`¶Þ‹(B˾t“1ñcG†ŽT&Z2¼}ACXïý<à đ~-C‘eiá1}¼5Œµ†eõx]k˜îÈ&1ÝÒB&±¼–®e³šú»ØšS&VÇ2Žâ6Ç—6<4êö@E0‚÷£Šx[È1º‚T+.ÔŽ*]~kzƒ­v ¬”M—F%ÚQ”°ÝÕ²^í(ƒCa7N7 …)Ζó ¦Ë¿®‡f®~¦’Ön´šAj[­Md*n5¹–Go+a dÉŽ‡ á퀛-ƹö‰ebY’l¼Ž¹Tn‡ƒ;•c E ÉP¨6ñø‡)%?Œ®Ðxb´5Ð=å}b't7DC-rЕ`›Î•ü/ö.+`U§#ƒIèï´¦ž\¦çÚ „·¯8ƒ^&Û Š½ c…¦sU wÑAdÖ¼bÓ ™’ޱRÉuA `15ëpö<Ÿ#\^w]a^ ù1¦r„›Œ¥h‘ð®£õÚÅ–øQ¼Œ*©û_ýÈ5ô#òù‹GdØRyçΘ@±bQäPíäSÍ^b•A3ë­€E±]È.gÔ7iå¼’—<ã…l‰Ù–ÄïÙvFÏŽ˜ÿ¦odô­ˆ+Þ¶MŒ[[évt˜€”D=·ýŽ3kÏ’‘VI#Gæ4™N'ÓPÜ@&™ùÏ£û°ž<®fƒÉµíTV#W²Œ]K =ôÍiH÷*¹QQQd³@ˆ/Gj&­t2/Úí*(çèȃûA/©k•¯Àû&}Ï$awÇ)\ÛÜ“"X£vA*G¨ÏhD ´È@ÏQZø#Ð…2ŽEaœÁèçfPßÊz—ôÁÆ^Þ‘´âxᔎR˜!6:^¬Z›s]"²ªãœ„,ÒAAÆŽgó§··£ô…I^óèÛ“u.O¬àfˆEv÷±•5ÚûœXëÊD]uPˆ/…ìª ‚lW½ÿ¾¤.hIm)WüO6 ô>uq“yé"ì{Û_,‹gzÕh_EÞ» ãY)UÞÜm”žåýÜ YzÑ:Ìh‘É'=u¹O?7a43 k5dxéL$²7=4 ]`²“!eËÕ—ª¥2IàÉݨІ™¤\6³5Š6•Û1dh Þ4ÒÍhÄ)o)ç 7šže]·Lù°Ñ:ïm€ñ϶íþÈUyU8žØ›²}U‘cÑ_ñ"HyÓhºÄ?7WV±|9=Ëš0xs9¼eĽyî`öúÇŒ@øÅMê[^ÓŽ-OÜ@;å™u®0pa ìãw^ò`ÿÁ³Ñ@å¡"yÑÆIYÃrDÁyƒå¬”~ çÓñ*P\k+é!U(;ñ0›BÊ6Ö„òÈÉñ¿$ ?·ä3mO~ÆI^G¹d¤@€)—xôkä'}mróC÷oI}ÝÝ®34pnÔ¤@6'/x¶À“é'£å@L?ódÞe”W,y2gfùüGŽ)¢ÝieiU6sËUÜ2=Æõ“yå/rÌyx/[Ùfl9QÚH—©>@‚ž´Ó¶~(Š›#Ž;gÇ%H!¥©'¨°îà{?®jJ—b9ÌÖ>)u gøMY¸elý”b…ƒ ¹ü&ä!È(OÙNÔµ¡j[Fa+ÖÍ Ò³ŸÄX9ÁŽ®c®H¦ÏQî°5u:*ëªrAÊ‚Ó 3ýÀo=‚ t ><¤S(ÛVÙgR³—àt2åNæI¿¼Yèeʘd[HTñZ YJ’tÔ E±Sœ%é“–+ÇîëÛ—1Ù5„„Û*ʤêSÁÑ–íд«sé)Ÿ0%7é!ZpµUø“²×ŠP(ÐH›s®+%øÚ„¯:I]¥X>½//÷8R*d{þ~<þü½ ZƉjÄt‘J&ÆG‘ðS^>k?C1=@ʹ[âÑ<‚\ŒÙºˆ•x÷ ÀItO<»[Ž™¯§,Ô¢DÊai3Íl±‚@µp2Á8‚d¾PîÖÝ#ÊTN—÷,>,qMÃä_ËFY%ƒÙ²a´Å3•…PÎò³ìx“ó¬6Z\¡ÿšó)ÂúÑMÉÞxL@‚†q)vr~Ã= K?(lާÓg}¼µÀÚ©Ü1~Ù¯¼Â.Š­°BëƒnÜ~ D·%{…t¿Î éz+¤õvýÂü ™Œý%ÇìamX˜S¬®ËËD_3pgr¡ pt^DM%“_‰bòßÑÔ´& ½këæõ¬¬7bHêÙËŒ®q(•s×l7zSs¦=G2!‚·÷äN¡~FÝ˵ãÉáqL‘ˆ‚BN·n³ý\a áÕý¨Ð“%Ã¥Óñèt¾™·’ÓÚ³o8IŒ-tâÞ¹Ûå²IAöíOaRÊaX[CØ‹K uú2&c¨µßA¸K°CsÀÞ#pÈèß„mrë< ¬lÔæ(á4{=R›®G†X §¬8ÁX @Á©¥<¬«ÔÊÒj• 6ç•Í|bÅr+6½åd Ž¡£§S¹ÎÒé(m¬¬PÔNÏú5JröÔ°ê©¢æî/DH똆a=i~1e&´óR%jתƒDe 7uæhP£hä…=ùê&f‘5Ѽ”v1_[¿Í•v*@†óì®L· Éïý˳ LÒúŸy·M s/sÄZq4ü[×y…ò lb•‡D–A(‹-º˜9A'M>ÒÎ'e_”ÇåσQ*ôàž‘ºŸÉ³ï®2Yºœbå¥ ö<ØŠc‚†åÜ¿‰;2XWóRô†x)¢ø)E­`ü™}ѺöMêÚqkj9«¼Èv¶*ȼ×qWé¾Uºê÷ý÷:WrλÁY«Øù­ð3ô”É!ã&cÖi–].ÏQ)Ðþ‹ZD}ãQji¹®°ª¼b”¦=[(—U#°kåoW}qt2Nš‘¬ñTÂ>(šœ5Ý=ûe²Äã ‡wùÌÁn|ÿaП¿J‘x4üõy¦n` “WSFJÂW–RPÉ€Q‘óˆ4j$ècZuå×_û¿þ*¥²d>y¶¯“ iu fÓ±Æçú —ße_fhÛ€X€øfS%›Vµlªs®fiLïg—dåWNVVL„2R9Ç¯Š–XÓåæè=ý)…8M”áëþDß5¼ÜÕÖ9¦‚›‹E9!_ùòØe‚÷–Žâ ¾Äçö±ãOQ&»é/~ðW†¹£óì>SÔÌðž‘àüj¢úW;=Z´´ü˜'$Uë´j´¹®NçR–zš£jˆñÈOƒžœ'7PFz/ü$…ö“•S´„ã]¤!¹íÈ>Ì®ŒXÕ+­ ©2€šr'çä’ϱâ%J²g_³ÁÕøSŽô¹O¹ž ê„u!ìGÞ"—EÑ(.Ùd"0ùt—ó¸×eåx´âíÕB§ÑIÉ™üžŽoP>9 ÊYf•™/areÝ£#ž¶V³€`ó Gmð€Œ< y2å‚x¹‚Ö*ÍQ?|YÇ'o>ÑKLbÀ ̃ù|yg»K‹`»óªæ¡sZ]jÆ TãYé‘ÎŒ4Ð϶¬«Ùàúg)É£§'^ÏÞM‡£ŒQ½±Xh­ëÓéY½¸‚£›IŒÝKC<»è²Ñ„ó+ÞÒ  ‹0‡Ç¹ŽS«v8±b™‘eþ+¬3Õ¯B ­‡Þ·wè<¸šB ¬6 é,µ<×[z”M’ÁVÌsÈ’Œ£²Îøç*¨BøÛ+ü¹ýhCÐJ€«BÜóN0à!>0´‰òû©qS`®4 ûœ œ%y]Ôj¸7pyÕ±A]*ÐkXÖœÚ\Ç€rÂÖªuОU¡Ú0¸ÂB–¿2@±rÎJ£¸ê®ˆž¾+ â6Ëþ^°1ë_8®dœ´{»ÑÞ¯:u‹Œ‰Ð~*Var³ƒ†ÅÈï€w¶úè_2Ä¥\tÊ‹6¢€Õ,ÇžÕF3‘µôr«'ˆ´€)^Ž V¤ñ|ãyüGÖQG[=Òz+A®Ø­›úy\(JDi5·ñÉ;Õq$¯>)k@fÌkï »ÛÊMìÑa‹sxdn©ÏµÔÑó9ö:zÂV»Õ¯­iÕ£ç³l{bÕõå‡U63±:°çè¼ê9púò‡`þ!ÃQ¦Á%0F` |¼Iè Å詬 Ø|•g¼Ñ? V³ÂÎÈ¿lŠU=B³"ÿ¢K'£E7õ&•Å/ ÕŒ° |p@šãÀŽlû06ŽK“-DıÀý“ͧøZVâ3»¢]ZÓE@*ðd¥ìáîç:dÑ‚ÍNNX‘Î4¨3²ôfT¡·×?ñÐçu…v}À,AÛª8ʲ…jÏÈß[d+}Ò\<àÊŽâtjþ%´ò_ 7ó2°ÁlæD5u|vèej[-tDzÆ%=ø9Úî¬ìlètDRg¦5@Á]—ÈŸ\ giSé'¿¿ ¿Ïò[ªÒxÌÉCd]Ê8>KnzŒÔáÉt–íØ1SÆ t30é–€j¬”Õ!¸YezaxÍU‚zîtJ)òkÙ·@x0¢·ö ž@ŸÆ•©çèáää»_VŽ«¶KeiAùæp–Û•'çµ*¿xrj½(ÿxôa‰iå´#þÊDrþ0à0ôi®«8îƒþ³P÷u½U[¯}äämª^,q0«P†•—z2*£Â0 (Á‰&¾ƒc÷åœ} ³´%ìÅúI@¼7á´SÈ1$l …Ìéœm¯©QÓvÉ1{udòÿ7pt¿„a€ši 3¨Ù0C0À”³ópaVæ”ÌÖ¢äEèîòF a€Åõ§§ç÷ýŒ÷ƒëŸŸ×þ9lòëq\»ùâuÔëõífSÀÏí-üYéo|âíºˆ¢h'ÚÞ‰ã¨.êQs§^ÿ“¨ñ–ž%PȦü<,ç9åd±›¼¡¡®ýóßåù_ÿÿù§ÿåO:\‹³žx«öøìOÿ›ü?–ÿÿ?òøûÿ+Fr¿ßïò¯ðÆÿ+ÿÿ?½"ÿÃ|þ¿Kªé:“Ú¿–ƒÙ`(×ú×s9ŠÑŸ·êÑn¼»·õçÞàf0ýù tøé±æÿ¯Èý+ù¿ÑhÄ>ÿ7··Ÿøÿ[<Äí½‹Wݳ yÈ·ðïtbQ'ì|Xo’á­•Ü«Z•×ùþÁ‚QéEé—d†¹µ$øü§Z5„¦ìq…öÿ«Oâõà.™‹Ãäî.ËÊ“ÁíXªJ?Håit;˜TÄ»éOÅ£áU ›ÐkÌWÓ%C $¿˜Œ~©Á/ƒñHÊ~“Ñ@¼Jf?'ãäS-·Eû÷³ÑXÄõú^ªØê¥F ÁÄæÓ›Å([Àqƒ[Ä£´²Ûºµýd2Iæs@³Û”׉ÓýcÑY Ó=Sm¢_Û'çöA»/NÁ÷ƒÈ×júѻȭ@ìÏn—„|PÓ@î§ýÖq«kÓ¥"—F€Ð>ä± Ñ(o¯}‡%±†©ÂHbøÃ¢¿ž/g÷œÔí%=ô¹^­ŒŒã  €…F´˜[@Ìå_Œš3°øšû£ø‹ßÑä—Ò!ž„O¦¬)pÞúC+CÞë+ÏUlN B‹–ä¿?%ÔIÌ—„Süª³ßûçü6ù'Ðü'´H»­C| 4^9“Ô#hõ]õ¦€‡°4šÜ/e5KümßAX›M0ïÔ!.˜·5ùò__ŠºÉjyº1 ðZÓ;õèzôpê1ÁiEŒ“Éíâƒ8QEýq®F*Sï™ZÞ:µ<—Rª²áH!nO%X`§jyM0ÔìyOp%oUø<ÌΜF‡òG *Îß; @>°Sæ"ıÀb4­b_Õ€±Æòå—xt %wv=ˆÙóy¼]¯ìÝú˜\/ˆ2ê-‹D3¹ÚhÏ09Ø †)?dL:AT2~Ñ“ä—æ÷çxƒd›@/=Tñxü‡«’ꯞTÏB£ÿ-n ù/¤ÿ5›;Oòß7yžô¿?ôcé_‰ûWòÿÎN£éóüÄÿßæ!n÷ô¿þqIUÄqEô*¢'eü®RþŒN3X~GáÒˬ½|®$„!”§U¬o§ãél0œJåb=í¨¦uªÓé/ ʲRÏÛ¶E£l ( ¹ÀøÐHua ÖÐZúÇ{ñ-€çð<××ÍúÔ$ß“úß%yøà~{ ¿uá7VYz±Ø”%á§”´jšBÞ*çŽõouñwªÊ _ÏÇÓݾsj¨&˜åUPY"=ý½îYÿSa†O"¦ À`·òó('ã#œŸc7$èi³B UûÛ7âøe½BIrz/ +¸wú²n•8zYÇKÇ¢6I î̼PW/DØ<ð×N1ßÇĺ.½O˜Šˆ}ëï9 h.Jóxš>Lg?#¨×«ÃÞO]Œÿ1o/p 'íµ ¡}p€lCÏåUÀ/Aöá§n?@ºÉ?4£˜¯zûoZ^óq¬­Aq+@úp°Ø<¨¿;Üïï‡h‹çì•+ž¯gíàÃç¨Ät|ß j*¤\Æ.‰g½gŽIã¼gÙr¾¤þÙß¿’ßolÈñ-aÊLEþ9Ò)ËÆã{Ž•³  mÁ«êmL1ò[gdõ ù©LçƒcðQ§§­c4nà?«¬²Tô 4©VlûjÅ·Ù°“æ7 .ª*R#ê¶z?TÄ¥¬àómšø¬iØ\†Jm4Ö¶g­gæ"óÀʧîS ªÖ«þÆ+Å´ÿˆ7Ú†Pä/Ó¸¨ëªa h#ö ½÷x[ Sr»ä!Ðí’* ˜Rxgh–S*éû”™ìÒýÄX>¼æù” Ì[YÊ/Tæ¦+„ÊÞå(ìðF5ýJÕ~ÇÑ‹UkÓÃìz{µA)ó†`­~¦¼VSý‚Ä}Ù¶h_’yS_¨©m Ô£œ…ÏmÉK.­FÆËz¬Â†¼í ¿Ô9{ñÿ=2§u‡Ï8ÖRܹ£KÙÉ`±œ Ææ×gÉt6Lf*‰ý@Ë)Ò9gÑìQ]Ÿ\ºLÆ=¼D e°gP« uä]@å&–dÈS|÷y\ûÏ/¿›øï§ü?ßèy²ÿü¡Ûþóu¸uþ¯Tü÷NôÄÿßâaƳÿ¼) ²5´OÈ$‘ÿ Ü/?xŠgË‘C£F†ì4 ­“ë€scõLŽ,üù®´fš¬þ»ì(qó)Í©¡¹¦’“ƒH#½mP”Þœ‹8ŽŸjâRÁã%_\©Õj•‰¼’øXžòâ¥ü]\ÃbN©ïtÑOô9þ^ÅBôBY·Ú ’Ÿ¿ 7‰U ßW “òs[^ʦï=Vâ©h³x°8Ê~“x>”ÊèÈhr=#?›«dñ¸“ö¬½­¿jŸCפóEºò.«+ŸLWÞ}vWÞÕˆŽéŠòQ ¥ ·ô ÕR2©î/e@ú¨÷ÔϦ²‰ÖˆÚ_'éÃÚ°#Â~ø.{—{+˽k¯ç¥Åz…r¶h¿³ÿ8°þÄíŒ`©øoÛœrÌÔxŸÊVÒ³>åbàäQêå ùö&ìÌøÇ»¶E€ÞµŠJ’U]ô­U;Ðè àVësè‹ü?·Œ$Ø-ù~~ŸËŽy9n^~nGÿ[þŽô¿§øoó<éèÇÒÿ¾÷¯âÿfÔhl¥ô¿íø‰ÿ¿ÅCÜîé€÷Ökµ1¿ïÛ']/(Ú¬¥Ù…D#á’hæ…?H‘ãt--ïâ Ç:¹ZÞDÌÀŸâŽt8R€æ„À>Ë Œè(Õ+Ö5ÍÉ=EÛ‰ø‹”šâ]•¾J‡wMëàPŽpF¡5§opð×÷Ø8$"¥ ¨ÁK‹ÝMGÖvÓùΧEÝêRïYócˆéìÏ|Ë!ÉÚt´L}'wЕ°M!_ÍúÞy*Ð6˪ Md:ÖüÆ™ÜÁÐ69†KĸRªæÚú«Ó-¥¾*!$d¦©óUÙ9’OSŒ¦éUÉ„–3 É;LƒÑxÐ9¬¥£–Êrަˆ»åx1wt—JÙäv¶”£øTwÉâÃtH^wÓár¼DÚñÆFs'@½,ën4ö¶âÝF³Σ Q’C,Žk½ÚÑhþán0AÕöÙINekdªþê,ÿäãyh ¥Ád0þ4ÍÑ æJJè8€ 0$o—*P¨¹û¬"N‹5¼‹®‰hw¯"îïeg¢j£Ù¬ˆho¯®¯¹[½-pøVÅ”q’ìÑDî#üM¨YÄØü(ò]l>8hð—5ñÄOòM‹l! ù¡Ê5¸žMç’ (žH ݹDYÈ~Ãâo½öˆ¨³ÀÖÜy#ÕÕóË8»žn^-7ÙŽˆÀ<×÷¶+èN‘8øñ~Š5à±Æòÿ†ü_®•v>èÃ'}ø¨ß çî¦Jð¨Z‘ßÿ¤„CÑ ¶uÝX2Œî:9¸Qン"À‹Þ x•°q& ¯¨LãM ‚jîÉ~7b9 ñV}7 -Þjî©èªì:âPñvc§"v€[;[ÍœJ¢¨¹µº’F°’-yÌH]¸.ÿÝÙÞÎëI,w¼••4ƒ•Ôå‰-ÙÍÆÖNœSI£^ #[¡:"Ù<9»[{ðï^#¯’F=Z]Ëv¨–m˜±¬ªQßÉ›’úvžì×V}êØmîBM{yµ4¤^³º–Ýàxí4äHm7¡'{ù¿¨d/8\Лõ-˜þ<>iÈ™[]ITÖÒÜ–]”ìÿníåUÅÍSy~{èã@ÞˆEÑÞNZ‚\moÉUÑ”«/Þ‹sYe'.°³DA®— Xö¥±ÁB«7ò7°"Ìù¾É…%ö  ñ^#wÛÞ)°Æ¢ Î߃e» œ_ß‹rªÙ*4ûaÎoÂnߦ‰›[y•Ä;E6Ê(ÈûQ¼S‡‰ý2ÚÚ­çT³Wä`‰‚¼ס»Ð¡h/—-ãÆv‘ 2$Ï,¹7à¬Ëc&_Šl–qùãÝí7c±Ü=Yn¬:‡™_îÃr5À0;¹C¶éL˜ùwêÈø¸â‡X‘j‚ìß”L"PºˆrO—úvÙ%Èú{ ùkOîæÊ.rØ+ã0ç7a3Žå´Â Ey[rc§ÈIYkiÖa•7övòX_Êà* r¾Œ`>š°Žã])ô嬰h«ÈY¿±‡CÖžÙmäõ%*ÄúqõãD˜&ÎËvœW‹ÐóÒ²¾<] ‚úˆ°rkÏëÌn‘¦dýFs7†ù—¥È,ã­"¬ß²>ûÛ°-ì4re‹Bk¬äûFׯÎ6¬ä½\é¢YH¥ûÛpìì‚|³³›»ÁÈ5_ ’ŒS{Å1ù”ýsj)TGñá^ddXeR¾ÈÝ^Š0K#|æoãö2rÜÜÎ;òã¨È™ß3þΜ鬹ªK³P-a¿¾ çdÔ@–Üɲz‘¬>ôåpÁÖß6ö¢¼…aÉfñã]8‡cÉ5 ˆå/E”—fï»ÀØ‘¸™«!‘›ayVW„²˜Ô]r7ä¨ÈyÜ 2~´µ×ÀS™2öw ,²f˜õw@‹ëÈû;Ûy³5Ьåf˜ûis!9©™{ ׋ÈÍð¹,†¼¹¼¬YDo†¹6²hä¾(WÙ/rL6Ãgþ.œÆM0B6s«²A#OøÈ߃Ïå:ÛA‰,_¶‹èà[aa?£l|‘<'ó—q‘¾„í{uÜ^¶ÐÚ³—·ïËøÀé²>ó ÕÈ1GëØN^gä†]`mYg¤c8F£­\µe»ßo…ù~ D0)"ÃÖˆsOʽB#äû¸ ’‹AÙVÞX^Y»áC?"òKä ê/óOãÝ"ªÃÝð¡¿¹KÈB”å› l9ÁvÃ7|éÃf‰«oä2lBEH,¼ðë$Ú%¡k”{L—T¤•ðÊg12È»¹Z¸^/°½ìf0û´Iî°ýC=÷üÚ,BÈ/Ãg~”†»HÏÑöË|U{‘ÃøeøÌß Ûš)0ŠsùW¸Ÿ ²—a ß‘210;QÞa\ä,~>ñwð>¹W®Y¹|E¥Þ˰`廒¾:ªÃrˆ¬÷ò2ãšìñ‰E6sÍ_â¸ÐX·ü ÄpYÈÃF¹ûX¡-ùeÆÚ'åÔKÔ_îä.Ë(*r¼¼ ßôQÇÆ‚p‘ošP„}y™!ÙǵÕ±À4æªôŠÜõ¢°-Ï^QlK»®¢}³ÈzÁ© nýÔÂæ& ÇrùÊz!Æ2Ú/þˆLybä˜ê»¹x‹ãbxËó!ކK;¹÷ðBV#á忱K#È×w7sÕíÅpÜÓÂ}™Íz^æ²Ê…îbÑFøÊO¶‚;ÈÀ]9_ZÈ8-c @³N¨ËU‰ ½H+æ|›d'Jòý<™R´[„÷‹6Â&=»dÈG†K ‹ÙÙ…Úûã—¨ÊØÌ•X?RdbÂö|qLŠ=²ÂÝ7_2^¤™ð•?¢órÛÝÍ’ÚÐ2LúêÛlجÙV”orS„ŒÂ6}@Ãdsƒš“¨žnnÑ&Ea«>˜”õÆÈ#Ô·7òN!KÈ »¾ˆôoÄqF»»¹NTh†-û€¨µ ~ænžõbx ÿvvber‹Žù¦WEš ïqÄq»D ¹hÛ.dÚ6ï‹ÈJ±N–>Ûù+;…6é°y_„šW4¹Ã­ ÷ĉ녶œ°}_oñhH‘;5…vé°y\Ë7‘ÝÄc'ÞÍ»pÔ ©1¢°‰PÛ©“g>;°UhÇ [ù½$ÓË—¤ r <· 1Pa#¿x e©°‹¢at¾Oìz…Ú k"²ë'ëþúV®áR\ì úm‘¬Nº¬Ýümš'§B¬ÓŠHÓÈø:Åæ©É–Ѫ›§uótÓ<Ý´4:¡4Ú­ÅŠ:ú$KÈÌ+: EŸJç»;ãy~'†µùµ¸Å4ÊWÓòé#§» ûûéö±k=êÛf‘Ü"´Ú/i8Pä…íÄeªÁϽ©@Ñt½:†Ö¨[ ñoÝTÝm*–UÒM)`º©8]“,¶b¯©ºÕ”Ótì6Ié¦pÝt”®!èÈk:öš®[M‹5ŸLMÏ¢tÏÚ€lØ#M:»BhLÐ9{î94rl]ËA½çôfžL¿Ácé lšÂˆ,£¬t+%ò*£&EyÍþ;öþ®Óß5§ 2è?Ë ÖÞ[Qâv1€n„‘í)jlłԺôF‚©ÇÒOòRÜN“‹!ºÚ²±?ìÀ0Åñ½‡ªþùä[Poo1+G­aÍÒ÷ëáŵèûÞL0ù&V[ÌÅ]>˜;\YcòÙž•er‰R¬ä@¡ü‹ñ€ƒÅ'ô/æ°’aøè(Zûûûæèj”˜Ñ‰þt8¿¾IæÃ 7°ÔÝ€©[rÓdD¹# #>Ç”™Cìãf6Þt¼¨Å ½‘½0ãÉ\Ì·èO=cïwÝÁõ ôL…~ú]à4uÃôŽRÙ^L¦Ðñ9v£ßNÄ`Â̆ó… Ëa$ü; Ÿ?ç ¼ý«þpìv¹³þf¼èÏC³ØµÙõd1Ð Á0ˆÙ¶ôõÿ㿬êr+Ç릇âÍÏñŸþÒ+þÓZýËÖßcýGÑsü§'ùH¦Êÿt†)"šûp»£PGUñ‰ÂÙÂÏÞÞ)…>jÂϺ‡éàPÁüOѯ €íÝN‡#t¿Ä½>*½•XIªq°×Ýk8CÙŠå ÆþD“@8o›ð•¡tÙ{§7LíTPjñIƉ^5Þð™n˜®B2æ E‹J.G›êÀºõµkçw5ºHqÒ ¤3 Q• )º²Ð£är.dž©)æ²XT(kÇŒ³u6% ke_<1 Æáœ÷0šoø¯RéÉÔMÐDBo†ºË3žE$˜oÖc'e<Üõ°Òkɉú3ïÕ73ìëb ·7+Ö<`·”v‹òÒ " Íä½F†ÖêuÏÞˆ§…„…ãV¥4íU"û†òZüvôÛ+Âöª"ÞÛ®~Û€· ¼-ßV5ù®ï³j†ïùŠõd;ZœÌ?¦ÀÉÀiŸ0@Ôîs”DÌÔ¥“>>¾\Œ(“ªy0YÌ’ëÉhpe¨lç2ÔB“B(‡Õ,þþzûw¢ž¡y×…wóNë“7¬ìXÄG‹¸>+áæQΊÑüMIXôêáK.ŒåÀ£9‚$?莼/ðî ½‡ÝG˜ÞbÓ&!?¤ñ·u†ó»‰fŒ­øXH .¥´˜3GŒ$ Šmã÷ÆNNÐ9ÞÃlztKR¸"nGÑ÷épŽâŽó;›ŠiÚÔ”âD–›ò2t F‘~³Q„ôGI€r34IÀ<¬±N€€önú”¢j[Å £#ÁŸL¿ÎàÐN2P•I¼Ô)»£Ë* -µËî0W 8÷¦¤ £»P')L•¢ç½uqœÌ‡ó'…“MáèRP´fr;_¯ºLü}8žüñm8/rz²÷Ó£-O gbž­¹©àÖ¹àtÞ¶“Źäå¬^„’²í}9ÆT¡ôëÝ~ûýêæÄ ;úð®ÕpÇxtãÉn™_ßG;ò¶Ä•§ T(tJ5‹cxkŸ‰¶¸„ûÐzgßI^q(ù{ID¯ÆBFG<þeƒ*-¢Žô(6kÍrõL˜úë‚¿©Ö¢W7²àj¹Á£Œ&qšJâ·ܸgÈÄýFÐèÉ¡SSD3—­T84šš)ž©cxD5B¯Ä(5VÉa%…Ô8¨­¨yxã«ÎG“‹¯ŽÖ“ÂôuBà•y>A²’΂ä$Åzp¹"…DX!剋éÐ3šŒGwrBXxEÄÃó…ÞüÆ1üÑ|ijÒ@<žDÑpÇ£¥ñéÎAç2þÌò] ¿"aêAÇ‚X²ïne¯`ÃÄVK=« •[Ödk<ÀÄ0íדï¬]A¥LŸLtbiZŒžÅ†`T.^ßBQytP‚­è —Å:ýwPúZ%¸xÃ.4¨c4œMq—Ìý‘¾Ñp¾q™á–ÞÀ.†€ä°%å¬6l£¾˜ ²ƒä7T|±lÔVJ‰W9jÒåû–KƧ´HfÝÉwòË«‘‹›L–õ2ƒ*~M[:¦eÈÿ~‘"Rž¶ñö¯ò}Õ\ááÚj.¥9UŸj.3‚'×táAÒùTNµ«·ÜBÇo‡£F­½X¾8Òz“OEp¹Doò)¿+Ø5ÐùêP)¹Š" W=L©÷`Vû㫲‡xpªÌT‡yóîQœFRïÔ['@ÖhÜA¥¡Ž>þÖ¨È_ðèS°!ˆ;:,«Žq݇u aä­cÙŠîx§ü7»´·²ýÒz˜Ï <&Ç¢éŠ2tuù‚·bÛzÙ‚ {ß~¨3=•ÖnUÅ£Ñ8¶ñæÓÅ__ö»oŽöVS r™‹!íydÜ„¬Ìñ­a{ýh}C¬讋/›kŒ'Ôn\'S‚]¨[ÅMn •<àU³Vkë½u©¨T÷<¼6hU¥™?®\S¶ó¨JP—C¼ŠdƒPvöR`ozƒP´‘ªJªÆ|IüÆ—0Xþ5ii°$~ø¬;À "ÐM¦dÜaz¿Ùš°@ÎoK›*¬þ%s¾ °2XúLê@Te}5ª›¯Õ Žç¤7àa¦v­CJ—÷¶ö•oÄÊCVz\Eämr¶ó;åþ½–¯KÊÐ'ÒKë“¥ëïzîz–¯íi›?´8 •r™b°Všå –6Ï•-ÁGEôpˆ4ÅŸ•®O½±‡É£ÁFC·bÉú/þ&….¸D;“q MþôȨw½Œ‘‘p$»ë=ùô%jîPÒôV×ôÖqè­‰N?ÊÓ%En´E´Æ Êï5I†@™-žgéï)œäõL²|4½¼O‹0Qyxx y©y¬ÑDJšË¤S{.3 *,e©Þ¬ÝM©›·)± Q,}Õ†¬² [lüÛ£Í;R[©yûÉØ6ó÷£oýÝßv¡î‰Ûó®¥ÎWêÜ4™ÍÝ™´ÜÓ°Ë/f΀c˜]÷o“”¥—Š7ˆ;,rÛNÀw»F@dë%ôsÄ/4$‰‘îÊkýr2‚ At%ôoà/¾á°Çà}[|¼  ™×p  ~iïþ®û#<#Úóio¦}ÿo,ãñÍn'㌾À¸×Õ±ÎÍd€Çte1§ù§ccÂ6>)ª0@Ò„a&!É^ô¯4q䃣Ãsë+ðù'}>ÑO«nI|‹Ä·X|ÈxŸöÿïJ•¹„õÿºü/Ò¤Â=/úÉ$AXɃ„Áx䜋LX%šZ È%Ÿð¤æR <òYJ”x쯄UüLó²e¡!–ƒÈ00»·YaÓ.E¢×Å_96]?9œ—ù v^*¢êì¼TôÕ‡ÙyõVµó2v'ìf^³£Ss¬^9;`q%$.ð¼Ú…U+`ÖÒS¶+ð^­Ž(¤66Øõ¾JÆÉ(ƒùzMîÖzë‡á>SûÃ5Ô ±IÇ*c~½Ë?ékÚi_ˆÜ˜‡µ–Ž;AXÌñ±"#š–e’ò‰¤-ûoÄQ.ˆžÑRV ùCÖàO2hÐo³Š[@ÉØ4ÔãÚ¸G_¨³JñÝ«¦`Wp–†¡(H!ù¿â ŸžrTéf–ŸX•nëgñÏŒÿíDÛ;q ‹ãîì<ëžäó¬ÿýKŒþ÷G­þ¥ë{g{Û_ÿõçõÿ^í®þ÷$.‰·Uñ®*€?i·:ôkïKZÕÛ_ü1 IÊœVúÆ¿¶Ê>É·„„ç1a1ímà–eãjï‹DYqÝéI,Ä ûX¯„y4H¸JQ,µ·fŒnm±åIðÿ´¿Þ ñÿ™'ÈÎÀºÁ|KÙ/ N‹ÜôG#¹Û‹,h®¹‚€·W©’”jo%~òu–¢jTVB½àHeC ;(,.ŒÑê‰Ô}hat{_–AÈ›…ââçéµè÷ø“¹L/G“ïUÊÃm 8ƒážSð„ib²¢LHª;$=P_\&ß)¤ñLéwáü˜‹ÛQÿ·Ýb:™ä[2V¯ûç3’a“Àó$ ¯(§èC¼#¿˜-η§›¼RšËä2V.)$‚|$UáÎ=¼“±–v«¹cåÁp|9„+”}øÆƒç<4( æ9‹ñv9&À8 Ë["0êdDʶ‰„1«R<‰™D‘ ìd©uQ‚ÅxÓ¿¸&é–E èV=„û¤*V£áWÖ•6H+£^@Õ;ÙÉá¥ÝA„â÷Ñî‹ÖÅNwäf~ªÈ+]÷§74~haa¿¸‚ÍtÑ­‹Hh¨­¢h}1â•]3{Žé-gÁÈèïÄm2…­è¼Ï’Ì3ü3ã¤?UÊÓèü ¡‹ùúãÉÐ~¬Mu?ÈÓ3Jïsngà5¦L’P Kó íTÅÜŽe¸ÿ·{ðï Ý¡ŸpĽƒ¿B¹ªµÆ³áEH"×êôº­ÎI«aµó¢S“ÙŒÝÞj8óvÆ °€qÑè{§Ÿ½ÓÏô³ý ÇO)“Ý[—ýê ¾Úû’z…²¬éK©ôÈøXxm©ö%³šPÇÁk€'ˆ â¾ÉIå bÈi-()Éqê â…½iâ°L#Õλ=yªƒÙ;N"u¯1¢_PKn‘‰ØñyÊ”ƒ¥N©ô_R7 ”ÈÀ xÅ {'•½“5¨Y^“z•½=ð=j¶°ýJ#ˆijô…häL õQ–³gObjï4_¦‰¾M†íyLû1ÆÞ°öâK‘ü›,lpY¾J|ýÙÝ ìkSX‚¥ùÎîФóÔø|¾LõàÔ”™„r SLþ9ï©ñŠ0‡°& Q‰(J(‚)¡JÀÁôp*é;¸>œÂ=SØ£–4Ppï4«ÿ^“7ƒL4Qk%BHw=ÚdJOâ £#ÿ»ýDÿÍíí ´¯SüÏÍgÿ§ù<ËÿþÒKþ÷ƒVÿRÿMŠÿé¬ÿ¸¾ù¼þŸâ# Wþ×8‚«Ä?Ž÷«â=Mñ ð¶û=À{TðÏ=TŸí±ÎE¹`sæþûH£{ûu ÍÝ'Ø Í%Š ›ùÙ½Ì,îH«¸~앸¹•|<€,Œé:KHÚ8/vë×ý=eh%ÐBÐéÔÿugÁl£w kPNAY‰™z|Œ&ã+üÍù‘Ç}JHÌBWÙ+µªïË `%lÔçÂY§93Ëp¿O“=âˆÏÑ”x4ª¦¬P«)#SUæIo ¤qEIy&SqÞÇ´È¢Ô±ÔšžŠ 1ª£KcÍù±è$Fij¿¿½Cƒ´=^R8¼ŒbGV1´UNM•q guÒu 3ê¼±ºfî3ˆhEgdcʽÆÇ߇øûðÈ¿Íàkq»VÉSzLPÈ—c,óÒÈ”ëþèR¨ú½ýøÓzKWìí™ÕÛ}4 µc÷‘MóOÞ½éuß’1”¢[×JÿPîFËl°½žÝï­cîéËdвäcÓŽázaSqL ®N¯jø´PÃ>òÞ0ïPiulbN‡Bb½­Â|YŽC°ÉZ;*ï„XD*’6˜ŒV ‘9‹wƶjƒ¹€å{n…ŽL×ÕˆÉ{áÜ‘PŒ'ã?“édýñb¿âÜ´m÷šG ‹p·=îò •{^Jk69/dætÒ:"âºäÓ6û0Ð^ {…VT¾W!¥ƒ5',ýT  àÁÄlqgÖ %Vho¿ÿ}ÞÉ)ãÃaÕøöå™ »Ö ôf¸R©åQü_ùu™ôÞVT=Y~a)|À^µiÚͰ¸e6ý=°S'†uø·™=ž7­wÓ¶äè#ù»ALeD?1Çì)ð¤'í#(øH6·þ¤³—ÃÛƒÙn(U†mnUÓàY‘7Ú¢–Ë÷?ÙCe£áíú†“ÔÝ—†Ã¡‰DÀú… ~åA¥,Žýpc²îQ^Ý”½±[÷4¯nœ_÷ ¯n*ž¥[7l#-ënæ×ý˜Ww+¿îY^Ýí°®D¾5¦Ûé ”T•µ¨¸å7ŸJ³@‘Iyy”èM@Ÿ ’ªÖû])…˜6ªÒ¦âªü¶_¾Ã婟ֈ7Åú^§‰AU;ûëm‡|½U~Ë/ŸÕ¿ âh½.AÀ©‡}"=ÆËö2 ìÝ>ô?U^Y£=¤Ø_ÔL» m²Ú²´[º9à²-x§^GÁ a碫[¨,KL@›‡–~ÌÕdöµèk`r%¦)òXv_S“¬ê¬·íÖ‹+Т¬œƒð—Ö :g¡w‘8iw‘à“ P$bR=KJhó÷ìHÄï’¹2=A‹Éùhx|Ø£¦ŠÎWìøoº³Ì2h•šb ä[f 0t]äCà#ðJªðQ”2†gþCUkT$T3<.€ã’-HDÿŸÑü˜å Ãñ%Þ˜£¾C~ºoÙ͆WEoÈRl$Ùàµû¢Óï Æi(¥ÒVCzâ€;â¡5PL0/›Ìü­÷º§ûVä®d¥àÙ`½ Œpw#Á„ ,â£Ba:œ ÉlƒF£ðÒ‚›Û„ôgɬ*˲“ c–L¿%3%rS¦_êšrÁ¹ØœhÝY@%Îã dØDc\aíd¡!)¤Œ{?à¡óÊÆ?ü”¦é.9Tåvêí´–Ñ+n:³c8YV·yföŸÏ%½ÐkÇëAÊT˜û¥ûšÚAõÆfž5²ÄûÄNÅõܳâzêï,XØ›Ýý(Ðý£°ŒÓÊVöP6y(ïWÊfh([E‡†r½zCÙÉʶ™´zO\ÏJƒÚ j§è ê™ƒJɆ½A½ÌÔ®7¨µhõa톆õ²è°63ÉŽ²dþ”Ûƒ<¬£oä‘XÖp¸ ;î3tuŒ²Ñm¸ø`Ñ@íýjA()ŒD©ÀóYÙÊœèU0‚‡#p¥k"öÑtšFIÎfÉ݈xæÃ¨¦"ìÖWBIhoŠ ïMÛ”¼É8’BjôqˆH%Èìª >Yoà_ÛÅ[ÎÎm¦ð(?Œ°BÛb”µ-¦*rx¦cÎb{ß}=¤üåñ‹-Ž_ìÛý°{ønEÏñ?Ÿæólÿõ—þ8ö_?Çÿ»^ߨñ×ÿsüß'úðjOÙÅ¢$í¼šUñ“¾X¡rCýÆê7ÿ£­¬PCBc-èûþM2ÍÂ4žô¯Fý±8èFëþ¸*þ1ùs"†ƒ>™%Ø€Þ÷gÐ~w˜ îð„ϳKG²©8À/— #kh),Ý϶ÍîSÞh ¶Ì>ñ×Vûø¨ÕhõD/ ÞÖQe[·ôL @´FkÊÈÃ_Ð*íËêVi1ú•qôá¾ ûW“±4=#_Gôûf‡TýCü(mB;äFûý:™²¿®+ÕôM+Ž-E þf'ÃÜÿ#[eÞI}þ4!HšÐ7гή’"Ìb_å 9N¾ÓkrÛ›Ãäõ§EŒÇÄ2s‰°¥D“Èã˺k#!–™IdZHhx^ÓƒgÛEŒ’ñÕüZ(mrÓÇs5€elLÕ3­|qZYn„ñÅa¸IBe#_äÜÑ ÑÌ5×­ò”*TÅÝ„÷Aûb>3.TÖ ˆ…ËG·tX)†W8z×÷;¸!¦oŽð0(øûbÝ Í÷ n©P:Må:'ÿp/uúÕ_ôòöçþ7Øø™ù_6wê›P &þoëÙþÿi>Ï÷¿¿ôǺÿý Õ¿Ôÿg«Nñœõ=¯ÿ§ùðj÷îÍ Ê@{ò±»O@øI*ðãgé‘}àIë¬*Z”`ÎH`ý矻‡›Püo@èýú\ÜE(Ó ˆpËxíÔâ¬r· 牕¼ êþµ/Ÿ–¸?œ†ÒÄ|’ybò§¹´ÂÕí#–Ð} gŽÐ{1ÿÏQ} óÙ¿¸®Jb GGB ìd`ÉŒBȈÒɧfÙJ7#Íù‡úr×Á>t‘×7ìú  ðgry©ŸìWå-±-•p834#Èâ÷GWŠNc::™Î¯'Ö=y؇ãS­¤¯µÒ€x x;Á¨Ÿ=ŽYî€:¡PŸÜ¨¢¼±²IÜ|š(7:oa$™ öÊDw"@¨»•Žd‰¸–S-ƒ¸ë•v¥¯Å•vÙqÎÉóÍ¡íÇwÎqܧ÷tÏ1`þȭ¹¡ÉÃùéuÀv•¬Á.7Šh#m¼[Љv°€Îv“q(— pˆOføåœß™ JgT`1‡*¿ÊÏѵ0Zuþ5¿|äŸø:ó´:0q|«·ß>Fαëyušøï Êòš­öÿêæê`Õ9:ÆZ­ÓÅø°‹ñmes {GÇÀ¬¼Ùïåù/œ<™ŸH2Aåï^nÕ\sŒµ‘s:ù¾)WŽs–²’t‘ Gïzë!ëõŒXþª6¿êz 5É‘ SÜm÷hò’Ȭ²ëWáÝ+Õ3+½t;nz¸Š…}scU ûVÚ‹ž"žN&ªØ ŠÉDiú†2s\/Öý9Þ_—O°« ¤„NRêRÝQa46ÔÛ\¬ÕUû4kÍÑ[çZ]hÈ'ɸéÌÃKM ì –»íð7?_Óò}Ú¸è½yŽ»‘|ܵ>D øÒ<4È鑼Aîͪºµr£eý77¾…ZEºXEMˆþ[v¥…³g@×!už’o‰faU1›Œ¾©“ž§cp~'gÔ` ÷KŠÖi’É m©[ªåxÇ–Ò-Bï°† ╸@·ê©Ê“™À˜º«4vGP$­á#æÐê¡*Ý ––|XªôÑÛW¨œÎñµu2ôøŒ Ü€SÁZõˆ&Lðiçü@ Ù3¾ÖrÒ0tŽÌ{¢€Ôûc„Úñl!;]·ZׯÖåj]¯ÚÑ[¬×€>vŽìÒò±S˜Ž5kµˆ¬I9ŽÌ )Úf‰šcÑ ËXò(…‘gì[™›£G‚÷aæ–(™±ƒäo½ÂÛbD::1Öb‡k¶áªÉÏB¨p`+*@k¬!|ñÞ¯ö¯Ìî•øàèê ÆÖý)ç¢:‚K65ó4^Ø!{WÎÚ`D=F¤·Ó›©-ak#í$mëß4ײgsûãÚD?Óþc+ªoÂû²ÿØ~Žÿú4Ÿgû¿ôǶÿø1«yü×8Žüõm=¯ÿ'ùðj÷í?<^ƒdT6‘6ÉaXJͼÁ½AêèUð+ƒXŽÑ ™íå;ðp+kúî+w_ÉÎfYš¬br’cj²²E S®k,rò©I¦ ã,3mR5®%MbÙͶcø¡šÂx‹˜Öi .§“Éhæ˜ep‰q GÊž ?#Ï€ï×Ëë°ËL”úòf2Êà€؉Éô¦L¦"ƒd6œj½tbú3¨2Â4ÁÄä%ûÀpLÎ<úý–SB¶+T¤¥…8‹Pí‹ù¡à{ÌßÅ9wÃÜB¹P#6\ ŒX6¹a§’Åf&¨ÜÄvšüuC‚Å?¸$ÏÞ¶ûZ”¸3}Ù‘s”.,ð馫Õ”wão`P@4 â‹§kštâè`#ÚŽÖbx¢ ðÆ™!f2š%Ô«¿ 5ƒlNqN¡ZnnçG”LPŒ@/Kã¯D¬“éðjh™€à”K èÞ) ±D[¦Êuå³)Ð.ŒOCRÎá$aá!š ¥  }³¹ìé4A˜°'[ÖÓòzãÔ$—°dPžÌ´nó®ìPJ³0M¨'2@M qÞÔ/J3#8‹™`)§VHQü T[¤-ÙI³ä‚ZL€w%uŠAÁü.Òh2NTÜk6ç$ƒt]âbleíñºƒ8h Ók¥1ÛöCãnq;è›(°¾1€ÚEå–F;ráØ‰šF5VûQzàßàèLõ¶.µIJ(J}R/Ë~¨ d¾¥’J…¨W€5uJð&q¾îy¥QEÛ ‡¨TCÐ`(#H-fÙ5$R=Ó=ŽŒãê÷Ø&ßabxÎƒÇ íß0ùÈy®-ÁÙ–1½%x£ÉÅ×u‚ów n*¡vï U†wVP»6Ô¥&ydÐâA‘À:]<מ¤ã1^”_¹Ôé®·‰3ŸŠlî -lŽçØc'ìPÑlõ²Ý36¦«ð­Ñì1sèyк¯½Ž”]³­p.R †E|È5±ñ«ÎR@AhAìX>$ Œ²öTYãs<„Ã,[Ac((Iög³ÉŰ?·Wj€W ˜qÙ 1 +53¹¼¬oÊ‚bu›/wŠ<­†²f·­g—´>)Ìe¦ÕÄû8C”ß(«¾RnÚi2Ï“«)lÞ˜-ç¿0Ô>Ù­#ÙÇm<ŸÀƒ)î “é ™VÅpݱÖl–ä­]zévHiFMž{ߟ]$Ì€ûX¸n>[¸>[¸Âí](QnuiÖ]bm£j‡ß_[)ä~@ÕøpÔûÏ’e-ý`S[|†‚ֻ̓6æ½:󄞟z1”9«ŠC”È}$Ù\̹XÙþupÑÅ9˜è¾ëts#ð¯`ÛÊxÒ 6–¿ë9†±÷¦ÿ¤6¶b{…xén~…T¸ú{[åêàõ2nŠ·òŸÞC>õl­›2 q[±Ä;xc=ŸL¾~M’[|uËRWv$ãËî”p舂íçv‚ß`ñFY¬äÁï¦sëlÕ'±˜±¤Ï)ÑY¼À0FL²´ë1ÕªÀ¥…cÓÂÃX…†JÎ,#^Àh¬qf…@lùβ[ePøvÚ©è7hæJ¯×¸ÅŠÕ^ó‹Ý ì lbÛ¾Ò6îý,>•¯ñ¹6ßÅ$fм9¨Œˆ˜o8h‚ÑEÄ$®%c‘5¶²²vW¶ÆS€EÁ*Ø1GåàpDz̀ý†îSÇ1  \™¸`ÚÁßÞýFFјF…`Vù@è½V“¾8KAÙÕðïjÓä—Ò°†~éW:` IS÷Iƒbc{ûú°Cê‹4~9óMp”z,t>;oY›INë;ÔÊò¸Õ—¥ðÊú<1f9ǶUíÊ3–&Ú+Wm]I‘^ÙUÓ!"w)N¤Üo_Éý8=ØÀŤñîâáÄè£)ÄÖsû‘‡ø1…«Ð˜N-+Giœ3öBPRµÍœ j¬™âצÐüý>Ïbÿtiœ?µ…Ï™²k~1ßæ«|ŸK Ú–1É Ͳ¡ŸÆ%‰ªA ­¤°—çle»µXÜ ¨˜óï1KØ\Á×›Î'W É‘IÀϲçé°°*²xf,†sÁFIPr o»–5*˜‘´“Á|ïßÍŒeš´ÍA¹t̶1¯”%žLÅÍdši,t1B $Ýw(ÍهюW¬Ò;©Åjïª|ËcšCÚ mÞ¤¬îøžJVXËmsœ™™õ)Ó„g‹_ÃÄ·Ñ$÷fiö&?¶¼‡ÞQaŒU:p.–£Vò¬<ôŽ'ãš\UÊÔ êôm¬–Q¨&ÏuÆïpá†{Ù} ܶçàgq®b•Ù:] <ú9¤_\›f¸€çÓþâm—:µÃ²g€†¿åÒü÷©èLÈj•‘YV[nq„áøbšôg¾BờǢèÁAœ¹ƒ ^+vi* >­ýD~ô¼ìK~´aÉ¿EI1+¤?W¯­£æIôòvC»ÉŒq¼júsQŠªQÙ^€%ö¸/³%+™0°<)u Ã¡ d§E¨z©éJmÇàŒ<Ѝ·)=²)ŠÚHh€b™˜¬b ñc&uâÀñœØ6§­OMl ç“»ÔFæ~³«Á´ÆlôÏVß›!PECDÞöôŽ#;¨©Í~”‹Š¶ÏüójûªÞ†0ûêíjÅߌ‡‡µ(Ç’RŽÙ^»ìmÁþÆ{3e,ߤâj‘βu:ö/¼]ѼÛÖYÒbFé/Y±A4Šc¹QyiK'ïöÛí² Ûd?ÊDÓC„ãýáH‘‰‚¡¯äñÕ6ò:Z·Ìì™ùº°ÇJ§´Ô"\dÊ—ÁC™r¸£Þ±í:2üMMš {P‘Â:öñ¨¢+bàQh§´w[hAͯ‡ÓAqç p“ÔYãM£‡a );̳YDÛDãu ÈÙFãb¤†wD‡ÖPAlï?A’ËØKK@m¶2ÅÙû©òlŠËÏH#öiαøCD‡[†¼å¬Â³[ !Ë$âÂP«°Ml¤Y$4Àý(M…˜-¹äwžÀº7D6 ®¦‰†V&¶6áøÁ›p¼® YÛ0)u‹ÚÛ¥- ‰Vä€RV†D@€{Ê[£O1ûÈÓ·„¦ ˆ kràô›ì8yA°'~uh÷‚,Bfj†£úÎÔ¬) €¤ª‡khîYY× G‡mq2–Š)¼™°'¤“̱nJ±LØrµÉ÷4-Ô9¹Jeÿˆñ°à¨³X!ñTǽ~q%_M'‹ÛÙ+aíJô(oqäîôUk¹¢·úX»¡É¥:´Gdïùl„ës¸h‹;CÕ9 ÓÉhIËâÖt˜8ô SŠxI¸RÃÖ.i´jä_ú—©Šƒ£·½hz HÜ;…øÇYжî˜\@¬ÆÙrÿC›.‡mÀ­r9í¶*o|8þlÈßÚÈ|Ät?äÅ\~6-·LË;ûTIE±SÏ6ŠÛ–¯dûmF¸4t´áwyy è(5L¼H/ig+ÔN¼¤¡ f\+ØÇ+ØBÎâ6 žÅšòÞ%ãDynIŽ ­Û½$gÌ›!çhi$yM’Œƒ ¥Ir²³gû,RÖÑö'÷,mñ¬$¤]¸‹± ïè@™1P¼% É Ø–S°™,ç§v”~gò­òB++lFpŸ"%פñ3Vƒ8Ž,”gÜ[†[ý¹“q ýÖ ‡üŸÐúäµx— « ‰ßš9íÊ Ï1#Å¢=iÁÓ‹zÊÞÄåä~w²êÓ*Û ôõD]R}]G|5š"5ذ™"wºÔð¶½P&?Úp§a.sLÃ’Ç$$ê@B]]gûœy-q´´[wsÛà×¢7iïÑÒ$§;j‘šxÀdK‚Ï(ÄF) HãÜ-¸ˆ?éšDKûÕ-²Gè²~‰ ’5¨Ð MARÁÀºX«å¯0¬:–.èœFM³D]z’£Ö0v“ÚPñ9X„7,:wyÈ|2‚…:F·µyŸ`ÄUâ?`ËÝ¿ G“ñoº#À ÷cáÂÄ`VpÅTC,H¼•eôn¬Zbñ.v¨èo­&©±/Ý7å6ûg· #·pb¹ù òª$Í^ÊA£Ÿ³å‹„¡í_J|… /Õ&¢À— Ó"S;euç;.óõ²|Àvæ« eÅê+±•¿âú÷W(Kø’/$ãÛ)¸{"5U¯´©uK†¶Aóžï“ÚlhtÍÓ‰c` ª«1·xÓÿšÐa¦3ìØ]õ¦C‰1ðF­·•±‚Àà=gþèÓã^ph.£ iK#Ù¢Öÿ¨Tã&0?j³FAú¹œ,Æhq±7cÛ'*™Ùw*¨P"s2€„ö5ÁÈ`£  yHòc¶8§íׯ£¬ìÖ |c)g:ÚÓ´ŽZ†s8v¬“òÐò’;Œ%‹jñ »;<{¦Áæöž<ÓŽö×iÅ3£çF2SN^ƒEBâ[\3âOÓ['T·êüHŽ&ÛÄÃØD)Om¢¯~Ó­}OêÕf®’ï>ÀF%¢xÃÔH¡¦»hªE®ùÒ®¨ùß]—Ÿx™b/£ö¿Ñ ¿¶¦Gð®çŽ@ö]_V˜”•f$8Ysž©Õ~ã:Ac´´e¥±SLÆ“ÅÕ5IÔñ€3‡E*°»:x Éþ¢é*F“¸ý¡Pw2› Ïm'/þœ0{"!º'_ÙòèCìgÿ3—úAá~”Ið·y u‰£™LJ”Ånp¸{ÀÂ…üÞôöNù?þpÀÈúÔ/°`jµ“À‹35O¡ÒSÕäÞ-žuã÷­wÐïñÌœ(ró& : ¤ØtxJN Ó3I… ¿‹Ü—ìØš©‹z%C¥Þ–(Rß–‚‘Э†á·¿…ÂÏKÀàJ°E 27ÛýÀÉyNK’s},YóD>‘…Ñf{j)k‹LR õÔyØÈ”¼ùMàà­•—~ý§ZŽAt¸ÛE}):< þV_ìä¯ùvøÔ)€çä¡›yFðMæÐºÉ„¶ u18Tw¢P!ÙÃ:hcÇùCž x.D¡k|˜çéÀ˜<¹›°ËØCÎì’a¦ˆÍD¡k~¸(&k›ÊÈbÕ˜Ÿ'‹™Ô)Q‚UÆ1NÎjˆf+D4êÀK“ŒMLÇi! ៨ÈãÍ‹×ÖwIj!yU¦ÔŒ£4†ïÍ: ³^·¶§'üŽVMˆÅR±SüF^¸¶^–m)F’Ò6We­aŒÆf#–ÕjYÝÿíc*óá/}F¬v#›³¢ó?·VÉÉíÜP±-Ð{ te£6Ÿ&ö•[Q¸4±½ M¨Ýþ½Ùí=ºð˜1†ÁôB·Ÿ9+Â@erO>¯À<êÆ<ÆIñM1=á?Z·*¶3ø"òA³ñ¦m‡°¨âºAÿG‰±ÈxÅÁʼnã¬Y2H‰×TÖ]"¯?_ Ø¿öYBN¾üÈ*Ö•Ñ.òZ‚´À´åÓC¼ÖM¨»Ç ¶=íÛ’,êݼìÄ;Ê‡Ž—ûͩר颰et‹!g%áóúòúÖ¦dþ{—rÀš‹tþX v1­ÚI5ï†i+ÔU¦Ú=Ír‹ÁR²Ø4{X“ÔKú䩊¡§é2¬ ¨ZϵI|lÇ#Â3˜„HÙ‡åóÛÞo* ÛAðO儬çä4VŠ1Æ–¡’ÒÄ}kÇÄNr=‚3øÁ*fÑzíÄR¾µº—ýáûsüÑ$Ûþ«©¯ªgÔ‰@çªâž|OÄ×1Ë.Æ^ø¡úsø!üüuÂå"ÖŽÔå‡?À öëßISú»ð#åz¨—C±pVÙÅL',@™)C>ÊN…s8Ææcè©?G×éÙë?V•‰$Æ”^ŠÀ%>××ÌÏ¡ö¢@¨=K'£ã\(ßMnÎvàŒŒZ „¯*Jµ2“1ÚPy8…2`eEÊ(BÎGtü¡Y: ¥_Tƒ“ Ã]À—<Ô⇆½Q¡A¬˜IY‘AÒVsY`´v(°e#Öafpäú¹ `䊂SÌS;8÷mî:Y³žXâÅ®ñuŽwTÜ0ysŸ)ò=ˆ„‡ =à‚^î_8Îin8O±Ôû[p>õÊE‚ Ü3œ ásd²ÚcÕ˜:FÚH"L óQ¦(³Àøñd‹b,]–.Íš*'¼‰³zÜRŒWÅ5p-ßôáiÍ…²¨p4e-Æ&̦U•¼ùÏâ‚¿gjNáyw™P'&Zç“ ŠrùG }’Útüü‘¥kÍâ*V.§qJsD¡|Åey™š]L‡çœÄ‰^Î ‡ b@ö Ð·Ã;‰nÈã'ÉXïh^¬ÁBûÊC¸cNŸÅ@µþó¾ÙŒ‚ \XØW©«þã¤N{ΜöcýuÞ48Éöß öªùÓr¤$BB&×ÛGI¶ÖÛos®5ô½oTÅ!?ùÑ´{=Н´z=0özswúzUœtºíeÞôºXN««:Óc´.ǧÞ$lÛ|loz¸étHÂÛ ŽàÙ©~§zY°€c¸ÁD .rd2©Ü¡²}Èêà¦?V¸½"Œ´Aª±“®q—ÿ¥îû—ÿ¥aƒYîò¿íN‘ÁæJ.ÿõâ.ÿLí˯bšÌÓ1žbÊoÇ™ÐCtõJjSYa)©Èµ^K™¶øÆ2,Ù¶e¿õÐf²~óÌ­6´3GÚ¸$eQ–•0Ž?§–su͸Zc±hCu$eÇä[PæÍC“{ß)1¹Ô ËÚt†¦ñ(”ׯjòÛ¿ÊKË1­Ù’äÐ×p_ãÐÜèÕÇóý‹;Q:ÞŒäYÀ ¼ÐþQ:ĬŠòÝ×.Ÿ¾„%À!!·påÜ¢”+›&¦…eÓVÛv+’ÕObÑ5b0ÒT©è?kú›’»É˜Ycb‚•÷€‚ (mØÏ'óùäæf2S.Uçù1=Ææ`ip$*º†‘¸ä«ÒB,ÎgÉÿ,’±ª¬ÆN§Uª‹ïËb1–X…Y¹àdèZ>bþW‚¡t3ŠCÒxØ/õGؤY_•.cÏ“dÆ<è5ÝqÍÈúT‡š±„ÿ–¥µ¯´Naºf#” è_ÜÐÌÃ/bvæ –4)º{@¡x‘’0P¬°D#‘©+(™uÐÖgŠÃ€,ºf`H- M®YÙ¢.Š%9…Ë+ÞðnçÛáŸÊ7x8B–4É^Œé¾"AÌ•²)½ÍÕ¬½Ô‰òÀlXÉ~ZuŠ”EÍþá„Ü~“äÖŠÉšeàJ)p"R„Û­Éô†CƒX'Å"¨kê5+‘1²ÄɲÕ*}qÎ)† ?+ðÏò4‘‚t³ÎÌhÉ¡IÞ§j2nR_ßÿ™:È^úÇþ®Y÷yR½d:¨‰_P ÷.Ô¨±û”$,íËfÂêú­[È?ì…w~û|©]¾ˆšuüo7„ÌvˆM\ :á€ùRAdGŠä"ÑÝJyj(ü¥R’àÞph±ø"Œh‡èk¶OD±*knêöf¶¡±ôÚ¡!>É@Ö¢{ EV¢Ále F÷¯?t-èçuÞ3ØAr2p/.ádg5@¹ò+Ãd <5¢í¢ƒnL^áýx(qq¶]OÐË¡ÊŨg'"„Sýð…UÂÔ:µ*9²¡ÕHgC‡ Ô{«±÷ª±÷vcïÓè§V=‹*+nñ,+x¼÷;;­î¾ÇË~´†e£€öw3ø^æqnxI û½e.ð´!ýËIr"]íÁôUÿc=}éˆ3 ÊQœ'LNúÑ¡åP2&›2í’›»gn{ûâ'u%ÓÞ•x1ɸ—¥»xDÔuu_iÊò³#ÓDÄúžddßžNýË“vÜ w>‡’È—Ñ€cháqÕýqq 96JržJJFf†È`2G˜ò6*2æüø£Íjîl†ÜR”ÛÂ[Ó%Cô§^}Qß÷Ñnò#uÁqr1P‚˜S@å;EÇk8]‰NBˆF% G63×E.*†5Ž`Ƚ¼(F¦I‘m'Rj·6Pz»Ö²ë ì×ià¶dKzjÇŽ"Ç °vì Š¾e³¯Ú²ÕFm›ÑÒT†—’²]&æri7 ÑnVçxZ”é-–@ÏB".&ÈLAWщð‹eÑ{Òqû¿–Âß®>Ú­>*W(gÑ Š5¦,4Њ7T{˜ZšÜe s×<›Q¿ ‰Êe ‡ôrj%È1B–Ô+‰,×ÃÍ%®‡-¹Æb‹ÑŒ‚7 wNÑâ*ûå!«ŒÜÓÍ\Ú”}瘠aµßËt_ÿõ¼Ç\ÿ¯ÍŸéÿµÕ7áýùm?ç~šÏ³ÿ×_úcûý˜Õ¿lýooGQÝ_ÿÑvô¼þŸâëÝ÷ÿÚ$aK%}oîaºwþJ±ðçÝCW¾[Ð/«¾ýÚ~Ylïv:¡cV$îõA@Æb5‡®ªôéêhv"líBó0ÛÈôÙÊóÂÂù•ßqbåוœ¢HjëŠX8:óÝ œÜ2V–àdxSBV`P¢/#¥}ƒºw77 Fhp6|­a¬3–©^¨€Xݪàûk|¿æ˜žlë‰ý¸Â˜‘h.húFš°`àa/a›ê TÌáþܱÒÜÀ ÎMÔGÿ¿þUfÍœŸÿ₪éqþ.6Ö Y娓ž`¨mc“>Â(·Èù¯Æ1šÌ¨OWtI ç*°”‡%´-½›Í9ëùüz1sú‹¸*‰&0Öëûk™*hïXgÿœÌκ¤Î ù=aW0¾üî/.F°XûcèÜô†c£X»“A‡’ùõ„¼©fÃ+7É“íá /Ò%šffïRÛ1™Œð¾_¢Š‚_'˜§yžiޤd L*FÊ2ìñÕœ’L¡6Ôÿ‡R­"õQéõ‡"5‹êu¢m2JXœ ¼…?‚éÀ3ÍN1 º×æd:¼R6EÝÞŒý ‘îh:–×­'!9óTu·˜ºßKê†.Š÷!ûØb)c{޵k*äcÌJÕŠ©¾[—€õq²N!T€¶/Ñ­ ]ÝôÿÙÒé{Å¿`wrLÇUpb ®ÑäfÉ{gDùä ”‚z²?g›9£ä'hy‹ç%éÖÇâÑŠuD(Ur¥²œDÇ‘—«‡wÅ3>…TÚ7½©jDc¾rÐ#'(ÓI[pÂ^5µ¯[ä&Áâé"2=ÁŠÍ!Áð¦pí!SÈG Õ~uO³é|{g‡°aãÚ¤þÖöå­±45F¿6ÅÒedr5¼ këéL5?tßíõZh+¾ÖŸ×†ÿwW9ùnàrÀÞ‹¤4œ]K ØÎپϭ ýFïH÷uX߇ó‹ëŒ£V¯‘ó6ž(‹@úwö‘C:Cd“%Nï »¿Ï.sÿ'·ÓÞûÒêñÁˆ&Op-n,o„á<ásdÆÀ%1¿Ë²=ÀÙ®åë M:OÆk±½™9ÀÏgG“Zo?œver;´ïä5ô^Ã…†«aûðç¦üÓM€—gŸv¢•­é>¼k5\ìðÚªòb‘¿êÙÒ»F«2Ù›£€+²ÿéà·ìi€+àŠø §ÜÉGù+†ßÇxm<>ÁŸ=Ÿ3v|LÅŽ D¯Å¿:úžØŸ9^6˜ýnw¿×†RxG¥æ»ûŸ1[`‹î¬­Î'´«ÞäEÀxŸ¾Q©ùHô‹?#þãúœ93~ ÃÐ=«)u gg2>p ÖêþG{ûÍmé°õH~¹íáût;÷Íã?Zð>8â^H†ƒêÊi'àq‚‘¢áj¥É-¥£[ÿx¢ý•´ñer'„ìzãvßyÑÕ+ø5È?)¬ŸmúmÇp—\Ü`ìX]jl]*ïl›6æ·^Kk$6¯ð¯5´õcÛJÚv\ÞÝý¸•B8ló"[ÿ§’¥›$b+-• 5ªWTÒFU$œʨI–dŽâÕÍã/„mI*œ³¬¢r´¯-™%5U~Ž7LWs¡™™cƒH`]K8Ú2q7·aš„YC†.®àòåÀ’Š.äá9¸®k/ù¿ÿ{ö¿ÿûÏÉ 'ãDò­TovM!JÎÑáun2ûu…—µÿ;Ö°vQ—Hp^•AkMÓ`‡iŸIí kÜiãF×Z†)Ï„g&‘‚LϵÆÍ:å% s;ŸJGZðê*žNÞ ìö©P¾lC¬ºpb§Y®‚?פ¹ZE[­•¬NUÌx”qF'÷$žz"5Þ¢#‡>R-º3€ù/S3 °®qî@ì!™`–êPÄ;0#ªk木õŒC?óWn8 ‘Í%´ìfëþY«‘´’Äà*ÌÆ ™¿± ÞAí5CBèß'CÌ„åÌÑr†bŽÅå܃׶Ã~¸–¦ÓM.…¯ÓetåÍydysè äô ÿ*‡q{ÛƒV€ƒ]Ι˜Á´Ìfätò»À`ÍH)ýkIÔ h qCÃok{Móa‚ÆM´û-Ô_£6uðÙaå"”Y¥èÿŽD­ÂÎy+¬TŸ9“f«UÈNo~lKo¦“:/ÚÕkžÜÚª;ÿvR†±DÞÉ ¡sCÍSÍMÝEMI«œcø%p"À"RùW…(Ä œ·|³&»ta 3w.te<µœrŸ]7Ì™âÌuCQ¸³Ås ¸fB¼y"KZãͰªvS@™Ðï­¿Ëæ«ŒuQfãÊ^Í9…2Ρԉ&wt}.îÕr¡æÑPg2‡ d2ï[WG­;GÉ9]4“+ZéU7¨¡[K”zcd¡uqÀ±‹¬ ~‰LšÞŸ¡Ø»OÚˆs2&——Ô¡ÊwTšXUMjctEEv'ù>HõpŸ†_ýT ïßY1Þè[“%‰„ý»ØH¹~®f×¼C?ŒóÚgÞÏB”)·=,(IÙ…®ìq­{”Ÿ¯ÉŠönÊLüôN_®…?‰7B²”ÔÏÖ,bMÝÔ·ŠÚÖù§µù®;¸•y'Ö’-úÍ~î1¾]ü×#­XÈyâc|û'ã¡à?ìocÈ-#‡½0Þ2„]O(¥¾µÎýó¶âÐÚË }$³j…Õ`Þk '!Ve&DŸ·›å\…X‰{E± !–±óYl„°8 UôsÇygºxà±.ÂwÕ{îYú#^Üï”:èÅÎzQð¸ËO|QäÐùç¾°Ž~-v ·Â¹'”9翸7 lÇíPàžâŒ€XÊ ì¤"ýx©Íó9±:S 2øf D&w lÿï4ƒ îÉ#ˆbl‚(Æ)ˆfa7;Ê’(Â2ˆÕ¹qÆAäò"}ÇAˆbL„Èä#¹ñ‹°„ªË:d²=2F`Š`sįñràð²’ybNu›Ít ˆ€Ê“ŽOºHÅ”ñf'$@°m‘‚¨%¹›€0"S³éHºŒV̳5õÌ«óV윣B“›,$eœ-[ÆÙb'ÅáRiÝåŠÊË–V^fß BbOåN¼±ªê2ŠrbÇäë.3·$ß©ÙîÅA¸RƒŠþ À°j4ÚõxI¬Ò“8ãZãëPy½¹½Ò¤JEªÓVË´•¥E%ª«¨/vÝc‹«å—mªdÏÝ=¥!‹ûÉÊV>¦Ò“¿[}åÇeÒØ•?Ãʼž »E³KcriãÜXQöº§ûëÎ;²t ld⤗Mбv”Jf×ÒK1ÕN€QrÖ+©~–pØK¹j­Êç¦WS!PŒ“ÆÉDàÚ6”6Üèâ‹ìŒÒ‚þ;¦àÓN}­ÕÑQ¾«ÊüÔó:±A§ÕmºŸ2RªŸ¬mQ©~\º£ ,ª9Ó”­ ä4 é·{Г0M×´«È:Eï6Q×<¢®$j§D&a¯¦Óô rí^„]K¯µ§¡lDÅÐ66³œº‰°ÐÐÔs¥^Ø>IûA9¹3µ’(CÙà‘TÝË¥9uT˜ú#ƒ0d]Á éCxÅ4®2†ƒÊ}úâq¹Š#olÇQæè6ï1º p¹ã“æAz„›ÅcË¢Å3Ñc©Z’ÉMq¹?A>mY÷϶;¿¤ˆ:Ê µ÷ø"êfˆMÍb]· ëJÆíµÇÀešÝͺ»6¹Ta\—mgrèËeÙŸÕ†«iílPÊ’n¤–‚n>CÊå óRˆirƒV.Îî+=pçó’’ ³äm¬Çɦw&—÷.ÈßиÅÖÚu½¥ì©ñõ$Ú†ÓØmê냥ýl–W6e¸ ½—ŸIXî_BS€,dIù³TX¦k¶h¤ùùçX>x³ŸcǪXÄöÞ—’ôöà¾ç”bÛ­NÉòÉן?ȇ±ÞùÐ[—ä»ÃhÉjúJê—¶ ;wßÔòÉ^¥ÂÖÄ`û0ãH§ÈðVt`Ô²¹r¥âòà!6Õ‚Çàj8yó–£MCL›p*íVXS±{,J1òÎû´Ê'×D(?¿L›QølÓÁã\ýU6²]Ø®xcMMý\ =øì§ÄŽã­f/EêjTL›vß;zmÚ*ro˜;qË„ Œhd#K΀µ} gè·>œ¡23£¿X[m³X‘µŽ‹v`m·Ž­âÎNÞ ŒI¦ìL Såp¦úÄ«´ÕÎ*H¿+i¯Á{€½À'-ñûy ]ø§‹cL%¤ÜO,Y#q"‘öFþî í6 Ë(4ÅõÜÃB™4’è ¦Êqý?ÅV¹€”M¬*h+ÈÚR]x°Ôè!Â9‰ÍL©ÑÃuzX>”áÚ}ŸÝtUŒ4¤ÌÅL‘Ó$oü"…\eÞγÝKô)–J?E1¨(,Å ß”.0™ ù¢ÓÂþ,~ò'› Ü~xbÖe¯"…•É¢ªeÜãy7”!¹Y!ò[Ònö‹ I°XA,ăåÁÙxyˆT8<ð€lXËMį‘Ïòù³ÚÇÍÿ¹õóF;ÑöNŒ‡æÿÜÜ~Îÿ÷$ŸçüŸéÿóǬþeë?Š7â-ýGõúóúŠäO¼üŸY)šnއUò~Æ¿vÖOr©o e~‚Ké¶æwVNà©Ù¦t‰=Š.›VVLÜ[‰;c“¸3–‰;1é½i¿>jâN“ú A¬–°“Jǵó»Z¬su"N×™R©IQ©T–ÎÊÂÊ8©S“x6)E˜N83èàìò.Õ…¼¬žª¹Ïi4›¨”˜2»§I÷Α9×éÿ‹†Sø*ªòqSMâ%7è5繩Í6Ì5ùYg •ØŒ›qy¥Ô‘©æ9u¤¿Q(O¤•ZÐ뛲@úG«¶ŸòIr>òþôs>:È_!Í£3â9_Îá‘“AOVú9YóœK)#û]`X:ÎIGÉÜB‰ÛlõDe\:#^Ë›C›uˆŠ¿Ù+*fÝ­­µÔ«Ò V”Þá<¬"QðÆ6{1k+c)R”iÄXò&;Rö<¶Üübd_£ŠK}r¬mo ·–4)Ë™¡¢¸Q(>î¡ikÍío::l*ûY0iÉ8m™°û£ïý»™÷:˜ÓDîwõEM>áY ªcÈî1ôƶ!zSyÃ6DÊ‚¨xj¹Í™`7‘ÊIƸ‰B¡œ„ÞË_«!­! ·„8®–ñV+¢QKç±óË!R2[Òœ©2m0^“DïæRqz¦IÁŠi9MîûGµe¦æ&˜ÔèҔ)žJ'Hv±"»8˜7çM¡àiµ4mY®²\*¨VAÓÞÔBÕ³™V$öô Sħâ:ÅLñ±¡øš Ð<‘ÊZZïVjeØdo“¼¡åtéØ^$¦kˆÞîc&ñ×4õ;Us£qÌÊ ¹…èö*æëš[±Z°švºiýñ‚5F~9Ç%6åd=ÊÎä»h½v’#Ý¡\¥_¢K×§^TÁ5é/ª´¥wìÔ–­íe ¥–/ÈœÕ\ˆ¦æ’5X`款–^±u·Ê¢ËYq¿ð ³-Mr4y[Ïš¼¿æÇÕÿmÿDýßÖæN} ĤÿÛŽŸåÿOòyÖÿý¥?¶þïǬþeëVÿÖ¦¿þ£­gýÿ“|xµûú¿í’h5>´?VEçþuIüµO*ÁOoá<Ü;:>Ø«Š7h6ž-ñk5¿ãýn»*Þµ>÷ºô»ñ 5ßÑoø»sÚα€8þp´h½=¢Ÿ]RP’àï„5`y]¡÷ÊÂ}Ýe}}ãßI{mü×}µ—jŠÔì#²Ãj®ÔTYdcZÑK¶°Ö&š½U¢á~C÷Jº›Tƒ"í•äW¾à÷ìn#•R™ì~7%<$Aóµ» 2SxIc*5»Ï²!|z+›û¤Ú5#Âq¥°¾—¸«æ=ùÔ$µìXkq··@KçC­Aeí¬xCúÞsTÊ0‘ß$Ó+¼TοOÄì¦?Aµ P;¾ƒS=áß}XVßÙ?¨5khÁ˜ÑNaKè|”܈ï×Ëk1Mþg1œ<-ÐCÙ" ýWÃäeøPàN—Pº7êök~/ûø(¡d)7Dhod¸ój£ÛjŒdZÙAÃã#¸0v(Vµƒæ¯ø i›êï¡C'áË(ЫŒá¨*®¡ÎHb˜®@xP9cñ µšé©ÀmgÌ9ƒõü©íÏäíö*í±JŽcQi8.ã÷ ýƒ~K¢B)Ì)©@i!΢J¥¿ûø=æïâœä#ŸzX.Ôˆ VR,›Ü°eåØÌu’;Ð× ÿà’߯û¶ûZ”¸3}Ù‘s¼/ðÛ§ü$ÿ!±àÝZÒ`Ô(Ûgœö$*þ†Rn³Ö´s´Æ“_b¦Ò”Ÿý™L'DÐÉh–P¯þ¦­á±Ü ZNnnçwè„„C:4c¢`æ[Góx£’km+û#M5cV¹^§3Ê@îê¿‘°ðõtxu=Ϥ% \Ü£ÉÅWí_EÏû³ù½ÒnP&¥˜9ªy¤Õ/>š¹ËŽ?½¥'ÀQÐÆÌnôð[2‚#^3I¯‹Ò¸žrÙÁCçäÛÑðb8ÝqíK˜(8ÈA°Õ€ß¤ÎÂ0¯&S ‚R»gÒšàû¡ëw•¸K§§¦€_:µÉåˆÕë¤uþ©qËÍŠõv•¡ ü»YŒæC¸¥‰bŠÔÉ’‘ð¬0uLªgÊâA¼… I6šÙ~L..„öÒФϽ2`TœpØqÙ2AíÄÐ$ kqÁ;>¨H«!;oéü2ÀÍ• ÝÈžæqgÝÇ!49ÁM/…Ä çE¡QRŒÕYE²Gðÿ Ž õË!=Ü‹‰¶Éï7`ÀRÞ%Ø?/ðd£QÑÃÝòº=D¬CF@ÜÛ™!núåìËiæÄBÞy2ÿž0Aè’¢^¹»LFçáÄ…s uç/§“~ºWĈXÀ £X©ÃKÜ ŒÉÜ"µ= Q»ÆF@«çD~e½€=ò•2¸H¯àÖÂQ¨°ìƒðãiø=$ :ÌâåRó’Z7ŠEâáüí!$Ôî}¡Z{ó:Á± Òñ‘•ÐæAQ,Ny€'Mú˜‰H¡1¯r©ÓÅ>S@l_"YCñ†–æV®û3oÀ‡e;Üòj-nÆöIír_)µKL»à§Øcþ0–çt³½‚; þ(»¦ZÚÙEl:`n£‰Mů:ù€,¡©Çžý1œsÇ2 Y ÜX`lo ïÌìFűÕ.Є·BÒÓ%> S¼ƒ£Ácg ",:ý(ÒdFCÅÐÌoÅ…“Ý^&ß®&ÃÞwî;GáÉÈ`ä0GË&#ƒuÌlǶuÌž‹£eØ{ƽ§‚ÿÐT„lAçŽ]±Ì˜ÒŸÍ&C:±é.AFÆ”á½Wâ­b¥f&——µâMÙÓ«Eˆ°Ì^•ì$°=º–µÈ6Ø}ЏYÌ™OâK,Å5˜&Ãñ<¹šÊˆ|¸+þñ_ d”'£oÈAõñT£µõdŠƒ˜L”)l=±7f `Bâ›–ôo$U95yNéþìBÊ€zìwÛņK™ÈÝCËâL”ˆ[’¼‰Åø^çl¹v½{b††Ë˜fakâ:røL<Ñûå¶öxÒÛ? H£j¥,ÙPvÛÛ’ºÛQ Ðl†H‰*i9ã¤/æÞíÏ4íÇKZ§8nÚžAZ@ðBsƒBeQm0ºH&Ý*«`ê‚©¯•¶•¾U¿´ó.— ʪo›TÕ)÷O{‡qª™át3†“Š,Âp0¥¢*w¼J>ï°Õ-µª"ú1[‹îƒ2ùiÙC–]^Vã†fÔ¼JÔUA±$ŠX8dNT=­,ð¶žu ìß_C·~­¶ÐFvÿ svÕŸž“N‰—746j: :G&Q²sª[x k /PGqK…\kAD~ïN õîäGõ®¸Ã‘Ø¡£Û´¸¢]/‡÷©CÕŽ®ŠJå\ŠbÙ dÑÛër1¢}ÈÞš0&Ø+ T&#tÔ†,ë§ÜŒ})ª×}”¡ à„“+¸¨íÀù»v¾¿O †n€Çu›jw² ™>X@g»É¸¸ÿ”b)Å-ÿ)òœ²â½¥\÷(Çwj?§ƒ1)¶éGƒ~ÃOéYÜúôö3þ<Ÿð/Ϩ¢—*¼XÅ9#í¾ëtÛÞîÿXÂKé‰V{ZÞÿÈè8ÐNŽÿAšÑv÷kHGRSº#ïVÅ—ý½@ƒ÷òØjï} ö=Óa‹ËP„{vÒz…ËŠ¢ ãÓ%W– vèI2åS[^ij¾Åà¤|ºcD: Žc§¾ë­svc׎\í º«Ü9B8iç0U!NUèæW¨ûJ,ru{K–ôuÓ‡Ä÷2„ÔÉ`¨pƒKjm«Z¶Å³·Ò«K¡1™äJâ7V—üV5?¦´›vàkbq,ë-#²Lçp+ÿš$·øê–Í1¤ö‚*ÞaA ‡¤(°7ÞNðÛTÝëÕ=QÞ5¦s‹ ÑÇ”¡‚Yâý 2‹Á\”R¤îЖ̫͢fe³¯h«…Ž…-P7|޹ÚúÙ=ÃWøTƒl~±áÁV…¥à¡v.~Ø § £¸&¦s¼©¨[®›äuåªt¼S1¹|³Ä*û²T“Òlha’E?o­ÄñiZ¶påнqê˜"†ú¢T -‰v> ·w@iô?Ô¹°+Gdf×ñb±ò _Ëß/ÔÞÌ/ßÈøëRmÛ ¡@6Ì­3ËšRj\ë6w² UX§î3Ù$½ ž3²ÒF™mÕ“#z²Ì‚P–f:4F\HFÎ_ÇÊØ+¥í¡¾q’%aŒm6HH}ƒD2òûZ† õœŽ¢±xÆ“!ŒïŒk+SK˜ìh|ÙSäuÿ€L“D2Â65¥ˆrV¸•·ÍÝU·Í“þ·Ä–ŸØÞu·|*ýŸ{ÈZ”$Ò"mVß"¸{Ö«à#Ì©»µ½œŽgî>•¹ºqU«%XÝ àñ4¹%u9JPh/…ͶTÚ´ÖÁX»‡ê˜8š~ ú¼VI2y ;µˆ—Šåï•ã´ýìôþqýv~™ø[ÏöÿOòyöÿùKlÿŸ³ú—­ÿz}s'ÿo+z^ÿOñáÕîûÿ,gÿÏ>KöNŸòœAHåø{¨8xJŒuœÃ½óg%> » ÝÃ诼ð?Íý§¤¿/sѱœ…Vñ"R–„¼|rÖ…öèyûÙ÷í5ã¸öä€9û¼²óÏ9íHÛòÛIXïæ›:Î'WlØKö:¬DPi»É~c± v‹€‚R5–eþN5XðEèFl2Þ1Æèý Èzý•²•‡Â¨®œL]+HKðv1‚›®§LçamßI£Oe7O²Mçí|H›Gè(n9ïÌCÈ6{»¸mvŽÇý¬³mÃ1=î_Pº×›ªëEdÊ­dª½ÄV0«]IœOÚžØëÞãZsÿcîÿ([n«Œï)˜˜yv¶*‘ÐQ¦_?P!ÏVŽ!ÜCò+™šLtØÊ¼ˆi9oÉ‹såºèÚòj=G›&ËHÜ…;Ÿö—_‰R§vX˜°ø —æ×¸iJ»Îdªì)ÈÂ…·z<Ó¼ Ì¢åÛ_ÞÏ D ãÌFÀ€£€¥•ìÈgîH·/ŸUÒàœÝÇt>0ºgãùÇ5žûù1f÷ÓÛûãgOï¿©9~áÙÍ7Ç´É=zœÉ= ™÷ÿh»þnÐ Ò¼üÒ½èÄÝÞi«9¯/pÖ¢O%ò¶‡»1úŸ–½ÍØß‚QO' ›Sùæø˜H­ým@Û´ÝÒ‹@ZŽçi¯¦¼»½HwøÃ{Èfùê@µ@˜S¿)d„ø„•/DØZ}<Õ|‹_Ú½ s™²6HsAÍšå1JU×Г,³²®PWŒ#‰Ë¯ÄÓO’ª¾ mŒßÓ©/¦6Dz8¯ÉKÝ3敳‹ Џobþ{, ŸJ×ýÑ¥66µûDfí\æ]龑­[â S@QtfùÞŸx[ö’ HßflǪkA¿F%(Ç -…'bè!þqiÑTñìÛò‹û¶äyp<û·,ñoÉÁγIöý{·Ü>z©yôƒ¬£γuó}²CPºOYü‡å… F àî ÒÆ7ÃDš¾çŸÇUßè×qwÿSUÆh-:yzŒ#L: ?sL¤÷Oªâàèm7VJ8Aß΢Àl5ÝýÐ˱‘Öà&Òž#ÔÆA?þGœÓ ·\ºÝgÛ쿌mvœêpÛìX·õ ÛìâF†rê(%=Í~džÅêYl÷$ÇÌPò±†¦<[ÀwÉ8Qð’µG l7¿—8£¯¡ò²&¯.&]¹S—Còg‘2 ®  ‘Æ­pd¸ÑâýÓ[¯¸±“FÅ¿—sÓHKÓjÓZËžù@ø ½±U•¾;ßÍ»¦÷JÆoUD€²šÐ´‘5—)I00{h†ä½,4EVÖž"Vx8Æ£Âŵ€‚ŸJj4ò…‚x#ÈùD‰-|Q<]k}éºÝ­ºÝ­N U)Dáôb©z –%FCýD*=ûLÊAbÒû3 —†#qwŽ6¹3nO”R¼¥§TwÇÂ*®[*wK°)Æ[†f‚eŽL™£T™Ítæu×8VZ·¨.ÇÒ 8’æ26¿ðVhÀÈlwò×JQ7#B¡K—ôDñ^jblø¯Ìè×[ÙnȘj¼ ú¨Ê¥£ÖHæ“_®ŒÝïñ &4 6âýÛÙp4ÿ¦ûÜNqß .Ì äåÏ㓊©Üdçí21Q–mtOGÈ‹ÅW¸ZÚaö ×µšÜ0ûòŠ)wÑ?k&µ"|0`(­ªõl%iMà{r³vØö;6(0´YA‰%5ƒá¥¼Žjðeí´äîê”Õï¸ Ü܎Ǝ¤Âþ;³‰ÐI$Ý;²ç× @Y`ÅW3 $ÜNÁÀݧ©z¥-(¨[2œZM|ŸÔfC#”ÖwAŒ@z5æoPÐg•ÜVÝ®zÓ¡¤e(J®ªèØFA`ðž5ôéq/´8—µ‡lq¦¸ÔƒDé¹ʽGAú¹œ,Ƙ_soÆB4*™Ùw*¨Pâx²Fƒö5Áè(zZKóäÆlqηr ²²[ÃUÑpr”Ô"mœÃ©d1Û‡–—×a,™êÈl—Ûâ}z»T>W°ó½'Ÿ«£ýuZñÌx¹!j•×Ò€eG´fÄŸnÊG«8w~ÔDäÊ­\ì¸P;±þ¶üÔ±€‡ãaŠp‘Ë?T÷žÐ–¢î ‡êú*$»·Bïl¤;ð)±K§ÄËÀµÁZädñ‘Ž\nÎ@— 1=8lÎàUïÑÜÎz08)%2yÃx(Z ~5aFs(f#EZ]›“?.’Û¹º o%&ƒJÁž­ •zÛ¹;GQˆ9RûÉ1*)ªxoP–º+¿×weïå‘yy¤_Fiéɲ­{‡zÓq¡k¼·E¼Y6`ì‚.¿dƒ´ášïþJÖÄŽ]‡7æ@@‡,S¤ ¿R/r½ÕÔ¡D+¾k0{wj‡FÚp¸É©iþ°8‰&жoÐEÓ•®“s@Tf«BvµËv,;xÞ.[„'ÛN Y‰\ü´sRÞÊIxjd‹ã´‹¼– -0mÉ¢z³y¦º£˜š³ˆ<Ú®¬!pQ¥³g¹˜w#> ±;ºQÓEØÄ‰Á‹!g%áÓ*qF²Ÿéþ1—>ãÚÖùeQéímlÁZî ן¸‚øÐÅ΢Œ¡z ª›P¶Ï€íËã½ÓñØPb¸³’ï†ï®¥HzÏÄ"—V8²+Y 8Äïü§9Ä»þß»?Ñÿ{s{{ck+ª×Ùÿ{çÙÿóI>ÏþßéíÿýcVÿÒüÑÆNjýG››Ïëÿ)>’‘ñü¿‹#¢ß¾ÌÔ|ÔMé9õâRæ€Ï5"7`%“é½JÂB9uK¼‹ÿ漄٠VON¸K¹›¤‹{8Ú œÜ?Ra¼L†w8•¢PëàØrœ(Hͽ.ZsÒZÍ|&BA×\2àå«ÐMñ€àJ:åùÜ*›ºY-8š;õqÝ:˜%(œuÁïsvÚ…TÞ…(0ˆµHq'‡U– 'Δ¨3OM¤ðÐL ŒÑ¥û~Ð…ç"årèú>ñë%±pY1-6×ÛªvÍ’aU€Kâ€l8Ì\˜„È´ÇêªDÅ tõ\ÚlÍF89£;X·p”¦›Øn!2[@c=úÿÐqlyŽüÏÝøÏö1z…¥1ÿ!ÈÿçÈ~Æü“Õù'üñ>»ŸxL¼çí½g¥‘úu\ݸbööÛÇë¥bbúoòïýÇôWi¢÷ Y¢N:ÝvžÓJ pº÷ò\v(¾YïG;°ü8¿”ÃÝRøÃJ‡™•^ºêÓõIúãbxñU†°Æ­OÙp9Ø;ÌPg+]–²Š‹\…# M´gBä+#—X1quV…ú*IÂDÕÐk_q˜7ü6fz½S·VÉI ËÚw¶˜’©·yU“ßþUÆðjŒ}­¦ ×p~²Ÿ'Ú¢õ1 ZÿâN”ÎáT$·ص_h5SW¥>êkûYt¨ï_\Ó.¢ÌßúâjÑŸà,ºÎÍ5¾?¼˜-ÎçS êUj ëñ¥ »}û‡þÖ@+<`è¯ØjÛNÅp1 cHn×ÿ?{ïÚÔF®5ŒžÏûWt=ç­Šñ…Ðm™<“©2ˆÁ8Ę]ûœr  ž›±M.óëßuÑ]ên›I&x&€»¥%iiiIZ×™>'ã9)«¯5õ—<³Ï9yÇË0³T bgx'æ3ÿd>Ÿ\]MÔÍáýp®O$”ŒíCãFâÿå#•–6¡a.t€CH‹`1vâC^÷W¢›±À*ÌÊÄ;C9Óh$ìì Ŭ›Qäˆ÷Ã1ÊU­ p°_Œ°ÿF@Yz{~>Ig|^¸Œ?¤ÆÈT‡š¹L¿ Îӳᕺûàôˆ'y­W± yV“FÉÔÐÌÁ/bvf¡–deª{@¡“…I<¢Š(}Y 78Fwä‘´ô9>ŽÑ<ócj¤ÐÖ)yÃàqJíŠ$\Â…&Vލ ÔÛÎV‹„á?¦é'<½M®çÃ+¾I`…áO$IKGðbL'feKDÆÞç¶³N`q`ð(ËÙ†w¼’ù´j1î[ÒM%˜UmaÌ‘ºÄØ™àH™iBÈxŽžVTŸðxÂOûiÒ–k&ˆºx\§Ç²]qñJM§,8¶àq7§øýï|E¿€ŸÎ:äÏ|À6ô‡µÅ0\øY†Úa`<œ¹$çÆ>†4ª½>´×|"ásÀü!ó/ÀÐ` Ã)G̤UM¹¯¡s1˜YÛv]k°–M):×Dƒ°·¯#ñù<Ȥ„ƶÔY¢}U! ä—ˆ”ó ÞIžÇÿ ¼[T…³b@Y^³“”®©6òQðÑ "gü]VÏV»Â&eΓ2×MWöýW¯©òÖ{Øö÷¥]¬,b[ÁißC˜@ßî×ìVÛëh[wþʘ;ÔÓÈbµ‚ê¦M¢W¹²Le,´Î‹LŸGòx°húŒŽº‡ŽFȧOp’0XíÊßo2ä,Þb.*WDbåOò*<‘™m<Ó®Z]OñH-‹ñj_·º¦¯ø¼fàÈæûá« ·ÕãºÆÊ³KÐØ_ɵãSËZXÿíÓdó ÌIG÷‚Ö¾³°7жò‰D”¹§“£ 5ëy-éK†²GÙ«m³xµ-ÞG´ñåI¸E'73:‰¢ ë$ÀöÖ´9<‹·ÐŠR—f›†˜†@¿n=§n'\w±‹!Ó"_þìúšÜžez/»ŒÄ&¬GTPº®Ì¶||fY>þL?ÿkÿ9øŽöŸëÍz $hÿÕ¨¯?Ú=ÈçÑþó—þ˜öŸ÷³ú óÿ4à?wý'õÇü?òáÕîÚ6µýçñaç¸ýŽ2r  V5‚Ÿ'hŸ?ÞôQî‘}²3­E߉ôŠ™™|²Á¨@:I§´)½µiiò¤õÙ¿>ß¡Y©ÎãsÂS*f—ã ‰°4]4O´Lóˆ¹è•„Ç¦Ž¨žfp[¶Z¶®4DËàõ¤ÈÚuÇKä#Aˆ´  À80NÌêoúæ·­fe…MgO(\Ô :"©=MÆÝ m¡]ëàìR(g›Rbmg¡@ ÂF %ã'o¬tü¦µÂ!A§é`$ÃÑkcÑ.&9–/d%À¢~U ÅqÃ/.Ôà Ÿ)‹ˆütÉ|wôa2WáŽ:±k {Ðâ‹èu ÿÞô‰‚ûdÚ:¿œ­¨ :a9EŸŒQP(¯G_]³Ò@r™¦Î¢”¥kÕü® *û•¶M¿\†gC»µb“Úl³¢oÍþ““üÇ(µ”íb™2Ìèð“›ø‡YAÜß«Á—áÕÍ••”JžÉ ì¬u ¦Ìz>M¥Q—ßÞ>çgv-Õ¨ 2 Ÿ‡rß\¡i–‚À[­E“ i:a¡<Ƭö›†ÛDЕÂLZñÿëƲP6u™yl¤æYxÊ)S©xª†±õ—ac雀2“]ÔâpNAÆ:™ƒˆ¬µÈì)£ºBöû4sšÉWeMy"ú—oSj[’žÈ³…kKÊ^c+’·Éx, R×€s"{{âd"I/LCÑ MæYª y3×¼c”~J¥ù> '°Âéýúƒ"„[«=hÐ)tyâÐlŒùTlÀ]vRVÕýo˜  yóð¦_.÷í¹ ³Ø{œŒŒ\ak=ÊSÌ& ªpœm»œ5ö²ïÈÈHÖ®Í/M$¸ 'cO jl)ÂP|@üxŒï¼éD+&ðÑŠž¿ˆ.F“É´4š|øÿ“¨Ô}Êô°²âXŒ/j0À‰‹{°˜Í¸;?K£N÷ñs¸¼  L¢°êîr_Ú¨V1Ùä”Ã×HŸ,äqóÏÈæüKhæˆôØó+\¾-Æ+h¨KE«ÎÀÝÞ9¹¡2 Ì …¦æÑqš*Ç9²t!ÞâŒl Íï½Ìm?Ãèü])¦i5-Î-? /‹¹ôV 6c1æÜb2Ä‘—g¶Y‹án˜-_BÑf°ÌTî̃ù^ãÉ,ýÌw°‘GÇÖ©ÿ¹”e%všeâ+#ÕK>Ê\ ¢ J˜La4I™®5^ünÈœ”3"â)¹Øa֘ÿóÓÌdRL8S@DsËȆ’‰å·Úv(¼!{Tƒ¸œçŸ|æšœ1ÎÌå´(F[ø `‚ø 缑â¬åÏ`b~p„(gZ>Ó’œ+1OY‡Œ;Z÷( cÆèÓ³•á霂ïúh¾( Ö¬¬?y¼î{Ñ)JæBtj<·èt»F%ŽkymIruIFC™‚nÅ —?Ÿ*Ã@ê¶Þô„7ð§×x6ï“%ÿxHWJ<® ŒC±™±+;sQÖi>¼bËÆ‘)VY[(Ým[—p [ôIwŽ-á®Vè­f4RÚÀ•U¢’¸’W`Ù”Í/ò2Ðfè‹%DÜ,wU½ÂôNNpÿ'8• JY6)ÔxÆá^Èù*^óO|xˆO»¯Z;ð -ªÈQ.GòLJ]ø‡Ú°7üC¤„ÚØÝþÛÂüO­öažjß÷ªœIʬQoDj‰nöèaï$.>,…¿–ܼ;bÝ\[ÄßÙm³ÑÖ›N;{†(C•’/Pý-þ}­ ñûµøÝ_ÈÏï§ð‰cvˆ°ê‹;ÆueÛß!]Ó ‚.THÊŸ]õ™_µ8ÓS¼)k}“;_sÙœMNb.&áJÀä!Õ@™g"Sh+S&*µÐß@êW-šébL%™vÆnYnfûp;0Ä“'Ò(¢+½MÖ¤Êxéœ,,%²×½4¥° Ô[? iveGî¸ Kø#¢ãPM8ÑÍÒytsy\¨GÆm¸ÓE¿ z^Q¡†‰Ù"‰Ð{ýœ²¿¯Ç§”š^âC•l{;22ÄõN,ÖÂ|m~ÕI¼y³kt‘„«ð¤¢rC1ǧ÷)¥Æà×Ñ@™ùþD­~ §Qì -e7Á¸ÐvŒƒ°Q¤‡U$Å«y’A,Æ“se ¥§uaÄ9ªr˜!QmNYoL‘½ 9ôZO&î›0^l¾ÂÒ’oé«ÄÞjy mGÏ£3Øà4eï;ºbu©nJi ¤‹ª€ÌtÀF…^°‚©†*tvŸGh¦äˆ2D µ‘ÑHFnƪcpÄSÛIœ±MþpzÊ+mË®½ÛÑ÷~Ö;Æ‚U­çUCâ†Ækð§YM<®8É=^·•ukj’#\(m¹8øQŽ.r‰xïè¨c¬±h9¦¬<ñTæNô÷Ó MÅèyæñ0 ¥po[ýäÏ˜Ê FW`mÄEÜ~É“_vU£þcÏð—k ' Ŷºɲ|¬ˆøÊ„w4êRŊ;`èø²÷GƒøŸA '%>¬SQ›1ÕE…†] Ê¡™ÎmHÆkØSÞ~ïUv'-@þ<ÙX~žU}Žñ_4ÓÎ1¤Ð9´Èã“]ª…šÉô"µ£.@p%ÎðH÷J"Õ£}³ÛRg{Á¸]” //»T€)z¨0øqÛÈùÈÉo/ößà…OœÅÛÞ—æÈâü@¹g^¹õòê/¯Þqä^€#çEʽ G.Ñ Ñ,¨3÷¾™3÷îƒ3÷øŸÃ™{Kqæ0eoYPí܆t¼†ý1pæÞ7qæžâ¬½[qf»>ñïÁ™Í™{ qfß}<”ñ¶ 'siM— CèÏW Ú͵¾ÊP¦›rïbú ³¾±i _Ñœ$É(G„wð«œX!-"‘NGÜËMÔÙÕ|ùAÇR4ÑÅùf:Eá7ßÎ:¦“µ@7>Ër7íìÚ»>ê8Š»V©Œœ ×\‚¡êIÙ=¾¦Q$fI«=‡ËO¼ÿºíî@~ÿ€¼ôDY÷žHÐ6¢ºÌ¢éýšDXæ ÉQps 2Ê¿REù·ª(ãÂfá̽œ¯yÛÁåñ}LÎ{µÀi 2¹í†v-’É—ã]àüE6#³X’!öÎaréj¢ÍFbá’ïEÊ@k·N¶ÛS.˜Ñä¶ø},~/|42Ftz±C„Hsˆ² þð“%n Âî1¯¶œÔ}=©ºrÂ{lëY¤“:óöñHšcÙ•Ø5iÑÞ³ã’àU;:È Ñßm1ücñûn ËçT…»ä,H o'_DBȉUÐü§eiº¿íÿÿ×ãÿ¿þèÿÿ0ŸGÿÿ_úcúÿßÏê/ÌÿÔX‡/®ÿÿú£ÿÿƒ|xµ»þÿ¯KÑÉQç•¡Zîn£6Ù¦fø™#Ðãmü½ý ™ ~|g}#ÔÚÆbûÛ/›½æ¶e<…ˆoCæOÂ[ •°Ï´mÍÒ²ýa¿zjÈr®ß ø·gÏ>;¾c§lÏw£gdy—êužku¾¯:Â(±—íd&ŸÓéJÀÍ´À[|4«ùêfÄÞ%¬Œg*+É mÏÓÙpšž¯FtNå¶àÑxÂÁaµ ‹×íÓ÷{×ìAùνfÛu´§¼äÌÓèÿZxÀ¡S^‰~rë3Ý_‰gÀÑÑJ83ö1»Æ¡†ÞÌSòV“.Å}×ç$¢ÌPµ­[ñAºb¢#XñMß©H.Óó‚ªÛn›¯¹ê¶Ó*ÑPšFÿÃÆ—8!ÑñÙ É1¿Q¦à[zR%žO‡ìý±Ç'“Z{‰‘±{22vSDÆ®þ²›ýUàWWÂaìt5:@ÉÈZ°¬ÓÉô#v£ ³ý¿u¶sŸ­ƒ&ÏΦÃë¹áJ¨¨bÀÈ<´£ªâ.eÃæY§þ Â3/R@™j(”É\WFa¶ÆþÌÐ8úµHãÿ4 LËp—ûó…ñõÉÍ“CI¨–táj®6RÕÜ~YNñ™>ñd¨<ÇØÚ!›3Šuaúš÷z~ñR·“y?ôôD Ð÷ £RÝ,Úyb¥´Ét“7,Q¤ñéîb¶w±š3mì0IXWøØK—Ah‰ M@]ƒzl¿*Ù¨„lÎX8سïb×Ïp³&»±.Ï‹t fõDtÀòÔÀ`!\?»½“±sñ‘Ñ…“Uªšƒ‡í;o‰†íUªÙ‡–AE!º+¡Î92‚èš]ú¶.Šö2œéZ`ZןÅi0ýŒ¾¢ê&õ`sŽ…2óým0N Íœ4a1ºGi`AVÔ4Ðx©"(ð‡ Ÿ¡ë^OS8/·ף!ßFð€c6É›É6x$Ýèúˆ7½+ØÅâ¨äùÉRß_¬I§ÏB|ƒ ÚŒ#è<‰1“Œ9ƒ“7¬'í-,sm–f7ïWðöa:¸Zeèš±èúÌab"7ÒØ3l•(ðÉ’ºVT’E§ï­EÓºð¼Nfs{b_[³Ú;QÛxxRE u.ÈÓÞ‰9¥ îETp)=¹ÝŒžäLèÕàK‰Õö'hezD.:Yt“Ý.˜.µ|¶ƒó¦+«¸6Þz¤[ƒ¿·ZŽÛÅ«qÛœ¹7q*¸ÀÌmßnæ¶XŠÛÆJ¬ê:™+Ñw̘ÙFÙ\ƒ§²<îMÀßmì‘'ó…)Ñ€Ã=÷ͼBˆNâÜ ÊI$$û—XÞ‰ÙΉ*Ò Rþ›k€Éóáæ`¦¤/Yn‹mágø;º]('EqîbÏ åÅÞŠz`=g³uœytXZW×r9ù ô?þjï°3Êê£ãr>Žâm±{ã2W{ím»¹Þ«~³/•óÇ'[ð“E²û°ÐD YOœ=„íãj„êúÃ6†ùìÞ‰#àV %¿^=ÿðëñióè–yþøè¾³;Á¯ýV–ÍåwØ|{ß¾Šâ«O¨ïh­…ƒ2v¨´sÿǨgÖèdÔHŒô,l““éyk÷ÄovŒD>Ÿ_Åó€„M!¿ÆºßÈv~ !Ô1Â"›tãÉTfODéI਱×÷jÅñÁˆ3«dÍÉšÛá驪ӹ*³º7ÁaŠy (™yn¶Ão»Ù»Š2³œE\lt6º™ØàB6*vä3ã´R84Ñóи䠺ޠ<ûng»‰4¯™Òj‘Êxléh¬ž+ÊbLÊ&±WÂíöÀ7øc÷‰8 ñ=‡kÕ&FÉVíR­Píx3ë%èë8¬u—»î˜hÙò•Ën¤!±Ñ©Ô^jõ%¡e–<.3sª"ÏòßÎA(æÏЮøS‰wÍÁùùcëê*vÞ‡Óô<@¯SÌôƒZ|¡Gáµ¾8.ƒK;Ê[Ý‘¿ÀeÝn)ëÐë®…ºB£q\ó={Í÷8Á >rÖüIÈ(d]ؼvˆºƒ„gÀF¨:HÜB&*,Hn1¶ìY¡A~—ÈC¨CßÛd@·[#Ÿ¯J. =ùÓóNIÃø°À03Ž»ÛÎfÅ&U†åTÆTð9žLç*/œ£ôB‘ä,—›aEåzäå£}3§ þÄ.¥- ›Ý\û tR9í„sl2•ã³Á˜ƒ³¢MÞ¬[˜ØÙb$Ç'hÙb¸Ÿ¢DC¸©8¹ëì2Öæ¼…þú༒x—!á5"ÜwŸëf÷3)ÍOÙ©G¸xýiËv < øÏƒëPÖÉh-¤D¼ùbOW¨ˆŒ=»í!"ëIJE‰NI(šp±Jø$ª‡Æ“À¾¯Ùn=öŒ«b<äO'„|mF˜ßýmòª±:/éïa?ÆÆr¯Z‡ÛþþíÿñZ£oÄlÿßx´ÿ}˜Ï£ýÿ/ý1íÿïgõ®ÿõØ[ÿI}íqý?ÄGœ>ûŽ@¦qXMŽ„)^Òvý˜qÏSØÚéÐÑågÌVøA‹@¾0º§0þî-mLßÎàþÂZm 1ùáiܸÈèdrANXÀ¹8)–c§-µ‘˜‘ÂŽ¾j•÷ÔlN b¥í·›¥Ð ³‚¸þ€ôè–ðU =XO‚ä°~‹æ³ ¶Ä1ófÎ\ê>cœÀojÀÊ^¦Ãí]GçÓtl¶Ô»ë–8€žÛqŸ%èK¦~³ó°¹@8ÿEif.8^1xi} çѤb “Šþi®E¼F…Â]EˆÜÆüc¸¬6ß’¸¥×ísXÍœ^îÝqA[ê¼Ú£¶«ÔÐmŒ T¸˜,6eQÅq Eí¿ô¨0Ë«½õ¥ÄE12§ø «©Âj½§\ çCVç`70¦CZ!Í¥ÒX.SÇøû+Ú†’Sl^â…ñ°'¢Bà Óî˜v=Ã$'ÖøÊj‘ð*æèNèm˜³ùôæÌðÞJÉ–­„ÕP90ñuØ)J¡Ü´6CÎû§H^&“þ >•ÙêLQ‚Ö‹®19ú¡Y¹è°‘ØÏ)~MÏ{NtŒ³‰À*¦dLã¸Ýa|ò7®aÆaµp.\³`yæIUÅ7»j/£ªÛS­öŠ»,\³`eu±êbŪ*h4K]+ˆ •©{Éš[ β€ <~ž#3êÿ2#Kþ“~OùO¼ol& LÉ6ïòy”ÿüÒCþsO«¿pýoÄðÐYÿI£þ¸þâëݑÿ`lM¶4åŒf°®¨‰j“æcð†[o¼1J³/ ù¹[–‰ÞÐ,q{Ë ˆvúÑp<œ1')i £+Ôq¥Mäpâ{ù‘TˆÂN<ÿÅÙR#ö^/ð_w“–_Pk-s¡ëN¾Çü•¶‡9¹^?3E:{(>:W‚ƒ®êéüY}Ž1棯–Q¥÷q!@Oš2}˜Pàö¡#ûÐ!K¤…ú@&wÕ‡WÒ¦úÑ<ìqÄ„ŠJ9¢뾤,˜ WÎ/´Oó²@µÿ² ·kÂeê³s©»@Ïð&8`/Rvó\m¥ä9“IJ$ÆAâ¿U‹ÁoZ¨)v–kV»aQšé:&ñìæ½ô¬½PóŒ>³“Pùì¹m•ÀqDLàü¥aõO¼L &ÿþbøû‹?k1ýùçï/ÆÕŒÚ@í?+\ÿ*\[Ù]ÏÏhÛ¨ WÇéêŸU{À”Dˆ sÞÒÒ!ñv& Ç¥«êX{ë5!Ï c9s1Ÿ^eH@ŸèWü;—Á-%Ûÿy|tÚa¿¥L±™€”áaãÙݧó—5Ù)fÉ™®Ó¿'ÃsÀޱ×h(<Ù°Œ‰4]éˆc¸I–Á< ´íãB:tÌ]"ÚÈqÖ"EýZVÙâ ÏVÌò$ 8#eäîRߎ”† îM#?4…•ªÈ´Ïæ\‡ ¡¥BK#-¡gò̬ÑlèPåîÖõ/ÔÿõPÿ7Br)Ç„Qvž‹#;;„}!°åˆã›ôrÓ&Dw:¸§lOFSx¶¹”ÔÎ!ìzüxKþ÷Wü=åñÚf¯×Éþ£þÿñ>ò¿_úcÈÿîiõ­ÿ8NîúÉãúˆ8úØò¿×1Ù±CB^ÀÖ°¤oŠÝ¨mi ÁB¿W³ñ0:LÿºQAÁ¢Îà3QÒ½¨;`_­Èvï'ÓÁ|2ýJ">(›btÎs´P¥s%$ ‰ sjå–È”)>»% UhzKã8Ž_ºÖ-#ÛtƒÑÞ&®ìë8/®ìL‘•^>¶wg~èØšz´Œ±ŠpE(†é%ÊÀ¢XT†ô¼ŸÑ`‹ŒëŠÁ܆ÓJ¨F7ãótzw5îÂ'þÂëØ2ŸQÖƒW„q -Ç0jãå8œéÜÇ=^P„”Gk°3 ~z°½¡ùÜEQÂh‡–ájÔ]•KffwºŠV/W«Ñ›É¨¶± O'«xC¾¾^âßâZR_#YPüÛo !ÐKÑçhxuÍ7å É‘Sßs ¤ÿiŽÝ"Œ7’Ãýu>‹š '¥#rcœoféÊÿTC±Z^„Í I™~\LCªyѳl, üâyЦ4³%ã/.0X5¨RüœÂ2:1kÞø5˜å¢*ÚÍ‹pŠðÞž|» YX¥(nEªuBSé·¿ãÛá…ŠÌ1d‰ð° Kªºœ£ŽGħâÉÑ þ¡p rAaŠE‰`_º çÄb®°¡Ðv4ˆ®åêâØZ0 ;^uXû2ÅÙûÑäì#ÎÂ;R_ÈYþ ðhY_+wôÂKáZÔ ¡ðçKèo4šL®W¼V뀑tz53ƒî_…wB6—º6uæ*G¡–K"Àš² »š `ÿcÔc–Ž£4´ÙÊOÚê. 1)lYfgvŽÐ~»Ùsæqs—cUµ÷ůp„¦e£Va^CV•ð¯íÿ~-¾÷ú·Œ^À;Ü~™Ó~ÿí²ñæÖ±°.=~ÝëßJLîÄ©*ŽÚdØæù1{^ÇÅ1{tt¨ —zNa?¼BKZ&JòÛb-ûq5”kz"AÑá2™(õ–I˜NlùúŸ_úcêîgõ­ÿzc}- ÿÙ|\ÿñ§:GÿÃ'ŽwjŸe>jŸûVû¼[ZÇ“hZ€R²á›ÒñpúëÕUŠænZXÉ:– ´…GWQO<˜Í&gCö‘ ˆn çÂìíTç O£³¤â‡´J÷³°â‡‘ПD@ "|ÝH*B¸ƒìëg"„Eu(ÑB¸ x!3-í×ìæ½N;ð®”TÕjuuuEº À8Î •Çb¼n½Ÿ|J…ºIkÛÞ•âj½ºN`Y§eöoË'ÑdZEùÂ×É ª‰.ÒiUâOO°YMg‹uë!P´´PÇ}Ï%)PÐŒÑäÃðŒDåÓ! ×€GîìÀÝG@âàÒ`‚>g—T_²‘u4LÓ´¶¹Þˆ`ž(™d®ìZŒŸ¦2‡ÇÌý/á]÷aÖ†c¢Ç¡PÇuÝç†p"U#‚ #²‡¾^É2½Ñ˜êßU£õ΀\¤ä‰e+Z„TôËÉè|f­½U­ˆ‘Yµbs—Êj .'裪ÈoàjNŽñª%¬R‘œCLÌ‚°.TÜ£%̱¢aRPùAùºD)5­7ã¹êSÃÄï¶ÚoŽŸvÛÝÿ/±zµn„å‡áBpÿ0}Ûg—à ´ÅT¢¬ãY0yÊbJ(_óÄ[ï!ØY[åhYuM†>+ðØ©ÏlYêÿ¬1ý„”_܈S]6Y–㵵ʟêU‘}«Žì®”dËjÉîRMv+=Ù"ÑU"¡”z#8ÞìyÔ^{Þ]3ضĜne–~ zA,ª,³bP®R™î—- P¶Õ„Åk¯GJî4ÙßéŒ#fçÀB0?-qç‹äoGQi0"eGÞ§óϘ”ŠóÆÒóä{©··ÚM3:¨¤”Åp5ƒ™ PŠY^6;»ÕèU¶Æþ)|ß}uÒƒ§'ÝV¯•׎©d(ôm¿4ê¾ ÉtåG“Yã†á[C¤ ”µ¥UœGÜûsN½Ð`»!„ ð먋_`Àðóôe»Ó¿·ªÑA΀H/Ú`Ý­öEþz?w›ææè¨uú€æþ¿v²§¥UZxP¯µsŒÀZü~Æü ØL«›Ó›Äbl‡4 ”¹ñU§µƒŠ²×ø.ÎkÖöÚŠ_ÀޤyR¥P3ðóU'¼…~ô{ÍmèË»¬”>Ë*Œéxôªá5tš;Ý7ÙT¤:æúÕûP!þ±K·Ð&3,ñÛI$7å™,‡[ÎÙíhø\-T’K²ð%KI}wŠ, (ðÊOBŠ‚çð u6¦š¥@7n¨€ºñä‰ÉøÎõâ†#SŒöŠ1áÙ ÊÿŽ”p8” ÕP²È-á*‰‚” ;ž:ž`Ǔ̎'FÇ)·<«/8˜¥‡âöÞ€hwÚf~˸Çp9ë1?âwnhëwÒ •Q(³nÔ*1ü‡Õš5î)¼-}º‹Žp³-cú†]}]©ˆ&V"«Ê±aY6=B¡ÀW;;«ýŒ€ëa0¥¨_aï°‚’þbðÚÁš™…á ˆ©,þȘæ’ÞaX 1™S¬ZƒÈQ3ÞÏñÄg½Ø/ä0'çÁe WtÃí‡.ddÀ7xVà –ddA5ø;Go-ZaæË]Ïð `—zç=i9`\m8¶H¥;Ù €Gï‹q„Jg+΄Üg8¨,È`E¼¤9·íƒC7ˆÑ…5JDíŽxn·-扌\èð&êZµy~ÉO”}ŽEš>$O—õ-‰$Ë*Óìf"ÑÆ (]¸ÿ&EKÃÛ 9ˆQD ܰ†ÒëNÝÚç_mC§L#'¶O:ù“‹©â¥W>ýNŠ,9Ls©ws)cŒÖÆ”gFErÆÀÈÉð ¹=nª–9v«#vʳ`_Ô[«ùÏ—)‰X2IâY<„â=ïëd“‡ÜU¿>y!NáÀhá:¦iëI÷ ½À´ÀÍ¡´Kg3JÇõåõEÕ¨/Ú=øO?ן¢Vé¿fOÒØ¯«ýÞÉÎ*¥ºD2š-œµQš9"¯ >'“œ]€›M®X30O)m7ÊÇ…NäëuÅ,h?ŸÜ¼·@œMÎ g(Z1&ѳºÛ^@_/E!ÜøƒØf FxÍê½{Qú+®þÿRøþý•À·¤šÂÿðo¥þŽý-‚r—Pfï˜ü‘DîI@¼\¼·INMµ«3|_¸Á·×ŒÈ¤]übä LQe*ŒËÎkBØ=¼ˆ>væf-\$u)¿Cx{­&»$§¯>k<ê6PÚ;d{­Ò]3—²0ã÷(›Hd)ÞKºh¤‚ÆBcíF-pŒå§¢´ZË(¦_á9ãëf¶8óS»•õìVÖ­V‚flnŠ?Žv%³gÈ$Pði8@?!:öt†pþÁE¢çæè(â\‡ ³ÏôéÄ Á]ÇùªÙñ!ä|ñ4ËD‘Nø³fÏ‹Ø#1t°†#}¹•qº6QX³¹¦ÕÁÀä…ÕViès‹ŽÔ­Šn&û½ž™¦}5¸ž±^òÝ»èzt3 ¡=2˜ˆ"À©}†iYï<|oô¯0í¢>@ƒI€1ogƒ¹ÞñÌø-g—lŠÎ„yÇLufe‰IY•,Æl›÷1ªæŠáÌÚª‚QɸGöʯðõÈR4Z‰¿²ÇTĸ[þ›M‡àb‡ÊÆlzó»×rê¶Šê.˜ÁÓµîÕ·£ÁØ»m ½k¬;ùŒ;öyô×Õà‹µ¢äõLl2.òE|µjjÈü*¸íbküµF_­¡OËEŒb3“MÓkÔ¿à bŸ§_æ†þ?°ºO¬8¦~àÃgS|ÁㇳT)Å)ªÄm…8ƒ$Iº!u$é¸s_EI¹óˆÔåΣØ”¸ö"¯b¿y¢©ªJtÖ]R½DµŠˆŸµ×"+_Œ¬”Ò9¤bš­“\nMæ·–úÞ«¨õ7­Ô¾§¤òc½ê Ù%Ì.Ós8,Ff©RwÍT>³zsÂ> M<Œ›ñ•P‘†j;C+›2œ4§“+aÃ2Sö\âì„Y )=ë‡ÁÜpÈ4èõwã…Sv0 ÷Ï­äqY¬&מÅdC9’Åo¶üɽßògÁ[®.œ× ´8æªv·ÝìºÀ‚íº—³ÝÂû¶×îú¢íf·ê¶™]TÐmÆÉš.$Ýâ çGp¨•†R€†@+ì·‰g=;æ#/¨1J6wAÆ\럾*%âÙR¿$xûŠ{g%8¼¨-{Õ°›b.GÇàëáøCUtéÁdüaÕ)šàþ><p<4ã ¯±&Y›¡ƒÍÍ?ÙûT™Äy–Zl&Ç©°èþÍYáÎÓ a@|s=‘&˜hE‡gßàkv9¹“zÿ=™¢lÕIö,Ðõúš<³:—yX× qlÝÇV¨áñ$æûÈ/<$¶ßuëðÉó«>{gØùà#œ.£“É9‡Š™ÍÓk7ÿ²öά—èH…‡„wlŽÓ2ÍY„™ o§l³¾HÓ`È6ˆí{ج˜®"û2ÃÉDö9{dIc\øc^˜\¤Àyœ¶4Na~)17KÅ8Q7È]dà±íob3ÞY­g±ú]uÄ3d%tAÕ~hdÆ[UàxæÆˆ†Q´}{Ùøã\}Ìݖ8e°N6zÒÅ‚…žëÖ>%„Oõ¬M*2ΙưõÆ”…,…2GU€0§29ª‘YTbØ9¢9_ì4šù˜’YÐD5 ïQXÖãöÈ=꺊Ìp½Ãn~-Õaª'Íã,qH )u&«¯Y/‚ÛŒ‚J^7õ»UˆŠp_…èÜMs[ñNHp¥€qF¸åHÝmó›ãŸvfø Í“G$Êðµ. »þ¯ `ãº3+‚1W¿Ñå/º4sLåédÃîØù@͹ I ¶b¿oïI ¦SvËåÄ-ÎçU¶û+³íizN|­äù¹ãØþÿõïèÿoåÿ®¯¯?úÿ>ÈçÑÿÿ—þ˜þÿ÷³ú‹Ö²ÇuwýÇõGÿÿùðjwýÿŠ;m¹($ÁcPÐþ `ÖÚZq",ý”A nç¼Å´»æù\©¢ïf•ëVexOíåúFQ`GáÕ0è{3E_f‘n&ü,ÙM™½´0@ï ìþ£ˆ¥ßºð]À_½Íĵk—²ãTºù›Užfz9Âv*²»•nßõ°Ïº˜£Åºrtô ¿ …ñÅ­d‘)˵„ÁR8 Ûâ^‚%ù- á¹áQîäÏ;dG-m* ë±ä*³Þ1_š…ïÍŒ½v¥Û¯pö•] “€PøsÆ9´"FP)®XF0H€”™ðpðÅÅ_’Þè¶™ãOÒED…9БX*4_óÉ$z?ü óÙqv!HÚé[v/É V>~"Ã_Y—,}õÈc5WÙhð¨ƒJ¢‡ Ðý= ùt><‹JN<ŠuéÍÆ7ÅËà˜ð‚Æ aų*ß'yïÍpÁ÷qÁû$÷ý^”Ÿm~²ß‹Oÿ2¥o¹„A\Éjšg’¼ÎŸRŽ$bdé~Î\Û òñB}Òë÷|gôeÝÐ }MÖ}¿ôì}<²\Öm¿ôoñDWȹ|¿Çrïz„sômö¸VÎÖä{gnÔ i{]üÞXÄzñÛCÝqû¸Ûìæt‹Þߟõm£q㬡tvqOç=˜¹ †Û‘ܲEÛqH˜®¬µ&ëÿDŽš6¡³ ±Ê5Qf‰]aDEæÕ^]²Ó0ô'BcÍé½ôÝA«BÌêÀf£á‡!ÅaŠ ‰¹íEçßn—Ì´öú¬†x~ÃŽ®‘3¿#ã݆Q•o†z\FII¥¦Ó†ë˜1µlì3bê,¥™ƒ#‰‡‘$ Cz¬(ýf ”\9Xyæa%Näº@K#·iíQ-Ñë()…C/ÕõÊ×›þëMz-·Kåˆv–v=¥zÍ ¤Šg…W7»_6Útý‚ó=¦sÀxûÐNÔ¾ikNwt¢võ„}s†´µ*JÍ>lú(3'¹šd¹ú6m2qž·FE/²–gâ/ψü\n­l‘X&*Ê‘õ²Îa-a[§"0Ϧ­Äs s½Éï1Ê$7 Y%ç[æ‰$¸‹Ûßi£°ý =zaX…e–4Þf˜¡YÍ…]Kö]ƒ»Ì’ÆÛEš Ø‹¨vs;;ûíÍe4æ6.g¼5šÚ(´ ek ÄF¶¯“$05jIƒaüO³0}µŠ ¤_™Z¹›Óºç´i†ðÓ¡_¸ ²á£æ5Â͇~¡õ}æ›ÁíáfØöäF@xÔE:Í~&f²sŽØhYòñ6ö›¶¬W.‚¼Óô³›]IïJ"e‚7yþF™J†{!'“éê:–éš1”í j>Rærx~žŽQ÷ ¢š´lÛ]·Oíñ­ µBN% =yÈñ»‡b)¹‹ŽÓQz6‡Î}¦ç,þþÊÂoÛ2V8wñoÏU‹È­%¡@JðÙ¥(”Ñüóð,]ŽFƒ¯(Ÿ .ìÐJ¢ƒ!O'5¸<:ŠP4>O¥Œ5ڜϢôËY:‘äÕæf“%ü]i±©4NÉ‚o¾6 ’þxü®E±ÝS§CœpHõ¨5D…ÒD#Ü’î”QÍ’Û¨a¶ænb×wìÿ–¼ŸgË'ô%8xKϵ߫¯Æö{I…äy;l¡G¶yD›$£)¾€QÞw1·k†uc´ËšN¾ …' Ë8£zcb­ÖC7”³D§4:×S®§é§áä³Ò ÆHÁW ›ÑeZÑeÑeVȰ[Òt®Ðr.³ýƒ9Á+4JËÍt£L¹`´ÊÖÃ6a;í½þÎqß²n […eš¶±åÒ¢•ª(]Ýœã¤c²et 5-œ¾-Í–”ŽI¨]w¶4ÔóRwÅ´ŽÊ,U‹U¹$·\²bZCeXûQ~£¡H³#Le)³É¶jólÆö JÌ0Ü3’' x}ªT3®±+b û* Æ6´jˆöËn²Ý=îcü©ßžÆßÙ@ {R¥_ ÿ’—as-ÑñµÕõ:Y=QM¶ˆŠóÓxp.Ydë%¬¼ú/Û½–4öbû¯eL¾<#/‚Gêõz~gµ=Õ´­ÇK[r¯Æa 6ëæ®7aB·`n·pl⣘~ƒã;0”ú).Ó4¤úÈg‰Ÿ¥ }£7Åòàýl2BZµQF’CLÓ3X¸\“Â[IËá»gB"ÂZËò²–BcÓ½6/:±RfÛHµ)[Bw-$<žX)ÌØ°Ë‰°¡†@€‘“•€þnd0Ia ×,›uf-eó‰j+q*mz•~ó*5ÇCAwdúÛƒ 1¡ ªîŠñÝA *{˜‘ýAÚFI+m›5ìL¿”‰¸Å±¬âh½ä£­`bÕâ”[è’0Š?嬔·¼FÁ BpâÊVÀP! ×CpwòÑV¦"6"r«[ÃV¹÷ë¹YD±š#PW-‹EÇyœ-‚&»+{æ§XгŠúš4e {y€H;\…*5¯|CÇbïX!õæ- âŠxEø-¶gus¬”]6×Òh1VQ-z¯šIþ¼iÞØ7ùDýnÜCõÙÒ|ƒMÒ–êÓEë˜.’Ão ’Ÿ®†Žyí#ÕFIYôÇu&&¬± c¢©{ÒP˜Èê•eèiÎk¸¹PÓÆ$üfLBŽ£qg½GãMuN9›Êvðv=¦Áf(2NÅ…·ýNíÖa ~T"ŸÕrj ÊÓ•‘·¡“áèÛ[‰ÖÒ†çB[¨C.îw%²Âý¨ ’Ao3?[IY|êC[M¢o"jñ¹-:2²…Ô¢ÃùÅ?—˜8#r[aD7Ù]º'”›‰O=½Á×Qй•ÿº™Ì‡xa›¦³áù š)œi€NÄÖÝç«KåÈEay ‹>ß49ˆ#𢌱mÓ]~^ø9Ëx„n†±ùuÏpAòøuë±ÃàH"¼Ì" é2òv[Ía‹DÐaÖcðÊ ç•ä’6±iþ(,Ì·•ï««ŒñC»`)ð`ŽpvÑ&ã$€6ÊnÅ<´YÑI³‰3ë&7 X…p3bŒ™íæÝ³´Æ#KËCL=ƒu5–fiæ'ÇŽî~.¿ZšY›Ä‚6ª@ñVˆ'Xnвê&MÔ€žpÕ‡¯_Ø7´Z¡³2÷p/+K?Ë'l¹¢†Î*ŸËª%ý3³bÂÿrk{”ò"™I L¿›‰Â£?ofs}§Nf©Ò\tY~M· ’ØúFdÖíW_ˆ{¯‰‚·ìMú,sÏÙô£o;±Gßšà‰?°æÕ¦’Êg¦à·œÇÎx½nxqרßxa0Ó±äqÐf ‘ÅúÄðs_˜ë1_ey‚C"¿ öÆbvq•˜ò­ Þf"j=ä ï`H…˜«y²Š¦ÁÄŠ#ƒ/»Å„¬FÉX`ãÍy®|¦ÜÌÚ}Í«{3¼ˆdÕeúj k<¼Ó2_fX„ س³cˆCÿæ.Xû4è¯[BÚ9¶ã0'0îÓ 1¾$ÈøúŸ3™Šé%lÓ`z ³®X¤Sƒ Qq?& 46ÖÜ©ãûFáQÇkš5 eTøÌc€›·d€?,§ÛŠ%{ËänŒ…Í#{vWÜ-Y„»ù’p¬ÔBGNS®ÎÒ_Ôþc‘AFè‚Ó /ÉX½¦ó€kÿ®YI‡3Y1ÜØÒEÅ(óL.ÖµÎÍg’rn3º£rnvMRëd<ŒF̼Qò…9òl50±e+i½ŒÍd+R÷e`1dÔ´ÆLÓä@ð UÈèÄNäf‘3¶'¦åÈ¢R‡´Ž’J"ÃÉqQ“¸ÍŠ´ ¹µ¨«‚;yiC@V>É.¸ ±6n‰‚øÎQB@¼<ÌÜTŽK±ÁŒíVÁ-f…õ{`…¤=ÊKÙÍŸ°N#ÃÀÔ™ä°ecYf͆ªS³•?!¢/A“ð…˜L0ñݾŠ5V_Žë6îœëÞÛ™ŒÕ\36c/˜£Ä™£úCΑŽy×ø§2xv 8LòÀzoÒoÍ"£[oîdÿ€‡@müQ{‹ hÄš’­`Óg7ÃÍá²ÑH®™£[ÿá$Ùú¿Gÿ·ñ(ÿÏ£þï—þ˜ú¿ûYýÅú?LJæêÿêúÿùðjwõ Ç[ÔR6÷£•)J¿Å>J¿laôݨõ\£·áiô¢G*HÿB7´ù$ú;NV,5Öv5}Ÿ‡óKœ¯yÊr(`0ÜÌTUÂ4Њ¨Z~ÔìÝ­fïQK÷PZºGÝš¡[;nîæéؾ!yV8g×Ý$ÅzUã&2ÒdÁ5!®x5èLY «ü¤®¡ó“O¤¶Ïìj–,z \¦Ú¶•Öõ\4/:xdI[‘,Éq†œ±å>—xráé@ç4eXxSˆ¡ãû›SXÖc“M'9§Î2ºÉEÕŠZç°ærÂûɽÝz8¿I¾$¸@TÏ RGlKì–Ћfˆç³ˆ·¾ñJ¡{.ù†ÑwB¾&ÒÐ%ߺI¾Ébä[ !^T¹»4ùÞV¯Q Ô¸7òÕZŒ$HÀ¶þ"¬¼ˆóvT½EŽÒ"G¬¾€ºb1NžÅÃ}Eƒ'äÆ"†$Ü#ý Ñ3¬¸v&¿fÞ@LbE‚ÜÚSx„.†Žh5ߨ¬ë¾Uý6¹YxÏÖÚT6¾¾fqª ij¾•ª iêŸIQ¡÷BO ¨­¥&ƒ–îN7µñÃë¦?÷ÿ±ôÓûQ,˜ÿ£±Yo@ÖÿÅù?æó¨ÿû¥?†þïžVÑú¯Ç›këîú×õòg0[ÿ×ÃÌu­jtÔ~óª'vog~V#8lWÉ]¿uZM_·7¸ù2 Ó¯Z>­wûÑTS„ S÷¶±˜ºjûe³×ܶ„ÅaˆÌla0 ‘Qûê©f‰A•QL³]âßÇËê¬z˜~b4LiZÒ¿nH è» `.§“ù€¥¿¨z‰¦é`] æÓá AðÒ!y‘Þ ½˜£' þ=~¸œÓàðßée:&ÌÀ‰õIç «”L„|ñ½ñ™¬‰cž¿ˆŽÊMù'ó³ °w€ÍòQ¹Ü—OPäQ(úŸ_N>òX ø Ð0œÍQÃø±±õ7ã Á(” -Þßxº·;ÛyBÀ7]orxØ5é=F£Â)ĶŽl”2íaåÝ'Qiw2……u®:Çꜱ1r¼L•þ®Å+@)«@seøš¬Ð¯xÅC°¿à·`½.?^Ñpe#×4|ìÒÇæ6¹I”Ÿ§ÀQˆ+ ’Úû¯p“’¥ŒF{ã>FgøW4߆¢1¢—5zÌEVl,ÒÊÅQ¾Q¾£i-®‡Ÿ&s¡S}Ãôéé)%Eä… wBécõc%†:ÃÕtµÊ#¼iðHu:Ž–øXÃBEU$ûê·TŸÂžäW§1·¨nNÒmZ·>Îp–­NØ[U×=qˆŸh˜oŠÚCÌ4Á*ÿô}59^ ÏTÔE$Øá <ÿ*W› L'Ÿg´TÏ&£›+àÒé`u÷ºû“ëb–TMÆ Lر ìÙdAªOaedâv±µ‘?5…kc¡™Íî‰W½¦þ œ,MWvOnG– 'ßBÕQœKÕñO¢±G¢Çëás8WyËQÔJ;Îd>‡#FÁyº4«9ñßPãÃðnÙD–yäºÎ@Ú¢<8çÅ=)ž²Üµ·ðŒ‡{²Áx8¹½éžVÏ_{Ë’+sÔ¿W9)˜>ÃíÅ&><ìÁ (J?q†+Eué8`Ÿ 磯 jÑI0Ò¦Kê¶QŽÍ_§g°IÀáÆ¡NßáSié”û‰ ¦á“yn—:³>‡« ”ªJ7ëPn”ìaÉÂ0Чmº‘Ð_b”zt¸È?_Ï.3O&F;˜7ØEû”WõÏpN¥>VR›§U>•ßÂò&ûªºÌIXJñ {ùçyE„БðòÞ=žÃ}Á„á\ê\´ìbÅ ¢j\ʰ†Ëx˜/Ë+‚7LÑpUÿ¹‡C\™5J-¢°KÜâ«àÉöüˆ£´ÏœòŒe2Jdtª;/P;`QÖ*Cúãtû 0ÊÃû·úÌ›QŠÀ"ÛO¯b§÷«|sj¾*<Ý}Uö³»¸úéjtÌ¿µÍ£Õ9†QŠ×KP~ÓÊñÍ{!à5Ú z»ÓÛê4n‘>0ØŸ‚œ}Ì—K7f$[\ì‚(´%' gS~Ý-E«ÝWþ• eá(¥[á„öóÞ²RpíXiÄ¡Œ$lØBBŒb&8¿àÊÚX/ì¡rt7ÊéE’ß )¯F‘¡ ^½‘ðÝ…Û«»í¢Y‡o)+Š7ÜâÝÜâënqà(XB ÃÞ{˜±Ü²¹ =ð~µ»hNG1Z“Œü ¯ZÓâ#˜æQáë›áÙGµõ_DדÙl4ë>JsbšÄ‚øî›@ëj"õ# í¢k œÅÊQÓ ¨"Ä€á¢QÔ¦–°‘£°!^ð|Xžç³Â–g»%ƒõD㬌7‚ƒ“‡lZaïX>¶P™Q!"•Œ»›Q&R¶G@û(Øö‰?F!Ö”‘~¨ce,P B8Ö*šÀL£ÅŸ¬ 3‘Iü…Y¶ô 󃌹oðÜÓÄWñÿÚ?ÿõŸzþë·›ÿ”D™‰Ë¶Ñ¿3¶±Á¤“Û( ™P°žÈ&šŒ"wH6ëË‘Íâ3&™bª‹óIFX¿ÉlÜËx&XF§¾]üs¿ùÓÎýæíæþÙ]±‹,RXž]Äk?×1ã·û¢E&‡ü¤bPQ€C›èô“šAEà·[Ñ ÎO~…[ò‹8ùùÎñ’‡ÌgöãÛ0ãâ¦Ë1‚)Y‚7îà%§‰¦%¬WP0ïõš7êþ (ÖÝЋ?šÛU<ÇæS¡,“¹sab9;—ßî toÉ…Äqµû3q¡õŸšnwn‹Ï­~Õ‰Ÿ©»Nh¶~¸ón¼¹4á,8ç™DSLwq>Ñ0€øvÞ¸øÀ{;¶‘ˆSk÷'ºíÄ¿ý´³»£kR|t}ðëN’ü\§$¾/¢1餻ĉWaÑI×?ñ&·;ñ&÷%RM?ßI#Yþ¬ù£ÌþíΙÉòUë¾c¢ÍöÞíÝ•ó®íÿ9ÿžñ_7ãÍWÝZÜhlÔý¿äóèÿùKLÿÏûYý…ñ_dÝ]ÿÉcüç‡ùðjwý?û°-¶ÈÙ³¥ ŠáúKxw¶eÜ 9Ùr}«+gk)¯ÍÉ”-œØB•ÌÖ[øc8>›¦ƒ9(NÏaÔ¥át­úÚOVàÖ†rçif¹Öe°x2K… 6X¦hØNÞóIÔÏð Á {ƒJq¸3ao<þ¢]l²¶µLÃÀã>RÉhx5ŒtÉ©ô=Í'år=Y$Œi‹V`+M#~Î} ¢æÒ-«´‹ å ‡GéøÃüÒ6ƒlɨ˜ˆ"+PÛm=Çóéתø>¥ž“]±]˜ C[dÐú>MÇ¢ p>ñbÖ-µÐ}¦]7àW :!ýpU;~Õ?¸ê²* *½NÇd'Š)$6ˆÓDF”ÐF_DkÏ nÎ΀Y\ÜŒhXfß©R0[|Õ†Œ a &AF…$œ“¥øh”~Œ8²éÚ¡8ÇñN®â}ЕK ¼ð[NáÊYÅ›r÷**‘`öÐQ½pÔíçð% ¤Œa•ëa¹{ø¶õƒÆ¨Ü•&ó€ÜQ#(¡¬žõ³™µÞÊ ‰c5Ë & ÉX^ö ÉîÑÄ¢½{8ב\‰Õkg×S6«®‘$¼F“D Æ4¯¬yæ®ù–œµ$«©¥ì1ûOªQíÎ 2»V‰ Cñgi¹ÔK¹¤ó<‘Ï©WpÒu$´ I¸!ÁˆŒHa-ý>ñÞ«‰?´€ǃµkÔLpŠÉf¾Ú3¦ËP®¶B›|«Ä}~N[qu®‚\Bà"qnÉØA,‘‰6ÎcU3ØbP°NB²vÕ,”QI†Cn z¾D Y^ôBTË(SªV¶P^18 jH¨NKŸ½WQq’'‰Ê4íôsµØvSóEæ4ùgwšÖ¦Æm¦©óSNÓzþ4e ×s§É–*fk/c±ÂýÅ'’ù²³€éÚ7]àè5«Fp”ø€¦/¸À¤VâÆË Æ ¹Vàè<б ÈÛNøu+yYÌçI7Ã%&üBðõ¼MVT¼"ºøT93`½:׳Ìdˆd(cY+ÉÒº´êôÞßÈ\IB6I*D‹êAðfõºW=³hb h–²QØ‹$w…8Xbqþ l²ît—ÐŒÇU‹!§!â©ð‹ oiE†EdPj ö=Ào"$x2Ì6‰ <ËmGЖti‹}*¯‘gk^Í6öl?c†û¤xq—øi&Uü³ïë[¸3k¹´ ú·¯Ù1¯ýÀÙ’?îÙÆÅSÎM’&2J&VÉý»jr?§¤Ý¤·=†V×wèÆwÀwãÝò(²8/ø-°"µÉêíxAÑ2øÿ2-*oÇ Š8Àÿ¸ÁoÜ ¸ÉGn G¾€šœ¿Pàq#®®z9Èå&Jæ¨Óµ¹ð/ ÛÒÿÏþúqôÿñ£þïA>úÿ_úcèÿïiõ®ÿõ¸Ðÿ?Úÿ<ÈGlȶþÿøu uÿoQ÷¿ ?·›øurxüú1âs†Þ¥Ónø©÷ ~£uÀÛec:ì ]‡2"mç,Šfg#ŽìÍ®f‘Võ ´¯„eÊeL`BE^D_02â >ª¬®®VðûX|§ÒƒQ*Êß@…*CâØzXvHg= ÓAå‡x‚ˆ>¸Ó¾\e™ŒD$Â:ƒº¹¢€u¨âOƵqúa0~JÅp0Þ(ÕHð5ÇâNV£ÁûYIvIÇe¢—,¥Ö¯€ANýFÌŽy.© / ø‹«Ž¸"ÖCÚ6ã/MüjÓtvù\?¥* ÇäUtE±ª'ãÑW’¾^`\ðöÃ%êN¦Ñ—Ì$–q+‰é±}3ÃhšÚÛhø­hø­|!ã…¾†£ø û„zìÅ €à"p mÔ)’ʦ)T¹ýþ±²3Ø~»:HÈ@ÖïÓùg²˜`³¤9±†„U‡›'DDk2fMÐÖ#Û¬ƒƒ J¤=|ˆÉƒ9 ð{ ±°·æ£äD§ Á¢ åb€Ý7áÈЩöLÈ‘ùÞr$bM/1j-<„Åàß0”w×#iˆ¨—ÉŒY…2ƒáÁÕÁ8x€bòmh¿=îØÛì~4·Žß¶ï dÀYÎBB@"Ýû^Èl@ÄéyË>¼Þ»5¹Úù¼âI•€3´qwÑn !‰ ý¶ŽU_ÒEÒ\Z(Iã*™ªH&ÜÔMú»,êFOEk¸o†*R¡bœ—úFÙÿF¼pO´PS)œ~NjÖÈ–§àç×”§ülKþó)ùQä?õÇü?óy”ÿüÒCþsO«¿Øÿcs3q×ü¸þæ#–üçMRŠv«Ñ^5z ÇïcÊB ¿š( êöªÑöqÿêà_GP8fïqG Jc1F”ÈDÔ.!Çy“È{0K8Pÿ}ƒ]â»ÕyŠo'3¶Å¢œTüëÃÉ} Js¼hÑî¢h~íEÑõ<ú½„'tj‡‹‹UXdB}_‘™¨È>lêôDlweA’\ F£Pa˜†â ´"¿õà[o…Ä(*³P> ݽgteÕT‰>°¶…5¥ÿ!òÅi‰þkâ^ô¢t¾À™Ј1£Uêä¿&Ö°8T% ÿ5QÊNh-’Øì 22…*®|¢Wã)ª‘’î\å9ÀJ{‹Kör`É‚À!†Ç‡ Í#¤ *ÒðhšŠàQ°×åeí#ÂÉkÇoiGDÛÄénÆÃ9Ó³CÂfŽ%ùq–¸î¾êa/«‡/Â=$†Þ3{\e·éâîÍ”ÒS´Òù`8²‰Ý$ùæø«¤ˆå+Ê«f"§ p¯JMm ¦S² îþôf|žN/F“ÏÄRH|ŒïчL‰q>ü0Dk¢hvó~>8xÑh„€|8b–-ʆ8ÅüÓ) …¢Ø¨;ˆ.ÒÏ„¯™iÁIŠü‘®Gƒ3X 7£ë™ÄD{µwvvÔ†~ÏXvu69O£Ï“éÇ™lbô½&c•‘@®%–…ÇChS’é«Ob Ÿ‡£Q4žÀ’;;»™B¿FéÌ òÙÜ,èw:"yÙDÀ˜‘_×Ì —±,´•^a:™³Kr”Á²4d4ŒT±j4~dþ½Mâ`ù‚æ•û8¼0ûGÛ„ÓE³/$ªÃž$VwÄäDÍ8TºL¯høÐÂùân£Õè’åçá,EgÆÙ͈1vfav=ŸsžK1 œˆ$×éöÄ÷"ûŠHÑÇqœHŒŠCÒÎ/ÚådtþÓˆ•MÎËfg7¾'8ëùp^uwòÀèœ ¹Pú§¹ƒ‚×è1We÷ÕI/ ¾8 gaÉkÀEm¯ Üw„Ó¦4– Èg0ßAfw›p¶ìôázíµàŒ váÏ=ø½¿_Âï—𻃙eÌÿ‰üÏáa5êQ:ßc„vŒÐúœa~·÷ààßïß$Óà"¼ã×½ÄYZQÝÀBù¥×—€ž% N²ÚáU€}ÛYŸ8z±¨•kKɹ'D§«‹é³GÑÙ`–:3ÔbÌÕ"gÌd¦ŽKD“O“kqtTÇY`vpº{é“A'0äÐŒ`¹ `·B€;ªyJÆ.p5_Kèð¯ØiþÉ ±ºÛÏ„€wžÃQÿ)ž‹Ó뙇FjQ'NŸ™“×ìÃaÙ¡Ö'€e{ªQøã·ôû¨¶’ÙT̽=FƒîŒŽ“ã¸ËïÄ÷$£$§Sg¾E™—̹½¾]ªÀc!tDB©Ò ì—±ŸwñѶù%;/°f)|´­Ù(g°Û¬ƒÁn÷<°º?ÎÊÜâÙð_yK¶ãÉÖŠ§@W E©D™Ø ‹TIÅ`>صŽbnRÇ’w/·¾,\D­õà¥Ï ¸¿J†iiwÍ"¨{¡" œŒ»m–QÆ›$`”aéÿ?_?ý²–¬7êëðý?6ý?æó¨ÿÿ¥?†þÿžVáúߨo6ÜõŸl®=®ÿ‡øˆ]ÇÖÿŸ‘ÿG³Š‰5«ÑA ÿ’jÔ>j¿aËGŽˆDán©H!€sv÷Û»/ .qSËù„œ¡ “ZÓL¤Ó![³OQI2ž§Ó³ËÁø9 ØYÎÙ$ u âŒâ%“œŸ“š0…K™JÙ~+ß…ÒÝ4ïÃm!+3û¿î$å¶mÏ.€«VºÈ’mÍçäÐñÙca—4v¨ádï’°<%7O§WèaëÏï*)7CƒIZÅ2Å×H¤–‡K8J ø|2–êK ˆ…1¸ÓV©ºßj€’2Êpu¯d9±@®‡Ÿ&(C?ž¥3ÊÅ>úÊNÒ™f8ޤÊÌ„ã-ê2Æù›8tA<áý¨:Ñð éf&q·Í㎎ó{q~Á¾ÀXÛü—Eæ³H:h Fü°"} }©(Œ,Ê‚Àª‹Z j},µÜ[¶W£ÓËmÛl*5>LÇg)€»ž¯Ví¾Œ'_>a Pxuܼ írùà1OcB;-nºð=Þ®Q¤ÎØSêR R‡îdd‡/KÙ6.¤6‹féO¤·öJS·ý7ÊÂ.0 Ü#|D;v`4°C×Т@*uj$^’aÿ¸v·ÍÄm3vÛ´Zê—áØ’ü¦‡dCÝè)5-«é"Ç–zkÉQen—:EDµE‰(:€Y9ä!‹ÑTãÉ Q_Æ'‰öÛ°OK›²zä8³°çÍê¨R,‘z(Z_ä¤ó8È ¬§^‹¢Geda© t²³d%ç«^*a’*’P0žz¡ Œ1£]wLøÓŠ–âÏ£Žœ˜5‰y3X<}pñ€;Î5¶À¬-¼Úùß¿“RÔé÷šè¯B¿{p"9Fã½.žMáÑÇ7-üÙïåØB¨º…e·T™·ø~¼í¾êf¥—ùõ䉡dÖäÉ1é Ïa𧆱O¸æy˾5Ê©Á)YFbµUâ>”1öF¿S᯽’è~ͦ›·%îör"Í'@£OéLE¯èÆ8ó]ét‚¤GÑ@ððwʼ;[æ“ëR¿³R¦C' ´ü¶ŒOzË‘TÞ²bÚô;Hz¢GHßnhßx°«‚¥Ë)GܨūÜ*–Ѫ_.÷«>ü§ã‰ôùšÃ9C)/ De"ÒòAgaÁ¦(ŒqiP²ÂM2Jž;6+Ê&¯* `÷;U¿YZ…`L«FçzËt®è\ÏíœÓ7š=dTn!£k¢ŒîMS”+'Ó]£ÂvÇÐ*BŠYe˜Ëió:;›ß#JdÓU†CÎ(<|Ÿ• ‰x±€V÷ ;¨¢äNÊÜ&Â+By³åµ*7.Ó0u‹¥´FÛIQÛ=»í$·í~Çn;Sd˜dÈìÆÙd< Ç3Ìü#—¬+Oç¦n+OטePpÈ)`7±tê÷K/{,={,‰ÅæôXzw1–Þ*ƒÒcIäX¶¢Dz•9”›ÞÒ£#ý z¢Õ.…÷§üÌ`cw×—ùV©.2ò­U‚˜CÊ)/ô‘†ÉÇrbW¦U§é옺Å!„óæQ˜ÒG(ÕñÇ5ŠÍÇœGˆ ö©÷ Æä†æ*Ôu½ L à­Ýy5U²U…ò·wò·«)€r:š,„r.)¼;…iñ×Úx2½’9}_$혂N…ø,E?@g·[{îf&sã•ÅÏ‘á1VÔåà*j&ÑÙ7ôtøΔ¤Z©B± ”Kà‘ŽÂÿŒâ}€Î 0&žò3V„®Ù}ÕßyŽ^ˆŒ™90fsv^»NÓs\ŒÃ™:pŸO€wÃÁÃïÁÙezöQç°âóV:N¦³ïïáV-ò+³¢hU 7³J‘ŸY•̉«ÑN{ïen¦6ít†-þpø•jÃ÷gK‡ñ \¶Ðh>ß™¬-ôHlÀqtü†TIûGø¿äçwà,ºstŒ¾ep[ë$ß›ü¸8,Äa§{ÏûÍ“8ç@Ïe'qŒ?à|’À·èâ–5x7w\xì$oàÕâ­þ’‡}]¾ójÆ¢¿@·øKÎmJ%‰ÙD_ýÃ#µoÀ_UñE=~ –ÏušÕãf®“`‘ׯæùÊ-™ïxûÕÑ¿1®R£ïV^ƒa"i æÌTdh2¹N«ÙoFö‡gµqUœ Aü"I ÑCxUÇçEe°h•Ó¹=Ín—IŠ«ËˆþCÜ<øw-ˆ¬k? ¡,Pû¶&ä/îptíXoòv­à• —K§sšŸÕWp¢ì&"çÆ¶£·9†= Ž0ljÏ!Ó‰ö.׺œ#r{‘žgGO´55q'ó%9¥=Å*²]ÆñÞ¥à‘¢ uÇü#‰jÊï3 ”¢øxÿêðoFq ºMç#Úå㘤,Dè÷bÔ8oÅ·ÇOþ‡”nÇ* ×E™ ?#KoªcZ­Ã;ÊíÇãvµ¢ ~«3@÷©˜d'¤J}(Bê½¶Ù­-5Ë+”(C94 ÀFÉ7à‘Ý¡jé­‘OÑ]a Ñ †% ÓÙOqtºáÍU"e4cÿy óô6Nþ+å?êAyrýšEø‘PX˜ÿÀlÂŒ&ÿõOH €ë`Ÿ’5?¿›ð¾WB:-Ó<Ýš6`áG=ã‘͹Ì÷‰S%ñ¡$¢”G“¤SÜÈx:ŠiUîzY…¹QƒH„ŒÇ£\„“pF]ÕJÛGEêV‘Ø„npZ¥Ã­6-…õ––-wÁm9í0CihVš0ÿ0I ¯ƒ„×A2D‚TÔÑ7æ.‚"j„ªHr 9(œÄÿÕoìo[I,ˆ²î'&Í&ÉžO’’ìø$ÙñI²ó0$)ÚÈ(¬H²“G’zDAêÑ£+"E¯¤Ȧé[’ n£a1 ±ó¢ îù_gplˆn(×FÑÁ±€mùXÎÀU`³ö}ZjAT7þ6¬Ãð8óB>é|ÜÇ»îë í”Ôa*kΑXám®í[Ý8û–Hi´áÑP4'¯ܬj.A·Yv€.!%¤Ä€G€\†ºr£äµÅé–x¹z©ÑÍ-…ê^èôôJ¦AŠ„ŒƒƒIUŠújˆ°²³Á¤Mã½|p‰§„úîF82\ÃË’U”ùd¢ÀRš6G:•L&»rlWŽCÙhe‡èæÿ4ÒìÒQÜù¨mÔò™§aV! Mââia÷)ßxï´Èô sPŠø Eã-Ë+¬FöÛ<Ò±‹[=mÚ¯|:±†aíêú–á§{«6P2ް-cŠlÊ}käöή©à­·gj+awN®‰urõâ«Ï¡#lèë`8‰:$˜Œ£lħ‡h‹µæ&’þu3ü4¡¨º]nÜñ~²ž{TÉ<¡˜‡âŒCsî 9ЋÃ2é‚‹@1SçlöLF$` –ÐÀË*«¢ª­ßŒŠ­Ô [à@…哪}„É9SQùzÕ>Óä\ 1Züð5"pfCË9m‰ÁXƒO¼u§;>ŒF5óÐfŸþ¼.´ºlÐêR†Õ¥ì«LÞ5Lt6çšet¸Q\ª.‡•y«Ϲû…ñ™sqËìb^ãâx]¼ãsºzW^#•ÔYÕKÌhdì襣áÕp,,DM²ëgãsÄš±mq¬;¼T 3Y ktÀž~Áï6Ö¢ýà»È8·¾Ú¤{à£ÔÎ*µ•éz zª(ê 2–¼ÛçwûÞ;=A9ÉÁ}³u6½?~“i|Ï<ÏF|ÓáÞ£Ê%FF¯ÉïΈ¬£·›–W=Õ%pxÁBôÂ>SE¾É=¥àÕñö©ÐHbÖQ’%ý¨ÍI—Œ~°Ú…{Šìy¥Ê"XèR…î5QdÕ¶®8A¶01ùÙPze—R Ô¾e~{j6@ò¾1ûtq1j—ÃsØÂ¤í$pvÆèÏÕŸ¾ì›pÉfšÿÍ%c\ùUÛ3"¶]cF4QØû²ô¬ë)>¸S™ÀÅ,LâƒQ'¨%ÀÔ}0⸲˜†F¢3óÂXpÖ¯dÞí#$~\4X×˺÷¤qOÎÈÙ§äßáB £P#ïꊻT¢v)c‘àÒY‡¥`¤IL“Ih?p<•¨½£í\@klQubA6¡A¨?ñ–ŒPʲQäX0„©œïæ L¼ˆM×C;2³gÒ`×ڜϊþð™¤@ãµæ2ýX–1 †ÊZ¯³w‘Ø›wuG‚cޙђyW—dÕ2^é-Ó¿gëSÑß롤_'Nq{¡dû–ý;]éÇÿØþ_ßÓÿk=®7àý&Çj<ú<ÈçÑÿë—þ˜þ_÷³ú‹Ö£±ÖØp×òÿía>¼Ú]ÿ/8hœu^U1 Tw NO[:žâ·Ó,ï­€ÏV}5þ±½¶Xóz:EÉZG·ú  E\½¶_6{ÍmËfÑ-/KY^[b ó45Ëøj}st)˜õ·½¤_Ö®N[5PIBØ~ø÷@g«š¦ð|öõê*O‡g*|Âa}¨mÝŒÏ.kƒ›‹«]ÁÖ¥!‚Ê—“sN%.ÚBvs˜ü¡X칊õ/tmV ¯`U$8±ãßøœ>t‚_‰ÐÌ ' *=9yR&SÃf£„¥X¯Xâ-†‚Jàr_᯻å7GuZ‘jÍ’ 0jA±ŽÕrç‰Ù(ªnHTÁ6ÍÐtS×M÷5Ë5§Eëq]Mfs -F!  ¸Z‡“‘ÅîA0DŠiWK‡Á§»…¾ Ý­Z\¥?°ï]òÀÛZµdHŽ,¾×ç&{"Np|üï~ow5jÏ1ù,z?šœ}„W˜<•°(@'ý”Žà˜¿WP_ts}>˜§"õ{IU€ì’5‡+ÂÚÑV²p,}òÜì¨t¤ Ô/ǦAαòŠ‚ Qª˜ëkœ‚i4š|ÆG:WR°p[°œ_¼EB> ”ÇÚ²¢‘=‡îQ °S¦ƒe:NãKaSTd^Ãê¼P)л[ Á’©2 »qÈìÙåäf„>t&™Õ{•ZUE¾G)FK(µÏó󠉫ÈNFlÄ„Cd&ŸÈþçxŠdF¤½ýœNåª}ÕÝ4AlYK¨ó"ÊZBw×Î'-Žïe2»¹vå1‡cAÍ"nÚ¾DTά¦{Õf.ÔGì&É¢õR‚–9OÓ ÀýøŒˆ¢m.𪻾¤Ÿ’Qæ²tF´Hw F´RB# :+Ý;çXj²Á]øŽƒ 2$íË¥Ò ÉÈ{Î* «M¨-{ V E‰HZ¯ˆÎXbSòlÙÑóœ}[Fé£ð‚°òT´>3ß,ÿ¯ dhS¡M(¢¶¶¸— ³×Ç•èTÁCÝ1ÇTÃqH¦ñ‘ýÅEAdVŒØ~T°UúXý(RøÅH¸±>Z²ñ`5$"M}¬Á‰ýw¯w& ÕQh !Ô̾;X‹ŸC'ñ§5³ÔgÁ‚>;KÕî©5 zX vZ÷´èiVŸC­*ý\Éë)Oñ©T¢„~p§IsXñiµ»µ"WÝ鬺ÓU†Xu x9¾x0šïÿÀ÷@ûB ÷±jÐ\úe@ ìït:YBMæâÉãü=–”V@çÕèýÍÜXÅçv&%: z`d»ÒõQ ÷Ÿè‚HZ¡jt¼ó¦¯þAø¶‹¡¬ml.ítº6’Ûz™dóƒ# Oy@ÿà–xp”ãKupÜßÁò§9WÏ­ã&kvŽ0ŸÝö«5ÓB/ÂVB?’jÔËó;ì½:å$ KzÛ…‚±žspb:ã\ã¨zUËéͲ¾v{;˜Å½AÏ»mJ-xÇx𣗺¯ ¥žç/Ö¦@Ñ#̘I“K'p¸Õa@سËÉ„.ûOWìçPTÃã:B[Záô/‚ÄÙ&›tMç3B¿”já†JM¶+øU*#­ Gl¥hœáµ Â<掌=„ŠáÎ~?8ûøy0=ŸUÅVD²ó x ƒAÑ@KC10B÷WÔ$ï1Uä@:¹_Á Ξ“kŒ>œ~©b¾ë)\r°ÎÅtr…—†1œ‰RÎâÊ¡5,H§”ˆe ¥NE\e UxáQ¦™žˆ¼æð«§ãÔà¥%ª@ÑZd!~öî)ŽÂ„Ê–hæÞ­u·`÷^mv[«xùéô)æ&¹à·Ø1YaßšúšÙÒöäú«=sP§ó£+/xþ+ ax‹Í‘hQó“}¸Zì™÷ˆ)E¨™üÌî™èÖ¨-Bžf‡¨¦<’‡{çðù™îw˜'”K’Ã=•mg'¢nÏ*¢ ·ˆŒõ.G¯ÅÒâ™û«z—Ù·¡–ßÞˆ9ß×@Yhmº˜jŸ™g&ÅÚLvê–JÉߣ,®[ˆ!‰ÒHá“Ç7!%ðN™’ j <²› žƒRÅ1h>0ËÞi9BuÎ9åÙ‘3pDr©úÏ¿ 5Ý¥Äkq° lÕ8þà “i›OƵ§É“Ž| 6¸/þÀµÂð­í+®aªJ\Nž­%°£Â EÎù©ÝÇ€Ž_2wˆ¶Kr¼ôïc!9>°ï‰ø:°.L3zØ*bp²;´ÛÉáÊ'Y#²áœJ8§jƒ<•€N Ñvê4$["¤XËÉÒ×Ï=QP¸òܽha«¼œŒÎg>ˆS–DŸÀ¯2ÖõK° ÈÍûcm~iÜ`Oü:Ǹ4Dµ<>zwYdz‰&kŽ• rÓ7@6á£ÄFÜzù`Ã1p³2q=í*Î=¶óQá'Á{ih28Ë ?!.03ز¨2ö4Køœë)óD»b ¬©ËW’·omtA͹ԭ|dœ&>-òû?“sà.Q(–…Ä•í)Ö BK,hµ8§p_QO [(Cåå±Ïìf?»aJ#ËÁŒœO“=Kjl’ °ÊÜö)?§×ä— ç+ Æ’$e]¯fÂc ÉR¹\Â[R"îH©lJœ‹¡ÙsYÚ).i– ”rþ˜PÏs4›@´œ[Ë@xlØl˜-»¸o¦±¾wµ6 ÖŽBïÚ¬·þ@Z,sLÅ©Tƒaõ¶¥ýâJW|¨ÎCú1Ëðâ5™&Šü€%‘<ä²´¼ÑÖ!¨|DÕ#0kËÁÏ_Ð/ÔÑ* K-óá)<0k± —$¼d$‚Mu·‡`LÎùðʺæqªŸ}b¥µO±ÖJ™N{1í-µî–5û[x{jwKlYÛ¯øÇ”\ àS[[é,N´ù ÍZäñ“¼þþ>v̼æç8ŸÐÒ º î/yÃg(Ðo½_6<×·LDaúri\1»¤åâHýÐû“¾‰ä¨[žd7’üqQ,0„}머ž¹PŽnædßH X¨ƒ)eë¼B;a‚V(ãó‰Ôs˜ÌHÃ1·ÒJü|lâJyMᣠuÓšñ]§¸Úw¥çûGá4o²ZÍñè%Ðö¥ÊåÄ"¢%¸AßXͰOЇWØ.“<’ᑞ~°ïΊÑL.óº K_0¶$õíʤŠÝ¡ ¿è"7ÕNIÎáÑÖuI«‚ U—iÿ”«êJ*Öt¡%k‘¦+±õS™š.JSihºâ°¦KcFúof®beÔÌÝV–"jÏŽòÄþ¶„"j =ðy‰´tQ¡[Dû€è¸£„´Â3=[||j2´Mfû?™²éÇÓ5 ËÒ5ÂbÚsp •¬{d–ÂéQßdý™ôM•Û©›j†ªèÀ<€¨#IÆ©[“ Kç¤Ù^(·ËlgyfU 4ºæZzà?ªïL±±üå¼Mb––¨’¯$ÊbDVŸõU7 ¾ÊìW´ ¾¨òÏWU~~mQÅWêŠÄÒ¶ 8ûH£qx ”T~*mQE@ªÙ§§hy}ÐÏ¡:ªoÊÃŒ« R—æ¢=еI–VÅT*ÝRï#Œý—Wü(¥OlÞŽôƒ|•ÏÁR÷è=ìÔ‚ðúœ‹ªs:EêœN¶:§“¥Îé,¯Î±yŒAÙ&ÿ ΟE´>‘­ø¡ãzϤò,à·S ÕG%¶g-CÿCÚô|`ý!»#žO%¶$Jô?•"ýO'KÿƒóPË&ØÈ¢ £¾¨²HÌL¨Ll•©ä©u´ˆ9ᩞé@Féߣ ÞF+´Ú&|>´@T, ’VþT ’òìþU?ŽŠ&¬Ç©XŸŒÙnZ“ìLzˆÙæôÿ'ÐûTÒû´Çw ÷©„õ>›BïóÛ"z[HI‹=¹ñ´ññù¸ ÿ|½@½O’ˆ0ã­²p³7Þ‘ÞGÅ“±L”Ûžn‘†Çë" ÷÷*žÊþVmß¼xçݶ…ÜSñ,§ßq<8 ÑÓ%<ïsDry_H4-¡ýÉ«íoUX”76[xM»¨20•Èaé܈sŽ&#FÜ¡&(~þ±ûš &²8ùnš Z±&¨V¨ ‚{¸ëabÉ÷•È:Ó›ôïk0…Æ;¹+5и.ŸÍn׬ñÓD³{ü,û1ãÿÍßϾgü¿Æf½Šÿ·¾ñÿëA>ñÿ~éŽÿw_«¿hý¯7Ö×ëîúOÖ7×ÿC|ÄñŠÿ×§ÄFä)i Ž«Q«Ý܃ƒí«¹Ãÿ-TÈС~¾Í9RHçj´•³Âúa¿ŒÀÉ6>Ýɧ”d º:M-ÐÆ±@üBa[rºê\çç¦ÈÚ²gº‹™ÑƒñJ¢! HSZâ¿ß––‹ $†YØ?¥py«û«êˆÓéËz3*Ãì¬ü>B ¨ wrù„ }Î/£`œn+ ‡ôªYeºØªK6E¬9;æB0š3Í&K«Qô’ê¡Xà<O0Œ¡ˆÀw>5T£/Dï’å¸&½ŸR<œ ›¨™ ^ÑQ>¸£î‰ã©lGfÂyÜG8¸*ž]BccÌ OÄX}u ኾ(3 ùX€/Ót†â^¬Cæ¢cì ,XAï¡Ï …ÒO¤ùÓHÄ a/¡{jÉܾÁÁqÈ> Þ ãˆAêdŠúR³ôgõO”0­‘ Ølr•F®ˆÈ=„'4±¯æUOîÆ®"ý82 ”ý1¬™ ï;hŸy/3€ŸréÛƒñ[X¦Ã4÷Ї½ÄcÖ&æö¬‹­rÖ.Xl‘Zm%SÖ±âTê•pEÕúYu¶³ëlOÆÞ| áZ\/"ÂBNy«YƒùAªö&o<œçL!¦‹*O»\pfÝ"Xˆyú-úKVÇIÂÕÀCp»øol›K[ñè„Fl<™^!£å0¡áq]UŽÚ…Whr$z PÈ *ä<Âæ“­ô´æ™Q E黈(yÐZ––˜RÀbÓ2û&¡» ÐØŒN@»F/šN\ËìЋ[NìÅ~nôOcÂF£Óé£ÐD·*1«©Í`ÆõO[—j„ 5á0d·°Óo+`FxŒš9³âŒ:Ñpá¨ðñ¼W†5Á⛥!þ|žã’ýYûx¾òû‹áï/þü¿ì½iWÉ6øýþŠ<óÅ$Œ cw»Û>ÃÖ¶0’‹M»O¿s¦l¸’ðr§ç¿OÆ’keÖ"ÛmêÞ6 eEn‘‘™±¢©|èA•ð†€ú\[u@Á8h7<ž4}ôAxQu‘u/Ên<ú’]À^8'ðˆØSs ïU˜N¯',ÝQ 7 •!¢½~ñÌüÁa Gbƒ|UlàxÛð¡Öú´ Áº¦cP¸7uâBÞuAD¿§rXÆ”TS1±ºÿ4“ûÙ×4Š‘-Úûàe¹7ƒÝ*¬MUÑFÚypL3¨=oPi‚ÊG•N«kXkêêA(a(þŽ ˆbëcÓr‹PÝ:œ É£ô{ÙNå*éüq5ÆÃƒ¡Z§Z÷–µ 'ó÷gâhtzý!­µ=ÿ-ÀkDf§X5ç|<Îó‘NôM1‚Š?gy™žÐaåá·ñ5IObØY VQòÔ6ÉŽÎ;0ÁIWupTOo0™Ê+…¼ÿ룪†6¦ J¥8“*]ÝÎ?a¼.ë#Æ<ÄÝàüýH Æ3Tïy¹-6³ Â_þj?þ &á#üMÛ EÐ...6…‡fù–—| ‚ïìW^‘¿>,(âú÷½1/V铿Se:dœôîW8xŠ ]ü§°Æ>ˆlʨ`pW[5ŠgKÈ^ê*_侤V"ç`ß¹”†çòtØm,ѽ Vß úCnëÿï—F&ïoÙ³vFiøÿñ,îÃ…†P·NHÒâs*ÙüSjچحϨ!Å?0Ž ò¤ÿci—ZP¯ÍCqÙàq¡ý·~A­:~¡ÎÒ,0àE¿ß*(™§P”9ÒR>á3Ôö1jÒ¥ZðT™T•$B-Ãð8Ṏ­ÅVËÑ•{ÙɕܨìÖgªíY3ãv‹ÜÓ¦ê$†ÆÃë`»€|ƒ*”ˆi%‚Ú¨²H]áÊÅ>|d²wVÅÀŠM`ðº-S*hüû±”:²yTêyܽÈzÍa×:|5Öj8wJÖV®ýP ¤9æ÷Ãø£ídDòFÎó‰ŽSú ,=ÀH3뢷ÒÖèK5Çg½u N`¹Ÿ6I¶³g:2yõ`ëÒHª^òWõ>k[šÔy¢ÓfµÐæoQSEs Õ¨Ãgv‘ÉVƒ`UH¤Ë×'F1éÈÆJª£@Y̓Í;½¢Ünˆ#ø­%Eˆˆ-) þmß< È–'±®ô[Ùìâê\NE:ºšœ5ŸG,·õ[¾”…ª3Uu&«Î¬ª3¬ºi/ã°G¹«K)fÎHjÓé ÈYXËYì±}d‰m)µi†?#GNN˜#%«å1uJ=xŽòa=dÙ.Ô¥hÔŸ¤±ÿÓÀâ²&ªËâŽ)Ì»‚šP]ÿáÙž“îØyKvyÒ«šür†F—ðdpšÂ¼Ê-ÐȤöÃncHÐ~øC'å9Ž—+­gù~©ìù¶pÕ/W·ÿ¨ Z ïàŸ+! ë¼¥!/@Z;ØBz}0‚ìÈ36}²‚4-@ê?:»{ò•­No]þ+·øc{³0ÆÞF| Ö:/zݦx±ûúmS¯SRWùó +IïoÑ?{Æ®}›&æúq¸ÖÛÿÊ—KŸo‡:dZÝÃ>m¼$ñíÕîúK.\ZÝ ¾[ПÊHÖ«‡ˆdÍØÕ°¼ä`mîÊ“@€üµ0¬ƒÍ­Š^M"7B(CQš ûšlÊ“7Y«p¶)B¶?*¡Öð>œjè` ÞK½ž­–ýÑ‹²ºEj9ªánã¶-¸kÃ(|ýTno: p'ò$Uoö¦õµ¿(¼âëEMH"MÀAÊ7Gë ˆär$PFÖVë„.ß+ªò‘_e/쪨ʯøå_m¿ðØ´“ð *~coý¢Þ²=ÿtÔto3P!º5Òlˆd®}Ð-¶Þërì?èÐWìÛ¿ÊŽ?*op¹YM€Õ„^.jÛsI4Àƒã3øy’^ʃœlÍŠ Ð3)Fçæ<­+âÜÜÏXbAän.$UH2õOú«¸a€®Ï,VÚtD‘S´­Tç¸ù ã8  Ã(©ÒÁ±RDÑQ^ίNrWF?2€¤@0$Æ2R:†®ÿXeÈC\…å¢D`U>êàr°ÏbŸ€- Àí¢ÁÛ/8Ÿ¶èO°§ÊUÏL•p ªq]Iªw¥×ÚÊwteAôúWéqâöÔ~rz.Ò¿§×qR0nöb÷Væ]å|óàÑW:¸¨;¢JÂf…«+=,rJ¬½ÉÅ îi 3ûT„{L°ÖÚÇxóÍE^þ PcŸY§VwD­ï1ŽŠÖíü¾]ðbñôÙ-×Vo Õ˜;so÷M0p±MSK‘!Ÿ…k àNlFtËÎC»y‡V,ÿ!qþJž?åW‡æTˆ’—ö÷b‘ô^ÞÓåeFμ2î ›Oé(.žyËÏä „Ç|*Ïëöa„<²ƒ û†‡åä/]W;XW/TW¸ª|œ€×_dØ61/ßm¸?„V.¹õ¯,•ÑçSO\ŠóžžýDÏ!·.§èžÊÌ7×sŽMÎVñ–htÝ¥E†¬I÷Þt]©ÇµÃ;¾´^&i­ïo|s“S•úC€&¥ÚVâŠy•Í–A<’kîBvÈo24´Ä‹ÛRçV§ç,×VÀ° ä!€u°;Ó\¾¶} pÁµ {²ZÓY£þáÎD‰¿b€™›ÇnVòû³{@h‰êZå÷ÙÇîû17­'?$ûœ4Oü~=¦ÆÀðý“*;Ø/¡kO„ˆ)îštEž.Bæy2Òò€çmòêNl¨ØI••ŸqxbèB×àpR>øÈ¾¦{Œ­pÛÛVÛ›ÚÏcÚ/Ò“ <Çéäê|:Éí߇œÉUE¸Ì@j•Cž~–—˜-?+ã<âá äyÂ…ÿóYWé¹üCûzo£ÖkpÖa^Ū¢T¾ñFÔÂ8ŠÀOT]ÛJ}aS·íYefï 0á0_»Áøk`j‰í©E¼nÙç ‘{Àì‡tl¡OË'x±‰R¾"ìCÓfÑBúñŒŒ$¼’«5¥ëU€M!÷ðå±P Ø}+|΢üiðRfßÞýÒzÛœ/ZnÞC«ï h1ÛèÜ­E€a]ŸÈ·ŠJz -Ãeä·‡(þœ—/æ%? ‹Fg¹ä»C¥Oæ_"/DÊ–.aY ˜mâ ¾úY¿;Œóû³*œSŸ,Fh´B Aæææ­Ê™X”Æt$ŸF™Ñ@»:­"ìÏWDELF†Cd_ÈlÐa[㬘 ܼ¯Ï áNQ¦ìòü+ V$‘]¤íÄXiEÁ¿ Ž6ú)âW1Óª«¾ä*­·;_P±)6a’O æK£ýtÈ^\¼=¶sÁæ!×½gÊsïX›."qÁ^l~½èD jöÀtËÕ¯K~‘Ä›&@#kÌ:~‰­¢o„ô€ü~Ä\?fÖ] ´9@ÉâÆ>†ÄäÇà¥ÇÀ§Áë.5€>âƒ;ðÚg„bánZº½åeMƒ€- 9X%²ÇÙsɼ¶Q6ÒBbÜÇÂeê.ý*ë>¼˜õ6v¸5_8…8“ö($áž{]"w»hŸÜ…ªä:ªk4E¶œ\¯‘ÙµÕœöÝ;¾4¬˜¾§hÁ`ˆÜ§­¢í'HøÃܼ€!ô 3C%/î N øž)‹}‹¤ìË öi@0„-ü(q.ŸŽeÎÅ„AE<îÙw;±m¤˜Í·øÚмWô/ñB/!ð² ÈŠþâZkÆU0ŒO&6ß•ü8DΕ#<±eìàúsTàx»æ`ËÉßj–¾T…4‘M±ü™ÃDåÜâ똕B·ø–˜\](§œÖù/žŠ=ú|üýù‡Y.øì¼{Û%é'ÑU4¶[´gn•ï˜S†œqÓÛF¡‘´tû¬¢Ìµô"ªÒ¥Z¢#tÅ„pt•.CXhnhtòrÔEüÅsŒN(¹¾6 º¥Ê<ŠÏègÑ• :.Ð[YQeÉmœ’D•«Qd‰œHÀw>rÚÆÃŠ£ó*\;S+8}˜¦'ºª@ NFSý‘M@BçÉPüÆÆë}¢˜,ÿå0ST8Y‰Z§hL¡‹dñFSá¨_½U·OQq÷*qGE\üdŒ×&$™rȵÎÁ£’rÁÝO.£=óu^Œk-xÄàÇ‚h(&è&˜'27_väÐÌÐj/tlô_û)¸~ß§l víÌ]ï,´ÝN#¿po’Z½©%§aÄv±òc²‰ü¢O6¬XAŠ …ƒãóy@†0û¨=s%Ër¬¯€já(† VÑ>•¹T„ûí…»[&µb“ =wtÕm+Bc//çì+â¦3• -¢¦­EÔ5·ˆkX\„1yâÉUkJôÄ¢ŽñEÌj5M0¢ºF”*¯K¾®£=žÁÒ"f1¶ˆ›±½•™\*ÙêØLÄc õ'¾`دk•íˆ7 Úô—+˜DÞBÐ^Îmê¢ÌH ªØ Dc€(³[²¼â|MV›:ÿØàìŸêôÀ^5ò  .8€ ¨Ò»!6 êœ(.2N†y0r€óó¡•ñÐäfT :«Uò¸¥ÇYŠÐ k/¯»Ô~H§68ôSÔ¡'[è’ê‰Ú™JCèÏh…ýµ=ãCü½&QpðÿON¿!þûIûñ“$‘7Àÿ_^ºÇÿ¾“çÿÿ§~,üÿ[Zýeë?YzôdÅ_ÿI²r¿þïâáØÅÿßt€­×kèmûmå?»/÷ä?ˆ"àÞIš ”[òë{´ÿ0L /lj¿gövI½?T#&ÔB´þ-õkAÍ/÷¸ð»5³¾ÿÆ Õ"øÍ퟊ÀÿØM|øC…ýúÎB=CŒê½›ûë‰}7F@œ‡ìH_P<ôì´•N¦ü D$w(ŒÈwʦ‰gÄ/|ë9& Ya¼x¶8Y”&WÇgèÅ­Ù4áÌ2´ü¢`-5¶/ Ö‚™p 2œÕìÓñèB¤ƒñy–„%DŒ_µ8éµL–cô "¨P|Ø+7œï4ê=ô˜G. Ðx´r¼“$væ·çæûh¡ Ž¬ªÞé—éøâjJ$qNŽS9ÛAÔL@±*P¢ÑTµ—?=ˆANÌcòÃÊ.+@oÆ"ÏDòTüÀ×úê:´p³Oû}~Þâüœ'ÛN¾0yMiŠ”BÆRNüOa˜£M\Ž¡ÿþ;`¦…V*ïN§”}MTÙû¡xŸ}R<¥@Á5ׄa?_æäj>`Àv»”“—~¹àáOÈiééàêÜ…~ÇXJî“cA[ç£ÑG18“7C€mÓôýWžk°}‡Â<ÁSÚÃÿ€ù œÖd32œ˱hµEƒ›¢°Ë*â¹ç³Ö¹Øîï˜Ü;\Ldg¼¶;6¼o²i„¤/¨§‚V‘”#Ûò¿ù_ÿ?Œ8þ®Ê” Ž¿#ÀqÎ#‡'Ù=¦‚Ðñ^.œˆh°i[ MH"!¼/"–CaÔq‡Š7ÎÑ´”Pâ¾Áñh4>á<-ˆâ ‹ÞG†nTÆàHû°ÿ…»Ÿð2À¸U Ë›)u;ïÆàÀ«ö."·ß%æŽØ±÷ç¶Šóàø= uÚÅ©[G)€þ™œTD6Iö)<Þ¤ìË.\ކ8h^ÇÈOëD‹ ›J`–‘Þ•¤7œZ›ŽÏn£|Óèë -¹7",‰)ß{½¿ù”‹†ç_%û~LOt8a¤T®Ä`I›!43Œ8w•gØceBóaOÁ;afª6³Fqq¼8]tFÉD›L¶;xv¥Ãå*_^;è (÷„ȉ¤ ¦ý¢/¨(w|&ÙMž~ÃóRŒü#÷É1 ,¯÷€ðÔÜm%Œeþ„7ñ$𩵽u ýÀ µÝ©k·•_ÆÓòÕÜ8üº{ŒYGކÞÔó¶6¯ïå-—$3vÉLìŒä߃AS’‡½ —ðf¢2Nïg­œ[.Ò^`à5•õ×úu©-~y‚ßÈ??§'éPŸ!;ß¹ðVuÊ9ÉÑ%乸¤CœÞ&õµ½×Ûo6ñÿjÿ͇'Œç²õ4S<÷s3àM¿÷Û€ úDîPûí¼H‡é˜b{ÇgWcÑELå ÍÎ:HClä&IêÑxbÓöøØ-qH}…´c0Ø›R€yÝÜܤ4Cƒcg•Kê«WÓ'¡F€˜kŠ7£óE±üHîÏ£EñDÞ§®äšmÿú˯Mqy)ž´ƒgð}¢°‹§ÓŒy5˜Nà=ü𼤠º°“žŠgrêœ/µÏ ¾Žt°Þr:ݼ¿‡<ˆO¬8¾—ÎA;øxŸéV°æ­9ÃĤÚC¨€¨š³Á%(|@˜¨×ÀzH)ÌÒÉTšQ<ωσ¯>Ò„|Þ§Sñ~4:ꪋ—d¥úçÙÇT¬}…íôsz~Þú8}Îu%ý2Àðr+onFNÅ ¤uÕ,¹ˆß±ÆÝZu¸xý¢jEû_yÎôØ!Lãôb anHµåµ¶?AF´ãÑ¡t9»c mI, ÙP 4QagI ×C‘вfrÈCj™åŽ|[Ïä þô ²È¾á0€<'WheÆQªsºÒ3~…,S­cu&„ÑR™²ÆÙû ¶9¾+˜’OÓ1ݶl:'|ÁÛ‹â øýsœ³ËRÊ’Ò~’½¿ü?áµ}àú©Ð¨Ã¶Ý ýw ðßñÄ z†}zy¡­?·Šxr[ $×ûGI9÷SB©§¶ÈGcf"ßÉ%p>ó¡Vv”óÿ60»6´cÚ,DèÆ¯ €@ßW¹šdÇá·WP¯¨u¯˜tÞO.Ðù>þ'P€F,òy í„"Øôƒ?¹¨n–]á‰ðæáœîöb¦R<æA茫À9çlñ9'ŒöÛ”æê¶ðüÓòj·…˜«î Rßë“ë#¯ÇlhA«ùš²£4 ž±•6Œ'l;9좵$_7¬âAçc+&¼R”—pòoÒEA§÷ˆèé [B…)ÜrÓ¢Zr΄7ÇL7bÃY±pVn¨s W­[P½<ìzÒÉg´nXˆ9› [Tây…[Xš)kÎM¼ñ4rv|â=_Ä^„ö½‡‹Ð{ºõ¸õ‡ª•3¯Ê[ZU=ú6þøÏwïÑWïqüÿ.'ßÐÿoåÑ“åG²@‚þOÝûÿÜÉsïÿ÷S?–ÿß-­þ²õ¿²ühyÅ_ÿÉ“åûõ­vÏÿog/ ½ÉÙl ¨wclU2®?eßy>öýô~€ë/WwW× ;²<Ü0öJwÔúx â¬Ôñ ÐXÝa÷?¼Àß5½wnÒ§Ñìö&䪘ϧçO¨šµ”í?`ïW«¬z 4I ]ØÐÏTÏj y`dCd*¸À„¼cC9I‡£iªùP 款_EŽP÷7l©„9twbo>¥£–2BØúЇÁaáÔz|†ŽX WV;º  QtdcÌ¢G¹ALÏä<˜¹ïqÎX¹ŠŽÎÑcGRÁ$Å %²F5–¡gZÎóã›°¨Ðxxq*@ycÞ0‘kœÁû"æšìi9¤‘R©h«çšUþ< ay·)½,çÛ¶&qRœËi—,E¯S.s¹nކÎ3HU÷TVëùBze¶¡Ì¶Gˆ ÷èOR£Á8õ*•:\êÏ3RØ­ú-ëA­.r/®¾FodØ|Î{ißz V¨õÚ~ìõø;ë£á‡«÷ r0 ë™°)-”3ÍšœTLú“—ÃBÏL/ŸF 8³~ôŠD™>C{)Ë–öK¥@]ð›ø'ÔM¥‡<'4nÄS¡î©|^8>X^ôüψ‡¼×ø"UÊ:-O±‚z^¢£ñ 9‰Úóµ¯?ç TXÝ;.­ˆ‹ho¾Ñ[hÏ=LæüZ¢+WWÙT›•Ó;sÌP#ò¬˜óThÇ!ØP˜éñоž6Ù™¸zœC*î§ŽÙ)É*ä38t52ÊÀÜd¯s ‘4EÇ'Ê]ü[„¶O¡‘ [ærd> 嬣.„•OEî¸ãìý®ƒ DSô<vÕCØxØ>³é4E/LÇý”u•ÊOž¢IeËc¾„û {›\£<Æw„¥>ª¨|‡@áºÔŒoŒ’ÈÑàDhKÎÅn£Ÿ,w‘7éÙlxÑVÛFP]çÕrWs ïU˜N¯',ÕPú4Aû3𾋂@aû©ZR©° ܯNO[:’Àvܶ–”MR]wËžjÄU_€/ÕQêf)TG+g`Gœf÷ò¥E|:´e®¬|YncÍ`· kSUPŠÏÅ‚AíyƒJT>ªtú™x‰DyXk*{­Í^@‰Mø“«c€{9½:ǵjø ÈTéh?ÒøÕën N…äññ½ÊW_ænéÞ6Vá@úþÌJ1RÞ–~£¨ú"ƒYm}¼Å#,ÐѧØ&¹Ã´Ô„6éc•‚Ã8w~>Ë QëYzü‘‡Éq+ÌÉ[~NÁùjð¿t<²ò$-ï½úˆ¦¶5{³™H¦2:+“K#-ë#ÞrŽàä¸if§á4©˜»SOÏ—¿ÚO‡Áþ¦¿Àm€üd Á‹ð¬þAø¯È_áIÄõï- ðIŸ4?˜*SvxÌKOA€ó8±ójÚ—ruø ²) Ž%L0jåd?†%d/u•/r_R+‘óM–§sy*âLOt)Iƒ3s2Ä!Ô­’4xlœ >¥¦mòd^Ê/hÿ!ØÓ&~üi¤]jA½6ÅeƒÄ…ößúµêø'-ÍB;_ÒÊÐ¥Ù*(™§P”9Ò’]C•³58´à½/’r€§¹ÔÅp¹§š±µØj9º äÂn}¦Úž53n·È=|‚¯ŠŸäó°Ý?@¾AHJÄ´’NAmTY¤®påâ>2Ù;«â.%R”®Ñ»´ºHëëy>³ÆN¦Lï²^sØÄµ_ÑlÁ»A„‘+$àÚ•@š3ljq?Œ?l9ç“‘Ž¥8ÑÉ· ¾\dÓK>ÆšùFaužÙ*o-#+²=µÂ9YöAgç†}¯üV¤6Çg½G[Ê“Ãd:N›$ÛYsAnMy5Б¬5sÒñWõ>«.‡è´Y[C0##…SIq Õ¨Ãgv‘ÉVƒ@ÌC+$ÒÁÆ\ˆs"ÙXIuƺôã)]^Qn7ï*D€Óþ›éï¿E@¬kýb²~0LGWy`Uá—à‹Nr[¿åKY¨:SUg²ê̪:ê›ö2Ëq”»º”b挤6È…õ’“­ïÈÛRj7ÙQ‡ûä„9rÁ“™ä(ìÁsêÊvù#Ê"Ç£þüâɲøŸ—5Q]wLa>—?L j¸”ýãû â‹Kðš‘]žôª&¿œ!4îŠb28Ma^-UÉ$H‡8¤€Äpðë:)Ïq¼\i=†å²çN\ÿ£.û¿_ÏqÞÁ?W®åÇ¿ýúEgÝm¥Ôj2c“€H ´ÿMÌ”®èú¯a¸;½uÆm`7C!ˆ¬Öä܈—FèpMÂLÃøÏ^igÁIôƒrûŒ9¤#ËJ‘ß|`h¶÷ä¼ §ÇûiyÔ£¯wý%¸ßc]M¦Ù ¾[Пºq 4^¸¶ä`mîÊc@€üLNÿØ|y 6·ÌñŸ.i*ÿ*aâ>£±Q&Á´×§ƒÓ%Ø~%¯±VÄÕEÈàE%ÔÞ‡# *á¶{©³’°(«[¤6-®ö6é·qÛL¶Ã(|÷T›ÚA p'ò$Uoö¦õµ¿(¼âëEMH"MÀAÊ7Gë ˆär$P–ÅVë„.ß+ªò‘_eG—¢åžªƒü†Q&²D™ä_E.Z ñ€Œ‰š¢å»²³–C_ñUÿ*;þ¨P4äfîçVz ë`Z{þ_ú|18>ƒŸ'é¥<ÁyÓ°*œæŽ)@МruE ÷úŒE ôHî±BR•G©‹¸_ë¯vàÜ8³Š S;+"9E›•‹v¸ t¬hF#.uFu”Ž•zˆîqòBs~u’»ÈÙnw9íPÚ ˆUFîjÂÏEíÆí8_ a%d€Ñ%OCL§lI- 4ŽÕÈb¶ À #©t&¿ I "ÁØêL7ÝtÈn©LàÅ.Ù\YÏÉ×Ŷ×ieF`Ì”éæ °¶Â„ÑÖ <#!ç’çÃÃvcRçF à0îSî¾0g±?| i}] [ÝÅ}ÎÖ`Ž.Æ´õ=æ•§%7¿oW#òÞÀe˜‘Ôuínm. a‡rVøÃM1M-Í€| 4| ‡K¦Ñ-w8„\/«Œ®ÒT›“VaX[šp&f9ó:)l±¼°¹óºéêsˆáš`;H°"xˉîW~ˆD÷õ_/Ñ= 3š­ùÿ’O’L¼©Ã¬îˆS”Î÷šB|%BœÕ¬`¨‘‚ž7¸üvÀ#‹éhLÌa3Lp$¿_°“mV€ªa÷`ÞÓe8. 'áù<6E®Û”`¦«Òò‹`¢¥tJ5b/ŒŽ[¯"†…l$$͇ò]0›âÞó— 7fnÌ\ù9d–ůœäê¯lÃGÑ5îÍ’\u†}ë±›üë2¯:/ÈŸæ­„Š½âG†9 ²ÕZÉÛfØmgÜ£›í¬»÷-ì¶¿ü»m÷;ßmsWšÇßïêþ%¾ºAEÍK¼ÉjøÜR-v•}X %¹¶…%)Yqô!‘…˜‹b­¸‰“Û#8bêœ/è-ø0Ð7{7[Èß`#ûáã*ž?^sž€ù1w¿'?äúð¹pžÖÊõþPé\žTÙ  z{ºLžçÄ]… –Bx²Ãò€çÍîê–n¨h¨[YâЀû…&†Tp1GÕèhK]à±;´yÀ-n[-¶rnzÝEz’ à8\O'¹í.ñ06E¹}TN'nM'¶û Øü‚‘ ®@G¤è]C|æ`iXuÉåÚj{ð´~…ŽBé}X…A”Ê7úˆúBøÎð~ÜÊÛ%j-¯™)7ŸZíKYrµò|oURĪäl¼Ÿ„Ó²Er²•$d«š$Ô¯¹LlÑKUr°ÕMÀV+ûZ½Ôk7‘m«ýð¨Ëó£ŸêÉÖ~DZEßÕɰU)5â ù×ê'_›j¤]‹Ò˜ŽÄàÓ(3ZrõB‡U7:r“ÕÏږϤ])¹³î4ò¾>œ„;QDÜ—²Ëó¯(R‘B®+ÆJ+ þ}XpæÑOIR¸V]õ%Wi½Ýù‚ŠMñu“ÚUÌhWœÎNnÜ¿VHeç籃—¼§8‰]y;u´[žÜ®8³™õ_­´v!Ì2®Å}‰ÉÁ JOƒ×]j’4ójä&sè'~Ïw£t{ËËšŸ[8@s°0Jd³ç6’y#l£l¤…Ä<¸Ž…ËÜF÷xþlÑùÂÁ(g’pϽ.‘«]´On‡BU˜¯¹8e7æ,‡.¶+f5Ö`޹<ú„f àßM\CƒýiÃV=<á„^ -ól8¦wkË@`çÇ'Ê/Ë䋵1—gÎã²ÑÝ,”æ§%òi$Ã7š y\ŽÜÄôSk‚0ŒCŧÐïÖqàI¥ BÏ‹à©é)Ÿ›²t÷‚f \6´qª­ðÞMM˜ç4|®²<@¾YB÷té}Ý‹tLïÜ®cV Ý®1ߪd‰’æ¿4>z:ùèóñ÷çf¹x°GIðflocVbUë‚l ]Á޶U¾ŸuNiræQo“ƒDö·ÒÍ­Š’ATÔ3ˆk¤¿Ù¤í•.)ìgnNt"r8üÅsÑ.¿V3 ·¥½<ŠÃègavé¨P½•UQbÜÆéET¹²DŽ8‘“¸´GNÁxˆptQ…«fjŒÓô„£2WUdÿÉhª#2² ly2S±ñzÁk(NÊ9ÌN<¦·„ciùA:GŠÈéC¢»)—דwQ,ßÀâçÔàð¿6Á¸WˆÄÐðŠÇU1û74„°·´õ p+ä§™ø± f°·—–áܾ.$œ3]TT„”9„ûíE][ b»=·¾ßŠê ~¡tüí園_ÜôÎ]IÛ/j*üE]¿¸†Ú_Óд ¢DY)êXĬFQÓ ª›D©µäë:*ÌÔýb¿¸P™Þ¿’"»Žâ^ü0V"Qâ †ýºšiQY9Í‘àqý´ Ý~¹‚ŽZäÕÔíåÜv.Ê4բвZTÑH‹2¥´°uË+αFF§Î?08;§Pvú›€„:ÎÛà|œN¾*Aºœ,.2‘…™0rv34™¥pÎ7ä£Õ®ä›J³š¡KÖq r¸Pû!ùàøN1zn¸g¡·§'…hs+¾¡?ãøî;&©À¿ß½ìqðßÇ'ßÿ}¥½üH~ÿñßßã¿ßÍsÿþS?þû-­þ²õŸ$O’ÇþúO'÷ëÿ.ÞÏ]ü÷Ý å© ¸$kMÀòÚÞÿ@üØêAS¼…¿ßÖ„t_^lß î’Øêå8;ÉR»-fz€ÁÛ¨…_ úŽÃ/Çœ§$îQ ݽAÕ}“ÑÝåÌòooTU=°÷Ý yŒ“§åt" W¾èÀ±¥²àg}½¸H!É B%ÿaó…üG£V¢Š\2úOÏFôé„¶²)béRZ:Yðöúdw'Þ>]·l€Láð ~õ–%)Öìƒg‹Næ‘g ¼«!õ÷DkjèL¸×r›L£ÃDøm04Mø›š7Õ°ÅïpŽ@b“+÷FÔ_í7P-e—¬]¯ vàÖ«Áä8ãä0 tÊzy`ÿS¶è¶!ÚãàΪM&À¶ÙdfÀï Hîa ÷ka`3‰µJ$†W˜›BÒÈÍ´äÞ£”¹BÃå; +ƒyÙQõœÏÅÜš@¶’÷iΆ ž! ¤ó8wz…¹ÂXÎ~?<Ùª7Œ¶ÚÉsubˆ«*ÂcœBîË! œÓ£mê‘M†;§zåE¯GUšSÒ£*ƒê‘?¡_²i¹-ÆoÂ))H”hôÓÎú’½I)=lP+¸†á¾=&±â²_¿áwú£Á‘¤áw éÊ‘Ëét3N/Çé@K( ªÞsxÌû€×îù6*E@çPÝ(ÓÓsÊR„Êîæïv$RÊ#2ûHÞÐP:|º—¦>F4‹4)¤°D‰ TËÔˆ7^`Ô \@éù3ÑhK¡ÇÄ7™B£ AcæLžÜl [ã§Cð"t¤€Ü^Óqhœí -À‘ a#ž¡a.b¾MPdåª? ñ„#SBL¬]Vf2Ó/……@êj‚ÜÑ4é*òpkÆÚ“dˆõ>Ä24ÎUä··YNÖ½µ\i›8R ã­ìÒ¯2γLNC§MÅ:Âåìú¼ÿv =§hi‹ûã ìî).°åëu){X:@Þ¸W>2Ó«¯W}Iõ% Ê`Jñ/q’ÚzŒÙK@D >ò¬””š~Y”[b:¸’·…OðŸ¼<üÇBņoðšJ—dEâ™OÖçŒÔR^ýÔÈØ>D%4ò™hÿ&G¨Û9+5Ȉv[Äoh00.¥DÂÍ@ì ïåïÛ·3¸mÜÄÚ£ï`Xåè8ú`†5#oßȰⷱaµA±}Ëy¼d³¦£÷tËÐ^[Þª}C݃k¯ð&ÉÛ²¼N×¹R¡üqœŸ0°Â:bK:[ÉG%#¸UœÔ€,;æ¿Oä+bÎ}U:ÉœÓD  ïñ¨¸(¤ð©M_Š(®F Sø”˜ÆF)0•r áüŸèLvƒÜ¡/¼y~9¿CëÆ/>gï3ëD§²l\ Ï䥃ÙˆOY1^ç'ý˜ë¥Y“ß,]o-/ç*`Ñ6:´],:‚þü6ÞäÕí—! á™qŠ_lvß "i÷¶xïÏZê£;‡Ð›7^ïÇÈpÍX(ß’ºÀɵá’y›¬†/»½Á—5…òËW ]\™¡#¿«´ý<\Ä«j5òÖ‡Áx…ŽRs•6^V± Ro ñíq¡êö¨4%Û#š&x’“j1²¼¨OΨäEg•C×¾Ë_ö^­èhæ©)3žþL[ZÎÈT=ŒZMq:sÝAYueÆù¹¡Ay[yPÞ^cPØ·êVk¨üÕÐΤ÷%¤åR(Ú˜*´Qátì­ÉûÂÛ»SRé0»1£ã²ëÿ;ù–þ¿ž,?’ôÿ}òøÞÿïNž{ÿߟú±ýogõ—­ÿ•åöRâ¯ÿäÞÿÿnZí¾ÿï^©–3IõŒBåPA²ÆÏÃy»ê8 'ß·»°|z£O)úÙ%’ÅgöüuG—‡¼ØF“§  Ñ#NÍMº 3ê þ~بëÌ ÅÕ[Û)-×´É×É4½0FèU‘“ù#ð&6R~ÂF-°:ªxÀÓð²cšéqJÎnƒ¡çJ~úzeïBÌ"e&Ó–Zègµþ‚Ìp¤ý…[Ê”õIy ` aæUn¹®€ýö pþ †2°“k˳âñ™¬l¨˜C Ð?gççàÅéAsœÂᛞÓÉÙèœɸÌ9“åz9’m&*˜¤[Ê>'k}³(Iõ.$„°[¯!¯<Ñæ;`¨Æm˜àYÎb‘ €.˜"0Ž‹™’-㨖ç[&»‹qa½-wbÛ'8êZì8 )Kw?ሣ0 : ƹ¿Tùæäœæ·¬µº ׸Äö­oÎ{ißz –¡õÚ~ìõø;ë£á‡«÷èÒ¤×3aSZ gš59?ÇîO^.Y@~`zù Á™õ‹@!’à3´—ã+ :|Âj .øMüê¦ÒŽ¿žZ;b_ìP÷T >¬‡ /j—_ZúD „¯o‚çÈÊU‡ÂN¹ÜQÊUKÏäí¯?ç8øyßA½†gú¾»ÉTrHC8I8þƒQ‡tËU´ºkºö­:£ª±éTuF÷zSÙ³<Ø¿a6ho ¼ø© 6¿7¸ú­¹ ;)«]X=ƒs¹mºƒC›Š< &¹CœpDû¶ü„/__au§®[QW1ÎÞŸ¬8Ę‹ž¢B¾üMJT¡<Á§éPùtùé&•Ë.…÷{.­!ß\s‘û¹‚ãÊ5Ê“$Îî£xê#§’äÀR3'×õIC9œHÆ£sNÃr4úÂGÂôË७Ü2Ç£/ÙlJ¸èy%?Õ\Â{¦Óë o(ΛF"ËÆÑdoȹMÃY˜*a/NO[z™ØKúCkª²ùæ<†±MtÞÀ]¢i²¾\ÈË1,'S«:¬:KÞ‹Ù¼·¦_1‹0»U[´÷ÀËò\Ð v«°6Ue(^,Ôž7¨4Aå£jGš<È<¬µG•}táÒk/ €p!L™ÉÕ1€w^ãZµ üŽä@ªlÚi |„êu·Î'ÈBòLþüf!ÝJ™·¶{G[…#þû3“’׈Úç# rî³2Àè Þ øìOWƒ¦Ô¾ zŽ ²Nc€¿F¾²ÇgéñGÆ…Ê\F€ o¼mÿ—ŽGB6CÞMÆ_Í™WŸhB R)ÎäV¡+£ËÇù'V´¬I† ÀWlpþ~$ãÙ{­ó§eÚÎß¿?£†<ÿ¾s?þÇ4Ò.µ ^›‡â²Á` –ü­_P«Ž_pa-´óõ¸¶VAÉ<…¢Ì‘–|ÆS ø²³¤lÀÛ¹ài.ó:è6äñF3#¶[-GW9ûÛ­ÏTÛÁCÚ-rOû÷gÙïÏ>“î‰&þ°Ý?@¾AHJÄ´’NAmTY¤®påâ>2Ù;«â.¥nÃ´Ö¥Ú â›Ïå%×ðût2ezõšÃ&®uøj¬õ)õ"Y[ ¸öC%ìhÃý0þ°åÀ TKž€›ñ4Œò"ȳqzÉx±f¾QX]È»àèDåîfhX‘R"ÉΉÓt€·$K¹Õ9Uj}£æø¬7 ®ÁÉa2 §M’í¬¢ÀB_yÖG²ÖÌI€Æ_MÔû¬¶a4¢Ófýá>ÞÙ ŠJçªQ‡O ð 2€ æVH¤~§Ñ0äD:²±’ê Ö›»”8½¢Ün(ñÕ¿òÿo†:§¿ÿ±®ôÛà ®ÎåT¤£«‰<°*4¸éçËmý–/e¡êLUþVÕVÝ´—qXŽ£ÜÕ¥3g$µéô@ÉÞXX/9™I,±-¥6ÍðgäèÁÉ sä"G2ÉQ؃ç:Ã5”íòG”ó’Gýù3¼”±øŸ—5Q]wLa>—±P jP=þã»Íà‹Kðš‘]žôª&¿œ!¤QÀ%<œ¦0¯÷¬d¤~Ò@*Jøu ”ç8^®´žåû¥²çÛFEP^X%*‰ƒpƒ$êDE" (_“át›„ñÌÅ#A£·Õ4Ù:½uÎ!ï;ad69G)"_ÎgÑü0¹:þ³W`ÛǪªî€~PÑCÈû ócqЊÐ`¦‰x?÷V÷°O¯÷1ø£»þ’ Ç#1ˆf3ønAê¤p ¬(9X›»ró¯ÿ±º¶×ØüÚ‘ Š&^ÍT†iëàœ€R—`£Ÿ¼¼ZEZ!+!•PËv2t–„;î¥^Â.’⢬n‘Ú´¸ÚÛX¤ÜÆm[1'†QøÆ©bE4<.àNäIªÞìMëkQxÅ׋šDš€ƒ”oÖAÉå I& Ì±þ¬Ö ]¾WTå#¿Ê¸».E˯øå·7Vá ÄE¤÷x]OÔ»¶ÿ7ºØÊ€«™¯½ÚhU5Ä2Ú>hŠïu9vDsè× ŠÚìG‚¢ˆÊ†>8_ ŽÏàçIz)PpB5lç?ІGçæ\¬+bÐïg,† GrW’ª<|]<À^µ7ÐÙ™ÈÈ :›È)Ú¬Ž$—\Ó±"n°Î vF#£lJ!¬š®tó“W ó«“ÜÕÏvðÍå4pO:–ÕÒM“m•á ±­œ°I5C â]e–hP‚ãÙØ.€dðRý¶%¦m¡d ¡öQF LAá¶0)LDΤzNb?n¿½Š*cÜÂm¦l[_€ñtè«2—áÁ 9—6»C0À:MTèvŸŠp7ð…9‹9ákˆFtÁÆu÷9}Œ9Ö¹y¬ïårhð‚˜ß·«9hÞRP^êúºÆÃÖ‡~çbëÛ(àæ—¦ÖM_>¾Våьè–;œй—]ËÎâ€ÉéŸÙ¹ª sJÛks¹ Ê‹U¼šm*„rºáUø²à@koݹٴ ¶ƒ{!‚íÜ’ðš_Û,t.ø8%ƒXY*£_”3ƒíŠ9¾g/ÐSÂmËØº—ñÜÂM탗ÌRi–h0ݵ3{áa_e¤p síðŽ/—kd;Ûü¥ÊUÒ‡YÍtÙ$’­Þ 4´¤…ÛRçJ£ç,×V8ð•ÿ¡!_›•Ïdv3œ3…cph Mn,Ì‹5c Ó”ß/Ø)Ó6+dyawaÞS/8=át‚<õðc›€RÓmJ00(hÿ"˜¶-RM k cÐÇ–œ°·µå‘IÀ¸—ï鳬¾&+Ðë/-ÃÑEæ±\Nu’~Ë©Ü粞ڰåÏëUÂý_qÃSt°‰Ç‘½ÎJ9Ãv7ãîÝífÝ>oa»û凨îºw¿Ý=þ~×ç/ñõ Z[^¤MÖLçkh¹ªLߺ`(¡¼-îH‰ãùzÄ\t޵âF¶d'‡QpÈÔYYþÐ{à!}\eÇñ»;ç­ðsûyòC²·ÏDóÄê×ãgü¡’N=©²ýR!TºLžçÄ‚…iàB6e²,f Ë7$«{ª¡b{&*/ÍðÄÐ%®¦áP'ÄÆº4{,íp«ÛV«­¼€CP¤¥'8¶ÓÉÕùt’Ûƒá* ãS”…LeŸSa Ùtb;•€%Ër 2¾®@ž ¤ô}J¶FŸi•zË?´/Ûöj-E!…‘ñEž(•ï¶‘K¼ð}æý|Ö¨C»fFê|VÇ/eyËSMVIŬòB*IN É Y’²j>H’>¿ærAF“¼UÉY7d­üõ’?ÞD¾¿öãF,ј~ª§{üARù}W'Ç_¥´¬3d€¬Ÿþq6^¨‘ø1JÀQ>2£@ Ç$t¯£Ó–1Yý¼‘ù”õ•r©ëN#ïëƒG¸ETÀÙ&»<ÿŠ2IdéD»ÛUZQðïÂóŒ~JÒRΰêª/¹JëíÎTlН›V³bNÍℚrçþµB2M?“&¼ä=Åi4ËshªcsøÛòôšÅ¹5ͬÿj%Ö´T:Þ+qcŸ@bòcp‚ÒcàÓàu‡¡³j±iy¯}F(Û[^Ö4øôךƒ…Q"{œ=·‘Ìae#-$æ-´Xï©»ô«¬ûHÊuµnÍFÑ@8£„{îu‰â}r;¨Â\ñ1U¡)²UŒœÉm¶´”›Ý;@ ¡ õùwã…ß`ïϰ@á¡Ñ¼Eb`žÍ¢¶ Æ-|6¶Ÿ(³t,k&VUÄYžy3P&Š˜+:þ…ðmôÔÿ„êNÁô»5þQiüÑ) ?þ–@…á?Äâè‚&bK,Ó2Ô[á½ë͉N›¼”Ó¡XcØMˆvÁն޽$tµÅdËr´?ʹšÿÒøè)›£ÏÇߟ˜åÖ{À¾ Á[©½…XY•­Ë©yŠv“­ò½¤sJóÚy ´ ²·”n,Unø¢ê%_D—·(½ê+«ÜÖ…sa¯tCØÀ¸0sm¡ãˆ£>á/žSÄo„²QæÂx[JíÀ£XŒ~&— ôVVTEƒpGQå¾P(nrã ~Б#(îàŽ"¨pÙL­ØbÎÉH= Ûµó~6Ù'Cî÷¯÷†Bjü—ÃLQá¸azKð‚9Ÿ¸‚ Òdz­üh¿’€c[ùÞR°‹‡ÿµ‰Ú„X«lØ:Ç4ޏ©‚»ohakiëË×VȽ/7ðcA4H­À¹yÚ4al×¹›Õ™ h0cýn~üÆX§ÁI­×Z’κccH|å9›7F:}Ñû÷+ª‰âYB«ø|õCGiiIÉ9…Œã+ Z8€¡‚U´ßÍÞ(ªkÂ…R†·—sÚp‘sœôïðõ%lW(±*èÕܲ+éØEM5»¨«i×P¶ c裙¾ø—¨E½»˜Uõ.jjßEu¼(Õ[–|]Gq8ƒ’]Ì¢g7cv)Ó¶WR×Q—‹Æ6#êO|Á°_W,*«„9Z8®´×/WÐ ‹¼r¸½œÛÏE™~XTQ‹*z`Q¦ ¶¾`yÅù"ÖÈèÔù'gËêäÀn'.è?êhƒóq:8ùJPhûqB²¸È0fÂÈá!ÌÐ/é2,þ¢èµ°×Ûq\ç2pÜ<¼³ «@zq¢{†µÚhSQÇAʵG€ƒimdÿÃr· 7ÛiA€Õ4²M!€¬Þ%…†Ž1À%åù×÷túwÌ_ØÕÜ·ÊYè `1Šóqz9N'€Eà ˆµ¹úw°pú¦.ivƒ9øÔ"º XåF»ÙÕØ{«D¿„eº94ð j%鸾¢¾à®u}?N侕V¯ÄAW]y²6‰|aL²£++:bôvÙÿtšMSÉ^¬gË&äGIûrºØt÷Lù÷«áèË'Àx©Õÿhp7ž„§ HÐGÀu´ñZ öÁ„±Iïãô H¸ÂXƒ~Ë£ÂGáS€äjáòeË‚É4±u#¯Â`7Ä…hÉ÷@ÿ Ùr ¯È¥€\˜}J‡ÊÊ ê]–êB]j?eÌ\ÎðÛ€Ï÷©¬ Ωéì+:ðz:¸š¿ÂÔù}8t\™ÊÀé*XS…§Áͬé¿ü?§²­&­È€Î5\‚öEŽÎRw_1Å€서bÄI•i/½,>Z³“X°—ÜnJÅ¡f ÞR Æ”kUÃS»€ °õŠ®¨ xÈg&ý‰Ý*î/ã¾Ë·Å@~Ò”]_ ôˆˆÛHŸ ÅÜ"6×&°‹#`5Yqe\X+¬øw†?a…*¶”L¼Ù¦MC$ø‹lýy!¾Ð>þ¶©¯_\.ðv}¸7ÌŠr»ï‚£€l¼Ä]d´9ÒqJ0U]†©òôª.ü•²eaá¼÷+:7¬QÔ“çªtUµ&ýpÝAZm[O?{ÆÜ¿V0ü¶ÎÉùòï|#§ÌÝ^h;é}éW:§Ì™[¤òl´Ú¸zyyþU·eU%z‡êNÇ£ “ü X·\bvá[+74e;Ø"àÛÜMŠQ+¹4euUW^èQ9§ÊEù»ï_QîèÿwñÝè—Vîõ?wòÜëêÇÒÿÞÒê/[ÿí¥¤½â¯ÿäɽþ÷NZížþ÷]·!ö:›MÖ¿ôëoX¼.·ÇõvÇõ{…°óTUr€Âpœ©qôqÀ»…?å]S¼ÞnPE”ð3±ÿz3£nyÿ îˆÌò×P;Tö8ønœ^žŽiâ5|ãëÝîî;•™“ÓïØzFVT½çó.RÙÛ·Ûÿ¸ü½RO¥S±ckäÿøÞÏ@'Unû ñ‰Àc>)íôD‰1P¥¼[Àä NÌ©¦DcèÀ®q™Ý*w¿‡8zù<µ½gÖQ×¾Þ‹¶×Vù1èâ/Zþ‚2 Âþz ØÎüz¤þÝhýM®,?^mHÚ.¬p}~§‚Ú["JS+rRMtóß‘ ºî}¹«¾\—_îÜœFýfùŠÜ\PçâÒàô4ºüÞŠ >ææ\NŒ¿Ö‹¿¶ûÀï óð'¥ÆÑeÒÊ~í,Š7 tƒ6…ŒtCÆUVÀlx<&íÒQ:ý ¢ÃVðH‘t~.–+o?uNß¶¡E;‡—†¿´ó´…f4#\¿ê›v F›J|±¨Ê•,¹]òÞœ65üAË@Íd "˜\R „8ÀlØßÿßËñQ)7?Òð|lÉÑV.‡âlfNÙïUnío®¬ª‡¼ffæ²LÌ{V§Ð‘´¾V2”çxãµÊöOlŒ…nBùÊêVÎø|S©‹cù¢ëùÇ3×Ìi|;™†KäæÒ×H«“ñ^#A®<%Ýu‚\S(–÷ÕÆWõE»ŸQà›,×b‘7¯óŽQVš~Í­ëxÞÁx"uÿÎcÛ)V•«/«VÙo}à Uzìz-ÇdÙ_Ç÷×Ú Ùø $4ŸµëgS í’ö<&ßj½¿JæÐ¶]àÜu´n¨,ºÈSÛ´l¡m5ǾcÞŸ} ˆè)L*$!Š*¾¥ÔøNß®þ÷;òÿ¾÷ÿ¼›ç^ÿûS?¶þ÷ù·W–þßK÷ëÿ.Zí¾þ·{¯ÿ­úü‹õ¿Ý{ýï·ÔÿÖÒþ.ßkﵿ÷Úß{íï¤ý•‡Š5¹»­Ý¬¢7TÓöêfïM©ª—‹Ý²·Ûä«>(}ÿŸ¹½ý]øô&u¿Íú.±÷ à›UwïZLT6`¶.àÄ­ b’ýO¥èY{³ñhSo&µ·QoÈè8>¦úÄ®žøŸåU‹mZƒ âmò𖼨 ¦ú‚¤ÔÆx iCB° …^&fN}Â1²EúpQC%.|­8 (á>5•+¨·Æp1½',y Ÿâoà[ú 7¶ mýƒB¥'êJAdj}©§Kg…h‰ú;ÖTžÝD¨É¯Äçs3ø…²GAþ­ îæµùÎx¨ŽuD>rà[µ…¶g³SAƒ,´zÛzÁ!µJ讀X·,g¡ æ 6–´ÅžÒPƒ:åS+"³ëÛD½<ï^Ùü | Äͬ™íô— žö –L§¸&†¼ù)¢ëþºPí¸Ýuáu2ÇPЛÚëa5·ÂºÀÚ!6Œ—ðÖEpâœEQþoM'¶(ÊØ>©Ú_Ý|ó¯‰[0öŸÑåûéøÚÚOÚŸ$‰QàÿÿqGϽýç§~”ýçöV9þÏò“Ä_ÿÉãûõ'­vÛþózçÅþ®}3ÛaÜŸ>ì³}ÿ6Œ@É÷m‚ãÒèSŠ€‰dÔ[¶æôoÀš³Ã0<ý¼.ò;θÆÍ¹A¸÷<tß üž¤§<˜(\ zØj‡ñ” âAÞA?lÂû‰•@÷övöw7ÄÕôºÀò°2HyJ öôá}ùËKBÔYÄÿ½lHž{Ùh‚W~[—oÏQ9õ ¼sæ6fø¶ ¯?„•œ 娥Ÿ²Ñ•£ÀçSØNG<,¿y•€5Ä7†\»’z`6Ž9E1Ê¢g=ÙqIEÌ&½ùFo¡=÷0Éav3†<ó1_¶ØÊ¦`q˜ÛÅ.L¨]’7œɵ&ù8‡ï ‹çÅÝ&Ù¬þ:p[ÙWQjuê{V'ºaáV³6µô«Ìs‰©¥¿ˆ„ò––àé4εÌ3¥öÛ@“‘&ûÎ 4CÑ,3Ó8ð Í;¶ÚÐnÖ\¹7k»©Rß&óz÷E²Ý¤Ÿ»ß ¾ Q­ªú1í/ýªö—Ç×¶¿àÑåûsÀïcþëe¡A‘>ðvY²Ê›ƒŒcèÂnáåWÝùÜÔ¨“”ì|À0]”Uoõ Ûš4…|J ƒVÕQ9~¬éƒ´Ð‰ù›t¿[¬ûÍåpwÌ)Áï}•<ÕåéVVW¥ýæ\/Ñd;…çó>âÏl9ˆëAGnj¶•ü5×ljsÏ!µ!EÕötf×:{2ݶÚMüwî?9ƒ ¯á°˜ÔÌfé蛽î+öëóæ¶ DvÃÌi@än†;û(vÚù4ºrBÑ„&~D_)¶­É|™Lä­e‡ìcâþÙ¶Ïnö{+Ôdê@‚á–ÅJeñ8ÖC/öÛa[ªÅ³ÉÓaSþçð«°Yv7ϲ ¨„ÔöëÆí_¼‡ÔöôGDiÅ¿Eiƒ­ÿ¿øžôÿOîõwòÜëÿêÇèÿokõ—êÿWäºÏéÿŸÜãÝÉC«ÝÕÿwAÿO¨‰tcÜß]íí©dÚ°nÃUìÝ÷†‚<Ô¿ÓjVƒõ›É« ë6¨ÿµ ’U´ß7‡‰áœlœˆSá³_x@mAú:ð2üÙïxú€¨jÞ<÷¾Sr_—døU»$±Î+Üþ>1ZÄêaÌÿå,šÃÿÊ.<à~ÙpàünèA,S ®ÍÄ2˜™ácF“ˆrر…*F’ÿ¬$¿Õ±’ü·š™¤^ÿÓõ!gKçü0ßä±[ôºY.þt¦âú*]Åd{•5Õ`úíÅ´Ÿ+Æþ²ó7•8áV2!¯Ïb I%çitç]²OU†“ç7e«J:…´saߥì¹@8~…j¼ÿ]M] Ð5¢à£zv²®‡š_adè‘ë¸Q ¹Ç&7µ[T ÷Z/ ÷òvÁp”W(9J~]É8úm}¾Ï‘—ò·›Dî‡%Àý^¢åkcö;Oe÷­0šÿOm%¼»0®?^ï¾ÝÝçÐÍ?öå)ô5ì6Í*fBp¢OäËò¿uÐL7ÅeAqÿõ Ϊ7 ÿu«–EH€úãa>=ÑJhÀßÓL›|e‘g]¤À&©ZÕë«€fí)ÒwŒhØ ßÎ׃óg×6a¸_y¦=Cì@2oÿ dÐT£öÏk[TsR$Àƒ›'©Fy¿ˆæ²O³[l¥}ä—/±ê®øååÞ`[u»mû5655¬ºÝ[²êrBg `û^Ý’©RÍYÌÊLAyI*•{«×üx8®$wÒiÃæà~”À²êç å|ÑŽkÎAk!ù­$OkÙ^uý^^²i¢„ÄC‘¸´¼H Q IäÓëX#ÔÞnÇ’6Aòƈmv5·Í^ý9%º>‚ž“ž›¬C¢k°øúö3Õ¤Žói D+N÷BÒÍt{ºîB¢Ç¤äöh0 Ø#}<9õ¡oyv¢pZ”OôR‹±øÚM+7k N>i!rs_‚Oþ³ :9ß~œ*ßÂ<’íШŠHN÷›2ËëúÂÅ‘ÕÅʽD©'Q䳵TÈ@þ;!¹“ÊÙ–ãlÒ*[ ¹•W]X ¹Eì(w|ªK3¨;T/ÍD¨Þ­H½µ¤]™ÜòeVTV­7ð$5ç¦N¶ Ý”ôÂ…òÈK-xiåX/Q yID/º÷ÎßçcùŒN޾¡ÿǣǗpý?–ïó¿ÜÍsïÿñS?ÚÿãÖVÙú‡XÏý'Ë÷ñŸwòÐjwü?v×6Ö´j¯ó‚]?vÐÛø°Ù:ñÇa;¡ß“÷Ä^€‡ ½?äfUR}ÙÁÓÓN¨|Ÿ`±>µú‰òvÞv¢QùHÓÝÙî¬wöå-F9[:ž,/.ÍiOYr}úÚ£«)ÝÂÖÀ\+ö®¦Sc3Ù OFç—g-)7å§ë#° ¤ÆíÄòi/ùMø^¼Zp°®áÆ‚œ|¢õËQÍ7‰æfžAä°8 ô¯éû"ùŒ½\ñÈÍ%Z²¡ýcvó{ßú¼ÏŸÇ›­]jpå4Ô@ðIC I19\ 5jôjB¯&I-PW\Úb’]\OÃtt5‘—ž£ì$ ÃKö¿ÔBE›ºd|4^vá}@dÍÀzö᜛ÌáÓ°cÿü%ÖÚmñü7òB±©‚Õ7‡øL&ü—Ø?åó·ü ÿÿ¶:ø–ü¨¯¾æ´Ä‡ò*óWË<;ÿí|—ûj\´š’`SÕµï$Xï~·–¨¨¯û‰éLñèÎÀÿ;˜-Ú/»/…ÃŒxœ†ÐÜ}”ŠáHÈ…ùQXå”ì@ÞçLôÞ…‚Î)!¾èpDf ãøm Tí¡&¥?ÀžyòP’¸LÇ ë }öXVp„Ìs"g¼Q¤„“»ßPÍ.Rv;úäuBe]¢iKÊ‘4f[ßÛ2€Gw’NÙùdqNÁܦ9:–Ì'w’Ä<Е "Dö·!{=¿ üCÅÁ¢âò£>~¿4Á›á2=žfŸÒó¯Ð»ô+ƒ—Çé¥üRJ 𷹸<ÏŽ³)¬…¯â¥\éÙèLUìÁËj Vî¬Öµ„Û, ¤FXKÉtɪ ½¬œÊ ubí…\«¢¾>!ÿ”rGíÊ7í}jø›dnà{ǣϭ‹Á‡Ñ8ÆÀh½sœ„F€ ü9›¤O«VBÞ:­XX?U´¨üÈ^TêìkÕÙ}4Û:OO§ ‹þ/ƒXFCÉù0„h0lAèù¿°gÿ0þ'9 ’©ç¢ßW°º­1øžÍZãIz:RÙ©óZ~V&˜j#¨ö†™ˆ)›€¦΋RhýþL’’ÿtýõºŽ[6é¤Í¤ûòûU€Ûi‚̃…½h¤¥©²ÜGvÞ~(óèÒf>éå7ºéˆå£z$s_ƒüÔ¾<×°Ý'ée:<™€;®[ñZJm˱•$µÇ (Æ-·qvÞý˜Äçv¢ë@ÎÂ1:OA;Þ³+x½'Ðo;œžžORÛ§¶éÆðEk¨ÙÀ@›­¢Fj×'b‚Y\Ÿä›‹Á)`ªÏÜùÆB}§Ñà°R dâb>´eI#ÚDŽÒÛfDo’3?&ŽsÇ›+L?™‰½òüQZ¹GÙ&±Ø&™™m’¶IÊØÎkÌ8IMñ•‹¯£‘¼ ^T”`wË8¹éK Älâòf!}ÃÉ̲#)‰/;ä¾eØ q¥GRSz$eÒƒÙà òÛ_h?…]}öçÜE °YXž³ýí iÞˆP‘ â†4¹a36Èá±™MR h_и<–¸¢ï¢@¨ŸÆ‚$ ÌBÖ‡uÞ¥.Dòé±§‘91qöÅÏ~p÷Á{ãWc8]Û6øòÈ'Ø—Z2eñA›¾Ïî ª©Bwvrq\ß'yßw›+§gƒ)‡8ÛSÛjER¡°&n£‰iG¿Êhä9õZÑ·F£_m4n§j4j@g¡•µ+Ûü^‰Ô‰ÀË‹LÑ"ê‘2‰¾}†YP$ „n¢øïU*» JîÉäê"=ùÍ8q®ÑÃó¯àát|u>Pу Cºë3p»°2î2ùw:§;Ô|¡C¾Š¬£Ó nŠ!¦7éxìžO/ÒÉ4ñãÚƒ¾'ÔQÔ¬M®H7OnªuÓÈøN Èì!Ü –2J´8Z#GwTEèÙŠ­ÊÚ+@[‹‹‹J¿ÞŸSrPÃÂó"*©¦6ÖD©‰Lã £XvžÒ÷¦E@„ ™¢‹bó°Mx&.ƒã3§Ÿ@­.s T@»-Ùl#)Òé7øŒ¤8ºÚ… (áTþjÿ _“¶ÓQuònÖhÚúGÉ´Ü,nð’‘¶ZÕ®NdŒÝ gˆ|…@†”¶€ÈÒß%­üu[­ìÝô4§ÃãÔaú:H°E6‚-rf¥†ýð<¦b}O6 þB•ìIÖk^_UÙË&M±²$ãéòrëñJâ©]¼¹pš¢i࣒ˆ.ÂQ5KEö£Þæ „¨/¡HÅPŽEÅïº1;믷»«[¯w›b»°¹û'— ê ”ëvzüÛëýx×ÞI¾z'ùëݲüïQ õ£gVwþlª üñb§Ii™ ‚jŠbíÞëív“øx•„ áÛÍhÄP ÀÇ ¸ݳº¿Ú“´Ö_ƒ]38¡}ö4Nã}OÈÐß×ëÙ@ šè ´ö>xŠJyÎ¹î ‚O“à§ËÁOå>u ªhÕ©Ã+ìx/ÒJh&Üõ!<üˆøQ0"8“ ÌÙQo`̉üëÅþ"†ÏT Ôé;ï÷éýç/y(zvë¯ûÕã|48é­°*ôg§ ôç‰Oy¨œf¿͹¤z­ÚD&beªy‚IÛ'XÔÌv8­œlQ+óDôrý.lfŽßcͬ5œ†¬ë¬­2鈳8ñm\µùõ©66vRï{ßHœÿ7ÚsJ ˜m‘ëc1ÝÒD¬¨ %OBÁ*40ïûøÃô­·ê›=÷½<Ê£çtd_¸•E¡v/å ò\)ÐÈjŒ‡JmC“ NÓó¯Î i¾È‡ì¢êQ+åÚ|›è³©†½ÍÕÊ‹“`¨Îþònób‹vÄqž“ÉR^C$R9à±ÓivæÒy'äH$2/wù\z:òÒ3WDRS€Ó¦Ð’$Þ-Ï¿{4¿&P›P„Zíâ”`ް™l¦Áí'õ”æfÆá²Èä,JÔ0M£%‰„‡,©q\|¡=§½ ñ5±ån”ôjµ&\œýøªÔ©“ú™x5&Å5&N?“ŠýÔušžÖ­×êibz”µ°#æÏœvÓhÝã°ˆƒÅª’” %‹•Î’…‚+!™²Å®#7–EUå8¬\šº2®o‰ôGùþ:œœO%èúZXJ:¹>¹óT•uK¦Ò'ƒb5/ðì•kT¼ZRêè5kvSÂ+×(õ{¢eEѼ³Q"/Û„Íe#UsæßôØyÖ³r@ª'q™[kô o- Éfdj›zpÊ×l%ò9T;Š®ëÖŸxõGäfá”Ù£ãצž”’•Ç;gÅmÇkÕœ85‡Å8ŒÁÆë‚£yŸàÊñx¾Ã.1(xçq.»Üùƒ‚±š(ü–Kè[qêŸÐÝo›£©!ä™~AÛŠÖŒn¶`Ok²ÍŽÅ6xÑ.a6ÛÁ;yûì8¢jn§¹³ \ÂC;æPd¿jýUrQ1M8dðrîlè–€c˜y#®Š´­dw7-Ñ/Jö«ESÈzú5nèѽËyð0vý z…£e¥Kz NÙ!6)íÑm]ÖI‡x öa1Ó¥½Ò&彺îå‰Ö¾Àó|Ît‰Ïvnå"_õtík>H7”láAª|Õ·vË W`’©,H¯SsÍë¾îmŒ™*_ù­í·n£uí;fë¿ók¿Ò*]ë^¯US•î%Õ´£3Ýç}º³Üå záVt£wx30³ÜßCïwwn ýžXŠ«¢«9¾t“WsGáyë—ïmKX†tº·wñÞv׌ußÐ¥{ÛÞ“U¾^97Š:S[€Ö¯5qjýî/Ûa9u» â[ÌsÍktŽúµÛ¥™¡Mf¸Ó+´¼,ÊWá çŠj^ã¿äL¦\¹:+šUyhÇ™/²²8ª~qæ—*NœùÓºgÄ@ÑÀL} T4ÿëxrò ñ¿ûç‘üþ å[ºÇÿ¹“çÿë§~ þ×m­þRü¯¥¥•'þúO/߯ÿ»xÔµ~°»×y³é!­ïm4ÄÖë5€ö€ þ@€ø™ì«>Z! ZœL-|4ˆ­âð^ %ôCšP4 CÊ®Š&: ¦aÁ–ꀉ­ëW[{% j¨šSk«ƒŸ¿¹.²ÚLðjI®QjT4ÆÚ›Zk{¦oë5GÙÜÉ ¼£-†dfÀ°–d„4˜Ym ³uŠàSá»Pp ¦†éûBMåaÈ&ò‹ÉéWÙ[ÿ?‰X{ÿbgäÕ8ÃðvJ8¡Ak©o£-A’¡”å(]*”®CGÅÖ¢bg§Š.š “Z&Õ*LâJ¹W£B(]¥F.©2©UeR±Ê$Vå=´Ü=´ÜÏ-§I:¤V€YØ8lv Ðwò'€Ïgò¨!à\€'ÙX/7I¬JÇÂè0U… «‡vºÆªX/»s úÜwÀdò[€ù²jltV_@42W¢«Æ¢<µ6­wç ÀËÃÞÙÓoƒ©õ¶ùßV™|Û¼ËUÁ¯Î0B«Jé]Ôÿ7m“ã¯;3|s1ß2¢}ÔÂm¿G!1£ìçØÀ:W– Câ C2ó0$f{’ð0XgÎø7ô.¡àää3"™x•¥¦íd8z‰,z‹¯>—[ÈHÑCÉÓÝ9wˆ–e¢€Ol*dÕŸï´%`ÿÈ=cô>Eä„ "©ìºT¬œÐ6F ÑqìšüQÞÌÎV¸èNu:⃑¾Z°âZ®K7Ý  ½±`é¹ÅúmU,±Š‘“¹_TQì·Êíb„GûL•w):EÉò š{óÏRÓR6•z¯ ú¢È|é»™]…s²‡FõöZQ,Ǩq±6ÓÍ«^÷¶û·Ù=}÷)éž¾K•tÒ ÖéÞÍey.åþƒ¡ÅØ`™»fñ`™»+gí÷¬¡‚Û¥‘B”Ä7bëÔ\h³peƒ‚ &Ô’6SKJ¨%ܶ¤¨m ·-)k[ÂmKŠÚ†JÁg\º€±¯æ²j8/ª;ZjVòUD_p ­0)â@[h¿g³ð/aYô.øú –Y žª$Ø1 ¾f†'mÁëÃL™×"KÄZ„÷î@‹¢š-‚š½¼Oh±¦j¨òsCøŸÖv;_™qÐ÷ä–¥v®,WG.W–ÇÆ-K#ç•Õãe—U£Y‚^ªŽ5«G£ñ.XƒáWm(CjÁœÒ‘òVaN÷árˆÉ 埗6­jÿ±Ú6Û'b¡øñ¤ÙȨpªS®µtp ;Óš‰]¼ßvþJŠ^Æ~͹Z[[hé‰>>¾º@óš“FÕNÊfÍuôBœS^°2'Ï„ÿ­C<=a:æF[ ñ`#Ÿ)wÔ‹Fâ;C«‡B–.òZ¶uÊ0‚íX!¸ñnCäÁŽU:V_ø¦eæJEãµÆÙÝì¯!ðpYäteeú^]àA׊žÝçÛxÜS[uÍó¼Ù×Ò o;'ð’fû_&ð`3ºi7û®4“Àc|^‚µÞvPàí h ¼€æì:¯Þ8G4bµ¡ü¦ŒG[ĉÍ9nÏtÙ‡ˆÚ§êYÃC±ΜõǦõG²QtàMŒ)œØd›LRB&±ÉÀh͹ÞÞù}­iÞË_Þ.ÏÁÛ.;‚éW1¹:Ò±Erº g5ÁàˆãÑxHÎø È6Îs(I>ݵNÉdNQ©ôB’#­r¸k‹‰U6Qe[ˆ^é´ôy{ò—½`i3E^"2‰FZ‘㎻ lñçbõàK1Š7‰O©Ì¨¨ÍNw¿!ÿX•GŽÅ¦µÎîø099]„¡µ[›Va^“n~øQ„EÇ?:ZõÆÇŒtF;î䄯Ÿ=³ÌBHÏ>Õ¨2ý©! Ë7G¨¹nó±ñÞ'çßÿ§ý¤ýøI’´—ÿcùÿ㎞{üŸŸú1ø?·µúK×ÿãÇIÛ_ÿí••ûõ­võçE €MÑk yGX…Å*â*£¥}m(D±Iæ >Ìw4à géq5˜™(DÌ+)º€«pÑ%]±Ú Rs"G¾áá¨Xä1ô:Žh"'S¥‡NáR'.`Œ‡bœš€×>9¥a8àPÞ³å7|ókl _†Ø³øt>˜LÅP_176g²†?>FSY÷Š/.ì`¯>ĉ—sbÿ÷²!èe£Í¬&«¥€,⓽›ýí?*ÀSÌåîª$úà üBHˆf¯.Mk”d{6íWui›q¶™"ÏÕ„ÐÜáÄ‚=e;° ¯ìv¬:íxX üÚ+o [²9 £±RöªàIŠÄ–¿åc‰éB}•<’ÉÕQ_Þ“&P~lJ–q}î\3²òG{’2¹B±“6Ó¶ºèwcBqfi}éU´«Uæ”b #Ñ‘«‹HFÎÐÅà‹ó¿zàÌÐ+gv@ªdsùI˜à;àÈrÜ•lÆÓ€¢Z#–·W7HÑ‹QÌ…(–G(NrŠ7ª7S°FÕ•Ó9¡s³Ç¸…sÂw:ëu#±EœÚ½$£{ DÇi¥¥Ó]=œ9"™ ZTª©ÀË'Œ’‹½èQy %é†+H’øï¾²Þ}ïöªg—òÞ6î…ñ€ú;”j\p*xàÈÃE¹Ž«ùï_eÇYLÀ”ç–I&'ËQÊÊáÃújÛÓOu†Ù4“Ç¿‰•è©Ü`@Síí´W²(Kc]ÇÆkyÞCc—¤žh‰WŽ‚PÞA¶>ÛѾÁ©L® aÛ¹dY™×=yz>°”u«`lé-l©òll“Õê²Vk-)ý¦Õ’|„­C•¦uRZ•×å¯(t¡Ã«öÓ Ø\›8r“§ãÑml¨ Ï5«ƒ+\䬀.˜¶|ÍSª<ØçV‘±à]…~9 æàž6á9ÖWEºðã@h·,jv5ö›ÁÈ1R¯Úô—ʺC³ ‡¨Éƒ#‡ p <ÀôeštÐ÷`¼;¬!pW¬X`9Ç–|Žˆ‚€Ë%ä¨XïøþçêÿÆßþïIûþþ'Ͻþï§~lýßí¬þ ú¿ååœþïñãûõo”žþo÷^ÿ÷ïÑÿíÞ–þ”· lÏ‘êOi?Æ€»÷ ÀE˜}Oª¿]­ú#.¾!Ý`ëÝëþüµy¯ûû±t÷z?üó^ïÇO@ï·ûÝèý>.´Ÿkëý^‘vÇu1¼!½_=ß+Ô£IV*ÐïeO/šÙÓa^'X Ï4Ô(Зåõ}"¦òÃôy=H§ßuõ}aeŸ©kÒÆ†•!|l{×ËÅèj ;¾‚ÛÔÚ-Ô ¶Ÿf­v³L'ˆÕ´¼ÐXVÞ¤&p÷î5Žþïè[êÿV=Y~$ $˜ÿïñ£ûûÿ<÷ú¿Ÿú±ô·´úËÖûñ㥶¿þ“{ÿ¿»yx3tõk» ñfs}¿Y¨ܾW‚a䪪 M¸ïHc¸fk GCŒŽ*ÃP²«¾üTìpª°¸á^dF°¶»!>lû²Y#ì¼£}\uá5€û=•_@œÔ¼X“ÿõEÐÂÌÁ˜þÇRH²š Žÿ@!¬Ãµlë øé$Õb­Ã)Î`Úõå1xÕ•‡Fž >¥â(zN÷Š;A0ï˜Ç/³´›Ý§øÉ©¸ÍÍG€-zÔoRF/{;'«XŠu½é7a@Ç)‘"íßtM¿Ç+º€Ìªúµ ¨+¥ÌvÔ­ü°ì‹x¯÷œQQŒaLO ÌGÙÜa“fô™œíûùÚý¢n¯Ll Ôµ@E ŽÊ…34q´¬Ê†0ª#~C}¢œøžÝÅ Úg:H45ß¶µU{:á‚ìæ„°ÕÄÀµÖߨ¢ÌÓpþ÷ ’ ¡*N- ÖëM’ !NÂi+³×çSW­&™ÿ©Ð2@ôó¾Þq¾Þ1yBnDÑ®„ Š…Tk­ë­¨â«T¬õô–Dw…†QçK!Øè6_¹ ¾2w-aÁ®*Ý“¥«Û¼Š§Á>2ŒÆÙû „6‰­€¥³Í±NîäêR‰¼œŠHÔ®è Ÿ´]ìYV"•àfád]Ék·ýv;v€®-" cÕ³³éÜ”EÀ®,ü4ûÎÙ<ÛPñÍžÿæŽóæ[ Ô¶ÞÔÓËÇëxRb‚ƒ $ÓQÖc$T P!Q›F{ÞBŠ"ä&nÉ52î0 ÍJ4ó½97ñÛ0!Ѐ« À/ÆídxœZ/ókó½5µ ÷ÖÙçö£ñ!õο!åMã&SþÌš¨'g›)OÏ·µ„Zµ)J’Ö8¶/7ŸLKX(Ó„•—CÄœåñVv³·„8Ù•×fÍü7”í"T÷öêfïRç-pô}3š£¾I¯jVŒz˜hã.,{8¡B§¾ U‡ÜÚ´¡‹¨¤é7ó|Ö Æþ0î–±=h@¢oAºí<(Êã Æ^™öJL93¢m‚l») e’dó$X\¨¾1ç• TL$×)h(±¶Ð'”AwĤ*›2_÷7—£¢†é3—š‚fÑ~ÌgöÄ…QCsI@\0 mM•üèÉjZ–ºjãªÅ= …&ÜÄK×jâ„Él÷ËÈx†9f6¸¹»›¤^j£ŒJ—ŒHEûòZûò5]+£»4}¼X‚Siw¿]Vudö­£Ï€5+…««BÀæ |F•¿Ñ ÝùàªñÑÐð,Þº//6_ªxÜRê):PÙj%›ðÁÄ*(‡µvØ0ðj ¿; xJ/§ÐÞYv:áL‡» ÉQÄc#€JÑ‘m’N­Ó¼ÔZX¨vsÈàûà`Wào@ñ:#–4Œ×E»¸…6y l…¢R4‘Ž"¿«åMÎ <…–9:Y |赪ô ãx‡às­¡êÛÛx¬.fÒýÅv˜I…ZäéESþ7ç ²È!ÝÁ0éd‹dCí“`XÕ߸œÇccû+_Xæñ=ý•MWÐê‹[|Dw²µýÊqûÈ­,Ö°òÊúéÏ/àŸali#`æ .m¥v½‹µ ‹ödôyøy0>©¶¨Yáç.íjëºd}<Òë£We}<*\’Þã%Ï™£'¿]Qò¡ J‘—-;Pr%"#ò=våÔãÒuÝ«°®aäÒÊ¥=,ZÚÀœ½ú&©îziÛDÏ?q/ŸµoàåÿŸ³ï&þïÑÊ“{ûÿ<÷þ??õcùÿÜÒê/õÿi/'¹ø¿äѽÿß<´Ú=ÿŸ—»¨ºélCîjÈ}ïýS=³kãÈ¡NØvóùŽ||^:Qa× Çþ+ÒOvº%û;¤k¯?L[óbó%z Àä¶’æèÇBÛ8¯dgY«­ŒœEý¨M¹p<':!%û\V ¼ ¼EÑÒ‰ž2hæÈ›ZXÀŠ¥lç—ãôS6ºšàÐ1dò0A9©Ü)Ï•ú ˆôËqz9ez6…×-»HãúTgSÿæZúÚp?„ÆÃÙvù£‡ÖI96bé7øêY[õìÙ}õì0Ú¿,2Ú³_O`ܪݾW3’OÞyî>–îßk÷fVÏÞÝà·\ƒ·ç–uoð¾7xÿXMÈÒ ¼ß{yS¶åB›r‘íÿË]=÷öŸŸú±ì?·´úËñŸvïô¼î U;}Åy]ÄGÍ$6!Í/>⣚ë@Àß=Æ#<åv!³ k`®¡ˆÁDæÉzšüëÂF¢êº:n¤Ì˜ÿVK [rê&pI„–\h;à’p’ˆèñ‰@?&EÞ‡[¸p’½œ¤ZYW`rò€ÛÒl“²ší˜ÜNrŠRWÿ÷ßo‰ÿ¸Ò^~$¿òÿ³÷n]mäÚèûþ5öK BÙ\zeíÞcØ:ã:tÎTwŒMÛ&é^gœÿ~æERI*©ª|Å@Õè`«t’¦ô}sN<ÿïïVŠóÿJžâþïE?úýßrf&ÿ{¯ZÙ·çå°à¯ä{•uÿ—Ó0ï5`u'\ï‹@Ȭv?êõA C§ö‘ù`F ¹=\K—Í óQ8¸ZÌ%â¹ûñ,Ç%b«¸D,.Ÿà%¢å ®¸D|Îärm â×3Ùåç«ü‰²Ê×í²9ëžyæ›å)äuE#o|ìÐMô||† ê@¦ûï¼~Þ@Gkî»âYn²!SúyY7&«rq6³Ýßñý .Ðgp4•ô*¥Óš½ü¿ ÷çv“ïwS6m=‹Çç„Ka~/\´p 3ù÷µ }ì tj·êì„ûþj^:½i½•¾}Øá=¥AC‚!ž;éž6kÞ³ò›á-mÞªêTìݲš]ÕôÙ¥ ÕùÚWK£¢Ð×±J(¬ð°µFƒáÃ×o¤{+b±Ö:Kï@þÒ0XUSòŒ }naZɬF\Aì¶q¬}´êoé. V"Pì\”·%>5õ¤p±* eÒÙ ­i¬Q¼­H&aù¡1ªÄcTÉ?FA>?3›–ïpÙ¦(Š¿¼C~¦dÐý2æÉP¾ÓôÓø˜ñ]qð’ætpŸµ+|“^m ü·F7ž5h™†s»uMí~j¯œI›g¨la‚$~òÀ¾røæûw…¡eß™9P±eÄY Ä籎\®ÒltÎð»H-Úµ‡oS €9áir©ÀÓªÙr ´Q?;KÄF‹Ý!!SoU§ý{FÿÖð¥-꘣ïѨè^H¦s{ö•ð˜Ø¢e Ž0Ä8¶ˆYÚ+B] ªtgÛÂ%ÖŒÆV£.°Ô4?Rí ×|}HPY`ÕÔÎà; ׆ã­Þg2º¶…'†7/a—„òÑíNüöðçÏÞ8z¥pNÔyc¬Ó¯ÜnO‰Xh7’­˜¯[P£Êfþvýë>ûê£EàU þájUjýÏ·Ûº˜l{ Øfu·¼ÆCo¿ ŸÖIfsdâ^uÍž4»QOxC'û›‡Ñv$?^·y•55¥ÕÖ¨ú«ÞЯÖÕƒ+¢¬¡Ê‰º¹Pæ@·"sÍES…·pR:’nNDÕã:ÎéÒÎimemvºF:‚:Úzí‹Âh¶ÇÀÿÿꯋýÏÞAÿ¯æ)ðÿýhøÿ’f6þ¿¿[IøÛ‹ù¿ŠGh&þÑ\,þÿ2Í€ÖÈ¿hÎä ­3˧clKÇ©§FóÏçCó/šOÍ£ÇɼÒo-Ò/ ¶¿oõ69Î5R±}=#­îScû&0mKÄöI”¿ëƒ¤Ð}=ƒèŸè'èsú[Sý-è·geô@ÿsú _bùþ‹°•€ü•®=;Yл ®” ¥gÃ𳻛 .p/ë²@£>h7«ùbw]43bwé¹·  ÍF Ë ,é'/ß@ë»_<ÅÏ阎záÑÓ9Is² Zz ëÄ6ðÞ£² ,™{ñlƒc¬ Û€5AÝ€]ñ©k*ÂÎ%ă­VÝ䏸wÛŠa'Ò<ƒV°íçœÓ—ëË5àî÷ ”Yi:YG@Ë` h]xFAtõ>ÌG€jo5rDZ[€¹W $þ@&[ Þ½ù.õ#yÁ8Ǻo5êÛ "ûuã@Æã¢Öú@ælêó`à 5‡'ÃÙ-+A?ú’I!hBlPkݪ‘âÆ¦6ÇßÔÄY{Dï%Æ©¹ ƒéYÊ7Þ©¹‰böéB ÙvÓü°¥ÀÏ( ŠÊj¾¹›žS@ "RÊñ¯^AL487ÒzCZ®Ùà¢ùŒÈ&þ¿>ñßw üo%Oÿ¿èGÇÿ)þÛ^u7áÿ³RÄ\Í#ô ÿÏÜ»ÀÿŸþß^þÏGË%è@U‰Xßý€vAx*€Þ:Aÿí„Yý/ûoØýØÿ Æþ×ÕÈ¿’s®Àÿ3C˜å2òo=ª‘ÿaøÕ­Þàÿb-‚À­Ðà}!x÷L+ øu‚à³Ç(X>Ûà&~q6ÿhì_&X~…ÇK ØåÙ»áô ¬ŸÏæ¿å´ù¯´_šÍké(þlþ-ìZûuÜ È2ϋݓŸwDo ÂëU³RkïlrK™ÿOÛx ¦ÙARò8LXbßs à^ ž&¢²ö_’Å¿ ÌdîŸjÌŸá~^ Ò"ðEÀÏE=þ?ZŸøŸ‡…ýïjžÿцÿ/iöçˆÿYÝOÄÿ,æÿj¡g˜ø»ˆÿù|â¶—ÿ“N°‹ÿ™êožûŸ‚çþÒ2óÏôß¿ ¿}aÛøûÝ÷ëÙ¤…åéT€üæ¬,Â>­p "$¨vóù܉σ¶ŸBHP2´YdHPêÙíÀ…Ì´µ}®mmŸ®° çÛ­­ùBƒ"  ƒ²KÄ›@½íp¡ÂZIZ¥ùÅ{NŠây¾ÕpDÿtÆýl4Ø’ _)ËÂäU©û’´¦Ýë‚hõļ±+²§Vþ®³©á<¹ƒ¨{ xÊ’/q¯ŠæPçØë J%J_d€Ïv2ÀgÆcÞÿ­Oüϰ°ÿYÍSÜÿ½èG¿ÿ{¬øŸûdÿcÌÿênqÿ·’GlnÖý_ÿsêçyÇÿl/'þ']Â,:ügq‰X\"Òót. K¡œ—ˆÏÇRhîp …¥x K!|ž¸¥P†§P÷•°JK¡vôq<…®ýÝz~ï ž –Á<ÞAÛ©W­ÜÏí4_4R­ï–ä´½¾!JŸk,Rà±H×È4)Çkbš”ítúX¤3»%8ì;‚=¹L‘ZšßÊs¤ó¤ûÐ`-L’ò¹m»Ž>× &j|…{ÍrªGÊ_¨t:Ψ‹cg¡¢U‹ˆ9êlhjÃ$¶lzÍL4wа£®X£sÇÕ»*·™Q[Íh]‚ŽO–3PYQYMGüÓT£#‰zëŽ=[¶0@NöItîË7zêÆÈE/=†ýQûù„5ðÿÉùÿ¬øßJžÿцÿ/iögâÿ•j5éÿó ˜ÿ+yÄÖoâÿ—íRpõ¡ùžŽ‹…ÿO7ô®Ö®wçØg)·´t¿­cükð_~AØ'(ÿëp``ün$³Ñ°û¨·nh9†îmèjÒùã²ýö W«÷…:t²WWp¸ ÃÓ@?9‰x åDú¦Jo“ðý˜?eÄ€ŸìÍÐĈ jo‚«û{¼À SaŸîrj»ûÁ>]ÁC'î€[e4¡ŒæðçBË˜ŽˆÀcæ&,ôÿ¡¸(p,m^$ŸY&ò±!eÙ^³(¾·|wHût8|?êÞö_ó"ñ­)‘ø¹#ÑŠ\>¯ ÊsÆâ[¼(Äd¢ñ46"o¢ÛQȯ+"»†ˆ|Y³ È†åˆ5ØB@zЙ>|€²é±#æ´¬ÁîSÂ×®ò;ÐÚ”rs¡Ûe‘MJmr#ÿä¥,\Í<= ¶ ž†Q%ì/©èƒc ô„ärJÚ5^i¾JÁÇ}~8sãøßJ)k/ñnÂ&Á=ù=hú¯4t?(‰ÞM‚ßQ=[|-ÿ1Ñ{›á5=/ çK:jÅôRêõÖ*{·{('f¹^FÃ9ƒ—QÌ̓žü³;Ž1`Ú»¸k÷qd]‹)Ôñ©Ç%¿õ¾LfPA;ДáqJ”>âxG“˜ÑŠ,[üP$†ÿÞˆ3™?x+ËÄí¾‰žº.ÿuHTü.½tƒKHܲ±T'lH(¢á«%—ÛʰÐÓ‹m)cHmè~'ëࢄCf¦sA…ö\£1Sn`,•йd®ùjgÙBGÀ )u¬g.Hìö_FÄvb@C[6ôw…í© Æwˤ\]óƒOªaÒpªpÀU¨¸ÌEå;²êžüyUóƒÙš@VÞ Êð¿ >ÇòØNÊ#qK*:î˜ ­Z«>wÑLøï®ãÇå. ¿€Ó>:þwW鯋ýï^XØÿ­æ)ð¿ýÄøß²f6þWÙ=´çe·°ÿ_ÉóÝÄÿÎ1q§ñö¶öv­Õ){Œð£l¶Qa&?yÍ„è¢6")—e¦-1 ÏÂ-‰Jœïü¨#ÑÑŽzòÚšAȾ°,6|«ÑIÅ<Þl§x®Ç¾áã uþÝzUðnZ{)yY¯]&^;‚w.ŒwÚ™EÑ;X\Ê[P¿Â8ÂË»~µ¬§u‹˜…ÔûëW²‡¶TŸ}ôEód‡«¤`Û;G·é>­.ʵRâ ÔŠ0h—x•ÈS¦®UtÓ&¹»7Ò·ÓÒ·=^áÁÈSƒ––cPÒ½æoX)/ã”XléRKˆIaT~´£ò£ÕÅŸ´!3 y¿hèWÖÍÍ  Ü¼rfËTdÚ2{ž&^¥Ï^~Z t›!ž—–º+\¥/Fe 'ôÝð¶÷¥ÛOÈíøóà CÝà»!µ †ÁS†Ö2UOÞ¹°ôLjÙ”VíÊË“8JåIX{¤›æpDk¸Øi'Ñß¹Ø<’«"ÿv´IKÿ¦Æühc~´C%äöêà²$ŸRkÃÜÊù^;ß0…kJDz~w¤ë†Gg Ñ‹„žÑ´ºõ·à¥hô€ÆmU´™†Wðÿ‹µÑX,0íÀ‰8³ÃÔ'‡3ÃàÅ82Oßó°Æ)Äa´(Íö¤u!|Yijغ‚P?,ÅÆæZš¡§ ÒW>çÆà/f™„µE ÚSÁÚ”hi2KÙäË´<Ðw†‰|Âl=ZOÀãɰ–SĦ´pù‹”–&_>Êk`îúÆp |N˜Kò^K±*ÿ~& äøNÄáÕVÈ´°“eÑÙà÷=ªc­~ MœºQA‹Iíïªö½9eèÕ3ëÕÐz5ý$æíž£ }"ž7ôé›ðc+áxÍתb•fâZäËOÐpòê1ñìHwkk£\çƒPGMÉZy˵²æÖ;²NX Ænxõ,jd¬Š òÚýQP1í[ãsEÔÝïò¢&·LÉà3Ô­?S¯òl›ÇDá¸ÙËçõT ó²€êÖá1ñ¿Ç´ÿ³ð¿Ãâþ%Oÿ½èGÇÿÍþ/LÌÿJáÿw5Ïvÿkø_ÿiÏÒð¿ö£à/þËïù¢]ÀFŽüWÀëÿµüÇÄéÿ{ø_»Àÿ ü¯Àÿ€ÿ5@ù<=*pÀ,p@#}ŠÇæ°3}TÐÄù<`àÓÇá9=òVÀÀ1O#é’qƒy^Œ‚8_Qõf„ {É’d˜,éÔ.iZÑ ΀6œØaIìÈ^Ï£t]ä@ç [¿E<þ÷y}üîøßjžÿ{цÿ-iögÍÿJV+ ÿŸ{…ÿÏ•<<Û-ü¯Þ.¿aУ<( {Ó76þÂg(+W©¨^™:=å$‰í-)X¨âóó´Ø_ã 5¯Û08 Ë\*hFH<"ÈŒÐÀde4xJÿïõ¯{ÃɈ(B팔—*¥2ŒSÂG‰&}xì&}H6郻I’Mú šôŽ!I”~J‡³Ž/hLdò&²}Ìt~;®£g™oÝÜRT¼îckxúÜ»íu93t³ø>ý•Ƥ.ê²ÃU q’µÐP(ýÈÁ°¿Ñá«3¾‡ïz?¢þ?òž;šƒ¿ dÀI_ ,d3¸üö0ƯâHŒ†“T—óÜማ0ùÖh‡Â礨iž±£¾uDÁç}D Âs&²~#€W¨Íÿþ|÷ù¾ý΀ 'üºÁ_±“\K¬S*œ‘<_Xuú% þ*ƒLþ Eýõ›V¥ïXuB½Nip2U6Èæ^$áaÛïî•䃻9Pë2RŽ33ák»ôv®7 È–è×THv ØåØÆ"ìºÐ‚q™H,ð"­cž°mMɉ³G½¯=˜îúû¢dŽ ¦­Œ6ªO±I²{æ-az<8#œ|˜™å³ BÐâ®Êùú௠ùwOï{d§ô=&|=›ß–5Hc; ›ÜËÄ–—º®\#/ ×%Ï@»¡Ûld\ #mÊÓø ´òmÜGù­ £k¬ú&w:òþýÑk°jIdRË€5.`{ÑI.ˆèÏÓÓKæà«$¸% à«$ø'|•ÿ$ƒ¯’ œœ¥§?°Ó—cÜŒ¤ZØ7›®!´cÃS Y˜ëg”‹EÉ Ç]Ë_ìZNÃ…IÈEÒÓýÇ©݇USˆóDZã óî›pü¸¼×Ÿ“÷zRq^¿Vxy柉ÎÕŸD¬{ÛaþtÅj¾Ž§,–ú0PÎð]5™¥sšsvN0[ï8˳wþËûw2ÁÇÌ@A†ôæd‡Õ9 +Ô€‡^–N)3'e‚3*EúÖFqwEi2½Ç‹;~ô/.ž=>ÄÏ/jOèu%®¶•‹×çS5êmʘ¾Š,–g`³àDvȸ«$>µxw{ÎÚl9½ Wlf V˜Y{f©c©Xرox#&uÊ€"uŒN œ>§{‹·Øv,â".9“‰ñ⃠_o§¬Øq²Ö+OU‚@<Ïlú0ÕlòO¦æ…1—:›¦jÔÿ$—ˆ?£iϧP‹µàMó¹æÓ|Ñ`-™Oî1øŸßÖ‡ÿy°_ð¿VòüÏýhüÏ%ÍþLÿ/{áÁA2þ{¥˜ÿ«xx¶[üÏwîóZ£>6Þ5 ¨¸¢^4TÝÇ'‘ ìuî-Šüf€²˜MÃLx1»põŒÏ<.[bß(•Õ9ˆY†ŠF–E4¤¼¾_Ç|רáð„Fw8#x×~û†Á À^¸Á?¶Â˜ØûÖËGº[ —œÇ‰Ë¹oùYoOí†òáÉÄ'«D|%“û‡ˆŸDýéÞE g#e@²qîGÑÞðaLWkà‹?!×è|}R‹éDßD÷‘ŸžÃøá³$Ô²À¾9-«ß6Ò8Ävñ"„? =ðãœ)0 HG±ˆ Œªæe…Rgx ñÖ¢×[S†`êb |DÀ;·fä{«•ð—'˜ž®—A³{·TšåpÆìÛNfœÎ­rê²;ö–Úi£e½c Å*ÜÚÄÃó$èuc®`ÌŒ9ñŒ9|fðWÄpÊi-ƒ÷îù³àž,û­õ.`Mm•1Ùé„·ÙØlO„ȶp/IV`&-qó°&.”@Fð9ø×o9}"%Øm tDäBb]õÐëœ/|•îž)Á}›Æ=Ós¡¤ùäÜÔ/Z™ù‡I_JàÅS±ÉÞÅYêÔ°ðŸ2z*'ýéÝ#ÓŸÒñ_Šø«y üÿE?þ¿¤ÙŸ#þË^µˆÿòHÏv ÿoVŠø/EüíYVü—f¥ˆÿ’ŸL°˜ø/ßc€¿²AÞþËÿ¥yQÄ1r,â¿<ûø/³áæÙ&rç€ÀH?z„˜ùv„)€k^ÆíÏÖ?2 .³Ë€Ð‹È0ê)"ÃdA Ed˜ ˆ SD†)"Ã,>2ÌÙZ†iVÖ<0LVL3pL¦ óˆaäå ‡†Ñe1~ôx1K Ó¬`cÞÇÄÿþZüo?Ü-îÿWòøß‹~tüo9³?ÿ; öìù_Ý=(æÿ*ží6þw± M ?>aCáæÅ³7^lï< Ûk=2¶WØð^ïð^ï²……la![XÈ>:<ì8v´êdªÙ|+-Bœ(1¥‚VìQR¼ÛÆO¶Â…@Æ caAËu†—…Moãc‡¡ææ[:Wù< ëßúy£•aÌm¦3YúQìO_—eÑ¥®î[­-1½^–ÉRj3ð ½F?/Ëâ~ÿ‰Ú?ZÜŒ—ji\ îKDÝfï[1…"ÕÞWÓ;ÞÑûH7!%a‡¬sï@=û ûÿ+0KÅÎ$•œ˜ÿL‹‡1ïîš³¢>­Á¬çѹ>–d´ýåøœkÞ¸ x#çÚ(È0XÃ?ç¶f6¦ª¯©)ðÙÂ,ib?ݼ‰ãzõQ«G«ÎžÏ£Ž2~–ãzÑc^` ŸU:«“¯E ¬ï¹’$•XÊ*3JYBÌ’ÞôòÏLî®#TÝJâjŒ®Ýh‚Â,»ÞFúlŠ]¡Oeu¤©]¦£s›}õñÕ&~c—ÉÅq„ÆIúŒ·i8 Óè┌"’ [ êk&\!’L”¤ï{&ëÙ›ÃdxSHºÞ7˜;®ú:|ë7ìwœ•Xnô­°tÖÖF[õA*·[ºÚÅÒùtÐîàëCò‰·)ukdR‚è¿Gž8 ?œ[½ÏÛ¡M Šù8px%ÿìŽn_¡ž4üù³7Ž^Q¹¨ë$”£ŠÁÞ .ùxfFñIçOQ+ð2Œìžòñ¨‚T*UdSNBUjÑbUÊ­ ’ôªÀŰ ÉJ–諸íÁ=p’Yç­íªÌgA7¿*uØc̬°Iµš72D3æë„¬õz þ×_ý‚ÿå{ž)ÿ£à½ìGã-iögó¿vwü¯Êáa1ÿWñðl·ø_Í‚ÿUð¿8§uà]4 þׂù_Í‚ÿUð¿6_ÿ‹‰Z HëÜaÎ΂©)ÙYý.‘³´‘\{~VÆ ¶Ê…1/¬=É —Ó‚äU¼ ’WAòOAòZ5É+'‰K#p ò–ähùO-ykQä­J³ o­yKQLL¸Ü|)A㊉B.ˆ¨ t-ЕÁa‘~TòÇ[pu@½b3ÙóŠff:—‘ ¯¥9]–—,Z×EÓC¸ñïúsVN0pôÞ±Dvtìjó5$ߦh6û.pðìbç +Aýµ~\²|eðŸÏ‚(æ•Û'J«LOD±u!Še²ÂÖ™•Å,“n$œ*6+«Þ½ù.Ù=Gt‰3³Î¶[úv˜Íò ΕNÏ ßÜmßâ†fñ´Î@~0Ý¿mIÍ,Ô,(MÆÑJ+vq´¬rÊÀ f–¼×.t2³Ö„uÑ,øXÅCÉÿ­ÿ«ðÿ³š§à½èGç-gögò¿Ãý„ÿ¯p¿˜ÿ«xx¶Ûü¯D„Á‚ÿUð¿Ô³zþW»àåâÑ™´ŸR¿ûù_í‚ÿUð¿6 þ×ò¿Ú ï\lí `í‚VÀ XASOA[SXáÅk-ˆ`í‚¶ND°Â‹×Ë$}n¼¼|¯vnÞÌÂ=xÍNºj¯%éªpàåàeå—/~Ö—5l°*^–IµÊCÎzi¼¬`Y¼Ö‡½5¯O-›¼U¸ÕZc·ZeÿÐå¥oås¬åÏF ŸK'rµç%rüŸQe]ø?{aáÿe5OÁÿyÑÆÿYÒìÏäÿT*ÕÄÿ§0,æÿ*žíÿ§=•'Þ¬]° þhÏ#VÃø™‰ØÓ®¤{îpx~bàç$i+•§à‰@{ÑŒ·.o¡ÇÂò²J’$ ´·.1¶Øºr„ÚÉwi¡Á#s„¦¦ÍÂ’9%*´a¥¼ŒS¾ J—Z²‚´Æô gÐx^DxÀö…퀪ˆ¸,ÞP{IÑ­­ó©ó†f¯”KkêùJ¯'æëTÌ,âÇšó>Zàû–¼·r>àk\dvv·vÂñ˜’Û!æ·.RÙFc±ì {ba¬‰Å’$Öž‘F€˜’ØBd(ˆ O?ü˜=„Ó€äíJ6H¾Ü;¾)QWúñË e*N©_ÁXýfá•6XIXbèœ1ôê™õjh½K~avOQ|4 40F+¿t(1=#üÏãíÀ…œ™^â¯è˜/kéÑÀÎÚôd e@¿ôey˜€ý 2`€Š}Hèl~ ã;Ðá2¹¦É“ß >&R¯øbpËS<î¶A_îåG´Ú•Â5Á*ÿ«® þW)⿬æ)ð¿ýèøßrf&þW +•þ·»WÌÿU<<Ûmü¯êÃÿšø„ À§‚V×ÙÇÄÿZü·ðÿ¾ª§À_ô£ã¿Ë™ý™øïae¯šôÿ^)æÿ*ží6þ{Qø.ðsðÿÞ¾(ü¿/ß¶³ðÿ^øÂÀnžk.ÏÀ³p oµµp _8†ç§p ¿h¼ú©;†w£H/¼ô·Åå8^s/ÆK¿ðþóNá0~QãÛ•Âaü:9ŒW®­M?½æK ×ñ1ÐcF%áYØb§z|ßv£õ?Åʉºí˜Ø¼Û™Ù¼‘ /¥Óúr¸‘o_xÜ|û7 ýMÆöû­÷å·Ü˜MÓ©¬í%Zz9‡ù™íí?p8ü·‹Óƒ=õ×úy°ÏWÿù,ÜÓ{åö‰º§ŸÎ«eáž~]ÜÓgú¢wg¯º)Q«þ|‘›RLœ¬õ*­°õñrÏ>í5÷„$œP˜^îëÝ›ïÒWz{ø3öq¶ÕØjÔ·Ùѽ¯ò;X´£{ᲃZ™åñžükàÿuøÃ”ÏYœÜ wΠíÖÃSìâÜCÇz†m ÿöaÒ¿}Ž•/P›Ùò¼Ú·cÂsA([òcò¿þ³6ü¯Jáÿ5OÁÿzÑÎÿZÎìÏšÿ•ݽÝý$ÿk¿˜ÿ«xx¶Ûü¯O öÿQPÀ’Ïã¸Y) l6²×§‚ìµ|Ù« {=a²WáÅ#ýy4¶Â‹‡,ð){ñXíFc{WÐØ [Ac{4¶çî¦`Õ«îÈdÖ Ç5Yøƒ¢Þ »Ù}ì†Ý'ɰ« »‚aW0ì/N Žß³àø©å#ŠçTl¿ª§ó²ý>l¿‚í·¶ß‚|Ø äª üé¹/—ðXÉÄGçe™ôÀÀòN¦eçpdV g$~ò“ ›ew;)óï¡Yê,BǸ Õi\ôÌÆ$tø R]ÇIïqÁ|lÂO e:½ÏIF¡æfΟKL:Lãj”@}Τ(?) ÃOÃÿ7="ÿ/< +uäÿí†ÿg%OÁÿ{ÑÆÿ[ÒìÏôÿ¶Øó¿º[Äÿ[ÉóÝâÿ]¶¥‚põ¡ùÞ:A­‚ÿWYoö_€Ô¡qK* Ü‹ òq_Ë#±Î÷,ܹ]¶Ÿ=Ã/ކõW™¿@ 8Kqåbâ}7°w\‚—*ˆÙ þ‚ú“¢•¤ptþ¸l¿}Ã-€‚Pذ +Pó™Nˆ™ÅǽÊ1 ÿx¡©^°ù‡”Á! RkrÕá ²¼º¿‡¡äÃtŸà{EûØš a¥zð0ØÕÆv6‡?ZFÁˆÌň\"Ýn1l»Šs“ê,&—5ïMb—½,˜ÈfstN›Ýÿ6¿¶›= .»cÏq)›r0ZÖ;ÖP,Ÿd§ÏÚ‘ì _qÉ® Ù=C’ÝÂYm³RË®>|€¦ )qœ$"B:ùKÀ|¬¯ÕRµøûòáÁ™é¢É­‹öó‹‹F#'à;P¼×𛥓¬¤ F–‰\Ä¥-‡‡ÅÝ™ÌQôks*–‹Ç…¬¹LšWâÊ '+ƒö• qeо²|£ék¹ÎÑÔË3’pþ¶¦¦b±D¸Ø)¨| 8%6Õé¢é Šà^ÞâŸþ»¢€I#F)  |ªb¡P*yúb- U’1KÏ´§g\Å.®g¬¿)M—bƒ­äõø2'Sì²½–L1þýÿê}fÕ#.Æ)yŠž edPgÒ#÷)ŠA £ÓX( ƒãŸ]¼‹$LRe»¨}÷QÏå“+_sÆ÷ŠNVÖEÓfe©ð´(®5’¨ŠîK 1ë¼<4­é[Ñ4Z‘¶&ªb~d1¥Üœ+»ÊçWÑèÈvVGV,§\¾^DŽéÖF(@_—ÎéÚé²]/Öê‰ù÷Ÿo†ƒuñÿ´·_øZÍSð?^ô#ùË›ý™üêÞî=ÿ+ûÿc%Ïvÿñ¡~ô¾%o 1ÿÔ‰:éÈámÁ.^Úæm¦§ÈFáö)ñhnŸÎ¥ÿ Ð>I í4kG­ ú´¸ïãe8*MðÑ{…Ãà$úìVá¤wúnç¿f%œäá˜à€ó`·”>—$hr0 ÿÄUjÌ!ñW/‰:ÍæWŠ„:ˆÆˆH´`Ýô@Œð¶ZÜóÃxÛÃkS #—åÃ,ÂíÁpt·IëcüÏÝ]4õnð¨¯ýˆžíM¢à3 ÀÛÆ{‰l޾ ûÑøû?1ìý§Kå¡1¢lWˆ­á_ÍÍ&"m7l°Îá‡úe[ºá¨ Ts¸ûŒ$¤C'*XS¨úRmcƒ g{1›D“!/U&œ–h€ñ˜¼J4èÐízþyÓ±- º…n» <²À˜Ôê. …Á¡ð½8@]'ëNƒÐèÐðªô6W^15aü ¼íu‰2”ôIdÒs ÐkD)õœ>Çù,ª—Ît¨›µôbÉ0ËL0ùÒiIB’ÚŒé5nÉÖóñ ¹4JÑ& œYãQ³\1Bwöv+4ˆ#Ô–®îŸˆ~1¿uíП‘¿ý†Æq¨ã<ø2ì÷¡¬7(ËýM,*X¢¾ßn…[½í?Ëâ‘øªÔÃ_pB2Lûçö÷Ûÿùµ÷?¿þiƒ»"Ÿ&ç£2!ÙnÆùüIoßõ¥AùÏ-È-fsÔsH`›£¾#²Bw[нRrhÚ›’cgÍËcPBNZÿ‰L"J¨ÕÒfQ/3ê*#Ç‚mM%cò8—µ×jQ«5Z¿·Î7$ºÍ’öa±ZtEQ¢áètŠĸ,x_(:^:ƒw*V7[BkjHêö’ÜI“ï©·ž%¾ìòšâÐÞ·ŽËÁ§ã¶TwœNS  ÁÎîñÖ.§Æ¡?çt›¢£Ù= e®!Õ+—Nt zXMݺ4"’OP¡àcñ£)~^ÁÏófëêÜÛÛŠ« ÚïÇ¥ º ç'ðuíÚßVP‚ÏÞÉ{C¿sʦ,“§Ôz ') SŽ—õülwŽš àkõÎø{5#b¿Ÿ ±/=NàÑàlm>{;¥ÓÜ­È•Ü0-ùøÍøL—6lŸ´¢SG6h5%%÷.mqã¾v;.©a©ó•ov äâì–4ÌŠW(…§¶½ûEq.^iLc¹}š{' 3ÞD± ã¨É0¯™± u¸kž®0gKxuÁÇÄÖV(ÏŒey%!WO,¢ÌK1ðs÷§Ádðœ?ô'=¤CÃy Ôw7lw"²ž°¦@WÑq o¥ÿh Û F¡“Pjxº7ó–†)÷î†Ê&wDÊu%¥FŸÿñ*«¥y›©sÌÙÒ«Ù[ê0ä¶›×Ìh=—Ù¼• d3[dUc—"²ó dÂ,^o]øšòÇUõvˆ¡ñ0ø :k0N‚›îÃ8"ô8éíç·~ã°É•4—ú W T)]ø0úæcE-MК©TN°9Õ°«¹#àmØu7Å2KŒN¦k»‹~{\¾*»ŽAD†ê TGGUlØ™sKÆ{ä^N™ún´3›}XÓ”Ü|hEÆ´$w0V×_Ë“:)¡‹³©ì&]xphÚ– šÿþzXûÿ½ýJÿ¬ä)ðßýÄøï²f&þV«U{þWö üw%Pp ü÷øâÊ‹ÿâ%c¿|×R˜ô/ a廬iÖlð´3%r â /µÇ÷»O %hþŠô“hpËX6¬$½~ïóÕÀ.f’)­QÖ£èöá&¢JeÄ\$&K ÍQ4¾n&X9:û9d¸aªÛMK ÍH€Rc:hɉwÿã¿F“R­Ô+÷'½Á¨&<L¾u'ñ»ªzuáŠ@±uÆf~¥<7kô×f§}뎃!Þ/_’0T DA=òлc/¤Á÷ÐRN€o- Âßuû}¼”7Eޤ½ &6¢…‚˜ \(¤£à\^6zc8A³b*±¼ƒFÎ%Ì6­µÏcEØžØ4$++¦†Ø¸Ú²–°Êÿ7}Œ“[”¼U ˆ‰âo`Ó¤¯ÊÚb̺oÇþ-º·æÍh=l‡ {óÿµ²Ñs‘«›ì0šÔv$Æ«¦²8Ab.˜ñAbw°ŒSÝ;¾Ø 3#³>duHêÂÃJÀÒsѾ,ÐÓÕ¡§sÀ p„X8 š‚yv\˜gããh¨©·qnËÙÓwgÍS¯iÚuª™uY­jÀ™§ÛÑ"š¿j‹E¯#-ªðÔvªßËwÀáÿe4J|&K9é ʧ4zgîoao®ÈšØÇΧ+eÝŠ½CΘã:5ôAÕ"—Ôž˜œ|#Ñ÷~ˆs­–&t\ݹí4 8ZCvT+Y…]e;>^ÚÛ,Q˜ dç-b$Ôâ°l¹ §P-í:æ#&JÃþÜ-C‚+‚ÀƯm²MÊš8òÆÈŠÆjšWÊs£«žF«‘f¨—Ø’1VUÛ)³*Z¢@rò¡ŽÜ)56§Aõ›~7Q5N( A1ÚPeÖ8ì’ÝmA ¨‹LêLûèøÏèËø1íÿö«{ BøÏAÿ}5Oÿ¼è'Æ–5û³æ?Ìþ½Äü¯ìïóØŠ ü§}Ò±ðŸVû]ǰ<á_ñG=5²$ Ø•ðÏÉq» Éé_ƒŒ÷ì1¤µ7ôCIÃEcÕâ1ŸxZŒeÔ£$«CПâ¿ ¡T±«j³’e&BXâ†M…|ÁDzw(L‘g„mÝ¢Pˆ‚üý3žDÄcíƒÄvÉ/`›ßfüD‡üvôåKϪkD¼÷ƒc˜ÊÞÉG·lÉ'D{̃ÏÇÁíX¤â.âe숹|ȃ¬÷r¡é¿8?ГxãÅÂ<8í¦ªåÝZßPÆ(å ·í”­oÈ£ÚsU')ºÞu( §'=-ÉøïÄĵüc²v£8bšÑ´žÛO—å°»wIj ä$w‚/ׂèÐZÿRÌÙ¿'¢ƒOì“+»‡¡ab&ºØZ[AUÀ$W¾®;(ù_ÕÏvU}l…é­Zí­¢!×ekLy ;n7Öt±Ï{öm2+Õ'× è“ëÎ)Ù'¨ƒPþYx­k<åÆM¶üÚ†N[=­Q÷æ[ܶ‰~×H@)y–¶DŸ˜Î£_‚ëËöÕ±ô›:=hïÜ GȼA~ ú4RQBçúÓh Îjmá] no=_AÍy¸U{Yõ|nÝEíÚæúm@?*ß•Y'F¯Îqf˜×ŽÙáìv=8÷>êZž¢µ”Øáç¾Ø§ØÃÝþO4¬°ÓÒØ|àØ`Óã©wixåb0äà ¿=Q£:i)†P´!@z.,KB€b=B!ù*ÏXo¾"„¦¿Ýü£º˜¶ZȪÎlª»îwP1(_‹¿a­Wð{zÞ¦ÑQc´Ú†‹ô—‚gÀâÎpަdN¢{R†àä0âQQ¸"*¬hw/c_'ÈÎmû5ØO;+f™sÛÜÞŒ2 â÷fsù1µ:ð5BiÙÙ¼k§Ö‡@VÕŽÞ_µ.ËÄ= hÉl!Ù,­Oþè ¿óËöq‡)µ“ãTèá‚×gÞŠ/Ì=·ewíúÃD¯¥ÒΛ øÙ©Ÿÿ¾X;ï²b.,–´1»¹|Š™|Á ÈÉ ÀmxJ‡å¹HŽ·N²_û%ùZÝð8>Ãò·×¹_¶|“ǃ:K¤}ÒY&K„5ã€9I#L~8¨8^~ÚÃ·Š§„›’@Þ>š_†.€?£5­OÁ¯Ž}0ü' cÖ9¨¯¤Á!õ¬rpß¡j5eÄA·Сò&HM%†Ó?ttSýãûq¯?Äs‘×ë4k~•î]·>mò+Úçèǘ¿å©&¾Æ'ëàjÐPöÌ¡Ð}Iãe:Næ>S;iÅKSh‡÷ÁÃ`ÒëãÙÿþÏ17‰p„ "Þ ê4ÆÛz#rd7€ß»}€•W³:FjÁfpôuû ÙÖiîœâthy$0Lnù5Üw,ìe›<ÙÄØËµ‘!~É™Ø×≢­Éw` «¼ yèwõ\ðÐÛƒsBÐý<.µáW¤oð_µMüq½lÑßuX:0­Q v´„_Új­Y£n‚†ë"É©–Î-Ÿ˜«”p•›"ÆDƒ!ÈqC‰p¦ÑÎxpPHe‚—ö,Àx¸»¦-ɜljã&L\Ô¿‡Œé%~Ž #>¸‚Üå%åpÁÀê”P¦$y99î!1ÊO•Ûß Î\• îXá¹>“™=Ó*¬?MÅ¥ƒÉtf ïq¯È]èlRƒDŸ™Žðÿ¾Åõ °i«o£=ýu¢<ÑšŽçÙ½÷÷vãw“˽^©3­Rgf¥pWkßÐëÍ7áLzêpIC”YûÐß¡MòéÙYlnXÛä´…¼#{0ÇÈÒø¦ŒŸåa!9@ÐA¿¤PUìüv¹Ã;®›žØ‘“‡|åR¢µEœ>X±ã¾Ì@¢gVrd·ÅK&dëÚ”´Z«„¾è#¿xô']×êèkJ’[ú,‚H)zˆä½|ËQxÕnÿ‚bo§2NiO¢›Ão w ´ #!b…)3/¨l¨Wo£›QÔ‹ ¼JÆÛA-Pd%¸}ižaõ§‰Eu]U7‚Ú$  Gq)$ÓŽqaÝÅÕm(.¨ò ëòãûÍø+ô;ª}k!é]˜„Ktz?ºº¿ÅËMu]L®gGÐ_»=“xH‡NÜ–Êš C“Ió(ãð{Ã…àaŸÒ¥LÍÈÔ¨¬×•f©:ÉÌ]è¢üsËÚ’>X’îiêt!ž®g‘»Ýëøâûµød#ØéG; 6üj%§-^¸è5ÇH¨k¸H⢰i©l[RaÛЊJèmzž”&Öá|×ú¦:öÉ@ Øw¦È@x£³q¿<£ª˜ðH î¹:À¡É{·*Ž`tôÂ[îäÉ+Îgdd­ÆRåÔOyX¶ä ¸ÆD»ñǰ’XcðD(P1ÖV=êoü¦G?ê°¦ +ècA[BoÝ›áðÕ§¤Çƒ¼IôôÒDz}À`yù…ÓÒžÿµˆÍ2¡j››¥ª•J—¹cN#*8’ž}ñ_¶²¯ÒhîòÂ]Ïîéö'ýl™+£`ç©›ßÂëò¡d¹ÑÓ葳6í­P÷ß%äf“Éå¥,XÆ®87–€ï)BÔñ£õ¯ú_†…a–¢_PŠþªäê/žp›¢Û…-ðÙ¿LÕ‚JUyU#c«ÖAì¿,u+n!„L³ «R+= ¡£‡¾S»z…ôe ŽØç gºÒ-,½érŒ˜×’ñï¯ÅKÔ¼JËï­}_¶F4ÏÿÑíÆ“/ëãÿ­àÿ¯æ)ì^ôÛÿ,kögú;Øß¯$ü¿þWóðl7í:—'^ÿoÏÞVgÙþÞd)qq3»rÓòÂ_S Y`Dcn0÷ýÞÄŠJ¸Âws{nu¸ÔžàxßFãÞ×cgŸ£àa̬û›áàOÁtျNý·Î¥Ê$²ê„ÎÔˆù Äï ¼#/:,[Z0IxEž7~õ³w‹Ä¼±ð3Ç"·Ÿ\AOF7“‡QôFŠB‡|_á¯Ú½K)8GTCL.þ ‹pø:c»”;Ìh€Œý׿‹6é¶Í!0×;ƒí»ÂFg]mtL{˜lÊ{Â,Æ$¼Oe £g㉕% dÐ"Åg £çbqħ31®g×ßVF2èéÎÌ&jáɯ TÌÕRÏ%×%ØB¢(8y‘ϲ·Ñ¤ÛëKïŠËµÖÉÍk΢5ÏÆjŽ3ù_3“žÞ¹²Ãnȳ:jûÌ·ùýhݳ”žÏûæç¹rKæʯ yï¤Àî¨ îPÿv!jÚ’À¾áû™4Ý0GÍAšŽ7)Úo¤ÑøæT‰îåû}Ð*GÝIlœï3Ñß]l(…ðòùkpˆ:r…ßH¸õŒ1Æè8¬à?ÕÀõ¨E¥Ä?ÆL\©â?{Y‰ù*&®æKÌoìåÌysÞßÃöóå|€‰á„ÿd%æ71ñáþs(÷䆹Þæ|0‰oÇ¢“‡b~ãÌšž!/R% ºà?].vq· 5èîA ºû‡z2îjÛá¾Ê§‹ãÚÅ¡êbïw÷0Ÿ}ÌçàPe¡F³º'ûò€[ŒùtQ>º8ä]Å.Lûº‹Ý×…"DRA½'‡ƒz:-ÑeÍ…vÙbªˆY`>UÌgóÁ®èbWtqð3{ “P6UÌf³ÁAéì‰2ÇM%‘JöŽ"dÞuá r )ð`ƒ«ËÃ8žûfü¿•X`¬w<<Ç9 m špJ:;/ç)ÇŸÓÓŲç—éò°ƒñUЖàöM ÿ‡OÐÿ!œ¿—êÿ0Æ„°Ã‰`RiÜIlï¶NVæPÅ%fÔý°‡Þ)bQ8'U¤E¤¼àuPñ»GÔ]ó =/ün+|3(Ó¿xD@ËíÍ&ŸƒY›ƒDá›»2üob”1#¤ýœY‚Û¡yJŠë¸D:Ø£€sìØ%à¶Ôóð^ɆBa]Þ ™ˆió|(@Ñéiì0îp~`Üßuä*üÙÚy¥aé§§Æ÷gç’ú’~¸áiºÚ†ààt÷æOaqVÐÏmZwÛêñD;oÀ)XhÊÂå¼4°w³·p‰+Ѫ-b3ž–U˶ñs'­J¼üG[‹ ‡‰%×=ñ¾Öz’1¸ùV¹• Ü´èX<õ#EÜôXQ`Ùõ€Ãm¤0P8y‰šçÛ§9$¦=œ¿ï ‰”1$|â8‚ƒ×T²H‹ÿ9r{œD“ ‡´B›™o ÄÇñzª¼ê9¤q´^ö•8¥›Ð…­¶ÕU¯¶+쥯³ —ê,™=w®zöë$³2^£%³v©«¬«0¿åÉ"–ؽU-±ë%†ó-®9¶ûÕ¯¯äÓJ¦ õmö’ºç\R†2Á±’ŠsÁ©˜»8fRÎÿ˜TÿçÇr9ýÿî‡Õ=øþñÿjµˆÿ¶š§àÿ¼èGãÿ,iögò*ð¿=ÿÃÝÃbþ¯âáÙnñltÛý¯të&ÝŽzHºqp‚ª;áz³‚ ³Úý¨×‡s¢³<˜ÑJ¨D43øéÍöÁ«¹Ü‚bô{Ì02ÜÌ‘‡\ä%ÜäÆ>rE1äKíÊ1·¦&<ɵ¶?ÿ³ÝÊMH"W¦ùÀ/uÂe8tm*]žj|#E†ºÈjjÌñ‘×3fú’ Ôb·pÒ/%Ôúªœà9(›3rX ið(^¶Y ‰šàiÍÒØC]'ÈHKÌ*Å€òsf(ƒþ‚©ˆÅÎï?„Ü#Èž¡þ¡Žñ ÇÕ¸>3JSÜ¥¶@ëNxuâ“‹½ó49Pã§øorDšîŸx]ùXi‹—…5Kåc½]«Uþs ²3|Ž"[ês„ñ1íÁÀ¹5xSúP¹™[™®†õl<ä×<®†Ý#žáTx%ì/Ó“pö&èc‚>&èc‚>&è¨Fû¨]èØ>&èc‚>&èc‚>'Y8h]ña˜  ú˜ ¯%X;>׺²™„ó|é"u‘„¦Õ°˜I)Icz2Œ¥úÍí8T9‡ õ{0-AJÂao ¯6‹Hì“ ÓäÍj—îCTSP;ò,,µM¾Ñ ÷ï?G=bYÕùl~mm~ÿ™÷oŽðãR¿?XªxVô˜øßßÿS¿ÿ߯øßjžÿ{ÑŽÿ-gögÍÿêþa˜ÄÿÃj1ÿWñ­ÅÂÿ@é;©]–sGe…ÂÅÌ9¾¸:~KA!¤Ö"ãŠø9ZXP.9ⅰ㌰£¡xÀ§Á =qC9¹j¤AŸ®\ð¢DxQ3Å… ˆ7ãYÎ6Ádˆ¹Üh§£'ÅëAM‡³úø~}GÜ28«œPb–Ýþ˜.g°Èðm4¾õîeœ+çŤîC(Ñ‚ð¶,º—]áIâÁû´c8¬r?ÂDÃyløU©ýdþõÐë÷>ãí¦èØøh¨2䡯ƒ®1kÒ=&ý…üÄ_b@â/%Öóñ[Dw°Ä}ègÏŸ½~m«µZ Cúû(î]‘‡l‡…–ƒÏ¼HŒsÐPñ2I„ÈAo'Ñ@¹jìllÖ6e…yôµ¯$\1º¶õ B=lH¿—Å ÄÇ>KÝ/“hd×]Å #Æ[N݉~s©m Þl<K+‚©Ya}ÊöÚd<ÚnÂ>:¶-|rûëÁ±Ýñý:–Gt1<šV“@Ü@?ÒÝ>f{só0bh1¹c Ê£ò“güð×ãu6cºü9ÜV ê¢ÌÄm«< Ûv9dŒVõ±¢ ”*{‰c#ž*[?¹û“M|öØ6ÊÛåÒ HY6•º½?Ũ_KÝ?{q:i¸T×»U4ñ!‰eä3ÚÒ“xl²Œžr[0-À¢*³1*^(™Âoá´vL9R£[5r&’8R.¨Ë†ê9RÃQ«Ñ,­÷Ì{kÁå,7Õ "PÊSøŽUü-¬‘¯æZë}ûÑßZWð³Ã:[‡¾ë°#çó&|åhͦ`Žêtšµó£weüÙêÔE:ŸÉXÙNžR»Ü&dGï?üA‰Ÿ:Y”AŸÐOêYŽB™Â©[¦)ùÖv6Ök&³3ŒÍX®bŸÙ,eÈn’¤EÀD‚ã8A.¯Û¢œ÷í‘£mk¥]åÄ’¸Ã‡;'µfçX™¿X¦å šè«?^éZ,»èôÄ­¹º_"T 1‚¶‘”g$eç€BêEɦmWã>iÍ'{ ¶àã~Hšô‰.>y%®*ñÊiÝ7·‡ó„ý_†½`Âü/Ë^0aü—m/¸o¿’Ë^ðÐñÖIökÿJ¼–­kí% $d’¤ÝËw¼×Ts×)ãXÎÓá×Wg¤À’ÜZßÔ‹itå®pÊ"?rò)V~Ž×›pŠ)ò'ëK±Sh)U¸hg¤elæ».uzìTcE3ÅÝgG’DãMŒ|Ä‹bµÅœÏ“.sŒõ‘Ö ælÿí´Ç´»#‡1«Õ)Uw§4ß^O™Ñ~þÖ¨5ÐjY^ Úëü´q Æž¡a˜ÒºVz57x‚5¶¸Í¿ÆiÔ åx l;J+b‰U,;–<ê³» tÈL¯Û«2©¹+Ä[¨)ĹvG÷ør¥;„j‘>nÌ=ν:ÅκCÃâB}›Õ½®¢ÿŠË ÆrWaÚŠkyqF(wÈ“WqÈ–ÁïvcÕßt;p„ °:aÏ¿Ÿ†rù:ݦô>ÏĨ³b¢Óášàtë4Ìã—˜-O¯pi{þ…<±F¾EgÓþæTäÆrºE¦ZÍ©@mDsâfp]­:î§ÔÑþ Õœ>¶3ì·øi«0'ô_©mÿ' ãMK"oM‰!—ww‰}ÙXƒôy©KçÀAÞkD';V}[¸š¼ _•}K Ýo8 ÉÁs—Do³—¡µ)½,Î#Ð è\âjÉ‘Ë|H÷ؤׄÎsÐü“‡~ÿ•²³ þ”Dfú9Ð!m­ê]‘Øì »gq܃˜˜èfî§PÛ5R»Ù8­f8lЛ÷Šk¨µšI¤ßòžËQw0&ŠŠsœØÞK},„KâÑ"ƒsî9‡©{ÎϹNî9×úžsàZe]{õ‹¿"l¨ÇEÅ¿¿æSþ’º•‰Í9šf#_<÷ðîûv«3¡\ÔÕ ùø~ÜëÖ1T‡‘7T)^<®âÆC÷ÿ0ùRYÿÕÃÂþ{5OáÿáE?±ÿ‡eÍþLÿïU˜ì ÿï…ÿ÷•<<ÛMÿ—'•,gX–ï…ÂéÂr}½»‰™¼kyá¯)~@L§îžÓ:t¸ò+ @iÌ!Ý-€äû_&\•"cC‚«¢²ºivék}gëÒ"› S4P³±°¡Wey† ƒmÝ 3PêåëƒÏýá ±rvH¢dÿ+4zòí®Œ–¶dõØŒ~D ‘A½Yë,ÎYzÒRÕkÍE€ÔF‡-É8ˆÍ  Ã&—-¢ÍZqYræGð“ÁAÕ- l>¸½(ûÁí¼„OÙXo¼˜¿Í0žû~»0ã¹AùÏ-È®ðMžÛ7yn¾cÝQc;~çÎý>=Û1Îä{ªóíï>¿Ûú¢dNáw[ñ×™‡V¸Ó.Üi?]wÚ9ÙhmRà œl4~V6¹is²Ñ2xg§ž58kù[€E“UXWoâ*´Lq?—Àß*SÖéX\âF}j¯â¹XZs3‡Vïi< H‘‡æpý ‡Ìi]_<ôn¾K(X—a3÷`PM$ZPâv=®+<$V`À!´·CÍ›v\ž ÁN†5ÖBî¿W¥Óòé#GޝÎ9ÞÝ4µ'œn…oN·ÎZä eø^\hÈâ3Å´"E£aJ†h~(NŸŠhBµuã»@R„Åæi°„vŠ@î<ÊvSîÝÊI`"wIßf[>Œ†7ìѼCÂ$“bà©,˜ÀéÊÑ¬ÃØÒÔÕ²†)¿Û-}¢©çD °pjoo•(a}¯ +îñ16ß@ “i$¸õ'‘UZ÷îU/NÄ+g#ØÂ<܃Âw¸¿kgûÑÊÝjДm¹'?W ¿F7«Ñî`¢Û8€lW4¨œ@7¿`I×ÖÐþüÖ•oÿdWèÎÐHrþ‰ aƒà'(ÌÇJzÐkz×í¡¿LGTÜXü±°Y¿q¶žÙÕðÿV݉DÒ %ª¤&I«UgñUÛXp`Æš§Uir3+»…xŠ U“ÔÎ]#G7xïÿ³o)clU™jm/:²=UÊ*º»ŸüCw8…@' <~ÝÓGPôÈǼÛÀOC9¬8{»ÝàY ?·„L]•©eRÖ:ÜY£¸W r„gÀ…¼Cß83 ä¤GÅÙÑ—É«rLçyu) ƒ^¥ºáçUk8Ø~ô0 9bH® ÙÉ%Fù"¡Ü`~Çëkµ3›\Éh2ªÜ%wSYÖê‚’]ß”zräÏÂÑÎdâ¤[õhTóˆÆÑðþ¡%%.éÃ*LNö±Ÿ²ûªG8¢ûp£êNH§> ÜÙðÈØHìkú#6fÜ™q ø4¶Oɱ üÛØ‚™%z¨ºëÈAß·÷ <¸zÔÜ©’7|³/6¼±Ì UsBñéZ\ dÏ ª¯Æä-ž{O¼%szA»‚Ät«æh]7†æ¬Ë•…«7òÎÓ@𾶸P<ä_’ªÞͱ$U§Z’’m3–ªw^¹ñ7,c A?3¼PŸ´õã ïú±Ÿ{ýð-ð²¹´`&ûYëÇýH¾èÖRãO3Üb­àìæ ç8»¹3L=»ý+ýìö ŸNÑ_Œ+Ià=¼ýâ9¼ýk5‡·po½NoÅÑ-.î Ý<_TèL‡ê®óë*}]¥ÓÜzÔ*aêA ªê?¨96šª«cžêA­æÒ+ÛèPUÉ_ŸC±g¥#ÌtL Ñhª….¥qº3Z¢’ÓœÎãh渖€é<åÑ, 5Ýʯ1Ñe©P®Â²pµyJSÙÕPõ8iìt®«^¢·°Gsã: g>¦AÇÌ|L[ätªÎ;¦;¤U½³h†CL±‰~NK@*ÓÒŒsÈ´Ç«é'ªz_,åÓ^å<¡yפ…Ò–rBs/%SœÐÂjîe¤2Ã2â[5\§µ°’µŒ$¯ƒf?­…iNŒnvùÍ¢ taûU¿ W;Þ< ®E<¦ý×x]ü…ýÇJžÂþëE?ºý×rf¦ÿÏÝj%áÿ³r¸WÌÿU<<Ûmû¯,æÒ‡yá T{Væ ”º^xÙw0g¶'+ô×ôÆeýGD邜÷Aº£8ÖyPÛDÖm|è÷ñ˜M†…Yð0怨¾+~"Zû Câ ¥ÿ%r¹Ö_º}KlëS«gù^|±¶`(áSÕ’Bé*”θÄ!¤ãTâæÖ¨¥Ñ4Þ¡²½viÓ¤]æ±|Jl5YsX>ùÌÖô|²-Øl£4QW3¤sn3¶LÛ5·éÚÕÔ¦kn˵f¶åÚrm¾êƼͶhù±c«›6–”ÇRk¿BVxÄûuÅp¡†×ó, çvS³y¤Z²cÝÜm)Ö.‹óë·XŽ¥z컬w~_¬¯¾ÕX_Úýÿ—ÇõÿfÜÿíñVó÷ÿ/úQ÷ÿK›ýYó¿ ³}/yÿ_)æÿ*¡è÷ÿ'äÿí²]kuÚšÑrmÚëþ¼2‡ÌLgÁ ^-ý†ƒóc_7 s‹Ý ~ÒŽÆy¶8‚#b4 ~¿Ž8…ãÄ<ΠªÿV¢Å#=/´PÂk›M)/~ádáÞéžc:=€3¯ó«æ ÆÂ€ÊÆ8ZU`?¶ÐÏO_¾ uiŸ|Hstw)_T§ÿ»;s#/LÝʨ’Ç÷ž»2‹Ä\jF^Y÷ÀAk³ÔÚ 7^W‚ £ æ]°+(Û€Ã.™v´ß­ üÛh|K./aæzO+~o¦bàHô|ˆá¯º¯´û¦UÞ}ó}¶t­ù §ŒÑàßÁ÷_[¯+;*­ž ¾¶â‹úkÃÛ[õVãD«Á嫸X3#aíGìãÒ -´>@k¥Ã/5€Z»˜G›-pñë£H½ >Êh×(Wï©xé êp˜i·7à9ݺŒ]B ¿èùðŠ» 2ÔHøÚrd'ó² -^\â¼°mp7Ä] uºì =èëà£ö-¼=Eåbfð'ÆÈ6Çš%È@ih4aÊØä 5D”7‚*2Ä3¤&_o¹ý f@iÆð·^‡Óä'ñ=Ð:Àq.ÏÄ[ßGé@ı+èøèf"7Ç“‡~?øÀâZ‚ÙNxáRÂ…y |í`Nh¯‡&\ù‰­—üøi"TÃBlúßÓF ï¢ïé`·ìVƒÝ½`w_¤ÜÝ•yRV‚°„pd‘_‡x}¡uQ¥Tªœp*2Ee7¨„m„T­Õ½ *UwƒjT+A5é[NH{2ÝÞn°{•`¯ Ÿ»ˆÍû2éþn°û•`¿ìïÁçÿ%œÒ5£‰µì¡üô¹c¿X€í Î1sI“zM÷>úϰ‹ ¬ßû°zW6xdÇ…+÷»c’ÃÉ·Q)«)¤Xàlœ¶KµÒÞ›ƒD†œµÀÇ^YýEØÍK©,4nFè(5.Á×ÊÇé,;¦’¿ØY)%(Õðïoyí¿éŽQèÕªkŒ«±’ò—|ès=¥%ÿºÄ‚ÐíkòiMõÀT™Ý×ÄÓšê¡ÙC¢©•¢Ï õ$g—²—¬§˜JZÊK±SÊɤ¥¬à'ÿ.Æ#ç’Ð aÛê“èò•RlÁç!¬í$k8:¤É“½¤`b¸ô“Ï0¢;°×Ñî8оà~ø5š°Mc–çFCèuèNµ°qïŸÐëÐÐOÐûryƒ1‡Á„Q‚î§;™€|áðBƒB÷C¿B‡íËõdF† Æ:˜{N.8ø',i°Zqω=€t·9¶Ò$Rw€ýXô}@ü]Ê&`<îÀx¼›ñ¤mÆ“±)˜[×ú½Å.õUÊ0œj©ÿ9œo¡÷6bŽ…>,‡Ó-ô‰Fd.ó ù [å2N3€zm•wŠº\»u%Ä-îžµÛ!ïþµÛ–v}í~„ÙîØÌWû /0V‡»×cm ·®3ùÇzl.áFwÑ*n­Çê X|™éxÎàªÍ÷Ûå Õ輋dö÷íóZ“Å$å1ÿJ98K#O­E‹Y4±¿Üï/Û'Âo®#ÿ©[ïß:k¹pÆ–>@1qK^PáÕÆêìnWÓÁí2òLR¼Tæ—S‘¼8 ª„—6v•–c‚–AS,°Ù V'æO·ñE]ê•É)-ÏHh×ÎeûêxÇJ†NGº_WøNI½sRƒNÛ1ª"ZBø¢lˆÊXA9¯ƒJüQ"ÃxD\‰¸¦Î^ê`“B®e%¸î£ÝÍ ,¨FUYjìúµ*Ž †ôÙ6|é®[èx§"ß ÝuEÔ} ãä…™ÿ†·8v-BìbÚ%Íñå>H²áä êì!zAŸsNŸòÍ„Fc‘fÛswÚjt(×z*Z\c‹2JAT´]2B¼žÞ°r¹ ƒíÿÅTåÝrpY‘…ðW‡ÿÀÛÞ×´—ú+÷'Êb­Ä[Ç 13¤Eµ,¿ÇFGÐT÷ú-0¦±Uœôç@¾ˆÊE®W¼ÓµBie¯jáÈ_=ªE±=[)1DÉa›]ȶ,E¼Ÿí¾Ó¦%;òJ£^˜½#¥7'ü±…óÈC‡'2M ‰8šC +Û¡OšáVhÈá€ÿìÄ2ê{³b¼¥½3 ²tIl*Il)!z—’‘J.QÜÍ-‰—.IÜBÓ…Þ%‰á’E1áUÇ!œž¥örê¥6±ÖRfÞƒ£Ë¹ý gä6âY+…ügG~9ḢxyÝÒÞì–­øMürnÂËÿú·Ý_?QŽáÑWÜpù‚~e.¹– ËjdŠß¦§´ØÍg%m…w¬»*\"ŸQž±x°È‡óöé,«obùV2qÉ݈e“¤Q“ÍÄ‚«­¸›Ö¢Ë«u—ÄÚ3pø#ò f«²)V¿Êòõ+s¶ôY•4ACÏr\É#œN¥`W¶8×Z¬zh áÔÞZåšl~bK°:ǫ̀E;៹×v.¼Ï*F¨0’åá¡¥GkêË÷-‡"¿¨¿f¼”Kƒ9ÓÖ ­å.ì]úŒþ“â¬j‘!Êg[2e^ušËQó&Î ×ÔÙÍ(M_ÎÊú‹š3g3­éóI$‹¨ J¼¾“T)jµþ²&—ß§Õ«ÏôZÍÚ”K®Gêz¾–óHŠ­\[r¹;TžM-•gË–ÊÜʵc^ŽvÍ?Ž‹|<òZ,¯u}ùÅ?x-u½ˆÊôw}ÞÒ[ß7i"M;ÍÕ²½~lÑX­ZѶä>Ÿš}¶)¦U9¯¦m/ÉF&ù—eoyÉådwÎ.]Ä’<—ˆò¢JŸ)Aý¯ÈõÔ9–F]\¿oêk3Hïô²jÜjµï³¼ÒbW3S€líÛµVç-úlJQ•o¬p¥¶Tî|¥'/ÉˤiÿÙ[ûÏýÝÂþk5Oaÿù¢Ýþs9³?kþW+{þWw ÿ¯+yx¶ÛöŸÂþs½í?—aöÉn&ã˜Ø³Z{Š×s˜}6L³Ï6šxÂ㤬Û6’†+˜Mn‘^çy˜‹é ò$ŸƒÈgk>9½é亚MêÅV“ÏÀjr0)¬&§¶š4å][d'4{_{H2•1ð’îBÇÝ»HÆ·“Ó㩘G–zåÞ†gEð7¬FÍyÀÏ¢Ñ0¶‹”]¦[Dª=£°,ì ûÇÂþÑz ûÇÂþ±° ûÇÂþ±° ûÇÂþ±°Äg%ö—x·?›µ««s2€ÃY‹ºš=o1 €ðί–‡r`{dˆs‚½vÝ’h/¼ »Ë¦Xåèädj­´;ñ·÷Áåû ²ë%T¨B'sTÅØqTn¡ÌÍêå#>JpøëÜ¡†ìSéçWEìA»Ara=øµ<òlà¯(HœM%±"û€?Ü àoÿ‹þzxDü/< +•p—ð¿ƒÃâþ%Oÿ½è'Æÿ–5û3çÿá^åÀžÿ•ƒýbþ¯âJ—ÿ_\•täo9õã˔ܨ^e½1½IÈ?"º%®€ŒæÃÖfGÏø&jZð, ëL‰ŠÁèÆa7GßÔ3LjÆÐjÐÕÇpø˜Dƒ[(aaèõ{ŸG¨iv1“ XrE·7QЛŒ )æS"íQ4¾n&Xï ØA×OF¸>¬ŒÞ6¦{üN©·AWöã¿F“R¢½A—Ü|ƒ¶ðÄ1ùÖÄïÞ*«P²ÇT8Á:¼ü'f†ynÖè¯ÍN >úÖC¼22xÛë~ºýæü¬ömبm;ö"\po“@€A- ßuû}¼Ã“×@Žøþ(ú¢Á—¢udçeØ@›=×PèËn9užB,1µN¦––íaIÛIQ¥)8ê™°¹Ìè«üz‡òå²IjØ?®‡¸ ¢™"O†F.”bÏø—W†¥„ÞN‚ŸÃ,Bú”ˆ٦µ±ö™,¿#†¤È‡„¨¬3!\mYK˜wÿÐa…¤MÞb 2‹‰âo`¥¯ÊÚìÑ󣈒Ÿåò´.âq.ž°š”‰=Ÿxdrúî<.؇7å,£Þ+ÏlÃâR R +„ù€D- r"½„î;íËÕO9P j4 ´€ø0¨(-5>ŒU~Ç…ÝÐêc ?58é ú€ch¥…‡~Oì€ñðtÈ2U£¾o(;|WÍßÿ—Q+ã³·xg4àãJ¬sÆ ™q£Œ¿kßqÞðo‰~/ËÔ‰ A´–Fdžô>ÆÜvšÇ¸¥]T«^bÛTXµ¶c­Ã^ÖX“Å!5.ªßâ•/584,k@µ´ë˜׆ý¹1ÂÆ8tû ukã"ò&© ;¾(Ö¼Öˆ=EF¸ÑUO£Õ@óÍ1.%%c¬ªf½µÊÊKm9@vKRc¯Q[¢ßM€ŠBPŒ6T™$1–ŠÑ­É[j˜ê/ô–Úºÿý¼Œ+ œ÷¿»‡‡Õýêá>Þÿ@úâþg%Oqÿû¢ãþw)³?Óþcwo¿bÏÿ½jáÿs%ØOíûßzî à û8ëQ·±IÇŸ§pŽo£»»Nÿo£î×>WßuûýÞ×î ü1üÏ0x׻풖¦gtÚ%¿ ½èöÜäÓnwRk¤_ÿ’ÙGF‰^ší\¯SZkŒ›noø×Æù‡fã¨q´ðÔ‘<ø·àÅ-xq ^Ü‚·àÅ-xq ^Ü‚‹½/uâe_ž˜Ò d‹Å™€,é⽌f2¨\/þ ž“|Hl)CÜîaz‚ª1BxkLûA¬ì@žø~}Q—ø;Ë¿ÅÕÙ BÙWÔc{˜*Ø7»;ûÁk”˜¾”z£@ `]’ÈÍM\ÊJ$±›(ª1°<`g.@ Ëc­/ÐïÿG_5þ×ÞauT(þ×n¥¸ÿ[ÉSÜÿ¿è'¾ÿ_ÖìÏšÿ•ýpßžÿ•ÃÂþc%Ø>ûÿöI§äˆûÅ^ Nè—“8 ØuªQ!hk'Çí6$§ ãÜgÏ#_g7O<ˆ4‚4J3ùZ„[§Ÿ OʉÈ`)b…²TâNâ_UÑ “%nÔTˆ}лCŠäÕµpÛ¢"Á8&cѺ ?FaøíèË—ÞMâJ }ù/xé.ÅKHñ8ˆF£á(ø<|ÜŽé›Ï ç ð·â›Ø¹^oÊësQÙ—è¨éq"|ÝÀÔi|®gôå†Þ‘è>6ùÀu•÷î #è¹èQÈ Õ=:d¦‘0îµé|-F?JÊÑØë7éÿc„‰0‹Òó7×Â`´¨élçm\¯g¶ÈWû’>¥E)×3ÄÁjÑŠüo䕬“uóKv²€~9ÙY%{ÆŒ.7]X¹Ëô`rÜ€åFˆ»6ªŸï:+8^"Ô{€:þ`ybc¼M‰šw½€>¹Þᜒ}‚=基ÆSn”ä/QÛ@ik¥Í3êÞ|‹Ûö#B×s¹F ¼„ýQÁ0 Ý'FGÂêv}Ù¾:Æ¥cËóÖzaÎs»E¬]øƒx}ôC:I$­~vþ8ÿ}UNgvC9»›ÉnÁKuÙ˜")Ui nÀ¾ãÝ“©ã+Í›é_Éw¯ó¾ªNƒÑÐ>Yi`'«:ŒñŸ ôï íá˸S€M²C /íÌ/CÑšÖ§àWÇV=þ†1­RÒÉÜ‹šS9¸ï?ŒƒPµš2j[–uq|?îõ‡ƒxbñº›æøR¥;1ïO›üŠöy_§ï_cyªUo‡ñ1Ä:}ª cç¯Aà´ËàWñG¼ƒÀgj;¬x1÷æpx< &½>^ÏÝßãaäf„zjyxiúÏo³è•ª5¼wûË..Mu8QÔ‚ÍàÚ¨9ÄÃýl ê4]Nñ¶6´¥]c×›§"»äpI½=EÍuÀ…rÕ,Xé@Ì1P4$‡)Cby)Mö9ôÆ/)l8Õöß.wx't3â:’뇨sì–µµÅÔ±×Z/šƒ™+³’#»-^Ð [×–¡ÕZ%´ÊTÝò‹G•ÑÕžŽ¾‘æŸÜjwÈ®7xˆä¥|Û3@‹ ÜÁ/ÄžKeœÒŽA×r#^¸ï@™@$=bE†îÕŒ|*êÕÛèfuÇ|÷×à=-^½IhVôJpû0ÒBÛèÇÕuTÝj“€nóÄ‹L;F‚u C\T·¡¸ bÆÇ8ÿoÆ_¡ï^Vqè[sIÂ$\¢Ó‹÷Õý-Þª»X€FÐ_»=“ëHM„N´š*êœCÃh9½?s.xZ&5ˆS11ëu¥Ò©^0sJ ÿܲ¶Ž¤£â¤ç:]'§«9è:¾6~->ÙvúÑ_Õÿj%§V2AhK¸ Æ c½iiL[R_ÚЊJ¨M&ibÊw)njCŸŒ»vŽÜ"2è!õƒc›¦R3jj .ê–Ø¨P¼7“â¸CǼ#Nžrâ|pú@FÖr`¬ENõ‡eKŠkL´ûòÖ<} L‰•Eö¿éQ…6ª)¡ÆÉã úXðiЭþC=ú2‚y$æ,³™ò­¦Ì8šLÈ{Þ-¾}‡Ûé·áO7‹²-|ÎD N°W€Lx*ÄÞ}èO¸èîÍMtOº˜ËàIPÆ‚ò‹b[-y´+1ÞE¤ëÝ|¡~Ððp¿?ŒnX¦òè?9v¯f´˜»1îØ‡‹‰XZ :÷Ñ Z¢r{¿ˆ[qÃËsÊ¢ ÃäÅÙ_ËüòýÇîË"A«¡Öu~¹&Û´´ÚÑÛÞ¶·†fýô`‚úpòÍöÜh¼!mùjä»§µ}y BIv¸·ê.·ƒh@M"ÓŽC­'¶yP]• Hü·(BÃRZ¨m’º&òpÛÈä¶r ² ç·qÌoÞÌfá8·qã"ì`Ò8¿5ã܆Œ °atš/YŒs/3Ú/.Àtq6«Å ËpqN›Å@s‚Édpä]äô†I«¬….§—$¼GÐÚYæ]䎑tO z†Eõ‹ðxEëF¼2’+Z¶Aãú){ÐëN`ÃQ˜ÿ«“Wÿ†èÎUÀ²z[ï¡T3~ßae^›ñR_fR¬fÕº'è0RyYdßšX —Á/IÅP•¯÷4£dØd²¿wTÔ6³Ðx¹èhÞ*]Ù=? V[½Yfañ6¨Tr>£ ž”íØÌ÷vãÐÙ"£î¢øå6PæÄ ‚ñoŽIš„“αÜÖÚV‚á#ý‰¢4c‹HwÃÈUqW®6¨1˜Ë î¿?@Ê‘1K ¿PƳÂíÃ*0q$vmÿPfŸ#Õƒñ™Ñ²7‡Qoe×;—Io0¯UïÔ½¿k½ÓÙòYæ¼sYò2̸Û;m;Žb.ÜU'‚™JíÔìaÍà ½ó=Š’ÑíÍ?èÂD;£kšq‰bØ¢ yþà²cr çCìu(†òy Ñ٠츽ܯʸV²û^¤ïlè>qIµïñ¾&çÃ=ü~ÇnV9¢6$¢‹pêÍS g ôD¿OŽtѸ4À#ŽœŸ¢Ú¢í“¯H'UQ.( hñyI÷6ªótå`»Ú£<ôzm|ãÍW·¾å³ÁM1¼ùä1¿ ô;>Ï\j)q4ŽF´ì’ÅŽß.$ÞMðëÉ?÷QPRw6ð–Ñg|å’¼_‘§Hã–…/)â#¦ñR®!×ï÷eߟMÙVM)³tòÊ¡tßÞOª<»Ð-²çtG½áƒãÂËžãã¤q},Pª£ÔàS~eqCÐó=žåP“êã¾ù&V÷Ûò~÷IKßXGIXÿïÏ€XuD£,ýYî‘)>ý²±a&ßN}§T•?eÏ9WbÜÕ¤îÜFÇ&ÿ$DJЮ¸Ì›¬KâÊÝ<@WðÄw2÷ÜÛ#¸û^„gH4£ŽóSë4ßl™v씕ª†=j^øöÊo6´U>ME,ÌÔ”.3ïq„bâËüMZ¾až¿xðõë lÕ—^Ô¿ËQ…··ü÷åtÓ×°]¼š +‚ñä¿ABá0Ò……›¾ã=r0FÕ±—p«À}¢ö®Ä®•Øw°2 “öoí\(Äï3ÆýîÝÍ·’2hÓV'®v%øïßz¢ÛÿÖçÕ›4÷e»Há°á&aç$Øa@Âݤ£†DÕ‡pæ…ùÚåþDOXùÁæEP•Ñœ=À;Œ~9-{t‰mgô9⡌n%›ïi cK{´ÇîÙª¡ÏØ£ù&8V=+—£)„a‡÷S˜n·¬™ÏÚ8ƒâÛZÑDçÈè~=þûk,3;|쬭‡\›q™@3ȳµÿŸÿw;üÿʰB`ù#úkƒ6Àñð.Ñ5 ¨Œ†÷£ÔdÍŒmò)qs׌&Z|v6keAïíðKãØP¯îc]b8è4JŠ“¤xÓÑûáŽÖ¸O|'uû›ú êjg|X:šDº> ÕŽÔ¹ð`Ÿúåa„gqÐöþ÷dÔU—Ú´©Œ{3mÜÏboö({ÓlÐMsÚ]ZŠšg—vîéù÷h=÷)6ik„‚ ú@tK¾N„®»`h6â Ccç—ÇÏþŸsç—‡!×þcZ_<‚‡W2ΦtoþöÞ´©dký~~EÅ>,a‘öÞîí!Œèf°L#pÓ>qn‡€W·Ø<¼7î¿kÈy¨* !ãFݤª•ÓÊÌ•kxÔØ»ü¦•¯ÿ¦´;W„-¹Ye̾_ ‚ E¼Ì¶©·5¤uŒêOš"îµÇÑK†šŒEŒ•D‡ZY8…Î,’ Ù¥J²!â+Éf%Ù|ÉÆZ¼+ñæÁÅ›J‹C0¾b8t¾Ê@2uÚ€±f[¹wÂÿ‚'-ÙXšXTÕ¾$¼©ü^’”ô+jl#ºÖ"ž㔀𘠟(ŠiÄô`›¾l:Gß6m~ äàÀÁƒÌLÓ±y˜*ÒVô¢ÀT$ºæu¥×¿Ž`qÝšÐCÔðÞ@ïLtÂyj§¤€äG¾½ã5B²‰Õjõ€/˜NiÐT2?›sЇ…ˆŽªTÓ?)ß©ÿÔ?ߦ£užø,”IŽ]å¨õÇÑ~çäüýÓ“öÞxSM^'¿}J'œŠMú©hü7›W §¨Ä sYîr;_#ê™ýÉ&PQgw‹A& 9zä-X±le¢?·ž:Õƒ¡’ä53œ^ôÓu­œ6jWŒà}\„ãÖ71¹DéjõÕ}é'<©ÂG¿nhÖg0|ÎFÃÕ®Ì[ãéÝÝp4IvߟíµÃDŽOÚo÷»ûï;Þ&X!££¹hà´HGŸw\O'Sæ–j.7ürÒîþBüÐ@~xçEßÊÈ{»~kz(Y‰z-ÌÀ˜ìѺ1†úsúšSø )x’yñ6Øeô…½Á­z‚»ž±CF.–œLî'Ìð(x‚·[Hh4_ÅÁD‹ê$½ü4Èþ‹ÎŠT„ÆÏ½)ô·—~F80䫃”Õ‰;vP0 â X Pl¯0¥ò'8þÂzHR‚£ÆF„¤Êžø-ogxûÛ~·MœÐDNØë÷n”(ÁÀ ®;¤(´#ö&“ôöŽæðóMõôùK«ˆÍ/9òQøÚê-cµv7t’7›âj´ñÀ×½þ8mVIE6ܾwœ§×Ï £[ a4™d4)3Ê £]dtƒoH†ƒnJ0ï*mÔj P#”îß'£ä’MbÜ¿I:èX!orü‡‚ÞÉ”-œn €[»ÁDõ/…?¥^¦É™IRšk0™"'=¼=‹¼N){"Rn™›W66¯½j>:Ï^ÛãÒý$O`϶Á˜‹d@ŸÄ;S´MzÂ%‡¼aJL¿] ÞÔ¾¤˜tõbj"Õe>]¾Ð§¾þ‚GO3l+JT¼à *!Wéb¥†)„Éé ÑBáºa»tDøªH2h1ËZz@ݵoÙv”ƒZ]6w#Ùù¦¤A«3°×Tçê‡È•ktÇêKܽLÿ BÜS!ér±nÚ-°U/Ö`àµeòI¥ý`ljЫÂU¯úNðô1ðÿ0¹¡‡kUÃBZYºkÉû—=¬°`>¥pw²M»ñ^ècòááŽ&“m”6Ëÿ»í½ÖÙõ P~À/†ÂJp\ ’Î)‰ âùx='ád÷£ýI^߬F Ѿšÿ‚E_Ù,z'Ø¡2•x•aŠÒÜWÜÎÓ; ýR ɽ±Õ_jÏKGåˆuy­ ]˶nù’2Kõþôä¬{jõWj©žÓ©]²ç¢Æ£°«š¡s¢FÑ9¹ìõúÀl« †J]Æ_â%¾ 9Ÿ¼mÿz¼ƒÝÿ8ýý¸]KpJñ·øóÚsóZÊÝà ÖÑ'÷ŽÄSÄÃz´ƒ°<ó¿¼ïüïÙþÏPU›¹$Þ`Áx…»O-9ëtO[p»í ÌÉœ)± 𛲙uaú9Tî|º³ÛÅ0Ε/sºæ59@*Ü îþ±wŒ²÷@{ÿ¨uzÒêté7d—8Ʀžvº¿«S´ft Š_*€(̻ՅöðºÃ´ò·$1h¿Þpår¥a’cLlc³¶ ©îÛø¹½á↑6¾"cGOKeé)çµ7v õk––ѳ8=ã}IÈ BE”ƒcjï P#2W…ÐÆ×r«÷ÕóbìíW‰DšlPq6 x."¸˜;¡†¤ ”‰1àÇõäãÜÎÒ²“¯ž'èùÒ“¯«yã죡‰wF5—^ € Êu_=ÓyzÓš¦0î\œ8Ë×Öó!˜¹\u—€ƒ²å¹ÍX9Äw•wµŒùM€oøðÇî0 ùÀØéjZÑøêÍ ¡ïîfÁ’ £@„Žg¿?3°Ä \6g†V!T‰ªŸ-B%‹¨:‰fŠ —¹‘~î ÙÚN ùD<—D0‘D4D4õ„|cË}£8ó„|õeàÕ¢ÄòÝúïåðSG”Ï;¡Þm†y?'íD(ëÄy íÄ™†¿ÑPZm·#m“niv$Mî›äÙþ3ñAK|Â÷ÎJª Š*A½È$'ww‰Ÿ ½2ðS5î—©ÿ‰ÝùMÖ?p¶   Óqbôþ´oZHë´ iL±Òí TÎ\8¹vQ&ÒI°aW5Q1UCÜUè«Ù›$‰âŸ‘¤†A³ Ï$æIw5›ÿ\X3‡Ž…SË¿:`Éô+ÏŠCf_*€bš š%¹z¯›g¿àiù—PhI€Ú:ù ¡¦¦bÜT«E·ÕðÈB¤‹í}Ñ]FÂKN™…òrºÌ‘WtaúnG^é›\á{e޼"½°ªÑá'ž R‡A錜ñÈŒö3\Ÿ}ŒÎ?„…Gæ\Ú§¹ŽÌø Ðgߌý,}h柚eòTèT¥O+Q…™ÿaüù{à¿ËüÛÛõæ|ÿ ñß›[Û+ü÷¥”Uþ‡']tþ‡‡Zý…ëÿÕË­º»þë[Õú_FáÕnçèš©¶mµçŽ@º§O¸eÊègQhnÔ«þÿÑå b­»QÖÇL õd®"%$óåwû‚d;jV\ѤE€ÿ¿A5ðð-çmââüý(Í\ÕPšxïvèÍÑÊ-ì'Àr}|…€¯ 뜘þÝA2ÈNü2‚KcÑ¡Sö*%=‡bµIJ&>Šži%=ÝR›œÕPÏ„)VšB“…>1ž¬ùØÑ3£‹g¢‹8¯Ñ¡#©À°Ñ‘?eq¨á­ 'uˆì ÌŒäÕ„ ~¯¦A ’…ï¸í—úv òy ¸©Ø •;üm|»UÔÀà¦âàŠÎÉm«u&\nóýÀ+&>g œ»€D«$B·I&Ö]¦û~=*3(¡Ùy9Øk¦¢9r¿-Û$bGùÆ ³EÍù8ájAÌ n£þ3¹ þàs}:ä —QM(¦›*\vlâÈÂ…ñ°‰ ‰Û!±æÕšÝ'ª5¡ÀV‹JfƒßßfFÊáý63¹ÙÓö{ Z  ›á©>#0V­69Q=Ëï‰Z¡`y‹ sË‹O(pú…/,"pƒ!îk"QnM8ý-&Vcžr\)À@¹œ SåÌš¼YåÎêûKÆ=ZÃþ§9þª1Ô¸Ïj±ªzwÛ·ÈT½ûÊ֌ꌺ‚ú¾  ö\As}çL/§pj†ÜÆhókÀfd5GõÈô&5ÎÈ®+·ÖøBù_Ff0‚S‡‚Ïmc[0­tÁ-90èQet÷Ã2UѶþ÷a€Î¡ÿÝn®ô¿Ë)+ýï“.¦þ÷Òÿ¬ÿf³¹Ùôì?Uþߥq:ú_$0-O-vÀi Žç ¹™²> À{äË^±ž÷°]rsö®”Îs*E(–žè’è`ºÛ¸žùÇI`«sÏsŠ_efZÕ„r)pgQ£Ÿ3ŠÚÒq2!/¸KC¾þ1´ðmajè8îõ+M;(ï=‚ì3v•\²‚à.aSßÉÐï~jÂ'0w ¨ tx}ÃLJÖ†›¡H‰%S«á«*ÝÒÄÌUie¾¤70ŃI&á·lð¹"þªŠ¹Ð_îˆ÷%.%CMš×‰¿ie€ßbt ÙO‰°a™›TDjf®@yCÂŒ­:9Üšpí2ZÑŽù•4*4¬¡í<ÃŽÐ[Œ3Éˆê… Ól|R¡ÜMnÛÍY¬j;NRÖ”“”°æ$ 2è$ʦÃCÕÜ~°Ry–áJÊ€ë³ÁevÉÚ4¡ ö•eš yqÉó‘2Ç|µ•zºäýDeëÓ*6å‘jY–¤QI­Ê‡˜Í`r›Ñî½9‘MA@ðHz­šrÒ{^7ÑçÈã8#Q5&ž¹(]Ö BòvÉf2Dì<9 x[µAX%#¹hø5'OÅËáX"@+‰ X;JÂ|œ;Ìh1î sR«6¯Ö•ýû™ÑóÓY?´9½–¤_1[½)žpæ[“Š»àð@9oÅfï}“'­s–Š'˜­,ù?€%?ÑŸÊXÅ$dp ÊÏYmiW'R–‚6Û¯süb/«tѶ؟ÏhËq °Ó‡—È–m'§b埖Km/œåÇEâ& ‹uʧ&ŸÝÙ¢&Àǽ۔öñÞÅî ‹²¯•õ{cn0£ý‹‰TÄ v˜èlF´ã¨“\ ©ã ï(= ²ŸRÀ ZÑîµ”îÅd3}+Lb¥Dá J¤‰1ݨLÊäŒÕ¿·€Õ¿·!Hù럙;´þ ez³KöÕ…®xÁ„ÏA³3tÓC÷ú_zß`ßÜJ;”ŽÊ"ð;h{w%¬KÊ2†L=Jïú½Kóžd• .ɪ‘G(¸™YâÇO •Î×¾SØÙÆÐß–Þ€í½—®Éˆ× îÈm­Ÿ¬´lØPã$ÃÆÎk–¾u­…jQ‘]sÎÿ4¤Øg#3t×ZR(¤Á}Aêc¡ÿš1š5h˜#lüd=òû3+ÌŽ/˜jÊ%9¼IuQ¢KÔÄ{è7 b»¡=*tçÓ*H*!Å„©í±Ò´çŒiKèKQ¡¬$¾¡œ/ÏgÍJ“IÅÚƒEC(e¤Ö(¯i_ÄóLÍùSò§†ƒç©q©[±øŸÂIÕò´ˆrØ:ß 4n¦â®ÃÍq ÚG ©µB‡†ôì’ed×Ý«Z‹´¯Õ"µÎБŽLQ•íuÿì=,ƒ/Y±óŒ6š‡YepˆIÿ£®¨h›*Ãÿï$<éT*N'+ªI…2ÞS„?Ñ9”oÛr¢¼UcH0'”EU  öƒŸÀ«¶¸?«ÎxxW⪪ûÀ³t3È&Ó+Åg„a¥wPÛ8Ìy…úµÎí«Â8*{pˆ˜uÉdº&1¤µáp;¶ÔýŒÜ{cw7QOb„‘œT…c™~R½dÜÇ]ß:¡aWv–NC)¡ûpN$¬£+Æ-Ðd “ ó’` ­¹QyEÍKX©7©“ª7øf»-ܾwx{½íýBÑE¶Àd7ªrkš!OQSå)š/IQiì"‡ì…øc[îØÄOÎæ#*ädDeüµCÂ(•°%*è¶¥áe*ðÞŽ²½ºõ&NRdL ¯Ùž7€s\eLBRà@± S~1LU·ioÀŸÞÄÔ§G”LäTé`+ …íñ´_V‰çw²LÙéeoê§iÕí k'Ùá3¦\¹Øš×Ï6•\Â8’f$“;³àä×VáÄ’Cy>!ÆOop3~(/þå%«‘Uêº#‰2Á kîÕ’Î{öí)ÈŒ±OFT1<ˆw©EÉèãÎþÏ3øÙåSªË‰Þícæ‡wGðU ù÷€(̤ ž‹çypÏi]éÀ‰£ÖÛcNáð+¥r™/Žß3$ÁŠÔd€ zÈ=@äE-¹ö2~!ÉY±ÌA‰Âg~"ðn92ÈjÞíg–+¾ C Ïü‚d`\Jõ‡è|c¯uÔm«¹°òÀÐõO2ì£bu{×)žo˜×Óz”9ÅåøBr³¨Ùj(ª"cSäèx?@EŒàžØ‚ÔÊG_Ÿ=Æãϲ¡.3ƹ‡ÆÌÎ~/töxvFŒQtGLˆ—‡Ñîc5ÿ+ÈÚØ„(&)n¶è°Gìê|ÓB÷1<]¬Ïwßc†z‰úf}¥éÁ¿¹‘3LuÕ’èÓˆŠßxªà›áé~çÌIã°ÇÔ•’Ž¿0$”bn?Í„`ºŸC$Ú'=Ñ@}&Áó/d±Ùb©ÃÅIŠú<Ïm0ê@’;%‚·œAi„¥8!€Kh«|o$­™#ÆBÉ"cºë¨0¬02š Sг›© „wÉØqÇ´,µÁP.¨§b†’u•`ÃBKGfËEÿáÓX„YbêùÍ6¸Ði“úWÄåö¢Úܦð9i³l©#07û)áIg+“íƒ,¼Á¶ÒÜŒ‚I·Íd?²éìTPød0|ØDö“êšúŸm„6“æ¦ûI˜{¢BG€“Jx^'ñÀDcA$4£ýˆ sN"*¶ÂÁNÇ©VÙ4è;¾¢®S¢`ÎZ,OÞ&À֡3ÂZ‘\B®/5}þYýY|>D¾„³¨ €?v}°þmȳތðÌÿ³½i¿ÿÌ›±#`<„ý`(©j« ›qv6F÷¿€Sh‘'¨áköoÍq5\?í.ÀU' «»âD…îD^TPd^NG½Á˜L¸Á™áàõqØÎÏÆ’’›Üvî&·ßäÎýMîÜÜä¶B›Üvh“ãª^Ʋg$Ñ¿¿à#Ÿ|™»wŠÓ XNÕ×UUX%å &Ô‹BI1N¿´Z/Fëi≂u>@qâ¿$´\ü÷V}sk«þ²ÞÀøÏW›õUüçRÊ*þûI+þûÀó×ÿööÖ˦»þ·7›«õ¿ŒÂ«Ý‹ÿ^\xNøÉñ‡ŸO~Ò^ ,>[Ú$‹CÃ×ù3O¸,\ÞØhTC%‚‚&õvˆ ü‹©pï8èÝ‚ ½›ÞÞ¦ýüìÝô{ƒä—^¿ŸÝôµä÷áÿ “_²«Iâ&¡ƒÞª>ÉÒ«o( åÅ¡oä¶è` }il*]ÝLň8¿oT½Ù¦¼ÞX±óÑ6ñ¯ûïŽößîŸÂý¿BÈú~!ò5Å„q>Õ¬®¤àp@½\=>¾Àz#,Þˆ£×(Cîe:®J…äÇ+rðð¨—|…Ó¨WŒ¿!ü‰ÅŸÈ@þù#ù¸T-.˜ÞH~AȈçÏæOȳk IÇä¬q1œ|ÒIØÂmï+ÚÚ‚i}Xñ +¥Ú=C*Åá ·8ã^OQ…½öfé!}Ã"dšJÝEå}%½WÅP`Ô¿ð=“w×Hdq5™„—‡yû…à:ܬ+ ö7ƒ¦|Ê.?I½J{-Ã-‡“ä6´ÏÐBO…5&dì¿¢"t¯h Ÿ‡åÐWúnB!·£uµçZlÇjËYR¾×?%:€x^zR¤jGèá{¸Êf ûŸ±›4†" _àçž³(¶¡‡cý9NÇNw ß}žpèÐÕô2õ¦=Í(p–§W )ãÂc?f¿/)ú˜Ÿsï/á“{Ùïe·¤ÐºIéHi…fEå»ÎzÐ|} £Ž~ÁÚ#“—J6§ýkÙ5=£ˆEÀ±HÊCY$…f¡Ò>ø–5Û÷XcY¬í¨wt,‹dg1œEò·E´àØ)å‘I²Yu˜ A(äShúšãVèŽå£WDp+’‡®H½b×§Ï®ˆcUÈv*×Óþ)æøÝ¯IòЮU5ëÉ -bšc™À! ?n€Ný‹ÍÂsÜ@Ëšz_»c1…ãìj ˆ"˜t7å„| Ä\¦–0a)ÂùÑÇ‘8‰“Açúm*Îz ­Ý›è´¸€qÃL»""•g“}¢Ùñ] Ê0™2Ë_áÛ·8Ÿ†_utñæ ÉÔÜéópÕ,î ›^g‘jœœQ TÚ¼'îaä Lr‰"tYb¡{:ºL9ü‚ErÓÖQòV­¸¤ ÀÈ"°E+2 ¢ÈbàDTH²Øäeˆ°(â½j5¶MÄ{[‹ ˜ñnVï!²Pü"ð¤~ÈŒà!³ ‡$Eà!§÷Á ‰A†$E¨!v­ó†”Ç Iî2?Rˆô–„æ ™ Ä‘Û`9hz†3Ó1T<à A¢¤DÞüs°@J€˜7% d6ìAÆA™öCòFüãþ¸9 ù¨eBþ£€ɽ1?î ÷q?¤ûƒ|Ì‹ïáÜy"ûBÞ¬ÞÕã^ˆ÷Âòða<î‰à±Ä®p;îÙ‘ƒÖ‘v”Y¸9XÉlp÷@ê¸L‡ÄèØA¶ã_l‘óá:<΀ïÈÇêXLG¡#¹HÇé'v±`t˜»yXWW¥Áäøš× dz@žG^ÏåI– åQ¿CÞs#(>tQ¢j¸~I®%óU҃ݑ  1 `¥|ÝP¨ov¥ZÚìê‹Y i¦ã)Å\ªøq'ÀZ«4”³&Û:qÁÂxÙ±M÷ 5H(g˜!Ÿ#ÔˆàKB—nXAFé58ð=ÜÖA."E;Êô‡äæ‡ÀÕtDjjÑÜD°GtÿWfƒžÜÙpUk•6—Ýgà@¡ÙQñVüBM(ÑU…Z©ˆÿ&cŠåê%r?t–yY¤&{[ˆÌxðwù`D‘½ó“±½ç¡²”ØÞã€,Éü˜,û3äS“Óôâc¯ä¬hh=W’НDÐVäÔ„0W’"Ø•cG\IòAWN´þ™¶ñ+Oÿ,¡IlH [p0´ØÝ¿Ò´§E‚³„.DËDÔm!´Äl²!p>YUœT ¡WœBóK{n¬e¿ø êõ ¤fkœj² ós’q¤¡.€®&c}‹–ccÉ›£pï²Ï°%ÜÀ±<ù´aÜä&]F_OôœÉQ4^•â*šè+­ê úyVeýÿ?€Å’Þq~*«¨kéèVšLì¼Âᦧ±^Ó–šñ¤w,0ù&òÎ ©àè̈UÌEVÕLu)OÉ»!AšˆÕ“ Ë9Â+ŒõLª•{^3b<«»Ü=XUÛt Ž ì¯cÊîe}6= :›ÿÆ íßo:ªÿñ™ ͉aÆ1u´K E•c_™Õåm0ckÐ{Á|00&ö‹ T&öE]‰ŠÁ_Ó³*² wÔNf±‰*äw¢À‘œ“Ýd üzòíxXy¿À[Ö˜‘Ì —7ËWÉÐYI®‰Î~©Ô”׌®Ë±ß³º²®º"6>tÓfVþ?ÿïzýÿ«ÁMäè¯*€ãá­74 ㎆w£ Ú¼&îBjûèÙbÒIòc!×ZÒAµË/Å™4üÂ0ˆ¦*Ä›Ò` ¿$ÊÜRX%uÕô–ö¸ì €mûJcm«z1Ø:Ž(ø%ùMÜ è&P¹M½žŽÈ‚óA"ï_'£ž”ƒzSé<¸ÿgsD؛倎Hš³žÒ’Õ"§tðL/F›Ôg8¤J2˜tá \r¥ccUk¬“_)ÂçÉ“_Ýç¿N™ta<¼õ»ÂPm—ß´)S8€'áÝÕ¬2ÀYÕrs°ŠxY>ó¥ÒÖ1~8iŠÛªò† Ãs¢DŒ•D‡Z,gòR’ E<”dCÄW’ÍJ²ù.’µxWâ̓‹7aGÿZ­JAç«´Ì«ÓNèy\*b+÷NüÅ—–†×îûªj_’Š‹NÞT~/IJúg†5¶qX+  Ut †]Éð‰‚cÂÈ è˜>«t ¥ê©üq¨¡Òm™ÀF™™Hõ©£Â˜Š´¯¾(0¯Š®y]éõo†#X\·&Ž 5¼7Ð;…pžZÇ)i<ùénxÀbµZ=`Wwf:¥AS5’F¹ÿ-‘á c!DtÔP¥êœþIùÜJý×È þ ø6­óäÀg68¢ä³ˆ8sÕ䵊ÿ`íðmóªáLÌ®´æ²Üåv¾FlUû5’M ¢Î0L0zˆ¹a)RÁ »õÔ©Äì!Ÿáô¢Ÿ®k»†5%Á;û¸ÀÜŒ³ qò JWëhêèËé³<úuC³> €éàs6¨veFÿâáh’ì¾?Û9j‡‰Ÿ´ßîw÷ßw¼M°B†zsÑÀi‘ŽdüÀõt2en©ærÃ/'íî/Ä ä‡w"†Ððï¾ùvýÖ(ôP²õêaó‡É­`¨?§¯ ˜°¾¹)xñ6#/KØ/np«anz‡Œ\2œh²áÈû„£3Cðv‹öî’†Š;í%“ôòÓ û/#+R?÷¦Ð?Ü^úœÈ­)«wì`°Ä°þ ‹°žð'8þÂâNRBóÇF„¤ž/ÀiŸ¾åí oÛﶉšÈ {ýÞ%(–H×\9qád’ÞÞÑ\y¡„l¹Ë‘Â×Vo«µ é±p#± !®F9Ú÷Çil³J*²áö½Ëà<½~fÀ·ßRøöɼ÷I ”{‚¸Oº6ƽ12¬ê)O½«´‰2¯%@=ToøÌÿŸd“W@ߟU(†ÿ¡($2%ÁFKðzâÖ°W)› Àz™sXy$5ªüØL*cI†ƒ¤ŒïÛ„‚÷ˆçuðÚÿî'9˜x:{>° ÆœX$ú$Þ‰˜¢5hÒ-?9äuxSr`úêÑÜ0Â_Ò~ŸÆÕ ‚—)C0žúú  <Ͱ­(QY!aXBQéÅJ S“Ó;£…ÂÝIY½Üû_9ÈkìŒ4§]QÖÒê®Õx˶£Ôê²¹vžÙØkªsõCÄ`ݱú ö/Õ?ƒ÷THº\g¬›v lÕ‹5]/ÞݾG¹ö¨:G»Êœ:Þô9Ôзªa!­,ݵäýËVX0ŸR¸;Ù¦Ýx/ô1ù£¦6à§h${ûÖÑ“w¤ÊÛ¯‰Þ¾;–ìÐÏ8Ú ñA$bý! -ñyœŠQáñþ‡?~>yÿÛé/ê…`¦3@£Ó|”csHväCM5FÁªDóáÁ-«ŸðÁ¶ÑWøóe>!c,àáWµÄlé?sZj <ú¯å¦«(›«B%©à­0â(•ÉbŽì¥ÒNüqü^ öDÇ¡|Ê M,§¥¥3YöŽJU¡2R8).âƒÇXßô`÷íQC&¿8´îÇNfQ6‘D^‰ïž£ÝÙ5à^Å…ƒ/#YîåJíääµÀG¾ŒPk®½Ô|_¸C¬Tªù¸ÿJ>P˜qÈö{!²)«”á'‚ÿQYZ“>ç¶¼ÁÝëgÿÃ1ç‚Áô\ ÿIi]œ¢C)î„2ao:˜d}Ÿú,y<ÌeÊé±DîZŒæõXåñ˜1ǤñH~¸<2à*Ç*‡‘Çcq‰< ‹ÇÎbÓxü¨ <Ö xÈ£¬VÑè” ¨•Põk J¤aghHmÎ s)Ø ]ŽIRÉ’U%=©Õ³­K‘¡0Œ€‹›ôûõ­£Šâ2C}f0 Àâ%)™·9RŒQêcøŠÔ?H™D FGí.rCòZ¨ÈͲJÌ‘—˜ã\öAl,q0gSŠÃ6srŽ8(³IÅÆg.‡ÂìlkJ±lnfQ‘ÊÜÛ{ss&Ù9§òÒMüóM˜ù&×€/•ÿ¡±ÙØÞjn¿„/6ë[ÍWÛ+ü÷¥”Uþ‡']tþ‡‡ZýEë¿^¹Ùt×ýå*ÿÃR ¯v;ÿÃé^# ‰™bŽþdFhnÔ«Úÿ¾ ’DÊKP3¾ö‡£ÞÕ0ÙMÑKÂJ°¡ˆµîFYS Ô“¹Š‘aÖœ¥Ó„tÞQlÿ|Ü~ƒþj Ù[†@ž{)}æÂد5½@®C 1Dy¯ìyQïÄD üˆv꜋ÉY’iÌxÆy€Æ3¢»`oªÑ* :™.úÃË¿€g%ÇK¤å¸Gæxy;J?§ÀeÉÈ£‚”»êØaË :&!øÐ‰‚Úƒ[@`IÆG´0õƒ!IVA>ã!Gò3øT>P$•ÓO6dòˆ‹TŠ`sQMB´à©<(Dóý2‚=ÁÄC, ÆôAM2R× z”»è##Þ¯Ge%Ô#[1câÚh2åP٨ij¾úi_׊`KÏuXè]—»±í_g~O.rzLÖÿâAù«¼‡\BNr&‘¿lHM†l‡>ñÚýËæÔÅGsWÌ`¼éäæQQÞubîï3ŸÌûN»ff‚Þ¦ÓKÍöˆ¹§¿ÄÙñ10ÿ!ò#fômˆ¹)Ô’î~·ÓêÄëêî¾?•Z“¸ƒ<¤Hå´¬´/ÃÏíw€`Ú\¶‹Ey!t=9 ¶1ê†ÀÏÄÐ1Oš`m0¬¿†ZžŒ—ü¤aÍœÁìYœ lÀžÍxƒ®2›VŒ­O š–7>ñÐÿ:Í.ÿ’ø-°‰‰à‰Ô¶oãÖ[*] ~ˆú¾Ä-m½cȵm ’îYå vÀž‡è¢@z^´_È u]n¨xer°Ü: ß' ^§õ®C-š´L­åü嘰û@IÚzÑÄ –>Žš'uµohßq¾þù}rŠ©ã­Ï]Û¥ê®=Qý­SIx~Ð89x^Ý¡À‘á—äÀ.ìèrt'Ò%V.ãI¨ñLIÚY‡¦¬ÓÙ Fóy=7õX"ÔïÖDÈ÷äû$ xÖ{n ns®˜=` ßÖƒ\¦ƒFËù쮥#U0x£Á’Áˆ›kjœÅß)ñ‡éïÈöÂpyOÎï`‚ÍüÄ~4âŠù¡ÂèH›CîO’E!¸%ÅÌ}Wt#'º9S[›¯d¶”^K3™·êïa¦‰¤±zÊf7ƒÎc3ÒZiL3Íì@‰0ÓT²\;M³Ó,ÈPó˜,5âËBÍejÉÁœé; ²¿äHG­vçC¡åE<¶ ›Ë»šÐl íåwtæížžtß-Ú3s èʳP ÌÉÞ²-0LeW¡jlœýO*Ì0CƒXéIíì@Ï™Ñi|tÔí†Ô–ô¿5µÔûÖ9èþø¹­U£Æ¡†¾þÚ!ч‚¡I¹uzJ]ÊQºy©d&›”c’J\«ïXîþ~vw…1Q:/-NÅ4ØB¤¬ÑÎw›ÖBŒïȤG%C 5G¬ +"Vš#¦lR‚–‘J­ÝFN®Z’m¤5'Ǫ€6ÉØ ÙÙuGµX3¨¯NgRZE³³•VZÙüòЊ¢kXŠ•{;5Øýž3…zJ¢š· p2u}g]ßÙ`JPGö”|Òs\L¶x—ñ•·øL9[¼4/3(á¶ýw 3bÈw_-D×}H{‚ãÞ-¨‹2“–Š(:ÑržåoèyÛÈ!„*ê>™Ó±U ùºKfa‡5Kü·,Ȇ.¦‘®¡ÕÎp ù†n§æÉ2ó`E™ݯw1ŸÓûö.ÐÎ{³K‘·ã\ì"¦¡$ä>´h¥^N1ô¿w—ÃÁcñÿ[á¿,«¬ô¿Oº(ýþBü—F£Yw×ãe}µþ—Q„ð`êß¾ï˜ÖÛcøŸûÈ@¡¤=+E°l•fÞ ¯¤ý Ó>!(%¡ê40}Ø]¿wI*@üè= ñ«d/½H6›µ¤{ðËÆÿzH]r`¯9ɳh˜Cu!oTH§¯î¸ÂhýlYý3r¨‘ûÊI<&tP°Ÿ]qZw¡¾¬ÀÐ Hú:&¬¯–sj$¶„‰:2RN#‘9<]9芡Ÿ¨>áº^ †<Ê!q£Û z[´ªUíƒåuš='~g†Ž³7æùE Sò"©ÐœÃØ›ô«OQ_Þ:¶iE´°µJçy½ú¢±d=µ`AV¿É0ÅÜX— .& jò7éOT„ ÈOè¾rí£˜ðzzêc‹ f”ë÷‡_Ư-ŸKr–p–äY@fïÆYa7`(nÛ Ú^Êzóý§à¨˜“Šm;2öþå4½þ‚ÈàNv5DSÕx˜|ŽbŠ.{S ñ‚uÝw‰ø­7b,׸-ö2¤Ïp•¢|Hl°†2>­ÕvΔà@€“²"ú oô&¶6²ócjƒtÇa6›ÂÚ ä¨@SÜ,L­.©ådewï Æƽ¹'7nø´ ⺒§FEæ^àkJE&b2Òð x®l~Ë/¦ý/ýïô;Úÿê¯ê/_5ph“ýos¥ÿ_JYÙÿžtÑö¿‡ZýÅù¿/_ºë¿±Êÿ½œ"d)Ëþ×þõ̱ÿ¡Êm¬Ù(môkÄípƒRÈÖÈ‘ÁÉ\Yùæ°ò@•øv%iº³ @!+^žé΢fðîaµk-Æj׊Yíºr ¢\ìøŸ}3Q„½ÆíN5J^·È†—Gv„FY5r­ár‡}Ç$BÙz£ù5§ïຉãê´³áÎNÉRXÓÈ1C‹ Q@ë;~ÁõÕ`”¹4¾ GÀbÅR€’dd$›×ÇÖÅö¤l£à<ÑXÁ™bGãfËVÂÆa!÷\öa‡Ä Wj`õñ!ýÍÎúªf¬<“Æø!Ä\ÈÍõ±„i*˜"¢`‹%\ÍÌ@žpß?½Åc1.†ÄžZ¢ †¬i±l28iá‰,V Å•Ùíö3[¶Ç©¿2–Ñîi™Û Z°2q{úÿ¤´ÔA¡ç¤÷:g÷=®Zà.Ûºæg¢vñY™($-  mFäè^&œÎ„ÍŽ}ÛûJ¿»»¤ÔN©ŒëúoN1±6ô­Èxþyžì[ŸCïöÕxxéŰ |——?ïdMæ‘"m¿¸q9É°× f ^)ùõa¯Q8xdyž4–=ˆyi•MÖÄ df퇪ñºÎF°×™ ü™/¸š­ÛE,|¨º;PÔjµÛ†Ä.÷ÜýÜZÜV'‚OŒ–Nb¬¸ÚjûŒi/dÒ|nÙE÷p§Õì³Á†S‹›s·å.Uµ´%Éݸ¸Ò­ìWÑÚƒ‘Ýô»m›ãE%ÈYUU'qf «o‚]~ezbÚF×ßÿ«¾½õª¹4ÿks¥ÿ]NYÙžtÑöŸ‡ZýE뿱õòeÓ]ÿÍÕú_Nçµeÿ9Ù àaØÞ±;ÇŸðÏ^ûä$ÇYh¿ž3bìG5=ÒÐ/š6š³9`Äæ òÚ“ö(e˜2ÇjÄüyœ…öÔ3:T ø¯Â}™ÉÈœd·È.©´¿ˆ …„sæCšáëÕì˧t ÞN¯¯³Ë o!B­Š·¿|||ä$¶ p —`Þq’ŽFÃQr1œ®ÆôÍ<|~%¾QoH…_j§§hÍù>g—0U;4?ç!¬³•…éûX˜`§¹ßÀ/h?_¼¥VtXn¤Ÿ˜1+ãÞ-eÀN@ú-“L>Å0ÖÜl s§ùÐrøèCãÅ[Í/†Ê;/‚Êó€ïÂ3ÔCç‰cä*Cï|cr¾Á”ü1Ác‘è™TCó)ÏŠ.6Î:}hu¥½ËOºoŸSäx“Ê9z=T&þNÞª5û×ÉùéÉY÷ƽŸï\Gèê^ ˆ:¤ªXЄ_¬MÏI£/¼wê>ðž}'ïôJí ÂjÒQ¶=.ê×:·¯ ã¨Ë1Ï”;ž˜ÄÖ†=àÔæq2JûYxzÖ9c9kcâ®;|±;„zý/4bJ—¥uP¬êz{ÓèÒôÊÍà>œƒkd8€ÒÞýè‘„ãÈ*PµÅ@&æ%Á@úVÆvEóö›ÜÿÌ·{ƒofê’n´;ìÀsÛû Îf¢‹lñviÕ¹jžZØëþ@Ø9µE9b°ÏŸ Wfw¶PhÙÄâ»1%ž¥ʶ©L¼¦½xcxè>rªƒ7ƒ†pîÛ›d;ïÆRdMwíçQB³Á|FÉœþ–ÛøMAÅd~9i綇RÍ%8¼}Ö™hþ;¬a&ÜChw¿u>Æ»ÑÆè×£îéI»Ë^©­½v4è®Î£­_XÀqéÐÝÖùñïäÛI?d /Ið³{üîÃbykQÜÓ¹ý*æ…Î ~jN÷BaIU¿{^öÝ…lr3úcœì-…Õi{ÈLõ¨â2XR(’Èj;k$‰ÐDÙ_ÖC–Ü‚Þt>&oç`8ÀüiÚ‘ÄC’ÐÕšSØÝõ§c™W[êÀ%XqÜq×  nß³þp Ù›w¿¼kõ\»Ž´?®ñ+Æç |¾õ©^íõ¥À¹ ªãàoÙ£obâžo»2ð>Ÿ©Ã©5A ‡wÉt0Éú¨¥¸»Ã«Á奔¹PwÒȵ®z«´\ƒPœ]Maó;!Ä×u×’s wi ÃÜ¡ÕB ×ëNœ¸”ɯá.n¨ÌEâúcÒRdèc“Óq•žuÙUö¡œäMÚ T Lû=“ Þ3¸“ÞŸr¿¢AžÿjU×ðÇy˜ Ù-ŸµZÁh4øõǪ”íõ<—ÓC(9Òà#ûž*iVQS®é`ÜÛÇ¡F¸—%øòÜŸ B–ÙoIW"BÁ§<öîm°BQ²†ß¬ñ"…QLùÜVÖ·DijŸ  'í 0Û4 ½,ÂSbÕxh¯$ÏÛËl4v{39 56AÏìÀfåüPvxøÐè€Yöñ¡ÃC÷cË åV[Ý}Â(ýûs®­@ã«Ï=ò¢ÕÝÀòÁû‘Ë6Ã?bce¯.þNo6õÐhê¡ÝÔÃÃç‡ëuÑ\ø¢ëR8䂯¨7Û›ÑÉQÈÌW4}%ú™‚}Õoj¡½/yòéë@›“G3ù/ï1ù9s ÛûúásqN¼Ê™k'¢ßŸLÌæ8±©¡Ã|Ž|~‡ÙºÒeM¹ 󜼿à$Г`›ÇޱJ€ÜsÞŠlè|3Z­têTÃòψf k]s¥[ƒ/ lÀæŠ~%p, Å|›]›Š–¤^ànBR :è¬#ÕÞˆœ[ÐN²øEº9‹N£ª^½J/GioÌúÃÞu½¨¾“ö8‹ÉÕt$’YTT(Ââ¹¡ŠšÕ¤5IH#(´6òÙ13X²ØE ² Š“|:ýíýšþ q.X0£oí)$)áƒ7gwW¨}Tú\B«ÁÜô2ÛE3‘ò݆ ª.œ ,¹«HaxÉ&¹Í±–)…9¯+T €M]H­üÓÝí|<êd‡´Ñù²¡ožk­ó ñI5Ù觬éãÚ†D%̼¤ò–Õj^ñ2±m‰R2[m€UT±)îgt/C³-Ótpå!g'°¶¡ LËÓò\NJhN u{†mý¯‹Â$ÅnDdÖoFdz!B’³uU:ƒ1Ž*ÝkÂpY š1Á^Oò9)W~«ÖÜëÃo°”Ê3§#qÿk¡'žÛ¡j•z®ð4œ™"Ê8“‘3ï_á8„Ä‚;«oFNÆ0™‚f²vFá¥Ô"1œZRƒf>Ðþu£>+ JðÍ1RÎ*YÀ‰‘°ª¢a'sVy uÍø§¡^$@*=œˆF©à•´&Æ#0 ؃Æ"zÐ(!ß{È]A7ÑèU¹‡g(NJÙ/ÕÓêäö$æzìn®^!éUšÜkK0Š#a¦æ7C°X‰­eÔ¿¿/QPMæ-ðhðÃÉÞfÃ1ýÿÇŸÆxŽü/Í­—+ÿߥ”•ÿÿ“.Úÿÿ¡V!þÓfcÓËÿRo¬ò?-¥ðj·ýÿ»‚îÿù©¿¯Fúɯ¿<˜ëþ‚’üðË;Ðw?h(ËÑÜæE&•X:pQ ™ÞPãB×C™|‘}ù:ëßÖ;e ¤T $"œf¥/,úfÓ¿; rEGméÀ-:zj:õ^¥t›3”4g:f3’ÐÖµ´¯žróMÎjžó³REû/ô•€gÝõ3Ñõ©áoO^È¢£Ø#^/¦K8>‚Dø)áeÈM#¡ÜºÉ<&{CiÛ…+¹˜($cäl—Óó7 )к—/Í03ðÀ¤ð¸b"y֭؃"/é°'¼í&=c0‚å _´&7Áqò ç«y¤ÁšL7M“‹Q“ð‰ë鈠®ÒI/ë¡ç¶ @y—g&<ÕD­êh8‚I¤\ªšA €ø,2:¨ @°€dõzSž-m½7:šÐ“Íf¯©D ¬d×n³Ûx›ËÔ†:Záâ½5ÆJL6»$€/Ä+»ðŒXœî¨ŸNd¸›%5 j"¿—Tô…Œoëe—×KÀ³Xâ¤äøòSzK®ö0P àzíÃÏ[ŽFúµ‡MG10`[5GÔðe¸®˜¢×WÕDC²^«•ݲWoÀÿMøË^>mÀ§-gÌzMø´¹Å,ÛËþ„¶\ÞTzfÕª?ÀIokKnö0ˆöMýS÷µ:0Þ$ÿYÃVÖ°Qø[ÚøO} ÿÄšøÜäþï9z?Rè/ÖÒN»‹„[Žk¬ò|õ}cÿžn°/µ¾tnWV¸ëÌêÊj&]˜15¤ž;­mßs`˜­¦¨Þ˜ž°^BxCÐo͘ÞÕ÷çhƒUgw?¬ |O±õÿ_Kþ÷íæJÿ¿œ²Òÿ?ébêÿfõ­ÿf³±ÝôìÍUþ÷¥!+8ú°öZoOkQ ö¯gí]ŠÀ²€e·Š ¡Ì„TheV˜Ó¬ fHOc)ƒ$9φ°´ñ‹Eê.EÖªÓÇse€gùKã¢ðcÛPÚ&j‘H~a¹þöŒÊ«Iöúc ¹:ÁÝt|9Êî$j@Pߣu8N‹=aÛÓ+¡Ü¨o`tò?*sÚp•ã¡`úr_U¸vZ1Öú e¨™É3«‹¾Ž-éïH¡ã–ø«*æH¹#ÞÿíSJª-8Ô~w4J|x‘š­À¨¤»T® !ûáfO.¦Tj †9«FL"(Èkà$(ß»nu­µ&̳o|%MB kh;ϰ#4ÂÖ‚ˆÔDõB«m6>©ô®'éÈm»9‹U 1£œ!.)a‹KdŽK”Eއª¹!cܤ6Õ”×gƒËì8’•²"ワsÕ\È‹K…0;æû»T÷n$ï‘³ÐØbÚ¨“e”&AË×7?•½Ü~tèž‘KR<éQ°…×´ t‡¯)¼Atý1Y=õÚ×цÓ|cÇÌm ‚\ \67C‘~G9Ñêr.òñvkC¬IFº¢çåƒTd…/¶6h«Ñ[±6‘¢I k¸ULÇ"„Ã6ÀÊuv­¬(ÛÀ à b'¸ Ì@-¨³˜Œ;×ë_ûyÝ+@cnH2 Ûñ’8Õ^z_zrß0–)ÁƒÀÄݲ¿jFr•J±uÈœJÙ„Gj,Œ«ÙM6Ðç‡XŠW­šKØžiOH mÏÝ;à°ë,%Ø>w×õìåÖn”Yö×ñTÌÐPÙ±–c&5EÝ¢ rŸ˜„¬½]D™rÊÙËò{Ԛµù ¡Î¬¤5¾Ùߢ L/I… e®ÙMES ™aÌæ…¨Ð~㞢7ÀÐNPCfÊhÍ”‰|C„à˜»H™n‡;ØáS³yò`¼Þ‰U‚䱚ؠµ£4¬ ÀùKÑ(×–ÉA¨­¹Õ®÷Ûã |…ÈÂmÀjÌßÅCšÁÕžäÄ‡ê¹ i·C¦-›Ú3ƒb1;-XaV¶+CìeœVj‘-¤çO_™Ëö¡ÝN—ÈšØ7yS2 ÔË¢3W¬|°còÌ4‰XGXyôÍvw1ŽÉAºÁ3mv0 U+"r¬<%ÆÐ­ÆçÌDÇkD^=„pUÒƒ(îM²sRŠ  Ñ>¶¨>Æ„ }SE|U)Qê Ú-ò¤ÁQñéÉ¥ËlZº…­Y¡-ÓŽ‚üÕp­ÎÐy¥"& 923ù´êø ´½KÖ%ÏsC¶¥€~åle²•*V&@c4kÐ0çÿÉzä÷gÚòŽÆšúºeÃÏlld3E†Õj”B÷È@FS÷†nª=P¾’–¨7ÉÓ–¡6VÂÔPΗçÈ@MÑR4„¢áµjumY(Ë'EÉdOMÈÞ¡§+¥N“ÃP~V` q3ùe¹9–BÍ»ž1*Ò¬áРØ$C-шV̉ÈϵYemE™?'-Ìßâø)ª2«µêŸ½‡eðñ¥t»ìIt¿Ë!cF“þG]ÓVPÖ+(ë”õ ÊzNwb)gÿUÂAø:)彇­2AOø( ÓC¾ŒC|”í(¯÷qÓdÐý’<ðšm[8ÊÅÎÎö”À™biüb˜mnÓÞ€­½‰©Q6(™ÈÁÒIaé)lO-„Œ¥Šeh¶­¦Y÷"½ìMÇq2ƶÄÿM¬sØuÆŸQšÛ?‘Ð%Œ#©¸‘ìååtÄ6ÿĶŠ7âYùBŒ3žÞà~¼ Œxª%ÓÁ#I­xÞ°¯¹8ô²J]wyÔw¸ìÕ’Î{v::y‹i[ù«pvxØÂá‘Z’“$žS ·:ïOÞÁÝnÿçÎÙ»§—…œ~˜s¿;‚¯ÍØsÂ5ïtÅsEðçêñœÖ•ŽEÑ8òâç¯Ýc M¡trœ+·&`crÜ¢2¦…ÒÛ; l‘䬨f¤D!º3[¡b]eFŽóhÛï‚ A‡ó n臡@Ðû‡{­£n[M‰…&Ÿõ Ÿ;¸›#ÌšI!.7fðDåhf¦5Û¡&e‚€dÔéÃãà‡þˆÜ{¦A9™{JFÍdäñiÙ ¢#ˆŠƒŽ¶ÜWctÆmxE°1›Ãާ*ƒÜo|»'IÖDÊvæçÊtâ!ÛùÖWšž>¥Û5²Àwexõd=y›Äó¿;UÈqù§õ…1õ?‡æQ4OÈÅ¢}ú€ $.Ñ?lµXp%0oE}¸Šgd3÷ï`”–;%Ûì1©o†¥D²‡P£|oÔäô¬l4Ýyùh:]ƒµa‡€ý‡_„‡)m„_ÊØñä´\]‚¡nPl×UrË ,¬¸ˆüi,/1m#f+Â0¸t˜4ƒÏ*›aKCá¹ä¦vÉhAªKTì+å»}˜„7"Ã%ÝØE€Ü(N¡Çƒ;âªðÙFh' Bóx'zðø¨„+wÈ^à%‘BbM@"Â~Óà™”x‰ü^°çÞ±!æYåH¡ïø2¿Ž¸µÔ3­LÞ!½õ/µÞé`-Æ–1·…5W ï,þt½Ÿí?«ÙÀ«A…,`ñpf˜nÔ5rÆ &2sgú}Ø[úSðû@•Ãg»3Ô¸A‡Óãf»ÜÓáƒRÎÆå™ƒZrðþÏsï€/ý,Øgc÷ý©T#Å=5𡜖”öÏèBãj˜úþ==î~X oE÷דp#ÊÉ„•EÉ0åj?²€ó“K½ª'H»™ ÞÐv*Ŧ~ÈÊÑ<Ÿjí̲õ³–äøÞ§ð¼›Å’HÐçŽíR6K%­¯¿>X¯ë¨ìäÀµcb'ÐîT÷:ØtpJéEž‘ô ñŒüx5Á?:ÃÁúNLø*¢»gÈ` ^u W"­g¸íg•ƒÚcÙLp\üÃ`]ÒëòÆ{§Û UƒöuÚ&*²mªòšÓwD€L³ƒªâ m‰Î·œ+­éýýœjÜ*¨bÓ#Ã5 ŸÃì\èâÕ&‚…ê6 . ÏÌÑâfæû85ÃìX‹ëàyýuÇ\\44SΦ˒;È} §YdÆÓ‹°K/EØO;‘àõˆçæ«>¨ §3h©àç‘@×wÿ¯ŸÀJ¦[)Ú=‘Ä:I$ÖÛy+X<¯>÷Ó@'æÖÔÅço]zF9/þƒ§tk“‡©¹é>,™þ~Ëû>j§‚åǵSÙöŸìñضVúߥ”•ýçIÓþó0«¿pý¿ªÃ—žýçÕjý/£ðjwí?û+ûO¼üýì?û¶ý'ÃÁ§!ƒ¯ÛD"Êà£gT#®÷MˆUkt1Uà–Q u\h~Éy÷‡0Ä<,Ü’o¨±cÃËØlD{{ìl1†›£á&hŽ)a«¨Õf#èUÙ²s¸hÍž5—?Œ/«š‘ðÚR¢ÙÀ×ö£ß³¶¬ÈáñB­”bßQM_VA¿$<þ߉7øo¯–÷~ÀÑ—£ž_éÕgÒ«ï/[¯ÎTöqáOÜSÍ‘?Œ-Ñh?s€SCûœ›p‹Ã*î­èøjz9!\£3‰V êV§á7?/ÖÖ³ŠO*ëIï­5|Zùíê=ãÊYSéˆzF¥l4•玶zÍ`ç2ƒyTe‡!þ}Eµ=h|壩m'³©1kêsm8ˆ¤~6<ø¸M Ö¨©5¯9JVцŽÌ£Óë .é©S ÷aMý¸ Ñ'VlýïøÑè«üoË)+ýï“.¦þ÷aV±þ· ºúßÕú_NáÕîêK¦}]iƒ\L.²-D1låP›EKÜ•©\z9ùÉd–aNÒ+* c¤Ï¦¯KF%³¬-[—ü8ø¿OJޝ„tœŸŠcFåõéL*ë8(ã,*k#¶ÀS:Ϥ²Vzj‹Ì£UY/Ù{6<ï(äÂÚÃãpwUùƒ(©¦=Þ_¬N8¦õ]ˆ¾wÁž×ïZç+ñL@jöZ +ùî˅裻©&P!…{¸}w)M¡’˜DWðh©.Yï+ÑGH´lbLŒ_åÔ°–‘PHdçÍdV¯ìN¾OöMí~Ø#[6ðÞë ÑvíKJ:FÇæ)ˆe^Åæéhí÷9‡A©ƒ6 áöI>úý>m\ %÷VHwW ép1ô¿ãÉuã{ê·^5·àê¶VþK*+ýï“.Jÿû`«¿hý7êÍÍ-wý×_­üÿ—RÄ™oê»§{ Óÿ•ðÏñ>\¨NZÃZrúþHá'uÁÇ'ïOߟþ~Üi… ©Æ#}ÔËn’£éeo̺[|nò Oîw½Áå'¸A¥£ä…ÒÜŠ×Þ_N†é¨‚Áæ?Ëi`*QèH±¶EÀ=/PåÞS=[áºHE‹ƒ[Ik}ïó3RÁ{Ti%.Îl)¨ñ$þin³ÏCÿr}‚Çémæ©vgA{9æ‹fÿ;6QW=ä—ðóŠS“8šÇ††º rÁd¨žR~£èéäÓmr…ié)àd’ÞÞ^'°5Ü4)e i€åâëæ n01¹v¤KÑ^ïcÞ–Ïi?i$p÷í.NÍí'Nú®Òøaб@.) ÂRyëc.Úe\±ÀåÚ¢U¬mÕ:9*P8›©ë5 FLB”’0À®r¸[v]zÎ|?z„OÇÈ©§Ö. Æm6 ¸c1t•Ãõzu<¡Î8Ær6ÄÓ“‹A”i¢eõc>ÓDkƒ)ù¦‰’½5Ölæø ÞHè•ÌdÅЩE×™Ó 5{¿*Æq%'ß°Ÿô¿Õ €j*&`.iäí4£3ˆøùá2Ã(A…Œ½ø¥¥ËÂÒÓ™ÑÐ Ç,‡íd}кV7%[@ò ¦Å#$dÛß2åBýßõ—u +0Ä•ÀH~{Î#Ä ‡ ¿ýé{ÌapÚ~'“%E2Aá5ô>þ £¢ªÙ¬PÑ,NV*hö~·ÓR¶‚€‘Idw²_„õêç6(È …ßÐûf±š²¢†¿½»PËÖn؂ݷ¬•J¥ šßJ…²ï5Ž^?ûŸõ.™B÷t×Ü'‘aÿ%ôáŸ/®ò„û»;Ü"¥U[øpj8ß‹ ~L«^õÚ€õ7¬ú Ô…àô¡²@h+>® W²o}¯Ê=üc÷½1Žˆ##‰#Züx‰ ¨¯z’¡¬X Á*FÜ£Ô_m†'7<„8Í(šŽAígé•5Õ(ƒÇ¡nhÿMq- aó¯Ø7vÖ#ù¦ÖÒ\g£1JýkcHDË-Çåì{5†ËïD†fŒ-&«‡˜ŒµÌe8@ø”rO­ˆŠÁµ´6ÃðE{ 2°øWÓ E|+Hûc˜·/½;ÌI46’ŽRg æcŽJM%å ™éãµ;»Da˸DÙ~Eãs¡Xãïå°'ÂyÀ=IìbFA‚œYÑ¿?ÇEA˜éb­á¾KR´:Ï™šZÐɺ¦L¬û‰â@cá W(Q$oÄWô+çÕ×$"G ÄBo?Xw¢~¹ŸÈ®8û‰nžÀ ¢•T¼yhêE¦JÔòr³Ä˜;&Rsðà„¢¶‡²Vá@Ð%çý!¥:Æd¶ƒáæo¾þø\ãòt¨t(fAa¿Qta«Ñá«b¨è/¢œ2ì|‰¥rèwÖ©MÜø•c¡Px1ÒõN~WàÉuÙ츮Š>ynwÊ›€.޵¹UÐh›§µ~T0;ód`„Õê¡ Û_aT›!¶ëÁU‘@$¢¿‘$?—k­˜i  ÖœUSk óÇ̇œ†BzE¸8ÈàHy¸Ù /ß·˜&Êka·ü·®7g¶,w¶J÷÷lÝþÛœ­[x¶îK=ÄÙêg¢Z­²<‰³õ€fGED)¾ÏÌy¾ÒAiââ>ô ŽÛ8ꤶúÕ8[ßêlUe‰g«Ä1½×ñÚ&ò„¥3Ž&]°4õeOX‹í- Áý¤ø„¾kž¯Û‘óÕ¾OŸÀ.€–aV‘Ãi 5‰uäB³-Þz}ä˜Jغ|ÍÌ jÍѾå˜i´5ÆÊXÇ–Œ³BQ•œ½@ÚA» ½EÞ£=/ç¢h³¹ç+åÒ«Ò€«¨4[¹s.¨XþŸß7ÿŸéÿµ½òÿ\RYù>ébø~§üííÆ¶»þ››Û«õ¿ŒÂ«Ýñÿ´óÿÍáÿ¹òú|T^Ÿ%ü­¼><¯ÏæÊëS<µòú4Þ_y}þ8^Ÿí:¸ò*]ˆWéaípÉ>¥+ŸÏ•Ï'–¿½ÏçÁl oï|÷ÏPÛŽZí·x3fterè&JQ×]´Ûýïg‹õ}·ßy@×ÑeÙ¾£ËÏdÉT~N'ÉE”ÆÙÿèw;;hp"f§þCßs•.l7ô¿5u4æÖ¨ÊÎÆÏmm2„18µ“é€j&¨®+]·?z•š¢Í>A-FÄnäŽ,›Y››a‰ˆKm’ãU›k“dfßÚÄu¯M Ü^ƒN¶Iy?Û$ìj[TmâÒ-ŸÛD›÷K»Ý&!ÏÛ$ä|›˜sè6hNÜ¤Ø 7™Í7q}q“;®Õp»-1ïØdQ²‰ò~9,‡·oeo]^§väé÷Ær×`“!ÉSˆ&c/c.¸—ÀiS!¡ ³~ø<ì"—âÍ­Ÿ~î &êN—ã•쾟ã¤lõTx+º«…KÈmYxØÇ&±ÜŒñâô{½NöP§™÷ôŒâr_ÿ(.³zI鮿ú!sQŽG‡qÈËû$s {O™tgñOæŸe³[9Ž`Éü^U\JøVq)áa¥›=§Ÿ•¨©ÐÛŠ‹p_ø—çsÅ%:_AWÝöB/,.÷÷ÅR½-ç‘Ååž>Ϻ›¹žY~]sû?{½ÌñLõ«ûBW[ÆYšË n]â…"ç..%]¼Ì‡s½¸»{q)åôe<sýâ’³jòÝÀÄ3¹Î`\ Ü­]è81Ena‚vØ÷úÐõ½>”LVÌ_Ò ò0Ç»•‚…0£6ß][v¯ ªˆÓ^¦ j5ì`¯?J{Wßà¿ÑôØÂ,œŒÃçt/Ë™ѱߑáðHö×#¹1-chÌ€í¡§?ôÇ™\¿æ‡qgOX¶ùç“‘„·g“„·KK¯žŽ$ürI’pN—…HÂ/W’ðJv{{_IxÆÝÕ¹¥a;ZaYøy 9}ŽÈ…²ÇJþ1%a±8aØ”8,'x%úŠuhE¨šÏF'Pa6{ް .¦Ì÷ê±JÃ&L÷ü±73 Äÿ̈]à‹…£°†N²x0JÈÃãñ¤46gH9Ñ»ÈbÄL@‚}4ù7ë+ÿ凜UüÇ“.*þãÁVqþÇWþúonn®Öÿ2 ¯v+þã޽ *²vk ÷'ïjÉ |º;sÔÇ*¤åT6é(ùÂ÷¨3ÿž‘&»"ûc»b›Ì’Ã$¥—Ìú gdÔ‚e$Š Ñ®Â 2¤P_ G·ÕühI_e½›!zı¼Ž4tVH?äÑÚ.g¹ý(ÓßîÚ™™ RôD'„ì@“*˜)¾U­"gš™#{ÉU]œ$ÐÈOÃ+ícnõ©»nRëyZHžTn_$šh˜ÑéÀÖ±Èè‡]‡V,E£—šq¨™R]Q—3…P‡t”ûÇ£#x }xí,žÆ¤µK¶t½îµµ2€¡Šëõh›1GQr¡¹[gù;>ÿ¡öçv€§;î Ž-åå"äo2c e„s‘áØ"Ubºñ®{½àb͵/϶ö;:ï`K™±èOqÃ3Éè1ƒkº´GÀ â™Ýÿ½S-ïæþà÷„_øn:ée}{Õškg†w¾­Â\¥ãËQvÁCÒÉ.? û0æÉ/ÙͧÞm-ùGûZøÁI7û1BXÛ¤Òæª)î¨)î%§z[E ïh¾ÿnÉ­wXQ÷2Û ÇÝ An£–|ö7’WpP 7ÈG¡7AýÜîÿùò 9¼G¼ØÏsNoZ 3:¬‡ªé¶0%ÿpßçÔSÖ¥|aîâ­PºêY}Ãåb‹»†—ðÓöüºiߊzk.ÐE¦…»hË ØàzÓkÛŤOÈÕo‹p»õ å´ù­lÝ­Ô_wªft«ž:;ƒ¥1âPù.YQÁʵ[ªQ]w= Oä„…ïð@YK¾õTžDôÙ›¤rK¹Ž©U2¾ÌÔó×ð`Ò»WZüp-Éà“?kÇÖÇ6àÄ¢'ų(%¦ðÜÿ!×óð÷ª²ÿ/fŠL8†H´ì]å¨ *ýà4’v—ŽT—ô(²Ü^'³ƒžUu²…ÔÅ}ð¹ü„ ðJ+x! ¿T¢ÅÈïB[DKE«.ÜVu »þþçUG³C#›ÜȪ]ipÖëáÆêß_æÐmnµ]¶¼™I-dŽüZÉpâê:íµàCLwÉ{)Ýù®«mŠU-ÚrΙ&œúœK‚+muâÂ#º¸¥¸¼/WoEZH¸8&´Zõ¦QM㔫š6õ¿éGßQÿ[UùªÑ€Žù_­ô¿Ë)+ýï“.ZÿûP«¿hý×›/7ëîúol¯ð¿–RxµÛúßö¯'8J߬i5ðG´7œöçq«”Ç>§t=n›–Óä €h¸Š½4€¡Ðß…èqaŽ*\ÅLJ]˜m­ÔíõûIšÝÀx¡:ƒœ†jÉðE—…íó—~Cú²R™M‹3Ìž©BmÆú $$`%/+Ì”Òu@¸7ôÅÎn-¤¸…ïHäÑz¡ÓòTy&däYK¯m âõŒÔ¾~ç UŸ²›OèŒÛ£ç{——ÓQïòÛ†¨ð6íÆ \–2…›cVG ¬̹4ßXwKí¸íÝ@ÍÓ+¼Sì­@©DƷ郎Féø%P;kþ$€…ÔÃÑ G²Í“´8½AM¸ÙöÐ9£Æ µôFW Ì+² Ø'SØy]`³òxF«ûÑ ±×±•×Ã)¼cÖíþ~z²‹!îÇôHv»;ð+¹¨\¤0"ÂûIŒÒ«éeÊúE=GæÌ!zÃFRaE):ËáÖe?ƒ„ð1Ìkò%ýŒd·°bï@Æïã|›zÖ8fà D³Á1G~à–8,¡œ‡½‰ +}„FXÆé¬<³Q-¶&Ð.–‚D½IžuIy·™-ô¿¹Oü‡5_¨>*Žy4Jœ.à…Dì—mÈ á8PÍV„€t R\ákÖ™mÜâ1ŒÓÇý¼>ö êÉ}m8ùœ"üª<쪓޳,ìÞpH¢Æ¿×.ú»ö„lSÃ¥€ÊïtàBaQ·ƒvŸÂþ9滇lO/ÓQîa[oAЛÉhøMa}œ©í,*Dš{ ¯TZ[5‡û-V×ÖWYb[œÏÕ&ôU¸>9».»Û5ú+\4ñ'ó)³’ýÙ+ñ—˜Õ kôŸd¶(ѯ!~5ôÆãáeÖ§¢,tôá'Î? 1øØ­Sw©óLÖ£c0ç‡Ì öqƒ)ý‡Ô¬=:2MÆLâÉIc-žŸ?çèÖÚ½-pÖÐÍo‚³ÈüÇ!“‰)xíoòÿF½d^@˜m#½NûW¡£‹ðB½KG¸¬ðZ“^Â3Õ½¸Á÷2»CvͶyÙ,_zÌ-ž”´á¿ñ:J°†î‡]ƒëº—õùØ~á&ý)V«Îó •Ûy–òOàV¹¢^ÈúeÚw6¢¾µfhуæCÃ`¸Y3Œ‰aãaži/†%%õ³¾=Ž¿Î©¥4VÝ™j>ÒmŸÖÔå*jðc#( ZùcøV#ì|8•¿ßÛª*Õ'g 0FªŒ§ 0IæÂU™Z}<%:ûJnÆ*¤Â’²ßþû¶gátÞÞÏ}Ûı |­í§ž!”™Ñø:+¨©4ð´P@”ªøg$ÄX_â½¥ (\‰+VåËhÿÊzÛ¿ž,‹ËyȨ4¦ˆFʶ©~”K5ß8™s¨°aäÐÚ[`@öà¢ÿŒc¡kz•:DÓ\†÷^ÞŠðD‡…q¿Qýè^§„M®”’Öx;Sæ ?3BïJÃ#}í†Åº ¢­­„ófE˜¶%!þe)á÷!Ó*@®BKh³^eß n+2ÿÀÞJ;¢ÙÖêçï6C\À3A-6œ`J6i»¦Ÿ<;³©5Çoc•¾JJAÁpzˆ3t}ÐÖftMMö®;GN2¼ÐØHù(yN¿º«›ÿŒda§xL±B¦ýwt=~4ñ?õ­•ýg)eeÿ}ÒEÛjõæi¼l¼ôâê+ÿ¥^í¶ý÷d¯K2Vçä—®<Ëwá®Ø†ÿwð0‡Îñ'ü³×>9ɉcÞÁ¯WAC~¹wÐÍM˜©{š•w*L’ É8m¦,ÍÍ»{üK|®¥Aº-ž$ÞðŒÔñ÷Ï+ÜŸ™¬×À«Iv‹l L·*¦`<ìO¥š[†ãüöÛØJœÂyÃʃ/Š o§Ò¿^ªù0BÜV‰tÈ@­ÕϬcœ9NÒÑmžh¼dƒìðî´šÒ7Ôñ$»¥\×âú#¿ä 䣴tÈÈ(»ù„zX4èbokI¶‘nÔœØþ“Ý Q÷G#ìp­ iiŽ¢’–$·ÞݽÅwsž «x¬UÉÎ50Å¡VÑ(«hƒwÊÍ$îvÈs^«žÖ<*­4;eÖ[•fgƒ)ùV—s«ùÅvÂs¿N"¹ŠŽœ‡cëºaÛi>yƒ½òI©19_À˜œo0%Lð$!úEßÐ|žª·[ÞˆÙŸ¥wùI÷ˆµ+æ»ç•?«I›÷ç:e!ÀÑbo$ª®éïüôä¬-qN&£©ñŽí’çV%ÎË?­ösÖ2y>\‰„Pº¼‡J¯ Ñ6%nà“ŽXwh®P¿Ö¹}U=%@…ˆ™D]“Ò’Ëî>s„Ü8Ñ/Ù8ÕŽ2öQ‰M²&ͤ"²ñ¤éCˆ\k°ÑŠæå'ò•ɬ·ÑgFv‹ò©vÒºíý3ÑÅ©ø ›jÀ–ÒÆý-¥‹1”ŠF „!I[Ì"9ñüé»Ö¹äjX¥ÙíôÖCñÁO Äã=¢4KØŒeûBró©¢ ú¸oo’m¥RŽ˜ óˆ¸á…QBVG3h1Ìéo¹Í¯ÑÄSLæ—“vn{è Õ\DÜäÛ÷gÓ‡OR ÎÇxÓvà±·ðÞ ÚÇp#mãå³{zÒ†ßñ¿Ö^»Î?9× øþÝþbòî´Î&ÔîSì´vº”WgF«rQÀhQ¤h@iM>jÏ“üÌɉgÉÌIzvÊ&éù§ÿîyÙwëAÛÉŒVE¸Ü>¤U‘ÓíàÆì'uå­ ƒÉB|¹gôCcOä²ø²²¬ô¦ó‘CöœSFå ”· DH0@xqF_¸ëOÇÉMR½Ç]´óùiXÄ÷¼S˜t{×)ºé`;¬çÚu´}\›‹þ¼¯Ó÷/°>գݡ–=‹†'û/{àÍ4G¸u&VZÞ á3µ‰7ÂI„ðÙáðn]“¬¯Ü\Žð´Féupj¯3'¦tl±5»šÂ>„鸣Á±Qno¡“¶¸Sè×(P¶º†?¾bü&þrQ¥@_(áþìHy$ÝZ°˜9Fnd64ñíÈì ÖW»çlãÃxÑóàý— á@j^ <ÁßSàçŽXÆß¡ƒž—¶ç^MkŸ³Y<Ñ(Ùxø§=cäïís·‘Ê„ÚðìÜv÷ƒ¿oE8Úøœ~ >(Gc_<|Hˆ|èy˜–\M£òö<24‰tìÎÛóü‘jz›¡Áéøí”#Ó‘#Ó Œ–Žx&ί³¡ÇÊuÒ`h{;NôFPîÂFªt€œö{VÄ}c°AªÄ áñÉÜ.Îåv±g,>k!sx?~ý±*/#v‹à;¼£¥"{—¥nÔt ‰âÞø‘««“¢¦tjé`H]9(Ü) }&É”|yëÇÛûÕ{^ú”}/J8áðÖ4d£ƒYãEzq9tY‡-ÛÚ»Þ Ëv+âù€[©âxô áÃ*Œi‹”IعԈy祅S¦×޳u¹¡C¬ ÷œÇ Ȇdx£ÕêÁX^¹­ˆ¤aJ%]“HXõCDÀAk4fãë,|k;S'õªXç"Õq@LIê’óÆ-œ÷håJYÖðÒß&ªzõ*½¥½±€ › Ö š×“ÞQÀ4äjj†Í™…²Kˆæ†*jV“Ö$¹ÂSâ./Ÿ£š:õO^5lÈ.(;±ËÜ,×ôWGí !†Ð·ö’Ì‚pAzѬtdlT¸ée«M‰é Ɩʺ6Pg"™Æ\áY½—8z™\Ӭ׀ܹ‘Éy]‰[ª÷6u! ñÏç‘üƒy{ì©÷òwP‰;×j¼â“j²ÑO7XaúÆyœ6L-g¾ØˆqÏaæxÍÙŒŸË­¸jTåíÈ&MzFïÎ1%¥½Ñ~´tŸ &dhŒÓë-ó©yÄs¹—'ùqçc\×%n!tû@ý¡ùÐtpÙPü¡µ X{Pðäáiy.'%4'†.•Ò[+sÒìó99Ø‚‚ºyòŠƒÎ8߬•çÌö"ÎO³ÏÅ”:óˆùvè°™™"|Dc9R¶#GJdLb_”5fŒ9õm¡Þg«©‘g]Âî t””Æ:Jf€;Jx”äƒ%1Ü£„¸ðeú()‡~´gÁ½ŒÞœK€ %98H{&·úUR’‡´ÇCÚ3ıWѾH)ÞD-GšÙÕïkq¼¤„X9k2xVê¨õäÛFöõ5Rj‰©ê^)Ç矱E½'ß a2Åz Ã/qìÌü^Ô)ødOëx–ëlúÿŽ??Œàþ¿ÍíÆÊÿo)eåÿû¤‹öÿ}¨Õ_¸þ_6àCgý×·WøÿK)B¶±ü»<÷_éö»òá5Êb|xÀ}׆ˆ*ïLÛý`à Ù.´±ßö£ÕN´ä§º†"âŽBþKõ‹oë²0QHHâÝàÄÓ¿;˜ƒSPBOQzâ’£Á°f¬Š5dŒSn&ÐÀýê‰kqÍj‰û=yÙ9£hTwU?W.¹Kƒ—ñôõ å›XÞ Ö$³ó*5ÙæñÎøÝ/$h {Ûš.¶*…† |áÎA¥masÒ›ÞèŠW­›é]:Rõξ&¿%gº%*y‡Ÿ[A"YÙŽ¾Åž²_{vôî’ãl¿,ñq¤3‹K(î1û°^ÄßݹPS €°LŒ®ú áv˜ x×®‘ø‡†ÞÖÕ(h)ˆÀäS>ÏÂ1Øâ,óU‡Ð'2J5f‡òhœÝ%MÀy,Ü'-æŽöÜ¿ Õ¬\&„¸ÚŽ+¸9бÚçJ0ݾB“™J&cÀv)Ù¢ø‚Õâ}'È<¢ãúÔû¬òÐB?Ä»fÒY1@ éV,õNNæÂ¿JP`_É!hO$D…Ü#9ÆgÌ·0©ZÙHÞÃ3#ô~«Y oÙ;Sí-Õݩ锟TvT{K—H-jy‘ 8Aô³19ª*ØYò›æÞñ`÷ØæI¿–\L'æ *Ðþ~?¹¦ÌÔRa&ç"‚Àe·°8¤ö['ݼHiÄÌ57ˆ{ “Á®DnRba_äåýþÚnÆÓ‚œñ|ˆpû0œ‰ jð2 ýå´ßóºçAhœÍ I6)aР…™æèÞÁl^g)ª ¢ƒ=ruÄô"±ÒM㩈¡Pͺ@û{´¯õ¶»{ÔÓöžÄòŽT€KN ©FРŒ»ùvx•‰@(«”úàÔÜžt;1…ºU®ÿµ(²÷NðX,FpÈà„‡Ñ Ì…ëEîŸÉFf{.H²€`gD¥‘–KĤa!ÚÏ‚c)¶9 Ê?¼–óøMw¬ Ël91ÉÌ“å°KhºÚ÷™®rx9ù&´2Ƽ“×¾Ïä-µ¾%pvÈŸR†¿e˜íøÏ<°?ûÚ ‰õiª¼Qòaa|fÍU_”¤ž¥PóÎJÅ’7ùy»PÒ&öR“ %§Q͉ê’iW7«Ö=Å> E gd­ ëu„ni¶KÀsÇT'Û Ž…Âì¢ïøˆ]—IÒ¬ÑÀsN/œZžå&—5Öîtæø É€dëâ¥ZD;(CeÁf“]¦’†›‰~ ‚%,a—6è™5†TwMÚ˜ƒYdÞ,u‰L¤sîVAû£¿ˆŒß¶¹[MoÄÙM´N"ä;-:§ApÌBÅÿØP%‡í9 yuºõGuf´¶ã‡N‰p"ŸtbÙv®g¼RÛÍ4î[ì6s}z4\ŽsáùÓõ.4ýÿ&£ëGãÿWß^ùÿ,¥¬üÿžtÑþµú ×ÿ«W͆Ÿÿ§¹ZÿË(¼Úmÿ¿`èÀÊSO¶J_Xçù PÏâ\7oh/fØ´b{ãF5åÂ&ÜÐÈí«Œ'Z+Wu }“Þcù^T!ÿ©e…Ùþ-C[KØÀgëöß3¶Õ1‡ÏÈÖí$EfÃJòé_³[I4‘¿r#7ÿŠEnz›ÇOHó/hbÇtRÔ‰}„•Ã#d[=¾|Êú)Sz¦ô¥çÛc hµØ…µŒöÍ¿«V<’_}+Þ”öþ"t΋Ó¿9¤ßÔ$ â„vÙ)À}׺Ðý-DK{¿+ô˜[ªñV¦lÅ0¢UŒÕ˜®Œæã:Š1Û·>døÓ¦ªÿÞW ߯‡*§ö>âß9ßî <!N¿®K ð65 @cÓI¼ažËLÞ[0¦Zvw4¼C'(åj€ú0WWJýoÚ…m}–ièÕdäÖçér=^/9~`c Sº’=¯W­F<À€ºˆÏ”éd0w†ŽBÿTW‘®>¯»ÝQݵŸ OºÃ Õa‚^Œt¹QºË{v¹¡»ÜŒu¹áu¹át¹áu¹©»ÜÔ]nÄ»Ü,Ýåæ=»ÜÔ]ÞŠu¹éu¹ét¹éuyKwyKw¹©v’Ʀ¨ùöS ûøUeÀ©-ébê¿Oþ÷Í—Ímÿqÿ½¤"ŽVGÿ[Þ²ÒËVÝKüØ aæ9²çÉÔVê(H/äu-¡xfü[ÇAæèÚB‰›Èí!W«<A…W2]˜ð{¾<2¢}/ø‘É—OÐQKƒˆ‚m n©â$63ˆ8¹`ÍtD¡þBû–—Ÿ½\âòYÕÚß3gy^[cªf“T‘Ö9WÕlò KËÂÑÝP*évµ£â8Ô®bq‹!‡®ÚãCW|ýƒ(ªËëjÉž[;3zN‡ŽÁ£V»ó!®Eß/@'M·±XdÄZË(<›rZN÷SCGqc™ùm£ô]4 Ü¢;ñOÏu}zjh‰&d›À¶a«ude~žÒÎN¢s¶Ú‹è+9äÌðô«¡g‰éºN™bŒüw!ÇéŸÛtdgWCDÊׄ­vzù€i HŒr@=Ùïð@¬`äigÇœÚ@ý¸•ˆÚuÎ5ÕŠ`Ö`§Ã9*±ï•Vå‡)–þoÜx,ú¿­•þoIe¥ÿ{ÒÅÐÿ=Ðê/\ÿÛÍæ+wý7¯Vë…W»£ÿË“ Vš?Ùª95Nç×m¬t~+_²Òù­t~+_\ç÷n˜¶t!:°î[…·4“¾ª¤Öå¨Ð|(…L8„›T¢F}ƒýr( »£‹HòõBì¤N&’3å+¡Uͬ„¶æbFZÍ&cÅ„Zù³‹ÎK¦nÄt\RÍ; ¦ Ö~–^þ╲öñû:ý¾Îº’µ¶È_Ж„Ú€ ŒbÙ‹wX##ë¿¿îJV“É‹ÃM—¾„¢Ï>0ý†§ïiÎ’H„™•Æg–¢õ?£ñeÿ{æÿ­¿ª¿|Õh £ÿÇf}uÿ[JYéžt‘úŸ‡[ýÅúŸíú–»þ7_­â—R„h`èNºoèèï¶à0y{î+~zÓ¯Y?ë¾…T@Ç­‚Ò¡®Â `Î{xq½=×2[ú+dižEÅÓ=ŸIƒ“—ÜNû“ AÔ Js°.a)¬WȲ_%ü%Çúr§ë/zÔLÂ.Å C˜V”z)þóº?ü‚@‘ÓÁ•øîªý!ÈÍiGòv†W’Q:†V$__ô€JÊQ1A ‹Ó¬˜º ­©îï²×¢¶n˦¡cÒÃ8C¸ù@”¯ ª*¬é«uo…JnawÁ[þ(3¨¼«ÛÇ r0ì [xn¶0ÿfnIùv©ÔŸ“Æc­w1® ·V}ÕŒâghÝ{6¸ñûéä K §Œ€ ‡wºçÖ81'0zï ô×,~ð¼’aã©áðÝ×JV¥=!©ÿ;Éþý&PK~3/³ù¾Ó®nÂCx+¤¸ÍÚBÁ wtŽnxÿçÎÙ»Zòv·Ýáá®õ–?‚áwgG°Á¿;‚¿ftä‰bæ¨øûE(1ŽZ;­ÝZT™1«Ok'¤†_ J$Ïóäçt¢Ñ©×)<; ¯Æ€W]\È3 _"‹½3ÉßI<3©Šø¦&_ÐÐ\ûƒl’Áaú?ìør•†·°{ã…mö/ , [+"–ñçuC Ø [×’«ñ#u/|‰ÁŸkv“‘+ñ¤ñB4ÖK˜§Šx½Šàwü7uH€6âèydFŸ*ãQº.ŽÆopÑAK/Ìu±kð™6õÞˆ7{"jêH`Ù`—ͦ'¼áã½ÖQ·½¡?#Dí–<-½­T¬á ÕRÍói4Ÿ°ŸË4ßݼæó„R#æ›ízgµIÌ5¹‡H ƃ~3¨[mŽ¢vÆÔ0–Ð\ ˇ}óbÖÁ|CSôCw2ôЄ¬>¸ûÕñu`ä Ãô†«‘Ñi˜È+i±¡Xð^Ûèùa_c ƒF£L‹ôˆ p\ëâÞ!£u*Fɘ”ùH«áÒ—(͆‚Q®ñ·b¾Z|§χ§jŒœªt ZYb;ù ˆL½&+í2»rb=Á«¬Fo#!&Êú”³,^Líi!‘/nAŒôJ|2/9 Ç×¼Á fi­l†è+3„h,o«Šgï'Äõ ×•è%4y4èDÄûDçC!JÜÁ&› .rü$c’ ëpö;j€>ð>îŸV™Ò}b^ÖIè}*ÒYÀº®ãœëÅV¥ºòCÜ)FýÔû<1v}ë]QÍrÀI Ý>c$ÌäéÍàêªâD¢Òµ¢èªv£`œO•Š¨Ûø¾0Y–­2=×É ZhË^|~1-äåZY;Gyè¹IóèÃî)è¼µVûS†úÍúwƒÜ|­Š„½ó.¸@ÛbÆÑK­uª¬íeo÷ø¬ì™Óë¿çß½ÃZÆmKsÍ<ðv*éÏ™óvªLðtζÑF{VoŸÊƒüÕÞ=9åßx;Õ·ÏNNÝ·j=<¢(ñT|Ûoó@ô©3â½8ï¯aÉ×íÒIÏo2Suòj6 hñÕT¹=Ã=®ŒNOÔç<›^òòªo®:ØÉΰag@½³Ú4Õ#=Îõ 3ùÜDÕtV$Þåº4+é^ÛǶÆOÖJä†dóà;b4~ ü5jîìm†Ê4<ÂíÔ8¹íC?Íge\ÈYž*ôõ&_\\“øsûE=æù÷ãçKÿ§y–çÿ?õ£Ÿÿ?ÎìŸ6ÿ«þÖæëþg9ÿŸæáÙnŸÿçPåò¼¦¸–5É+b—¸€¸·æÆÈŽÝ=LÀU†dX9 J°óèXÔ“\ÈBÝp Q]ŽÆèé1b:Â9³wý?'ÈÒž/Ó¦ºôdPî ÔxçÞ»zx“Øhr{'ît¾nG*W½A@èwƒ¨!!1k8Ž:PÛ1;ŠàùˆG7ê‘Écħ@÷–M:‚îFŸ¡òx8Öíþ2š\އAgL~'xJqQ.£>úl$лǤ1N/’†×‹nt»Lô±rx\æ?ÿÿ¹]yKN.H¿¨T©ê|ôJ'Œ¾—½{:Á]‡ßƒn؉nñ sèÉ?eÝŽQ=Q7¾¸ë[èÝôÑ—è ïI—ø%>d‰YâC–ø%>d‰ù›ãC\Ò; €H}ôqFâ )OBÆ[Òjý1ƒÄƒ ‡ú Ñ}&*;¥ÏRúJÒì=,µ¿QÏY$ý‹ƒ1üí;Ç›œw.Þf(%{µØJ%p‘ƒ@Æ à9aÉÛ,¶ðº»b«XÄÛñLù¥1Ùß)Æ5±gà©Q÷P­¾§*Рý°;o =Ô44öw&½@Þw-Gký;vH¦Ò°U´á1…3 ¨šÚ€”;³ÐÆ2u‚È$i’ÔIü¦?ðÂáO<ÁûŒ¢¹G%î+º“ ·üÑ„÷·|Ê,µ%ã%'‰Üß%¥÷ËL{%Ç,hdNƒ†>D}曊T*+CÏɉ!Šša*Xœœ’ÙÕÁ£™™ÔP@„ycf&5ªapÔ,LjëæÈˤo ~ÍÁ¤K¬Þß«W2ÀzŽr ÐzÍ“óÝÓåFí)¼ÞAÕÆíÑŒG^†Ñ² éi‘Ãû=R{f‰ó› ç··{xH·ÿU΂ýílgu×O‚ ˆï!EAè™»'«hË$“ L ÍÉÁ×4­¯Ì“{ ¾•<öWäÄÒi¾”t--0N”À¸ª§Qªê%¸ 1q•—Ê— tÂGøü€€ºüõÔ©„xG̡Ǖ ÓŒ€z1“pUi´ÄDJ¿”ºâû&/2Á†¢Ø˜ƒäz6‡Î)Ý™Ž)U-p×’{v}X´=êå f¢L牦4f‰]¢D—(ÑçE‰²*Îßcx£VoÖ¶IÜ#³Udâ’¢úCbLw¶Ÿcº³ ¼Òx冘ÚmMÝýÄ að"6±r8¬Z ‚_`Û2ýhÉÿ9RžæšZÞxÚj%‹¥ ”[SE&2ÉÒŸ87Ì Jå°ªMCŠäRøMÐug ÒÕÄ~1øÏeü—'z–øÏŸúÑñŸ3û§ÍÿõõÍ­dü·×ËûŸäáÙnã??J5ë´ÖÚÛMÕ¶NðøqÑ̰×]œã­¶ðﳞµàïÃ$„ThétïkDf Í€Žjã<“—n—ŠÇDG’žˆ9Ì j.Gñÿ?jŠÃ*£sÀNO \í j:;Í NýƒSG0Ú<ËNE*x44êíf ñö0¤sÆŽå îîé £ôV \N6,Pn`ô/‘FÔïâåvên.Õôãà*‰õsU£”q—¦%€í%^s8é'`•Ž ewô®*ƒ»PœöÁK¯óââü¿XˆÌBPRl4+„Yöùf(~J­éSºÄ”zKLéS*{~‰)%ú'‚ÈtœçÉtœ§×ª\ÞWZŒè4úžnI6Üz²Ù# )Zz’Òä¶>¬'OVWæ%Á™B?³oR¹8w¯µ”ìßU'³ÌCnc1x‰ë›Yju5±G¤ÃÎ5ŒÃ•i¯]źý1z¸eô!ÎÖH-@Ñ ë°D+YMÓz¶qžú*ÙÀ†h Ô¶ ItòŠh¦!0–?B °Kè^ÄqiŠÀX\ ËóÏh¥Ø8¨?þ<ÇŸ-: BÄÛÚ;|çðú:ÇÓ~ÇëÚ,]uñJ-„¸#ȾO'¸¤k3C)z S²Ò>M­3Î\ë³½õ{tª mä:ð%3¬98e,ß§=¦ëŒKúzQH8qMsû¯ |ièm0*ߢ.¬y0§ƒÄ¾¦–Ñ5éE_”èÀßãŒñþ þ*ÿuù—·â•ÍlP?¢˜6 E\"yj ²xG…¬‹¥ÆÈjhL¯‘pñ¯ö_±î)E:yÝõ‚NXNÖ3ˆÚø„°g,?ƒK„¼›}+'É<äoÎ)HZ†]‡~«® ¿à$èt&C2·óˆªî0¦L8¦Â¾ÁÃ{¬ð˜;‰ZcÊ6£¢V‡…¡÷Ÿ¼9ÂügtïÇü9A‹Á…ºu©wû¡¸ÊÜnlÏ[]CèêF°å8E”'^ÞT£>ïÜ—ÿGt'í³gQ`IJ´¬| o°> :B﬋JŠ´Y°O”ãÁêk⺰ãÝŽ² ¤Ù!‰4{Ä4éTöð|»¥ôõª!^Á¶ªÑ,=Ì¥­ìÃù)\@X_w"cÚ.ÀK…äÕٜUÆZåÅUð ?½-š7K¦ ‹™“înÀ ĉ™Ò)–ß‹IC¹À<Èï$·žѽ#Ü+úˆ&rŠÛáÝC˜í±¶0Iõά[YjòÆö¤ÒwÙqz­Pâhê4™Æætà‰óà\dˈþ!ãÜ&Ã[«ï’‘?€zoíPðRAµþ=ïŒ &µ¹ð;º ó2 -=4ÚÏõE÷Ý>{+%E» ÆISÿ*W­ï–”:O·Š-­6ᦑ埱çCVð’"4›\~A á× T8nöh¡Œ}ïþ«3ÄbxÒ|“,?bL‚í§²=—˜¶+šÛÓÀ(w~WLJ¶¯ä0{bJ'(ÖŽ†ªCqLb s¶”†¥ö…û ,4¾o­ÙÜmì±þíݳvÙ»¨ñKÝÀqšrtºÌ"¸ÏqhQNÄÞѼvùW£žu.† ÎŽ9ᇣ¤—B£}x ¢iþßÏ Ó:;n6ÚÙ‡5Íf9§³Bz9«"ïäÊ]4éÈuôws^Ø>"§…½ÝËi> xÖÞÅc:üM½nÅ8>;ûP;^ k 0ï3:9ð„ŒSˆCJ´"È$<-“I4*<“I/4º²h5Í£¿E;fðx ·AÂ{`Š·AÂy`š·Á¦!—·Á–Ëô.8Aè ŠúY./ƒ„£Šèu>ŸzaÅå]œ£‡ÌEÓœëÃìòPcé,–áØ{>ìe7È*¯j¼‰‹<§Ži´G*Њ Žô“pk‹êºIÕ ¶™íE“î´1‹³ˆÞÁªZoÌ2çö‹ø¸ðXÛ‡ WªùãnšõLh9.°)î ¼¸–6gîì©!Îñ/W³do—¿XIν§RŠ=t÷‹§ùƒ õD…\Î ^†?ˆ]öß=ˆ8‰ÓGDaŒ9ÿä‚i±x¨I„MbC4fªÙà¥rÛ%¿hjßœãyÄŹS¤srí¾u•AûW üÜn.K¯–Ä«Eq¯ç¦°˜²H…ä…’?í\^̨ö«§ò¹Ù1}nvÙ³fÇò¸y`¼véD±“¤3]L$tš[ c-,•~‘Lq޳.uÀ%¨˜Ç\šS&!Þãs6÷âA£vH×@‡÷b‡÷5Z <ûbtj¬ú%ç¼iòœc©z|j¹VxAZ¿ì<……bâ}[VD91 `Æ£ÌZqûá.¶`xÈààâ*úÁöÁD3†î°e¸[Oqh²ËÃH)&·_ð7zéÞ§¨¤W”—!ql÷ ɪ–OТ+žõšk?‰™dµ×›¦–󳃗Ù{ ,݉·ž‚à6H¢åÒÇÍ9jµ­s³g37yêEçsÆ7{G^ûÈ[ÏÒ Í½»%^õú-…š^ýr£¬x¯lŒ1½¸ÜlMVA´B×_95õ~÷•sþ’IДܳcždøÆÞGâ $IÈol›²P¹ÄeÒ gBî›n›”)L6G8Y‘s]™*=Ö<o‹ '}§Ö®hèþiC¡ºAl„§´Å݆\ÍÈž¦‰9šhQÒmŸÚÝ]ï>S–†‹)PÔ xi°¶:@¼¼Op¶G ºæí³084& µBðæjßy~º¼CÃhAwû$¥NW ˆ ¤Š<½L.¥J’È’A‹wÞ\_³ËXÔ%(Z?ñ%(ªslU OÌ¢>#D?€ñ¯Û2(gƒþg:H7ô¤k·ß=5Å6c3†M3§Ì 8òÆ µ¤Ö>¢;m–•õ(`še­p¯ƒ¢ìý}Ç ­ vŒáØ £â–¢Ù8ä ·µJ$%r§Ô¨Ø“Ê#“/ÉŽŽñ<…ÝýºûnSK‚꾤êJ*˜òCíX“ !/’39ÑM©v½dg)ešö">8º+N¹ŸÞ${Þ_mfŠ"þ˜á‰ýñEÞ9¤û_Žÿ÷ÚÒÿóIž¥ÿ÷OýÄþß5û§Ì¾Lúon,çÿS<<ÛMÿï½³vÁ»ØÝnë¦AP3êºy°NáÏY¡4w>*o§çöOì²Í‹­výi·ýˆÞ—~ÚÜ÷g¼ègº7u>ÖÕ>9ü¨?¸&3ùQ‡ û÷(á ]é†WQ?‡d‡Áeï»^ôov2 íŒüe/¼…¿ƒ2× n/»A±pCŒgx]¼0†vÈÞvñ>NÑâG“Î5C·½k)yÜr™ìòßʸÅuÆ¡^_!AÛ¥»aø5LFt™ nŒ°r˜ã¬XlÏhï}\?k¿/ÃvQ¨z׋ ÀëA/ÝÄ9 ;¼Êî––ÿá6Ôû#’¬¡‹É9 QD¸b±PñWŠ'Ä¢äFVrÛœÐÁkȆ•…ï¡DgÆMEϼŽÞÈ©8À9½aáN“­ä<ôGø‰ÁÒ¢~~ß”éãß»y¼FƒTOx9×rÑ|z/çšQËú"kY_p-êôÈ~‡ì›àÅ:dÓ²ƒÅ:d©Ù†ÈÕÉh,Íž@é­ÓaA£KñÇð9®)¢º5KRY®n³*–:^¼3ïj8`¡™µfX0}të¶ì¿b r¨Ç<¨S‰ÙQöZ}½Vç^«s¯ÕU¯ÉýætO§å„c­GšÏIÝ´ã…Åv!ÉMÏêžÕ½‡·Ü¬ÒÔ\IpâÄ­x'_ûÞ@fÍîlRFž÷º…ÌaÁ÷œïÔÚŠéÏæÐTþ1C͇í^°‚Tº±`»ÆÐ4¢ú°Û¯â?ø#+DÖAÍÇ}ý€¤h«…'ƒ§ð±õ1½³êÂÛŸÏŸ†Ó_.{÷¬Y;­2.ÿtOünï‰ßüùl·Ì?=j«+¿_(ðÞÀÝŒÑî¼a×óÄz 8üyœøÅÃEL µ Üã‘RUÒN©Ýy._‡nTDÀægÍs…“5 ÿ#ÆÔ¯Í ‹¯s‚âÀ‡½ö*tåì ùÚ, y\C)W=#×Ûd®6[8ñ&Ð^!àÝÀð|mØù/¢– "çôzø>>íG㈬   Þ |'Ô »h|ÐÊã>Lø%9-}?éõÔI¸Z‰ÐTFk¼†¾ ÑñRúF£²§]|KèJXe£`¯Ú`G?˜VøVI/‘˜”ÿX-Å÷>j7–qHÐ_ ÒøÐQ;Ð×%+Þ/^5–VñEl|)›ßÞÝu0Bo§/8&¸z_UP¹¯ÊVza›Z„QDv'U¢³èÚbc4µn'?ñs±¿ãmEN⼃¿e§à¦±óIde)a¿£t–aDª¯jµÃ¨Ã0K´`"ʃ¢°ó-ßÎÌvƒ_vnWŠð­>«««ðg?ûôeIüªÊwý }Ó×ÚL±=Î ÑŠ v J£ò•Êg«ÚáAô|Æ&üîEÞ˜nµÆo´ _†Î€DP¾Wö Fr‹I Uº\;‘òTU¶¸`Š­t®c/r¡zv&ÀKý±f÷ÁHv w~Àdªð¯ló ïÕGœ$¯C£C¡ ñ备1'ãQÔ•›Ê±Ø¥±±Œ7m”Œ¥@'#ŒBÔE§öñàš)Ï`<ÜÆ\S‹»C8žOîôôãÁØëk½­Â²û¸Yw½ã’ Æ4)F«úL†ó¸¹,n.1~©ÆžÝbHUç‹´a“LVªÅ›ËŠoLÄ[¢Ó& †½{ù»~ôa{>@åûÑuÔã(èŽaøç$Æ3o¹cÒ‰: ©!>2(/bƒ>H? ïù*F†vJ•…û/ðªðS%puÊì4ç˵£l•Gx#Šq Æ½ÈÆÜa"ÊEõÂþg˜1­S™ãoaØ7¢<ís€¥ýªW@Ìñªì“aHwˆYoÝè Ës4uÐøÑèúþŠ1° EG¤#eþKHL³5æ~Ÿ¾ì¼ÌÆ %øß»0…–DINê—ª¿öK·¯ÎIê!s "Õ_9ßàiUEަÙ‹—\ò­ûîÒGag (iÙ=‘­ov,ñnŒŽ&§ð;ðA'÷îßá%ó8×b$°xÐbx@!â‰ù¿q\‘ð^„Ë£éÁÑÊ×áôé‡ß$wÈîçr ¨8TC)ÝÇã¥X^q^ŒT2´½ú·ë¨#¡_j†S35Ù\Ìx¼c–n™‰ŠF÷÷Ÿ#ÜXÆCX 14É@ ÷YFÚRÈë8Ïß…ˆ3ŠU´³Pxݡ …°Èó@îgˆ3‘ÀÕúOP@Ä“ó‚`P÷ãÎGÁR\B@‰Ý9JÔYø•Æó& pÄË-º²«A¦~DÆ›9¯3è†e¥Žõƒ;ž·J-Öýì~ço©ÓåfÑw¢(EÆÄ¶AX&:ð Þ–ÎlxÚi¡âkÉ _f@gØî¿´—U‘éb[¾— Úù8öQ®Ó_rÕK6°qÍ„{ŠR`_ioMøaÀûÆ Éßúi0xËËYTä f· }+¾U¨]¢ÃÛ–·à¢C4Ã|[Zâé–ræKEmšGn:&2Éfм÷tB«+i^&g1þÊBXÖØh<¨&C— ŒñÍhRKüð¼»QÙ/‘¥l_]@f|õ –« °§UÒ:—$7Ï òüv•º_ip Uªñ•*u}Z©¯×¼ƒ˜±Ëö”Pé6D?ÈtvU³®ÆV3í«JºÙLê²EbXŠäެ7qB6!£¯JùQDžb¢zóUsmLóŽñtt‚;„@r š·ðÉìG$³™Ò–×Ó¸ðMÆ,ƒ×[̤Ôx¨|Ú­^IáWÑôƒäÜ4¾zHÓõIŽd¶Ršþ&Æ[˜\ XÇ•ÛIoáêý®4qæYWCU%¶ŸLòÐ{‡%«v©¡[]®¯:ñ½ÝSA›$A…mQí ã¸êѺ_‡AÞŠ‚Z¶méù,[?¤ÎzA!*Gþ ª°§5ŸbTÔàc?ü>&M„ÔV\fŸÖ|%·¾`gWÈ­Ô=±ÁSû»{O‹`h(XR9QÃ2˜…ߣ)Liz—s×oÒ`˜@\OtÍ[ç™B‡6Ig‰)Ë'Ò†—Kõ¤×µôx[Óå‡Ó£‹·ƒá½÷…MèaË[š$÷’ºAÒ‰#|¯×Êò¤ŸZkxäž[Õ™¢Ä5%þ¨Ü”“à˜6^ls=mïXVn,±¨Åìiƒ1n­çªjîcñ7ÓˆœÖLß.õˆ †µyĦUnâÆ9ö’úÃûJÜËÒ¼‰hCKu îžA=º¢æ,ËÀÓšKꪶ²«I¢7@!›.tí+а%r(R¤½–B•m”œo¡wTzzù,DNkö«Lõì«­NYÐÀå*«ÎZ© 58°z»uʶóÊ~•ü‹g'ÙÇíãÅ—îµ÷•Œý”¬X[-»x\ª è{íHø¢©¼ûÕio¶U[ÚiÑö–U:¶ÆƒlýØE=©3±Få/ÖìH­ðqN/•[ÇÔ`VÙGQ·¯sÌ~¢§<Å«ôN›$îŒoêƒ^á„Ø#+me¦TÆ&Ý(ÃO FUÖ¦D7%XF.EUP¢tï¢ÀFHÙ®*+m„HVm³œ<˜&_UOi9ì­SQ«”Ŷ‚hý¥€RÃèóõ89àäü¾æ5Å [KÑ=ã•„š_–{‡J{@uÀ4qĹ8SÉ·û û!×r"»Ùì3lG\a7såè,PM®=dRv’^Åü\ö›Qš²Jp ££d7i©2›Ê‰ÒY®ž*ºä—­€ñ:R™ÂY½ðÊf,ä*Ÿ¹ŠYJ(oÊöhÕS™¥¦S`zÓ¦¨—`S1K™Ýˆ[gâÔfÉŸ#§5Inmö­­Î>sê4½ÒX"ÊÆ²C½SÍ`Ã_7ÝN3mkv7ªF*åñF1¥Ç³´ÕËq™~N×X3ÕÕËqêª,v‘†æ*v› Ý5%þˆµµF´%'geUÊ¥ãU…ŽçÒÎÜJU–¦è¤â’Xèƒv§È’'fÓDÖ†Y$ª\}âY’ê ö8ªÒÔþ ¢ÊȧK"Úïå^Vyw¨DUÒ©ßìE(îØý H˜N`£Š£SE íÔµQM·R‘Ößœf¾ó_'¥âÓéæéš¹Þò9µòd6?Ûš9U8°‹…8EÙJ"ËÁxúfÖÜݺ dI+Ï-èñPÃÏ’e³ ™ÅmG§)ïîýŽYîýNšmjÆ-—Ø×hÛšä®fÆ-®qN×Á2:cÃòæmXf«†P}3ïfÅè¨h³’w«²°JÞUÿíßt£²&uÙjìv.l“"ÆË9å«kϹIѶ(bƒRuÚôÌjݪú™ëVæñF>3ê špÎÍ{µ:«&ü²§ÂböìU࡚½ÿd¿'„ûY`Z,zøè›b‰J¼S²Û­³¥ÜVÓTaÛ¤«ÒV3´{k×H۷ܘÓ%ø‰0/)ˆ—Í)<õO@O,àIuêž¡úz¼ ž¶'06¦:eP}›ìRÝʉv9°ë¥}‘ ]P7Ú"tð˜›Q7ò­ÞÉuèUSÌP´*4{p$ÒÀúƒÝüf^PË‚ú=¥Ó° NÓ#Êh¸ül,ËúÚ|`–ý˜-~·¿˜·ÉñÄý*æjòú£_ÿ–¶X©×+Ó2>æâ—£‡Á\|}ÔS‹|±—õ×KŒK*ÆE€@€Erb\jÑ!¼µ–|ú y™ Á"*^¹yT‹˜zÏ€`adYÂdÇ™àø•øJfáKôÊ££WÖ«ƒ¯”D¸œ§ƒ¯°)«Âå.ÜHà²Ø$Ö“[ÂÍ"L}m©³: -™óõ@—¶OiqØ.L«â]f›½ô$h×±²ÌÆ‹±“éªäÏqNá?²j=OX÷'«¬o¾<°ÊzšˆzÔ*»þú¥€U”jz9~°Š¾¯œ®²±ö³ÂUÒdÖÖ À«hÒJ×fXBŸšÝXϦàVÖ·ž·²þæÉp+ëIß+»2o„[y R>ne~uÚp¹Eå>ÚX¹)'„*ŽÍTÇ ’“X¥ œ¹,­ÐGFÁ9£5» w©ÏÿàÞJhðgŽÀ·ÙS«í徕n*7Aeà›Bzš°7ª`~ЛL>äMU¹ôÈE F ù"7•¦!ßP/,Q2þ&š™ üæèA©”Ž~“¯ãc¸ÐKv¢ªSŠ\æ­Ä&E˜ŒÊˆSj¬U³NèlnBO?]¨<õF &¢Þ*hy€Ny ÔcÞRƒ«ø–~Ø×žÝ1Üç[ÝžÌ1œãÒÁµ×iîá*ófÒóãâܰi~Éq*äÏv*äëv7»JoÛ|¨ÿ³_šíØHx@ëÙÌ^È·´˜¶9·ôÓ„kRGEâc%¿´Ë¦;5w²žú¶9—4ÓSĤçÑ šÜo;¿÷ ïP¿=³•Þ§š$§=· .~Ré,hÜë5†2ýðé£Ü²h'O„¨xè¹ÓëüÞѯӽ£s!â4µûˆ¸ÒÍåXi®s#â¤âš‹“º¨;Séè¸×›‹@ÇYê_Uª³¡ãÒ”È'EǽžÅ‡]`ãžY •fÐI™&ô´ñsÄ‹ªÔ|¹ÌykmM…VlmåÄølmæÄø,$ôPÜu—›hZn& ­wæ‰r¥Uhö àHLõdõ¸›_Ï‹äYH¿§v6Á©ãzÄBíÂF½ÍÆïl½™¿³À^V“À^[)Ë÷Ö£˜¦_†‘›ýDœÌšÙ´w¹ ZožÔO< ªófú1¶÷V`TçM~ñ7é.âO Õ)Ç€§†ê´Ó4Ø\ 7o~VNŠ„›Åÿ¹1:ºlãjÌ%ÙfÊúX7Ù÷, «óæõsbuÞL½:áÍÖƒ°:Û<«3Çž =ÿ›lÃè ê¼y“uþø¶ºê,8zVBa~>œNÆ~êíËØOe€p¦RÒùíKÅè,|ãõ²:nåíÚr öˆ·.s•Ý9O‚Øyë¿@ÄÎ[§yF'£VÌ·ÕÌ3óPç);)ónýGì<÷t˲x¼u9Þfoã³!ðºÃ±DCØÆ#v¦FAY_­Âª[1G#/ðFƒ«ñ7Œˆ¬|Qïý {Á.êÀçýèë*.~í°ßG£0,c5!õ~;èEWƒa? ¼z8¼ {á}Y{;è †Awàí„}¬Z¹Zµ=¯9î®®21xZƒ¯áí%¼®‹«ÕwuÕ;ë½`èÕ†Ÿ'|’¼*nÿ³vZÛnïžÆ]÷µHÓhµw÷ôõ]< <ÜýÔÁ-Ut\‡ÚpÜ»ªpº[kZ£Dv"ZD«Nëòã‡ýNWÙX•¡´Ÿ \£"Ž´ªþy<ž…1~燿'Žó`¸›Œa?/^^}†®z“pT¦îÜ¡– ¯ïËZF‹!µÀ†AOX›zÑ¿%F÷··áxu*Ý5÷1‰à åֹ셷eÈ4.c¡‹ß/ô‚ÛËn°R¬¿¯zÿ ‡2&i"p£ôl —a\’ÁD\JYd@Æí›ö5ôdmDç¨aÒºGvòvd!êC­Ä,TôõÉïÞ«Ö«_ø'õôýÞý;+ñEZb¬±Þ¹¢ŠÈ ùªqŽ”Ï8‘„çÓ{LÆ]»NMÌÙ40ç)9E¥Z"¯¬”˜::YŒZ;v¤ÿÝ8N@XP]E2üî­ š ç¡ÙŸÐÔ¢£ 4U¡FF1ß¡èŠûŽz¦¬“ )¥Né2¦£åk¾ZÅj镬/²’õ…U²®W²fTòñTW@Ч²×€íIàXµVôÂúÌŠ¡˜ò{*dº%ÈÆ¨9˜8¨cQÜ# •°—†ï ‚è›êªÛ*õ NåKe| ‚ª7¹í3S¬6éY)-è P0)ÓƒF`°äøks P(cÍJQåKù ¡« þ€ÜÛà{AÜeòÛïÑo¿y—B¨É„šg¡/”ý6êú윽jš;p¾GcîÿΠ?¦µ[ϳ±ŽÆÃÁ½š8ˆ9ø²]4žÄÃouת õ'K¾ ^Ÿ‘¡êÌPõ†ºœ‹¡ê30T}†‚ek3TÝÁP—9ªn3T=•¡.3ê*ÀÆ;‹íe£»^4ö¶¯ ùoîE‚èßdaÓÉÔ¡Ô³b±]<+cë‡áx2ì³ xv\?k¿WüX_?Ö™ëÌuʼnÂN4y°qź0ʲ­ëàÀ£Nاêк%Êú”³,VíI‰ UŸŠìãÆ•øDS;ˆj¯ Ÿ„V$])(Ç>b‘É£Ÿ<<ª½YѲ£ò4èDt~Gt>¢•U ½”0:…>¨fR¯ù`ì}B¨±mÕ”6·d›?áëÆÀ.W Îõ;šØâî}›|ZeJÅ•‹Èè@}Dº–ä$P¡©è‚7‚M˜:ÀëÅ–ØEÑê,á¨6Œ/èT£I4žÑÕ¤G³OOð%ˆÙ¡•ãa „^ê]5ò¢^/ü *61«Nå‹J$ÚÏxúó´úWÖµƒÞg˜Ýãë[˜èQ•iàįÜÞÎ&žºüª"«‹ê?Ô¯NaYË8[e&U¿u‰'d¹XDC¼³òÿAµÖšØòJØLz>6*¢– Vc!䮂V²¯~eѵpm\4ÚJz áÈ H‡ÜLÐeH{ª^ˆsÌÛà§?0÷ Csþ}ÃMؚɩòû"}³Üà…¼eÖ¶©Í£½Æ¶¹S¥ˆõe:û”¾Ÿ¾ØÝ–~‘®4o¥­]úùáôÀ±yÞý|„,ò~ÒïðéNVÅšgµCi¯ßýµiïùuF)g“KaÑÊqb®* Ë>ýnŸîàïöîÉ)ÿ>…÷wOëÍš³Ä°3°çõÎÆ0G”i@]BúO„Þ]0 nѱi_5AÝlK­’¦"i긃/P ØŠˆv¬-—ùñ}Á[mµW ‚úêÑéªU@ëž&/«RKžË $P§Ç•Ñé‰ú4³éUmz-ô£ZKM¿n§?¨egØHd¨sª+ŸSxÈ}ÓÎŽê2÷ ºsm%sÕ9W=#×Ûd®O˜É纪A#p”x×Ê+Õ¹:ª” Vbµµëè6:žd¾.x¯ØhËhEXU:÷]ÌÜ'“¨s#Ä/ r¶£èRókçq¶¯$%òl25UÆñŒá£Uš»ͨj˜Qvdw…¶þàŸùÚûù ›®s£1¬ è/òõª6WwðÂ?þ2õ-ü¾¤nî±(˜f²b¦Ëº(œÓ¸@<9ÖMÈØÞ°;éЂm¯ê«Æ2{Ú݈ëo4öN¾n½r1«l-ˆß%µZ·ôC9nÇ.™Hçoð{µ@Çv½²×A›)‹þU=ÔÔÕû“S³_HDº;G´i’Û{¢¿š=§òžœJNpQý`7ÚÕ/žg•§…5=µÃï‹Ì³ïåcŸÿwåpŽóÿåùßÓ<ËóÿŸúÑÏÿgöO›ÿÕ*Ìöþgýõrþ?ÅóÝ>ÿß™²dã¯ñð§ˆO%.à‘q²‹EÇÏp•¦ú•êõò ;/K Mß)X‚Ü`i¸Ë & ³·Ë‚Þ GÑ)À–u2®ñºN¾duÐÿs‚Ü,ͱ¢ŸÑȘ•Ì» n€L„{ï6Âø6ØŒ;¶——0u©z¾Ëôn¡se ÇQgÕkŒ½o ½a3ô:×d£CÀû<·¥v£Ïì^t»¿Œ&—ã!l·Ëh¯Äh5×À ÞeÔ°: ¨ECÆã‘4¼^tþCÛ8>VËüç¿â?·+o×°0¤‚_TªTu6¶B¯tÂèkpÙ»'+6Öè:ütÃNt u”ʺ!£z¢neï¾ùz7ýÁ7d£þ ¿Dˆ9—‘tðÅYbD–‘%Fä%cD‚%Fd‰y©‘A"?:>„ç\KÎ$Ldš€CŸF¿LÀ•„”£IfŒ2í¿ü1Yx¨q·„ê+‘"j2¥CR:B2F£…ð ¿ì™—ƒ–>z¼ ÷þÀÜ*ýz±•–ãÂÃ÷JÞfOÕªÅV±Xµ„à¤x€)&ðÔ8x¸5º§½ïåÞ‰8 d¿0´%PµñL¦3Áxf€oÕŠ@¥aMißmÈrìE˜_Ú(ÁHjç#m™Á…,2I„$uE¿ATÈpˆ?Ð’2 {4a{Ê}À{!5HLÚAÛYÂòQ­èÆä–$ÛJ3C*ç6²YW”ý2o#“{:ûŠÍǾ ÿò&ŒºN²³¬_;RåXgŽt0bcfNÔ)H£ÚÌœhTÃ`›Y8Q§’äó¼œh0 `Êœ¸„Ì-!sO ™{?B ‡"ÆÌ´àèvœz0€6}Ò´†Ñå„-i—÷¢&‡ÁðÆ{\£Iz'¼ †cb4hÆa€JuFšµúÞN:7hÀ>«=zïX!Ä2=Ì(šù§ÝSiË>®Öw {w"ª£œ\Û-­qjœ‹ôѰ˲ó#›'ç»§ÿ*?‚ð *‘„$¼ÀÑÍ&|¬fº›˜îBîí–1>Äö1ôcqg;£Ù/¡(úø…Âo°Ö»{²Zp7¡Hð7™ÆÆ KÂê˜G4H•dí+µsÃs ¡"8YÚ¬F7_MªÅ’,nÙ¬ùÓ‚5u6 Œ"Ã%­Ü|ŽÇQúXÔÅ„w –ƒÚë÷rÎAŘ¹®Ä#bbºÂ°ÊúnÄ_Ç}ÐPs|­‘Ô¡gi]’Áº3ÁªZà®åîênû£Ã]yáçï1¼Q“â|ÜTdâ’¢º˾°lVvgûi±²;Û ¯ÜPY»©­4 +Nì¶¢ÔÐÈU Tñ l¥-ù?+ïn¸nj]P}/'*ÔJK*%”[SE&2ÉÒm°RøRV›¬¥&6¼óÓà†Müï÷ƒÿ}½Œÿõ4ÏÿûS?:þ÷qfÿ´ù¿^]óýþwÓ_Îÿ§xx¶ÛøßR'=­µöv§©¦6.ÒYO0-ü¸h¿sP>àw㉜µàïÃi1ÄŒ bâ×û‘YB‡3 ÃÚèeX3E7ò˜¸‘Ä'Bõ;Ì£–R«`hf€‡bqäBøáxä“7o (Y”÷ppòÇœ<þèŒÃn6:ù‰£œ=Z˜3P¥M)0N:AŸJÝ3otv¢+вFt‚‚»3½¿¨h Ÿ ŸÉh_Fý.9¯LQ`¡u:?Æ–æt®jÔ€²Õ] ¶¾ÄÑŸô»«ŽªØÄì:è]Uw¡8-„—^fóÅù;ÎÈ2 i@!H±Ñ¬4„ôçk=ø)«¦K|ñ_¼Ä/ñÅK|±ÍPK|13ÔÏŠ/>$¦c~O¦c~½~åò¾Ò—¼5Ål0ÄóqÚ£%ÏÉ55Ò8jAE³ìE« n›)¿2^8˜Â?'09z÷ÞvÊQ…³úÂ+ºê$Ç{¢MÞy‡âdÕ.Ü£A÷³ûW¼° ½bÇ"«„ÃGߟ»¿×ZOÊàïjìX€`G²L¹DÝIÍ¥¹™Ð9R¹ƒaç:¤±2´b¬ÛoP£×[F¿â´d”TN”c ãI°Õ4­·穯’ lˆJM¾À¯h^—òÝ‚:‹hìØ<Æ¿u%“÷4rÞ­$xÔž ”ZtE͵wø„YÁ&§ª¹£Ñ¦h¯«¾G·±Í  [§Þâm¤}Æ:ó\Ƙ¶‹@«¼ìE!¹"h»‚ÿ Ê—ÆžFå[Ô…Ñ ™ìω`DÆNôEÉÛ=>óð=Îï¯à¯ò_—y+^ÙÌõ%ÓFÒ5Ü,½»!lqöòtd!‘ª‹¥dÊj˜Q ‘pñ¯ö_ñ¾F Et&½ë°œ¬ fµñ+è‘ g¡.Є\¢W…Ùç°„¼Eþ®¥Ùjéw[' Bôn8: ^Á’•Tõ†1cø6¾ñ·¨ÃN± @Âáܪ…#ôÚðªÅ³fípûŸ…Wg¯VÊ$g±¿lÑ<¾†68 &G47ý±VæéÌ®ÁËs4¸Ms%0§0<Ã{¬0å­1E›QQÑa‡â]þçÚx0†žŽwºØà=©³äÂ! »ñÚ<ÇûƒH|°¿Güª!^Áæ·Ñ\º -Ý…^‚»Ð–Š-;ËÆ¦ÊVZÇ4s¹yÌÆWñçPG²4¨pÜ’\ŠgÇ‚@_$Ñ9ÔØj=CŒ†¡2  J"ï§ò ˜Æ/9½¼_§x%@‚‡z%°«á•Àƒ`΢)] qy4TýÏP&Q—¹þêW±wŠ·SP[Vx:ƒnøŽ¶ådY9 Æñ´KÒÍf@Òž­u‘Úçu3X€‹ÁÒ½`÷µ$²Êé^`8” oƒºÔšÍÝÆûàïöîY[9\Ôøå§ƒ£ÓJí{PÖÜv4'„]þÕ¨7ù÷ÙqÆy&øp;-4Ú‡ÇxÅ#üÿZgÇÍF;½¯1±£·^ªãÂö9,ìí^Lõ_Hï2„èá™*þFÿ;âòÙÙ‡Úq†[Cg¬xW÷À@Ÿ6Zgí¸¼4ç—àÁܧç̸§•I˜ç“I´bx®$“4ž'N´hµ§¿E5gð=x /CÂ7aŠ/CÒ5aŠ/CÂa6_†×vö\¾ o’¹rø2økÉl'Î 'ù .Rƒîr A ‹s¹ ‹stì¹h&ïÑÍtBP¬ä,t¡¸aðÊ“÷»Zd•·i¼EBÿ4Α*]fÛBè Ðáα€Ö4²¯M²:¨ÛþìŽåΉÁ˜ß)E«[ÕÏ®ÈÜNVü0á¶ô¹0|.æu‡Ð2ײ-pbn'óPM'²]#@ß2ÝBvÙùcÇr q:‹<»_…DÔï¤L Ù›æb;]1"d aƒ}ë°º*S« b\5 L(â–Ç&EÜy2˜G³Æ5û¼á½ÐÙâ!D­:sõ} úxÕ˜NÁ,¤2ÌU_H&šðÉ)5%ñöé¹¢mWBDšj‘XEDÏáJC—¤0äáGý¶`xMàã²ñ¡ìùº £m‚î±T-¦Qø&K_ð7íloŠ—LÒM&1¼tÉ®–“ˆUnz4úižFü$&ƒU]ÏZöRÖÖ#Ï_óõo=…plÓ -þZü6y;¼7eaÎS/2Qßð­òëkDMÝÜZ ŽÐ$ñ-…šOUýŠ:H³M²*B©È®ò4ZyÜÓh󌂲êý®SòÎÙﰅ湂o {gñ’$.ÀÀfªÝŒØÔ·RÑÏ™²xÇðý".=”ûó´¸Ë •ëƒdEu“ÎdSˆ@[W4 õ´P 4Î)mI=½Ùó51Y-J"Èù©ÝÝõîaýº +["ÆB˜:CL…Ô ñÀäs!bñ¶G’¡ºæí³d8t1%ê?Ѷ`ßË~B&{šcßEA÷é#‡>}‘':dDK•z™\J•Ä’%tí{}-~«© ¶º€†Ñ¨ÏFW±|C²cÜ–AÁô?ӑޱÖǨØi, ݺw«Wу`FM†ñƒ.øòC[k¼R@ ií£7¯=L²L³‚›¢å^DÙûûŽZì:xºìÚ+ƒÖÏvmn_$%ó­Ô¨ØŒä ž×$GÇxž‹B‚î~ Ý}JK†ÅLªû’ª+©=jÇÚiˆ9’äÞD7¥n†’¥VèiË·øàè®8å~z“ì%×øjsÚôó2\?þ4N®Ë'õÑýÇ×sÿÏæÆÒÿïIž¥ÿïOýÄþ¿5û§Íÿ ‡ÿïÆærþ?ÅóÝôÿuZwtk"|ØÍ4¾ò“u½ÏOìœË:土ïõÙ‰=qOf¼¾gº+ìŽpeÝ-Ìä «\nãÊàŸn¯ÀP¼c¦{gÈyÕm€'¤«ábš=ÚÆA'òøzÀߢۨ‡·ÊØ»vòC9)ÛPÝü;Á=FWO2º{¹]=kpKÕ;qúwº_‘“â䮋ì@vÁÇ263 0ðcñd¾–§XŸG+ÇC}ah>Ž;¹h=½ãνŸÁyð`çÅ:v§9vë<Ø]Yµ»_yz9# BìÃo CÆa' uæLó·ßaõ‘ÚÔ,«üúø¬ ¼¦wãŠà_ŠÌuéÌÓ„<Ó›”º-×#’ˆû¸Ä¤¥Óv<ŽF€¨Æîd(Ú±™ô3wr^”‘óí4ÆH^QÚnÞÒ*~¢¼Ô¾O+Ó˜e»…ˆ¬e0¢’¿bκwÚë’_ŽV,gù æk'©R ¨ÇGØÂx{âÝ‚Z-ÑÕ¸Z·Ð«°åhßéZÒ)JꇡΎ±ÛÓ–A’Ò91ݸ"ºö *rb˽UÐ?‘¯quNËõÔþˆzéÈ.âSËìêçsÉI7ÌÉ3býñâèÏ|>t£«ˆ7 ꬧ ¼ƒ`ruô˰èõ¼fp)ãkü¤æF«Ñ>1£ŸdlN`S‡1%k¼]£Ÿ ¸6Nj»-%Ÿ Øè„þÞÏØJì£EÞçd>€_@vŸ¿@í>}y€!?ƒÎÁΡi0ì:ü_C@o“¨´pׄ篧YxæÝÃã… ›µÓ*cŒO÷ÄïöžøÍŸÏvk|zÔÎhÍâ Ä5“ç 2?/ZYC]_Æa¶Jè(bbU:Ç„:ÚV¤=ŸØ læ¡J¡êEÞâï*8`û#’ADûž ÓÀË\g=µQc`ž¾,°Æ Š&âø±b§ïÌPV€átä¯eLà^ËíåÞœŽ vÂSóaBÛ§9u?FìíF?Gä:B È%7 ­…Ô/T‘ÐyØhN¬Nü½Ÿôz  iÐÓÐЗÍa²öetxFwÞÁ8·üÂF#ÖýQá@[~D;JAEøgî0eå¥ö?Ã"ß:¥­…ôî¿“ ò¾ÿë~õW`MTPè— a,…ÿZ«RƾVá›…`£€ämP’_¶k4Ïý"²§šýèÔÏèé ­1~–§`+„=ÌŠ½v|ùƒéèž‹»L÷8Eñ ÒN`î·NÐ…}Vtíƒù¢jˆ&~v޼·1 dY5é/ªJ*Ùo%N‡ËZô¹ˆ7kÞªk|%qÒ-ë¾÷V@R×{lÂ~U¼O”$ú½uÊH}g¿«G²l‚u QA¿]GxÍÞ¿ŒÈT7 µq㥯ƒ¯!lSÁ: i6€Ò0»³‘E٠㨳ÏNÐ ¤® ¡–t£ŠÏà+Ô±ØðºïgZgÕƒZx)=-l+i}à)îg}¾c.w¾ð.„)‹‚lÌ0­l±‰c÷¹‰°rD@_P‹pŸ„«´ž’¼»Z-ìT25¢Š„µl2ƒk¸óQÑÖ¢Y²‡"G÷óCÙËb xwò!?Ú°‹aôL@h\{7H= 8­þì³òBÓÛŽÍ….Nï.VƒVQ6©·geñdÃH„ÖŽ]TeMŸ{8KÑ79I°ŒñÁ¾åO9Iˆ¾¥<:¤Í®´ r«FÇxQLU(©ª™<ÌÉš»«­J£”²˜èOŠ\³ÄZ@¦£Ë2e<¸ú›p–èòôI³W A‰yPZ†/Tª¹Cå¬rN_QÉ¿óQh1™·vNè•Uf\[´œÑ~0µgLq™”–i…é¬_Y/Ç…oÄ]•“ûízûñ˜¥»ŒÎJë¦Töö„?JibU.éZýÝÒ×Rœõ‡»Ú^¢©Ç/ àêJKv«žËÞ s3š®.¸;L1wU[hm•+‚öE¾nç s¯ Éõ`ÆžãWnVuhPÎZ`:^‚ÉSïtŠdzUÁ£%j}†ÕÛ´_-5³#­§uÚæ0…tæÒk’Ê$“1ùáñkgò´z,u§­dé,¥æì §d“Кæ$¢W§ö³>Ç"©ûøšòƒ;@R€ª ± æBUtªê)ä8ݬ§Ù=§¨Kž¥1U|5F¬ú”¤ù8Cÿ* 4g~Ö³´ái´äú±áoÚèxSY»É#D;qV[•ý¬B+0u5f,eö3Y—h,§Nm0ØÀ8{oÊ¡°rcS fTe9ÏÌK¹×éVq2EÂcx¹[ºFZ`· Ð(O²övÂp•^Ò8¸õµû5èƒÏ 7ŽÑ™éÄûŒù"6¤õî9ø8.EˆbKFÆ"ºdv”G™’¡*S¯•QÏËJJÇ%_ÕÙ€Å4“CéÂÑj6{*ŠâäûéÅÓ¤ŠÏnðËôJÇÎ4$ŪSEûÕ5ð¼ª÷ MÞÌät¥^5]¥”•¯Ë~ÆjTÈI,+CëDv47»‚$²KHvOé Gy†˜À¨“‰í+E]}“‚‹ý­&uåDßœs9ÌTœ^Ï4Èzƒ©u¾ÕÚØ[-gsSÚúzîý¹«µSä(ƒ°m1ÔÁ4é×ý‚ˆ °¹ Ã;cÿl„áÍ9rG•ªOJ#h®UòŒìVrdSZÅvLi•öN/(|°V§³{Ð`öx #Û§AMë1à%4µ£¯™ÿ¢´÷”RgŸ‘2ï¤äÜ2¹HçŸ7)®ÖoŽvÝÛÿSìÐÁÝ} ÈžšdÅ4ìôIG1ép& ²ý‡GS+ÎR@¯ž¾ìÊ€ xº4FŸ# 'Ë«¶ÛNTÓÏYMq¼ïçèVU?ê5gíèUÁzTS<ìwÌ~bA¬ˆå˪\ã,A¹¸“ú';U–£ó9ãéNumy¼3ÇñŽ´!Ѧ6ÿÙÚÏvÄã4 à+lÆ‹<çiÏpÎ3‹©ÇyÐ=È–”y ŠHÉ™Lㇿpã‡Ëöáp‘Ž«}½± “a…Ø®ìÌ·söçÎ%|§ã±ÔÌç<ÂC rô8Ç@é~OŸøï|ƒ£cÌs¢# žÿ('Õ<®7Õ:É©T…ÒÅ.[•Nr¨¾FÖåIÎÓœäXç83žâTmˆÆSã¼0€Æ,‡G³®î›ËƒœYrš%›As« ž§C_€^ñÜ^›UZ!Ot„ã£YÌ×4Ÿ¹Nq¤ö³.pï3_‹ÿ‰ãjñÿ®†7,_ü¿ÍM}Þoaü¯õêú2þד<Ëø?õ£âÿ=ÚìŸ6ÿ×_û¯íùïW«ËùÿÏv#þß{ÔÚÚ§µÖÙ© HŸ8`Ù«5ÿ‰w‹ÐaEÙ«ï¶3 ‹Û¹"ÿ­¯ú+ɼÉñ bÛò CŽê±?éEaßkýσ‰TØS£ûyZ€ÀÚÝ0êþèûyjY§´Ð“!=R¡+` 5±Häˆr A]ƒŒx(øGg*GÕf eXàB)páö,ñ›á×°ç­{õfíÌëE7¡bHŒ&¶{œÓ÷ÇtS ã ѤðîÂ!¢`F™HDlƒ•ë¦R¹ÑÜÜUÿo{¿þî½»ë XƒÿŠm¯ä]†ã ¸-n2 Ýi‹íbÍNË÷‹S p|IïW‘c½”±!è(ïõ+ñ¨Ò7Ã*Š}ÝÏc&¼‘ïŒs`²s¿w#jdDÒQØ@L›dQ sƒ—;Ì"FhÑeÍ|=ŒTF\öÌFS!7¤å´‚,N«ž’°(Ïè.ì`„! …’(íÏ À¸¯ NE¼gÕ çDc¤ËP åYÖÑ8þž½{ƒQ”§É+ª°0 êŒâ·SOɵÇQ¯Õô 4¹=£:îíQ*pÞï\m¾é#N­jü–spÅØr–xp±þj~‹Š©0Ë1Ù8ÞY;(]H8zXQh3…q‚‚!:òvQŽøžZï´ìžq„ýÜ^…d îÒ´2c jßÓݹjw0Cíc™ìhÐ`¬Zóy¸Aš ð‰0£Smà.¥ýÊ$C“V"RÖCvÆqR *¢óæé0Z¾µÃu4e,9©YO^K˜£rhPC[¹Ó8Üm5ŽZ(µ|˜°#^ØjÆ—0ßèUß9˜8¤å ämS« (Á|4™m Khw‚{-^Þ¤X2¥vƒÒ qh²ˆªLêmã\JË!ü3(çèÛÜÓ„T7kØyÅ7" Ö0àk7ì;„&ÄjH™è¾.ì?¯0š\‚2êîçap»êQ¡¾KèÙ]Ûçº'žbŢݯÊ^ܹ*µAÈ™óÆ[É×y¨êÚœÒs”Ô9cPèæ)“Èxmù"q¶ÚæœiÔ¤Xh•ü•_ª«V´áX9•ÒXh· ¡éjZ/N©n8êÀþŠ÷+ºâλŒgŽ–H᪄9g´D=ÔèÎõì Zhô®:*õRoUßÛ=<Ä[Ïÿ…!þ²ÐY»‡ßznÅâÓ‡.Ž(‡’Bð©NþàØŒˆñ¶¨H"F¸7‘Ò†+xñŒ&ÒI¾=pŸp¨€F“’¡UÛÚ³‡ä>H /x>SxAQYzN«æÃïHŸñŠtXjŒèƒ4&éõ{cŽUÍ¥ý¸šKû¡šËùBÅÛí:Eú-Hu©N-ù1„Y×) QÌVTóʰ¬Êd<²ê|¡²j6X¤r“›-©´º.ަýØbgÁÚO;k}|z±ÓªÕéöz\უ™§ü§Ü<ŵYœx™KZ¬x™g¨ºƒšm¨Ÿd•5Ô9õ"ó›A”åmN»f]aˆígrÑ_iè`ìÏk\)ÇòzžZnë`.!çO/:!ß2‹˜íà ”#*?×wF 8̶|H+Çáñx ­³_FñÏÈ3jXÓ$ÏCU¬,®{ …i\'úú™„dÖÈŸ·xŽ-žœ O-|hŠz6X¤ü™‰ ¦Š ·yö6ïlð0“óÉblV6Ï-Úh墿 «Õ‚xš¹ê`–½ãBÕª¬’ŸJªM·Zf€:«ˆ5ÖzíBn6¬gaˆÅëX9âÑåÛbâêÖ¢-ZY,ø@“ÖbX°(»ö…Ô"×\xÊߣZ¶žwÄ«aÍ4âO²Í›YªLµoå‹®ñ^‹ó×ø-þÇ]gДsÄÿØ\[[úÿ?ɳŒÿñS?*þÇ£Íþióß÷×`Î[ó¿ºå/çÿS<<ÛøÇÛG-éÚÑåâ¸ì5ŽðZ•½Sx¿ÃÁýà ýJWR„÷BÎ *Æ‹‹¤±ÐP!ðºè6ØE'rtÄèÍÛ­*ºKÜõ‚Å—À¯Ž`6½÷᥷¶^öÎöÿ»rdópá ¨rTҜҔb—Œ¸¡þ,Á;\e;8tGƒƒ•Âì*ùX$ŽÓÆåg…ú`^öÂÑ8º ÆÂGsv"à tõ~·µ""~á™]`§$áWúƒáí & D„ åT‰ü#(½s½É`eTÛÁ0ú7Å `Çèß½óâNñýúCúÜ„ÏMü àŒcUnŸ¾—îÔ}UwÂ\¢G0¤CO¬Ôók¡¶²Â;0gãL¢}@K•ŒxH)Äê/^†úX§¿’Îã?ŒÐS‚+œ9etChYo¤VÝG±M8J‡N(  %f„ =ªŠá…K»Õ_¡ªVŒ2]n„½¢“L¤‰Y›V1fV9¢ù£)´SÂ&ÔV1ûè®*ºþؤ•æ,]WìRèò„8£(gGqÎí¤7ŽîzzÞb€L: æ=mt¼sìö&ŽC’ËbÀh”t2bÊ¸Æ “¡`pô˜«¡FwLþ‰úãpÈ×#Õ@î€Ñx8éŒ'C°;CuÑgô–¦Xb*Ò´H÷ Ç.fY!+aÇଠJ<Û€’îêm“Ê!¤ìÀ: çìþEÍíZ£uÑ:±Á!ø#‡Ò©(Ù#ŠŠÛÇr!.†8ò‹u]´Å5&Þ{6‚¡Sù¶Zl %¡áʕ͔ õ ½W“ fLáѤÓEájÒ#G|=Áo” ºRnœûÑÓi~Þu€¾Z^Ôë…Ÿa|¾½IøS{ßïÊÛ.\«=êeï ¦üò\k<ñ`j5H»˜¢TœÕ.v Þº³1/Õ‹ž”¾2‹š³ ?úGð€§QKøµŸÇ~íÊW›S¦z7gò'Ÿâ¨ð'™…y„_îíùý­QU|µ ëØ@*„¯69¹œ^µ25LÕ´ò­nÙuwK¦gñuu¦+HõJhäéÝG]hÓ1˜Y!yBd«T´þÃ^íWòÇ­ÞŽºìiŒ— àÿ;yÌ‘L„[µá­K÷ŸRhèŤ·®—¤q¦-EÃ[áàÝ̬¸qº+±[·½Q5:J«ü¨x üÞw™¶ŽKlµ0µùÐh F½°šh¿o´9íÓÇio‰œ¡òö†jfpmaï— Â8¡ýD¸Ö]ýQüKé³¾f–4$ÇsÞé §KÝÒ  ^NÊ,ô ‰…ß^¦CÖqïQ»CFêë+¨ÊâR÷_1†Fœ¡ˆÖì"¾nẵʞ-=ö޼ö48e.²E=fk[š hë~æœä‘¡ô1—ò„ÿ_¤¢‡³‹äÇÔs”‰Ëƒœ¿ó£Ÿÿ„_Ÿ3þ»¿å¿Þªâ} ÿÝ_ÆšgyþóS?ñùÏcÍþ©ç?ëëÕ-{þûk¯—óÿ)žíæùÏ.h–ûGõOeóèCÙû„“OJ#sžít‡ž 8Žxª/û€žÖàkHƵ*°ìÜ-qßM;n¡ÎlÍrš’yê<\0CŽ:dzŽpùò25Ë’18ö2Åxn ¼ DŒ5Zåæ}A“,§£nÒ ©“ÁçD`Ýc4‡ÇQ¹µ Wœ&TÛàÞ’VüÍ…µBTþ²B'oþo¿G¿ýþå] …¦M¡P-ö+_Vt¾¾›ûˆãÃ" :óaõmÇa¥¡àOy½{×ëN†âÐQ'mŸtdŒrègeäÁÓªUŠ §7X·G"0 8ðhꨈÁÔ k« õáŒá0ÝáV*¬îÃÁqœÍ>´š¤JÒ+u©WI+ÛΜQ¶<«³jÚ0x¿¡Ž ÖÊ 1‰¬;ê„\&MGQÖ§œeñê`H²„W™ƒ&Gz%>ÉÀÑ2$ûøzЧKŒ“K`›á«)N¶:÷ˆ'Ù'Äõ ×•ÇÝ9hòhЉˆ7‰Î‡Bd†^֚ВMø$ÂK&£úCp_eK;½ÛˆZOýO«L鲦1³é$ô>é0r´_n­Ì~–µ^|ð¡”ÑaóŸJdþ°È*Aïó¦Ìõ­wD=H Žô9|çEIH¸ûöC\õû|ðzv#2 Æâ!I…ŽÍ»Q—F]–'¯0|æàÒhF+kFxçqšv€¶VÖ×z˜†76ÊÐYqlÖ>¢¾³K?ÛµsúýÔò3 ™uÔÖBO½±×:‡ß»Çgeï”È6@Õ?«½çß½Ã,ôûÙa,ö¬ÍQÛ³fípûŸeüÝ:;N?J#2e;yFírŸÑïµOñŒ*.Žêvðw{÷ä”#àaa!°ÏNNÛtH¼ùñ>„ž¦Ú<$Tg€‘™âðšù[|þ7[Dé‚ãÜÑ n.&ïÎÎy|8å¸1G¤?æðeÀaÑj:^ïZݲíüq7Îp °…ŸDêÇŽÚ A2B2%ò•ü@Þ$¨ÁÓ_ZÛßËn2Gé“ôJÉ>Ñ4Û±Žaéí\£é–…Ñ869˜…äyŽÝ\îõ£ÛÉm|v RMOtŒ‡)¸:Ç)X|a"&ù æïX6rµá…t¢ò¢|˜¥IDaAŒªw‚ÈŠjJ¥fÁJàF„&ô‘Je¶~ˆj@0¼›ŒâšÛ ÚrøÊ¶Ë j¢ŽÀHø[3Ià9!­Y⨰ŧêÔœ7K"Úy$-ðÕ)wæ·çŽ,†ºa6šÁ¤™8ǧìnÖçsðËš[.dÔU1ßÚqÁ%ÑŽCCû§0êéÚTitGo&¯ÎxÄŠß—â[òÔ¡âN!agc åXÑ>!!ÄÌê†7.ðH˜:ÊUL«Óªž†µþ²ºØ­'µ3^è°qr{o!ôMžÐÙý“Só<’ä»î‘Â:ñ1¯ÝTC䙑¼Y½áŽÄŽ(y ÂÔ»7­Î&̽F¥Æ¢´®N¶àäT.€®vè†R­ô”RÍV›œ Û%ío¼`&슀--‰Ãruw7Ü QïÝ›ã’5…ÔåÄ¥`mÚ—‰8ë" 5ƸEܘ̞9_Y‘r–'êç<å©Õ»Ësêyóü·ûŒþÆùÏÆæÖòüçIžåùïOýèç¿3û§ÍÿêL|{þW7—÷?ÉóÝ>ÿÝÉwÜœæü'’5–çÅ S ¼Ï°R’;\7úÑ%[A·ûËhr9q`ñðﯼ¾ŒúÖC'5°h C^Ô¹ö$ ¾‡eyécå$ýù¯øÏíÊÛµ2Ý^îÑ•*U½3˜ô¨W:aô5¸ìÝÓÙÖè:ütÃN„—xC埲nHǨž¨[Ù»„o¾…ÞM𠇾?è/qKÜ §%nÀ[â–¸%nà‡À L“–xŨ_&ån%!0i†Gš˜¿"Ž~dˆƒ?'¨Õ°Š({DTeJ¤ô„ d GËûúÅ|¸œÄ%Þ~ú`²ríý´RrW‹­´ü9ò'ñSäðëb ÍÌÅbÕ¶P<„盂O ±‡Úà=mVPïƒE›‡…·8:!Ô.Ð’Þ™ô´bôFÑ¿C5ͨ8l(é놴%ߨ²Î°JD¿Ó×ÛÈ$i‹mv¿–$ñ›þÀ ‡C˜¡·x2õë×£i Kwëjü™Þ çMnJ'ɈÉ)‘îç-fE#ï´hdÏ‹†>1D…æ› ×Ì`½SÝu/'Š()çÜp0wJþuàÒÍbËÁ¤™¹ÔPÄž|v.5êa°Ô,\j«æÈË¥s †ÍÁ¥ÏP` ÝzèVÉÀn=8Bóä|÷ô_å¼ ® øMvÄa¥[ךMi‚t¶›%ÜkF¸×a Ükgûo÷HìJ¬)VôI,‘üÍöDø0çñ»¨ç®ãÜÞó„œ05øuòÛä‰}ŒÜJÒÕI #ñ^–aèÊFªD™é5ÖV­²lýYذkÆäã—Æ;zeÝÅż#ÇÅëNx‚¸ðb@ßšÝËôŠ`cvŠþ ×ÑÏ„)Ü™Ž)T-p×’{v}X =è= 1¥%K âƒè-1ˆÏ‚A$5+AÔ …„H5b¥êG»„'i`60‹¤áa·2L4Æý_LàŸƒÉ(DK%EývoÀÊÜ0¼ÂÖµ/âÞÕŽŸýØ”Æ(þ]‘©K:£«Òw¶a7^å.22e_ · îƒ~«hêvqó‚ÐÞZ\‹G€j> Š2®š>ÿ[n@£RËúˆ žªÄd w{4ñß_ þosmÿåiž%þï§~tüßãÌþióݯn%⿬¯-ñOòðl·ñ¥ñæ´ÖÚÛµtý‹&üCƒ%ünœg˜ kõ³ö$:tÅŽ¿Þ×€L:‰%dÐË€ j£“aln–z‹‡à0;п6燢 q€çŠõ¿0¤áÇi8‚!ë âþ¨PCo7¦þ‹F§ôñØNUXoDáðï ]Q8ü€wâX¨ÜJé_"¨ß`‹N` ŽžOF½Q?6Žx8W5j@÷o:QIBŸ^ &ý4î‘A »®ƒÞUepŠs/xé€ß/ÎÿÛÈ,¤… ÅF³BèJŸ¯aªá§Ôš.qK\àøwÆ^4ÍY%/y¸8w/èI’ˆ¿Kœž`|¬%Ï…K æU(¾Lœ-3Á°s-n‹Ñ—¬ÛoPbÐ2@tØw,˜IîâüA'‘VÓ4Ñ8O}•l`C4P.g…$ðqÅ´ëÑ3º™Ž‡ŸØ% 1}Æ¿uI‹ñµCqAR.Îë#ê?Ïñg‹,Þ¯Y{‡/ð,‹&h-]ãw,Þféª ÙU¬Jeß\Ž@ìàbIø•ñ S(«åÝ\Öã̵>Û©¾sØè8©¼Nx'n‘ •ó  cL«]{}׋XJjKãåKca„QùuAbÂ@ t#“ÁþÑ…·}Q¢s|HIï¯à¯ò_—y+^ÙÌÆW“`Úh$Ö>‘¹“ç(,wYH¤êbÔ4®áS„Ñ ÿjÿ/îtçM„]2â¸ÊÉÚ`Q3Ú¹CrÉËšŒYyÏ’ùÄqŠ _˰ëP Ô¥+·œÎdHfJQÕÆ” ÇTØ7˜g¼ªöar]dA…%¡¥Û«ÅQÕ«³W l#¸GzbB+ãžæ"Ä.n2þX+ó|fǺe`4¸5&°"¶qD0>Ã{¬0å­1e›QQ«ÃÎÂÐûOÖ>1ÿÙ-üÅUÞ…P[¯¼zÜí‡8^Ðè0jÏ[£BèêF Ó"¢ 6ž^ú¼s_þOÑTž z;€Ërúa0¼Áú€è½ÿ±.*}(ÒfAÌPBŒc¨g|í.ìXô@V4;$‘f˜&`ëç‘Ðë£zÕ¯@om4KþbÁíÎ]×bP>\™ ìc …Î7JàÔÞFÃgBàÓUœ})=aáæM Bÿ Ü<ˆg=ËÝ•¥EÑlMíÞ„k«Ô ͺ©ké ÍDÏwÙqz­P¬ˆ5™ƒ s:ÄypÂñþ äû‘³À@xÿµVAh%#)~þò…/G³¶ŸÞ³Hªláwt ãµZzh´Ÿë‹Žl}öÛûJ«=v•ºÐŽt<…óÅ¥éÅ»5¤ÎÓ7‰«½òÝìµçCVð’r2$Ê/4-Þ A…£éVÃX¼ý!V5fˆÅð¤Þ&Y~Ä<˜ïNe{.1Í÷åÙïB‹©¸‘ËÁì‡)] ;ªîŒo…¤YÄX|!3~$òBƒGÖšÍÝÆ#‹ñw{÷¬]ö.jü­ŽJvØ”Nw¦]ãfŸÜÑ0Ì»ü«QÏ6çï4ÎŽ9ᇣtìs£}xìgÐÙ/{ûð¯uvÜl´³-ÙÍf9':½8qŽÏH+èU¬ì¢É>î2ÿÝ ÑÛGÇÿ*Ç0ÓÒõT´†ÇØên+ræÙÙ$+\›Ži—²Ãº><ít ¸ ÖicßÛUß¹%YpfÙÞ&ò–áeÐnš»&¾[9ÿä‚Yp>ÿ@t³f…#J:ź^ªÌ¼ äMí›s4²_œ;¥/'×®MU´ï`p§ÌQ_"Ò]ˆtÙ34¨¼º™“Î÷"QÉ»fJ°si¼`¿r;À0///Ïy 1¿ë[ã¦'‰£×ÁÙ;ùðõ¼¼c€ëwS ÖÓÐ÷hã³€¸?–À´ð8ÎIÔሄÍG$vŠèÀHJýÈ (ˆà©ZüµÊHóâð^lâŽÇ *ôÛêûL¥Óƒá¥-¹Â›&ó;ÏXP[àSËÁm’tûô\QNᨘxA_^‘‚\û bNˆ—Wܳ 7JÚýµr|}+¨­`0ÁaŒÔ7\Þ¦8Øå¡w¿ ã7¾ào¬e7Ó!éà9ô„E]örÄ]^h“Óc7ïÎWÛde§Töôk­WŸ]‹~×à_·eÐÇýÏt$+(ØØ×¸ýî‰«ÃÆš·Ï«Ã¡Ù0̨ \~Ð, _Âf{ßZŒvðzoií£S`YïN­L³‚ ¢å^µDÙûûŽZì:ñ.—1Å-E³qÈn£H J2¤D©Q±—|Œ¼€::Æó\t÷SèîSZ¬J6Õ}IÕ•T0å´´Ê¬Ñ Úwi3ž6y2zJï,¥NLÓ5ÄGwÅ)÷Ó›dÏ;ã« {KLä¿æáãòž‡E>ºÿççÑøý?77ýõ x¿EþŸþòþï§y–þŸ?õû>ÖìŸ6ÿýM˜îöü_÷ýåüЇg»éÿ¹wÖE ý¯cÛó³~œv‰ƒÃs}ÕÙΘ@¬û—ìZ|?©æäyPŒ+˜Éƒ3Ïub fºá!˧²ÎhäðÏ çIàaW%\ +Ýð*ê£s {õ¢K`+Œçe/¼E"° ÆC¶.ÆòÇmq¶Ñtåé3)€kWÜdÞó CPB¾©¿Ã÷½àö²ëÅï„Ï'˶ï)ê-œ‹í•b­H¯  ÿjʯšø:QnÓ­; ¯ëÅ1oëE£VßË©:‡”X!Š= ¿á£DªÕèy| ½Ë’ß Ã¯Ñ`2¢{p¿H= {r$PÎTáJ/è×)ÂÚü©}|v‘q2— "]0$wç¨Þ ÄÅD®š<}j¸ÑXÇ Q 5©[áqý×ñ„ôy¯½º># ”KÓcšº"ò.8þ®L˜ÕJl~TŸÝ_©‡Ü âéðºªAY ÷ÙÙxŸÎt_h\ >®:¤P¾ÀŸ–œÌùæ (ï§(ïûd¶7£j´èÕ~ÒyW6gœ\ÁcåÁК¬šÂS§pÿá:`8NmÅEm\8q[ò Àý ì4àÏ}Ú„¦ÏÞì@KÝs È9Tí# BRšw¸*7=¸(:k¢Bø¨‰dffÆšè$ÃrË&‚PM¯£ªpFE%ê«Îg6~âðE¥¤£µtfvíÔsÀW3àâfç›òdç›’_†6K$У;ˆ<ðRXš ûó•@G®xò2ÁÁçw]I4©áBm~í—áŸ] ªvøÁAr¤êô¶žòVä…Ÿ¿`J;0¶ç)ºœÌu¸s aÏ)';FÔÉÊb2\“™z)Í07â£*¨qå+ò¸* òÛí²hoI2`ŽbĤ;­*”Ò’“N§–5Û°ÃE#¬d”»˜Ú²©5`½^O!Ÿ°œ< ZO-ÞqŽæ‰Y‚ðE5c2H·„oCŽLîÝí™ÎËNx÷²ÏsøÓ5ÇËÖzÖ—3<±lqOૃÌIïX¢ þ¯7eø·àI/¹å0·Tü\ëÙAê"ƒ38mëüO%)þ7'Дµ2ž¶b32š$³[’VÈCëHò;SI¾¬å5ºÅX2'1 *OƲHf8´iÙªÝ>«vþ~ÊjøESî`5ü’\ IeJ¬†Y ^¬âáj¸ï^ §èsŽÒ1G¨rR;™MÛÓ S¬S}Y¿iU¤v´ŸcI¨ë ³™ƒǺ×ÔLÚ¦¬Šë©…)=W%µ¬ÓJ5Ć­Ç+ É,Pö{Yõ´³LÖù¡9øb#ï2¢HEiÀŽk‰Òø1ÿñõq€çÀ¬¯o.ÏŸäYâ?~êGÃ<Ò쟊ÿØØX¯Úó߯.ñ_Oòðl·ð þÁ^2 ˆÎ;U™5~÷4’#ì÷ о |ÁøWpît…t®¨Ý{qÐnô²ïHOÄì¶C+!8n·ŽPqXtЊ¼JˆÎ7鸽øý÷WݼIÛ¶K1˜ÿÒŒP¦Fq™Úà_=4¼Œ( ÷Ò×ç|¥xïÎ`€‡<ó¡eˆ5TãU"n‡ž¶m¥5ñ¸ü˜ðV\Ê,jI¬Ñ·ЙÉâÈ é¦KOž›'!“ZÍâЪrÔÖÓGͶÎ6@MÚØÍ=,vWg ‹=„)ÃRÍ5,‡‹–Üà·|¨…‹Ÿ´`žÿw_Lü‡µ¥ÿ÷Ó<ËóÿŸúÑÏÿgöO›ÿÕêúæ†=ÿ«[ËùÿÏvûüga¯iÜ÷ÝlXZzq‰ Ï“ãä`ˆ!š &à*`–뽟J°“‰%`“ö ÇèH:›L`" ÛìÚÈ Ë1&νn„3ˆvý?'85zŸaÓ<¾–7Y¶é*àôdÞmp´`VÝ{·Q¯Ëmºc#dp ’©\õ|¡äÝ ê¡:˜5GØ*ùfLÁdP×ÜRqXUÚê4¨AOÕÆ ¤½Ô¬FÚ¼¸¸D&Iƒ¤®Hâ7ì 0Î-^bõë×£Û±AGåN`%\“€ÆGÐx6ð¡° _•¸µø—é÷ ÞmäeÞF6÷6töš}.þeý™zN²³()•ƒ ©r¬/nیؘ™u Ò64;'õ0ØfNÔ©$ùÞN8–w€9oõ/OŠ¡ú5Œ.'l๔Úëa0¼ñÞ×hvÝ ï‚á˜Øšqà}ЪÎH³ÈÀÛIç´gµçð×þ ®ÎØ~ÿ?{ïÚÔF’ì¿ßOÑ1o,@ÂH€=ã9Þ‚Á .^ÿcŸ!Ó;BâHŸ˜ÿä­îÕ-‰‹Í¬Õ3¤®{eeeeeþò”¢ÕV×+îÝúý¬qò¯ò“Yá0É-þõ76Ü™Û:ðAA¥qö_ ¥¡M„ÆÒnã÷Պ؉Áß,L¿«ib›87$r£ FÃððÊ àaZá·ÑྐྵQí¢E‚ Þ«:¼#‡“.fS”Óf«ÈšWÛ´Xv|eÄ¡u¨ køœwMïå®Z"0s\¹fÉë(ŠJ¼7¾\`S—Ø|@‘ë9Ý|\@ë½óé­ºñV¾ó×ã…ýk/åg1€u.Ü͘›Ç»ƒ—/e R|yÜçJòÕRY>šeàöôš¶³5Ý|M7ãÂ0÷1†¹ÉÂ2Wž—k™›,Lsç6ÍÕbpΖÛϧ‹ƒÝï´èïqíÿ|1ö¿µþ×·yö¿?ôcÛÿ>ÏêŸjÿ»QÛX㿽]¬ÿoñðj÷í?xö¿Î<8©œSPóyÀv~Ô’ˆß¾ÇÞ âH î…É0?6¶&6_U¬F_[ãŒÒ☱¯L:SÉc­‹9êð²ËýåY0–Æc ˆÞ$½*65~¡fÆXÈC0ËÄ–H쌱”|Ð2É L*“^wµaz$auŽÉõ+Zª¤Ý<ÁpuŸÈÌÌÜ[Y_ è6YÃ&±d¶gfa!+…<¯…,±›™šQ‡’ÑXß.”ì¼/‘ÌïW«‘¦øÄÌí¦Û¿® ïR¹†—I xÒùÙ¿#÷ …•4¡,±ÙÂÛòÉ l;Ÿn€â§¢–>Ú:øÁÆÁÏcüg£Ùƒ­«T/o--̃æÁ óàÙ<ø¼e“Ë’¾(??‹¯žæ5o ®Pò+&˜Kä Ú–Kóoׄ wV ƒÞ {:9;¶í !+o;–²8I¼3ÑÆƒ£œ^]y]³xdó,÷UØÁ¦tP)…öÏKÒM»€ñ-ljh>€CÓý ÿ¶·,”á•ÓK2G‚öãÏ3±JÊ®ÉVoíW|·¸d»v†VüŽÙøØòß¼jÊ+›­•꣼E`ƒc§ kŸcóÛCcß)î¼?ÉÁ0ï§ô0a?†Ã¥ 1òضEÖF½Ý‰=‘ùa¶I¦ékßBª’1·*âeåmüÀXÒ?ÕLڭʬPÛ@¤ów씩ÀåGÉí=°ï) Êm4I†/ekbƒ)p8)ˆ`°?zÒòÇ_ ·ôOt…æÍv=¹×º$Øû3íùØmsKÒãÖÊõâ=˜rÇÏÅ6ð)rÙ4ùpZ“ÇÏâs7;—±Ìæ2¨r\´)G¾JBvµ{Ä«"Ýù` Lƒ¡ÿT7®1ÏÍí¥ûF|x¬oćy|#œŒ5­˜ld+GÃǨ‹hͲûPÀm’…KÄKu‰xrˆÙ]ê­V£¹‡×F;ô[\Îëüõ#]"WI/…Ïï¥ÐŒø<…ÂT÷ƒ© L&…\=¢A%aò“X¥0A…Iš_Èe*PF€›È]ñᑎãÃG‰M+½õ2J7bïT,™á²üùz9œ·rL#}' ©Ñ÷ ІžjÌ¢ÃÖEP\UÕNmÊ>ÃܰÄJ¸—5±Åbæ±æ1£nžŸÀŽÇŒå3ùYýþmLþÿÿ‡~Q?’¹ÿ µöÏ“—bê_`¶ÿaa¶ÿ­Ûþt=þžöÿo×7 Añ¿ñ¿Í³°ÿÿ¡cÿÿ\«ªýÿæúÆý¯¯-ü¾Éëݵÿ?ÙíX§ŸöÉo>ÔwñüpܧtÇ^B×Íáð mYñŽ–©V}»]#ki´¸ i¾:‚1ÞLvÓËdm½œtö[µU®sÙôÏNÓ†s¦æ6¢0œË.èa³ü]eŽo ôKÜ(þ”2Í8W§±lù“%îÖ\&û@êIv‹”#FÛÚà„̔侈íëx’’ ›bv´´a•ìu¯Ñ¦××Y/CE½Ü¾£Í¡¶mÄK]¾¶À𨰑/$…€Çr=$¦oø#_H@oÒñ„¬ «vÕàLÙŸÀY›RÎlƒ¬s<Þø¸î[#ÏP–1…eŸnð&•(8äå$[MWù¶Ï¤’{qÏÌAHÞ¢ùù°*mȵ‚žÓvöt~‹YcéÚjÌeôlfʽÒýÛ=yÜȳŠP`ó#´‡8†—ýaï»ß>nG™x$·÷ýI†f£1[áaë9ÿ=ǰ×Õ_ÖɈwg™€\dË:é)vȦ— #…µÁþ¬î¥ä~·‹jH<–•1÷C]¶Ï,·©¶ r%êXóönÐSg¬Ç‡†Ú5ºïMÐdÒîØet NÝe·žÌ´èp¿Áõ̼ÇÔômiS”­$Òñ9MQ¶V¹¤ÐÄäƒÓüif÷¸Ý½p­îõ.&ý1F U¿m'»ãUX”“O0&V¹¤pLp·§ò§ÆæSí”´”­”ÈV¼‹¡TßXÉg—ò¡<¦4 ùdtx]·æuòáô䬡Ìh¨­<)VUféæ?NOPÞX}± ¦ÔöÛýrÅý•ÞÄXÜ1Ždsäå%êW…Û·$!:ˆ b…Ù…h#tS–µê8c¸"äiFÏ]gØ)±' ïˆYz ²¹oÿK÷+‰ú}\–Î6 Ò¸.@›%ß‹Y¹b¡\#ÃtöN‚nE³OC«Z›€ìRÄ^ ȈÚ¢_—É,Òásƒ¯zˆiW& 2žâ)T.’Þ©<.äú\Æj/&P;5b –µ3byc{sÖ?cû?³Ûû[KòiÿŽö)ÕGV¿!àhìÄ…M—×QÈQîÛ{8UÄ>6N qKñ=9ƒpinAGíFQ9ð/$¦3Œj~1¿4 ÛC Ð"ø)Yéš'¦¶ÎÚ§p.†ÿʈ¸ ?êüÄx[ó»Ñ8îÀ)½szÒ€ßø}·Qå_5úEˆ­r[OGø)tÔ©Ÿ7JÉzt æ·tª8þ4mûˆ~‘®ƒì9t;OhèTß‚Òp´|~K°ÈD°÷E~·){Y%‹µæñ¶Wž9ÓTS,m $†@eÌhFë§)Æ@uîªÅYû%ŠÉÄÁ°¬ y?‡y?ÌšWø<&XüÉnç9ƒÅ“é aÔìÇÜC-žE“¢ Û'°4‹Ïó³yÉ×êáýmQoÚhíáÆi9ȇ$"8j)ú÷㤪{M¡µŒ&¹c¼ò¿§äUãnœõ‡CßÌþì$îuŠvÃØ']£Še\æ,Ö÷5ÌNï_c}ºW;Cs*ðƒºÁ8øîè[ñÄô]˜[fäðÞjî€[æ ­áð.¹L²>ÎïîðlС‚Bªf@£bÙñ_Q gWèˆb üz²œ|pÚGvȦɎmK_õãoÖ§¶WªôÙ&le*dÌ svw¾øàC_Ûeq9¾2·ª.Ü>Ì&z“B4÷ý®] 3¸ÑÕ´t.Áó§úÒ2þú°ĆlÀ´N+Øù_\R¢Û"íê½]Œ~È”M”ÀÇUq&qV—¦²^¥ƒ!PoWÜ{еӔCþ¦²ñ“=“-“®®X–<n°BQ’ò%†]ãe £(QÚ* õõµ¤)”îðžÞ&ñØŽKHIM"&›õ\WóŸ§þƒw%ÚÖ@c7×’ƒXcáéĘ!<T€†¬ØOø_Czx\[²è@™¿W¸N¼¡ÊåAñÒêN$±jp3§ÁªÍðCëÆšyrz»©VSܦ¬TªÒ\xÑñK8à‚WÔ›ÍÛ ßÜ óí3Mß ýÊ™‚¦îO0µÐÞ7<ùô:ÒæäÅLþ›GL~Á{¯¬È>ñvF;°$6™0˜?ç0²UC‡¶œ¼Çë°d’;e6µ 5I |mM‚;l1ë;»°R¤¸fÅPll³Z­zuêaù9G³…µŽÍCéØ «À\Ñ€aXso]GǤºÄªn%)Pû´×‘noÄ[ŽB HYü*NRµ%õ*íRògºüjüK»ê ö¢Zru?Ga§”5ŠXš«h})©O@Ô6*í¯(XrÈE’ Š“|:½8Z6¯ZUÌè­;…$Åa®1jFzvw…êG­Ð¥+Œ À§n6pÚ”ù ÎÁ–Uu¬*é«íÙjÛÅàY›¤·@ÐÂmYÌË®%Q= né"»òoŸçí%§hb¬kÛd›”ÒÅzy—>åókùf)Yí§«¬ðï%'á ëKKî,ˆ ‡œ }Dºð„½%ê-YUŸ]&¥1Ò_žjÝä7pn©* Cã‘q@J=TÈô.ú­kvÚÐþ˜¯ß”Sc$ ¾Fg¦A%ñøÃŒ¢’-OËŠš”ØœXZw {6.‚‡F¹™b97Gp69s${#…ågçÀtc,9 A뻞.²Ñøê€ž„°Tj’—é¶·t±Tö°”f'NOîþå)¶Ã@Hw·CÝ*nêž8w‰(AàLæì|¿øÇ5¥¢öª®åìÌi‰r­µea†gÃ3­ɳ0b -iGíñÀqÇWqý€|G¢;<‡|ÿÿ)\è†P)êË˧Kþ¦‘Wr›è_î`ñï ÁøSÝ–Ü–¶^ùù^‘Fçµt¥ê—PÜhlé;ÈU¦ŸNK †7æÅ4Ý (âÌäòR#ê88EBk Êwz^©ïîm`Jù§W ²\9£É&·ŒþW… à‘úÊîªËN—´œ\ÞO ¹rÁnU53æ}À%‡® n£ †ùˆgŠ=tÀ%ãÞMzK®@0†pÐu'ÆÇˆ·OŠäõg;,Pl”-.óNjø2¬hzéöu5¹±ïô>×…#]·ZƒëðoÃêt·ßÖàÛÚ†7Ýuøv}ƒ©¹›ý/óþ“-…–t76ä@äö_vŠžï´Ôô>ùغ26¯Œ­Á¿Öñ/ü±Ž?ªø¬ãäßÏäòRQT;EõiÝò<žÜf_›ä‡FûÿöùoÍí˃Mì;çɼ&öÊ´tª£´#]†Š.¤Ñ~Åa m}K²îøgÝú2«3È}ñË(#½ÂŸ´?87uñ Æ©º¸È˜çÞ‘uÎWd‹Ç½ÿ{9ñß7úÿoó,îÿ~èǾÿû^ñß7«oƒûÿõEü÷oòˆ¤âÝÿ|·[ß>-ÏŒç˜ó8ar ¼Ãœ`p‹ËÄ^&š¹›éJÑAƒSRcpHsøT׎K°8X¨òæ Íð‚p*0“£Ð¦p<æ°2Ãý(¹*+Ïu3Š…Ä/Gg¹mØÀtÃÛrŠæ…¸XW}Ö6ÕC¾?¦û?µ¥ÀtÜewJ!U*E£rÐêNGØvŠ¥Žéª«¨íEºOL̨^â&sÝã&3^å&Ot››D/tYã<Ó®šþ¢k]Ù,†µåæû5Q(áìØšN£oÔqž„uK•AMÔ™®&G¨^Ä+º²ul÷ï‘­«&ß\ßPœ¹ÃôÛšö*FT…aG” I”àø¡XÕ|ª@+U'(©Á4€ñ0\µ‹AËûýäÓ£I Lø^ïê>Ƚó ±ÏpÁ\â~†·{2Ië«´RbWêHXö•~?Vá––àpK™0ñð"[‰ íx°8v¦*AÝêö{÷ýnб)— Ã\f z§È.€˜@2Õ. s³y¥„ÞI n¨Uâ94¨´óv:@âPn[œ[Xû»hG`®b7P]˜9‘<ýú":f<ö ¡8¹ÎìVgýF´±§Ö‚°¢ëÞÉ4ªBUCV6 dѲèÃm+\ RëÂ[ÜØ‚7OÎTZÏ®Š’‰õ²ÈëËL$&ŦÜiôqLpãÈè¶ÃÑåÙ ‡×»h^ŒnžiM°.æpP=•ú0²¿šßdÇãÚd½“Jë´{ºñNÄbÇe•¡‘‰g»Z”8M˜ÑtÇm]Èög5Ýñìuœ¾ÌeºcZñÌfºã¶tÚ¨æ˜îÄíuŠX†EšóòŒg&ÍÐÒh~¼ä™ ‹¾…YFN~frÓ˜9!G2çºÙžž™to~ïüÒ}<\ëœ[|Dvv ^|\¡s æôÞQ{lgÇ0ÅYµ™*†u©lÉQ enlˆ6ëEƒÖ$™­PÀUÖS¶D]…¨‡á´ý@æ´|%­ž”ôJú¿Jzšmç3˜vAE .1¸ý»äQ¶Ÿò„& Z("¿­qÍ-&ßò³;¸r5od š[h–´E¨aè¶Æs5ÌO»ç;ní`80 ÂîD6ÙXrbt¯ÉmÚ° ³;ÉÙTr‹1›³Ã´SàP¶§C¨2#›;x+aŽQi¯{?Î/f“øÏ>i" Ò–„Šz0ޤÄb{½û+È»A`çÑðB<+_È4x|ÿ óÂø‡³ŽaÐ?z¼*ßT4;ÈzûUùm©·N#5<8!}·;Ç’n ¸N^к™  ²:ýîSè8F;)û6Ò\NìBüïg<ÍhÄs6o€#vˆx.IC“jɳ;—Iõ-¶ƒ±ŸÕ"{NsìéÜ~–9,¸ óÎŽ°®‡òQæßf7ÿ65 „æØµ WmTØÙ˂Njl¥ ¢ÀÙžIù®oSnµôDCÄÓ;–¡*$MúH—V|ûL kl®3„þ,XÔ‡xx¬×åŒÄ‡“÷Âò`›¯Ê® = –¢EÏp)¯î¦Ýa…>Ƈ•š£MÏrÍͼvxÇ÷±m—¯Áæpú_íÞ÷û¯,Û87$ª¦€BK~ÓZ ¤ê7 Q c!h¦^½ÛzÛ¸-AÁ•»Ò܆Ã=lX¶ú‹íGS ¼i›8V×9\°wØÑò¯H\›e«êýt*ÐXçï«Þ¶ÿŸŒ®^Œýµ¶°ÿý&ÏÂþÿ‡~Œýÿs­þ©ø_›o×jýÿÚÆbý‹‡W»kÿz²ã9?‚gÚÓúÙqÛ6úüjGÎ×¹æöE^;ò»!¿a&KóÙ¾M€øyuO¶ÆÊ>Ý×¶ÅÑ·ò“N?ô5:%8¥{¼½&7Cþ~œÝf0˜Ù„´ÜØÆlLÄõ.ùjËdÿ;k§ÿepQ3Å<_ .q†ch£¦ØMr<ÈÈ6aðŽ{mõ½g·Q§»å%>IJeî^ôêkáÕª½Æ„‚NËÚjDgì^ª$5Ê.Ái_™öÍ„Ð^0Já°5¦ã(Q­Z½v1Rùïcܸ;Hº£¯x®íóqûW5xÁ +ÇKý­3t»ŒyÆÑ¼HWbãÈæ zíF•m¯ ž›ÙF1>t¥DGq•LT½kåq#y§Þdרz” †K‘³Fw0ȯŸLÝ*7fm,À?^_WÞš†Õ2ïr—«y½R¥û\›=(„ÈúÙƒ?f)5ºÕÑyLJc3΀ò”¾L¤yn ›!wÔ„N—ʲ”'M”e`Afœ´†ÂÀo¥Z1®Ò¿•€sÿVªjªC ‹ßp†ñª/!ÑùEòÿÆsßL*ɤ{ÒÅgü§[Yx“)ˆ¦“YÂgë{1ÙPkÿ3’Ó»ÁÝSZ®ªú+üU}—UØÎPö>± Ä=ÄoÌo#†Ô9Q¯ð"n’Ù9QÀÓK­énpÏ0âÕ%i5è8ßÄa”œñÆÅ.#ž­Ôp2fqÊì`–ñþ^—² •ýåä·zKéó‹£r—­«ZÎÆßã¥Æê3‡ÇƸØUüG?›ç˜Öñou:µ4Ÿä&UBU·ê'»{vŒê“Z¶Ô_'ïæ·P]"c¢XKzÅšwÃúÂCJ?âέϦ¹Eõ›‹}G`9‘Jû=7çSbcßkWçk®¾×\©ÍÊù(Ûsñ=:¶”ùð’CÀŠÍù²wƒJ°G$1ÞGc¦¸_‰§wÉÅj!óÓ,’F2‡£<3TmW5;ÍÎkófÉ4d±K=Óúø¹&5Üâ›ÑvΤ™ÿ\«tvþj-®yxk“xk“xO-Ÿ³¶cÅ{¦l¹&' Ñ>¡É‰kÿqýrì?÷¿ßæYØüÐmÿñ<«Úúߨ¾y»Ø,Öÿ·yxµûö…à× ÓÕª—búñ¨oóØ€ìºAÝ\+z ù>Å2 Ð "ÙÖý wS9èÞ_ßv¹è}Ƨ˱ÛGÃÇrß¾AxŽjóAîÍŠ··°aYذ|ã¨aQ#–g,²°…b€B“ ç.ŽoÅs¸ô­ç·âµ@ûù1Ð~^HÁS…Ÿz¢èS!,1b‚ÐR»ä1åÔ±îØ(zQ½ Ú¡›Îé ¾YùåMRI¶ºc¾ñgÄÌžøÜCÛöW“V |¿œl Sd6¢%tô·}«¡ø®;øšgÕ⺠J³d?ƒ7Ç¥ÁÒòþÙk5Y>b=ƒô‘,èã,YÍiœ`úeÌ  a†ÒÈ_ˆPMªÜXÞVqbìdÈ]E\³Ä—nÎüÎW‚¶`‹¤±–T¥Ð_iè®Èƒ¤}YŸÜ3ÕÀŒ¹2.)’¦üAÜÁÜÖPc°(è*Ë hF…÷Ôo"zÐòüã3þ@ÕÝüû£¢&üŒù&¥#Å^ÓNç¯J'ÅTƒÊ¡ªÀÔk¡¥1_dP_ÔæÓZ§ @™¾8/€áV€‡1j”P+çÜ1GÊÅÌ´'’¿—ÊjÒ§TZnŸkl4p¤rw!´h!€ÒÂf!Àçp%´ŠVBËY ÙÀY UY ƒ—¿ZîJ°ÅØo¼ˆv‰ÿ¡£‚¶¢+A¥Ë] ´®ÔRR¯ŒWª±ÕPåÕ S'[՜ÒâKdÜF¬e&s»]9ø¤åÃh â1b…gp ¬RnQŸÑïØ>¥¬$n ÿ‚‚F,޼mJám×¾¢>@S<ëã6õ—¬÷–Û¶ý^ž•ð0Èr°m7¶º8_× ƒfj6ÙG9@ª©&.ZÍÞQrz”T«kVÈÉØÆªdGAʆp€Ëˆj@¢,˜"´ G…¥)›TŒÖ+™æ0ŸEUÖV§D:ìƒí•ƒŠºþ7Ãk_M´±¢ Š,@˨#‰ž(¾Þ왩šùNØFª ¼áÝ£áMXjÙ{ᣰ" 0ý«8©Óí/!]Ö É4+šÓÅñì ¤¹Ôµ‡IÎ% lšo<´-cƒã‡úwÉXÁu0=àM®;0I4Õß…i8yŽÝ¯‚®b¡ÜøÕ½Æ*±ŽeÕ‰»§ÁЦÑ2q&!H‹ Cƒ¿-‰6ŠóòFƒßg_hÀl¸¦õb¹D¿Äð‚Xr6|Û—<È0Ê^óœ!ÂqYB •VFÈ4숗=žZz¶y±µ±º|€§ll9ÃOÈó$Ë13Kµ–©÷ɳé;¾Ï]’NÓÕÂä¢emG§7@”M pf´Ž·Wöõ‚ K¤iuœ¨2„º_'zó=y8­'QrO,ÑÃé¤áJ¦Á.}Ågµ,ÜLXLjZ)e¦~ÄÖoÑ:c»DnZÆ[ØS¶,1{o-‡f"_¹UÐNyT¤$mÐF…o×Bn,òü„â¹Q‚„jòf¸Y8Œ<¿0rO$é~!ãûKu…ˆ:§2ß.øƒ"Ö…Lzé¶·-3Ëü…ÌL^¯`{|â„8í:sÚƒcá³±t‰ÃÐrRœŠ ´ne¿ç+Î{•þC~Òl•ˆ¯×g`¡vbmpߪä°Òqts’ë·ª)öãÓ['ÖMCÑ®–ßcym¥Ž6ÌJžÛ´¢eSã™ÂÚÄj¨3"êèÞVsWHȉIõN Ÿÿþ’Ü ûWã0ókãèâs…)ÄBtØî?Ü»ë³0Ï1‡WTÀU1Ï#Ò4ÓÏ%Rf&ÅÊ&X·Šî)ðÈÅßc£—«¯éÍ¿‰ÈOU6)‡=Ζòsýñ‰:<“<]9q…jí€á5µƒÑ28=๬~‰À~R(´Ç7•È)ÇžhuŒã­f<,¤„£‡#O3¿DBÐCݘ äÂ…¦Q¦™$ð{úÚÐGpÁ7½Ôz©½Ô¦ÐK¬'Ëþ—žÇ?*¿36ËÙàs ËÀBÜ71‚Ó§¶šYªAE¨ËSì¦R]¡ŸPÞ‰ž1ƳSóÓCºeÉǹà'”­«ªòú5åæ9Õ«¦„ù—¡~4¯·úr*eE{{”lÊžã[S.ƒaBxPU ¡¨e®¾ïrÅ—4œÇd´{œsà¸80•ÖjËѼEÕ´2¯J• v6Ú/)½ ¥Ó¾¼/å¾Ïù¾pXT§gËÐýsÝ[Æük~®<™Á2{~ÞÃTLKñûDµbÓm…nB@—QI×ß¿ÃÍ›y}QP¥ŒÃ5ªœ`·+fKËêÊÁ±Õ€@Ia%¬Ø)Í;Nœ·aGväš_NGâ©<‘P“îhbìîD_ékõ‘ÀúÚõÍ·¢\3.'ÞÖæ)WuT9£\8Φ\•K\­\Å[ܤ=rµêuÏúÜ>>VÞÒJÂ/ßÌ«iý'ÚHOӴ¦Òþ¯Ð´¾<-k‹†6WËŠ§V¥ÐiW”жõ@Î×µ,t­v¡ß]×êU°o‘!ÓtJô˰‚P%‹fWTXS鑟Bµ/ë¶E•ërZ~@´x+WY%ŠIu.ºZSÖ·3«t‘/WèL)¿—õ‡Z ÕÂŒ©xóøÓQ•ÆÀ³­yðÉìºÞ¦RÊþת{ =ïÊßJÏ»"%ð3ëyyÍ~]ïd‚øeïdMCµBÉŠ[ ÿqÙh3+ÚÍÜ^ó…‡Ò¨>³º¶VÄúÏÂÐDkÕ.'ߌ±¹Ä×ãlD¹ æÓÿ<Ÿî8WmlkŒs•ÅO¦'.TûZÚkžÿ):âƒ'Ó+" JâÖ4%q+_IÜÊÓ—ÙûmŒ½ª’ÅF“‘cªÁÄÒêæ³q°«M.±:¹@ŸœDTÊQ24Êtn°4ʳà‹hj‚Ì+qŠ~X'ÑrõÏÑÆÛ*hjQР\YÃùêaªiaÞ+SUÓ¤bE?VMS×ZòÍtâ 蕸jzešjºJ+ù«+™¢Â³^œF§±N/û_FµØ‰£È6#é+²­7ÊÍÕ{æÒH jâ㣚 bÛ(§"¼”Ô–ÛÄ?sâU;ßÊáªÃk±ÏR¥çÕ—›w.µ8õìTÊÊQ‹W×”^|õâ9‡-VNתF<ÒöéJêØ`åjÅ«¦j­”0*Þíˆ\¦è­!Ï›Ä׎séû–jØ}_ÔP?oÅS—[-/*FiÔ%wd¸–É’þ’¯4Ï”ⱜ¦>Mþ{± ÿGBômŒWX¾ ãþ{©ÎWfR7O :_ÉU›Ó“u’cMïK…nNpÕêš?SÀO»vOkÌÅÊ^þÓÛþË7yøO?ôcã?=Ïꟶþkë±ø_ÕµÅúÿìïþS3Šÿ†è\ @ý· @ñìÎ Õt¡2êq…‚ ¹ëlMR {§nÁA!( ƒ±(ŒÒÌÙc¹‰ DÄâÒÓA*uîÒ^vA7åvý­]Øm.Ò·A½RBÞ â(E–{·ƒãƒsbh RXÀвGf*®S˜Õu½üÒžæÀ$² Q`"y˜D81!•í" A‹ÌÄùMW!Á”¯(w£¤Æ’½j8Tö)‹†žšœ¤ÚàTÙA¨Lª/= J=T•§yÊ®òKvÑ«4Ö“K²Ïõä­è+e£ò yŽ-ÃðÔc˜²´0âuæÅã Aí¿æEâÆaË&!0"òÞ𾕠PÍl–¿”À9’¤8d8À Ï‹b°o` ¶Û§µ`vp4|:88Æú¹C§ÃãHË_R¤›y!¶(´ éóä˜ÑF.€æh>S<߯ÍÓ£mߤP ¡å8P9˜p¥âc«NéyȾH¦dØwˆƒFF›;:ªÂdxKŠFO£µBåGâõðè·c–æ4ø$ãó€¢ ØšP_°Û†…¾âÛt«9d €â«(ô€‰èË—¹ã½'³UŽÕ` €Üùª‰ðl—ð X¨˜_DqüÝ% ï,$£bJˆÆ£RxÖqdʧ´–FøŠ»”C YD % EðiÍpåW¯»£5ƒµ´Ö¥Ø\zsÍim‡Ê¢òÀ-E_0iDo~«ÉŸ‰¡é%i¢Ø2‰Œ‡ÓìÄòGÔ±P|Ç5ߢ—é@Ýù”ä$¿øbH‰D™àöBJ(ÕMûœ ­Âþs‘CçTA¥t©þš²Ÿ<ßP3<ÎÇâH– ¤Sº5¾wá—1¬7©B3ˆPƒèöPj8uÈ‘N5H‰3,þ`¼öÌŽê|‘k—M&‹·ƒ7Û°ÝÔ–±äȸ?SXðk8ò„itk0Uaå×ÂÍÄ”E‹Á¶6Y¬ŠhYɼ«">!ÁWÓ*õ*öcèl6´¢MЛr­—­aÒVDñ Ø:ã½Øó@ái€Å€âÓÀlç€Çœ¤…§€äÿy¥×zÙôμ„&ñÅÑ|lø½/f•Q#ã65§UU­0Òs05Vžï9=…M÷—†ýq¶C[l"ó«|°ä¯ö»uÇuýûJÿQ§?Çã¯B.A•H¼aßAøàX»ßyÎÁ…Ž‚9^‚ìõÌ94@ÿÌðÖø ä:ÿÍàùçŸ".lö»ùÎ og?7D÷‰W?ÇÏïñ§„J»è” Þ:É N úõcN 9H*ÑSÂ:%ü\p¥0Cüßæš»ößãcÿ½^]Ø~“gaÿýC?¶ý÷ó¬þ©öß›µÍj`ÿ][_¬ÿoñðj÷í¿;–ýwûä·Žm¾UNZ;[ ;pçyf;pp™‹oh¾Uâšç4 ïpȾ±³Ob¨êÐ}I}…Þ-®ÅÖâXBnìà¢ÀÁAhCÏV|a(þÒ Å‘²g(kp{É…²O7h Ëy ,c\– q'U*ÀmÈÖªÔk´>§µúéâæJt:ÝÂùlÔm£p»˜)6ê/×fzË¡«iNÈ¡p |PT5Çtü|GQ¨ã§Ã,œkøbINVøùØ|Üò¼ö%4Ù8ƒÖé`ÃøAÑÐdÔŒùtâÇX7‡û6¿îw’ œX¬Ã¸ÁöÍ–ÜIx}ð;­ž-b'3õÌsà~©í ’Q;C«g¿¡þå‰hПà&Þ'%¹D®QSe*9Uüu’äT¥ú½IÊ»9/¦­Ú3ÐÖ|•UJx_x©Úg#iål9ìÎA.¤Ì›)“—*4ëS‘˜HƇÕå:.#K ÜOXóG‡›£i?§&J)éŠSY¡¥eý`«¨l±Ñ9 ¶‘lsQÇ©w;âM•sØGoÓñù^©:3ŽP•Úýl¯‘ï;ùª8·:µ£È6­«^)Ús(ï‘rÑsÒ^m9o X™e ؘÇ;÷5¼¶™­'9d¾ŒÝcŠEö#wŸŸk÷x¹Lµ˜ëµì-®õ¤[œmï‰ädŠäÚâÍô0—%¦ï…üç˜Ó—š§Ä£<Ù¾RâÊ“?Wf>~®<êøù9mŽ!q'îãRh\ÿ¡Íƒç¤ÑZ.•ÌZ±øŽL1$ŽOFAõÑOyŠ ¼·ì3ì 'XeHýà3ìÛYϰ³`W¦œt½óèl'Ø•ê,gØbCY[„!B‚Ìd¢Æ¢ñ³lëiβ/Såý˳ª¼«k9:oíAðMN¾-ïäûíÅ‚à| 6k+à€öéIKÿE‡ä§ÒYÇI Ruˆ òÐÃp¡*xFשïCß²)ŧ½Uf+f–­üïvºÉ&siaÁK"<ØÍ¡ó„n‹'ç±ü?&éåÿ½ÿµÍ…ý÷7yþ?ô£ý?žmõO[ÿ¸ì7ÿµÚbý‹‡W»ãÿqÚØúXJNêí=…ŽNvÐ*°]NÎ[ð﬜4áwóŒbÞžµJ¶Q &BæÎq«yZN. ãVëhƒ¨¯8¤ýÊ/cájb=\]o$¥´×5'­yÝS„ˆþ¡¦#ô*i•ÅUIãUh޵œÐ 1a=Ö­…KüV˜ºÔØ ·);’¶¡b!<8&.7&Bš}r@óê1ÇE0.ðÃŽF.¶æ§«lD~?NÑdÿkÒÿA“Ùí÷íÒÊþX†ø Ütûוá]:`û|xŸ”xœÿ]F½ ¦i¶Ð |rëèÓ Ì›Ä´ ”Þž“îçavEš¥ëþðKÙö ¸ŠXÞc *Œâ0d]ÁW‘×utuDÙM>¹NÈ7¦;Ð¥.cÏÚRBuÞ®¬o7(<¦zƒ³ã¸pic²ïöz÷£n–e6IÆ76Øøí}ï&ß ©š±¡ÒÇNš&«ÉA¿ÿ©N¥@M ò:zòNÝÉ;¤Ñø VJz7M’íÎ!Údk.K½XÃÝdµŒÖÎh:yü ÿ@6Fïß÷¿&5<{þòæÍ ^I´,“©^Iï“WõWï’ÒOõ~ÿ§%øÂ£œäK_À]aà}§¢sÊzŽ)!³Ÿ5—âœC°ÿ(j,®¹I57Q9 5ç­Óš+ 놱ÌFŠ~—‚`^âz3ë5qëk²…ielh?A“ïh¿)l<ã»~6© ¯¯Å¦’·sRXÏiåãºË¡Z” ȇzQ¢n8L+F;ôø³Ó ®7ìÑüii–Òìá¹näLÊ´BÔ˜æõpZ~€Gø±Y¬ÛæÛŽOÛyË-7úþ,þ½zš×¼®ßÃÊcVËÞÈïØ!ðIÕuÁBïvyrÚõnØcÒaì‰ÃÙ`ÔÆÂ‹ÙCÓY»@0¸X5£扲 ̓°Wö H¯V©ãÿïziCªQz Ólð ˜wkÂÂa±+'(oܬùhžå¾ G¯)£— ®²òÜCÆ=u[Ó¹”„üBÓŽ·Þ¿¬áBs«¿vÞjò?ï±ýøó ¶)öKciüŠ/Þ'¬–…·@(üŽ)fž¡:WCÅ2T>)!Ýêms2„¯‹»^tIÔÖv)%HÞëÃ>–¡âýèFRçé³×pS3t-שÃX,w?d@YJº%ž|¹ ê :º›rÇ8Ì“^¶@§«4Ãò:‹Ñ.VðéhH“?HÎZÇËþe—£Øú^*U;$InÓ¶je€~¯x$ðBú4"¬];eÞ‘lDx€ü 6@·Õ!²”8ñä P&Õ¨ÜÜÒ1FØNjËVýpû·Ò«Î+Fq¡aǤE;jv¦¸©î©s-!bÙ¸­qu««Tƒ K¼Å€ ­òŠ5æûD÷&8ûÆù×Ýfps‡kò¦³äJ(ÿuû㡸k{£ìn"Ž›x°y_+¯¯Ê)Š6ÓdZâ]ƒ*™Éê¨ÇB¤ i'¾¾ðGa¦évœZ¯ÉzíÐû &bXÑÊçØÎîò‡’oðLK‡]kS¼DF~Ú®X%wb×±Ô²0ŽàÔþÔwAŒ ¿¼– ÏÿÈn”þCÌ Wòbãe¿GjÈC6FRò#8íxÜa«y±½äš-Ay Jür“õœ(ë"Ù›?×oéÄ&á\š9Ãq™ö‡ƒOO<79Ô=k¡A$˃»! %žQ'ÜyòK€øïïx”ê[šn9LªަjÌ$‹wh¯Õ5'œ÷«KN81²EH!çUKgX©š³Ws I'½Õ²ökçeÉ‘Õâ r$.Q2Å*ãWKï=ft4èµV¬0=´b™Ûáå±ÚÇ.ï/ðq6P[ *zÝî `‡é&w£l8Ê`f`z˜´¤,Û.å¦û9EwT 8ÕY6(صE®ä¾(ò™#àÙÆ²y&¹ìLùd·¾+ðæe¢ÊJ¯¯¡lÇÀ˜fjq39^ º…ÒÊtÇÅEh‰—c¼÷¹]ZüS« 1Y¦N?ÐH ¬×%Œèýý ý¸:LH-6T{ 2‚öm:Éz«‘¬É êãJ2„…ÿŽäÿ8å×Ôl½ƒ#N¨IqŸMÆ;ƒà²R­4[ù‰·±ó@؃á r;„¹²žÕ¯2 àðL;v'IÎLpR9´a|zpÊ.høöý›3Úëö{÷0­Àš¸rÂú+æÕwÛLk 0 ‡Úh ñ|1àuÜëŽÓ±¡2òX6ü8_½â'ÒÇÿ„d<½”ÛîÈ®¡”1mÊ1ŠI6°ÿöùVíL{éh|ó xú,ú7ŒÂ›meÁõ4²Ä„JŒál4GÔf…pÌKw<^ÆC‰éëðÛ½¼½ÁÃâ¸?¼»›aˆÔǤ. 2ŠW™z˜xôMIt¢¦Î5Pt¸¬ ü8â'±”âb ÈñÄÑÙúð('Ön}›o$Ðòº{ߟ ¬ïêZºæ‹D!ã#»QðwË—ÿÆ£õ8¢Øû)ÌþîyÉe¥ |€[²|ß¿[FDš¿º•ÿºüË…XÌþ Òüd Hyï``2Þœ¯@*bƒm}™l€f«¤Wé™dqQm²»ómVdxœAòÓõýÕ'•ôIÛ Õò–i®R$§{]„€ëVÕÍ®C¬‚¢ÎòèFhÖfŠÜ^iz¥´EÜ_ÙUW®ÝÍÿîþ²Ÿõ`UÂ\!‘^%r³9VíQ%é€ÄH(Qú©?ÆÐpÔÔôtG|úÅ%U[04×Þ`(»³]¢’ÉEŠÚ…"Òê÷ b”n2Ó;½€¿~«·J5ÈŠÓºV¶0„Ö(?¯5øÀEÄîž±•qô/ŽŠ.‰d˲œŠÚÅ´ÕW±- ¤9„7jo·ÏOö ƒGG» I½3Åójc¯Ù†ß;ÍÎvK~ã-ÿµwà'ÝëæPó¯~áßÑî.þäûâæÑÙ)ü+‚æéaýCQ§‡•¶yA×µXÎ>üÍÛÇæÀ/(£ˆ­‚RÚgù3S?=j5ËÉVûè¼]݃n7ϱñ'ü¶Sßm¶ ªàvÂÏüä¢ÎZ\ê Ù‚"/è”{AÿZ¹ÓHWÛSn´wÎë%‹y”Tôú¾ÞhŸç«!å}~_.¦¬’´zfh*(qëãÓ†ðErÚ„Q*#,ü@ èü~@<+B•âe; #\¥b0aã •, TåG0ž”¦?À òrŸæ©¼ÜÍÂÜ68UäµãòŒ¥ß´þcýÆðj+Z7_¸æ·\ånæ®Æ[®^ç´œCãQ¹1 Qf³ZÏÝ^mÅ`µrøÆâL!jØœaÒ²(r>¾?o­Âëó³dI—±™_ƺ€¥Áw-v–!/ø°çÃ’–ç9-~3Smg„{Öl—ð®¬Ù‚ò¹â3q(ž¹º·þìZ“832*QçEFkòq ÝžR$ R˜ŒCÁyw†/Vwë00ŠWñfm}=3îÚ¡UøL¡°;Ùí]?»ÎzŒÄû.FïÖ À§ªút†Ÿ7"‹i©*öR#}¢ªŽu’loéãDoïoAÌ%ƒµ~:ø’5.DùæRé¶èúY‰`PQBGÝF2öÕp`Åâ½Z%wh0»'6mûͱyC’‚ÌµŽ—1šý^v8Z †X^%¯ÈàâMÒ?°½…ŒÀq>£²Ì–A Á°+nãÉ”î Ûï«Î¬´y |ꥭãÕ¯Œß8ª…ýÂãj2ŸØá´öÎiMÊ7!»õh.ñù-<ª~.Äy§Lõ‚J¹a¨Jý¹hª(R}qLWzƒÁbë¾65Ï J^'™0¡Øl:3ÇbG/Öš‹Bøv( ׸¼\sœâêÀ ìûI"u-×V˜F‘ÑQ9‘V³)Ǧ†a%uÏäßç”;ªâIZ]N“Ûå¼Ö£C{‚’Ÿ¹ù±‰ƒQó<€"]jûCÏ,óøSÜT*TÂ`ŸËÂB÷L­<{§ËsŒhä* hš v+c‰æØ ¨’#ú¶Åak§Ý—-VOdé¼ ›ˆ®[©ì,åžì½³ÈBÛkE¾j% ° paÆòÂãrKKŠ<‚ØuÔ¢ x䯫 “VÂÓN‰»µ"‹l©Bß©OèrZ’ uäÊ27X|¸»‘š%¾êÖnJµ0•–K x‰Õ7aÜØn¯¾©å¾Yç7gá›Ü7›¹¥½ òˆ¹¹„<¬/jy/¸am—yË»‚wܸfË]¶ò’Û×<³GýDé` µ*å 05ú-¢-µˆâòE®–'µ©lÏRÙJQå”þ ޝˆvÿ0‰Ëë"§ožÅÈï—¦Õïå™õvÝ{Û¦¼f6ݬvÎà¥]«ÏÍÚ”×ÌkÑN\TŽÛz¿ N냬Eýv[ïwÜiý”¸‚$·^´øTˈÐ$j¶Õ§3ë ‰ŸörüÑåµá|éÈ‚‰'+úùú~PÌ'ѧgWxHbœ_‰Á+ô©!Ÿ"ä«R·Ô v³äÒï"-ki2ÜpíFˆšÑ$­ÒEž\‰.&ÈœÚ`Lg¶¾?Ÿ¦ÍHd-œ·B:>?›¶‚\yWåó¤`‡x܃ÅnÒ˜mö‰®ešr„N^[lÑÇ–rJ˼¿.´4}ÕëÝßÒ½õس÷²¯¡Wûé*j’uƳ¹2žÅØ)룧“ 2ŸÎäxÊŸÁgKäCÛ­ ‹:ÚÅ ¬Àú’®ðk|ën[Üu Øw`8¦¨PÖ€J܃° ´à£a’šö)Ú*CSš°ž u–V/U”Pä/+'ü‹2|6{ÁgTðÙl—æ«‘¢ùTÏ5\!Ö”â?±@¤p´?TG{U˜ŸFñ9áþ–ó>ˆ«‚§ì±ñ5“É?-í?‘3V3fú0ßa*1ç©hïÔ¹*ú2ç|•ÐÚ`ޝoܘÊÃ@¯|Úr˜·Ÿf®ÃV2çy+ Ž\êUdÀìæPß³W¬%œ48Á³5Ï!, Ïa[ú<Õ41ÿ–„ç0'_þA,1È;rªèÝFh1¨­W#pSôçü"øî:çX[nÊ7Íâ2ä »ˆ¤V›Š| …‰GoñÛCqÒ¥ð¤Cv´Vì‚â  a+ Ýb"j˜½³Ê^k.5LR¤‰I<¨é#ý߆ ôÉ<”àÎÍÝWGlo¢ÓÁ{ßQNò3”4@E.n[0Ó÷eQ}åûÇ;#†˜JŠÊÙWѦhY«RWPM©þ†!iËiqÙÍ»Ûï~"SYÕ´ô0óÚG¾õWdhr¹³¾‹<=9ÓW‘Nq(õW< .‰ï3*y$u”Wï``d¿a4 û ˜É sw7—&šf¸(¥Ž4HŠÞc¨ö2%Iª&µ|sÍ$°ï.ÞLƒ”ÈÜ´Oźço×BËÀWu”àäwq¶¤®!ÆÎ øÚJµ¼ººZF[']}ÖÜè0IœíŸ„Ãq•{Ý쟓Q7N¸9÷%f€¼›>¶Ó Gø•{¯{­xŠGª‹ò3t&ßóSKÓÓ„g5 ·b‘2É(L¡RL®©­zrÉßt†ÿˆHãÚvAÕ…*2«–üÆ{c"äÔˉƒßŒžÂ"î&°¤mô- mrÏ_£?‚Ür›rT'Éì³ìsë+r@Ã\6°e«Tr°ºDßm]ë:ÃtÐRÝfCm! *þ4™¬¯ÖÙ¿][oX67Ù§›Ù 9ÃUúo§Œñ0ùúGý‘‘Í*gr’×ÊŸœÄÉï@»\~MÆh¦ñ5¹ÎØ_Ý.M““¿4^ZõÆ·„l¢ô…<$Åׂ/ ä¯X-+Д6™àÖó¦{w—V}©ËŸóøZ #I$×3ÿ Ý®¯±µ§ìžTZŒ¢/\†d—ñK§°j-6 ¢Åœ/X,;Ô &ê ±´É_ûV›÷c+ܘÜuœØëì—5çEt•JÅjù_Ðò·P9 ²F6k=¿þÎëH0s8õp†JHŠg¸Z}î)Þ{ S\­>jŠk™âÃ`Ôq¼×§l¾áHçïƒße7«®?ÕnÖòw³¨¹fb›òyRuÑ-ðg2}ÿj DÁ«!n5è †êOßw¢nØöìÃÑÄŽ‡ÖcÊm@¹˜:ôJÍÁr…D6iµ,ù" ®"BÒÙ´H'zš€Üäp›~,NÔ§ðn¥Pd6gOeÕ¾yaµ¡ˆ¦¦)DiÀEë¡)5i’ŽÐð¿$ìÌSÖCñIÈ?iL×7guön—è"˜Oš¶Õ('¢_†%`ZY?¹i•î#;Í2ØÑ³=þóUï;â?WßVß¼­Õ`ç[«nll¬-ð_¿É³Àþ¡ ÿù™Vÿ´õ¿¾^«Výõ_«-ðß¿ÉëÝÃÞÙ.Áxü‘¬Éê/ùˆ!#>*ÄæÖlÀÍ-QÝÇœ¯F|Ãq®½lç=©?§t=Pâ~0¸2 ²šB·LBT¦aW#)ߎ¸*ΗüPd•ˆ¡Ä­šygÛ #û(²0ÊådHkä™//É ˆ¡w±”(t²ÂôÒ0$ÉU†DA3×þ÷q”ÓÉÍA*NõñÇ*=¹¾G­Ý(¹dK.(ÖT¦@¨ºƈ»¤þÎ :#u:ÿ:=ÙÁÌ·DþÚ¿"mÀÑj”^Ý,cÏHɈÿeucü(ìå*»J dŒˆ_“Û¬•tÇãûÛ;öxí^"–‰ ¦€¹-dŒ¤9aà(Ä4á ºÉ§{¼*¸Ê> 徺z=¾¿œŒº½ 9`Q€/„i¼Ì]l‡]¶À*ƒºÇÈ_ªŒ¤ŸýÁÎÛH©*‡Çeþó_æÏíÊ/kT~ªÔhÆšˆ„„JI˜Í^š}î^¢^´›õ±E7éŸÝ«´—Áù³©?UÛ¨‘æ1¬Ã—”±€è=Æ@Ðx“º³N7WéêQHØEPÌ´–“Y ƒÛ¯Þ™«c|Ðÿƒ@ö²¬$ЀsnÃŒp•`j5ÕÇ<^ì:o0Ábýh®«&„” ã çy…+"5MÑË"–?g¥ÌˆâkpİEOñ}]ÈÍ×sC1òh9ñ¦a®ú¥„¨ƒ¾F'º‚xN퀇åév–õ£{Ñ0ò*OFï©‚àþ8WSq;Êo*^œ´äžu&’µIU0;‰\Éï&δg˜ªAÐ"·1 ¶ ±h»ýpõÛKÆß­\lÞ¨tÍ ÎÜŠœÆÌ°bìôÍëÄÔÙ6#OAlŒc™r˜ÄY–p?íaK™È"ù¸Ê%ýQ[¼æ8Cˆ‚$P]6BôDjšdC¤*“‚^ §Q# UË$«-ÅñXš ɪº$NÞ2°µã\P!j|Lâœ,ŽÇE rÆÃš2@ÄÙªŒU¦»vø;R‹YVFSÝ¢"¢®”ü”ÈöcàjËíåþ'rz‚/–—1ònAVF§êR½ZŸF¾5õb@Þ”@¸Hµåå?Ú¹Ýl>U77¨›Ü3ÿ[PšP±+fçÃDÚ>¶]Œö]íE4Æ­ˆÇ¢µÍ²ÝÄ­rÑ f”—Em™öÿ††ˆs¿'x*®kÐe”¿Ò)åÖôêWæ¦|ö jÓîb°CËRe²ôdá¸(XP#z‰Õ7ƒ©Òž+'Á°ÁÁÙ`xñ¨Ij,²pG @r|χO†P8pœéëé`ºÂ3š³2f!×hÚlCÚó0¶Ñœ—o4Ÿ€qÄË(\Ro`1½¡%µ©8ÇÒ<‹øU®se/gùRìBp)ëõ[,ÙæÜkÖ.A©nf]³MkÁ9åhžaÑ6½UëôWptÕ6§-Û‡¢ ;Óÿp8a§Æ&\û>:·À9ÞøåÃ\×Ù€Çí~„'ÔŽÏ­Qµû_ñkl),-«Kk¡èÌëR{¥º¤!n‡W%ÒPá·2„»÷ FÂf»ÃÇfç˜l–·Þp8 t”]Þ³CÇÆÙO¯¯““ûÉ$Å‚(Á**Œ‰ä*ö¤Xƒ–†¯Cb‡Ã+„e§éßE ÌaÇÞS ‰ô~ä—¨U‰/ öPÒ=ð𑃭ßÏ'ÿÊW/î6ÛÍÎo°GÁÿ¢Hn6 ÔU˜{mÒg[Ÿ·è=†’ë¶:M(¡sZ?9Å_G' úxrzr‘?dã†/Ük£÷ì1ô¾ÙþW¤ÓßHòÚeÁ½SHz¬çe+èÅÌÀz{ÃC*pûø_eÖx­Ño‚ÄßSþ}Rd›zÝßOÊôûd·Ìñ§Ÿ¯ïh§, °ó£öqšS²t!W@`-„FØO&žH¾(É‘¬ñûjEÜ1EÚâo–³¯“E€âR¾NɟοS¹ã *wd ÊýS¹m8ºÈkƒqgÛ0‘ %)Æ® š6ë.ÀÆ£ûF `Œ*Ÿ"u;Øæ˜ ”$‹^7 ¬.=NÌ}ÓeBÈN#Þ²Q*ªbS³²Äàˆý"8b;Û GlMÿïøEó˜54,wÖnTb=Ì]]«~kÏHcUÚ7‰p(dƒB@ àüÊŠÜ™p ^ÂkÛ¿ÉÉ„ƒS9äÅÉŒøNs©ø3æ;ýˆ¬fóLÉô€:Z .•A5Žîq²8) d¢nCÁkƒQ)äÖ+g·6ß#ÛûlCÚPua:ï¨ßåƒÙ%L·”׿jûètU1Õ|ÈÊÏRv‹%6Pdu-§§ޤ5<8’»”¸•~™EðvSa ¡½$!=[´ÆÝu– {–ò$#*ÞL-nòqízØï¿àACñd|ÛôÐÜ"ÅðÉág­ •Bti©B혛Ým¹ÙUgPëT4”ø9R‚ãXÁW’ ÇIiÖ*.™%¾ö5\Üœ-K5\5´¾Û¨cl/-i½¢  $‰;x‡nX_ À˜MÒÌTÇb9a`4ÚëîXÇSÄÄC<<©³‹9ö!¤¨xø×…犣+ TªÜc‰dFHó«j2f˜) Ãø´·Œ0¦Žr’7#d#Ü÷ Ÿ´*?ñÕDešCé¿5W~BwùlsìóJ啌™Š¿üØU{3ù·):/*pTß’”xw„î3Pãaÿ3wãn4„y+êšL~=Zõ–i°×ø\$WO3Ãñ\ }$fxñ•| â6O†-íSÖ¡#¹¡ÒÄÒFÁÔ­úl}ÊîÈÇ4Ù—Úö†ˆ&iÀ˜sëŒî†Ê Ž.À“wïû}f…ÿ­4a»JwÁn—ù$™¼—3”øJÏ‹/ªqbl'Ã;8ÌT“¤U:V ¶q7ÎúÃÁ+×½ÀÉ{…t> þòK ¨2Uc–ÚÒ@JTØŽÈ´ð´Ò‰â‘Dˆ¸‡ãlb)‡)ЇsŒ::§¼oaE(œB¤´%l"ÅQ*ßa›34Àohœ þÄ€kBCˆ}L´:‡xI?Õú¹L'_ðŽ™ w©š°‰³ ›$!FçUz—°P¿Yݾ˵j…'8úœGdÒ¨PG#ôÉb™a7ü—FD‘Í?–'±\+ ‰ÌK«qjíi"O(jF®…îºüwìar¯Í‚ß…Ð(uî/—(†òVGvÕ¾28܋ƙe~LJY§ðCÓЊBLè?,’÷Õ Ìï0÷¶… «‚!ö·e·¼ñgG‡©Ã­dË=ù;œtÍ+·áöjOŸ<•ÆŒXå!aGØE!v$I°ýÎS^ATíFWEé£ ɬÇ7_Ò"çÚ$×'[gÐëÝÉ:Ðð;k%­mLWqÏ?–¤e“W tÃÒ ‹à”²ñ.)CÞœé+>™d|¾â´ÉëDð9V¨Ž­0nVòÛvx´S»WÉOÜψç|ˆxú‰r“D–TrÙ%¹™IITÑëC—…[[ŒÀrè6èC¢Ž¿Ÿ€8>x5Iîï®(4¢ðø¤ƒ7Œk …ÛH9²¨!ä}ØÚAšù’²lh[kû#Ó²H)Ω‰r·pðÈЃ‡šC¾~ŒŒxâI¼dœ”¿2Dò2à‰"ñÃe%íÄÌøöñ¿J Eä•Ég^gÍV¥YUd<]!êßK|0¢\©0Ã)õ˜QaAwJþ°kgÇÙ5PÉ|38m?–ÌUÏÝòæ1‡Y;gÄšÊ)4ÊÌçã†T…a|"9ÌÏÅ"_¹+iŠhÊ%!{ÁWn#¤}´å Ù¨ª0¤“ì+Z}EÍ'-Ž„r…ÂîÒ0²L%Iî7+æoÑ*:pžasÓ¹nY5ÂîøK÷nl0`•¹¦ßFžl" ºÂt•òÍœÝCš‘ï1~ nÕQgðñÚ75GzG;lOCX8ÈqÙvšñÚæÇ,£õÙ¡ H(ͶAµ5¯~~‰Žãï…S]ÔI™Åº‰¼©ª>Чh¦wóB?äjÀ7ƒÀy×Ewù>Ú;Û íïÿ8þߟF/ÆÿûMmáÿùMž…ÿ÷ýXþßÏ´ú§­ÿ꛵Í`ý×6«‹õÿ-^ížÿ÷âö0îª Õ×Oç-ø‡á1TðY<ÆéQ‹Ž涪Ù9;>žÕyÜsWBÆáq«¹Ýå×ÝS98YÓµÙý€ýb¯ÔË›.Õ…Sr}u¯ñÚ3ÁÒïºÙè š1_e×äS7áê˾ÿÒñÝÎÆXž•ÌòŠÓå·HíÏ;H:º¿…¦‘_Œ ]yãç~:Ié„¶•ˆ}ŽzÀ¯”5»þ*•Kú®¯Du~öoÌC†Ø?4~è!„së]óLí‹ï—äX˜™£5Ž êNº—Yͺ¿ŒÄÊ‘?YÞ⪇`®ÃÅ?ˆ¤É!œ¿&C ±pwÃT È/b ÁQN»lgÊkÆšâmg8@½¬0¤#º?½L0»â7dïNþ’*9Zz(—gô4y§ºŠé¥¡âã`;ú“B˜íqÈß¡ÑhTÞnnhà€ $­õ =åÙå5ñ ®ú¤MÁ¹¸¦øLøÔŒn¯eÛâe˜ðÜžûíy|÷–®O¾\ÓÀqF_FÙd’æž_ÐJòÑœÕEßqw”½ˆV˜ÊRÅu„‘Ì oc¶Þö»–‰F—¶!çr‰:ÀÊ:‰vH´N Ìæt' :@ç-— pdèû³ø÷ê1@ëÊ x Hb÷´\"ÙéÁÑDïBPPWÑ¢ºCa\­mÛö?:Ùó´ÜÜÑÊEÅÊV±èš¯”÷™×5‹Ö›g¹¯Â ’¼Þ3K!Ä’tÓ.@ûKã(”ê› PSw•WѨÚ?ÏÈ©Ìîÿ¤õ7Ïpœ«á 3wFÏ´&É…˜:v/ÇÃ>ñTrœ û)zw¥J\p|+M¿^;ÂŒÕÝ(ýœ ï j×™âÇjmx"3š '@7ñmÌÛ’d éFÊwQµ¤L6+í²‚oЯšò ˜h³µ¢Ü:/üÎÄ6Nµ“å¡Yï‚ Á—¿1‘7s{käãŒí!‘œ}Ë—’%o( MV˜Ø=´G0.쇸°Kù§WJõCYŸ¥ëÀø;-Øä'“±–Ÿñ|5̈¶F „Á.1<™¿«`iÿ“T×Ê(ÅßeD gߤJ ¦SpJ¸í® ?Ü:dY¤MÍ>§ýˆ Ÿ C£9Yü?ÐÁ˜DËhn&õþm÷*h8 $„ñ K»£ÿ%ùµµÕn½n7N:Ûvší›Q6žÙža_ïG’EÚùxxŒ)§'ÿ:©oGn fÄC`ui4€àap30àÇn½Õi¬ª;+m~xøð 5õ¸jms§Æ•»wkùŨ[ž0sâ˜çì,Ìs~€Ç±ÿÉ/ÇþgÿáÛ< ûŸú±ìžiõO[ÿµÍ7o7ûŸ7‹õÿ-‘F]û Ž®%<8BJôËóCŸ*n4wëÊä$ ñ£ëx8|‚ Å‹MipÈÕß4iüaÊ\=Öøæ¡±!šmcdh¦ØÏ°í€\[šz69É|5=G‹ÈpйIœÈ~̲t¹íþI0æ6G§¢Ã/ê"°Û»qù|b4u}*3<–;Ãú‡æi')õîGh·ÓÿJ—©ÐîM¥2.²Qx® ò9.ó܇'§Ñ›î™è±ÂÒ`Ž«íØ=|9z·í_ó¨¿'”Ê*ªø5ŸsG7ï(WtPó…s­åÞ3:*6ü sž>ÍŽŒây]%**0¤ÿüúŽ)š´í uL!'‰UŠO•ŒÞ/›ø’tÅ%­ç˜•ˆãFôJZ+» ŽUÉ!þø†ŒÂR¢"zëîéŸw|'‡Ú›UµÙ0g &u¦‘7p©êFÝ¿¤‹֩dz­¹øU±élé}•X~+ÞöÁ£¡×س<0 DÓ ¢÷á]9y_ÃÒ¦1NÈ”QNÒI/:ìÒL»{ìó‡šöš5Ò“1÷.Ýñž&—°ü1NîïØÃOu¡G±Åb Q>; BݾV÷…UoˆÔFIÃÖxùù¬t+UwŒÅ¼I h= ±sÇlµ™Fx®{õÃ`cwyãÕ ,’Eå+Qï“-^¾1’¬h¹8”;o» ¼JECW©HÌQ×ÉÀP¸'³ù¤l…ˆï!û£sW@{qšt¯­ÔlÐÏuý;5:DîŒlÒeGüjhÚJ¡\(Ó%‘Ëãš¼ƒ¤ HãOFÖNÂ㞀êlÿfCÅã=Ì®»‰P&{Êh&ìÜÁ¤›ldê(5Äã–ðâÀÖÍ‹Ñ=¢ûI®/L!™‚u‡HAvó w°^BÚ%¢œeˆòÆIIš`:GA/b·@ gY!ÇAÏ6ý¥R(ߥ#4¼Õ6ʧ'õ$Zp-_¨Š(ë …/žuÍói0ZL²1ÊÝeKpq"<ËmÅÀ¼pÎ>Ú9\§ŸÊÿz°÷ŠƒìŸ õ©ZpÄÚ$]EªTcqädÉÔQæÉ,j¤$Æižlü_TÈ>´’u›þnŸnÿv?ÏÛ§@îC?ª”žæŸÍqƒ~çWËpÜcDÃ8ÞFT Ê÷aÿæ,é ¦yÞ4pžßˆNO,z´¬: LþPtê3„ß9:µÐÌa 4ÒsÊ,å}ðşݲ€¾}$8è{§»ò»C¿O‡½ÓÙ®ÍÒÓâs·¿´ùƒ éá?̰ ‰q (qu-Œx?œwÿ}Èé ÊšPÐB(•wÃÏEõŽçýÅÊkÞî SÔœîJ_”Mp)ôÇJ5R“[ßÿ£®¬Ï„g×ÛøÝ«—Ž/t«.tƒBš,jáæœ-¬’ë1TÉG"'7ÛÓ‘“ކ,T‘¡3çb$?y/(,F›ìÂz5KÑþ<¥= mòʺ•o¢»U·O˜/©(GÝÁÕP‹` p¢¼„qg‰a™òý…×ö†µD˜ùóÚ¦õ¹á¬í f:‘{\·]‹ð6KïôfE»òÆ«ÞÔü7êͺÿfS½Ù 7ª]y±Lå¼OÊ$«¥ûU à¹Ý›5ÚÂyTÔJ;´†žÝ %ô^„c!9g±NY‰äC¥ö\ö](9¢!(?{pËnP¯¢J‰€EU>*DÈ5YÚ^{-±ü ¶¥«ê…íåÒb‡©0‹xc±’À°0‰VMÊ(5^£Ùÿ1‚´‘Î ¢s2¼»#Dpõµ µK"’²Ê*ÝR0€ ¥tËb}NÚ”ˆ¥³Ó±¢3·+êBoÑ2á±)ó@¹€Hŵ4Jš\ÇJ\dЩL;6sÐzIND†¢û2×éb£Pˆ,„_I¢­¦Û¡çÖpx§õSŽ“b„Žßä´fŸWÍš3rÕMÞN÷«ÓöSÝ"ÊŒnR´Lˆ'A.{3u•¶Ñ/þì¶·Og«óGvGú‰DðPv¬<&dòIvä k°j¢â›1æˆ+‘½Ãéd-ÚI·ÁM×¥è?´¢þäÆ*ýaÒëÇi£wÓ­Y¿ËÖ…N!¤Ç£5l —úÖËï%Jgy}ÃcZ¦Uü!¿ÅHGÔeÌà'€³ ¼…¬:Ðxo ¬ºqLa\RDâáé…Ü0ïœ*>ŒNÁtLuÇ›tôµ;渉ˎ«wÞvüaS°o'Ýœ¸Ïšók@ >9nï¾:^HÉõŸòy™š0ɨ7ºîb„ÉÆ›‚çš’®_˜)¡ŠYmÙ`ŒL\,,¡Â½±2j+µG—±nÚá ï-­3鳄­pä.û<¤YIJÉ1²CHèƒì1¢%:cpî+ÅæIÆÜAoó„a§èØn}½)¸¤Ó,(<M~ÎíU«É@´¼(Èë·ÅäDøø3óæ´ƒ+^ô8ÁZS0’þaß ÁM»äØ‘}ºAÜYøã(ˆÆÿøÒ§ÕÎ6Î ¾ìrË´Ë¢ú$28ÄrœIR[ý÷:’…ÔÑ®Q?üM.ÒÆÄ³zÛŠÏý:†S:äûHÇ õA‡*Õ(§ |õÍOxa/‰‚ãôxâÈ|)^ߪ8‹{£îm¥Ó»¹Í®&î…gà`È{Ú(¤äîH5Q¤ùËZ‡håÃ~÷Bµ?Šï#JªÝJ 7(¼ìçl„ ýÌâ£('÷sÐ4·Oñ®º‚º¬BR$3š-€Ì£8$“ªµL¤Š´ŠLŠ4ô䮟gD˜ôøM Ò«¥?ä++ò•¿=_åÉ”ÿRÈÀPKG:qˆÙ´u¨pS±­MQïÙ¤)7Ç627#4rm&¦s9)ž:L$ùº~›#©È1Vί°hÒį䮙·k^«„ËW}.¢gØ¥äK—½y­K#ÇB¾[ßb97Í¢Ä@?`ºÇÊðÒŒG vš"Rµý ‡€µ—ìÓƒËÚíL½‡X2æDé‰c$#-¨¶€7.¼ŒyÍ:éyòÁ”ŒÓ!aœëHÀÝÌ üzÌ—à ¥h4ð0¸®ÕM›„Q`i:D«®O-Ð诸‰‘R·ª+MÜ<¹h§ñŒÈ[ݪñöë®Ú®o²k2:èDzÌðšžTA ~ãdwŒíÆá¦ƒG¦¥àš¨@£ž™kë>‘SŽãÿqû=ñ_7ªkÕ7Õû,쿿ͳðÿø¡Ëÿã™Vÿ´õ¿ùæÍFÕ_ÿµ7›‹õÿ-Ùý\ÿ§wWý¸ý´«òÎÇ„ÝL¦>/Ù Û¿‡NÕÖªkÓúQнYœWfBšUnÙÖ#Ú2_3!ѱÌG›ü(@´‡ Ú¿!íE”$p46Œ6VŽ’/qJ÷ºƒ…AË/a88"Œªý¯Æ&ZðjÒb‡‰¥žša Æ‹Ó5HðL Ñ íú ¢"àï3¶4j%;Iëÿ;uïàÔŸ³èõïÇʼòŠÏ¢ÊÁ’Ø ŽÙ'''ÐÍ}1•œ /¡Ì’ÞUÕpKH‡*1Ðìé¤w£í²­øÈ艥Æ{W¹cÊ嫼’v üÃS…)Rê.éûŒ17Î>Ýváȉ·Üï2^ÂTZ‹ØðŽuöã`nA~õV%ôú&ût£¯âŽê~Ôí}µm’ óê6í3˜/ètFÖè¬"“ñÕíÃêXEõ(¬3áØL)ÅeV®k-5… \º0¤W=dÏWˆ*ã-ÉÕ0e…Ñ Ÿ¹¡ãjBÀalËÒWƒSº4³ã7šÜ@„DcƒÚœ†HäÒQw‚ÎTãäú¾ocr©’áyé—o;€½:£àó»D5†GÀqÃ*£ wz7NzK4¹W°ßhú–…]teÙ €w Ò/V[X½ÁéÆPÊ)SŒqÎà.tFn¡{Ý¢âBzϕҕÕK·Â!³Ù1LÔÿ†lÇ)1Ê5RáàÚªEàkÈÃNC¾¡°±¸Þ-îuj²7äÐ…Ð!xRö¨/ÔQz Dcñr“tpšÌw$ª8žÎªBä¡qÑ/CÙ Ý‘9lX“wÉO‡=1õÖ˜(˜í`÷9,È¢`“‡M¬ü—Õʈ×ûŸÒËQ—¡ AVª#ÖcOym¬ÿü¶„ÏïîV“j¥ös9©ßBhÆÚÚÚÆª×Ãx÷LߎL“ÎÚTLHmÉ^÷Ú™tšõÃdxO–½Pð!ó’:|ü:Î:Ûmïù°¿šÔ6…ÇS#è"ðq‘ã/†£?<1Ô«›y}€ÖÖiE•ÿœì]g$÷{2È23ÖH·QfU0½Ÿ¤qÂÝF }g÷¾“}&@8@ôn¸“ãÆˆhíájr¶½õz»³Sùå-ü_•2ζ­#Ä!HCÕ_~y›'U]µ€âÇÅHñ;3>)žaâYtËÈ­ãÉÌ;Òëë ‡aHúÃ!0ÁîçavÅ ˜U²âÜJÀ[W8T+}ç¾€s_À¹ÛÅ,àÜ' 8÷ç¾@O_ §/ÐÓŸ=½×8š09Xiöl—ظ—„8CÆ“íÛ‚Ÿ‹gPD‘øò1Ô±™34¦¢å&íûQÈK¨9X±Ûœx†s/Ã$Ò-ž‰–[XÓ+̰-'½™»‡c{°Ç¦Éc°Œèßád°&PŽ`U®Ò@ÿâauhŒd‚{äÜ|¼äÀJÆ)J^àñ¿d<~AÖõ%h¹hò–'FóÐÕÓ“³ÆjY kjb#fàó$4B©×Õ“^źÞ1©GŠ4¼ÎšP06Ÿ–M+`?ë<­f$uÏ資#¤Ò—[Ñ5&¥nr™Á˜ŒY¾ò¯ä啵Uk}¬¨²Ò;«W¸QÏÄ'ókrÝ%=¥éßkâ@Ù*NoÎÿ{ŸÉÂ'6I]fî¸Q‘ã¸4¹ 6 ø‹ñµ¦Ÿô.ÿ{ïA éÓL7aSä©ÎºW#PŽDá˜wÄm5*ɪ‹(‹(‹(‹(‹(‹(ß%JEνBiZœŠà†ˆ ÐNkòÕµ“*Û†R:6Å~v ¸¥°óå Cd¸ùOá>Æ«®1¬ºG‡Ì˜¹m‘¡üàT»Gg'åä°Ù>Ù;– Ó©`ªµB#,nLMÈ €¤ë[5šTÄ ­Þj5š{„ýD¿[¿Ÿ5Nà w^çï/êíS8­}¤¯¥˜˜µâF4öšˆ£ApT»Í“Î)úDZ“ÜΖü¾(vîܹ80@VÍv瘲‘‰eÊkS[wŠá­ŒnÕ89¡ß{Çüë¤C¿/Èròôð¸¨x]c,ºÚ'#¼C¬¿Å¿ÚŒý_µ)áÑîn§m¿º@gN¡¸­æ^ž¶;‚–uÜ<§bN`‹<6Ò ~—_7úôazøUC̨]*][€’;‡-ª¢STÂéo'ÎoåÇ)9%l‡ t…‰Â+ÂÉŠP_«Ë'(4ºU«ÞîœJºhSö“´nf4, ƒ……¿Îù÷ÉÉvYírü{¿´ œ”õþ¿;]Æ0Zðë¢cüd YD<ßÏšEŒmÂpì•}4ê,”'s“Bl§ñ*D%a&&±Ja¾&i¾²Ú™iA¢üÇÇ/8<£:ÁŽJJ°–ïtÙM6Xªêõ?d Ä$xc>l  “o–Û"Éë¯Ö—õÝKs ½#‰ÌXȦ)D„ 4žQd+v~)o±<ô‹£yòýt‰…á¾¢¼õmS}½¶l£@Iˆ®Eû aZRz‘ôÏö‘zkÑzMk€E6wUਠ©àâÌý ›Œ»Ô<£OÖ ¡É(èÞ\€49t/;ÄxÚÖéå3Я)àÔ¾L-1{ü·ºXAZn“îÅäöˆDËüt” GF½©%ëU3v46ç–# Îù™5}Œ?¶3ë°3CΜóèÚxè›-û›3ºMt&2j[¶Ú>:]UtJàd.Ki¿ƒÁô¤ X`^?O-ðŒPý`¥È³iEþâ)„Ò(=“Tƒ¼+*¯ spÈÆÜ‚K¢iFŸ[T0~Âù±¬æ¼…ýb(x;µl»N÷:eíàý­ÙØŠî¤$’Ò0ùóÈ;«5%U‚”ÔOXRˆv¾`ëC ià ¤¤¥²*гñO®xIÐd|šaA½=؉¦ÏXçM‡g“Ž,àÂËÕhÍ`¾Ö3ná²}»Kt² ƒúŠ|º”7ûv‰Ì\tsÚ#G urðᣠt¹r´M¼àÄN·(G9!E„$q1Z”…™À\Ù{‘†TÃò&8àGžF.;ÒK¨pásÝÖªû_u‰µð6œv\3ùàÓ¡ªiÑSˆ«yxbájZ)㨗ˆ©å4ºèò7´üD{:ÒûÊý~M¶Óìö6½BË Ä!“ü‡Þ¾(pvv„÷…xd„óÒŠlzÁ ºÈ‹ð\¨%ºSrTF¢fÚ8©Ùåöê«8@LXkQÅIàÛùŸõ¢&”,J‹6!º4Ñ·½Õ¥ ò¦æ½ñÛ§ ÓNš³ZtΨÝq‰=1L«QC„Å*ùÚáÏh’R䳜ÙFF×q^P +':m§²ÈŒ0 ":\´Ä|™tRC㢵Ds¹-¦CÙéli),É›ËC¡×ÄR´{W¹ü!QÂI-$ïÙG.QdÅ…U:±×5õz»ã«—Ù°ªÂÅp<á ×8ÆÈ7¶;Ê’‰Rx7w“R§ŒEñ¶I²íÎÔd‰¡ôåÃJdD’a¢Z$QÀ3WE,Qú2¿b¿ÖX›§ô*RŸ·›F6×™VBuÆ•Pu%œ§yÈJᓾ¶;E ¡Ó^,„d!Ä6Fu9¤ÀÅÈ@S|A¾WÛ&)ï­~³r[µÜ¶ ®H×W#þ·d·áÙ@pîMÿÛ º~#_ë›î"ìЊÀvvÌ¶Š®5¬f)±CÀbw„ÞÀè`DjYò°&ÛAŠºÝ‘ö<%'M'¡X£©‹fTÛð¥ÑÜþJ6¬æú¼7¼Õ¦ttÚ‘˜WwF„>ˆ]‰ÖSì:ëÂÃÐcãä&½Ç{½¬÷kò%•]¤¹¿Ò®u¤`CËÕRÊ¡3éäf”ŽÑDÒ:Iãe…# 2dë÷A¨?|¥±8ŒÂx¦C^J7q,”ž ¬Ü hݯj:ác6¦õOªÈÇËË/Ýüö!ð^LŠœOÛÑP‚?fnkv<À3'ÚMHº†—NF -SwKÊщ&¤rfyIYºä~à^ñ3Щփv{½ámïà”c¥b•åEËoT"ºË‹3ÿÍG¼c–í Áˆù.1J¡®'q=r¡gƒæ+û×dx}] <¤ŠL…ŨåJ×h¸R&nH?òôZ✨C=zX~bK7É Izʬ¥e•b`/•YYX¶å‹ÝäU¨án8ÎìÆÀx°‘CĺCÃîb‡iÙh:vxÖêc+@Ÿ°èNIŒKm{Ë/hI3×GªLd0Æ LMww£a·w³ê/ºY³Â37½‹«)9U:umpØÃÙê^ï'~§%ÃþiVG yf 7ýÝI'Þ<ëÒ#RšV¯ø@fã½¥ês7p ‚)tׂ)A‚SëÝÔ,œm/šd«`žµ÷Ê\ÓíÜôé%¤îá(û”á¢P¤V¶ àM½AkýY%|ìvy§\-“Òwð¥ru)6℟IcŽxifÉÅë5j˜ºEÆ„ÒÀŒKœÒh‰Ú Ç”É(í/-/ƒ´IMT…ÞœO†À:ÈóÄÜ—ÒâÖ%Ö(†'}=’rg‰ÿ¬Ía’$«Œ­EA×þÐb²&Y¶¨HÞÕbïÜU2Cõtˆ8ÖACÜRÎÙ˜¡¼‚xIÿ™Ý*u�tìºQ1gƒÅÂ}±nÅtFí¥4N•;ÏoºØÞþú…¢™ûK´R&Ó}l€ðá`< ””â0lKË›hzS+[CéDꑎeZf²78Ã×Ìuw[Ù^hƒ¥¦ŽÕ’iÆÆ1QF¶+¢¦wIE¼7ëäî8³N2¸A9žÅJsáàr£¸¿¤m_ kCÝ­î‚¿pÁÑvÅV0…I™3®©°*M_Uëibc/íº†•°9¶¿œ”'îÀY¤ „dRìK9ÁfM¸R¡hØHtÕl‡ÁDñ ¤¯Øzr—ÑØL;OzSਫ¢º6å8Q²c[ôyɦá\Ê…GY;EÈ0'G•H”Íâ`lDÙ8ÝE<7HTŒ4¯´3#6×GïÚ/YŸÅ-2Ïgjç¨áo²·:9*ãV%GEÒª‘pb(フD$..0‹U’ü; èCò“ä­Î²s|¤]Vþ¿¾gþííÊÖ x¾ƒñÿ·+«üs­òüÔ—‘ÿãFÖøßÚÚÜÙrÇ?Ü[ÿǸx´;ù?Þw 0¶p«NŸ3ªTV'å†'ÉÆÖFeí©çШÁòeˆI4*^Û"óºG â²2<^ÆäÌY1}oŒ†èg®BúCd„Œ"ï©Tyߊ¿lÒíùE=NFm讣pju‚I‚«-Vçx2‰ÊÆ“‰Otòáˆ>j›nÁèDH!ˆ¨Áá‡6#xMÜZoÕ>6NÒªB/ ¥ÍE‚%D’ ´þ.ÏM0xÏÉÑII`â<øôKƒ%· ·äkÇòg÷ ~ÒMü ‘&ôZÆø6¾Þ6Ûïé¹ZûO²vKbOúSVoK‘,x&GP–D \]öTÆ/:ÊOWþÝå¿OÒƒá<@¨úyü§¥3dþ,¥¶¹C÷Äcöœ¼åÐ;˜ÑîŸÈP<é¡{d¨žåÆè©íBÇq/5Þ>l¤sÃ<Ç“16ä¨QA6œó<5ý©#¯È7Úþú,õëX„çëFê×f8Ïc…m{Zð+é±;bUˈõ‹ bD¿XSñ/dÁFÜùáAãz£ßäebûOFãžïïMÏwý^šûúûyØÿ"AZ8ÃGq*Ü×E]rŠÝ¡-¶$:h§Õ¹Ž‚¥ ÆsX–âÜh0¾¸ Ë®<ŸcŒÃ Lä¤]ŽŒ±âD娷âuT—OHpº<±>Œð¤•…ÑAïªg]ù,гAnEÏ­ù›õ·õad(HÕë“g_#nE–Lfßèü}<À?˜‡ìƒ…G²‘)»£F”…¶šëÛEsZÄéYª&· 9’§á'B.2põå½Èô˜¶F%• •RpT¥È :í‚2¾¦=±ñl6¾G¤YI1ÛÙ'(âÂ+ºaò,+_Áʦ{ZJ*¯"ÃêDœdÐRååf쵊ùÚ>Þ•§ÉfÈ+~%­øàb”!z5ɱ '„U"Tè>{üÆðö=Y‹öÐÔUßÚô~URñc¨ˆº,B¬»ë±i·"UáZ‘Ðñ^8À¾rR6¸‘^³Hu2Ò…ä?(I÷äV¬'›ÄPõG÷ ÿT1X®eüÉÏ£XìH`ú…b"ÝôˆF4,ØQT'lÅÝÉøF™Œ¢I1†±8%¨daºþ’øF¹¹^Áˆ¢)·À›† 4”7£)˜DÊ'ºªî» ÇRËÅ4¿*ÀJ­VöšPÏ·PÏMúOÉÊ¢*oÔ?-æÎw BEì/T„¶ ˜Mæ€Ö¨9P]¨r{ô¡9r8Ι¬§ÏƒÙ î¾çtÁ¶Â6G*KkŒ…Ò÷¼F’u0{rÔé{ž,4ê@Bu$6Ã'jÙ0ª§ï7Çã/ìM®ÐžÍU9E¼ð)U0Zl²}1寫OYýüŒ¡d¤ÓKòUWûy{d¬XõЊ-‰¢«§# M 9®§…¶}ÖXð,¦Ae‰x!Ã9¤¥´#Ý{™Â4JÌ4«& 3ªXb\2®žJýºiötãB¦±E‹AiÜ©¨–ÏoÑé SfÐêR°ã.¬/-•‰V§±˜ÞNaå¶a6>ªÏz|ö–öÖ· ‘l¶ƒõ˜êœ•7vp§¡ÇŒñÙg“ƒuø¶Ë•u~!Ì#‚t‚JÁum‘?Ûe»°ZŠÈ§ÆR³ÊQˆ>ú•-Ió]_L ;8R+2ÂK ¡tÎü$ö`½"Ùƒk_}3MH)ÁÔ0ÔÄqèn¡dó…mÌÈ ÷ÅfÚØBÂh[£„IÓÛ'öi‹Ó3H… <ÎWìc 1†å-h~”iiRÀmÄ¢cSÀÕaCäøO蟷¼ñ¸f“’ ¨ x]3‘âÛuÜ$)àŽØ['!\]w¸çÞ8V]brS×RJ-6ÒÊŽwÉÎ&¡n[´XާÀ¶ Ûìb8wqDùh¤ÿÉ[bÇMM' Ç%’¤¬dÑ–æ'?ŽZ;ªß Vå·h—ñ×öл֋ÇÔ®Ž+þªÈ·ðÙq¬Ø½bJÜ5y- œzâIÎÏ&c™×Û4‘W!Jo‚,MÖº|:€ŠÝ±g#{nÈh;”ak ÍÉÑ–VKŠa3æÈ®oqs:R¸ŽVMÔ¿ÉÚ6®[´b”¿XÒ¥5à[cl+5f°q?òבáö¯ V€.󨬉Rª›µI5®N#-¨÷ÈéÑ0;9Áë`’`¾º9x¬ÍAW ê¸ê²ìA<°(gÙ„ìx?«°œ×*¬Ðº«É×Âf!Hf­1ÌÂø†‰¸“aXÙú~–ay™–!ùeÑðäß”‰”Ï6leiÔÖB¶ác¶rÛ†-Ã6ä†ÜÍ:ÌbG>û°\I´íC¯d ¥ÌÊ^ ñmº…øê°Ë> ÑÊÆ îh#‘ǵ›¼JY‰•ª4éÄøñMD¿XN3SÍC2ëïb þÌÃDë°R}Ö!Š_+¯uxàZ‡-Û:LÕÀ:˜ç2¬ÃVÅo¾ÊaÂllq>^ªÇ>,ÇíC¿>+S}hopžŽc"Ñ ÖÈÕ}á= âÝ_ÿ©hÒ­Ú›–µ¼¿YnvÏx'8¡ë-Ý3޾ͽœX”Þ&’ EºE‰'t«ã¡¯Óª‚ûÑÔjoQwkµ»Ž! p¹0kÈ Ãø##+(Å&”h;ùõøBš°;û°–fr ·›É󜤶y’ƒÁøàà‰H…ÆuFˆÄ$ÐVùš³÷Ž“À]ò!Á.,á6Ü%wù1çïÀxŠÓ›Þõ4Ê[¯P·¶ëØò¸ZŽõŽìkÄöö1jI#6³ÖãFßauDºy£}ÔÉÝÅ!ÅKô¹Ër=žÅÚ®ì$¯çdÞ¡5JòïÔáqzÖöCÌc9‡ ø;Ÿ xTsïþ‚9µ¿ŠI`²gòûGõL^]qYþß“‹'ãÿ½YYù>ʵòÿþ©/ÃÿûFÖø¯V7á¦3þ«;[«ñÿvÇÿ»s`˜^¹zGW^WïD_îåºq/à®Ý9Hv×Nv%2Üp#‡ìãÞ°ü¡7üLÊïzù+¨fÐÛ o«aªÚ+‡ôStŒ­\cw}â>ÀñÅÓr \yØÑõÝ=ì”W¹Ô™þt‘›{È%·,Ó'®yüGMoÂíÆ|ãÞÖZ-x~Ԭ凜áŘü³_òøË%ê6Þbq¶?Ý‚®tKð•{ '9í‡ÎnËõr{L7þ&§óR.×0áó§êäõ§²ÊÛ·];œ­¥4÷%Ü;¦à* ’ÃÉxdàKÄ?Ëk)Í %$8ÑhµÖdÿ¢;yíÜÍ›ÈñŠ X˜ò4[™º?™þ=ÉÎ=qÏË­ÇáÒÊçnn<üjì‹•3ÏÏìÌÃÖ;IXohk‰}ulÿÈéÆ<ÿA¼‚öÆ+hû®0PŽJÝJâ»Ã(SG»(΢©ƒ=ÀJ€§—™˜Mý·íȳó]y^å‚kâ>›×´±™Ã0YÈ}VÚŠ»B¿· -O2]UžŒ_ʶu¸½Ôáö½P‡éÜWfb‚ç ~œI”ËA–¨èø,PÙHŠîF€D~)JŒa»±N¢%¯‰|$Rö ¡wŠôo6x±Žîn SDMâógÙÝÕzÜkjæ:<‰K.*ˆëøo yîà‘1P-÷6/õ ¬G´—àG(žî üZYõ°·È4ݱ¥Ú KDô)ÊÄâ̽Dã…A“ ]GBhóÂe>æJì^ˆÔò¯.>1zG)‚nÑ@Wh•Â\Xw™©Ç{¶G’³Ã8¶ã½í‡tàî ž6‘ƒƒ53S†‡X™‚ë~‘89—&gÙÎ*¹S$ùDØžÞPâ='^<öTì÷—p's.2&ãò'ãròdüN ¦?Ê|ìv=#Ç<~†‘ÍÊs fßßy:Nõøn“ñº‹Ï»ÓtüƒLÆ.dÝ™Œu_,<ãxÏÌ'Å¢X"`ÞR<ž y!Ä|NCÌGUx,°| ¾ž¯ ËA®?M ùËebÈã°oY¢–ƒpØXÀÍp&e~'F.¡Á¹‘¿S¼WÈßÎeá¿> 0þ·²Sy¹S­‚±ù_*«ü/s­ð¿?õeàhôgù›±ñ¿¹³½ÿqñhwð¿g`í.šýi0 xëAWŸ6.®öøkpu« «ù ¾žlNÈ4e`þXÉœÎî›Ë ìÒazB§Z02«|ÏLH¿9/ç΄ô„“ô,„E6ÉÔþ¡ÀdQ+‰)tç¾ÑŸVp}ˆY¹dëo:’Æ”W†-ð§øY<¹Oã‚%ÙLècñ;9·IÆË:j;å­Ö˜hFÓà[ŸLí[Áö rлÓqsv˜N½®¹©qTžLf“§šÇlù•ÿÆÅ¡{ïj3å7H}|qQöÈ}àÞÀ¬?5¼º|e1Œú"8qO–Êã2çÓ¾ï¥%·`·ñ¶}Ú’Àï}ÒáÄ&*Á‰Äe·šø^Âf\'íNkA¸ö}3Ÿ¨m¡œO–âFv–¤KzInP-Äý€ÈmNûþFea+›Ò‰ÄÁÝòσ‚Øhl¨œñ”tÃþ^&3y°¤:å‡Lø!+b¦úh§”ïdô°’.,ÓãL<ɜ̌%dóxÌ`>ë_ââ T,,8A¾"Ññ Ø{Çé˜_Yxó¥ãIÐqÊ3 ï¤Fð%&I@uùŒUQ‡§W•.°`îLdM?3€ò’H´—Ï8`'×ãI“ÞèsP²FŒ]zÒ‹úÍË5ªuxïá‘?i}–Sº‚ÚI…´ûêPµÃ,"Õ*9¬Æ…*¦“(Ñ„lš±l7™A“ðòÓ•³CÝ b½U®è÷@oTì¨!Ž Œ'±%UIôqaȺv#þN³è Ûj5¾zß±O_H§É±ãožß9êϘ¸Ú8îHÚ¸ð¶ì>•&¯7¥;ÃlПvƒ¯¯'ãë ÚÐÃ[»ii]§•žÝGWƒ’q3v +_¡ÆØd¨jJ["rT{ÆQÎÉgAg«£ ÐeŸÿ ¾cükÿ÷ÅËUü‡Ç¹Vç??õežÿ<ÌèÏ<ÿÙ~YÙrÇuûåjü?ÆÅ£Ý=ÿ©g5¥9E?’·#šÕyÑR΋#%ß:>òQÖçEÉ»<Ë?bª?øÓFz¿ºæ ¦Þ9È5R¹Ž{3Üõ¾‡£Ô? faj;7!°w«1 ¸\ýOyO¾'>Ã|H˪Aø9œÑ©Ì`ð|:?ŸMzýY ½­Ç˜œ¼ ÃQëa’€84¦2¸¢!†áv ßCñùXn—ø×?£_÷ʯ6±0¤‚7ÊUªz<WúAøó·´ÅŒ5º ¾õA?¼Âh)¡~UuC:VõdÝJâîÜâËh|ƒ½>‚Õ©áêÔpuj¸:5|ÔSCŸˆÆÊ/³Ÿ‘xLœãc‰¦WlÞ¬– S êM¢¡x&+›Á³^IBñãCeÝÿzƒÃ»Ž »Yœ‰vü^I$qöŒí%ñ{:‰^âæäºxQlÿíb±*Ö¢UÅ“ •d@è®8Gß’½ˆ³q0øÚ/­L“ê|ÜŸìχ=4JL–OÃÿD¡Y¨4lÙM& â*Ì[F¯ÁT¬¦ &yN ñ¨ÁB›¤EHQ×$ñÎh,‚É:å wÆÁÞC}1ƒÞæIY]l&bÛCh;›Å|„¢Î«•ôÄ%]™‰qU…YÜ+%¦½–C”©²Ü0…YÖçnÂÜXTšKç[ëÛŶGP KªIA-–T«–X-"©&•ø8È+©–€J¡Í!©+dÅOެh¾?ÝïüYÊDXÈ(} QýåC¿kµHªÝ õ½ ÔB2Œü ÙÂÚ¿Q–9MñDlËœqÄÛtþfèÅ$ãShÿ§þ̲|Œçªœ-xÿÈî'@ŠxMygŠÁæèz£K>#.ºÞàÜõ¦‡xÌU%6JùðÑÊêþj½j44ÁÆâ+Þpo)É‹©'cgD¬ýÕ|0¤x@¨ð×w…µYam¢&üÓ°6õ½GÀÚÔ÷Ò±6Ö‘:ÁH°§¾.'ª‰ÓÃ>ˆŒ¶)¦š´y&I…¼ünPÿ1y*øUþŸÇºVøŸú2ñ3ú³ÆÿÖ΋­í˜ÿÿfu5þã’¶’ƒÿè¨c§Ö~»oLñgMøÿfuøÙ€ŸµÝîÉQ3e›óïF–A£{z|¼B‘,E"{*e›¬Y’€ì6¨¤e×ô%ªàŽ–p_ü ‰D“Ü Œ²4PJ'¥L)j0ÈLA*”;)Ûûùdà Y¥mxë°¶ßá¡‚®ˆãôV”·xü„e¿ÇË8,—IQ%¬ûáhÂúNæPÐ7¢ |÷¬èåS­×Kš+ÐÚ)ýÑê˜! å ‘ÂÊÍ&ó+™ªƒ[þ0‡·¢3>Ç’Np &:ˆƒ ¿$$A¤ ÙnrZLþk0ö×KˆYÊón}¬ƒùH‚q1_QJªñ|*~ù<~MQÍÿ=޲j„„ ½átL„/d·bmC¼ô®ÊÝþåU8˜1ûUÍÂÿÐK¤h¾ŽI©M0]ð‡bò†h¡ÂÜ·aŸä É`ÓU½a>¾ÖÇ:ÑQ6 ŽqQ =]Œ'nAGÏû(<˜©™:¹.ôÖ4œåD”Å4ü|Õû¿W,ðoþ‡Ÿÿ{RÂÄôföóDƒé$bÕ„Ye³W|¾–”ý¢$†½«óAïÿþ]ºZ塨]†Ÿ/rU‰˜€b>éõo$FÜ_ÃåãŒ2_P•ûÃ9f:IJúC„MYuù…ó`ü¢Xc”ÌoCÂTøèëóoc!‡uу5ñj:âÄEé·tY¢n{¬é&ØÀyðûø{=fˆ Í>Àp¿ÂÛ=“a½Ñ—ò†8ÇŸ›Ý„S"=üH ë†ÆºI=¡™+Åà´zb±eý¤·à‘†Þ…—³…T2(£WcÂÊÌzáø ³ªø¥&FÁ8*Œþ&jã0MJ´Ö¦42 …ñï¹É`0 ­«_JX­ÆhLþÎD4ÇPJ¢Á Ì®!’«‡_i·æúþå"ŽuŒ»ÖoˆÓ½ÝçÏ÷ºõò«ø¯B$N÷ŒÉ¾ó]åÕ«j&ÀÆÐMñÚ«Co.¥,\Ì1ü®R •“à/>èR%&  zýñ{VÉ^Aygû…‹+Ä-ÌAo2Ø0§6]ÝO$«øk£…ŒÆ£2’ŠJ“3ÕzröŒjÊ:²¦½ê ,¯Mð#Ðy<¡— ¾ö`¸:àI»×fÔ\8ºGá,ŒŠ»¤žÀw{çÈùÁœü¹Í ¾õƒkV­#3'ƒ ‰Q`máê%PúË Gš…š_ •½ùøª‡áJÄ!Ù|¹ªQÊ.è– §çQøÌXUÜ$û.{ËòøÑi#NðPÀ,<;ý¬'µ‚Í2¡ÒÀˆÿ| *þ•VS}‘na.0\þª R8…9®Ñÿâˆ%c˜ä ó ~0gÆðõ ä?¼JÞÓ'"ržÀôP0©[p1Û7V0“çsT·0`oPDx¾²áƒ¦Í¹TBõÊ•8òh‰˜ÐE± ûß…sgM[&‘etÿÔ_]`Ñy£p¥ ”‹Òùõu€9» "šYzXÛàZšô&ýK4 ì#‰ ¬Û¿ "»ÚèÏôP­©¡ªà>NÓŒáÖ8M|o`C6P- qLòšl¦I€S’‹,•÷güÝÔ@Ðkç<ß l=VAˆê™7XUø·MGlÛü ๾TH ø«‡EXu¦XŶUro£ZêOÇCšD”5°û¶®láŠ>®’lU4Ÿû8ó’F'-5¿&Û!¤$o•wŽpQ0@nLÿÝ+[ôÊ ¬§.tâÑàe²¿æR}˜QÉ‹u:ˆÅç¨.Äß½¿KŸÿ-ÖDÉþŒSàá»áTjl>¾V·$L’,¼¤ëbÕ4ª¡´äi%üûäïhÒ›OfŽ~×Ã^?(ÅkƒÈÚTʈæNVéb|Žèo›ç vhɇò]##Ñø G•ØEÛ{Okš.eƒè¯sÜq:Ó9 w#*-,½L­Ê#þû-ï×ÐÊ?`¡¦×΢&W¥_°~õLù¡‹K¤ÔÑ%µ3÷a<ù‚õ!úÿmÅ¡”¸ô¬ÿAx…6;Ô3Õy¶îJ:LJþ®±Üé˜{í³j-€M–=fî7Èeª§r8Ljeâbº„p’AoŠ”.|8ALb<€õÒ8 ä¼=c}Ao¤Û¨¢ÒÕ(¡äScpÊ¥VoTnˆÝÞç"ÔVð÷›%³†äpCoѶÖôV0W$9@ÀêŠÅgxk¨ù8A*¡ú%AvJ¤¬ÐQkÚŸO§Q2JƒÒê¿’tÐŽ—©DÉ«»-Þ˜d›¤¼µäí4Ô)v'‚Íióv|aÇFªMÿ/Ì8„‚ 06t{‰37*Ç…èQC>k¸Ñ\¯¨ ;·‚¹ÌÈ îmEfŽô%áŶoëÓÎí÷ìYÈÝ…m¹ÖšXÌíefÔ^%t=VÌÆ~1©Î0ö÷æÆŠ\jû¸âxÐØ4´3Mnš® ?/Š`ò˜0И8Ÿ°BŠçš™Š% “,“,;²K%W¤³Ìo–){0ø†¾€<ÑCý[&!é½Ã¤ä‚ø•L X˜£ RÃâqÞ{b>>|äÙYÕ¢_R±¢ÈVܧ°rÆKù怔‡Á†e„ZÌÄ[=mãÆ#4 ¢A‰$6¨ 0ZùX—ð—ä`®^ÔÙJµR® ¹ª¶F\ô y×D‹áÆÕ5Ó¹!Êæúºæ]_¿‘p¥òx—äu.Ió-)8Mó½áÚ²¨²ê¦×ícåŸô£ú'%Ëв—4Tj~1ZyýS¼‡#éxAí”ç"ó èÖùXÄÚf67›w{SRÇdäLÂó9»Uœ+»:vØ!»-Qâ6=üqÚU–ÎÑt‚Ý=ù‹ì˜æn»ù¼½ßéî™ï¼)ëÂbŠN8OLé€H‹Ù­ÙÕ( ¡éö¦Ð’&K§ïaàã{J•0ƒ›|/Ë]jÝò—¿à[ø«JÝÓ}ªÖlî7Þ"è£N?Oö»'%íTuVã§ NórêüÙ©©¬`ìÉQ§¾¯r¢ù€Pþþþþ¢w8n»ÞØmòÏù³{œR|áÃQI»yÂ‡Ž·WI´»ÇÍÆIr÷,Ïë«u º±ä…!,Œ s/0/v§¶ß>KnÝ‚^bLîA¼ÅöŽŽÿ,™NcˆLâóÀ’U«·BÄë…ÿ‰á¤Fïáù"-œÐÖz 2çS¹Û+‰…*ç+nµH0†8ÙХьÅK¹×üc½…œè…NÝàþ:]Œ,è‘ l¼oÄ@eU!ˆ¨Ûæ‘Pæ/TÓ!®ã¥ŠÓº­±M—âbîRe½J~a®‘áz£ð&nKÈ_U¸½¯2ÕZ$V×X¸÷Vlaú÷L¼æé_m¬÷-™ðô–Óô–v¾#x@ÛióÃðÃs†F OKŽÿ];rÁãú¥|Í¥V‹²\Zƒ”áO×¥ßL*žÐ¼Ì¤„°î8)Ø}Dí-Ç‚<­õ›paXÑ“é”$XêHËÆ÷Ë5í}â¹èî3ïR_?ßf×ñ¿œßý¤7cèê'µ»󵔞˜þ]Jžò¨ÏåºRNDkÖ P¢J”|TŒ7Aï®Åº8™'ºMr'@Õ5W…dÑIá«[tã ™LåCLT6ÅÞQû¤Ñ>Ý7˜´ŒL0-cÔŽipòÒ¼!gwþëÐ7UFÕßÚ´ên=ÖÇ×{=б.=²d4ó¹U^‰ÿxðZ½Š“ð ,îÿ#6zˆšÓæÕ¦‚ ùT _žã!Ùf:¦×"1YøIJD–Î÷Èò¸—ÿåÛÓ‰ÿ²³Šÿð(×*þËO}™ñ_fôgÿêKoü—UþŸG¹x´»ñ_>>Pü+$\ã ¦¢’¬Âº,/¬ËcÆqÁ|a\>>R—Ú“ ã²rU²®êHfåK¾ò%_ù’¯|ÉW¾ä?½/¹íaW+—/¹å¦ÝÊð%«,Çñdß3›i_ç«1 ¶ôü²‡sÔDk3ò£¼±ÃþŒZ=ÁìLÑCRT‹œó¬û Œ?ÜW–iO"BêxV-Ôñ3í*¢íûûfÉö«ëÍè×$bhn¶•êB…Ù¯Ùç?nUôGö¨_y8¯<œ¿¯‡3"6FÖ' ¼0+…-Y“ìrƒ1˜5±’"’‹Û̘x°s¸µ ú€SNôÁ7g/iãéÚÒ¿#^oˆFŸ¯\½+câ Ý.¶×’Éìr‰þ‚ÊOð}çGóäî\BzºGtú[yßé§+ï»ïà}gq7æxw_¯²Ù^e+G±•£Øæ(ÆÕZ’›âð’4£ãB& /2É=KÚøu´"ÝŒ{ûˆÖ•¿¯\ÐèúQ]ÐòyâÐJÞWÕØôNvÓy_7)h?’“NA%Qy!‰+è\^5wrè¡ÕîÚ"fÚfHGŸ»;ðPgGy%õç&€¨ ê·'+²Ì¾êèZB`îJIÄž la¤5)ÉÊfôÔÁ?{:×ó÷`ªÿH'U)i•è†rìŒn¸•Ñ×-PöÏwö¬ñ}“Ü'ëc“^Kí%Py`›êÊÇf™>6/–çc³õ¤|l¶îëcÓ%Y£i½Qv—:"ÓÇC!F÷0n²ç{¤ºL—a žN™ÌÒSfÖ|*ÿð°+zó0¹IçÙèÖ‹T%þ3ÅÿçãOìÿs èïèÿ³½]ÙzÏwÈÿ§²Êÿü8×Êÿç§¾´ÿσþ¬ñ_©T7c㿺³¹ÿqñh·üþ„Ù³ N›G´\ªáÒþi7Îà¯öžQvàzJ9—§%nö¸ölmTž¶s«Á¢dK‘JÅÓà’†Gk<àDšˆ- õy³¶×®¢ÙO°N²JàÖôÂŽ8ÎÅæ¬ÍÿØ0Ïþr*Â^ÕËçø1:yQo§¹"p_"©ü‡j®œí4”ÛO[Óá‘§2úP?QB ƒÄÀô!G¨1 ~,0ª I0¨vÍë,¤áÿœ ™Ð;f–U‚[ƒI{Z¬O‹ÅÜÛÄ¿›ðwÿÖÛsܹüó¤s @Ú#]i * mb} ‚_ µµµÈk’‰5,œFebâcìO˜?êc`®I_á«Ò¼P¾°32Ü|º2‡,æ8 ÈŠœ(ºê ‹}¦ÆÆlFÀ4`û"@Gô$úV#œ£OÞˆg§è¼tJEïR¾!JÈjv“ë÷ÔÄO›N1ö§ªGïíýCÞf–ÿOÍ¡•ˆE­•âøX´æz´ÕµÔhÿ“É”Ñæ6šåÎèqJ±øÁŸ »P“<ÏÀÖ6˜’'­ (ýLô]Ý5ò$è_â‘ÙTóƒù5Mæ}J™ïÖÙ3<b£–FPºk… ÒYÿZ¾†Òuަƒ@vIåPdŽlYy½¼Šà¹VµFû¬ÝZS~ü'ÍÌ‚Z«)YTÔ>V!Q1$H¨qäf5†ÜÌ ÝÔŸ}o â÷R¢ã8Ö ´SXy î <=>Î@ó½«uS€k,‰U $ÃðèÖÎö bËÛ{ ì’ÐsKAË‘uXb5Ó].Þí@nÎñõ{„Eã%ÌÆÖ1?0ò›fTjë“æ³E°gP±´ ¦ÂS¥À²Ô·/ÜoIcâ×òÌÖÿÙK{c2j|~`³K6)Õo¨ßäÛ–o§ u¶ìûÙ’Vç½ËêL`t²cæ 'C›J+ûìƒÅHg8m¹¶Y–°¬|î8ŸÝ‹ÉøJœg3ø$ãkó!:AnÓVzÙ9?Á¾¤ÅMC¬™Bè¼mÀ#K™îú9âFÅ»™TF[\c4±-Ðò=¥&m8©&‡/§!ÕaÃö•ñw_ q=> ¢:ãô ôÊVìTÏ hé `½w5ŸñQÂ`<¢2ÆfíêH#Täà ßâ{²ûGxÔÁî™­J~Þƒµ{ŸgÓ_îÝ7õ޳FŸg”JÈIÛ^Ù°dQ¥k·–÷âñ¹Ûù·¹Õ2Ê‘I†L8pG,åö­†™ZÛ$”˜­ý 'Ôþž§%Y%ÙG#r¢p£çè`Ñ£›î¸íwTÌ€„ˆ Ç%q˜ÌÕ“ýÖñbǪ°ÅÎdU£WȤ…‰éOˆ€*l½z¯ª|£‡Û{’[ÅùH™Þ½)ÄQêG>¶CoµNOj'£vŸü7ùëðp?ÎC‹ÈäÍã7ò5o0óÛ‰¼ÇÓ ª8|#ë`sy^`u‡}s\:ôu u>ÃwR^Á7HsbÆåuI¾®ðô'´¾|ÇæcË·RZžÞl£Í ˜ oÐÕè­<ö `\c¯ÙoHùŒ^°ÞxíâQ"‘<ËW’řʴG…-Ô˜™®¡Þ¦+†dÙùÅûqe;vÉ®ð>ˆ÷´_e¥H9õüzLõådO6ƒD‰<ÃA¿g Ï•Ä/?»Ôõz–º–â›$E|\út§ç29åžÎš›¬¿#?~KÐèo}Øïd ‰mò8º#ÑqAc=f`D¯§Ù>áµ/ÑÓY,ÕºÈe]«äΕ—êã”yQ‰nÆ4«"qú\н‘npøg'ñ0ûMõlÓÃ3­-4GY»!„ä_i0«³\8+ÿü5?*øŸÕÕùÿ£\+üÏO}EøŸ‡ý™øŸ¼éâ^¬ò¿>ÊÅ£ÝÆÿì¿?Ýõ8€wKGݾkÝ(þÝ„þɺ4ÈHÁâl6 ÏÕ‰ùaï*˜Êä'%øÙû<ìĽá0üŒ™Oþÿg,þ=:ú4 ö¦PƒN è¤4 峑Z£Ã94 ¡G™íHhZŒOwÃ,™uJk…LJ¬ÿÚh7{ÑF&oÍ%#™îîKN’Db%_JrZW'é”cêºi'óÙphD©&'ãâ¯ÌF‚QÌÂÑç)¡$F>YµÃsÌ—$zHÅã2Ž4&Á`Þ(§“‹Îǯ ”L3¸ý™Jß2»³G:ôl×΃ÂÕ2%WÏn!\#¯Îé_“Y¡VK!úŒsV9ÀÈdžƒ³©êíê0c‚µ ÿ‰!Íbþ*v p벇é")g¤å®³ˆ N†2¶6NU¹`L  p4mÃ]§YS†„Ì£WÌ$Xª·V°Ú«½]>¿-·ã£êåZu²ù‘ÄzNŧ@Y˜•qxkû™™¸C+¡~KoòÐ0®®bÕBÙ±f^™4EA1%æ§›åwžFv‚ò­Z¥Ç*é -ÇI›8K">æH¿\6É'<ĉ‚\ýdþÜÙØ¢B0Z>àòJ2{ R¼ÁŒYJ¦Dɦµ±¦²êŒIª²RΤ|Èd²– xnM*ý! #Hª$Ê5Å—¢':=^É+&éåx>PæLÒÏ‹ûÌoŸŒó{DÅŸ…‡‰¸ƒPúz‚:1)žäÀÁ|B"!¡Š†þ¶§ïެ¯E3ü:#êhcƒ¤ë-ôñyI¼Ýøc£$~éFr²rš5©¯¡™´ -MƒžæÃÏ Ëg—WÓ’ø:†Ynk³n ÚæúzC¼Ú)Wª08{#XÚ"f}ó©íúQCT@¶7«[Ïw_·O[µ é ñróåÆVõ×êæÆËWøæIÐÇyÿcJKúµ¸œÍ®_?>™O@‘ÜnÌg½Ë °žcFU`ÌóëÌÓççáhãzpñÃÇê&ndÂpû¿Æ‰Ž%à%­ÞAú› E.ðÃÚ1I.Ògkž½uxë$ *¼ Úyث’8Åí´wN™Œ7« g a™óé|C2YQ÷´Õ}/+âÅê-ELÌ”\F¨¢J”V›‚ t¡ÍqJ‹=¨ívqñ =­*-+çOîPt°ñ‚‚ƒƒñ¢cˆA\Oyƒ>À üëô8 ìYã`ͤn²†¦Ó3³kÿ½§Î]O”ƒ”úÕâŽô]ùÖ΀a€‹Ìzu‚Æz7úõ£rãBºÔ±ü…=/H?þC™W$þÝ¡õÝa¾ïdsè+^âËoð“øžS£ô’ý%'ëýÀ*Õ>ÂKbò#Ô*êÊÃu_r‚'Ó•I߸ޝêGöXIá²®'<ÝŒmL%òÆL”S¥,…EV®1åÔ_r,KeÁÙ0bÓ¤*o*;uwÿ×À×þîê}]hŠ›ÇáJÒèN½Œì€gn×Äß’‘Ã9d¹þ}=Þ©E›õ1‡‰ÃñxàÞ3â,¢‡iõr(ºÇñÉ,½W©"c¤þÐ]â²TÎqj@ô¾~†¢¦ÿ{ëÑYàH¿ æ¯3¤ü#…ßÃ×e¥ŠºõIÃ&úæ9Њæ×“º¿Èj±] ߨ• Ç’ËðñF>—± ¤š¨3`Œ1f¨<\ß´Ñq]YóUj/zç9Élo“E†Ê®H-_oNŽÄ«W¯þ+ƒÃŽø5ñë6dû­»{UŠïB (ñÄ|T‘ªô¨`0²,NŠ]‡Ð&š‰¼¿†ÏÖ;ú¼Qí¢Éah|±W)B9eñ¢¸·YÜ«èkæHAþlŽ-Ì—e¬©®´€Ä èõ=œq ØÎuÙ3uâ™SEª{Œq§®ÊOÓò†Nj8cÑìµÃx¯©¢NyØÀ°.ž8“´AÝyÓ£ˆeµ|HæÊì¡êÃWåãÞ#×27÷¹Wíõ ^¦ê-P™ÑHÆ‘]'õ½¯mÎn#"ccú/ÐKfR>²'ê<Œµƒ}XnG+·´$Š]N¢È¯è{îŠéĶ¡yš6‡ Ó…ïFÅžêšGo ü¦z–º”£7‹EÜB@ù{ùô¦ÕÁ²œé‘w Ž t ;[núدXýª¥òuÞ)âä’ÐYQ%“À`þë»ÄQø¯ÊNååNµZÙDüÇVõÅ ÿñ(× ÿõS_þëF&þëÅËmwüWª/Wãÿ1.9Øø¯3•æ=†Ó 9›i! “¡>ØÓÎïW{ü5 ôH¤öÎqœ"ö©íÜT„”äæBñœ2ƒ5Ýåtaœb9}1y(F/ÁƒÙ!ð×Ê"Š™1HBrŒXäV3;´PA+*à©YEŒ·â"\Î’^F)p“'sC~|°›!ÁÈg‡¡=™h›Ø²yžaÜž"9q¤>Ÿ÷ô-! ˆoÄ•’Bj©K^$bgîÆ`¾îMfÌIbRHüÄi¸Qæ3+ÏÁÌßÈzÄÐUñzÄ($}bÕÃeÞ·pFiwIÂI$eP¡ÐÄÑ$·1,c†#Ä]bÁ¨¼¶*oÌ•‰5İ2ëÞãÖìÂéõ¹-çÑë§Ï(-HM8êç™Ç$¡Ð%”óA0MÆ·œú ÄÿîÀ)Š©lhD&NûÁˆ*Dc0’“5ÜpW)Ñ,°tJn¢šÈ "*H”PŠˆ(¦ÊšäŽ“qÒ‰˜%Ù¹Ul—+k–€€d¨²ƒ‹‹°£þm)ú²ÐÞ]¯®ÛÖ8ä<"í]BŒba]PÎ÷?O:u¡cü ÐhÖöÛgÑi»êžU„®§¡+¢’éê)°”¸è…C™öŒ¼¯?¿‰Ð¤ {åâ¢ìÅabሺ4¤ˆñ“ÐDöÚXက€ª<,û?Ád¼ñý#‹• dAVx±Í’”ºo Yõýé~çÏç‰N±VÙ\åÄÖv}Ÿþ=©–dºð’ÌÄij6ÕâáÝÑñ »)¶l»cžö»%Ñ¡²;¼ÛU;àŸ”\;¹H¹çÓ=B²ù¸Cê)¹5¼õH@¨vWwõÀ›˜NÉÆMéÏRZ±~j¯ :oO:%ÎW^¢äÇï;ü³s sÌÔSøºÌä3÷Ä\¥§ áôç2Ä 3°½ô¾* ƒ¦¨i¼@„޾xrÝ¿A.ĉÐ.‰ìR¹×M,—,¿íÅre“+Ⱥz°a§éô7’œüÖNº­CÉySÉ€%ðF ?ðŒð™±Q®¨ÿÍ“V%j'CÛÀÞkE+2/‚9O:bÇjQ]k´‘lDâ¡ûXìD'ªÝ¿f´;_=XzgGÐÓ½"ë³@:…Âíå¢ë|V‰}öA1¾F|­$õKÕî;6¯5‘šuÈn2†‘¾êõ/q+ æÿé¬Z$R<“XgS½ XM…£ðj~©˜‚Ì—Ž1 ZïÑÑ)“|ŽßÈgiÇ[Y>cä1Ž~FÇBüÌ8Ìá¦uÉyC.üÀ¤é a=Gúr‚!ziÙ0 ÐÚëMn£&ãÜÊmYÚÒzæÛêC{Sc¯5TÊèo$ƒq*È@‘YÚœýŠšÓŠˆq>Oó7Üê0Ãð{WÊU1ÄŠÅhÂ6ÍXpKú\Êm$jݱ×T*v“þ#0;ÛÈ+30¾í»Gù|y#½ûb»&èȯd«šáºÙ26·POâýu}(ÉæßÇ¢'Mµ:âŸeõ꺦e#ª{<~?¨ÝC*qÍø ËYóšú,>Q6_Ãa®ÝM»’LƒLFȆùït”äz ßR#€ìä#¼LTþ(Ú+1ÃwËÕ¡¦ÿ¾cç<"ý.UŽOGsêãrÅRÖ6V¿¥:úøk³Óå]‚õår4^Ñ÷ehøª›PzBivãlÍ ëoåmë]vK’ŒžìXfmµ^_OÆ×\² omö[ãÐâ©–¾À:Ò¸ŒÈW¨1eSW¸X ÉCøQk©°yÌ0ç/‡]˜gÔÎ ºzÉýƒh;w Ã4Ù$I 벟/¨Ë—}þ?x#À;œÿ¿ØÙ\ÿ=ʵ:ÿÿ©/óüÿaFÖø¯V«ðÐÿÕ—«üOrñhwÏÿëùô#e˯± ,(а¸ïP8@Y*¨?ª QëA0 'h†3ÌÒ3eƒ¥EFmáQt.!ÛpBá’_ƒr¿ìã/®Âá€O—®y«³w²ŒT.†ãÞ O¯Çáh5ÂOƒY؇ÚÎÄM8dËcåæÄ”‌†ipÀ•ýŒ1 F¢7<ŸÎÏg“^V³X ¯‚‘ÎÃ:–[$  ŒHö/…¢!†á^(í¡°|,·ŽKüëŸÑ¯{åW›XRÁå*U½Oa€+ý üÚ;ÞÒqÖè2øÖ}²z¡ŽêWU7¤cUOÖ­$ÎáÎM ¾Œ00ºø+ßþÝ j9Š» ä»°6§›Á×`(¶JJÀFA0˜Šv±XWã ÉadÏ.{#~ñã ˆ²¢¬€(+ Ê ˆrk‰eÆeL«<:V%ߒ۶ø9oØ—sf?†ÒéͰ'á÷J²°²ý'~GZ _“ß_…³<èy¡“ÚËb›üêpÂû^ؘ© l–’Ui’ >š–L˜ÊˆJÓ8R&´IZ„uMÒDÐ$Ãflt ÑiX%‹ñq“œ7Qb¸yA\Ô‘Ñ0‡†¬Ï݆F#ÿØP%åžá±ð÷g¹¾ß)ß.¶="ÞXXÆM já¹°Œ[Õ°rw§s{å•qK´¥¸çñ'Œ£Ǭ†,®6mPYn ™‡s.—ˆ!û-þmR[ÎîÐ^)@u£)Ws`ô  Ó”Ïô`qÇ×ðß;a2¾™!K§TÍ瘽ր ‡Ï—ñ¯¯ÆƒíAàk™A×ìUÔnäB û*”/-“ÏUx¼ÃàâBtæ3艒ZMD—P¤¨Ã25oÎàæÐìÖÞ¿‘d@S9]&µÆŒÆI¢0éúãFä Œ‡`>q)ê#Ù>ý1؇ýIH«{|¢D÷kuª¼Á¹ØÜÞø‘0„ëˆ0!ai E¨Ž–†#Œ!ßUA6@ZŽP€X؄ϫÒ‹žâÔ­Âð†{Ç–L¤aËAÖ÷4Ò0…¯ A\! %Þ¯±Â> öPÖiß=Bª`„·ýw‹h*EE>iØâ@…ùæM?£«#MâØsU/guh½çËW”ÐNƒd•ÈÅsÕ89mš³É꙾LéùaŸNÈŒD¦:•²ˆ³ˆŠ¶5Ò`¡Ì49 ͯv?3½†&ØXœbe3¡•÷Ö—:n}X{./Éó0¦w“&4e…&]¡ImɈšð³£IÙŒçoùI»h|Ý¡gæ×p¿VUüñѨdÜÆÐ¨ÆWŽÊq"©bP¯(¯…°w<èU²§±Œ«ùp^oñ„ûüÖ ðÇx> .ÇÑôFS”„[È|®‡{µGDÀ_@74žù1©n?µ“Ñ‹ ;kÑŠOá"l¸‰S â\Îâ”ñÚ~æ½|°Øx…“«æ¯ -“ 25]M®Ô#ão]ÍÅhض ë…³FFVŠ…•‚r­/溺.ÿ;ùŽø_+ÿÛöæ*ÿãã\+üïO}™øß‡ýYã{óe<ÿãÖæÖjü?ÆÅ£ÝÅÿjÿ¡N­ývß³œ;kÂÿ¸q?§)»¸µÝ.eAi‘Áð ?ÿ„ûû§ÇÇŸl(q2 ¿m—Jü€‰uZÉ{‰þJ;J(IL1tÄc¯8àâVzæFÙ±, ÷Å!“ǃ_DSÔEóO0G—Y#$Tè §c‚5#B/»kâí¤wUîö/¯Â!-¢š©”‘¨¹¾ŽIKM°Šð‡Îi#ZcL)É™(û$¤Š±ªÞÓYp­-ŠǸë§ÄƒöÚ ¼£B,²u»˜¢ŸI8b´aǦ1Åýw¯tnMpÐ+7áf*èˆ)û­£ý5—‚è™ /Ö Z†ÏqĈ¿{—þ>ÿ[¬‰’ýGàÆwCµáÇ ¶kEce'ÉÂKº.VM£j‘3Œ„ áâß'G“ô|ʨ\—\{ýÀ?µ©”ÑÁXBÏÖÇøÕ§ÍsXýÑ.Ê·wãÒq ë‚­ö ÛDøI—6xº¡T¼gÒ˜º»•–\yY•Çõö[>»  •à•^ÿÔäÒÖ@P¿zsÛÐu!{×¶–¼ëšÿ·÷zó³×.2 ¸¢©Î³uW2ú»>Æra…E½öY5‰ç& Ë~47H·çh<˜$ÔŽ%ÊÄÅt ¹´½)jP¸ðáÝÇúãA ÷¹L‡ƒ6tEeü„:P  “€S.µzƒ¤âpCìÂZw|Ãî[²ß,™5$‡ûz‹ÖÂÓ[Xq]‘ä¤rËAŸá­I >æC½µPý’ ;%Þ/irÚŸOqpºÚ‚V)j[@í£ÂÐ '©Û§&c{ o·äí4Aì¦Ùxãb4§X8ã «86ªhz˜ Z4!¸ž †n‡e¯ )ƒ–VÆ£†|Ö{£IŽÖHänžô'Ú³ùJcŒ­OßÁOh1Üïmÿ)g}è`ŠÍ™Öšë埓afT^yðË?™D̶äÔ`oîÿÉSJ¬ø”¿§MëFUˆCTÖ£¹…Ò›NÇý|X‰Î‡B¸æ GÌô*¹‘e ¸¶CÀë>˜o&ìH |ÇQNŒÚ£Xñ_³±7±­ 9îEñ”Ù£Ÿ~³äR™Á7Œ©Ã¶´¹e’õåC å󕬔q˜Ö ›S»=ãTiµª‹•¡#À¶®/Ú Ã›Þ-,ë@k«›…ð~V÷§ ¦ô;¹ˆó`4I˜2*ßs¬s>ÏëÏhÕ¢î‹Ø@Å^GËK„—0ŽÂ`Ã2s-Þã-ÞéÁ7Fãš(ѰG|"FÛD>Öƒü%Là&‘¢ ®«ÅT<>´Æ+bÍÚ`h\]3òÒîºgY`í8¼á‡3ÑLZðŽX®™êËbû©f^f¥šêªxoÖÚË$¤°Iåéä¢YÅÛxˆxK·¡©hq®lµz4efÀâŸÀ¢1’žÒ2¾±¬0 ónKÔ†x\2ÒPö§£Ö“¿È@kî¶›ÏÛûîžùÎ;².,é¤)oÌÝ^îæ‹º×ao -é€õ´túðÖw³P'ºnÑ` ô-úÒ.zAŒxÄ€Z³¹ßx˱ð§ˆád¿{Rg5z‰©øÐ•äòowþìÔöda|áQ§c‹÷!ø ûûûGÊ·ÊÈUçë2èCrMð1…hì6ùçüÙ=柎tЈT:ÞÉ mLB‡:fDòçV0‰v”­J:3·wáÿîq³q’,+¸ïÒ„ªç 1‘\éjÃ^œÐG­ã ". réÃ\>Í2Ô„Š<ñ!'öŽ(âD<Òbbù̸$OãR#N¨äWjÇ:Ö’PpÇ?\ …ÂȦ´Y’NÞgÒá „¨Z¨©/ ®Ìè™ñ-XEoH02®dÔ+¬â¯TX›Å_i<3+EÊp²rq„Š‚/ÃüT†3Pñ$pEàh8OÑlû.á6$3‰ äý.Ù³@¼{ÆïˆÅãȈßñÂ}ø/o§@D²Àªô«Ä^ãg§Ìã¬é¸ûÅø3h¾z h4± 2 üñ6½=vq¯¬Q‰§Ä–F›|+am/eîù¸Ã»#7›6U'æ…/:„ÑœÔ`(Íú'£µZ´‰¹òYB£uå¶ÓkòÀIáèCꜬ- 4Eä‰/b'–£¬rÌ*'퀌ärGlÿW T²Ä#•åÇ©>TŒ‘Î÷Ml×rôvB’;³¿*YE;ÔYû´b!yÒbxã ‘òŠÂh5ùv߸ëW7ñâ3j 2t‘Ȉqô))*‹ˆ¶Rc½c<«ºÏÜÒÿé©iB±#¼hÏ}þŒÿå‚פmÄí¿c˜X<^ÿ €Ð´'¢Àó¸ÛïgôòYÓ¸sŠ‘³Sß v‡€3ÿÀø2¾‰›L<Ï ª!+èÄÆ¸å¡|¸^ÑAi`|ãª%Hr #?:jŸ4Ú§Æé(µš¯ÔC³ÄŠ]b5¥Db‘8²xO¶P©Ä¼V¦’P÷+‰ªûÈ7yêí¼1Ðxò ÐYáÆ›ÞùE ŸeâV³Ü •oF'•ó©:9 /äêUÐA¤1ªì†*Q…›9©¾æëíre1¡¼¹;ewSöÛ˜ÚÈ0yà…©F&ÁÅPÁ)Ltý‹pY¨â”]Ç’ë±r ú^hä=ï2TëvT"›ø>ß·ãÿZ§’€[Dn~±FísñuOá²i²mä[Ü_ko•x¾jfùfÎfÁ÷·eÇðÙ×½Âô¯CÙM ¤åÚɜºËÉá 3g?¡z~yªÈÎ’} {q]ÈH¨ÚÊ! Õ1¨8h²véÔÙúâe¨â—d‡ÁŬŒŠHÉ8Ä©$ ö!B"næEaøFV(#¼G·RUUülì6_óõr4‚LÂî¡‹ùÈ‚… C2ÙR jΠ—lqë_oÚ60QW¨c+ªS÷ø5ÿXçÝI_ÅèAVÅt'`'¢Ãô’£GÛ5¥ú›õê3W±‚Fÿê 0Óš±Aj’vªq€"p#†J±°ô ¥!2ÂG ÞùÛŽ¡áH‡Ã"tfŠo2Àõð‚àdHˆ8¨€¤¢Æh ó;‚V£¶4eÛ –lCó•`Ú2‰)Â@?›²m¦ÓƒðRCÂeÄ[Sá¨êV„®ý¬Pk±d¶©‘×ñd`‘W©3w¯5ËEÇõQ»ðäضqP“Ds3y“Gîð]Å–aãÿòîÁ(â'SM[dm¸¨Õ.öˆ€Z…䆭2ê|UK‰Ì¦;wÀ V1굊“²Öó n~ØÁجû†)æH'<Æá’êÒn}£®>/Zp9"²¸aˆ'sÅvÖaþ•0yzÞ×:ë}K =âð´¥£¯¨ØpNSlÆøÆ"_N'K[‡aI¦Àmˆe9”­¸,ÉT¢oÂÐÙó6ž¨[•¤ÑHIÛ:,¢ \­©ÀêH½ëw{K35·´C[Z îC>$t­†x d‘ƒ°¥Uo2+E\Ϫþ4ú¨*ºÖžÐ„"q÷¦èn[ÆØV4‰`vÄÙ¥²Âw¿„×Òðx®gd6^¯¹øK11ˆy`B[wÞ‰“#±•´k)b‡6ΞÏ4nÂi`ÄûdÓˆ¶;’ãhé"2ä˜ìP€á…¹&3ëwÂè¸a€»ÏŒÏóýgv³ì©k¢Ðè5u„éyb:±ÇíŠDF%ªßÇ ý>š…QtiÒÄì„ `E“K65ä!KFSüMÈÕ 9 ¾wôg¼AуfòàuL'ñ½”h‚FÌ¥ ókA¦Kà‹Oÿ%è¸%GP-b讫kAS=Ì¥zcàY0:lkÓÝÂʳ§—:;5ä–oŠ%_!&”ÓöÅÍý8ÆîøÂ½&qѵßóŽØ?B2tŠHnøí ÖîÃ1Î ¡ö°cäÈ­¯ò»WŸB¡µFS &\åã‘ÀM®ÇŒ¼ýñ‹s\þ©M¶9¶&ôÍão°0I‡ è$‰"êp”QÑÒQzF ŸA…^?Ûz3´ew~hLP|!Øn~(àn¨õH½RHëWÉ£|g 7¸‰–ߺ‘ezUpë` ЋØmÜâjøÏ ù‚tnãi-?>¤ÇX!¿Y…Rñ|~Ô‹€O±ídOõ·7­º[õɬ܀z^akÝ-&o4dóH8í<8% rç¡"Ûñ¿}Çø¿•ÊËjµ²Iñ+/Vñ?åZÅÿý©/3þïÃŒþ¬ñ¿õâåËŠ;þ·*«ø¿rñhwãÿ~|àø¿VœÙÌí#´ùîö÷Éým¿ä5]…ò]ÿ>~À_ìÓïï÷ã? Þ¯éøšïwyìÉFC2«Ð`«Ð`«Ð`«Ð`«Ð`«Ð`«Ð`Fm;4ؾg¢ÖQ®®Æ8ḑ!Ç¶Š¸a˜`F…ÝÀ0c‹ŽÜX ƒ`ŠÁqDµ(¡âϺÏÀ–ÅÝgä— ‡¶¢ÕBG‘(tÚô¿o–ìx'÷~|e_Ëü„*J‰(tÏä+Ì­|‘ìŠþȱÔþ¡±­Ž0ö² š¬fý\±®âB¢mãU¬«GŠuŠÜü„&œQòH¢!u™v°š¤@ 3cž2­Œ‚X"‰I £ä˜µ ³aà;-ãWA»Œ ]là>(\?Zx¨a0ú<»´¹àƆªpf!° AáV¬%îXyįE[ç µõOe‡â¾—=g¯4¡,±¨?·>ft“Pbt¨EA¥E€Ú.¶å~0ÃrÅ›kß}ÒS¨øˆ Çe²Úˆ¨ÂˆK’üJÒþ‚E¹ÓÈvf š 2u.—èӻį§;)¢ª^°ùÁ¾N(Þ©á'ed»–ѹä„õ_O Ž|eÑBO'hPò™DŽ`AÞ AýÇ”\ƒ„¨@QÔJ£­£ÿ¤â¨:*:P<øOF´ hH×î©…¢Lëè-…ò† Já6Ç ¢Ÿïe¡>LÐíGV5ŠõcEúYåYåYåyì ß”"4 ›]ïÈÙÚŒžÆ§‘ÏÄL­W’ÿ‹ïèÀo ï%{ã«úë¨MÑ 7\RôÄù#»ãôèïü .ýŸþ¸Û _+Ÿ}*ø»ùì rX^¹âçqÅÏçØþryŽíÛOʱ}û¾Ží Y’¥mÖ±íI‘éï¡£{˜@7ÙyÞó=R]¦Ÿ½0O §Lfi³$Ëf‘xؽy˜Ü$O®èÖËG‰ Ã÷ÿãCùþãeúÿžV¿£ÿÿöveë<ßAÿßÕí•ÿï£\+ÿÿŸúŠüÿjôgÿÊöËêKwüW««ørñh·ýÿßv«0ÁžüyìóüßÅŸ»Iîø?ü­ÊÓöÄb5X Eu³R‰›y.$ásrßÏðØg”÷…tØG ™”è~ŸåN¿[`¢ ù΃ŒÈøi̾L‘ÃY `%Ld.ZW@Ÿƒ+$öžz“逅àYl.¯'Ä$¿A™©¿Áýaïê|Ð+î¿^›v¯ñ)F7¢©‡£¯…Óbñd­X+Òïä势5Õ­&>Ž•[Å÷¶<…ïšÅ“Ynw‹V­¾•+t ob…(½)þ„¿%Uì²#Áeïk Îxÿz| Çó)¦…¦ˆüÄDXð…â)!2¸à?>:éäðñç6¦Bññ¯•¯[n&:ÎæÌˆLZÓsú¼w)0†¦¿¹ (0‚vXFªiÎÑ–H̃<òç®»ß@w\«©#"þ1|,×y'ætÏïà[wv³Ç1W£ªîÞßÝ~ ÞöÊ“Å$D?ÊëmŸäwžè宽– ç ~3%$$jD¼ë·Ÿ?@¶(‡ß~ä;~¿åaНE¶‰ßu‡]g{£)ª^ti¥j” À¼;nzWäír…YS¡<6Ú™×$‰’¼ëHò û+~ñ(æÌXîÞåxL¿Dʵ§"JîZN@=gcÕÔ³PèÚ¾»Á”âm¿³—†¥¨îî¦!«ñ½%(Õòµ¦Ú ñ:JhÏ~•|&¶ïé"qz|œæ½ð.Å®z÷ì)ügÏÜ^Á^ûHÈu…Tÿ³S…'Öýèž-v¾\×$Èÿ!ÚCBêÄÀýô™s"kÈÓßoO6¶„†si&T3†«Ï ÏÀrÇ°ß `¹·ãßîæýÖÁ—\Ì.…eC6ºÔƒ_¥~I<˜aî«0ô–_Ø^¢ëlå3êë:,ÅÑ8½`¨Èæ´b(¾¼•à—ª À€MÐ ïâÕ»ôx7é±üþ}ޝ‹ÕØêS~Ï·÷þN¡Ã6ÞmLÛ;uÜDŠL’Çä§´õnµï!ަŒ ¸è©‚.µ™,a襤­HïÚ…1•„"¹*oÕ©jÜ–W¦ÙÄmLV!þ"æ/‹!Ü^œ ´¶9A»î”ï{<*Ïa1þŒ‘£ÁVóvóH@¤²Ƀ3¶&7 `pd®Á9Œ8ûgNꮄƒ7qŸ¡ÎWPÖÀ3èå•B·ô;º;µÄRí1¯––;ªÒꩼ˜Þ¸VŽyQmÌÄÜÖ=fÃÊë/%øéNõL+WϼCßnj種Hé@IãÇ9*NŠœ-piÔc£†È¨Acб¨¦µ©–0B–UWÒDÌ[©ƒR¾q`1R“[wš*ôæa\`_Üc†xDM𥴒H¦v/••¬ï$¯E=á§”.³Æ·&íìa¸ ÜÞ¥ÎqÙMý*Yzã)/ôGÉøñD,‹ä‘rÙøÙSÁlWwVç¿r­ð?õeâ?fôgÿjµ²³åŽÿ­je5þãâÑîâ?NVø…®Ÿÿq²ÂÜÿqgøÇŽþXü‘+áC"9œöå©»¤1G<\¹ý’ô',Ê’e–‡X¾“‚yI :€×‹1¦¬›ZÃ>4Ü/PÁUKâî î±®ßÞÝ’¯á9óî¿›™£~ÌÌð7Bî¼7 B–ü'¾½Ãèõæ³5ê5àð¨?œS;üSù4J¨yÁt6ßêA÷¸8ç츛wƦ%'»n?$ ú3Gä®I'ŽêÏ ‰Õhú«‘8º’«‘g@îf¡æÿõ ]š'Uª)KŠThiÇ×gæ…¥³ßNn²ê¸±¹üà_–oÉCCÓ?(qÍT[F®‚9‡#Ð=ý`D¢ÉK•… h°,>!kx |µR"“v-6Hâ¾*SƒJYfTÊκ+™*k’ÉÔÑçÙ¥ÍI¢¢(hvnÛåÊš5 7UÙÁÅE؃Qÿ¶}Yhï®W׊mk⺹DÓ²M6£´j<«L‘hú10†Õ‘yè•¶°\‘º¸g$­økLnÉ,e»õ7*K.Ó,™Ó snõAÆgÍPª•ä &»O2ßžL¡,’œ•È 'Óë9 4mFcL&cËoæ “­Âšp`}ÈÞæ†ýÚ”Û!(Ãè…ûþD/ãßæv úÕ>%¶âº&fÔãq¨YØP˜[Î<$÷y途è¥ce¡ˆ+‚®;˜aW€Õe¾’µK6ƒ¥Ø!km:„±¬ú\k”˜%%LâWN—«3‘ír¥{Ó_ˇ÷Ï:@C¡—æ¥)†B4R{ Òye˜øk¾öž('êhÿÔ`Íòú1©´¯ê¶`±+ö—ûg…¤3u;s‰Xb%p4–»½þí$n›(˜‚”6ÃÏ!ÎV²uVjQœo…•ÕWóß“Y^¾Ï‚éx£jþ®úA²¸Œr÷ê9þþflÌÛFçybƒ_ ܦ–~°ì¾U/N׊·-àöE¦ ïxYbH`óÝç][ ˜ÒàC['>)Dp/ wSP$£D­&tol%÷†{"²ã›ÌpÚñ¸3»]¦±Ûíš4vÇQaËc·[ou<3?HÆ\e@®lüÏàÉÄÿ«¬ÎÿçZá~êËÄÿ<ÌèÏŒÿ·µµÃÿl­Æÿã\<Ú]üO}i mJÛ´±%]ß Ô°V ƒ|¥D¸¾ñxà¡ú2±C|Zœ>”°µÝ¸ˆÁ4¤l‡áĻÀqâ˜!Šýñ€€ègXõÍ.U`FÜO{M\õ¾­¯xvt\íkÞjìØF*Ã1¬íGŸ¡ºáhÕÁOƒY؇µÞLÜ„CÎžŽØ€«^ÿ’vEoB%ϤB=ÏGƒi”,E¼&Êpãz<™±&ìô†Ð¼à6˜¬ý[Ã=Ôþx2n5GÀr°? ¯UŸ’È©ü 3Ä:Â}FEˆî×`T•—â 8›Ûž¾Xy3À¼ Âð´Ř^þëÃÒCÙ'…ªO+åN0ÝúcàtK$Þº?a´.ã]yñ»mªƒ‰’¨ 0÷œ[¾dÁßâ$¤}é!ä, ºùjR¥u}L„O“¨,䊒¼×0n®0Ì?†Ù‚kE`-¡OIå£F:¤ø~ˆbÝØ†¦Ø¸É-ƒä2AÊõHùR®çG)[¸¨ Ô“‰ÛÇY¯ÀwÖJò¯h\­Eß4â5¬¯ögqÈ4•ØH_„z…}~0ìó øì}÷A€ÏzŽ¦Ñ”94]_… ´.ÿýíÉà¿·VñçZá¿êËÄ?ÌèÏÄïlUâñ_««ñÿ(vÿýÑÁÃlÿ6e8ዳfIœb Hø~Öv»'Gð{‹VŸðóO BÈ5¢¶BÇ®{#È~NÞ¥UÜ×`rìXPŽ=*»¬UÒ^¡>¸ÏæBÀs _2=E4?¸½ BÕ?FPõ)H 8¤bÕŸ(N‰,æ2áPm?”+ú½QT¬‚q9%35!õ ˜Ÿ)ìPt†Ö‹n†£a/$jPáMÖ¯Ö’ÈìIÑäªF (£;‡I”ÜÎQŽç£Á†§*îœæ\\ö†åñu ÃÁCQåsvú?žÙÔBPRl4ä ®§øWZM‘̽ÀåwÆ–? ´ü›nöaÒ*ÔJ»k+tùE—gC¤'êÚ*Ù Àö!ª-µIâ©#ªº¢z…¨¾¢ú¬),úêìþìÔ_]ÐÕ4i¾Q/Ù9¨ÑY\$æEÖCÏp6´ŒÌ¨Þ¤ fÏ…F±éƒuûTÄšìÚãY£!ÌÏÝ45#a.ThB§i막â lÈ*s­‡Œ¯Éfš¦W0í#¢Y"ò7'c6½¢Ðj%!Ç þøï©”Øð‚0¨›¿áD(ó üŒ'ºEXu¦XÅKŸäÞF냕Höág Ø`Éöm¾Úfkôq Øu Fç·ðªg™cdƒ÷ûÁ5ÁЦjeáÑnÈõhÆÎ0b GlÓÀÀû†õôß½Ò¹e;A¯Ü„0‚ #¦ ÏB!ûk.Ñ|“¼XûÇ]ÏqĈ¿{—þ>ÿ[¬‰’ýÇ@ÅweTéH f6Ý8Y1J²ð’®‹UÓ¨Z„²”€A$\üûäïÈþ›#r.D–LÅõ°×<YñY›Jý«Ô(4‘ŸRÉÏQóÙ<õÆØ¼ò]£C1êèØ}‰©âjŒc ßŸO ÷‡·Ü¡šÖˆ fTØMØ—I?G0¶.@± IL/yW-Ö›µÖÞ…gÝg°*F8#òË…oSWµï¢ðÏ之“Àï›%ÎìüKøÀéøÊ¿Ö’ÏEÈB÷Ln±Âô½l­ÚªÅnTQɰ–|–pƱ6Ï€Ó£ùÕ9¸¦Ú`Û]À¨½Ð"åà6Þç%x…Ôj S4ä#X$4šä¾Dîæ`s,{ñöãÊ[:YαlÅÈ¥sœßN9ŸrÖvAxªk­¹Î@1ö'…°Ôe²;‹ÏÒl°‚C·}2‰˜íOf—cÅ2SÎÚþ~càzÌL‘§øþí’s…y·i`ݨjG“2xŒ:à¶É¸ŽŸè|(„v¬è /ÎÇqÝtºGãĹ ÀkŽWÆ_÷f&<ý#c·÷NÍ[(U’çFA%…¾µ*Zë›êI³V¨‘”ÿmº3vÀ yÐòq5'ÏŒé|pÍá?0ô঒l-lЖ&lr1‘øé7K(Ã-ø†±xFF„µÕèó?â_iÎÇfÏ Kk+'(m¼òx½Ÿñúiƒ)ýN>?¬ÇLæÐ”ï¹nƒ?˜+_þPî¿Ûwä¾µ äþàÜcNxiÞwÛŶ<;"¥ âB'×üs”á2dÑ ÂQ“IyÎþ. H¥•¸Q –Hqå7e wgÊtÃç}4ñ뉻Œ}¼oÄü‹„Ì·îá5©—p¢úÉO&ÚŽ%Ïn˜±¹J¬|ŸžªïÓ?ßͧÖlRPÓF»N?·Ÿ³?^v,OÿIQü?>Ž{P’ÿÔý½ƒ22݇X°¢7$7ÌÔ+,\ñW *,–ñWÿؤ’oDP2ˆ«ÈœXÀãæž<1œ žm÷ýïjÅ0g€³StC;k:!ÍÍþ÷ùÞèNñ–ó¼!bM,/­ANyUëITä)1¦Ñ. =öÜš¤ŠôÛYT·lª&:ÛýÛú£q ÚM"Ö´Od´¶`ºWÈGíµ4?¤_ÓkqÇä¿Ú&±ÄÖ#'–¨n.È«¼>[¿¯ÏV+æêíä´2V]‹zt},d@Až®ž¤Œƒ?30ž{(…EZ ڴ_e«ð¾û[-ö")¸b’T •Ç–×y=¶æµ[¼Sf`7˜éZ}j'1Ú˜Ä=E#Æ@ò<˜âÉõqåɵ„Ëôÿš\L¿§ÿ׋­ðB•óì¬ü?åZùýÔWäÿõP£?Óÿk{çÅKwüoUWù?åâÑnûuºÆJ§Ýù£™ùµúþm7Îrx€}ÄàŸƒýN^§m[ßëÈåñàª>mÿ-p‚¯!ˆª ñÚhÑÑð`=ºÍÚ^»Šg=„'#‹n³w8zØVItÿØ0òæÊ“ Dzlq‡îÊ^’ýíÙ.^È Dã®®X5Þ<ðxf% Š•,ð ú5rฃí[ÈO ƯPšä‘¸†Ø0S"T@o§³€ CÙd#¶·çoÔY\¬ð³ðlàËÆÂGm%uN&%y*Ï1%Â…W'7´@O‚éŒÀž‘o“ªb‡¦%8¤`CóDÑ_Üߥæú ç Áý&áçK.'7˜Rœ'hìý,ô¸¯?•Í@Cß°%]JÎA=LŽ¥ÚÆ»Ÿ&•…¯‰VôßÜŠp¾^öÚ¸IÐõO:§û  Bm|Ã^cQÒ¸û÷š3 ÎK·ÅDÈ*[èª÷̪ù@ã¥wIG"ôÐ*/P»Ê\¿5™ôl |Ð\b&íuCZ6щàÆà½˜ß~[ЕA]âpчžý;†7½[Zý qXZ34,P4í‡2—~DJÜGrpŒŒGÐÀ›p*AšˆslRt£0Ȥ"Ú,@‘­¥]¸4MVÀHKÏn5‹i&G>Â;r:¢‹bAHkUdtrbó·"œèBøRýÕ÷FKR%F¤ÁÊ<`93ÀA«ö1ò®ú^ͯ 3;×4OÁJe½4Á… õ‡dñ£ â|+O¬º|ìÅÄqÛÞˆí´é§ýÎQ|NÞY—Hh1€^"™“©ÕÇ"›ÌýÔúÐ è² È %÷ÔÞÑiû¤$%qXïà¿Zw¿$ÚŸ’«¿ÜE ÞIg~ⵃý ÿ¨Ò[||—XkÚÂÈŸníl¿€P¥€ýjÿ„ªíÑÚö!È_ë¬$‹%býj»@ Å?¥æ‹ƒ&=ÁnvÉͦÏKê5_mîqþû›—º_º[B`{¬^k H]YUYYUYYOfb[¬÷¶S¤ýç 1>obqúþ1Ö§zµ5Òççø©ŒÌß°¹o`"h›Iì¨ü´…Àgj?lÚ 7"û£ÑMr;œöh­¼¹ÁÓÈÅ‘Íd Эû–k–Œ„zxÿÌqmÚ„#E+YIάö`7jnÒtÙE“u* ØZJ›‚-Y75 ‚rÈ›š3‹T<.¯WI å~²Û évÐ3©à¡µz>F4¨ïUfþ«U]ÁgU8üeÖ |×j;Ëá×V¥Zj·H…JPN•ÚŠ¥é@ŹãÏUá³.”hEM½Ì†#àžð"Åš…5jyÚ°èâáìò’Í\>å‰w\„YŠúóˆo“ÌÏ3à¢È¶ g!Õ@Ü××’¶vk-á‘lÓZÊ@¥©M"À¢³s9Îá!ñrQh4îÉZ²j<ÝÐÏÙžl0ÈìžÑ`‡ô†ê÷žÅ r@ÿ^câ-âÆ_-Ñ/Më\èmÙ6“™kº ¿T›ÍÙ3š³g5gO7>¥]ãÉZ”¦–<»'nÏÐòÀ@=åÂN…Z–<è@=½Ã@Ñ<Ëïó¸ñ¯Èt%8«ì;Oy' #»TÞ­s·å²Ý&Õê±ÁE{0CB“X%@®Æ  mF«Õ‹NŠ-ÿЍ2¦ÚÓ5W"Rýý­v–(a ¶:`Ž9ë'I«l¦–{.Õ±K;ÙåDº0.&cE¦îù$6«ªèev1ÎÈ}ðü‹Г÷°¢7“ËÛq ©4>|Y47TÑz5iM9\‹0¹Èw'xÙÄ:…%.Šm(.¨˜ñ9æäÍáŠþj{U¨8ô­=„¤á+\c{zs‰¦CeŒ¥ë‡10à]¯?´Ú”hMβ†*’úHKÏèä\æ»J¼ªOÓ™dÀÑ[l}Ç)®4>Å$›ºÐùgÍÙY^&'‡IÀ™ÂDŸ“¹9_ €•3mV~,>©&«ƒl•Mù/œ×iF"e&™wó;¯"çÜù%ÊŠlµ¡ógÜr)NCîfø%pÒtD€)gµ°–ª öÈÃR“ƒÞŽñ †°ÆàáLÜ9±.QNuɈöl†»bÕ:˜œü´TuKÀÃEà“/Vü*W…Öƒ¼B¿•7Õº«¨¿©T^8Ýö—El–ž"lo–ªUê½ÂsfЍ<àHFöÅ_\U\½ƒvPaØJ×"»'/‡4Œ´r­”\ãžÄe§Œ±…—í¯dÿ4ù|ǯÂvórƒ î'ð0à J¸ 0ÔZY9©º[Jr»JÜX¶¤©ãÇkC]]1>ÇÑJ‹Me“üЏ 9üâ ·"Ø`ö ¹ˆ4K¨Ê52®jÈfEÞVÜ‘q±ôu§z[鞎žÆÎÔª{tŠÛ÷œÁì[LW2ˆRIœEtyd{˜™BýûcQˆz€&.o¹ˆzÇïh#X¾wŒãÿq/)@Êùl¤kéÓ”ðßOŸ­-ñßò,ý?~èÇòÿ¸§@ùóÿÉÓµfêÎÿ§érþ?ÄóÝóÿ8“{ûöï§Û[Å~ 9»{Wû–K_hbgÎ_ðã¯ÍÎV7Š|ç¯ÎáñA]ÿùòðàhœj?sE}O’"÷t@)z”+z)ÃMñÁn·wM’­ìú:` ©Þ»Ñ^÷ƒþ»Þ°ž¼ýÏ(yݿ쑽Å$´Û›@ ŽûÙ%ÑËsYYÍmÑî-t©¹f*ªå#¹Ð]pÌ6åõÆr³‰¶‰mí·_¶O’‚n˜¼ :˜ÙFȾ$?̸@jñWJ¸ ùèÓ7í“c¸Ü®8ñ»¢uÌ1ñ‡vì‰Wd- Áø’Epù0Š<¿îA‰ã!”H'¡³¹½„’E9 %wñ”Ç"ñ*³/!2Ϥ뢩—jºËRiw³-{&¶Ø@[¬b´â‹ð•2òYÃJý°FiƒæÍžh"3ø‡; ÿ¯a.½ïáµvŸ÷ýsŒ¡.9,®eч-þ:ây±÷“ XðÅmš•´ŒPºŠÐ`ô ^Lã¢7ÉHzoxi£j©Œ¶ݬú«»ÑhÑUÍË,ñ¼ÀPœG×™J;fÀ®(Bå9´c #ó4eè+ã›Õ,QÚ g„äýè“Eq¾ÉÆh$Ï@`‹„™f¦[Hxïv0åª9gAÅ¥-oèƒ/Ô)’³ì"&»éM&rFÃ̳þÅ{Ì𑆇ù~;¾ÒLöûquäL«ÇÌFÍØ2þs3:ÏÍâ9‡s…D,¯vF2éë£å…f:¨?¡ ôÅyß*üUy Ê› ³ìRF?¥Ð`]\® èNV«fß)÷Xgd·Ï|á-¾°9š2 © ç«„tãkÁ¼žÐ´víl ”äƒ{© “]4m·¤y»k;-¨õÄõ…ÙT5Äú%ŠÐhŒð ꛄi a‡ÒŽI‘ãÝÝË{6&ó97ÞÙ¯q^—F¹_òg•ðftJ·ftd”£W:˜öa”ó)?XÌ}1^:Ô5²ù΋wò[Læt]¼«×âçñUÄ¿%C˸)&EžŠwtRLæòS¼£‹b¾wb‚°Sme“¢ÐZÛ“VmÅb›#muv5ÎÚØ¦ÙgâSo ¨¥ O3n›òºUvvZ5¼výšŒ0.5j½uUŒ{¢•j—Ä2¬ßÒyS(gÜ\B¾®N]•õAÆçfJT ×Á…äéÂ,J‡õZrÄŽA‚>¯*Ô7»R½t“É{ ê •‡ÈÐ…2çÎèiß6ÇùKïÿêÂGsdà7‘Øt/G¯O½[¥cŽQ} ì¯H ¦ëP\{ÆWç2¢hâèGÈýüØ! `<Ñœ\Ø#RZñJÍÒ“kªJ‚XT2ú˜VdL\8¯‚pªu³ x¦é[ L"ô´D6›‰Ý0cÏ}àÇYœà4häBšàÙNÎOÑlÑwÌP‚YQø=µós3z )¡_Ð’&JŃnú¶‹GS 80™þ :‚ÍnúŽ÷ÈáUǾËôYÐýwã š2¾#x‡1íñB±Ç,`.¡óŒ‡’óÙbh8¥5HŒ-íUЗ³ë–>ãŽæód[qV.G3Ã*ï§½±Lš8/7pi3u߸Gp‰˜Ñ;~~§ef•mßÁÖº4äÚŒËú:Vsýþo#ýuX!°‰üýU¥ ÐÍ“Jâ†yoÆ}Îð*”E¡Äüé™,÷³i‚nÝ•V]€t»\h¢½AñÎÂ:ÖyÃA§1PRœ$P‹Nn¯9ý&ãuîah[jœïaéØ'¼IòF¨v¤Î¥OŸPG¯DB'y«CÛûç鸧¬ùœº)°7ÓÆýØ›#ÊÞ,tDÓœu—–¢Ù¥ƒ{zù=Ú¤>Ã&íŒPÒ‡A ¶”c"°î&ƒ¡©jK©µóËcCdÿ/¹óËÃPhÿ×—yWÁC“L°+œÖùâ‹6Ùþç6£Õ¹"îÍ׫™„ÏWÃàD…ù’K¬ m]÷1,9·öØEÉ0“±Šú‚1“h“Âë%äÃlš ÝÁß—fCÄ—šÍR³ù*š5y—êͽ«7•»I|®V¥¢óYºƒ©ÝÎF½¨G,åÞCÀ O[²ã‡â£ªö5©¸êä å×Ò¤$@"l¨±ÑÚŠh@D&…»c2¼£ ›©Èc+蘠Æ `0m}ï("!²#©@ic˜›‰ "ï‰\‰®y]é ÞÆ0¹®ÍC*¹¹\™h/„ýÔÚNÉɯ|vÇ+ ¼&f«Õ¾Id¡S4Uã*¨_ÄuÂX‰è(VejŸþU^¤ýklPr›<8ð™5IÊ™Ðö[í·;ÇgµOŽ·wþ"×—jò#Á€ŽŽòf˪æÊA0§å·ó9Æ6³‹‘nuFq<™ZéÑcoŠi«“ÂÚõ¤T:<\ht{>ÈÚ8mÔ®ÁÛûøXµ/bp‰ÒeíÕ‰ö²ðÖ¯Ú°˜ ?öÇ£!Õ®®·0‡ühížX½Ç™Zªç´k—침†#BØUÍÐ9Q£èœœözþG‚i+ï ÌŸÊ.PâÛ@¼æã—Û¿ŸÆ™·[§sã_œù‡”ëк—ãwØbg[îÆÉÁQÎ2²¿/Þ"`ÝýMôòå~s|ØyïAûTµÍÒÂU¦žœvº'-8E‹öx?s0o7Lq»)U[†™Ýÿþ·;[Û!ÍYƒx´Î€ôïÇ'yMЇá†FwÿÚ9Bû¯3ÌÏÝ©€á7‹8èK=ítߪ“3jtŠ Œ»Õ…ñðºâaAìñ—¤hün‰àãrFQžðw»ÒÈaif½ÕWÛ«þ:ë…ÈÆ"Ò6ð¶´M†â2å{a·Pó"_=‹Ó3Êä„–šp§ö 5¢pU0tøJ<øt[½-8oo«JñÑDƒZ‡³\À{õÄ\§(b`HgÀÐN8,F$q=ô8ò³ìЫ÷)Œ|é¡×Õ¼pVÑа;\Í¥W0ü ۹s:O%­a Lj‹g-Úz?.—@êp¢Yù,·+‡¸’®²|W“˜KŠ`öÆm?ì²IhÆ:'â—ñW4ó%„¾oºKÿIêŒNæ Bá³g%aó… R*c—Ñõ›\Ýeâ¬%ð!NAq>À”f»Þ¡ž ”á>vZNùÀ Sçe€$» ¥Üµ»aD3kK•ãY¤WlúwÒoÝk«¹ÖßJWµ—܈îX/½ÀêáDf±å’€¼o+Ïë»U)Køw`ë@4â°@k<‰ë¥o8QXù®uX³Ðý½ ÍžŽ$z…Òq ÅBa>£ÛÉ;@Àøa¬rÉ)¤:«öˆA\ühDaà®ûðýqFIï㨙À'2øÅY«=’ù>Bî †ó¡ÍN…9T•KP²QévŒ $KfÏq§ 7°×š‹}ÎYš„«„fN+Yµµ„¦Ç÷3x(ÓM ’Y°¯%a«¥Ù˜È9wÖ-Ï›’3îy9¼{^’·é¢¾Ú¦WútWX®Ì¦Wd1V5:òăA&2è#í’¥6Íý ×gî¤waaá¶9—Ej®m3>ôþ7c?Koœù;g™L:i~ªˆåó|Ìü“_#þ¿ÌÿñäIº¾ß?ÃøÿëO›Ëøÿò,óüÐÎÿq_³¿hþ§Ož¶h>ºå¨øÂ7ý#JT ôÞ.±UXx(µ’žnÙ‹äZ·ÿaÔà:E.4a+3¾º/^Ý÷^Ýdôí4©`˜âªˆýJ1H)¨zT ‡MêÚí°?‘²+mšƈ-;Êî¹[vF Ê2A‘Uç?‰È)r+¥7šøkS¿B%&«‘ˆÎ-áüBW€’o0æâ\¦‡ZgpP£+FÃÊxàx`” ÚŸÌ·?™-t~8xzN,‡{W¬ÍHîfäx“B,ˆ|~ù@åó„‘§ÇŽ7ºˆ!o/kÄ‘§Ç ;[Xy“XfŠ-o–Ÿ=:»Û=F¢l”y“Œ3®Pósö¨ SrƒÎ«!¥¸½}åpÊAÜ•Æ ãnÉ~nD÷H,w“@aX÷X@w“ˆèвÌ'ÜÎŒ6‰8[•õb{ã­ÆjеՏ‹€Eÿ…ø­Úç¿¡}–ü†šš|ÛZ#ÚD#Ä,sÉ?‡ã¿¢ÑÁMÑÜ.!·Ñ5ÑèXKk©K!¿ÑØÒçPªNÿZ-Ía/ËŸ¦¼x)·£•«©¯Ws¥oå…1· ‡× M(ý;? zÙ¹…îG (âbKÒ:éíUG~7I­†c<*¯èt“ƒDDdGe‚¢ŽßMßc館,÷]¡á0`ˆs„b‹ð-=XÈM"ê}Áˆ•ΦŠÌÔÙ”îͲ…¬bîæ+;@•Z@õGX3Sÿ7žgNŽ»*¥/"géýìc6 ÷¡¤. M+SzÝÞ›`rrñqá8y‰Ôä?·GêM& ^þÊ07>ìZšúÒÃy#¤Ësä1BU&¤CŒ­½@aXsŠ6Ô3=Æ9DQ€†bÇÚ/áäŒ'kоÁÛ%w”b’OnyMgÈ´ÜoŠ‚R$".ÅÄKa~O‘%úw ,‘Pl “ÐØªô1dål%øÉ /Ó?¬€ ü„¢O؇×pˆ fíݽ͇óˆÃiÈ#ï÷Óíã·ñÃÿþ›½Ã#8yv6gtTœÝû¯½ßÚîü!¯¨¢~ŽâµœÖÌáé «ŽøÙ•?›*æðòœÇ7‘œ^frMäa„*bùßþ}Ô @\—LÜM&ìÔ’ãój‰;»µ¨²Oü²E¾)9~-ÄQ(ZÌb–G¤¼©ìZå¨ô 1|HWÉ< ‡«$þ@géô„ »lÄ-­¶fùpBá°o¡M<—BèâQ‰Jô?ä¨ã{êtÿHŽ:Žgƒ¨ðä¹A˜€õòg@=ËsÛ6“烡t]3Xk…­š”çèÓ¸OfÇMVcÎ|쯒ÜN”8E½¨B1ôLMªê@ t_»%/Ô€-®ÑF4ýV¬ç´¢)šÑ¡£E½UÇ&P 6ëX?q<Ð["?‚\ˆ®èþñ­c+ìûÿÏ÷r8Çýÿ“'Ëûÿ‡y–÷ÿ?ôcÞÿßÏì/šÿͧëÏžzøŸ'O–óÿ!±Û:÷ÿ  cnÊzl7wÂ<70ã±<„Ý9†±{˜©Å©<ì–`~Мè=È9ÇoCÀ¿)FÓðû¡°LýÇ?ðÎ…6X÷Y-À DˆK»0Sý«ªaøÌ…A g7xD ØG K]^KÍ„y¸w´Ã¶+u両ô(ꯆO+_ i>à(¬rÒ ‚[”eåFZä<+Ö‰™¸#~ßp¨k<\$ÁIWÍôºqÝ; 0CJ)רsLÛdZüfp$%1É‚`ÉBI0ó¿IüÇÌÂûbMX>{S®Ñ7Œ*G&ÛL.o2è((M»«ÉáT¥XÖÃâ¢GpPeÿGZC°þ@ñv$©ªë¢Ìâ"r¢êÜ¥r@¥gE-5C“«Xû†ÖÖ–f¹£qvÓw)^'¬–h¼Ì8÷}¼XØ‘óýäEO2‘…W9¼Ñ•¹“)ÚXŽÔýˆŸZËÉê&UÆÖ÷§%Ð@´T$…h <â“H”À¹b2(oLæ_¤çûëZ‹²?7¯@[;êžZ"5‚Õyw¸Ê€›åéŽKÜ5\.±+—nõ¬þĘ êfìbt#PДMX]Bª¾&¤ 3ŒmòÆ]­šSu2;’Jh &•™Tî{qYI¬Ê¤SI„Obš|$Uà=YRˆ¤ŠÁ§L:A$Õ}#`0èãRXŒÛÛq„ÌPÓv %貎ÊtÕ0²G.š& ‹ëà0fF pXüÞxp˜ ð¢ãñ‚Yë3ùI7ß&+´pî,@8wV© œ'žeq!á$ªó‰çåì;g$¬]`ç´»jÀ×YËdæ í|ü—Õ„’@;»u6ãfÚ9è:gÉŸh§[êCîÊíì–q5´ £ëòÖ C4K®%š>.p6@àIYàC€øäIQ¶a4y=ÑÙs0m†q,Q<[@ïÎV™’ß;âôÎ¥nÅyN®ÐKê ±ÇfqT…úl;è_騄œøV² ÂÄ€{Ú'ΖhÑ‘.¬?1zÀé‡û=±k÷dœOLzåhr4’¿)­M†e„$(ê‘Ô¬"‘‹Jìäo6©œUþ®rj—¿CÇë“ O´ªîÒMùž%:ÓŠT㧪„‰ôooÕ}aeV÷Géݰ?½½T’DQm¬D4I66`õ«Áí«•Å>DÌ$"èšÄÖª#ÏÙDôcŸ`X=ei¼‰=·¸aAN”Û|ê}¡†®SÖ2ù¶gê脹r¼‹äD_;f´õ˜dRaY¤£*’¢ÉÛƒ“­®7ü¢XLÇ µÉf¿ëÞØLˆ.ŠÚÿTþyøh^U×W:U(m­<3]ç°Hæ–àÓ&¡$uô´±Ä0Ë£Â\ù¾aä3-I!@²Ì¼wh´||ˆ´›€Ï´ôGÉÄ¡Ñát|QBñ4}áä|Æþõœ[; uƒ°;õD¨&цh›?ÈboȦóÞ4¢–DÉhuÅÒQ:˜½Ha{<§?›³QFâ™6Gd½[?=¹n]AÑ­¡ÓM`§·|G•×ÏÈëÅÐœßøvÌ3¬üEéðò0’ÚÞ'ÂÎOnßáÖ~_˜ù’´‰o‹ó³Í’ * ί'CÜ0Ä{ù ýh»)²q 5÷ˆá/Ì$Þ @ó™N]bþb9½(‹ýJ/ÞYž(D–ï ÀÛG ÆoÖ€…E§Õ`ìe¨ÃZÒY@PòÉ™æô?`2p£¬ÁŒÎÅþs¤Ù¸Sž»$Ú¸S¦@ª ÏBuÕ÷ՙYÜ"”‚U­A¥5à6jó ±¢PáG<ɰ7ÔŒù?'¶¦]³ZhAAÏ .}oΡ¬%‹p†ˆ±Ñ8IÜÕS"Ñ¡êaå5|¼¡Ù»ˆ‡…ƒL ùX?Vy[è;V¤ ÛNb<^ÑB™½3”€W]Èq9#uóªZäæ9xÔ~Os"_Íb§Z˜;K‚nz«u’¸£a¶Ï±lMLKXíÜ „ªô0aÀ©—å!è¢âôBbUö¡ÿI?„m)´˜÷a„NEZÊ®ý±½$ênãt%[B#AÝõ1¹á¬˜ÈÏ1]EÎ5á󋵦 à®‘¶ù%j“Àh´éýq–ÁNíÇñÿ¹€rþ?éÚÆýk"þÿYút‰ÿgéÿóC?–ÿÏ=9åÏÿ'OŸ¤©;ÿŸ¤ëËùÿÏvÏÿgF R!5^΄é©fJM<>úãÕñ¡yäÒ1ÖgË$eÑà(ùõDþÌSt´ÃPÀ±¨¹Ú¬†j0vðaB/Gh:—ð¯ÝÞ5¨v[Ùõu6¨ÃÏÞ»Ao˜¼î ýw½a=y;úŸQòºÙc4‰Ah·7úûÙ%݉ä9"­æ¶h÷:Ô\K× zíšÇ¥ùܪÌ6åõÆržŠ¶‰mí·_¶OàÐÚÙX×fò‘|GW)5ƒ¤Æ¥T zÜ^jÍ@¿iÏ*ÃqÊ ­±+Z'S\pUÊ'+^‘“˜ˆ dNÉ Š<¿N^‰ãç•HW¯;ùz%ó»{I_/AfN/×Ý+¡Kã1TÇS ˆ4š¾×ÉçÂuïsÿúö:˜ÆˆO»‚V¤®ä·ÈÓ@`lzº÷äûÓK€kòñkŠY&Ì•ÃJv3©ŠŽ£_˜¸—GPûÒNH«ÉíPÜ왇Øt÷=4”]ûÛ‡¦¼ï_Ho¨‹öZzíX—ŒÉ1¬Y¡…žaeB¾oØEEÜœ3 и§tD©wq‘ÝL ª;n¨eÕ’"¶%Àõýó±y}˯M~M0ã É#0ú\HØ€ÈÀ‡hÉ£;|øV®*‘»Iƒa˜?ÈíŒüƒzŽHNÝÕ²ýÑíÄéô{ÀN a§¶Ìö¬O~6<¼‚ ùMŠ‚÷¾«ý”á½"Þ#Ø„/]/½þ5YQ8Üö@И‹’ÂÜ!Åð²u£Ž~ÂÚ” ÓÍd:ÉW²kzD7Ç$à阔wvL\ÇíGu±VõJã\û¢Gœê¢FRæ¹a&¥|hÝêŠÈŒÖeÍg¥?üXT)þŒ|oS•}ã»I‰L:m¸¡¼É´/©\E/<òþ•3PÂí¯nºHÈ 8Ólˆjˆß^üŒ¯6õ`5_Rì ±³ m¦ÅnÒ7«×®¤c•CU¥w5ÍÆnÃͬôLÛ©î\*^þ>ÝKr^œÛÃTZý¼¦zs•#>“‡)%S»¡@ú^WÕéK¹ "yΧqoRåG*7Š9½Irþ\¸C)"ÎàÇ; Óc裹óxxšU¼HRå(Ü8›ô/oaQ‡›ª±Â̆ ]d––bÊùÕ§$éöZñ©'W9C¢Î°ë@@¹õa¨i];®ªÒŸòx´Þ¸ÿ®?ÔÊåyƒ¡rDš5ëfYÞ´‰çPK Ãu&”T{5Œ·¡sà¦.F<šŒµcšÒ¬a0Q]6| ’÷£OŽs±ÚyW€C¨5Õ…ðpÕ¬G!¶BÏ³È uÎr©4µ!tdOœáZF !é8tÐâÛ«ÛñEÆ qÖþ§qçV™š±Å®È³y![kŽZ,Û±„#ÅîÚ'mƒåŮڮ¶¼Ç™ÅK;YdmÇ+;Ÿu!ßl«}ò0>Ÿ[ö=²ï]Ô4 жšÐ”Ê;lÐ2!trû8JGJ<“bî _÷+ÂG’|û&ߪVé·Xz/`4Á´ÉI-,Gég7ƒÞ3CÚüVè¾Do¢g‚‹Cß\J~MFÚ<Ägžž¬Öiß̸ƒÚÊS2uH¹¢ uÆIÈT €F ñ +²š«Ø¸ü^ 2nß»añ^u–^­áHs7—ÜP ‡Ñ.´}Bn\lQý(ÎèT ×Á…äÔ,ÊÖKÒ¥_:l<ŸWê›]©ÖÒ»ú|$C¾áä–ü ”‡°ãB«-C ÁÉ×͸ÿ¿‰ìĦ{‰†8TM7¬1–°¸ë0n©ÆÙ að}6¾à2‡’ôQü!%ùØ!py;¦kÑÜ“±GdFQ×:=©TàŒÖöMlN¹ Â@¦wi°Úýõ7œ Ï'ŠîSùãS4P¢à;¶ ‚=óïü§èy¦hál˜Õï)û¬C ‘)Y´FÀ¸„XHâlnÕC´£Æs{Ã܃ÄÝôñ¶©ô,sŸ¹#¨@(Ô4ä¨ kìןW(õ\­…ŽtÙ´'ŠIŒøó:ô¼j/œ “¤öìèsƒË‰U(…éÈ’ŸOÆpž{ šÆ£)÷'ÓŸABG°œÂžOß±z5œàq«ï…mbžÄƒ‹y* 6Îq~˜ÉÆÓÊý“Aïúâ}Eùš«7»™üüJá 6çÕó¼ð\u·Jê"#ó@pµTîû éšÊkú(v¾“aq†Ùgºÿnœõ¦tS{ðcF‡a îã:Ïx(ùîë”?9¶´WA\ή[Z”;šÏ“mÅY¹Í «¼ŸöÆòbw^nà Ò`ÑÅàȘqÃ~Ö˜ÔŸWÁl­KCÁBa™H“ǼeUþü?ÿ·‘þ¿:¬ØDþˆþªÒˆÀ'OÜn ª›qÚƒ°'>g­íOï*{?›&¢ñJKÂ…»\h"ö¤Ñ'ŽygšB¼á âYQç–Ê*Ü^Ó÷'C*°mŸ‰Wж԰‰ÁÒ±O>HÉq* “@úô uôêvL@i¥íýótÜ“zPïV¢Tƒ÷?boŽ({³lÐMsÖ]ZŠZd—îéå÷h“ú ›´3BI] µK2QO«Úâ`íüʰÞÿKîüêØÿu&ˆ«ˆàá©'ØŸtñEß; €~R ¹õ*GªZð{¢ˆÂ U’‡JC[G7íd]ƉC{˜ f7U* è ÆL¢M o,°)͆¼/îK³!âKÍf©Ù|ÍÆš¼KõæÞÕ›Š@Ê|®ÊЙÉgé¤v;açq©ˆ¥ÜÛað_[òs°¨ª}M*®:yCùµ4) s jì‹am€6€¾ˆÃ†UÉðŽ²º¿½*.úK»PF¹üxŠ*Ñß…‰LŸÚ©È»ÕÇW«¢k^Wzƒw£1L®k3¢5¼7Ô+í…°ŸZÛ)Y<ù Ӽˆb¶Z=`` ² ©É¢<ø’H§’‰P":ŠU™Ú§UÐeiÿÔ߃Üfã|f‡‰“rÒã6WMž+h€Ykܼ-«&›Éæ´Üâv>™]³‹‘nuFqT·ìÕˆbÖ"UP·ž”êÁH>(³—£ÛóAÖÐ÷¦W›oïãÆfÒ?;Ÿ tÙÀ«Žô±’®Á­_7´?`0~ìGCª]] #L{4ž&[‡§›ûÛa"GÇÛ/ÛÝöaÇ[+tQoNØ-²±tøº%ÐHK5W^ow_“<4Q„§‹.výz¨Y‰z5›ÃòaŠGë¨ÀêÙsŠ<B˜®­ Y¼î“%¬ïp©nˆz…Œ2o?d…ó <*û§†âí>>rŽü}{É4»x?ìÿƒ•*R¯z·Ð?\^}Ø‘¤)«wâDÙ6˜Ãdø‹n„Äí ‚ü7î¤eaðõGHëù’öþKÞÊðòM»»M’°Ž’°3è½Sª¹ÀJ¥K§"öóœN³ëC€KÏÕ“oîrô£ð±Õ›ÆjîÂBz$`$6!¡ÄÕiá!…Á$‹-VIE6Ü>w’§çÁ­PügÖøÔ~D꺒ú4ìÈÙHådx_„:'Ø´A(væí>·ù²ý$»SÏ`¶Á‹dÀžÄ+S´˜&Ý’=ž‡{0$»&VÇð¶Êâ«A„bÀk;ÀäÖ·_07p7ö¢FeyÖáŠPlÔ0•09|aÞ-p'uëåžø¨È¾r‡ÓœXCÝ–îRw­@)ûe·žÊæÚÞŒfg`­©ÎÕá#otÇêK4C©þ„¸§BÓå:cÝ´[`›^,ft½xö9ʽJÙ[Û5æ¤xÒgMÿV ²ÊÒYKž¿l¶Â„yŸÁÙɾÚ÷Bo“_-Üx=Áð6üwqÌqz›¥Œ#ó[€0;íNkÿ¯Îñ™òÚuñÁ˃#ùÁ&ýŒS Å_D"Ö‚ÒŸÇ©µÿøëÕñᛓת@°ÇNÓ±»^óQ-ÈûÍ*ŽâQ°*Ñ|xqÃê'|ðÄè+üù4ŸÁ xùY=1[ú¯œ–šLW¹cTùíßOÛû2¨<†ç‚âƒû3|_Ovã2Ú:h¬´_uNêI÷ ñÔé³.‡/êìÃWFçŸm÷£ÁÿÕ}+b#E»kF¬ÏH¯‰å´´t€yXø·éE–· M¿ßú½ûV† §¿»/÷›2V}(œüAéë ŒW°ÃÑÈô’ÜŒaçIî¼¶õ ,&ï˜ÃÄv{WY‚g8‡ê÷XÒà=\èKé­Ò!¬WWE¥nlú«?¤‰®î´ö»ÛjháwÿÑ3ìÑ[£—-#Ö³8_ðÙ£?€c¸²29ýñ•Oc4’kPš}«sÄRâÑÿN|£É{Ðûìè~(44u e@ÞDÈ´Ö%Ä|Êm°#÷ýÿaO}!`z¬\R¾.ÎM ìtB瘲Jw;œö>õœ„<|Ææ´YP6•Œ@ıwg¦ÿêþ£xM?V""c•ðVг‡æ¥3:q„ äíš–Þ*,§¢ƒzKw:hMQë©â]'/‚ûw~ÖñB‰lSša¦”È|áÚ(ß›;gv(‘ÚÁ¯ÂÚÞÜûŽ3p š8Á,O‚@ºÖ_*~Þ®ÒïXTÁUiBzƒ ŸZìp<Á¦X It6€ß»oK4…÷w[n‹·îèrC»ä˜8RºÁîyA’-F­¢ã‚ª¹V‹*-‘û[ûÿ‡¼µO·NáÙÊ{̼ñd…34bÄE¥ßðúÏé3ý¡jIOšúì+§H.ŒoF÷&ƽá‡Ú-.úhä ú˜’Fû’\}=_)Sæ‘£¢øËÁeqñ)¸ìw%}Îd$↚Âéf¸ƒI¼‡Ü!“„Õ·ÜÌ!fÚ䀬‰Cîœ7¤? f 9“=kÝ,ѽãq¼9sHšâÁ»Ì:R‹2RX7rìB5 8äP:ýâðšÑ 9B·Ž²Ä ¬<û ±žŽP\™Z‘c;Ð2Q(“PT¾B¶â&ÙG_”4Ž8iêQ9¤!(Ì^AÕp]$“A$WÂ)ßÌ{ù«SÔ ˆéuB¬å‡Å¤çä½õ2ïòñ%éq‚¬lÎŒŽžÂˆtáôT3dE;nIEÉ\À@å2††¯„1¼Á ™Ñx˜Ž9@VÓ§3×µ,“IþA,£’a|bÒç_ípí ÛrŽæôÎå™ÓhŽI$¾2?¼¤ĹcL¶ÓBAo“/œß€Ac&†0íEiÎFF¸ ytîë°‘ó\ÉŸAËE£wð±FâàÈÜ”îÍ=vß¾˜ËpØnæ¹d&Æh£­‘7Ü0ÐKk!sUÿ-0k4òºm úDÙ9x …Ì„?AXÚi#M<»(t©B_æòÝN«õDþÞÄßmh"%ª{hB«Ò&2Ôø£Y'-Ì{E&Xã&6¡‰ƒŽÍ7¾ÅGwç…¬P*?y¡ª7¿¢O^°È©Ï·“ö ìrya":jmÛF©?¦7jm»2ñL5ªÏÑr³uhsvú¾?¾Œ¬`—5¬MæKÇé~^ïDúê€d”÷~i·ú/ÒÌnì¾)/¯¡^•Vh9 +Û±­â/G`%¯$‘Qy¥ŽËkD`ó$6*²y2«êAÙK»]ý¹¨Î“ëDnHnsÅVp­@l£r+ûì„ì7éña¬íêOë>!p¬üé{5”þCÓþ;½l~ ûOÀþ»±Ñ\æ}˜giÿý¡mÿ½¯Ù_4ÿÓgk©;ÿ›ËüÏóðl·7ê“­fÀú»UO¶ëÉIëÔ¾‘ÍÍ’¼´þæ¦.Mønö_'gï–È »-~ÂV)nsŒÄ É8Ü––ÖM=CÖõ)ü#mMH„ì'a˜ ÛéˆÍP“þuø‡1J§°L”'ÏóäwÌBÁAÛ‡“ÿÉ}[“ãFáˆå-À•åÈ:&Å,ÈeLÅߺMxÆD–ÑcNgËCdögÎäc抑(›‘È$#M ¢Gó¤%š³Ge˜NPd¨´®»Ã¦ìÅ”DLøzB•æÜ–›š1+…¯ŠLçTqÇ4 L*cÝý>ÑýVµE›eMK³}u:‡ÍÑ´Ÿ³ Œ0œŠ‹¹ùW°ôôœ©Æ0t‰<Ë‚yÞœÎáã¹úÔb*m>º‹®Ó•õE…רº^™Ç¦ìs$%ÈEöÝk¶øzïn#¶‘ÂøU·J5Š9áÆÀÚ¶*}tŒmQB[ÑŽí²íh¤^KFWWù[³m´†’àØËþº–b@ëÊJ4äbîÆOX“’ OD«ƒrB©t¥œX e‘Q7LE±.ab‡K0_àˆý9"ˆV8ò¸k­õ—_5“Ø—ž§{åGÖ$$¤¥4UÔ ^W†˜Øi•þ÷ºÒ¬Â?©; jõ‡ø}O§þQå_óà·“F2íÝ‚Jöÿ ßà0[øM_kˆ4ž¼æ|4>!ÉåâòåéùÄù]®*ý~KŸ÷œŽ‰Õ*@‚\½[ü‰«Xܰ CRqÕŒ d\0_Ó*óS²ùüõù ¼±¸ZK_ûµ&²<ÄWšàð-Lq …ãê íFÀ5±Ä´ ÜÇ`ÀA[dŠýb[DŒ>†ë ™@Ûó}¨EìRkÕyž„kíQAO+Ir ?2øïcþ[‡ÿ6’ª]T¼ä³ô#ÆÍý`®ô8épïYÁF®à"XMH$³±¾Ÿ:÷×x– Þ<2é'Ÿ1M.«Óä5Ù„ s Š/ßÂ~· ß(àŸ°» à…Rƒ#ƒsÜ4§A{w¸Å8hy##ñ.n«,Icé·'„ãžày^hѯrž˜/‘ù§íÏððã=E-5‡Î…  “i| /LM^˜ha{€EI(ò–¤NC,JÄ5±(Q ‚v­Iûø8ÍÍ¢uKо¯u‹N²u>φ%J4àk×u{>lx«|Z½ˆµbý2Œײ¼¹a‡\æ”?ì‚&{QQ­1[ëEÁrÇR§<«³ÝüÊ«µ\­{±†—]% ±…P‹mù…ÐTŠ—Àf| ìHJvi±j-tÜEòŸà·»¨ÇÂ]}Cø¯'Küǃòižò=Ç]¢©.‹>çƒÑÅÝ7ºäJÄ~Müµ©¿§×'êbMå~††ÒW0UäD“h•®$)ÄpnÉ~ö1áN6÷[Ý%Vn‰•[b冕 ¢å¶3ÏóœâÉÞª=Ç)žð-ŒÍ ¤òª>$ ·¢ïÀg QQ[v`†þpš9µ¼Á¬ƒÁ5³Á»[,sŒà^ö¡ŠCD"JBÆžøÀŽqâEÇ9^ÕÌ—Ù[•õbƒ ²½ »MÐsɿ Ñ)ÿöZgÒP kÃlk°ô94ÿµ˜Jmî[juˆ>¬­[Z ´´ˆ«Ï¡Tþ­æµtF\V,Ë@e}àù¡|š„RјD>Ô ™! ?yÙhb …†?Y %ÄëädGçÜ"ΰ4ÂT°Ø›7R^dðÉhð1£-“ivMÀ&8z›ÙÿÊbÔÖ~i4i¬=M°dN/Þ“œ«ÞCÛ^‚H½«'½é{ÌJ¨RÇÙÍ w‹Ñjsmƒz4X]Ö4ZVxº]nmv[{{õäåá>P®b´XË,oŸqŠVrËV9 j·Ýí´:~«jÙù×ÒüÿìÙfo¨ëÑ%è>"I˜¬rwt­O}P7G.¬Âà=NºÙø#ªœ¸s(Þ‡ö(›ö§lúUŒ! üØÊn¦«uûï GŸ?¢ØÂW]Wµ­D³ Ž©†‡CKëi4EqŒ{TVWNñ8:¬&+G°LœÂô'ÁÆú«vËSÅ1wØ$Á÷W°€ÌÐ s#»€ãfS£«ÌQEÝÆëÚÚMRÜ›†æÝ‹Ì,Cã– ¶°Ò¾Šqê+r[0 ‚ZoÂ`&N· ¼+#7äT5Î^L¡ºÊÄIx®l\8wcK‚®²~ŠPW¼«£~«tÎÎ\G¼Wùˆÿ !±^rÀOyÇ¢÷ÈÌÞ6ßsW õ–zß6>ø—P_ Yšðå"õEºÀ°¶he•¸Eë Øê°{TW M?*_gèbáFJW†LH! *mŠ}6ŠZ‡M{"ìÓDH«+ûøžð·?öóf¾5úCk&¤b& ¿ý™°oÏ„Ht­‡˜ ]_ˆø‡†<Òîg‚|/:>&ÆTQoLjih6¤<ÔsOˆt‘œþý~Œ.‘q&~ ÀÒ^¥xKÏ:ÜW†b.,ÛU€övûÕk˜ÉÝí?N-HŸ^Ä”L¢.u<“•ø¦ºÅ¡;ëI›pˆ»ðúÔTmöŽà¿îÉöQ¼‹R Û¬ ¦(…)ÒVkÂoÇyWÄLJo¨ °ëÍþwâ¿Gi ãó =ëB!ËáBùËëÛ(î“_SärZW>R4¸Îsꚃt_ ãSgi÷÷ã`u~”i4/Ófš„`¦;3ÃLÛ*G’Àª …æ#ðÁÉïýhD9‰9n¾°qÀ«zX$¾…@ä5ÿŠ\Yª”w…–RpÔqÍÐyp¢äœ9ŽRUö¤ùÍPƒÑè:q™Á-´q¤CJH‡1›ˆ¦Â[² ÙCÜ+þéÛŒªaSÛƒ3< 1ùŒP%Ø“ ö}¥!5ñºð¼:LN“gFÎZqi6ëØ™Š3߯½9X_„[“PV"ì"«MæÐÊÄïlÛÓÍáQ+›Ý Þ·àºM‰Là U 4°Ñ7£ÂöñçxÈÏÂÊ-âÕíñ–.νxƒ@^²6?“†—µ¯ˆµl;œ¸ˆWUx±¡@¤{!©¨T÷–7®=;'’—/H³09Àžd1Ç{]«àòˆ )0²ÊÒÜK:½ÎsJŽFK‹ "lö%^Ê"w‹ÔžUfïÈþÈc åÖ¯¾Ú^¥¥bEö5‚IŽL1®ÓJ$dÖTÖå¶%ñQ¥üìbÊÂV,©. -¸æä™ËF±¼MyÁâY3Ä“é)ÁÃMH›CEÔéŠë.sÙ{¾‹Î»m¢QXBOjq|m6ˆJJ¥K¶nWõ‰S£¹üù¢Û–¥•Šœ@eÝ‘ÉÂϼ"–¥,1v{{du{Uë¢m3æ¯ò{l 'âºÑ*¥ºÑÖš¨Õ“9Ú%îtËxoYd˽)6#"øÈ®‚¶°½¤!(Õ’Ô[­öŽPÓÚÛ‹ŽQ;—À÷)y?\NüÂoØhDöm,å¿!à'Âd¥®¡q‹øe޲1EPñT@ÅIGQú·J67·´B«V‘9µþ½’>¦oÞð7þ„9N™o¥ÞvGôRñ.¯N±÷NÔ„¨`™¨},ÂõSO­`/“uN$‹›hSzú/ƒÆ5xH­pÕ¨ú‰n5Äï!õO–Öe›Íõ~à+«]Âvs[˜H§¸]õoˆß¡¾hH#oKtHQÃV°ïX¨¹æ¾ÌkÒØ•»ÍOË´Þi¤â-®iݮɰP8ŃzQ$¬1åxÉ»ÌÁÁÀJˆw'Þ¡ÜÛÌÌŠÜÉÞ3cŠ{Iãņù¦þNpÄúÖïÈ–¸–º´ð®žŽ´ÊB^ ’k R ¤þ˜ 8éšöÌq–rÇ´%/à ÓVØÏ±„iK\¯)ÓGҞŴE´‘oÚú ¡ÔE¦-X;KÓÖ½˜¶ö‰µQÓÖža?è4öX©¯- \&§–®¯eàÂ35$”ŒI{uKòlÜŠÍ«]Žá­cÞjKC×ÒÐå´«ö]ºj‚Rãþ ]Ó1h†–®Ç… Ú÷õ~LKloGQ3V­´=쨱'ïöö‚ö°½”=¬–k«}%{˜›oÁ ¶_dÛÄöc†s -7¹f3›âx’!Hb˜ATó¯g[Î*l:˱%Ò¨P`?K&4Ò8DZõÎÜÙcHž°Áï$?÷m‹Û^°¦ÑÚhVt/¶>šÅ—7ü¸Ø&F0aãè–E:w 9DrS²°RAûÆ&±¿”ž†Îcº@ÖÂö¾ÙûtÕФHÐÌ•.IÚ¼¥ÄÍRÍ%G›Í”),øÞL¦0j㉠1…=•¦°šÂÂv¿Dš²š©mÓ¦¬ZŽ) ±iº´6„Õ\#Z¤nhåe íü,Þ Vc3Ø Ä“¸,Òî a5i;õ4b sŠÇ7+÷ïïË V+ek`«…Í`†ÌPNŸ­ùÃr³S2Êÿe|ù­Äy²Ìÿõ@Ï2þËýñ_îiöÍÿfóÉÆwþ¯7×–óÿ!±/Ûñ_Ž·òó½9<eqŸ,#ÂÏCD„|œ`9PlŬyÃŽ·Êå ³¿"×0#[ÉìÉÃÂýå Å(W:ªÉ¯N /b‰WB4𿤃f€Î?)~‰èÑw¿ÄÐe®¯e®¯e®/¢¿ÌõõÉõ…ê 5ç†Å2+Úîð:­“vUõv=¹HJ/JV‚1ÓÛ~xUÝLû×Àc""…W´¤@x#BK„$‘ßПÙ,¸3s·×èO FQ¯wV:›2’@gS\¾XÓQ´˜}þ…g¢ñ=l~L 9E„^¢xšüç6ƒáA-~2=êòWñ!íߪh[ óÅ-·Ù…õÊnSebpkíuê"´D"ógÑâEjIˆ.{ÃQ’Ç#K\®á(Gq6 ¬T urG)ÚÞä–ìúm¤ûi¦È<ËìqËìqËìqËìqö»Ëìq²¤ X‰Ä7唲ÿûéöñÛz™"lEj¿éRÄÑìoIcÞÞápÔ…¸É§³yÐÆ¤ göÎQc¿ur¼%ÒÆíÕEn†FÕ@lXN;gÏBbê~k»óG¼“2 ¿j̓§cq!&VS·_mhHÇ÷öC•¥^Q˜³õÜí•_$耞=ŠÆÝ1L­ø NÜ”I¨7Øú¨®ìäCGÿ™Pž” «ñúc¶¼ò=5¿RÐø’±O¨I±O“Ãì\@>>“ÓÁ.§EÕ ®#°X…zÓ5JRE›ìÀÏ"Efz„?áÙŽ ch8YkDÖ'’¾Òñ¹/F—Æñ§2èM$Ü u¬Á§Þ— èpÃË«4vÁª-> !g9)Gë…rd"õø,M§» #£wÐX‚»Ãùjtûî=Ŷ1[j5%vK€±Ÿ¿´DY4MMY|1öꌦ²ºÈô‰>Iv6Ÿ£ž`LJ— |NÇe>C‚þ€Le åLƒÉŠ–G㋌)_¹ì±ÂÑ›dS UÏ"çò$+ !Ÿ1«}7€¥£]ÖX1š3¬Æh³D­$Øšüxø>ã–± ØoSÓðÌœ?¥¦aüx)préóè`Ì&;T>'°F…ðÝÆü%Fç¬ÖÙþ¢Ððª%¢Ú À×5C€~6àU[RE$ޝÿ¼_ž7ȫ̻Ä"‹0þâ ª8R¾E§G>4âgÙ¥Xd4ü÷vÈR{) þ}6u$R&Ú3.zÛÄÒÿÔ¯uÝ× Åœw‘§§¡fÚúäÔÞ§PìÉ׳Ã(k,§<ë>7›¬¼áÍûµþ9eÁÄr¢[$zÃûžèÀX¨kælwœ’ª¥˜Åê'RàôÄ/C¦†{Jîúp~o«ÃzÉÕ¡f­e׆õÐÚ÷„^üÚ Üî-!¹ùB®%ÜYKlu%zÜŠ£oõH|ã9&müïÕ·ƒÿ]æ|˜g‰ÿý¡ÿ{?³¿ÿ›>Ýðð¿é³åüˆ‡g»‹ÿ݉æ\BcÏ· ý½sNÈú|P߇L)2á©K í:ûú¢ýëæ ç‰ &‰Dó$Šœ5Mäú‚ÓD.!ÑKHôw‰âýò2µ-S:.S:Šg™ÒÑOéø½ÁoÙðì· ¢â6]e˜í91 Œ­I nkÀDkEª,ºß[âm¿]¼­¦ò›C¥6Æ>AáçÈ º¨Ô  Ë z?ÉA—y$—y$mjË<’Ë<’Ë<’Ë<’ e/-í@¥áÿ›A´4õ¾ ñìðìîÛº&ô°ì‡Ïp¸DB‡¨<Ó׋@B¡w¾= ôÎ=¡%à)ÇÚÍâ“õ Å€µ1Tmb<åQ©²Åôr³îCS£chDÃEm|¶—Á3f¥t~*ƒ+ýFrcî)óÀž2 o¯ÏÙN-Í3òôȪ¯Ä¿šDèÔÙ§C㕼 ¿ì‘5Qai< Íäâ4BØ©—1¹ÁfÜ­G›Ò>œƒ®òADGÀû•I–8È¡TôBÂD!ìTàBÞÄ÷6#[à×¶»Jž†aOW^§e#ø6؆VÛ­õšÁbbß÷Ã1ʰÿ£¡aÚ!CÆùšŽLtßæªÞx•¢Và@»ùÄÞBßÛ›Æb²‰ ß÷’JäÞW‚NcY¯F¦{Ê^Z ö·W;Ö8=|@¼í¼ë>,^ˆkÆš ÃⳈÆÒG…E.žK.¢ñæÇW „@ïÙ¹¿‘•¦~ÕhHëòï[¨ÙkdÚªs¤UùJí †ìbê…V.^”/É;!ú]6Æ|Ó󘉖öxœ˜jÏz|:.(ð¬·b6ÃQg7ÖÜÀóÀaw~úNà°?Ücãûß þw}ÿóaž%þ÷‡~LüïýÌþbüïÆš7ÿ×Óeüïyx¶»øßvþw ü5ž‡þ~ˆß¶øí#Ï'Yë‹fŒÕ3Õ¾Œ‰DþàÂ^N´æå©¬G5egqPÖîMvÑ¿êC§DÊL¾V´ñovsQ¬°jêMØÓ͌ЇÈ-¦…N ÁhçAHg˜H&g ñ´~QÉÄoX; Ó$"A-Q& Š!?¶ð˜-ñhH«¢$ºjŠ;ÇDí¿ëƒ±†ÁQܯ®•ÕÀâ@ xRÐWÙU1Œ1¯&! ýÕŽ€æÙÀîÚ°×hŽI$ˆÆ}0è«MÿÞ¯ÎR ‚”ørçc's#ÒΕ+BÊ-(ÂÉAí¿šëbújØÖŸúø6)\£ÛÁ%IÉy¦¦ë×ïV7ùFyã·‘‹úV_@«&4ò …¶|¼GØÛ;BK!ý»ULj{'ÛG‹4êînªÛÚ(œ^ÊiIi0ÃËã·uÎ]I†ƒ?ˆhhmvë߬áûÅ-¸×¾3ÝÙ·‹ïìïL¥3çË÷P!Ä™µÃ¸]X¹†r­[ý©Ìmµ«ï‘6 ‡¤çíÏX["öØh:…hÿµ ½Fp¸CyY1ó73-à,-­Š8|ˆ¯DÖq?”æ¯sŸ¬¥Áì—«ŒFû½¡ÄõÔ½U§cMÕ±ÔÍÊ·àN5ƒ²ÄTNÎ2Ãú’·.Ü×*­ªèiîaÇÒDsñ(ž—ÙMƩĎéð0Lt3Ä¥aÎ-EäÒТ3󭡺½².kì«´4ùœ¸?Î+mÔ*¦nºÛtNL?««Æ…VfVÕÊ!)0.aÕó`6ÃDÞèá¦/Š,Ë:)l 'oþPHâ!ªTiÖGr3Ìšµ†,›Yù÷mÚ¢Ùª*M)¯>·’@ŽI™ÚÛ¼ô/T› .y^) <À"]û^8ßhk/±3¨ž8_…Ò±º/é·bïlÁ÷'+Ð’½¤H¿j | ÷Ý|)øŠ~¡Á {LÁ…â2/sÎc±¥ð/Bø½‘0ÿ*H&k´Âfžø‹ãXEyèó^xpîGêɱõwa®Ýœa W™³5rß27Ë#¹|èܳN\Ö½#Ôq÷ÂûY[›|7N1åŽaÚ x•;¨Oÿº)ÅðÁùœ£o¬² Uzï¨f é‘™«Ü¤‚§Ns2Å×5I)ðŽø×I<Äš_[i„›‘µÇnD­Ôœ<ÊyóH¿ê5(š.Y}’›&x„^°5AËÙËkžŽEX6ä›Ñ1tQ\…÷aUÓÔ4‹uÑ ‘rº¨nDŽ>ªÖØ×YuQ‰a9îk:xccþUJ; ²SýtrlR|¸s(°‹°Fž:kÍëï’êlddÕ~ ítÜëò4Zt³’³õÐÕhEKö}ûRb«¬À¶£˜ÂZ+§ô5äaÉ“æ#Sh¾}•7ÜŸèG9oéWçVya•÷ ©¼OsŒ²’R¹½Ä"ƒÿmÞpüïÓ´¹Äÿ=ȳÄÿþÐ…ÿ½—Ù_4ÿÓµ4õð¿Ï6–óÿ!žíþ·¹ <ó#qÀ@êÎܾ{;ègÉ>軣[yÕÝêÿ÷»l˜q’S …Z&aÌÁSïI7í#.íÞqŪM“lÊíÙßnmµ;¯’­öÁv§Û>ìÈaVð=,~ž|f*ì® rÆÈhÔ-|ñ%ØÑ%”ùŸeîl.qÌKówcQ}s 3+UW*ðc]h%öF¸%â¿êwe¤QºizuêW1« Ès·¬FøÕç.¶¹ñPYýŠÍ­Á°¬[‹ŠËº›Íg|×E¸©¸Fv€Øä?·),Ýw‘ÿzV$·Ð›¾¬u4„×ø*AW(¡™'Z{“•RéÕWÛ«‰g%߈$f¤ÐßÓú”Ĉ¿­GÒŸ}¿pr. ­gX\qàáðxdsÀãsGk7ïvNDE!ú£âÅW‹¡ÜùóÍ<ùShÊ:ëN‰4Ï ÈPk\jfçòîšË‹ßþÿùL€³ÛÿŸÀ‡Kû߃ŸZ77ƒ/ ÝNOZ'íÃNŽêxŠÆCùó¼c{Bçv¤d5Û٦̃v;pÐ…äqu}:ÌD¢Pà»G/Ä«þ—´ãñi¡}TUF@²F‡*I½íÆÊ0é¼*Kçùt‚û¶¿+Êö@‹iUw.ºô¶¶‘æõ[ÖóêÎõ Wá?@ˆ2ÁŽç›ßl¯®®ÞÑÒt¦¦ÐYMM‰N¿ySSc1¦¦FŽ©)x¬8ò˜cj¢jî`ij¤¥lMÆK °35Ò2/ãX|KÓZ@zÙx«B§¤¥©F°ZH:QkS§ñö&ÚQÃg‰ïÈÞÄuî7¥ýÆí*( iƒrQlS,šÙ¢ÂJs5I©œ h£RÕ‚LJ0Bî>80ÖYž6ˆ¼“<Íâ Lz¸ç74¹ }HCS£¤¡Éíg)#qˆÖeKšž©_wÃ1'ÍZÃ2aÍxŒoÌmŒÚ÷Qwá;‹ïâQ‹á»£Â¢|¿Æ¨¸=Èi—QsÃ1'•7D5,Ö½É/þ®dxß4aì£j?Ï eÙg‡*k&9}¿£ʨ˜wb1ZN'v.ɳ&ncsZ©:¸Ó5´­J®c’_!®º†•“•(eÙtåŽûü¦«Â1Y ájŸ Wûͦ5e W‰fy ¹ÕcA¿U}£–j™°h9MÉS7£‹¥¯bÎdá’x6𰽉güeð‚†9|Äͱy<¹{Õôö‹ŽË Ã\ç+D¡¯i®û¶ìu;®¹‹cr÷.U™¸É­‘gr+*ãlèR?ý¨NòÿàÇöÿŸ|ÿß`üß'Kÿÿ‡y–þÿ?ôcúÿßÏì/šÿͧϚ^üßåü˜‡g»ëÿß5“Îñë®ëZ±‰-#ØÏC8ò×Å <°?ÿf…kŸÑ•¿ #<ø˜ÑP™L³kˆ0'ƒŸ]ÅZ+m3ùÔG/OòðG ÚÉ_z†—uëg¯ñ°gÿÒ­_ýºný(Å%h‰û6 6î¿{ο0'°FLêI5[eaý–È&c’±²¹*ꎆ˜!¶¶ýoJŬÖÍSà{öjg~Íë×¾i Uq4ˆÍ:vN@G¬´˜¸E(ve,£y,^=Sƒ²¹€AÙ\eJA)ë`_èa?§‹ýWöu_z¹ß¯[û.ù²ïÅ›Êþç)ÿ lÒøÁÖvçðà;rµ}ü8FphEÓ^I'ò¯á .)}žÞ¸åYw‹ÌàþÄ/»Y¶ì¿l¡fÚL>ãݲã%×u„Sùêáñ*s0êc®ËÄ:¨„pž¶ Œ {µæÜRØŒŠAùšå~™Sax0rjwq½ÞÝéàXË?8ÆO„-‹B-v¶,up|VöàXîØX+8^:‡ÀrÇÆZZæàø¬ÄÁ±”Þñ”ôŽ•98î/èàøu Á¿Ü«!8]{¨“ã¾sr|øÙÓú½}Ú\{r–(u(±6õÚ!sFܰ 4RK ó2sm£¦@äî•_E*¸- ï˜Zdœ4Êlµßס¶”UòÜ\`i¤jíª¼;F×rÆX þÓÁÿ7ï<þÿisc‰ÿ}g‰ÿÿ¡ ÿ/³¿ÿ¿Öl®»ó#][Îÿ‡xx¶{øÿfI€œÝÞJôëxžž¼=ÚþÑ}¾Él߆“Ì 8«¿Aó›u8 Yºàä'êsÌc²ôDXz",=–žß“'Â,É«Kç…oÇyAçäû¡Ü¤ç‚H€'\º 0,=–ž AO†æWve`¢Fº¼ŸŒ¶Î•O·b!ÎGt†Û âÏ}H·Æ EW Æ«_ïd¶ÈËe:é¡×½~æÛÄAêä tý¿ »Ûër1Ž_²n™TN“ÿ–BUM¿±†õ_ÎçÿŸa`—1ÓºF®‰ŽˆñGÚV]Gõß„7«v[ÉC%¢¦ÿ¢?½ÊDU†äšÁµŠ#k• «•ƒžÁ][Ûqàˆ•o* _Tñ+Ô ‰eó¢á¾$„º…b_jFƒ¤hôQD@¢á ܳœ‹ jÒ'y°~4¸¡]€Š—˼k- uÐ%‹áÐ?ë bàiã*gß·òãÇ ó? vÃÕééŠÓ俹ú_‰ø¨âÏ${âgîI‰™KÏo;ÿE¿Trê´+½ïL‘ßíî4K ÊûßdSVlíͪ6Ãf5 ì­*´S™ü™„T™–Bù BiŠd-ÍÊZh ·å°¼!AÝ^Ë¡©1íG4¦ý²Óþ4&·2Q•©1cYœ:è!5¦»*;Eú‹RtPÚQܦ`Mye§9›²3‹ªS€ço;*Ë,ªNlg³¤²“H•¥–xQOƒªM-¦Úè9å«5û¦Š±ï©5IîôšS­É©ÓUk–‡îïàÐìNƒJÍ,'𻜿s”Û’uœ•±9—·9åáÚš÷l[>¥ÿ›ž_Œ†_3þïÆ³õ x¡IøŸ'O—øŸy–ø¿ú‘ø¿û›ýEó?]ú,uçóÉúrþ?ÄóÝÄÿlÂúÆáñA]ìó[íÖ+Úè÷¶`³'ìþ{ /n‰ýÞU] Í'€ÿ5¿mð<ÑÇŒ>Ml¥ÑŒ.y…ˆšä¢7$ÝýÖËNLn½ ‚–àG‡ÀÇgÉNvž¬­×“îîkmšÑ'ÆE”x3ŠîÃáã¡ë(­Ì»ó§Q½+ìOC÷¢õ´ëךìGršd“iÿº7ÍØÝgœ]ôA,)!`,°ª]ö £QY=,o`ÙÎq˜%2 }ú“¬¯°sicˆ´ÑX`ˆ®úÃþô }(ZHÀ0zç*i¡¬* Òí Uñ;XÁwW Ä‚”ϳ….LPŰlGú+ÓuI”Úà$]aú­*0Ö¬)©–€¢\!Á¹ ‡‚m>ûék³¼ÅÒP7ÿ¹í³Ëçd0}„ä"rësA…müJÊd`èJ¢*%²‘F÷Ö7Œô¦ š•â¬-WiG‘ކ[h}N½F íï.¹·UŠ–žr“[`š¡ûŒëwÕPq³nK­.¤‘ú×ênó¿i¼Û­vçÔ×bµ¯V P÷`¿sŠ@Iü4Ú/R 4ÃnëíJ²äΰ£áªŽí)(ã/_×ñgçDfæ‹aPë‚\Ý-–Ó‹ÒØT:(Å“Í.ü<î¾Ü_ (µ…D©íÆVŸÊ +ô_Xà&gÐüV–kŒI…¦pTç)аüv§Šð”ÐDùøZ’m$ ¬ ïCcÝöLÐØ;ƒm=ð,=òIŠ®æ‘ôÀµøÝ ÷ý½­ün‹ ¸¸MFK=³/ô°”ÆÞÒÉî>¡·nýrïµ®ZÕÙŒíWHøŒ×ìGï ö}8s\ß^Ã8®àä«$|ÙÀøòÍãÔ8Krü ÇãÊŒKAK4×+Q)“ ©fµhm½­8ø‚\c’¿±v­ùFãííp>hx[žpÝöQ’ì€¼ÍØ,Lä6ÆgC´v*r½ hC“¡ñ´Ä߉£Qé¹€¥¡@ ‰¼£åº‚Ìe£E‡ƒP ;ÿÛ(ï¹´ë¹·°øUx>˜/€Àrãƒas?$JË a4öµ^uFEDÑÆ¤vGJ“‰$ÿ¶¥J© Ì“æŠàŠ;‡?éfº-Ù•“‚~`[sû2_?¼4å†ü¾}”º&}L•àŒ»áád2J>îKg¡‹Þ-Θ8WpÖ …¡¡Â(:¨~F0¾Fc•EIj=”ò÷L,"-d'÷ÊVýuŰP©±æÑ®Í_´òà6GBi®…uj©Á~¿Á–›aŸ­— ö›Ë«²Æ‰%Ê8ù‡7/îÏjä| —rS¨H q–@4T,°•4×ÜE&rMN[â}Ü’›÷¿ã«o&ÿ+ü²¼ÿygyÿûC?úþ÷¾fÑü_OÓu/ÿkóéòþ÷AžíöýïñŽÒ¬NŽ[®sšñ`”ö—§ZHí ß„v¶áuú×R–—idLjðòÕ®”ŰÏv§LcM½ Ø1³_"[ácPШxŽ|î¨wô4l…û1Óm4Ì)t“$Gãä|t;¼äXç – Ÿ—â}m}¥oDU(îÜà5"hs[Å×ÁÙÕUÿ¢&u¢E^R{¡"’kXýðJÅ íq²‰Y{ñŠnt "†WºHá:ƒ3¼ Î0dE6æ¸8xAË3uUñár”Mè,“¥oB»?RÇÙ¼HÿóŒ:êtÑb‘þ5r‘uu›k‹ “³Ø ]š-Å•ê‹r ¯bXIôP«1vïºÅUðJÂa‹’Šyz¯:/ŸÐË —ïŸÄ^~)^~m¼ür4üûötd1øÆ$±¼È^ôEö× Atâ¸I+ÔY(Ñòr}y¹~—ëvܤÙ&ä‡IâÆßo죳²Í? 7?³élí>[eJ~»QÛ!úª‚–* A× U†”’Û¬wñ^÷íc†ñÃL*gðJd"z<ñ¤þìäøt[ö¾5Ê\ŒÆã ¶&Œ’ŒUñ~±¦áÄDä]Š5J÷Æw°ñÜ^*!,Yï ˆIGÌ4\Y*Ô¯·¯ |TçŽ1“ˆ kCZ«6é͈‚ô銶g-æ–I{ P¹87°ààz5ôŸðf´ÊNk7€£Œk%îš:׿]$µËÑ:ø©?A{ë€ÔAW%FíÇ “ Ë’ ½ËM®áP„ T4…³Vh¯t_‹iaR›@ ‡:ò؉.ŠÅçÞÅT5` ¸yXÀMÖÆE×D =\¨µÎ!êþuÖ)éÐAá$çÄ«b²Ñ­açÏx·à|¾ß=9ÞFÀü¿µ³ò&ý Û¯³½ûÇê”F¹´ÎŽÞâõÎ!ý˜—“MJ/²Ùýã^ /ˆŠÊiýìH£(’(Þu ¯…Zóðø]ý†0ù0šF¾2Þf¡‘è8†Zè“”M=AšÆ×®™Çyýå?ŸSï©[¤¤ç_~©Ò¡øÔŬQø¬ta5,wït2ŽŸÓŒJO¶ÅöGŽ„`#a’D0í/cÈ”<´5–'“Û:Þ‘ØfdŒSèÈqxÕù3¡ƒœ »Ãp4üŸl<ÒGRt«Aýò¤…Õ“›Áí$IU3‰ÐÞ–‘­ 69Pµ}3éFC½@ñ6—ƒ¹Òïú§óç 1>obqúþ1Ö§ºµ5Òg縩ZLA8ìÁ €@»î_ÞÂ^sLÖµF2ºat÷™ç AüÍ VQÑ€çäû¢Ñ°P žÀ=•À<¥vEr ždA)DŠÍƒ?ònzl„¤ä.³üÈã†O­R™†òÚà\¹ƒ¥)Csêí gRÁÃoÎ Iï|R9†_«ä…Ÿ«+øëYÁ¨ø¾ÕüúO•SÊn|‡ç…Œ5hÛÞ¨é@3ÅæÏU:Ì*…\QS9ܲá$¸‡/£Í´|M-C©ä‘³‹.ô./ÙˆãSöÍ’0MÑ(?â;,³Faß§C,%kœp¾-¤ÝZªpˆ–*Béà0$Íp:ß$´8Ù°)) 8-oÈBè(+²©#¥\mêÑH‡[˜ƒ˜“íºÝTÏÙžìè™Êm ÄäÖ™krÇÛkÀ*R¿.à°Sÿ^ Ï<ç¡Vá½néµvCd”¬®œQ}ëkns3ÙX‹~e>‘°I[˜Eq¡œ{á\(¶¡zî‘{Or¹kÊžÑü½–0µ§%¹íƒÞBPR¶ÿµØzÆ#´G'-Zí÷j8H³ŽŽæ|€íÏrÙþ¯» -&f[$O~<ÁHS÷Ê—_)Ž"=]!©8:¾Ö:ŽÐÞZÊÓfÑØvCº·E"uý&µÕ;w5É]‹¤œhš.h¤ñø‘6e¾+× Â#*ÿ…N­M6¥ÇÆ>ZöÓ$V «ñQ ȆÖ£ÕêňëBúKĆcÚ{,KÂ&]OæŸvÉUüL_C>ŸT“ÕA¶ÊW¿/œ×içE_>Wí[œQD:®luW‡çš<:W*½´I—ÞѧéØe«}0þÓFsÈK"†›}aÝþÍyxOìËëDÝBZméü©;1‘é ï }Ë—!G]$tÝ»x˜×ŒM]&#O‚¢š Øøéc{.Æd•ˆ?¶!DŒºdŽåD* û„ó:9^ ìêt¤¯«½ˆ:1ó‰=è+x©¼©zö³70sfZϾ±ˆuɳ†Øë’jšz¯pqš™"®ë8¬á%¨¹µÇnÍÙÜ •«œeÚoeèŽqá(YÎIRÏŠ’¨\GC¼˜´l¤'1#ižº·Äòƒ¢³­ÙœâŠñ9™©Ú7ñrΗbºV˜ƒ ^_Dƒ×‹œDGbáõ.læ»v`éê úÿc`fÔÛ|GÒšþ©"¤ŽÈK~WdömD¦(]´QɈ·¢yó¤, QðnÃ["¢ŠÇ;÷‘Ÿ~ùÜïcúNÇ_ÕÿÓŒÿùdíÙÒÿëAž¥ÿçýhÿÏûšý…ñ1°;ÿ××6–óÿ!ží¶ÿçÉñbý?ÿñ¡ÚÉrÿÊ™|' ÂøkŽÓ#z N0ýÕÄöGÔmÒ×M1Ëpbm7µ:¿$hõ'¾“£2Î\ ¯CÝ7ÙOŽT òdXçÅûìâ[X.34BÀ÷¯¾0 \z¦Mú–£Ù?ÈÑpée¸ô2üŠ^†ŸÉ™ê;ð.$‡µ¥_á?ïðq³RнðpˆÎíã/ÌGC»Èçþ´nøÜ¬ÕÃNmä øÕýˆ4•ß*&W¾ÔLÃk+R²œn—ý ع(î@oj®/8=ÅîMèLu~äpL` zßûÈR|žeCaõûròÀÙ ›>Ktw±Þ31x-؉£‡šµpgÞÿÏÞ»-·‘# ½±±±s¿{‰è“I«J’Ým'‚”d7-’–HÊîöÄüßRRɦM‘|˜ØØçØÇØGüó ê@‰”íiU·%‘$€Df"äa’Ï )7Ƶ }ù@N¼n)†žêc?H¤õ® ^ ^x•5æÞXµj~ùJg9·/~Ôm˜Äß›Ó=ô*“e«Ä–„Œ‰AŠ(X<$×p…SçAQê+xÃl`‰jxXtF7 Z Øµ ó˜‰ø"Nј”¨ö¥šÿæÚÈD«¼!_x€%¯L’Oz{iøíÈ÷·]n;ñWÑò’¶Y‡B*tõÐîô8Â÷xT/Ô·×üFߺ©}“à²{PPöÏ;‹•ûGú‘°ïÈS:'ËÚ=d­A°@®‹73Dk ŠÖC1Eb ‰oxY3hŠI󵙘G /ÄDÝ)8:ûiQ%Ö­èâ]I·Rênå‡aݹ³Õ²ßUÙ ñ÷8Ô‹h~»ÖÊ•¶Kâ™téÔ¥ u)K?C#ÜiÞ/m?éV·ŸÕ`Oóßtñ[P2'–J!ŽžuqV=P^¡¦YozqñTm]Z¤ÊÃrP÷A‡IUZŠVPìð¡0öKÊGNmŰºê2v'ì“äÍ¿¬áa¸’74„²Yˆ c¹T‹sƒ Gîcw`“akÀËè5«Œ •–æuÂJ›ã¢·°t2˜s³m_ìêÔ«¼üÞ¢ˆÃöAÃÒ%ÝÊS§Ròªü jI#hð]X4}ØSá_»\†)Èf~ÄxÝé"6†‘²µ …ÿ‰;ãy=•q ZÀÚÓ9ìö[¯ºÒÒÂæá¦N$@²ka˜;¨mÍõp¶°- ]”« 9• ‚Ußl°Å†ÞÚÀVTnox$ÂÅ›¹ßÁ{]ûU 8 ©„¥ŠL,»2ºˆÎA\'õ*æ!•æË3ØŸ]ϦïfÃ+Xo¸C´æ dÆ•†— Z‰à5Ê•(“ÏÏ—3"ø¦i„ ‘«FtŽF”hWdßgÓ/’m!½Ã_÷êzÉ0†y{dh ’q§$ ̇¿o#ßÊÂÛÛb;Û¡ØÞÛ»b{O–ÜÞV°‚@¡vD°+õ:ÀK Ka(ÂîŠP•·EÀ÷¶Ö´³#vvÅŽ*´³-v±Â÷ íjwWìªr»Ûb7»¡ØÝï}ŠØž*º·-ö±н±· ßã@ù cáˆp”9ï§ã‹9âÅYÆ`\鬶-Ãëè_ÓHô½YÒ¡“bèö útXA?ÀJ@³{y:,¡â"M£“/ô“ä"ne7ÙOÉJFÉ€[qK*f2J†ÈâÀÃΣxIî`[L4x u3X¦‹÷Lk8;s4–lìCSïQ¶Î`FQA¥µvÆkÞ»hÁ›¾„Jš?0‡09€u@§lŒ]øXtž{J¼ÁœÃdÂ,úé¦1HÚ‘ý€W@Øž’w@#0ù0«0]0€`Æœ8øDH+Æœ\Hû¼Å€:Jö °“~Ú¿ËX¬Ç¿XOêb`=Y ‚õä, öggaØ ¨ß]¯¨ß!€ÁJ¢þóôv‚>u·ôA5XMÐ'‘+æò×&å½4N@‚Þò^RW²ÛTBüäž"»=ôž.»]j7e÷7È.bs®×0ÂýòØáÎu#ã‘Ƕ·ÐERÜ‘ÇÐKurcéì›±nÖ5s¦pÀy¶Îfš†êZ-ŸÛ¯Þö0{ÝdvZýWèÖ¨~¿êumy Ä@|ž³VY´y.?;û+xhûRZvæÃžþ¯FÕ/;LÐÐëwÖk[ èyuàíâ ¬ã9vʃžmhÝ–7[²“YMë©xã±Än»‰ú"+³‚aËlt,ÅJº§¬¨W5ÛÆ‘$aÊ!õV7¼æ¡§š–¯fwm¤xèçåx(lœí±wÍÕ}¶â.—´ìî¬hÖcjþØ-ïtw²H@ÓÀÍ ºÑ–áVݤ˗D‰ ¸Ë˜¡Ôῌ!ˆ;™-Ò'ÄFßfßɶèÂ+–¶¶¶í&ô;6ŒNfeÙ2youÜ0£Òœ_w|QHãøænnaÛW‡7LØÀ워gßÙ›ßÒ‘p§vöµÖ1NöZ—Ðy>û­Òm ¯qP½ŽAëì:Ý øW詉ÇU£Úó§ªgÅ9"†xuPB{ŸMÒ½ñº:,ë%Fá숇:„ð˜Çwì1Xïq$¥üÙ:a²ù& 75(b½òc“e}PB%%ðšýÙEÌÃÌ0Õà;)žVOÌdkII‹‡ƒ«jXÕÄ$ö+àd\•Ä6šÞåvL7e‰¥¤%sÓœ)@vÒ38nW[£6K‹zU¤?&:Ðõ”îöª(2: Åz‘ñ+o¨>~ÖOòƒÍ‘üà.ÈkEº?uè>¼AÇVœjá0À@3cûpC°;sÂê àŸ°U àteÐ}Ê«T~XuÁ9M_p¬mÉúVÓ[®:ë–ÛH`a¡yJ¡XÈ–óžßøÍÄõzeµâ0?ûnR#…ti¼nQ–‰Œ.$–q+N7’`ë_^¦XI@ù¾÷ÓMÜGkQÀw­€¾Ü•7×F‚M¨#wÓ3QT¨Vƒ‚Š” «‹q}Ý]W××ãžS…}uÙŒÂî.&ß‹¸¢ý&ûª“-Š.v7ãgÑ+äÆª½jWWíó'öu{w-»ÝÞäÖõëö·[ H©HM&\I¿Ï<’Ù–ïNÁ¿p—¼caãJþê4±Š’;é—Œn9®X8Ö¤éßFš¥²ÈíµýÄ—’òæãMËÚNóùÚfSÇù ý.Ïó}-Ê’Šþ-VŽVå4^ß·r—I¿èåæŽ Þ:ÊH»m>F“¦ì=ZÃÙÊÑj̵cÀmÿÖR÷ö´p‹³••i!=p%îmiÂjz]g++Ò„‡+6£ 执 iˆYtyúÝÉ(¦Ÿ•¥TEjJ¿‰~ø dÔÑ7’QÅhdÔ*X¸ %ÜFBe¬Z«ÐÃ÷ Ÿ¼qW§¿>…m}Ç¿.9nþü××âæ6¯ X•ŽÖ!‹5W‘Ôf5[¼Ç7•—Þ5c5îè.¤åêÄr‹ôÍ4:2ÚÏ––7#[f€±–möMÙ£;WùîèP0‹pׯòÝZÊyÅÎZ–ù£ì,PêY‡Òw;!vT9ú&b¬°Òwgb,=(¸ 8º;¥ï–ò)'6qhãÒVR-aØ­j]Û<;>N5ìî²aw7ôÔÌ2ì>òvw³ »]XÖK4ìîævwoaØÝ “ È7½©A‘¤bî/ëƒ*(71ìî0ìî­×°»g]R¬ù$Ø~ÁY ®Ë®Ä-=Ï‚Ûa?¾dl¥J—£’¢#àÍ̪bB²´¢KnI6Þ5—ßm–¾…`’Ç=Ïú,{¿Ú.£köï–ËóúH§àêÜó¬Î «î2|xÈè€I9ƒš`»M9…'=ƒpŠS_qÊq/ô¸÷…)'ÙÖºç(*û2¶ë—}k5AXwÃ[Rpw]¼ý£p°¯Iø­ÕTaMëf:&2ºà·_8½Ô³Ò¶uËb:7mø„:K¼õuynì|:«ÁÍ鑞¹_˜‚A¥«û³ieÒ#IVW&ƒ;Ð&×i½[ha¹‰6éCDF6²§“Ï&Vd³ÊŠœÁww¢S®pŒ½~9¸~òÖdÜ +r! ¿ƒÑ¶êÉ÷NÆÈsÚ6©\nÌv=‹i62º±™“?}‹i6óÝ­álo͆³š”7b8ë@¿ËóÒ;3œM¡°£¨)[zÁ=º)[wR1¨â<)m¨+w`z´²Š²µ÷Î,mS¹Õˆ'=ðhIâYM/H%žÂ4x›#§Uˆ'ƒß6£ßÞÂ4wp­&k¡a“tn¹U»-oÿ 4|´" ¯K®Õ¢c-«g&2zPH®¶z¦Îw·vfrÛ]«nÄò7•‚7²zg–¿ép3cÎoÉ1’µIÖ –À7ºðŠšÕ:7®qnÌ8}á¹‰Ùø·]©oG<Åh>Wɹ‰ù·Ð87¤zgFÁk¡a—x¾ñÞiÛ¢áoD¢G66©RnÌHx-Ëc&2z°/]Üõº—Ë+›3ö¾vâc•L/9)yleÜ=øËOÏxˆÉ Öÿc¾¸\ÌFõˬÂ7|¶··íî üýøÑýÞù3=á#L8²·ììÂûÇb;ØÝÛ~ô“ØÞ@_Ïr¾Π+ÇÃå<£»ÌBEèß?Êó_þÇýé?ÿôSgx.^õÅïŠîð»Ÿþü áßÿøùÿÙ zòO¬ñáßÿtŠü§øûÿ~>½ª¯¯ÇQýŸËál8Áœ?ýó!`1xº·üþòëÞÓþðr8=]Àïó‘ü¿AîÏãÿpxÞáÿí½{þ¿‹‡¹½Úì½:´º‡¸| z­8õ'÷àõÍà8‹ -v°ìÔj¢Ý8nì ™LF”0µ¦4Ý©ïÔƒrÆŠªŸZMÛŸb™³å‚s1?ŸÁï8EŸæœ%Ó¾´šñf¸ÀozÑ<ÎÎß‹ýh²ˆfŠ5®g£±·K…£Or€˜}]̧—‹Ï˜¹fø.¬ŸFÜÛÓÉèS;9ˆ&“h>¢ªE€ôûýáxt9MFCÑŒf£qôµj¼Ž§³áÅTD@&ßt6^ˆöâ¢^Wý”*‡³‰ÆìÝRgÉáþëöñ’3*Ëz’q¦¢®';OƒñzZôäyBÅ퉨XéšðÏãå “r¹¨ø{¦= Â5PÀ\æøA‚¢^C#÷|œå{¾˜"•p²o„r©ò}ãÊ·FS×Õ{,vD³Ýè E¤*»ðøÝt6Z¼¿RyÉÕðŒ.ªNJÝ]ÄÉ5®+fŠ@ÞÉ=”U®Ëé¢e]34wÿ©Sq *t³Ôº²Ï´‹(Ô«SNÌdwˆU·m]ÒLî‡%e£HE+ B&–ŸÔ–“Ñ"£]£‡vAÙlWÍH¿ŒÈ›Î0¥œcE0u¬þ7L%öOzo*k;½ÕÙîàYj"zƒZ/‡ç0WLÄ¿E³«Ñ^™pާsøîSL9‚1'ÓØK²6þvX§f±¯&ÓØÇ©ëÕC Ç›Çþ£'½øhç®7è4öiìe­ÖóÔÔõNoüYì­ÌõÖÌ›9󓨉ëM(«å°Ÿ,Ì´ñ&;…ýÓÜŒôœ "=!ýjùåíŠ7L/¯« ­Ê$o¼â,ãÌ&¥˜Oʦ¸_Þ0]sCÞ»Ä1^E$ q9¶d?)*H‹Š§=bâ®Póåù9¬×—Ë1uË|ÿW|?ºÔ‰¶FÜçQmñˆˆW ñ~ˆÙ;Åh<ŽÞA_? ÇËÈò7È4FÕQ™8é ˆ†ñWñ¯h6­³ØŠñ‘8’BeÿHŠœ‹‡ÂÜ9ôd2]`x¹ªâ>›{ŒÎûlî÷ÙÜï³¹ßgs¿Ïæ~ŸÍý>›û}6÷ûlî÷ÙÜ¿ßlîëÎØ¾B¢vù27Eûzr²û’°§ŸRêÔꞦ¿Ótêœo™ò©Ë´êƒ^Ëxå|êßa*õ¼Léw’ý9ËS² o(½x"CzNºpüü¿ŒÜ&ã÷èR€<ž€ÀbzygóŽGîØ*ä0sŠ±Õ –£@bC>r#Ž™]È Yæ I–ÂÌæSæ`©CRá×ÄEtM.F“wb:a¶°ºêlæ i– fæôÍÀ,º,î«ì-^.@?Ga’æ ¯¥tHÞ½_ðrlÏpZH3_³bþxªfžû]®%t¿wÜ Hµ¨PÓÖ¡%,^CÐ'tD= ðp»ì@¢ö7,UÝ.WÅ TŸøÔç¨Zͨ41«xÌ„”¡]¼’Ñ–¼o ¬$.›Æè –1°YN?;'í¤Y‹ÙÒ²ðñ𣒵GyjµcÄoºé(¥\¤_[nœ¾uáɈUáI¡I$ Sš ¸ hŠ>=>.DÑa-H#ÌI°X$=áý˜ÜÓj†V-£Îê4­Úl¨}qRm‡mÕ‘|ªÞ¾!Q?Uû,‰¢4žò¼Ú<ÝÀ»;eH¼æ»Â¸+;~Š•cÓ®åÝ&•oM‚Jù}ê—ßÁæi=e ‹ ðÀÑ’Gðm—àƒÛŽõî>E2(dåÒ»Y…\Àa¾"qnMŠ%‰™.ÃUÄq‚D­à›Ö3RÖÏÜXøn?ãà+“©ä»&U_ÐsSãÈU3Š lå`ÕÞÈ+¨ùÞ‹°[‹yn¼*¬Ø J1RF,®v£9+p}C)ú¸åÑôãŠf5«Ò zÑ‘!>·6»Vø”}ÓA£ˆðÛ œXÅU£#ÇIx=ìwtgúþ‘ö±Æ‘Ȧn²LÜŽ¸™‚EUhJýH.2ô~³²Aâo¦ø%‚cܱêïx~=EäÛ7$ñ£‚Ä}Ê¿MâGI<O‰ù)š¿gMØŒêÏŒ3Њû:š¥}Sžõ0Ù7Í?°t÷UD죥Ÿ™Ûë­â§òS1¾>ûX\U3ˆêèÎ÷.óp/òdž•]£¸’f¬·é1Wά%S7ÞF't–ðô&÷ñòÐÌ\bš6‰þcÅ\(€nLñNŽ–;Þž”¿Ò$³¿*åÇn·ß3í§¤c2ŽJ19áÅRJjëC®',]®Æu2]aÿ”åÿ»¸þnüƒÇ÷þwòÜûÿþ©ÃÿwCÜŸëÿìíî$üƒðžÿïâanwüÇ®ÿ/^îôžÃã{ÿßïÇÿ76ôº±#°,µ9àcåLt‡àÁ±8Ÿ^¢yŠÿïålz%f†uú%Z§³‡¾’¥Áó²XLÑÖer1œ](:ýú¸¼ŠóoQ‡×Þs$œÑDyss^w߸lìô«‹c…oâá{;W[ÛÓh‚Jq±Ú¡ÏçŒvlïZìÝŽ{\ÃM(¦/-¡`Ø/îb4?_Ω¸gFwÆ9û3ªK\ä8 gŽ@û=æ j±zØýóhŽ6›Ðù1]ôÄN°ÍûôMäbd°{Š›p 2y¾3/'| t1ÓûåiÊÒ‡ZP®|x–áú2~(ÓQDð×g£¿>ûð4BÛ…P 'µå˜f²ªg®ç 9É]áÞwR¾÷¼÷¼÷¼÷¼÷¼÷¼÷¼÷¼÷¼÷üÓúN&GîÊé~ 2ŽoªâeU´^f”xy eŽ1x-ì4_ö=Cù®(½îý×èï˜ã¨=oã88¾kD§P_Š«A|®)èÜ‚N5ÍÎÛ>yy…k÷Gÿâ@ˆ|h°¶Ÿt5ÃÌ´;@g¿J‰Í°ÈðsIä.lÈ=”«aÁñÅ4’Þóÿoÿ)ÿ’ÑîäÉùQuk“i¤«Y÷†/P: áMâ¶ùÛ@k:@®ÙUŠÑ†Å·Dàǹ×E5®èG:#á=(̈œhÌ„ÆÉV€X@=ÎvMŠ2ƒÛ¸%Þ;›Þ¥³)Ù\ÁÈÜ™‚ÖcÓÿÛƒWâ%~_ùÜyÝ‚×/«ÄÖ OÕ š$Õ¾<ö@9‰½Ò’j¤ÄöçÎãÏ-osHÛ¯u$“ŸX_Ô1†Pôß(I'޾z9É2B7jKÁV\3öee“ÜI° 'µrÖ¢]PAa>¤³J;$²j 9‹»{ηD= æb—.ðm ’/Ó¿;ç_åâ²ÿV^ªL™†Ó$UƒpÓ­É]÷Ö„s«ViÂâ:MŸ„»oÕ-°4ühâÎÓ}5Â,–­’j‚.£[-Q®Ð©Ð7çׂù‘îýT×í§zÃÝÁQÛ ý#o2P ù,­„øá¶?¬—jîF!mŽh‚޲­ÂÑýNáÞw5Ïw5w×µ>(ѳOyI‘Gˆßùâ†+¢ÅGº Ä⟚µ«PIA3·…ià;žîdkµ¹8ú÷E}NÇ?ŽÏ©íÿ9ûnü?ÃàÞÿëNž{ÿÏ?õcún†ûóø?|üh;Áÿ;ÁÎ=ÿßÅÃÜîúöRý?¥µØ½è÷âºA×OVÑTCq‹«§€85غÝÒ´·GP*¦_ö¾_7Ðo™èõÆn ç0_8$¤à:„joÊrÝlÏçZ²ü˱weÉrC´¶Ši‰VUZËŸÉôg'³¥ ÁNr©Êæx‰¢ í–Ýi÷P‰×…´ª¬»Õ3ކdÓ×­}­u³Žö® ó˜¹X'5á,ó£|´K‰7qv1u嘽KŒêÉeæß0èe4‹&çÑ…=švîhn²«Œ&ÅÇÖ3÷ F#½QEøD -&{u†¼r5üR €Nîaïaïaïaïaý¼w†½w†½w†½w†½w†ö÷÷ΰ÷ΰ¶3lOíW<‡ëv”ŒîÒ#þýŽé1ŽƒßÃô*ìÛ&Ùd4·×•“…6~¯Þg ýž5kŸYT¶å[–§(¯ÙO˜ëk #X3RF°+™<2J‡ž ¶°©n¬`QWdžNÓæ $^MtS&«Ë¦•”…-Ãz?æy³Hâ.´q®Hòe8ëpg^Ö°P{ƒýQÕj(ŠMêÝúú¨e°®ÎvñÈ$’»aè.Ùæàên°µiÆNöÓ{gúkeù‘yK±äZªXÊtÕÎY>¾5r2z~ ¹9Êkoy Þ˜ýwòñ3tåõjQ9u˜q'S:º×¢¬§ÐDå¨Q¾qÚªÔÑ¡Ieú"’utgj”qbçÖû¶nY^й¹*EÎtê‘ÜœÆDE #c"òÖ-¤…Œ=Ûw ÙiÇËÂæhë[iwGr;•«ä0ßw¤ßå‘ÿM¼ˆ"| ¾¹zw6¹Ù^˜MˆGî@ó¿EƒJ±x?\¼j«âÑ*š¨éÛÒéôºÊŒ”\C³‘¼>!¹1ç°žYç›;‡þ_ï¢Oçß‹ÿ×î£G÷þwòÜûý©íÿµ1îÏáÿ Øy¼óØåÿðÑ}þÏ;y˜Û-ÿ¯‡¯÷K¢ß:8¬Šß^½étÿ¨Šþaûp@>A}¼êƒ8~¼ng¤÷mÀkñº‡eñg§ÿªâÍ«ÞѪNdÚ…ê»óÅZ«³™XÝ©KOL™,•êÔESFóÇS#§…gf¥dC¦’ùuñ7°ãw‚<Áú%î }xÝ.É^áÇt¢zÝ+É~S5$¦R— ?¤{“! Xx®—˜ãm>½B×%1•:£PÄ0ÕÑ…(º\`pbœÿóÅt¦lý†@v#rwšEÃqìïTêW¡clŸÚgJ…µm>ª%P Ô±ÏK«.D‡]°i³å_¯9`2PûÅòœ¨aÇ¡“Ñ èù_ðmÿüýr&.‡ØçÑ¿† ég2TEÔûR£Ú,ÇVn¶ù¤Ò¯¼­T€ßE“>ÓG.3œ+Ä“õ_¼ø­wŠtÿ·‡'o¥¡Ð@£Ð@›ø¢½m\ŒŠ¯Ø1ÂV?ŸÎfÑüzÊ–‹)YýRitBŸiðÑ%È ì³*ÛÊèògèòè~ék¥ò[¹Ò§¯ä‡ãª*΄߰ ¥û#ãËéäÃòÝpÁ†œÊNðk] ,îÉœ:‚Ž@l =¥ ’2¬*ÎàK,¢0† .Fè¤8þÊ‹ØàÅhønŠ–`gãéùGšç>SE]uu`€•Ö7sÛÉîwE­A*ú%T#‡~‘BÔüý¶¢Tþ¨ÆhzKÐNh8g°Œ“u.:a²€±¦u4é¯ ¾n»è˜Ã2~ŽBjõ^̯£óÑå(n<}7BV6(ãeNâ–?ĸUË¢ÇÕòõ~áiy½V –n™yÛ¢-g–{¤’)ìGù¹ô¡Ì+ ­E±ŒªJ™fHTŠQš%ñÈï£Kµ¦3p6Œª;ã ¦‘þà-ÐÔ3hü~t5|7š g_É’¸oèŽd}Éî´SŠ:kqúÈE1îþ4þ€Ô£±{«N£¬‘£ýÌW¡b60ˆ*Ë&j¶º–Ï(öSò&ñö˜h.×jý¶Çuß™êšÜw\“cˆE@“púE»z,_M(¦(2~¯+­dÔ:CIºÑÅÃq*’8^'â !šP†>%á8©(ÉÂ\Æ„B:Å:AœQæ`PkF t¨ÒpQäjÔßõÇu†’Dý붉ú‡¹Nò°ètnòìøò Wgvýaî!¹ªù74r[äŸ8*–Ò½\Nâ‰(-çKX½¾º:Œ*à`•VÖ´•¨fýÌœÐdäòó÷õŸº«ÜØÝ\̦´¨š¹¶ÿÐ]ñêynFf?ЧÒËöeÙôv¬¥Ó³²Ò£dznt ¢d0Ÿ"@ºÌK;J¥AÁ}¢,<^)98¤•”ECI·=¦(H@b%ñl9<Ë’³ÞèüâÒ·KCu¿jø°¡¶ƒÐ"‰Ë¢Š Pü§½r:I.&Š˜z4#3»Ýœ‘_·ë °rÀY“â¡`U¾«x^žDæù^!žïeñ|¯8Ï¿Íãù·ϳJY„éóؾg°}ou¶ÿ=îÍÊ|O ŸÙð`[•ÅþTe.«d4›Æ³–b]@ ¤Á1Ü(ñ(] ¤øá¤C!á×+&&Ú†˜ ½]Ô’×½º•'*z–¨è™¢¢Óá¢9]™,¯ÎXíU´ ‰€º2Ç5Tí¡Wšè¨&$œ¬*«¶!@«# bYÎßjj*·DֿܨZúUt\RâEªÏß{[w÷6=?_RŒ¬éÄÙ,âhJ" ‚Ú5 Ü$Å1xîJhü<}œ_Ï£T‰þ¨Ò-ß2~EÞ7`cùÁЦÚ,Jõ þÀ½ÝÅ4âX?ï‡~@!,)YbAP_-LNc Íê3/Í'|³ AÿËGË,>üþ@˜§ov…0> 䔣«y•ý›­ÃF @w+D3DXénOv*] ®é¥gÇÎUv¨Ê®¬b‹³¬z»ToÏ× Õ̤4{ãQjÛÙ€Toúùóh‰OÀÉŒ(ú8‡?i.¯"P#.ææ4âÚSjÿ!éfÄËŒ½‘´—#sà öâ礸@—¡åOÆ2Éí©±S/¢+I=%Œ¨þY4ËÌ·Y&¢s#­ìxbòÄ,…Çä_¹ •Â]€äê}ÜãRv]3cò 4œÏ?é€ÐX†Õ).Îf™c.Dÿ\2WÐÑ ×/C;š¸<ˆâßnC?¡èYéCõcY|*Áïw‚Tëþ«êCÑÏ>$ÀÃwûP1F¤( Þói?È_¼.ûT™MøPl»^ޝG~ž1ýü, …†oK2*–ÅLNU1zX TŸ$ƒšN PÁ¢bŽ’’P`c…t`0Þ­ V‘J;Xíum.¤rTýEt-BZ¯¦0&ÿsıºòóQyÏð3¬‰Ñuiô(eA'—2šÉ«b0í‹ÏQÄ«.I$@šV…®AQ7”‡ÓÙ¾ Á³ˆÂÏÈ3–ùT\ꨆ41ïê©ðð,ýSEڀùš¤cR‡1a*¬ g8æ1¬Õ9/¶Ÿä!¢ê„Žtw®BÊaPAFœq,ƒ)Cíðâ‚• åÕ v©Ž®ÏˆÐç¯zhª©¤=­e«ÁVùª 0ÄØ޼ø4„ýÇ;i›ÿ³ª@3EËxÔ.„©[i¡æË-ú|ñ–¯ ©,À0_S\å…(ÌÈçŒKâŒd&£]£E·£ c_†Ô .t´WBbh—qݼ€Æ>ù ^)‰”<ø7÷=0oÿ!Dó0š{ã„ÐÎpBggˆK@S‰)9 º "\H•P cn…!2n:XÆïhÜ…kÒÜqæx}3±:œ¤öÌëžËû·‡½WUñª{XýÆóÃÁ²èq£×èZV %*ŒëE}ûpk›j¡†ÁŸ¸žïvŸáª’¡u­¯z[< Èþ«Îq»J¿`£Øj‡Í?BüÝh6èwƒ€´›ý£Œ>AYÑïãöïU T?š²} ‘VóðüÑÒãë®§±vVc¡§17º­Ì¹ùgB6¶³Bcó ¡Å¡–tÛ‘¢(zVÉŽš”ˆÛÄÓ]iÕÐL» äôWÍ×=.Z÷Sb ‡uBãÆUÃ:íO—Xñ©gÒüİc3zF¡q˜»£êØ.`¬8ùØäà†Å£ U'N ž+zÂFeBåçÅ+1@ðÖ÷n@)ÙÐKœ¨nZCP–å—[9át’kGr;åðMzÛكĶ¥-:8Õ_õêñÆÊÛ œø±å¸¬ÙŒêo"^2¤€N’ö_u­îé¡Á Y¤Qâûèüc†Ñê«1ù‘j˜yÖ×_…1ÙŽq©S›œ ,zL.ˆ/9t¤ù8Vp>¬W TJTP7w:Ó’Á„.…Ÿ¦nOɦSRÉ’¶{8m­¬¼ò%–C^Û¦ùJÍ›Ð}žݾ^+¨„‡¨!*5ÜÑÿ8ºæ[ƒÑ"šñÝ,)¥aÙ°e7Œ£Ÿéà ¶©¶(•Îçér| ô…ü>”Y:~XwöR?¼¤[Ð¤Ùø|J¶?|a¸œÑÉýç÷£ó÷ 2%+ÕFËLi|µwgÚ2 qM;ÀmÞ6 ûÆ>V¿<,²-9$Õó0[{u;œÔýŒžxò8]NÝÌø6„ºõW$|šg¬ f#œ!èýÊabOt¸8Å»éñA*2@¹í¥Ú õ:žp›…¢óÑE¤¸F_Ñ_G“óѸJŒ‘ðßp™ç¼ì!}ɪfo*•¦{Äb£7KE ²gï e±·VZ$%A”–Ñ< #¤ŽºœŒޱEˆ~ôËDÙ#d=ß‚~Ðã¯RŽ©g<Ú¶Ê%— „ºÛ‘@@à{ úE€Èb)ûãh¨ÌM¤À`ƒ}SIŒ7¶ÑyÙ³FúX4^꼨Êzv?¥b|>./Gç#Ò`a]5z(ÐRâ ÔÓ²`[·µ!Ù»ñ…•ûîŒßñeLû¨ÂWÅ(?AŒ=›Ï’t&5s¥O°J¥‘yٔ䒊º/sÔýð]Z•P*¾æuðÞ+®âkЭBF©‡USÀJL?“}JÄ“ëâšñ–6"“ÙO˜‹e9¹à-H߆Âä¾j÷zBc-×_Ø2Š_ò¨Ê¸Xšû9NSÃa<§’C'Hþ¹õ—§ìÞã5¼’Ü“>´ÆE:³T&Í=¯½™ èT’˜Û’14•B®øP/šF/Òúѧ%Ø¡45C÷ Ê^?et@ï¶i(dk`ÎmÆm¨=uüŸoñP“”Ök³3FEv¾"'ËSǧZØ K6Oýä*`ö6ÇÂ`Ô¦Ó]9ã+õ7æz‚Á ÷Øÿ- (Ö“3é$ºšÆ¤Dy.sJJ#;\‚¤41V¼Ã´eï÷=oüqðö=ÿ.@u~õ"´Ö 2Åþæ8‹”°9LUYr°Í‚²Ç`Û…,(R8ûqB»&×Pç=R¿É:‘eùˆó¥ž¬£Iýxõ‘X+pû0cÁ¸U©Ó„4üd¬E¤3ÐÊi›îõìåƒ^«JÎZÀ…èT’2‘pýÔùð7Ú\¥Qg‰p; æ•ú’(Õuy’Õœ,b£6ò[hêšù-˜«K3ÑšOJ{X÷˸,¥’x1^ˆEq «™Ô(—àTqSOcB¥¿›©÷´=³k•Ÿ¢3ÓØ+Ö™„¯dسËJµ&Ç`*²Þê†Ë*«w¹|Ht«>BÊ[ñ§–çj^?E–a:7Èbö³œ<ήÉ.=tÎ_½°­:­”:)ë¼§íüÁl%ãÍ'9õUßL *KÖœ3Ñ`ÝÃËZãÔÓ·k’0+€FjÞ$"D N½:ŽT&â¢3FIfNÓ©úl) DŽÕ{fåðåõ¤½”ùåÀoä“vN]ì±ÎåŠQÒ'ñA@¡6lØ%eyMÇ LŠkd8åÀ{óuÙ=2 »`ãø6q¼<â‹%˜³-Ñ}ã9Qâ#K‚“qêê´“,"mU¥%$n·‘81Ú°”V+øúœið"V2ŒðŒ3ítY˜¶¯²‹ÚpÂ_žê‹»œ¹I.otðù}D¾ysÐ8ñ^ö“­ôÑ / g•yé¿{.wh§JBÀ»X)ÆÓ—lUóV-U 0CêJ[Mó ¾óN«"E\³7¼Ÿà÷F¯ècºàµ»†…3­’ìîa»¤ÝÑM{Eâ3•¦€Ä+ ̯ò&=¨5”üE…Ò”^R¨ezÿ âÃQîNæ¢ã­Š~Ùv‹š§Ç¿>X–Ë þ’èYUsHØ+^?Ô‚Ä&Œ,ÈS#á½+‰!,ç«P1;ƒ%’þ,W¾”>¦8ú|ö!J68˜ŠY„á Ù•æ /' é†ÿ_¯§§ÿat6Ù˜ù6qš\‘# Ñð ¨ß‚Çb¾=6ߦ®E8´”W©§ûGq5ü*·KXŒôŽgçl]Íñ>¨KV“£ŽeÔJó]±®X‡Õî°þ®^cYè‰5á£>v0t ׯP²O`8Œ¸eг!Ë$v ü°_¹¢¼ÉR…òMp‹únsdóÛ…ù6Ñ ç‹­"ê¢Å7@/·^6Ð࣢É!K¤uùØíòñͺ|¼ö.#êÇLA*´¬’ß{ p'‡¸r¯|ù!/ÄšÜüÈ톞ÿ 0.å~#ž¬Z+^µeT Óf^w7ôw7¼ywW¬Ú²GºÒ‘ðf‘ž¥Ò;~+°W$6Ú~ø®!q|Õ„Ð'7U¥ ¢UËu4[,ggCÓëÇ^&Cïiˆ:nwÃ’N¿Ë>{Ê…Mžëö•ŠÎGÅ™¸Œuûªë@VEË7y:œ ƒ]þÌ &‚è*ç9V 3A´\3Tùµ>Tƒ}Eæ¡J…½ÂZ]°{kµîæZ]°›) ÷VÕê¸'øaõ³rJŒmÙ‚GÉ|ç>þú«4 ž†.„ŽpA› ;Øš²é∔fw²Ì/¤m7úhùgçòqigæAÀ'hâìnµ—‡ÒM/‚ø:%3==ÉÙ¥ªƒüš‹×Þ¥ÚÄ€,¿‚Ç>1å91ˆ„ÑÅ„» d×Zf·(ÒZ’›‡/§>ñžÓ¥0Ù%¶r¹E§œk"ï&†ïÒš%;$tÏ\iï>Éa·lŸ\J2¹‘±6ó)g¬wnqã„.ø%P|Ó„Ýþu=Ýæ^üšÛ ßi¢!ãÆÝ¶ôr»bœó)…aP@׎”ý飶5×–Ô²åN>ñê/‚€š‡0(ˆ ;–P”ÃÁQ‡¡×#Ê&ü^"š^¸—À¶j’ݱÖk¼·- »$!kË£c`´M]ªT¨îÒËC[aŒãK¿<¬vÀW ô¦Ž9ìáTÍðc¶·› €0ŽxC)Fdb‡1hª #Ø'/ÝÝØšL™:òø!Ý”ù…Ï·*.¡ïŽjÁ½)³ü¦ö­M™qÂïM™­'Ý”yeæô•o'߈¹ç7bwŠ1÷V2bv™_¬Ëˆ9ÌÝb¡Ýl”¤íþZvýk{¸—»*d×üåÞ¬ùÞ¬Ù*yoÖ|oÖ|oÖìíí½YsülĬ9õrØ =IyK¤×:€µÝÈçË+H©Eâg'¾ñÏ2Dpݵ®¼lîXІ_ãI¸)Fa=e˜yö$ŸØ ­§mÃG…Î^Öcø] ÔÆ4þ¶¿ý–à72ðN™µ{#ï{#ï{#oçù72ò¶«âÂ`­¼Fx¬äüÁ‰£ ñmÁ¿;cðÚ ŒÁ­:·0¯5¯­h ^Kñð¡Ò6ÍUÁãš767@dƒ'MD7l^K1¯©Ë¦•U?<2&îF ne['TAÐÝ£:!#ô6ôÜ»]N§xÀNñôâÿ7V I×嬿¶@‰c*H´~ñgõ)s ¡AÞÞ$ÊÅÊ~ÔÄr´•Ã4ûGO«gŒI ¨î?vÔ}ŸåvBݯ1õÄŠ{ÆíÑeÄ;…jpçÃÜ+À0 —æ¶#[n¨Þ1ߨ÷Du7ê=RˆÛ{œD§÷a®‰Â&}Föc_ 7ÚXÒ!D¡ÚÇŸY®=ë±vШ‘ƒïÎRÐMÜÐJ÷S•wgœ$â‡ZðäCU|Žb9YŒÆ.ˆIôea\z‚8¼žMÑwY”>cÖøãóh<Æ‹ÇO0ElRNç¹42Öñ_f]މd|²µycðÉ>`ñ–G"ÅOòœeRý=Š;ޤè;~—™—­tï«L–ÍqÍÊhªšzf$ ¸t¥»}ììcY:,$Ä­|»Òj#©‡ A l^ØÉôÿJ>ù~^"}mvZsg7×I‹./kʲ(%¡²<úÿÀËÛ\Oݵ-¹ôÀQ[ÂI¿ó(_$tYM)ÄÒk¦î9sk¦o?•ä, ´'7b…zìß–©v l3’{·¼vqÒ s‹l³{áÙÐ9_s¯Ñ£¶7ƒ+ŒÔo†òF,<û:ç‹aï o8{{b'é˜ ò$Nú©¸WåòF&™íý›’ÙÎÞ fH)Š;Q¦BzvÍ;žˆùþ"½µù‹Ô\5é0âSyw šŠïü’k0—pä°ˆÈXóWs®ÄGÙâÉ©ÿ%eö|ëxCÌ£enf[ãÑ”×‹Ñ æ`ô)"3æ‹è2.“½’ê×>üRØÅˆÞ_³T­ÝôýÊnÊ~ŃŸ"Ê)– W2ÓTÞ ^Ì`Ãô¾§8D:­É¨óv_R\Kv‹8áa¹ÃËüAZªôînú ÷Vä·ö(Ú}¤“Ê$"÷[Ю9½Õ<Šââ†GÑn1«O·¯§ÛÜ‹›.ßÊ£È3¤"GIXÎX$RÆ.üĬü‰ÜWˆ‚4i/¨_…°#Èí&YÈAž“åe8AŒ.„ãú)ï¯aYXÿùâ]ô%¬_æÖXýÙÞÞ~´»+ð÷ãG{ô{;äÏô ]Vìí;»ðþ±Ø@4<þIlo /‰g9_ gЕãáržQŠ]f!‡‡"ôïåù/ÿã¿þôŸú©3<¯úâwEøÝOÿ þ…ðïÿÀ?üüÿŠl =ù'Öø¿ðï:EþSüýe§>¼¾Gõ.‡ ^b^Пþù°<ÝÛ~ ùuïix9œž®aÀ÷ùHþß ÷çñÿ^î„.ÿ‡ÛÛ÷üs{ÿ´Ù{u Î!-"¿‡%ñ¦ÑœTé×[òÿÆL×x Œ¿áÇ þ†o3îˆÚP÷%ª‹ø/ä *¨Ç¿äí­bµšh7Žq8\~GxH/s‹Ò§h6ÇÍN}§Àî¾f× §Êùôrñƒ'!=cûëÙôÓè"ºg_Åédô©ŽKä šL0{TÅîi@úýþp<‚íÓd4Íhö1G_«ÆÛéx:^LÅj‘3: í6^ˆöâ¢^×À׳ÑX„Û'XU‘ÅI‡9ɹhÌÞ-u¾a‰ÜdgsÒd)_NrÊ:ŽÓBJ³ISIÓ%'§«&Í“™[ûºäË@^âV*tWYâÖèÃI‰[­d^Uòî*¼-q+ÂÌu/g×2d–•Ûž‰YÌ?¯F.> ÏѰÞM*Yj0Òf¤…3Zj„D% ©˜öùè_˜âíìk-@/_y,>š@i™Ó­+×|T6M”OàpD”%äœ2Ò"TšÎï§Ü…èŸËÑ'ØšL0,š:[¡m¼š¬xr ­  UØÂD3 Óm“ƒeÿüýr&·“éd„yÇ„( ç2£ fkØrÿÅ‹Ã>^[×#˜CdB@"/_ÂÉ#FxÄÅA]]4Œ @výÕ5Žc8e/gBÉy4'õ-âÖ C%œ^F Ëë‹á"º¨[û¹“ÒhR:hÈßoñw¥2ý¤RƒßÉ?ÞÒðÖ ™ éÀ½Ð”oœ"9bAh¡D‰¿ËŠKÍÍ(›aˆ'rl„›1f³ @‘ÐÉS«2ä= †&Ó…‚qR›»zó3Š>àoÿm‘ößÊö»²˜j_ŠÂï¤fœcØ¢ y¿T(ƒ=œÙ0!>„© À$j†(ˆæU K˜Ž9]z•PÚt-×üWöñ7¨ð Ò?¥@$•\Vwk}-¸’¤B]Yv Ú²F›6Üq4$¿}ÝO5ô!KÒ:A‚1_ ¿”辄ß\uèÍ"CoÞfèM=ôæ:†Þ¬¤äÐODÎØ¡ãÈߦŽ|t)™ò™ÁE×¢±VŒV vÉ.°Á,ºŒf(Å/¬ö˜Y4ÊNŠðFÆNê0X½h%‡)Ëueûo×Ò·âY6F߯èÛ}ëÁèÛ5`ôm¥aô­…Ñ·&F_¢Hû£ÉEôE™M³Ç¯¼±æQøë3ø×|·xK˜¦Xt,Æ*Œj \½˜Eµ t¥:K¶€êµðy:û8Ý g£érŽr1z CãcºÒïï¿:þƒ¸MÓnô”À¾>x…pð6ÛýO@š¿ ¯®†34i…>?Ü{¸­–ZAg3ÇŠ)³e(à¥áåwÜè5:‡ó ¨D…pM¯onms„ Ô‘ð“6æñÀ¼9ìþÈÌ%Ð쀀ŦAžÓªöA ߤ] Ã.vÐÏÂLéyÖù’Bl{zN¢ã²OáúƒÞ«î‹ªxsØ8Ê8…«ŠÖZÜ·ù<®“ŽÐæI¯¢&×;¡ßTï€n¤¹þ™ïg~^/ÐEþ5µ¿ÓîbÕ~¿*¿õû¿A×û© Ã?¾¡ñ¡ÍL4ZÒm¡Ñ“4å­W¯J cjõ€…œÒ€ÓÂõÛ-Oý~áê} j×®=hœ¶Kq½ÆiÏø”€ì™“Ã/rQ~Úk+YlÂ¥³ÿ›º þ¸ k•‘ï3Úé/Ï乼ђÒ‹ÃՋÓ^H¿{'ø›bÍÒï¯ùsoð" ¿Râï>è¦ýW½a``ù¹ÓË …Ñï½B0HôU<îÿá;Ún¡Þ[‰sBÔ{­n¿µCm4kÈ4¢Òx/A·E¡¿MVŸ˜ë螬ÇÑõN–#ØYÉlذõ½žÎç#¨oÅíbˆº€Cuü°-?„üÁp$°ÂsPåí-º\¡›NØòpZ´nj=Ì ¥¶ðF †Dº7ºùÈýÌx§ÒÁÝS2V©ÖöãïXN°¿IB\Ìêˆc B6áÈX˜ùœ·áGPØ`=EIvކޏy‰Æ vF*즢|·€üJâÁóåxü j°£ -¶[U[Þ­T»ÕK©Íq™eíýß(ÑÕÍKCeyñÊM»2,†p‘8Š fÑüýtÌš8î (>lr¯C¼¯0ö}19ÄÎC$G õãº[¼Î˜/ûÈ«ªÈ"ÊÊǰÃ:à|4±ª’1¼¾B.ßau’³Ñ?)!}©½~Aá`]mÐú #;A­@~”T 5´‹÷ àžE ûÉý8oþãÝ0¯Ú±ÓN·(­Ð2Ï8W+ÇbšZ‰4²´z°#ÞÞ}¸< ¶•hû¹¹|÷3H)Tõù’õÕävGG }NF«¸…¾ÑѼ{¹"Ø5MÞM—Uq9úB_KP/GW°;¸ºŠÆ´Ÿx±-y::¨ÏŸ¾òV(py…’p!‚Ç¿ìÄä–: ©Å1¤VC…"éB¶ì*‚'°Ç^›`òOyéeÕÌbœ}ž´©Nïóòð9K*¬Ð¨Š°íg6]ðÖQ¥ +=Ú­#´¬!C´ µ,­)xM myÑÐr@ñÚÉ%5ùm_}W{á©z«YR9Ž9¨‹Y¯ãІ¾×Š[`õ/I½•>nDÿMr Õ]³*¾ u.’¸V¢{Ç ÜÖA# rý¸­@} å'£#^ÝÂèL*ü°øD‰BAyCèYØ5†×WÀXEŒ¿ÃŒNÐãNC¬ÔjÔó`:.´©É2Ú/¯½­ltÇ*4 t°žVä·Lµ1»@ S Å@Lôíü'Ö¹éÿî‡Áÿ=îð÷_ae-áš]Ïk2¥nËeËñøMßæe¶>Þ2¹ß‹TËÞôQe!mS/…> R¶Ë+Ç!xl…Àò¼C÷zýö}'˜ö Õص“v¥2¨ô+'èø.? àS¹¬qQÑ¥ñ\¬ìº`¯¤›±† Ú@N2E‹Èu#¸‡’ÉOèGGýOîÈJç4ôžì<&®Æ’ÖÔÀlªFmɪ±ªÊ}Èl*w¢MŸ¢§Þ8êžt[¹2ZHjY…g-©ßͬ ~´Y»Á$˜Õûým×*¤¶n}¯è†ôESÖ›‘L’.!§l¶Rj”^O`ÜÁ8_-øÐ%;µä·eó _?KR”0®BÕÝïÊ–žf,'ð6 ¹¡ Ðø¨‘zk%„›iÚÍ4×ÞL·¦ÇãÈÁ†êCü]êʘTršK2pÓm®¹bs©ô£^Å£ÚÞ E)¬³‚¯WSâ^kz­±&d\Ó÷Öh®q~¾¼ZŽÉ2˲ÇÂk/hNÏ.a÷õÏ%,ulϯ–ƒ·g˜ˆ#cJ“Þ®J ©ä š?ÉlþÄnþÄm>Oƒ"u¾¿Pô¥Å{}´†¸¢ÓgØHÏõ5ýø«q;jbP»×H€NT`Ú%†É]¢/a^ME“×Ö‰ÒÖž’óânϺßÿ ßÎñ¶f}hÞÑO?@“ë}¶áw? UÔüxz"VUc`Ö ëXêy»Ž]\*š„‰ ¯[=s\eÎ*tWηRšs¬< ý$ZAJí†[NédCt*,×Óm£!c;Ñ \0«5j,ûZ ;úÚ†ï{ÔrÛ’&õx3”Ç´·—£Nž^( ·ö¯—2<¤3u´1àêßÅ -þá/h=64 ~~ù,S¸£*ÐSs®02Ûú»&ÝÑE4YÀ^ Ô ËX'žiÊ4,ZÒÕŽ/ÆT€0J4ù5©±qæ»8ÝŸÙWšÄ½V¬ƒ%ŸŸˆõ¶“Z‡éËP §mí%áF×¢wü£¾m§í›œ–躤$µÂµ7Vˆ–z'©´Ôê¡ð9aËkI$ƒÞ?ªVy",úÌ;Áh¾ÕKÌqϱ“ƒŠÙ29cÞ,mÆŒõNB¦ŠNÕàm“±§½µOž$“K£X_CcŽ#F²å2ŽŸ$%»Üz Ö±7õlqrö7iÛ¾OI»÷Ký¢#)²_[÷HÒV—œ…2y#Ò§k×¢Õâ5j¥jqïéV¾xÅÉtŸ¸“‚g ÝKÐ µYC‹"éSÓ;—C# †arˆ¶X_]ç†Ý¡ ÛE•øÁªŠw£Od”äQe¤p´¦ï Ó?è%HÅiÔ¾íÊYõ×Ó§v‚Gœ>ŰNyVyT×aSª([ÈÔEihºm'#I9vò9QÅL5AžƒtùÊ€WƒVê)ÈNÊêÂ=ι9ä/Nz7¡~òú)Nþ'ñZ‹…Íè,ÔY˜ÚlH´˵4b³œMSZê%é:Ñ’!™VkjmÄMf`k"îÝâÄMÂ:¾wÓè›:Oß2›$¥gWl „¹œG–ñxîõ†°°Vìzƒò®0rÛ‡uÉ‘2çŠþZÞ4g\¶%Ö^ƒ„\ìšñ­TÓXw=f%ÙuM÷îÆu>S)f_da¥È),­§Ÿµó蘌J¤`ƒÙÿW4›úÎب¦5±÷tJ‹?L›šÔš„5Ý·»NÎ^'ÁFÞ( ø“ÿFéOy¡d5u¡´©Y[ó…ÒægíN/”JÖ•’Sªø¥R%K µ.c+ KAÆrÑ…(ýŒî:ã¯?ÓIéÏìsaˆCÖÏÌxºî¹?yù€¨´/!jì‚'Ť÷ìÕ2>T§™¦ì—h]·ä¤îÙGRÔǶÛq¼ÿQBÎØ&p!]âA~ó½yÆYprwêʹ•ö¨.»ù*2ÃLÚB"ý,ýÃÙªÝÑ—[A&ïuƒ˜Y©V@Ç•u·Ì;¡½µÉ´ŒµDWlÕå¼À£_´!o¸6m']!Ãß05½„BÔ‹× ä'—¤Hk€h´Ðf?7zG`ä&A Û ‡¥Ø’F^º²·PhÄthñ=D§2ƒ¤QÆ©4«Ñ=Jð¹Û.`Ø7=’sBåß´' Xa¶°ãôËž÷û”»MîíÊã-š![e(ø>£(…E•U“(o7ò*KœÔRgY"2Ñ!ÙšEFŸÜ9Õát5QŽôG=ûª¯éóï?6$2“2Ö^,5;ñ”¥è5”r&ªfˆC)ÛeÛ‰š÷ËÜâ#las##,Ô¸a(ªYéæý¦é:Ê¢[-ë"Ôí®ž@öØ™ìt;‹ûZË¡ µÚ¬xÉ-“°ÒÇÑL@Ir›‡§«Þ—5·¹9H¥K·•–µ‘œ¤/U‰I´oxpp±Vúᙳì3 9k*º‰&í[2ü¬a's³!¾µÚ{Ks±á!:M¦ Q“Áº¬Ünfæ†JðKtëØHoá.Ìè7•«ºµÖVàÌ©è–b¨¥5'óiÛP—Ïd«î:Þòȵµv¾iµÓ\Oç Yúœ8+|2O(¯ÛÅÙ¥e±KÃ¢ÝÆªìâ&7öŽ»e°K+Ñd¡»ÓM Bó.:í4陨»ÙM$àüYô\'%ÄÇÛÉhíªÞ_œæ$ü8tõïáj¡«ïŸ5ê÷†¢~ÓÀ‡²¢{"™üXQ¿÷A7¥Øqó„'…4û"ÂT[*ó7EH÷Åà-èÞ^ºèßí5y–¡Öž‰üPoÑv€Ëϧ5`AQ-­ë6}³ÆúølúYÞºáÌ";\M?qä·Å”Þâ\ßG¿"~E¼¢£ˆ~\<ˆx'™P-Å£ŒWÅðÝZ°1«§rîÝ(/ŒÕâñÉWÅ*ËèâaÌo[Ýcø>º|Z‰Àç°ÜSÞu+œ÷¿q4ôÄÞ4z+ÿ¼Šw7©ˆý¶AÑII"Öè*&Ù%ÔÃm¿òêÇ–=u¹h ©î–U”,½ÉTšªdTo˜ã%™ó ©ÅgŒÊ¥Ëhs Ï$‘P{×SŒ£LA¦‰|TXxV»`§hZÆFh}V‘À 6A´£Ëk¹%„ÇŸ1p'Ÿ'Ê+œ2¦P0.æ–Œ!¢µª\’†Ú@)£K @ŽI•M*ìŽc|ѳE¡ák:Ú}¼%1£Þ'CÆç1§9>ûò|¼ªbƒKÅ–÷ÓkŒs<– 7|>@Æ ¨'%#±)†&ÿ<šGq‰ÝJWl‰à‘­¯"ïq £HrˆOh4  Q (ÜÏç Z^p x¹¡6M'cŠ8|NWÄ6(Û‘ 5&ñ-±e‚Y¼‡¶x¢‡sƒœ˜°=0P1›LE4›qDpõ\Áîwï³hLRˆSGuÁXx?ÿûa¯ÙV©W Ååǰüƃ‹CÑÔQ±8Õ@R ¥‚.Þ1L¾ÞL#¶Á< ž01xBúYVt\Æ?¹EÌ믢î(št- ÁŒ»¯7~@"#ˆæõ#ÜQ)™]T“pȧ¿­DVºÄ¡é“Ì}u,ZÎ"”$süèü÷AìS‚د)„z|ú´B\sù6?¤¹u¢¤*ç»}rzØSqÎ='n¿öðºÿM§…ÉôšÏñGt÷‡ ^5Æ2ÝšV¥`ô@\5š1fUöõ+5„1—9ˆ(-ò%` @‰OÃ>ZÇ:6H¦ù¼îžÔ ËKçØgr ÄõŽBŽòL‚mªGMjݽdÝfѺ“uO°®ŒÈÌ[ö Óïl¸iMB~ë@~k@~[r¸ Qÿ2`ÓG"L€hÛ Ú¹ ô”ÙY }$<ó‡¼öXŸ‹6œR•Qª•QÔgÝP F¬c›ŒÁNP…¼fˆ<ä:ÂäìéŸû^J«i¸`Q Ù0Ëc e:ì~P5×íÔŽš­É‰yÎê±Íì½J@òdøðXH€t»Â›¯1W©K¤š€Âö°Þ/•jMóæÇÍÅY·1'É8I*ø¶QRÛø‰Â‘L«‚íòC›5Þ¢†PÖ¬H7ˆÎd(ùÇM“-‚Mkšá†þÉÈA#oÓd sª`"²0 Ûy(l«[ ÛŒÂv Û. Ûy(lK¶3QØN¢Ð™'4 ÃC²É)å¢ Qia©®Z¬Î®Êâ'Q˜vDùˆ4 iD$\: Äç%$á™—o>'ÅU|WøNpÆ=¶VÁVRãðK8âÈu?Þ€XÈã˜:N³Ï<šøãkþqh'_û©IŰöCh?5%¡ãßÏ‹Šëïa7P»ß |›ÝÀŸƒ‚ï~¸B f¿ÇíBÍ!}¯Ž·ž½‚$¿?çNeDø#jZµû}€SrÓø¾ßÜ [žz…w/2v¡ÞX—‰ñ™Åø~Ó¨Ï/{ÿÞ/ûßö1ý¿çÑäûñÿ~tïÿy'Ͻÿ÷Ÿú‰ý¿7Åýyüÿh'xœàÿðqxÏÿwñ0·ÛþßýÃ.èO/_5«Ž.×?lî|:]º.×hÿF¡Bñ7… 4ÌM+ëxª8ng@9­ç®¨’Üû“'ß¼3½`˪ÅþÇ€¨â6ùzá´t±W= M¹Ógb¤*q>^REh Š­ñÈ¢Í7ær /3öØCwuPYæ£Zì´nŒ‹ý㢆k|³n¹àOÇË« A>Q–øoÙÕÔDÀÙpéæÏ§³Y4¿F_€@ŽßØ»`ÓÀ=ä4¥‹èr<$w‡ùòŒ¿,× „ Ù΋ ¡äFÈ `¨[T8Ã,ËÀ$)Zsì }.}À}pI²ÞÌi>ªH®üP.?$û ׉yí3ã!`OÌÙK«ƒÑ}­<›³è|Ë bV»î Éòê ™ ]5ŒQÆè3O#‘Ò½Î"q0º\þ½Ô‚j3ÊäÑRj„aµ†åPE(16J¯åÔ±/â5(âØÒœD‚òt4œ´qÐ@WI (‚®¡1×Å4 KM!wQq‰9FX³ç˜†(Ë¡ÚüºNƒb?2)&~äa:ônøYLñjÉÇ’>×guöóvFò~)ÐöUü€Œh ¸Ž!9e8 ö¥yó}ÿè*TϵžhœAŒÆ:BÚÂY·’ˆÉ%JÇmvwê•Wn7•N49”íÜ&è3÷jû†IŒÉ°.ºS}ùkû¹’\/¦dècñ JœÕ&'Ì?[ÆÐÞ„OÄ)Iݳérr1G¯1kÐu™À¥vFNeŠ!=)áº< Ën;OÄ¡¬„ct€·ŽOã íµ÷TEžŸÒ¯ÑÍôùZÅ=¡Ó©Ý':wk=Ü%t[ æÞÆÀö$qÅðlú)*à €§W£óD”º ³õ.Z Ù8È3§½½¢ííÈöT”.™hßãØlGõæZ”¸RS /—Mloø©|/1-‡j—‡‹¡¾«ŽR€Ûø©[Ðp…G_P°}X¾ÃÓ˜ԳÔC«/Rü±…‹‘­Óá ýªå¬*-Kâ^Oã?žMAßÈÌÓ¢CP< †FÀû]í›ë—îHô…ß±nrCÝøõ\#F isR“ŒQñ)cÊ.4H³Ï³ÑbªÇÙW¿ò¥üÁÝH7ß0ÐMnœ›Ä~ J³d6‹"³™ÔfÍ1mXÝ6|÷Sâ:0Y/Z5vêz¡Ò TY[½¨ŒôV *>< ªõz½ÚÅÙ[ˆÎ¢¬ýG]<Ý„A -ÛÒM R͘'ÆFe‘ƒ ˆ·iýê@jã{ìrL†YXÙ¿ór"0©À[Xv£`žîKéÍdµ<·#*¡ÑWLôT—cê©1,'£Åpæf+µ5ÍÖeŒ9¤kL~%ca`G?`äcMÍ©ïOaÄ&>‘ø¹5iƒëFm¾°w]04+$Œ­¬zˆ Ð$zGY´oÐéd•€Nni8]J&ÙÚ/NÄ{P$9Ät¾¸ª]G¼›×êVÄÈšH¯Ä!aÔ¶…ØSKPtl§)‡rdx‡ÊÙD5· þÓ‡ˆ¾E¨*«ê©Ëñž¹¼ËxUo‹ÓÍÛïˆnRÉ6L7ß*×Ó´¾ø#quÉdÄÈñF0J -ý€Q=ÙÛë¨cFy:n;}CB¦½”Ƹåö7¨Š]T«÷ªzû RšÊÆû~çefRàh'r[éœÂ:¢ ¸bbmÇóÊØ„:Tÿê °Ö¡<00ü£‹ƒƒßˆOY‰ŠmÌ_5v¨4Ÿ‰6¼„‰;ôŽ=R$LP?5$ò^ˆùb*•ë\Ó>ñw›ú¼kÀÂ.['3KûÇ㜹ÄPw$QXPÍ#k" ÷YOK×ýLeþ;Ê­ø&ëT/U\ü;>‹c™aÄ- e–Št W‚—•N¥Ô­uÊiˆUsí­½kÖvêßGRS‘ÔÔl'ÉNÝq¦R^«(éµ2i¯eŸìÏ͈¯%©¯¥ƒí <]Xt·ÒUÓYË$4MžU¬ê£²ÖÊdf-VÒx¡(™µ ±=…õtÖrͤhÎKh­uÄì£ ˆ~VÌ> Ú׺uÌ>yea•/—ÃÑ»—s^ÙŒ¸~‰“ò"þqý’P2ý}"2kfl¿$„¢Áþ­Tn²ò†®–ƒ@4PJP *Â_“ ‰g"aD# ËUú‹nT'a^-àÎþ…ñ_Ü¿Ïïñ\ƒ_M‚-xÄ~¥$&òFSÄØ)['ðd ¹á¢‰¸Ôl²Âf!¾…ôn¬™¢¹Òܨ·›Ó3 2$Hâ¥t›¬î1;±¸tT1Êà&‹r0èà ŸŽ¦½êÃ/,ónô‰NWºÐ­•N*§åJÉ"øüêê>ÜÅ?”TýP#žëÚ„Ÿ@°ÑÏ’JœÀz»R^±«)èNéæk¨O =¼‚£ž///GDs1NH)Z…«˜«Aƒç£w ó!ÕÕ!„eðà0lNŒHvm@G’I» }—.—²lJD N⃠µ—`É30EBAœE 9‰ÛÏ]–µµ˜Žc½%ù“HÄ>œ›b&¶ð†‡`gˆÏ«aíj4)‰·K6ç2ðØúÃ[[W_U i÷ª)KâfÞ.‰ð‰:@£Ó/éÒ /O#Oq~X™•IXÆS&ýA2¦1Hèú3ñwñq6”ZL*ŒòVÔè è±jkßýÖ‰f¦Q§iÕ‘hÿ F‚_}Q] _•¤ÀXߨ[A œnX&²6…&¼­së¿WÅ)GðMtþHHõby¾P¶4’/⫼ߩ‘?Ô^Y©)$P„Û*ÿ’±¿éºWŠHàÁºÊ˜bºÊH^B&EB]4&hò6›~a+†Òpþõêz1]ŒÎ˼á6NO®†Pj‰quyjY T7œlpá<#Óîêð¸/*tàRâ®—ÅC9L‹À°œÄàÕðü=ªÀ×Èï¨ðûE€:Ä‘šÓ™ÿe:ñȬnžß€ö==‘+ïßô"²ÊáqS¢n|%~ÕHâñãx<ý<¯‹ç$R>ë·‚ëö”a"x©¥à$¶šS2UƇÁc —Úµ¶(Ó*¯Ÿù¦'*i-üž”ì‚ñ†_8Ú€æÂC)tYÒ®Š^,@r.¤Õˆ»@÷¿Ž?EtЦ›" 0^鉚hW€‘P©I¿lê—M~Ù BM>+Éc˜6¬¤áV?KµàaXVgaq‰žS‚¦±(/Ыg¸ïžÑX#É ¬¦*”ùLpÜŽézÆÖ|dØøn<=C+ jEƒñ9€±Øu4ò<“ ¾—×Ô´ž8‡˜ä”2øþ šG¤¢ô¥¬Æ¦$8iöŒ¬Ãêó2µÁm‚œ1Ö~ÒÙ,V!…\®8çÓ!ƒ].ñ”§¦Zgt#²G!¨a6`$K¢RCl ÌÇ ¿ž£™©Bè˜Y\ˆpíª’9ÛÃR)xX:nWŽÛå-ü«W9î•qºq¶·Â ÝF?…)¹$VEìí‚–Œ«0ètRƼ™Î>Êm6>$~yL–ì?‚¤Ó]^I¡Z„ੌ.ßÉšªl¬Ö_|…éOÁ†êRK:þ¤äÏ ¯Îu(u.¡pÎ5 ¾6û× “g2a .úwê᎞›B³~Ý9 Ñy„{zI̽èÓåûÇáU‹LÑã=gŠû1À \EŒï}=¦3ñz:¨žt§°b+@ÆüÝIz Ÿ‡­ò½7Á…\%ðÂ"à ÃÛTÅ«îa(+W•¦ èµeÎթтտÿ¦q̾‚òW ‡YlPà8S°µ?ìôÖË&ˆGø¿ÑýñÿêÓ5¥åàìé­tºHF3LÇæAÆÀú§*ª÷@¦ôŒ­ÓîžvR‘E.ˆ9SÞo¼>,Ñt&¡¬ž2„\?«ôûøúý‚?öû'Uï£*5 ¼¤¦Ñ=òdñ îìÿ–Ù_|Ÿlç©M`X­0çý“ž?ýÊŠiNè̈Rh=m¾bªŠ£(¯?Uò+ú<¨kœ…Ókàǃú^zz …J•ï!'Š' Já*ž$(…¨xÒœ˜ TJV ù. ^°›ø6ð­ø6 Êr»ÜýÃn~n;Ãà P Õ¡†„-Ñ"¦+<Ù‡ïñ&B~Ùs¿ôųãÀ“uiadòSohusÛ;ÀØw¢•ÚæY»-QÜ¢Ú†½@kLCqOFtë6sêr€maÄØ¶ú‰ÃfêæªÔCK¾¶©hÈEe­tlrø¿GÛ~BØg[ûèWžòÊf¦–f3#õ ,;k]:í œ¸EDÍ&^vn·¶ê0ÈikkÞ"¨:„¿’ `‘õÍž8éïMüà$§G^¯œÑޝ);´´9ê'Ì¾Ž£Ù°¾€ÒÎuÓWÍ.ˆ³¯¦q–Ï¿ã\†¬`'h·¾²Ežõ¡©Äø«( c4ŒNÀÒÙ‘oŽpfC>Í Rº¿þ ¥ê\ÁŽO…êv9ÙZ,ànå´ÈõE¬¥9%S¼ĹO”5¤O-ãÊž5Sˆë‡¤yBêÆ¯{é¯Sƒ¡fŠzý¢1½}C(®Ú GDº¼óÃBË3ý&fµÞÙvW„Ä„˜É¦ãOyç|sA¬c¸ÆàÇsŽÁ¸”Ô}êâ®c|ƽZWÔÌïp%…rÖðZt¢hàO-ûÇ€Bó|9?PÇdÖK,ÅÌеäb&€¦  )ýàm¥¢tMcJ_ tŽ- ºE'º“²s˜Q0ÑÙÔbùÐ4ëyúˆ…SÀhÍA’½U¹’9D,µ°BEu<-g4)èÐ$ ÛJ¦@X›žvs=ñ)g‚#}šš­Lq÷¹÷A|ZêêB$’øeжD¬ÚÎÚ+'•ÔÄÖ’ŠHÅó¡( Õiiúûãö,ËŽàŸYjÙPc‘S–z…°ÔËÄRRkO`©WK½-(¨±ÔËÀ’g e­=«(3™ÎZž†7]°+…_ ¿,JÊ»{ÝÖ—ÿÂðaÃŽÖT×ÝÕ{rJ¬&ª²¡¤I+)„r X¨¯Œ:ye㢬QuaeÍÕQ:¨ ׊:]Je;°P©ØÅ†*É;…Á‚0‹ðz6"…âj9‘†Ò€îð †óÜ€jrmÇFÈS_@{Ææ³âÓÃBØqÀÐêU¡ wÖñ"ÏÖFÄÚxÚÚ!r{Q«0+»¼›y  U nXâ{F¦ŽŽùV[Í~éÃ7œt_èÛÃÛÌ<8ªLfQLAÍNª±š¨ËÛ‚)õ2UààªnI±W ŠÉÚ~΃ã28?©IMx6,ÍOEfap? ¾'e¼;LÞ^îÚ²ÃS4q(mßEX ³¤‹RuöÖ-]ÂOé’­ ¤ët`uºöiÿöÒå~Œgué²WLº„éÚG©[°GÛÉä J‘L‰hÆá‹•›äµcê)ap`t¤Jx„h7ʘ–ÒnoðvᎯV¹ 0Gç2¨šÛS¹4/ãÍN|îïáSóªÇUMܨèB¡.$ï/¶cÂò]p±]ZzÁ=*ØÌîÛ#](³oMXéMþbCóT‹ê LsF"I¯«{( BeðW!#@Ï”#Xd)'* À‘õ!g§(t"#û¸Åy¹Å3^3J;´áa!¯¥Z/º%xÕnÐϦÔhU¸S„?^ãï×`T¶8y °ÿÇ>îÚWK÷–ûü ùà¶ÍJÚðb_—ôdnû Ž6ö-O0žþ˜ ”èñU¢TnL‰„n§<Í”­-ëâLNï±V)NC1EyÜxR³ºJÆ&S¢™YÖÒ»j¤_3“®‰Ó7»öëã£_ ®–íe#=핃LJUzÑ}@-¡;Åç)µJd%À˜G‹Ùð:ú×tt1—“i'¸/Fdé…ÌP†hsêpd:Ë_z࣋,G™AWt¼/Ÿéz¡ pšŒt ýÛ_À€Ž 9Ó*LˆŽÎZöàØú®é‰á&ºµ£ cUöU ØìüŽb©`À’à¹Ç蘂㩠­­ÊÓÏF»ñÁõÌøÃ½ ÈèOfoþju¾óu¥@Kx/ꌣXã8N‡óa³TÀû‘ž‹€ãеñÛ¶ž €ËA‹'Š€ˆK™O©÷@i²v‚r­!ÿ]Šû÷y4TÕ(ÛÕ5¥t‘L-,Qà¼J£‚Ñv‚ »‡ Œ M¯šü*Ô¯LDàjGã>¡q¦³ŠOH’õxõ1Ж3„#Áp–¥ƒPH¿ðÿõ¿”b/jùÒ ˆ1_Ì–ç‹å,RáÆZ=';‚9´Aä&¦8¥…¤°&âb‚ÙO¾5˜bÛC¡)­âE=Jwª×OB=΃é¡|9hî e÷0k/ÀCÑ#H[â’!j“¯šÝ€8;%¹âQî£:,]UýM»,ÊÒO‹ÓrÃ¥eqùQz¿R Å–èã¯g¢¥W‰¢(àŰj”‚'P¯J£Þ žt)2.6gÿ¯i“D"€Ôtt~9÷zæ%*ìÉЂhßxïd_ !µ aôýmP5ßm>ÜEdöà lV÷'¦abM ðc'Ѩ+„‘Hà‡[Ðè¾0IjgÇ–«øG>5uuäR’.é§" ¢E#Äöxµq© µ»˜¨(ØÙÎN\L “YÇßSk"h¢T†š@˜[4ÒèˆsÃ…áZÀ ¤/r¤ææA+Ô…Ì¡©K¢¢rzE‚ãþb¾ñè|´À¬žPˆBßHmÅI†1B{ZöÛ U> ä•D•›%Cakݼb…w{&œ>xKg&Ãð<ôK¥Ï5Ö—/ÐÂ&«kNlgõÈz­ð4¨œšÁ€Ÿ: ·¸aŒù<aœaÒ>¥Û.¦ó±Ö)'ºµz<ÝÌj³«ÛÄJ*,W]ãìu1œ½F0¯ àìõŠ8{T^çâìõÚq–ÙfW·éÇÙI1œ ˜“8;Yg'‡?ÌÄÙÉÚq–ÙfW·éÁ™Î­’¦žãÑÒ=ùô³K«s×!#qßñ€6ëÇZ0Á` ÔkE(ÕÉílƒGéðÛùMñ6@zôóF¶v±ßYeÃ툕·Õz¼@Ãå£Óê¢VTí”AÁ1V"Ü^àí-0ò… ørAT•1°+n”)°óTFñ5ãbÖkÚ†[ŽuHÍ ‹~ƒ´Œ"7/£³·MI£XêÒ‚Ú­šXu[2¯Šþm¦/W„ÜÃå C:!zzu <– ?$;JÜfò0vn’‡Qä&btÎü8„Íä$ÂS‡!VKQQ>MÕж‰Œ‹Ç mxbf‚W9•ð Í÷½në!GPAû)š½Ãp^â|6ZD@?:åÖËáùôldå†:š¾;‹c4û—À⬗ÑaÎl9ë*fÙ˜çå«jÉ2^QÒ X¨ä‚s"´ˆ®«Pî«+ûiŒ“ÐC…Âr6Ê•Ncÿ74Ôð”oÊòǺ|S—7³XŠ;ÊKÉ©ÜzíM;ö3að çk%œsNÅ[Ø–ÉÖÂ~I›z'ÔyЦqÎ]眶¸p‘ah›*7 ûe_ º”*Ö·‹MgÖáVjKò3±¯w?(E½ñ6ÙÁn)kNÜS;sŒé“D‚NtS:!¥æ}J(?jÓÎED¼žÊEeÛ)ˆE¿lƒþÑÞvÕÄÆÀØ ”–ó%ò ÇÙMÉÂ:6.{tàZöÊKó;£-ꇵìxÔþ§)µO“µÍŠ›³GUëRµôô|§¾o*sOëÈXªœT£ñžª’A|)ûòzŹ ²=kî_ó§šØà›š»˜û×jî_çÍýkÏÜ£ðÎ=î´"`5Q\L#µ箋á%ú…t¿·rŒj(†òØÍèÛ*·óBøF̯TÄ9¹cš.öx:½žó5'5ÛOF—íýìn‡#ÊT™ì8cI]ib 2=5¨QW1¡„Œí¤¢~Ü ׈@£…‰Ì¶Ä¼¹CåÜDc©íC„wÁœÛ›?G“l)õ]ZîõñÚ©ÇW|‚ªoÿ䉞¸º7³°ÐÓÕ[°S9Á‹†ý Ò žâ@×nêë>~m_ºÑ±+_»Þ{7ylô6Îïû» L5 [¸}Òg :FŽ>—˜ÃìÏ/¿Ò•vòü ú˧êPèe¹ƒY30ÿüƒ¿÷1úî~ÿ@{½W½ Û‘NçÿgïÍšÛÈ•ញ˜˜˜û>óˆ7“I³J‹—¾}"(‰rS")‰¤Õjwôwƒ’(›mŠôåb·Oœ˜ß1?c~â— €P¨…%ËݪsÚ"Y@H$‰D.õ²èþrT½îí¼Å j¯GÙ1¤¤æõ…hîÁ<Èמ¸¼ü:¥•܉÷ŽUâ">iµèo·ÿ†7úð·{ÜOÁG#c$F%^5Zp}„28 ™ë ć؈Tez’“^8DÈ2¨  ¶Ê¾}fF"¶ÀÅÁIpg.8,{æ‚;µÀÆÁJp§.8,{jƒ³#£—^,˜£ã{ÚyF1{s‡?6@ŸE ½ƒÎ‹"i€>@{zÓÝNÚ‹u|²b猠Ð;ny'(t;mjñÊVTè“´ÊñPûocQœßê(Îô.µ7/ãÏbÏ4@z—ÖÃÐ3¼;®Ž¢“šÎ9«†=¬¯eº©¯Ñ £$[Ùí7ÅÅiDÓQ‹ý(‚W›þ¯7ueã«;¥ eB:¡ÿØJ8é4R‡þo@bsbÃÜ£r¼X‚ <6Ezø$ ø|RA´áýžýÓX$2\®tEäôÅ|k.m‰Š„ƒQ"_Å`%e²%öS¼ÁêaÒ‹Í„ä»Ñ¬¶Õ¶‰R»-rTl¢‰GkÃã8Ç@S€l* ‡ äÐq7`'¶ä†vù"O¤AÁÎð ¤FÐN´¨4Ç}èuÜ ­>{ %„ÛÎęՇÃD”}H.”䆨[{aAI¿É¢ê[–7“Å1„ˆb, ¤$ڂ곯zKAAE[$ý&¤ƒQÒu¹­Î¯•ñ¥®S‘È!²@¾ *ƒ(1ÉÙ±F¨ŠÂEÊØšj\‡ž1í¾VV£Is¢ºMkÅ>Ðä¦K鳚‘´y ²‰f‚(™¾6ê¸ëÂP·òcécé4uTx!÷($P¨°‘rñ`À»”±DeU8f‹Ê²0i·cübBKi>¡uq›Ù$0l!lv“Pì.\Çf8©ýÈ,æˆú‘”籄ìÄBÉÕp>šÅc‰ÈM[I…yÙ@›ü4ÈÓ_ÑúQA“ÓK?¡OgYçŒU]8³bŒ[K6¡Ó¬6:äâüéª$/,ª|±‡8þyÌ\‡\8&d‘ݦ –Ö\z¬û‡[ÑøQ„|é|Çû‡‡–ììeÇ®‚cyWA0é§ÏÁÃábõ -ø©eD žCQ‡¿pŽV@ðû‰ÿœ5C€Üà*Â~xí¡âS/½ŠŠÏâ,dÿI-k‡bÐ' ¬¹59½Ç źý7r…2zŠò®âÞ4 çKþ–¼ u‰G5¡i1ªcâ*v~ìá½Âs»'1¶š¶C¢Å¢ƒð•ذ…{Ó[õLoNö~ÇÑÅfÝ>ÈD§oÓ3g*žÜeÝãàAÄ£¡Ñ//<œöd:_Ts\³¨ã7¹ LÔfíÌüi%ð3{Ð&C“ã}™„ Gþ°dÐü+nžÚå.t|ˆOE»ýò•-¿Å[’û¶£Ô_νWR Ãèìþè1¼g]ººÃc=ÅÚ…cߚɲ’¨Ä+…ûùN¢ù ·ømž;DóQs ¬õ |Ì>g-5‰2¹Y›§Ñg“‚Çcg¤òæ•¢›]Ow¢ð8üCV,3~GA¦O½BVLžVAŽ•ÊŸu rзÒÓ©‰7ŒLL—¨8$7(¶Ò“M®ÎkŒÕÍ@Ë@FÏá=ÿ4¼\LÙ™G›t›±—G¬mêt(¾G[¾L¦˜ÎcL6–d¤‰p&_MHX¿pZª—Ð"²,NK»ô©Èù?|ºz™Ç¯& cÊ«ádªÂi‹J6§dÉ.“úšH%õ›{;˜»öè é$4ªðpsêØÕ$u=@óJ¶â ñc¨­8;VÅ.‚ñj‹Éï+ÝcŸ(#Óº§‰]d°'äS¦½¶YߤŒB¯(\Ê(É-÷؟ijƳ×DcVüî æ[ì]×ç3«¬¢7*Œ Ý⻲øÅpì­Ó³Gª ’˜åq>¯C+*¿ù ÆcnŽ´–n/{™õu†ÔHÜŽ×H>.S±–“9™‰F¥8_–Ã_óZ!„:¬¶^Çü<êu›Âú8–â)ÔTý©j¼¤ F¹têæìKRðòæ\|)üa»íIÿG´ÊIi<•ÑÑs÷ÆÓ6Îæxø'ÖûcùïU:x“±G& $@øÂŸÈ Q§Ñ( $Q—UßM8ö0g±Íb’GJN} ´¯îŸæxZzøÕvϯ;°s»›c‹Ì¡¥ù¨Wñ×µ®l}W-êûñïø½ÀWpÿŽÆÍnÊhîÃ9[欕s4g-Çã“]ž˜¹#©#F‰Üvû¢ÜÎŽà`aª)Ç×—Ãi,¶Çäí®*É V‹zåëXAл9ÚPSäws‘k;”ÂÜý¾ÿ¦q¶çñúÒ~‚­4¿ÖÝ'ñ¬UeHÿp„½s¡ŠvÔTwóNu7×Twí©6²u~Osý™Žˆ+Ïu7m®»k˜ën•!åžë®9×=…ó ‡ÎvމvÒ¸Æ÷w;™² o…eÿ¤(Ê'µ8êoUPʾ|ûíâ‹ë¶æm¨GB‰ÜDiGÃì Ó³´6ÿJt’û£¨cüˆ?Ó´3Îz ó’ _v°‹›ÂÅrA´@\LPcºFY,'ãá|îÈœrLŒúb õö‰y7º9³éF?¯¼d‚°‰É¥ ^Þ $dNljò“3/Á bRH¦iq:;)ÎϽˆí éžÃG©ó€¢,þkÂÐuÜ`íG€:"P|š^^.Qú–‹ÙRvF|™.ÇWޏøy8û*æ7H/pÜþ(IZöÔDúhËÐS¹ã9iJù†æc.ôI¬Š qµÝÐV¹Ý‹½3n´ÀA[…D;î4E›MŒ¯ýȧPÊ2ª¨þÃ0ÌŠ¦:ÂC«Ì,âP$:t—ÌÕÊ(YéÁ§‹ýmƒzÔ¶÷øÎòøGè Lj·¢?:Läm]“Z*8ºðf*]î?!³îNm’²'t”°9 Ãi}4­YRT#,uJ…ÎFXÜvK<¨ÇÅЃGZ4 „ÆœGp)E‘¦4]§M@´JÝ]‚œ¯ÔP st}‘C¢Æ$â%Úl"…¶˜Â äXý‚£.ø` ÉM€Zf3[osƒ?!Yð@1®Œ…%öìQŽìj–ŒJCêQ&ˆ ±“(NÈôt‰œ%—ÿíµè¥xÿÃëæ-|ÿ•r-¯{?–×^¦²ø«HýÉëÊŒh:(‹ dz5¼¦pヹA޽´‘(ükY*õëŸÿÅ>Üôm—¾K¥Bð<,bNt µ”£>­Øœnù³¢EÇ2üÉ+´KI«Çdõ/?Šýó_–nup1)h¡¶ÍãŠ2©—€ŽªŠr_^VªYFbLEý™“fbiWƒç¢ð“`„=gLéhóü*  R¨‡”ês,þ9œMåú/ÔIµM¡MéRhRV®À å¨tÀ7>‰üÉùSi=B;K4Há½ðòÐÒÕh¾ áïÅpñe(7t$[žñÏOI0h%Ús5üsp¹°5ùb<¸¹¸Ð@4Q' _ÊòeÍ:'=Qâ©bùs©IQXDF+¸½ ¯Á>ᚘË©ù— J=£"”t‰Q,ŽÏÕ#-{‘IH"-½¹ÊdôqpÆÝ¼ŽØ…CT@|¼Jyû—¸ë-?ÑÂ[–ûÝàv à9†-ù@ñ:<~@¦%Fué ÕÅ…^YôiéQ ˜ Q„ò“\ÉGªÆxàeüاÈàbRY´G5äGª+k÷•ø™r>TlQ~0§pw††eìcÇ>½¿T0ȇx7ֱ셢Àèõ»±ÍOHÎEëyÇœØ:`†áO’3X}„f¿‰³é»Ø¤r¢BßѦ:*~wÇ$Ë_ÄË÷©¼ˆŽŸqXJ-¥Ñ†DYèû0è1‰ P¤Ê`ÏËâ×¢,.¡ÁïÃË€ižÈä#ú–ìœÈôרõΔ,° á°(¬ŽÁr¼IˆXÅéAîƒ LÏ¢ø2˜,t0íÂ|8DCÛþþiÿ­ `½ýn“Ë] aÉÅüƒ}BaÛä+N AaX¶DAç× Ø…& ¡ø[7ž¤P.j‘\râ_ê6FÊs‚\^Ø+œ\ÌFA±âÞ͆ ª†ò½¯|ká÷ð~‹ãÒïË/@Naî•+ƒ¸G«W,Òऒ4ˆÿ@ë‹ !úZÆ>Æ6hC0°i Bððvü¥LeÞƒÔS$Ý dƸ8EåÊUäi0ÀÕˆÐÄÙt,`` ”gLà·ŠÞȨ|ï¹(·ØŸÄf®ð üŸŽßvÓ ¦Dr$¸ó7†â³ÑÅ60®ä ñ¹¢/ÊáéÛF÷×2t¶‰æéÇí½ãGzÜý™ÿîðß^22› 5ºP¿yÐCù¨Eÿ¾£D¨G=4˜ /‹ºè…ɸ$‡½¦t…íÒßîi_%ËÝà lA÷Sƒé D«Óm‰ó¿ÇÇý€ÿ ”ㇹêµ[·í0ýöIº‚ºô§Ëßp”o®Ÿñ¿Mü³›–¹_7g¨ÎׄiZ÷ß¶Û¿… Ï}ñ€¼C|KO»½ýã>EŸlïýÌQ)EôJu¼¶„ ˜åÔº)ýÎ1óM£}Fp÷TäLßÓ8ß+K±u¡0UL}Úí{°ÎX˜¼ö¬p“eº84£MöÜ÷ °¨c0îþl”Ý?p Ÿ¹…UÛ¼þ£âÊUâY/%€%³Ò^ðíjã´Z Ìò*ø ÷œ£Ôè {«³tûV§ÑD@å r‡±Ìˆ‹5éÄ‚L‹mè‰#¹›·n,p£‰=4«ó;F'‡¡têw3ê›x2H=¸ÛJ­fX@x,²ÓÌ™M{ìr´4Úm+Z ö;a>ÚiDTÈnc±@…üp8Á#‹†@AD±rbàªÐ"=Ê”Ñn1rá'?ú"® ”¸V5å>tä‹ñb>måªï—0~ÔØÉÐ;wwˆÃè0 N¾† =4ãƒæëºÙ£NjóiØñ7ýê•Ð5lǘÐx æH@qŽ$KRF¨aò?‹m#ipÉ&E ê—;)cQ•âãÑßÙa, ( TÜj»­"ØÆú¤9Ѷo°´Ó@Uî„Áþåv”ðeB‡ÙX5m'G ZÝ/ÓÖž.G—UÚƒÑ5æ[@è°ú«H'"t'Å›áB_–£áb@Ž\ªÉ”,XrƒQDRKÌæK” Äs¬"‹õ ~ì°K#lHhpac_Ù—*å¡v «>–?á ýSŸ ”ïì.RSOîj±ý"‰§0pŽ8ÖRˆÝää.‘M.c$yVzÊ€³}àhÓý(­2øÑï gÆn§E-‹›V&O#Ô‡Ó¤¦òCtØMœMÂ?ÈÙô°<ä Åg†K»à’2ö„ÓÜÅ}çb>vW±g™ëdž¸x¼åõÇ«¯(Ø!:í"öd¤ª¤ã©§†Žs¨ÔJl®µrs­ìæ8ðžô œÎˆ£X“¦E¹àÛ•!®Ó$ŒÄh€t²ÇÑíË€‘:†Ÿ;:_ÍfzÍŒà9Ǩ¢¦µQi£lÞ¶¯¤ ¹†PQÅÜ _™&‚V*ŒÕUÐ¥£1ü…I"6Æï˜$vsÄn6IHÚRLÉÐÌ%6•Ý=+ËVâÓp ;IîîY¼h¯@ã„ÒTé¹(g.¿ô—Þ`XÖt££:çm~º¶“qÊv¸ $1ôDFþmY²šÚ•‰ëaÙ„¢ªÕ»™ŸÄPhÀâÙzˆ+n$A‘xP^‚=§ál1LÉ[eŸ0.AÂÈ(€‰ì£BG@d°“ AŒHíEÖPVwúØ€½_†Ð÷‰)ÐÉÎÞŸ†“Ëј>¼õ,DÏC8Üeñ±h»š0˜HlxEa^Äêp\äay˜‡yNÇc bü…B]HžuüÅ6MXúçb[6´ä‚ÛTp7½o;ºPjß^˜°’›|iCóÔi#€ yå‡å¨ÃôÎ%º—¢›¬46cÜðD÷`æß‘Å;Âwež¢‚²öý„w‹%&¶[â? Œ¿57°s%J®&PáµcI*Y•c›^º!C 0ßßixã^PÚ *[ÕZi/Œ·@×sX!þCµ“@òßç8 –J±¹Q.\,_Ûð²½$¥´4½zïÈŒT×ó/ƒO®·l”‘ãñXkYª6$´BPŠzºËSÑØÆ€µsú¨]—IÏ -žRQíƒLªR‡…<ÞçâùÙþ±E?ÞnÒ%\A)YÊѽ5vâ­¦, ¢}ÚOyiÐGãš9¹¦n¤Êì øK5œ¾¯öRÆÕ7Æ…PŒY7ÇãŠÞ†Whð~1Þ€ˆJd0þA–.knc±€´IrŸ6«ŠRΖÅ|:þl›ój ÂP¬•'-»…Œ§†¢$PânÁßz@ñƒ4[í]«Æ.ÕØ ÂX#Ø´r7vmü h©¼ËV¡u´ ÝE«P;­ÿæ‡ µ?EÊ=äAõcW d>BÇ º&ªäù1§ÙPNÑ 8@ ÍwR%ŸT@­¹Þ¯-)ë²Õ ÚY°½…^Áü?;©ð-Ô {òc·ÖäJò׿J ¢ÚÒbC#8'„æ;ߪ—‘}‹ŸŸHTó7cÎ3í3t•ËG Þ‚‹¥ü]•[ÖmdìÔ¾ÊÈs¦îOLBÏÓž†±Øñþ=9vçQ…À¶â? Müçpç)þëƒYì¶ê½ªtE”k‹4ù8™~™ˆ6Z©t´¿0‡Q´g\Àtƒ=y €çƒ"Õd‡4#<È\{ß°6Áè0\¬ËM`Ìt·Ã€acX|äaÄaiÑÖy8¯Êv¹=j%öÅÉ–î™ÈüxŒèž‰0(4ª•—#^A Q13†4ä P-®£©sdà _f#tFe|TE £€ÐRÀt)åÈ<4?8#×Ô·#„Ë@V Èòy:º"ˆ×ãéÚGãu2]°Bd.}´†¤÷'zÄúïJ*²(]hÔĨ9P!ò9mN`ïУ»ìDzƒa,ª ]ª4ªïë꨺¤ÍæÇ¬Ð iVÎÑåwäñö=' í°zPB3yªÎ¦¨«¢H,È{(UWã6…BÌ¿Âò¾!aÆíþèFŽ^üµ>dû¥&ôšY7Fvê?S*1klW*…b/}æta_ËÜ*ÀÑÊê3¼,ô¼›*3r?Œqv´Æ»!öù3ò؈}X¼§°c;] ¨€AI¬÷àg@å@ű¡¸{0_2¬›»#Ùú´ßl>ó»ø õuQ(ŸsÈþf‰Ë}ë€=[u8êW-î<@1öÆ ÅÈ…uhEZXÊŒ%ò"¦(û®_7‡YŒùË,“ Û OÇÈuÂå¤eyQᛳ¹/Ô;r‡ªn´Û¯9-Ä=S]žxí‹,Ó÷3\U§~ÿÙk£þ³ˆ®Ÿ)Â’RËAFÞO fgÝ,ÄÇëd®¥ t 8`v˜#äúNx¿ŸDMuY%—sÞ¯a6ýšÙýœâÇÁìÈ^SèríúÓ,'¸‚'‘Ê—©ÙàâŽt ‡}p<7ü0s„.†ï¿ª%åâ?|ôƒé½i …'îe@ú’…ªáT-nÓ±âÝ¡ý°Á=ݸ—É4„1è†v´CòëØìu%¨˜`³é„OqE’Çæu£“Ô]öкÁarWêÉ ¡ãE;™’;XWÁ©ˆ1¡‰ç|M±ãUpz'x<ôpõèñ¢“0¬Ý[ ënAäU”z'мÐaä÷¬ae¥óMÒèö¢ÑcP¸Ê Êd,Õ#‚_¯š§âlÝ YÊá7jئ(¾@ $á…¦ˆµV¢sWcuoXÝ«$±ìç%–ýä5°ï!–d2Ù_Ç€ÈÉmß7 FÞ5’飱ҀëP£Jù•â.ê_Zõ^£OÖC½ûσ››Á ÙIY„/žo?¯/ó‡jí¿“/½€à5ÔË\A…Òà¤DºcL `DÀ¹’Há~tÈü†÷¤½sáÿðêÿöð¿“4ï$L¢ŠGLøï¤,NËâÝ~³Œ25æÛ±ã½Äº1u|8ižñD¡Ñ—䦻?÷t…wô©,«Ä»q‡8öºS¼Óž¹ääÉ…8n¸d¨Jîg•D:c/g\÷tÐH*‹6Œ¢¾b`»å'™è¹õ®Ð{Ö;2:pw÷¸» } ‚Ü…£ ·´ì³pªüÛA/МѤÌG<Øð‰F;¹Äë;^n~q_ X.ÑO†¤Ït·(£»½xwa„VŸ“OŠ˜iøÆ%{Å%pÀ#qF=XØÛÉAãÃ@àÑV‡P2”dOc¯1Û5_íXh9çQ,–þ–äÙ[òqô”')æ ±ž™dëÕ“¨Ì]£©÷¢Îë—ËÏÛ š,G—BìvŸ´VÊëª0Yñ‚aÒZ…=y1Z ù•ÚBéZD~MS1Þ F#„¶ñ¨«2‡£0Ô¤ˆüFy[ʘ„š><ÿãø0£¤T¥p …¦Š‚ÁÄ|˜ÏsmõÖöíÖîÞZ")³ÜgžÓ¼‰»Ú© æJÍ9ÙCÓvÑ~„û»yÜù$éJ‰¬*­é†Ût#GÓnÓé‹Êý]“%„0Ÿ„ 5ü÷*!ļ§u‘ÍÜBÄ–,¹oaF‹ZÂÈìþf6°-UÄì~rß6óKAnÑÿ’ânnÆE¦¤îºEO‚ÔoÝ8 2ú/œÚë­län½5 ~yPLÝŒ‰Ž ·ì‚Éãz’2=]±Q´v)sç±I™;OR¦ÕÑ”2­eoÊ™ñ¢t3½  së1Ë®jÅv•”ˆ×€ޤ` Š •Ù“n˰Ùâ—·õý;´~`µž*ùw{¡uóÛ ­›÷-´&7½¥GM»ùÃŽ{KÛnü[ˆëámz!®SÉ“ C6¾¹]w2Yr´xîfªœéHèÉemiÞ€¼F‰>õ(´²ŸÓ, Û‘ÙÓš\]^ÿ¦ºÛ=5ƒiEo#«k˜ß‘¬žâ/!©¿xl’ú‹'IÝêèCKêj®SRwa~’º¨ÌsÛ+¯£/\ö”k¡+ SnÏP-§ôdßêIZ\–äždöd=<>Èþ‘$Jj;§Ó£ºÓãöW–iïÜ Øÿ²m>UôDÚ•çn[ë5ú0õYYzÊáê_müùò¶OB~pñw{ñwgEñW ¬™xÛ²J¦ãí…*›oZ(Í·-«lÞ^¨Ò9ðöÒ*›ëذ_êv‹¦ÎõvÎÄ‹xÑ´ÍíäìñV¼h*ÅíäìñËxÑ ¿È}u±é+œJ/’î%’Ð÷2wg¶|…S‰ïå}]’ Oè^x( Ù-%º¹üeM¢UX uu>ó(~˜‡£‘;ïkZÖÛ€Ú†F/]Dw¡$@i6SÁàx`HíÝ„ó Ùt6u‰—¶¨¯…ü§£á£8¾zlGÃWOGC«£w?Þ…CµÛ±(ƒyøU^eò#ÃZ‹Â1Z½HeQêôÚ–gFãàˆ—>úð˜Mî9×8<"”|@V¼ ZC·ÝCñ­ºý7[Gk,-Ѷ³kbrÙ–amßY:÷|®xâ^wß}GðÜ“z§ƒzô{àK‚Œ†ü"¶!ÅŠçqvÐî2âž,¾¡<dð=é¸täu{\±Y†‡Ä†fH†ëÊ¿‰Î†›ÃI™\NËâÔt‡¸½óCX«©6NÜô$)ÉÞÙ®©~¸¯½ª©AJ— ŸûCšc†HóÍyÜ3D†‡†ˆ¹?8oïÃù‰ný×¥Ù‡âÀg&˜ô{óÈFë£0N[á´’vYí ‚Ëq3Ç1äng¼ìŠ[5õô‘óèñ7·ü'ßÉ“0—í~ÓÿCÓ×¼åÐç…\vNif:V¯ü7ei½jÜC¯R¥Ò&J¥'ëv²hWš ÓÉ‚X´²ò\!á66²oÄìÎåB¸Õ¹}·syîÌruîÁ îk7ÎákK‹ø4¶êvGƒ¾eÎÖE¾ë•¤?f“¥ÌþoÆÍ‘rÜ=ù®¢¾¬v¸Êãiü@‡«¸ñã:\ÝiÞÒsä»2Ë^Ésäqÿ"sXu88ÔVΫ™à*¯}µ±‚-ǻ÷üÀîù}Y±º%ïÜ<Ûò ÇöËZ‡¿š%½{ÝŸÅl0žs_nì» ÀsSŸÌõ ö+vX³­°‹d"Å.œš7˜5þ퇿Ø3à>ô¼úóÅûù×qõúÚ¨Õj;[[ÿ¾ØÙ¦¿µ¿Ó‚xÛÛÁæ¼!jÁÖvXûAÔî¡/±g9_ fЕãÁržRŠ]§!‡‡"ôßïåùoÿë¿ÿð_ø¡=¸Ç=q®VþöÃÿ€ÿBøïÿÀøýÿåYï÷»ò#Öø¿ðßÿvŠü—è÷ÿy9½©>}«˜Êq0Á\N?üçsÀbðãv-x¾|µýcop=˜~\ÀŸó‘ëÿWÖúßÚÙ ·Ýõ¿†Oëÿ!^í½·»Ýã·°?6dúLÁ‹]XáðÔ)cÞ\’TvU°)m¦Y)dÐPQ¤GÇ&¨×„Ïèõ?ÓŸd0M.&ó'Ñ6]©ˆVý¤¾w¤ÒdŠå\„ÃÔfu³¡„]n48q]/¾ fCt?xgÓÏ£+κ‰y«¸ó÷‡“Ép>ËØº¤ßï Æ£ëél2ˆÝáìãp<üZ6ÞNÇÓÙàj*ö‡è/:õ7¢µ¸ªV5°ú§Ùh âI$ HiŠÒÃqfCQ—É9 s{?×»õ=+}"M®|íKH“ŽÈ–3NÓMsMóI“™.áñ„áh+–V€ˆÁ“ïŽúÆãë0ûN•´àèKŸXà±”¤!‰¾ìxl¥Ô{“ý¾$ œ ô…SŒeÕº•Í.gŸ¦ó¡‘”ç…È)a99æžáýˆµ÷Æ¥ê8ú:~Ø­£« ¦6Bw?80c¶à!|Þ‹u®¸ž‚bߨÜ0*K}§|VɰqA-''Ó/qƒ÷;n»,ó½–U²W™û¶€š˜"Õ|?Âü£VŽX•7—€Ý”Å„bk Ÿò­b:èáåªaýQêçÙp0¦ìÈ£á¼êI5{ _\`Np`¢´€U‹°>,gâr0™NF˜P–9´?ª«”8œ‡JïñóBÆ“÷K\Ør<£XôVÎxßHg. ]XJEý¦šSuÓªûšNþ‹`œÜÏ—€Š&”ýótt¥s?«ìÁÁ“©Là “Ž@€FŸan'˜&˜éMˆwê)¿ù½Ê;¬p5¼v{%óÉan×ßÄÇÙtRhN`Ç(›¢o»¥RXÊMQü]#:xŒêûºz#ª.Çó3’_ó#ö‡2_AÿG‹¯jŠ~>ÒŒœ£.V–\€ˆ9ÇeÐy•@.ïÀXÎ)'s«çýhZpCÿ ]³œÙ?”fÓ‹ád´ÄÔäÙ½äNVƒ ˜{;^Ž€P]@á€e¤s1]N(á´LGo—¢QÞ`s`HØkâ”Ù_¿ƒ-}8¿•ðwšó›)/ÁÑ9’Ö@ªé áf<N(6Ån«Þƒñû)p”7²˜ÞJ­ÌÓM£J<_Œd†R`’ÈO¬2bBÌÞ’ÃTú}«þ³hEyæ†ÄEû‡Žz2ÃÙl:3Ý çs¼S˜ ±?¤áÒ}¾ä[†óFèꌫfK_Ϙd6:;ò„(Ãä ž‰–ÇÛå%¬µùõrLteøw(ÐÔtV±FcTºH,F²ÜÇÃ÷€ZB•sü€‰k[iÃŽsƒd6—cÔ» G°ÞÆ\möË4:ûCئǶ‚ÂTSì’n`á†>]È®wÒÝ©8¼‡#ðô†zq2DuÄɾÐ7T*-hDtKƒ!©‹.GxUììíÍp@—9x´À¥^yU ÄËô¾~^ •òå·àw<*ØÍV£6ùî©Ò[|E]©dæT®'ï¢&Q̓ƣj«~ãÕ®4”f#Üë3ƒícqmòc5=ÕÜ:lXÃŽµTÜ´'¼óÌ30“K0‡I[³µg¡ã[edyÏ\» žñ4œ•+ÒžM—“fè.¸ÿþ^Ú…mW£Óåèò£<ê¢áÓt>·úÛf’¡iïøÉG+9V¦(/øAMW´ø'Õýž6Ø}ÜhnÐPý/ÆSt®¹uŽá½ÉþnW~ÓžM¬Ñ„Èí‚ÍQ5Q‰<”:f­íìZÓ$-8$‰Ê@@ƎÛK£ºéG7Ã"¥LEØa¿ã~óÜEÓg~Ïçp‘§âAÌÑFÓ«êq —Z µ(Üdl&ÕR‚–]~Ó»q›oG¯á±kSD•a t«ûÇb³&¥\vJä¾9ö5oçhçFäG‰™[„l>0s\SöÕÚ‰Å!BQV8¡ïá99­ ž’ú"‹\ÈïÉ$—¤l)s'ƒæ¸(º»,L΃@.@'?#HÙ~¼Ô.ÑGìåÕÉ®µÁÿž Õt‰ ®‹q‡¢„ >qØ'§+Ž{™y=—hìDb¼Û2µ2ª@kI8K^PªLÄrôOH>*V÷­â{èÕiðEmÒÖ7ŽŒ¤ŠŠêxë†Éc7²+ó°œuãlL˜œ,e‚’¤¤1kƒè¬îú*šHJè´pÜ’C §M¿;œÈ»Çʽu1[^‚tA*öº†rbîkjÏÛª¹îÔ:wQÛäÊoŽEÿXl× X'†_³4ò>!A¯i4Ò4…%èF*h,„>˜À¾p¯ŽØTTCV­3„-‚°]‹ãOõnƒѶÙqì’î<ÒŽUØh”‡\¡*9ð‰4§®îw¼¸'åNA/j¼Ó8îOil‡F#‡P¨³kƒn¤‚ÆBà¤,“p¯Û¸ß!/’q*qßñãþÔÂý©‹{rÅH^gµ¶À€1Ù2%3½O%)¹Nïcäö©hô(WÏO i}„Ê”P¿¡ëÇ’úˆ(¯ªä(‹'ñù‘©“ýЧ÷ àx“ çãP’u©õ“•pg9u°aM!‡${ßv›’˜H–ÈLBÄOj*"~PiC#?iÒ¢ÔºQ™òE¹5âC9)¶sû©ïÛmîG»´—ˆxœË#§ÀÊ^úŒ™ÕÏ-+KãÑ›Îô9«PAo@¢úd¦Ø`B;+ENy©§Bãyˆ‡Šžâ¦mYÑS¢T¢œ·-W8õ߆`È“L4s˜ rÅap´cú`µÉ°`x`¸i*s &ƒi çyAy‚Êó—OØóÝ$í¼m×"q§ÜñÌ–¹zëltžÌœÙ`t\•õfæ¼Mÿ=Ù9söµìœ:ݦ’‘†sÓ&zž´U^mUläOºª']U®ŠëÓUÉ çñÐMÞº†smÆqÛ›K7žLWþžžL÷ÐL¦+=gcùtÙ6-£®¦&ͽsj\Œ­KëLôCœÓ×~ò½ë±÷®gÞuxW8íæ8êZç\Oõœ'X16Çùõ§ŒÜGŒ¤¸®þ~¿È>íÝíĺÂqÕ YšÑõ—«uýV§Ô¨I!;ýx•ëpú4ó*w¿óH“N£+EÓžùâ‘æ éi±Á 9>9é ‰m“¤þÜ>X¥ÃIHïÚa¿ ›'îèºbvæŠ8šç—3Zçºú+Ðèºú­§)¬ù‰©DÕ×ds´” £­odÔˆÿùéÈ7Œÿ¹õbs „ÿoëÅÖSü¿yžâþ­ÿóÞVÖú6kÁ wý‡;›Oëÿ!^íVüÏØáPo×1øíIë]ÓëoØÜð¤,ºðz_©ˆšYq;óì w¸NŽƒŸÙ{„ƒ½‰·§W~Šcž ÆcRŠuBtK$3Úá)æ’9^ˆÚ&œ.¶<ÇV Þ)gCÏÏ¿)TÇÝ—Èñ*%'Í¥Çëgí±7O *sõ ˜H:>•/øÇ´PÎŒ“%Í…@’R¬IO¼£2NÑpDnÇ" uè¤ÌQ ®ádµøJ?a¹Ìµ¨›A±ˆ`Ì(Zè,zGàÝ5{ˆcÅÂhò¹P/¥Ç{ΡŒÈ:jKy®ÓÜ‘#>jû ~m}Ì–„ò¼O‹ý†”„3b¿™‘Ö†.Úâ0sã1X(õ ñŸËÑlxõÚ¬ö“xqæk´£AM¦“ÊzŸÒ®ÑC»à]c–a0¬þt;•dsbÃJdÑ):Añy˜EfÏÅ‘±y™Êèh_Fs›U=1†•„±U±á*þãÈ€jj=ÎÓ•›Dá,L80˜º8¡/s‹ÆF×L!„]Üå #±! T‚bé•Àto£òERØÿþÓèßúãÇ-B!œTþ(ÆÀüA`&nx ¢Ù‘…é¼Ç0‚6-fÆ4\Ü'V0=7„ –ñ3dDåSÍœ#% L?7“5‰ÇŠcð«ˆS=/øÙ”âRñ*‰$·Yê¨0+Ðè¬<Ö,µ”àÿNF·ž±Vçö•=ÐI¥eXmz=ÐM—ó²í~GôÎñÛN³OZ› 1'€x~ç‘wpj¦9ªŸ—ÅQ½×àƒäa×›³´WgÙIº¼ôÚ­^©œã¯‰ã"‰(CêÕÏœ¡8eÍ~éðº~ž—K.ž3²]roáe›àY«6Eë&ßߘ]ÁàÛ̺ð†‰.Žcp 2È¿7Ë@p‰­‚,§uÝû=¢{aœk8H¹78,7I¼“[‘¢& ]Ùl õzÚCv®Ð?XÔŒ°E?ãu•iˆeÜŽ5ÔËíõîsvG²®Á˜ëÇÜxWaéÛ ¨ƒ‚Z¾ž+Ú_gt×2K•Iòh•E?qîtm`Ó ‘a4«1u/zWã-6!“~qDø*Ñ![2åÎ'%ñn/Ç‹Ñ'˜¾‹¯‚%7Ï}£ê8°{Í>:ÓÈ8çYÙP``@¦—d’r¼r¿fL„ÊÄÈcÐàš%ô¾Têç@ÿ!{¿+Œhõ×gÎÀÌQÏeÈkq5ÅkáùT|±“ —ƒ%®#)„Ù‚²àh¤p4ÏÑX‡¤…Bd'æ¹S?—löç‚3Ôõ F ƒ§Z%ÉÕhÃäW@™®‹˜~Ø7,ŒùÃð4¢¸A=5Ðï°å 6ˆG0Ðo2P3‚º£ØqÏMî‰çÑ ö9‰ˆí³@þ\òM4ñäjžÍ"Œùü%Ý<â¦÷—Noøôd<æýïìzþhò?O÷¿ó<Ýÿþ­Ÿèþ÷¾VÖú߬mnÆó?Ö¶ŸÖÿC<¼Úíûßî–|¥-µ>Ùuº?÷ø|§"Μãßó ø ÑíBqú×:¸<%s4#™ã7»R–“çNY&„<×Dñ—ÈVòF$,ùûþ˜Lº Ü`¥ÛhXŠÈæÿ›p@ç C Ç+ù&º¶¾ŽîCur˜ÏÑñaJå%—2ååh½PÂPÇDÚ—Óáõõã0«¼0¾Ü‚R}s®“ê[X0˜~·‡wsóé ^é"„›áCj¡ËCŒ€>”™#ð‚–×fUcâj:䌰fw%U¾ŸTxOþÙ(¼7ü±|Oê4ñ'a‚ø‹\d#‹Ê+ºØ¤$1“ÄL3ç$!|½•â h+—€? ØyUöáér}Ý—ë¥Gv»¾B†3¤ˆØ¬:”woÉÍììf:GÇyÞîŸû»Û|t¿Ï×Ðïó*CŠ÷7‚Ÿ‘tÅÛiµQ“¹–±s ¤§áàòC4¶ÏCLªcB9/áñųðá$–ç¼ß}«S÷,fK£Îåt†ykP‰ˆû𔚒ÂÎÖH8{Q43‘@ ïÙ.£´WÀ.ÞCŽ\ ”3ˆÆUáþZºö3H¸&0„UµÎI^0_ʈîhN^£$å½eÛS\Xq|3…ã/x5¯’YÌvW3KØ5åŒÝ»PJTÓ x+å}ÈqÇ7 Ȅ´$ (ÚdtjX “s ¹ü{òU£˜X€Ú” ?bŠb„‹dñçàr¡;ðdqó°7YÆ6®yM" Œ´kÌÁÊÚZ'ÃJ‡„ã~Ê òEiSLŠù.yœ ´iõúÝZÀÿë€ÿ„ô‡nßÎîß`'·©KýœR6`‘rdøÒ?iŸÑŸÞÙ=ؽ¬×Ò(Ñ’(yÔÒ‚Hóõæáíor¤–XÉÞæ.Æ1~s›|ù*Œ×®BÃ)¾÷½Øçèò°—¦WÙv«äH$áf‘0êžç­«¯|ïbKÔ=èݧ-GìGzM‹(2 ÞIÊ9a<¬%;$ÿÔXäÎ]ÏË$•4c¥”È?¼Q°ú˜'_m™ãàªóNüVNÆi|2üs8›Fg9ôð@± s€£pÇáñrnDT!@f¸XØvLsªÆ§ùhî±Ô,ùŽ«èI{P“O^¿Æ´j¨¹[Ž&Л gK‡ÂIˆhr~¤† íȾܦÆå‘¿Œ°ñ}ÞàFðŽåhoƒ¢¢‹béœÀl®ˆ“0ÿlp/¶òLIŠq‡¿×ФíI©ÑsWGÔöŠˆb¨GF GÔÂyÂì9ˆÍ½Èãσë;ÑñËõNÑ ž¢£´(´ù¦çȘž·¦ãÊ‘r.J¦g6x]Øz%±•·wuŒ­ùömbØ^¼ aûò‰¥p´þ¦-M§…žON·@9¸>‰µ ÌKš±»®|9iæ{Y]¶"·¦4•²¤27ÒÞ*+*ØÌ¹G¬ŠÖU·Ò»¡5ïÎûD¹‰gÓùvŽ]Á?!G‰²®-;sB,—wçN¦÷Ì w5z‘s Y½«n¹ëAoÞ:Çþá|© Nè=ÂàÚÐ-:5ññß¿N4)¨ÐÀ.r›èl4eHçhËÎζi+xÀmð!ÀrMÛTÊèµ.˜à1!Ã!ÆQlj’,%Å.ÝG¦Ÿ³É9ü<ºw|.)ŠêxXå»ÞŸœâ´{£cŸÄ‹ö®/ìHKw¥ÆI¯ä9¶o¨C{Ñh2vv7áR™èŸt»jÉßY—¶ºÇ ˆáÉF/¬ë¾[ª „}[-ôµ£Õ—λh Ê5Rªá¥c\§fPÇIÝ .? )çµh&"û^]Oцš ¤ù102Âþ\ÎHß'ÍÚX{‘ ‰j¦èl¤ŠÄÐŒT;cHi’¹˜F÷Ó±°1IŠ{ÒKdƒRø¥SÍý+g5¢iVÖÁ—bz›/é®ùcLû˜ÓÊqÀiõ³ ¬Ñ§ 2<-Ý躌ßÓR{èYJEi¹¬UèI†¦ëðÅÌç‡)‰§¤)*Õ«o!-õk?·þ•¤ª$…9¹<—Æ1³dü޳‘«Á˜Þ\Nœr%H,xÆÞ\G‡7³:œŒäUpœèЦû"v€á Æ£¦-º4_£û$—p+5º êÞ•ð3[ ‹.Þ¨f‚k£y}~.+ÑB_ªÅDoÆîAïÉ›qµÇôÿƒmêúÿ/‚!²iôÿ«Õžüäyòÿû[?‘ÿß}­þÌø¯Á‹pÇ]ÿáSüç‡yxµÛþýn³à éò—æz;·¹|1XU QS‰þqɾoü˜â§s¨¼½bZ…˜ ãd÷ò“$†ß‡t%AuÍ`ñX}´þ¾J¶_Ðó,«t¯{Ðñ]÷f_Ù::£ϳ ÃòZÕQÈVqßÌQhO¡Þp(.†ÐC*q½œQ¼Û«áb0Ï«.¢ÿ-Ï…³EsÁ-hêGïGh–Ë(/;vüdò?¸ªU†XDi­¶onBAù‡eT&œŽH{F¾pHG…¡¤›»Ø$B¤‘¤Kòð >Fâ%ô² Vå÷#'gŸ'Çcä/W•ì î…ô~¼†“3Û;9s°œ³1!@N'0þ{ØûÙàḞ6¸Ÿâ¾'¢Ô׿AþnÙüUŒQ<Ækƒ@_«€…}¼»PçÿĪ\àЭ*hO:¤ÛN^PÍ2¦¼ó8Œ (4@u°÷µl°Z¦ñâ·Ëf¼:¤K! LmÓ*ð¡ÕñùðÈ6˜ÛpÿkÕQ“xx˜"ÀÀËxîà«ä‹°WŒ¦}76¾oC²ã‚„xŸn wðˆ¹!dø hƒ;Øáƒ¼ªþÞ‡áåGÚöÕf4ZPÀJ%%Úñ*LRm†ç‡MöåÐ}ŠjªsˆÌ,)# @15Z^4òÀ“áJD3ï°'ùgZ‡oÑ%ÿx‘‰S;Òü.L鸣j"ÄËJ+…¡$ÉÕèø(ÅÀ,Ì…ç^X:ðøQÓ1†øaðy(¯1‡÷"ó[]5­š,.¡ÜϽÒwt]´æà^Iq½þf·Mžè]+„Är#h=EÌÊ1ëN—m÷ôʸ;rô Þ+»5\ÓÅý3¯éô­×Þ–Â;˜Û\~éë uÙ·Òm·ß9oëöîØáÛÞÖÙ„§Ø”šážJéÈò'ü~a6é—h¶í+7+øY>÷3¦£`sXߓХÿ_\?žüO/žôò<éÿÿÖ¡ÿ¿§ÕŸµþCøm+–ÿ) ŸÖÿC<¼Úýÿ@ Ê]•ÚWîõîÁªy›r<*÷Ã4Á³Ñ…ÊQs€j¡78EŸç‘&¢¹Û¿ øKw8f—ÄeªkÏÇô/+<‡Ã•n(̩ͺœX‡ãJí5_Jõ¨/Ùwýq9ý4rï"´å6…˜\aØNëÆ@ú'¤§XL1ëBÕ½^ŽÇ±’ÅWŒ1‘_=Ý=@m&;e«¶€€¾ 0L…«¤îU´¶¼iËÝúÕox?qŽ.‰*S¡µÔ¢h)èVwr‰h©'ÝÉå{óq sè«‘ÐëšêT´k——l¬GÚ}H÷àDù¶ˆ yÙŒæ—Ë9õ8(¬!ô`#gœÇ¢hF8yÝN~å;šQ  jóg°eEé9Ò s¤ ¤ˆ¸ÀµþñväµåðópREHï1T1çò¸yYÞ­b8ê#B P(ÙZ óáßÉŒN®¡¯­¨…¢¶)j[¢¶-KÖjÚO#A(‚M€ˆ¦^x\3†"Ü Ñ…ªœúÃ~·Õá››bsKlªBp¬Þ Äf¿ÇÔæ .n©r[5±ˆ­PlmÂïq »ÛªèvMlb;Û›„Êím(]~ Љ®~˜Ž¯æžÕŠ-SƒÎ'þs:º‚åU{½]®½†µF3;×!‘ÅxÀétfẾ#ÖqÂ`˜¯˜ æ²^Øz½ÈpÌ«Su OD•Ü„;ŒC5 #ð´µ4‚S5n q´üã@d¥´@›/¦¼ÄT>2êÕ`ŽD«‚d#k^-ãSœãzœ\øw³¤Cÿ&ÅÑmôé,ýÀRšÝ6ÈÓYú¡ÕC¤i´b® ýÄW·²ï§\JFÉ€[qKªÅd” q‰Ãvµ–ä¾?ý"ÆÖ"êËETǽïb l“h ggŽŒæ%_GÐÔ›ÓΕ0£UØL(rÖŒc„¿Jÿ9k•ç›F˜C˜À: S36Æ.|¬:O€€mÅÞ`Îa2a–ý[[’Ù!’6åW@?à¶­øÐL>Ì*LÌ ˜1§~–ÜŠ1'÷ ¬~‡-`zu•±lG¤Ÿ´DïR6ëñoÖ“¸XOÚ†`=›‚ýÝÙî‘Õo­—ÕoÀ`%Vÿez7FŸ8ˆ;0ú ¬ÆècƒÈdó@ùkãò^§@ŒÞàò^RW¼ÛBüäžÀ»=ôžÌ»]j7y÷7àÈ.b3®÷f0ÂýüØ`áŽâ†ñðc›…[è".îðã{·³ˆ«Kò›G´ŽitË¢Óìïïcæµn»ÞâùMÖÓtðž+¤ÔjÌükÍÔ‡'Pæ Rá¨|è³E}¤ë³¼8ÞË sj…¨¬kXMÄl4Z f‚åCWYF¬hŠAH4îx|~¿ýƒ‡6Ep ^[kŠ<&¬!åÀ¨'ô)z»çO-ìø£¥¼‡Q#1,ë®jíu§_ ¢p²~̃QW†¨°Ž:´SGÑX˜a2rÇÝÁ„XÛ/²CɳÐGÎ$ŸØ{»N¨êþ6¯IžF‘¢,æØqb´P«Ša¦«N1<`r9Œ´Þyò(uƒ:t)bXp|5 ¹¦{ðÿíýÈ TªÒ*È`ÊdªM§Y‚‡;ŸyÔ6ÿè_¡ã>]QÈÚ6â ãȃ%·ÿú °}ádC³qî`Ë­èG:#áˆÝˆœÈÝ„ÆÉF€X@ipn)ÎÊŒÕÆ-ùèoñp,BN lþ5‹0”¦{Hö´$Ùë”ÇwZí¸¸ɫזŒT͘Äêø¶ÆCÌe6"T §>ŽDý¸Ë,lâ±àðøÝ?&C™Z9ZfÎkû%9 F!4Ñ“õÄ_€ØTóPó)ìaB&î<þ»ámIkß— ‚êQ5 ÷½¿–=at=Úa% H˜(yççÞq µÉÁB9e½ÍOY  x$ –¥·}€œß[±Vä©Î4ý¤"2ðëüzØKÁÉåi9ô%µ@lðKÁP&hUõ¨#©«Ê¡8Û_]xi0Iö×Ã$û·g’&KH™šf Mkë ƒ‹g¹œ@OâáV¿ó+M_ ˆÉó“ùžMƒTò0yxpbôU¾# téfH]ë„>öŸƒ;~o+ÞÓ}5´ES¦=„¨#ê—HÇðÍWL&÷²q©In))z¯°nÇùÀð ²bRF´üâ"IT߳Ș‚Iì)iã¾K1‹¾n%1&!‰0DÙ¼þf2ãѓȘ,2z¸åmeF—š×"4¦ñEµäë(7òö'õ\‚¼åN`QäÑ_P~Ì¢¡UÈ‚8RÔ°Œ?ràé~ÎE¤äÈ£ïXŒÌÕ­oÕ¹W2Ûÿkö ý¿¶vvjè²Éñß‚'ÿyžü¿þÖéÿu?«?sýïlní¸ëóÉÿóa^í®ÿW·àø}I£\¿jwtý:\ŽG ï·“÷Ó¥2"Kô‘ÊÍJXaÜâYìWëÓãuýZÍã+—§ Rª¨¥•ܽ L(%ewµtýîZœ¾t òøÒï»y\½ÖáUUuJÞ³WÕ“SÕ·wªR˜åTE«£#bá¿´C•ÅU²I1‡¸ˆu™€82b*cîäãÍ£-tXT‹ò^x¤:܃›JJóIXçeqTï5øß yØõfç¬íÕYBÄL¦P©×nuÞÂ×sü5q\$òeHz½úY£ 6½Ø¹ƒ&ÝߦÃH)ÈÕí½ŸËø·ÓW¨MÒÈ—%¸²[m šz–ù b¿Ûƒ¿ÝÞ^kIAê»”únð°o„齟€¢Ð¥´êq·ªª0ýЖ+¥HÌ\Âß4H¸ÍÕCYÜ%OÉcÌ ²ÂuÈÎݯCpƒ»×ÈNûjCµòP§Ý½¨ Ïg¶¿ñ¢Çq ®a3‡óÁÍò&§„+ª ,êÞ«ÜÕ ãÜ—tO¯{A|—[ì 1•W™bèShc7ÛD%èÄó Hr€2†÷–È#¤ÑÏÕ7}™®#æñÐPGQ·óFs£×Bm6þ„Ú˜¤ZDWÅ<±Lh‹–j,„‰*c¸Ûº‘K°ˆbI/G¶P‰=ˆS< V,tØCW*¡øÚy¥}Ì$c¾ò/³P+w>ÉϤ½/FŸ`ú.¾ þœÓŽ¡9?½9M€¤†âÏsÑ“ÞöaIâÃ]ºj^²GP*õó¢Ÿ>êeê0VA<ÿzD³¿>sgŽ,xNà*»šâ!Î0_@‚¥ƒÌå`‰«˵Œ?l¶€Ä@•‘\Pˆô ÃL˜,xhêô¦?—\¶ú‚3Ô-Æ F ç§Z%ÉähïåWiY|Þ‹>¦òO%J.ÔSý¹RÞ3Ø [ÍúM~ªUe’-'1÷fážx­dļg”j`Ùþ¹äŸ1†«yöްæ2–¤Ûeþ—¹]6/MþŸÚ“ÿÇÃIo}”ÞàŸ³~ÀϺ)²é–Edî¶–ÅWJ ô˜¯„טhH¬~ ¬'¦*Eƒ&/€ûjºäŒð¤¬”ßÇ£¾cÂȸõí¸}ºõ=kdGøk· {„_“éè—Å@ÇJ;?йÁë.÷óJܤÀ€0­ÏÑÁax½ÀP8×—‹éL³€T ò(_§À5UâGÿ>a¯_.‡2°6Ðéâë'AÔyµ¼dêÄ–{—–3q=À†Fÿ,øJÃhº1œÁ_†OW}?‰ÓR¿t ‡°2^5èkÙû¹×8íRÔ5ÍøSß¹C_i±ÈÙl§¶‰ò+XLéB›J¢._|¡Ñ\ ¯éRûâëkÕ$Nr 3q~)ýI‹M¾âq±Ô§ßø‹*Ì!/ñ'5™ª›|+$õתIÔüœZÇsk0¡{„fÉ9Êâ~Ä"€Â+q5ÂÜOcÊ$O~CÖEÖÅxzù‘fªoà-&õUóèÞ'ö\Q˯XSÓa!8ôƒ¼Rš0Àb:-i §%X¼ŒŒSbk”!‡ÇÆÏ·qôrA·µ‹Sî?Ó§$Ÿ ‘¸-r-¾³ìH2CÅO_šÈæ±mB•5B™ŽFS®l¤ÝÁ¼AÚ6c$NŒ¼×°¼¢Îš¯×,öœÁ¯™uŸéÎkðn ü¬U• þA>Z´mX¶lúVå;ŠÈ“dnfÐÍÅ ºiÌ û¨™A×`ÝÕ™Áy$cß…œgsƒ„F¾ ;èþ]ØÁÚ¸AËà´ïÈ ºU *‹t-nÐ5¹A»ÍE3ºÙLªT_f‡9n¢ê½ ÐD[5!á¤+®Ú†€£21 ÈrÎÆ¨4û±S‚+{dÊ2ô5c;VÆàòƒqŠŠŽL¥ÓËË%9™N‘Ñ„ ¡š FCð‘ºbäT»“qéc0Í›UI`0~?Á™ä†ç’æ&äÓlú~6¸Á¹¹û’v<Á€0¤ñíQóåÅ|1ZP²ø°ÄÊKÖq3øÈ„ÁŒî Xêô3¨ Þ#˧q+S&ËD $ À9N(øèŸÐ×ù”7DvlQMB"`hÈ€eL gÐ(fN‰¾? Òñn ~ÅãŸ&^¤ðgù+¥0”‰4½þןÿâ__ÿUý¶–¹xk_6캼–¹–-nÙ2Ô½£en½Õ:+‹ÝãþÏð§Õ8èßã3̾vRoÂ¿Ýæ›Ÿñ·Þq»q–¢\/‹f£ 囸éMŠ(ÄÄ!zŇð_ç¼O©ÙŽÌ "tì6úuèOó Yè6ÈÐóøì …æž{ø›­’AF²’¼G&6ÊÎ÷m :ô¶ƒ@Îöºh‡|FP~¾ü’vg“d üÀ¦½ûÇ}e©+Kå0ì5+¥Œ ·Yoýü¯XöŽéÏ›FûŒÀïÖ÷éo‹l~q^Òð¹~#àÞi·Ÿ¸\nrÏ "¤ÄQ^$eX¬“dT¬-dhEö¾|¯ˆ²¿¾0¢¥+ÑE³Y²g"ŠÌp©ÆÊ¶œ²ÚVyTXÝ—á&®-˜ÏL g]ÂèqO‘že±lNkÛ`96Ó6˜°šÍ2 ÀA6¾sו€ÏcbÜ_ÙÄ8ª Q¨ðôärçÕË4ˆ/=»D ÇêmHm æÚ=b2»6_+ùDLå™hËJJ‹ÀXJrŒ³ìE¹TTcf·!JS<"[zSZYívÌðÍ?Ùeg7´4ne“éMPð– æë"Û¡Ê~‹ÆtЗòb˜c½$”‹GͪYLè€,†-lR&²xL©#«™½óHê‘ÚNÎ 0~ŽœtyÝaNõ%ºËˆa;½EcX 9̈́׼3û]2:ÌQvR‘ž†qÃѯ:ÞgÜF<Ö5r[ù7ˆ³Ø`ý!çóš‚+nÄ€x¾¬èfÑ8Û[—›…í2’Á”Á ”>ȹtc†z®Ùt채Fñ2ŵBï²TŠq±Ê¿ãfiª %U*ªêk?Aa<¸»³rîÀÚ˜¡hEaÞY¢V¦ÀzE¸ZÌÉC¹ÿ_ÓYÜP™èV+(çÚ¾[t6îyæÓñgÓ ™-[Z¹†ÛpèMæÐ¡Å¡¹ø¡[œk„5“+H߬}Þ`só¾ÌE˜ cž›†}´N¨:¹‚gó„ÜЕB…ô‹_£ûJR˹:¸HaÚ¤ŒåØ%«­„±޶ãÉË÷h6®à~Œf¯EáˬüediŸau–•*.OM‰/Ê$–ì´¾R̈û{ì%Z/Ø{·“ú¡‰iÚÖì[58("_*ãˆAŒ;4Odza—JãûÍZ¬ÊQ3µÊV¼F¿@Ö£f%0÷Õ|õOX¥®o%3d‘!ÎXãõ:ãD…X –Û `0qñ#I¤J"ðJpðñ+î!lïhjñÁX¢‡ö_š1œ_PÈÐ3æxiüÒŒ± ¡Ë{‘;ª‚çË‚f 1àÿJÞÁ»5péñT8]ê±['€—d%Fqƒ?Q-¥Ç0NYVçMªˆù.u‘›ÄdÜw‰ùàQs£ClÕQ1X¸%¬Ê<òÎGWÃ8$X¾Û5 |Èãö§1‘íÉæ*ˆ¨hÒ¶hå1^¡·#8sÌŽ`þugö×n=x ýBðšf†ÿ¡—¿t‹%tP"ÕR ûçqñB5†tô F¾Ã¿W¼+>z–ëßô«/u íÄ–v}}™mäÜñ¤ÜCºCñtín1®aƒ$†¨ŽÒårînrÚ#» ¢x²¬Xía¸B1IK„Ÿ/TÇ.Ò TDâZ ý,å‘®,'œUoA¢*ÕœW?dLÕè)˜à!kóT=¥~X™|^FQI:­³Ï-jg ÏZçAMñPœ`AéºðóttÉm_Ðbrùéj°pmG¾jxƒgýðƒÓr®\v“ý­òZPÃ:R˜}.=³…¬°aÑ2ú,ë§ž'É'Rr…Ì 9Ί©`jAÒg;[&Ò“)æËò" ˜´<î—üh"-io‘:b$¾€P¥\@VlR7@ˆ¸ž²‰>6_›~Ï^~B\úá–~è,ýKµ/GNœ´ì,ÿõåüT“E˜ Œ[³œßóB˜Ì-ü0 ¹Wn7HJ¬ÒHŠÂìÆä0·1ð°\†/!tÅð‰=åeOLþƒJ+ï›…^nÆ$x+~–¿ÍpM4^$"\ÂùÞô«>´Ó ùyü‰ì‚íï#;ÏÊßœy¢Ç;HÀ+I¦ { ìSàhÚÖÐla J¬V¼]CkEÖ°]~÷ŒKîò*;Wáhñ‚UG˜õÑwUÁB;’ˆÎ»/ìôO^„H=û5åéÀOM<6¼.pJäNYž|iKC»72Š\•ËÖÁ4Gu‰M,V ÎäçIüüEíëïÑ~R‘«¥Í$Ø•®ÅΌÊ‘™‡k9¦Jb]‹æÕ:\×µÑcaOž›ã^d#ˆILú1¯EžxÚ#âi©} œÞùû›ÜãÜ:éä^'s⤃¿i-ð¢>ol³÷;2laX>Q›(¦‚‘Ruù€èß’ *LF´½È Ê®¯ÅÓ6ð Û€Kü¦-½·Bƾ‘­Ü²[\ßN£déàÅÝïNZ÷qw¢fÓ™FNrÔ\ɰ]ÁŠU…ÃF¢—®Ïê¹µ‚™{´á°Ê/W·ñüø2ÛƒX†»x¹®û> úéÓ§gÇÑ*={K*77¤©ÉYZX4õĘùêæï-G©šËüÝ­¯’B«š¿göðð>…Ë€-x¯&¥`Ø«+ÛuÜñÈ"mà+Ò¾˜h/Ál°í¼þp\xߨmøH7gÛÀ›¸,x%¢XééAšIzº |>‹û ²óÖS£J ‡P™Vðk²^zÀ0—ÐDKÉR &Vt àƒÈžqÄ:Å|þ|üVQ^r›Á3á†åÎkþ#íà+d/Šú(øûÒ.úlçÚ¡]L˜†´‹îI»HÏw©]ôW—gzßñ]EžÇjÆ Ò •Äww¬Õ!9¼Ý±>Ì{ í®†¹ôwï¬ÕÛp%ͪæÎÅRá<@¾|„EÇÑF³ô‹Aóóm•ÚáuiË­>ßR[žÍ‹è`T¯«ã· $óSG¿ñh2„ߎ€^?Iy_ø­_ø£ü{ïúÀ+€JáË Œ/£b©i:Bï¦B‚ÿjAèÀroVÖü?I%^Dým¥’äÛˆ¬â®{·|L艼ʊeó—0§ùŠõCUÝ7aíû¿ÙXPƒD¬6cmßÚ$ •Npe+oãö"—·*¯Ì5q‚ïÓÊ;ëòæ–Õ7‚´­QºyûÛŸ´r–¿I¸¹Ž H¨Ï«¤ÇÂHº*Š¢#éË¢|Žt›—eî~Yô­º®æ§uâ±{¶5y™H“бZïàenÝÖˤeøŒäç?‘¹8.¢­ñ2Éž‰ŒŠ)<Çݘæiâ*Ùsyšp¥0Û5!Ãs$ÉÕ$©¼ @îØÎ&jdÎ@ NÀy8Ì:ÿöÃ_í> .?>¯þÇ|1þyY½¾‡6jµÚÎÖ–À¿/v¶éo-äïôà$Að"Øy†AMÔ‚­­ÍDíú{–óÅ`]ù8,ç)å Øurx(Bÿý^žÿö¿þûÿõ‡ÚƒKqÜçjáo?üø/„ÿþü‡ßÿ_>õ~¿+?bÿ ÿýo§È‰~ÿŸpT¯>Ái½ ‡ôÙ`‚Iù~øÏç€ÅàÇíZð2|ùjûÇÞàz0ý¸†?=æ#×ÿ=®þ¬õnÛ/ÜõîOëÿ!^í½·»Ýã·°E6hÓ;ß+À–Ù>9%©·/câ_ø§yЃoÍþ‹r_Š+óWѾZ©ˆVý¤¾w$dâMQø<œQâÍ*F¬Ø¥Fs1óéõâË`6H¥ƒ÷CLïûytÅ9ÛßNFŸ«”ui8™ çóá°Œj@úýᯧ³Éh v‡³ÃñðkÙx;Ogƒ«©ØG;ªû;õ7¢µ¸ªV˜ÀTÝŸ‡”0jÖ’Bµ*³ÍŠºÌnl¤ÝÜû¹Þ­ïY)m «ÿ¦O‰j q'1Nèïx2uR¢O_ÓžŒŸ§V’19h)ºo)iÓf•éód9û4,Áü;“ˆ˜ )ûR²9µü‚?½¾®Ä‹š¦Ÿ£Å°þ~"Ç®©ØÊJÍïhÙˆ(ó¼^Y¥ÀTêý$ž={-c-Ó'çG§b+˜Lªþ©ìYG–ÊÈ{O¤…ííö«Pûl2Él‚z®r­'dgÇ%Ú±Ž'P„¹BS©¶ËšŠL>²ªºmü9Z”åºV+&µ±2gE7Á$P°D -NÇÃÁ.”)¿œEõÿgïÝbY²±ê™;w®f$íìj×` N¶šUE²™Y¾·ïôXdUu7»HV5Éê®Û³ã^+«›Ý,²ÄGW÷H~a¡…‚`-ŒµõåOc¿lÁð^{íÕ—þl}­aÃúñB0Ö€`À†eØ;>ˆÌˆÈÈ«XÕÕ÷2ïí"™y"âĉ'Î+ÚE>í¼Ë¹€,þÉŒx~‹çÞ‰ >"®|2QÙñh‚xBsèÈ÷*Cèñ„ø*…Cž)=:Ý>È]tšæyçÌÉa øÁ µ³Â ƒÔúë+ ©Ð8øÇË_¢4ÃðªóÖ̦3ÂP€þû(€Í³„CO&ˆ(Œît4Âδ QΑ3”&–Åûó¸TI|?8|>QVtÊû FÔw4 =GÏ)Ê¡´³ZÒ„bYQmØ%᥮ÚÞÃê–^ݳr£ ï?Úiî€d_y€jø§±sضԸóº…,íÁtÐe.“T-U/Õ–‡Ð¿†öœ'ÔÒš‰MšRP«V†@^]lXVÖƒ©Øµ5Ò¬6ZÕ­ ™v-íò»ÓIèßiM@2 6;rð·IûDºtl:MJb7rV*NhbòJ2 ü&¤û^X¨…{`èå¢|Ð<Ý0Þiܶ„¦çDK4ʃìhE‹l*Ë{fytè0ê2›Þ“N¸_¾ûßuùtñœ£öD<ÓáÆAÞ4!#¯V@Óχ6o ánBM‡PKƒð¹®Äi–¶çvÀ¶–´ uG7J¶…mdP§¨þˆpU>:™ä@öؤ¨a½ÉÈ™y×OZ>=üæéG|Ë!ˆšgE…Ð2À_ýMCk°XŠC[´†rà[JN-•,cVÖqW5Ãõ죀?¾¡x¼^µ4üÕ¤–& 5Æ_- 5µ4üÕþj‰ø«Ùðg ÓΓ"C±jtD¹h$ÎEdáe‘Ro-Œ"Öá .²ÙëìhÒA¸:/Ī£™ë« b¾íšæÀ '-”´”MÁÀ7aE§þð<¦s‚e]µm ¹ˆû¤b“ ›+ Î}‹Éû´ 5®ºÈj⢪½„…óÁ÷Xº1ªÖ£¥,ŽnÒY‘ôÅ´¢XõÅšƒ°ƤOvL®ì¤±wQ† ë3i|=¶C‚\èc5Æ´Ál£xÌŸGMʶ#¿ó78(+ƒ\/—¥zK¶7“^Ì~(c'Æ-)1 #9æš­Jí–˜6aû0îYEé©ñ íð4(Ri‰»•3X¾€ÛöÞöާ¼×˜‰°×²õš hïCó*çdºáä̤†Mœ7&L‘X_d¼óÎ`(w㨰s´eCZÞs’êddŠiú]‘†RCoàt;°Á“x|ÖÇ}~µyrÜS'¢•¼#ƒ‘3*šU¡9yÜ;&}]L#g€DÄ]È'Ž“‚EÉx:æËBÍ|Å:Wë4 ë ŽŠ`vnX̀؄ÎÎ~.]ecSÇþ–|<µ&м–¥Ð§ÊÈE¢ l:rff×:G÷þ ×0ÅZúšV‹}წi9ñS4‰r7GR+,$µ ©}ÍhÚýÐ}…5‰¼”u&«°fF4\•°&†þ#Õ ®HùwÉ5þÆÈi–ƒK¿îrZá ä4/!§=LÓ‚Ÿe”qàO?+˜"^À©mæ;Í&§¿BÖÑDžôµ¢{³CXùlÔëƒÔäºÖþxh ‡Ú…’Og<I°w7è(g™9)å"CŠtT²Rn%D!^crI ®̡ͯù•"CŠ6ÿ0kóíͬ¯A»çÐîÃ"Cж‚ŸÔdm´BŽqER„[H0!ÛQÐ7ŽkR¡æ^/sDÂkŒz`Þ,m&Nôà þCÌi‡“dBìkª¼ÓŽF>¬8 Ð2V%¹×ZOPî(}áéöYïKXO¦Ç¾lLÓ—ðŠ GL8”ªsÔ¯·oÙ!«X¦pU`«¨#œÚŒ¡›ýù±w´åb¢–Ä4A²ßfƃ/öO‡PƒÔ9±SG[o`W&쪢Tå2”ƒBãp<ï1èªORž)ä¢P£ EdYc ×Ññ)ìoLŽarôpÂÎà}€bâªÂQ¯§7°Ä\$‹wî$h€œ53„ ­­ACâ-õ%¹g¹Á¡FSpM, 0ó­¦SºKÝbt{(ÒÃîuï QmãÞw‹ŸYöÉ$ÿ·v°yLΉ£Ê-4¢>ïãÎ>lµkh&Oü¿ü`Çå>(åçánl÷hg²¡n•Ÿîäœ5+’fø)î•ç,„y¡”Èã>°þ”>ZOç T®Nâ"‚.eèG}ëQ|¯éõ¼,fkMJ|R[J: æRlTa•ÄÚ8ƒ)ÃT–ŠŠA Š A‡EXÃÃ%T eâ £±M¢æÚL¡M@´0 R6µ0•Ǧ¢Æ(¾•Ô„H´”ha ÚŠƒ$k&È”€­HЮ£É¯l˜¯€¤5Æ+GbnÖw¿ˆ¾{˜õ]×Ë2cøUóAëŠÂ¯èuvóCô«§ªÕà™F|–Ž+”–Žr±æð±=½fÅòÐ*IéÒXž fëxaÍŽ2N¶Ûv\5ž;´oèNOEÅ`8ø©?†MUI\Tå¼sÖŸŽ•ÔPü¬aÉÂØÄ a(wÎÆ½þpò^´Ô"­Î н¶E+·ƒG 5ž¯ð+Ê}<Ó‡ŸßÁúÂЯa¸C16Aƒ13ä†>¶ŠƒÉ–p-Y™œÞœ&©À Îð,W^F•X>,|þ ñùÉ}8Ë”°æØ?óy“b †–XËÓ›‰’k¹J–¬˜ü®¤qÆivIƒk4U] D¥•äXГMÖ§À~TlNû îW{ â;£q® _—aù!sy¿â Œø¥¬Ëk-aÜããçËr·¨· ž¡ˆï‹„šæ/„3”©9œç¬| dèZ5 L;Xµ¿ ˜‡p`Ÿ1rÙÃ`úĽÙñ1k^¢Ç‘Ý"LETÙ‚¤Ö(4í´ïÊÒŠÎþrª¶d§<šUbG”­»JƒÍdq ÞŒ2 ÃßTÐŽA92df:l„ÆD¼G¨XŒc]Р›©9]weG)+kÐQ+¸µk»ö2Ãï«\I™°¹ëÐÙoÃÈžìè|?cZؘ̼ÐâÍù"`#D@|BéÙ‘°‘ˆ„8ð» ø]ÏÐ63"ÍâåfÁcFJû|¾ˆ¾ËˆÞç̌仉HŽ;íÕx%žÒÜÒ|1ð…ÀÊ sÄÂó$5·tqR3*-ú*ÇAẘ¦ë¥d+>“¶áfà”$øÙFJÒˆ²ð¸îœÆ Es7c¶ÿbO]XZ³Ðº»–‘¯Î„²ä¥%z%¢,ëJ4W¦ê¦._锸‘“΄Öy-V„Ö¬kU<%¦.<³QâÝŒlw&”%/=Ñ+eYWªÙØ£Ä$+¶ŠÊáé¦U>Ý”·švzFФ iåÕSü«|üôeéZN=*°œÜ*o&,¿©»*)­ .Ûñ$GŽ¢XÕZhâ ÙÌ’÷sxNî0´Ýw–bß/²=ò¾QœV¼Þà­Øñ-ë+¥Ø"‰Àþ¶ø+–íáªÜ.+UFöˆ*\*îã,€úÖï¹fX Z,ôÐßoìsÒRx ™¤.¸=ut‹ª˜Æ´¶4ž‡‰Qä cQýBû-JiØé¾BŸJŸ56*"ÛÖ=1Ѫ ¸ñQ0ÒÃötG¤[Þe¼KŽÙv‡o&èÄV\Ùk§Ü®…o$ìÁ(ÝIà}a 8_™ }ÐWÈ#÷l9¢z3g6¢ìàçÁ—"û}/M Ê¥2§™!"_Çaµ³ qô–Mã€ö0aáðâT¦2¸j Ï¿ ΕñV„¾JS^ â@]çèÉv8²ƒ©ø “ŒàQl`\P 1³.Ò9#¹ âY ( w–“䪯¥«úÚ)º¾˜þÑe9FœÒe%:¾Ô¡Vvc+Êýï‡mY—o{ŸŠ™pŽ­$YÐ"ÎÀº|ƒ×ÒìÄŽÁ‡À"ш¸:W9ÍÆÐÜ;˜i^œ9:o¥ÙXl“{ðH"+æ‚WH‘ÖfSìS5Š¢ŒLDôfL ·j3 ¿ß/QP-a ±ƒÍ­Eàà5\jüߨÜœø¿Åù×s-âÿ¾ÑWÿwU³?5þosÓ[‹Äÿ¹¥Åü¿Ž‹g»ÿ×ÚiÀú½WÉËÄÆ­ÚÎVÛšæàFôUä¢:{¶íìËÈ¿šX[F¯(@”Iˆ”‡Éaƒ[…P›»уÅ.6PÐâÒÇ4©F ^0š0á\¤jÎ8 ))–°9ãJ0Ëæ~„L Ø.j_º}àl¬-ò{/ZQÓäìÌG‡Xv®žh‘S3²œ1ƒ`d|Œ%¢Ä}“g-ñyÚÎ@S½#t×öí-cë›8ãé9_ œîéÇ/I!¢%.»=˜þè#œ‰ ôgc¡y"] ’ÇwDAl+>Ú£š®ö¤&à42GGž¿ò)Ã^t˜• ¥½‘¬ÆÌÊ+fðr­e'vðàéÎþ²-܆Î7cwà>yœ)à‡ ;¨Ã,ûT”µÔ)^ŠÍ—*⥣! ·AöÖãSÑBÜp_F:ÌvVÖEʲŸ”ÅL9¬[òm{°„Ú|zo¬Å̪ø€9ƇáèÜ­è´‡*~.¹eÀ9§P"±f¼^óàùxBŽ ¢ˆFŽ"¡!kéûïFE ìY§gž äœcQŽñ˪ 5Gb›:ö)›W¡ˆÜ“a«‡á€êHÂIëÌ—Y» !YAõ€÷cJ¨³OIÁïøù×òÜ´,'¦ÑáQ‹u>êM&þ@Æ…§¨…uÐiF“mÉób ‘tjhiö}qòÚ|O^3Ï]û2nêY"Ë"ž b•D‚×Лú‚8òÍý’W.íâip|—ÑSã‰0žUg)­ö€jÏiçeoн§8íqý¿¯èÔÜ ¢_Á$ÕÙŸ²ôã9rÕ©.Õ# ŽB¶8„ ®ƒ²ƒðÅô~†ŽÒ˜u!×Ë÷hí@êÕz”ëÝë­ºyú»Ì[^û‚€ñ#§dJ ø_¾ï¨ pÙ!­þJ•.ÊÒÙÓV¶ñTféGŽ®Ñ(qò«á)p$¤Ë!Œàx8q0ûA‡‡ú š©;ÄPm„Z3O ’óC4’¨ç̵ÌJ‘ôŒI‡/‰Š¸ ‚@R 'à d1ðá®D[X É7aNÙËi­oÉ„*P Ä'lˆT0ÀOÿdmïˆ}(Mô[£ L±"v¹ŽV\ìn#O¾-®ÉˆNŒ“§'Vn’kV?Up o ïˆ0 <#z³ÔªÂÐz Ußg_“v$¼]ïùNØRkߣAÉië%ÚðÜTÜ×U~6“ìwPtÇïZtXa‹ÃÓ¡Mpü†ë9¶éT¤‰;•Áv“álRN°¶Ñ€×u>æ¹:à–ídÂ6teåÍ Rò’áSx:ƒTÑG¢‘‰Ó&Ø1ôP‹"{ºÅ"ÎXA\R׊$¢”Z/a«FDrôž åž¬<_^É!6à?üJ7¼4F˜h Í÷ c!Ðÿkj9;2$sk'›‚E ˜òMñS'-‚Dƒ|àÈ­¨o*ÂLí£îS^"³'ìãâ °isqE‰s¿ß× €üʧËLT.ôaK2.:1çÂðÂ1KMiB²¦ã—×>Q=ìÇ›i$Ïd_BÂO§y&{IõB¬4¿f¯h±y²Œ¬ªÃn–'ÚDj‰4% ·”Öûþ[Ÿ¶R2õ⽤¼•¦Spš+8yïã\—" ðÉäXœ«/S ¯Øl=€UÁô¦ãÀë¸. 8zaI“óaX’æï€7KêÐM‚-y™–-?Ï\fµ';ͯòPmµ™wZÏÊèvUn´+òò¬üh%9²S}Q‡Í©†Ò¸ Îvñ[‹öÌ”®¬Æ tD÷’N‘KðÚÁXˆfc¯‰ÞcÐÅX¤Ì-Ú¼‰5Ê牉İXBk2çc“Øà“2²Ñ‘;œŠí«ÚäbÐOšmkÓSr mûÝá±Ïây\:´ÀåŸi6L]FÞˆ·+aþ "Róù%ÃÜOü¾Zvß,ü4¾ð“°¬p†£Òq¹ÚxÒ‘lÌJÕ'ÅB d#ÓªoÉϸCæ}=Îb–ôkFlõ=ÉžNmÖÜgµívÖ„b›ÑwŸà»â´NqÈ–h»x–ïsžºr´@f¯KåÁLv"EÕ/+Wñg¨Ë šRW¨ÃqˆÃâƒ24©ÞçHÑh͉È>Î.mü¨_JŸµgUåa\ Ù’@¶véI Ùñp‘Œ‘E­ÁuÄGƒùFÝŽ ѦõYŸ×(€„¢¾Zpß,IFc–û óîm>/'Œ§ ÕDAGŠ®—ì=Ûbýº®Ù~Û‰ÔŽ,Úqo·¥¬PÖÅ„“ÎEצ¤…)nUŠ0Mܘ >B¾Yü—+s­ ‚RãÖª´…D6?¢+ÈLÜZk$´·Š†`·E«AÌ)¿¨@»{sƒäB¾Ø(´ìê)'E…”‰CXCÙåGÖg›’D¤ñLË?$ i(ùG‚ÐERR]mržj1sè0)³HêÑ}·¥¿ÑG›Ãÿhd¨ï[2bh$`̓q‘|:a],Ó…Ñ2º§d´`®“%£Ejé‡Ùf òIªÓD2[´Rß×ãˆE3:wAUbžuÉ\Õ‰j°\œmÉ3¨yÔlŠUW¡$S“šþ"RR#½sƒêl™.¬É84bÉËaIÆ‘ØKÝÙò^œ «©;2fáÈÛ’gè݈År8Šq¡¢W–Kc†$íYRgDóeßüÕ&ŸxZËØ5XÏëæ¬ŠFr8TuEöTs%m«`”ÅÒX%Õ%Ò’ƈ T¦¯ÆKÍ0ƒ$f¢ä#à6©`‚éä'€®ŒÑQÎY]ÍQ¾Ñ—cm~ÂÊ\má·›;O·b¢-Ÿ2ÊâóNðð\nìŸÖŒÄTË<FYF†õ?•ù'R©¤™‰Jš:•Ø®¯™4çE&Í$2iÎLš&™43IS%kö[`t1Œƒ¶œt‘Ì/–ˆÅ|Ì©©†Ú[t ì“q5œœkA°qµÔˆÑ ú”` ¹M5k‰\ûô)cô^ó‘ ¢G0 §ÙWv­²PìÈM'DO€¸ç0ŠTÇU¼‘w¦:XB—EŸõqé.ÑbºyªÓ-ÁEHA*˜L âyCBWÑ©ÉNB Ì̈I =å†<)BaŽÔ°QT|i]Rª€0Þ…+,}ÉññäB;•a·;EÙXÄ£RTŽQ‡Óþ±!ÌQ¨%ÇÌã>”ÄMûä¬u‘Ë&…Á…þêq½ÁxŒs>¦õ]êd´·I`ËEl ð¼úŒiv,S‰eÌQç²êNw2Å8wÊtÌ8Œ—!GØc²è\WÆ8È1I­’°Î“’¦±ºËÇ…sEü’•)EÊ’Éc!ÀÚ–-5WEPJö}¶¼æ¶p—ú^MìüNú€`²æ(0Â6\t0 /ܰö;§GÇ‘ +Œ´Ô}Z9.†¦ßßy‹Î ÓßA— N›.¯ÐçÛe-ŽrJÃú6HDÀ¢#Þ³o5táÉsµ_:X§Ù¨%x+SÇPk¸#aÑi·ß;ö¡ÛX€¤ÅqŠÄÒé $Œô{~´Nç‹ÇÅ­S †BiÏaëø¾¹~â Ø} Ĩà †5ÀÍ8Ü Ã •á|†ÙÑdR’a-*º"á…ðæåB…SÜÂ"{gÊ2öEª¿A„kzÆÊe³_m R/;]ÇY¶õ<çP ‘²"èF$v<Ò 3R“Tê\›5ªoD•jLˆ±F§1AƯ«ÍŒ„˜ä A¼RzªÔS„Ó›¯Q.tœrô© ƒ)kçܼ»œ1ø]¡á(u:7áÝ„vϲ[)o磡»µò“v3 á]„î:™CweÝ$ñz]s:¦XûÀ9‘p_'1>7!è×IûMíXÜ÷C°iÀÎÅb€Y€äHàøð•!ØÒœ™B‚ä¨`'.('±éÔ8i{D²'ìØâ"MÃz”µºÂ$@N’|º¦W"&½ŒgÕ§ý~0ïåsÛÌW¡oFšhù1kØi£œvš-’T WiˆàÑpl—o£åv‰ü%X[$ YIX뀉#'!ŠU:¬ge•/H{àÆ©äIÈ|Œ[î–QU<é§Œ,¼ßâP'¾`¼öC¹Uõ!®ê)±ßEXpæ®àþ†ÞøžB,|å¡W¼Ê™c•uEÚFAè»%}vÚ¹7ù7˰í{ ìä„ǬKÂ!‰ü"+ͬñµŽŒ/ÙTãKÌ)¯®&íÈ–è Hèp¶S|œ7…‰â,Ù3,¹)ëddÆìBXêjE¨ §qUe‡hËTÍÖℵjã"4Œg»HšÊFh5ôqTÿ13ø*诊þˆÊ¡©ûüX"¸p/Š“v[tÔ7:P"éµÐ}ÒeÇËðw4j7±ø>îË,¢/Ô"/¤ÔÌ ŸIFG ^¦(H¬{…àe‰pÛŠªƒ÷2øøsÕˆ#ÜTP‰gZÇÔái¬4êŠÁŸ ¨°™ fh¤$ Ú¸ç$¨å ;ñd­®6suµôêP'¤T§*vRˆÓQ)ÁXŸŠˆ¸ÈótF•²ëÄGJÏÈ“HñYŒ°»³÷šÏ›Ü†¦5ÚÛe^éË«Aa¯`Z­”—z"Wpô¶AsQìÓ~ßšæ#0Ù™I/(fyW¿Y£›®¥‘™ávcè<ázô° Ò¶ÑêM&,©/¬âõÃ#[sÀÈV‘)ƒ-RRyBLØÆ*Ž¿h1ϰ’àÀ|µ`uR®xÕ¡”B§§ˆ¦'ÕàÓ[”l_:@É [qVKí’)Û(~^&‘ >ªògN° è_*¹M|Òí±¤Ö+Š\óù±½v7ô™´» W׊.‹ük좟üwj†§Â„]6-c]·éî(¼'ÇîqÿÒÂeã7™AëA½F¡i‡xÜHæ€V{°*…9ä§;[¡¦þP~½þÖL'ËÚ^Jhé‚Vk"hµEQ±8NW«J‡+ñ¢«mŒæ‹ VezFÅÞšÎ)T‹Tô"ò(ÃÔR_=ÏO¯¨mD‡*Tn”ܲl˜Š*šn¯½’\»c4¡’Ö„Hà*ÊÙè§àŠäï‚%üIÀX3aÔg ~M –Ý0˃¦ËÖúw7ún%k íÑw·²Öëc{™˜·¯jsy‹zåÇ)–Ø78!"ŽëÀÞ ŒÓyÃöyæÂaaâáÅÂLàôeôq¥‘)ð,À”rô¨¬Þ] ôªßæ¼è¡rua¬y‘WØ·\êaé…'á6÷>Í:=QeI‚CÄòW™ö²eåp¥îL5|”Ts»ùÚrpX!HÀ‡œžF„ˆ)¾{'£áiøîÑp2žjgU w¾£÷á7Í  uíÂŽ™ª ZG¿V*¹Þ¼ïlñÓ‚Ó¤/*€g¨Ñ³y Ô£·ÄU+(ꆈT(ÿ1¶¦Š­©ÂÍŸÈæÐ#lÓclÓc|dqE®ÞÇ4ûõø¾v0d Ñ'ÒÏp[rì£IMÙ(Õ\Ø–Q@EÝÑÜHrӽ·÷œ»%§f‹['ŽFÇ×Òkk:›öï–,/ÑÙ«vµF3Õ"w½Èݸ¨ÖA(/+ìUŒy.Ç›'ÇñnDZ—ôÔ’^ÞŒ²Lʯ€„TŸSñ\ˆLÌŒê*áÍ Pt¥#Û:Ÿ"65 {!íR ›š…Ý}$lj}žljýF³)A[fS êR"Ô\Ñp= Ê•ÑÇ*ù,$É'PÏN 64dX®< ³Pƒ\¨Z_y¶X:v]ÆR .BÂ7]YÞxýÂU+ Žº.QÕ7puÚ˜çê´ññ¬NÌxf·ãKª+ž¦ªÈÜŒ¤T¥ÛwKÑ{ŽÕú>‹¡m¥í\µ±\g²µIcÛJû ìm¤B½4›[ÔêV š% oqv7kÍÕû 5_Êô–hy³XOÒínîÚ¥ oðºå­…å-±kÑZn¢å-Æð¦7)È RÖÖmFyaÓ¬nÄþ.’5ItЯ9šÝŒô´Ìn1Ϩòø<ä¡Ìžü*ÍnHÿ}f·] Ëœ’RæäÜJ•¶³…í,|÷ëi;û|žBøç7D¿:ÛÙGÄIfë‹wÙ¾|`+VœvxaÄŠú_ÌsêqC¦¾½äõ±n“˜“%*©G sÒ7Åœä–æÈ1˜ùê â×kOºAc¾bÅáó³ì|ä"Ræ¾|t63»§bb™]ä³›XtJ ›ibqçééÞ×Èø’ÖÆâz–cëܵ™-,jÄcŠ™E³²pøyZ&ó''ÈjgÉfháÖ^ÈÖ’bmqœ†þZª½ÅèTÕ¶õؼRÌ.µÕlxQ&Ÿ‡ñåó…ñ%­™™jM¯ñëb|ijá~€<„jäÐÚ®Eé1Bȳ½\YØmv¼>"»;Oß^÷¦øöÞlà p!ÏàBÞe¸7w.t-  Þõ¢aa. ®¡K˜§¿¦{³ý5?>{чçM7ÈÔ4'dİ·,j^VªØàÌ…™*žQmΓQmÞhFõñ™©><£º®Æ¢n–qìã”%çnW›ÄË3aaÞ9ñ¹0ÈE/\›îÎsmºûñ¬MÆ ÷¹Í ÷EŠAîb¶¸«7ĉô‚3Úâ2¤¼”%.!Ó`š.=Ù`Š .!çà3Ày—6Ày \B¿²Öòà"i½õ9å@öw‰£µ^®Æ›`„‹¤’™!“ÌÖ%ê, wÁµ0Ü- w”:lŽ;ï¦8Qm³~ ÔU8=ÍÇ©âYäH´@˜ÑÍÓ÷ػپÇߨ$‰ž%~=ò+.¬”Úõ ³RzóÌ!ëÝì²×k¥\HŒó“çŠÁÏçg]ÈÜ—5«~àl’óµÈΆÁ¹'¢\ØdWâµy®ÄkÏJüAl²ÞºÅ&ëmÄØdu…¸qæÞÎà-(|( úÎ÷–×7îêwÎ:Ý7wŠ/ƓѤçO® ŽR©´¹¾îàçÝÍ ú,yü›.o³ä¸®{×ݼë¡Ê¢ä®¯—¼%§tm‰\Sô€¦¼éw¦ã„rPì$ 9Ü'øüX®ïüsß]úÖÒR½ÓuöZΡä=xoéàŸÿþ ø‡¿ÿ(Èr»Ý_ñ?„¿j¹ÞÿÝái±svÖ÷‹¿5íŒ:°Žú… M 'Ñvz“„Ö6°%á `”³vÊ,‚…¢l¯ Rõ}t²ŽŽ±'ZûŠøúî;%9¬;0õ $kI9ï÷`¤‰rH­ ÍÕkoàŒ Ö¶T­°zÂ4A¢‚*„¾ß9FOOráˆAW¡Ç™$Cž\t²x§7«pðyäenEž˜€¥±×ôß3Ii¯Gk¤ÁÄù'þÈtýc½7µÔÞ˜”;So"/Çö†ú}ÑÞùÛÇæ¸×y9GžÌìŒ!ÇïôÇCµ«£»ÉvÆc`Çxü‘︚'0Sϻބ‰'6zYej¢åÞË6D¢ 70±5îœ"F`­€u–()jªÍ2_äÐ…ô®S‘!Áä9í¼Ë¹0|ZF¾œ=– `ÆÝsÆÓn“iŸº­>ÿ!>ïH½Ná ãäMaò êgfë¼ê Ž^¿ï¿\¼íô§>7áþ<.uÙÜáýý±“W0ôãoûÀ3ë;Újš#_¤û0ê¥Õ’¶ÆÉjjCXžÅ­ÔTÛ{XÝÒ+kì4ªm\œ÷³|ϲ:?NXm?¶´`çt)ëÁtÐÀ¨'7£Ö‚^J5Ë!t·¡=çÇ µ´¦GB¾Rê±"=[×ûúÓ¼s¸Ó„UÙ· ¼8G¯kk> §Ym´ª[!ØzùÐÚ:¿;tŽú>:øNü@r‘ÑöÇ!k#KÄ.WºÔÒ0¡·1"D  ÀbÅgX‚E/XƒAf0†¥#è@k·Q§l(8å<’ž}f®1ª< R´â ¤g‚l _)¶üšY¸¾cA ÈFB]º0D  bãURÓ2ÁäœÛ,0g/a?('4‰ü¥Æz4àc‹eO•CÇ,»ÚIò ‡sÄ ˆ]O yL*æÀ½1¸)ú«(ØŸÛœœÅ !#3¢ðè ëÁjèÞ{]p¯‘Os¼DÑPɳÚç1  ©·‘·€¯Î`ŒRþm¹5{Lat)–r$ñ´QkèÖãÇyË ®®jV“<Î1‰9άæqCÇÚlæcœ¤ Ë ÐñÃëU÷Þ …ƒhCKÂãDƒöjðGÃ{1V>•F~@#ño…øñ¬„“ÑB|ha¡¸ÒKÓÿz7Eÿ¿±Ðÿ_ÓµÐÿ£/EÿE³?Uÿï­yý¿·Ðÿ_ÏųÝÐÿ7« ýÿ×Jÿ߬ÎAÿï”c-k×eJnEÙ6õK›þžJZ¬3hñ¥^¨C#Zx³^¥…µþ×Wß(½/4¾.ÊxÑ›…2>¢Œ×ig¡ŠÇËTÅ÷'½ ªøÈt =Üb÷ò½ewÿ]‡å§þhXäÛ­€t‰¹ ï{‚Šph{0þrdºÐ}T±2?¸] Oa(Y­\Çæ:yçq–qüg[Ë/a° µòNãiŠí /‹ÍÆÐnÖëdChñG»êÍ×–@®Ý ƒÂ7͠Ьf7(ðx?™öºo`ušLGd‹ ÜŽ{@šÅ¡A šÇ»¡KÜzåXPVØ›¼GpRŽ+êðìzf¶DHz›1¢œR>w›ÅÉYLelØe«J݉P±–m™ñŠægÃ÷~J‹&ܵbð¶7p…k` æ4àá 0tçN¸Õ+¸òŸ6 ̯á:Žf<ܱjº`q™¨] 6t‡Ç¾ªÏ–šì .f!Ášàã€'™ œY¬P†>´O¸ÔÐF$QÆcÄ.…¬ÐÂP íz¼þ4ÊJ1†\  M̨6ŸFdV€Çaí–ÖÄâSQ‰Ì@ò%¬Æ£“1è‚hr%Ú˜(mÇU‰Ë$V{c¶F J¬‚—r©`*½øcžOÔ)BqÂ|–•>BdÀZ}LÓ<Þ†ådüzõõÛ°²Ñ±Cʉf­$B\WÈU SL`_òô7cè[øNì pâ&Áüšo —o¹Õ:íÌqI d™Ck sH•22Û ›Õ…ðB—nÿ@û߯úݵu(à‘ýÏ»»Ðÿ_˵°ÿ}£/Õþw5³?=þgs}ÜÿkÞÂþ-ÏvÓþ×’›³v³Üh){´FóQ+Ü/T8¦=^8YX ­ÖBÕÌFCJ °??û!g'@Ð3[0,ý·>޲‹¿OüÓ iïpt`© 5¤⠅‘Žà•wò\èse³‰£c±BP¶†5ØxR¡‚a¥Xž…X]—´>Pæ´sì£íƵwòZÖ™f<©º©ÖI¢’ôJÃ#‰w9áˆø°²’vöžÝ® ONݾ,…ÛTX<(ߎ+¼% ?R o ¯§/;?¬ž¨ ¾&VY$É °Sâ(ŒÓÓ¿BÚ{ç^Ñ/²),Å{jÍΨ7¤RuÇZˆg0 ·g0vSÌLáÐ c M6[ªQád5[­À)æÙØÞØ*ä•lN²«PR  V`ÍÒoŽ ÉºjËlE£Üt߆Ji?Á½Á˜eᬱZµCSl‰_‡UoŠ\T¾wà¡2ÞšÉ}yûvÄ^bß^”‡• ù• ó•Lâw£ïV²¾û…®Û‰d&szë™Óo˜ ]G¬œ®²|ønyðš#mGJwÂÞh–a§JR‹h¶T«Z„sf0g´®Ëœ¡éÿ''Rÿ¿á®­Ãó»¬ÿwú¿k¹úÿoô¥èÿ¯hö§ÍïîúÚ]sþ¯y‹øŸk¹x¶úÿö!ù5å‚§¸g•›fZ+ºËN† õìØÖ…ý#ÜÄ¡–ÿÁ>â0½‡{æj¥î<ëLðNÓûQ÷•³â¼? õÿå³Q¯ïx%7æ´ÃÚtãl´?¨£šfzhЀ_ÞÞPº‡pУ¾‘ÝH('~Ì`wh?€ÍýYÏ´;i´ðÜO<tpÜ;'Ó~_8¹v“*š AîNä›T†.(ù¶A鯣“]IÝ|{J§µp³–Îa±óMEu[y!Ðï/d—Póõý@CƒaÑfD²ŸEÞ˜‹âØ×ƒ˜æ§Â½ á<˜Ž(á¶ÃÜ×ÙšÊÜžÉ3W»h$ÅYÛT¸æäšûÌ5sÐÑeçóÎóW>p8]„á¿õE„ô²Ûíâ¬s 2¾°ô¢s릒٭¼TÁüI½ø~' .a|¸SòœÒšSZwJ¢d©$aÁrïzŽ»æ¸ëŽ+»¸ÅTéyŽ·æ€êÉ^Éñ\¸¯k˜×ÖœµugMZ+9k®³æÁýˆ&DÜuYn½ä¬»Îºç¬¯Á}‹­³!‹n”œ ×Ùðœ5gcîcGi:ø¹ÎÐ2R$²z5ì/1Xæ&uaî¦q¡Î™ÿÓaïÖâÒ½|éž·Ì#;fKMñΘHmòjäûÒÎH³uŸÁyêéËA9·~o3á¨6^í ßø*ÌnÔnkì'ì†k©5¬!®‡û1ÕBDŒ—½ˆ¬„H>À@Œîå`z¥Û#Ñ㬠®©«æ”‹c\Ž’ ßWKô¯R,݆BŸÆT.˜J@³ yS"¸höi*µ¨ó"¸¢³ˆkY¶SL%¥¤Ëµ˜%ådRJz8Åa—œKB0Á3§µIÔ“ˆ˜ôÑØ&ÑŽE´¿ž²þŸ†^v~©s#Š+ßÀúRóÒŸà 4<«³ #Œ! `Ð06Æ.ü¬:O€€ ÉÞ`Ìa0a”ý€Wfvˆ¤5ñÐx„mH~4ƒ£ ÃãfÌI†ƒ?¥·b̉5`òŠÌi^†ÇÇ)+ÀFHúq @ø,aÐ.ûB ]±‹v%-Ú•²(è¿…á Yýú|YýtgbõçÃË1úØN\‚Ñ»yw6FéD*›ÊŸ—·Ò8Íbô —·’ºäݪb'÷Þm¡÷xÞmR»Ê»?G6›Šð`]ac ÜÎn(šøŽ…ë,\CqqƒC+åVÉ¢Š˜·‡ÃEÜ j{Ïvšy§QmímoÃç^³^®ñ 'h™òNãƒòÎnÞ©Á[hôà_þâ—}÷г´ë†ú0Ì9J~oûº<ÂÁ ý¤¢Põd QŽÄÓ×,®Ì¯‚¦ô:˜ÑÍë8ñõŠšo?¸"3?ErGš.=¢G(m)É**uóNIm“™5©- WÇÔS¬w¸¥{ƒIÁ -ã ô¨ÁSv«üê…/ÃòÑpY!î9Çþ™? mÐpÀôy¼ÄV«áÞox÷wµÎ3™XP#ÕÞsé^*„y®¿ãÉw\{ç«'$ £ŒwÆØbšð–ö»HÊ2R=P‘WØõŠì'ÚÅšïxŒš¨<Π0C•º- OÀ€rhðØ#J®»–ÞÕê´¥Ì_ݧƒ=A[¥1èÖ•vÙðm:ó,‡ÊL3 18k¨´|3"q´’ŒDè†ä¢‚aík(AGÃs«.\Û{+^ʇTm<®"¾h-¤=¶”q3¨>–Ü á­Â2^µÆKË–À3t/í½ø¶<ÎÓ„²½mIÕšöùâÍwuäZâülãt7NÀñ у4Å`Q÷Y@*Øš.cšm¸æ$nžBû˜865óˆ=.à µ9·G¾V@mPu¶àX‡9fV·ç3«Ûs™Õ1˜Ÿ•H®nBq¬Î<«îêULìh iÂyñ­ ñ8 ‘Ï™—dK&¡Å²¥$BK@±€œ„–ÏiŠ\åµw$òA÷Mù×.Ìšôé&Ÿç0ÇäPNŠz.ùd‡ú\O„§qšE Gñ«ráë±6ò»‰Hýý 6È”TyäŸõ;]%Y åùƒ¢Ôæ!Õ@¹ãiWœDPg% PÒï£ð®3„øGB;´÷™ £Z$Ê{ÕžúÀŽ&¯†œjšBYñ‡;¹àxúH<´Rvó¤Ó%Ý€Ó‡è·ã„{…ç¹v0Åsí¼ µ ,b«) QÇë¡J'¢äÈ Ÿ¬‹ÁÍ~€žÅ=• ®J0+P%ìÙvÚAýJΠ—Zªº®V GRQ©©Pd£Ó)g®AýœÚlÎ]ÏCßû)éÎô&J*­õŦ®£2uœíV“UAþúª íÒ”©z}=X˜áç½É+EEf‡ðG·ÇÀa¤Å©ðo&¯˜ç¨œ1HØõ<ç¼ÁeâüU¯ûŠlc>Õ¡óɧtýxL<“%v/çœ:x}––¡§@‘‚ &÷HŪvè×E\µJ70Wórä$Œ)uÚ\vYṡ‚K©B+&éÊ”nÈ•6 Ó°2Ç¡=ZS¦+'ê,_ðõŸj]ö Á‡Ig¿(Á‹EÎ@·Ná·<7á-nQ¾­¼rS÷¬ã²Î`Ð{ÕëÓi:!õ³á ‚;‡ÊÚ(š"šÆ¡Â@b ñ=圤ÒZÁ-C0ÝÊ+!QÀzžé 6+쀗ÜÉCò ®óâÞÀYf;  I(PZ,I4žE‹~?iõè}H¢@0H§./ù9Œu…/Ð þ Ãò‘ ”â˜]±#¡ž‘ו˜å »}„T×äbI ª6iwöÓ"ʇû_åÖÖ}<Ü©?¥X^[µróÁÄ“$®@¡NÑÒÉÚm»6¼~amxýjµá(ÌÏšy`ß‘¬>1W/#¬<H#ÒHq‚€MEMÛž*-r²ØÐôßuŒß§S±ë«laÐ*óJ¤ß®ó¡Ú®áyÑwÔ•X ¸Þ{Æu4Â5™Óy@"†îOÏø|¢Bˆ3e€˜¶ñDpj/ú£·ó²üZwƒ£– !»bR!~sÁc¤>cAXyànña›@Ä…[<ÃÃvÎ3e¸‡ðƒ ¿ïÝwÊ+ûÄê‹Ñ·m¡x‹¥ Ä~U6k9y`2Z,«9oÌÄS{~(;x§AæcARkÄ¢tExÕ±?@·h.¤ŸR¯°6u3F9¤ÂU^Í$er0ÎÈ×rè]M#ëŠAv…ƕ…za6Ä ¬@ɪSY+.e.ÄÖ‡ 49ºœêZ OTw…s7z±¯˜I!¾õ˜ЍI6þ^Ð –ùÎÍ7P&áKœvï¾ü&Þ1¶ß¸Œ<ä”ÍÔQõR—˜kæDÙ¡h¨HÀ‚aËî!;÷N=I3š!g_Í—¼4ûßOoŽýomc¡ÿ¿–kaÿûF_ŠýïŠfªýosÍó¢ç¿l.æÿu\<Û ûßs»ýïÙ^CÌùca T.ô›/ýýcUÕsQÛ @ôU™yägT×ùpôf ‹ŠŸF¦¨NuóÄh—íÁ1Ú!àÄ0Ýea Ýפ‡g:‰TÑ’¤Æ “I :FÃ÷1}:U==•ª¸Î ë‡oÕW•¼Ìµ_ S~Ò¥6ü¨?ì¾Ãd1´uÕ Õ×y>  ã¨u~kêà 7äÃá¿d& ‘úïÌîU:ÖÆ",Þ£ÊÄ ëm†ºÈšŠ$Îâ*68 CdžZhÍ)H(mŒü>-ÖÀ3¸£=Ì8>ž²üÁÚðÑ|\é QwHg7pØ%gÐî…Í€¹ºïOz¨{‹KŒÒÀ"€}6)æuá ~ï†ïÞb“àQ«¼°RX+õ¥lÔ õÂB=O ušqúÂæh[4Ö“ƒæW ›'ؖ¢W}Ö–…¶kÜ®nËmën½Ú Ï½ýv‚¾Ž:xºpùlTèÆá<¬Ö¼¢°‰úyE|¶é³Ý|~M&v;¤"kåÆÓø®ˆç¶zf³®wÂíQÐ=X†œX&KX;OŠW U»¹¦wÕîMÆwkuÅ*^ÜkãÌ߈ ¢]4€›·aÔõÛ–\aÛ8™O{|T ‹}Ž”ûTp -Þ#L¾V.ò¸íÜÎ ÅÙÌL³XÐ>>íMT°¨4Ö8<€.-• ÓÌÊ´£"«1ŠL1ôÉQºSsܨet™xžÁe" ){#/}²CÝNböF\ŸElWø'±U€!§ZãP!^àÞH'J§öIàA†_êüUh<$p:‡ $.H‰°.£ârIѳ,9ÈÝá±>¨9D¨°ç“a-e"¨cN>Œk¦ÖRÈpK…©#€#‚H1N_¾¢¸ðØV:ŽXÛl©䇿DÔ&ŒÍª9œÈf„ D¼ÃÝ[£V"×)Ì„r¬ñøBVÞÅðcµÍÿáÙÑ‹h…›xá yñƒ·à›cçDÙQ“@úÜ)r›t¿bI½aÔ†U±7éuúý÷Êf¿-½HÞ¼aEŠ˜¯Ù}Þg…Ü\ì±T”&ù8íVi]…G…ÆaZä/k4³»@¡j ¨°£BªcÆZŒ¸«ÌãÅ œ"&V°…*µ¬q »Sê`û¹±Ù›ˆît4Â!@{»œëÝë­öŽ`ì{÷¦”t¨É+GBcC4Ý88f¹ª{SU_ˆ\—#S­*½©ì“ìô RuáÔMÙ?Ø@ÕexX|”ãn.;EúÃø0;­ô$OX¶*î›óÎègKsxŽ6n  N©.?’¤h[à$ÒëòÙYÿ=4¸ žåÚ#Ä,š”H½—¯&Im¯@Û›Xn¸-)Jl´Òá*;ð0-Ôgì¼Úeé9TÍàò#ejeU¸ýX)Åó®úiVq…ùD oÇe¡0d äCú‚ˆƒ#(1ðbCªD]ž˜kªØq€t®yujŒöS¯¦IQá' ‚_¼CÓó…CÓůÀÿçi¹Y-7Ú­+¨íþ)þ?ž·æyÞúÝ Êÿçn.ü®çZøÿ|£/1ÿåì¿su¤Íœ/Æü/aþ«hŒy}ÃçÀÿßù££~çƒø®aþ¯äm¬¯mlÂÿõµEþçë¹²ðÿw‰ùÿg©ð|ùü²QäVx?‘ÿ¯ûMß»û…äÿ¿æ;sÀÀ7úóÿ gêü÷60ÿ³>ÿ½Eþ§ë¹x¶+þŸR¥Ýj6Êõ8?ÏÎô]¯ß#/œ¨Ç§w³ý=-ýsisÆ4Ë+¹•e5BQ‚ P—ѵ’±î“;¹¬9GÒ\w±“†°:ÁW ÑB/ž¸½r'ÑcY)³KgÀFî·€ÐcÖÉbÔ[à€ÏF½Lã“iGx<ž‰01 öÑØ9í¼ç8< †<÷NÞ£Ë6½ÕÞÛǤÍlDÃ:'9f÷ l¾3~?†§…ñ™ßíôºP]×?Ãê „„tÒéÑMz¾¬<ɹ’Ç–áÆ/â h‘7‰8ö>¨µ{%»wÁ@÷TU¥Ät8 Â;!¼Ñïéa…RÉ @ˆ¦q3ænðŸÕÜ\Ûi¼€›õÙÌÀBÑÓ¬¶wrÎJÞyPGƒáp9Ë„:ú¼˜PÒþ WàY‚¨ÑtVVWSÔaÝ&…ÓmÇÂóÕ~h. ‡+CUxÛtÀº­¨1…æI˜äš'CþÁ9•ç+d‹ÿZwKëëî¦ëÁúbÀâü‡ë¹úŸoô¥ÉÿW2ûSçÿúziÓœÿëî"ÿãµ\1òÿ‹r³YþJ®¾ü+/ÁâÌkñŒÛÜÄ\2›"€z<…×ðX¼oVpsöR.ªïת[Õ¶ÓØkìdÙGÈ}‚‰ËYB¼YƒÔ!Ê…P³u©ã®üœEƒÍûh’ü¢£u ƒJ/ÆpG‚P=p»¥o]`;Ñì¨ Üq&7¡ƒfo´ØÒñxCô ×~!Þ“lž×› €|Ú(qÀ ×àô©sÝW°†tÉmµÓt= öýÁËÉ«¢ÑuŠoàÓhÈø ¥Ç5O…GÒxg"jEçsK_(àÙÙóŒ‡rû@AbGAÍê8ØàðFá­¯ÒDdhÎA å’Ø+ ¢^h>&>x£´Y¦ç„öއ§&Õ ÉKÃrì¿íuñ.âS§„·^ŸxhþÖ_ Ü_òV‰W !3RŸEk`-?…É.‘"‰¶…oa€9± íŽ0–ÀâÔ} ’9”˜öÑ_úíð/{ø¶×‘çrüv°+´;'0„°i€®Ã—Ü‹H-/^,‡Gphí äßÀ7á£78Åÿu1Aˆ‰„$.!Î\øÖœ ·ã¸+ÑþЇ³€ˆlR"a¬ï Ó7®âÝÈîg|4Ž):íéšakËõµ&¸ô¸0œK>Õ¼BíÂ×zÏœêÄ.¹}5öbòV=0¡aо›q¯Îï;³z„ß³gQcbÓ~ß¹}[Ü ‘ §/uõƒ?ê6?ôX‘ê€ê=v9ÕV:åLaqx„D ê˜kh1u_’àírç>ŸK—ÿÓâpþu¤Èÿ›îúº´ÿn”Ö]Ôÿß]+-äÿë¸þ‡ÿçÿgß…ýø·—xSŽŸÿèøãðó_ƒ‡ŸÄ¿úþü³Oôßßÿ~I”{ñbâ¿›„ï½xÑ.…÷—K:¼}˜›Ÿá—O–þ-µÜ‹]–|bàI8¿ >ÿ§ïèõ|˨à œ(¿uxŸÝâϧâ÷Ÿ‡qw½xqìM_¾8ÁeŠ~o?+7Ïÿ–€÷HüþÍOÞ|ÇÁlâ‹þ«˜¥}߀÷ïxø=ôý¥¥W¶ö¡$´diß_x&>ÿôSQHû^çèhä¿ÂûS¬sñû>[2/+¼þ°»dkßCA5ñûö/,™—ÞÙô¥”± ïßð~]üg‡7y…÷GÞoˆß*À`Çéï?ð$Oü/¼?¥?T¦-Eñ÷©˜rþüï/ÞwàÁ¤[²Á;5æW=º¦~ËüJÁ_ý>ÏÑ¿ŸÿÍÑéÒ¾RÿI¾ôidúuðègÿkëÑ¿ýO?@~ö?ûg?ÿù£ŸýçKðñ³¿÷ÿþ?ÿùïý.þ}ô‡~öÇÿ5–ôûÔ‘G?ûÝ_…2ò»üÍñýÿŠïÒý¿‘üÉïþ¾-ý¿ýuøö)•¥›~ö'N°~ïïaµ¢¦ŸýcqûàŸßýG¥ú§~ï÷©]òµÿ>|ó÷—Âÿàj@øT¯æ¿Å?ÿþ¡Ÿ†Eÿ¦!ÙŒ"KK`ÿ®[K·Þýà¿ûÙbÌã ùñ'øü—ðw¾õ Žè/}ú ò¿ým‚ƒ×­Ÿ6Ò- áü ðïÏ~Η„è¹% í³[ÁNt½øyÑu ''½wþqòÍNöAD.œøýÞioBla:ÀHóQzaüþôh·Â)lš‡ãw¡É*@áûn©øE±Ï&Ó¿;ùžSx Àz§gý^·7)ÀÆÞ‡ßƒ!@=†7¡ nG „Ý §ÃãißÎ:°…º3îôqKp§ß;ºó²Û½óîóÍ›ëÒŽ;£óÞÀõŠÅÒêÍÕíOý¥Ï¾Œöƒ1Tv‡¤™;óÉ ^·îtß½’ÞÀŸ |þ‚oÝbpK·nÙžÿ1Üýöx„lJà¯OþîÿýÛŸ~›–’[·þ„nüÅoúÉ Qè¾…Æßý§¿ýɽþ7ñùéß_þaý»Xð“Ï>ùî±_ú£Ü›ÞàøþúòÒ/ à¥[õÖ¿òÙ¯|¿òýoöÏöWoýµ[?øô?«ü"ŒyñÖ¿ú‹ßþìÞ÷¿ü>ÞýÍOoý ´ò;K|«ú+ß~ô þ¬þÊú/âï|ÿ„6|‰¿|÷¯-ýÚ÷¾ è³yéûßÿÔ¬é7–ª¿¢âF|~ké\JKŸ„÷~ ¿ÿepï팙@"“(.®Û·ä\¥[ÿ’ö»lâ¯|PJ_FÿrÉ~u©ü¿ˆ¸õý¿ihq\ Fñ —¾ßñý!|—c÷Ëð]Žß¯Á÷ Nù.ÑúQø'Œ˜ÂÿÈm, óy°ðï//ü›KÄÓ »üù7ÖƯ;ܬOÅç¿æpOù¿¼Å÷ÿñù‰ÏÿP|>Ÿ{âó®ø¼#> àþMñ¹/>·Åççâ3/>ÿcìé·BŒþ§øû;¡œ…%˜¼†)?Éd¦þþŒß¿nüþÜøý7ßKB™ ïËæi°¿8õ&¾~ÙÌ‹¾?xßNÕGœmýԃÑ׃2‚êlð½ÇÀàôÃ3QýRm«´´óˆåUwiqÝÜ+°ÿÿôè¨;>þpù_ ÿ_ïîbÿ-×Âþÿ¾Äü¿ÂÙŸ2ÿÝÒÚÆzdþ{îbþ_Ë%4í¡ýÿy¥²ÕÚÎ9÷*xä3|xôñÔmó§Ÿíf¹Ñ¢èúý¼ó$!µýh§ »ÌýGÕ¼ƒðjÛøAÂ7øKPkÛø„ª„BøQqÝmú»ƒ=úîáwî{p?PÅ£<|¡)bv›Z>[.gXõukŽÛÒ²êð%3¯±OB£»Öt2 -[ÍÎàxØ?{UÎ w·†¸µöC?ÅEÙ-ÝT7BÖŒþÓáhd ±dçjINLJLE’Nä¸ Žb{ï RÛqö›;[ÕVu3ª"Õ‰¬¹HzÁW/¼ë‰»IÔñB ^ÄK3I”¦©%¾7Ã\¾Ý{@Â;‡+îfðæ›ø¢W¼œ@ýÜå$ “[èÍI,gOÌ|0§{ylµœcï(Vߎ3ô(¿§ÈhÊ9ÔŽzǽe:-pJTáPú^iûý1ŽŒó;8˜¯äü$|‚7~ÿªÁLòòã‚q)ïÀ!4/þ_Å'f†ƒèomÁK…–c€3‹`­pý„+R[ wžÊ§++lÔ.ý$Ò½ŸhOaÌâá`€ýa˜(þɬu(ý‹«F}™j|B5V¹ýˆf‰”’íëéKJØ-eâÀwÓ­™ÈUA¤¬Šì©Œ‡Ë!`H¬z³`µ7X…,. xõÚ‚8ŸXˆ“å:U4gÅ­ 30f¼+Ä3cê’x÷$ÞQ;Bx¿ðjû 7eŠUM/ý1+ûôCWäB‡š-¹@¨€(A»\!Šo! žà~‹r ðb'ˆU¨´Ú‚åRt“¶SzN‘õô8V´É„ËNˆš™Qc¬œñÈÙ ›K'"D:¬‚±ö}Gïðx [_£×eÇ"ÀèµwUá1ðaNaðŒ¤‹¨¨ å¯YèB…­4]D¦µ¢«# ïÒ„áEãhf²à%CítSŒ3›(yUÇôˆæ\옞&ŸÓ#€üˆ“»ùÏWž˜ç^ãI:Í™ÒQ!H“CÖ£tšÊ98œ#ÎÒÁö)gé¨pä±:Ö³tšWu˜Ž¶ ¼øi:˜I0br÷ŽISN‚/Ò’”óÞ5º÷Ä †:ù1ÙãÈI²}‘êN1]ù“nÑrö‹z¤YtRi'Ë5ý„‡öX4c?v"ŒNÛEaw*ŠtÊ2% îöúþIJ÷s€»Q€¥rÿåp²Sà,%˜W÷ÖÖ ›yÌóEF…‡†h­2ƒ§Ú{µúA-ji¡-]D'‘ÛÛ-åq“ï–JùýÖÊJ®àÞù|Yçv„þšBÖ¢ÑÃ#ºè­4R¦ï“¦ÓÏ42(«ûûÞ2,á“5­Côà$Ú.¡^s¿zÇæ_ùïU(X÷®xÜ:µjZÕú= ·9ðàW|ðœŠAKè-øäßžøíÑïÇ xâÐHúŠç1ÝStb5žìwWjÙõ@~ó‚{ž¼·}P¯•Ð` â!ø8hUÖË8\ôÅ‹?­)µ¾/$YB"ÃδÁèÁLÖ“ü'ÎAã;„:ap¿‚ϯ¼0›QôÈŸíÐÅC¨š¿´èKËË žÃOèÊógB½Ï[ÏÊûzOŠGµŒT^ßz?)j­05›¥7ô8/¡D[3k.¬rRn—€­½V>8‹ ‡ÿä ÷ú}:ÌIɦUÆíÑ“°·ÏUk;xF=¢fáñ0<‰Esá ~„”¶núal “>”³qT¬V™ÉEªªy†¬7rRžh·£Ú v àvè,EÖãGµ®Ú×µ¤¯#4h°1×BQˆº> «;œ¢V&À-M%ž\bJÉ~âf•WKWñ_öð4fø‚C•‰:ŸDǵaQÕžêá]Â|%tbêÁNäW‹ÝF"Á9˜GtKÁùÎÊ‚…r™˜’bŠ„Í²Éƒ·´LGëÒA×ËækЄU×l*ÞÁ7é^Ì›Þ6W­/ñ-ÑL[m íô‚î©/fx-螆— ýódÿ¢&¾e†”jó À- ³‰^º¥QRP#5.¨Ðnùh8š ©h‚{ƒ—_†~byØ”uGœÍºJk:3¦9Åò=M»x £¤Ý´.T!XÉM£m´`úX5HßÄžcND°qA«rJUé áè|¿êL´9.u¸ä‡SÖ|N¼Ñú\™Ðt@€2x§Br? «‹à&Úè} †íФ¶8J Au«++ Q_[uGòçhHÖ+ odõFŸ áü%º4ãÙ›ÁB*ÒðiPÈA£bœ¨GÂéb\ ¼ËQ/a—4!‡©ˆ”‘©íÞ<ÛŽ­Œ4:d´=æ\I&U"C¬ò'žrÊEã±²†Š÷Q–'íWN.`$ˆØõ—à8¡†Ï2_ù"•¡Á!µŠ<­"O«È3*JÒ ÊŠV"´/ÚȈ€cã\ÿ¢¼ùŒ†^9ÒÏ ðÊŠgtÍ‘¦ ¬J}ZUê3iÁ‰ãê˜'"ªÍåÞÚ»I]q1ÝŽíJc–®Xšë¨œ¡+öCjJo'äm4ÄÀ0škGÓ¾ÈæªÐ»É©hH€ 1–>H’DpNßÚ§ïõƒ$k ïÜY¡°*¤æ¼r·Õwµ…ß;£)žÒ/lJã*šY"Q+cg·¢È¸«‘¦ØªZ Q©IÊ;W,Qˆér\mÛ–ÚBq;§="+‡Ö 8ä,YÀLF”öf"j½™QëYP륢ֻ j= j½xÔz)¨õ¬¨õ2 V}Ó"µ©‚—)º‰})Â& GNpİ#ÀWeÛ‰?&L9ñ®«½ë*ïÛÈW±kÌKô%ÏxœL»i²µøI"c®Í Hbzû9ÍòvT¼Œ$ñ  Wá;&¿»CÞ‘ã%ÚÇ¿V:_8c6íØ,l™BdÃyJó2±æÙc,Š4ð±d:óÀ+–ÞèÀ{³ ¼—>ðR¢¨gxOxÏøl¸öl¸ö.¸{ÊzìÍ&ÌÖcÐ-0PÇ`¹myG©B}'¼¿ê«”ª.Ʊ+“JÅ3-›fMa‘¸Õ)¶Îd9C_žH±ìa¹JeF%{­ZOÕª;kyפ€ÄqñR%£µžG^D`0kÉ(/˜uY$1/^ó’ñìY)ÊK§(Û‹R=»xTï‚‚ŒYÓ,ÄîÍ"ù]Ø#2›½Ö±{Vb·¢ub×d v½µb÷,ÄnÔ’•غ,²q<±{b·B3(ÊJìV’qu0ÀÆó{xžÆ8@OFÃÓ@%YsÕScP`ö(„zF/,•`Z9-4íh8™ OeA¢.´àƨ·HYl¬XpºBQ.d~(!ù*®z«¤מyâ™ƳƒáA²B¡G¯ìmÁ‰k‹x¦ƒ±·Å‹o ?20#flt]=ø»Ìž\¹¯èÖWtK߯à¡î©8{ >9 òÁ` "'Tw)0­ÝÙñìežA—B«¶q6gÐü›<ë–Yê—ø Í •v³¹ÑŸ‹l–¥ÂË‹(ÞæÕŠXuWPAÄí!FÙVaú¤bÃÕbDéZ!Z)4ªvü»„c«:ª‘®YŽÑPqÍ‘ä3¢­ ïQ‹CÄ2ÑVÜ…²”2g&ý-'ê(Lk±’ X…¬]D7 ¢í“C£i:ˆŽ{Ä2ÑóNˆ&‰ÓGKó¾¨Î€j#;ZåN<Ä[?Ö(‡k"²"šÖD©È^K¤‹;NA„Ý6]>l˜Eç!úÁ9ùJ!:E$r_€å¢á:ENÄNq "?ngVì€kÁk~ È¢‘WÓ3gV;Ò¡E,0Zžøt˜l `ñµ b¢YÞz)©x~ñfÜòAtÁÛí,?¥„ñÿ:Íï~v4`,TŽŽS8ŒGuiÕC¬-“ENfr“øØ:&¹ˆ…+ÜäßÔ½èö`Ë K“À„Ý,Ú:µdÂþ Ï:æ Ã_ ô¼Ã³/íÿ¹›m˜¿P­ÄϼEé+ÏѾ–Té£5Ö˜ìz‡™ÒàšôÑn #ÞŠó¥I? …UæÉ@oæ@Ï”fÌGkQ˘©Š î‚H9Q)Äì:ÿõ_ÿøÎŸÑàvpñûóú¯ÿ}>œýgZ¿üm¬¯¯¿ØÜøûå‹-ú½ÞäÏô4_¬‹Fs½¹µ¹±õ^¬767_lýC¬ƒ¾Ï­Á¡+¿‹YN9(v™‡ŠÐ¿ÿ,Ïÿô¿ýÏÿøÿñÃÁ…8ê‹3EÿøÝ?þøß„ÿÿüÇÏÿ_1­““žükü¿ðÿ÷ŠüæûÿõbrSGsû¤þŸÅ`:c¦Ãüç9`±ñzk½ñCó‡·^÷—ƒiúúüôØ\ÿßpõ/[ÿ°ä×7üõ,áiý?ÆÃ«½ºÝ;:=ÙïîÂ&¶ÓÿÐ+‰ÓãÎQUÀ!µÛþœn³•µÛUi=`3=!Ù~æYW€ˆPm,Ù–2Ÿ¦ÔvÖj¢Ó:nµßë §¥OÉ”r­nÔ›exï–©b6¹œF×,¤\L> 'Oé3žŽÓOuʌǼ9©bG4 ý¾=¥—“é8ˆídú{2J¾V­·“Ñd:Nà<‹ÑßIiÔm½ù°^¯)¯¡îäS‚™@1æ ;#§í-•²Ëäk¿kõZm'= bZ¾åÌtI6é]9zr"ÉÅZ”¦6Ò‡X:µ’¨`˜À]ù›/sðoÕï0ûa»ÄÝ¢ §%î}øù¤$ûYqrâŸÇ‹)¦>·R`ò÷Lw”–t¡RÛÓ ÌÛ:ÃY¨R¾[Œ(>úZµÓë眞’QûF| aº©OE©ÿóNYæ ëÞHt1ó{W”··0Ñ õ9™–Åyªó!ËôÛb1ScéÍí(½HÉ7ƒ˜×Øs 8PéTëœ]Z¤Ðèä1H™x'Ó¨¦rqÀqïfC€ÿÇ•Ê;ùæ3ù'öqA8ù¨eW ‡;8ÓêÃæ×*€L…(ÞØî8¨jê!ž¿nœûâÓAyU“ÿ@ÇæÉ°JùˆÐlq®Áàb¾Éo9gñiF0†ò¶?T™ÒK¯y„“ӌ݆ˆ­ü|b'J…o«¤¿¼J?%c™1÷‹LÇG¸¢<%ý|R—ù¸ÕglÁàü,Æ)ì2_M¥ùõ`.Óú¡]%ãdjÚB…‰¡/‚Dñ ^¼4lWpeµÈµB|ï—·»Û½»\RV(âÊ’‚Jr¤eYD’¤Á áÈ[]¶n€› F³‰jW|@`mÙ=Fš¾ˆ¶\ýý$ÿ4‰ˆEÿš}E?ó:Çõ`–סBÚGX6ä-‹‰ ŒüL½èaòiLߺ¸XL_«ÿD”Ô{ßÜ$#šuñ~p=Óí˜ÜN>N¦¿c7ºÍÿ±!J0Œþ~ë«ö/Ò:%eLgs•;¹.>MFuaü+˜».¶ªâö¶.~x¹Qû±çã~r;\/«”ÙÿäN꣆ î%eq¦|Hÿî0£1 €mJî;Jæs&¬ºØÃD™ãᤠ›ÜÅõ8ÅD±½äs–´[‡µ­­Í*bí:ì§´²vL'ïr¸Ëοz!Ф٠°ø`(M3ÁÃd>HG€öa2»˜¦D*:)ºæk<Ó-“®2HO;’§J¼®7ÅJÃMþìôÙ+ä@§Ìͪxí•ìè’Ä ­’²C]YvI¶wVaÊA)Î^Çê?aF` ¶Ý°8O8»˜Œ7ã™™²A÷N‹tÓ€žN>ûpOëÆép{5¨ñ·ëɼã`õ¹Jéˆ2ü0š ù®Ôu²x9ù /鼪RÿY¯Fe ÚsÓ1 °Ïã[ Qâî݇H×íYƒ„·Ð‹Ë#µa4,ö.®Xªóéäk2|­_þ„/wˆ›ìÚP>§À‹í ôºkXt¶€í¬“³%œ#5CÍ8…À¼I°É‘s=l-´sØP3Þ?äðj ¦ÀJCäKA¹Í»]d@ aáW Y‘Q¼¢pc¶ù˜Ü¶9Ø`p3…MÕ«› ììÄÕ/€UÒ©³d°cÖâ$ܜ̧%¹Þk•€Âº¼|)5ªÝ²n&ûµ~Ûˆtç4NÞKp‹§Á¼öNYlÖ )ŠÕÓRO£–!´wêà³Ç\‚Oà™Éà°wZ–-¨DÏ«¡ˆŽgí¥Ä×¶e¤’Ú$}`Êk/%¼¶ƒ§B{À<µ=²k‡T×VD‡ïaGèp‰Ñép qÓfÅ¥8CÊL²‘ª(qwÄf¥[Û,—MÖ6nžx 6¯æ1‚€ó #xµy¹Ñ\ØþEö5»­¥ÌÔÓ&±’²œé†8ÓÀW“+`ˆ´õØP~"(Žø#Úyç’׊UÛ¬Ù [BÃ#\øóuzqM¤d±ãÌ,½Iq—”ÌÙâ·_ kƒ§ùÝØ…ñƒTnfˆ€ñ@,Ia,³¾ƒˆ;¸Á<®¼øÆ“eÆÙ€\ª˜Gl°Í…$ÆõêM:†_ëUÊA[ª5žÿP.;ô#a!V§“Ÿ„T?a p¡?Ö€Ó;^†; ( #ZY‡ð)©Zymõñ<™¥p؃ÕÉm·Óä"%—û®>ØyBK¼å1з<8Ÿ•Lë•Yzu3øÐQ–ñÚUÝ‚j íÍñÌÍç§Ì~x¤(Uº˜L§Éìv2R $5L Ï«æv³¬ZøWh1äÚ³©Y³ëÉbg_”’ùg µÄ)­Ï(ë-n‰ÎB×5ÖE 6—h¥`Í=[‰Õ ”W•Êsx(<¥ƒ`9¹ 1èbœ•ÞïHM K£É,ÁW’"4ƒTd\£’©)iÎÇÜ'8 ÐŽ ÄÖôsè¦W露â`œ©,ÊñÇ@Ì AÅ&*Dð žLÕfwHùaµ.Ò^Y/l8²œ³|€Ö0C´uޏÌfÉ,2Ãðæ×ÓÉŽñ<u½N›‘9‹Ù|r;³!”H*Àä¥#Ð%'°,#xݰk«V™Ë©VÏ_$ 1®Ò­Tš/ž´úc+‰ ËËUÍZ¶]ÇpL>Üu”Ç%¶ÂÍu}g]«k#pLʹ(LÕ÷³ÜåCa»Á<@\·Ä¥ÀÞuwz'ïò€q ^#؉¶w‰B‚×8¾¥hÂw–ui‡@-……™ÏóÇÇ%YëõFs˹ `šÌÇkVª£w—ˆÎUE|9a]çèí~»Õ±›ê}Ä¥ß;:iìf÷h¿*öwö¡à~ÿt»Jb«â *:üùÛe w…óœJàm“ÊlTÅQg«Â¯ÃlÔ¶¶û»d<¬¾}ÔïÐOh¼Ý§¬óU±Wo«âÝ÷_hkÀ¯>ÈP¿ÿnhvù×þêvòRšíw±&vºæ¹ð­;ñg‡µòªCY6ɬrÒ{ÞáàxÔÝëDfq÷‹”™öã TÁ-™Ê>ÐI6"w:­Ã¶¢ÑÝ3˜Á®SŸªWU±œÞôµ¦ØêO {lW9¯)ÿúÐàß?cÔ»ÝÞv§U¿ìñå`í—´f®²?S•­~"ÝÛÇœãp€¸ˆa (º·ßíï· X (è ‰·*x&÷ßv9òDÉÅbN›2ª‹}Ù¦X=™AaúV³}BÐËM«>îÕUì³Î3ÃT´·Ä)”°0ßPX”©‰ €f’¡…»*ß ÊÃé+¿ÊFP¥wš_c3l¤_c˯!;¶û*12Pý@Ð¥~Ô«ûT%k¼= j ”Ðv FË™]øÑïBgçÔ©Ý;Í©Ý&‚Gí  ½¬ÿm·ûíâ½oèY²màÈJ Íjˆ|²´ã¥ZÏøîöYUÔäå¾.ç$àwyŒ–)ŸS^qL!߃ëzñ.EbõtAá[ã¯á£<îTA`a WK+ l8oz`Œ &]ï…tã»…¡F'9Mc^iûšÇpµ¢e'¢g^YÂÛ¶ÂpM*r±®‚=u%–9î½ø¼Xßæë þºé|>ñ*5æ· j.®ñŽDðÙ|0¶Àã1øÜ>€Tvogéh26¬ 79»@p çˆtŒçˆg.f¥Â¿ß©Š©Ît ç1ÿ¢HÖ·cº¾EuóŒ«ÑŽ0‘'ÐÄJ4Në8Ê@wŽðà(­×Cs|+.I +ö¥aýFiƒD Ïþ”Ëaì çë]õu¿[Á"k¾Ýªúûñ"Ò–c_нƒÙ]Síà{ä¨{²ß=uÒ§gµÀE'‰Ü·|7ëÆa[9ÎÈlk¤P–AJ7/·,YǜڣWȲö]‡ne\³jûlè¤Û÷,tÖyï"*¦0APV+m+Kæt]ßJ"·t>ú-¯o¨Y9ÒV¨ìAT€\®Œ'Ó›’­ñ+×8©,{#hOÉFò4D"w¥"3&ö÷¥ p+r:ù’Þ IIÝAU-~¿óº+}vþ±ÎŰ ›fAšé—%©Ë,™ãXÕZ“ý„ššÐ5¸¬õr×¹€¤³€ÛirP9êÔßîÖÙɉ¹Œãã“Ed‰ññ‹åТì/.ƒ;©íN%)˜÷Ó­uS…³ÞS‡ém2RšŽUy³Š}üO¤§kAµ†”C\þ¤G@%KžÊ)¶t ÞX6]oßx<—IªñPbáÉ–Îsj!u*ºÇJeԭЦ¦ùzyXÓÚ V`dZÝf…¸šÊ&ºÌ¶\žsD%Añ]p¶–Y‘§æ‹ëJ h&ÈÚ-»ѽ§_åaQ¹—ÁÆCxR­p£?ÒÇ‚¢»îXôbژݎPAœx·Ôé”å!À ¸ÓAÎ|XkDö²¶Mþ—2¿©ÇwªÒ “.w Qªí|*xAz”ÀƒÒ Â2Œ#~¬ Ã!x(Їí–ÑwÀŒ /*«T¿>ˆ_rÏM^dUq=Ñÿ2ˆ;x%9ÝýÜä•QkÈCƒü‹WKD/ÙËGYJšKRÚ„¤Z ˆ­É¼Ù5o\‚ÖË™z‹×šçœ Ìñ:"”£æ¯$MÛÑ”zTe)œmzè;û›l‰\!¡œ òN%²x 9%Šœ…†þ,?±æ‘¼Ò©C  mwxòç3¶‘9B¿mµ@šËˆu®þ,Í`a ¬6³Å9ï˜e‚·”l¼ÎÙnÒ‰2Ô*±‡7ÞÚÂ~fï+j“O>¦CsÃè/@mÙ¤O9D¾Ë[z ©Ú+y<¥fg‰¬?áD–ÀVJçéö·Lg)fD%ê"}ëçuau‡Åp|y.ÖŽk7Em/kÇš7G]æÍZ UŽLÎõ3ÁQjÏ£ÅbÔÆKdTpÊ‚¹(:L¡ éPêx†XŽê4†”={š¹È`É´îL†ÎLÄ…¨ãZD¼ß3›ˆtf¢ÈiMÐZ òJ÷ç”óg¬Mäxôá²|ÉE˜æá©ó5骔E7rñ€%K*êh„Âé&3ó†¦t©Y¨uì}ë±CŠ­øaRö2@ƒ %IuôiQÁOx ô=¾½UžµbοßiÉH '½˜¹ˆ,‰‚ÕÖ‹5»ùË%kb¿³Õ¢ðŸ·\WY- µZh¥ð]víϲbz½4–®—Èu.×'3y.? u¡(XÔåB©Ê5uÉ_£Dò™L¼¦‹tìÛÎ)‚aC/¬3A5)k3H\± Í”ÙDÉë¢[Á9“GÕ²h.­5EG.2+`ƒ” -ÄYŸ¢Mµkz1ø4I‡hîEfPã8넇Ö.mø|H¡Î ”Ž&ËÃY•qHŠ8w $‡hîrv}XYvVaSŠ }NkáBõÃîTwªò7kÌÖâ!É…YqÉ2š¸g=‰¸> ­6O³;Ëw·<‰Ïih˜ò1Þ‚ÚÊÈl‹|±o|1eÑ:SkÄ*2úµ&$¶¬¯Ú\¯Š!^T¢Ÿêeš ѸUÃt– Õ0*׈hž'hŠ !\ËŒNÑ>Ú ËÈpìtB¡þ £ŠMýC¦XÐuÔÌcþmT35~ÈÔ'ò=ò|y{)E®ô*di´äVO!‰¦Ó )@£ÃVH•^nã4ŠJ¯ª/þ*Ø®kƤ´ð> uX“’Upè—YÃ;as+˜[®©†Pæ†.n2ÍìMT‚3k¨x µNâ]%l×øéuß'ËáùE¾¶BäÞ"Òp•‹¾u—˜y–7¨êj/úŽ¥çˆ\ˆd¨1üžEîWU÷Ì ps­hï`™é²6„y±wõ*rõ EQ×¾gÛ ÛAÒ_Ú,Á22û9M¿+þ!ÓÎU\iÀgƒï‚/ÊkÐêԚÆ$á<ÞÈÁRJ™Ìñn¬±vgÖX€1*¶XËç‹Å¹¢æ‰5Í7Š0E’0B®(‘Áí·Ê·³¸âÝÖö7áÛüqÆý ¸âvW\¥[È C%B„FϹ®të1E<=Ék–З\þhIs¬ÝÃReìr%˜˜Y“¯EÕ”_S†øqë-4!±ðçÍUäV¶ˆ7W"÷WnŒÈ@ðÉeר™ 3ñ@Ÿ¡-Ò°†üTã;ÑoéöI¾¬Ü„k §º+ÇJGÝ–E°’agÆÜQ# 1w vÑ”ã‘w2pevIsÑ(‚Gâ‡Ä—X·ÛÏ*×6E€ç‚G˜¹‚‡ìYÁ3ŽwËÍÜÝÒ’ËöžNO§€¿÷)Àݳ-Ëß¡í *ÀyTc'÷+BA°am­z XaÓZ~ŠXeÇ º/œÍOïZµÆJûV ìŽ6«Ü7Û·¨qkçZÞISÎÞ¹bõ,b­èæU‹Ä•Vèoº›W¬èÒÍ«ÐÖeyKv®Âû–9å©mkkÙ¶%ûêïZßRT/´?fØöˆ§£avïþTGC],ï:¾3—é8]£“ÓÕ„nei‹º Ø©ê‹NmÓ2 ÚB·Š737ƒßéâëFGÛ h1þÆË˜K¢˜¹¢¾¥çP|³&Yz°g¯ØvÙ µ™où& ®ŽÎÓ#c»’;=“ô~Eë9j¼ŒØ ÷10`,Z:!ÃÄ?“¡ïJéx–LiJgXS4EÏøvô•bW̧ƒñLR½ ¥cð„“ó£ç`a!¸1 #i6œnsaت€þé¶k“%gÙýÁ|-ý°N)BÐk%hm?˜¨wÀL²Ÿ D¶$1mxëÙÌË®´;\ô²ì®5j:9ˆKpýσÛhüÈøqe‡Ãß°_DµÇ~«“)çY0fšÀ³Ó¤FªK™Ñy´ì‚1Ôäa[–šra‡"¼V­2ññWÖè2ùf#´C–vùMÃûç ÍXgÒW€=WÓÑ‚#Ï(ÎHSß\Úð\ÊÑE*ÓiqÁB2ÒaĵF£_kTY-6C/ª¬è*l¬¬º;ß}ŠŒ¿ôcò\\%³OßOþÆSüÿGyžòü­•ÿãÛ­þeë¿ K>XÿÍ­æÓúŒ‡W»ÿ£ýv·ÿ3ŘèöÞ¡wŠ6ðcÿxÿçªØÆOðã à @‘-Ùõ9@…ŠSAñ¡â @Ž{G'G'ÿ>ÞÃ)†'eÙ¨7¾ïœ ¬u;MG 5txP$ÊPvF‘Ìœ!Œmš;š2š/9­‘2Ó…ÄZ°³ƒDâJee ¨cI–‘V‰‡@‰E¶K<ú õü)›ÏJ<òR‘ÐðR‘ Ë6R!ô곯³yBn/# U˜Ÿ¶0Ú•NšEŸÍm2hç¬-™M£ë„HFj:ãäÄä~ÈoaªtÒˆºÓ»Kö-˜Cû·ìß|9À³`ú߉±=kÄ#lŒ?£’m¨ò¬¾ùœÂ÷cŠVË'OÅò†Eö¦”ås(Ïð3W „`Ï †“Àø:ÆE"™NáX(aî,DqžŒ&Ÿ9Læ¾ 3Œ1!0–¥ŒëˆcIæ×“¡˜A ×2Œ…ÕR8Ž 9ú”Hœa(Éè°0|êd.®&”¸…Bk ` ã1~žÍÑSóê«H)ÅõDø£·És È©Y‚5zûüœ²P¥k sËÌ&cЦ›‘MçRËeÇøÇÀ µk™RbŒÿ¬ÕùïÄ ÓOŠÁYcMhÿ†r¤Àð†“1Q<ÍP2º£AéýNk·û³ _z¹˜ÃT×Å)™OŒ'Ÿ«â3ãü<øŠA–(œj ŸËÐ-sÅRÔÑùäö–ÂT+MÙ,ÿD¿Ð ¼‚Qø9ñv@âb€n`PáWªR¯Û;ÿ†Ýrå >VZø#’lÜ‘hå©:nJÆ50X¦·‹éÔµ¯–(Ñã1Š™p`¦ê—l!£ntþµ†+B54M`&¶ÿDœ-«¢Vš©ÒŠU™ÜbO'S§®J-cêZñ‰Uô¦„ƒ3I7lÞúŠÏÐS¢Ørþ ‘Å!,vëëU»‚_†wÎlD{§ f1¾ ]<'‚NÈPMS® DI ¼³aI’RS7wÛ U.#oËP÷¨^Ï&‡\düù–…Œ¨ã“¢]ß¥Ê hH åÛÎÒ_šxb»Š¼#À½‘(=.eç”a Ú~ Ú®3¤‚Ô T0‘ÆY8ž};ÏÍÜœ–Gå¨Îô¨Î`Tgu†ŽJ&µp²Zä¬[‰L ¨!Ly5ã=ôz2:2ƒÎ°Ç-÷#ù4´Ði¶Ô]£– 4Íç…Èâ°N-4²ªTñ&OÎ ª÷aÝ/+HWjöe(켬”´#sÓº¤ÜfUï`á<û‰”õÝM…žZC¼â©“ڌ˄YºÇl6Ùø äƒ^zÔOj·&(š‰l5”¥Rذåbö  =Þ&ŸUrJ;ßžã(G ž_.as«Æ»Pp aóмº¶B%ÊÛÝ“Þ^¤Xã \YÛž¢Á%š¸áëuÎA”¾4³ßÿ”;íJVqD•z¿'sEº’œÝ QáÃå–I$·Œ“¯å´”VÓ²Ia”È¡R¼i¥…!Ojfk€U"”fí¢9j¸*§}’Mé[m2ðˆrÌsAÇcxÎMn’ÇÌΉ®¾s´ÒÛUö1Ñ ü²LAý¤wº[VœˆjMsª3×<]ÙfN€s`É3e~Ø…š/¢ŒSÆ(ES@”8 À­R‚ j /¿¬V²lp²dd(`EèñI¿E?ϲñ…çiØNve}ƃy6N~Ù9=´û¶r@|b‰˜Æ€X#üî´Þ6±"á·ÎŽÿ]Å ¯‡‡yñ;­6•Ãê툂7/o@ s¿´ì`|‰¨½îÛÝìá1œª_>ìß}CõgÄç×Aùc`#ãjÜF!8|tI=T¿DdAÆ5lhM¡DåwhkËßî¶Þš¯£s–™\@áÅ1óÐ2WI>°<ô˜*ädzÀi2ŒI_0 œ#ŠÖ}Ö=+ZWÇñ¿s |ÒÍ „¯Í()ÈR2ö!lØ%Ž‹_ö§(#X¾¶óû=½ õ¸ÚsÄÝNSØÇÅŒâ©Kp"/Q£¸½¢˜õj‡ ðÊÔX ¢5nf£Óqa0§–Ž%oZ$}çÉBßû2Z·¹¥äS„‡»$ø|›Âýk}qöWkе˜XaöRT«ì‹(h÷[t8‚7 eÑ Í «Yö‹Tÿ »&0Ü­ÁÞ4ÎÅ6낉™O §ƒ*„,ŒÓ‘QOÎL7”A1lÖ}¯ºá•—sÔ¹2áX_ÜYjîƒ@„ÙsÏcm=ÜX[9c5$cÚz¤š>SOž†3EÐm T·#Ý¥›ù;uz£h§ûx›Æò9ßyö[¢Úþv¬·°¹=ëN´Qpò¬j,c1É&‡]¢÷ê@jޜޑpUŠõF5¡L‚¦xÚoÛ¢&@j.Ñ%(‡” ¡5ÙcW‹‹í!º¶´MÕPÆcÔX¨ó?kp]cÍ0Eô­ÆCÅì†å¸ÈBÿóuÂÊPÔ¥¡-ãöv&f@¨³Ë¯ÖŠ£«<äy:*[t_ñúƒ)!±½aÕ&oruëÌ¢MRÑ*AwüŒ½”¥`çf)’æ÷qeÔ[õ:ôœªÒýÆÔ–Î9på 4 ¦ûDÜ%bÑ›öZÙ1ž3R5!å<Þ:V §èÕdBº9TX›±]Ë‚²yXNñÜCÖjT͵«9w«ÅÕC)“yqÞlÀ8L:c+Y»‘¤×Û‘XÆóD”W‹€ó‰Xà°lþ× Gñ,Pà‚¢#döç²®º “Èx–3M=Oá¬d­q=çx¾%àšCY Ô_ïî$í¹H(ƢŹ´¸7£ŽÏ±’E–ðjñìZäØÄ~Šóíüi½÷ÀÀE!.L~„<šzfÅxUÁósabùáoû{›·7ýLMÂM?îIƒ9Y€‰ÛÑàB]L†4¶”lsΓ‹ÞüHc BßrHòZHËQ)eLi… Xx¦½„dá©mÁZîåhpE¦KS¼…}%˜—“R±ÜDNUŸ4s“ª¶`C¬©~²—™ Ä0¡í^µ%Çf¾!²½oÈMmÙ4ï$ÍÕZlRk¦mÜðB¶ìKŽŽ°ïßæ‹øÅ€ w ¯cÎcNƺ/yû˜Û=ɼbÎëy†oiO >žœƒ¾ýcùÿÀä~7þ?[ë›Oöÿò<ùÿü­íÿóÍVÿrÿŸ—[Mýo¬o=­ÿÇxxµ;þ?ÇGèÿÃ)¥ƒþ÷ÿñå0ó€¾7ß§s‘(êÔ~×êµÚÎ<Φ’¿µ¿Ð_Í×Ãc9½£t‰)|¡"œ¨Kæ$â(„`–ø QçŸ|…ž|…ž|…ž|…þê¾B¸Ëa‡µ¼Ú+ 3h€ùìôÙ+Œm†aŠ`¬ºº€Ñ·$µM“ák¯Fkt(õ|F å3$ë<9,9ˆxp‡%³UdÀ¶@4@3ÌŤ=¿ Gîµ kú)®’Jì¹ðP9»~¤Š½lª†ÝâfŒF®¶‰Mˆ–Ú`” P”°GÔáÙ`”³‚ÑÈ"ϼéÎ’AJlDn`«î„î¢Òªæfp•ŽÓ¯a¦z¡œŸìŠÚjœ$Ú$uÉØQÒrÏf‹f+ðF%‚òˆéÉmE?6qŠûlÇx±µ¯'£dö»c1îv N+•wªŠŸ:•|~$oµ'ש'ש'ש'ש¿‚ëÔñÑ“ëÔå:e‰’p>†Ó¥stHqZ2k¡l$¡@«£ÜžBî‚ |Ÿ¤¯•Ì2½¦p¢¸žôÒzòšzòšúó{M)¯¨wèe;?4ÛÊ JûRe㎙j•÷•ÓUDÝý ½§Þíf¯”N% 1çªw0\-ŃúX=¹Vq­"šu©öìô¦í¦ôÑ·g9.J¡'ÖŠnXË=·6ü*+xnm…uÿ,ž[xSòä¹¥ðú =·Þ)Ï-}Åüä¼õ伌5â¼u‚c ¨æôßRú¯"^\$iXý ~ .†°Ã™Å­å.[¶ÚÀéÇ÷í¬õŽ}:ÉåÜæfÒâ_ûe…–ý,=ùe=ùeIÄ?ùe {6Ò/ëAùšX›ˆr·'?¬o臥xð½°ˆñ`ñäoõäoõçó·ÊÜ«Vò·’Pl¯«¿¢¿•/–kŸ¦Çv¶ŠoN>û*èI…ÚŒ"žTÆÿg8]Œ¾ÿŸ§ü?õ<ùÿü­åÿóíVÿÒõ¿µµù2Èÿó´þçáÕnûÿìôúíI~¨íÓ–Ó> v‹/é(Ek½ˆ§NóûÎÓ#ÐôðSB¦M Nû&rÅL;í3“_6råÕÝ%fºÎD.Jûg¥U¼UhöÄ åÓÛQJ¦ÿb\“æ’ÚUEæ‡ÿ‚XçÃÿ`$f4p„Òx>¨K³&ø‡^ä0Á|¯ÒÖ iã¡ü0˜‰Ñͽ`Šw¥R©ðåù $l‡…ð-Aà`¡ëccIª†­Œ¿Z.Dú|ÐŒ tú¸N/®m[¯aŠD,tEÑÍb«_khðø špüDæw2XüLßyžG#&Ç2\íŸÙ½Í6§6^qCÒX+ukrep>+!ûm‰E5Úˆ,Ÿˆt|1åúçÉü³eH‹B¾LaëÎ )ž ¶Âúoà]/ýâKì|ЧŽÃ»/¥´L¬B4þ%Ò½cêé£X·DÖ<&P]jíAYVßHSª´á` Žèuu†ñFÔ¸¦»›Ý¹íý·ÝS4רÙíòO8Ú·ù+ø O;À÷;]´Ðú‘g‘iç Ž!¡ƒ|ŸÓNQƒ€´ÝÚ©ÊôÙcû°šÙ—ñï„OÏRŠXb$»˜k:ïJøm2×®6Ʋ@Ãà鱯Gûæb”§^"Q=WSÉïè¨É¨*É7UUÁè½öÑô6Yé8LÆ“`è¸HÛÉÛQiÎÇDø}Ã:Z]¡¶¥>ë…ªoS£j(ø]q»Œd‰oÆsÙY —dïÁÕ˨âÏ4 idLfã Áöñ4©Éó+œ€€íJôÂìÑ@€Óê»bÃ;^ˆçP[Më†ri[]¼шm¯ÕéïÖÍ÷CÔoEÔÊðAÀV(꾜O«ûäKX¤ûvóºÏJ´ºo÷ëÐ铜=êP††“{` »A¦€F©á\okLì턚˜žj†ØÉ·Ìèlו´Žè:ZL}½´DûBBØŸ#ŒÑÿ\ŸO‡ßþgã)ÿëãlP¸!A!æ–DSè³tPI@s¨èÓäˆÏÔwì%]Š“[¶ …oºýÏñ¬ûì•NaSÕÎð ªãÑWÿõ±zMˆ•ØV%Î'ók‰œCùºx0…Éç™ï;_G8v„†UÊØ ¸nä‡vû!à¶ë Ê‚ü¾³bg‹sµ"Ýp6ðÓ•ÃJËêĠضÁQšRà‰íÜÈ1NP•A@ЀŽÈ 4nƒxßY{ºÖ¨Óp~CwDž/ˆˆ !ã–°Y^ïÛ¨xgcÙ+» pÓßkµ´ö[õ7ò”)¥øÇ%¹¿¢ïõoµßå½Iÿõæ&—nª¿­ý>r3¥ê Ô;ÔÚž¦ó9ðàhR˼SÉ Sé#kà nª\*䣿]`¶—{û ˜g…U¿£Ö–šçNÐ8üC˜î@ÿ͹‹°X¼çý¿{ök ©¯Ð~7–û‡ê¡!€x?ñUä¸À-ʿѻ™l÷C=£v—kËÚ<{2£‚@OŠð‚%ÔáöaꀇeÔ‰c{­J5Ä70´2SÒÂÉj¨!¥›…Ëc—cæ".Ÿ-Aæ™Ð¿ll;Û÷ݰy|â¡€Zl|Ûøäb!B•~}5†Ü®Âž”Á‘1¡òâ–nÜ¢ÄÈÚFÆ"’S¾¢‡‰»¢ÙX O@«m¹mŸVi+ë¯Õ»FØ“•ƒg |Éñ°þƒGxPîì½ï`àîîûéОqå'ß.¿íË;µùò°½äö°-–ô¢çëì:Š›:÷¼püØêž •6üjó/<«áï9RR»ƒÜtÿð¿ GÓmü޿dzê!þ8mäŒèý)XáL{¸ß=D…>þÙYGÍ>þ_GJü’=q­í>ôµ×Ξ‘:&BÇÐ;<–_rå‹J׳Óê½ý™Ÿ¼•¿ùs:õKïè$/ßçÃ]sVÅÐÆÁ[éä Ø\ñâwuÇõ,õ¥×«™^×ú¾…ÈãL±W5+²`[ÒËŽ(3(ðœ²zu`•=> gFÖ ¯í”;±@YU¬áñdMûŽúæêÞ‰;h9ˆË^„.ã²;ÝgÆ"Ÿi¥ ÷øáªÞã+ºŽ#&rk©>ßwò+æïOó+¼ð+à٫дdÕú!¬õ+5̬«’o”›úaž÷~$+*HX.\=Ñê]øF$gjÛÜÖpÛ…;¬±wgÇzÒ«­êXo Xš£9gG‘YŠz.cb)«wj?‹Í[kƒRºv3>™–ã`d–µªªz;ùj@.¡P9|=‰oKŒýÓµÃNM¹ôêoøsqìï3æs¯åùëÇo¨¶×Š%)Õnuê±ÁI¹ÄÃn‚T+8«KPf—/Èkyš‡¬­\} .£xÌ\Ò´9ÂcáGm5\%þ{-îxß[Òt6Ñ..7 "kÎ÷AÎ>;bþ¥Ñt Ô;¥ Š @¸ó]ŬÀˆkèÏüi)öÁâ¬Qîït$"Ô7×:žÕraôµsÑÝ}ÐH7 ]«£‹ŒxÚ%Ä–tã' üÆú¼Ò,da½û£ê  g•®³QF6ü ýh@Ü$ýž$·³œ,ÆCïf8ŠGµZâ›­¨VZ-;¯$˜šØXtò%.Ø~ƒùùmí÷EY Î'2¶É¹Ìæâ£AGpIçJ®/ׯš•q9:d9cˆdâ½z+ÈÆ°Ëü*RÕ-€|;¯òf|û}±Ô:y(|Á”¤ê¤RÆ/™Êo—¹›ðJQÅ£¤ºUDzU’ëá_Ar•"犓'¤}ZÕšÀ•%UU1B <†­U$ÖÝ$±²Bï$¨ÁÈ—`OQ‚í>¤[vá™.˜g% 6ƒL%>B¶vxº¶×ái­YLÔ3›²bcU÷ÔÒN‹ ¼^gs¤Þ@ íPª8,&Кö6-ä‡Âž6V¤²ÐóÝȰ¨‰}!uÑY‚Ù‹;flázÀLIËbÇy—òÑõìZšåÜU|ÙWnðrÚ^<ŒP·íl!6™îå}eºµßG Ò‘\ÜÒèË"@Ȭ0*Ù5^-“ê¶m¡Žç±b©Òre;§Œ%ÞåyùJÒ—ÂÈÔeˆ¤H…±š½ü úh“îëþ7" yõÀ71´Ï¾ï8 ´L> ¾‘Q«X5½qôøú^$~»žA»rÜJäf¹̪6~¢Œ•¶u¡`Ì Ç¶!¯%{T“ÔV§ËkŸÈ‚ÝÛV=5åß½6ÛX[©©n›¶Ž(JW¦¬ÜW'beÕ;,ÝÎ.Ù½¢×Žöø]¥Å¾£²z£¡!‡a+VÝëGCðIMCNûJ °ïéö×­@~/°õÿ4÷"\EžpþÒˆß:N¦N~´eƒR vèÀåÏ-[j½©Þ¬!6 (sÝ8@bjoµXr‚Ð ®¯CšÞZÀ©bÚYEdw”µ.„p‹G…J^ öåod:q 5›´*jDûÙÛÅ©n´W<.çÅïÕ=œØÒѾ#áà7‡k+ÈJˆÄ`í4±­!Òmï*ø“îj‚¥­:n©ªì mãop/ß‘`°¢Ù-O4ÉqÉï‘‚šÞ•¥5}®×/‰÷;%99XÂ]4ø ÁF<ϽšÁŒÅ,+Ee"›!òä²>,Š—#úŸc,͆@ MMí‰ô³¸›v 6™ˆ"Žíùl]=» Ï–¨ƒ¢ì$"ÒØ­g®V•wµŠ5ô‚RӉű¨_¹0¢Ë7“î<¬¸4d¹ŒMGCJ\:6—*ó†Qˆ ép’ïì;|'¼»óìwKÆ%ï1¥ŒXd^u÷Xvü‡‹Éø»‰ÿ°ùÿáqž§øëÇÄøV«Ùúol½ÜØ â?<­ÿÇyxµ»ñ`ã ï¨Çñ¸ûÇû?Ãg.уÒ;9Ò÷S¬‡¬ÇŠõp8Êàíp2ÆH]@¼ÛÄÓ‚_¡¢w]ì%çb}£*úïŒ9èªñ"pú”¦«X¼ˆœ0§61¬="Ö2P—,"ÒÚJÜ!ŒE$³yz3Àè l {‘¹¡_”Žã?R–BËC]‡Ž@8*z„ç,›¤:£D£6–Z¶ú¥Ô‡_éK2Ó]ÌTþáÎi–º"õCŸOz{Êó}¬;Onç˜Ë=’ 8.¥ãO¥V¹\µÌ½Ñ!˜`€K·9P:šw²¸}.J ¾UlÛ •í;7È+\9æ„…ÆpN¦¾*ÇAqtŒÓä?‹tš ·ú7âYƒ\ž½²=?’Ä>¾R´l·³ZÎ-¼$èÃýB3x׳‰ .8@CV#9aVϰ“u›hÁ*Q.óî"8†$‘•$Ä©™a@Á”Ya ã«r[ß6GÂÇq³ë…;B„ `@«Ðò £8Oe¤adÁŸcÞï`À†¸ ºWkV܈ a».tH¿ äç‘&2òÑ»íÞ¦Ÿ&s•°ñ5ñ®†ø×‘âØ Ñ"?õÉgwZÓñ<™^\ÃlrhR°m2©æH’í ½ÉLÊæU‡‹so`r®R+8CË÷ëWPöeu—'å@!§mb¸9‘&|LÛºl^S.XšÙ?/Å9½BëÊžéÍJ÷~NéÝûz£ÎèwK%ÿGº¢“çÙ2t;Üt5ðN¸âÎàîÑÉ>ų¶òÇ¥Ï}%PƤÀ3ö ?´ÕßåŸh¨¶Òèaöè[ûÝŸ» ‰¢Ön·êÅ>¥Dt³Þ‰Æ¹æ“àºD^í·~Þ-‰Œ$Ówvš¾sRñìÑþ²st¢<ݳ|²«aNqª•3¶•ßeêv “[•gÎÝ ¹}¤å”<Ë£ý¯š¾œËIOîúŸóšEûXœx ;ù Jos>äÁ†çøÇ’?º¬z¨Ë:ûß4©ù2§ñÀ/}™ÓxÄ›šÆµtSÜßœ¤ ¬½íÎïáh ó}3˜ÑêÕnoí(vNs¯Kª´sã¶ï¢ DÑï3Œ¿\‚à+îfqóÌ2‘ÞU'` ¸$å*–RÌ*à-Ã"oOvɵ¤r¿³´7YÞÃîå”zÛŒÍðûhdÚEéH ©õ‰ ¯2Ïu›VâÆîš¶È¬êÝ‘·TÚ¹œ¥Œßgd›VoaÂx@Q; óQˆçŽ›íSâÑÅïýŒ/ÅíøŒ2j¨ºµƒ¨™Â†ÔduR¼À‰1–;Ž ëÅcÄÈA®õ»bûTä–¥¢Áµ¦È1Œµ“´blœšòÆÜY3NOÚø¯aݦ7cfz‘6óçò4˜K—·¬g§x2~†ÑH&ìèŠ5þ<®aÌ ’@ë*'£®‘m}3Ó®”è\M²guë¥ò®èÚ“ño‹+âñ‘dwß ±ÐH²…É…#ƒêÄU`I2Z`†I¢è:³)Úü]cÁ‘i5 ÓìaÛ *öž¥«»èâ]ÊÄ·Zà×¥ÿÙ"‰NE¹.ω²pNÈÄsÂù¤0˜g˜UÉ·Š1›Ý¿Ÿ™o}1H‰0"æ2˜iÛËΗB›fø ¥B™î…EM.¨ÅŸNœàB'ö0‰ëxEzã#4’0Þ¯ÊcÒƒV¦K5‰¥Pñ5)n,Þsµ‹‘–J2QDÊø'ÝÎésj¦%HûÈ»(h bÛ$ÿY|7ö[[O÷¿ò<Ùü­cÿñ­Vÿrû­õ0ÿÇæ‹§õÿ¯v×þc÷ÃiIdô(Gïèc»»ƒqÎ:í\óV%¶ûøûä Í+ó-,‘ßÿ«XZÄô™*?Ç*¦Åí'€ŒLò ¼tC„ʘZ˜J$Ô]χlù‚Wî£ôœtyˆ»^Î ÎÇaºæ³PúI*´fêÞ[ŸQ~8¾7¶¼Ó=Ò¯«ââFEÏsLÛA¡üoÐ©0àl®üКS¿zƒt/Ô¶éöáhÿ€mŠÊÿ¦WJËŽÐ_i—~+s$ƒÁù ÀÌe®T¡®S±0÷Kâ’˜BW¦éÅœ‘xžè|«ZOFÙÿ°Ã³Á%áCÞø!,R ËTžÎ”Ä;KÔ¬!…G*ûŠwî„û g'ë–±%ÎtÓF—{âsG´tšÌôB…rÎ3ùSeæx2Ò0=Xž3Ã$ÊЙ2Ü‹èÂI3üL6˜‡Mšñ,)\; µ¬’\"Èë n|(U}ø ÷®S4“vn>»tQ7Õfí;ô)È`úÔv»ãÌNó¼ ´‚°ZòÏP\  ]e§ÍI‰ Ëx´ŠsâwujH‚¤ÅÓðM{p''¾©,'™^v<áOÔJ•\¿™½£t—äÄ(ýôÔ\h°:2”P‘=jB;‚€¶F€É°FbC AÙ#ÑI©AyTå`ÓÝ&1ªìd3r·å~)܃|÷Õa+#Øîq8vvz,dÞè\õU'5'דÅca2Ū<g‹rGcå'JÊÆŸ©ãl«›|#_ ÓŠŒ~Jl7ù«qÄééÚ? ]³”ÖË‘dG.€¿‹¹L< ÂZµdwP%lïµé¿ðva™aK†UËw›½¯±¿ñGvNƒ¿©H–HŒ"S†÷°¸€3îƒ[\d€÷-$XÆðl-äÆë}K۞卵×É· îŸל€r<›ÃáÎ2ŠX`› }¢ä[ É©ü;•@Æ4Ð9®²òx·:ì;[Û6 þ^*Ý@dGsØ!Ý4Åæ¶å…¹m}ŒPv È/»j¨¸¡ëIº=XCeΡwó¥{LuøSUqy'º_;¨†Gí+Ÿ"äƒ[Àdá•¶è OùÒ§ bÁ¿,ʃ‘Û°ì”Ú×qàåne— ï³$uDgPmßDȺüÔHàütÉ»TÑJ¹(™N)AêÐʶ T Äp¸ªÔ÷LC%Yyʾÿ½³Æø1ìf«Hø”}ÔE2ϘV¡E‡ IW#鱩Q®eøK.\+ìW,r§ZÀšÿàY¸WÚ/ã½%ž“éo»wº¤"#ÀÐe§¢¤'»"óB6v2´ÙÇËØ n«KyEê/ïÂ>¸ie?˜Í7Ê'C±4ül æ1é†ócÃùae†£ÇHuÚ2NoéØëò‡€||¾ƒ!…BTÄXJÛ <ìB´Ù“U A1Ê•Ë`¼™pp²ÜÓblSJ¬Âjd¤›b5fÆ84õù¼Fb”×4šKy–j×´Kš×Ðßv÷tÉ{🡕È|w·ñ½=žýÇù·¸¾ƒýÇ‹ÆË§ûßGyžì?þÖcÿñMVÿRû—[ë›ýWcãiý?ÆÃ«=°ÿØ~0ˆˆXn²ìÑæ¨=Aá¹òÝ>Ü$3±“ÜÜ$£*ü\@*{7Ò«Á¸*þ=ùï‰x—$·Ù€3h¿—&ï¸Õç™Ôs{dÛˆü°t,@–îfc÷)o4Ž©KfŸøÏýÃãÎ~{ÿDtQÃQ…>™Áf0ÛdsWlÁÜφì_Ìã™ÀŒ}+ ¯27¾‹ä‹Êaú¥¸mÌ@ÜR„eeŵ•Á ‚ˆÛ̬f0ƒp|›™Õ f,;e3“o0srqK$;¦——xõEly»‹ÆXÀ%>”ÊÂë!uE m{@á'ðŠ´F¨°®DÍ5®œ˜™!4 mЧŸàÐÅ`È㌰³c²† 3ó šxíøªºwç›T‘ ‡OfÏ€®Æ)Ð5*V¦xa.F“ñÎÌ-0Ã/d¡?ú*„­QJ0”9Ôì?Óy‰ÆÂDÒxn}ódtôç0:*``1=: }­:8Ã5t®"íÃ~Z"ùú-rŸ½ÌɆa™$eÙ!a»¹vHïOR—íÔ É²Bâ&Õ yP3¤ïÒ éÉ éÉ éÉ éqÍžìþÔvH˜`gÿ,G Ð9zÛÛQ¡kžì• ²WR&JUÄ s·Õ‘æKOFKKÃÖˆ/é\Ú±l3 AiÌœ=fÎê )Ä J…3ÀØ +aˆ’eZB‰OD™tË Çù)ÁåjC9CûóRFHº?e©û—âì¤wº‹Ì ‹Ï§ «ÎÅd:M@a»iXôØ””ˆsF’G3caÞfÆÀ»(™SuTsi´fñ.WJ4®÷¯ xÔ¨0HÄ]aÕ]„SŸ1÷æ(% —‡Ïí’8N=̦cPq„nðë3fì9z„ ÕàLæ‡q'ìÒô*&ñPT„kg2†Á~Ngèˆ0nþ)ño”ymb²¡0]Ib2â‘6þÔ0™ïy»Ã`üU£›Äµ Ðbð;ð[‚‹$‚6pº¥ä}÷ÈÞ·?–aÇVÔ¤¨u ,"M:íË1K¦ž'·$Á¤‰'mжVlúˆ–‡±³÷‰I*µ:ä±½[yÇóe¦‹¾±"9­·PP› KÚ RÌëÝÉÇÜÎÁkÙtûó®·›Û9* 6"•b÷OÖKÔ7 Ñï“ì nvOªÊÄS'T„¿º¿du÷¸_þIo~ã¿Ö&`Ä_MúEWkgï³gòq2+Þ5û`ûˆ~½Ý>ü¹*…•‹ð¡Ì:‹†¡»G–È;ÁÊ4™¶°Oö¥®})/C´Û㌆R3þ¬Iƒ(ˆiU¥̃h½¶ô^ÉöŸ“+ŽªuJ›Nºj¤3ƒWqÅŽ]`÷C½ßh„›ï]’MEÓR,÷»ˆm9'K÷œ\T«ý(¶ííÛ¥< ”Ó+6ùH%9‚h2tÏ_)DYd‰«v¤Ó={Û, :‡óÐývóàKÛÂ$7ÏÝœ»À·£ô¿­[p]ZKØÞÈ:»ê*$@«ë£ðøÁXÜÈñp亱¼éÂÕ5š¿ŸËJ4†ÆfÄá/Ó©«·gÔVvŸ®UÏÿëËÿ»±ÙXßÜl¼h4)þ÷Ææ“ÿÇ£[öϸ7Ü&S¼@ßU Ýûû¹JÃär°͹éÁÅErK6~æú?£@}«täè ØFo³™b¤¨Ÿ¯Ó‹k ÛäÍã}1½`²æ ‹ٙà $ gÄŒF‹Æ–ºÃÞÑv%7Øâ>°Å`ÑfÇs†E¾ˆ4}‡ñê$ƒŽ èÉ5n즵|¥Õ9ç±N¤Å†džÖDe¯"r¦Áø¿õÇ݉Û?»@ ô€„ʃµŒcÆ|ˆJ»ù ejç!-e¯\æ¢ÍCK˜Ì榅¼Ò·Ý¶±…íÉ<ÈÖ±¤¹þ4¡ÐCÝPo7Zꆣí:6ñâˆxÐm›)>Xp“)ÚÌÐÜ(‹; #î@VØçZ,s»¾¯ÇµXæt}k±ÌåúþÞÖŭŤi¸§³õ=ý¬s\¬ïç]-–9XßÏ·Z„îÕÅ0o;YßÓ¿Úöݹ›kõ½½ªïïP½Ì—Z,s§¾¿'µ¸“3u†õÎÛÝB~Ô+ºP +;P ™ÏÒnœÄ|Ȭ$Ô±TA»-¶ñ V·L‚k_ðâ%—sk#zç ¤Ë@ÚÏŒì-sZ°h— )gûÌòÀ´“ ÀÙyÁì={­¸#49Å#MUWc4†ajZäÙX[þš=âlŽi`“OÑTWñ:LìMr{±šÙñ­4ÎX}“B"F­9ƳŠÛÆc7"kéƒ&kVL’(xøÌò_Â3s1X ¡²›# N5ÒRCQð4™-˜¼3"I™?íy$[A`%\¹œˆ Í9à5Ñÿ@-N%Á ô ˆÅŠžˆj¸BÏÁÃÅ…nÖ °#=p¿°s3 Æ Yg:«Í½×YNw©µ .5'Œt]k=€ÒÎ\kí»­µöÝ×Z;{­µóÖZ;o­µ ¬µvÎZk?­µïa­ù‘A Qn|¡AIJè ÷ "2cƒ!dÕà $nèà «ÅËBƒÜ+*ˆšp±<‘S/¹H¡¯è,óFk*ƒ[Õ¨¦Jÿ÷$@üó©\‚àe´¹–R¤üõ!e¥èâ¶­"Ã!£K­€…öyR1tà`:O/PÞ®"oåXhÕYvRá¡°ž²\n8Fo@”kˆxô›Ýã€]hy¹áúLŒF”s ƒSÔ¥©¥*»-Ç.“^ÉrMœº1€3:Å,ug{xÝ7FG»ˆ+”5×frïÔÃŽä!‹ç‘ÄCËïËCyÀc.Œ2ÖXW“¦£!#6Mž£Ù~€TŸö |=ÿz›ˆ’¾+ XèÎʬêõúj»v´û¬7šF§ÒÊÓoß›©yØs†UÓê2Õ2wÑ)éÒ1*/å)P¤fáÓ`šN‘KíÏÂ>†¸4Ò4!¼ªTQ§3öŸç#µQS¨Œ×VºÜc=zt¢È-}ùõ7AFØd…_ú­šR¸ú£\v‹×rŸ@ñ§áx†è\Ë0ªIT&_LX!"(M—Î X×,ZYLW)'dN}±T1½žø·Œíi‚æOÊÅÀÓü›¯VÜK#þO]CŒº×‡iõUؙٚöÔÙ=êraÏ$“,௪0ò²›‘'ß¾ÀQ]¦Éh¨WP 4Å?O¦ Ü>‡mäÙÃÍæÿ À† Þñ>:ž¡ð™¡›'zO v³`?Â΀T; ôÑ”nwLð£ÁÍÅuI;3[œŠ»Ýÿ|«3$ÿÓ^W¯òBtUý&eP¨‹dŠÈJÚUÛE©±ƒ ºÎ‰†‘äHgš|™³€„ÿš&Еé=1À»}A*è·è<á©L†Êñ/°ˆɹ¥} ÆãcvÑsüÙ|%v5f;Zê¼·¦JƒtWlà 2×…rˆÑ™±c‡ýÓdÕþgï £½õa(ÞŒl]àKìäóþ_µÆÿ]]ä¯è+g“›5”…úvšrj)DJáæ—à2¤“Ìúþ÷+­ªôés¥™ €×ÇÎÁ0˜:É’@¥<‚H·¶¸!÷ _Šº² ]àvÜ!3@ñQŠ|$æ5^lÑ@/S<€ëkvÚê¿Ì§% hS™EöiÚÄÿrût†¸Êf!®ºc+²Ëر£û{ñýÚ†¾Â†íÍHÆ-Å(C.ÌÊU}Bp¤­ˆË¥u`ŠÉZ ðä^k ‡Yt(ƒ hqpñUé0¦p¤KˆS—¤•ÒF™¡ñl]4¡Æ ΖQgĆŒ[0`/Yë2„Ŭ•D^Â#V“rÈâé[I9üIÊy’rþ)ÇY¼O¢Î7uJ-öÍûR.+¡ç‹òAÖ»´eó¡HVì0øG(9M.ýúºéPªÊ£‚©ü£¤*e´Wà¸6VFÓh™íÍ ¼Ë`xGÁHb½j!Û6äcË*Ìd2M.a¦ÆhëÃAnÈÚŽýΙ˜ðÊݲze(êòêù wWr˜Á°£«ÉÚ³1.Eû"ì­ÎÖJ K.òYê)/1æ«\¹ÎhØv€ PkÙt‹uTnÃDó=Zв@ÑÕhKôžýZ%*ÙÔ‚~ 4œLkä0£”Âz‘e$BÖðÌ ¼m=° ~=‡Åð+E‡÷´ü â_^M’Ð…±Ù³0BBÐg ´ë¯yÌ¡ýq¿¿K”°”°7\iÉ‚ãùÖúò!¦8˜Ï“›[šÃKLy:0Û1­"¾±É—â§Ø`ëµ ¼ôX^·»€¤LG‘ñÃå`4K²ø•(©Ž»Ç0‹òÌú¹GPsqç¸æŒ¥ÁÍ9²yßl^ç”å’Ð-ZpÔ¶æ ÑàŽÃ¢ïß),ºñ“X'Jþ×ÑX§%rnÂG…® €óâ%£ ïï¬A«ƒÆêfn„*ÿͺe;BR]QV˜e6Þxºàû³õÈ;a b¥3ûX¬ç£»vðÊÅL7$æŽÀìƒ5'Ȉ¾‰YCt¦ŒxÅ{i1 Sr`Y9XàIîs2^- xزô³E¨ß`làö†}E)‹9€%æÚ³\éa fjú⸳z(MD\$ %mÓ %ç–õ€†ëtj¹w.Õ†ên]lÕ¢3`>å;#Iij­á8cÉö˜*2> TJ¿ÜfÖ0ݸªx¬™³¿Œäíž³ü»«F9tÚ¢¯þ'âŠN$þ >¤µ¥³˜:Ÿ¹h…sÀÙʽÎ…Ù7¿}Ž…ŒìU±$³“"J3•-IJÀg‚ݽÖiÃüK‰P~‘]ÑmtOHlÐõ{Eëïü-™‘BÂêc8ªŒ:x¬µ^ ZtX›ìM®×·–ÖòAÕšN½ˆo­¦«ŠP¨ÏñFõ¥¾¼ÆŽE@;‡‹|Ä„ÐB£?éöOœÑãº-4rÚà Ž\6Ã!‹Ü¦VœlQN1à 2r{h¸RC@v%ßF2<ôŽ>î~8Å ŽúÍzam¿…z»ŒãlÜÈ” ¿žüûx·JkVþ‰³Ïu‰aæ9›ËÉÏ^ÿ- ½À’Ô¯'\a¿Ó‘Ÿ¨*GièlçÆv`zùØ;ê¾Õ¼§*N»ý“4(!EP}÷üo·)‰î/0«ì}ý+–îîìÆ¼åWÍûAY>úz'rö´h_4áGvÆè~ÿ×½cµ=Cl·dôø '&‡†§1wßnë±Ó\¹ÛÙ~(K²—Dˆ×dv±pð1,/ÉÒ&‚Î?E“˜…_ªNÈ`)š‰¨e†Eº'þîg’†kQŠÃúÛÝzȧƒ\XEÅ:ˆ”VÚO·„Ì©ùÆí¤©s´— ϪoÇ¥óÂÏ¡ÊH‰ÖQÜ»üsPZŒU^ÉI‰°¯ËKô»Û³ž&],.óxL›‹<6[¦H¹1 ã<ʹ±²Y@ ˆì¼EI@—§œ+«€iéÇôcÓïá6Þ2X‚%IÀ.?~ªìÌW<j6|-¡;Ub1Osa4"0¼Ž!î]:Ëo[Ñ9Ð ›+Ëd0–ÉíãKJ”Ùq–!ÚT´³ÅÞ7}ö! ,OÌÄ‚”)"ão ã]™è½Ø~f»éDë¶së:y¦r¶•½’µ— jkA΢ÌdO”9JÍÊ%%;‰j.œ\Tª¿ÝH†©Ì„QñSÙé¢âù¥2³Ee¤—ÊL•™]JÕxá×X’\JÕû!RoIn)=OëaÝe¹¥t݃ËSKéº[îú0–™Y*–Xê,’Yê.‰¥\"/–YJ©c}®¸s”™nÊN‘aȼ­XÜ ¬0-˜™ ê 3x¶ðµe«TŽÄìv;+PwN·ùd››üNçV-ÚåÕ»¬×wÂô’ÊÁÖ Ÿw¬Æyt.o›èblŽS‹Âõ5‚ÝdÑÚë÷±8¹ÞVïH¨>h!ú\­£Ùõ u3J–i2¶ŠäRA HѶ ^Èä*§@K›ÁZ&^u›ëZz™{ÿ–LjãYžHoþF<ÛgÇS¯^<þÐ’¯Y#P¬²š(¡|yªe+«dD±uMŽ2Éßéé<–&1¶íË8jÌëÈŒ Üݵ$^ƒ­Qc~Äc(Š>ýe¦ÖRI|TÉÖ×Ùj< A¾p'¢1Y] *U"…_ 8ñXU¸UV.µê…Xu¦„"#v×±ÀŠJA&J@±ñ ¯Ê«¢ô\”øÂ–Åsø® Àï+­a–úÐUœFùñôƒ“×cÏ–R÷žf«ÀlEεê“T@«„ u¹†*Ú’¥N*/S)Áj·g>|©ƒ*éeòPü\ZÈê+ßÀ¿(µ*m??]i™ƒ]KÑšxæÈFK<µ,~³Ë<ª¢Žþ%õª ekQ¿n$ N§HÇ{+tüq¹×‚ö–öÉh<±RØàÖrÆÌQ0òÓžDe!W¦ {ÍsW@†Ã|BR+çð›B ñ‘vôÖÈJ3´¨n}ìI]˜àô„‘ÜWßãµä,’/†ÇO_¬C6Fظ(äa¾+ÖÄ+cê5Ud*pìšéEf‘{WD(¸wzöï0â®#Ô*g‹•èÙˆÞ÷8jzŠu8ã é¾-¼e43¶ŒÀ 1ºaKÿK¯ªev×PŽ09WÚàŠ¥/…±œócšXîdä2dG†VgÐRÉvR™O”eÅ“Þj޽…OM³¯n8•é ¾øÔ£¤}vøÔoè!4™Pâ›Þ_ ÉáD >MÒ¡€oTØŠ\µF¤RîŽflÉŒfQŸU‡uãÊ=õyÓ¹/­ël7K´ùÝ`Xú¥ ›ÿçè¾´ ’‰Ø-; !šú-cÛ;ËÝö¢l&j­”¹ŸÈH!gõ-[3õØÛböͶãÄ«(9þ°}qÌÒª÷Åe×Zv»ÍñÜÖK{éŠ[kæ€ãí¹ÛíÝq¹tk½«nùÙZóÕa÷ØZ‹äq;û[&r»ãcç›}ú#ò?ÉüoÍõæÖæÆÖ x±ÞØÜhl<åz”ç)ÿÛßú1ùß¾Õê_¶þ—[Mý7Ö_<­ÿÇxxµ»ùßú?—òò½±0¯RXÙw.&Û×pš’Ûx$9ZY&õºoj0!  ¼Ô`Uëíd4™†±“àñÏIV×1pº“O ›@·¶¯Gvb°Ì”_ ‡*õ×6 X'Áøß63—•ˆËjÿ´RT9.D Êg΋Ð@©ØoïKN"%£ÓÕ¨x-žq;¡TåÜ]•ÀÉ»`°t€]ÏÏèç6ùPwkç_k”¡Be®£<áÜÄ´ì¾ÏQTÌp„aôÉG Q¬|&}ùÈŸ,È?±…j“ÚˆÁ OÕ;2*4Å%¦Àè-½­ÕXãt.F‚ÂÊŠ ÓmÄÐÀ£=U]ñ3*dæOpü0ÙÍ›ï• û§õÈ`ŠåQ!’ŒÈL¦Äª“EÊóÊÏ×Bω«Â§;M‰Úņ•å%?ÅK¤ñÕó¼ä'y‰6±z¦—ü4/‘Fî’ë…7,ñv$Ñ‹›åEÇ—Îõ vÓ¼Ðã—Öa„LÍ1@m¡Êú$‰?lÚﵓÄ I¡”Oì,qÂÜ7a =9Yc–½ÌÍóþÔdéV[{ß °EÁ´Ý4w®Wõ«0㊠#š|¥HÚH< ÏavîBN–Ü,ºŸRt·X I¥ù wô쯒uÇÏ£ó´x^üy™tÃn¶òÎåPáÊìj‚Ž_{Ó “¸¬š¾Ås_t»î#KØì¹9ð#ê8ë> ¬`ñùô‹Nnvý¥ñ„ Ñ0sC4Ø8ÊBzŸ( ‚-8PÈ)ptÕ0 òY1ÚBÀ„_PË^OÂfF+áËø>dO.R™fÊ‘liáDmƒ’ÿ‹ÙÅurC÷H€"8¦qKdRÇÄþâxHö¢a’®÷xâ7z ŽJR~SÑî+€.yš`¢âþXsMøÑÜ‚/BkK`,Xal ŒMÆ Ñ„M(2Ø€"ƒM(2Øza ,°À ,°À ,¶ŒA£ÕÆÂØD[ãÃX`X`X`Å £‰06Æ&ÂØBp°—c™ Ü`,pƒn¸€± 6Ä‚x±é k#,pƒn¬JðÄ…,cãcÂV8í ¡î*HŠ´ ©ˆ¤| }íG8k¾˜@6‚ÌÛÎ)ÅLBÑ,Òi¤eÜÀŽy·gTi¬†åNAŠ¥] Ç=cÈsÿ^‚ûøÊžôöäïØ‘õî±wqÔ$gš•ü4³]V²Ýj2|V²}b2œV²½b2½V²c”ÛJ¦÷IžÇ‹ñ>éVÉš<«îî5‹Áa¦IèBÒÿYDK¿ãžtBq¼²AH·=òr`_‡L§Ÿ¿í”Ž0dð&±mÍcÎmRô²JZðmK?“®cˆ‰C3õÀ÷Z‘fØ’î´Úò÷žùJþΡ'ò^Yéê QRøðïÒrZÒ ‘é#ápÅË·3ŽXáðya‰ÏÑ›9”}9gß̵*•ó o¶*•wú „s×»;yqG]¹ëÝÝ®Ñsâ™(X­±kÓvÄŒ{ıBÕb–w(WÈ­Ò”E•QFżåÍ:æ5«På®ÔRaÔ¨Û¹hwAôŸ&2£$þeþ]„¦3hb@WøQ)ÍĺUà@C”e÷•P¹®+Ò ¼ÍÑÅ*éøSI~Q¦Ó‹*·t€J 2уÔ³µã€ÚY€Þ¤"™sprûü¥"¶[ª1’$ …b/¿&ëqÒK/·fÊWNªcuÄ›'c+•¸…^¦UëÕ6åè$¼9Q«sبšŒn™‰\iœ›½ÈäÉH6óØ…µìµu=÷s¹·D‰2Šú㵉FbÝý™ lù]kìì;l»7Ëo²ãרFô2›Ñ¶AhÃÌR+þfãó}JFØ`í~ W¬l…CXÈŽ*e{]ÍuÚi£#·oÏÕd¨õ:1¬'fiëÓ¥ö£ÐÝÈôíŽf¡‘y_M~V5{ÊÞy­a‡4¦[AÆ7ª%!q×+ m¯o´5^¶ÉDY¼å¸¡þÃäKmÁÄ«^F˾½ ¢t×ÞÍ1£±&ÿŒ(L+·ºNÔ­xÃ6€µh¦Ò+g±›CÏÇ3iA‘^¥¨–Óqž@ß··¬:ˆ‰s§EÏJù©Õ‰;>‡¬=XK®!€c–€ITòy©—Çi´ª†î@ÐIÕm@Î"Ï ‘Uwœ[JJ$ÿʾêùš¦Û_™©*:œðîL¨åÎéèe g˜UÏB]ÒÅ 8ýçüžLqK‚6®õ³¤œ Ž(‡s=uer3âŒh QãÄî¦Ú“/&·r½)Üd¡r7†3,œULÇ6È»å(&r›%ñ–Æ 4ÊWІ#+Š-AÓ·%[ç[öÊŸPyK̆ò'Y…Û²ð;«p{2þmqE»‹UíÉÐ*ÚÄŸÅÐ $&á³ïÇàÊ6òùC¬¦V5™ú}dçÈ–¨÷žqúãC÷o07à5ºGùŒ×Ý0øê×g¹0db¶Ï¡wí:Í·á,ÉXm|7mìÈdê çV:tz¸ëòpÀÆ uw¸¶E —®“:Cç âè(× ô˜§½Ò'F`?­hɶ.‰,PŠ,Ñ’Û1˜¦Î·3ÚrM¶p§0 ΋®¦=99Ä¥èh&íy¾¶ò!~#ן DgºôÌú \ƒ:«¥Š“ª%\ R¾<ÁQËTÔ"0bè¬îå™f€6œ\‹@K’2tnMƒ (SÜtV·}¿Ÿén8ÓL@áT{Ö`êxY`¢sÚß}Œö}¼Äöv8žS­D£Îo«¼6ž3*óÖ?-Ð{®ÿ=ÉöòÍ6PÔ~3¶ô êÝÖþ<0Õ¶Aî܆¦rꬴز]È<Ô“a)š·¬$Á°“>Æ._³»ßGó8 s±è¶´Ê™ÅU9Ðá'}8'ÑsKwâU) FŸ_9ñš-tIOé !¡ã@PÒ¯9Ãfé7œGÊ~$^´Y„\ÚÌd67íÄQúÚvÐ 'Û¹XÁU¤ÑX+Óäv4¸àÕ˜%ê˜ÒZ Ù†#%¾æD`¬‡du…kÛï´¤+u©ÒUŒu¡Í:b‡dH-ø"«wtD$Ón?«Z‹äýÍ(¹œ[¨zmdW£o$gÓ¢÷ŠàÐÁ—Ag/Îê‘óC†¸¬ÇKÑv¤ (.ÈŸ+Ι*ö“JQ­Œ!hb$¹.Ÿ›ö*sÃG[³l¢“ÓPíüÉißcrÚ÷œœvöä´³&çùG¬äá`ÔÁzU¨Ã¥>Q¾öJ[úbëÔë’*qoºl(úf+¶Ö7»M´Ý&œiÜ«áÕØ#9u(«¶RÁ = 'Ô¤ÌÄ\yÖËRÇç02‰jâ5£à<á´‡·ÌåxTŸ —ر?ðÑà¶3ÅqÙô¶poCªZ¶Ü(ù«sߥÿØÒª&³ ³:C ɃÉYäásb¿%'RÙµ•9ÿÒÏ9¹‹Ø--^ì ÔVf>Ç]s®ýµ¬w ˆhb—æ ¾õL/M˜òr5£7¨*÷¤H)ŸeÊz •|ŒÒ™5>w…“p¬e•S #h¹ü¤Õšh®ã¬Ç"[Ÿ¿"퉠“½uIÇé2q$Ö¯×À§7HÊYé·2'Ð µ–áZvE8˜Ÿ3 .ªR|:Qò„®Ø”4Uú­ìáÞŠ¼7”j3ž±«q:_ 5ÍQD='ݧÞá`þK4®÷¯ xÔ–l1`6 ׆°êå§të;MF)¹m ‹.‰#6|to‡ÙÆo@dòÄ1³îþ~á/2Â.M¯Ú¬ŠŠÜ0†:µwñ‹LÚ&& Ó•$&s  sÎj˜|÷k㯶tÒBî·ÍÀÍàw8é\$´hÐPìëI­ÃŒÖÏï,j´ ]vÏÐäãôœ)æv^eЂ!’K­òsú}Zf‚σs{¢°õOŽïr¢ÅL&,Öý’»ÁD¸†‡6ìP”óÁ90à¹#-Ñ‘•ì­³¬Ïô®o AÄŠeæ‰Æhâ&Œ¥Û¯ÃcΪA,^Õ¼ÜUcwÄU/"ß‹±Z§„wD—¤$-Ðú¿OÿëM7¼y]iNÕD^:ÖIÌ]äM‚¼³Ÿß·û-ñ/Üd“*úÝýsåso7]ùØÉÒC{IÛÊ%IJÔéñ„éÖÙº˜ÍÌ5ïØtJÐì~Ù¨Ú7×°/K )6ÂËëI`Ø$.0Y7hÛçðÅ”ÑB±ÑyˆöIkA³ò™æ}¶¸BAàa}R…8œ Í×,™Ï¥©¦e­”JŸ†h…†t7[œÏ0“ü—ÒUB«Ü:K´õ?%@—â×õ­ºxÀÎJ|=j–oÕ¤i;#§p$³ªJñ?ö;˜4˜mÿUò`É/«G¬”Ä1Ã|ò´ øðù6³1Ñ¢<¸2kËöþÛîé!¥ iãÖkÓ[øµßÍ3Ô?úÈÅ~ÛûXýÀ‰`(/›î’´Å²ÜvO¶eùìä¼Õrz»²3vûèøßVþâ·Û4ôTûjgã“=S©gmÔi}xëáªNÝ­m€JS q¦{·‚éøn3á x‘ÉØNëHØ5 ¤†äœHÔ%§c˜¾—³¥~3_ꬒ2‘ƒy£sFºoÜpÖ÷IJ)îš—RWçeÕuøñþà¶ŒtœÞ,nœ¢¼p¡(2©çjÊ!¹žÜE<ôUæJ…u“„qo}áNìž=»/êýÊYb)}3²˜AÈ2­QÁZ@Ÿu·YÀt—Ã=Dqo1N„Œ¶>™D®µ ¥ÍßFkn®gf½áëb?ƒ­ÂÓ³_•9va ÜåŠþ ‹o¬›²6ÃÜÌæ¢.2Ôº—ö|‘=x»•Ý}»ïíHß·b}|±éudUgu"+¼ ²·®ap/3¶¼ƒ†Új¸f¹4Õfx°†ëªë“3-?<ÿB‰fí ÷îè¤eí`í@åjd¯7râ—B¨S…Ûzéâ1Ö)Œ4ä8òRÐÂÓÓ Òé+Ck¤v=JÞnï³.«²§g‰ê=¼×Óª÷é`ü{ Ž^¤¨j⼩¿çG=ß&²X`j§©G;îÚ!¼Ê“Ý•“QúpYÒªDª”ZÛý€\0Rú!cuÿ˜+#±‚I¼‘:Ø<aß|vú¬Ê¦ƒzŒÖ²¿¹Á¨çHrJ2–ìr;–h`ÚɇËEl”º[[Ž\§ÇHQ1yZf”?—_äÊ+BGÔh0Ó «¨ ƒ€‚Ić*nóu“Å-Yw«$Ènä'ÈÞØÙËh²+ ÊåA.ŒD!OWe÷ã­êGÞ|²É™Çï.Gz°´áêÉKÞŽEW±ÃÛ}"*`go1=Ó±rü0GAþs ˜d)Ì —,Éëüé ›#nòË|ã-¯¸¯ŽK¼å ï³·—7Ìì<رz£Š†‚‡|mÉ^>:¡7Gí9Hl$WXÐÍë~Ë$ÝÆz®¨{Š‹g–¸ˆµõcí{|m¶ÛÌí[âvÍßÏå[ÈQIÄ…éŒö%ç<€¯sNgáQÀÁÏF¤—͘8-ÛÚÊîJNø0ˆ€·råty´JæNðŽËŒ»íø¶C•ÄòP1‘“dו•±a²ëenè9ÁFŸÒîý/þë7 y‡ø¯/^>Å}œç)þëßúqâ¿~£°ùëÿÅÖ‹­Í0þóúÓúŒ‡W{ÿõÁÀ>DXeøª XÖ79Šóªê”Ä|t2 Î5]•9§óå- …ÅÀ³™Žý  Ú´¿9WŽÝƒ8Yí$77ɨ ¿W£ÁX¼ŒFéÕ`\ÿžü÷D¼K‡:šÙ€3hº—&"'Fm=·G Ks½±”*ð  Ow‹¸k÷)o4N\ÝÌ>ñŸû‡Çýöþ œãº»ã¥os7?Ö®¡ÐlÊ4ë@¶•™W- È ¿mæÉ;†Ï嘹‚‹ùA{cƒô‚«<òܤŽœÝ Ã+Jr VáŒç¦ŠfØà[þiÅü^Ø_¡"ÿÞ5ô¯¥»%_pVrÛ€¿Ê>ýíH‰…âõ rŽÂ´9ÉŒ-ØÑÅÕ¶äbÃWH_ÐÞÌs¾‰Ø¥sie®‘CÑ㤗™¥¶!?†æ«,ã¯X¦Ä? ¼tTJnge9\ ì+Ý·Ô‰ÚµC×çë²XŒ¥±º}&ÿjZu‰ãM¡+×é…ro¹à¨UðMÇn^ô€c}‚ºOé/b|?uÊ!g(5¦÷å öíœïLkš©:4ÄŠ<Ç÷P‘N䯅 ór™ŽS®$Õbt•h|6'·N„ x ¼8M½@ÿ^ôw k_õ»0äw â÷Rá¾³Þ§Ôß\´ï™€¾ŸŒ(„ò]â;ß[?wÎ=¬o‘÷}þq¤ï4o‘‡óí¾uvˆo‘‡òí¿`v€o‘‡ñí¾bxïâÈÞbàÞËÀõ>¡ofôÎ@ó^È»8†w=â½ üîù¡»3Q»çì.„Õ]¦{F„n‘Ò]ƒ+Ÿ[, ¢{Qtɽ8÷¸—ªÞåàoÇ¡· ƒøª-µyýöÿ¼­Ïð=[7¾ùxÃqxîoPÇ(/Óº±ìîÉîwÈ@é.2dt‹1º†çžöÙîoäΠˎȽ0÷âÍ›oP|›JæÌ0³@o/€º½äöRñ¶°íå"mÇ`¶—‰±]`{ØÚqXm±,díó‹j/ާ½”öB(Úsh« †^Éï‹=É:áW­°*}ñ P;cÏë3£(µrÂxŒ§„ߥq0#Ø`::‚}IpqÔC“ˆêüŠàÃðȘD¥)Ó¡µ1Æci(•Œnp§@"ùI~Ø‚™Ã% Õ?¹2ÇÁtÆB”ÚvÛU³&¼rµpÔ~¡•Õº,5ʀ–LýZ+FDâZ~•Àrº¡Ð„ß,mœ-ˆ‘¾xôÅÑEŸ] •ý¬±¶_`¬ígŒµýÕX{ cm¸÷îa”q Ê¿÷pï CÞ/í>Àº_æ>ä^äáÜØ>¥CÜ‹EQî-€û\H{Ç^™gŠ£Ùö~ïçÙ§ ×ë’ƒaŸ\ï?ž_ŸY/ò`ë ôv:b½(Zß6|y¦èð´» CîóZn¿’$ç^Û±ˆû‰|·ƒpŸæ„·gÅmí)sf‰B¿j %¹¢9'MvS¸”8Þ¥FL©ÚÆ‚ܹœ>x“N“ww "w¢ Ùá*WA«C9Òz–µ#Û·¬Cå‰Dê!5+ŽF‚âgÞ–T$ü¶Äܶ{³à¶É”œu¾š‚µílëQUfÛ í.—öá©ãv¢ßVL[Òñ µ3{&Ö'’ŒÊŸ ÌàaSçâ옂䲞u&xCÏÛRDÓß/¢oM5fn™~߯ܗ„Š!ïgÀí+…¿è¾°ïS¦ø–žQ"Õ—u‚ OG²…oO¾ÞÁ8ÐîÓð”Ã3œH;Iâú¯Û[ÛIÝ÷™rš¹ûí8Õ/fmêfIÁäÅM‚ÞÓ¤X¤záSw„¾À!ú@è'¤Ú0Â¥™¦è•¥ LoÌî;©Mõ`üie%G W¼º$K_þó§(ÁZ¢\¥? ~¥ þX[s‹of^Á˜¦O䙢ã̬¦í×uòÅXAI ´\:=`¹×)S ÒCGà)°šà¸Q‹›Þ1·G žÔ¢'Rµèy3Ï–S»›Þh<áª!GÝð‹^ùùšÕ±c¥ö™¹Õ“.—ö8A1I#þ¼ -÷’hj½&a«@Gí_kã+<…â§ól˜-æÉÏoÇ“Ÿ@B‡0=ƒ>A÷XŒqCÛ Á˜„£R¥¹Tu+;å~pè:þ{4) ðôºß½½úXÒqþÖLÅÕ®ŠŸŽt0ÄOö¸zž•L§ì¿R¦o¹JFÈ<é}¡œúQ*ÛaÚ– êCõü€"G>É— ï ±ùFIwB¾\‹p€W;I†‡š³j:šA¶xm펔ë×¼ÜÀdÜe£=cgùùÉÐü´Å>ŽÑÚú4t Lñ3/_¥÷ÿ÷ÿÛ¬üÿe˜!°Šü}b·ô¦Äí^u7êA}Зš÷0R |¸¹5“‰x]ÒY¯•¥Gx‡Ë5iø™STÙ‡MAwÐéß >¯”_:¯ŸÞÒ÷ž.±n_ˆWP7ËŠ‰Ëq“B«ÅrÇA»ŒÊÓ=jèÍtD®ŠÊÇ€–ú/“‘ßêNUHMtÿÇ­Ó)Jà,‹uŠ:늭Ä.eÅŽ®ïÅ×k›ú ¶×C¢ CÌ 2QÅ¡¬™G Ð'q]   w—]Àì?nRwTѦp*“«¯ê,PGŠ’tÃßA³í-™àn4á)°¥¦ãd¤")o¦“)wÁZ&‹Û‡cbr™|*Ѭp ¥è¾ŸÛ¥bíQu‘ï5u3Ýfxí¬³ã1ôßs‚X„žEpLîàÛ!/À€ü€cQ˜)(E‹÷pÞ7,E¸²7ßZš­…îŒüÑ“äêã ÷7fæÓ¤Rhu§Ð>³ý,yÒ¡)ë%mì%µ.±ÿ\‚xý‡Ì9ÒôÁß ÿ¥©1˜—8#¤V|Âü5k¸íÿÑè’$ì $¼ìw?赚À1T˜ñµ÷"F€˜L’Û;êC€ë‚Mp H|_È ›ÆÎh´@:Ÿ„¤–T¦¡Láƒýq’6ˆ’ª¸»±±$ÏŒŸúŠXNßB‡Ü4¬œƒµãæ`•Ñ×–>!³h°yµSŽËðޏ6Iàú»Ø&IÖ‰Y n ÌšžuÆ„¬NâU‹Œ£‹¥˜ÓS­Z„¢IW0öä¹ËÿØi‹8™»n·?°VŸ8$#'8<51E‡i*lN¼’ñ+Ð%'–/’ ÌþœôûÄW‹n_¬÷xž07î`Ò‘IŸÝhy¼bCùǶª£º/Î;«†Ò‘KÛœüoÎl/‹ %ÇnyBÍu*O¹VŒ“rEU×E(°“ÏÚ\íp:Vsœ¶¤â6jŸEˆ[*õI~gZ3ݸ‡3:t‘»sñ­A†KñO*¸·f†Ð¦…ƒÒîFíx\¶Â€ù˜ÀnÅ5²¦·Â¬›ßkþZ.{ÙhÕšÿiµOéð¬Q–_쟞©/êô;M†X‰8$¤%¿O§b½ð¬qñŸ£öë?ÎõÑ{Ugp¯ú¨ØfàÄÕU¡Í£è«dõ¡à®ÓNøbÏj+||šMÈâ~VvMɨ©Í(úëæ$Žƒ$Òã Ê:̤éò[³2ÌÍnx®4Ã…òÿç¨î€©/”›Ø˨iÑÜ­®“§ä ÎkTIŠ›µÎ~³ªÒ¿‹ÔnÖôÂß]fá¢v³ÒëþÙ‰½trÅ›«^:JôÙ”—e‹|á1»q™ óÊ öG›<Ëÿ[Úá_â#è´=Öy-5NmƲò$¬ž®J4+ÔÓÈTF·ßû/{ÖIÁ72hRè`þ£ü„Éú¤OêPVQ§ƒI¯.~.õY²*ÛÃ7–aùAÓ*¯²*Y•WI•S’*[XØ«¤Ê¦ÉÿŒ¤ÊÕewî*©r cö⌙=©òÓâ­Y8©òò²*ßCJåóÏ™Kùá³(?þìÉ Æ$‚<¥ð÷ºŒiXfÐÐÉ-Ù§¶¶½ì°Bª]™É“S§F•›L#í{XÛƒ×Y#_½:3]Ú«÷ç}uvÚéÍÒN+1ÄjɤZh«”$f?(+š)4öC÷“Š9H½¼»]Ž÷¥Ì.S–q|À%×€ƒ†žl ÈP¼::ËY7Š“Ç]ðRJëK«³¬Ù‹Û¹š…åT(ÆW“[òâ…ú€Jëä¼0©!¡‘È ð*ùB Íô)ê.äÈ3ú Q‘aõj&~.â—œy¬´ëî ÷GP`ZÙ…Õ=ø±ó4¤±‘CcZÙÁÇ‘ÆÒØuht+Uø» ÑÝ"Ý](ÒÝ{j L±À L±À L÷n¥‚#¤±‹4öÆS¦1ÅS,0ÅS,0ÅÓ§šFiì ]¤±‡4`$Ûƒ Üb[,p‹n¹€"±ƒ$v‘Ä’xºë°ŸFXà ÜZ”ž„ӕļü0B•k]› h>VH¬ÃÿæG:þŠi%âº$8Ú„|ê{£€É?ÎäHG“ƬäðhÂð«ð C7qª' U2—)Èw6Ñ(÷•.à.Ѽ_·˶“BÔ—ý£KÒüU–~Ó™I¥¥‡uIûX«gfñÅm&ȉöä þ×_ÁöäÕÅŒ~®1ªïÑ«Ž)CßRy?ã=E½Tµ)Ôð¾³_kâ¯?jgßÌ͔˼ºP;šTýÙI‡RßU“²IÆ!¥ßlÝ8!oÀì\Às0ÍíÍd§ÙÎi_އ]à‘—çaºäåxØ.y¶»ÜE†Ë›ö³³-]3zyÀ“wË›iïê/…ìºl¼ÇèVê˜~OÙ{‚L¿-éIa&Ï‹êdåÍßp[ò=‡êYV?A{–ª3–ÌOj„ÆxW‘ÄUËìbôê‚p ØÅŽìÉb ²  Âºj¶)YÍ‘ì4g‹á…ú£jÃÉ[5˜×DêÜ}LX*·ZÝ››äÊÒpˆÁxÊ$ۙƞ–c·}W{–Q³O¹ÕÖ>+›·âd#ÆTÙïxÅB³‘z!ãJ<>Z¬Dú67µE>´¾{¢ ×K –åýíÈp! ©Þö&_·`I¦1CÁ:rpšoóŸYá´þÕ©rÉÃñÓÍ[”NÎà&/pÿ÷‹ØZÞ$;eØïØNHtÆ2nÀŸ›¢ârZ>O«œXÃážæ G"@oÆåªx‚;¸“³MåsæùÔîî`çai Øßjhà‡“·¾mŸzÿ ëQ±‡ºì9²â†•Ø<± Àg‰P¡tuAø<ã'í—ßÞ'ã@g•Ðç $þ7‘èö¨J>õFÊ£~M«Žvn¹hbšóD<);gmÂMd½r´SVð/W¸“SDñËq-– .•t6}š »<ò„GÊ,Ïd[nÉ N³®š×,FµêèÂP‘œª£ñõU »C¢Mdy{ý:S”‘‘9ÿ-Þ;ô½÷¨œ;ìñîhx²ånŽãa*X`CusCØ.0dïvœøR+KŠŒÜ`ìoâ-‰¸_ÄÛ±Sù"½Òó½xÂûÂ,xAC¢î'»© ™Ã™IÌãÏä5ýi&.º—ëÔ$Rüšöb¬xšÊŠùœ,oôtŠžôØ ð¼œ¸•_bžNAߟ8óUród#tçÀ¹ jØŸÞ‘'f¶À^æœ×¡'H ·Rð³J?w‚ÛUº]¥ÛÕðöÝÞ¡Û;;ùcL‡/(œù°üu2J¨ å¼ÄS-TZ.åË!¤“Ð1ê3ÈÛ¥a½‚J÷N”YÁpÈhFPž ¨jǬ<ãÎç.!.ö¿šÃ3™_È¡b.+¬mKÄöÔyÏg¯zIÚü‚Ìê÷L6C@ái>9ªñóÚÄêœnžÀïÀiG•S…èüÖ—§“*Õìd‡š§Á3(«<е>Ø™’‘•&‡¯—ª_ò»ØŸpxàøÀ ú˜Õi~d6ÏÐöLñ_Êô Ôõy–áÈ—š”ÁgÛN¹(˜ˆ¹ J&.ì4Èל®ƒ|„'žD‰‰{ØŠˆ“í) Uàe[ÌÍVXž¶®«mѹ«íGæ¥N ûÙò5¿·­¬F¶Ï­,$=oƒ¥*m,íï¾zK­Rî`²ØZhé9aoõÆNd]ų‚?¤«y¤,6xڈ崤 ò³qRXbÔdHݾ);^öù/éÑBÅdœÔí+ܖг?(‘àôG4~c®ò'U3Ú˜_¤ Žì³Ov”¾°ÍÞê›| q›'ò8kÑͬ#l©pßS-[hs¦y;ÕT÷~¢_¢=…[¤Õ#Ól'ø îgö“ŽÚH ¨]ÿ©R ;&ïHÝ@þUžW8ÊyÚK¤Ú™¿­ˆ‘_-Õ8¶I—uËáîrw§,·•ÁΔGfHŠ)¶U:wúpCàG5ÒàŠuÒ´i)íU€Ö†hDîÒIPg< |_ïˆ}†o´¦*ÒU±Lš"ÌZj$¨(©?-1e^_±Â³YhœÙ4Èp}@«)È6û²æ‘J¥ð(MÐ4ûɧî`⎄*DÊ>±š¶c^Ã=C?B›LIߥuþ|þ“vG[ʾÍn|ýD÷Å4¼‘Т/\Dvä©XÚ2$‹UÕZƒsm äx/+‘³€5­ÓD/µx<Ì’L¬T·}öl¼“2QgN”;á~þA§ÎE¦NfŸµé_Òlï~1Çl¹óP³¥Ë ‹©’‰ ó`ärx¼33½ R1®gÎ*Ïš©–v¬=« ËmÕƒ·hžSúÍ0v Úϊɸ°Oòh)‘§g‹žäÅä nÃó?žfŸENò*¿P2"X¨ÓڦЎ8àÆÿMüÿ³Uüïƒ\«øÿú²ãÿïgôçãÿïíøÿÕgÛ«ñÿv?þ?+G’ç£+ó¥/ñ?6TÀþq­]Ûwqˆ³ÿ£˜SI€20É”B‘PˆûD€.ñûg„èpÄãØ yìCŸ£tä£$Xâ™oµõõsëãpD_«¯ð rîŠÉ uû.*„$˜Äòæ)7B¤²Ãš`4ê1a†u§®;îC»äªwÓKÆ2î’w¨ä\ù4OR÷çèÛ’}è³æ•?§ò¯ üyZá}YøØ*¼?ü9ý ]Yôcø`Aœƒáè:y޾ÿXly3½„²T ¥r\½­d«ìÅ#EüŒ]†b9½;gav€…' †ü¡™¡úµ,ºN-µG®G"„ˆã Øt @ ¤à ØTr ²pl2YXî!ÜWD:¶5`@ËE °àl2EêÎôPæ„Ä8èÃ0føÖͪ±‘ÔMõ"BN7q/Q'1Gkf¨„\¬„9Á¾qè³¼9SÐó,ñÅÍ×G}'DU4[¯Ïe™Ö1C¹¡sÚW 1Áÿ±Ô¬¨ÜØ{1ϳ:) CgùvÆ[æ€6?½°ƒn÷.¬ Úz'ØþAµ³ºÊt™:™¶ÜX€Âc‚Ú_–œÔšV²Mï¡sÊÀmn[Û¯$åêþŽ#kq¶Ì~dÏDã–̪’Áƒgáãô4ù ª…4þ©Î],ž·s/ñ¼-;ž¹˜ÒËϼ:0Ý–ñ†¦JšMçßî+œ°v¼"¼€ªMZöVx«¹.76°•}õæ¢ÎKí;§|•©Qr7JÆ0¥F…{ßë鹚t c•Ç;.›ÓAoÂöTCÅR½h•„åH ÔËY©²›&ÿÚ‚¡¿ß 6å·øGÙPùüƒè’îÕGÞ,àÞ†u©f‰yºœôz[úÛá5ì‚®”.iÕ§khLoòU®ÙP:s=’^1a¬1kfÓ jmFÜ›Æ\7v4Qv³¥ÙD$SM—„±ëÔéó‰ù¾Àv—ožªËâÀÀžÛÔ²Ì'úÅø¨ûêh¤1_¡GG;K?S>fpLN,½oó¤7l.®Y0ÞßâF æ1Ó6§ä5ÃgM0m¥7Ø>ÕiŽjXßA µlªžÞ"+IÚ¶÷Õ[›vаÉ>˜ŸWçyŒB†¤2+Q;©ÉjŠš©öy£VŸ·ØŒ^‰™Ñ Œ\íƒ ²ùâ${,äœpÔiYùá§‘ÝÂcÙ7Žk>Nè½B}¼ Žœ9¢ÚiFäSE{/_´giGžh?]¢h“ªo‰D¡•„FCœ©Þ¸È þò‘6.òhä×x¦F>ü({š;Ê"2¼ :ßËÀ²ÿ'—Ý¿ý¿º²ÿ?̵²ÿÿЗ¶ÿßÛèϵÿWwŸ…öÿÊ³Õøˆ‹G»cÿ?¬×^ÁâøÉNãà¶ækøqÜ€¯`i=$Ȳ \9/V–ÿâ–ÍÓŒlä1s›üÃ3'8xý¶Þ<gíÃýF§ñí¹Ôm9vÿ‹¿nC? ™ºÇ–g8ýäf"’Þd*ÚÞÆn>iºGÒx=ŠN«ÐÝ×þÓP:‹+“£OV",]BO ®m³dë (¡šÍ†~è j÷L†þÉ×;ò-O«¾ÂÄuÀßÉâ_ wƒ!šŸ?”õ±æímrÝu¾ÿõ7ï‰3~"íEhð³o!‰N>‰1ˆ4n‰b×3Óó—Cu³ê =‡K¾Æ1ï!ÿ æð’ÝþÇÝÛÏ=Ù*'mbXh<½CSï5ZiÞÅÑU ¡)mô‰¸©Lº=¨:‹®-[~ã›ÞŒÏ›'"’|âÂw¤€9!(ÌEÞ‡¶ÝhÞCR8Íás× ÏòÚ(æI² ãø `Srïk'¶Ã[/*ŠÜ‹m¾õBÕš¦«jÁÌ”g×ö|<±Ò²Êþ1z)Èqä‚°û“ÀÌùAâ©<.ü!Ý¢¶ñ‹òi~ íS] úÅq‰P#!ï-®+Ž;‡zÞ>¼Ø›Ø >W‘L’Â"´(ǤšS„µ9Öwà,ztÆ÷‡,ã…¬ïis_Ìâ~øòtvãèøü"C_aÀïWšÇwh…?x<©Å·¥É.Õön"^¨·Œ­õwXê´ÚGÝh>±¡~C jÛOJ,Yï#vz¾y¦oZ›ƒ°X'‹F}&û==/[oS¤Ö¶êçxF}Xû𠉈ŒŸŽŠÙÏk?¬d{§€,Ôþñi¦ w€j™êƒ*±û_µûÿ;Íì†û4û‡v~Sä4¿H(äéŽJ€(jFVÁ£×â-…ºu¥0ËMŠC#2(°çS‡ƒg¡bŸj3oö8ïßýcôÜ“[ÃÌŸ¢0®lB;eÜ#6ô±ùņfjptX Û UaF÷[¸ÚÕâ65WugZÚ¨¾ùÖe 6+bú¯ñi2³’qNegCªÿÇ{*ìBEçÍ|ß²R–èŒ+*†ð7¶$WÃ…#Æ¥^ÑÒ+‡d€<ÙgeŠ­¨úbu@­†_·Ý¿…ì–ãຫ>0[3ÀàîXŸ_ëh,ÃíçqÞáka&–¡vÔ XÛ[‹Qr=½â7U6Vx1÷£÷nq%Š ]LNÛ½úªŠzFTâ5>÷3l[#‡ùK7–A2¤­Ñêá³´%@ÏÕBésl$xžMëeTöækÞaAŠCc¿#æF2Möè©­­­r+´­>Wb›¤XNŸ³Ñ2~»Ž·-Óg¢íSÉlfÁBaÕ5‡VáTë™™ÖùTY¿1jâ,è£g|wžnܬH“7Q@œ±Qr“Œ|(ÈàíeB6á·E˜~ËÑ·1Ó’2±FLKÚÆšav²íªcœP–(mwO1~æc—çz&)™ùº˜RI‹ßÅŸDìO-²<ùÓæ§>–äT^cY2øËá¢+#ƷϪf-Ñ@;ŽYhiþeýÓú-ªúYéϵh ŒB6«¦l“ÑËVYfãEÙ­’ý¼©\@…ƈ-ÎSõÕ[ðãuXl*‚Þ¨Ð3Ç”'üw¤I€™C`Åáì ü"Jçm÷šR†·äJ¶áNbk­EwQë«SŅͯ³dJw$t€qo<‘N)"5–lƒ’`å±hh’¯$Î1 î ÿ-´ºuóÝED <ŽÂó½¹kž¥»øï¼ª”jº;ça _c§x :¨ïóGT2ìU$™4€þP¢ (}g‹£NxÎì…I¿y¨LÈs2r¦¸d@S«ç aRàÔ·,E2›]¿¤ÚE„ h^¨U–0±ÿl5 I°þC”)*;þ®³ DéžF˜Loh×W ö hˆÁÒßRò!ÝÄt¦Bݱ²C¡K×LWý¬é"Øg\Õõ:“¿k[N!ô/¥U&Cƒj`š-s úr{¦óôiÖÉ P•…ñï2ÊzOR[j4 <‡¶…ãà¿ìŽYóÂGg·oùËPL'oÌÎÿ;ÝüwOìÃQVšàEW=\ËÅAïS× Þ‚á&pòUGZ[5X­ÝZ§ömý*0—[9Ï»BfgW¹Ù=g‹TÚýæËÚ~a.ιĠÜùëv1.Aõüuoq?Öëý×­}<8|·?Û5†` †Óôv@Y|êeY•Eþ¯‘®óò´ö®"Wéw£• J”!?²Þ?x»ˆƒF§Uƒ]†íˆã…»=ÒèƒfítÿX™Bÿç5*Å{Y=–ÑŠoíàR«CßÔñXè qZƒ.ÍpyÑ~.1â1Qê•BtÄurÓô<’ô|‰$A&蔨²ú;¼æo±òæëyüuòt¾GÿšYñ1`ƒUÔ§DûÂ,äSÒ,îSÂÑJ©¡pG”ãL†ÉjÅ‚ˆ¸‹xuuR…»f\c$e§¼Y‰á;¯¶&îFT¿R5œg–+mü .êj£ ´ŠNÛÕ£“/¬DË@Újà¿ [ÍcñĪÿ òü4ÅÆêxi†é«ÆHÓ2D•?ºÉ^@ÐÍW\W( èMŸOÍgå:^pmJbÖþ_@6pÅÓ\è€j z(nÎ8ñ3±“ÎO‰SwÓ1íÉnÅõð³Jy»wô@žTârhd·)3 2z{d8ƒ0Æ)7UŒr"]Ч›^˜àý‘[®ÅÓíàžW™Å(Ø&S.y¨È Ö»,ïœZ—_òŒ^dS×e1ÀÚª8öŠ5´ Lj̳íßÿu;Ö—j£S¬;Ñ-[vç/A?à„óŠðe¨À¯±ŽªHˆTŸ¼^¢,nêÖlݦ÷“LfŸÚOöýÌ~ªHʬiiõ*è¨j´£J8‘ȬD!S"óje'ÒñqOª”9ŸEƒ7·‰·ëU…¯p"m] 1¡ÃîO˜ådxGEÇöt/½Æd•IÏÅs!ÒõJrÿÙ|>3>¼¬$G8zÖ&„‰ùÛugóÁZµû ò¿N>¬öCÑ­—5XÔ ,¹èŏީòŽóÕVßx’¼g ¹/—')®ARÆ<Ç |ç>Œ)©âYÓŠS +ÒvŠ)©þ¨%\ra LVq½Ü4Ü­)­)ÓfÈ­ìŠ,Jfj8ËŽ©®C6U¯(“=óhŠ>ˆÝ‹4át³ûxäÛ×SÊ2\'£›þðsj±\6£½­?º|WÒbú±ògwS ×K£ÂðÕ‘]ƒ{ÕÊÓ4S]޷ޏ"ÄØÒîæ¸#eo»2A¾ÒmÞ?bÙ&•EáWҳȴG;,xéÆËýÚF{ãhާJ9üÒ›P8S—ÎH»Ÿ†=<^¡-iôÄwWâQL[žÂ*œ Èå—ë>ïi„ߢíׂïÛ)=ˆ={ùž¤~Dž`6?eýLæéˆ¨®$ Öãñ䲇Žpßжġ-û7WXnޤè„âðë¶ÇÈH“öýºæ0G29Æ6äZÈ|ffð½¬â/Û¶¶@³–v5Á•_3‡BÝf>ñÐz'8ãƒ/‘ã¸"ðVѬžêûˆw*=·n•쮤MÝÎk}¹æj¥Tã(³vA)"è—sUäH/ŽÖ—Ž>a>¬[EÌryÞ~{èÌ·Ž7ºœû²¦ç&‘y+RÇE8ªÑȪ„{¿]§ÕJ¸Ó û ÒÍØBhôÏ ‡XSèãûƒ]Žÿïuõ±øÿîìì­üÿäZùÿþЗåÿ{O£?×ÿw{¯ºçÿJõéjü?Ä%5×ÿ÷ JG¢–÷ïAY–ÅyííúyÆ©þfpÞÙªæW³ƒ/‹‚ëã©üIíïz¦£?åøÂnàNvt‰r=©lÏTr4Ƀ-qRÎJ¿)w"si?òËÁ©IÙPdORž5D»Kˆ^,EU¾ïMá.ße܇GÉM?Qˆ6²ýºfÝKéßc‰`ÖøÌªq¬’g^¢‘Vc«’¿ýø¯Ün¼œ±ýa9c'¯÷¦ß Œ z3Z—Q™½ùM»ðÛº`Ÿ*låh7‹?òmoP:…é)ȇ¤EŇÈÌV¡9˜Ôà¹dë¬G‡ Ôl³Ômxs³9wý¬©òЪê¨X&Ê¡J¾ÁƒÍJÊè4OnT ™Á“·ÚéG†Ót­(ÔcÖ‡”¸ljTÙÿÖ&=·2$ÇKfå‹ÉÒýÕþ,«ö”-kÿy8úk r’×O²3ùkçe=³¶vg~C3å9={IPäT6PÓÏ}åÏ`É@Ž1ëÉq©º&¶è¿ãÒ`ý›Iu<ÂÛGæö¥C‘ÓzãÐÁâGøÇÇ®Iøø\¿ç˜‡WClŠIwú7h¥Ÿð*©æQ}ÿîMñÜ·½¿éQZ3° 2CéÓ,rEùÄù_ìHCáŠO¥Êóæv¾.Ã'zuE>‹ÀóÛ5+wŸ O‘Ùñj\æˆßÄ I2ÓÍ8š~®>d*s‘߸a¦ 謴é|¥Öòwg&ñ\CÍ]9y‹-ÍêÎÛGÛ™‘Ž6å'‹ÿŸ<þ"þ§t$õb•{ M‰˜:A›Ö‘j©Á^¤èˆ9:’£`<Ë5¯¦éc»a™Žaw'³KroôA‘C"ùÒE®¨~ µ~JoÀ_{0ÿ‰ßÅ`í¹™½né{Uâ)–ø–P}[äD$ðoZÑÿÖ Uº«KiŸ*™*ýóHàksW—rH|ªZdv|XB“ÙÑÿBŸv4™ ,¡ÉìÒ¿8‰O»T(…–Ðdö2H|Ús#Z®9’D\'ƒáÄÛ!¤ªEu÷Òà§(¹¨¼¯cñÀ>À *8h¥@÷Üâ$·‘'ŽŒˆ>H BäHf–@„’EPY3å—‘˜1vp•qºÔ<;®-Õk]¥ClÖÚ/寣%x¯ì¿ndû¬ßÛwRß²½°OçöÂŽ¾6ôk9¨Îê…Í\8:ÜŠ%ÓkËx÷ax‚##ðLº^Ö®ÏKMâê:¯íèÞ3ô>öÈÚh<žƒ‰4mšÈ/ËóÞQ9n@*¡U› òòÂ'ØÇ˜°7”‹2ó3,†ÎlÊÇ—S=U-éŒå²¡†!xÔ\Ô[ ÅÐLl$¯õ7£á-´$7߯IÁµB§ Óh‚&< " ÛÞÚl”M²[«FaÉn·~z£¢½µiG´–ÚlæNFýcŽ^"OFŽñŸ7º­÷n‹EœûÈbŠnV“æIÚF%,∓ÕÂÖ(+y«Êè f_VH @(qp¦ éJ7“<¡„OñQ0Oöà:$cm,ÃBVŽs3³•º‘üÊiŽx‰9{ÐaJ 2µ¥vïL+ì¹9%âg~3Ógpv™>MöÇÓ™¦ÏphX;¯+}67ØFœ3Ì·-¾5C Rp¤Éÿ‚3n ô¹"¯ç«ÓœùÖ !Cg Y#aöþ+<3ŸÎ93‡«wdf–ßpb±åK¶>s–=ugY3Å[ÒEúª.ŠÌ±²ŠÙs¬»ÀG§ÙÈ/RWrk’Õ2çJîM¶Y4âó°Ë„âsê›sj5:§Éô‡Šï÷êéøÿ®‹ÿßîÊÿﮕÿß}Yþ÷4ú àîþÕê*ÿ߃\<Ú=ÿ¿öAQÿ¿&ýJ_ÈWþÖµÿ@fù?ÀM°}`¹ ú £§›—_7[9n‚+ÁÙˆ~CAÙŸ+As­<W‚+Á•‡àÊCP¬<—è!XlÁF£p¥LÊäZ°nÖ³qùÛ– HÃL*,ïIï$ˆ¨á/ë“;ü`ÒrÆX†ÿ)'gzŸ¦£UÇ8ܬjÈîH{äýØ{–íåÚÂT$Êÿ”ßK>áà'ð—xR–ƆMB'µ\#XHHA§¨ÔË;|ÞÌ®U e)ËêGI éQÞž¾ÙÚ4NtÕûV?Ku¶Ÿ–)Á-4gnajõ=¤`ÓîY;ùÃÇzÕŽÏ[´¶}Æ=,l÷ÆŸ{„·Eo Úþò.p:P®†×‰SjÞ» AºˆyÁ05k†‚iž^­!îg‡Ói£-x§§Nö¦YA™E0ÅÍt,sŠØWWŒ¡`ƒ±EBmï…÷:\?PÛ–|­æðÕÞ4ëèpË4‰F¤Þ‰Ðj´ßþY±Ë/óaRVb7Þñ9 ^è£ÛE¾r3!;oèzã塹µÓ( Æ&Q~Á'QOO,a¼çe™JFRwÞd¯ö%Uf£¢Ê˜ÊT‹d˜w‘ǹ/ÞŽo½¥”s&¿ç(¹íb¼QÊT¥¤‘¡ºœyjŽ9*k‚j8ÊŸ­VÁ抿L÷‹Åí‘Y<¾'¿Øå²ýA«z4þ¿»+ÿ߇¹Vþ¿?ôeüïkôçÿÊÎvu'ðÿÝ©¬ÆÿC\<Ú]ÿ_PWF¼íº×ø›6Ü=PÊA{åþ[ü²Üu:MÐú®ºý>Õµªhݺëã¡êOðÕkà?h¼/“K±½S“ã-ÛîB¬s±›×c÷eœc¥ÑGÎÓmXÐù¸m\†e•sçp1†jŠdŒÇFÊób”\õ@€Ð–!ë+LKIÐŒŸ¬vGF:ʶªöÒe쥤G®H€SÑ yJ%Óƒ|¥/­}6Þk¾•ÞA½ÿrÚµ+NžJ¢ Õ=o¿T¸]oÊ·~9Ý”S„J˜f¶¶¶f¼ƒ†qÕ½¶õÆæÚzOqèHŠÈ×0ñ®ý"¡lYYNÎ(HPùþh!\w²`wî ® ýè•øl »cä{o:,޶q”ü=íÁnÊq‰{!žT8%úë'ÏUáß¼'ÆÜÛ°ß3›Ë5çßv¶nynÖ3ûWã{”³Y“äà­‰ðtå C\ÏÖ›ëoíç»ãtù»''Ζ–")*о??xžXTÚ3òøÐÜ=Ë!²¶•B¥!wå(ƒ ÒáA’áÜéó¦ØLcˇãÕk S3@.ÅG§bëÌhÕõ–\ÛÊoÏz´€ÿª!0·“Ør|ÄÐÒYÌèüÍŠ-ΰ·+k»“LzA“;PnéÅ=eéo¨e=¶ø¿+‹WµÎ!ÿ¬¤·³Öh]´@ $8ð« ÿN›­·øÕÛôuü}< 37”†ƒv§vqX;Q6͘ÊùžS8?@êævg¿Y–#ý>oÇÜ–’Ã9B÷¥o~Ißü>ž¾ùý}¤o6DÏÅšƒa”¡1—)J_&sK²Î «–c»&¾|6ÌÑ,Ÿi<º$ÍêYZÁñiN˜òØž9ü;·3,~ÅQŸsÝ ÔŠjMÙvÖg߃A–vòÆ} jJ¢lÉò>àyTØ@»7 À€¸Þ>± 9‡jg€bªtÖŒòLí6‘—TZO¬VK!ô+KKervÍ+ên5ÖÃxS0Û˜F‘iUKxÀ M_lùâsµÎð¢DÓ¿3xðû¸øè»Ð\Ǩ·Áé´?é!Z h¾Èºæšï  j “+¡`lYÄÒ÷ä-ÌWð›Y+ÏKÒÏC4°¯í0‰Jj ßæÔð-†0ÆjØ6§~-Ó«¨Ž{d-ß–ÕN]v?}Ô©XÕ×׋Ö>n1¶‘^s§2‘N£PW4óÛ£å%¥=®Ød´)hK 6¦'ÜI®ƒž”‰wXq؃ sÈD\u§ã„â*ƒ„±¤ìÁp¦ÇÍ×f6ù÷wüÑ8<Ó²6¢c‰Î†«Zæ{ØJ°ÊH%€;ž‡•j]Θ´ÔrÁx[á¦÷zŒÔ)ª†Tj#µ ²DÊ´ÚñÕgŸ·nþ¥æj¹×³v…þvÐR0p!¡P'å¶Z¤V£’LT)gzLM«“ Óe§Zi÷_G¶••ö»lûoò÷ôÑØŸn¯ì?r­ì¿?ôeì¿÷5úsí¿»»•§ýwog5þâ’*žcÿ=|óÖÇjSnõöë?öÑø»ÿºI¿éŒ«˜2iý­>nÛ/*» Ó™}dy(N§ÙvV:Úh ë÷. ×µKNÞ>ເ“Cdo2µePh0x+’Á·»Ù—Æ]}»,®>Bƒ((£èá×m÷¯D™k¡_?ài ŠõC³/úzís­8uBcAÚ›¶^ê•ÿ\{ÑF\Öý½¾_úC„?Aã/Ç@¸À±ý P£­‚^©$¯Ñ÷]†ì_&ðÿäs•×Gô€6Ýj„43!™z㈠©FaÃJôGåvŒÕaHAñF#n?ðúœp,wÕ˜i«&.§dÜ!‹’øœÀNýF@³w¥‚ú—šZ]—šuÿÖ\w|FÙ´ >¨åÚDbP&ÃâQ3Û,p7§N›`íºô÷ï83¶)¢»Û3CÛ¸6t‰PFÚý9ªÔJ«Ré9õˆÍ!Îûy¢.h$No=SqY€ýoyv¨Kù¶ÄÁ¶'.ün‹^$I’¸VpB°iàbC#\9µ ‡L—é½¥,0fŸ'Ò¿Fθ.·UgÐê5;3Ôº—ÎÝj›Â~„ûš’$3Àj‰Me·d_ mdP–X9Üt't¨±ª×r]àz)Þƒæá¼]õqðCsÔ‰Š2w¦€·ÊN€€Õ'‡Óþ5Î $±j^øæ†zCåw ¡Õª,qN`ù/Äésa^ƒÓ­3À¿ä ÇþWñßd4 Ÿü]è'K½ÍÓ5|Ú¬Þ?Š/A<<ÿ$½r¬G  i¨ð OÜYI×)SìÿY–û9Lï˶µß—M=-ÊeXÿŽ3d³eÃ>ié¶lf®É’fÄfÀ³bËuÑû–V%?YBV%\Þ®>â¾c³'°K°:6bÛ6ÎzkÂæ 9—øÆ”@4ÔÜ_§V…ý¤•H$ÞËžt í– å"»=çU;QX1ûwäÏÖ¥kA2Ö–±urìq¬Þ IQh[nbáƒA¥qÑ”ži\¢©Q‰ÝæK¿§¡)»Qn梆 9ý™LÔ[¯A®v©ÝÀ,%e(:2MOû®–qS3ðpávÚn‘bá…ÐÐܽ”ž£JPÝS:dAž!þ÷ΈáËL{ER85ðHŠ§Í”nå&<Í>[Œ¢aË¡™ð—†ÔKOݺ9Ä<õl‚p˜íRc ͸A¤¿íÚé’JpŒÂ@6K%)(OvDª]5¶ ³Gè³ØÝ/Éè]%êÏæ™ øÕÊQ— q¯`oRñ³qÞEè^gúø5eúø%¥u½‰}ü)6}¬Û£ì—@¶~}øY¤²kjl‚mt§‘`²±J!i«9r¬<äœQ©Ä'kÁ5-6iœ‚ŠuâßËš8*…r¿8*Õ”vh¹óg%‚Ñ™£RÍ9´Æ3Ç~éDÏô·ƒ,¡J.0s8ü ]@ûÁ]<ûÿå}˜ç°ÿ?­VWö¿¹Vöÿúrìÿ÷2úsíÿOwžUÿŸêÊÿçA.íý¿¾ß6Ï ïÒæx ´?ij¸K¾xÒ½MÆâ ¹½MúeøÝýÐî¸Ûï÷>teñïá‡â¸wÝ%Ï&tÒÃûÛ½äšpԳܶ2kdûü’Û–¡€Kó9AØuÊjãêZ'þ³qzÖlì7ÎE‹2ÒwΙãÊ Bœ•Ä|~ßãð'âvÈf>¶^÷¾wèŠ;ʤ\¯ñiå5$⎳yM ßqbv¯ ËYC9Nd{Mœc65‡^÷nnШDÁßÒçò«æ‡: ðjGLF™M«ƒ²eÑú¸É°×ÆÚh,¤²cÆFÐ@¶)«B‚MÝkn_·•Ÿí©ÇðŠcx//+“6))¡E/?Aú0è\ã1 â;bóÁì™;˜¿[}ÿ«¨·ú=¢¡|bÆ&%j Iåg뛕çÉÊódåy²ò<‰ð}åy²òµó£ã•Èög¿Y7œŽìçêæ9ž£0 Àkb.iŽÈVþ.‡¼,|“åœq”BbW†Ø¼¾3c‰ø®¬åÐq²?Ò½ñÃÁë•ëÍÊõæ»p½qª÷0¾7Ît±r¾ o¤@ÏŒK¿ÒŸ±´ÿKΔµòôq›¼òôÒÓÇ©ßøúÔp_ŸØåøÿŒ¿…ý?êÿS}¶Êÿð0×Êÿ燾,ÿŸ{ýy㿺·³àl?[ùÿ<ÈÅ£ÝóÿéÀÊÿº~Ñ5øuû~6÷Ï ÎAã´,þ( (Å‹jĨy€4d¢;;c„¨‡È‡ÆíåzÔC$Ž($Ølqßœéf¸Ñ0£%‹[Ü;³8ÊDp’ë~~†eäp¸è”d]9¥C)=µƒª³>5.VmU¥æ…'êò¾yOžKOÇ8ôÜжA´ØX®òB †ƒñ×ÛÛ-¬$Ò\šô>€¸ ùiÌvªÎÕÇéˆó+žSú†2e6E'‰þWÛ †2G…‘ g‹÷[Òùã ‘±M0ü¿~¾^z¯ *Ækë5½‰èöÇCNTÀt¬š _éÌ€ÆükUŒ&ÏîDŒa ÛMc—·%“áè'7“-ö\1†Ë¿á=–¨äŸí¡C„¶…w_vǽ±Ê‹$zðŽQôÌpÉ9b¯†£Q2¾²‹‰´ÅÆê¥]&¼¬=t]±×»‘¦Ú)"“Š ¾ðÃFpï½"7áð>—/UÌ®.}Šá'¨¸ˆ>á9`à¼!ò+&â ô"²þR‹¸\Ø4<±X¸ië¡'!ø2zS˜«£).‹ŠÌár$+áæOÐäDÙØf3¹žŽ’5=O¼|ÛÚ?Ç© *;$®§ ÷§Ã¦y *Ú²¯“+èx½žVz°·ýÑOA¦“ôÖd±’“rLoqαÂN®m¨Hœ¶¬UéÀ6Ç6HJ6CB³§á³°å‡+ìµZRÌçæ¨»Y$óòÁheT-5%Ð5“çxŸI' ¯ÝùCo0À ÚO¨çžÿ$®“ñÕ¨w™8 yòÀ8íÞÂRMçBf×0H4ƒÐQ,ü¸öØ£J½È$íÊhC©ìß‘LÑwLö&²Å1Úо®%kÏc¥Q¢ «ÃúiÛ”¥€HγL—.¹%Zu‹’½‡¹ì¯þâÌ—¸œ„í>Þ û°j»çrelïux×ÁÓˆi¯PÞ‹ 7 S0c®œX»FÙÖ».Tô0’"è&^–žk°È½`Ö¼-Óò¥cLË4N¶ *ŽvðŽºTg¤°ƒ‹HaºÉ¯iýt¿vS½Ù…ZbC´Ö™k4Æžðúƒ9­Ä²=Uèç¶—ÍI¿¶Î¶çPy˜ˆ™%>’S‘&¦S`‘¹‘-H±µ Ü=“.áUAvÅ in¢eÚ) Ó2êy2æÎ¥yAÓŒR?$q÷SG¾Bç‰M¬–Ë_Zž³òžáå2—¯*3VÜKxåÖdj¨x­»rÈËNÆÜñvŠK^ôb‰ÁÔLZMyµçì5k¼CGä‡;èõ ^Ë…¡:S¨:´-ö¦h|ƒñn;ëØ±gF˜; xÉiI]yžxš8jO%Û}*”ùÕ¬90Öw·]¯ˆ¶cÌc7Âý§øßòõLêÿèV×8 ++‚вSÖôq`W–¶.¸9|Yƒ.ß²z i]–[ú „Y·ÉëÚX”¥Ø»{ÛmWer=û7æ¼ œZ¬ÝŒšGt> ¬! •^tL±(÷qm×ü/ÁÇ5«²»A×—TÉZ­˜•Íiœv†¤Ž'S“¼5˜èLëMOÂP  P^]MoQD%Ñ5ö(ƒg2îš*©†Or'›ù•Üj˜¨É,¹eA „4®©E¶€¶¦ypÑÖßhÇop²Ü¶'4ÿƒ7Í22¹Öt›_Þ€-+OñÙju8•ŠôÙTÍ£<«²Vö3Éá…ò¹ºô¿â"iuG‡)gRIuÀoóé­ëƒá˜–äͪ´!gMÐÙ‚¢YA'J%¶PJɨkŸ4R žaʸRÇr™rBÉPS†[æ,÷vp=—Ý>lc£èâ<ðÖ)a¯M¯äÚô¤ýÄÞÂÔÊ$ØŒŒÅ–Íx5ìo•í“tD ˆMç,ÏoÓå9Ô<xTY2Å6xTÒZÙNHINæ0ëÐ*–c‘Ëÿøòxò¿®â?æZÅüЗÿq?£?oüïTŸm? ⿞®ò¿>È%U-/þã]J¨wÃhHúñ¤Ñ÷(sý¡ü} I'3oÄÈw3r2…:W·+f_8o¼wÏba#\*íát_Ä<º /™#¼äÝ*¾dIñ%äÓ¤™Ù£äª‡A@?ÈO«vC]•8öM¢o+±ì¯ý&o3ßT¼×Œz>NŠ®äÔâbm+#ŒFFÐ ´ Šuñk"ûýXo¦# I¾ÜÁî˜;\á#¥³t,ç¤BF^9ÉS¨FÂclw«²­HÉ©øí}"ަxÀ_ú ïU¸ÃctyEmpÒ“ýqÀ>Ì'wq{‡¤?%ý¯ÖuÚ#YhßÐUhÏ‚¡=7³‡öÔ Dö^‘/tè¶xKŽmìÆ›9]xÂT »Ñ.ä‹Ñá“çÊ·æš×N3™GçOtŒ :‡ˆ~2uÎŽ‘©ûd.‡“A§©æìÄåž õ&ÉbS^…éñÄT‰%U8­Â©¾ƒp*gNúÈúÕ*œjéáT2L£xH«VÅ­­™FO2’†‹m­'h›@Am9-ÀÚŠÄÒ¨Šµ¸bOì^ÌÑ ¯… µ0wöŸ±}‡ª}?bP\ v€e‡+‡ª×uŸiÕuœD×K­Mü½V¶ Ѷ€'Ù·ÉÌ´Ñ•^Own\ÇÄJ›±EÝ—ð4罜‚¥Ö[?W·¸ neƒ©Q£ÆõX³0~¥=É÷/‹3eÊSáŽùT¾pMoÕ2€ˆQñ“ÁpúÁU+sà!ï¯.1~H-‘8D›‚¯²%ÂãBnHb±8D›È*$ñ>C9 qÁxÄ…ƒgŒDô°¾2ÕíwÁg)éºà‚±ˆsE"R´^oóÂU¼a”NÑÄ9"Ó+_ üЋ3Œ’É‹=”Šû öÐä³Ó”úD£Wá…Eà ëò÷¡üÝÒa‡é6#*pñmâ›K‹N|”Q‰2Š0;:1U2lqøˆ£—~ȃÕ*Á6JŠ´‹†E½"a¿*õ°ˆz!-ÜÒv§ûNc%‰DI±›b%_ÍßÖßu|=|ò‡¨[E+lGR.’¤`øæž_~†ðÍgá³ ‡oêÞúæá›Y,†S¡XÎU '^2†SŸe ­7³¤Fòj:×É]2¸&»ûàð~¥ç~Ø;u¹¤ lš9 µ„ö~ãL›«(SýU”)UÜ‹*ZJ'ðÛpò«Ú´^ËÊw ñÄÚÏÕÔä>Âõ=o.=u/åÅ‹²¾[²®YùU«@Ö™Ye/­BYW¡¬ºä*”5ÓΠ\…²¦©„«PÖ‡ e-§Å±–mç\C"Ë -eˆj“µt !9nCqŠGÏ=.?÷Ɖ| …QÌK+O±¦_¤ˆl 7ÖVä©äñ€b `º;ø>˜ÛÌè‚Í¡l 'ü½Özø*bø1F u8?ÈÌ™÷„1‚ˆ*€Å¾«¶Ùó_…þ?xËú Ú‹é…1¹»yâŸMÆÖ… øßO&ÿÛÎö*ÿÓÃ\«øßú²âïiôçÆÿVövöÂüo»«ñÿv/þ÷‚-œMÖ;ÛÁéx“Ôø‰÷à¯vú¹q,ùÛ*ë›HâU¹èvtÎe\t:®™±eìŸÒ¥FÙÕ¤­fN|ë”'SXž—ÿ\ãvý‰žë\-®• éj.. @N’JË¥™¬J©p®‹öŒ½ØŽ÷bÛîÅÈ`ÿ´`7¶—ÔmÝíœn”k"héÝØ6ÝØ^B7¶·$©´nl[ÝØ^%:{¼ñF)FÿÀDgØ-3þäFþ,)ôÇýY$¼Ç±ù(žÛÓ)Ž´ÜG• IE¹Á@:ð'òÒÑ8«È 72{ú­ö¬‘m§qá|†_pÜ… ¸ up€ñé{J¼¢.`Süúíy:G³b/0Áõ ·Ãç§g©Lõ£3R!¥lkÁC'–:À&/3³”¤wÞ>¼Ø¸ŽƒEG å8xý^-Òá/§‘ [9kˆÇAÅï`äìþ~Ý:9‚ßÓÚQùñe§jºá!Í0&ƒô'«HÛ-â‡\43B.š‹…\@MÒi·—ŸŸjÇ/?C€C$86A€CÓ84ó~‰l‡$Û†d{•òj.±JyµŒ`û†ö2iÎäüÿÞû¡[í|£1Ê ”òV+LÂóSÖ¤çåï—96°\>d¿›b„Z÷òî0ü"¼’ßJ}—ò^0Öâ;JvñˆÒ†™Žö|ƒV‘«HŠo”¬N>‘vÅýEIÔ¿Û( úvC»F£( ­rXG² ÀY`*EÑ´§p<çÁÓòæo>ÍŠ¬zDñÈŠæ·Š¬Ð~/KЬ°Ú;WøD&#ІMä2$ žY R<Ïrp£°âíçh,i‰¦ß°óÓ3¬*Y…Ü×áÞ™vÙ±ÖÅØ©¹ 4³¹i½æ…´L•"ì*³Ý™ž­º!L'm`Åæ¦p`Ÿ™YEbðrfž¬‘qÕšmhíÎ8´Ú³­Œàõ;s­öBC« ­ûZíå ­ nZ¯ †V;>´v3‡‹›ÈÙ»±GßÐÑYö¶ýçðP¯I¹±á›˜P¡¼[ø÷F%]ÕæNQ+°ÔðÔ·Xµ8#l}Éa™ˉÊ|¸Ëÿ|<ù_Ÿ­â?æZÅþЗÿùmò¿îîíTŸ†ù_Ÿ­ÆÿC\<ÚýøOXœAÓ­µöË^ h˜–wÓ59oŸnéÔj®ÓB-ñIÒ ed]E”’BúÝft¢Òû"Ž”Æï6'Ô”ËÇ\j±O#.Š3E¢’@È0Qî|õAfˆ I×cd]^ò×"YMÞVÊO@É[­§fîå±À·8@TÆNƒ¯$wì~& ug×[Ò³’–"Z+ggT5Ö+ŒJÖÊ” Q ÞŽªÚ©|««ˆßGñ[×RÙUãâhÑUóvJ¶Žú<–°`Öf‘ŠñègƒeñAÅô+¿F'¾÷n{P 7!û…7*ˆÅëâ`}½´YY+K¦ð£ipa”Rb)Y¥qX_Ê·BÁyÎì{íŽ4ÉlxãÉLdÄo1‰îhËí0|:s ˜<ÅÊC”§…äZ¶„ÄóLó>hÇç^¿ÏñÊ”Ã%½%ŒÉùÒ½BÿtŒJ&½«5Êeø/Ï5æ–“³˜¤ÈM[¬§/NE<¶RoUÝdÄø´¸@p9/°¹±Ü hèŨ}~¶\ð¥äŽ?Rv˜K“\ä[iá} ¡&r–pIrŽÎ¾½‰3¤ÅhÊ8óƒ!u_a^èG˜ŸÁSÊ$ÊEºݠƘ#n ´Èì$bN«M,“ð_cóZXÊ’-lˆ+t"»Œ½ü`½¶^h°‚èÂXŒå ²H>ÍÌÔ~žß¢™†ppëV§ðsÌÖ‡“aáëäC¢¶õ?Ž3„ÎJ›9¾ix^jïr׋…‚…2à#&,²Fÿõ0[ƒÝ&¾::à9[žyR´à¾žCž`KÉ»Éõ¥ØØVÂËG‡Q¨!í°!ßIrè™AÇØV$ó³¿ü¦êÝ9ìÆ ÒE˜¨Str1U›’B@D¬hv¥¶ýƒq?|° áFk;¡ý5Ã…¼´Õ›‚:OðÙ²q¥{8²)Ö+À‘LÀ‘FóµÛV ÇÔ{š;𼌽£^ê & &³”«ÕµZ¢¯QÀ¤ø¹ë,3j”»G½¬•zebã6¡?ˆßÅ ¾Çiù lmm•95+¬rèÁ5Ùà¯U9Ž!#xîäšF·×+®;[l½Æ7îÊó Øâ÷Ü™šo´Ï¯%gò`†÷o×Éõ Ðù-•ß&„©´¥ŸA½õÊŠ?ù˜áÀ"-ëg“᪪šRi@=ígøô»å ~ÑY5ê'^OD«^@…¼Gð¤Ž:n¤<‚oÎ#N纃„ŠžÌ†+YªyÅ àm÷:A¦´°ÁLÌ&C.’º‡ QZžfÉOP“A²9ˆ¬ôj=/ñÚþ¥w;uòÛÊâã)=Ù½COÀþËä¦ÕÈ#x{ðUv•Z¾ùr9—äFp24jU[œÚâ‡vµ.®ÖÅbÕ ––0â’­þ·Xý?|âz“IfÕ¶5i䢶Ö[ðà Ëi…åô(±œ@3²s¨+‚ø4{Ö÷lä§Ð}• ô¿1áG]þβÚS–,¨PyâØÇå`¢œüÜVÖmþ”^¥*ÔL‰½ãèPéìÍÍìí CeÐ9owZµ|Ô >* >Šç‘™^œæ¨°È¡W$'½8Íxa‘º e%ÓpËBÊÿ†‘¥(Ë¿ÓQw¬‘à—9K}º¾Ö‚H[Ö‘¶ä,•Ýœ{›£Ú¸[Íßuëï‹Ôìæ¥Øƒk6Ј ­åSÐÍ{¼‰ÐÄ 3 ^K ÓÒ² […­€Â’ËÆü0¾¸9ð«ÏVøos­ðèËà?Þ×èÏÿ;;Õg{þø‡‚«ñÿvÿñ¨ÃŽº Øi;Çuü ?jͳcüxx^KW)ˆìð¿ÛQÇT+tG‘3cõ‘Ò€#¡ 6Œc]w‡ì æ¨*aj3\£@”ÎÁ[$ñ‘à‰õ×,j%M> (©vÈ/¯±“Ø8#Pã9†*)ëáa÷Ý(¹"?Vì\ ="a¦H˜Tñ÷GG‡- øxÔ1ÀŠpaÙ:3/GÁ‘†¶• G?óÆÚ5d`¤±ö,–Vž»no$Jµr}zöFÍ@L>þ —[éŸÛ*DÊuô“¡Ÿ„ØGïÀg9 ½÷_Wû¨",¥a^ò}1Þ¬wÖ߯¯ÃªÓÇsú¨J1ÊÖzß{ õv,SW9§C?Ϲ€Æ]ãÀG¼¡’`Äa 7àyú‘÷ú‘;·T}7ŸêãYb,Ã0‘79sÏ›Tï_X@oÓ10¶7O’.Â)t’D!PéË~71AÃHÄ{·ßOX¨)‹ÓÜe?¡>*µÏTz°Ï-¢(>•¸Ú8T)Ã\ÊyD”´K:Zé:MUyžôª`¤Ësku^Û c+Ñh¤…–&8”[ »%–ƒ·$²—²‘–°„?Õ#¶:yBi“‘3œ=‰,+)!©>ƒê…TŸAç 1¨>7ƒê[ü|È Z‚Å|R >Wš±Œ(îöï>v9˜æ:¹Á0œ1m8mÉj0O§ô§†áÑð‹ÚåñÆ€sÙdN— ÄG=A,Ð,˜G7Éàÿ§„N¤u/“IÐ>ûio‚–í#½…šwžÑ<›Žl©%CæÜÃ_8~HL‰I‚»çI/Q]ñÂð'ªþ U›Î•š12Y Y ˆ pfвf‰ |²,öÉXâ Ã+©:?Óû¡·Sø ?üLß;C©ÓCÇɤGQòy~ätQÄw»é?S{¿ªõ&võ¦a9ÂÊ6 ñËñÊ6V'Õ¬ãÀšIþ(££»H¼qZÙr©ðhÛk=уÞ]‚gÅ›’õ"[’ÖïdÈð ™z~[tY ÖiÏȯü°N;ίتú¾ÃÚÃl•`n†µ·$­L†Ù8]¨ëŸˆSA¡YšŒU…¡£i©†è)HnT¯d„£NÐiæ?›@bü#¨e¨JƒRý¦ý’PN) ¦Áý·­£7í­5jµ†yîˆ[6ýÐÊΦë¨AžÕz©Uߨ¬ysù Kga,G‰¥óB‚ 9f†Ý›÷ÆMQbêÀp³6–CŠJÔ¾øÀÑ’¥^éfÇIîW«Rùó›:#hm¿‹0:u̺Ït<¥aÜ“¨æêMî3Ç‘v¾hmTž3çÃ>jGGõZ3Z¾/Ã.Z~'Zž†g´ünJù£”ò{)õ?nDË?–?†¼©$õ¸©z<$‘si‘Y‹¾ýY*·_‰Ïx¸â†:úü/EŸoÇŸÿ5úü>@ú±Íüú„^ŒvÍÚ™-n‡-nkq;³Åí°Åí-nGZ©ëÀ–‹™ÅS• $§0Fã[ÇóbNQ)ù­íÅ%TñlÀ-ž‹<Ó¨+·š±(ðT )æFöC8TRø4R>©¾|RÇÅObÉÖPG|ü¤€ct>µð“:ùJ!‡P€¡| MkÏVK"R}aE·SÞÖ# Þ¦Å8%›Žw(¬¹þs´Ì¸ÏµÂÇvÂÇŽ <¦Æ’³àÛEš<¦`.pnßr†–X‹¡'uÄ? =¡óÖõ' •Ÿ,…ÐZ—å!õ í °"¼$ÜÖ%}xç-þÊS÷@“uà ÒÉFD˜ æûIó˜.{º±€à‹7½!}”=!<˯ΠGØEš¯°-õùä‡N0r¡|œ|¹¨§ÉE=”‹z¶\ÔÓ增%õl¹¨§ËE”lL.ê³É…»;rø­äâL¦C³ŽõMêG'ï£1².à>ÕF† -©¬“ùRÖÊ»2¢!o¨’2Þæˆ>žœ=‰zÓ™¸éIÅ•ˆŸ¨"üf“WÖiÍç{Ó-Ž[ .ƒ4È(RG€-;¥ò_·7éq *P2&Õ4›q‡/(O¾Yl"Ô=©¨—$Ó›¯)Ò{Á Fq^2¾¶Âs7*›ò\"ëG‡îÚ«{ÒTÔ1ì7Kî ÄÚýekñ…»²šß•6H)“¨OöŸ”=nÉO¦e°Iõ×ü‡ jŠddŒÆcæíNQÞò„Š u>=ô™¾ò3M•…µœ;Í;ñH†6ÒÍí( ˆìu*d} ¥¨µ|j„à˜M4Š–K3m$?M´¹XÃÌávö1‚øaMÈUƒr–:í—ŠcˆMP@[…±åŠÛbjú3çF±ÙÎm{ˆ4i{¡¾HÛÓ¦¢YÛþË\3=‹ˆÞ<ûÖü­·5ÇÍ—øý[ó †þáSÃŠŽ j}‹m¢ÍìûÝ·Þ~—¬ƒ³|¿›Éì †µÆ|+^W‚PýˆCõJjœ÷Qgæ½Üˉÿþôhâ¿w¶««øÏ¹Vñß?ôeÅßÓèÏÿ»ÏªOƒøïÊöÞjü?Äţ݋ÿ¾ÐI ¤ãÖÜÑß!r\,ò{áMê\<Â[õ‚ÒX Åw7·¿ÏènîÖ±ÝÚýè"»/¬Èî‹ÔÈîh0wˆ“iâ{—Ë¥f –1”½y(nz4í‡ËÈ,Fµ’ñ"_>ˆFÏý7 ×Üæ|AGû\Ÿ®ò²¯­íŸi­×׿¨¸ÄèöÉãp‘d^eœšÜNÃZÌüJo·_};]¯­E;éú×-%É8!vrôr4ù{Úƒ¡M™Ò·SèZåg«ùØ‚¯¢G7nmÀkPydæzÈh_hÌ5MŠIïâ«eõœ°7ù4~ß‚•©†J¶(ÌOÇöaU02ÂH•¤{eó• '¢áy2Ö) Ñ“¦Cñµ_U´î%ÌxÈ®.;VRUBì?F.d)îÒOb ÄÆ7_eÂ5]_?^¯™¡ÏuÌÁý¤nÓu|ë"oªÈ}©MÉæ&ö| £˜Æâ§›i¿oà°Éá…«,#Há§—Óuýð¬×ÿT–YΊ…Ú/!ÒÞâv[‹ݧ=m‚Ûc noGä/# î†d?žß’¥ýo¶/ƒ.e\'ŽåǪB0(Ìõ$jöƒ2CöØ„[›ëh{$&Û ‘<2c]to`~7£j‹j;†ÁÔ²ó>#bˆ äÕu—˜~(µÆfGs3>÷p@ëˆ( ¿/Æ$!Ó`Þ5ìdÁ,ÂQw$¦’†u0¼Äâ $-uµHÇ=( 2^küŒò…$Æ‘7•H1Š ‰Nç É?¶a9P ~Ub QT›D¼D˜ wé\ªpx ‚†ê\Sâ: Ê1|t'tW3áú)¿woÕZËqÈÀmK$fe—ÞŠÚ3ÊÌDã! Vo2ŽOì:‹F÷r\"ä»î²A_ôn»°Pñ7„ |¹Jî8ûoZÚwsjw` éÿJ4¥4n—Åç=Þ+éú Û’  ­„}/@IP'/ŠŒÀHÙ@6Ž„ #ÑžQÎRP$‰ÈãËL‚Ö^ ÚB‚@p´—!hŒÀ‘ Àaão¬à7¾ø÷÷¿ñ>„ß8ÁoX¡v ‰C¬°8fÁâУ©$Ç/ÿHŽ–·ÃøØý”Ð qHÄ$»/‚ÍyÞ€u¬°9~ lŽó£Ã‹ýhù¢X)Pq(Žðñ$Êv(\’‡wêyÚŸuµ•Ç›ê²l3ÒH´¥8â„u =$+P¤xÁìûy,M¤Ý!:±¢1·Å#ÛòÇ‹3vÆ­¾5×këg$oT¨¹^_oëcààÃRÑœ#)^¸hÛ^ê=ÿ³ ÿä, ?–Y;ëÑ×âÕ¢9@îe«Œ*®sK© ò *?Š><àfxÍR¶s®%×e3×Úeù±ÎyzÓ‡"ªJÄU´Æz ÖéhT§(<Ö"¥`Ôè'b çiÉç$Ê׺aHBϹÖÑŽ”åɨ;ó6Û¼B’¼ì^ý…¢óYZXh³ü™¦_Cô3Òžpâí’Ãx2é]­ájCåqUÁ#k5å« Êur8˜¨ó#e €åãP®`J¾Q±ÁüS‘£;øê¥J²Î°€å|@›¬ö©ü@•‚Á±æßieRYŽå©žÜñIŒ{Nþïõÿ£zã'ÕÚŸ„´ÃÝÑÁ)óKî±-‘àÈÙ‚u@»5Tëq9}XÙ­ŽÐcÁjœ6çç‚~0†!qwØ?>?<=“÷ïb½` À ìÿԬg‚¡Ê Á Õ;5Œ_múU·Ã¬¥ÛtU:ò¦×£Î…ë\ñ‰(¿ö®làˆjÍ—ðªtT*ÑaGa™ÍÉêˆdÆ qXNj<Ýd¢¼==­q2øÌ#DI" m…–$ëé£%ð–)å[Y&€+s~»rŽ’Oн$>^*…Ȱý çQÄÇKâùœÃß*EÝ;^Ù_qR¾w)Óà= ?Í üT ÷iVا9QŸf}šó©äÓ¬ˆOs>¥â=é„Y£²%ã+((ÿ¡ï *@‚²€ æÃ ` ,¨Ôƒƒ@9GÁêþ¡.V€PîMùdžüú]{g¡øž‡57È)بÀoë«*¿Ïâ”ÂwÂZÄš¹šëYŬ×9-t_k2÷ó¢@ªY±œ2`™Ñ¢v䫘 Éinp¦ºdpݰ¯íÏz±þÌ*f½.ÒŸu·?ë3õg}¾þ¬ûý¹œ€Ôús>&z´ÖõÓO…­eA4}×L¿,’É 2dâHý°¢©@MžJ-ËÙàL®ò̸NºïV˜NY0BY°y´ÂtZÓ)·r(,é$ÃâîÐ)†ç4+œSˆæ´sòdCä/é´Ë›ËIÆLÎääÍÙ–‡Ë¡md%O“1Z˜67ÉÇ GŸ?ûá²+"ðPN˜h8Tªèø¢® ¸Ëˆóö'­'eþ!¶¢ÿŠLO)o-±¸U¯VŠÍ|ðUiky ¾* š*myf“ :ÊužÄª >‰µÍÁ¼âÂåº=Ætô*%Dxx%Lw=*À«œe12ÛìK¿ÂCÇ8ìñ*¶  { ï [|ëOœ{AÂM¯°×ÐàaódûIÀŸ`r$C‘-Pµ²´vE÷z¤-åz`àHk««/ý³¯¯sb|EA«× ÝJ‡ëàšr!ÁÏÚèãHN;E¥`yHh"LOC› qÊeÖ/þ½_"”:&/±³-NöÙí;x…BTü[;&NÚ)Oš‡i¦cÁdsjy'm´vÓÑ3µHÞ»¸MSa\óÞZ„éÜôí”¶ðÙžef¶[TÍn‘SóÎÇuE±šÒ’íÈ—|ùý’5-¦N¤fŠbUmÁüuÁ|:·`îÎ)˜íP0w—-˜Oç̽Ál»‚ÙŽæ^JKžæ ¦­Ç34šˆ¢\{à ––†;ˆÁ/R¦°]Æ ‰¿&cr|û€ ‘ə̅P>€Ó‡ÀHÒçxËzï¦~ëXô{·=é‚Þý4ì]Ãã×̦ë¤_! (O<ŠRé}ônzWÝÁÄìO kžEÅ”PîK‡gué%%ÿ¬G ¥N+mó¾ÛNEÆ7›eÖà/çud’YgAXË€x¤Ã» °§ÂžvAö4–Á¦Ìþ_1VE°öµ]œ‹(Îq–‘èG9VŸYž°§—̱zqŽÕÇêŦìº:X|FÿZšWqŽõ‘e…Re¨A‘¦Ê•O6E%éY[§š:BZv‡t|›ouQDm¡úHÚ×üçcùwd&CÞÔ&:ŸDútò´¨Ð·)/Q°,Y§¸î  I‚™n«8?õŒ¯8]x<ƒ¯°¦ý\tŠ<(×õœ½dÙ!…ph¿|%ã*;Ú”·H¿à÷â½gÌ+±é—åà¾^¬p_ïç²ñ_?^Wïrü×Ýþãƒ\+ü×ú2ø¯÷5úóÆ¥²³ó4ÀÝÙ]ÿ‡¸¤Þàà¿TKq£ÇdA¶F°Zw¶*­ˆÕîF½¾¨‚,й.Â'r ^cáÌDœ60®3ÁµæA±B§I\ÕYRY`‹Fç±G*ÏvÏp8&Ï3E‹cŠIü ÏN½ Œa{ÒÇðʯ&b“N«ž ñf}ýêWƒo@=<àçëûB8l6Ú€Sh¡OTÎk ‚ã`kôM”t¯¿†Q‹x80üìâÁ˜øeQyõÙ¬ÐwðúÊóÖUQ~AÇ`d_¿ÿÕ&‚.Äó»QòI‡gc'AÖkÍß8šòs0G l”‹D a`øý-´ØÜ%W“Þ§¤ÿu‹Àм8o™ "þõ‚êú/v'ûWˆbæô[qÄ,¤»6{à‹'†Œ'RН·ü§ ×…N/­îés`¹ÚO/u¸*ã8}6â-øgê lÀ5¨k0$d…ŽËŠºMFGPphüÝeCœÑapF¶‰¸¸ejÌÉ÷¾ÁØr”Š!°‚Ž£ä;¡ŒKä¦ÏVÚ´Ž&X›MұѕˆèÖ۬èrŒ*'u\¹i³ÕPQ›†Útd›U¥Bh¡˜wýdh†s3I¾Á)L‹bc{2Tê}ìmöúøìH“a®‰LÀI½DeéBïlÑÇD¥¢ØLðZðÝ¡p+üÅÞÃ_SEʽ59ò±jZ™{ZÜ)߀F@'‚†:"¬žË¯’}˜pH%_ºXý²®÷êô¬  1â}~?öàï§Ïù%C=]¦\2 ÌÅKÀ"‘òo¤Ù|óÑû×e5£ÄSd& ±þãüo&ŸªK!ñig)$>í¦ˆ].‰”öøèŠëd0œ‡IœÍsäpÔC»ŽÑðÊP]iܯ{7=ÄXvŸÌYó>õ¬·Ò q—‘£wAÄÍy`‡ˆ2»`C(lH …Abû‚ ížmHñùCæ›5Š˜Ç_GK?ØÝ:9¢˜oøÑˆífrè½pÙ;ÝWÆß, bÍ - ãW›¯­xLütT,X4j—M-éNŠO3U¸stñø[jÀkàŽZ<¶xùሮ§;5(6“Ï`%®Ä\þbÊ/ßQ9€å aÒœ5Ò6°0Öñ òç%_ö˜Ïpßwõ‡;¿DòClúN9:D‚HEŒB÷è†Qf-àîÖyvûà8\<÷táSÔ"P?pÒæéþ¡vN@ìdØ¡ŸÍ&™©ƒ…¹ºŽ¸ìíf8>‹7s0kgš³Ãïy˜îž‹ï}íÌÛlÎX¹h*kÒ÷…}É@ÛÕ*Áu)WÁè (.>››ú—¶ã§€ÍÒÅÑ%ɽüh榸—Û¸ÀEX¤¢ô8l»u"Sž5E%ƒÈÐ" ¹[aÜÈ­¬jÙ£Åu!p¹õZ j>¦‰PŠÌþ1œ*)Ú™ ¨RŒ¤{¸ÔoeÞdºîÒ½Swd«“HCê74ÔR—JE0l‹0Øid(Ýa ]†©¾ñHÆž 4¾ºNúò̰ +)õº°éñhIúªÀJ=‘ì‚–×AëRT·=Æÿ2*„6öXݼÚ/ðo"Nà*ZÒ}@ÂŽ´š¢Uß¡,æšÜZàsÒŨ̠H9\·¬Eê,üN5_»5¸ù_ö׊Á]OK5sZB€;[.Ñ^ío I)ÔÝ‹Ÿ‰uê“§iÄÖ˜,TI½œ×IÁy%ùú l0w^a4:¬Z„à寳QìLk‰­°vöìÒ¾48@§ŽÐ2Þë†øsç(ÚœklGÂÙÈvgŠ䥴r$;ÉZrs |똤. ;|«’ã½#V=µòÊš®iB]ónõtõ)jŒJ([²ÔA²º‡x>^Ý¥TJ)sjPÑ©ÃäÒ× Ù’0í±/|¼”Ÿ”r ‹Né”!çŠëÀ^Ú),’~aþ[^mÉ…íÖfÕB.nåH'ŒjÑŒöG´!Á6¢w%¬¥Œ“´Â©‡/H“mÕ„–"‡&û éçG·ø×Æl¢ô·‘ în’¯ :`«!Þ– yÐÿkrƒ‡æÇAšjg½õF}-äó†/BŸÖ ´Õœ…²Ña5£øV°éâ ƒß/@¼µM=×쿸Ɠžk/Ûâ}Ëðh|r4øƒÔ ŽõÉY?!Cäüõ â]-ïCåBhð»YBÀè±b*¯þ—S%¯—%l_O]IT¸zÈΊÝ2¦K¾ÌÝHCËM9?ÚcVc?0?®ûfdzpÖµ g€çŸ †_ºÃ«Œ ¢¸é¢á7ë5í$Ê«DndÎ|ån`ÚOT±¿o–Αè]„³ô!” ïÛ£±mÞw Ó0èŒ hërd ì †pWEŸÀ÷pW5ý?{ÿz<øÏ—ñÿ‹y–þŸ¿ô£ý?jõç®ÿç/^¼HἨ.×ÿ"^í¶ÿçÑ |M ªz üáîãЩÝ8› ñf_fì&‹ëщðzJþ­Œ—Ú!á–¤ùu‡Ýñ^FGè“YÀ³)úŸã<ÔŸÜ^°?&z@zü2›¦_fAO]©T.äø{>„Ÿ¡CÀ°O¡R•C­ ‹+]ûLoBå[eÖcæy§ön“~é¶ 7‹^Ýð^pÿ{\iCúô«Y‹|Wû£^Cm¿¿Œú+¿Ù=ì^ P°r64+òøq64«ðú†|ð\ ‡ò6lÎæmˆsÑy”èÍiÑ+òœÂfñ {8—0/1/°OI)½¿ªô×ëRJ§ÃOð¢\RÈ1lÜÁ6¥;Ù‘~ÃÍ௛y‹íôWlo0é F›]I†Œ†}Áâ>òxBòËÑ›Œø¢òw_½›tþ£ò=©ÍÓAùÍ)ù9Æÿ”ÉÞ1³73Ìì2“×}Ìâ M.ÿFZ9šdÇ÷[²ß˜ZÂWv0]ü¼X­¾nà£êçP»V#gã_6cí³"íeE*Ò¾Q–ÁöÒÍ!3ã–/Ÿ&¦Ño½tƒðq¬·åÄ h÷i¬ÕX‚–'>¿)T™iRåÆçGQ@KíôövP½O7{iÿ† Æ˜×Ö8Úú¿ëÇ¢ÿÛ~¶¹¼ÿ/äYêÿ~éÇÔÿ=ÌêÏÅÿÝÚNãÿV·—úÿ…<¼Ú]ýßA†þo¦À丹l5  ì#ÓL¡ lrÐìR8«6Ð!àÃk±½¥6°{üÚÀbLŒ7íJ™ÃˆG˜(qsÊPâæ2”ø§ %^ªµñƒÆÚîœSÅÚÏULº#è ž>´6øqµåjÉñÞ‰lAV ðÕ·gÃÁXg‚ŸOÛcÔzƒËšS—ÉTà÷Ó¢¿î †Ñ˺✰‚ÆéV(¦BpŠc.r^]é½ kÿh ?«Þýw䬦¦XÐ÷YP ¥–6É£C2øÓ ó¨Þñ~ üpËþ;zÐ,ñ›KûÏbž¥ý÷—~ ûï­þ¼õ¿Uyþ,ÿ±¹Äÿ^ÈëݱÿvJÑi»ÖêÈkE«ýº£mÁuüY·ÍÁAÅo&¾&xW]Z‹3­Å»¯kíÚ®åÛJÓ’¡‚3ŒÉ8E†E™gqžvåz‰™Ù´Ü9í}ŽYq¡nÐW(BNúWÖGR_݃¿€X£o£q|KÊü¤ÿ*AË\·ïšOËXUcº”!ÐëJÖ/à ŸJE'd€7}wE´ëyºQ?=éõ"¨ð“©Q/Q{€:SâYÁ«Þ²²†"šLLŸ´ž§Ý¢ qͯÝ‹Q¤á¹djMD¿•aÈí˜2å(Ùˆ7ÊL_OMЋ^|ëÞ­ð!ÝÚ—þóŸ¨wðÚê9ü*X ôûw»ÛRÿ`ãþ^»óËÝ&$wTJÕE{[v{»!:k0ÕÃÇ› nüý΋輚œNü™ ÊéþKðGÑxNØxFÑEuV~ü5º„î2–»ÄLJÐh‰Ë£üoŒûNÔlôÖ)ÛU‚\8h ÂV“ê‡X•u‡ÞR¯ÊNaâµóî"M[i¤ÈT›ÕˆYŸrª}Ü&7ÏT7×ÄLÙS­6+ÞNî·YÕ7¨¢²Ý ö*äçsy3ßµœßÈ®ßŠÖø¦¸¢Ðï]3\âÊS׻Ж8«jvGj¶„›Nߨ¥còÅÓH¥KwºÇëN§kù§SKdÖ¢mÈü´,ãµ[’\„x¿xK’—í«LY€ûì©HÝÃ˺]RÒ*¬åÂS‡pr¿ZddóÞÛ³úÑ~tÜÞßmtoQꟾ^‚×s¸sE9‡µ7»Ã8Tïn.÷åèô¸³Ö^ÕÛoß3ÜZ­³{„†TúqXæ]¦^Žàï£}øý}§ña?LÄZ«Ý¹¬ñªu†?é¯Nóþ ŽÂÅ·÷ÔÚVÆÄ)}å|éõ3ôx¦+§+{Gµæîkòl½R†Ü´Ë5#ÝFÊn±ŒQuO„ëµ½²í¦xP·j‰æîgaÿ}8mŸ¶;ðâY«ytÂ?ÕÕë^¹èvsÍD¯¼ ã¶í~H'^Ú·¬€Ó yß•xÚ”Å]Aï|±û„¼þ ûæø$¦| s|S€÷(dI»"wc|ž.[·ÊfCìÿ=U<åÙZ£_MYÉç™ââù%?8~ÉÍÓü/YÑ6R»ò§$gDÎ@ þ„šµSîì­ÐìÆiûlÃèÍŸŸìQÈÂ5 Žå«Æ|ƒ~_>tlŸ§-,üLO[]/µêÇÜf z—Z pg[¢ 2Oµü»‹ÏïÍ×]¨½ÝÛsýìÜögñWžNÔ¨”‘/He.TíµflÏï­h°*IFN‡ôz¦;ŠQÀðÂs¢$ªÐþC/Èiœœ;Ñ÷ur¦Å+"I¿{³tƒc}û@¢~RfJò¾*'l—%TñƒmÁù8(ÜßWñn—ÑæëÉLÃ"ÎÉ)ÐîTOõßÇOTS,Ý1ª¼"Ä;c,,š”Ä7R4\ QpÑHX§ØÅîW}a™ŒIÑW ¸¢ý¨+ø_Õ]”211 Sй¦ZªÒRÞ¶¼ñHªu°q°tú&Á›úN%A´÷'÷[(HI¿4¹Ãû£”p=sº{ý{ýÛ¤ÿ× ‰Øí³Ë¬²×)aBv]Òµ@?¯_È]‹ï©”ä‹õ4%ÆPOé‰Èé~6¹‡˜ò˜²«Fm^Pø‡º=nx{Ëke¶…òêmtú6z–{Ã]È à}^o—â¹Öêvä÷Gºm8LYO3e=Í”õ‡gʺŔžž.)6¨¶¾†­ÛWÏ{¢êg´TfŒC¨2¢“¶ÇŸ!=’Ø\Àu4Ê_›-ábŒ®7ÒíðÃÖÖuÇB7 Ñ·÷óÙ8'ÉÛ¦`cûa-ë¡á9f«9*Ñ:ÎNë°­ÿç?N¹z©²Ó,WvÈø„™+Dyës¯Ç? ¹ ú†pe9n»$6]ªŠ“ÚKíÁ©WÍáo&»Kž–Iž¤ÿ¹Ô^jeˆîï@ 3Ì«és¬o úëÎø ¥¿ð¸\_3Ç­[3 Ic¯|WN~,q„Ÿ´àk–¬Ä:Q:ï 55#ñ=©AÜñ,Ç›¯gG¤vL¶œ@ªÿyµÄÿ =?iü×2þó×~ÌøÏ‡YýyëûÅ‹Íjÿ÷Årý/âáÕîÆî•2#?á£6q{ð£ÖÊ7±ƒÛ88 ?8Z}Üa¡" }Ž)"¦ ü^,Âs–N&º¨À禆3ãñs Æyú:¡Ã9Ãí¨w€!Ìw>ntOCÑ붯=æÇˆ†q·'ƒ¸Tp„m§"/Tˆ]•ª*ý'º @»¯Ñ¨{0J®ï‰ð[eWà«û3%Ôp©ónoEÄŽ’7« L5ÂÛ8•ø-ÌÈÙ™?­_Å×ÉeSóS‡ó¡;» ;AHb<Ý cìN|7¢ A÷ù¶Î×{9ˆ¯}T\NñE¢ÜÑu]!Yâóz0Ž+5î“o;éÜÊŒæ%§scK° 'þ2éýÍhįù·¨T?âh¦ìSÝ Ÿª0ã«·%¢Öå ŽëH=ÃA÷ò#­ÒÒÖŠ7º€ŒÌÑXEx8|¢Ÿì®5oGIrÇÀnKܧ<¯ †yÀú¡<ï]öɆ&Ä¢´WÀHð3rTöYôÛîóN“[±N ó ;%Êb=TÜè–J½Õøã-Lü'¨ê3ºüß&½+vú—QÖpf`-×½÷ùnó]¢ñ8¹ÜÀ@î/ Ðu([*|QFŒAÝn€XNvDÓ²¹ºz:š\á/ÇeÆ6bãõ“Ú¨]úì:$ad°}bÖØÅÝø|½y\æ_ÿпî®ÿcÃZðƒõ*uý×*—qò¹{ŒrÝMzØ£ñ×.ìAäJ}”¿Ê¾a=V÷DßÊÑ|ò%Ž>õ_úƒ¾œ‹ ´?PÄë^eãV€Él¯‹À‹g°‚‹8îkŒÆÃÁ7æ0·èÐ…‡æJ~B„"5Ó'—yléŠ×"æŰˆ‚Ý»õÁõºKiÙv*jfžAv}LŽõÀv2ÄN̸±ëÈ9—³’§A½wŽ>¦/áh¢“u0„£qÃ-Ûä‹czÕÖ$ÁY¾ƒ¹ë€”ñ´S’ Ür|pi"¹#0ãwaÚà˜¦0. ÔsÌZ}í8ì ãï/¹ÚUìªt³œF>jWr'~G…¦ò¯Â)@Ô•}Kú ]uåÊ'î²£Ér‚Ot¦Ê”ÂÁ chÈ4ÆŸ6:SÔq;aÔ™6ÙTR G8ˆ2l¸{;˜p䜶÷ô㯵Wñ]Ü¿¢ÄM+J³Å÷RŒÁˆj£¨7`¹M…ÊÆÝØ·ê*zP´V=ðMÚÌ9ñ-×=n­®¢¹µ¬LK‡­²ìaÛ&©,¦@üd¼;î}KÅ©Þ WVªÜè#‰F7”4-`BØ~ïpRÍ òšdÖ"gKŒ¬"#ᦉ…„ÂõF¤Æ ŠÝ#“šèz %Œ‹`ÜЫ#;dµ@œªY‘²Ú–+ÈÈ7\à8ë¹^Ðüœ;ßU6‰‰•W;Í£Nãüñwø£uôî~ÝŸ[FkNarÞ-ñk˜¡¡Z†åPª¬±©”ª%Ïùû®èe“ªkš½l. —3/;ÑÏÄFáÈâøF ™à¯ÈÓ–Äb,¸‰»(mH„R<· ˜™4;]8cŒÚÒd4¡õM—½¨úŒsL8„"jÀæ­Ó†`þYU±­h婦$…y­qôøŽ¶ïì˘™SFk{X_jÚ‚ßðp|ÃÎh\£h*Ö®Tøï;©‡Þã:±åÄçû‡ØÈbÃâ÷L n„ãÑi÷TÊ„³`f’jžÎ»=º2ó6"ÜnâßÜ#Ì l‡î$À™×ënP;m«Ø§>J{1|=ö•»Ú©«„ÐeÛØ!ÏaᢹjêÝç]A@ar1aÈ…LóÕÄ¿šð-%î¯ïváï#‹ð¸FÔ¤Á·—|&!‘•ݨl3ï†^V«¡ïÈT×oGý$jv‡ptÂÙqTo=mí·;»âÏK_ŽNßg¾gÔSYtÄôáõê|+ž¾Aáð¥ZÃùÇI¦7™°åiäHXs`ãÂð:øñžþÄ'Ëó§Ñâ÷0š§uúº]¦í-\_‹ðæžZ_„ÿþq Pò`´ÿÌî{"’}#Ù͈÷z{OE¾‡‡n„ÄïÿA?:{©yrC«·³*Ê ‘¿OÞž{€ F˜6„>*#Ûë0þ2¹Ñx‡>÷`~û 5âù‰õ¥ 1m¤ÿC§ÊÅOEïOŠÿ,]ÖÅ'Ò„Ë;„ääH‡p%2É™-µãx¿ç zb/⛤ßÇïoïe¹¿¡¦óŽÆØ¸s‘Ë"ãrM")üö£)]Á ëK R³¸iÝ ãk¸(aI®ôÚsM•£hÕ#z}$eåtø¿áJn…PÑ“‡º–©­«ìBÿñÜÐŽe6Œ€;¼Û x+·?B¨ýY;ý™ˆ7n¶‚¾šâ>¡ÃÝÿ!ÂÝ;{2Ü}Sý߉§Ã(ú¨urbcð4ïÕøtÊ+;ãGÎ ÷EIä”ßÑ¿~ò{­-+ÞF|€<ù•¢ÁÆ[[z ȯl{Õêãÿ¡ççç;Ñ~„ W(ÚÊUwÙE7Ê[p Ãäæ&IzƒíaJ4µHc ªK…½S4¢Å&Åè2¥îôñg¸)¶x£è Bs£Zkââ¢$[ßV[õúÖjÓ7íž6~xüéM'gÛ¨ ž¥íÛâÙô"Íââ”TÖìV}ë¶èñEsX·Ò®8[óÇ.èÔ¬ÍûŸ­¸ç.‘0³ªÌ„œV¤Œº4îq׊¿5®hVRã†u´m}I¹Ï5;“Ÿ682ÔÕÀàµ÷]p¶ìô†Mª¯å¿o —¡ÍbÍúá²t£ûÇ,ËÇ"-¨ ¤%¿“([üÒS¬F|57L-¨Å°ÈYpZz8K<­ûÁù!ª~@-É¡F%dÀ³‚Ëð¿P•uö¥%Cs…ð;yê3ñ¸¤KŠß¡«óÔS|nõ{qH\SôÖdõB½M!nq¯œº¥ENè ³¥bǨPê}eøïÈÇâ­õf€µK˜&¡‰”¾f‚k}Eh÷ h¡f×?¹:IÕLÆýzz¤¾b§¢Ž0qZ;³ÕÎð´„ò¾\‹ÜþHËBíåÉjÛÎTjk³™"Ûá:*í¦^( Å?a—…R„QÕ¨*ö‰{ž•(š¡"è=Ê/탅hNzãƒGê·!J'+÷-±¨0cKä`>„ÕÈ¡A0¼>ŠLÔ I¤B´ø€ç :ñå²í^¬”*+t·×ê­ÕŠøÇ^ª €Vy¡f^BÐ;~Z4[²È;æ´Õ &?!.W_™ülÕØ·kiIE|ᬔºòWA[T `¦»r6ó¤9§ºÚZCM£àü³Ôl®µV\’K.±%©–üÒ‘^WØß“NÂd×/§WšÃD*Ò¬XchHìÅ×cÃÛ'ù7ÚédH|oî9~:Y«L~à§]{1Y ¥ÖZöbË – PS|©é8·¼9ïyMaÆOΞHoã‚îÎy6‡‹ìBT#x>H;(YœyR’bäó²Ù†#VrX%4ãÇjÆ]sAzÂç6áb`ÚAý,z²J>”Š2·ÙlÅ™_T™F-¯Uïº š¨˜Qmé'Ma?Òá¤ÊeÐ"<;<¥%5X(Ÿ©tæAX“: hE5_ØÛ½³uË>¡ýØ¥W{y´z’³×è ™ºà߉ƒP{S /~ŽÒDy»%´LÆXî¾EG(ìS#h ¯Žìƒ>; SR‚D¹†¼ÛËîñâðnš]rG,\[W­È=úqsjâ©ßLý²ž5YI©FäÑÞ@{½Ú´¿6ùfšä1o–Ê<æ›ácþyIêÌÓ¾™yÚãÊß6¹‹ÿ^C‹SæyOÓ“ž–Ô1{ÖŸØòç蟊Oçsôe.GI$ëø7?œJ0Üz£Ÿÿp˜•ps—šKyª˜Œp_–8ž?K8×3Vjª ñzŽfpµ‰ªÆQ4½´7oÍ8 õÌ•›{-v@%å"õÀH½Ï&´¥E+¬†ñm7!¯I¢uJ¶ C›èQÙ—Ðìc©Š©q³jÂ4÷ úsÝ@óB÷òy“燺{-Ïû\©M÷ôîbs¿{†Ymõ÷½!Y]ðÏÔ´(+SË”«Ó–§NNPÌáºÎ<YÁýÆ1wpØìñÌ6§CK[É„yµÜ.Â>>‡ ñMvoް6þëèÑà¿>_â?.æYâ¿þÒ‰ÿú0«?oý?ÛÚÚÜJá¿>_â?/äáÕîâ¿vÿu üúH€_¨kÇ êy@]ñ½^üUàºbދߎ@+Ì@uýZ»N ì*ÞÁzL`×Gˆ)ºÄ±\ ŽeQlÇ9ÀYj„+‰Û§&¦FÜb"<šxÀø Ùi£¹XY.¨ìK2’ ´DÈ\"d.2—™K„ÌEÈü'%òÃM£Û vÌÔ QuU.ƒh–üšÞ L¤HjLLœæÚb¡4òøÍW‡‰âhV”è8/Çg«Æ¦…õƋˌ["Æm<h5ñÊ´¨j¹8jeT®gÖFSËPHìr'J ÜmAlõ#Ðë346Ê!<¶v–KFùÛ¤ñPzL1[¸ §- Çžñbˆkå+ Q²ÆÐ¶ŠžÉ·wÖ,Xœ‹ÝVß뜴áçîÛã?²×öÚ Ñfc½áO¤þxW–oÕhä7ñíU½­ß$À[FE¿ ò›Ä{óuF¤·%ÐÛ#z“á|€Þæõv?°7¤ê¥û&u—ª;,©µÝwU-P†’XiL¼ipäT5žÜwE’ËGˆó@ ß:…€ß ‚Ú=Ô«) D-|^à3¨VRK©e·™¨µ 5Í—ðes„/{%àË„GØÔmçb– ¸2,#üÍæUfÔÞ´ko¥»²X81#’ÉíˆEÄ…cˆm Øšïˆ!fvá{bˆ™ý˜CÌX9MM“_?,´ÿ!ÔZ>A B±Mɵ„äÊëA ’ëUAH.µKMßrèÔððœç#§Î Š–[ÔãÞ9=6–E˜,Ö}a°:ßë{ `ýH X¬ÿ͆Z¢`Í k ‚UK`žg­K1yQk*>´HX?Öâq°<T@õÃáOIÿ"øSÖ7^4Wº&¦ÌVä ß€ª‘žÉÞF8/Ê Ê®}cßL?è‡C ’T*D *€Êmü¡±§<@SNTîtÀS&ãÁ“ÒßN ¥ zq¨Üð¡á¤¨b¾pRyDÌ@“òÑ]Q‹@š*¾¤^‘¿ìŸùèI¹<¶µJkÉd1ø “ÃBÄy¥c•òsªXØBdÐÆm;fû“é=r”#ÑœDš·9\çºÅše…ƒ~À6“òLB?yqVê{ãÚ®‡Êd¢ LâÍP¤¶¤=ú„H^q„Ë’$ëJn¶U£’ŒÃÁÖñer7D¿‡‘×ùO·ÃÆ-ö¥ÃƒXðåÔ齂ò-_<¬^5Á…6\OZÒßÃHò¨‘ž#ï@£PS#ZÁ#˹Òò|‘«„T§s1Šiø9¬þÐ5G²ò©%ÓW¥J$ܰVðÀУH‡óæЇ—HT¨í©˜½ÇXXcÐwVyñ 'S,¿f³ÄÛu +n—Rb:A]A€»òцÛze6¥Šø.ª¶Cp0è3…¡Ñ´FŸ:œ L[ÕLËÓ\v©I¿|i½»+לâÄ õЃ+M;Òz6rD0¢€EF™ÉKGlT”0Ó´¬nÊâv(zäY7jhïJ‰ÆÃ §³®VšëA—©–/qÑ I³~à–“hC‚èUÍ ݋ߙÊM ·“Ëf ìÇ68ÖàV f0‹4EÑ¥èž&˜-jzÀÕëd¨Â@ƒ9—Ô<Ñ 7Æ]˜hðGC Üç¦GtïvEA³XƇ¸e¢úÙGâ<….y Àœ‰ç„!˜GÑ-„à–ää§ëT÷¾ùà ޗ¦S^ §`PãŽ(iYjÞûž¨Lý>V}ð;csŠ;cÙ…°Å^]…É¡&yé<”M¬ ÅñºŽœK§w~î“äIÞ$ÙÉÜvÓÐËK¥}©ÜRòy:«íO~©Ü²/•zèrI‘ûsÒ´wÎÔšËÛҪΙ+á§ïw!]£Á¬Wf¿˜š‡ _EŠ-Z¡hKMjs,p[mš·U»ìý¯­%{¦Óö:€%²½+l“o“3QÛ·.Ÿ!‚{\Á¼—÷Z³hÑÛ´ž‘íû\~›Ù´É´®TBdȺ17Óo›®Ðjæç>v®cÚ,ˆ›¹9²êZëu{6)õ! us͋ͭ{OÓÛl׳‹H3„럎<‹ÛÏepËQ€dçúÉ7Óë‘™Úò­l6OÍ rîM­é±fvW²Œÿ¡{“´KÄ{’U4óÎ4ÝUéÞ·#Eö¥ÁíaîFÏ~ݻѳ{ÜhýPV·æÏeu{¾H«[šveu;(hu{~ϋǬnÖ>Üô%lú6}Á°éðÛ‹â éè9 ÿâÿþõÑà¿¿Ø^â?/äYâ¿ÿÒ‰ÿþ0«?oýWŸomVÒøï[Ëõ¿ˆ‡W»‹ÿ~žÿ~xüît:ø±ß·6*ý*«Ý “^TݬT<£/ð`EÖê^ñˆïi¹À„ˆÏ„“ï<(Œü)bdJ."Üq„xeTX˜ºÝQtÇýhßõàúO¬"_'¶ÿcÃÀ£?÷âѯçâÑ3=V“Æ£çßJDúÿü'ªÁøÎ£õ¨à÷ E/ëÇÑ`8þ8€]Ô~$ÿ&£À¡ÿÅèñš@ôrVÙ<¦æ±‹Z[›Šäã)¥ï’ÏÔÛª‰ÂÉAÛË üüŸ¨ +¼]©FÿëCzúŸ(Ú~¯Š¯©Z,€4ïëáK¸z‰=š\¨éB-/|—Ü"Çb%)„f˜iíÅZyÊŠI1a<“ŸS¥"÷d¨"e`, jõËÔoxDÂîô¡ÒnzÉ Æø ˜²J•Ù­Ÿ|Lz²Ÿ°Œ&ýŽQ¡¯&(4÷»nç¶Œ(±Égâð±œÿ\N—ÓaÏÆ)w3ú_øýƒg>x:6y2NƒË—É#ãcΡòc¬puõ5Ôô?— ••Õ“ |°ZN¥l—žÌ÷'×,ý%+ÑF?Þ@} K™üÅF„]xœåù¥r4€bC̶K€ûëa,¥àËz “»³’:Ås±6ìF(˜¥ïâáíDÀž ZÊ?£ß°ÙDøq˜ݣʣ[XÕt¼w‘¯&½±Þ#•@aVp5JtqwI{XÞ ôËè“À¡÷‘zõØ,ÿEˆŸœ·’½¡Ì¢§5í#WRòŠO*‚õÜu}#CVBÁJ,H¿@' Ïý±(c‹Yiëw%XÍ5 „5^5‹Ð•ʆ¸Ã©mÔ½½ôÒ”ùÄ^^BÈ.ty¥”ÈÜá}2wR3àMTçkXcÀ®•ò½2 TW[#•ÀÁ÷}×~‚Ån .6àÅÇÇ·ØFÛ`¬jÖM]ú—á[ü·uº7;¼?W‚ð>XmX9Ĭ­9%€o–R8ÿž·áå–#Dk…§Ä‡¸ÏUà¿ÇmüÉÈûü¡ aæ¡.Úž«PÚ+áç)ü<­z?5¿Úµr|@Àð l-…€T;ý…‘øá´ÝA¤ýÓmÞ?k5«Óàßà~îÀöµzÖ°Þá«òŒ(÷\Q²ž˜ ¿iî=Ä€ [Ù²B>CPùFnu+ÿ¶'jǵ×t™ °ñ<°q Fɬ ŽV€Ã¨-¸Å詚qn‹åüÜh‰³¸ÄY|xœÅVbe3–(X~‰wøCâJ,„B–ºWÉëL•µSø|Ç)趬*Ÿ(ùk³µF…3D9Žü©4#XE ‡™Jѯ6¢=­‡|=€[þÇA¢á`,TùÂŽ#C+;M¥W‚gOihe°+é_iS&…Œ¼h‹Ë7Ý%E„c8 -¨é0}õˆ.ÎWBœYª„VD_2 ~I—Ì-ÛyÙÝYAÓ |.ûFj—°üEE£ÏRIyΑo: ±¥•U¼þÝr †—èb(ŒEöÈ«E-ÏÓ¶FîÞ Y‚.%x›¨¤|&u›(í:mâÜÊËÍtmŠ‹Po0QÊ•›¿_üûÜGŸË³%dØÎÕcÐg­±ÎþŠÊjêã`¹Ú¹.W]M}Œå2Ð|œÐÄÒr¨øßjõ;Uëµ0Î7´ ˜jÖ7Yñ’¥õ‡Y>ÈGƒ›ä’Ro‚9æc(rì«Æã˜Z#ikÃòÐEØ™ˆ»ø‡Þÿ-£PÿÿRc§h&eûá–ì,W”ºK!ÿ1Óå³$x7%÷hg'öï®á}«ÙÁš®¢Ž›-Œ‡Ì*Ñ'h \µ?wNº cO|=¦X²Aÿ¯É Æu©"+øZÇ·êŒÉŽ+ÃŽz‡­Ïl@ñu==j8ÒÐ*†d~íŒ µÆ Îîîâ!E ¬aÁßýu4I? »'‰íÚ”al#::[r¾ŽÇø‡:ÂZ sÈKÏü6 °½™ŽƒA2´Lý¡g¼•¢Ã¶Îæf¥v6¹7Ÿ~0ÛZÇ÷ÖTxï¸üBøÙD4Hj’^ ó+8[M€SÄ=Rh÷ÀÛQ0žM˜úÛ Ù׺ÔçL¨íïð‹v(³Í©?0 ‹°w¾ÝÚßh„sÆPÀ£çóSÜLa:Þ û^¨ò ÜÅó‰_lZ/z3~RÅ¡ÊÓŠçEƒ|¦ÊéT¯O«qª¶¦Žóhâ¾QÄõ3´ƒžï ¼qÿgæ;ù{ŠÕþáÙi¾wHªæ,ħ-ÿ›qBEß9$È3;$hÖqüÜ!AÈqp2ù’¿Ïˆþ9_FÿÌï±ã¾=žøŸgKÿÿ…<ËøŸ_ú1ãfõç­ÿ­ÊfzýWŸW—ë¯v7þçyÇÿ-Àrž9† bÿâÑ@ÌÈË žeÏ2ˆgijР7ñ¢;6˜oÑ…P8 n¤ÖWŽ9Œ¿^Æw´ñŒ?¢«ùU³>Œû—ñHp@¤`Gvµ‰¨UVRó¤×à öáö3>¼Ô†I F N܆Y5öTvo¤ý°ƒ'Ç:š¾>“7=G@ÈŠÇ9•lm0…ŒÏé0¯÷º£õ-Y‹<þÅ -z5Žf.=&wWäNÕpËˬe–Ù2ËCÊü¬Ÿ6I†YÁH¼ÁÁÙ§¸ŸÚ±Ò$ãÄÒMËXŸe¬Ïãˆõ)¶£ £S¥L÷Ê•ÔJ’Ì+}ÄÅU ®ìì¦,u‡ÓÐèŠbŸa@ÙûD`ÙïNú½Áå'˜íÑaloô_“dH7ÀîxÇ, {ðOá(Oþ\hs+c˜f™|æÈÚæ*” Éï^F7¥zA}йžfìB}µÝX¡~410÷H€Rz:Õª‹{ä#¢‹ÁÍ&Ì'Ô¥^XyVì ÎÂÆQm¿õŽ2VõíkÄŽŠ[{ñá í1'mkÁá!‚·?hÇ@z×b˜ v¶®aŸÿ×$†{ö}4Ùëê7³ fEœ ²åå/.6gÑà‡Pc‚Zû6®<Šä’kŽz:|uàÈúƒ(íá[¸É¡ÚiÓE ÷L(­ìÑ„ecöù—›ÌÂbßòBßf|;˜ ñ”“ÎM– lŠËõ.$L®2¾P^|ã¾€ØsÃ"† DøÙ£j7€'öà´Q¶•xð÷›þàëgì|Õ °ûÑwûÝõ·Ã1  6à Š}q“½ìrex­¸‚‘v¸h…ïÜuq{|5Š<Ôø9B³ªÌü¡ûŽÞ¾jìZ±`ÑÑÉÙ~ûŒ9È ü;zÿæíñ)yÝ…»Û}«Žî@õ*þ³…ÿl‡§iÎá‚pŠwö3¦ÎŠôPtêhAú)ë¨AD»-ëÈ @Eê ÁúÀ'TV‡ý1|©y¦3ËŒ®Uá­4µjšñMoh°š+ƒšX¤*ó¡‘ù¹‡'<$06ÿe,å2–ò;ÇRæ$XK©‚ „[jbnùó=füç¿zÕÇÿ¹õ|™ÿm1Ï2þó—~tüçC­þÜõÿüÅö wýWž¿X®ÿE<¼ÚíøÏ“£ª«>­ÉœÃþàÍeÔæ=¢6‘ÖŒ`øe^Ü$ÌViæ I˜}+Øî(íN¬£%oqÆ”ÿ?›jÂØpô³ÅÓ·lV†^ø²+G¿YÎæØƒßU4Ö2ç×¹ˆ¡ú¦Ô_¿]Y[£É]<¼Jºìœ.:aŽ^ö¡{ÿ{\ÁKÞNXIYTÊlÓ~á´W 1÷ß½XÀ4|d£há„S·Àt5¹™zða|ÝãxY³†lI®¬´%=t8Œë/Ä|Ò?}ÅmÄ/lÅ÷Þ‘[Ã5ëqF>eÉùÁÜ™Oõæp‚'™b2™(Ÿ¤ ôòuéÓJ´Aÿ{]ª®À?èëÏÚþO"ºà¶Ü—Þï^~„w’Šf#ŸõÁðVÕøšã†Ñz4îN`ûýŒÿ­®¾æ7¸Zü†N`¹3#°ûgû+ާŅ|†­äÓZ‚› ¶³ÉEøCü òü_âßë ±ªúoc;Y×ôKå>æÖ©k}:º9ä…xQ{Óoä‡Kò&ܧÚÑñëÚ<¼l•wíQ­} ~¼šƒ·éý²Yð;!ïÐsè"œ§ð8”ÞÙiEcq×=¿Šç„à?ß8~¹†~½ÂJô7¤ã^×n¸zÒõcŒòîT¼ 0†B 0ͳ²€Š  —þy>W=1i“„¢¸.~žÎAaœ©(ž‰!ˆ°°…ô#ªŸ]_ 6÷Æk»Úf]+{ã/PFü? Pëá(¶Á©ÏV£'CŽé ËEܨ+å/ زúÑòU_š¿_H?“á;‡ô¦7Ë8Aû’ÚÚ:7xv=œ2£…Vcs+‚â-lxã ÒÕ›_&q]¡ÇðÉj‰_iP¸ËÁUlÅaSwhªA†”œ·•Ãy.×·ÎCÝ´z TÕ"Â@#"ÈHƒÉÍGÂ] ö2ŠÄ`Pˤ iq~ä°3¾èía0–ÝÐDº´4تƒ€‡ñä’dVGX>6X¤ÀjR!ˆ3­º;¤H,x–ðžŠQ¤_ø2¸¡'©ž¤ÐiéÎ]”Þ òV,òçþ÷ÉæQñWÎF±5Áp¤$ãcËÝ»pæ|ú¤ô¨!“í ´,ðoãñÇÁ•EÕ7 :{`¥®·Îi¸O‘Æ+k¼Q[8 k-3Ü*²ì† ¾ÁÀ*¨—¢«Ô¸\v««j×”<°nÛì"ÉNpž]!ZN†C”¶iVi%ù­%Røcc}°âð—Šq'F´§­5긆QîrŒwRËYÊ Þd:‹†» KîÀêx ­µÀaš&ƒ?O®ùÝ ^“à/F¬¤«WH‚O¯1mÊÄÈïz÷òÓ—îðŠÐëVZ75Â$ ‰È žÔï ãfŠÂvënyR‹XoÝqÕsƒêŒag,Leõ…6&EòB–ø±Ðu™pÓ5GæVU D¼5ÏpEâ’…‹+Väº)€µð…Vè[<ãÊܲ~a÷:ûÐÅ™l>–{²<êÄB7eä3\D›rO¥B–åÒ>ã{ÏYY™)L²²ü'¢ø4ÃŒ®wÿŸ3úɲÿßm=ûÿÖ‹ÊÒþ·giÿÿ¥Ãþÿ@«?oýW+›•Ôú¯,ýóðjwìÿ!L¨´ã=…%™¥—€ñ|W/¥l»Ÿ³ÁñÖÔy¾ÈË+¯ƒ3d ×Áj[¦b;Š?ǽh+ªÕ$TÅü~j7z‘ó ¸l*5} ,Ÿ°=s²†”…¿ý›íP@ž®Tú@o71Yàækó—5Œqfym—›·™ßoåŸ{Þ›ÃL{#²ÞΚõ–[©«Å5¬üf4òr³ìN¯±)’ä@oŒ9nmÐ#‘Çm÷?MÎâý'åñrÁÎÚËa­âw‹€F½nÒÚrް|ìŽ/#q²kægÏÛø¾Þ¤R­j%ë§…yW ÒéÓ  ëûÏJOL‡:QþTûXhÿ á~ö­ ÊY>9I]æ’C+:yÒg†Ù›|ŠU%ão"̃x};Ò"h&öÄhœ¿}·/(ýiXÈúU‘EÐH*‹Áï[œ¦äà°.ÜNáÿu#+I£…Ppð¿lÕÈ¿$|Å“Ž'ç{èz‚YŒ§Š•tà¿Ó·Çõf¦—Ç,.)"vñä¸*~B_?tÞc>Fsœ³[‰/ÁLJV»Y wW%öà÷Òý™Öc>šC|eÊ•…¾ ,Ùð¯æåBü›åéB/½]Ø,oCÍò€)œZË3†ö™"yPœ†K\±cžÞG&åV0•ÌßMßÓ?æxë»øÇlXÎàŠ¬Ê›ƒÏÊ@]ü'w|ÅÒ-àkðÛé%~¦=E¬Û9ŒVüä“oá·T«çIeÚUiÔ LeA§Ò 5Ó|T ‡ü;¿ìOt^µ¾O­·bûm‡—5ÑèÇZæÚ TkÙY#«Yùº‘æè@è­PÖÿJ&PšÓŒ½Ö”8,/ W ²«U'ÉiœÍZסâ›G±³Â êLz«fîx20x«~ çSèy½…Ùd±¯ÔãC¬†š4ØK«¸ Iµ¯¢+a-¿‚úá*|î.SÌL¤º±R´î'{¡¤¹%:°•×j»Ó>ø¢ñqKx>8ç~S}íõ;Ô®:R¡jÉ=¬IDö×®»d$\7Óg°t•”ÇoI¸¢u$)rÜïç8|'ùþ’5â4›­«4 ©Šýé:Î욊ææbE|é!I©#uQî+.ãs‘Ô¡fûó;îGÅ=0ÛY˜Ñl>˜‘ã†)Çî}Ïï‹)ï¼þIï+¦G­;û‘÷4øk4m°…; å`Påòm–ˆ5p-#^‘GWCêÖÞ~…-Ê®Ãñ–¬²&E ±\ÑX°àË`‰hSãíkÍAw ¶Ö¸¨®ߪÚN_ÞíAzª·úØžŸÔšó²m¦7«-U™Â—ßÔpv0¥|ƒYw)®`e‚¹AS~œ­Ìä#,êíoˆÒ~a÷Pù¯âŽÍ¯®ÒJH{qªS J)Aìv e®èp§åYlÒiñä¸Ãâ¶Ó •0¤•1äì\GA%´ Û+ý¦9%»°É`ž”O‡õ¬$üh¹C)&Fä~ÅIW¶6³WvJ<÷Kñ© `çC‡Ï¿ˆ%`@Ï`55ƒÎÄ“¦¡wÖB3cÚ¹.OëÙx¼õ“{6.Ÿ"íÿùˆðŸ–øï‹y–þŸ¿ôcú~'ü§çÕ­Jÿi¹þòðjwý?SøO)ÿO;ѧãßy…v÷KòQ`w>ìá"¶tü\ Jü£÷ø£?•˨ LåxŒšhªb£¶§á<šë1êv„2ýÿ~4Ñd%B—ÑhÓðázŸQòXJ{úš›Âk”jýdøºõ­›å… iôéÑûŒÄÚ_œ;à϶äºöWŠyþ=,¨ÒlÎ~†§ßFŠZÇ.µàý¿î>‘j׃쥣¨!÷:ü¦ô6šà'jmýe-šcé¾Kq·?èc¢dÚOؤ´VÚ³y÷‰Ñ!Ëo`ÿ\%× ÉÜÑÞðn±Hø£>ù ùœ\²ÿ!I{Í.t€ÜGbgÑëÞ ã‹r´;ÀKÝ9Šìþ|‹6…+‘âáó„¼û–#¯5ÇQåÅóEæ?ðÈ€œþ=' å)’”ER„ŠH…PÜs1€Œuºß<&ÏÄfÓ-Ãöî0¿ÿVQs´õ!Cxm4æî‹XuÒ)X®ˆUŸ+â´®µz§,Òw–S©ÊQç¤íƒäšÖáq¯U†É¼wTkî¾.ç;>R=e÷}_ÿ– !òÛ ?Ù¶€€ç"- ø™¥ÄsSz²7Jzƒþ“måÊôFÓ”Çå–òFK§lÖÞho´~ËÕNáŽÖ°ÜÑDñ ´†á&Þ¼(z§·m¨ z¤5|o§mØ’rü³ˆOZªâ,Ÿ4»zÓ+-Ó¯L»‘¥Èl§L¬×ï@ÖTdboú]ÁØrÖ,æAFkºæO¬åûu]Ÿ):Q¦ô™j¦}¦Ünæú²Ùpãð9²LáµÐ7½t (ÒOëµÐ0¹0à¶Ð°ÜšëbfkbDkj †œ¦óB#༠†áõ pz¾êy3u äMÒøHb £¾tïðÒñ’BQVçñÖŒ^@ rNY'<²• ;í·Ðn6ÍN†Z{Y`“ œ÷*åßè+½ÙeïˆT«û‚¨¬ÈžDïl;¯¶ÖÜ—Óû¨H2"‡Æ ÅE”c¨QNuÇI/D3ïYysZãs[áÀÈ>d5/ÆN @é9Ì,GT×Dç/b ¬¯bkÆž{•5r§g2Ý;Êæ©ýޏm‰Õ(@ @~#.ìlšÙ½E:šßyåŒO(ßéj=LÈi¤áÛÝÄ4iŸ \®t§ÉrÓ{{º¿Ã[1]ƒñˆÜŽztYàOôìuAîþ6ÂÐ̾§¦#²»ù.~©WÝnG|ßAŠÕ;%AÂC’BŸ:>bþb´“ñxcUúc]H=¡òU¨®š´Ó ³¯ÚÊêjÕS Îu sG™Ü¾QŠÀ”~iÃy¼nvMÉÊA';O~‡»ôã“ýÝAjm5ü®G–ÌëˆÕ ýÇ*Ý"¿ølIšö·£Å·í¢³êÊpHúÙ¡Öåcùÿ &üLøoÕ¥ý!ÏÒÿç—~ ÿŸZý¹ëÿùóí­þÛ‹%þÛB^íŽÿŒðËRÏ,!Ýd¯ïÙó° líj¦'•ñíg¬ïÏø¶@§™jÍ!`ØoÆÍ¬Ö½@-½éÒby„˜õ˜‰Õ”O 5F_‹Jm'/UÊíF%Ÿ[ñAµÙÞ6–WEB›ßÉÆ¬"Ïp¿LÅÆOn*¶‚~#³¢@¥¼>~|§Åa@}gZ© ˦åóGðn9žìzPÎeá’ÀÁR¢¥ÝÞd¸”•=]ÿ쎦Á<\'¥ù]÷qó{»:­ùÝÍ%?·,äoLs¾ù­Ý~?ù˜ öŸ±`M­·×ð¡ÕøÓš?|¶<Ó†¶k¨ôM´ ‚– ÓP ·wØ÷±dÌlưl´+¨¯²ÌôaMh»º8M¨£ÿ»{À ú¿gÏ–ú¿ÅÔ§iÕÄ™êáÙ3f3b.B m¥`ªË–¨ò$¶tÚO2Dñò™S•U©‰Di$&+£¬ïÅ\Ôꀭ ccPG¯GñÆŸÂÑd†J^'$Úù¼D2/Ñ'û4–9½x&8YÏ’}^Y¼¼)¼¶r–K*éÞy¨›ÑÜrsñökPˤ éæê²Ø¼‘‘«hò-ौì[³¤Þ²ònñ(Ò¯øSnUÓ:—ܹ‹‚é´¬?Vþ”I¥lY!œ0Êw2Ìc”Þ Z{^Už¦7¾SO¥hÊË ‰Ÿ_N†C©W¶ýŠÍU;ÉZr23o6Œw¡Q·,LRg& ¢ò²+úÒ+â^ºÖ¨#PJEèÁQq,ÆE\$:ƒä …J$u+xM‚i‚‚)ˆmZ4õ<2Íl§°‹Cû_ºÃ+\C­É—„qÖUÂ£Ž¢<ŠÉEïÉ¿%,ŒŽy1¹(€Ÿ¤GPÏÅ‹Ó̇wð­õÆz£> ÌÁkó#°}N*.UJÔ¥¹Òc«´ ’Q¯Å“igsÀΘhKÔË6äý Õ»ÿŽük«•²aO±¼JOÍO›&«ý“£Ò8ößÇÿñ|kiÿ]̳´ÿþÒeÿý.ñ•­íçÏSþ[KûïB^í)ûoVüÇÒœ~~jðÑ K ðÒ¼´/-À>®]Z€—à¥xi^Z€ïg>^š€—&àŸÆ\ ²ji^Ú€ñYÚ€—6`9¯Ç|¼4/ÀÑÒü FàãÇb^H0îwxLûïðzôhâŸ/ñÿó,í¿¿ô£í¿µúóÖ?.ûTþø}¹þñðj·í¿íƒN):m×ZºM´Ú¯;Ú\; _à߯qã]9ªãŸY²Í9¾ÿì·Ûð:ýËBM{JCrõq›‘#¼E~ŽÉˆX–W‚DSæªÇ+:ÜvPðÜmUQ#z×Ã{&JðÑ[ 6cñE´ ÷ïÎáë S¿¶*ï¾®µk»&M_†–Î0:ïñ”ÖÅ<‰ŸÆík˜ƒ-Íü·'›8²‚°Kè_ÛÚF-—cÝ®±ì@üY/ñXV3eÕH9:/ñ¸§²ŠÃ‰’[ä3a…ò+`ÆÞ„n˜Ö¾Æñ-N0&‰ìÒÕ+†cŽõ¨ÈD‚WGl\‰.“þsÜŒ÷ñM£#—0¤eŠÎ7D‚ÎS{ðØ“›5û­”ÓÁÚÀ[ÒT;˜nž!HË÷ÑéL_ûmmº ¯­ž™å»#½já €U}Ú>Ðc?˜ÃØ6DUéÑãéi!Áh7Ë鬓þñ™{ÿéP+¿¿L~ ûøpð%JD—,³-Oô—.&§ÇÃKàÔ yb`!Ú½•¥®>«ÕËÈ«©N;kBv¢®(^Ÿ·Õ7¸¦4½Ï­AuÖ9OÅö×QÛ½$>¾ê„yÄ1r•®JQæ|”9ßàšÒ”Á×ê—4IÕžôͰ<¡® “‹Î4âÌMÚjœŸSÚÈóÒ_+Q ;ýZòEvgyþ¸ô±Ý8×ÑùiûleBÖ†NŒ2—ƒá0†ó¡O4‚³›‚Ç_ÖHP¤ìca?'=ÞŸoúÉxr¥.ÈŽ1²|„?Jy%×:÷o訤S_ef%¢^³2¬kÃ&8»Ž FBöÓnÊCE½‰#hƒ¤¹Ç.X°w;€º½/Ýo$M÷p¡Z‡¼ª1`¢.M¯Ü$æÅE¸v},jRÙ³$ù»ÒJ!&3™µGf&}ðŽnAöFbª:yßstwûß¹¡•ê.ëPAw 3õ ö[ªYä+œ1ª3#ìVW%Æn[ú:E‹PqZˆÞ‡ô¬iô…·€v 8{ˆ÷O›µs¹dac"ƒ™‘@â¼#¿¶dŒà˜8iÃøDiìÆ"1i}WìºøÚ‹JËc{=˺Ù¾½•PJú— Ñ6|)š"7Ø·Ó÷™]ƒ¯Ñªm÷ÌWÍëö~fßè¨jKV•¾{wîi½Å›NÎÍ„#úyžÞÝ·g­Ó2ZÉýçM­³WãáqîwàÝ9mïÃOüí`¿Â?ªôƒ\‚Îß„çðÃÞY38xº~ç°d§ön¿myI˜åÈãs’êÀD…»wTkî¾–6‘´Ÿ/Ë×2z3µTíüøø±û–~¼Úo¾+ !«,4+spˆªÕ¡¶=4üÛhÖDÙS¯rUòÕë!Û.T\)TOt…]âTIåKÄ(Œ5[Ÿê³•hM|ŠýÖÏÁåêNmŒ† Ïqº¢Õ‡ 8ÿJø¤õÄr®!#ñ®érd:}b{$úçÍÝ'žO÷ö²B9%»È–[ÄqÌjetï™§ìAÑÂ/Ò…ëEËV6Ó…Ï VTº‡ÿWû SX›Y2×£‹'˜|·6Þ¶7xò¼®\ìhrÈŽ&¤óŒŒ‡u’‡´ÊŒCšŸºçK¯=8£³¼ ÜÞñ9ÅZ5çÓSV‡³ç+¶ë-¦*sèÚú½ô`ýAÿßñp ƒ9àB‚7ª P<.Gw½É(ªho7¬¨›ZvÇèŸÅLûþÝ(é úz?àƒÑ|¥Ó½VÞSÖ{û¬ûÃ*1>¯ÂçüýSlOjo ïŽBuÙ`ÛæOÅÛ×xøL 6U{ê O•£Áà.šôÇI=¥ïîðöy9Di·xôŸ©v„Ö+f@ú.Á½+¹šÀ)Ù&…çz4¸+ÕVPj„а«7óg5ªe¼· ¶î ñ]Ì÷^h’8ÁrCcw |T:תó§â¸öâ 6]¼t^§#é'ÉŠ=BÀ]I˜èU@°&ţɔT`ÖKïh !d °û–ÝAõXV’ §Éˆª /,-õŒI”rÿ–R‰ù1ÈðA•¬¸ÐMuåé‹€®×Täì ֦䕂xŠÖä…æÇ œöaG¹åàLØS„\´tÉ iP_†Ìe éèú,\y@êRž:ÒÝ|[ï®HhOú*EÇ—Þ¯¤$û÷°Ì¦cZGfûÇ\NJŸ„g•ªoúÅÜór†:£5ÿ B<4í#ó®ªÞAå®ÐbU6«Œ€ù¦”{Ôb{ÞQ•Î@ª‹I!ëÆJáW~‰ùÂþÉF%óÑœôÆ F?£ ¶YU¼—¾÷,‰|ÇÉiÞy’IiÏYñmº’)kúçU“i*•<ñ’˜)“,zi­ yh‚½­Þ»·ÕÂpšú­ySß•š#yKgÄ-D<è!|€2誷•¿+¡› *B‚°´‡¤¯L»­Àj#u$•Å¥BV°‹ ¦~NÿþT¢1 Z'µÚƒQí­øù¹‚<2'þãëwÃÿ«lW6··+Ï+UÆÿ[æ_̳Œÿø¥+þãAVÞú>w×ÿööÖrý/âáÕžŠÿ8W ‡ý“³ý½ü8 Y¥ ‡¿ŠQá  ãAZÂ?ë­½NVEò?[oÛͲþ) r-ŠŸÃO¢¼ŒAÉ{T4T…ªµar!}A»·ñ(Ú‹ooã^~vozp³|Ýíõ’›n¿ý1ø÷ z\uI1dVtØAÚI|EMYQ+™=:œÀª›¦€]ü1`ïƒcö)k4V¤M°Oük£y|ÔØmœF-t†âê-'‹©#hÿËúg ¤ÑœæHÍÿ¢%ç-Ï î•ó ±5P•]ÈÉðÈD$ήøÉäè(¡p‹ÖÆPT/XI`14±Å¯FDPäE2.è|æÀ èþ±A¢駬ƒÐ1 „‰ìê¥HYhT]¾’TíK- ­g4½» O h¬Ë* ³%vÉš'‡5 ôÎC²ÙKsü†w’ÃâÔ å-¬]4Çq?OzɦZ—6aòÄØ<¶7 ÔïþäÎ$¸„]\Ø*ÔJG£t°Åñì2Ø%ú›q5—ÝQìD tûWö„²3‹ê î¢rÕð`×6ú-F«Ia~E©Ø/x:ƒ[F²!hPíÉEÍ]@?zP­åÈ®Æìj®x~Ñ@42 n>¾N¹xÅ8 Ž>˜“qÜ7fó*¾îNzcnº{yß‘š6‹^(#ÏPñNλîh$·W©ûò1¹ü|¦bºO†—ÌÖlfè’ó3 BTd˜ÉhðXnÔÜŒsSEË•+'‡þ+NÌî‹ÈÓ3ŒWs'm0è-áEWƒ>áÔòWÚðÁFFý8ž bó4&*¼Š(ÂãrÜû¶‘¢1ÕêŸùB_h [oÈ€½a/Ò¾LuËêÅ„6W÷ÈzØöÊFj.&¿Áh¬[HU/5½»v ul¡>[H•ËBÍ¥êÆŒ|¥j£M¢&í»v´ /OXW]H†•Á‚ Ñ—„æFú›‰:üQM…C3£¼èÌûfÉŒî–Y "3Ê Ê¼WÖøÈå=ŸöBtSƒ-7 slìzƒ¾ÂÔ2¶‰ßPúS•´¸’Ý'Z2Â=hÅoŒ×8Iúë¨M÷GñM™=5ð«v4ú8˜ô€1b„Û|Ñ[Â&]ZSÑþÚMP\Ðapž³B Ê|D¦Q;9U>²j‡ó+æ¾_v pˆG ¢ÚF • û°œÙa<jÁç°u]÷›~HñsôÇ4vÂÃeÄ}• ;ãˆH¨Â¯‰/º’mèp$ÅMþ3L+¥Œ~°¿>( ”bÕ¬% ÂÚ¾QezLAÍ22bVþgR> îdAÞÈõ™èåÁ6Ô²àAͻٸ»äÀÇÀ÷ B/å… ß+ú<šOúýbϧ ;ò"Ïït …V”1,߃ûôCàhÿ@ ·/4,³Ñ•ïFè¶}æu-OqÜKUâJšQ®­†^Ƹޔ`¯Á›Íм²rÛÚWˆë!§'¥JöyRö§;'â?¤´ ­&ôªZ)›}Àð€„=õ.ƒÁÁHrUã¡×Ƽ’(Ø›–®) D¯‡Å>Gx+–ËSt[Œó`~¼u7ºww1F]B]Ri«ˆgÆ-Ü7|·ˆ³¿1×zrg‹7ÅEEÅÂÅ3bÄ•„—)™zßÀk)ִ5ST8º…ÊÓ¹ƒ_¿ÝÅQIiý ”E³VÚ¥5tR-`ééXÇ¥uV¡©§ß4ÿÈy8°†µ®†Uf®åÝEä±A!š’vðI $’³ð¹;LúÔ]û£4>„f.E4ÅT_Y(›’GjrJˆëAÏÙ=ÅþÒRÕ†çªÃ¨ñÒ×?ÿŠÈ ’¼`K•B“ _ìd+hÉzRWxU?UÏ5Z V&5¹W^Å_5j1”âKk …©RûRô”Üærï©÷&wLíaŒWªïRî¯ëSû7+Imõ/ç-¡®!EmC@RÞY1&v¤bc8ÁVjs—]÷(F6 U¾S†‘¯hdeN¾©YÄQ]'qïJiþ :ME;NFã§pŒ<#šÆhü7àШ°¡Ów|ŽöG(p&)d¦‰:ÓR§Yê<Â΀$ÛKi–FÿŽK}r@íuo/?–Tˆž±Sq·«Ñß^±F_ýÍ\W;Y0e·I9r‘xÀ (_â¾j¸ÿW6ÓX#©®"èçÌbÓ¿Ê$60ü›a ]Þ“|Ú˜¦q@ó*ÏŸÑ@¯E#i0££þëx(£Á}‘LžsšñŸîœÓÖ tÚ[²]àÄöžïÅÏk³ö)lg†¢ /ÈRŒˆ"x´RV7K P7¿,PP &Ÿ, ¤Gî5Žp¸y‡Ò½„»—ߤÞbWº˜vê’ð7ØZaœ¾ƒõ½‹&­É„ûŸ!Å#zæN¡ÈÜ.G Ö+W@v0VXhNC:L'åïÂCI9TùRÊYJ9ßEʱïRÔypQ§Tã(™¯+*%áW¨N;á•âÖ"“è¸' þ’–œ×nyÕtZª ‹Q©©ü^R•t?ñ+plo ­i4pF1á:r5|¢`1fãÒÄ6]rØGQȇñ5ÌT­ö ã@~3÷ÉÌ4™‡‰¨Eôø¬¸(†™V·w3ÂB»5Ñ¡hݾޥè\„³Õ:ZIaɯ|zÊk„+× D0 Ò²©7P¹ }7 À,(ZŠl±:³SîERG64jÿ<×y¢à3òJòœŽj5Zíó?§íýƒ?)j%Ú‰ÞŒ‰‰ ÂJãÚ|køMAã Z˜Ktû¹#0ûì’$ª@[­AØùÊLÛªÄêajýŠU,ìn;jƒ]É7k0¹èÅëZŸm´®x!uò#<¿‰ù¥š®ÖQÅÝ“Ž’ÂeÏ/ èŽ&=–ãþçd8èSëÊR6šÜÝ †cÁÔþJ§§öÄÒ€æÎXC˜òuøY0Èõdz„MñuEÉȼ«ùh­îØô÷醢ÃqJG`ÏöÁ˜«J¾‰·&®Ñ"št)ŒÞðÂ|Srhx6àMîKÜë]J(EžÖŒ&iý†ÈB›ö¥,ÞŒZ|NúùJS0“Óç§ÑCáb•ðUÒt1ˆP²¬¬‡4\«Pʶ¹–+²»Qý›’­ÁÀæ³2Ó8ΩÖŽ5–pìC‘ññH…ôËm††i÷ÀVÍXÄÀk͘=çf¬}ÏrmW••tø} ü?ˆnèFâZàð!­-ÝÅäýÌ&+,˜1Ü­l“pxúÜ|xïøv99ÛBà. íJ.ê5ß ööjgGˆ#-$BñA¸’Úh’Ø Ê·‹–ßûà}3€Pnô1=ª@«z,µY ˜wX›l§šÜÜx–[Ê%«Zåop4æŸøvkoß:;-(|³v^Ž:'íS1¯ê‚Pg? ”ÝïüypŒûŸç”â] ÃoHÅp ›Lcn½ÚWc§?·ÿÜ ÏÎ µä$ ððˆ5È VJ ÞGåìú]DÆÓ€×ëÅŠy¡E'‚ÚŠäÒÅWZ§îªAîaƒ’êÇWûéÝ>…¬ŽEdì³çm©Cå´)à°Œ’/íNêb)H6cpáúŒò&â”,…Š') {ioïJˆÿMi Ów5.¼¡Þä·y5Mê5¿äälBؼ_p2w?»ôÉ1ˆÖ&æÆÀv×,€à9¿‹²€zŸ²ä±@º ³€¹?û&ß¡lV?ò˜ ‡R)6~õvöè©°5[~ÃpýJÊ·Šøp 3ë¨xêp ÙÒ´·¹,£~“ÕŠÎZÖ\X$F0Üøc—^B1vH‘)"к ™{Ã÷}ÕÝ<Ä ùiDXÓ¯ˆh| b[á:_ÔŸ¸GÞ²»™e­¬(‡ÊAÉ8I´ë—BÁÔ$”çD ÍÈ|":ìAެÌ)²¿-O>”pzon“`j“`6YbÛ-‘Ÿ E}î)š— E–ý{ºl^*5 žü-y™PTÙgþe—‘Å—åÜ“e–<(6K„"µ®îƵ÷6˜ÅD÷왼ó J@©U ¾å°œ¾b3¾}5rµbÁÒ6åP¿C€¸ýæl€8ÙÎ,Z´Ë[ÓwY^¢ÄÊîtNáÔñïp¢YŒ.¬Jdë&½ÉÐ`qe.0› q­É²n‹ókAfõa6FuiWœE ñçt —+ÔM/[äIßj(ƹ°¢é< Þ»»¦Ü] W®´ÚÚ]Ú¾_svb¾Ò¿Œž4üÙœä×'kÿQ_ó½±Fˆq…%N[G•à#Pˆ:ÆëËÏT*•3qòŽ…c‹éÁÒ÷ºäÚ"-жö ™SYiÉøŽâ50—»‚)`$T·«*™:8S5çE[ÎÃhÁ€ ?oøþÝÿQ÷ó ¹Šà áBØšecD2ý”/èjÄ^Åè¢ôEvX5.C%lÿ3•ãͰ9ÛyHõç’²EZ–0÷ÿ 1W›,mfÓÖ–à̓8ëÎ3Ï:ïFÃrêy©œ™sÔEJFgÂú¢E„ä.xP=|·ƒpµHnÑ‚ažAÈl×a2žRFÃ`éð,t–°¿=ó€½-sOÓY5¾ßç4ÍVRež¦ÙÇi‘ÌFçÔFVþŸU$H¡ü?ÕÍê³í­gÏá‹ÍÊöÖ‹ê2ÿÇBžeþŸ_ú1òÿ<ÐêÏ]ÿ/*Õgîú¯<ß^®ÿE<¼Úü?'ÕRÔ´ÄØÓÚ™”LM;@f²œ­ÊŠHórßd1Q¤+ÊJS6¾ôÃîÕ Ú‹ñc¥‘ÙP•Õî†IÓáT¢™#!Nf~™ìÌ1Hk‹c0³K^Ú˜­’›}EW¿‰L¬è ž}E×Ýö‰­‰ùyElØ×è§La‡Öÿñ½ÛÐè‰hÌJNá„k4EÿýÑóôœÚîi›…oš8ìÙØòžJà{ؼ î^ÂÕÀx§Çqu¸á¾I€­É5¼÷ûËHĸNîî0uoS!¹‘·‘¾Ù±·æ÷>›Ì=‹ÕˆÑÉ!Y»”¹Wê­áDÄa2“qDg>iç-èåëR35ÃÏ*ýÜ ÿ½.}¿$Ë'x§Ö°¤ô>*-_—’ Ôe@¦á­ªš¾y5¢õhÜÀ.üÿƒ*ù ®¿¡“XnãÌŒñÙþJ€ä~xRŸKýõOk ï'/EбønÝ¿áÿë¦ô¶út½Â)íGP ¸c58…‹^ƒýÞ)ëw¸ö°O'™ÊƒpÿÁQ‚ž³5'>KBßPÖ.úS„"ùäƒrô&ã¼?:~]óÔ?{äÌQm÷Õ;úÙ>?^Í+f¦ÙðÉ7¹!äh«#8ºZŽPíYñègÓôº¦†nýίagYÇ—µ™v MûÁv õx†žT=Ž¡‡9þó Úé-áIRçÏ1g7§ì~CiÇFðWqjüÇï*˜¸®ßO>"øŠ ‘^–V_8zs±×߬_ÃØšü[…T<댱kC/õ[TÌ|EV ,ª+Åb¾º…<ÌQ ƈkw˜)^ŽŒ$%î¿ÉŠN`CF"sX©ÎA‡õ>au&²Åa©Èz¥&D ÀRŽ@ßÈ\û€¯C¼IdLv%4•M7+{X¿xRýõ2§ÿ­ÿ½~,úßígÏ—úŸ…ÀeàòZ]U»ÞXCËgݶÂF6æ†O¿dÆâÑ ­ÒBìcãíZr¡í·ôÇŠÃ\ƒœ\QÐ"CèZ£î·…jãq†¬%4¢î,XƒjäÝ+´ÐIƒ£•¶EçÓ“«ä·‚×t #Vò?ˆÖ+$ŧ˜6OŸÂ9R‰²qÅ´_0pï‰M™†AÁš… ÊIÍñž0Z§Æ/Lñ;¼UØï©n˜ÜŸ´¨AêPÉë±fÈ ƒmµ¿AL2(Ýzf-,—4êk¢_T Ú™`}"l£}„W\ƒ¸Haâš…5¸nÊ[­3Š ¼`Kc\™[Ö/;àÖfŸ±ŒâDŒ=–[29ªÄÒ6Eâ3\6›r QgÖb¦Ï™ßg]Y+L²²¸ ø4ÿAoö?™ƒiÿ]>žø¯¥ýoAÏÒþÿK?ÚþÿP«??þk ¾t㿞-ã?òðj·íÿ]8MM9Ùb¨‚Cú·çî~Úøß|Mz é©ÓnÕÇ퀒ÌàsL&à*ðëÌö|¢˜”‡<8ûD»iÌû>½&Ì‚0éÊ_ÅÛyÎ0—Sz7 ÉgJÑ7ú6NJ؃ù¢Ä°g“"ÖêkÐ êP°k5RpL"eÔ ¹÷@¤¶ ÞúÊÑ™s”f™–,ºK>ÆøºÌ†,=>Ý­Ò°ò¼ ææàó(àeyàøïºÃ±lÌ{+î#õ¬,‡Šišì°/Æ1LÌüw†>j”ŽZÒܳo4PÈîk'æ´iC@rMÚ•.üÁs˜Žxõ\ aùxFî™°–mÛEzÿaæôä2ýFšº :c$”„¯LÙŽA#Ï©<{I/a872õ-–¤E® V‡ÑÑ¿DG™¯áÏYú* ÓFô—ì.Ÿ‘au·Bk·PsÅå,oÚ@ûoˆÌ3û•às‡Ã/üŽÉç1ßé0þLФ_âáuçÃWÚ˜Îl[ïŽÈìH=&"Ià…ô©¢7Ý›Ñ5ÈǨúŒŽðw·[†êqE3VêµP{á‚ê\&˜SzöœÝÆ]:¼ððÃìvÖÿ±Y‰þþ‚¾?¿ÄW±ìúÜ-™Ó¦Nƒ‹ö{ H2mþ4*‹F ”>§ ˜: ÷·ÞxÕ:k–£ýcf:Í#ø#|džî7ça+ýpTë¼?.G+ç`ÏüPkÖÎÃcd´¬pw¸|Y¾—îÏ´¦ÚZˆ‰øŸðï.PÑo`α¥b¢XO `÷ TŒÖÖ G&\³ZõrŒ6  v¬Ey>Í/;OHÍ EÄ+<ÿ¥_Ø€j$(Z¯í•Ä7eY@k+YI‰”U‚f:> Ë,Ý•ñÄ“¤g:îIƒX‘¢tŨºƒòíËGtè›1[UÖºSKkÇùCòÐ Ý»ƒ Š’£«_×Q<,£Rv•>l¨XŸÈÖVèŸt/Ïì^òžËPvú%|7p Þ–|„=&N¤[ÑÇ6…æ°ÊÓ° VŠdW£ÔÒG5*+Agm³#®^äâÈ’˜p¨“Áu‰/œjuYž=5€U ¡™4°–yY›~®2 .µ-ß±ŒF0]Û<•-~—Ñc³¯%ò ±¬»²ç/Õ¯«´g™Ì±•ÇvÀ’OVK¢ÑCQ/·½•â’m—x–É¡X&–$V‚ÖV¦X5|õ4 üAu-ÜX~VuíÜKÿ{uõXô¿ÛÛ›KýÏBž¥þ÷—~ ýï­þœõ_­ÂšžŠÿÚ^êòIÆÖÿî|ø¶þ¡ìDÁ‘|†¿Â?ïNñü—,¬a#ö‘D$+xìjˆW^¯òøPN ÏÕÍʦøûïë•gë›èNÞ¸ÅNÊè(áªO¾ðï;Ê㞤¤R|Ù]ù¯Bzg•¹XÓç+ãæhD™íÉ©›1àÌW¿-“òg:ÿ¯z8iõY‰;M¼;-‰Þ¯æúäL«éÞÛÓ±n$«&‡ծbBó1Rl©ónoÅ Ãjœ®2ùÉa¨ÆW(…ù>Ä×cd¥§pEb…¦lŽ|ãÙÍ¿ŒlÌ:ñ«ùzJ¬#ad‡ôõ"ôWÄ—a2£^LiÆP狺ÞNãU•òèR?¹‹øºr‹)½[1]úùÍ„âýìñ|ù˜\~ÄoþQüõ2¾Ó/a»Š‘’^F4Ö™YcÓ‰·*KÇÁwâ-a°ßÚ19Nå8 Ôi¬7ƒôäÑ;5ŠùF¯ c¨€ÃOúëý›ê¿>¯°“$}˜úÑeÜ'í÷`xEO8ºEZÛ°Ž3ªþêœpg¶åT«œQ«äx‰eºc3^G…4½CæwÚÑŒ£w2ô‹HƒLB­H&éönÀoˆŸ€Ÿ1$è6é]qPÐo>Ý hk¹î ºÄ£wƒ¤žíX4&ØøÆ8ú’ôzä ŠJÐÛîåGRI›ˆoD½«ä†C2ºWWOG“ `´Ëq™}`DôxLú<¯FÐ§Ž‘à8YGÔK>11wqo:_ÇÛ9ýú‡þuwý›ØÖ‚¬W©ë—ƒI¨r'Ÿ»°1öècüµ k›ÜY¡òWÙ7iµRÝ}ƒµ Ÿ|‰£OýÁœ=à$ •ev¦²ÉÍ|µbª³;wÐë9WÌ.4½‡À–‚½5mDb•žíØ1OOjOàÂ÷›¦ ‹ù?n©8Zä*dX×As=(«ÏH²ùéoN£ltl- 5L÷@½ãkTs{쎯ßb×-Ü*m9½„æP©6×t f'DÂ8¤lV¯}Õè:œîÊg€v ôK,Sý©n:TñƒêwhDHõuª!»Äm!qû»‡xÔ¹­HCåÆBÀ9ç¡ÁSµ?ÆppÚ]ˆ¹ËاddN£‰vøÜ7¿ŠåpæJêsÏ­²ˆÆËª‚[A¶]Á>ò‚óò·|òzÎìšÓmâ±’¶ÏÒõ!»¯è•·á£ølýLt‘O`,“q9ãáà›bó‡ŽïˆJ‚öש¢Á=¢Ðn0Dÿ‚Ñ€%•F‹BG:äv.ºqæv#g9œ•ÏvßYÀÈÙ`îÚÜJ4«Ó^ÖŒ~w˜JUgˆQCç‰5"u£ ëJ0ëqPÎ\¨Ý|ª²ŒcÒ¬$!š«-Ô¾Ÿ|Æ€[O„¨Ž¢å0¾† HLšmÏæÀ¶g\Ó?)Æ7¹6‹k a¯2gCTÑ}±x*^ƒ;¤½÷æ3S 2gάÂ{m¡}(‹œ ]V'œYAÑMm_¹Œð»‡ _aF`rßÞnˆª²X!s2déVåK’¤?/$…–¨x)1±ê­êª$É ‚6N±D ~<駨\­ö¬6¦o8nƒÿŸ½wím#I{X,n¿ïb?&˜’)Z”lw·{<EɶÜdI"E·§{ J*Ùì¦H ~ÌáöwìÏØŸx‘ÊÌʬÊâC¢ìª™–,2+‘™ñŽ+=ý†\ýô# „ÂqH…Ò(òr’d#+¿†P äêPkö’dÀ O&™vãŠ[l\à®Ý  3ˆႸШä—hxÇ=]‹e«]Û‘¦eé` ½wÒlÑUGâêÙ¶¶×´ ¢ÄýÓäµŀΤÇ?V÷¶%†u¬×eqÇÂü.r?mk¬½¾hîcq‹'1ºùusN霮„.f2ÆQqÃv›°š+:˜áÞ&ùƒÔ;¬Ê‘­£¾ž¹½™cÞ¯xT•šé°ÆŸҪ殖ÜTšVøCM±ÞmÜ¡ïšËGÃàe^§ÏoA;>KMÝä^pÍœ áMáWQNp2Gx†»™‘Wœ·ÈòÊËšN†C^nÁø»ÓÃï²²žw›ØšBÿðç)ÿu¿ðnµúí×Ì> Aç×V•ÿîˆßð6œ‚¿‘¹ä8jGôë·LËW;:ÓÁDø{KTrsK$Ê„w~=hù1Ùˆ:Ê ÍôZô!¨Á`™fšÃ^»¢91¹|e‹ô0…ÝùYEþ†„-uÌAç~·Î^Ñﶫʺ|àû3‘”¾yº'~ÿ“ÿF(aÐo“ÿÆq2:‚G@¿÷¢×þ»uÆŸñ¿Û¬¥;ü"]9~º°ë2Рç¥ñúqÒz¢×G~øÒ02óAÕ~-½Š¢îðQU¥ãáåÞ°Yq²Ú`Îl2|K¡S[t^áí¶ë?Âɵ˞°Ÿé·ÑtÏlúL´Ü7ZÒi…é&šÒðB‡Þ ›jÐ54°ïªvÒ©§€©NÌ¢Tƒ(iÀ-C ?Œè=bšRÑTRóHþy’ü3ÊÈ”Ê6”“(•m(';Ѿݾ@v¢géw{øn/­"ÑÁ£ÆÅ—”­¾¶Ï†Š„ 5nó ©©7}Sù)=iSsQò/£Ì¹t­Ö|7„ÍS8óbYî8»L°HÈ¡˜iÉžVÐ0ù¿ç›\˜(²ÿ"þ0Qοý&ß{ñ7²œƒšJƒö×›ñœC$2Õ(ŽÑ}ƒlŸðƒ›!µÉ¡?eŸãáP¦¼%%ÊN¢Ûk‡ô—pÚM5K®Ý˜rßsž©NM‡§ëü¦¥¿Q= YµÄŒ/ZO©ô†¨ú$¯pj¢=r<Ž?#§ê‚­âê”Qçâ«8ìk[ÿÅ•KQ‚–7A¤M°‰€v5QŒ3-É9ùþÇ 3ÐDé‰Ê"ß}whw’€)ïM 8†ÓFÓèÃ4{Úºhfj¿~áÝDºÁ †&fÂP”¶±LòÛQºÌ@_>~Zeûðkï10jÝãß·+ü÷㟶ì, öâBsWÆVò vçç´Âedtv3¿ü(4¸uF¨Ûä%\$Ž 0L»DpyѶ•` X®à Jø¤r¯YƒÐÙ.™è=6«Ck>À2ÊùDÞ´[ɰòÆ”Ø_«ãšŸžyÐ݈Äஂ²# ýo<¶º$6é2®xÀ¹F ÀÖRÈò>"1î8âY+Rc.²Ì†<í4ƒ†LvÂ6§ ü©‹FcI¿{âøÉ£c7&èx?›Ž»%³’Ž‹Ðq ‡Ño#—~ŸfÓoã~è·½(ý¶Kú]íë¥ß=úÙNѰ•(’B³dñö¼ÄM”ýÌGÙèaˆj~èkøÍYF©«eñ™Âðs´ ^#"@/”}A¿˜\IñUH±„BRáÚ ^¾«óL¡câ?ãÍŸEiâÄ„]öß)pÝ7Ǧ£½80². Ïä9kžãYÓŸ¡kz&gŒvþ”§ËÌý*Få·ç·}Âl>€ïé”Y 3 EO;Qvúä)5‰J“ØÞn“&±¥IlsMb;T“­R“8c•(ÍŠ¶ƒU‰m:ƒ¬k¡U ;>U‰©í4o_SípUbšý/¨JÌož.1ºEdضC†m…ê`Ú……»\t-…-ߘá#ZWS;výCêÇpÖ–.‘Ÿ+ºDÞ0t‰9„œ§L, ¹$dz4B"á0P&æpž6qMœÖ†'œ!N•¼ò!×KÀ{ô3-‚eh£`m¢—´T'¶ïFàwBd ?íJ¾yð¾Š1”„ð°¥O££šÚ2¤|l÷Íù¸êjNÓΜaÅ?»‡x4æÿ´á  Цçm¼È-ØÜ«™£"E>ù"_Ç3™FG¥xNÏC*VVç¼Î*e1%o`PÞMÿ‹LÅÆó˜`{ö?DÊgÞÕÿTóÃ蘇SÀèmu¦È„x‡” Z€«ÛliA =ìo)àŠ }”$V˜rÊåÔ-œóÀ˜Âk˜Â.ýŸÇÉdÕæ´0n*ÙòÀ‘³‘‰­—Z†&e ®“éõ8nPe—D ¥?ú*Š]Ne:„Fœò¦ÓùõõãgïI77cL‚ƒ/+"^«ŠzQ§4)2r¦…xZéÝ€d’!4ÿôþ§þ`ˆÑ.CãñèM+ë³ÕðÁÞ¼ækÑ8Nl6ƈf™]'Í|a\œ‰oÑ—ˆu¦ï‘[JMR†4^žmwì/+‰_ý 2РEª*œóÉÝ/:HͿұ_ÚõÖ¬$Ÿ­ŠEv¢N"NyKþÅ’bÉDpù5Å꤂|SKþóÝa°‹«HtüÕ'»GXP³õHd­¦2L”ÿjPÚzîÌéËòøÈ…2 qô}q*pyæb}udŸº±} ,k¿ÐÁPŒF>Ò÷5¤K¯µ ÄGˆI "˜-%©È+  ÙÒ á,ÀIÓÓ4ÑX„‘Ù‘qæ% íHع{Ê£R,ÓeUnY§a1ð»àå¦FŒyÀ&ÐoïQ•GôGiâ©_W¿3ACmŽé§èC€e+ V/Ьìžo¡Æ@G™zÖ)¸®šÖ‘/‰£yêâfywî8{{"rÏê–@tÜÛBûu„Ñ>ö ÂDx²^t5鵃Ԇ‡6o“–Úöo*òOˆÃVÍÒ–ó9uhNmÏœä´pN0ë…ŠÜkÛÑŸË“ Å(Sw,\¬¹“^óÊﳈgêx#8Ükv¥5Ç·_á8‚#upLìJYNÕ]7È(µÜ<ý§8,"×Ü;¢h1â9u>†_˜²·Çw¦+µÚ×”æ|xåZüØ%p‰]‚n*ÏÕä¹~²9ü}GÌ‚œ °ðçoKþëH>-·=OI×A<…>õ\Ü·_I{6ä¢t>Š|“£âæ¥îD¼¶¾C¨ üQL¦ŽÙ9FùP–0ív…olú!’Pqœ7©/‡–Ë2ƒ³Ó·µàesÞá›™Í~¿2¦\”FÓ—(xE@1\RâM-Ðc08ôØ|-[F×ìÞ:ôN–€ÞÉÐ;N}ÄÕè›W¥°Z «›#¬F¥°JÏê„U­Á™‚4éÆ!½Ú½¸¸ŸÌnKqÖñl®8›*ö’H*½lxñ ¾f±•Ø»qT÷[Óí½Jt¥âçšQ[ŠŸâgÇ)~¦6¹¡ËàíŸÞÌ]ÂÚdÛÓŒfÌå-/Ju dH_þp—àÄ9>ïWúZyTH_YÒ‚ÒWU©C¹ÂúÈuuìú]ˆbÎå¶i¥|â4zÍkB¶õã¶§öJÄš¶k¯J¬Io¿É˜<θÛLQ‰õ>}‰îPè*݉L(»EäË ¥àFm·ïK²*f(|€rÖ˜ű²€‚æ¡™—’ÇìÓ}Ãå°bX½cÙ+GïQÐôp5/!{åÈM“–·UMK›À’—ø½ j°ëÉø~q^>_jô²¿úkV(+’%R|÷÷—T¦XMÏ"©uÒáÑ(£%W-ñ²üõYÇŒ’¨²ùÔ¬1̃¿èŠgÇ 'ÏÁeŸâ*Äáb:8KV™ƒ?µ}ªæN'øl–5_5™Us38Å:M`Á¿*íÇÑVê0 àR µ½u5ü©ƒ9ÍjiòhÿlÖ×Ï.†m=Úõ·Üþì6lIm}¸™>ÐZ˜:éÈÃ;êƒÔO··ßd"(\ñ¹ˆ2.m¤Í¿²_«+[]Ôö­+‰ Õýšlša· `sn½• ) ' Ë<$  ç (ð‡*pý x=¿{~P0ô@]†:±”ª©Í÷#U+æÛ'Lâ)ÊUݩ궒ã&JËá9rÍÛ.-ƒ¥Oâûr›s쾸ÓlWr%§ áÇð³›§WNÄ7WgÚmbŠrk=ª:ôí^r&éþ­¡˜±ô m'®Œ;Ýþòð„í¥œ%Sº\–á,éPwèê$‡¦÷`‘}ʘ¿¹ÄÂ\ô’r‚ V¢0·äÞÊœ KþJ=K(¬¸L®Áïì>€—aòÊÁŸ¥ P«âÏJd¬Õ‰VV“’¿qð7 fl‚´» 33Žã6DŸ»cB;Àìì…¹ƒ‹0ñ)ÍšPpx»EÌòWÏ÷~‹ûÜHÊ[¼¼ÅË[œžò¿¯[|8 —·ÓÖjU¦á¶U—55°N–¾šÂöSãõÞ4®¥‘´4’–FÒû6’Ú]lš¡Kõ]šºúЙÈ;ôt˜W–•s²Š~nƒV³BçÙ½8',¯Ý‘Ûgc»]$Q_©0;4#aHIB,`!·Uù2‡ çöh¶ýJò†1ù­EìqAz’,˜™ƒËʨ¼×nŽ“[ðœb…éoU.?¡pvc5vvVÜÔα¶;anpg9‚1#³û~Ù¶¼³Pã{²Ë<Û[CžÜj^){¡m©w Ú4Ö·‚Óïè7¯”~§—~‡_T›Ÿ~ÇtªpöATój?€j^9G¥£œW;;Û\H=¯ùîÇ.I0©íÚ:üíWúÆA-œïA¶Gú´ýb=Îc’zx_éòÊ)#^v'ìÖü‚^­­\Ÿ„–Ë'%Úë´û@v`n+Y-u±øÈÒ‘V»ÃWûÄá=‘Y2¬%}ZÛ|2V»òδW ¼{+É¿ÞÒò¯Ã5ª.Óü ì-%ŸXso)K@+/{ÆrK´Ëa´—éoó«Q3D¢—Í[Ø:“¨NClcÓ±¯ˆ5‘¤ú} ôëàTÒ¤Z¦cøªIÁÔ¥¾ÓT“íôåk«&M<ªI®šl§” í ±[Iû}˜ßOfu±V>Þ×]DŠoxS×^Fç>>¤jNñ¯y¨Á%ÙÃ6Ùj_‰èýBº½…vmðIЉ¬#-‰"òcR¿µñ)Ƙ‡²øŠŒµ+2Ö¶™®íh«8Už°§Êƒ'®*)ä ¥|w"î»Ãå’ð c0[è„›i(Õ¡Áœ3œ Ó±J¹az¶ò½¾|L6³yõWÚd‹ij¢|¼§«JªÁ ‹å¨ Ò•År´fnz‡®`9UA++³}+Sà—Œ2m&^ʳÙòl)Í–Òl)Í–Òl)ÍšÏ÷%Í.ìD Îø6øª\IJÙu·’„Yµeó.Y•ºÎüö„^X˜ÁªÝÈ¢ÑÓM½²¨+—…ÏË óŸ:S)x˜Gwò|[¢ EhÃ%Ìz»"eÇ~ΑÍuÇ [›!w1s­fïµûòY¦)· €æ*=B·Kls¬ç¿2GÏJÈbÊ?A[ü±¦o\6E7 >‘Ü¢®”[kJ% µÈòEÜûtºCÁ,P¾ ‰l=¡J)ÌÑR ãÏÕÂl·ÆM–¾²#QkáR–ÂûÀîÆR¸@ÀFZ9¦í>k¶`%²%D²0a*„ VŒ,#ŽE«Fæ*•œ— Ï/Èù ’EáÉ¢ì‚d^ðáT$+˜nϼ­ÃÒí™ïä±°EÓíéR þn/Å«nz¦½¢A9›kO¿â75×gV}»½L6Uãd=¼.W·ð\~«L àX$Ut;'í(Ó¤ý{LýZOKî¹9×3=Ãx†wUùÅ­·2TpélgùAüÆÏIߨÎk]»ç £^,lš„?rÂŽðFø&íôwòd—J€"Ù[NJÌ_ídVM3hž—Çz‘¤áä˜uŽ‹|Õm_¾êâòÛBÍÚ©‘ToZÝ`&< Û… ™Ù“« V23=2ꄤ4½‡'ìÙz|1E yéÕ˜ÞP–we&-0æÆfHz´\OËp‰¹]-Ÿ¹\-õ— W/+y±ë,T0fÕÀË4˜e‚Ï`çî°`LÉeä™Ö*¡}'LÌý–ÒÚ_ó²¾b®“ö!×—iK£mA†ÄfÒ)~ÚwP&èôÎ+^V^âßï%žé‚R^âå%^^âå%þ /ñ‡tQ‡*‹r •‘•õ`mæ°°.Q­ÌN¥g¼¾žje¥ùô>̧ÆG¥ñt5ÆÓ [”f÷´¿Z›™ªPáš|%8óû1±P›Xi÷*™Y =ß<3{y¬—•L P[¹ÿë½'²¶š:¦ïÍY¶‘âѳí~îúi†íÏŸ `ý´úӲ̫(Ç«6 –¼Øò޵l±Ì/`8‹×5óº ±O¶pi³eˆBa½ù¥ÍòÌïNï§r"…•6s,;eøûÇçÏè÷îÿ›ž½ç»¬¾·»÷ìéþ³çðÅnýé~ýùlw“±ŸùtÖŸÀTþöçÓŒvÐì: :|)Lý~(Ïúoÿù‡ÿøÃíþ%;é²÷r‡àg?ü_ðßü÷¿à?üûÿ„uÙ8?ïˆâÿþûïV“ÿ|þ_á.¯õoá:¯ýkÞŸô³Å?üë @±þ˳ÝúO{?ýüì—nÿº?ü²‚—þˆý¿ÆÝŸ»ÿŸ?ÛKíÿún¹ÿïäỽÛ;èœôΣ#ºÞñTu7ÝÄôr|züøüëÀ”÷vvX«òñ¯ìj2¶›MÆ(ÅǬL1ÃÆ~mo š™SÖgÓñõìs3¤Âþø=ñâ yöÞhð©†7äy<ÇUœ¬êH}ßfñz< úì žüã¯UíÛñp<éSypz¨jˆ¯YkvU«ñÎÖ[ýß\ {©®èZu‰¡1ù0¿±g ŸI>4:?z}Ô1˜€‹ÁI€Qõ–tÛ˜Lú_C{ØWضâNš'íÓÖÑûíúsÕ¤Qá£n#GsPá£ãÉÈøÏÓùäv̤¼äÿœ°.½ø¦äÃ9ç2?J_ \Ó¯ÓY|ƒ`þ<¸Äphc3©ôiÀ¨ïõ9 ãóç1 ·AȱhçâëN$…6ÄÃ{úyÀø·-Þ¸~1és,ëÛ³Êú¢“"PÍd6†ìvðiLŠ#ìm2þ |Ù,ž\~ìà\ƒÁ±—ù¨ ÖrÝGÑË@&S~ÉNaÚ-ø¯§Mû”Óèm<¹™Ïx®>õ*f2š²ùh0cÃñgôºœ ú\´¬ÒzrÐÛ[ãÛ_ Ÿ̇´k”æg@P©iø?ÅÒ¬˜@];´€’"% ¹½‘ ’Ê`Þ’4¦ °8­Ñœv€¹U6¨Åµ*ÆxrÅY6OÖF ÇûÇK¶+&F(-28—Õ?"§pƒ'­DIh½>'9‘ƒš[›KÃÄ8¨hJÚ†ê㾬²«À’¯ î+Óêz2bèÉW>%AÕ—ãXÕ–V °ßú2˜ñ—8L8¹P–§ä‹Á¿û¶Ç-Qévk»÷ µ#âSÊO8òø1BY¶p7¡ïL, ‹hÆý+ÜI TûüÀªñž¦7ý/•:@Fô‡õ/*²4DMh⨴a×^á¶GfX[|—Þìô½ Úòú?÷§ú1pÅO lIÇé@Îû`!’8¨"iåR…:;8;!T'™ ®ù5û…\³Ku6‹Þ+¬Ç5Þ“Ç8Žõ`º/°Ðú%ªm®çCZÞàïÔ YÝ΀/o°øé‹S  t…WÆ`8Œ?“±ÞË?¬^ “^ePÇhüvÑð+e»5Ž\ǾâÖŸ¿ˆáüåÝ,¾â.ôÉ–¤3]öœî@ª«€óþ¼χW´µ Ô /WñèÜÊÑ x²ÓÌ/¦ñGïÏ:Q£¥ÍûýQç ŒpçWâ·‹a9Úµ\²WóÑ%¿ƒt¦¥su›IÇíÆ{G/G_âKØÊØuaGÇŠù‘k8§êDÂxÃ÷obä`|WhêÀµF»i]  0@¤¸ƒ]”ýÊžý œzø,‹œ5Ð?Þ÷îÓô»¡ïþhj ’%&º2ûURŒqG29mÎ>ªºÝxRðÓû}M×#'ébîFØv“þhŠüí£jŽãQ 370àWݽ»'ÍÝjSÿwµÀú¿§Ï÷JùÿNžRÿ÷]?ºþo=»?gÿ?ÝÛ¾¿gïÿ½çõrÿßÅ#.aKÿwXÁ-=*Ô‚áTÌ¢t6P6c¿­;ˆ´ø¯NÚ]ä»U6ß4:æ¹®êÓ€¨cìI›½0bªˆ¶ñð¤wÐ:b§£æq÷øEÂ8JšÄnµc¯Â'´Í½ *bfÛ¬5•‡–ªÒˆDµ…h¾…ˆTJLì¦m¨"ahÛEU H‰š*QH" éE‚ýG’ɘ81 KdZgñHãrQwÓƒEv_·Qow9ý9ÿâÏŽbY+ïÄ~àºGÞ’«M͹~þ8¸üˆß p òèe|;C="pÕßÍ`T¹©Ž¶ÒÊ¡*aemÒ!õ'_•VSÔSzgªkÍVBœvjžhÒØnÉ4b¸» ©¯¾RrðÁý4vF çÏàPÓà-ÐðÎ 6]ÅÓËxDŠ RAJÁ~0‰Q­Z¨a(ì£GÝ¿S’ÈÌò’jË1‰C}.ÊC‰OhÊÞmo¿©’Pÿ.@ÿŠûé@êeÔÖ߮뚄îm|9¸  n¹€xMÈ‘œ°&¤õ¶”]½¦ æQãÑ FíÛDP¹Æ'õz_ŸeAúª(ˆê;Â~h·RC' §Þ/Öð'k^Š”°;ÙXŸAÞA„3­á§"õîÝR÷ÐɾF:Ð;A õRE„ŠPZ6Ë@Í»s2>Ò0:$ܤOËh#=q,=âÔa‰8•Pò'<¦èà¸ìH{8ž}D"@´o‹öá–1ßD¿¦mچѦh×ÚFqö­Û cÝèNºþÙàšC—(ªÊ¸ N'Ò8¥éÌ…ÇŸ™ç“¤‡T\®þp£èêó`oý’ž6¹Ó¼W1í¼SdÞЗoÒ=VÅ5œ¶¤mX†üˆ#£™ä&\Ñ‘êÁý Ál2þºn W[Z?º¢eýH1ÏiªEð·nS/k„¶ƒ –§$pÝÊ` '¿×å4zö4r¶M¯Úkž˜UÇéÓö–¾ðJ¡/Ôœõﻌu¬¿‰Œ%b®?M“½hó—Ö5oôê!ãâ7âßca©Çs\;!qÈxÚ’¯w<ºÔ¨«·êêÕxO€Ôú/0ëØà é \EÓ¶˜1Pâ—ydk§öÿ2Àîdùm®Â{u=º/i»ËÌS'àháãkx„üˆä`\‘ïÎk¢+* ËVÑ/)hɯä–S$Ï{œ¢ò4»#ÑÀT¯’*`+uU¦ÊÂuY 5äÝ!|œyz 11Ÿˆy %:JÚòî`ÕŒÏwoÆqùñ:zŒ^V?ŒÇWè€3}À¦Ðx°éG2¯ò´œ(½‡ÄÓYL~K\¡{89Ûô5WîÍc x”|§Sä®~Ñå>ÃËd„:‚þðˆTj $Ô¦˜TL¬ž8Ö»™}„±¸Â¢¯obi\}pA™Å“ÉØàeo0<âòÏ8râ  ëÓtεaÜ>(`Ò‘U˺̞m;¯³qý‰‹«‘ê/$nwê[ÆÉ ÷0Á7Àà›ÆtXvªú#áO•Dý9üØç㩦¡@0Œàò®ài £I€C~Ùš¤vÀ¦ýÙ`J—ÔÚÀT”nÌ3ò ÝFÿ&vÊâB‡f Ž´”–Ab •”\Aq¾¬ƒ…±ˆÅ=,Œn”‹Åï‡],´6àn WB;UÒêÇñgÀÂÈå¡#U"“¼s`§ 0õˆ„ð ݉=>R:÷ðèÆ\½ƒ*¢ÉàV­yXfª^÷Eê«Èq(ý WîŒqªœ4­oZ‰ªEʼnF§N£}d¨†+¼å9Û­íbì þÊT®b—ôFÝxCitÚ_>—œ©ˆ™ˆyðAê¼o‡ò¹5¾D‡R„kh¼>n¾(¬uÖ;êü³Š‰+z ñ«ËGü× ÿÕÍÒ(GçïøËïÄËïøËïøËïº~Ý:%ñ ”%@ÜÄã‚à'ý'¬Ýf++Ðé¼Ñ«ò°:þë ~õT¨lëð·Î¯ñ»—ÑRñIð‹ÿ‰‰@«,jöðžKQ'«›¨C!}_Z~¬óØ)mvtÚ•aU^t’E!ÛpØkS Tå«&éa {2ñаjâÑD§VU$Þ¬Š‚õU^ì3`ðýyBQ‚úMýòxÖªHQTUݳ:‚g¼aû “µD‡G•kwta'úi÷¸Õ8ŠÞe £Õh7ßÐ:¢×G~8Ò0UÑ]Õ~-½ŠÈšÄÎ:çN°óë'šw5ªá!F;Hæ%j“ÿ•ø†Nø†Ö,ž( ë º©]³A[ð®j'Iûþ$ÕÁ‰ÙA”j Þ™sÄ mMò]7Ý¢kõ!fù.™å;m–ïNÒ=˜Ó|¥[hóä‡w’ˆ=¾vêZú]‡Ãñg„àTÝÐU\2ä€|Ão‘šy¤üAª9“c¦üæ|ùßn¯€Â8 í`x½ËÇ”¡IMC®JÈ4 òì.Ðÿ³m;u2ñZ˜¡…VQaϫ¿öðQ•«ëž<1}dÉvdÔn«’Ú¾R»<][ÏŸv›‰tïuVi§kjG|>/á@vçøSPŒØcmËÕùŠ€áÁL%'ÚÉNœ½Sg©¼ú tFIvòˆFÛYZó†MÎ'’ó¡Aà àéG<œm[îñüsÄœ…0Dæ<í©/ˆSMŠ«D3Uô½ïN‡­è@»„ÞåÓÄ^6Mœ<NE~ò ù uøH@vDÐ¥?àÇV—Ä']f<ž®ÑÈm)jó>¢"š³0¢1(6‚¡$\1!ïv”Mi0µT‘–Am ÆH&Èm?˜ÜÈ”áè¸×’ú 87—:3×NþÝB‡íÓlêï–‡­ù<,"Oø$"]of4[”¾NréëY0}”ôÅ}Ý÷!ŠÀ\ að σ)»äJ’÷[äWHðBœÂÙôÞ¸wN¡½(Y·K²^;}ås ?Ó×=q %}=àcs¥œB£§ðs0eo§P’ü&ù% Þ]ŠÅ‘VŸôø»Hãý:šNg8?wÉV{}Â,*¬ý8›5Day!ç#pÅOL³.•º_Ÿ^@ãoÐI;aÉ‘Rl:íŧ“µ7•ñYð„…æbrX˜²3éÕ&ÖÄŠ½Kš]Ë`e–´(Ð’Àž×g•(}É´s™òT¶ÁÚy­³µšÒx!¯`z±O‚v˜)MwÃ(nJkçì5{’ŽíÖ3¢e2†'G€-ƒȰÌMÓEÖ¢í`-Zg¡Jˆ,xºoÝ\B[ŠÎ|c-~ÓŽI±0 „./ ’gK@Ìfn š 1¥e] äè ¤FíyˆÔè6|¡EOε“·Ð‘û4øÈí–DÎ&‘'4Gä \£²ƒZ6•”Tf>‘Êîï(E`®…°C jËs%ÉãS’ü=äBüÂÁüBžöwMd¶'dU«$kõ¬›ÊÌjÁüBIeøÛ#§ø„Š"uÏ2«RÅÙ|pù—ˆ1Ää$·ãétp1Œù¶yx!í¯Èj˜5Æës^~ÄŒ¯—ãÑtÖ×£ËN1’šÇÅSfµNQ·ö%E¶W’&‰ ÿ{‚¯Š¦¢ ðKÊžñDe[ÀdT7í“ÐÉ,8l<ŸQá  V4bÿCT¾å]ýO5?Læó€}½­6¾Ìà}˜×¥l̬¦"KSšwe^;D—wR·èâ÷tµ^žiBÖì5§e–à•4bN^rh™ä"kèôÁ¦i«A ”ü3àðØr¡ˆYXríL&qDü_Åò¬JoÒÓ<Ü0–̰‡H@ÛŽÜGnê?åy$ôÔjè§5CpÃUQÕ2Š’ì÷Ùñi!_"˜¹v6 wóîr.¬ôV(ã¿Ïíý#p•‰Ì8UE~_ýCvÑ‘ØÒ‹“ðΣe Îîr|ûoi*è9‰×—³ÜžUò8nžþþê‘M‹²è ³¶@EÒ˜=D™w¸•S½!‹;è7oz> d äÎà$ØßÎ4"t]Œú0öÙ5qoÃc˜ìÇç1qÜqÝSö4tõ   'ôXüöOŒ‰3ã¸Gõ+ñþ¼øŠàŸvŒO“cLd”ƒ9BÃŒo‹D,ËZL´‚¥D«ZHê¬d>íkj4̳pÚáyâœKî\G;S,.ÐÜcÑC:c áxYÓË\wlÄÙž„÷Ewn7ÿˊܱù ðJ®V7àTîà‘¢P¹’þmrÇXªÖ;{y$÷RG²¼ChJß® >˜Ñ„BçqÝѵî×’¿:s²¿ì.ÑOÑ0ýk¥€ôknñƒ%þö|)‡° Q„9¥IŠÁXÙ·°’!Ÿ°P…9¥”4I§8®@L fxy"ã)t›àªÇoX‡Ho9.pû˜[®€NÏF;<ÁH»c<ûIç˹77§F‰Ÿ™Ì»sŒÛAp{.³äÜl·±5ð‡H Í·3æà&ÅÙq€âŒGÊ(ë©ws毋šÉÜÓ½ ­-4ÑŒAO¢óã¨w”Æ——s?9uÚá¢[Þåïûn7Ø. ESÍÕ~©¹B.ùv–*ò!_ìaеu¼+ámÕ]žÁàæªvC!”~íþ.èF¸h‘V ÚP^ø^n/u/KT(­7-s¡øpüŠ‹$W‰ÌŽ–×ÉEa*9®òüþsÄØ|3º¹Ôj6M=·èK |ÿaièЊ9ªõ¼¬nN3—¤_)0½'È}e:;ƨ(úžâŽ…§TÙ=(•´ði¯¦SÞ@Ež¤ÿ äò}ó—›¹¥6s²§ª} =àÊÔ°«!6L˜ `Î*fBøÝyØjþºkôñHÑÖzI|Cô¨B7—é’ÕO8F×$ñE>M,`2—È=GI©Š]¯*v¯TÅÞ¯*vïþU±ß]¶6Q)À‰—•"Ò·/"­šJÑ(%-¤{{¾ ‰§°œëBÚ~Ô^Å·•€ò¨#ïØvŠ‘.gkã<AåNпEx—/.™4ÂP¸.#Tä3B‹$¹V¨¼n7RuÝÑ_¬HJÕ‚µ‘Rd®t«SÏeµbË8“³âf+¶¬åŠe¯ìù©'ÈbÅ‘0Ä6ÅrO,Ûjc—mœa9ö–araÁV(M°|‚-¯ngaW[„Á–àG˜ËYº€´ÁòM¤XI†G5[­ô!çàWÍB„v÷´³©„-Ì<° Ù„åŠ',LBa¡B +êuÍVc¯aL6¬€ûuÞ )åÉ`äÈY¦œ­ÊBÃVa¤aÅwÙJL5lIk ÷ßfaœ=[sÏsäf,¬(ÇÎòè@@}9Kó<øYÉ€e[ z+FN>ÃcªíÛ–Ê> ²7Y“SUÏzøIÏ%±lîvY…7ËÔy³U—B0ÖÂ4¡lc¹ÖŒIè®æL4àæî–6Ç'ÿýrqvÁp¯_"hèæˆ†ŸzBRðg…8[š¯\ÐãŸ-©gËÉ£æ×[HEΖӒ³Â;8SW|¥Ùp·N‚o’Ol„žÀNE.[!g˜SÆJt-¬Ðe~.ó¨uYª&ÍŠkާ:Y^o›p`Ç,ä«oé½nk—VàîmRá.wÀBÜõ™ÐB÷¤RµçSª²P]±ké|…Rª®jùaªæu,Þ§ºQ“÷´¹/±$ÿ,W¹ Í×Åó¾g2Qß¶>¾·}|àJÂÙV¨ïiúø` .˜ý^?ý”:yóñêä‘®SzlõU(–S+½½ý”°€PÆR÷ëžWÝŸ±èôäXyøÄó£@˜mf°EEÉgj4XìàØOwehX f+64ä³õ¹P_h#ciݶr–«[?§«4­}3Þ·€ßq„&ˆžÜx„ÃEmJD kÕø¢S:ÛcÐV¤tX» ª÷-š Œ›-upn„í20†%«¼®×þé g e÷6ÃüRH;ØþÙ}”¡qð¤ccw` ÍËÈÆî)º¥˜qt ÓèRFÀÂf»%ìs!µ|Ó]ÝRZÓ6ÒšVF·l®%ÍË6,æ¥4‚ÑÊb†ËÊ‘ÁÖhúºÏøšoÃì¾[ÄÜugÆ®E³°‡,å­Ú€Uè`¾ÃUóÈ}ž=Œx¨ïÑ•~¯4È<(9'c¥A¦88sÅÆBÉ×X¾À˜™…¤`c«•™3›{n›.…_­wiZ8GÛLS‡ÓuwR+÷f# NgÆ6ÃJ´aãŒDߥ±23QjïÉNTDd°-EK‰ é¶^KQn^´Æ ò¢ý˜m_jäåEkoX^4ª=CÇ2·!•9ÒðùNr¤-%j}+¦¥ŒI,.r•i׊§]+Dy:')þ^¹€Ú.=Y™vmLP«1 •I×Ï’4ʤkîg)#Co I×î:´#ÇÈ n°`#ƒ+éZ#Çm›/ìz2¾_œÁ áy^eñ\é—K;GÉt/ÊNê¬dÉFj-ÊÀ“ ´7|['E­ Er|ß)Φ÷Í–ùàŒgýùà~ ÖW»óÁ-¯¯^S>¸»V\—¹á¬§Ì ²¨27\úY©ôÍ$ŒË˜Ä}¸~Y:võÉCÊè!Ììè!gÛÍ"Ëtse¤M™n®Œ»)ÓÍéÏnÆûÖ”éæ2—ùfäîÒÍ-g|sGø÷.ý”IûŒgóÍbeÒ¾5$íK}èà‹Û¬Ö:¯±vtþ¦c}E6´ú.Ñú3 äHÀ*ŒÆ3ݰfâ¥_Í£F VBoDŸ«FNˆï*F‚OH€ÖÄ—±¼ƒÓŸúïݼëÖ¼eM1-䯴Gé#%àF5.R“«µi/T/™©Ž´N/Ž£F%}ô›[¯=²ÞU<L„ý“ 8YÒ "BU©·Ý‹š=eð·ëÈ=ýƒ… z]'Ç ³qµ<›Þ—ÚîêPœ!.ß)näj¹ ßI£g€©hÇ£ÝÒˆV“zìn€±7ÈgVb)&¢ ‘VÍr¬±=Ü|È™Ë6ö»ÝGï¨|1È)âÍÞV•ÈnªLØçï)øN†miè¯xï¬Êm%8°Øn~ð¬tjrŸØsŠ:éc\¾ùšïúŽW9Ò;×HM8VìkFËÔìiŸ«ÂjÑÉyMnüZ#:¬iEúh2W\Kê¬úÍ!î#Å'‚¨–v7á÷@Zâ( k¸¥Œ&ž×€Î…D ·QÌýNˆúGʱΉâìÓfS1›}HÝ5bs|+WàUéAë#¬ñ]mEy­gi¡ÝüÄFjƒ}ìOÙÍx‚Þ¢ÃùÍhÊÝ\'ãÏÓò¼Abô~¥ÖI©×ªìz0aÂù9"¾YëÌ”ÛYepôã´«õ?õÃþÅ06°"LG5Ò;¸ë äà ŠY%J;ù¶³êD §þ÷Yþ,›_;=×ÄÚ×Ú> ^]CÛ­*ä›^µÎ²ÍxEô»š]oÔ¿ºñ DÜ΃;² c;eçÁ"øl/wf‡ ‡üí4븕I,­OJIÙ¶JÉhS«Ô æ—uÝRû1ü—‹sz±x©_j/¯_b«R11§–‰é2¥b›³]üóDLMÀIm¸ ø 4!¶§Üh¢¢˜Ëá"6·º)¼¤HÜ%i0/z\ *!Ùgï½’kß 8ø[zå$"‹›Œ¹ÇÙËiîJ³.fö/7¹<~ :å`9IÇLß?—îÝÑð€­3INöoMÜËðjËqiË•ƒX(ĜҤÇ`¬ì[XÉX¨ˆÄœRRš® ;¶-åÕ¶ðn·|¨$×bÛpZE`®Ùo$Ô+m¿Uq©èT—Š õ!XÁ[È’–œÁæá‚Ï7ÊåµÐn ÛYþQNA‡Ë:ÅÓ©¹v”vB¤|BQº%£Óæs"J¹}ú#j  #ßäâ ¸ý4ê¡ø1®çý¿L‘×õ‹tAá®Þb0-V%,¬à•6ót Ž´óQðÆ'ÑùqÔ;r'´pë¶– Rɽø}ß­ãÖ£~¼_"Cÿæö¯ï/zË/žÃi£oö0¯OÃyªþl¤Ž¯çŠgß`ÅŸt½Û8‘À7{=’À\‚S7¿ŒÎpQí÷¨?Ì„3±—™`ve)ßkòWY xˆmŠ4ç‰fõ*þ`™a±¬@_ë f]D_[4¦õ»V×.¡¯}Zêk}³_¯¾öéýëký…Ö$ò8³‡,ê|߂Ϊ±[ 8¶€³¾ý;^ît?;|ñµ Á[Ö#_Ò£"DßVršº•#0‘ž%eX;gó¥;òŠÿN¤ŒB s6ÈæÔÓ)q›Snˆã&§®;ŒŒqÕ9#žûŸw=! ”sð”„XØ7C±U€ð£ìù$ òæÄ’òÂ!¶&–k-b Bì%,ÇÆÁ ×÷ôÄù³|æŸ-¯ g…s‡.+ °$»4ÜŸ ˆ,_:($-gùH³âD8Ì‚=¥Yˆ|ÁV"p°…¶êŒ [Ü/°¢~Ôl5V@.aªð¶‰ÅÂòWf±ÜYVüå™e]aK¤¸\ÆÆÂÖ… gÓ¾ž­ÄŒ-f`¬l%‰-—ðÝf+rßf‹'åWü»;:óêþÃsÉ¢g±´üKªß µ»žDnӳ⯖™ Sw²ÉÄšu˜B¸ÕDVwd b‹¤µ^ämîÏ•èðûâÿì„* 8/'P$ÙWXÎî´'üYFMΖæHxçP­y¡¨9g &¦÷èÏ)Õ|*2sÍh¿Èþ¿o^r#ò¢gÅÉ‹¾Z¦1Ý6¤dpFºZ&ô¿Ï²õ¿'w¡ÿÍŽC°#òÕÀxšÞ"¸X%à½íBª`ÃE¿]8…øé3¡ÍÖ«óznnªsv-½‚¯<†¥¯lùa*ëu,Þ§¯·Ü^vIþY®rA›¯Óç;}Ï䦾m½þrņ½zý5^‰^¿÷X©ùÍ­V¯¿~"*uûæãÕí;Ë1¯F‡Ì˜b ”‡U´QTDc ™ ¾›šÎÉ9äXùBjÚU”Û’D¸M*:œPÕ]Y0.}—椰êÛá[>ÙðiÀ¯ðhO»v-k6ZengÓÕ‹úŪ¨™¶Œ¥ B·Ù¸Dë6A-ŽÂÜeˆñ¾X4G;Vi¯ê}Cöª0VMâ-Ë^åg÷½…¤[¾`uÂ% ×e$ ÒkJ…zú›‡gªsüÞ·éî¤ÕŒI”V¹UÂt³$·Ò*§^/­r¥UnµV¹¥ä#Éq-Lík•ˆ+ 8ç›÷-ã4¼µ¡¤EÔSÄ"j—~( ÝZ™A4»À YDŸ‡&gËÐ÷ܳÉ4'u»§°™bÖÒÅm¥Ž€(õä[ ØñŠ˜`—0²å[óÊÀ™õØV8óØÊÀ™Í5®9c¢Ù†EÓ”f1ZyéÆŸVƒ­×¶ˆ!¬4ƒ%O°lé»VIo±´ì!Kz­")²ú(ºé˜«hZ5¶æ0ªÒ,õ­†Q•¶Ï$JÛÌ‚0Í‹dbcùRcF26¶Z9°§[V¼#n¼ŒÌÝ¥•gÁDel£¬î§àôqëÓ~¯'}Ü]«ÁËTrÖS¦’ YT™J.ý¬V*úfÌeLâžÜÂ,e½úäaJKe|‘ fÎø"ç ›%X–9êÊ`œ2G]œÃŸ2Gܺžb%+sÔ•9êzHæ¹bÁ@À<矆7Už˜…ÚÀ=B¸†P<ëLŒÚÝp›t‚Ò\+}x6`×Ù'ø`hÍ”­7µ¤¨”á„à̉|ou³ÞJÉ i3‡€_Ìå›WHIqï!@ÙØôvE<˜îâ pîå¼–V¹—31¿•u8Y·¥qÏ‚„þ©Ã'ïÎéßb½˜Á[³vÒ©É}bÏ)ê¤ý<´dÊîæ»¾ó\ŽôÎ5RÓq"Éw]Cñöé±*¬œ×䯝5¢Ãšö!Ñ¢s¥Áµ¤Ëª?~È}¤øÄÕÒî&üâIKä SÒœBOñÞBâ†[Ð($D ý#åÿæDqö9³©˜Í>žî±9~Ã'¹b´Þ9œî¬ßìV´V—ÇYZp7?QrhôFWc6½„û` ˜Å—ñtÚŸ|U/à¾>î6[µ£³Z]nãd ðm#ê´k¯Ïkǯ£^Ûºt‡­ô {ýH&mâ«ô2€ó8jG€®ü#\Ö¤(jÑQmW:«šò€Yr¯s± ×üh>­óZ·Ý Ÿo¼^­`NKÃÈ¢ÉN<›OFl|;ÜÀé’˜K¥e¼žlQÞ5Ò%pC÷¿u~U_uŽÎ{äÆ9‚ce|Ê“î»C};ü—îäöa =©ýñïñôÓ—ÚõÆØÝÝ}þô)Ãß?>F¿w÷øßôì=ßeõ½Ý½gO÷Ÿ=‡/vëOŸí>ÿí®a.©g>õ'0•¿†ýù4£4»Î_ S¿ÊóŸþÛþá?þðC»ÉNºì½ÜøÙÿü·ÿý/øÿþ?a]6ÎÏ;âŸøÆÿ†ÿþ»Õä?$ŸÿW¸UkýÛÛa\û×¼?éà‚ø×€bý—g»õŸö~úùÙ/Ýþu2øe .ýû»?oÿ?}ŠXûïÇËýßíÝÞAç¤w~ñ›è}…½j4<ï4¢.é%¢Î›nÂ6^Ñ?àçñéñ»Œ[öè¬wt $0“ÀÉàKðã=þ†æI_¾‚[¾ÄŸÙÁˆšþl;;¬ÕùWv5|Š'l2F=føc ¼?Û¯ímA3³ñ`Êúl:¾ž}îOb†› ÿ~OÆŸWÀt_|&t𩆗óy<ûÇUœˆêH}ß>„Ñ ÏâÉ_ñ0þZվǓ>ð³‡ñ§‡‚DÔxÍZ³«ZwO4þß\ F 6‹âj5Ö.d‘ÆäÃü&ͦð™`šo@ÒQ'm w’]ŽÎ^ë-9›.°É1I¨!¼t‹wOz­#vÚ9jwO"dbqjŽÉd“Iÿ«k®®ñp*l[±[Ža$¨ Pøý*ùHüÎåð’!š'íÓÖÑûíúsÕ¦Qá  ¯*ôçA…Ã${5Ðu…ÃGL€ƒÿ×:êè5Ý5}½ èè·1¬w‚Qžh OÖÎ>†C ¯ÔtÅ®âÛ8A¼èC‚èßÕàöuä“&€ú€ò¯ªDˆ¢=c/ÂiðrÂÔ¾:`è™`€÷äÖƒe¨&-8¸)’µùhKÐÝžA/ÿÉFlIì/gÃ)I[¿\0«ô¯Ñ½ÀZ¯N”°’i‚Â|x [´ÿõd„-ߥ§ü®"¿™ÏxG|˜*:ÏáWóÑ`Æ`W ?ÃdÐ7”R²)‚­Gs¿½5Ú ì ¦ã›˜õ*ƒê`ë%ˆÕÓ1:HÌø‹ñXíð«Òzxø®W®rB’ò”#øUý’ jì©ëó`s¸rØIoÇÝf8dåæ'‡¾œ%£9]•‘ÕÈ<”àb_à€Š”-S=À€C¸Ù¹ÈMÿò#ò ·ø"2 b Ñã:¾ÀWóî#è{<8k €Ó 7͇qŒ;$YœŸ¸‡õ{M¥[K?Kûd΂£ð9‘0+ô´Fg`rØ«SgF}_‰Î爦4 åæp‹>Ÿ⹚&6‰¯aòxyeT6à”>¸Á³Z"Bœ™ò°7‰Ÿ–Õ^¤_]«P»ßH˽€³ÌÄÜžQš›ès_žòßãtq7Üûq@œèQÆç„:!:[¾óMÇê&€m»Œ`Ìïj¸¤? PÑ,ÐqÃÜcs¶bŠ#2®5þðT#€êVÂÖm×uÝp÷¨òzcNŸÓ©½¤ï‹älåGô\`/åÑlò•Ÿ ¨eϪªw£‡éÇñ|ˆ¤¨wdÜbñ¢9šÞü%/À…y¢†m¼¢‘‘Ä­9ëFž“ÁèH>@Äï∊ó0¦ýHå"ŽG®·ÙÓIe³`CÐÔ¡i6“²ZòäG6¾Bl¥@@<ù>Iy¹^ŽoÅ^pñAñÈÛ…±&]mÎj×ü³F%–‹6Eê$jTè8«^¸`¢øSú´ÁÍ3é¦È5oYíÏ©=qGò•ʹ¯qS4~£5nŽGÎ?н¢½†/FâE¹\!·è}"ä“ Èæ¶«pÓŵª8 ®Ô-¥÷ ]XûÇK¶+`MfõEÝf:4àS²IòÖµQ\ã]Ò,pÖœÁàÒŽ¹cÔ¾o^(áH¼álÙT-q›‰ ÑÙòÀÕgòŽX F½Pê0î_ቚІ ¼>×ÔxO@n7ý/•:¤ºW:Õ!œC ï•EyeIÊy%ä^Þ{_\΄=y)ê}ˆ»iª]NS`½9GM!|ÉBn×_'Ö~»µÝC„*Þ „ÿóΫšv“%t`Ÿ×|ÎÞ»Þ }µ±L²3D¾iX|ÞS’µ‡D²|ǤX¨ü)mÈ”f•iÌyã«D…!B<ÍsþÝi›ìÕ 6Ù«šè*½Íˆcqn3©¯Kï±üíE½.¾ÁnŸÆ2|E7S 9·×/ ‘}f‹)F!b0±çnϱ‘iŠ˜A|‰4”ƒ­€m¤-9*W´ä%öÑ}Ï9ëÈâ§¡óü/š‚#‰pˆø«1³.4[¯TúÃÏý¯ÐédëW}Dª#£ºŒ;@5F’#KdŸ”j<âîµÇ k¼Iì\þ0ãé,Ç5ˆT¡5Sãp0Û€«)Bu2‰o‡ýK¾#},EÒZ téÃÃàÆ~aãD›Ä…ξ1¼EÒ‚®¤"MW)ëCÞÉwNºžÏœWS j/úN”AꄃGÕ”,®‚Пó8ª_1ÑLb ¤q Ƶ‰âˆn¸ÐðJÀÙqŸ .6ÝÖªõÆýË,r…lÈçÙATåÚÔO±@Lsµˆäš›f܈€µmœÈé@WÍlä4—@NsIä4ýÈiús` 'T<¨¢,™+¢¼iɱò68¨Ù/£ÔdÀÖ€fjÉp¿X­5ýŸ)¬iDK˜f½evðö­ô‡æMsÁ£Ú-'x !`QNð Æ{JóÒ마Ú÷iÔõ 5ù.®2Q™Û¸VB©¹5¸ã±S³ª+PG1&‹ÜæÄLil])Á &Æ%hã‹¶EÕÒÓŠ˜ÊùFô—¦ª¼‡jÓ礃µuÒª"÷+ ÷5ÞSš<ÈÚ¯“‡}&Û#)³@³ÄdqL±ÙeBCE=òo[üÄãS3Ì8)e›eÕA0±Ûþd6¸äV¬ìhw«ê™ je¤_8P z",U¯5\ù`ª­ÏÜáÄ(KÍT_¥ÐúŠ€DÛåJé†NÆ~ ¹í©#‚”šÑ…Ì1t!Ò% öw\×{y_ùs‹U&î?(.V©Ûµ÷²ÉÌ~ÞŸwzGRsA\´zçr<™ÄÓ[„ªÆ4”pðøsË‚}¤­…[0“5pŒ} fó+EsÃ=5äy×þ+´®>¿-€£òúqu¦w"úÕ;þjåÈŠ7‰‡ƒþð }ƒfzK\p„"; ¼8¼Sî%’=úl:´ƒØð¾°7A—Ð+¯íUQ¿G°XdApMÜVhòðÖ‰Iï…Ó• ¦DG=½é‡LÕ'Ǩæá÷UçSxúð à¦ÿÈ|Ô/’Z¨ÕäñE1 å²sÁímGÂÐï&¯>)LÞO²¥÷íqS¢ÖNI.\ùbö1­»grSil=¡ß½-nþœÚ¬A«%¼þFm­³hNl(žžr@t<ñ:Eëšu:ë_À<3Ø Au)‡%ñyE¿<·”|oª¸MØM Y~|¢c»‰û’þÌÞ¥Ö˜v†þ2|UåØ-:²¸ï±6|ëäõq³ÑÒ!ÓŽNP «îä7øF¼îðXŽN:2\Üå#L®ÞÔÿ[?íÆ{ ý:ÁØ/-ójâ]ÐiÒ·ðë8+2 æÉ›Ÿ¾{ÝùM”9 sô0‚²é«ùè’“axZ]@†ꇭF»ù¦Š9;¢×Gü÷yG´?z ŠŒþ¨»ªïµŒÙvçÂ3M›¯c€÷GƒV£ŠÆ túMà‡ßWݪ0ªˆßYéÂyšÚÙë#ÇÔŽGp Á™wé‚$ÐBç8ê7“ €Dç*ãËùŒíî ö³r>WÑ¢B5!þäDŠõ/œ2Ö¥wû‡Ôœjp”4àô´zÜ(F¢L¼O;TUÓ_%ò]ŸÖ^5ZÝ£Zò ßn©o((:ýº˜œ @ÅÁŸ‹õÅÁ#=*Saµj†½.7_ *­°GÝþ5œ¸ƒÑàf~c4q°/é@z"7X’~yŽrñ(¤5½U‡£†åW"Ò_BâIé{í±¯peF¤©O,ؤºn}8¢…tï’(Ω´ôµ½k¬æçTH³˜Âž=…ƒew½í÷SíAÄË~å©ýJë°oP© ¢Œé=w¼û*ôåŸR/§±”ÆŠ$|¢QAÅ.z8€}Ó¨ï:wNH `¿É¿`пŒHÚþª®gx _ž°ú.{‹Wq5\Iö?+âþ˜—· ©¦‡ (Ë+Ok Ãðõóã¨wdt@+Ãj­£± Žê2Öi¤øÚEWbŠtÃjsÄõÈ oØür™8u3>^ÆÛiÂÿˆÆV~ûoœ®¤¢( C?:sOAäîCn³rõ¶{«EîÞÈåÜÖŠ‘«:]¹™øäÓAÞ¹dæ©0­Ã÷;z¾+O†™0Á†²#pn][ö¨ÊvìŒ"wƒSÑIdšvË+@8YN­*38COþ!óEÂ82 ¸ ,墒—L<çð¹(àÈŸ¨6³Ã9§dLˆ%©ó€Y-0'?ÿËù:“È—äËØÒ¬™›´8°ºd,OìÜÊk2X‚Ùqe\ñ_Žp>MÎÂ$´To°¿ËŽ=‡%<ßRF ¸ØŽÙÖ¶ú›ïï&mõcð©ÿl4!w³€°½˜àsÿ àÛgþéëso:æþÌ5Ç绎Y;öªWÂpì[ŸÂÖµ;UÁ‰ùpø¨jíþmH bSƒx¨6%î(C"’ªH"׃íJPŸ’:öô+ÈÜåús´®i£ŽÒºNú£¿v®bYé„ÕQËÕxý“ðjc–òž,;ƒ¬ùO ÷¡!r+¥ïnÏ·ŒË[Í#uUº˜&}ÒxÜѤ#5Oyìñ ±'ÞCŽw”y™1†Í³á8^‘ÚÒe\SvßÖ饣ä ‚ö~Ñ<‡BÌC>Ô:¡ø^¤$鯙óæ4Ä×\…eÝ>]䜽ñÌ·èÉAI–rÁG=é9ãgà;gÁšæþ“Ç ·dáB(,BÞìÖ4Rm{@DZH‰1ÌÔIÆu(v+édÖñ(ÓbXóëMc™ÈÎŒÐÌ ËÔ|QÜa¦јZ¦¹’Î+×JÜiA4¨¸ÎZ¬–ü#KàE޽N<ñ„êcË/ZôÁ}x‚ù+Àè¾ÿ)Ÿù1“ŸyŸæ Þë<Á~æ§LY†ý9s^<}6ù÷ÁÔb럋2L®uõLŽ©¾ë‡Ðû4»§ƒ_MͲ^w±Lb¬=ÿT|0á ?v¼—É‹ ö9žâ׫›Ûºf$Y(R*êÑít0,-¥Ž=fõ$¿œ÷¶ÍÈ<÷þ2Ï•Ï&ÉpzGoûSº3ˆ¯¾"w—•£°–9£Æíd0Äl„?ûW¹´œ˸¨Ï)k5F^Eïœ*Û§­ãæñ9‘Ë5ås.&ôé'Ådˆ‘|åÆr,q™LkI£Ès'2ÞÌNÜèZ •’CMü‘$ŽÌ0ÐèçGE?ð„€þŠžj2µø§–û‘Yé™Ì¹h HM½3Œ¿ Fü‰ õVHÑÍ‚y ¯ËÅSè…¥€ìá¦ÿ¬P‡-¤Ž·ºgûWtˆÞQÚI\ï¦òqp)]õ/û¸j™Îðf8«>Á SêMáûžD²©jWAÍØ¢Œ,½QR´ÉŽ:N âº>#’Jt"‚caI‹ëÁhÀ_Z420%hã[ˆ'ãá'\&O›h'ñž„®o;Ôc²€>ÂúÓ`<ŸZËu9 ° *¼h£= {0ãè]ʧ"`?å®ÔŸctû¥¸Ðþ_"tðrØÜ–“׊’:ÂbPL² ¨’”s×XŠúGS„LŽÃƒÙ4^Ë¥%µòŸ2G Tž•¹¡^çè&™DÃ-™UYÑV•uUIQ—Ή*zú~³¢²¥£jS81ªB¤U|q—¹QÙréQ¥ÍQ‹¦GÝhP.”•r©[V„ø›¸U‰S ¤LU¨u&Nå¹2¡Z9På| gBeëI†Ê(êÁW¼ûX´"ØÁ^¶´Ž£Îû?ŽÏ;G¯þ8¦H¦iL¶8ôZتj4/@Å<Ê7¦~}€~ú<(R¿ÐRQ4˜ß#y_ñ 2âl:¸š‘=”A_øÞÓŸ—±ÁüÞô[I¹Ê¬¬«,•x•xØÏœŸAO€$àoÁ €õW”ı9ð0O¯¦xz €9À]áÛ7ˆóãÏV2]u=ócä`ãtLJæ,G”{ÓÓ J‹\"F7Ýö^…IAhÄ›»E¢"æ“˘ǟsvŒb“T‰ÆŠ:,$eí*²Õ®"Qm‘µ«MP»DvÚU¤¦ ÏK»lRÚ•f¤ÍKGËB2Ò.˜Œ¶P&Úð4´¹9hÏ­´,/ íù2h}ÉgY^þYsÔERφge+H<»tÎÙ¥ÓÍ.ivÁ$³‹ç— J-”U¶`BY–—S6 ?,[QFÙ%“É.žGvÙ²Ëe]2qì °æ§¹\2Sìêæ¸x~Xû²ÊH Ëò²Ã†l—ŒÄ°lÉܰK§…]>ÕèòÉ`ýy`—N»üòÛ÷3Éœã¥H²×%ò¼.—äu¥^Sé]W›ÛÕ•Øu•Y]ƒSº®"›«;‘+[U.×ó%Ó¸.ŸÁu¹ä­Kåm]8e«<`hH>žëM®›%Ý«ÌWÒ»Z§ë}%Í;»‘×&ìçÑtNYbT¾5GåÚÎíûx3ª­IOÞáôˆ9f(I *óx¦:adJÌƒŠ…˜¢ÂZÅ“kdª‰$?‰?jpr˜\Í'd¿1D¼³qE¤:RVµ¾<5¹JŒO wí' Z¡BTóàT#UÛÜÆ¤†ÕüEþ´¯"}‘Z…ȃ•„G¬lŸ-™•w y—ËÅ»TÞ…3ðÊ­ÒÌÚkÍ€½ÖÌØkÍr¯mÂ^[E¦åE“,[ù•ƒS+¯"«r*§ò2é”s’)³¼|ʲ“?•2[6›²–H97u²/Y*Îó&§R%ÛØÏM˜ìÉ’¬6HN®dO‚dûõŒ4ÉÙ¹‘Y^zälû3#³ðäÈÄ´*Ôo¶iU¦6ÓÝšÚ[Í@Ûý+Žóò)Ë$Ê)kˆ#•òLŒmdRö¹G¹’(sÆ[A=ÁOÉ5âL0¨(”èŠÎP<4¹ùBä‹ehÆJÈ”¦Ø¦ÉA‹·“+ÝÙnocLf‡Þ[‰„+¸4„òøÖ"ÕCˆkšþu&2B»òJˆ:¢ ¤wUªjJò*2»êØ Ië 4£©  ftµÒ¸ª]Ì5Éèœr†“·P*¤-0e«èÇJÜš‰N¤F_d›ö'ià„·—À?Á£BYŠª‚,ì!‘5Vc–ÌÚÜ IÖ¬5ÉÙ²Xšg=·³è(,ÃsFZgeªÊOîÌtwhÏ©“Ñ %býÈ¥T%B·x$ñëÙ×[ØʱÞ2`†i7ŽMÏb]Ð݇moó¥Âè×c#$^ËÚQË„É/7µ #T§ñýÓI,|êOÐK3:žö`M¥tOˆKMõWÎ ƒ)w<µ­Rƒî·¥k™ÈMz4*&-}ùãOV´B9ß+bâ¤.øÇÖ–Ù|'óI)ÄTÿÔ=ïÑp×ä &ñë*þ’Ø ‰ ]ПDGœ`°?tÑœ¨Gèo†\Üü–C{£¦mìØ«ÖŸuòÔŒÙ]&ÓŸBÔtŒT_liˆJ¶/9[-ê2ûžÆH&¾Î_TaåVÊlåÚªî$\ð¨Ã+e§„·0˜›ýí|óàbÍP;ý (t Ç3ðôgãFShé¼/Ì`©²ëƒÂ`2 )SJ×é¿&³Êõ WÃþÍåÇŠŠÙÖN*>í=ö·×ÊMýoú¾z‘U´¡j)Ê\ÆPÞwx®jynê»éò©©Ìó’Yïã/3.Aâò?LâþŒ¼l–¿môTìBÝ0¥t_Ä•Ü.NÆá).qK÷¬Ç†ì¾Á•ÙØ|ÁŽdåqT€jüníO¤S΢ÐÀ”8Љ%:1£W“ø[Úð·÷>sÎÖîCEÀ1QgOøõUùýÿùwêÿ_Nœ"ÿˆþÚ¢Ëý\Säv CÝN0ôrå2ŒàO9 µâûPÒÝnT…¯n—¿4wÒø3/…¢+›Rè í†E ?/™_Ò×ÏoèŒû»Ãáܾ¬`nõ„.ð:nQˆ+ûMH$eÔŸ?£…^Ï'äDø –‘®ú/³‰ ¬éÏe°ƒóÿæîiXä²öp EolIvžÛy¿‡ß×zï.l Cl ‚(#¶ŠÁ(͇›ä”téàùãÚCx(Q9—Âæ_~•º@óÅ*ÂAzÓŽìÖD!¥‘sÓ¤µð Ài\<¦>aûBRCÅéXÕñ™)vxm'Ñ……fa#~,ˆË¡X¾uq9ÔyÉå”\νp9Ææ-Yµ³:õekK2=_¤ãºí5ðGyê†Á¤9'¥±S:ÍUùÙ¨*ï‹«’á nŽéõ“(ºµ€ ŒÁSwÃoÌw-Œ(¢=„ƒn¡˜7Ä×€©Ñ¥´•‘?Tò…©U“xnÞ‹4ˆ?)`ËL-«?ü0žÀF»ÑëÐ"ú£ä”¢{îVãj%Í*o"b“عÆjxà'@¥eS#’æ-ãù¦‚¡ˆØbugÿ¢ÂQ¤Žl¢õþh8žìpDÁgf±Isž*¼ò¶Ø x 3¡3Iü”I·Zœ 2Ñ·è!Ÿç QíÆ|“X+ûƒu&FãT#7S©j@ÙãÔiLåHG n†nû0‚Á!¤N™ yèT Çq<‘1n×óÙœ£`+Äo:GÝ7ä=r[ÄåkŽý"~ÌŸ¯KFA#ë"ÆMæîºðƸg§SÀß J—˜ÅD~Á7Љ‡ ù÷¢ OŽ oEh#(¬O8áÍÞêiœ­ý¤Ý)%CŸÍâË£Á¿°þ“êÊÓÇëþÖ‡{v8€+O8ÔaÏêJ›ZÅ µHì ¯?Èœ#Lü„¿p 6ë_ú BlÅç1Á_³¶[ó·ãîQÂ>R«aÿƒº«)m ½²â±ù³Y|sK8¸J…çs\â– yxúNbgL6¬@8Ř .©J[™»†ÓØw°Šœ¸)Øh”—ìŸ% G2WíÈE#E¹Åþx¥¿®YéOÄÅjvú˜Ì¢)áU/l—ð\ ìx™ÀãeÊþƒí%«ò”Ô&¨¼_ÃÊþåý´n ^Ìc^ôôÓ:r–öÃäŸo_˜ðwi[ØÛYJê6ñsÐpbtéÐàð£‰÷hMh±_ùÆüPòVóEÒS¦„?ÇÃ!ÁUëÅMòžÎÓ[8tDiQ3ŽWê—|5‚ÎêHô¹a§ÍP8r)›“-qpáLwðÒ€P1ì–oi¹Æà-ÓŠñ¶Z—Ó5cÇõÅÀá³µÐ:D¢m9ÆZ¼u‚Ö§uÄW*øI>¦o™æ Le‡Œn*©Œ)¹ØÖ :Oda«Oê([óøø´M Òƒ’t#%¬°a>Æ ­˜FVÿ*’{ó¡–tä­ɼ^GÖQ§MÊ³ãªø Ù>•ÐotbCìÄøCt€}‰Ïý½hž¿ûãuçä·ó7ê犭©ótÎÖô‘±ÍÈàu í+9‡Ó‡†OuÂÏ´µÂŸÏ³;Ò`¬2}¦?eÌT 4ýùËtº×…Uá\²üæBe7ƒêdþaäÂ^ªRçÞ¬z…Ëmò"H©ºšVù̬¼y²`g«Ñm¶öd¥Î÷ŽÙ}ó7C+Of•ü.«vZ¹ì…ÄÄ¥©Áp>‰•2ʪ¾‰M>OP¯žøÈ¥=ñª<ïI!¨¼ÿ2ìø/ö˜ØÏqr"XLe·Ò<ðD†T§ŠÄBȘ‘mXŠþpðoîJ'?¡Á¤R V–É/$ªT{‚išqžt>š †éÞ‹TÕ·¯«òè–-«®¢ÚhYlÔSl´žT.)‹&Kþ6Šî­¹e±Q`d±ÑÕU]C©ÑƒÅëz®û…Zz0 h)=Ð4=ãkÖ«üUem©.|ÒIÐR—TÀ²Õ@&È·Ä_îÃñæÐ†W§É]UçÁþB¥2ˆÈNN­pZ4C5S™„TºÝ,»5{\#;ë/$¾ÕÑår@~—U#ë­þ® åZ©gÁõå¿}»–™þ)f*” .4Yñ2™*ÈæùÐâC~´SÓÖhðl0Pž°Ô6ü…2³¤Z™ÌE¯¤½´Ç#Œý¢p½E6¾@ïpóŒù©¥è1Ý xù4ðR9 Xô+sÈ#pŒSJ?«úSžûëR %¯•›í`Ì~í˜Î¨DìûS2úŸŽáï~+“b(•D®¤ÿ.ê•.cÌ×»‰ût'ã¡:éîü¼[g?ýHßÀŸŸã«XnYÞãîÞœîÒ—¾ÇAËuå#Ÿ…ÿ!«…×>þ÷Î?]éhutÚ­Š›Àªì}»árÿYÄ9©Ó«²ß»¿5N ºdy¨ü£‰ïÓãu[jD›pE¢û’^÷%¡Š)˜~ª˜3æûcªÑHn«h2ô«Ž¶°qôSÇWoé«·©¯í¶r„Ð-åÜ€ž¶“¡M‰u9aàë Ó=|R¶ß“Y[Z»uDt?÷oñ¾ž¦ §ïЄ{lõ̵‹¸¹¹´Wá‡O¥®È­ àå߆õ“„’c²hÁK©Y¨º/æDÞ†N¤N‡\—Ó_ú$Þj“xkN¢IÞÞÞ+;¸vìÙ(  ÎtZç5‚¶Ë†Ïwù±ñaòîKqÞTÄIÌ=<&F¤½ÏÝ5ŽÙã´Á:~+;Nþý$[ï{(Iéê{ÍÜ9øcGN–-ŽÛÇ ¬ÿR1Þc“$èµÇ&YÀù f¢ù$Œ#áªà…±°öIòV&t ÐzõÞ íjïûV»lÌcèÿ¯7Gÿÿ¼^êÿîä)õÿßõ£éÿ×´ûóõÿ{ûý¹ÿïäá»ÝÒÿ¿Ú«°v5mp+ÿK•?B¨½B­ÿªUý¯²Uýµ>ûâ V’2uú¤Z'I’Ò}KgU/T‹‰&nªÔêY†1wà[²‹z;M¤]Æ>Ò æŠ|¡ÿ{<¸‚ï×ì†ýƒ¶ìâߨƒÖsEZ ¬WÿÎTb-‘²pÊÃà„O‹ {KÚù9Êg-‡Uİ- ÐfZ´R¤jy:ú]‰É"ËbqƒÇÃ]Z,°W¬ÑJÐ^ÀHp3UÚÔ-{ðLS|+×b`—Ìó B”ïyº÷¿›ª÷¿8zÿ OBÁ|úû¿I(²rPð§`&ŠÔûIf Ê75øÄS\ððü*cÌ´˜TUÀÔJ©~”õ ï,ùq‡êtÇMuUueŸSÎõç¡A¯ ½:ÛʈwøŠÒÁËwŠèßêéî+Tyò¯ÝêyÒʯXîéwôòÏÓ“We»èùU±Ô÷7-¿Úÿn¢ˆy¬¦OÿŽJ§vvÀa*ª2'¦1i(¶3¢ûTp£®¥*Wì[xX ‡ÛÙ|pù—¬n‡p†SŒ´5tsm¹Bø‘ˆbIö¥J“~Ò¢ ›jÕªWÚC‰…ãQ÷ÑÓ­Iü!…hµI½—²%ðŠ’ã"ú--®ášNÆ·h‘`ņ€nwÞ>æjcܱ)µ1ç²ß µ±¥®pÃÛBÜèñk¦Ï~ãöV¤ÄÑ.An&âLRýEdûÐs8öûÖÒ3— ü­¥‰Çyi:Ws>;ŠG¼hãuðvGÙÅ"Bö… ®‚äCóŠ@³×À"Ö¿UaÍÒðÿD¥‘ÃW|SÆ"AA;oMWž?>® ëisHL1É´]ñŒ,­»g)ok¦ ©H@ æü\Цžî+ÁK²IÜdØ»½¢³I@AUÓùEV · J"ü±Cw´‰ µoHÁfUÒ›]6"Ãfׯ§Uêéïô1ôÿ“ëMÑÿ?-õÿwô”úÿïúÑôÿkÚý¹úÿúüaíÿ½§eüÏ<|·[ú „-õÿߎþ¿óª€þ¿MõfKýÿªôÿû¥þYý¿I’¥þÿÔÿçt @ñ4ÔLX´^h`M©LKÛVfØx+À"úÿøÒó«5p3¬XOÞnW…º‚gÞüí~ŸwºES—º&ßjEïü³ß—ŠùûWÌw^Ý¿bþP•WBt\ ÇÐÿx™<‚FŸ“ñHÔèãDè|L¤D°JÖóˆ=ª î§Žÿ%Ù¤%˜Ù­.&w€úàl5%&0™h^T‘JOUÄ´)9>G ¦íν]9ñ´IÒqÀ´çí̧µâF„è ¥kç! _@˜æêošÏÔ´_Ð-`ôâ³h¤@Â燘¦@Wð©ð¿Ó Šài\ý‰µáè;Ykиþ]D-Rjé‹lu°ôЧ߹!ÆèÛ|Pcÿ6AÁÛÇovZ=¨@ÙtägB, ”¸š§­2º0bšdÞîÔ}ØàP"½Kê{+'* ±NðµÁ…mpGDn }î¬ðý´­ÈžY´óvçíÁc o):HfêU×KðÊUXS”æ#~zðúb¬çÞsp¶âëž-”®ðÑ¥ÑåPüDrl´›5±dmÊ¡S¹4GЂ³ú±ÌbÑŠÚ^±¦ÈTÒë¶þnËf¢GîvÍ8ƒ*€ätb€‹CÐê(’>`ú-aÌØœÑIì_¥ÑçnÓþ3ØûÏÓRÿ{'Oiÿù®Ýþ³žÝŸkÿÙwÄì=û±ÜÿwñðÝnÛŽùŸxÅV:bi b†%H€èn­A?•¢†¡ãÄ0ĵ9ˆ¹˜„„ª—\x±•wÐÆY9Ý,rÏ>ޝx·°ÜžCGɰð]¥AE‹Q‹)‡âšL쇿¥aðŸ=^µ™ºödLë7m,a¤Àr}Nð›c‘=$Q{ïVmLSú˜ÉàõzõõY4ÒiÌþ¹„2-pªñ÷—ƒ¿¿ÌO~jÊHW £ÔFÖ«t(l¥AGÎKQØ™ïäú–Pò9¾ÅܼC~¸HäÈ £ÙÈñ …:’˜˜IÞ…y¤ÅТ&r«óª·¢íè@Ö:Ì–ÆÄ¹Z “²j&Ò,×@ÖL‘üøZôÿ’4“>S`gÿšÇ¼ v:…Å­uâòÑ;¢Â•pŠ_·}yÄÉùÐT@h09ts0OÖ×Ë3òªÛŽ>ô’ÑÅÁ]†wÕ¾ÌÆb¡dAžÎ9L¸ŠùÐ~ÑOQ“"ø£²­! ³©:ÜåWïׄU$/T:*%CѲ ã—«ŽÝYï¨óÏlãØo]e{+’Mµ%ƒ÷ëÉ)VÌÒÚE”ˆ#rÛŽîÆÜµó]ûsÆ;úLу3®¹­9ÇÒš£L9†9‡cšñ3\|Æ™È:éàù÷²1QÑ+¿‚ŽÎj¶i¨ u¯@¯TY1>ëm½"Ÿnnݰ¥¬ÇùÖ?5_÷|–6æš_aÚUÎ8ó~4_¬ÊÍ&¢wqǒÂòKHÑ<¢Em<ýpÖÄûõÐoŠ+ÃG;snÐEJjV‘ ÇZ$•óð"i÷åG––5H(¡›ºÌÚOe—é†~ëʤZ¼bcÌ8!̰½#à…ö¿ÂŸˆŽ¬ïµì]{UµE÷ò¶¨7y”UŒ…–á! .y… î¤7H®0e€Gó×l½.3WŽ…71ÃF_²S· 0Íñ-pióÉ™‘“|¬€=â\à$¾"ïGÌ92)ã¥fktåÔbòpSiµŽU$þ¨/´\uy†Gi?K/Âmà·‚0íKVY–Þ¥-K‘¸SÏ Ôa"V‡¯]Dêh¶6+ ËmÅ)bu"º$ÐfY§˜+4¡ÃîBœDñL…  ¯M7f´C3Ï"n» !£)=…Ù½åvk$'˜ŽmÛf2‘œæ˜"»Çþ·;ìmqnidè CÆ´/5ZÜ×¢Öt<=-H£6¼2(51q{‰5À °›žØ2³Þ–.[svÖ¦ó´aÓ°iwÐ7Ĩ³VÌHŸŽk&Ï2,§‡Ü‰@`Ëv·æo1>[ iUžµjJ<‘¦ô1ï9w\ª;/£‘•3gªÃã¹#  ÎPÂm%>Í0—¦à»|Lûïtcì¿?–ñ?wó”ößïúÑí¿ëÙý!õöSößçåþ¿“‡ïvÛþëªWhƒe ¿`;ð~­¾Ù–`è¬q; Aª× f˜›oFÓÐ ´3”¤šuÁ.°rÇæƒ ½ ¹ËãS¦F€Êè £âT$Ÿ cvv…5¶·Ïµ?Çúèüß m@º™¡‹¦k¥¿Â^lÓu–=™Å››Âåv]·º·ñåàzkµ„È£óÂ4æ<Š½Ð AŸVt1dËjNí5hAûs_ã¦hüFkÜþœþ¯êµU›Ï‘búÒÂQcªÄñ´Êµ¸&ŠÙq‰†ÝϘÈAMŒí5å¶áŸ[îs½þ¾Ïr_šÜ “û¥P‡‹ƒ*b;Ã碫„NœÖyoe`ÂÕÁ puPã=9pußÖßû4¼ÞAì Ã|ÊKñ´kºÌ°]˜²Ôd¤‘üëŒQ [5s¢0`Þ‘í’×>~ÉA¢O¸ ‘^'Y7ô™/?2퀚>ËjÙ|”ao\:O ìWÒ&Ípsè³ô»¡ïþd*2}v×øéA¯qS{Ç(­¢!ó—b£ #®NµSW ÅÀq?˜æ3.Ë(ÿ^'ÆÜgÅ'ÓÚÌ,V‘ú<P~û½wŒR0ÐJÊjn­4ׄ )‚OÙ5ÇÞrsÔì¾¶5@³»gȡ鞧 *Ë%pl°¾À‡èìm͵DlÏ›cœ>µ^ɪÕÙe½“u¹×”V2ã*N¹•LyIZ’3î9fË|ïl³÷•â¢>ÅÄ:/²¯4Ÿ“К÷°òÒ¦à{4ýÿ‡‹þ_£ÿß{Vêÿîä)õÿßõ£ôÿkÛý¹úÿ§Oë©ý¿Wß+÷ÿ]<‚ËÐõÿ¯è¶p7o÷øðˆ_¾­øñændLì vÄïv•½ËðËh~÷yê~Ü å<›ƒ](ÿßO2è(?ÀñWáýNò‡_ó®Â/¢öG"µ·–×!°Ÿ,|@sõ)…šñ$Z_¤"ðo®˜ç )ðÒâ °öX {Ø¿¹¸êol©"\Uy\q‰ƒ‚Tx^C œÂ (m«=6%ÍÌ.áËÛþ€TʤåC 'W»‰rØ´ªV€°K`*d#˜}½¥xßZ&ñ¿æƒI|å4ՎƳ T•Œ}s_ ú³xøõë•SñŠo(TåêÉ1ŒÆî£ÐǶJ%®÷²ßŸR°&c&°'ÓÑ$Ldèo 7˜þæ‚ûÀNû7*|G)=±Ñt¼Ç€Gã(Æý€FXLóŽjD÷0wNî:©ÙËoYo¤öÅ¢Y©ßÙ†8U|©2JwP‹]ýÿì½ksI¶.|>ï_Q1q" ©’ín{< ›±#@jÞ8±’J6Ý4€lkÇùñïºdf嵪@H­¶a¦-‰Ê\•—•™+3Ÿõ,œ(1ß•d¢w¢)“œÄ3ˆ9ðdø'A‚‡×Xºhû->zW‘âн“¥æ‰+)š3·e]`ìÇÐÖ#Õ:š^[Ó/šÆÊ»«†.Eìe©ÃèöÄÕ¨Ð0¥ƒ~éÞm†:uŸUùYEªÀÂ4¤~ÆÐ3›‰ôÌ›÷–ç¬ÜJ‹ÆïR—ˆÞ¥‡ˆD¶‘s²9ÚMÑ?:8Ûó_¡•"Ïaæ1±8ÒœžÈó n¨Dž Þ% Š’Vx{dÔrùë#QŒÃ»)¤ŸJýõ\)‰ù6Ž£îÖÞVô;¬å¨N«²¼À×,YPö¬ ½F­}@Ãl¸E—[„ÞŠªQ¡òۯĭîV6+/«å`¸€ÏÞÁa,¬nãè}_úÂù]÷Žÿ†7Sû+(µÒ›©ä‘š?¹‰âݬî‰Ëö““ ùB£†óÐ^êUdùÓÝ–ç‹vÔCm[å&ë¥É¨/t»EùEíu‰TÛüw^ ^xÁr9*ÙÉtbÂ÷ ãÏ&Ý^-$üÍ8{ä¡§Ø't…ÙwjÚ]TΫ¹¶]Hø³¢UÁ{ã”–Á ú«†¼ƒ©²¸ÄmßcÞ ºWI’Vvw ¦ß-ŠîB[UKxô1ê£ãªA]îaÄFÒ᳨]ÁѪݦԃÛZÏC¿KÁ÷ŠáìqZLå䩎ñXv+OÛÄØ) xfpF^I"âÓYˆ™Sɲz;½ZŽf×Ê?%Ezl°¼•jfUªšY)o Uõ4«±ãÄÁr¤³œ‚˜»õi‡¦÷×á‹uÿå¶Ýö»ªí½¾GüAW]M•ìÇøfò+o¸ïU¯ÞÝö÷+{)µìž¤¿ížõùÊEÒËÛá²axÍñxÂqé^; óJ4 L!~ÁU4Ê«U4Ê«¥Æ°¥yüÚçâe é<šø›Óà¿æÕÄæý×U4ú¯~MüíÁšX©8-SÙΣ‹mxËÃÛ‹jÿÜa]÷Ã( •5(àÙ÷ÿ£çsÿ¿öÿyšÏúþÿ§þè÷ÿ3ú³ÆÿÎÎîvÕ½ÿ_ãžäãݾÿoŠGÛFbzK@|$D`M¤õ:×ÿÊ÷ï‘:ƒ¬´½VïˆÊ%ÏI(ÈŸ¸r—.|  ®à µr©«OE Ç_É›°Ì$Œe±Á{q‹E\²Ã›!GWq.–ç3› £v—€.I¹c¯‡ þ÷æÿæ;ÉÑc©¼olÐê…$$ç”1`ÞrP˜ør2Æ‹$ÅbùIИ¤|„P0B@<]ã¢y‡†û,Øîðãfðg,H/¿Q«èIѹl4Aª®q4FÏCøBªmEu¼SŸÍãÛŰC:L,‘ô¸R—.7 PÓøêî’_TÙkNŒ²w˜êrxƒ#1–Î^ŒZ6¸T̘ö‚ÛZ\X÷qÜþ("ý¶Ç<&cº¥´‚JEž}¤n^@Æx2Žñ^ šfÚÏ©)v!]|‹Ø@j”ÊÖ¶Ø€/èšÉ˜±ë]¥¼µµUn{¡<"â0n¯‰ý –¡Á.bÖdL¿"ÁõÅÁ,šì)ˆ•ù–G£36Ò½m-po«A*Œ61_“.QG ȇ7¯ãiŒ™VíÆé÷â\Ú52o“¼!ën²zJ“­È›2àL)a/žëp…{I¹*×±.8u⨆iAaafw—_ ƒ9N¶f­0,ÿCx›‡@ò'†wŒþýaƒ›þ éG9¼x³‚†!ŸÞlˆÁldLû]´Ä¤£Š 󎦑^5åX&«ìþ(ÊØºÃñUüÝãSly›hÎÄðò´¯ 1 ¥‹$(0‘91ÍIYÌØÔqT4øàtüÁì*ßLŽŸw\-x”í}#œÉ~SH’iÒo_†¤±é‰ƒz{3¸"϶0(02•Þ)H*­Ž˜VÒÐKÏ@_¼Ø¥ü 㲨 Âj£KA^5µI²»šÓýy5ÇåÍ/F݃ZÓ£0#Lb( }£pœ0µÂä?›‹™ýU©]Dêù±œùz<óÕ_”íÉTå¬ÄTÙyñ<üí—LÕºû?`ÊG àÙÁ2#ûûZó0//»deÇ<ôçKú“)*‚8 üÂþûîÁA9êí5k{i¯£„ rG¼sÈwTÒvÖ{’à3${/È1¿‚hÉ{5<Ú9l~ü-q—ÒÅÿèÛ>sÅï!ÛcZÃãrtüñ´ É›ð’Øl¨&‰iö‰6BÀøA‡.þש†{¤Öì¼ÇC©ZÞU?èÃïôÂ=zÇÞǃCþ·šò"|þ“ÁÛ~Çÿ ŠGµV „uÄO*:—<,ˆkõN¡èP{,L²õ÷Rz{ÿtÑPÑH>_Çž×+lÄýýPÜýf­µ÷^^…ð€e!¬lfJ©A^”à~íSçß 1‚…¬Õ{ðŽ:žFî7Zµ# Wë» üOÌ’ÉíuÂùÔî ,ê&=ÞЗ×êvËoÖL;3qÚ„ži°w=ú™Ohi§<«–Òžî¤>ÝM}úÒ|ZÝ6`¬Üº2x‹vòÍ—æÔÂñìnD—TY¼ÏIP q»[§RE­½wCíw¶Õ‘³£‡æ¬ j"fgÎ Ÿ~ÍiþððªZ˜ec‹¤IÕ›ä$`S‘â a]©âÕ¯Qòzî’×ÓK^Í.yÝ)y=XòדÈÕ+óïMl$ø§îÉóAi›ù·ž§ê¬¨²OÏxn’óÑŒ‘®vÄypX…ø³„ÿhß¿„ïñ(–¾—‹*øá.¦ SüOö̆oôɪS1ÎæƒéÜ8ë¾T\ÖŸ§ƒ«!žµ çÆÁûÒS:îÃk–ýý?ŠFm~äf¥µÂýÏa,CÄ'â¥GÄK%"¢ÿnVöà÷=ó ¯BC•rÃ?¦Bè ö(Åž–ä¥HRõï‘­B}ÈlrÇ– §Tªn€4øA*D=K6ñEø^[E(;3Ûz»·—úáR£ïlò„*p)~´"K_”‘ß¾·IÇð%h Yùþž‘B%ØÓŸ¬á†½Ç§Êª¿<&E8ñ†ÓµœÏ:9Q§+YÛ÷ΰ’Ù¥@ýyÒ}L~ßHα#{©Ôÿ‚t¨F¯=«³B “Ì^ºôBí×{ºQÐŽqÌŸ¶œÉ+öÛË”Qµ|{d!ø§½ßâòà¿IÈ/l ×¹Ç.’oý é·•é·À†Ç6sxBgáÅ’ÙÏ ö¿"ê2gÂÀ® Z ù»r'Í•s±®Ü©<¬Ý¨ÒXÝ匉@¡ª+*Th§-W÷”îü w控3ù½¾å̪ª¡õГÝɼS²f:ºÝÓ&{,¤œLö%ˬôÓi|)³2®¡¹ØSó´jŸœet'hñî}Ä ¡d6·®€xõ‚)‹È@o°bçñK“t¡mŠþ×&M-É*Ëan¥ºžrììz=–Q&^wÐmºw%­z›âÞÖU¿q•[ÌN>«#-Ýz “²¡;a‚`ÌK4J*V_&ç:èR¸ý¹ãžÑ2Ž5ºU-ð‰}òŒz mJù_RD¶F†˜ÜÛÑwr7±¹ŠZze¥Géõ=áNÐÐD\> a<+ÂÖVçLb„[69 ©¡Hßl0²Ñˆv^7…×]ᔞ.ìé5uÏkŒa(^¤5¦Mi@*3dñʸ Ð(ú;³¥2"¶Bt^ÑFÔ>mR±‚³oÝK¥†6M xCk1òás°†9Œh$ÝÀ°«°qõTq”nÏhøD°Q—=§É÷2›üÞ3;éMÞõ79åJšÑ+á&ß3›¼ëmòhï¼òØ·ÝÉ·„ëðÚ¹/3¬£ õmÐS(­7H*ÒÆWŽìÞ´ã3Ø÷øÒ#o~ Y|F¡H‘dÓ~õ±ÂOçÊV·³íüº˜çwrû3{~óG÷ÿŽ)äþßÕׯ×þŸOòYûÿÔŸÄÿû±F¦ÿ÷ë×ÛÎøß~½³ÿOñáÑnúôèjò ±µôìÕÞÇnþ=hîõ|~áöA‡úôö­²ÂëÒ1) nîÓŽ¿‹‚° &»‘wùG=Í©üj:DçíŸÛ·Üé>¹¹Í/+úFt‹hxDÇB_.â}î,×m'sz¶»¨#:iWÁqJOl£"Š PÕ‚¬±ø¢[uO—’”ÓmðÍ×.<²¤Yê¤Åóä=nö=éwÍTꉧ½’+íÇ“ñìþæ&Fû^™ù(„ïË)¾$3÷¡Ú»ürGÞuù¶Ð+Gý"{UIóÑ=»ý ?p¾Ø¦l2:TT8ÃëPv‚†Î(n@ôyøU¸gëoæ¬FèU¯LT'B÷ ”[,õJZ*½/‹oúê9£|ûÔ ¾Î`ê„gS8Ãv…T¢[>ª:–£!Tq4›°{ÕÌÆK¼Ã£0Álq‰^ò—#X’bj= ¬ûÌßÞÆå'¯ùÁ R‹ÑäòOå`w‡1ɘ]`8¾ÃÉCÜÁô¨MU"OŠþ–îj‹R42oh-Ù)ìóE½<Gòl0Åx ³!«p½££Zh©1Xv¼ÎSHŽaÐçWñõh@`†ÙÝ)ýw kòYOSIrSÇñ2xßÍÂËgÐ~ÐÀHÀ®nXÔ6ùVQº£œ§ÌdRTˆu„'éoÔ{˜˜þ@n¿ ~¹ˆçÐÀoeÍU8Â+Õo%rŠÆhÕØ èÊ8˜îânvGƒeßB Â4%Q ¨]FÑŲx2%'½fŸÆƒèbÿÉ›„Ì“ ˜ yö±/â¯ñ8 ºpc ÒQ¹è»Õî•ûTmÐÇà$Àº1¼Žzr(÷©Å UH\]‘7DÙ`ÔPTbX°˜»6Ç1 Eè_¬êHÏKr!êqŽèZ„ 9§&nËÆ”e³)œaÎô,[Ziº)gÍ,Ž'Œ}öÍšyé2`ª$ŸEP ,Ù\Ìx΄7Qò£ºXÌ[žYThË× öÀŸÌùµñ•—÷ÂN/ÒF0éÄ +'þ  –M`^ÆWwÓ¸¨ÖïÃÓö^m,ú·‰É¾ ©ž¹ˆ+wÖ«ø4Þ¯Ö{1³Ã$2S °amWêA¨ ¤úX¼yzF˜$É{™×£¯ðÛÉÔðmØóÉ-ë²è³@?ÕÆúìÉVÚÅ_Èøbçjµê ¯Ý†*Èe‘ƒý±§ÊQV~ÚRhkÓVä´O¢ÑdüTsóÆìú>×{ßE[ýîéÁV4¸ž“–ƒâP´˜³/ u–èeì—úV qÁM(IM£j±fHÌÂêèMÓKÒ$Ñkô™°ÀÃgC(iѪ±°#“9U›¢Ê •6µ;¹' ê¶`§é¶ý!Y£Àò…YDDÆÒs¬ê­Dš&…͹HŠ×åèi¦±aÉ©ý‰ÇL$CÚ˜Leü5ÞÒò¦D¾QUÂ1=ËÃzçî&ó!íÅŧk0–‡0í¢ÒoF&=Ìݦ¾k˜2y’3r¡å Å kUúNìŒai5d̾LîF`¾ ¯¢ñJ /c{L²6ØÛCcßO¾Á»¦â¼CU0ú6¸Çb3´þ%MîŒ5Þ4˜Ò^€Ü™Ð­P+âòq3ø [·»«8©.Ö°¬7øÅÖåh%;·.ó1Œ©ÑLltFv0ai¥áº‹èiaËÚPÍ2Â…5‘Ù~¡æ+.íCã1õš[BÖ¿È Ðâ"ÚRi۪Ѻ 6Z7ÐhݤѺn£ùíÿÌVë:­Ö]E«u·„¬ÔVëê­ÖÕ[Í%šÉ·†"@ R¦S΢.M¸\¶À¨R¾Ô’(p>¼= ‘í"Ê“Ñ.3$…¨E°Z¢e0‘p«ÏçÉäJ2¢Ž8±åm†˜ÑaœÂL» 0|­ÙT…Ó£=s­ÚæÌxzO ³li®Þ âIÚ—“5žÍÀÖåò]ƒÍ†™Á’"+H/Ý Ñœ`à]l튃¶ôȨñÉÀɬúx:5§ì˜¹ð(cyh“ÃE#ê‡ûìW/Y®dŸi\E9ˆ®~-µÅÑQÝ#@î³–nw´%6̳á'ÒÞ#–xƒÿ2Ñë“ó÷]†#ØÊSX¹W‡iȱ ùƒº\Ž.`í— µ±ìŠ•ôB@1ƒ+åwXE/åÕ¿¢64»öFåM4¡“ ZØ<¥ÆRž¿?:89w_ù«oÄžp'»Bã«Éõu$ùÅäéǵ+ƒ?³ÉMìÛªbí(Ö÷ñðØyR áC2Ì}±°g߉/¾_²3š…`Ÿ èPáê.¦#OpVÕz;o´vƒ'.5lðþQï@Nì-ÏT~†)ƒQj;íöjEïeÈ6)ŸãÓvê•Ô— ÀeP9¡ˆòÜNívq{ßhÖz{ô³.~žõļ'¬õúðg¸l͓Ӄî¿a­µû½´ëH$¤úØìÁƒnW°7põoŠŸø%ÆIy£Ñ(Îþüø;ŠëþN—ÆýÚ)üK¿7?N§£‚;ý°’ÔÚ]¼ß†ûðÂzã¨4Puú¶.¾=èÀË;g©Óá{ÚV³íe†â¾¢›Ö 6¯ýÓVAÃÓùxŸß\ p-JßÔ¬ÕkûqL”Ýò±"~6éçûî~JýyŠ…„ÍÚB ]ßÐ…<#ÀÏÓöÑI7MÐi»uÒM«ÛjȵšµƒöYJ#–›Êß>Ê ·YâÊv6·KD˵:éö½-’Á µ_N®bJ;Ö–¯4ÜÙi>PêÐŽLV&oƒ¶kÍÞR3E«dÉ=K•[õÈ¥µKëɶ™]ž4!¶)5îº5îæ«q7µÆ]·ÆÝ5îzjì)Ycž°£$î)ØK!@"æQ“CŒZªx×tp²µ™L[ä‚A]„na/‡ö‹k™žÉáþtf¢žETç •=;Êi ™ás²×nÞÜ4d¿¹yñÜ‚â±åJA n õ45‚¨‡ ·õ¶Ð®&´›)ô•­“¬o’Am´¤}Yàã>xÎÓ™¼SÉì"þ<ÑÔüÇï2ß›DWñìr:´ŽCo†cÚºnÀ˜§‹†dOÌd•%Ûüv2Ïõ%‡¡°…ýFêΞ6xxç'Ä^{6ð‰©Ü®óŽp&/Þä~𠼫0‹hõ½Â,®ú]OF£É7ó*щlÎKÏVјàˆÎËÇ“tû5«š^æl0iÏÛÑFÔ.ñ[è‹l$¼€ß¢,«Ð¿Û–·ˆ!ˆÿ"i¡µßz ÙÎK£C©é懅‹à+ÅQŽRØ„Œ,c¦2aÚ‘PiÒ„Á#úC'Mä©ÕtTãéW{)S«5ëŽAª }S™Ì‹””¾ÍUµ2»÷RXw½ÕŒ·ØFŽñ&Ù”!±ü¾Õ=é"Ô ìµÉl8—÷ûòô¡°'=íö*°µ+j»®5žåD*Œ-Ó‡Égxl$[Í|Ò¯êí+Z¿Ý`‘f[¢RPçF|U/ˆFT.”ÊÝåø[R$ÍF«öFe“Ÿ¬Fdž2ó¦ó/FʱÁdL£ekHÖh 2 ¿Ø{Q¶ê*þòT9¥’Ü ä§jdJ\õ¹|"R[¦ Ùt” PøRš4õÔüp‹í‹Ã»ÑHM¤ÚQ­î¹â˜Ø^8«¹,Çšü=d0 &§ô›ínjôÚÍhlþÛ‚Á*˜mUÊž?žWg¢ú)Õ”*†Ùí94Ý(–·s»Nou½yfGI·"w’‚!¤ã\Þ£GÏø"ž~¦éJ*—®TDüJ[>{Ñ©¦ë-ÕÖ§[{"5¨Ç#J N¡ [mQ¢)öä<Œ>O¦Ãù—›²)1*ÀÄ€îpª‚ê„GP1uéÒ®d"5†Ns ­Z¤u| “Ûyl &°žiª_ø÷Bêéì°©D#_ˆ7=o½066Õ•Õ¶D1Sš0XàÚ¦@_ʶI(dÏ Š<Ûx¬¬SX‰Œ»Eê MyÔ)kÌ`uÕÕLC"œŽ¯& åÀØxëE|=¡ˆkˆí¥[P{o[æÑÆyEù'¶-EˆBeŠxǦ¬HÕm;ë¶°ƒ»Ö+—Â2_×ùÚpYzÂ1ßù¸)^ ‹ÉY{ ׄîW XóZ¯®Üÿ쉌-°6¤Vö ¥+1¾ù HÙozÅ´ôíãî¹è7JyÀw‚#cGç‚Ð5Ÿ±‹Á埛Z¨2\<4÷§E_XöZF÷dÂj'Ë ½ ©y¬õ¶Ùòîäæ_W²tWYÏ’ÆM§zïf;d©Ñ¨;55Ž7ÜÞw@ÆQXFxbHÙuæ,°œ êZ­­gfž©&XÞàD¼÷%¾ügw ™AÐBÚèßøÛ;òÈwG¤Îþ‰ŒÀùæ0õ!2ÊçPì‰wÓ5>gÓK¹Ž m–¨RTµI>ªúçV½Õ} {)§¼AúšƒÞJÙkLþ—ïB±ÿËî«5ÿËÓ|Öü/?õGçyœÑŸ5þw_ïîTþ§W¯Öãÿ)>bÍ´ø_>eÀÀV¡w Yáƒ*iÔä ‚ Æc–ÐýñóL0ƘÌ0a ‘º±fY†A†{üAD2 £¿ÒP—Á4ã+o6Ò9LJÅ“¬yjVÀSó驈j|‡HaA`¢Ÿ˜hÄ-Ê©Ì`¨QNÏP¾,¶šåéj,®š¨Y\5Q?ZsÕ(®š·Jƒ¨`ßz9D¶†y»±£¼tì•h©ÌŸ8K‹È¡Ãñ—Gñ-•B)jæ;¨.ÊÃó’.yØm,nóJ/ÏYÑ çÉäæa½ä[EtÏÄö×)zróóÐpK¡èùɘs° H™Ó—5±_øÙj^Ïj\a·õˆ×ÃRkVœ5+Ž™~ÍŠó°â¬Ùjò±ÕìD3/Y íD²G¡ 2ü)K6+¾˜®ÜQ½^ÇF*{,`*J¿â/±1T?›£~tïÎF¶•Õg<øDÔ¸>9zO­Hå.³C=$„¼¼ÅãшG84Ö4Akš §™Ö4A?MÐã°éÎúe“ ÈX7óò¡Ù¼eÿèrÖ@k gÌ´¦z* >­ÑZ-y‹æ /ÛM³”U$Ž+<·‰¿ªE½1u)©ÆfŽC(ùÑç×ô~Q…ns¡Ï^èr¶ºF9³åÌh”³åEµ‰kîÓ§´|lŒÙ?I”ÕMm.€"Ž‚a`{5L1ùu*#׸ZjÃhõ” íMüY,²ÄôL¸\']KBôÏwÍÿ¥êî‹éš7Çc¦tBK‰¨¥”ϪÉËïþ§öj&ºãXi.“LÁ­ ÂsI’¶ñäî󗧤ʺ@Î qäÍÒ…°ÈÓqrW¾»1r4_úH½—Öä‘kòÈ¿3y¤ŒÂ¾fŽŒÖÌ‘‘ûY3G®™#ÿæHø¬É#HòÈÝ%È#5wjÉ%ÐPh°1¢…Ùê¨$ˆ° *ÉœŒqQȼLŸ‡ßíYPIª"txa‘/HCÄ3Œ…%”𑆢NRû&£Æ5ßc0Ê&†îÙXT/å~>N©h“ªê9A)€ùØ3 c®éJ°g"wæ˜3 :œ€k‰ÒýüG–²Á#nqOøAÓ¹Y­x3~ØÅˆ\…gÒŽæs„™‰d%ˆ”Îÿ䟻ãXIÃ'wfèy•Ÿw瞃U½ÕŠp&‹@ðŠŠu‚«¥ª&©ªQæ9o]jd,;ÿeËIePýQÈSs—kúÔ5}êãѧîü¸ô©;Ùô©»ô©ÆUÚ%K ±ê§•2«þ=>ÿë×Ç!€\‚ÿug»ºæ|’Ïšÿõ§þhü¯4ú³ÆÿÎËêöŽ=þ·_¯Çÿ“|Ä¢oò¿žñ¹¤8uë¦`{)xÖ|Æf4n_Ù„íz9[×$¬dÿøIXe/HÛ&ëjS¶¶äZõÀ²ƒdª>Ô§¥:e¦SEtÊ<§KÑœâ¯iô£gOÁ>Š*’Â-Šb˜‡Á•`ðÏ=˜^…Œ7Wƒ Ç"?Ö‰‘g‘¿%²E”‘ð-ÝâÂ\‹(#¡[ÌŵȭH<+’Ò ¥8¬‹}EjhÌè+zûùX71{ ¹þ˜Ú—›•]Ú†tÈj!Ö@ é5ï´œ¥¨.¾ÖŠJj*éÝâ%-ZT|Æ– Ðfi“'ubV~Î0{—T3‹oR§[Y’o24nòQOfŒ:ögx8 åÒ…Ì57¬‚›MR³= 3›D#Hl3Ϩ°‹Ð²ýý¸ÖD½ëyëíçY{Tò´‚ŽlMölÀ„'bn2«ÿ—¢ËÊœºyé´èæfð$Fv‰X¸×Æì¦¯œ+ífY~;ܸ”©ÂºNƒM°ŸôÅ©M¬yÅî÷‚hfÆ+”‰ŒV\Ì He3Ämƒ¾B7m‰oÐ)ÜÒqY—CpF½ñP®.æ7k¦2uéôf&»YwA…›uu…H_&Ù{€FtpØÛº«Ð&oKçnÓ©Û æ¶—KcÅâÕ•X±t ‡÷,ÉÜEü»B—1¥PŽ©µª=*#Uˆ„*•LÞÅ[&‡JçÞ'C§ÌÑÙstâ¨,¶¨_`¼û•Õ¥gƈ³ !N{bÎ|__c²]!ªÇ¯ò0ãxò'T9‹2ãÄAfœ}æhp߯Ô8L¯$<{®§“›h¿tp¶÷7cv1ˆ]VÏë"(Z`uIr<ÓÅCæBÿð¯x(IÞ\ácϽ÷ýƒV'åÀÓËÑ¢±³è$,áÚ#½J&CKôaþKMöû±`j¡žüå¸YÂo’¾^ZëxÔåS°ólÒÉþi«Uc`‘+æYó¶À°æmY”·¥V­ß‡ÒÁ¿Ví¨œÊä¢è[|Ò}*_ïUr‰A¶×áxhIÄì…èÁ8à÷”¿@ã—¿ÂR‹ï¼½ºrî™E©gò1Ï,J<³$ïÌ¢´3‹²Îä#Y”sfIÊ™ ãŒJ`xlÆ_BŽ¥yNt0†WÀ“Ñ dƒ8Ü& ƒxh8rƒ¼vóž9´ +H6)ˆÓ\¸¯´%j” ÙŒ ;ö°`uX3‚¬˜„ö/I5*T`‡÷¬( =Ê`¢aòÕ÷ˆ‚lón òãqÉ`çfakMbÔÉ ­£#ÙŠÓž#€±]ZœRÄÄ‘´mb½ÄO%b½D ‘½" ÀW†0wHò®tÒ #¬}dQ\ˆÞðP\…tI€F=q奞(DΕqO$µ © ñJ ½YIýU_³L¬Y&¤Z­Y&~V– yµËùp6Ás>“ÔYŸšHÄšmâÉØ&xåv Ñ …µçétú SÍþV¤›˜#ž®y+"“Úà¡´`­øÝ¿ž³ÂGYñPÆ —°â ù*ºŠåØ*¬zq® ÿ4¤].èWHÓø?°`à¦ls“vmèVÿíËd$¯·\¯háÂ@’§ð[Ûß‘›­lLŒÆË)®#ý#:½¢~óŒÙÀË}³ ÙžÖõ>¾ Ðwæ¢ìE +3LE\ 8ߺ}ö"dæÈ¦å-V|QQlLg¨/̆Ñ;Kð}pâòãë0Óƒ>à€°&ûð¤ÌEöñ:@ö!UYŸ6R®ZjgêlÕ0Duñ[ª‰^-­.»KªK×U—ÝU«Ë«¥Ôåe†ºtMuézÔåe &¯rª‹5$TÃk˜Œ+6˜Þ{y:²‚rÑkø5²Eç㙯·íFH9ë3-œý„D Ïôcò?|ð%øv×þßOôYó?üÔÿáqFÖøùr÷Õ®=þ«¯_®ÇÿS|x´Ûü`÷ÕkÍZ{Ï>Œq°rÓF9Îc”µ–Ñìéï튟5q+Æ?˜zOF£Ï p¨'øG}MD‘FD‘¢ Òâô`` ™M½›‡¡‚3yQ¤Io{ žA j·nóXøŠm§ñ‰RÐUHêÇä³BUE×ÈÿÃ’k|Z »ÆÓk|Ôd ç8)ý@;Žrï'‡78¼© %SÕÒáû<é×îDd¡ß®’)°œìÈ#-–SyqeØjû­VÓ"KÊ’ o¸éÌÒ²Š+_ñ5)ɤ$¹ˆH¼Ì#(ÇÇèá«ô#Ñ–,“\Œ#-’N3æ¡‚-E3Bš˜B4 X&‰GïÆV‚^Êc>Ó ¶ÄE,‘³ñ•á“g±\ Ÿy2a_ÔlfÂmºfÏÈ ÓNÐÃBŠçq£æ)!¨“”ÞðÁÛ“°ÚÔ¡/ù´)@~ÔfWi~jO´É ¹%Hä-<1‚¨Q(€½çåÐ9Qü}p‰p{¼ çÃË"9&ê"’™…k$-k"™ŒBæZɨË.å>zDÞØ·/C˜–SÕ Ma‰ëÞòT–®kôDv] ‘†£rêK›oXœù3ˆ5,4‚¯°×ìŸuGQr¼CGh,RnüÃð*ç5Q8¦×P1æƒáX÷ GÞÙ2Ò$`ƒ.‡ "Ñ?Ĭ|õHìÃfò»êpp‰úOK ´L×ÔÍ®™Å8„}}c,– eÙ¾ù)É‹ôX´y‘Ë]ô¼Ø‹’P/kö¢½HöTa.ƒ²÷ÄšÈèÇ&2zÊñ 9/j(‡V t =Sºù¥Ë#ÚÆx ñ:H˜¤ÉaÈdìðÏÔ Ã2lót˜ü ¥FÿŠþ°kó¡'pµ‚÷nVÐ@²ï‚—ÒWì©©Ý19ÅkóøjÊ>¡ó,­Ê9XyÌÁ{ŽÁp¤L -´ÌLmz±;¯¶¡“š‹ëÒ˜H;–Q¡e{šW+ª€NBÿc$Rƒ_zªqE…³×U±4àú(ê :6–p½ÎØ ó–c£À ‹"tøiœOª–ÑšCÆ(LoÃ’Ò›Ëe߯\ÆØ± EãÙÞëàÁ¸Pü#¹[ä9bÏQõ·ß2éd¿Éå¥yxò ‡ ¾>½‹9ß7Áè†Ûôûhv3@Έñý·ìŽ<yìÈË1‹ÊÑ€e;ýnZzMWÝ×”ÚâeVö5ícö±ujM‚¦˜ÆP-þŠé6ñ bŽ{‚Ù\t:>£Ò%–nOu–.«ceÅ^K¢‡Oî0ª´r³à©†'xæ½jÊ P-ÁZ÷¼K‚%YjЯ®žú¦gÅ¥=+2Í$" -g 2ÍAL“ë¶Ü·„È4Ïu2Íû)½A˜Òø•—)³®îäÒºIN¯¡—£»+´(hZ(kw‡°í™É¨<¤ð³”Å©t™ìß{Þ¶ó-+LU7ÃÞÒi¡ ÐàÙߤ¿æfðgì}ˆb`&»á=3´"™qð…¤K`ú¢Ë´+U!­‰äF]–Ʋõ+S_Yè¸D»;5`&é÷§òú4i,±íA™[ÌB|-º9þ~ ÅHæuÓŠmOët=ÜݪT¶*[UL%po§3(‹èèvIÒc_M'ßÉøºv1¹CÄŽ8—úÆ”éjˆô6—8²æßba¯àøf½Íš|£Öâ&Ñ‘ Ô(ÀÁ.bD *Dá[Y<,Fÿ|Gô:%q¾¬ÁÏÚFÀ½ÅÌJJ®,貑[5U¯¤ˆ|œvÖ, ‹¸Ìœuñ˜[?é€þ^+tJ1æïPš )Ý›¹=àšÒX€Úx%ª‚¡–¼˜:=&‡î†A¢»±zÝ AŠ»±®žçi˜tËQû#>¢Õ"yþ<?Û⧤)]†‰·l‘ñÚ<¼méo.›N¶‹ÿ‚AûAÑîF­² $Þj´“¯k‚]nA°»/4%ƒh7\uÁÀ›—h7EPÿ¨×®)&Þ5áîšpwM¸»&Ü)"á.?¤% wi¢ØÒå€[ƒÒÛO: “!/hIná¨B™õ$n’+É™›äÌJRw“åâ#’9fA´’§5ˆÖ‘hS³Ý`uVÅȇ3‹òá<ŒÅ±¨žèFªŸè¯ä÷ºöûYBAª-Bþ—íÚ/Ë GöPç¦GöPç¦GþÍÍû@zdÑóé‘VVø5=òB¬3Óº”l›k~MºùµC‚£òVK.Gë~–•s×Ê©ÔZL úT‘! Ö ÌxdòjØ zõŒ ˆý ¸Ø©„ã¥Ù¤Wóª\œÒQ:KN¨$ÌÒQNri·0Ü#ÑY_$ë\˜ ß´èßtÂh³ú2ðꇒPúÑH¨;kÚé5í´T¤5íôOF;m¸i,ÔúUȤ™]¶Âì®îRm^_A&-79©|Ò–o­o½’¼f%¥Ëè"å‹›Ì ¶ºUü“¯SEÏȱ§v}U#éÖZ²ŸEU¡ÿ'rðÏÀmó‹ÉÚ$™ýK^=\kcùj]Ϭu=_­MöªÔºžYkÖ…Gg׉¼rPˆ“ÙKÆŒØ>¯9ÅÙye<œ¦÷žûàŸ–I\NÒgò@¾°æÿ»q‰ýñĬá®ÎøxV³&¦5Ëøßƒe|öÑŒg.hà7gòçÏ<þÓŽÿ¶á8»é °·Ð»‹«x6œ*'¾Í~“Ê@øÇÈ£Ùðqó5xºdÞïРһ켮!ü¾œ±´Qu(_óXƒõ(e‘7‡ØÔ£BuŸØYšn÷06™½ëef/_.˲¶(ìq&ZOƒÁ¸Ï™,ëQ Ñzä £MRÚHÝÇWí(qO0©¡8{10  ´¸O#¥¸E^î|…ƒÖ{PH(Âr$y nÉæìînÛþ…»ò×¢åh{¶Ò]9:/}…^bò!N†.H&kÈušû¾Î‡Pè•û í„âœ$iŽ$¢GØÊF;ØßÍÆ•Ó…º‚’ÆŒE¶*37Ù,½Ñ'^©!ˆ|‰çÑ ‚ñ–5†˜ ½ Âí’­y‚’> r "¾´Ñ×NÜò°Ï‹¼ ÎË^N „ua-1ɳ ®T˜fÃW~íN*ûR)²æšKÈV°J.B—ÉíøÂ™Høª¤•S×µè·&ì*gM6"eÊ”ÃïÄÃÏ”&ê(iW˜ ¨Åò-›Ñ¬’ȱ‘ öŒ"EòØàó%)š­š›¬<²ñ*´ µ#-rÁ”ó ÆÍÈ»™ müEü1q"fØt†íì˜Ef)†o´ƒP¨P#`‘˜)#¢|á xD¼Üö•<Ø #NCž»¾rsœ«&ÁÓ…\îĽðuz7¥Ó=1. ú¿.Ñ寖érO\‹”¨Ñ"]þë‚]þ:­ËsD±xí+÷¯©]®M?X¼ŠßRãUXX”xŸ~Ø€zü‡Ï£›gÿa÷õšÿýI>ëø?õ'‰ÿðX£?küW·wwvœø;¯Öãÿ)><ÚÍøGÍVWRX[;îIØ~9úTŽþ]6¢)¤k-Qag«ò¼c*€°Úít8‚MZ¥â©pŽ Òœs‚|nNv$î6ƒ:œ`t„¬ z`h_PQRzü“HûïÀÚA¾ݾ8c‹Ž`TÎ6[ƒéŸ“¯˜¦1´ÔÍä*EH_D¸Å7oÌÓIB‹ã÷ÿûÑ=üóßÕ.þˆ/‰4%Š®USúmDõÒ½uà}gi|X#ísÈ‚–¸ˆDòUíëŽú抡öÛmoòœ$¦¤|ÔÙBoã6þÓÚèŠ9«<°&þ‰,—ÿÄWÈo¡tu²e%ÉÚ)Ÿz~‰g1¿‡®ø›'8§ƒ!BÍcXléì D<™ìj=ž gsД²tª–|øwãáîbì¡;Ê÷Y/2¿J\Gä$.“Ü—»˜\ÌùÅ|¨90î™Oº‚ÛJ;›°Ù’ 8]WèÔþ¤TèqÀ×é~É"<(l‹¨1&RÁ!žNË ,”¤»³h†HLÑ(D,Á­ÂΤi(5’C¿FI Âÿ[Œ”aP5¡³L Â/ –Vâf]y‡ã¯…z±T¸Úe-’&»L¶Ær¦è*O$§Ëg3¦Ì—¬Silù9i­ÅÑ;%·ßZñ¤´Ö­E…kä•:ƒ5ÈݦqC#HÎ/«Ž…î—ãfëlÜ­ÆgcN‰Lª\EzDP¦Û[ºÌP`3š™‰Švm] >oñ[âµÝ0ekÅØZ1ev'«ý:‘Ƨæi?ä4¿vܦ)‚#Xèõº„z¡ò¦]îl"ÓJ§h2d‹6¡6íäòT‚É$üiÌB<¸˜|å ™B{³SœÁÂH¶]Œ(€^sùþÁmü?“ᕼ[‚¬€b;éÔúV€k{‰N Q ïKæC"çüB ‚q¿ÅIW.ZþŽ&W1,q“{Å@$w´ùzy°þ{¡<®‚Ri>Qçþ›îþHÃĪ8Ó+$VŸ†8­½VŽI…†%ôö»ÝíN#CkmÀ’X€‘XÜ@)øK©]7¸xákK£Œ‡…IÂb8롯žŠ”$? gÂA÷äP2ð.üÚ=Y³°YØ–&ú2tauL_o"ÿº)(T»Ø'“Ë!U˜Xe@ ×¼J3T·¬ðpˆ(´•+#±'‰ì~iÔÿ3j½³že!Z¤Q}Iüa‚<2S¥*ª1™Ï'7¸®ÀV ºŒÑmgqß,š¬ï4™ Ta¶PHBj“¹-äŠÑw<ÿŒÚžfó´’+Æl6Ãú]þ“Evôƒ±bÊñLÛ;}œ¼[ˆâ˜àe˜šñ?¼ÔªWñŸ”·ë»Äw˜±0=Ž¢ÃÙûHd6G­3"Ãቾßíw{r¢Oã´¡é?­@~ò—T’OqùyäyÑ¢43ð•`–nð<ƒ¦Å¢°¸U:â°hwØCšŽ;ê&7µEƒÃJÑâôÌi1>579EGËK¿ÃŒ˜Ÿ¥b"‰Dn"E"a!^®K£YÐÚQyõ/æÔÏCÕqêç‘›áÔCš]RÜÙ[e²Ž´>—Y«nV°»reݱ³Úží|víɹëÉÙ=É“S"ÌiŒDý ÚBpü×ñ7,=îÀ?,–F ¶Zs§8º³” £»(ÃBŽî•jàÕst‡}ÎßÀÑ}O‹“wä3óìc-ëÈù¤Tz_ªÑ<×­`µÊêëzéCYâ³>Ýô+ULá=Ê+à±<ʼnÉÿ òW«œÂ+!JÎØ1B9 ÂËÉ_PF2T$SÅѲÚÉ×$ûåH[CÊ 7ef# Œ„‚•Ÿ-Dé „·1¨¥{œ«¡‚¸™¾¯Z# V`w ÈM4° ò§¨Lä$51ª Iƒ° 6[)κuR“2믨)]GJõáüêºQeT³Õ‘ÏȈÔôg®~Æ„ùª\A´+ üê¤$ºüÒJt%îÅóè¾BV”ÍÐi­Æ%¢c:Óü["Ÿ÷$ü­¢¡œ,¿BÙWèó SNIë9é Û:+8Òm¹ÉÞ‚uÒ5«Ý=½dUY:îsõMÒvä³û˜Ÿopþ)}§ÒêÕò÷[X½úõbßðZªÞ>%[^‡ªùtHÍ-{“ÛûhÏW>…T«Å-H—îA5ª.ÿü6˜^Ùî÷’¤ØÊ÷î¬Ô=Éœ•:ÌÊÓñ¶W½LD›¥èž™=ú·W€ÌÝYh3|†•5©½âÂüÀNùaa~ÁŽÿû2½z>ø¿—küÏ“|Öø¿Ÿú“àÿkôgâÿ*Û°ã°ñÕ5þ÷I><ÚMüqàõI™~œg*œ¤ºÆ‚sLx®V%ÜçVŸ70°0_c‚TA¹ó¡ù|ôúZ#§œc£sóÛè?l]jZßïj '~M:èï¼ÀåXñŠM‰x;—.„‘Ãó:ò«^´©IèxåX%_æçþ™• PAôÐPà&èhÚÇ[|Ù­E;×rÛIĵ~rX£­ Ç)ÕKßéòZ½k~;¼¤HÔñй´¼Ðcl¡'ù’Í<¢Bi70DnÙ¢^'NäS c§Á*ðÛ>Þ#'µ]çn4ŒãÉÝ Ê({¬FŽÊzû‹w½—–øL¬tU/+¬:dÆZ2PqIc«“0bÊ ×i ž*Øk˜‚–BÂÊ+Üiü5ïK÷IgôþÉj!÷K¥ïª)¬–ÄŠë^ÝWx'rCÀF 4@A84â©ÿ§u”uèžC®©Ú¬R¨>ßoGÃËáÉX²À /¨§`ͱ†ús8ÆúÑÍLR,>¿;¯¸W¨ð¨ýU‚‡â ò¤R:)°5Œ ðíy˜éë¾ô};}ãS 䎥tO ¿÷§Öµ wxðyˆ×h •ê †WX“%D^ T™Ac”Is”@_ÔÜ]2¦R ´7,›I!Ÿ¼µÒ4 Í '— …Mf ‡½w8Úhûugô: i'!cG@…¢FòÊó:PI(t„ݯ¿r+i¦óu3e5SN8-Og9Q´*¸¸+SÅ¿N-~3˜þéF±ŽÁM(¶‰˜Œä‡‡!FÉóÛy‰MãÁÕ½3»èȱûæÊB.ʸQyÓÞ2K\@Ї]Ûau°¨°^ÅîëV,V°ìLú6!¥9V’ÄæÁU¹íƒŠaÄ«¯ñÈ ZA`)ëŸLÑøOâ^xÏí·øèªÅ»m~ôNöá²â(¡Ô©–]C}§:Ì‹ô€c¥~3ŽLƒ¥’jèRˆáÌåoÓá|5„‰#Á;Œ§ˆ:H‚ÛþO<¬¼bxrž¾Ù6À²¸&Í!qYå=gsB¡ ÅñhòitdaùšuEøà@ød©f= 7+ ^œßqPiŸ­‹`LiRëRÒí‘ zœÞ÷–'ÿÛX‘‡F(m§ˆú a¼¨m„MÕ^×~¡ºèd]d¾e¢wƒö>Á?ÖxñV>­ñki϶TožgöæyJožWR;æ<Ø1硎9÷u Ú´9:æÜè˜ót̹Õ1çFÇœ[sîï˜g¿EAyÃÅÒSn/ý¤¶PðöØÃ±|qÏ›IèpsSVìDh[Ч"#ÈPÜÿn‘:ü7èÃ0¸ Tê£N2®äET1Ñ{huÍ'”‚êr ma«“BýÁêX¨â@—é€=-™%dêPÏã7©Öt硦;7Ýy°éÎ3šî<Ütç¡jžg4Ýy¸éRe¦4Ýy¸é‚¸ã`f œA’sÎnGEY0º]X٠î…r8Ñé`§(Hw)F"üùy;üì#Öh<Éxr'2œÇ+ä¿Ãµ¨8=T “âÎ-qçâvL Ó´%?xõ}w?¼jj°F¸/OŠÞá-c:j{p²µ³ ;]þœ˜ÜЬÓËJä›: ®•\ c¨’®=‡ '†í‰`Wj9ßÖuà[u›ŒAmê Õx{EÿJ"'ÓDÙ¬+àûµÊÒªªÒ*yœjTA*V](}R-£þ9ËÓ^ªe½Áz‡#/Kµ¡`7hÍmôt•‘ZR·%Õ}’Bµó«Èy–ŠœÛ/=O+þŽ3±í¿!{„îçƒ=®?â£ã?G³øÙà?_î¬ñ_OòYã?êO‚ÿ|¬ÑŸÍÿøÚøÏ5ÿëÓ|„bà?a÷]Œ‚.ÚsOR@®ùþǽ‚Áîî„ Rð@æGƒâ¡à$ "ç!"l4œßoêä…&éGr5øW ä%ìÙZ棄¬³û™û±Å÷ø&÷cÔ1¿½äo‰ E´í£N )è ;)ŒÔJY¤D…RÇÍP‡ù ™ e$d–BêºÚ@ö‰0R„™Eñxv7Õ¢ñ`çHtÝ—‡²Ì­–‡í±{âe„A æ4¯æa{D/üÂvÔ-–Np€×°Ù/Ij¦4Lß¼ƒ©!“¶tÖÂL‰>¾Aæe ¼¦3ô”dO¢¡TD ¥^ŒÁ’Fj&ÂÓaFê¦\—£Sá!9X JdbmRñƒæ°õPQZ‹M^ÔËmH„†29k¾1ßgpvLnÁ0_äcP vdCÊ‹ÌE2ĵ¹gVpŠÜ¬à Lqºs¡Ñ‰³´ 1Üixu‡,nwä5 IN:9ypÈ™šõDïYáW5nØí¯|­ËÚ{KcˆvsÙ¦ô‘?£;š'£ª+ž0oobÞŸ‹±µÑÎÉŘäìlÈÙ–¨ñ—G¥bÜs©÷ÖTŒ?8c=cÀм‚l>.@ÅXGNÁÎãQ1·¯à`ìdp0ŠŠ¹ov9k>F»i\AÞ¶ÊÏÁÈûŒp0âGm@ìBи4îN<] p÷È4‹~ŽÅV{žÅ®§¤Ë#ÙjŸˆgѦ[äI¼ß…?Ãå±èŸ˜uq€»§']lµ%éb‹:R¥²I[ ’.fàž2ˆ<ÓƒI[ ]ìü¤‹|¸ébjÖtÒEu`¼0ébZΕ“.[P[Rñ¨ùIAgþn¤‹>ƒNÕÉB®YG»xh{"©‘‘‰ñÔìœ}ÏÕS¤7ìV˜¢¯ã7Hð“S7óÃoèõ"eŸ±¦½Ã¢_Ä’c‰†qô‹0ª 8¨xté„‹&É $Ê _ìl´Ú:)Wg³ÕN£_”ém2ºKÅFvI]rYÉè H¢5¶Q¿0«bßd²«°]”Âû¦7Þni MÙn_þ¬Fñs“I‘>ÂÅJµôiÇüÝä[ì,Jˆgó-n B¼N:Û¢Në&¿už€`Q)CçnnžÕÀN'H“×Q4yƒN(Õ°â ñ!‚ ^—[³%„SÜ×è÷ÒØ©»‰øWtÔßk…ví¬ ¿©6Á¯%HJJøt$ˆv?ÏR;š ·—Éˆ¨¯,ê–'ßXü’Mx»+L ‹}“z¤+šÀhÊTEêš”š5¡¤åê[úP—ìã+-VÍ=KÍE#¦"Õ¡c¶§Å¢zäâm 1ç'µ4ÆŒdµÞˆ;ǵÔfB¬h>þËï’Ú÷{nú˾CÊÛQ«gxõ â}¢¹×Lݰ4­Ò¬Å‚ó¨y:þï?Óëgƒÿ{µ½Æÿ<Égÿû©? þï±FÖø¯¼ÚÙ}åàÿ^®ñOòáÑnâÿüÄýýÚ©†„¿ê)$õÂzáÝfnÚÇ5öï9bÿ°ã ê×zn`~ä(œ¼ñ™eDÆŽ²ƒ13!ˆ¬xÌN”ª)…ݲü[Å .ëп=¾sÛâ)£O§‚vì§²8|aÝ—ÎÑd¬®‰Q”Ù¢ÞQÀ®@$аŒ°#ä¦Vyšåã%K ""?]kO±Zzcàû<œ˜2Q ²JE…ä4®­×â_ZŠ~Ey«qœ’`ñ±’ý*JH9ÎËøtôJbi1Î]Õ[Wy¹îÖ#Gó-¾=Ú&ƒrˆZM€ÞHâGþÌ‚ E"´{Eê™:bC¤È×B¿XêõJ¦Ç†ÖQƒ|àH´Ô(éÒ Îj¿ŸMsÅñ¥+¼tëAPÌŒÈÒ%[I\éB0ÛP"3дÁìF…®…ÉpP!j6,¾5KèRš™°#I8Lj'¶V¦ñí4žQ€v%î@pËä‚Be5’ïÇ|ÓøzD'H³¨F†d;Ò%â#‰a|äÚXIŸKid•Šöëgl„ð|£ôÕ_qBxë2šXo(»uÖÁóEß\QHpz‹o ¨›.G– ìGõÀ82`jbî§!¥£ŸG ^Žu[tøtžrøœ§Ÿ¡ ³UyQ„*GÇ|%úµbêUøo§è…©*îj”ªàª>ûM~<ÛÂ)dJÕ…øn¾í­ ›cÂ0%ërÌ— ˜ùÏ„é¶t ™}dÖ™5Räò\ÓŸ0Ïä‰ÁÉ»q$¥ÅF€¡uDC‹²aŠ´pÇWÍ2¸ÂAÉðÔºöüa]{ž»ko—êÚ‹p×^,ßµ·›n`/ÝêÝK_ª.†‡ø7j€¯›É´,Œ1I9IZ–Ý}!º»nw÷yÎîîžèÝ}¾Tw+†•#›dìà¾Rذp÷87Ü=ÖÈß´pëËDÞÎs»ãÉ´x´íp3F©Ø"ôuËŠ~íA]êZ› m^2žü¢Ðæç5þW'¯Ä¥ªÜ²s@T]Rư(²^>"ÕsZj½‘çþ6Pò@»î2ïºt‚‹¸£éXÞàIÝfæ.ò@$`[ ý`3ÏÕ\f±ý‹è۔ؗ+twÒ'ât«Q }ÚÖÁ3ú•¡·tF`׌"*á"` Kלf¹>:þgúŸ5þ'øùAïÿ×øŸŸû“àkôçÀÿ¼Úqñ?¯Öãÿ)><ÚMü­ÝlÒ·×øŸ5þçÑñ? p!üOàhÜâRø›*'ÿé2{}ê’BêÁðÌ­Öç†ÿ´DÜ8îÙ–ØžV‚œiEÿÒR€Ð¦üèŸ0ð‘3]BÎ,íµMx!gº~䌉"ìCÛÆéP§  ¤[_*Ô‰àBO‡%„2êÒ÷Cÿñ±1dÁ|j_+1xÇÿ‘ϰɺ%FþKçÖÉì#‚´Ìy@ÂŶ"²4žóÈo›6í,†¨*oZe˜bˆDÌÄ@´LÃfc Ĭ–€y./¢•A×]Ây0'«Æ@<*]Ýâ"ä|úÛCˆV¶·Bð\'aTèçÏñúú`ð\ôc"}à¹l…¤Ogy¤Oçiµ|ôyHŸ4â,ÏÆcq¤×Á&~ÐgÍ÷ÜxzæóîùÜ”ÇÏä3H±Ž[Hq¤V¸H±y0ðÇD‚,üQÃõé?·Kv÷ã20]·LWŸZ˜®ƒ|LL×r …éZƒ|B Ÿ5½ßâ Ÿ,º6/ÈGCuü™| Ÿt޶¿ä³(ahçÁq^Ÿˆ¥0ä#.nžäÃzùx ß™¨uÔõFžîûñ(-Ï…ÖA>Ì?`—é"9zäÃQcïôÞª@몮Ýl+"ï­\ð>îÁh ߯žk‘W)~„UÇà¡{B0tý úèøŸÙ׫çƒÿÙ]ßÿ?Égÿù©? þç±Ffü¿—¯_¾vð?¯+ëñÿí&þ§w¶_ˆ>|¬Ÿ–ñß3ú÷DÛà’­ÇôÂÄÀ¥¾Öì¼Çt}ø÷sÁ?gøóL†°ÏDu…‰(ZÇ̃+Ú{_ëÖöŒ8ܽI‡§lµ Äý¯áöOD¯R—.Gò½*ÁñûOë̓¨Ó=Økôñ^ž4K@“P½Ä¯];ëBp§“W(åtZàS–³×¼”0/„‚—àŸæV0‰&GæW1¦œÌ(N_TÀ¼E(I®'ä!›Ü‘Îu¼ÏLˆÔ©`Í«{¿RB(RëŸ3òfà'UùD?ýÃA-9ª§Ö×e<#5hÆóèx£ 2èâìú:¾œÃ EôD ©#Š/bÇüjðörþ)â/|‡Ñå!\twJ¿èø¾E1¡ Õ£ÂîW©´­D€j*þóòÂôª<ˆæðö‚OJG£É7¼–œÍ§w—ó»i<ËÙ-×nt/š¸ûÕãÍ&á?ÊøCCiÏöñ ˆ¿‡ý8¢<1S #ÇöܧüRzºm2"§½µJoùz®ÔN¦Ì6½7¢«K!Zè ˆ>À-ËÊ–Ñ”I8]U$!u“oÜCšlè¡‚˜ Ž7ð€ &›²úzQÞöTrš/8µH.¾ÑRï•JÕh#êáwQCäuµ£hr+®¼|eª/£bÄõ–ÕñÿLé÷cLƒ£c³åv¾êzѾ>–ýŸ$ +˜÷UÜãJROHrÞEeßçáIc臒(¦(øv½d‰ÂD¢HœRøgÇûzU(QøÇ—X«O¤+ÜÎNdLqùu®µ€Æµ²õ­ ƒ`e‹®òካtO`Owv’tISR3`+ˆF  h*È ú»Ñ ip?¹NVª½rÔƒÕ–_ˆÁ8MŽîm|”Åɬ¦ÐdÁHW&(\}n—ó8-„³ÄU”à ¦B+9™Ž¦ôꤩ<-`9Ä?÷«Åb ×Â-1°A ôµ‰îÏ&Óù—1Vx$Ñ€n9“BB G³ Š£XÇxÕ„éözÖZŸäÙ’wÈ7лåDê倮–ìvª ]"B;s2´çò«2ÌçlpP2 à9ø |è*/i0 ÏÒó½H 4Ãò¼ä]ùõ­˜¨¨]uz›†ÃE£Ÿ² (Ú”*&$âÅé‹7îitÔÒ)6© ÕöÖÊЦ Üès; n3ò½÷ÌóÞ³Ì÷ž…ß{’ï½'ž÷žd¾÷$ðÞ¿IìéG >mâ©¥P§™òL~tí˜ ÝŒÐÌ^ß p£9›Ý]0VJqÏ.§Ã ž‚Ķ̀žÃ"Œ›”´ й%ù«ÑÜ5‡í^—Ñ»BFìRzq,›ðdW Lzò_†à­'M¦ãô4X"ºeÊoe7Ý£¢ZÉÖÔ‡‹sD ŒŒ†g´TNWó¨4 PØì;ÅÐeãc0d,­bÌ«òŒ6X„²<€È€¦go©“G(khm¸]¹høÒ–ïX³Ùê9$è „[–¶­óKoQ´Üqˆðð¿¬U¤7‰­ARºŠU7ÿë„í/ósLq*žçÃEã—É: ö/Yd”Aœ×Ä2¶Ú$A¬ŸÓøì¹ñ¥ZAáå\Ô¥Ó-¤MCÖàNªóV¦¬Døú6œIçÙ‚ÍvfQ–r¥ÏؼÁ]Ñl^NñèÌÓlg²ÙÎRšílÍv¶E‚´)Èm6Q·2¥Ûl' 6Û‰5És¥OØ:+ƒ8/ÿªe²yšíD6ÛIJ³¬ ÙN¶HÆ<ê6›¨Î[™Òm6ýŸå¿/Û)14~£-v] Úפä˜õ«%) áøÅ2Óò/,‹'fbs û~hÈáXlE­ÉÔÀŸÃÖñše$VùäÜu4™ÜF߆£ÉáÙÐÚ(áâÜÀcG GÅnL8³z¶S³oƒ[1¡6ø4XüAû¢'_YÁëgw—èM3˜ËÅ«ˆË¿Wéw<þQ_)>Úg¸ý_–öˆ> .' êþ–Ž `ÄÀf?º£‡¶Án{ò&ùs¼Å×ü. ¥r„n/:n¶Ôû ÐúcíhHI/œVœR}l’YcëµxV=SCó“Ï6&Æ3²¿€–~™Œ®f|¢ŸÁ¢Wº˜À!:b{Hèï=½`ϽÍ&KÃè'ô¹+á‰R¡V,µjçï:=¿ë7•œ3uT¦ºÊ´eÏ`Òoìú L^ªN‘èB„YÓ…W†Úõ'V ú;T7{Õ3ÆwßL®†×°ãbXî…ôžkáx?º£¢¾¿ îÆã²Œö7z—CœÆ£ýá×!Î@| ‹Áó{q8Eú}- RíʶWûËÛ¿×Ú}¼‡§ü#í>¦Òz{þí!œîC9jïý{¯)cú®LÛ»-0/ùGÐÌýƒV§L@ÿ‚ Ó&|qÚ>lª$UICgûè½Z+¥<ûÍZkï}9:oÖÚG2ÄMbÊvò”ÒåE§ïs¨ú¤~Ô;ë”Å<äyÁ¢ ñ‡àÅ÷a4]1­À<:Nƒ@jl)‰ß;6T¢. ÎÊh± NŒ ˆ`›h K ŸŽH^ÂÄë)Ä»Y‚ö jæjkòÎlygÙò ·&ïÄ–w’-ÏzgÏwíô@r žTe§_x^Ùv3çFžWœ–…ýf®p«* Ô¹x–ZOUÎgJ =K-¡ Žß?qž('2ôkP—T{=ß;ÛφŇƒ×N'ñxx‡•é]˜¨ÁIs;B°ir„·W”ã†kñ.@£îË`â´eY´#°Wn—_Ðb{|(¼ßÑ’¹»M¬%yFÖRBµøáL«*„Z ¼Y‚dÃUKOÒ\Çh5 q’J³­ö¾D¿‹å‘„Kð¶$½rvéhéëNz; ;¬&0I¯¥€ñ¸ ³ wÄ+3c¯B(:ëÑtüœ!J—@ÓYº'¯ïæß&‚kàÉñè?T7Yu¦•3µÎ6€0\W·IòÀÃUf»È©m÷‹lâê(+Æ÷Ðþ”žÞ¿NÐÛðŠ´r8æ†V-v{/ŽAa ŠtÝ›ìF1O—óèmµ/bZ«ÚUdçi±ŽÑÂCÝC?‘f™€ &.ªnÓ¾¶Â– ~›ØÃkJ„P­Ïh>ÈS†ÖLGD$ß Uˆn4¬&^Ÿ·à••íèyƒn¨×椞ýƒž=âùÓ`øiz•'”xR®ö÷¢t(Áx”ÌѺ*ÝûØî7Ú§Z£‹?ºù–j¸†E-zJ§Ñ5©¬öy~ΜÅsà—è„çDlÕ"Oá :)üNVìÒI¶¶3…îl¡n›òÀ«_sóÀBJ×Q]#± žxëÝ40ÓµUœ|4׃( îqàOžbþÓSJ.ʘóåšË‹]ÙzÅSÙN¸ª‚ ¶’ÇxM}¬à\P‚±á·M…Xé8/iQbÓý½¥úÀT&rûè-ü‹º[–Yü]4³+æÁ­È笃büÇ6…ÖF§h@¯ì0 &‡›ØfAuv‹¤G¼Údwšø–6°<%iÈ¢žÜ¹Ÿœhßãeß2ª!¶Ÿƒªv ‘ýCdÿ&”ÀÏ„8Œ"-LŒ™¡(éR T-á˜.r_j·Á?œÔ#ÕÛG—ÖTKŠ*ÐR|j"-*ËjÐîÚ"^PüKL7aFuT…Õª)‹¡ÏTñLaôš' —†Ó?.ÕU»LX+v«+ÀÖê½r´_G\Â~£U;Je—UAŸpÏÙçH¯ä’ïz8Z")!êÓm4ü^ ’òE°èø+,¶øn„c6#î£Â9H±Õïž$`£5Øqa°cxÑ;f€#vô€óc=@É5Ö1Ö±³(ÖŒ¯­F2Ê–JtV*D½Jþó°¥~8ˆçïÁ$@SzKð- Ão¨5*Û6ŠH1ÚvFÛ†sEÙuo*#Å\CöàZÉ ÒšTP+¸‰ÞlX`Ì}ÿiŠsp’LiMm>3Àc„.cd£Ö"PI± Ô äl€ „¸-:Ð(K'Šn"$ ¿õ”Pk¹Ð#í†0t|ÖA.–þŒ:ˆJã,©‚ÖT°:ƒÞÞFŒ[…ÿKsð5³]%BžU¬âK™{È{Ñœ|‹§(iÒÛt/XU´ËuºÝ‡ÍëÍ’L‰‚(¬ÖèÉ•¸{ÇÍùmŒ0ìøÆ¸­ëнËÐ<(t3ÚŒ*ÉÛáÙwö†í5“gðáîý@ªOm‡OwÝ®3 T{6õöôwÐf“ÚÒì"¼qEŸ<Ù¶º³Á¡œÅ\…éÅs kÒ cêÇÔ‰6¦BEi+\"ܳ$ç4ð¶nMsMópgѦ§2>fsmÆL7ô{éÜ­Ùµ„ 5 ¶}P þ˜sйÎ`®i*¹~ó¹FbÎ3T3 BÅ‘ó˜G»3º;)³èc»Ì‹»;mˆ4hJ’[C3òŽÎ.b·áȰ†… *3ŒàW<ºÛ0´›<ŠMü*$y)ù&$ÛÉÌÁÆûËmYNmŒ¿2'’6BbGãÓÞä-YÓ]®k¤Ï5ƺÔD [%Iñd%î½Wá%ÌÔ•s:±p¹±*_´ßJ…ù»È 8²¥N…”Çíoü,†×‰Å€­Ÿf5¼N·Z¢¿E=‡ÝµØCMUÍeþWs™çúš³Ð׬•òX “iuùÕXèM ûÍ;5©Teô!üú¾FðÖ)…ÖØjã:ù¢_§O>M«Rþ I´„2½Z¼X…Q°ZƒE#zšmV€¢øI»e-ÄÝ>¿žöÊN;vì´ß ;íØ˜ºk¾yû7ÛNCñ;ôè8ÓNkm{—$®V¢SÖHB~Nû#m÷5û†'çsOï çØš9}&Ž1prX¬[I?™_@iV`g`™±Øi#¯öPK£–9ãpûaïZ+»S×ÂJU766yÆwV?‘¶âZÇ>õ hp¥â±<°Qšå‘ôs+¤x¾¨5jtºK¦p'ع4š‰æ›kF.õó­‰úޔ뮔ê¯Òi%¤t´**¥kOìõÊÌÓ4•>uÂO©Ø)­’ÇòëÓ)‹ªª^5ÔžÝl³¶²cjØqbÛ¶riØŽOÃvsiXŠsUGÏó· ,¤ùÍ/'ãçâÿµŽÿóTŸµÿ×OýQþ_6ú³Æ¥òúeÕñÿzùz=þŸâãÝðÿêÂæ<´‘rþƒÿŸâ°…ltgeI”Ð…´ûyMƒµ¯–,•0%ZÄqÅüáÂ÷óí*â) #Cv|õw¿ÛÑa|mއ÷É ú¢þ^ØoÒtùxIó+ÌEýî¹ð_È )Ã7k_xVí7å/§ê—jaYß*Tð(žaàzpyDÐód0’¸9˜¯øl1Áñ«èÕ(g>J¦ø$ÎÎÝLÒ½7O­­Ç ñ‹tfP’~÷P‚þǪH¨ñ“ ÆÌ¢Bxc$u¯eôr_™QŒSlÍ‹@‡'Ñ/Q cJ†|E.œâCÙ¢L‘AЇÐÄß¾Ä_ÃbW6‰ÈÆmß©¬ƒü ÇK¹d éÿ¹Nã+#rÁ;ä±Aq/>¢¿ ¿ÏvEià#©ˆú{óñ˜L¯X5,'ßc¿iÊJÇ.nVŠö[ cŒŒ~s7šoGCD¬»$ÁvbýÕÍèz:¹±ÛÑQE&[6ôÑTÆýh‘;åGjdˆHõ Ëîø¨)?),¹íá-¹,ãéJZÕ.àõp:›G³;(¦ªžíª·VykÕ÷ÖªûÖYŒê~-ΕuÌÕyÍ[šP*Ñ?ßECüg\F—'øÝÔáoƒ™9çñôò ô( Á50MàÃâV$cÖÁèÛà~†PÏxˆ£ÞD¼Ù•·* –ƒÊFsñ€K“¼K‚Àh]ˆõr¦ÓQ•Æu$8¯’9¢¬OK¢@ã>õ™ÝoK) ‘Ýœ«R¤"š&áúu» ó-Oúd¸°x€_Ôô_k´ÏÚ­¢º ¡?9òŽ.E-OâUI‹ñÒ‘¼†Àpzf oYc{ø¯a?!Ùcr†C&& !¦™ÎHOMkø$q§MÉ(Ãb<%k™o“ÝOyñ\·wÑË´}8»‡e0ŸXƒ²DH“Ýÿ=ÏñF.[ÌûîAjñ(ˆÚY¢ýw°*í2ÿ쇻gïãi»_&7%y1Ø>W)i£f¯ß=€ŸøÿÚáA…Té2†IÉΙÈùþéÀ.DÔ> ‡_5áôó¨ï+õC(ÖèºY§Z[-Œ$Ý6ÜFT[Oiþ"Î7Ô›öM|g3¿É¯WDIÈß‚H —›8¤&Z3™C"ODZy"3õz¢=ÖNõ¬”{ RAK#=‹CËfQ™¥ñzU<™?åάÛéöVÑp0D¢6ôÂb’x…q|i>^f_Q JŸºça(¶ ¿6ZaYíÒñ‚ÁÇ–Ö·}>oÔzÏ—mÏ›M ³Úµ}½óX2ãÉñ;ÉÁ˜òdÁâ~íÌrt;º›E‰S2 Rì^¤E\=¸ GzHV^ ";(딕–5„™—Œ5Ö9øžŸÿ‚ïKXQ&ÉæÍÚÅh$Kto\‹5lP‰¥¾SÖ…ã‹®ÌÒædrÝçÃÆ ½½Å-ÜåMB×d¦á ov¶ôl>›—áÕ¬7]:MÞŒ&·¥-Áf=I̸\~ò{«Ëhük:Ìå·1oᕤº4j´NÃþÞQTäõ[%rx?hÖï!ñ&aQµ«ÀO‰,ºìÀçÚ<ªîÆ$¢’Í0¸˜¨~Åþú—üå¢HÝ{7‹eT —._ÛÈÕNv‘6ƒT|O#;ªÂ~䊫‹ë` ž² )Ã> (–ÄߟÆûœh OP€œN] U_"d®ÊL;ER­†U­F¾RikB¦M»hÍœÕ3š¨aKYXÆ©GȆÞÕŠ€ ò-FÓ´­¦i/ÖaMäb±Û¥·]’FiÛ"¼ŠkæÜ°¶ëq–»Ûg»O7ÎNŸÓ8kf³Ý'g§é8sÙUÄRšïŒ’® ñfýn4Ð¥àùû°hõí¯ˆ8-Øëó'¹>סœ˜ÞXÔÙ\ÁÇçEy|f– žáÑḑsæõS"Š)ŽKÏ·è ]ö)iIˆœñ„"LÈ/tÏ´cæ9˜„ò°„èÙÄóå«+Fܸ’gΉ7E9 7 …©¿ñ"¾ÆHñtvV˜a…ôœEÂÒè0Ýàd™Œ[ N¶¯æDÑ´‹ûL¨O2æ±ß´) {Ô¥<ò6¸Õ@®O¯õr«”!~ØD鮞®QtRàš×[ ôg°ðÔŒkUŠÂƒNØÙôޤ—t1eõ¸ ާǼy¡CNµ¨²^Å—Óx0!,æx»…—â¶õ¦]ÝMµx…úg„‰Eq}/Ú)FµyD÷âZ¦%äN칪ÙPap3Ƈýß?–’G̓-±­¡§fÒ“ðÓ(«Ô­¹¡O¡>†ãTô¾±…pÁƒ.?¯±È·ôôó­=©ííñãA¯ì(SEz×'Ý[2”ç׬M‹ÇŸ.r]êÄ8-åi›„]ö…ý-ÇËí„ö£u‚½5Šäºü:u]nÔE!¤¨ˆJ­ŒÇrGj]oû©,dCËËZÏV R¼­G÷3”×ç™É￈LT‡ŠÏa6è&Ø=LNÃÿ®$–ëÏÒÝÿsöõqÀ–ðÿÜÙy¹öÿz’ÏÚÿó§þ$þŸ5ú3ù?«•Ý×öø¯T×þßOòáÑnúöÎ ^¿OélMç™|4:ÏT÷ËtÿÊ%\+s{?ZÜ™Ú;ð×gÄÞY„Ç}ÒQzÜ©úÖJä'b÷ò0Qoo^Üo¶=$™eìá#k³!â”GCð]KPFØBz P:ÀMèÐa07 #½ñ„3žˆ1L¥¾âm‘ô&ÑŽc ‡;Å„>a¨#ûÍ<˜¢Él×¾|®(¶Uâ…Ònîè8â¢ÓËS}ÿt1&çžòK™È #úÛt8ŸÇcé«àu®ÒE„ü¬VäšVÆ£Bmk[[[4ò°H^oÆœ-jW·YƒNˆ¾& ´`Àu/q[©nœ†uÃçTiéq¨j§aí9ü:rÂ3ÍòúhyüÍL-ž'q¦ø yê™xAlۂ¾ZëÅö—ûx$RþeIb<“ayHgÝä3ºðx?aSö9ëðç ;!º•÷œðr2g=¥+GF¯»ŠîÆtÞ>D¬ã_Þ>‹W2Ö~O íó! ä)Uë´Ù/GýƒV§r_XI¬õÕ94üDà}ÙÄNpô à» ”Ͼ;Xù€ï¯“CÍ¥¡ë`燮ë ÁPôääV¿ÊÞG<àqPR»Ê!ŽD°Ù™$Q§h4/zš ÓOgã‰aSkéöu€àbÌ| ×z ÇÉ }LS(cõßÂÖîn<üσzHœ]aÞæ92ºv »FÛßÍîéÜHS”^…qÁІWƒóI¼¯ºí‰ã….[Ð*)NRjgy¿ˆ—iö B ÓÉ_7)g ·cNòTg…ˆvxÇîöÎøKH­S˜‘PM‘´LÕ°*%5Ûñ†dˆcnVŒöœ´õÁ埼½g* m;{ªøOL³Ì ¥}hÕþùNûýQxsvnûâ±Ö5ì'ÚKÚß› *ZÒQ¦,|ÓÐ(Fö‫B•.Ì{~½g É_›B›ôŽÛŠX²¶ÙÿU£DÇ:ŽVïΗ‹\+öÎַЇyÿ÷ý¹ð¿¾¬®ïÿžæ³¾ÿû©?úýßãŒþ¬ñÃþ¥sÿ·³¾ÿ{švûþvׇµ½~97 lÐÀÐ^6 ¬àúÑÈ`Ãbt–ØŸ vQ"W­³ÂGn!:WÑOîÔcù[³½¬ŸÐµyæ¿SB"`-È€I«"´¹`5"XEƒZ6N•ë¸ú¾ÀõE7D|>]g¶I—?Ñ¿õ‡‘º|@9”ü2ž‰ú脲“±Y1Ђ$(t9JŒfºƒS^CųËéðVÖ;çßt.?&ßðƒYšh¬ÇSt½ h˜®²…>e8t˜2¡,»á*&ýl(Ðîfì%&|ô»\ÑÙlëwQôTÆÑjrKBé¯î. ï%¸¹›TÍïÆÃyåT4‰V£_ÆÌÁK—ZÎ%m€5?!d2Iò¶¡v£‡r˜ßrþmbÞsÉ®ªR‹Ì&7±¸.y·]†?ùÖýT¿;Á0—XáPGA/xú…àóÀ—QÞÂlE‘½7ÊÚ>Iùn˜ÑL4·c;d…=S~‚ª™Ó ïéÂq‹q‘^ ò”b£ÂgªX;¨6ˆ`%C{”£‹»¹Þ {H‰ùy£â'5âã ä5à1$G¹I½<=DE¿ÀU)-´³EîaB&¶ F>°ð$©ÑÐRO:Õ]èx‰)ð-²Î’ú 6H?/µ*:‚ª5]‚Ž8Ká”B°ôCI¡–†Â Á-ˆ”‚ªÎC:ˆ÷xö nˆ‰¸¿5îea9Djh¸ëK ®úE·¯?Œ–ãm*é~"˜ˆW-šTù¹€±!˜åíQv_£}E1ص·¢ÃÕ; szè{M+¢6[k–ï ô\Y¾˜•¿˜ç'˜¥ð1šErøB¬®(šQufÄ>{r:Ò…ˆ™f¦_ró‡ç‚:¥ò‡{ªÒv«Â­ãÖŃ|Ü-È0ŸÚ§;"¼_ q«9·ú°ÆÍO¤¯KÉ×ÐÕ‡5ôÊfÒýëž—øß×Þ$uù7âdŒL‹ã{©…B+î2°HqßêRñ2‚ µI ‡A ‡ð81r!QŸGª¢!,¡‘ c±½“Í{~¬ìãÆ5X8ü!FÃ< âx„_nœ{pzëìk¯g'ÇŒK>ö^«¥ÛŲ>ZðBœáùâáOCŽ|h‡3­ÄoÁcÙu$ ìå„HFŒNÆ^ý—Ú®¬CE¬CE¬CE¨Ï:TÄ£¸¶¾¹Gaÿ„Rûý |î¾Ó4ú8®×€:k wSûÙ$ÃéAiÑ•yz{9¹]I¯r†æWk„~jîIN‹ó.íx2N ŠÕô¬Wb­ ¾79¿nâÁ˜Á…ë »NÅ$ë—±hµc˜J@–§œÚ ÆE—y >ÕÑ/âËÁÝ,,fÎŒŠøŸ€¦Û$âã4N-‰H‘Øt<Œb//ï¦|ÉÂÖ@PŽ"Ûâ^ùFú0»ûŒóûSú²•ˆ§Ù‘J „ïܳ"‚P¬ö`‰E(w§…‚‚j´dT’¬h*yJéŽù¡‚}P[fŸÁ?U–ã»oGVªÎ¿=%ZÔ(äú³˜Ï ë@¤¢Q°FèÁ(‹WAÒÜxBìáBA(#шœq0ܸ µÈvÚµ³,Ó9ŒW2󃜉>-åLÄzá:«ìiàà ©Yœ$À>sqZ„˜:¼Ýõ‡0dlV&)½lÏ7ñ)'>µÛ® yØ!—5ĦãÀDcª!ôŒ­‰M²ÀlÖTê¹#R7§¢ÒlqB‚Ø.HFÑ-W½\~D½{R"àc ù¸ñ§ 5ñ˜gò¥.s‹Š{e­õôâæ€M˜ &» ÚÍxM ãjœDìà‚ÄoVÿîùÐP¼KšñÉ^Z+`äÞF/4£‰BLàe~ÆZ { TD@sY4}â23!ØÉ¤ûÆí*Xz} D}uµ‘¤3ŒÜ„O/q#$dÍuöA’fˆã‡t çsOÝUG¾Ž¸|s¸±|ú±ýXtÿùôúÙølo¯ñßOòYûüÔŸÄÿã±F6ÿÛ6|iÿêëÊzü?ŇG»éÿ‘ØÝ‰1à7º>ç‹ _EÛs ðG »CˆÑ-ñZÐÊ€¿¦¸@Kk’.Š|Håeàó ä;Œm7‡Á"ÌËl‰9÷³èHD¨¨ÂÖãß‹£ë5\= XZo‚êQÈ"¸úG#’{rζÍ<¤m¶ÜLÚ6¨O—Â÷ecÃŒ¶}:Ê5,FºfÁ§óÓýÿì½{o¹Ò7xvÅbŸÿw±ç] ²-9–|K&'ƒ•,'Ó¶,Ç’ìdüày_´¥vÜYòè’ăýû1ö#n]Èn’Ínµäk&jÌÄv7¯Åb±XüU1Jî^Y$;t[’IŒcØ,ÝGô¶R&’m!›ÖÀÊ}Dt61Â}Í ÷êØ€§7´í/ã‘dˆÿ Ši¸&1 qšl2 ÊÆ8¥› –‰qz˜Sá/|*üåN§Â_0¸Ü—âÇ¡oŽ3_åkôÆ~DŽ3ÜdñY)]K~eìηGkˆÇ{Øäpb9XiOä™ä»0þ®g{.U,]“޶Yéî/€Ü]CÜ9Š\Ƥ3Rê¡uç5 "?ä½å®èp\Їdä«ItÊNXþsCjTvÝI ¾Ê…8ºœˆÎÄQ¦TV 8g§-…gÿª8ÅWþ&‹0ã°yŽ8lÞBqØŠÑŽ#ÀR<㨔z£ÛTœQ¾ä9®jÒK™ÏN¦¾¿¥ ‰¯t©ŠõæÉXo˜rU^läpÞœ;#¨šÇNˆcÍ&êPÔŸF²uÕçÇô®ªlŽ>©kc $j”’¡Æ˜:δ1ÿQ©Žqi¥˜Ê‰tÆ<0oð›¹,å$Ô“á¹Ê ³ºÑ¾—[]úq9.£ˆä1ïU2nŸ5®¡µ;T*¾lQtw³%®l2OD ˜g¼äk¯¶“×^ Šç¶p07X ÿÞ§`?ïcžÿŸÍù_yÿíqžåùßOýèç3ûgžÿmln–ñß–çÿóðl·Ïÿf ƒ!Ýâ­¬ýüܧ…@xþ m Ü µØ¹b®k£;dl« ¤†ƒÈ犋cúóEʬ€ehRv„,C+µ3XYU ~”8Q;,ÂvJÎ:«{ˆÀ6Ψ<ƒÀ6Ûx6¹ÃØ@ùO*ï+Ž+ÒÆ[Ýo(ŒÙ'wùª­¸ª!û8ÎdÝåiÜêƒ]†š´C(”wÊmXµ”CY7J|õG½ kŽãÊ9«›Ç=Ns‹si%R½<€ÿPÕ©e¤¹O¿E6ªûÍ3e¥J³ÉïõÌíÎzC»rwGÕOEqä¹ dóû¤I3©Á£ ÝÍÖ[ëÚ›ÓÍöÓËèØeh:ÿ‹‰åG¦gÜKTÞË“mÆ ^Òíl¦YÂóLw#k’sRzó¡ïâ zñCž,¹‰ 3ë…Õà-Ig$žµ·EÌàfŽ”‚ôÑv|®¸‰QG¼ÀµRº,å±+¤a‚Ûâ–Ó•$RòŒ§YKm}R^ƒ,Uè×xdí½s‰nq‰ýPœn~5<0"ÕÉ?,l ‘ä̵1+4z¸fŠ$°Ðžê£×d•ðıY.¿d»P¢§´ŠuT;jv9qM’ô3ŠöòŒbþǰÿ+ÏÅþ¿µ´ÿ?Ò³´ÿÿÔfÿ Ù?óþ—í­¤ÿOyiÿ”‡g»eÿ_Dϰ,üþô{ØýÑíOcëÏØåþ]ÌùíÊßÊœ/·YF »˜ò7æ2ä—ó›ñ+K#þÒˆ¿4â/øK#¾ÁT÷mÄ,û¹k™/Šƒôž®‹¾»Ù¹¾wÜ(Urˆë’“ ^åÔJÒÉ Ýyów9…¿çUOtéä’Œ)k¶r’WépUL*vv{]Iâyóú¡ÇÝùÇreöê˜5­Ä\3Kä‘Íw›_²[ésLÌ;ÍfHYm¦Î4lOô,<Ùdßʳ'œXH)YpÚ‰œ*ÉzÆóOÌž‚B› å²{é+'w ÉÌQW]kÜow[ãÊIÝ9e2þ6÷G»ú‚œ‘÷±Ú©Oe‰æ¼Ìš0Z[*‰¶ wo-°:jÍñJQƒrMà8¯šÅÉyœ³?žìOy+ﲚ:’HˆíGZWU”Gú¬°‰&Üu­-o?øFtsÅöU®Å6•+Ä‚S\,¾ìfMôY›¢—Ù“]Òdg±•Ú1åsì†"ÍÙ5ëóä×wÇÌß™c™Ïf$Ìî£.ó‰)8sË;cº?¨JW`ˆ9•ƒÝå ¹QJfÖþp`'zÎXÄÿwu|}Ðø¿ÊîÎÿó(Ïÿ÷S? ÿ÷p³¦ÿÿÖNyמÿ»[ËùÿÏvÿ÷[mô‹ƒãÚyQœ~hrí°^UÂúá¿‹â?ϸ»…Ç­1ä¯7 €÷³à±b"Ë4©þL{¢ú\ÁÆai\$ðã 8a•ð„U(Ôrž¸5s€‘¹´¸ãý>_ë~b£ã"Åä.Šá ž¾Ãgþ(¡l:LþúMB¼ÉÊ®eÿöØä¾üÊ#_Ý=¤7c‚¿±Ÿ¥%¦ µ®È&âàçkÆ)–|ªÁú_ìŠ÷ä@‰AÏnKs4(zJð“yÂbv  wXÏU–v‹¥1Ý.Ñ%D#¢@Q/F^b¬—t—£åk¼X§vi­¬ÖôVæÅ>á$H‹Ãô ]ýÑñ³É¬z1ª·E9.BÕfXÝa}­Ìñuà_)«—b]6­³*Ïq5ƒ ª5½ ïêC'Æ¿ 4c(P0|é­•×ÂÒÅ?(¸k!Ä_(ÇHª?J_z+ÿzþëíoR jpAQ)ĹZAPöëpPÿXƒâÒB‡W]ð19÷`ÖáÅ[@‡Þt$AC&0ïÀAž ô1~ùÎt½ãé¡ÇKì €|ßtÚÜ1(? ¢krqÐhÔu±ŸëE\ û=ÓŠƒŽ‡Ýf•ó¡¨)]hª.œóUŠxéøe0 Ýh툻sÂù:—ô+ÙK™»õ"tšÊtXsî Ëïx]9W¿¹Š`å»Þ\nñ«Ëbw—¹ûŸ‡ ¯®Å¥ö@âC‚Øü¼¡a¼¤gxyé¼ôƒjG¼ñuÐ ÙñÀ¸dÅ|Ès¢òÍáª>¬[]͹ú´¡å‹â¸©Ì|³âËoPb´ìãw¼Gºqüq/I¬6;ç›Þx(ÂkÖ÷éßÖGÜ[µ¡ÄŒËŸ«M¼i³æ½ožÂÏýí¢hQ1­#6víê;þé½?ªfxe·Íìp÷÷~UõoÊ%=ßUÕ¿eÆÉÛ£Žä„‚Ûðå]1õñ[­ÓªSEí=ø~ßOZŽ çÅ`·OZî+¶g °;Á˜ïˆ ±‹7.IVψ§Dt÷4o6A‚F›=â½8oöA—q4qGD}àƒK'p·YA“£{ÌwSuA6F/O¶ç4»¼;_;}XŸûÒé*… !},-×N2×9f*s#úQÌù-ëê×ö™C< ¹Ðæû±¯4°9(öN ¾ã(ë#ŸD¾%+DÙ¾7Ú>t2Rãð̸h«æq07ÏU]PT¼.Ì Ôû`:I÷ mY°Â'>LÙx6² oEt?mÛ¿¥.„×ÓëxR‚„Ö}P·ÝÆ)XC"YäKÌ#¿±œçfÃ)µeã¹~”8UÈJô­ú)ú& Ѯ酅,Ò?aÑöqoHÂi„¾FEä‹A€?º»ŒKx+…3ôåèEªE‘•°($­i–ÜÁÒðL›Vbž7ô &õ,ÁWªí •V9xÕbºa~{žªjˆ"ó• Ì2!‚(ûÓ@Ýh kбö‚ɇÿÃ8«Å›<Œu¢ÚÓ<1_ÌbO-6+8>šøxñDÆ¡¶mÑ+±÷Ö¢ºNwn9•;ÛV-­Tš-jNlÍfmKcÿwx£¶e÷+Š.võ„u= oÚäwÖÌ C´àI±ãØ\&Ò“7ˆoEM"ˆDiׄ].·E‘ËYº´ê§¨qb¬'ÑsäaûDŠ1JžÜLŽúÓ4ÞÜŒ†7#ÜIôoMzÍš5´þécz›=lÍŒY “PgJ©·>Ä£? R—R–çÉG}µ±Ö锫pE~Z¤€yþß{6ñ¶*Ëó¿Gy–çÿ?õ£Ÿÿ?ÌìŸÿgkgs3ÿÙÜ]ÎÿÇxx¶Ûçÿ9”ª|Ñ`•J  ÿô–ø€Á(Â*zËQ¸óåÑáºïI¡õÇÀnkäD–ëc¾›c8OÇ•¯cíÄ$ÝáàÏ)2Œ²Àk g%ƒŠ¿@YÀk·â:ì÷ðgz}æEÿf–rÙúßàf&Ð"ÌLÂîºð&_Ï7ðr2i¤«pKŸaÕ¥Óè^øï‡¿×{9ž^LF~wRÄólºÒ ¨..ÂÆô2Š€XeÀû«°{%T¢~áØ:{ÈlŸJx}*ýú{üë^éõV†¥à‹R…šÞNûD•n~õ/ú·tp-º ¾û½ ^ãqæH¨_UÛ°£y²m|½î·@| ¿áŒ Á0²Œ,#KÀÈ0²Œ,#?)`$ŸTÇÈïå"iÔ+ ÑN’Å>RjË+rÚÈ1í U*D‘EÁP²É’BY1&MŒSW. óáz®aÛ‹‘æü ~/§(oqįXVJîfZî³<¹+«ÍÕÕŠ%§¡Nþ–ÂçSù"+Jò-mûP]†¨!7‹ÆªJã»Ó>…ÊÓ`þ;ˆ¦‹¶SÖrëñK$5èÚP‚J¬Ôµ±¶ãjK¡G%VÉøf0Áh„K"ž§}¶Ö>ÍCXu˜8Œ÷xô4 &¼ëåÓßõ4¨ÓËâ2‰äI}t1G嘭ÌÙÑÒ§‡lû<Óƒ§FkŽ¹ÑºÛäHÉžwv¸³§AÖ¿íÕ&ü›:ƒZsO!ƒÝ¤ée‘)d() FÏ=…Œ™ìœ§;…¼ô)”[T.^Þ5ÃËœž>-¼E§…çš_1Ô$‘•äŸ_§dß”ìë`[oɶ÷̶KhêO Må4Óë½7£ì=YxA¿ÁgXü÷¸nC”ã~p²“ÓýÖï âe?Vøg+ÂÍf\x ÛhζѠìð¿Åé·DÝÞ êöýþÑ‘¾Ýûð{¹ttn}ïï‹Î• h.ÐTãäþÉzIâK¥’ ¿iio2¾Mwô*âxúÆ“ÁzçYï,R ¹L‚uT¬ÎšŸ¢ª,¥×L¥*—ºEü1úQu5ÝÕ4Ý妡ƒP¿%Jú9¢¤(1>vd´¯.ÖEt˜)¿µÌžñ‘8ÄŽÇóÍܦÝ)'¯ ±¦X lr/ØŠJl-P䦫H/*Ò[ Èíì±0P½>¨õÀÝÊ'Eµg×óàÎ÷–Àó%ðÅÎcàˆ.ßæöFÀRð$3‡7Â~h‹ébž n0ö˜®5¾¥ûé®Q¼@”® …:ÕÖO‰åÈ›P eK€QöxÐûôãÀèi†äjFJÆý­^(ùS\à…ÐÓAEæÈ áÔW~ÿ²4¼ äù4|˜>g§ÿå@ùdVâA%X¢×(´DÞç+˜ÈøWjK—.K‚èYºH¨%ÒÎL­,Î\°±ö{xíª퇺ÝàeHc…3oäž2Á´=´€d ^? ÈIFÓlþÓ/^z ŒÐ·°« b&!12ÜŸSÉ”.É é²FÇ“øg•øËÿ«ø×Å_bEÍlÐ>ØËaÚp,×t>½QÇ™<}e±(j‹µÌ«f PZ¾±àÕ¿:ź™’kèózÓ÷»A1ÙÌ [S.¡çN†o×ð=}LšÃšBry„xúr¡ž}‡þ'·"°qâ„èv§#²ÕóˆFä0¦O0¡Ê¾ÁœcUcí¤ ê›Áý…DeUž¿h¿€í ^‰›Œ ò°»@µ-W(Zò&Âè¯EžÛì £1ùµ1™ '® ãk 4xÂD¢Þ˜rÎh¨E°vˆòæó·Qnˆ6ü:Å÷™Üu\ŠZLö#¯® ô¥þ¼gf¤þ-•¼…ÀÝ/ $šwo‹ÿÄ­××Aßö39ô‹Ê@ñq8ú‚í1ˆÿ¶)}$ÓfAyQBL†hg¬©ê‚wäH¶#oöˆi’ª(ð4½9FŸ<ù ¶^cíþ\ñ:‘zãz¥q¢s?SøÞÜõx?Z™Ïko¢u•ßqÂáNï‘æÖ—éËgæÁ4¼r7qª¦Ær4ˈ|ïä²\Ï‚î±à–4¢©âh¸9b¢-UJ)4ÛVT޳†ªrê»"œÞ*”Aš÷*ÙœôdŒóàìä½8,#vsšŽîmäï )âdª+ µÁ2mœ¤£ãcÊ)]/øŽqxᆞýçöb|ƒ‡søJª’ ÆIS#§ \Çž½æÃôÞ]U$}|²œ{¶ã|ÈO")™ó¸ç—&š£ƒQUŽ–lZcæ_e’ßifÍR®“ófÌŒœôʘ9w¸Æ´ ÙÂN)z‚Å}RôRÜ.)Á¤Ã D³#Eäĉ "Ò÷J Ã<ºt-y"×’j£±ï½g?ü)]M:ûíNQœUù£îpâ8v9nÕoùw×éF1á’R×Söù‡WË:GÃíœàH*¼éÐ"¼ÎчrF9Eqÿ7Û^'ût§Ñ(æôdI¯N¢kö TÅÆ‰³f0&tº^ü½_öŽ?ü^Ôý_ðø.áC©ÒiŒø²³„ŸŒáƒcÅ`³Êi¬~ptk^·™z ‘¸„™ä ÝhxvÇ)äÑ(`TžãÉ$Z),’I¼gM_öš ”Ý£ße?æp¹£ãI‘d†ãIÂd–ãɶ!—ãÉ®Ët49ÁÐk›nïÎãp’pr’TwaÕíܲ¾³Sô¸:k$/ÙÎô‰ÆÒY(±# üñ>»CV}¦[U\å)ÆkdT»Yþ)–Ÿ„Â[¥nš¥Ú—¨g:T¥ÃDçñ2µë•YéÂ>+Ÿîýr…£„oÞâ.)G¦û@6î—ßï•$š_KœãÖ™‰‚Ì»2Ïܑ錜²GÓèý>¿pÜW¯SÒÑ(,øÈM7¡yó°Zb·ÈåË#²ÜyìÚÿîî=$1LŸ}ÍÙø_®x…UzÙÿ}€®<¬Ð›¢yX›/)ìvF©ÏÚ›S<ì9Sj«989njì Ú;càwSZz%ý ^Ij°ˆåxÍ7ńŕ«TI^i¨8ÔÎ%bVµ?=–ÏTÝô™Úg©ºé1å¼®"ò°šß*öÜ©§Ø,!`µ=~l·(4p[ˆ.-æ/™7'ŠÑ1¢,Å-c:çjGaq ”A}t+·1ùÑrô[W¶iïD5ÆäTƒ/ ž†,H@ƒ¿šŽSEwZ§QÉ)\^Ðw#XЬ§ çc+n1Üü’¾i/®­mÇZ´¥0K!oQŒs2ex¤Ùbð!‹_Ì7üJ¯_ÌòkK:¶‰ Ad{q)vµ\·î·í3®‰ÉqOŒ˜uUL<™Î_m6¢¼!{q›`nAò ²!XsI-¼ù:P …òÆLzhA-èι왫+TP–g®F­\O…Ä‘%ˆîßÙvsîã¾|o5*?²ïmD[ïÂÓÄpÀÀI§ñpD¦âë"hjÃÁgB*JS ÿûïžœÀdÛ1“™ÃŒ¦%ADyã µEaY¼µ™Vµ£€iV"ƒ†{1”u8>hM°Û` Ç–Z#nY5;‡\á6xɲ&Cî¬y%{Z ²šðºì Œ®å¤”{@iƘD©ªTWR)„?V?hÓ#9“dJ5 &‰i)³Tù‡ƒ\qʃô.ÙóÎxµ)ŠøÏ ïôOO{SÝòyˆG÷ÿÿ<ž<ÿÿòÒÿ÷Qž¥ÿÿOýÄþÿ5ûgÌÿòæÖFrþW¶—÷>ÊóÝôÿßîÄÙþ^G7´‚–~XÓ­5ú ÿý”E·þÉtðOñÜw¹ìÿNûShse£¼±°Ã>S©™OÒîø“C ¼ôy>Íy­_¦/½jæLúýYKÞÜ—Î Ÿ ÜÚ¹¼èå9ÄØå _ê—á œt6ãÏ^—ýðßìBC;?`Ž‹~p }Xýzsß¿¾èù«5ø­xžÚÃÛáÈ!öVoã4|ÿÅxÚ½b잸’ÁÞÇþ5×ÉMðVEZ¯1¦úÊÿ ؙތ‚¯áp:¦›ëpŠÃíÕÕßVÛdèøPkwÞÅtŒˆjŸ*½é‡PáÕ°Œ¿Ä9 ¿În¶–ßé´ûY]*“ëDÑWW ¥òÊê qñ O"ËnÓÅûýÈX £¯ÇÝDß.þÈÌ8¾9]üaŽá†žÍAä寸ƒþeû>9=þ)Ó§¿…_;²x•¨–ðo¯æ*óñýÛ«F+k÷ÙÊÚ=·ò°v/¾øOàŠÿŶ®øþ,W|ÿ~]ñýTW|CpÑ1u,MJ üÖËaq£Ëñ‡ð½¯F>r5k®Ì`¼šÍxXµ\òximq9²ÍZ;,¯¼Ð2ºËµÈɉ1'ê¥ÄL©hW»ÚÕ˜v5¦]-¢Ú£æõáûTLxÛÐ ¥yS 0hA¼ÔØ~-*¹iàSF¤Oâîý7›ejNR8‰â^¼QŸËb¨ŽŸÈ*r†zZçžÇô®ÉåãлçrY“þ.ks¸Èy4÷üûN.3§êÕû€‡·xŒò)cû›>¼Õ ­ëtˬt膂ö2ì2*ø?ü’ÿí°ZÆýýI9Š\Ž[ðgóS:kž—>R­*†KƒRÝ {›¤y‘܇×Hä"ýFÎà{üã”Ý?ÞŸÑÏVå,ûº”–JØy/òßí} éyëØE”żAêÀ™ïc¯{õ1ÜA>ÅNlÄÐ9ˆc^§q`3Kµ˜N¹¦¡Üž\¿~ƒ‚ÑéÍ1/78Y¢æ_ò€·~TçõÖ¨q‚zÁï;ë@Êù}7ªóøn Ž@¹j¹^'s}Ò\ô“_òøDŽn…|ŽïÛ{wÈç,’çP}ø>>rà>­( äH§{4HIB®ƒY´ú˜†Zu v¿=}7í÷cxE¼@¢‘ô ó §³Šh€ê,渆°Ü_ƒšDžë‘5†}áýqÅDAQX¥]'Kš9dbÚäÄ*×XD·óé—r˜ ÐÍ 5'FÑ‚Û\ ±"^ŠJ,¯âiùþBR§¿ ÅÍ•?ư ΘàÊï‚‹H­p†Z;æØ¨$Í?ŠœÔ@Џ¤kÂŒ%ÒÐÈNÑNå>–·¯ g{Å5»ò7Œ®L¢K %¥v†¹¬¶®µ£ãŒ_òÑœ‹à!ŠZÂÞî‘¡ 4Å_Œ~µ ×+«ðÚ·Ö××á× þ]¦—kòGE}”èÍ@ë3ÅèiÂ+¨ì…"Uö<ؘöº6ExE9 M|¡˜ø_äM“¯2(1 Ô/ŠZ¤¶Â¡*”×DFÈS‰²ÅÓí ~÷*Žý uâîxi0Ѭ‡2ò%9FÁŸÓpÏh¼™”‹N´YJ ù'Ã=C>Ýéå‹rt)0†h‚FQ9Q¦Ÿ/*ðo”ÀE”H<ÛP«GѪ7ŽaH%ÆáIL¥:sƒ‰(TÕŸaÆ4[ 3'ß‚``Dn;à iQ@Tûª¢É( ZĬ×Ã^x‰uɹ@*>lи…•uSÄ ;w‡cÒ›±xuNÀo¤ø4»™74F–k@|E+XMpÉP¥í‰¨@Å=²„Ê/×%’FˤFBË$0ñZù—Ùâ–ä&YÁw |7œôoßÀë:ha@xBjáI†ä˜rœ‘aÁ75Š^oâ\¦Q(¾z¾HóF€ >0a9/FôÙ‡´8¸GéÛUØU¾hNQ75i¸šñˆ,O2­äï?‡¸OF°þ`Ÿ¡ôÆ`¡j‹ïcg~[?&Œ^ƒ„÷+ig ðJÓ˜E³´øó@Áœò3Ä™HÄitÁªä"ÙTì˜ø(jQn*(ŽõãD›¥oˆÑhl1o|PéEØã}7B‘¤Ø×aˆ¡Q‘±™óºÃ^PŒ þpxÃóàš‚ÆÚ–Mw~KDW´² +3&TyÄÒ™ ÏÃZG9-â«nô6’9¼²Ê€~Ñk¸çÑ>Vd,Ilyáz´Ûpì]\#¦ä¦¯ÙøÔ µ+k½œ½à‡¶^™˜V~[Nsi°ÞeC«vÏÐ-<&ßÿå®ÑáwÍÛ^IÍäßQ6~<-ù&äEÑͦƑžmM2€nòþêj‘X…ɹ¿²€²5Ï‹œ˜ñ4œ,S^ìy,ò‰®ÊO¨…sã5n°8ùÓÈÞ=ž˜^ó‰ey¥ƒ5*ï ºtÐx\Ià­Ú6¹6µùõJÈËE›ßãšJÞšÖÁÄ«¨æÍY5ïlˆÃx¢¤T)ÕzºC;MÔ²CnÆ¡Ö2íU)Ý2¦?5Õ#9À«ù²±½KŽ´NÜ«jª„ˆÃr6!1k9+v°hÎ*ïH¬dW1ÿÖ,.¡cö]œ‹‚×ÁLâ^åÞÇ sm§ô}gÖlz%g‰KbÀç]žlD,èl•èTJ›ê²y‡I9c¼šcNé$Zµ³›ÒõW9\¤)Ê%éá=eRºžö'!j5ŸPMóBY±¤óJ³t¤|W@®Õt´¹ ¸€®.×o½t4àËÂI¦•¤aÌ(=ÔSµV.IéÉ~ Qrxg”Áv8ýeyä‡6Â/„Ű¼‚Ê«Z¦­ª¸ðç ø>!Ž~Ñ&U[Õr´JyeÉð® !Z­ïåf4Ú‹Þ -Fª¡švIYGÝÔˆq|Ǥj¦i¬N …YC7âv¢ƒê&Ï%:™Jz ÍP<° etrí€@É™ö{ÖÈÞ#ðÃéÑæÆ´áèVüÁfRô7çÍ`’¿IQ#yÇar¤xé™¶œÚjx”} j3Åçˆ[JüQú²†8Çı…¸ÕQK¥äÕ5Þx27K¤(FÊT:Šñˆú›VÕô]Œ¹õ²¶ÕØôÒ—¸ñŽ]¶þðŽwù4/BÚêS# wÏq‡QŠf,KÁVÕ%w£ÎÈMôvµ“CꪵÉΜgm’1€Ô ¤¬ Z ôøJ62Ÿò‘ìÞìêYš´ªö§Lg¨è9ˆvg8wAÉV ,PkhÁ¡5,ÍüKîïKa'9ÀàE¿®… D)[RÕ°N´Bã±ùZÊ*Ø«LÂ+3Ê{P™Õùf«õ¥“Öq¯Y› Cz<¶×O‹¢'u*!¬ø‡5(8|œsèÒµc1£¿ÕÿRs ”ˆX•¾Å³ÉïµCÑÐÛ›$x•…Ð…‘¹N7kñC…#{]‚J ÎKÑ)"‘úþ¬À†SÕ¯ «w¿ý®tX<Î’³­dG8‡fK6*eͰÍH¹"ôÚ(ü|5I7E‚Ø ¹ÐVS”ÔxA¡ÞÕ6¦Ô@DýŸ%‹8gZ+Çd‹È@T˜UŠ‘8"v#n¯›µrÐ ”+lB*OÒ½žŸ‹þ°ûeœ¦ÔBÄ “¢’ö'õ?³«œø´r*µÉ{ïe“ÝäŸÍÕM¢s£¼Ø.mVD>,32J­ï02÷ZÍÖEìZÃ)`Ŭ9-Œ-§53(ñ÷\¼ÝX+;rÞ{—b¦ »†Ì-/*jÕŠ­d/˜°­ãŽÜ© Óµ:`Þž¥ê+JÑÒ»x±b«F¹’;NMyÓtÜÎ4kÚ”ö*^IiõñV4…ôYêðŤHÿÎV‰3õá‹Iêj.7©†j,7³ å8%Œµ7“v4ã'ggÌ¥V¤nèÒêÜÊX–†é,Å%¹ÐÓ \œ¢K1Î][Rt‘ÈrÑDXë°ú0B«ÔÐÖŠ9D–‘OX´_Ì-±xw‰¬dT “÷¡ï#õ¥‰’€¯ÀE%Me ¥Öµïié [VÊòö,ó`y')O¡OWçõ~/¦Ê's•³¥3¥€4u),E)ÊUW®Ów±æ†Ø­£’TÂ-äñ ¨œ%Çæ0÷·…¥ò»7IJ\¹7Ii†­9÷I"±ÒöBÉ­Ð|û ]Q­¹'ÄsÆ.çÕóÙåÌ!R yújÑŽA§g‡“w³Èîæžö6y„×û½Í¢Lí2Ùݼ·}.§„¨l<á¾Æ±«‰ö4§eC/%Zî*åÌå.óH%ŸÅvå9羿R™WyþQ¦Ä¶û¢¤’½ceÇ'Þ É,M–@¤‚ ìMÒZßk›Zpé(©/º ÆQÚJÆ&ÀÚ[Ò&/7(ÉôTPR*$É HÊ GÚÎGBCd!‚*37)•9ÁH!H€ ,Te&t¢ò:'©²›Šth·K{‘ 2Q3ú²ªƒ‹p“1ûŸCF@ÎÍŸrÁT,ª®9ø'W9)=ªÍß#Ó4¬ˆþà€½Z#tç¼G¢c‡¶ ÖÍ âûÊÙÀ ÍÅAqŸÞÚ/æ`q•gÕÿ!¨a®.o>ˆ½ùéñ@§÷„êèèò•,ÍÌiƒ†æ†•‹áÝ`Ae}èS«|¶˜ Í%&($A5À"91AU…‘®úIÄO>Ýõ΀ ÙîÒ—É™÷¬A ÙK˜3] îr£2ë^‚ ´Y¹hM††z<4ÛùJVÀµq0¸pAv ›Émï ’fÐŽÒ†¡ÌÙz¨ åG@9¬3‚ssAÓyt¶8§U¥båº‹ÊææsŶóØrNVŠ9L«."=[ð눙lëÙXÈÉœ·fgåaÜè¤è¾¡m›y®—xìÏæö“c Ì'Í—'z¢5ysç¹ ~"÷bò8ˆ}»ºægkãgÅü¤I¬ÝgúÑd•®fÌ%®¤ú•3«… Jÿlî>øgóÕ#6“rvS^ß üsGý}.ðÏš{šÞžm }X ­¬ÃÑ­­%èÞ°@rëãÜù<* (uS³U~6›š‘[Î+9Ÿè¾74ú2óœ°>)ŠÁVåo¾•Y”a]Æ»“õÙÚ|b¨ñAÂ8MzÞx ÛÊ\Ã2ÏGà“6!¶Ÿáóì¶ô[.”ÆVöþ4ß³µû$øž­ =߯÷˜F¡ðÅÖ«ä–# Yå)•ñ¾Ñh–“D•ï!œØöÆ,#ÇvÙÀ)¦ç‹«ÎCm; 8²«ÞRB†Hòt¨wÛò$õ05‘ˆág÷w‰úT“°»|Ùl¸ak¡ØXTBm.ü›c€'–Ùˆ•ì*òÎL¯_ÁŒ±3/GœÉÂâ^9åÞ ;Ÿ²{ØÎv¿Drìh¢ÃE®mc¡°j¢Ul–K4ðCêDZµÅv2åôg; G~Løâ'½xoØÅO èâœÀE¼²†YTE¨—O€HÔ#ó¥UúÀ˜Dg\t—Ñ#j–ÿ(ĵC<)a¦“0Ä5²¿¥6[ä‚!®})}ñKsÀ#ä­B¤öå‡ ªä‹£¯Ý€HDZ„|aÉÖfáQe^£dQö2‘ (óϵڔekSd½úÀÄÌ¡LØ=›Qã½Àר 372€­y¥£¬c:ÄÁšŒcœÒ݈´Â"±„@D ÊC†˜Ò\öwõ#ÕÎüQ Ê|©ä£E1àθ6Úç”XQÞí¤!ëÇ…b×ÊkŽÓ·ò\§oe÷ÉɃ#·ïê¬_^›ïxNºëëÙ "ä[…Lzm/ì®ÿ8É¢#9ùg)¿»¾Ã^ÖŽ5f4ç^ >q{!o}<¶HªBÐ5+Ú*Ñq.âN.ÌåÎ\<Ïç!ejIb4sÄ4zÚ˜ëÕŸ? «¸³a"ƒfò}R›!í„p.w<ßÛÉïÀ¿“îÀŸ ¢¨éów€(®}¹˜D:ñÂE¥gà•–ëO¶v¸âÎö}À-U±¢TÅùàŠi ç£Âwæ ³ ÁŠO,ÎÖæD4*‰&•ºùÄŠQ¥ùdŸ™'’;Ù×ÜÏ–‡ts¦„ÓÛ©©ÏüÂiðl%²´\yvf_<²•lÝ£í"Hö¤o%Rr‡MEF;Ù†Ø|àȵC¾õµœ©„kÉHƆ…”h; a²ó:JrywÛë%™¶K“beÿ°8˃ %wvžÏ†,'u„HP3Ð;Ï:ù[³œôJ壔f[›4•ãçÁ –;»?éNmN¥&Þ“hof•Í—e̦ģà6w^=É–N­íE[{ ê¤ÄŒ‰Ÿxi}µ´îf+åµ]?|swc¾Ã>·îÁ ²ëÂÑìfïí³á»Ó‚‡ œÅÓ{É©â;Ìé*ÝnÆÖe®MŽÍ¨«ÝKD˜0«¦ÐÀ®¥h»bvb¼ÓÞ ¼Q«ÂÎ î]qN÷r!#VoäYÜ^m-aNY70JØÐœÑÖ4 Rþ;£L÷‚vŠ›þàh'%Ç~¤ÃeÎ4¯§YóD ø4«KôÓ# Ÿ^mÜ ý´†w¸”ç†!;†CVÎù*¹[ýq¡Ošõù"ŸÒï)yu·¸Z¿ã°9ìÇÂvº·ñ<1^-và1â¨E–ó9ìæ1‰æE~%éóô˜&÷% ¯ŠIð¤Æ¼Øg»Œ!ç?A’'Oóf6¬nóÞ«Gdrz5 À"žy_É«üá ^¥‡3xd¸S1==6Ü©“¦%ç:½zõ³R$Ý<Á&žç¤Ë8nÆBn®¬÷wz•}åȽá^í<ÞéÕÌûM^íÞ ït·}ÃðNóo#Ò³¿Ê¶½>3°Ó«WY'²¯+K°Ó=‡„KìËž ë”±{ý,¶`Z7ç>E‚ùõsÅ9Ý÷^íorr+4¯7–[·'@=½vÅlÚ< êéuù‰QOæF/F?1œö ½¼hµ}]É\m3Ï›ÿ”2ÿ6øÓ3¶˜¼vÁ\^gïþ³Q¯·õ:co“'¾ÝR<¹“&þùoµ÷펞í?þ±|þVOß¿ñ»_^®ÿ_]|þº~ùulllìlm ü¹»³M?7*ü7=x#g¹²QÙÞÚÜÞå­Íˆ‡hŒýLQñ¦|éûÓqF:Hv™E~þ(Ïÿòü¯ÿøŸÿñ#¿+ŽÛ°ôËßýãƒÿ+ðÿÿÿãßÿ_¾"«NKþŠ9þ_øÿÿ´’üOñûÿ½;¼^Çu/XÿsêüÁ$ÿøó%P±üf{£üªòêõö›¶éÂ7÷Ðáå£?rþ?àìŸ5ÿË[Û»;öü/oT–óÿ1žííÓZëø”†}ZóAU;8®Å釯qÁ–(DãRµ†ˆ4ü·VãÀ\ FÅyºæÕ¨Ÿ³¦%wÀ¨©½;V¶RI4ªª{‡¢7 ˜6Nqþ‹ü1F<Óæze’™‰Ã±ðÅxx9ù†aZ‘ƒýÏnY¾ÂÞ¿‡Û—ÓAøuu˜N0ãq±5QAÑ÷=¿^GƒÐµ`ô%è·Eíë°?ù½¡¨lš4›Õ÷¢1é­¯sað4‡_ƒë ø\N”¨õuÑîú}$ª£ÏS†¬«Xª{¿U[Õ½Î~+¦TLr™Ækvößë)Ñ.  ¢s3ª:nCu4òo]M¨ŸÖûâCkÏk{ÇÍX]%í˜~ªæ}hìZ-ïDM!“5€’×èÏšú3.(]'?/p«±š¸Ýøë‡é¶¤t¤õ–~OÌ)`Á¸™N‚±‚Š ü Ãã÷§Á¸HC4¼Á½|¾-j žˆåÀÈúTL?ø.MýðßÀ9¿!púƒR/À-Ù„-‡ð…Š»è×E(‹Á¢Ù`õûÛBß¿¾èù+«µÕïëXŠ®\£XÂþx ÐC»ÔE׃Å`"®¥(3 ÷ÇC‰‡üÕIŸh45 )!!- ᨴsÚjYßq¾/š/~‘ebê4ÃAÿö•ø,-1¶X§¯l"òq¾fœbɧFÄ[ÂêÔ£c„žÝ¦ælþ)9e£š2¯j”œaz±{8êA‘pzíCÙ](X–ºŽÅüúVlÈ2aû•§ÌÁ”$:žBW•mrlTó* /™vD™¢^ÌpD)õ’.âr´|ëØ,½‘µûldíÞYÓY5ùVæœXöø(ËŠ¢óÓêP` Ô\Ñ›p<07Frîs,eh–騣ºÍÄÄ–‘¢ä! ê—áh<x/¬Vß"ÚPÛÖ‰Žz)”&W júÓë³&Ìm³<+ETÐC/ȃ¬éC'0ø{üÚ ”ÊØ²µ°ôGñÂöBü¡à×þ÷‚¼ºé_oýýãMJA .(*…f›VДý:ú`Ý´fá|'Lÿîp0¡…{Ïs²Œ'£ám4-qspg?ð{h‹‡ß"׺,êW´A¯•e鵅تöÀlUKa«‹…ت6[Õ`+Xݱe1[Õlu‘ƒ­j6[ÕRÙê"“­.}\mD;6ŠŽoúáDì] aør+„ÿ&3ª^L jm¯®þ¶Ú.bïGÁd:°Öxþ¡Ö¸²v\Yc®¬1WÖ"®ü(‹((~L¨cI®4ùÑ»dUhÑVƒ üq7PÓh=“õžÛõΘçö4€jIÅ €*à ÇM9§)ï‡èü¯çRgR®2cïËÐäÚsÃI}°NZvT­†ÝŽ|©œ…peÆF¯%^Â7©õ¦5¹ò'â¹¢¶Š}óÖSúÜT}>Ç)7N€.AÙt5qÆD¾㜯sI¿ÒAª¡A@}dº¦â-P¾©èÜ:†íQ0c˜›r;Ö’9õŒ9ørsU@\ s—£ïÀ$ ¶§]PªÆ—Ó>Mj=Á¿(AÌS¥°ó†/U_qå#¼M„ý~ðÙï â{½”_­RBID¾=EèÏ¿€t¿°:ï÷?ƒÐ˜\]ƒüû¬¯;Å›@ìlò aÜ.KJljaå¸É€ö з(è!ºóÃôˆ2Ón¢öˆ±T½Øá¼±òÿJ­ÖºØkØM”¥eìTH=SüJ²ÍÝ„H*ZýÂ+ ¶Âµq•щ„²”¹¼.uÉ{ ºä– 'ª.ÄÏ`hnEFæ$þ†û*¹Tóíí}<ú¶½1ÄÛwxó®m˜Çï½½jCo-]ïQ¤ÓÕóôýÙþžr5víéySï5ëûôïÇÖ¡c¿ÿøYäÝtÐå“Á¬†5ÚÕ#u´ÿ ZÓ4¾óçŒZÚÓ iŠÑêqToëwEñi¿Uk€ªÌGFô³Óª%×ÁOHwÒrÖt§¶Õ¢=9)¢{@YäéÒTÜø#ÿýõÆñ½–§¹YЬ¼†]×èG6)´õÍ×÷8 ‡4«á:7žÀÊ€n¿ñ" >¯ksµŽ·S•ã?Af¢Ò†ïע똸“$æ2hŸ³5Õe¸Ô ÙU/‚t›6v;èM»´nÛ‹ûº1²Ì¥65q¹à—ÆåÉÏÍ.žUé[ ¤V§ãÔ;²Ýp÷Y³àÛý|-ϱá°(ºh—å…a]O£”}úÎ ‚InšP·¸LŠþl¼Á®&Ř&T¡bg/„cÔõA°æ§§8{fh óü¿÷ G€ œÿó<ÿ{”gyþÿS?úùÿÃÌþYó¿² ÓÝžÿ•ÍÝåüŒ‡g»}þ_Ÿ²bÂ#—T©?4 @CèGz o1àÀæzùyC °êÍ(ì‹ÊF¹ìèxއ ú¿oFA7“Q€Íšâߢô«è>%AšåŒáåtsa\͉ 2ÍŠo¨ÿÔ2¶»ìö½`ްØãNÇHÑ qÒòÖÃÁŸSœeÊ~+)VɬdâÚÿeÁ½×!ÆyÂnܰͿ¡‚¥\ö‡|SôÍ0D'HÊLÂîºð&â[ÄsØÿ@yÝ+²šÑQ„/>Oå]Ô½ð3»Aú½ÞËñôb2‚ýy œµé ØA\„Û¡-°ÊPq©T¢~a'·=œ-ŸJGŠüëïñ¯{¥×X–‚/Jj:[g*Ý üê_ôoÉì-º ¾û=*(L êWÕ6,Çhžl[Q\À›oø2~C6 KÔŠ‘s‰ZY¢V–¨•%je‰ZY¢V–¨•%je‰ZIC­ä“zè_[.Ò.r%!úhæÉ~»!÷må9x¬q3…º-¡¨¡0ÙÔH¡‚,ÈŠ&‚1ÊEa>\R+}èØt ~ÅÜQúfZú3wúÊjsuµbÉ&ÈÆ ðTrˆ/"ú Ü+ÝÒf7wod€\2µúèÞx®Ób¤“¬càÖhaÐ @6Äã—H@˜[ÚÁÎHiícmÑÁe-¤’õR•X%ãD™ŒF¸ ã±oFò}š•°‘eâ@26bÐo\Ð$š°æCàõ4 ÕË9„¥dæV>nne²sKçgÙ¬yø™y¹53·æåæÖ¼ì× ÖÄö*ž8§rvknÖ6Ø@amCUI0`nÖ6f˜sþ<.k{鬭 r©íåãh/“£=£½E9Úsq´Æ @ Åß²’,޶4桃 êàKoÉ—÷Ì—KÔéuúبÓwÓôp„—À˜™6MݲYóÇ‹l@û‹Qx1eÛòÅ­lÉ‘?ú"ÞùWxxTnüÑ„ ºqäC° »cí\é¾N»_ð¨©]} ì‡d©%Hø¦‹½óý–:&úPmUö£¤%£˜3åõúù ú™yvB…R¦ +“q˜¢œ±Û89Ýoý^|äîaE!xi%8ò`4@e5(¤âäøÃÑÃÿû~ÿèÈnT÷>üžuV¦á„ë{Ζ=-NXÒ¸‡ø’w‹û'ë% :•ú¶þÆÓÞdB›72 w%f@¤ãšþ²å|ë©·j°4Ö ¨SE³öì*ÝR°UIG«0Y¾«á™Í¶¸KöO‹ÂÖ±¡>f´•›â9ê+KÏèSËøÖ2?zÆGå®öùšãÐjæfî1®€ßª3[ñë˜@­¨ÄÖEô¢"½Š|¥©O½´!È …¯Ï†ÂG=p·r‰›w÷ýÁqó¬ÉÈ% ÉwRThŽán¬¤’Áú%M‡'Zœ¢u¨¥xrD¾yÀ¥¬üKœ~6N¿¾÷È8ýúˆïE L_âÅ¢KƘSwRÁN°+æBÁÔ2Qˆ¶ S7ÿøp…þiªÿxcdb›r§”R…Õ ‰êH‡†úªQU‰LªRÛ-!Ò€SÖÊô…ÒµJÊ<éNõgæå°|ÒÓÿãû³ñÿØ]Æ|œgéÿñS?ºÿÇÃÌþYó³²³µ›ðÿØ-/çÿc<<ÛmÿOJ;oU›ï÷g)é¶MÒÞO0-üsÖ€ÿOAゟÞ)ÒîÃïG³bHº‚HÊïªTÚ2¤d†‡6ˆ¶lIF·WljTh2†Ji‡ï 5ÞÌï\î8òÒ•ãq]?N LŠlç­ºý@>ýä~ û&\ 0庸‹ÄæWwÂSt|tÃKº@!ét)§Sš!@ËøL ×ø¼O{z¿”¨péy¢—óãx4ÐäÏÕŒ*”l‘‹][.p𧃄#Ù#ƒ„ñ^ùýËÒð&'ÑðQ`ÚŸþ—ãü5³*Á½F‰À– Í?_ŒÂ¿R[ºôæXzs,½9¢géͱôæXzs,½9loŽYD^¯Š“Ù^bPº¸- ‡MÇ13ŒðFž©é…€N‰€ M«4´Pï,ŠpTÂ=3åwCèK÷Þqðç¦HÿV쥜ë8›/$$ÁN2¼$N´‰¼è€œ¬Û•ë`„8µé+?0³7kžI<Žj’½ù¡4§³ÓhT!¥ñm4¦,^À,q.PÇŠ¤C¤áM†z1¤šû£îU@chhÏØæA£ŒÑhôÆI˺+©¦(å@T€O«ËÚ(x§©Ÿ’ôd•Æ_H: ­ÈnꌯAíE¸’vãŸñw]彚ÕF/ " íÇO%R2¼$øðÆü€Ç®„ =EŒcýdR½ˆÜtçyä\ÿb ò÷Ö€$ƒQ7ˆvCæ.H›Æ¼½n4ü^ûÆÖ„6yÝnpCÌq05V¤oä5Á´=Dmæ=d? È-LÛIü§_¼0ö0BßÂ,50(W†ÄÈpN%Sº0Ÿ’.kbÿC[àwœUâ/ÿ¯â_‰Q4³Aû@iÀ´¡r#Gx…Þà)-‹…DQ[,ÍT5‹Àµ%‹¯þÕù+Þ )Á‰îþ7}¿“­Á ²5å:†©© =)ˆ‡èÛfÒ’ÉÈëÕi§àZ†}Ç~K¡bÅõ'D·;Åë|AüÒˆFä0¦ßì;ùv9nH“`t R÷wÁçDeµÞ¨íýVxÑ~±R$aŒ³å÷ä ( ,| ÀNþthÌúu£Ès›£7»Üxxæ“7N€ a|F·Ø`Ê/{cÊ9£¡’`Gò[ 'Ûd8JÇû]†ðFV€!qD’Âî¼6é‹„d »ÜÅŸ<ù vÌ^céÇéô¥ç}|7Ž>î( Ý1i;·¶dÇtÍ3 ²¹1ÞTé.FT9nII¾Å3ëWYÀ@&ÑùÚØÝHåEŽŸÁuÄXIŸ’™ìÅ5¦±Øîoå™drPˆfI8r©1Écã‰<ö.CÒÙÞ*K§™ŸÓiÆq5Ë[F:¾(w—ôS*F“Ö,«¼tOš,÷›4—;zßT}ï=»ÌàÏÎ~»ùâœUùã ŸœãVRg»æ5棳Ï?¼Zƒ¶?dF°YoÉŸäÛãuŽ>àíÕðüßlhxôÇĪ=Wž½ã¿ É‡Ç þŒØÇ³,·áçƒîN•9« öÇêG¿<” °(w]ä†hyͶ·—“æUõ¼ŠxVÄ)ä=îåUžÉ$Z5<§’I¼§¹æ@vŠ ”­§ße3çð°¹£ÇNÂg†ÇNÒg†ÇNÂåf>;{.WÉ\9»/ÕM÷%öCr¸5‘»SY±'õì‰]Rê)Ú¸åù¢”³¼`Kosä™7™ÜCud–¥˜6jÍ[Êû;b#,î¡3¥YXãÈRМʪe<ª¸ r®¿«•×éä”ïR¸Ã”/KÂþr _Ux§u•mXBÒšÚ ±"«*HÊá‚E;«¤Le(Ô“i0G—ŸEô§Ñ…lK˜a‘sÉã:¥8Œc1…ù†_¥g{l‰YN[I¯­Ä„é.JŠe-¿$=SöÅ,9nfúDA :,¬54e¡®‹ò†ð™=_E„;õÈŠÖ Hwè¸Ùñš§&i2Wù<í:2}æáy,:Çbs#£PSÑ·V–c´Â| ÇæX;GÁ@§‘¶å: ¾-³Gž^3£$íØQ`ÖÜò4ú¾ï¨¼]7å>ìÛyÂàCÆ{Jöcë2(îf´5’–„f*4=[$Ót¶&ã‘2¤]‹àEé±å1xY6Ø(‘YyF)»Ï‹hÊI vfwRow˜Ý“¼÷)©)›èTÝÏOõæ¦+¦ƒpÂñÒ ¬IŒ31u‰8;©T“¡ÉæÇbmA‚¡²!X09¤X$ïÏi‹q d½rŸ´¤²ÐœHÏ ºÿ(;êK=”å<*„Q+×S!¹dI$]—ß܈¿jšƒ­5 A8ð1ž\ÅÇÃYE®‹ g ŸéäËXòc ò,†ÂnÇ„%Q6ˆäiBŒ4§ÁËì­ñŠÚ‚¢°¬˜ú‰Rí(`šÜQYî•@Ö}pàø 5ÁnƒÐ…×–Z4:Û­ñÜ™@Öd̵5¯d³<Õ¢ä Œ®å¤”{@iÉŒ™Yê*Õ•T žÕÚ,ñä,Iro‚L©[«$±¢%zÖú-ÿp+NyÞ%{Í5^mÏš~"Ó…úÓã¸Pëþ¿“Ñó¹ÿm{{éÿ÷(ÏÒÿ÷§~bÿ߇šý³æÿÖn¥’¼ÿm{s9ÿãáÙnúÿ: WuÝpìg ù‘¶B§sîOì•ËDq~Í—«ÕcÜ“9¯HsD×¥Cêþ|þ¯ºÃkìתµÍpe~âM]Ú¥¼QÝæß*îËFÆ0¾½¾Ðí KID«íàØûÑp^‡}¼–ë’J£9Yõ t²ºú4¹ ÿŸ "›Ã{“L¼"·÷&0n“¨i'N—M÷'ò;œÞô1í+|*bç0ô>­žÜ‡;£åø•ÃÑÊqW÷EÛ„Ûb=WYí¶ˆíº—À'ð<¬?[ÀÞ,ÀÞýzöVÖmòGŽ[ΰÙÒ1DüèH’I0Àih-9S0÷7Ø|d&‰ä4 ÄQ~}ü ŽÓɸ"¹X/Eåºpæi@žÙ]J#Þ‘×} †é\b–¥—#MFeƒ½éHb§c›Üz[Ö#t»+w@·wÒ˜$m¨eÍû‹Ô\*'êN“´úÙ·_É`s#\+¯˜³ñöy­\ W,ñg¹Î%ôNReÔªJ+≸í[ášæÛDçÁ¦CÜ}z£—ÐT>NQAƒ ˆ«ã`âvÚ´%”*Ë91ݸ!¶…ùÄMz—¬@GE–Çå;-×cûê”!Ã¥å_M“*DäSÅ ÃúŸ->ðøhØ /CÞZ4ÂAχþôòÚa×Ð¡"k,ÄO öš^çĈÞ’±‰‚Í'Fäg¬ï^•þíÚ;©î7|‚ žúý £3h›.s²2? Ø~(Özyˆ¶rF9‡õ£2¦Á0ÿð_² *¥‰»;<ŠleàˆñP2}4;ˆ¦>rAeç†GXßFuïýýlUäOõwç½ü™‰†>î# ¸uŒÿ¶a0ïÊ t(Š:P§ˆ°ˆæ´ä¨ Ãú´', $ÖÀMÀÚ1|— 0:À—¸Î¶1¡„•iOçÀ§ Tšðœ,zu$ß•´£ö½OX *YÚ[œ3t ? WÌmÖC’-–ØâyÅœ(Ñ?TðþúœØáË[Oå:À„»ÕѪÜ_¦ælp¯9š®ÙiåˆÜþÁؽnxÑ%T!<¹'Çàp"•/R!QÍCf£k8´b ôèÝ´ßOÖãOY/5\ÁGtªFÛŸj=¯Ñ­x8ñå…𰙊÷7¨9áÁEH»fYŠô Þ`"ÊZX?|=¥Ù¢í“ 9|'Wèƒò/•_€A4aA[&YÝᘤ5·`ÿ‘º£…² s;Ï7qÁÎKR·¨)öÙ«Ò´/¯"·FÂÃ0ιD«–tåY(¹Éº5&ÉûN|›‰é~/ÁŸäjgm+_‘îE M|?± E™N¬£õf+8`éÖÔÒËC–ñƒFP\Îeèk\o æËøàuŒaYI'¥u4ü†ƒ˜{µÚÃU¼Ú‡Q/ "ÐCJ‰siÕ× àI]ß±Ëù=Q““¶Å(}çHFš f„NùƒAxâín°· œÔ]F´Çývv¯@‘ÿÀ^a§0p²Þ2{Œ1f›˜£Í"žþ ¨H¥Â!#ý­Tf êlÅ>(gê°ÑC#^—éiå\I£…OȤ˜Qd Qøùj‚¹ÜùêÁM}yšæÊØVÉq Ý…°>Fè\P¸p?‰˜¨4J©Þ_¯¬ÖK8ÙD‚F6˜Á %ÁùDÑÑ¢±fEòóCÙ‹r xëù‡mØå0 ¿·Þ ؉žþUX;¢é‡}Çî‰ÓÉ%ÁeÐ+ʦöYY„¢0ŒtAî,DÞ0…³6#Æ£& ¶€9H[þ+g’¶”G Ùv!d£Ç¨1>¬¦ŠªC”T•LædýõfÉ[KYžô'E®YbÍ'+Ûˈg<¸zÉu8Kt }Ò¼W‹Mépm~í°”qÇ…õD9+œ“˜FTýž¯‰íRùqwéJYuÆ­E##mIS)cŠË¤´L«LgýÒf1®|+&UNî·Û]Ž'À<ä2ˆ•F¦TöRaÖÒĪZÒK´ú»¥¯¥™ë“Ú^¢‰âCÐGpu¥%;‰—ž‹þ°ûe<[]p,b"ÐÚªVíE>²s†…W…äz0'å(:ZpéfU‡ålEä:¡Tç2å.Ÿ—nòîkÍhO bZÚ6çаO•µF–3¥õ4[ž93ŠÎ\²Í¢2‹É˜Ãüð¸w2çBôXjR'’e¤ë¬5æW”D$Ó¤¶µ`!‘ÂëdÇÍ÷L©¬)M¸%Å©’±à«`.Tafª¯"‡Ó}“šMw†š%,M«TŽÆˆU¦5%|>ÍAßHr-˜Ÿõ3mx¼¦Zw¶\C#fŽ˜ÉÚ !² °ÂÙ,dZ¸‰Ô˜q-“Îdö¢±œ9i´Á`ãy<XáüÔTCaåFSæT9ÏÜ*€ ×å:~Án/\ ‰ždí ¥E-½¦‰ÿÔÞÞW0ñ?Gt¦æxS'â›?vä ÙÂ׿å€î¸!`‹- Kˆ²6“=T×dJ†ŠJ½QDý0+) ¾ëЃÅ4“Cé.ßJ6{F%Ê_ïgWO“*>——éŽ]fHŠUfŠ0vŸóðJÆŠxI“739ÒÏ«¤«¢ªñ5EglF‰ÜÀ²24O¡¹Û%,"»†$yÖsPHbO×N |Üw)øÑ›ü\î‹i7E'O%}9 ³½à˜©BíÌ5ÜzשŸe«ß±ZÎŽÏìõÎÂ{}W¿gÈBPa d¨ˆi±÷BL@ZÀÆæKÜ{q#Œq¶R»³TSTsíÎ’Ÿ`Œw“cœÒ+¶‰*ƒª² ¿ð,‚}s˜Käôøœ€BïhXÓ( ‡| ÐËLqÀª²­¦ÎH# ÓSrîš\¤óÏ«/ë× » rǧ)6ík\ÚÜà+:ás˜ZÁÈ…Ôž·d$5ŽŒ€*‘R9Èe'Às~JÓ.@bÇg-/§ëØiö•‡›ë#Rß㉠ a¢9c3:°`8«pkó˜EC”ÄÉz;@âî5v=4„QÜÙŠìö÷ª³kîCÒè‘~ˆðƒ¤£’h‰t/KÂ:£NàËâ’lÇÒ\g+<æÛWñ4ð s8 ?‡~&Íî’à¨r6GE£-¡AårŽIµø9ÉïÐÚºÞlG%%4B=f7iÀaç˲價4Z Þcžš€ë‡85tœ¦VÊóÆpì9O +ËcÃŽ •m’Œù-(–½d¾£C§™q¯°Ïòü°3Çùá<¦@ç"P-c8(‹¶¢BÖÊw)&Ó8V¾wã˜Ë6–jLë­{:Q”Vª½Òa}1ËJyáüñ!dòx±ì4s=Ô–ã)ñp±>ÌñbIa ¿ø÷|ƒ£-rR(+^üˆ0õØEïªuBXªDÚBJsœ–ÊvÖå áãœZçƒsžVlèÏc>3àÏcJΫl/ç= l¬ÙŒ[uB‡bÝM%Ü€ªò¢дJéh°ŒFÖ²¦1-t:¨´¦Mé+2'KhRËc•çBc‰xl4•Éi¥ï“ÁM>Ø[W)ªó?9Oq˜Žx[ž.OÕƒâËq~–\,àHP;Ca»ûåWÏä$Ðê쫇Àú&?ý}OÿʯïáøoíK¯øG©lÿ¹Ë ˜;÷vüÇ6ž¬Ó?•Â<üÓò•_§žýU6Üg•<ÇÑ›G9û«TòýUŠ®ð”9þ*ÅŒƒ½¿Õ©_E?áŒÿ¼3¿Î'}•ÊcžôU6ç;é«l>ÌI_e+ÏI_tÎWÙºK°ÓN+®þAƒ.ŸÄ£Å ºÃÁ³‰ÿºµ³Œÿø(Ï2þëOýDñ_löÏšÿåryc7ÿusÿõQžíFü×}XƵ+¯ªtà+ýï þj·ŽŠ¢iêòr‚ôcîȯ›ëåçû «ÞŒÂ>ìEÊeGOsr‹BÔb91Ì,Š2:«¨†æýqDãtµ¾zŠÑf‡tR‡¯ðª¯ÔUÈtÁÈoûÖ;`tµ“",^`9H‡A-ñžøB8øZ¨®¬p¬6gG°˜D_ ¬¨NØuа‘µí¥(ÐP=õòWrÄÅ̓¶}-G`V@×(ì&_ÓíÃ1ùâ»´­ø¢@{g´Ô)2?ŠÚÎÿÓ9/PE©™p“YÕˆ>@DܪUÖ¬ ³ÅdØJ:v€ÈzÄ;×Óþ$Ä 5#>%!dD%îÓÆGœ"á8© -ÉC‚Yá<9š'ÒƒƒÂ6G¢´p”?3ŒgÝd¸p0 FÝ+TRgÑk<M»“éˆdoÝâÀ꺮¹Kó(n™-5m”K8ãTƒlã@U–ÊS5#Œ¨]l>ɦsžÙ)&^FB¢ê5ÏšG ¾aˆ$ù'­Ï½”HˆÉªâ¾²€‰«!ƒüRX4ÂdeõYŘ|ª€ÎjVTHŽÇ¨¢1Ú1"“‹yþŒ *c¥Ç[/#£¡K« vJmB•#We*íêÙ~Al:;òL¯Yb,¢4i¥ xѪŸî5>¡(̈ñ73ÄངìKœ²/âV;˜^îè}$1·Ó`žˆß·xØ=TVï=ìž’äšhÐ#ñYMR© +¾Y¿E–”s„¬6ï]ÐfÂqØ#-…b PÃF½Ë¼?Ί9In[Ñ#5öŠ¿€„÷qÙ†rŠq2¤£›ÉðÆömaƒw“F-ßKÚ°xbE¿·Ï#8’”‰aï†cj”6rëÁÖµšºWÐU¼é=Þ­SÞè¦ÆZ^!’Õø2¶·Tæ*_ͶÚ.À«+/: ¢ÛÎÔÆŸn¦ é  * ùè³-€ŒãT+vM¡x}uBÑÔNÁÆ× Ж¥Ì!Ž2è·ß“èj´r†=³“yiU‚‘¾áPª~é™$ÐÑÚ‚ÈB¿Ž—fI· ÷eyÆÉ(pÝZõ°gBmE°…/yó"KÿF1sžÐI¬:›iÏs6“UÝ¡z±-MGóH޼ýÑgõyÊåv•IR ,%û{ŠB!F)Tž÷⮯H¸o¾uìÛp„.¾Ì$¸ê´cb±yû[½ƒÌ‘FÇ"tõ…l¸äEÉCÜÕb˜ÆM‚Ý>2,p$ÎÔË>^”0¢Dñ—)ÈQúT4àûqã«á´ß£ûàHl­?‹c¢¸”_­RôBì'­¢ ®@Ž}UÇe?ðq“œI­âxè8ÉY´JƒåoÌuxå>:%6®Ò¥¤œ½‡ÉÛÅ·sÜ(Š=èÐ^þ¯’ü¾yx%¶m0ŸÙ%ÛGxUX›5ž£Fóô¨(jÞ{ú‰ÐtLrzÔV÷™9OÚÒ5œóú©ë -ëôËuCt£z´÷[z fœŽqöâý’á=>@‘dIw¹3Ì;ª¾Ç Þ¾v¬]ô?iu\Н:1ËIÅ=¨­œ«ØÄ\’¤Q$å/Ð*wŽ‚ &%ß­ˆ5ù;¿6óråyïDæ`z%óŒ«ÆÌ3;ëì'åÐ/ÁxŒ&ÇN)Çv‚ôuΓqr—8¸3OàÁ ´'«NœÁ¡ï8„sgÉ¿N?dÒò&ßfÚé¦{&×þ‰£ÍmÇ!]FûêÇÉs ¶åB¢rÕÿÃÑn­MÐYû¨Ê?pz‰Dõ$ÃŒE  å¿ŠŠçù J ,jå<0räÍ)»DùxÏ93—¤É<õ¸KʪܕŨÙt¸J#ø#µ,ÚƒµDžßÐæY“Þºq’;j*k7â¥|ãœK 1ðtÅd°ºDrmˆUgú4• MÑV°BT"õI{ÚBü^)—Áć·UÿGi]‚@D!‰lq QÚüOgÈ2@z &†7™Nobüûš‹5VÍHr`z®f’ôÍtHƒ<ÅdµÍ*Óv­L'íë3fñß`plÒÊUQMÿëg¨lüß;Q|QÍU¤±–‰³W^ÝÃHl[«{«{zäX¢ RÄ¥”RK‹æÇPóÔ`¾ÕD ÷=\“ ØÏ596u¢™ÕBj{»àé½=µ‚,Ù¯I(Ïš‘æ¨$GMUvÊsçÀáØ&êVJ‡h– ó`ÞØÒ-—h{¨–%¼çóRð‘Û9ylL¯ áUOgœÞu´qúHEmÇ7U¶è/NÌM~eË äg[ìÛÕwûG^3Þ÷±Q'Vû(G”nâ$Ñ;{¿Õ±tF™ªtFËEÕ×´K¿£lã÷Nrel)åê*ÚD†«œ_~^f+ÙŠ¿#mZ‹ÚšN. ^fc\Õ¦V&g+Qi²,DvE©%òìnÿúúø'þks£¼Ä<ʳÄýÔ†ÿz Ù?ÿµ½¹™˜ÿ»Ëùÿ\MüרcǵóböQÁ¾ü£•À 7 áˆ=ï(ð4‡_‘T€©vÆ©« ì™*Iì¦ãH)å8–jEÀ'Åv¾ß?‹áPµ ÂÏ@V<'ÏÛ¢Þà¡Æþ,Êc-ПÝÙí‹^,'Ù,d[:ÃMý­xÑDoåo¡·r8èßÚÎági‰‘Yô^¬Ïå-ïòXïz¢ŠüÏ^ñ3Õ9Ü?ý¥‚QÌ+ ys<0p£[Æ<8F˜à!D=¢MÑd¨PCò4µ=ÀnüÑ„©¡CnôR³XÝ×ÚÑxa8MO4ô’lG"Ý‘5ÊŽBù!ô…iÂÈBµš!×ó¸âÑE©²ò\B5Ä¥¤`ðüþçá(œ\]‹K?ìË0MCT ?oD¨— Ø4™ÇîÉ6¾¬-Y …˜é…=‚cªúT(Ñ'Æü¡m²¨¡NœÀ< å·QÔ€YŠæÞŒB÷¸œ—TäÒê$û0öç±Üo99Ýoý^¤ð±çª8ëâ!½f}ŸþíTOéçGrƒá“²Ôh4ÔÆéðøC¢Z:µ«Í–† ÜÿІÕÝbãhõÿôÞeÝû! ÏI:Ý!$†‹:$<Ó{£@çjó·Y¡5в¸¢-£yÁ„u#(¸ _ÞÍuª¨½ßÏáûI+ƒ®ç§Í÷–£E „êHÅÞGÀbë¡Æ»NУùHÓ akh h‚Ðüã¥ÿd½Ä!©^Y@Bò£ +סƒ²þ¦:˜ðC–Çmu@O³ËK™@dÓN?G‘míxC‹|ÅqÞhâ• ÌõTÁ fÈšù¥TVÿëm,JD|ßô­F1²›z2Þ½s$mÎb‡Eç¡ÕúHš?µ-Ì fXÕïW3ú/Êþ™˜%Ùž9‚Ì ˜’ÅY®•-yÑÐGEøªºÖ=.es@x®jËîei1ûü>@׋îÚ@§O|#±„à¥Ä8Íô/aûÂëéu,` Ò}À ¨âÅ)¢sQYäKÌ#¿eˆ¶¸~‰!‘Ç~Ñ7:FäoÑáŸêZ›\tâ›pý>l@I`Ž0Âíjjþè6î2.®xÚJË ôåè…ÃÎÉúnä¨!ð´Çr0„ i=2ŠJ“£QŸ2B¢5­àðªÅÃü6Ÿ«jˆó• Ì2ñ‰(»äܘÙ"XÐ^C Ù úÒæL~Y‹¶jÛÆ?K*i|wM½¥îptþXT¦RjC|¿%Wä¾&J‚5á%‘Rßó,ÒàŽÖ639 ,+&ëz¶ÊåNSÉbXA F׈’MeN€Û%妕CÌ’VcFˆ!Á.eK8sƒ– ‰!¦M` “—Zè"¯IL›r)z—MÏxh|°¯qAÔê¸Ò>œ]‘-K©¹e­ÙsSÞz—úEìz&‡a°S¡a7¾¹ oF¸9ìßšƒcLN{Þg*˜€%§ö2=’I¨3ÆM6ÄF²]žÁ[ )ÆY|Ô—5‹mX}”9 Ýù¤ÑC™öc[ šA4½5]cIH´¶ H´Àcâ?zÏçþ‡íåùï£>¼ak±¼¥\ö‡þ€o†!ÞíHYƒIØ]ÞD| ¨=ãù»4ïŒ),̉ϰŠö¸±Ÿù^G¿×{9ž^LF~wRÄãwŠÂƒ‘4.Âoµ" Vx‹Cؽª Ñ¿ð~s™êSéèC‘ý=þu¯ôz£(ïÁÀ¥ 5½Ka9€*Ý üê_ôoé [t|÷{A—vÐFõ«j–c4O¶­(.àÍ·@|` KŒ”,!BKˆÐ"´„-!B?4DÈ"HSü‹<˜¬‡k¹Æ«ž/ û‡ ~/;9“Y“•8ñ+––’½‰öâÔ"Îò.¸k¢¹ºZy*hÑXÇ©c h¸Ñ˜34.êC:–a¼ÆI¼QH%ۂʪÄ*Y‡#) ’^Bބ׵¢ß¼¹!J/gL¾$'õÑ×*ª(Ç$ieÎ’–>MdÛgL“)Ôšgª´î8WRò7óNwþŒ‘@'æmšG0›Ü3©5÷T2ØNî6™Jz9I†Ï=•Œ휯;•¼ô©”~ó–\B¼¼kˆ—9=<}zxw™Þ<Óûãô˜;ÿY®ü›< ¼ï-yÿžyÿÃS©ï ýÚYM TÚ²ê(È:±O…¬¾IæMëËÙ}á647VŒÑLÛœ¤syãéE2<(?ý[LÚôhøm¬…lS3_škxpyÓäóU2÷õ°W c&“ìón:¢à«òæAf—ÓÕ|¼zZØU!ÎÉþs¡â ——¢5ÀH•9a$Ú„D=üJð¶R¢•trk2e1 A4‹f»Ê•G÷϶¨; Éö„ÙéHY´¿P0lèÞÙíõ%îøyáŽ[Müña%óf  àÇ  CÜhPq]‘aÇo@) ˜I¹[ò‡,¤âÎüDp潿G°ætº"@¦¾WDÀÎÑÏ kfpq+ñÆ[BŸú,Û´ï€8á(}dl¨‹…Nòµç~Íi]B©bä—Vò“'?yæ§$„*†ê&[¯u@Ù’ ¢¾X»ÜDBÕ;¹0¾'Ú¥UÝÔPÉj“ rS1u)",±Fƒ—¨+UÊäÇ·[¡¤'«µœ ÁdÑ—–ñ©e|óŒo^lž‰í˧Çv{e²—׊ lÍ_byÃU¤é-Pd%…¨wÅùןÎ?æØZh%šÕ¿„ï/áûKøþ]àû¼ÅIºy«Ãïί¨³!ÿ¼±RÀ =W+E%Õ¿•Ûéú ·-Wä:@-ã†A»â –„irxÐ>ë¸Vwë†êj*YÀoÃé8¸ö{tºëÆÈ;>ï,FÁÍ(ö @hŒ‘T@‡YNõ1ýˆt q¼)nöX6Ó6]qB`@tÚ\Çå!ß­¨ÝyJ)nHÕh‹Ô¦¡ùžþ9øÔÁªÍbjGNÑ%Î~‡ÆT£8ÊäF-ý+²ý+ô!Ih¶©jm†N›áXQ_zVümÓÿcôlü?v–÷??γôÿø©Ýÿãafÿ¬ù¿½ OÂÿc{éÿñ(ÏvÛÿ#r—mU›ï÷ì³üÇOðÓ;Í8\¨ÖÚtiÞ)2ç˜ý£N?|87]IÒËPÎ ÷ãJ²¹^~ÞÎ$PXTÖ>^3]v#Ç£]4½˜Š6îÑîÛqRV”Î(ÀÒ!G×í•’>¾GÙWDKb–»«g 1žt[y7àúÓeNŸ—Vìó2.êâ†8·ã –‚hŽlÇ—ý ÿØÌÓ6oPUÕÃ<À‹¦ÃKÂMÈ{f}6ØauÊ8¡¿Ä2ÂA/ì|.])ÌÎ5zwÖž³á‚ Ocnî²:‰Žò}Q¦HÄvº`ñ ßàßgœ²#*Cž1mïZ´‹¡öÑÕÚ£éµ˜Ž±×-ÄpéߊÖð‘Z-e±` ƺ…a Ñê#w!/Vþ³7ŽÑ.E‰^!Ü}".á—¤nh—£á5|§cñÏÏÃaïŸö‘¢ñß;± …[„üþxH>2ˆŸÝ‹•uñ~ä_—ÚÝ«ë°G覸eá¿)‰Í¯C‘P&hhø#ºÒP ¡ÁÌ0a—x”Ææ*ˆÚ=ž7¸,þ`G±À!Ú„kyËï^‰é€£ÇE!BøS@G{ þJä‰Ó=ø8ü|í ñ[’PÅè~óñ]ùôðf΀ÜͰqßü=W®ÂÏWŒ8Z ¿ÛŽüî­ŽöÃëÍÅuà*¢‹—ã,Ý+œ&„è'C\„­†b‹ZQ]ÐP$VoF)æ´ÖŠ05‰G =ô¦*L|ÝuÐ[±È´þá“´…{Àò¿®­/Áhr‹-c‹c_§pŽÝh ìx2LÀETïÒ6[ZN{;MØÃårÚ×ã.ª’ÿESË6´Š 3"2AØT L# ÔÍ}1Tc˜Æ•êÀkA ¾»BƒÛ‹‚àMÄßÝ>ÌGv´âû®µö¥0Y7¾im_…—“ø~lj—ƒf`¨Œ2ÈÍåüe0åˆÝê—ä÷ÔQ)ô´èˆ<–Ë|ùx0@ ]̶ãáÄašÐM%®n¥Š’_ÓRƒç}_¾¼|ò-„~ëloô ¨xØ!$<®JþàVÑKNÔQp L£;uÊEËfŠârIk%‹;^,# –AY¤J£‰µë!1/A™Oê´‚¼äê’^Ãd‚ñú…tDááè„Ñ^uX8úüuÎÍé VÊ®L&¿ˆ±)>p-  2ò ¯¯ñí5´v“ÓVéâ?¹¬0j›ýÏÁÅȧ6¡ivø°P¥E±ùj·PÕèæf]”K•W°³˜~ÆU¨²±±µnõÐݽ¸oÇq“÷ ‰ DŸZìÄ{ÿÚ)Ú^õH §·‚‚¤nÞŽCV…Ìöž û뢲-Wj$è{¸¢Ê ÄG‰9m†åí´>@k«4 ƒÿ^Yѱ®R5Šˆ,GF£t<­^êSd,ÌÈëÊÆ¥‚EaçÒ½àBŒk=Œ34v]œîÕ^îµë¥×»ð_Y–qº§í]Ž@».¿~½KüŠß¹â§õMÁxQØŠHw ñ`çO"rb~Ëä\ÜH—“Â+ ‚ ´»½e{B«õj]ד©8ejç4xد‰• †ƒ×&¹‚Ú‰Ž”¡¯5S¶‘W“k¿§‰›Ò’ÐkrE”¾òtG¥5ý&3O8à[½ãê®h(0­¤ïMILûv÷‚ïÝ€ñ¸!:À~ GÃAäÁÌ„‚Í#/²ƒ^ß]§T¨ßÑúúŒB˹öa «\iÚæjFJ¶³üÆþžz뎦Ø$ù®üþe Ô ˆ‡¢›Ð³Óÿr¸+eVâA%X¢×@ü¿Ä“æÿÊ×R\$˜ ì3B©ìqŠr¦!þ%šxÎTÔæ^‚œ´…€ã,ÄÏK÷ó¥ûùùŸÏrù6ü¼zs»|~Þzíò}Ö0™Ø6&QšÓÙiÔÃJ3þ­òŽ‘”Ä9Ϭqb"Ú=GBj2Ô‹!ó?ê^¡ÉÀ‘¬c›ÿ2VwÜ€ž5À-vx žª<ÊWÊê²FRï4õS²ƒžì 2’þí+É=(o‚.Ž$¡º•™–‹ ºèÁèeQj¾Å¦Â¿Mœ¡ÞÆü€˜\)^A¸ð7–2óêL‘ŠUþ|#lè_Œ‡}ZÉÏm2ìÃÞU¥'š¦³8suÀ ‡ïáµo¬®d¬é¢vÁÖå®e¬¤aÐ ™€^`á€]éúa@Q´Åð?ýâ…±Â} {°¦Á Ð&j€4J2¥cÙTtY#ˆ"~ÇY%þòÿ*þuñ—XE3ßìiCedpä‚4²@”ÅB¢¨-FKãf‘«šD`Á«uþŠ—ó)zi…ÚÁÜôýnà¸g3ÈÖ”K0CÍH‡‘dx"Ö¤9ìÉž…¼î4oZnŸmÐêþÉÚfi“)¨Já|&Õ®KQ‹K9’{4£ñ¸3Ï'®ôò74eE;¥ªÜäÂn ÚW`SÒ·UŠCÈZtî€þÛfÒWÕm+#WÌkÜŽ@;pï;Qƒgʱ4„+Œw}ˆõÂ^ŒFí³êmãõ" MS7¥¦òh>èE(Û&òÄåä Ý¢øc”¦4q!ã;»Ã^YÄô"0ü™¢†Ê°O)m øFz—ÓÑt¢ULÝ^'¶8X5Ø¿±wåº8ƒi5ÖáAþÿÙ{×®6rm]øûùý%6146Izwz¥Ç1ƒqh:ïxwTÇØ,_HØgÿ~æEw©.6—$×ZÀ®š%MMISÒ3Ÿ ÍEËæÉ-,ήÈt›{+G¶ŸÁ­Ó#Ð>\[ÕO6ðK·V`.œÎ&Ø;ýá‚4jAm¹BßIǹ;­¶k' ?Þ—çÅïb;MGSèÃq¶Î×±ÿ-`؇‰aŸf?€Ûèa…,hþ U˜õUK~Ž~«ý´~oÔ0‡:†zß„îJï÷bÇE©£ü8}ÌG¿lnóÇšô‚ö«>yM>íÐÔª‚ ¹Å%µ-Ä®QY2"÷y{óPn+ÄTSã±Ph»2°lT4 TåtÚû/ýÉdtšRÌ9ÉùPI«¾¹AÛqÜ:þƒïZ$¼h„)hÌŒ wphwRS(ýk5öÇ®“4Ã,žÅŒûñ7ÇR•‡™|Av7v Îû¶ Y^>A"R¹rHÐêa¦·\RÍ_€³§ö¾Ù¶îæ}\cI¿y÷7[„mtò>ÏKçàpxˆ˜·h¬håýÕ:2Ë Ç&A9Ð1ÒµdÍqkeâG¼ïƒw GCtCLoF|>“šM4 ?IǸe¤$¨“îÆJJQU‘(vëáY,ž_1›$ŸÛûÍèþÃ+ÞøGòPÅRÕ=D¢:®ÞÍY‡ú>wm@¢íû“o(¡Ý’uªä¼.ͽ[ÖÞó(¥ì§+Xkò‘ûƒjœkj‘¾ÐU¡ëõ†g+z€µmIÌôO#fÊ1²cÓ(›´mgõõ¸-Iþé$H­¡$ÇÉLñŽû¢ÚñÏh¡lî‹æÿ†’5‡»Ëd˜Â¢wüoZ3´7;íŸ;ÛÝÞkûž=°¾Þ´?¤“Ó²¼=º¾v4dî¡;vû¨Iú{—QàãóüÔÄá9-"ûyê°ýà_ð,Ò-Ð_wdêi¶ÛÛ­7L»ƒ?=æžÃíÞaM¼oÒM,%m¥`D¸»ûg·ùZ¾,º}×Ý‚ÎÅ¿ÇP«PŒíííw*.Ô¢jm¶ùçŽüÙ;È'‚®Ï,B[ò‡ü)¹…¶ ÇP®C>$t ÅPëpÿFâ]øÿn¥¦ ’0aÆ(ÂŽ¦Ê‘ s©*þ‰Mø¯wÐnfî-¶AUå8‰²_-ƒó8â˜jü¾MåHùëqõþ”÷ÍÇQåÔ¢4GÑëwÈAdQ!º< ,âï³µ­9rQ“‡ÙøóCóà™‹¶6Ñ~ÉØ ŽÄˆ;´°2®×$;F÷‰ŒÒÅLœ5±QÏ,Ú¡Br£Bz$ÚÌìëzu lá-–Ã[ZOì¢%/ƒ,ÓU\º%þÔ·ƒŠÇÀdËWL6:sé3+ù©f³Qߢi¾õ¥ïŸÝI6 ”z§ß¥‚ç wº#]T@ÿT@õÌ¿º¨Ö³Ö· Dª tMEzƒEbÂŽ÷GÈõ¾íQ­X¯‰Ñìh½F_Ðjc$óüñ&¿>îë~u¾0o<"µ´:D=Ðj+ë‡ÏA|È5âÙͺ+Õ óXÕÉåÞjo}´j«M›”+¿Ë¨´.Üóü’